{"version":3,"sources":["webpack:///./node_modules/jquery/dist/jquery.js","webpack:///./node_modules/moment/moment.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/process/browser.js","webpack:///./node_modules/bootstrap/dist/js/bootstrap.js","webpack:///./node_modules/timers-browserify/main.js","webpack:///(webpack)/buildin/module.js","webpack:///./node_modules/popper.js/dist/esm/popper.js","webpack:///./node_modules/moment/locale/af.js","webpack:///./node_modules/moment/locale/ar.js","webpack:///./node_modules/moment/locale/ar-dz.js","webpack:///./node_modules/moment/locale/ar-kw.js","webpack:///./node_modules/moment/locale/ar-ly.js","webpack:///./node_modules/moment/locale/ar-ma.js","webpack:///./node_modules/moment/locale/ar-sa.js","webpack:///./node_modules/moment/locale/ar-tn.js","webpack:///./node_modules/moment/locale/az.js","webpack:///./node_modules/moment/locale/be.js","webpack:///./node_modules/moment/locale/bg.js","webpack:///./node_modules/moment/locale/bm.js","webpack:///./node_modules/moment/locale/bn.js","webpack:///./node_modules/moment/locale/bn-bd.js","webpack:///./node_modules/moment/locale/bo.js","webpack:///./node_modules/moment/locale/br.js","webpack:///./node_modules/moment/locale/bs.js","webpack:///./node_modules/moment/locale/ca.js","webpack:///./node_modules/moment/locale/cs.js","webpack:///./node_modules/moment/locale/cv.js","webpack:///./node_modules/moment/locale/cy.js","webpack:///./node_modules/moment/locale/da.js","webpack:///./node_modules/moment/locale/de.js","webpack:///./node_modules/moment/locale/de-at.js","webpack:///./node_modules/moment/locale/de-ch.js","webpack:///./node_modules/moment/locale/dv.js","webpack:///./node_modules/moment/locale/el.js","webpack:///./node_modules/moment/locale/en-au.js","webpack:///./node_modules/moment/locale/en-ca.js","webpack:///./node_modules/moment/locale/en-gb.js","webpack:///./node_modules/moment/locale/en-ie.js","webpack:///./node_modules/moment/locale/en-il.js","webpack:///./node_modules/moment/locale/en-in.js","webpack:///./node_modules/moment/locale/en-nz.js","webpack:///./node_modules/moment/locale/en-sg.js","webpack:///./node_modules/moment/locale/eo.js","webpack:///./node_modules/moment/locale/es.js","webpack:///./node_modules/moment/locale/es-do.js","webpack:///./node_modules/moment/locale/es-mx.js","webpack:///./node_modules/moment/locale/es-us.js","webpack:///./node_modules/moment/locale/et.js","webpack:///./node_modules/moment/locale/eu.js","webpack:///./node_modules/moment/locale/fa.js","webpack:///./node_modules/moment/locale/fi.js","webpack:///./node_modules/moment/locale/fil.js","webpack:///./node_modules/moment/locale/fo.js","webpack:///./node_modules/moment/locale/fr.js","webpack:///./node_modules/moment/locale/fr-ca.js","webpack:///./node_modules/moment/locale/fr-ch.js","webpack:///./node_modules/moment/locale/fy.js","webpack:///./node_modules/moment/locale/ga.js","webpack:///./node_modules/moment/locale/gd.js","webpack:///./node_modules/moment/locale/gl.js","webpack:///./node_modules/moment/locale/gom-deva.js","webpack:///./node_modules/moment/locale/gom-latn.js","webpack:///./node_modules/moment/locale/gu.js","webpack:///./node_modules/moment/locale/he.js","webpack:///./node_modules/moment/locale/hi.js","webpack:///./node_modules/moment/locale/hr.js","webpack:///./node_modules/moment/locale/hu.js","webpack:///./node_modules/moment/locale/hy-am.js","webpack:///./node_modules/moment/locale/id.js","webpack:///./node_modules/moment/locale/is.js","webpack:///./node_modules/moment/locale/it.js","webpack:///./node_modules/moment/locale/it-ch.js","webpack:///./node_modules/moment/locale/ja.js","webpack:///./node_modules/moment/locale/jv.js","webpack:///./node_modules/moment/locale/ka.js","webpack:///./node_modules/moment/locale/kk.js","webpack:///./node_modules/moment/locale/km.js","webpack:///./node_modules/moment/locale/kn.js","webpack:///./node_modules/moment/locale/ko.js","webpack:///./node_modules/moment/locale/ku.js","webpack:///./node_modules/moment/locale/ky.js","webpack:///./node_modules/moment/locale/lb.js","webpack:///./node_modules/moment/locale/lo.js","webpack:///./node_modules/moment/locale/lt.js","webpack:///./node_modules/moment/locale/lv.js","webpack:///./node_modules/moment/locale/me.js","webpack:///./node_modules/moment/locale/mi.js","webpack:///./node_modules/moment/locale/mk.js","webpack:///./node_modules/moment/locale/ml.js","webpack:///./node_modules/moment/locale/mn.js","webpack:///./node_modules/moment/locale/mr.js","webpack:///./node_modules/moment/locale/ms.js","webpack:///./node_modules/moment/locale/ms-my.js","webpack:///./node_modules/moment/locale/mt.js","webpack:///./node_modules/moment/locale/my.js","webpack:///./node_modules/moment/locale/nb.js","webpack:///./node_modules/moment/locale/ne.js","webpack:///./node_modules/moment/locale/nl.js","webpack:///./node_modules/moment/locale/nl-be.js","webpack:///./node_modules/moment/locale/nn.js","webpack:///./node_modules/moment/locale/oc-lnc.js","webpack:///./node_modules/moment/locale/pa-in.js","webpack:///./node_modules/moment/locale/pl.js","webpack:///./node_modules/moment/locale/pt.js","webpack:///./node_modules/moment/locale/pt-br.js","webpack:///./node_modules/moment/locale/ro.js","webpack:///./node_modules/moment/locale/ru.js","webpack:///./node_modules/moment/locale/sd.js","webpack:///./node_modules/moment/locale/se.js","webpack:///./node_modules/moment/locale/si.js","webpack:///./node_modules/moment/locale/sk.js","webpack:///./node_modules/moment/locale/sl.js","webpack:///./node_modules/moment/locale/sq.js","webpack:///./node_modules/moment/locale/sr.js","webpack:///./node_modules/moment/locale/sr-cyrl.js","webpack:///./node_modules/moment/locale/ss.js","webpack:///./node_modules/moment/locale/sv.js","webpack:///./node_modules/moment/locale/sw.js","webpack:///./node_modules/moment/locale/ta.js","webpack:///./node_modules/moment/locale/te.js","webpack:///./node_modules/moment/locale/tet.js","webpack:///./node_modules/moment/locale/tg.js","webpack:///./node_modules/moment/locale/th.js","webpack:///./node_modules/moment/locale/tk.js","webpack:///./node_modules/moment/locale/tl-ph.js","webpack:///./node_modules/moment/locale/tlh.js","webpack:///./node_modules/moment/locale/tr.js","webpack:///./node_modules/moment/locale/tzl.js","webpack:///./node_modules/moment/locale/tzm.js","webpack:///./node_modules/moment/locale/tzm-latn.js","webpack:///./node_modules/moment/locale/ug-cn.js","webpack:///./node_modules/moment/locale/uk.js","webpack:///./node_modules/moment/locale/ur.js","webpack:///./node_modules/moment/locale/uz.js","webpack:///./node_modules/moment/locale/uz-latn.js","webpack:///./node_modules/moment/locale/vi.js","webpack:///./node_modules/moment/locale/x-pseudo.js","webpack:///./node_modules/moment/locale/yo.js","webpack:///./node_modules/moment/locale/zh-cn.js","webpack:///./node_modules/moment/locale/zh-hk.js","webpack:///./node_modules/moment/locale/zh-mo.js","webpack:///./node_modules/moment/locale/zh-tw.js","webpack:///./node_modules/vue-loader/lib/runtime/componentNormalizer.js","webpack:///./node_modules/setimmediate/setImmediate.js","webpack:///(webpack)/buildin/amd-define.js","webpack:///(webpack)/buildin/amd-options.js"],"names":["global","factory","window","noGlobal","isWindow","obj","arr","getProto","Object","getPrototypeOf","slice","flat","array","call","concat","apply","push","indexOf","class2type","toString","hasOwn","hasOwnProperty","fnToString","ObjectFunctionString","support","isFunction","nodeType","item","document","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","length","prototype","jquery","constructor","toArray","this","get","num","pushStack","elems","ret","merge","prevObject","each","callback","map","elem","arguments","first","eq","last","even","grep","_elem","odd","len","j","end","sort","splice","extend","options","name","copy","copyIsArray","clone","target","deep","isPlainObject","Array","isArray","undefined","expando","Math","random","replace","isReady","error","msg","Error","noop","proto","Ctor","isEmptyObject","globalEval","makeArray","results","inArray","second","invert","matches","callbackExpect","arg","value","guid","Symbol","iterator","split","_i","toLowerCase","Sizzle","funescape","escape","nonHex","high","String","fromCharCode","unloadHandler","setDocument","Expr","getText","isXML","tokenize","compile","select","outermostContext","sortInput","hasDuplicate","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","rcssescape","fcssescape","ch","asCodePoint","charCodeAt","inDisabledFieldset","addCombinator","disabled","nodeName","dir","next","childNodes","e","els","seed","nid","match","groups","newSelector","newContext","ownerDocument","exec","m","getElementById","id","getElementsByTagName","getElementsByClassName","qsa","test","testContext","scope","toSelector","join","querySelectorAll","qsaError","removeAttribute","keys","cache","key","cacheLength","shift","markFunction","assert","el","addHandle","attrs","handler","attrHandle","siblingCheck","cur","diff","sourceIndex","nextSibling","createDisabledPseudo","isDisabled","createPositionalPseudo","argument","matchIndexes","namespace","namespaceURI","documentElement","subWindow","defaultView","top","addEventListener","attachEvent","className","createComment","getById","getElementsByName","filter","attrId","find","getAttributeNode","tag","tmp","input","innerHTML","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","hasCompare","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","unshift","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","createInputPseudo","submit","reset","createButtonPseudo","tokens","combinator","base","skip","checkNonElements","doneName","newCache","oldCache","elementMatcher","matchers","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","contexts","multipleContexts","matcherIn","matcherOut","matcherFromGroupMatchers","elementMatchers","setMatchers","superMatcher","outermost","matchedCount","setMatched","contextBackup","byElement","dirrunsUnique","bySet","filters","parseOnly","soFar","preFilters","cached","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","token","compiled","_name","defaultValue","unique","isXMLDoc","escapeSelector","until","truncate","is","siblings","n","rneedsContext","needsContext","rsingleTag","winnow","qualifier","not","self","root","rootjQuery","ready","parseHTML","rparentsprev","guaranteedUnique","children","contents","prev","sibling","has","targets","l","closest","index","prevAll","add","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","contentDocument","content","reverse","rnothtmlwhite","Identity","v","Thrower","ex","adoptValue","resolve","reject","noValue","method","promise","fail","then","Callbacks","object","_","flag","fire","locked","once","fired","firing","queue","firingIndex","memory","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","mightThrow","that","TypeError","notifyWith","resolveWith","process","exceptionHook","stackTrace","rejectWith","getStackHook","setTimeout","stateString","when","singleValue","updateFunc","resolveContexts","resolveValues","remaining","primary","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","data","prop","hasData","dataPriv","dataUser","rbrace","rmultiDash","dataAttr","JSON","parse","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","showHide","show","values","body","hide","toggle","rcheckableType","rtagName","rscriptType","div","createDocumentFragment","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","fragment","nodes","htmlPrefilter","createTextNode","rtypenamespace","returnTrue","returnFalse","expectSync","err","safeActiveElement","on","types","one","origFn","event","off","leverageNative","notAsync","saved","isTrigger","delegateType","stopPropagation","stopImmediatePropagation","preventDefault","trigger","Event","handleObjIn","eventHandle","events","t","handleObj","namespaces","origType","elemData","create","handle","triggered","dispatch","bindType","handlers","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","udataOld","udataCur","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","swap","old","pixelPositionVal","boxSizingReliableVal","scrollboxSizeVal","pixelBoxStylesVal","reliableTrDimensionsVal","reliableMarginLeftVal","container","rnumnonpx","getStyles","opener","getComputedStyle","rboxStyle","computeStyleTests","divStyle","cssText","roundPixelMeasures","marginLeft","right","width","position","offsetWidth","measure","round","parseFloat","curCSS","computed","getPropertyValue","pixelBoxStyles","minWidth","maxWidth","addGetHookIf","conditionFn","hookFn","backgroundClip","clearCloneStyle","boxSizingReliable","pixelPosition","reliableMarginLeft","scrollboxSize","reliableTrDimensions","table","trStyle","trChild","height","parseInt","borderTopWidth","borderBottomWidth","offsetHeight","cssPrefixes","emptyStyle","vendorProps","finalPropName","final","cssProps","capName","vendorPropName","rdisplayswap","rcustomProp","cssShow","visibility","cssNormalTransform","letterSpacing","fontWeight","setPositiveNumber","subtract","max","boxModelAdjustment","dimension","box","isBorderBox","styles","computedVal","extra","delta","ceil","getWidthOrHeight","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","properties","stopped","prefilters","currentTime","startTime","tweens","opts","specialEasing","originalProperties","originalOptions","gotoEnd","propFilter","bind","complete","timer","anim","tweener","oldfire","propTween","restoreDisplay","isBox","dataShow","unqueued","overflow","overflowX","overflowY","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","clazz","finalValue","curValue","removeClass","toggleClass","stateVal","isValidValue","classNames","hasClass","rreturn","valHooks","optionSet","focusin","stopPropagationCallback","rfocusMorph","onlyHandlers","bubbleType","ontype","lastElement","eventPath","parentWindow","simulate","triggerHandler","attaches","rquery","parseXML","parserErrorElem","DOMParser","parseFromString","rbracket","rCRLF","rsubmitterTypes","rsubmittable","param","traditional","valueOrFunction","s","encodeURIComponent","buildParams","serialize","serializeArray","r20","rhash","rantiCache","rheaders","rnoContent","rprotocol","transports","allTypes","originAnchor","addToPrefiltersOrTransports","structure","dataTypeExpression","dataType","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxSettings","active","lastModified","etag","url","isLocal","protocol","processData","async","contentType","accepts","json","responseFields","converters","ajaxSetup","settings","ajaxPrefilter","ajaxTransport","ajax","transport","cacheURL","responseHeadersString","responseHeaders","timeoutTimer","fireGlobals","uncached","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeaders","requestHeadersNames","strAbort","getResponseHeader","getAllResponseHeaders","setRequestHeader","overrideMimeType","mimeType","status","abort","statusText","finalText","crossDomain","urlAnchor","host","hasContent","ifModified","headers","beforeSend","success","send","nativeStatusText","responses","response","isSuccess","ct","finalDataType","firstDataType","ajaxHandleResponses","conv2","current","conv","dataFilter","throws","ajaxConvert","modified","getJSON","getScript","wrapAll","firstElementChild","wrapInner","htmlIsFunction","unwrap","visible","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","params","animated","offset","setOffset","curCSSTop","curTop","curOffset","curCSSLeft","curElem","curLeft","curPosition","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","module","exports","w","hookCallback","isObject","hasOwnProp","isObjectEmpty","getOwnPropertyNames","k","isUndefined","isNumber","isDate","res","valueOf","createUTC","format","locale","strict","createLocalOrUTC","utc","getParsingFlags","_pf","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","era","meridiem","rfc2822","weekdayMismatch","isValid","_isValid","flags","parsedParts","some","isNowValid","_d","getTime","invalidWeekday","_strict","bigHour","isFrozen","createInvalid","NaN","fun","momentProperties","updateInProgress","copyConfig","from","_isAMomentObject","_f","_l","_tzm","_isUTC","_offset","_locale","Moment","config","updateOffset","isMoment","suppressDeprecationWarnings","deprecate","firstTime","deprecationHandler","deprecations","deprecateSimple","Function","mergeConfigs","parentConfig","childConfig","Locale","zeroFill","number","targetLength","forceSign","absNumber","abs","pow","substr","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","padded","ordinal","localeData","formatMoment","expandFormat","mom","output","makeFormatFunction","invalidDate","replaceLongDateFormatTokens","longDateFormat","lastIndex","aliases","addUnitAlias","shorthand","lowerCase","normalizeUnits","units","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","priorities","addUnitPriority","priority","isLeapYear","year","absFloor","floor","toInt","argumentForCoercion","coercedNumber","makeGetSet","keepTime","set$1","month","date","daysInMonth","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchWord","addRegexToken","regex","strictRegex","regexes","isStrict","getParseRegexForToken","regexEscape","p1","p2","p3","p4","addParseToken","addWeekParseToken","_w","YEAR","MONTH","DATE","HOUR","MINUTE","SECOND","MILLISECOND","WEEK","WEEKDAY","x","modMonth","o","monthsShort","months","monthsShortRegex","monthsRegex","monthsParse","defaultLocaleMonths","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","setMonth","dayOfMonth","min","getSetMonth","computeMonthsParse","cmpLenRev","shortPieces","longPieces","mixedPieces","_monthsRegex","_monthsShortRegex","_monthsStrictRegex","_monthsShortStrictRegex","daysInYear","y","parseTwoDigitYear","getSetYear","createDate","d","h","M","ms","getFullYear","setFullYear","createUTCDate","UTC","getUTCFullYear","setUTCFullYear","firstWeekOffset","dow","doy","fwd","getUTCDay","dayOfYearFromWeeks","week","weekday","resYear","dayOfYear","resDayOfYear","weekOfYear","resWeek","weekOffset","weeksInYear","weekOffsetNext","shiftWeekdays","ws","weekdaysMin","weekdaysShort","weekdays","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","weekdaysParse","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","computeWeekdaysParse","minp","shortp","longp","minPieces","day","_weekdaysRegex","_weekdaysShortRegex","_weekdaysMinRegex","_weekdaysStrictRegex","_weekdaysShortStrictRegex","_weekdaysMinStrictRegex","hFormat","hours","lowercase","minutes","matchMeridiem","_meridiemParse","seconds","kInput","_isPm","isPM","_meridiem","pos1","pos2","getSetHour","globalLocale","baseConfig","calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","LTS","LT","L","LL","LLL","LLLL","dayOfMonthOrdinalParse","relativeTime","future","past","ss","mm","hh","dd","ww","MM","yy","meridiemParse","locales","localeFamilies","normalizeLocale","chooseLocale","names","loadLocale","arr1","arr2","minl","commonPrefix","oldLocale","_abbr","aliasedRequire","getSetGlobalLocale","getLocale","defineLocale","abbr","_config","parentLocale","forEach","checkOverflow","_a","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","configFromISO","allowTime","dateFormat","timeFormat","tzFormat","configFromStringAndFormat","extractFromRFC2822Strings","yearStr","monthStr","dayStr","hourStr","minuteStr","secondStr","untruncateYear","configFromRFC2822","militaryOffset","weekdayStr","parsedInput","parsedArray","getDay","obsOffset","numOffset","hm","setUTCMinutes","getUTCMinutes","defaults","c","configFromArray","currentDate","yearToUse","nowValue","_useUTC","getUTCMonth","getUTCDate","getMonth","getDate","weekYear","weekdayOverflow","curWeek","GG","W","E","createLocal","_week","gg","_dayOfYear","dayOfYearFromWeekInfo","_nextDay","expectedWeekday","ISO_8601","RFC_2822","stringLength","totalParsedInputLength","skipped","hour","meridiemHour","isPm","meridiemFixWrap","erasConvertYear","prepareConfig","preparse","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","score","configFromStringAndArray","createFromInputFallback","configFromString","dayOrDate","minute","millisecond","configFromObject","isUTC","prototypeMin","other","prototypeMax","pickBy","moments","ordering","Duration","years","quarters","quarter","weeks","isoWeek","days","milliseconds","unitHasDecimal","isDurationValid","_milliseconds","_days","_months","_bubble","isDuration","absRound","separator","utcOffset","sign","offsetFromString","chunkOffset","cloneWithOffset","model","setTime","local","getDateOffset","getTimezoneOffset","isUtc","aspNetRegex","isoRegex","createDuration","diffRes","parseIso","isBefore","positiveMomentsDifference","momentsDifference","inp","isAfter","createAdder","direction","period","addSubtract","isAdding","invalid","isString","isMomentInput","arrayTest","dataTypeTest","isNumberOrStringArray","property","objectTest","propertyTest","isMomentInputObject","monthDiff","wholeMonthDiff","anchor","adjust","newLocaleData","defaultFormat","defaultFormatUtc","MS_PER_400_YEARS","mod$1","dividend","divisor","localStartOfDate","utcStartOfDate","matchEraAbbr","erasAbbrRegex","computeErasParse","abbrPieces","namePieces","narrowPieces","eras","narrow","_erasRegex","_erasNameRegex","_erasAbbrRegex","_erasNarrowRegex","addWeekYearFormatToken","getSetWeekYearHelper","weeksTarget","dayOfYearData","erasNameRegex","erasNarrowRegex","erasParse","_eraYearOrdinalRegex","eraYearOrdinalParse","isoWeekYear","_dayOfMonthOrdinalParse","_ordinalParse","_dayOfMonthOrdinalParseLenient","getSetDayOfMonth","getSetMinute","getSetSecond","parseMs","getSetMillisecond","preParsePostFormat","formats","isCalendarSpec","sod","startOf","calendarFormat","asFloat","zoneDelta","endOf","startOfDate","isoWeekday","inputString","postformat","withoutSuffix","humanize","fromNow","toNow","invalidAt","localInput","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","parsingFlags","prioritized","unitsObj","u","getPrioritizedUnits","toObject","toDate","toISOString","keepOffset","zone","for","toJSON","unix","creationData","eraName","since","eraNarrow","eraAbbr","eraYear","isoWeeks","weekInfo","weeksInWeekYear","isoWeeksInYear","isoWeeksInISOWeekYear","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","parseZone","tZone","hasAlignedHourOffset","isDST","isUtcOffset","zoneAbbr","zoneName","dates","isDSTShifted","_isDSTShifted","array1","array2","dontConvert","lengthDiff","diffs","compareArrays","proto$1","get$1","field","listMonthsImpl","out","listWeekdaysImpl","localeSorted","_calendar","_longDateFormat","formatUpper","tok","_invalidDate","_ordinal","isFuture","_relativeTime","pastFuture","_eras","Infinity","isFormat","_monthsShort","monthName","_monthsParseExact","ii","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","firstDayOfYear","firstDayOfWeek","_weekdays","_weekdaysMin","_weekdaysShort","weekdayName","_weekdaysParseExact","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","_fullWeekdaysParse","charAt","isLower","langData","mathAbs","addSubtract$1","absCeil","daysToMonths","monthsToDays","makeAs","alias","as","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","makeGetter","thresholds","relativeTime$1","posNegDuration","abs$1","toISOString$1","ymSign","daysSign","hmsSign","total","toFixed","proto$2","monthsFromDays","argWithSuffix","argThresholds","withSuffix","assign","toIsoString","updateLocale","tmpLocale","relativeTimeRounding","roundingFunction","relativeTimeThreshold","threshold","limit","myMoment","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","TIME","TIME_SECONDS","TIME_MS","define","g","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","currentQueue","draining","queueIndex","cleanUpNextTick","drainQueue","marker","runClearTimeout","Item","nextTick","title","browser","env","argv","versions","addListener","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","binding","cwd","chdir","umask","Popper","_interopDefaultLegacy","$__default","Popper__default","_defineProperties","descriptor","_createClass","Constructor","protoProps","staticProps","_extends","TRANSITION_END","transitionEndEmulator","_this","called","Util","triggerTransitionEnd","getUID","getSelectorFromElement","element","hrefAttr","querySelector","getTransitionDurationFromElement","transitionDuration","transitionDelay","floatTransitionDuration","floatTransitionDelay","reflow","supportsTransitionEnd","Boolean","isElement","typeCheckConfig","componentName","configTypes","expectedTypes","valueType","findShadowRoot","attachShadow","ShadowRoot","jQueryDetection","emulateTransitionEnd","NAME","DATA_KEY","JQUERY_NO_CONFLICT","Alert","_element","_proto","close","rootElement","_getRootElement","_triggerCloseEvent","_removeElement","dispose","closeEvent","_destroyElement","_jQueryInterface","$element","_handleDismiss","alertInstance","NAME$1","DATA_KEY$1","EVENT_KEY$1","DATA_API_KEY$1","JQUERY_NO_CONFLICT$1","CLASS_NAME_ACTIVE","SELECTOR_DATA_TOGGLE_CARROT","SELECTOR_INPUT","Button","shouldAvoidTriggerChange","triggerChangeEvent","addAriaPressed","classList","hasAttribute","avoidTriggerChange","inputBtn","initialButton","tagName","_len","_button","NAME$2","DATA_KEY$2","EVENT_KEY$2","JQUERY_NO_CONFLICT$2","Default","keyboard","slide","pause","touch","DefaultType","DIRECTION_NEXT","DIRECTION_PREV","EVENT_SLID","CLASS_NAME_ACTIVE$1","SELECTOR_ACTIVE_ITEM","PointerType","TOUCH","PEN","Carousel","_items","_interval","_activeElement","_isPaused","_isSliding","touchTimeout","touchStartX","touchDeltaX","_getConfig","_indicatorsElement","_touchSupported","navigator","maxTouchPoints","_pointerEvent","PointerEvent","MSPointerEvent","_addEventListeners","_slide","nextWhenVisible","cycle","clearInterval","_updateInterval","setInterval","visibilityState","activeIndex","_getItemIndex","_handleSwipe","absDeltax","_this2","_keydown","_addTouchEventListeners","_this3","_getItemByDirection","isNextDirection","isPrevDirection","lastItemIndex","itemIndex","_triggerSlideEvent","eventDirectionName","targetIndex","fromIndex","slideEvent","_setActiveIndicatorElement","indicators","nextIndicator","elementInterval","defaultInterval","directionalClassName","orderClassName","slidEvent","_this4","activeElementIndex","nextElement","nextElementIndex","isCycling","action","ride","_dataApiClickHandler","slideIndex","carousels","$carousel","NAME$3","DATA_KEY$3","EVENT_KEY$3","JQUERY_NO_CONFLICT$3","Default$1","DefaultType$1","CLASS_NAME_SHOW$1","CLASS_NAME_COLLAPSE","CLASS_NAME_COLLAPSING","CLASS_NAME_COLLAPSED","SELECTOR_DATA_TOGGLE$1","Collapse","_isTransitioning","_triggerArray","toggleList","filterElement","foundElem","_selector","_parent","_getParent","_addAriaAndCollapsedClass","startEvent","scrollSize","actives","activesData","_getDimension","setTransitioning","triggerArrayLength","isTransitioning","_getTargetFromElement","triggerArray","isOpen","$trigger","$target","NAME$4","DATA_KEY$4","EVENT_KEY$4","DATA_API_KEY$4","JQUERY_NO_CONFLICT$4","REGEXP_KEYDOWN","ARROW_UP_KEYCODE","EVENT_HIDE$1","EVENT_HIDDEN$1","EVENT_CLICK_DATA_API$4","EVENT_KEYDOWN_DATA_API","CLASS_NAME_DISABLED","CLASS_NAME_SHOW$2","CLASS_NAME_MENURIGHT","SELECTOR_DATA_TOGGLE$2","SELECTOR_MENU","Default$2","flip","boundary","reference","popperConfig","DefaultType$2","Dropdown","_popper","_menu","_getMenuElement","_inNavbar","_detectNavbar","isActive","_clearMenus","usePopper","showEvent","_getParentFromElement","referenceElement","_getPopperConfig","hideEvent","destroy","update","scheduleUpdate","_getPlacement","$parentDropdown","placement","_getOffset","offsets","modifiers","enabled","preventOverflow","boundariesElement","applyStyle","toggles","dropdownMenu","clickEvent","_dataApiKeydownHandler","items","NAME$5","DATA_KEY$5","EVENT_KEY$5","JQUERY_NO_CONFLICT$5","Default$3","backdrop","DefaultType$3","EVENT_HIDDEN$2","EVENT_SHOW$2","EVENT_FOCUSIN","EVENT_RESIZE","EVENT_CLICK_DISMISS","EVENT_KEYDOWN_DISMISS","EVENT_MOUSEDOWN_DISMISS","CLASS_NAME_OPEN","CLASS_NAME_FADE$1","CLASS_NAME_SHOW$3","CLASS_NAME_STATIC","SELECTOR_FIXED_CONTENT","SELECTOR_STICKY_CONTENT","Modal","_dialog","_backdrop","_isShown","_isBodyOverflowing","_ignoreBackdropClick","_scrollbarWidth","_checkScrollbar","_setScrollbar","_adjustDialog","_setEscapeEvent","_setResizeEvent","_showBackdrop","_showElement","transition","_hideModal","htmlElement","handleUpdate","_triggerBackdropTransition","isModalOverflowing","modalTransitionDuration","hideEventPrevented","scrollHeight","clientHeight","modalBody","Node","ELEMENT_NODE","_enforceFocus","shownEvent","transitionComplete","_this5","_this6","_this7","_this8","_resetAdjustments","_resetScrollbar","_removeBackdrop","_backdropTransitionDuration","_this9","backdropTransitionDuration","callbackRemove","paddingLeft","paddingRight","innerWidth","_getScrollbarWidth","actualPadding","calculatedPadding","_this10","fixedContent","stickyContent","actualMargin","marginRight","calculatedMargin","scrollDiv","scrollbarWidth","clientWidth","_this11","uriAttrs","DefaultWhitelist","area","br","em","hr","h1","h2","h3","h4","h5","h6","img","li","ol","pre","small","span","sub","sup","strong","ul","SAFE_URL_PATTERN","DATA_URL_PATTERN","sanitizeHtml","unsafeHtml","whiteList","sanitizeFn","createdDocument","whitelistKeys","_loop","elName","attributeList","whitelistedAttributes","allowedAttributeList","attrName","regExp","attrRegex","allowedAttribute","NAME$6","DATA_KEY$6","EVENT_KEY$6","JQUERY_NO_CONFLICT$6","CLASS_PREFIX","BSCLS_PREFIX_REGEX","DISALLOWED_ATTRIBUTES","DefaultType$4","template","fallbackPlacement","customClass","sanitize","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","Default$4","HOVER_STATE_SHOW","HIDE","HIDDEN","SHOW","SHOWN","INSERTED","CLICK","FOCUSIN","FOCUSOUT","MOUSEENTER","MOUSELEAVE","CLASS_NAME_FADE$2","CLASS_NAME_SHOW$4","TRIGGER_HOVER","Tooltip","_isEnabled","_timeout","_hoverState","_activeTrigger","tip","_setListeners","enable","toggleEnabled","dataKey","_getDelegateConfig","_isWithActiveTrigger","_enter","_leave","getTipElement","EVENT_KEY","_hideModalHandler","isWithContent","shadowRoot","isInTheDom","tipId","setContent","attachment","_getAttachment","addAttachmentClass","_getContainer","_fixTransition","prevHoverState","_cleanTipClass","getTitle","setElementContent","behavior","arrow","onCreate","originalPlacement","_handlePopperPlacementChange","onUpdate","eventIn","eventOut","_fixTitle","titleType","dataAttributes","$tip","tabClass","popperData","instance","popper","initConfigAnimation","NAME$7","DATA_KEY$7","EVENT_KEY$7","JQUERY_NO_CONFLICT$7","CLASS_PREFIX$1","BSCLS_PREFIX_REGEX$1","Default$5","DefaultType$5","Event$1","Popover","_Tooltip","subClass","superClass","__proto__","_getContent","CLASS_NAME_FADE$3","NAME$8","DATA_KEY$8","EVENT_KEY$8","JQUERY_NO_CONFLICT$8","Default$6","DefaultType$6","CLASS_NAME_ACTIVE$2","SELECTOR_NAV_LIST_GROUP","SELECTOR_NAV_LINKS","SELECTOR_LIST_ITEMS","ScrollSpy","_scrollElement","_offsets","_targets","_activeTarget","_scrollHeight","_process","refresh","autoMethod","offsetMethod","offsetBase","_getScrollTop","_getScrollHeight","targetSelector","targetBCR","_getOffsetHeight","innerHeight","maxScroll","_activate","_clear","queries","$link","scrollSpys","$spy","DATA_KEY$9","JQUERY_NO_CONFLICT$9","CLASS_NAME_ACTIVE$3","SELECTOR_ACTIVE_UL","Tab","previous","listElement","itemSelector","hiddenEvent","_transitionComplete","dropdownChild","dropdownElement","dropdownToggleList","$this","NAME$a","DATA_KEY$a","EVENT_KEY$a","JQUERY_NO_CONFLICT$a","EVENT_CLICK_DISMISS$1","CLASS_NAME_SHOW$7","DefaultType$7","autohide","Default$7","Toast","_clearTimeout","_close","Scrollspy","require","Timeout","clearFn","_id","_clearFn","unref","ref","enroll","msecs","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","_onTimeout","setImmediate","clearImmediate","webpackPolyfill","paths","isBrowser","timeoutDuration","longerTimeoutBrowsers","userAgent","debounce","Promise","scheduled","functionToCheck","getStyleComputedProperty","getParentNode","getScrollParent","_getStyleComputedProp","getReferenceNode","referenceNode","isIE11","MSInputMethodContext","documentMode","isIE10","isIE","getOffsetParent","noOffsetParent","nextElementSibling","getRoot","findCommonOffsetParent","element1","element2","order","DOCUMENT_POSITION_FOLLOWING","range","createRange","setStart","setEnd","commonAncestorContainer","element1root","getScroll","upperSide","scrollingElement","getBordersSize","axis","sideA","sideB","getSize","computedStyle","getWindowSizes","classCallCheck","createClass","defineProperties","getClientRect","bottom","sizes","horizScrollbar","vertScrollbar","getOffsetRectRelativeToArbitraryNode","fixedPosition","isHTML","childrenRect","parentRect","scrollParent","borderLeftWidth","marginTop","modifier","includeScroll","getFixedPositionOffsetParent","parentElement","getBoundaries","boundaries","excludeScroll","relativeOffset","getViewportOffsetRectRelativeToArtbitraryNode","boundariesNode","isFixed","_getWindowSizes","isPaddingNumber","computeAutoPlacement","refRect","rects","sortedAreas","_ref","filteredAreas","_ref2","computedPlacement","variation","getReferenceOffsets","getOuterSizes","marginBottom","getOppositePlacement","getPopperOffsets","referenceOffsets","popperRect","popperOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","runModifiers","ends","findIndex","isModifierEnabled","modifierName","getSupportedPropertyName","prefixes","upperProp","toCheck","getWindow","setupEventListeners","updateBound","passive","scrollElement","attachToScrollParents","scrollParents","isBody","eventsEnabled","disableEventListeners","cancelAnimationFrame","setStyles","isFirefox","isModifierRequired","requestingName","requestedName","requesting","isRequired","_requesting","placements","validPlacements","clockwise","counter","BEHAVIORS","parseOffset","basePlacement","useHeight","fragments","frag","divider","search","splitRegex","op","mergeWithPrevious","reduce","str","index2","Defaults","positionFixed","removeOnDestroy","side","shiftvariation","_data$offsets","isVertical","shiftOffsets","transformProp","popperStyles","transform","escapeWithReference","secondary","keepTogether","opSide","arrowElement","sideCapitalized","altSide","arrowElementSize","center","popperMarginSide","popperBorderSide","sideValue","_data$offsets$arrow","flipped","placementOpposite","flipOrder","refOffsets","overlapsRef","overflowsLeft","overflowsRight","overflowsTop","overflowsBottom","overflowsBoundaries","flippedVariationByRef","flipVariations","flippedVariationByContent","flipVariationsByContent","flippedVariation","inner","subtractLength","bound","computeStyle","legacyGpuAccelerationOption","gpuAcceleration","popperWidth","offsetParentRect","shouldRound","devicePixelRatio","noRound","referenceWidth","isVariation","horizontalToInteger","verticalToInteger","prefixedProperty","willChange","invertLeft","arrowStyles","onLoad","modifierOptions","isDestroyed","isCreated","enableEventListeners","Utils","PopperUtils","moment","pluralForm","pluralize","f","plurals","symbolMap","1","2","3","4","5","6","7","8","9","numberMap","weekdaysParseExact","suffixes","70","80","20","50","100","10","30","60","90","relativeTimeWithPlural","forms","word","standalone","lastDigit","last2Digits","monthsParseExact","relativeTimeWithMutation","mutationTable","substring","softMutation","minWeekdaysParse","fullWeekdaysParse","shortWeekdaysParse","monthsStrictRegex","monthsShortStrictRegex","longMonthsParse","shortMonthsParse","lastNumber","translate","ll","lll","llll","plural","processRelativeTime","monthsNominativeEl","monthsGenitiveEl","momentToFormat","_monthsGenitiveEl","_monthsNominativeEl","calendarEl","_calendarEl","monthsShortDot","numbersPast","numbersFuture","monthsShortWithDots","monthsShortWithoutDots","weekEndings","eraYearOrdinalRegex","$0","$1","$2","40","isUpper","eifelerRegelAppliesToNumber","translateSingular","relativeTimeWithSingular","translator","words","correctGrammaticalCase","wordKey","relativeTimeMr","monthsNominative","monthsSubjective","12","13","numbersNouns","numberNoun","hundred","ten","numberAsNoun","processHoursFunction","nominative","accusative","genitive","normalizeComponent","scriptExports","render","staticRenderFns","functionalTemplate","injectStyles","scopeId","moduleIdentifier","shadowMode","originalRender","_compiled","functional","_scopeId","$vnode","ssrContext","__VUE_SSR_CONTEXT__","_registeredComponents","_ssrRegister","$root","$options","_injectStyles","existing","beforeCreate","tasksByHandle","runIfPresent","currentlyRunningATask","task","installPostMessageImplementation","onGlobalMessage","messagePrefix","registerImmediate","postMessage","nextHandle","channel","attachTo","importScripts","postMessageIsAsynchronous","oldOnMessage","onmessage","canUsePostMessage","MessageChannel","port1","port2","__webpack_amd_options__"],"mappings":"4GAaYA,EAAQC,E;;;;;;;;;;;;;GAARD;EA0BW,oBAAXE,OAAyBA,YAAhC,EA1BeD,EA0BgC,SAAUC,EAAQC,GAmDvD,SAAXC,EAA8BC,GAChC,OAAc,MAAPA,GAAeA,IAAQA,EAAIH,OA5CpC,IAAII,EAAM,GAENC,EAAWC,OAAOC,eAElBC,EAAQJ,EAAII,MAEZC,EAAOL,EAAIK,KAAO,SAAUC,GAC/B,OAAON,EAAIK,KAAKE,KAAMD,IACnB,SAAUA,GACb,OAAON,EAAIQ,OAAOC,MAAO,GAAIH,IAI1BI,EAAOV,EAAIU,KAEXC,EAAUX,EAAIW,QAEdC,EAAa,GAEbC,EAAWD,EAAWC,SAEtBC,EAASF,EAAWG,eAEpBC,EAAaF,EAAOD,SAEpBI,EAAuBD,EAAWT,KAAML,QAExCgB,EAAU,GAEVC,EAAa,SAAqBpB,GASpC,MAAsB,mBAARA,GAA8C,iBAAjBA,EAAIqB,UAC1B,mBAAbrB,EAAIsB,MASVC,EAAW1B,EAAO0B,SAIjBC,EAA4B,CAC/BC,MAAM,EACNC,KAAK,EACLC,OAAO,EACPC,UAAU,GAGX,SAASC,EAASC,EAAMC,EAAMC,GAG7B,IAAIC,EAAGC,EACNC,GAHDH,EAAMA,GAAOT,GAGCa,cAAe,UAG7B,GADAD,EAAOE,KAAOP,EACTC,EACJ,IAAME,KAAKT,GAYVU,EAAMH,EAAME,IAAOF,EAAKO,cAAgBP,EAAKO,aAAcL,KAE1DE,EAAOI,aAAcN,EAAGC,GAI3BF,EAAIQ,KAAKC,YAAaN,GAASO,WAAWC,YAAaR,GAIzD,SAASS,EAAQ5C,GAChB,OAAY,MAAPA,EACGA,EAAM,GAIQ,iBAAf,IAAOA,EAAP,eAAOA,KAAmC,mBAARA,EACxCa,EAAYC,EAASN,KAAMR,KAAW,cADhC,IAECA,EAFD,eAECA,GAQT,IACC6C,EAAU,QAGVC,EAAS,SAATA,EAAmBC,EAAUC,GAI5B,OAAO,IAAIF,EAAOG,GAAGC,KAAMH,EAAUC,IA0VvC,SAASG,EAAanD,GAMrB,IAAIoD,IAAWpD,GAAO,WAAYA,GAAOA,EAAIoD,OAC5C3B,EAAOmB,EAAQ5C,GAEhB,OAAKoB,EAAYpB,KAASD,EAAUC,KAIpB,UAATyB,GAA+B,IAAX2B,GACR,iBAAXA,GAAgC,EAATA,GAAgBA,EAAS,KAAOpD,GArWhE8C,EAAOG,GAAKH,EAAOO,UAAY,CAG9BC,OAAQT,EAERU,YAAaT,EAGbM,OAAQ,EAERI,QAAS,WACR,OAAOnD,EAAMG,KAAMiD,OAKpBC,IAAK,SAAUC,GAGd,OAAY,MAAPA,EACGtD,EAAMG,KAAMiD,MAIbE,EAAM,EAAIF,KAAME,EAAMF,KAAKL,QAAWK,KAAME,IAKpDC,UAAW,SAAUC,GAGhBC,EAAMhB,EAAOiB,MAAON,KAAKF,cAAeM,GAM5C,OAHAC,EAAIE,WAAaP,KAGVK,GAIRG,KAAM,SAAUC,GACf,OAAOpB,EAAOmB,KAAMR,KAAMS,IAG3BC,IAAK,SAAUD,GACd,OAAOT,KAAKG,UAAWd,EAAOqB,IAAKV,KAAM,SAAUW,EAAMnC,GACxD,OAAOiC,EAAS1D,KAAM4D,EAAMnC,EAAGmC,OAIjC/D,MAAO,WACN,OAAOoD,KAAKG,UAAWvD,EAAMK,MAAO+C,KAAMY,aAG3CC,MAAO,WACN,OAAOb,KAAKc,GAAI,IAGjBC,KAAM,WACL,OAAOf,KAAKc,IAAK,IAGlBE,KAAM,WACL,OAAOhB,KAAKG,UAAWd,EAAO4B,KAAMjB,KAAM,SAAUkB,EAAO1C,GAC1D,OAASA,EAAI,GAAM,MAIrB2C,IAAK,WACJ,OAAOnB,KAAKG,UAAWd,EAAO4B,KAAMjB,KAAM,SAAUkB,EAAO1C,GAC1D,OAAOA,EAAI,MAIbsC,GAAI,SAAUtC,GACb,IAAI4C,EAAMpB,KAAKL,OACd0B,GAAK7C,GAAMA,EAAI,EAAI4C,EAAM,GAC1B,OAAOpB,KAAKG,UAAgB,GAALkB,GAAUA,EAAID,EAAM,CAAEpB,KAAMqB,IAAQ,KAG5DC,IAAK,WACJ,OAAOtB,KAAKO,YAAcP,KAAKF,eAKhC5C,KAAMA,EACNqE,KAAM/E,EAAI+E,KACVC,OAAQhF,EAAIgF,QAGbnC,EAAOoC,OAASpC,EAAOG,GAAGiC,OAAS,WAClC,IAAIC,EAASC,EAAWC,EAAMC,EAAaC,EAC1CC,EAASnB,UAAW,IAAO,GAC3BpC,EAAI,EACJmB,EAASiB,UAAUjB,OACnBqC,GAAO,EAsBR,IAnBuB,kBAAXD,IACXC,EAAOD,EAGPA,EAASnB,UAAWpC,IAAO,GAC3BA,KAIsB,iBAAlB,IAAOuD,EAAP,eAAOA,KAAwBpE,EAAYoE,KAC/CA,EAAS,IAILvD,IAAMmB,IACVoC,EAAS/B,KACTxB,KAGOA,EAAImB,EAAQnB,IAGnB,GAAqC,OAA9BkD,EAAUd,UAAWpC,IAG3B,IAAMmD,KAAQD,EACbE,EAAOF,EAASC,GAIF,cAATA,GAAwBI,IAAWH,IAKnCI,GAAQJ,IAAUvC,EAAO4C,cAAeL,KAC1CC,EAAcK,MAAMC,QAASP,MAC/B3D,EAAM8D,EAAQJ,GAIbG,EADID,IAAgBK,MAAMC,QAASlE,GAC3B,GACI4D,GAAgBxC,EAAO4C,cAAehE,GAG1CA,EAFA,GAIT4D,GAAc,EAGdE,EAAQJ,GAAStC,EAAOoC,OAAQO,EAAMF,EAAOF,SAGzBQ,IAATR,IACXG,EAAQJ,GAASC,IAOrB,OAAOG,GAGR1C,EAAOoC,OAAQ,CAGdY,QAAS,UAAajD,EAAUkD,KAAKC,UAAWC,QAAS,MAAO,IAGhEC,SAAS,EAETC,MAAO,SAAUC,GAChB,MAAM,IAAIC,MAAOD,IAGlBE,KAAM,aAENZ,cAAe,SAAU1F,GAKxB,SAAMA,GAAgC,oBAAzBc,EAASN,KAAMR,QAI5BuG,EAAQrG,EAAUF,KASK,mBADvBwG,EAAOzF,EAAOP,KAAM+F,EAAO,gBAAmBA,EAAMhD,cACftC,EAAWT,KAAMgG,KAAWtF,IAGlEuF,cAAe,SAAUzG,GAGxB,IAFA,IAAIoF,KAEUpF,EACb,OAAO,EAER,OAAO,GAKR0G,WAAY,SAAU5E,EAAMqD,EAASnD,GACpCH,EAASC,EAAM,CAAEH,MAAOwD,GAAWA,EAAQxD,OAASK,IAGrDiC,KAAM,SAAUjE,EAAKkE,GACpB,IAAId,EAAQnB,EAAI,EAEhB,GAAKkB,EAAanD,GAEjB,IADAoD,EAASpD,EAAIoD,OACLnB,EAAImB,IACqC,IAA3Cc,EAAS1D,KAAMR,EAAKiC,GAAKA,EAAGjC,EAAKiC,IADnBA,UAMpB,IAAMA,KAAKjC,EACV,IAAgD,IAA3CkE,EAAS1D,KAAMR,EAAKiC,GAAKA,EAAGjC,EAAKiC,IACrC,MAKH,OAAOjC,GAIR2G,UAAW,SAAU1G,EAAK2G,GACrB9C,EAAM8C,GAAW,GAarB,OAXY,MAAP3G,IACCkD,EAAahD,OAAQF,IACzB6C,EAAOiB,MAAOD,EACE,iBAAR7D,EACN,CAAEA,GAAQA,GAGZU,EAAKH,KAAMsD,EAAK7D,IAIX6D,GAGR+C,QAAS,SAAUzC,EAAMnE,EAAKgC,GAC7B,OAAc,MAAPhC,GAAe,EAAIW,EAAQJ,KAAMP,EAAKmE,EAAMnC,IAKpD8B,MAAO,SAAUO,EAAOwC,GAKvB,IAJA,IAAIjC,GAAOiC,EAAO1D,OACjB0B,EAAI,EACJ7C,EAAIqC,EAAMlB,OAEH0B,EAAID,EAAKC,IAChBR,EAAOrC,KAAQ6E,EAAQhC,GAKxB,OAFAR,EAAMlB,OAASnB,EAERqC,GAGRI,KAAM,SAAUb,EAAOK,EAAU6C,GAShC,IARA,IACCC,EAAU,GACV/E,EAAI,EACJmB,EAASS,EAAMT,OACf6D,GAAkBF,EAIX9E,EAAImB,EAAQnB,KACAiC,EAAUL,EAAO5B,GAAKA,IAChBgF,GACxBD,EAAQrG,KAAMkD,EAAO5B,IAIvB,OAAO+E,GAIR7C,IAAK,SAAUN,EAAOK,EAAUgD,GAC/B,IAAI9D,EAAQ+D,EACXlF,EAAI,EACJ6B,EAAM,GAGP,GAAKX,EAAaU,GAEjB,IADAT,EAASS,EAAMT,OACPnB,EAAImB,EAAQnB,IAGL,OAFdkF,EAAQjD,EAAUL,EAAO5B,GAAKA,EAAGiF,KAGhCpD,EAAInD,KAAMwG,QAMZ,IAAMlF,KAAK4B,EAGI,OAFdsD,EAAQjD,EAAUL,EAAO5B,GAAKA,EAAGiF,KAGhCpD,EAAInD,KAAMwG,GAMb,OAAO7G,EAAMwD,IAIdsD,KAAM,EAINjG,QAASA,IAGa,mBAAXkG,SACXvE,EAAOG,GAAIoE,OAAOC,UAAarH,EAAKoH,OAAOC,WAI5CxE,EAAOmB,KAAM,uEAAuEsD,MAAO,KAC1F,SAAUC,EAAIpC,GACbvE,EAAY,WAAauE,EAAO,KAAQA,EAAKqC,gBAmB/C,IAAIC;;;;;;;;;;IAWF;SAAU7H,GA6IC,SAAZ8H,EAAsBC,EAAQC,GAG7B,OAFIC,EAAO,KAAOF,EAAOvH,MAAO,GAAM,MAE/BwH,IASNC,EAAO,EACNC,OAAOC,aAAqB,MAAPF,GACrBC,OAAOC,aAAcF,GAAQ,GAAK,MAAe,KAAPA,EAAe,QA2B5C,SAAhBG,IACCC,IAtLF,IAAIjG,EACHd,EACAgH,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAGAT,EACA3G,EACAqH,EACAC,EACAC,EACAC,EACA/B,EACAgC,EAGAlD,EAAU,WAAe,IAAImD,KAC7BC,EAAerJ,EAAO0B,SACtB4H,EAAU,EACVC,EAAO,EACPC,EAAaC,KACbC,EAAaD,KACbE,EAAgBF,KAChBG,EAAyBH,KACzBI,EAAY,SAAUC,EAAGC,GAIxB,OAHKD,IAAMC,IACVjB,GAAe,GAET,GAIR5H,EAAW,GAAKC,eAChBf,EAAM,GACN4J,EAAM5J,EAAI4J,IACVC,EAAa7J,EAAIU,KACjBA,EAAOV,EAAIU,KACXN,EAAQJ,EAAII,MAIZO,EAAU,SAAUmJ,EAAM3F,GAGzB,IAFA,IAAInC,EAAI,EACP4C,EAAMkF,EAAK3G,OACJnB,EAAI4C,EAAK5C,IAChB,GAAK8H,EAAM9H,KAAQmC,EAClB,OAAOnC,EAGT,OAAQ,GAGT+H,EAAW,6HAMXC,EAAa,sBAGbC,EAAa,0BAA4BD,EACxC,0CAGDE,EAAa,MAAQF,EAAa,KAAOC,EAAa,OAASD,EAG9D,gBAAkBA,EAIlB,2DAA6DC,EAAa,OAC1ED,EAAa,OAEdG,EAAU,KAAOF,EAAa,wFAOAC,EAAa,eAO3CE,EAAc,IAAIC,OAAQL,EAAa,IAAK,KAC5CM,EAAQ,IAAID,OAAQ,IAAML,EAAa,8BACtCA,EAAa,KAAM,KAEpBO,EAAS,IAAIF,OAAQ,IAAML,EAAa,KAAOA,EAAa,KAC5DQ,EAAe,IAAIH,OAAQ,IAAML,EAAa,WAAaA,EAAa,IAAMA,EAC7E,KACDS,EAAW,IAAIJ,OAAQL,EAAa,MAEpCU,EAAU,IAAIL,OAAQF,GACtBQ,EAAc,IAAIN,OAAQ,IAAMJ,EAAa,KAE7CW,EAAY,CACX,GAAM,IAAIP,OAAQ,MAAQJ,EAAa,KACvC,MAAS,IAAII,OAAQ,QAAUJ,EAAa,KAC5C,IAAO,IAAII,OAAQ,KAAOJ,EAAa,SACvC,KAAQ,IAAII,OAAQ,IAAMH,GAC1B,OAAU,IAAIG,OAAQ,IAAMF,GAC5B,MAAS,IAAIE,OAAQ,yDACpBL,EAAa,+BAAiCA,EAAa,cAC3DA,EAAa,aAAeA,EAAa,SAAU,KACpD,KAAQ,IAAIK,OAAQ,OAASN,EAAW,KAAM,KAI9C,aAAgB,IAAIM,OAAQ,IAAML,EACjC,mDAAqDA,EACrD,mBAAqBA,EAAa,mBAAoB,MAGxDa,EAAQ,SACRC,EAAU,sCACVC,EAAU,SAEVC,GAAU,yBAGVC,GAAa,mCAEbC,GAAW,OAIXC,GAAY,IAAId,OAAQ,uBAAyBL,EAAa,uBAAwB,KAoBtFoB,GAAa,sDACbC,GAAa,SAAUC,EAAIC,GAC1B,OAAKA,EAGQ,OAAPD,EACG,IAIDA,EAAGlL,MAAO,GAAI,GAAM,KAC1BkL,EAAGE,WAAYF,EAAGnI,OAAS,GAAItC,SAAU,IAAO,IAI3C,KAAOyK,GAWfG,GAAqBC,GACpB,SAAUvH,GACT,OAAyB,IAAlBA,EAAKwH,UAAqD,aAAhCxH,EAAKyH,SAASpE,eAEhD,CAAEqE,IAAK,aAAcC,KAAM,WAI7B,IACCpL,EAAKD,MACFT,EAAMI,EAAMG,KAAM0I,EAAa8C,YACjC9C,EAAa8C,YAMd/L,EAAKiJ,EAAa8C,WAAW5I,QAAS/B,SACrC,MAAQ4K,GACTtL,EAAO,CAAED,MAAOT,EAAImD,OAGnB,SAAUoC,EAAQ0G,GACjBpC,EAAWpJ,MAAO8E,EAAQnF,EAAMG,KAAM0L,KAKvC,SAAU1G,EAAQ0G,GAKjB,IAJA,IAAIpH,EAAIU,EAAOpC,OACdnB,EAAI,EAGKuD,EAAQV,KAAQoH,EAAKjK,OAC/BuD,EAAOpC,OAAS0B,EAAI,IAKvB,SAAS4C,GAAQ3E,EAAUC,EAAS4D,EAASuF,GAC5C,IAAOlK,EAAGmC,EAAMgI,EAAKC,EAAOC,EAAQC,EACnCC,EAAaxJ,GAAWA,EAAQyJ,cAGhCpL,EAAW2B,EAAUA,EAAQ3B,SAAW,EAKzC,GAHAuF,EAAUA,GAAW,GAGI,iBAAb7D,IAA0BA,GACxB,IAAb1B,GAA+B,IAAbA,GAA+B,KAAbA,EAEpC,OAAOuF,EAIR,IAAMuF,IACLjE,EAAalF,GACbA,EAAUA,GAAWzB,EAEhBsH,GAAiB,CAIrB,GAAkB,KAAbxH,IAAqBgL,EAAQnB,GAAWwB,KAAM3J,IAGlD,GAAO4J,EAAIN,EAAO,IAGjB,GAAkB,IAAbhL,EAAiB,CACrB,KAAO+C,EAAOpB,EAAQ4J,eAAgBD,IAUrC,OAAO/F,EALP,GAAKxC,EAAKyI,KAAOF,EAEhB,OADA/F,EAAQjG,KAAMyD,GACPwC,OAYT,GAAK4F,IAAgBpI,EAAOoI,EAAWI,eAAgBD,KACtD3D,EAAUhG,EAASoB,IACnBA,EAAKyI,KAAOF,EAGZ,OADA/F,EAAQjG,KAAMyD,GACPwC,MAKH,IAAKyF,EAAO,GAElB,OADA1L,EAAKD,MAAOkG,EAAS5D,EAAQ8J,qBAAsB/J,IAC5C6D,EAGD,IAAO+F,EAAIN,EAAO,KAASlL,EAAQ4L,wBACzC/J,EAAQ+J,uBAGR,OADApM,EAAKD,MAAOkG,EAAS5D,EAAQ+J,uBAAwBJ,IAC9C/F,EAKT,GAAKzF,EAAQ6L,MACXvD,EAAwB1G,EAAW,QACjC+F,IAAcA,EAAUmE,KAAMlK,MAIlB,IAAb1B,GAAqD,WAAnC2B,EAAQ6I,SAASpE,eAA+B,CAYpE,GAVA8E,EAAcxJ,EACdyJ,EAAaxJ,EASK,IAAb3B,IACFqJ,EAASuC,KAAMlK,IAAc0H,EAAawC,KAAMlK,IAAe,CAqBjE,KAlBAyJ,EAAarB,GAAS8B,KAAMlK,IAAcmK,GAAalK,EAAQN,aAC9DM,KAImBA,GAAY7B,EAAQgM,SAGhCf,EAAMpJ,EAAQV,aAAc,OAClC8J,EAAMA,EAAInG,QAASoF,GAAYC,IAE/BtI,EAAQT,aAAc,KAAQ6J,EAAMtG,IAMtC7D,GADAqK,EAAShE,EAAUvF,IACRK,OACHnB,KACPqK,EAAQrK,IAAQmK,EAAM,IAAMA,EAAM,UAAa,IAC9CgB,GAAYd,EAAQrK,IAEtBsK,EAAcD,EAAOe,KAAM,KAG5B,IAIC,OAHA1M,EAAKD,MAAOkG,EACX4F,EAAWc,iBAAkBf,IAEvB3F,EACN,MAAQ2G,GACT9D,EAAwB1G,GAAU,GANnC,QAQMqJ,IAAQtG,GACZ9C,EAAQwK,gBAAiB,QAQ9B,OAAOhF,EAAQzF,EAASkD,QAASsE,EAAO,MAAQvH,EAAS4D,EAASuF,GASnE,SAAS7C,KACR,IAAImE,EAAO,GAEX,SAASC,EAAOC,EAAKxG,GAQpB,OALKsG,EAAK9M,KAAMgN,EAAM,KAAQxF,EAAKyF,oBAG3BF,EAAOD,EAAKI,SAEXH,EAAOC,EAAM,KAAQxG,EAE/B,OAAOuG,EAOR,SAASI,GAAc7K,GAEtB,OADAA,EAAI6C,IAAY,EACT7C,EAOR,SAAS8K,GAAQ9K,GAChB,IAAI+K,EAAKzM,EAASa,cAAe,YAEjC,IACC,QAASa,EAAI+K,GACZ,MAAQ/B,GACT,OAAO,EAHR,QAOM+B,EAAGtL,YACPsL,EAAGtL,WAAWC,YAAaqL,IAa9B,SAASC,GAAWC,EAAOC,GAI1B,IAHA,IAAIlO,EAAMiO,EAAM3G,MAAO,KACtBtF,EAAIhC,EAAImD,OAEDnB,KACPkG,EAAKiG,WAAYnO,EAAKgC,IAAQkM,EAUhC,SAASE,GAAc1E,EAAGC,GACzB,IAAI0E,EAAM1E,GAAKD,EACd4E,EAAOD,GAAsB,IAAf3E,EAAEtI,UAAiC,IAAfuI,EAAEvI,UACnCsI,EAAE6E,YAAc5E,EAAE4E,YAGpB,GAAKD,EACJ,OAAOA,EAIR,GAAKD,EACJ,KAAUA,EAAMA,EAAIG,aACnB,GAAKH,IAAQ1E,EACZ,OAAQ,EAKX,OAAOD,EAAI,GAAK,EA6BjB,SAAS+E,GAAsB9C,GAG9B,OAAO,SAAUxH,GAKhB,MAAK,SAAUA,EASTA,EAAK1B,aAAgC,IAAlB0B,EAAKwH,SAGvB,UAAWxH,EACV,UAAWA,EAAK1B,WACb0B,EAAK1B,WAAWkJ,WAAaA,EAE7BxH,EAAKwH,WAAaA,EAMpBxH,EAAKuK,aAAe/C,GAI1BxH,EAAKuK,cAAgB/C,GACrBF,GAAoBtH,KAAWwH,EAG1BxH,EAAKwH,WAAaA,EAKd,UAAWxH,GACfA,EAAKwH,WAAaA,GAY5B,SAASgD,GAAwB3L,GAChC,OAAO6K,GAAc,SAAUe,GAE9B,OADAA,GAAYA,EACLf,GAAc,SAAU3B,EAAMnF,GAMpC,IALA,IAAIlC,EACHgK,EAAe7L,EAAI,GAAIkJ,EAAK/I,OAAQyL,GACpC5M,EAAI6M,EAAa1L,OAGVnB,KACFkK,EAAQrH,EAAIgK,EAAc7M,MAC9BkK,EAAMrH,KAASkC,EAASlC,GAAMqH,EAAMrH,SAYzC,SAASoI,GAAalK,GACrB,OAAOA,QAAmD,IAAjCA,EAAQ8J,sBAAwC9J,EAkrC1E,IAAMf,KA9qCNd,EAAUuG,GAAOvG,QAAU,GAO3BkH,EAAQX,GAAOW,MAAQ,SAAUjE,GAChC,IAAI2K,EAAY3K,GAAQA,EAAK4K,aAC5BpG,EAAUxE,IAAUA,EAAKqI,eAAiBrI,GAAO6K,gBAKlD,OAAQnE,EAAMmC,KAAM8B,GAAanG,GAAWA,EAAQiD,UAAY,SAQjE3D,EAAcR,GAAOQ,YAAc,SAAUnG,GAC5C,IAAgBmN,EACflN,EAAMD,EAAOA,EAAK0K,eAAiB1K,EAAOmH,EAO3C,OAAKlH,GAAOT,GAA6B,IAAjBS,EAAIX,UAAmBW,EAAIiN,kBAMnDrG,GADArH,EAAWS,GACQiN,gBACnBpG,GAAkBR,EAAO9G,GAQpB2H,GAAgB3H,IAClB2N,EAAY3N,EAAS4N,cAAiBD,EAAUE,MAAQF,IAGrDA,EAAUG,iBACdH,EAAUG,iBAAkB,SAAUpH,GAAe,GAG1CiH,EAAUI,aACrBJ,EAAUI,YAAa,WAAYrH,IASrC9G,EAAQgM,MAAQY,GAAQ,SAAUC,GAEjC,OADApF,EAAQnG,YAAauL,GAAKvL,YAAalB,EAASa,cAAe,aACzB,IAAxB4L,EAAGV,mBACfU,EAAGV,iBAAkB,uBAAwBlK,SAShDjC,EAAQgJ,WAAa4D,GAAQ,SAAUC,GAEtC,OADAA,EAAGuB,UAAY,KACPvB,EAAG1L,aAAc,eAO1BnB,EAAQ2L,qBAAuBiB,GAAQ,SAAUC,GAEhD,OADAA,EAAGvL,YAAalB,EAASiO,cAAe,MAChCxB,EAAGlB,qBAAsB,KAAM1J,SAIxCjC,EAAQ4L,uBAAyB9B,GAAQgC,KAAM1L,EAASwL,wBAMxD5L,EAAQsO,QAAU1B,GAAQ,SAAUC,GAEnC,OADApF,EAAQnG,YAAauL,GAAKnB,GAAK/G,GACvBvE,EAASmO,oBAAsBnO,EAASmO,kBAAmB5J,GAAU1C,SAIzEjC,EAAQsO,SACZtH,EAAKwH,OAAL,GAAsB,SAAU9C,GAC/B,IAAI+C,EAAS/C,EAAG5G,QAASmF,GAAWzD,GACpC,OAAO,SAAUvD,GAChB,OAAOA,EAAK9B,aAAc,QAAWsN,IAGvCzH,EAAK0H,KAAL,GAAoB,SAAUhD,EAAI7J,GACjC,QAAuC,IAA3BA,EAAQ4J,gBAAkC/D,EAAiB,CAClEzE,EAAOpB,EAAQ4J,eAAgBC,GACnC,OAAOzI,EAAO,CAAEA,GAAS,OAI3B+D,EAAKwH,OAAL,GAAuB,SAAU9C,GAChC,IAAI+C,EAAS/C,EAAG5G,QAASmF,GAAWzD,GACpC,OAAO,SAAUvD,GACZrC,OAAwC,IAA1BqC,EAAK0L,kBACtB1L,EAAK0L,iBAAkB,MACxB,OAAO/N,GAAQA,EAAKoF,QAAUyI,IAMhCzH,EAAK0H,KAAL,GAAoB,SAAUhD,EAAI7J,GACjC,QAAuC,IAA3BA,EAAQ4J,gBAAkC/D,EAAiB,CACtE,IAAI9G,EAAME,EAAG4B,EACZO,EAAOpB,EAAQ4J,eAAgBC,GAEhC,GAAKzI,EAAO,CAIX,IADArC,EAAOqC,EAAK0L,iBAAkB,QACjB/N,EAAKoF,QAAU0F,EAC3B,MAAO,CAAEzI,GAMV,IAFAP,EAAQb,EAAQ0M,kBAAmB7C,GACnC5K,EAAI,EACMmC,EAAOP,EAAO5B,MAEvB,IADAF,EAAOqC,EAAK0L,iBAAkB,QACjB/N,EAAKoF,QAAU0F,EAC3B,MAAO,CAAEzI,GAKZ,MAAO,MAMV+D,EAAK0H,KAAL,IAAqB1O,EAAQ2L,qBAC5B,SAAUiD,EAAK/M,GACd,YAA6C,IAAjCA,EAAQ8J,qBACZ9J,EAAQ8J,qBAAsBiD,GAG1B5O,EAAQ6L,IACZhK,EAAQsK,iBAAkByC,QAD3B,GAKR,SAAUA,EAAK/M,GACd,IAAIoB,EACH4L,EAAM,GACN/N,EAAI,EAGJ2E,EAAU5D,EAAQ8J,qBAAsBiD,GAGzC,GAAa,MAARA,EASL,OAAOnJ,EARN,KAAUxC,EAAOwC,EAAS3E,MACF,IAAlBmC,EAAK/C,UACT2O,EAAIrP,KAAMyD,GAIZ,OAAO4L,GAMV7H,EAAK0H,KAAL,MAAuB1O,EAAQ4L,wBAA0B,SAAUwC,EAAWvM,GAC7E,QAA+C,IAAnCA,EAAQ+J,wBAA0ClE,EAC7D,OAAO7F,EAAQ+J,uBAAwBwC,IAUzCxG,EAAgB,GAOhBD,EAAY,IAEL3H,EAAQ6L,IAAM/B,GAAQgC,KAAM1L,EAAS+L,qBAI3CS,GAAQ,SAAUC,GAEjB,IAAIiC,EAOJrH,EAAQnG,YAAauL,GAAKkC,UAAY,UAAYpK,EAAU,qBAC1CA,EAAU,kEAOvBkI,EAAGV,iBAAkB,wBAAyBlK,QAClD0F,EAAUnI,KAAM,SAAWsJ,EAAa,gBAKnC+D,EAAGV,iBAAkB,cAAelK,QACzC0F,EAAUnI,KAAM,MAAQsJ,EAAa,aAAeD,EAAW,KAI1DgE,EAAGV,iBAAkB,QAAUxH,EAAU,MAAO1C,QACrD0F,EAAUnI,KAAM,OAQjBsP,EAAQ1O,EAASa,cAAe,UAC1BG,aAAc,OAAQ,IAC5ByL,EAAGvL,YAAawN,GACVjC,EAAGV,iBAAkB,aAAclK,QACxC0F,EAAUnI,KAAM,MAAQsJ,EAAa,QAAUA,EAAa,KAC3DA,EAAa,gBAMT+D,EAAGV,iBAAkB,YAAalK,QACvC0F,EAAUnI,KAAM,YAMXqN,EAAGV,iBAAkB,KAAOxH,EAAU,MAAO1C,QAClD0F,EAAUnI,KAAM,YAKjBqN,EAAGV,iBAAkB,QACrBxE,EAAUnI,KAAM,iBAGjBoN,GAAQ,SAAUC,GACjBA,EAAGkC,UAAY,oFAKf,IAAID,EAAQ1O,EAASa,cAAe,SACpC6N,EAAM1N,aAAc,OAAQ,UAC5ByL,EAAGvL,YAAawN,GAAQ1N,aAAc,OAAQ,KAIzCyL,EAAGV,iBAAkB,YAAalK,QACtC0F,EAAUnI,KAAM,OAASsJ,EAAa,eAKW,IAA7C+D,EAAGV,iBAAkB,YAAalK,QACtC0F,EAAUnI,KAAM,WAAY,aAK7BiI,EAAQnG,YAAauL,GAAKpC,UAAW,EACc,IAA9CoC,EAAGV,iBAAkB,aAAclK,QACvC0F,EAAUnI,KAAM,WAAY,aAK7BqN,EAAGV,iBAAkB,QACrBxE,EAAUnI,KAAM,YAIXQ,EAAQgP,gBAAkBlF,GAAQgC,KAAQjG,EAAU4B,EAAQ5B,SAClE4B,EAAQwH,uBACRxH,EAAQyH,oBACRzH,EAAQ0H,kBACR1H,EAAQ2H,qBAERxC,GAAQ,SAAUC,GAIjB7M,EAAQqP,kBAAoBxJ,EAAQxG,KAAMwN,EAAI,KAI9ChH,EAAQxG,KAAMwN,EAAI,aAClBjF,EAAcpI,KAAM,KAAMyJ,KAI5BtB,EAAYA,EAAU1F,QAAU,IAAIkH,OAAQxB,EAAUuE,KAAM,MAC5DtE,EAAgBA,EAAc3F,QAAU,IAAIkH,OAAQvB,EAAcsE,KAAM,MAIxEoD,EAAaxF,GAAQgC,KAAMrE,EAAQ8H,yBAKnC1H,EAAWyH,GAAcxF,GAAQgC,KAAMrE,EAAQI,UAC9C,SAAUW,EAAGC,GACZ,IAAI+G,EAAuB,IAAfhH,EAAEtI,SAAiBsI,EAAEsF,gBAAkBtF,EAClDiH,EAAMhH,GAAKA,EAAElH,WACd,OAAOiH,IAAMiH,MAAWA,GAAwB,IAAjBA,EAAIvP,YAClCsP,EAAM3H,SACL2H,EAAM3H,SAAU4H,GAChBjH,EAAE+G,yBAA8D,GAAnC/G,EAAE+G,wBAAyBE,MAG3D,SAAUjH,EAAGC,GACZ,GAAKA,EACJ,KAAUA,EAAIA,EAAElH,YACf,GAAKkH,IAAMD,EACV,OAAO,EAIV,OAAO,GAOTD,EAAY+G,EACZ,SAAU9G,EAAGC,GAGZ,GAAKD,IAAMC,EAEV,OADAjB,GAAe,EACR,EAIR,IAAIkI,GAAWlH,EAAE+G,yBAA2B9G,EAAE8G,wBAC9C,OAAKG,IAgBU,GAPfA,GAAYlH,EAAE8C,eAAiB9C,KAASC,EAAE6C,eAAiB7C,GAC1DD,EAAE+G,wBAAyB9G,GAG3B,KAIGzI,EAAQ2P,cAAgBlH,EAAE8G,wBAAyB/G,KAAQkH,EAOzDlH,GAAKpI,GAAYoI,EAAE8C,eAAiBvD,GACxCF,EAAUE,EAAcS,IAChB,EAOJC,GAAKrI,GAAYqI,EAAE6C,eAAiBvD,GACxCF,EAAUE,EAAcU,GACjB,EAIDlB,EACJ9H,EAAS8H,EAAWiB,GAAM/I,EAAS8H,EAAWkB,GAChD,EAGe,EAAViH,GAAe,EAAI,IAE3B,SAAUlH,EAAGC,GAGZ,GAAKD,IAAMC,EAEV,OADAjB,GAAe,EACR,EAGR,IAAI2F,EACHrM,EAAI,EACJ8O,EAAMpH,EAAEjH,WACRkO,EAAMhH,EAAElH,WACRsO,EAAK,CAAErH,GACPsH,EAAK,CAAErH,GAGR,IAAMmH,IAAQH,EAMb,OAAOjH,GAAKpI,GAAY,EACvBqI,GAAKrI,EAAW,EAEhBwP,GAAO,EACPH,EAAM,EACNlI,EACE9H,EAAS8H,EAAWiB,GAAM/I,EAAS8H,EAAWkB,GAChD,EAGK,GAAKmH,IAAQH,EACnB,OAAOvC,GAAc1E,EAAGC,GAKzB,IADA0E,EAAM3E,EACI2E,EAAMA,EAAI5L,YACnBsO,EAAGE,QAAS5C,GAGb,IADAA,EAAM1E,EACI0E,EAAMA,EAAI5L,YACnBuO,EAAGC,QAAS5C,GAIb,KAAQ0C,EAAI/O,KAAQgP,EAAIhP,IACvBA,IAGD,OAAOA,EAGNoM,GAAc2C,EAAI/O,GAAKgP,EAAIhP,IAO3B+O,EAAI/O,IAAOiH,GAAgB,EAC3B+H,EAAIhP,IAAOiH,EAAe,EAE1B,IAGK3H,GAGRmG,GAAOV,QAAU,SAAUmK,EAAMC,GAChC,OAAO1J,GAAQyJ,EAAM,KAAM,KAAMC,IAGlC1J,GAAOyI,gBAAkB,SAAU/L,EAAM+M,GAGxC,GAFAjJ,EAAa9D,GAERjD,EAAQgP,iBAAmBtH,IAC9BY,EAAwB0H,EAAO,QAC7BpI,IAAkBA,EAAckE,KAAMkE,OACtCrI,IAAkBA,EAAUmE,KAAMkE,IAErC,IACC,IAAIrN,EAAMkD,EAAQxG,KAAM4D,EAAM+M,GAG9B,GAAKrN,GAAO3C,EAAQqP,mBAInBpM,EAAK7C,UAAuC,KAA3B6C,EAAK7C,SAASF,SAC/B,OAAOyC,EAEP,MAAQmI,GACTxC,EAAwB0H,GAAM,GAIhC,OAAyD,EAAlDzJ,GAAQyJ,EAAM5P,EAAU,KAAM,CAAE6C,IAAShB,QAGjDsE,GAAOsB,SAAW,SAAUhG,EAASoB,GAUpC,OAHOpB,EAAQyJ,eAAiBzJ,IAAazB,GAC5C2G,EAAalF,GAEPgG,EAAUhG,EAASoB,IAG3BsD,GAAO2J,KAAO,SAAUjN,EAAMgB,IAOtBhB,EAAKqI,eAAiBrI,IAAU7C,GACtC2G,EAAa9D,GAGd,IAAInB,EAAKkF,EAAKiG,WAAYhJ,EAAKqC,eAG9BvF,EAAMe,GAAMlC,EAAOP,KAAM2H,EAAKiG,WAAYhJ,EAAKqC,eAC9CxE,EAAImB,EAAMgB,GAAOyD,QACjBhD,EAEF,YAAeA,IAAR3D,EACNA,EACAf,EAAQgJ,aAAetB,EACtBzE,EAAK9B,aAAc8C,IACjBlD,EAAMkC,EAAK0L,iBAAkB1K,KAAYlD,EAAIoP,UAC9CpP,EAAIiF,MACJ,MAGJO,GAAOE,OAAS,SAAU2J,GACzB,OAASA,EAAM,IAAKtL,QAASoF,GAAYC,KAG1C5D,GAAOvB,MAAQ,SAAUC,GACxB,MAAM,IAAIC,MAAO,0CAA4CD,IAO9DsB,GAAO8J,WAAa,SAAU5K,GAC7B,IAAIxC,EACHqN,EAAa,GACb3M,EAAI,EACJ7C,EAAI,EAOL,GAJA0G,GAAgBxH,EAAQuQ,iBACxBhJ,GAAavH,EAAQwQ,YAAc/K,EAAQvG,MAAO,GAClDuG,EAAQ5B,KAAM0E,GAETf,EAAe,CACnB,KAAUvE,EAAOwC,EAAS3E,MACpBmC,IAASwC,EAAS3E,KACtB6C,EAAI2M,EAAW9Q,KAAMsB,IAGvB,KAAQ6C,KACP8B,EAAQ3B,OAAQwM,EAAY3M,GAAK,GAQnC,OAFA4D,EAAY,KAEL9B,GAORwB,EAAUV,GAAOU,QAAU,SAAUhE,GACpC,IAAIrC,EACH+B,EAAM,GACN7B,EAAI,EACJZ,EAAW+C,EAAK/C,SAEjB,GAAMA,GAQC,GAAkB,IAAbA,GAA+B,IAAbA,GAA+B,KAAbA,EAAkB,CAIjE,GAAiC,iBAArB+C,EAAKwN,YAChB,OAAOxN,EAAKwN,YAIZ,IAAMxN,EAAOA,EAAKyN,WAAYzN,EAAMA,EAAOA,EAAKqK,YAC/C3K,GAAOsE,EAAShE,QAGZ,GAAkB,IAAb/C,GAA+B,IAAbA,EAC7B,OAAO+C,EAAK0N,eAnBZ,KAAU/P,EAAOqC,EAAMnC,MAGtB6B,GAAOsE,EAASrG,GAqBlB,OAAO+B,IAGRqE,EAAOT,GAAOqK,UAAY,CAGzBnE,YAAa,GAEboE,aAAclE,GAEdzB,MAAOxB,EAEPuD,WAAY,GAEZyB,KAAM,GAENoC,SAAU,CACT,IAAK,CAAEnG,IAAK,aAAcxH,OAAO,GACjC,IAAK,CAAEwH,IAAK,cACZ,IAAK,CAAEA,IAAK,kBAAmBxH,OAAO,GACtC,IAAK,CAAEwH,IAAK,oBAGboG,UAAW,CACV,KAAQ,SAAU7F,GAWjB,OAVAA,EAAO,GAAMA,EAAO,GAAIpG,QAASmF,GAAWzD,GAG5C0E,EAAO,IAAQA,EAAO,IAAOA,EAAO,IACnCA,EAAO,IAAO,IAAKpG,QAASmF,GAAWzD,GAEpB,OAAf0E,EAAO,KACXA,EAAO,GAAM,IAAMA,EAAO,GAAM,KAG1BA,EAAMhM,MAAO,EAAG,IAGxB,MAAS,SAAUgM,GAiClB,OArBAA,EAAO,GAAMA,EAAO,GAAI5E,cAEU,QAA7B4E,EAAO,GAAIhM,MAAO,EAAG,IAGnBgM,EAAO,IACZ3E,GAAOvB,MAAOkG,EAAO,IAKtBA,EAAO,KAASA,EAAO,GACtBA,EAAO,IAAQA,EAAO,IAAO,GAC7B,GAAqB,SAAfA,EAAO,IAAiC,QAAfA,EAAO,KACvCA,EAAO,KAAWA,EAAO,GAAMA,EAAO,IAAwB,QAAfA,EAAO,KAG3CA,EAAO,IAClB3E,GAAOvB,MAAOkG,EAAO,IAGfA,GAGR,OAAU,SAAUA,GACnB,IAAI8F,EACHC,GAAY/F,EAAO,IAAOA,EAAO,GAElC,OAAKxB,EAAA,MAAqBoC,KAAMZ,EAAO,IAC/B,MAIHA,EAAO,GACXA,EAAO,GAAMA,EAAO,IAAOA,EAAO,IAAO,GAG9B+F,GAAYzH,EAAQsC,KAAMmF,KAGnCD,EAAS7J,EAAU8J,GAAU,MAG7BD,EAASC,EAASxR,QAAS,IAAKwR,EAAShP,OAAS+O,GAAWC,EAAShP,UAGxEiJ,EAAO,GAAMA,EAAO,GAAIhM,MAAO,EAAG8R,GAClC9F,EAAO,GAAM+F,EAAS/R,MAAO,EAAG8R,IAI1B9F,EAAMhM,MAAO,EAAG,MAIzBsP,OAAQ,CAEP,IAAO,SAAU0C,GAChB,IAAIxG,EAAWwG,EAAiBpM,QAASmF,GAAWzD,GAAYF,cAChE,MAA4B,MAArB4K,EACN,WACC,OAAO,GAER,SAAUjO,GACT,OAAOA,EAAKyH,UAAYzH,EAAKyH,SAASpE,gBAAkBoE,IAI3D,MAAS,SAAU0D,GAClB,IAAI+C,EAAUjJ,EAAYkG,EAAY,KAEtC,OAAO+C,IACJA,EAAU,IAAIhI,OAAQ,MAAQL,EAC/B,IAAMsF,EAAY,IAAMtF,EAAa,SAAaZ,EACjDkG,EAAW,SAAUnL,GACpB,OAAOkO,EAAQrF,KACY,iBAAnB7I,EAAKmL,WAA0BnL,EAAKmL,gBACd,IAAtBnL,EAAK9B,cACX8B,EAAK9B,aAAc,UACpB,OAKN,KAAQ,SAAU8C,EAAMmN,EAAUC,GACjC,OAAO,SAAUpO,GACZqO,EAAS/K,GAAO2J,KAAMjN,EAAMgB,GAEhC,OAAe,MAAVqN,EACgB,OAAbF,GAEFA,IAINE,GAAU,GAIU,MAAbF,EAAmBE,IAAWD,EACvB,OAAbD,EAAoBE,IAAWD,EAClB,OAAbD,EAAoBC,GAAqC,IAA5BC,EAAO7R,QAAS4R,GAChC,OAAbD,EAAoBC,IAAoC,EAA3BC,EAAO7R,QAAS4R,GAChC,OAAbD,EAAoBC,GAASC,EAAOpS,OAAQmS,EAAMpP,UAAaoP,EAClD,OAAbD,GAA2F,GAArE,IAAME,EAAOxM,QAASoE,EAAa,KAAQ,KAAMzJ,QAAS4R,GACnE,OAAbD,IAAoBE,IAAWD,GAASC,EAAOpS,MAAO,EAAGmS,EAAMpP,OAAS,KAAQoP,EAAQ,QAO3F,MAAS,SAAU/Q,EAAMiR,EAAMC,EAAWrO,EAAOE,GAChD,IAAIoO,EAAgC,QAAvBnR,EAAKpB,MAAO,EAAG,GAC3BwS,EAA+B,SAArBpR,EAAKpB,OAAQ,GACvByS,EAAkB,YAATJ,EAEV,OAAiB,IAAVpO,GAAwB,IAATE,EAGrB,SAAUJ,GACT,QAASA,EAAK1B,YAGf,SAAU0B,EAAM2O,EAAUC,GACzB,IAAItF,EAAOuF,EAAaC,EAAYnR,EAAMoR,EAAWC,EACpDtH,EAAM8G,GAAWC,EAAU,cAAgB,kBAC3CQ,EAASjP,EAAK1B,WACd0C,EAAO0N,GAAU1O,EAAKyH,SAASpE,cAC/B6L,GAAYN,IAAQF,EACpBvE,GAAO,EAER,GAAK8E,EAAS,CAGb,GAAKT,EAAS,CACb,KAAQ9G,GAAM,CAEb,IADA/J,EAAOqC,EACGrC,EAAOA,EAAM+J,IACtB,GAAKgH,EACJ/Q,EAAK8J,SAASpE,gBAAkBrC,EACd,IAAlBrD,EAAKV,SAEL,OAAO,EAKT+R,EAAQtH,EAAe,SAATrK,IAAoB2R,GAAS,cAE5C,OAAO,EAMR,GAHAA,EAAQ,CAAEP,EAAUQ,EAAOxB,WAAawB,EAAOE,WAG1CV,GAAWS,GAkBf,IAHA/E,GADA4E,GADAzF,GAHAuF,GAJAC,GADAnR,EAAOsR,GACYvN,KAAe/D,EAAM+D,GAAY,KAI1B/D,EAAKyR,YAC5BN,EAAYnR,EAAKyR,UAAa,KAEZ/R,IAAU,IACZ,KAAQ0H,GAAWuE,EAAO,KACzBA,EAAO,GAC3B3L,EAAOoR,GAAaE,EAAOrH,WAAYmH,GAE7BpR,IAASoR,GAAapR,GAAQA,EAAM+J,KAG3CyC,EAAO4E,EAAY,IAAOC,EAAMvJ,OAGlC,GAAuB,IAAlB9H,EAAKV,YAAoBkN,GAAQxM,IAASqC,EAAO,CACrD6O,EAAaxR,GAAS,CAAE0H,EAASgK,EAAW5E,GAC5C,YAyBF,IAAc,KALbA,EAbI+E,EAYJH,GADAzF,GAHAuF,GAJAC,GADAnR,EAAOqC,GACY0B,KAAe/D,EAAM+D,GAAY,KAI1B/D,EAAKyR,YAC5BN,EAAYnR,EAAKyR,UAAa,KAEZ/R,IAAU,IACZ,KAAQ0H,GAAWuE,EAAO,GAMzCa,GAGJ,MAAUxM,IAASoR,GAAapR,GAAQA,EAAM+J,KAC3CyC,EAAO4E,EAAY,IAAOC,EAAMvJ,UAE3BiJ,EACN/Q,EAAK8J,SAASpE,gBAAkBrC,EACd,IAAlBrD,EAAKV,cACHkN,IAGG+E,KAMJL,GALAC,EAAanR,EAAM+D,KAChB/D,EAAM+D,GAAY,KAIK/D,EAAKyR,YAC5BN,EAAYnR,EAAKyR,UAAa,KAEpB/R,GAAS,CAAE0H,EAASoF,IAG7BxM,IAASqC,MAUlB,OADAmK,GAAQ/J,KACQF,GAAWiK,EAAOjK,GAAU,GAAqB,GAAhBiK,EAAOjK,KAK5D,OAAU,SAAUmP,EAAQ5E,GAM3B,IAAI6E,EACHzQ,EAAKkF,EAAKiC,QAASqJ,IAAYtL,EAAKwL,WAAYF,EAAOhM,gBACtDC,GAAOvB,MAAO,uBAAyBsN,GAKzC,OAAKxQ,EAAI6C,GACD7C,EAAI4L,GAIK,EAAZ5L,EAAGG,QACPsQ,EAAO,CAAED,EAAQA,EAAQ,GAAI5E,GACtB1G,EAAKwL,WAAW3S,eAAgByS,EAAOhM,eAC7CqG,GAAc,SAAU3B,EAAMnF,GAI7B,IAHA,IAAI4M,EACHC,EAAU5Q,EAAIkJ,EAAM0C,GACpB5M,EAAI4R,EAAQzQ,OACLnB,KAEPkK,EADAyH,EAAMhT,EAASuL,EAAM0H,EAAS5R,OACb+E,EAAS4M,GAAQC,EAAS5R,MAG7C,SAAUmC,GACT,OAAOnB,EAAImB,EAAM,EAAGsP,KAIhBzQ,IAITmH,QAAS,CAGR,IAAO0D,GAAc,SAAU/K,GAK9B,IAAIkN,EAAQ,GACXrJ,EAAU,GACVkN,EAAUvL,EAASxF,EAASkD,QAASsE,EAAO,OAE7C,OAAOuJ,EAAShO,GACfgI,GAAc,SAAU3B,EAAMnF,EAAS+L,EAAUC,GAMhD,IALA,IAAI5O,EACH2P,EAAYD,EAAS3H,EAAM,KAAM6G,EAAK,IACtC/Q,EAAIkK,EAAK/I,OAGFnB,MACAmC,EAAO2P,EAAW9R,MACxBkK,EAAMlK,KAAS+E,EAAS/E,GAAMmC,MAIjC,SAAUA,EAAM2O,EAAUC,GAMzB,OALA/C,EAAO,GAAM7L,EACb0P,EAAS7D,EAAO,KAAM+C,EAAKpM,GAG3BqJ,EAAO,GAAM,MACLrJ,EAAQiD,SAInB,IAAOiE,GAAc,SAAU/K,GAC9B,OAAO,SAAUqB,GAChB,OAAyC,EAAlCsD,GAAQ3E,EAAUqB,GAAOhB,UAIlC,SAAY0K,GAAc,SAAUzL,GAEnC,OADAA,EAAOA,EAAK4D,QAASmF,GAAWzD,GACzB,SAAUvD,GAChB,OAAkE,GAAzDA,EAAKwN,aAAexJ,EAAShE,IAASxD,QAASyB,MAW1D,KAAQyL,GAAc,SAAUkG,GAO/B,OAJMpJ,EAAYqC,KAAM+G,GAAQ,KAC/BtM,GAAOvB,MAAO,qBAAuB6N,GAEtCA,EAAOA,EAAK/N,QAASmF,GAAWzD,GAAYF,cACrC,SAAUrD,GAChB,IAAI6P,EACJ,GACC,GAAOA,EAAWpL,EACjBzE,EAAK4P,KACL5P,EAAK9B,aAAc,aAAgB8B,EAAK9B,aAAc,QAGtD,OADA2R,EAAWA,EAASxM,iBACAuM,GAA2C,IAAnCC,EAASrT,QAASoT,EAAO,YAE3C5P,EAAOA,EAAK1B,aAAkC,IAAlB0B,EAAK/C,UAC7C,OAAO,KAKT,OAAU,SAAU+C,GACnB,IAAI8P,EAAOrU,EAAOsU,UAAYtU,EAAOsU,SAASD,KAC9C,OAAOA,GAAQA,EAAK7T,MAAO,KAAQ+D,EAAKyI,IAGzC,KAAQ,SAAUzI,GACjB,OAAOA,IAASwE,GAGjB,MAAS,SAAUxE,GAClB,OAAOA,IAAS7C,EAAS6S,iBACrB7S,EAAS8S,UAAY9S,EAAS8S,gBAC7BjQ,EAAK3C,MAAQ2C,EAAKkQ,OAASlQ,EAAKmQ,WAItC,QAAW7F,IAAsB,GACjC,SAAYA,IAAsB,GAElC,QAAW,SAAUtK,GAIpB,IAAIyH,EAAWzH,EAAKyH,SAASpE,cAC7B,MAAsB,UAAboE,KAA0BzH,EAAKoQ,SACxB,WAAb3I,KAA2BzH,EAAKqQ,UAGpC,SAAY,SAAUrQ,GASrB,OALKA,EAAK1B,YAET0B,EAAK1B,WAAWgS,eAGQ,IAAlBtQ,EAAKqQ,UAIb,MAAS,SAAUrQ,GAMlB,IAAMA,EAAOA,EAAKyN,WAAYzN,EAAMA,EAAOA,EAAKqK,YAC/C,GAAKrK,EAAK/C,SAAW,EACpB,OAAO,EAGT,OAAO,GAGR,OAAU,SAAU+C,GACnB,OAAQ+D,EAAKiC,QAAL,MAAyBhG,IAIlC,OAAU,SAAUA,GACnB,OAAO4G,EAAQiC,KAAM7I,EAAKyH,WAG3B,MAAS,SAAUzH,GAClB,OAAO2G,EAAQkC,KAAM7I,EAAKyH,WAG3B,OAAU,SAAUzH,GACnB,IAAIgB,EAAOhB,EAAKyH,SAASpE,cACzB,MAAgB,UAATrC,GAAkC,WAAdhB,EAAK3C,MAA8B,WAAT2D,GAGtD,KAAQ,SAAUhB,GAEjB,MAAuC,UAAhCA,EAAKyH,SAASpE,eACN,SAAdrD,EAAK3C,OAIuC,OAAxC4P,EAAOjN,EAAK9B,aAAc,UACN,SAAvB+O,EAAK5J,gBAIR,MAASmH,GAAwB,WAChC,MAAO,CAAE,KAGV,KAAQA,GAAwB,SAAU+F,EAAevR,GACxD,MAAO,CAAEA,EAAS,KAGnB,GAAMwL,GAAwB,SAAU+F,EAAevR,EAAQyL,GAC9D,MAAO,CAAEA,EAAW,EAAIA,EAAWzL,EAASyL,KAG7C,KAAQD,GAAwB,SAAUE,EAAc1L,GAEvD,IADA,IAAInB,EAAI,EACAA,EAAImB,EAAQnB,GAAK,EACxB6M,EAAanO,KAAMsB,GAEpB,OAAO6M,IAGR,IAAOF,GAAwB,SAAUE,EAAc1L,GAEtD,IADA,IAAInB,EAAI,EACAA,EAAImB,EAAQnB,GAAK,EACxB6M,EAAanO,KAAMsB,GAEpB,OAAO6M,IAGR,GAAMF,GAAwB,SAAUE,EAAc1L,EAAQyL,GAM7D,IALA,IAAI5M,EAAI4M,EAAW,EAClBA,EAAWzL,EACAA,EAAXyL,EACCzL,EACAyL,EACa,KAAL5M,GACT6M,EAAanO,KAAMsB,GAEpB,OAAO6M,IAGR,GAAMF,GAAwB,SAAUE,EAAc1L,EAAQyL,GAE7D,IADA,IAAI5M,EAAI4M,EAAW,EAAIA,EAAWzL,EAASyL,IACjC5M,EAAImB,GACb0L,EAAanO,KAAMsB,GAEpB,OAAO6M,OAKL1E,QAAL,IAAwBjC,EAAKiC,QAAL,GAGb,CAAEwK,OAAO,EAAMC,UAAU,EAAMC,MAAM,EAAMC,UAAU,EAAMC,OAAO,GAC5E7M,EAAKiC,QAASnI,GAzxCf,SAA4BR,GAC3B,OAAO,SAAU2C,GAEhB,MAAgB,UADLA,EAAKyH,SAASpE,eACErD,EAAK3C,OAASA,GAsxCtBwT,CAAmBhT,GAExC,IAAMA,IAAK,CAAEiT,QAAQ,EAAMC,OAAO,GACjChN,EAAKiC,QAASnI,GAjxCf,SAA6BR,GAC5B,OAAO,SAAU2C,GAChB,IAAIgB,EAAOhB,EAAKyH,SAASpE,cACzB,OAAkB,UAATrC,GAA6B,WAATA,IAAuBhB,EAAK3C,OAASA,GA8wC/C2T,CAAoBnT,GAIzC,SAAS0R,MA0ET,SAASvG,GAAYiI,GAIpB,IAHA,IAAIpT,EAAI,EACP4C,EAAMwQ,EAAOjS,OACbL,EAAW,GACJd,EAAI4C,EAAK5C,IAChBc,GAAYsS,EAAQpT,GAAIkF,MAEzB,OAAOpE,EAGR,SAAS4I,GAAemI,EAASwB,EAAYC,GAC5C,IAAIzJ,EAAMwJ,EAAWxJ,IACpB0J,EAAOF,EAAWvJ,KAClB4B,EAAM6H,GAAQ1J,EACd2J,EAAmBF,GAAgB,eAAR5H,EAC3B+H,EAAWtM,IAEZ,OAAOkM,EAAWhR,MAGjB,SAAUF,EAAMpB,EAASgQ,GACxB,KAAU5O,EAAOA,EAAM0H,IACtB,GAAuB,IAAlB1H,EAAK/C,UAAkBoU,EAC3B,OAAO3B,EAAS1P,EAAMpB,EAASgQ,GAGjC,OAAO,GAIR,SAAU5O,EAAMpB,EAASgQ,GACxB,IAAcC,EAAaC,EAC1ByC,EAAW,CAAExM,EAASuM,GAGvB,GAAK1C,GACJ,KAAU5O,EAAOA,EAAM0H,IACtB,IAAuB,IAAlB1H,EAAK/C,UAAkBoU,IACtB3B,EAAS1P,EAAMpB,EAASgQ,GAC5B,OAAO,OAKV,KAAU5O,EAAOA,EAAM0H,IACtB,GAAuB,IAAlB1H,EAAK/C,UAAkBoU,EAQ3B,GAHAxC,GAJAC,EAAa9O,EAAM0B,KAAe1B,EAAM0B,GAAY,KAI1B1B,EAAKoP,YAC5BN,EAAY9O,EAAKoP,UAAa,IAE5BgC,GAAQA,IAASpR,EAAKyH,SAASpE,cACnCrD,EAAOA,EAAM0H,IAAS1H,MAChB,KAAOwR,EAAW3C,EAAatF,KACrCiI,EAAU,KAAQzM,GAAWyM,EAAU,KAAQF,EAG/C,OAASC,EAAU,GAAMC,EAAU,GAOnC,IAHA3C,EAAatF,GAAQgI,GAGJ,GAAM7B,EAAS1P,EAAMpB,EAASgQ,GAC9C,OAAO,EAMZ,OAAO,GAIV,SAAS6C,GAAgBC,GACxB,OAAyB,EAAlBA,EAAS1S,OACf,SAAUgB,EAAMpB,EAASgQ,GAExB,IADA,IAAI/Q,EAAI6T,EAAS1S,OACTnB,KACP,IAAM6T,EAAU7T,GAAKmC,EAAMpB,EAASgQ,GACnC,OAAO,EAGT,OAAO,GAER8C,EAAU,GAYZ,SAASC,GAAUhC,EAAW5P,EAAKwL,EAAQ3M,EAASgQ,GAOnD,IANA,IAAI5O,EACH4R,EAAe,GACf/T,EAAI,EACJ4C,EAAMkP,EAAU3Q,OAChB6S,EAAgB,MAAP9R,EAEFlC,EAAI4C,EAAK5C,KACTmC,EAAO2P,EAAW9R,MAClB0N,IAAUA,EAAQvL,EAAMpB,EAASgQ,KACtCgD,EAAarV,KAAMyD,GACd6R,GACJ9R,EAAIxD,KAAMsB,KAMd,OAAO+T,EAGR,SAASE,GAAYhE,EAAWnP,EAAU+Q,EAASqC,EAAYC,EAAYC,GAO1E,OANKF,IAAeA,EAAYrQ,KAC/BqQ,EAAaD,GAAYC,IAErBC,IAAeA,EAAYtQ,KAC/BsQ,EAAaF,GAAYE,EAAYC,IAE/BvI,GAAc,SAAU3B,EAAMvF,EAAS5D,EAASgQ,GACtD,IAAIsD,EAAMrU,EAAGmC,EACZmS,EAAS,GACTC,EAAU,GACVC,EAAc7P,EAAQxD,OAGtBS,EAAQsI,GA5CX,SAA2BpJ,EAAU2T,EAAU9P,GAG9C,IAFA,IAAI3E,EAAI,EACP4C,EAAM6R,EAAStT,OACRnB,EAAI4C,EAAK5C,IAChByF,GAAQ3E,EAAU2T,EAAUzU,GAAK2E,GAElC,OAAOA,EAsCW+P,CACf5T,GAAY,IACZC,EAAQ3B,SAAW,CAAE2B,GAAYA,EACjC,IAID4T,GAAY1E,IAAe/F,GAASpJ,EAEnCc,EADAkS,GAAUlS,EAAO0S,EAAQrE,EAAWlP,EAASgQ,GAG9C6D,EAAa/C,EAGZsC,IAAgBjK,EAAO+F,EAAYuE,GAAeN,GAGjD,GAGAvP,EACDgQ,EAQF,GALK9C,GACJA,EAAS8C,EAAWC,EAAY7T,EAASgQ,GAIrCmD,EAMJ,IALAG,EAAOP,GAAUc,EAAYL,GAC7BL,EAAYG,EAAM,GAAItT,EAASgQ,GAG/B/Q,EAAIqU,EAAKlT,OACDnB,MACAmC,EAAOkS,EAAMrU,MACnB4U,EAAYL,EAASvU,MAAW2U,EAAWJ,EAASvU,IAAQmC,IAK/D,GAAK+H,GACJ,GAAKiK,GAAclE,EAAY,CAC9B,GAAKkE,EAAa,CAKjB,IAFAE,EAAO,GACPrU,EAAI4U,EAAWzT,OACPnB,MACAmC,EAAOyS,EAAY5U,KAGzBqU,EAAK3V,KAAQiW,EAAW3U,GAAMmC,GAGhCgS,EAAY,KAAQS,EAAa,GAAMP,EAAMtD,GAK9C,IADA/Q,EAAI4U,EAAWzT,OACPnB,MACAmC,EAAOyS,EAAY5U,MACsC,GAA7DqU,EAAOF,EAAaxV,EAASuL,EAAM/H,GAASmS,EAAQtU,MAEtDkK,EAAMmK,KAAY1P,EAAS0P,GAASlS,UAOvCyS,EAAad,GACZc,IAAejQ,EACdiQ,EAAW5R,OAAQwR,EAAaI,EAAWzT,QAC3CyT,GAEGT,EACJA,EAAY,KAAMxP,EAASiQ,EAAY7D,GAEvCrS,EAAKD,MAAOkG,EAASiQ,KAqEzB,SAASC,GAA0BC,EAAiBC,GAGnC,SAAfC,EAAyB9K,EAAMnJ,EAASgQ,EAAKpM,EAASsQ,GACrD,IAAI9S,EAAMU,EAAGgP,EACZqD,EAAe,EACflV,EAAI,IACJ8R,EAAY5H,GAAQ,GACpBiL,EAAa,GACbC,EAAgB5O,EAGhB5E,EAAQsI,GAAQmL,GAAanP,EAAK0H,KAAL,IAAoB,IAAKqH,GAGtDK,EAAkBpO,GAA4B,MAAjBkO,EAAwB,EAAItR,KAAKC,UAAY,GAC1EnB,EAAMhB,EAAMT,OAcb,IAZK8T,IAMJzO,EAAmBzF,GAAWzB,GAAYyB,GAAWkU,GAM9CjV,IAAM4C,GAAgC,OAAvBT,EAAOP,EAAO5B,IAAeA,IAAM,CACzD,GAAKqV,GAAalT,EAAO,CAWxB,IAVAU,EAAI,EAME9B,GAAWoB,EAAKqI,eAAiBlL,IACtC2G,EAAa9D,GACb4O,GAAOnK,GAEEiL,EAAUiD,EAAiBjS,MACpC,GAAKgP,EAAS1P,EAAMpB,GAAWzB,EAAUyR,GAAQ,CAChDpM,EAAQjG,KAAMyD,GACd,MAGG8S,IACJ/N,EAAUoO,GAKPC,KAGGpT,GAAQ0P,GAAW1P,IACzB+S,IAIIhL,GACJ4H,EAAUpT,KAAMyD,IAgBnB,GATA+S,GAAgBlV,EASXuV,GAASvV,IAAMkV,EAAe,CAElC,IADArS,EAAI,EACMgP,EAAUkD,EAAalS,MAChCgP,EAASC,EAAWqD,EAAYpU,EAASgQ,GAG1C,GAAK7G,EAAO,CAGX,GAAoB,EAAfgL,EACJ,KAAQlV,KACC8R,EAAW9R,IAAOmV,EAAYnV,KACrCmV,EAAYnV,GAAM4H,EAAIrJ,KAAMoG,IAM/BwQ,EAAarB,GAAUqB,GAIxBzW,EAAKD,MAAOkG,EAASwQ,GAGhBF,IAAc/K,GAA4B,EAApBiL,EAAWhU,QACG,EAAtC+T,EAAeH,EAAY5T,QAE7BsE,GAAO8J,WAAY5K,GAUrB,OALKsQ,IACJ/N,EAAUoO,EACV9O,EAAmB4O,GAGbtD,EApHT,IAAIyD,EAA6B,EAArBR,EAAY5T,OACvBkU,EAAqC,EAAzBP,EAAgB3T,OAsH7B,OAAOoU,EACN1J,GAAcmJ,GACdA,EAuLF,OAtpBAtD,GAAWtQ,UAAY8E,EAAKsP,QAAUtP,EAAKiC,QAC3CjC,EAAKwL,WAAa,IAAIA,GAEtBrL,EAAWZ,GAAOY,SAAW,SAAUvF,EAAU2U,GAChD,IAAI7D,EAASxH,EAAOgJ,EAAQ5T,EAC3BkW,EAAOrL,EAAQsL,EACfC,EAAStO,EAAYxG,EAAW,KAEjC,GAAK8U,EACJ,OAAOH,EAAY,EAAIG,EAAOxX,MAAO,GAOtC,IAJAsX,EAAQ5U,EACRuJ,EAAS,GACTsL,EAAazP,EAAK+J,UAEVyF,GAAQ,CA2Bf,IAAMlW,KAxBAoS,KAAaxH,EAAQ7B,EAAOkC,KAAMiL,MAClCtL,IAGJsL,EAAQA,EAAMtX,MAAOgM,EAAO,GAAIjJ,SAAYuU,GAE7CrL,EAAO3L,KAAQ0U,EAAS,KAGzBxB,GAAU,GAGHxH,EAAQ5B,EAAaiC,KAAMiL,MACjC9D,EAAUxH,EAAMwB,QAChBwH,EAAO1U,KAAM,CACZwG,MAAO0M,EAGPpS,KAAM4K,EAAO,GAAIpG,QAASsE,EAAO,OAElCoN,EAAQA,EAAMtX,MAAOwT,EAAQzQ,SAIhB+E,EAAKwH,SACXtD,EAAQxB,EAAWpJ,GAAOiL,KAAMiL,KAAgBC,EAAYnW,MAChE4K,EAAQuL,EAAYnW,GAAQ4K,MAC9BwH,EAAUxH,EAAMwB,QAChBwH,EAAO1U,KAAM,CACZwG,MAAO0M,EACPpS,KAAMA,EACNuF,QAASqF,IAEVsL,EAAQA,EAAMtX,MAAOwT,EAAQzQ,SAI/B,IAAMyQ,EACL,MAOF,OAAO6D,EACNC,EAAMvU,OACNuU,EACCjQ,GAAOvB,MAAOpD,GAGdwG,EAAYxG,EAAUuJ,GAASjM,MAAO,IA4ZzCkI,EAAUb,GAAOa,QAAU,SAAUxF,EAAUsJ,GAC9C,IAAIpK,EACH+U,EAAc,GACdD,EAAkB,GAClBc,EAASrO,EAAezG,EAAW,KAEpC,IAAM8U,EAAS,CAOd,IADA5V,GAFCoK,EADKA,GACG/D,EAAUvF,IAETK,OACFnB,OACP4V,EA1MH,SAASC,EAAmBzC,GAyB3B,IAxBA,IAAI0C,EAAcjE,EAAShP,EAC1BD,EAAMwQ,EAAOjS,OACb4U,EAAkB7P,EAAK8J,SAAUoD,EAAQ,GAAI5T,MAC7CwW,EAAmBD,GAAmB7P,EAAK8J,SAAU,KACrDhQ,EAAI+V,EAAkB,EAAI,EAG1BE,EAAevM,GAAe,SAAUvH,GACvC,OAAOA,IAAS2T,GACdE,GAAkB,GACrBE,EAAkBxM,GAAe,SAAUvH,GAC1C,OAAwC,EAAjCxD,EAASmX,EAAc3T,IAC5B6T,GAAkB,GACrBnC,EAAW,CAAE,SAAU1R,EAAMpB,EAASgQ,GAQrC,OAPIlP,GAASkU,IAAqBhF,GAAOhQ,IAAYyF,MAClDsP,EAAe/U,GAAU3B,SAC1B6W,EACAC,GADc/T,EAAMpB,EAASgQ,GAI/B+E,EAAe,KACRjU,IAGD7B,EAAI4C,EAAK5C,IAChB,GAAO6R,EAAU3L,EAAK8J,SAAUoD,EAAQpT,GAAIR,MAC3CqU,EAAW,CAAEnK,GAAekK,GAAgBC,GAAYhC,QAClD,CAIN,IAHAA,EAAU3L,EAAKwH,OAAQ0F,EAAQpT,GAAIR,MAAOf,MAAO,KAAM2U,EAAQpT,GAAI+E,UAGrDlB,GAAY,CAIzB,IADAhB,IAAM7C,EACE6C,EAAID,IACNsD,EAAK8J,SAAUoD,EAAQvQ,GAAIrD,MADhBqD,KAKjB,OAAOoR,GACF,EAAJjU,GAAS4T,GAAgBC,GACrB,EAAJ7T,GAASmL,GAGTiI,EACEhV,MAAO,EAAG4B,EAAI,GACdxB,OAAQ,CAAE0G,MAAgC,MAAzBkO,EAAQpT,EAAI,GAAIR,KAAe,IAAM,MACtDwE,QAASsE,EAAO,MAClBuJ,EACA7R,EAAI6C,GAAKgT,EAAmBzC,EAAOhV,MAAO4B,EAAG6C,IAC7CA,EAAID,GAAOiT,EAAqBzC,EAASA,EAAOhV,MAAOyE,IACvDA,EAAID,GAAOuI,GAAYiI,IAGzBS,EAASnV,KAAMmT,GAIjB,OAAO+B,GAAgBC,GA8IZgC,CAAmBzL,EAAOpK,KACtB6D,GACZkR,EAEAD,GAFYpW,KAAMkX,IAOpBA,EAASrO,EACRzG,EACA+T,GAA0BC,EAAiBC,KAIrCjU,SAAWA,EAEnB,OAAO8U,GAYRrP,EAASd,GAAOc,OAAS,SAAUzF,EAAUC,EAAS4D,EAASuF,GAC9D,IAAIlK,EAAGoT,EAAQ+C,EAAO3W,EAAMoO,EAC3BwI,EAA+B,mBAAbtV,GAA2BA,EAC7CsJ,GAASF,GAAQ7D,EAAYvF,EAAWsV,EAAStV,UAAYA,GAM9D,GAJA6D,EAAUA,GAAW,GAIC,IAAjByF,EAAMjJ,OAAe,CAIzB,GAAqB,GADrBiS,EAAShJ,EAAO,GAAMA,EAAO,GAAIhM,MAAO,IAC5B+C,QAA+C,QAA/BgV,EAAQ/C,EAAQ,IAAM5T,MAC5B,IAArBuB,EAAQ3B,UAAkBwH,GAAkBV,EAAK8J,SAAUoD,EAAQ,GAAI5T,MAAS,CAIhF,KAFAuB,GAAYmF,EAAK0H,KAAL,GAAmBuI,EAAMpR,QAAS,GAC5Cf,QAASmF,GAAWzD,GAAa3E,IAAa,IAAM,IAErD,OAAO4D,EAGIyR,IACXrV,EAAUA,EAAQN,YAGnBK,EAAWA,EAAS1C,MAAOgV,EAAOxH,QAAQ1G,MAAM/D,QAKjD,IADAnB,EAAI4I,EAAA,aAA4BoC,KAAMlK,GAAa,EAAIsS,EAAOjS,OACtDnB,MACPmW,EAAQ/C,EAAQpT,IAGXkG,EAAK8J,SAAYxQ,EAAO2W,EAAM3W,QAGnC,IAAOoO,EAAO1H,EAAK0H,KAAMpO,MAGjB0K,EAAO0D,EACbuI,EAAMpR,QAAS,GAAIf,QAASmF,GAAWzD,GACvCwD,GAAS8B,KAAMoI,EAAQ,GAAI5T,OAAUyL,GAAalK,EAAQN,aACzDM,IACI,CAKL,GAFAqS,EAAOpQ,OAAQhD,EAAG,KAClBc,EAAWoJ,EAAK/I,QAAUgK,GAAYiI,IAGrC,OADA1U,EAAKD,MAAOkG,EAASuF,GACdvF,EAGR,OAeJ,OAPEyR,GAAY9P,EAASxF,EAAUsJ,IAChCF,EACAnJ,GACC6F,EACDjC,GACC5D,GAAWmI,GAAS8B,KAAMlK,IAAcmK,GAAalK,EAAQN,aAAgBM,GAExE4D,GAMRzF,EAAQwQ,WAAa7L,EAAQyB,MAAO,IAAKvC,KAAM0E,GAAY2D,KAAM,MAASvH,EAI1E3E,EAAQuQ,mBAAqB/I,EAG7BT,IAIA/G,EAAQ2P,aAAe/C,GAAQ,SAAUC,GAGxC,OAA4E,EAArEA,EAAG0C,wBAAyBnP,EAASa,cAAe,eAMtD2L,GAAQ,SAAUC,GAEvB,OADAA,EAAGkC,UAAY,mBACiC,MAAzClC,EAAG6D,WAAWvP,aAAc,WAEnC2L,GAAW,yBAA0B,SAAU7J,EAAMgB,EAAMiD,GAC1D,IAAMA,EACL,OAAOjE,EAAK9B,aAAc8C,EAA6B,SAAvBA,EAAKqC,cAA2B,EAAI,KAOjEtG,EAAQgJ,YAAe4D,GAAQ,SAAUC,GAG9C,OAFAA,EAAGkC,UAAY,WACflC,EAAG6D,WAAWtP,aAAc,QAAS,IACY,KAA1CyL,EAAG6D,WAAWvP,aAAc,YAEnC2L,GAAW,QAAS,SAAU7J,EAAMkU,EAAOjQ,GAC1C,IAAMA,GAAyC,UAAhCjE,EAAKyH,SAASpE,cAC5B,OAAOrD,EAAKmU,eAOTxK,GAAQ,SAAUC,GACvB,OAAwC,MAAjCA,EAAG1L,aAAc,eAExB2L,GAAWjE,EAAU,SAAU5F,EAAMgB,EAAMiD,GAE1C,IAAMA,EACL,OAAwB,IAAjBjE,EAAMgB,GAAkBA,EAAKqC,eACjCvF,EAAMkC,EAAK0L,iBAAkB1K,KAAYlD,EAAIoP,UAC9CpP,EAAIiF,MACJ,OAKEO,GA14EL,CA44EG7H,GAILiD,EAAO+M,KAAOnI,EACd5E,EAAOqO,KAAOzJ,EAAOqK,UAGrBjP,EAAOqO,KAAM,KAAQrO,EAAOqO,KAAK/G,QACjCtH,EAAO0O,WAAa1O,EAAO0V,OAAS9Q,EAAO8J,WAC3C1O,EAAOT,KAAOqF,EAAOU,QACrBtF,EAAO2V,SAAW/Q,EAAOW,MACzBvF,EAAOkG,SAAWtB,EAAOsB,SACzBlG,EAAO4V,eAAiBhR,EAAOE,OAKrB,SAANkE,EAAgB1H,EAAM0H,EAAK6M,GAI9B,IAHA,IAAI9E,EAAU,GACb+E,OAAqB/S,IAAV8S,GAEFvU,EAAOA,EAAM0H,KAA6B,IAAlB1H,EAAK/C,UACtC,GAAuB,IAAlB+C,EAAK/C,SAAiB,CAC1B,GAAKuX,GAAY9V,EAAQsB,GAAOyU,GAAIF,GACnC,MAED9E,EAAQlT,KAAMyD,GAGhB,OAAOyP,EAIO,SAAXiF,EAAqBC,EAAG3U,GAG3B,IAFA,IAAIyP,EAAU,GAENkF,EAAGA,EAAIA,EAAEtK,YACI,IAAfsK,EAAE1X,UAAkB0X,IAAM3U,GAC9ByP,EAAQlT,KAAMoY,GAIhB,OAAOlF,EAzBR,IA6BImF,EAAgBlW,EAAOqO,KAAK9E,MAAM4M,aAItC,SAASpN,EAAUzH,EAAMgB,GAExB,OAAOhB,EAAKyH,UAAYzH,EAAKyH,SAASpE,gBAAkBrC,EAAKqC,cAG9D,IAAIyR,EAAe,kEAKnB,SAASC,EAAQ/H,EAAUgI,EAAWC,GACrC,OAAKjY,EAAYgY,GACTtW,EAAO4B,KAAM0M,EAAU,SAAUhN,EAAMnC,GAC7C,QAASmX,EAAU5Y,KAAM4D,EAAMnC,EAAGmC,KAAWiV,IAK1CD,EAAU/X,SACPyB,EAAO4B,KAAM0M,EAAU,SAAUhN,GACvC,OAASA,IAASgV,IAAgBC,IAKV,iBAAdD,EACJtW,EAAO4B,KAAM0M,EAAU,SAAUhN,GACvC,OAA4C,EAAnCxD,EAAQJ,KAAM4Y,EAAWhV,KAAkBiV,IAK/CvW,EAAO6M,OAAQyJ,EAAWhI,EAAUiI,GAG5CvW,EAAO6M,OAAS,SAAUwB,EAAMtN,EAAOwV,GACtC,IAAIjV,EAAOP,EAAO,GAMlB,OAJKwV,IACJlI,EAAO,QAAUA,EAAO,KAGH,IAAjBtN,EAAMT,QAAkC,IAAlBgB,EAAK/C,SACxByB,EAAO+M,KAAKM,gBAAiB/L,EAAM+M,GAAS,CAAE/M,GAAS,GAGxDtB,EAAO+M,KAAK7I,QAASmK,EAAMrO,EAAO4B,KAAMb,EAAO,SAAUO,GAC/D,OAAyB,IAAlBA,EAAK/C,aAIdyB,EAAOG,GAAGiC,OAAQ,CACjB2K,KAAM,SAAU9M,GACf,IAAId,EAAG6B,EACNe,EAAMpB,KAAKL,OACXkW,EAAO7V,KAER,GAAyB,iBAAbV,EACX,OAAOU,KAAKG,UAAWd,EAAQC,GAAW4M,OAAQ,WACjD,IAAM1N,EAAI,EAAGA,EAAI4C,EAAK5C,IACrB,GAAKa,EAAOkG,SAAUsQ,EAAMrX,GAAKwB,MAChC,OAAO,KAQX,IAFAK,EAAML,KAAKG,UAAW,IAEhB3B,EAAI,EAAGA,EAAI4C,EAAK5C,IACrBa,EAAO+M,KAAM9M,EAAUuW,EAAMrX,GAAK6B,GAGnC,OAAa,EAANe,EAAU/B,EAAO0O,WAAY1N,GAAQA,GAE7C6L,OAAQ,SAAU5M,GACjB,OAAOU,KAAKG,UAAWuV,EAAQ1V,KAAMV,GAAY,IAAI,KAEtDsW,IAAK,SAAUtW,GACd,OAAOU,KAAKG,UAAWuV,EAAQ1V,KAAMV,GAAY,IAAI,KAEtD8V,GAAI,SAAU9V,GACb,QAASoW,EACR1V,KAIoB,iBAAbV,GAAyBiW,EAAc/L,KAAMlK,GACnDD,EAAQC,GACRA,GAAY,IACb,GACCK,UASJ,IAMC8H,EAAa,uCAENpI,EAAOG,GAAGC,KAAO,SAAUH,EAAUC,EAASuW,GAIpD,IAAMxW,EACL,OAAOU,KAQR,GAHA8V,EAAOA,GAAQC,EAGU,iBAAbzW,EAoEL,OAAKA,EAAS1B,UACpBoC,KAAM,GAAMV,EACZU,KAAKL,OAAS,EACPK,MAIIrC,EAAY2B,QACD8C,IAAf0T,EAAKE,MACXF,EAAKE,MAAO1W,GAGZA,EAAUD,GAGLA,EAAO6D,UAAW5D,EAAUU,MAtElC,KAPC4I,EALsB,MAAlBtJ,EAAU,IACsB,MAApCA,EAAUA,EAASK,OAAS,IACT,GAAnBL,EAASK,OAGD,CAAE,KAAML,EAAU,MAGlBmI,EAAWwB,KAAM3J,MAIVsJ,EAAO,IAAQrJ,EA6CxB,QAAMA,GAAWA,EAAQM,OACtBN,GAAWuW,EAKb9V,KAAKF,YAAaP,IALE6M,KAAM9M,GA3CjC,GAAKsJ,EAAO,GAAM,CAYjB,GAXArJ,EAAUA,aAAmBF,EAASE,EAAS,GAAMA,EAIrDF,EAAOiB,MAAON,KAAMX,EAAO4W,UAC1BrN,EAAO,GACPrJ,GAAWA,EAAQ3B,SAAW2B,EAAQyJ,eAAiBzJ,EAAUzB,GACjE,IAII2X,EAAWjM,KAAMZ,EAAO,KAASvJ,EAAO4C,cAAe1C,GAC3D,IAzCJ,IAAIqJ,KAyCerJ,EAGT5B,EAAYqC,KAAM4I,IACtB5I,KAAM4I,GAASrJ,EAASqJ,IAIxB5I,KAAK4N,KAAMhF,EAAOrJ,EAASqJ,IAK9B,OAAO5I,KAYP,OARAW,EAAO7C,EAASqL,eAAgBP,EAAO,OAKtC5I,KAAM,GAAMW,EACZX,KAAKL,OAAS,GAERK,OAiCPJ,UAAYP,EAAOG,GAMxB,IAHAuW,EAAa1W,EAAQvB,GAGjBoY,EAAe,iCAGlBC,EAAmB,CAClBC,UAAU,EACVC,UAAU,EACV/N,MAAM,EACNgO,MAAM,GAoFR,SAASC,EAAS1L,EAAKxC,GACtB,MAAUwC,EAAMA,EAAKxC,KAA4B,IAAjBwC,EAAIjN,WACpC,OAAOiN,EAnFRxL,EAAOG,GAAGiC,OAAQ,CACjB+U,IAAK,SAAUzU,GACd,IAAI0U,EAAUpX,EAAQ0C,EAAQ/B,MAC7B0W,EAAID,EAAQ9W,OAEb,OAAOK,KAAKkM,OAAQ,WAEnB,IADA,IAAI1N,EAAI,EACAA,EAAIkY,EAAGlY,IACd,GAAKa,EAAOkG,SAAUvF,KAAMyW,EAASjY,IACpC,OAAO,KAMXmY,QAAS,SAAUrI,EAAW/O,GAC7B,IAAIsL,EACHrM,EAAI,EACJkY,EAAI1W,KAAKL,OACTyQ,EAAU,GACVqG,EAA+B,iBAAdnI,GAA0BjP,EAAQiP,GAGpD,IAAMiH,EAAc/L,KAAM8E,GACzB,KAAQ9P,EAAIkY,EAAGlY,IACd,IAAMqM,EAAM7K,KAAMxB,GAAKqM,GAAOA,IAAQtL,EAASsL,EAAMA,EAAI5L,WAGxD,GAAK4L,EAAIjN,SAAW,KAAQ6Y,GACH,EAAxBA,EAAQG,MAAO/L,GAGE,IAAjBA,EAAIjN,UACHyB,EAAO+M,KAAKM,gBAAiB7B,EAAKyD,IAAgB,CAEnD8B,EAAQlT,KAAM2N,GACd,MAMJ,OAAO7K,KAAKG,UAA4B,EAAjBiQ,EAAQzQ,OAAaN,EAAO0O,WAAYqC,GAAYA,IAI5EwG,MAAO,SAAUjW,GAGhB,OAAMA,EAKe,iBAATA,EACJxD,EAAQJ,KAAMsC,EAAQsB,GAAQX,KAAM,IAIrC7C,EAAQJ,KAAMiD,KAGpBW,EAAKd,OAASc,EAAM,GAAMA,GAZjBX,KAAM,IAAOA,KAAM,GAAIf,WAAee,KAAKa,QAAQgW,UAAUlX,QAAU,GAgBlFmX,IAAK,SAAUxX,EAAUC,GACxB,OAAOS,KAAKG,UACXd,EAAO0O,WACN1O,EAAOiB,MAAON,KAAKC,MAAOZ,EAAQC,EAAUC,OAK/CwX,QAAS,SAAUzX,GAClB,OAAOU,KAAK8W,IAAiB,MAAZxX,EAChBU,KAAKO,WAAaP,KAAKO,WAAW2L,OAAQ5M,OAU7CD,EAAOmB,KAAM,CACZoP,OAAQ,SAAUjP,GACjB,IAAIiP,EACJ,OADIA,EAASjP,EAAK1B,aACmB,KAApB2Q,EAAOhS,SAAkBgS,EAAS,MAEpDoH,QAAS,SAAUrW,GAClB,OAAO0H,EAAK1H,EAAM,eAEnBsW,aAAc,SAAUtW,EAAMoD,EAAImR,GACjC,OAAO7M,EAAK1H,EAAM,aAAcuU,IAEjC5M,KAAM,SAAU3H,GACf,OAAO4V,EAAS5V,EAAM,gBAEvB2V,KAAM,SAAU3V,GACf,OAAO4V,EAAS5V,EAAM,oBAEvBuW,QAAS,SAAUvW,GAClB,OAAO0H,EAAK1H,EAAM,gBAEnBkW,QAAS,SAAUlW,GAClB,OAAO0H,EAAK1H,EAAM,oBAEnBwW,UAAW,SAAUxW,EAAMoD,EAAImR,GAC9B,OAAO7M,EAAK1H,EAAM,cAAeuU,IAElCkC,UAAW,SAAUzW,EAAMoD,EAAImR,GAC9B,OAAO7M,EAAK1H,EAAM,kBAAmBuU,IAEtCG,SAAU,SAAU1U,GACnB,OAAO0U,GAAY1U,EAAK1B,YAAc,IAAKmP,WAAYzN,IAExDyV,SAAU,SAAUzV,GACnB,OAAO0U,EAAU1U,EAAKyN,aAEvBiI,SAAU,SAAU1V,GACnB,OAA6B,MAAxBA,EAAK0W,iBAKT5a,EAAUkE,EAAK0W,iBAER1W,EAAK0W,iBAMRjP,EAAUzH,EAAM,cACpBA,EAAOA,EAAK2W,SAAW3W,GAGjBtB,EAAOiB,MAAO,GAAIK,EAAK4H,eAE7B,SAAU5G,EAAMnC,GAClBH,EAAOG,GAAImC,GAAS,SAAUuT,EAAO5V,GACpC,IAAI8Q,EAAU/Q,EAAOqB,IAAKV,KAAMR,EAAI0V,GAuBpC,OApBC5V,EADyB,UAArBqC,EAAK/E,OAAQ,GACNsY,EAGP5V,IAAgC,iBAAbA,IACvB8Q,EAAU/Q,EAAO6M,OAAQ5M,EAAU8Q,IAGjB,EAAdpQ,KAAKL,SAGHwW,EAAkBxU,IACvBtC,EAAO0O,WAAYqC,GAIf8F,EAAa1M,KAAM7H,IACvByO,EAAQmH,WAIHvX,KAAKG,UAAWiQ,MAGzB,IAAIoH,EAAkB,oBAsOtB,SAASC,EAAUC,GAClB,OAAOA,EAER,SAASC,EAASC,GACjB,MAAMA,EAGP,SAASC,EAAYnU,EAAOoU,EAASC,EAAQC,GAC5C,IAAIC,EAEJ,IAGMvU,GAAS/F,EAAcsa,EAASvU,EAAMwU,SAC1CD,EAAOlb,KAAM2G,GAAQiC,KAAMmS,GAAUK,KAAMJ,GAGhCrU,GAAS/F,EAAcsa,EAASvU,EAAM0U,MACjDH,EAAOlb,KAAM2G,EAAOoU,EAASC,GAQ7BD,EAAQ7a,WAAOmF,EAAW,CAAEsB,GAAQ9G,MAAOob,IAM3C,MAAQtU,GAITqU,EAAO9a,WAAOmF,EAAW,CAAEsB,KAvO7BrE,EAAOgZ,UAAY,SAAU3W,GA9B7B,IAAwBA,EACnB4W,EAiCJ5W,EAA6B,iBAAZA,GAlCMA,EAmCPA,EAlCZ4W,EAAS,GACbjZ,EAAOmB,KAAMkB,EAAQkH,MAAO4O,IAAmB,GAAI,SAAUe,EAAGC,GAC/DF,EAAQE,IAAS,IAEXF,GA+BNjZ,EAAOoC,OAAQ,GAAIC,GAwBZ,SAAP+W,IAQC,IALAC,EAASA,GAAUhX,EAAQiX,KAI3BC,EAAQC,GAAS,EACTC,EAAMnZ,OAAQoZ,GAAe,EAEpC,IADAC,EAASF,EAAM1O,UACL2O,EAAczS,EAAK3G,SAGmC,IAA1D2G,EAAMyS,GAAc9b,MAAO+b,EAAQ,GAAKA,EAAQ,KACpDtX,EAAQuX,cAGRF,EAAczS,EAAK3G,OACnBqZ,GAAS,GAMNtX,EAAQsX,SACbA,GAAS,GAGVH,GAAS,EAGJH,IAIHpS,EADI0S,EACG,GAIA,IA7DX,IACCH,EAGAG,EAGAJ,EAGAF,EAGApS,EAAO,GAGPwS,EAAQ,GAGRC,GAAe,EAgDflD,EAAO,CAGNiB,IAAK,WA2BJ,OA1BKxQ,IAGC0S,IAAWH,IACfE,EAAczS,EAAK3G,OAAS,EAC5BmZ,EAAM5b,KAAM8b,IAGb,SAAWlC,EAAK7G,GACf5Q,EAAOmB,KAAMyP,EAAM,SAAUsI,EAAG9U,GAC1B9F,EAAY8F,GACV/B,EAAQqT,QAAWc,EAAKW,IAAK/S,IAClC6C,EAAKpJ,KAAMuG,GAEDA,GAAOA,EAAI9D,QAA4B,WAAlBR,EAAQsE,IAGxCqT,EAAKrT,KATR,CAYK7C,WAEAoY,IAAWH,GACfJ,KAGKzY,MAIRkZ,OAAQ,WAYP,OAXA7Z,EAAOmB,KAAMI,UAAW,SAAU2X,EAAG9U,GAEpC,IADA,IAAImT,GACsD,GAAhDA,EAAQvX,EAAO+D,QAASK,EAAK6C,EAAMsQ,KAC5CtQ,EAAK9E,OAAQoV,EAAO,GAGfA,GAASmC,GACbA,MAII/Y,MAKRwW,IAAK,SAAUhX,GACd,OAAOA,GACwB,EAA9BH,EAAO+D,QAAS5D,EAAI8G,GACN,EAAdA,EAAK3G,QAIPwZ,MAAO,WAIN,OAFC7S,EADIA,GACG,GAEDtG,MAMRoZ,QAAS,WAGR,OAFAV,EAASI,EAAQ,GACjBxS,EAAO0S,EAAS,GACThZ,MAERmI,SAAU,WACT,OAAQ7B,GAMT+S,KAAM,WAKL,OAJAX,EAASI,EAAQ,GACXE,GAAWH,IAChBvS,EAAO0S,EAAS,IAEVhZ,MAER0Y,OAAQ,WACP,QAASA,GAIVY,SAAU,SAAU/Z,EAAS0Q,GAS5B,OARMyI,IAELzI,EAAO,CAAE1Q,GADT0Q,EAAOA,GAAQ,IACQrT,MAAQqT,EAAKrT,QAAUqT,GAC9C6I,EAAM5b,KAAM+S,GACN4I,GACLJ,KAGKzY,MAIRyY,KAAM,WAEL,OADA5C,EAAKyD,SAAUtZ,KAAMY,WACdZ,MAIR4Y,MAAO,WACN,QAASA,IAIZ,OAAO/C,GA4CRxW,EAAOoC,OAAQ,CAEd8X,SAAU,SAAUC,GACnB,IAAIC,EAAS,CAIX,CAAE,SAAU,WAAYpa,EAAOgZ,UAAW,UACzChZ,EAAOgZ,UAAW,UAAY,GAC/B,CAAE,UAAW,OAAQhZ,EAAOgZ,UAAW,eACtChZ,EAAOgZ,UAAW,eAAiB,EAAG,YACvC,CAAE,SAAU,OAAQhZ,EAAOgZ,UAAW,eACrChZ,EAAOgZ,UAAW,eAAiB,EAAG,aAExCqB,EAAQ,UACRxB,EAAU,CACTwB,MAAO,WACN,OAAOA,GAERC,OAAQ,WAEP,OADAC,EAASjU,KAAM/E,WAAYuX,KAAMvX,WAC1BZ,MAER,MAAS,SAAUR,GAClB,OAAO0Y,EAAQE,KAAM,KAAM5Y,IAI5Bqa,KAAM,WACL,IAAIC,EAAMlZ,UAEV,OAAOvB,EAAOka,SAAU,SAAUQ,GACjC1a,EAAOmB,KAAMiZ,EAAQ,SAAU1V,EAAIiW,GAGlC,IAAIxa,EAAK7B,EAAYmc,EAAKE,EAAO,MAAWF,EAAKE,EAAO,IAKxDJ,EAAUI,EAAO,IAAO,WACvB,IAAIC,EAAWza,GAAMA,EAAGvC,MAAO+C,KAAMY,WAChCqZ,GAAYtc,EAAYsc,EAAS/B,SACrC+B,EAAS/B,UACPgC,SAAUH,EAASI,QACnBxU,KAAMoU,EAASjC,SACfK,KAAM4B,EAAShC,QAEjBgC,EAAUC,EAAO,GAAM,QACtBha,KACAR,EAAK,CAAEya,GAAarZ,eAKxBkZ,EAAM,OACH5B,WAELE,KAAM,SAAUgC,EAAaC,EAAYC,GACxC,IAAIC,EAAW,EACf,SAASzC,EAAS0C,EAAOZ,EAAUlP,EAAS+P,GAC3C,OAAO,WAGQ,SAAbC,IACC,IAAIT,EAAU7B,EAKd,KAAKoC,EAAQD,GAAb,CAQA,IAJAN,EAAWvP,EAAQzN,MAAO0d,EAAM1K,MAId2J,EAAS1B,UAC1B,MAAM,IAAI0C,UAAW,4BAOtBxC,EAAO6B,IAKgB,iBAApB,IAAOA,EAAP,eAAOA,KACY,mBAAbA,IACRA,EAAS7B,KAGLza,EAAYya,GAGXqC,EACJrC,EAAKrb,KACJkd,EACAnC,EAASyC,EAAUX,EAAUnC,EAAUgD,GACvC3C,EAASyC,EAAUX,EAAUjC,EAAS8C,KAOvCF,IAEAnC,EAAKrb,KACJkd,EACAnC,EAASyC,EAAUX,EAAUnC,EAAUgD,GACvC3C,EAASyC,EAAUX,EAAUjC,EAAS8C,GACtC3C,EAASyC,EAAUX,EAAUnC,EAC5BmC,EAASiB,eASPnQ,IAAY+M,IAChBkD,OAAOvY,EACP6N,EAAO,CAAEgK,KAKRQ,GAAWb,EAASkB,aAAeH,EAAM1K,KAvE9C,IAAI0K,EAAO3a,KACViQ,EAAOrP,UA2EPma,EAAUN,EACTC,EACA,WACC,IACCA,IACC,MAAQlS,GAEJnJ,EAAOka,SAASyB,eACpB3b,EAAOka,SAASyB,cAAexS,EAC9BuS,EAAQE,YAMQV,GAAbC,EAAQ,IAIP9P,IAAYiN,IAChBgD,OAAOvY,EACP6N,EAAO,CAAEzH,IAGVoR,EAASsB,WAAYP,EAAM1K,MAS3BuK,EACJO,KAKK1b,EAAOka,SAAS4B,eACpBJ,EAAQE,WAAa5b,EAAOka,SAAS4B,gBAEtC/e,EAAOgf,WAAYL,KAKtB,OAAO1b,EAAOka,SAAU,SAAUQ,GAGjCN,EAAQ,GAAK,GAAI3C,IAChBgB,EACC,EACAiC,EACApc,EAAY2c,GACXA,EACA7C,EACDsC,EAASc,aAKXpB,EAAQ,GAAK,GAAI3C,IAChBgB,EACC,EACAiC,EACApc,EAAYyc,GACXA,EACA3C,IAKHgC,EAAQ,GAAK,GAAI3C,IAChBgB,EACC,EACAiC,EACApc,EAAY0c,GACXA,EACA1C,MAGAO,WAKLA,QAAS,SAAU3b,GAClB,OAAc,MAAPA,EAAc8C,EAAOoC,OAAQlF,EAAK2b,GAAYA,IAGvD0B,EAAW,GAkEZ,OA/DAva,EAAOmB,KAAMiZ,EAAQ,SAAUjb,EAAGwb,GACjC,IAAI1T,EAAO0T,EAAO,GACjBqB,EAAcrB,EAAO,GAKtB9B,EAAS8B,EAAO,IAAQ1T,EAAKwQ,IAGxBuE,GACJ/U,EAAKwQ,IACJ,WAIC4C,EAAQ2B,GAKT5B,EAAQ,EAAIjb,GAAK,GAAI4a,QAIrBK,EAAQ,EAAIjb,GAAK,GAAI4a,QAGrBK,EAAQ,GAAK,GAAIJ,KAGjBI,EAAQ,GAAK,GAAIJ,MAOnB/S,EAAKwQ,IAAKkD,EAAO,GAAIvB,MAKrBmB,EAAUI,EAAO,IAAQ,WAExB,OADAJ,EAAUI,EAAO,GAAM,QAAUha,OAAS4Z,OAAWxX,EAAYpC,KAAMY,WAChEZ,MAMR4Z,EAAUI,EAAO,GAAM,QAAW1T,EAAKgT,WAIxCpB,EAAQA,QAAS0B,GAGZJ,GACJA,EAAKzc,KAAM6c,EAAUA,GAIfA,GAIR0B,KAAM,SAAUC,GAiBD,SAAbC,EAAuBhd,GACtB,OAAO,SAAUkF,GAChB+X,EAAiBjd,GAAMwB,KACvB0b,EAAeld,GAAyB,EAAnBoC,UAAUjB,OAAa/C,EAAMG,KAAM6D,WAAc8C,IAC5DiY,GACTC,EAAQd,YAAaW,EAAiBC,IArB1C,IAGCC,EAAY/a,UAAUjB,OAGtBnB,EAAImd,EAGJF,EAAkBvZ,MAAO1D,GACzBkd,EAAgB9e,EAAMG,KAAM6D,WAG5Bgb,EAAUvc,EAAOka,WAclB,GAAKoC,GAAa,IACjB9D,EAAY0D,EAAaK,EAAQjW,KAAM6V,EAAYhd,IAAMsZ,QAAS8D,EAAQ7D,QACxE4D,GAGuB,YAApBC,EAAQlC,SACZ/b,EAAY+d,EAAeld,IAAOkd,EAAeld,GAAI4Z,OAErD,OAAOwD,EAAQxD,OAKjB,KAAQ5Z,KACPqZ,EAAY6D,EAAeld,GAAKgd,EAAYhd,GAAKod,EAAQ7D,QAG1D,OAAO6D,EAAQ1D,aAOjB,IAAI2D,EAAc,yDAElBxc,EAAOka,SAASyB,cAAgB,SAAUtY,EAAOoZ,GAI3C1f,EAAO2f,SAAW3f,EAAO2f,QAAQC,MAAQtZ,GAASmZ,EAAYrS,KAAM9G,EAAMf,OAC9EvF,EAAO2f,QAAQC,KAAM,8BAAgCtZ,EAAMuZ,QAASvZ,EAAMoZ,MAAOA,IAOnFzc,EAAO6c,eAAiB,SAAUxZ,GACjCtG,EAAOgf,WAAY,WAClB,MAAM1Y,KAQR,IAAIyZ,EAAY9c,EAAOka,WAkDvB,SAAS6C,IACRte,EAASue,oBAAqB,mBAAoBD,GAClDhgB,EAAOigB,oBAAqB,OAAQD,GACpC/c,EAAO2W,QAnDR3W,EAAOG,GAAGwW,MAAQ,SAAUxW,GAY3B,OAVA2c,EACE/D,KAAM5Y,GAKN8c,MAAO,SAAU5Z,GACjBrD,EAAO6c,eAAgBxZ,KAGlB1C,MAGRX,EAAOoC,OAAQ,CAGdgB,SAAS,EAIT8Z,UAAW,EAGXvG,MAAO,SAAUwG,KAGF,IAATA,IAAkBnd,EAAOkd,UAAYld,EAAOoD,WAKjDpD,EAAOoD,SAAU,KAGZ+Z,GAAsC,IAAnBnd,EAAOkd,WAK/BJ,EAAUrB,YAAahd,EAAU,CAAEuB,OAIrCA,EAAO2W,MAAMoC,KAAO+D,EAAU/D,KAaD,aAAxBta,EAAS2e,YACa,YAAxB3e,EAAS2e,aAA6B3e,EAAS0N,gBAAgBkR,SAGjEtgB,EAAOgf,WAAY/b,EAAO2W,QAK1BlY,EAAS8N,iBAAkB,mBAAoBwQ,GAG/ChgB,EAAOwP,iBAAkB,OAAQwQ,IAQrB,SAATO,EAAmBvc,EAAOZ,EAAI0K,EAAKxG,EAAOkZ,EAAWC,EAAUC,GAClE,IAAIte,EAAI,EACP4C,EAAMhB,EAAMT,OACZod,EAAc,MAAP7S,EAGR,GAAuB,WAAlB/K,EAAQ+K,GAEZ,IAAM1L,KADNoe,GAAY,EACD1S,EACVyS,EAAQvc,EAAOZ,EAAIhB,EAAG0L,EAAK1L,IAAK,EAAMqe,EAAUC,QAI3C,QAAe1a,IAAVsB,IACXkZ,GAAY,EAENjf,EAAY+F,KACjBoZ,GAAM,GAQLtd,EALGud,EAGCD,GACJtd,EAAGzC,KAAMqD,EAAOsD,GACX,OAILqZ,EAAOvd,EACF,SAAUmB,EAAMqc,EAAMtZ,GAC1B,OAAOqZ,EAAKhgB,KAAMsC,EAAQsB,GAAQ+C,KAKhClE,GACJ,KAAQhB,EAAI4C,EAAK5C,IAChBgB,EACCY,EAAO5B,GAAK0L,EAAK4S,EAChBpZ,EACAA,EAAM3G,KAAMqD,EAAO5B,GAAKA,EAAGgB,EAAIY,EAAO5B,GAAK0L,KAMhD,OAAK0S,EACGxc,EAIH2c,EACGvd,EAAGzC,KAAMqD,GAGVgB,EAAM5B,EAAIY,EAAO,GAAK8J,GAAQ2S,EAxDtC,IA6DII,EAAY,QACfC,EAAa,YAGd,SAASC,EAAYC,EAAMC,GAC1B,OAAOA,EAAOC,cAMf,SAASC,EAAWC,GACnB,OAAOA,EAAOhb,QAASya,EAAW,OAAQza,QAAS0a,EAAYC,GAE/C,SAAbM,EAAuBC,GAQ1B,OAA0B,IAAnBA,EAAM9f,UAAqC,IAAnB8f,EAAM9f,YAAsB8f,EAAM9f,SAMlE,SAAS+f,IACR3d,KAAKqC,QAAUhD,EAAOgD,QAAUsb,EAAKC,MAGtCD,EAAKC,IAAM,EAEXD,EAAK/d,UAAY,CAEhBqK,MAAO,SAAUyT,GAGhB,IAAIha,EAAQga,EAAO1d,KAAKqC,SA4BxB,OAzBMqB,IACLA,EAAQ,GAKH+Z,EAAYC,KAIXA,EAAM9f,SACV8f,EAAO1d,KAAKqC,SAAYqB,EAMxBhH,OAAOmhB,eAAgBH,EAAO1d,KAAKqC,QAAS,CAC3CqB,MAAOA,EACPoa,cAAc,MAMXpa,GAERqa,IAAK,SAAUL,EAAOM,EAAMta,GAC3B,IAAIua,EACHhU,EAAQjK,KAAKiK,MAAOyT,GAIrB,GAAqB,iBAATM,EACX/T,EAAOsT,EAAWS,IAAWta,OAM7B,IAAMua,KAAQD,EACb/T,EAAOsT,EAAWU,IAAWD,EAAMC,GAGrC,OAAOhU,GAERhK,IAAK,SAAUyd,EAAOxT,GACrB,YAAe9H,IAAR8H,EACNlK,KAAKiK,MAAOyT,GAGZA,EAAO1d,KAAKqC,UAAaqb,EAAO1d,KAAKqC,SAAWkb,EAAWrT,KAE7DyS,OAAQ,SAAUe,EAAOxT,EAAKxG,GAa7B,YAAatB,IAAR8H,GACCA,GAAsB,iBAARA,QAAgC9H,IAAVsB,EAElC1D,KAAKC,IAAKyd,EAAOxT,IASzBlK,KAAK+d,IAAKL,EAAOxT,EAAKxG,QAILtB,IAAVsB,EAAsBA,EAAQwG,IAEtCgP,OAAQ,SAAUwE,EAAOxT,GACxB,IAAI1L,EACHyL,EAAQyT,EAAO1d,KAAKqC,SAErB,QAAeD,IAAV6H,EAAL,CAIA,QAAa7H,IAAR8H,EAAoB,CAkBxB1L,GAXC0L,EAJIhI,MAAMC,QAAS+H,GAIbA,EAAIxJ,IAAK6c,IAEfrT,EAAMqT,EAAWrT,MAIJD,EACZ,CAAEC,GACAA,EAAItB,MAAO4O,IAAmB,IAG1B7X,OAER,KAAQnB,YACAyL,EAAOC,EAAK1L,SAKR4D,IAAR8H,IAAqB7K,EAAO2D,cAAeiH,KAM1CyT,EAAM9f,SACV8f,EAAO1d,KAAKqC,cAAYD,SAEjBsb,EAAO1d,KAAKqC,YAItB6b,QAAS,SAAUR,GACdzT,EAAQyT,EAAO1d,KAAKqC,SACxB,YAAiBD,IAAV6H,IAAwB5K,EAAO2D,cAAeiH,KAGvD,IAAIkU,EAAW,IAAIR,EAEfS,EAAW,IAAIT,EAcfU,EAAS,gCACZC,EAAa,SA2Bd,SAASC,EAAU5d,EAAMuJ,EAAK8T,GAC7B,IAAIrc,EA1Baqc,EA8BjB,QAAc5b,IAAT4b,GAAwC,IAAlBrd,EAAK/C,SAI/B,GAHA+D,EAAO,QAAUuI,EAAI1H,QAAS8b,EAAY,OAAQta,cAG7B,iBAFrBga,EAAOrd,EAAK9B,aAAc8C,IAEM,CAC/B,IACCqc,EAnCW,UADGA,EAoCEA,IA/BL,UAATA,IAIS,SAATA,EACG,KAIHA,KAAUA,EAAO,IACbA,EAGJK,EAAO7U,KAAMwU,GACVQ,KAAKC,MAAOT,GAGbA,GAeH,MAAQxV,IAGV4V,EAASL,IAAKpd,EAAMuJ,EAAK8T,QAEzBA,OAAO5b,EAGT,OAAO4b,EAGR3e,EAAOoC,OAAQ,CACdyc,QAAS,SAAUvd,GAClB,OAAOyd,EAASF,QAASvd,IAAUwd,EAASD,QAASvd,IAGtDqd,KAAM,SAAUrd,EAAMgB,EAAMqc,GAC3B,OAAOI,EAASzB,OAAQhc,EAAMgB,EAAMqc,IAGrCU,WAAY,SAAU/d,EAAMgB,GAC3Byc,EAASlF,OAAQvY,EAAMgB,IAKxBgd,MAAO,SAAUhe,EAAMgB,EAAMqc,GAC5B,OAAOG,EAASxB,OAAQhc,EAAMgB,EAAMqc,IAGrCY,YAAa,SAAUje,EAAMgB,GAC5Bwc,EAASjF,OAAQvY,EAAMgB,MAIzBtC,EAAOG,GAAGiC,OAAQ,CACjBuc,KAAM,SAAU9T,EAAKxG,GACpB,IAAIlF,EAAGmD,EAAMqc,EACZrd,EAAOX,KAAM,GACbyK,EAAQ9J,GAAQA,EAAK+F,WAGtB,QAAatE,IAAR8H,EA0BL,MAAoB,iBAAf,IAAOA,EAAP,eAAOA,IACJlK,KAAKQ,KAAM,WACjB4d,EAASL,IAAK/d,KAAMkK,KAIfyS,EAAQ3c,KAAM,SAAU0D,GAC9B,IAAIsa,EAOJ,OAAKrd,QAAkByB,IAAVsB,OAKEtB,KADd4b,EAAOI,EAASne,IAAKU,EAAMuJ,UAQb9H,KADd4b,EAAOO,EAAU5d,EAAMuJ,IALf8T,OAWR,OAIDhe,KAAKQ,KAAM,WAGV4d,EAASL,IAAK/d,KAAMkK,EAAKxG,MAExB,KAAMA,EAA0B,EAAnB9C,UAAUjB,OAAY,MAAM,GAjE3C,GAAKK,KAAKL,SACTqe,EAAOI,EAASne,IAAKU,GAEE,IAAlBA,EAAK/C,WAAmBugB,EAASle,IAAKU,EAAM,iBAAmB,CAEnE,IADAnC,EAAIiM,EAAM9K,OACFnB,KAIFiM,EAAOjM,IAEsB,KADjCmD,EAAO8I,EAAOjM,GAAImD,MACRxE,QAAS,WAClBwE,EAAO4b,EAAW5b,EAAK/E,MAAO,IAC9B2hB,EAAU5d,EAAMgB,EAAMqc,EAAMrc,KAI/Bwc,EAASJ,IAAKpd,EAAM,gBAAgB,GAItC,OAAOqd,GA+CTU,WAAY,SAAUxU,GACrB,OAAOlK,KAAKQ,KAAM,WACjB4d,EAASlF,OAAQlZ,KAAMkK,QAM1B7K,EAAOoC,OAAQ,CACdqX,MAAO,SAAUnY,EAAM3C,EAAMggB,GAC5B,IAAIlF,EAEJ,GAAKnY,EAYJ,OAVAmY,EAAQqF,EAASle,IAAKU,EADtB3C,GAASA,GAAQ,MAAS,SAIrBggB,KACElF,GAAS5W,MAAMC,QAAS6b,GAC7BlF,EAAQqF,EAASxB,OAAQhc,EAAM3C,EAAMqB,EAAO6D,UAAW8a,IAEvDlF,EAAM5b,KAAM8gB,IAGPlF,GAAS,IAIlB+F,QAAS,SAAUle,EAAM3C,GACxBA,EAAOA,GAAQ,KAEf,IAAI8a,EAAQzZ,EAAOyZ,MAAOnY,EAAM3C,GAC/B8gB,EAAchG,EAAMnZ,OACpBH,EAAKsZ,EAAM1O,QACX2U,EAAQ1f,EAAO2f,YAAare,EAAM3C,GAMvB,eAAPwB,IACJA,EAAKsZ,EAAM1O,QACX0U,KAGItf,IAIU,OAATxB,GACJ8a,EAAMrL,QAAS,qBAITsR,EAAME,KACbzf,EAAGzC,KAAM4D,EApBF,WACNtB,EAAOwf,QAASle,EAAM3C,IAmBF+gB,KAGhBD,GAAeC,GACpBA,EAAM5F,MAAMV,QAKduG,YAAa,SAAUre,EAAM3C,GAC5B,IAAIkM,EAAMlM,EAAO,aACjB,OAAOmgB,EAASle,IAAKU,EAAMuJ,IAASiU,EAASxB,OAAQhc,EAAMuJ,EAAK,CAC/DiP,MAAO9Z,EAAOgZ,UAAW,eAAgBvB,IAAK,WAC7CqH,EAASjF,OAAQvY,EAAM,CAAE3C,EAAO,QAASkM,WAM7C7K,EAAOG,GAAGiC,OAAQ,CACjBqX,MAAO,SAAU9a,EAAMggB,GACtB,IAAIkB,EAAS,EAQb,MANqB,iBAATlhB,IACXggB,EAAOhgB,EACPA,EAAO,KACPkhB,KAGIte,UAAUjB,OAASuf,EAChB7f,EAAOyZ,MAAO9Y,KAAM,GAAKhC,QAGjBoE,IAAT4b,EACNhe,KACAA,KAAKQ,KAAM,WACV,IAAIsY,EAAQzZ,EAAOyZ,MAAO9Y,KAAMhC,EAAMggB,GAGtC3e,EAAO2f,YAAahf,KAAMhC,GAEZ,OAATA,GAAgC,eAAf8a,EAAO,IAC5BzZ,EAAOwf,QAAS7e,KAAMhC,MAI1B6gB,QAAS,SAAU7gB,GAClB,OAAOgC,KAAKQ,KAAM,WACjBnB,EAAOwf,QAAS7e,KAAMhC,MAGxBmhB,WAAY,SAAUnhB,GACrB,OAAOgC,KAAK8Y,MAAO9a,GAAQ,KAAM,KAKlCka,QAAS,SAAUla,EAAMzB,GAMb,SAAVub,MACWsH,GACTC,EAAMvE,YAAanN,EAAU,CAAEA,IAPlC,IAAIpB,EACH6S,EAAQ,EACRC,EAAQhgB,EAAOka,WACf5L,EAAW3N,KACXxB,EAAIwB,KAAKL,OAaV,IANqB,iBAAT3B,IACXzB,EAAMyB,EACNA,OAAOoE,GAERpE,EAAOA,GAAQ,KAEPQ,MACP+N,EAAM4R,EAASle,IAAK0N,EAAUnP,GAAKR,EAAO,gBAC9BuO,EAAI4M,QACfiG,IACA7S,EAAI4M,MAAMrC,IAAKgB,IAIjB,OADAA,IACOuH,EAAMnH,QAAS3b,MAGxB,IAAI+iB,GAAS,sCAAwCC,OAEjDC,GAAU,IAAI3Y,OAAQ,iBAAmByY,GAAO,cAAe,KAG/DG,GAAY,CAAE,MAAO,QAAS,SAAU,QAExCjU,GAAkB1N,EAAS0N,gBAI1BkU,GAAa,SAAU/e,GACzB,OAAOtB,EAAOkG,SAAU5E,EAAKqI,cAAerI,IAE7Cgf,GAAW,CAAEA,UAAU,GAOnBnU,GAAgBoU,cACpBF,GAAa,SAAU/e,GACtB,OAAOtB,EAAOkG,SAAU5E,EAAKqI,cAAerI,IAC3CA,EAAKif,YAAaD,MAAehf,EAAKqI,gBAG1C,IAAI6W,GAAqB,SAAUlf,EAAM4J,GAOvC,MAA8B,UAH9B5J,EAAO4J,GAAM5J,GAGDmf,MAAMC,SACM,KAAvBpf,EAAKmf,MAAMC,SAMXL,GAAY/e,IAEsB,SAAlCtB,EAAO2gB,IAAKrf,EAAM,YAKrB,SAASsf,GAAWtf,EAAMsd,EAAMiC,EAAYC,GAC3C,IAAIC,EAAUC,EACbC,EAAgB,GAChBC,EAAeJ,EACd,WACC,OAAOA,EAAMtV,OAEd,WACC,OAAOxL,EAAO2gB,IAAKrf,EAAMsd,EAAM,KAEjCuC,EAAUD,IACVE,EAAOP,GAAcA,EAAY,KAAS7gB,EAAOqhB,UAAWzC,GAAS,GAAK,MAG1E0C,EAAgBhgB,EAAK/C,WAClByB,EAAOqhB,UAAWzC,IAAmB,OAATwC,IAAkBD,IAChDhB,GAAQvW,KAAM5J,EAAO2gB,IAAKrf,EAAMsd,IAElC,GAAK0C,GAAiBA,EAAe,KAAQF,EAAO,CAYnD,IALAA,EAAOA,GAAQE,EAAe,GAG9BA,IANAH,GAAoB,IAMQ,EAEpBF,KAIPjhB,EAAOygB,MAAOnf,EAAMsd,EAAM0C,EAAgBF,IACnC,EAAIJ,IAAY,GAAMA,EAAQE,IAAiBC,GAAW,MAAW,IAC3EF,EAAgB,GAEjBK,GAAgCN,EAKjChhB,EAAOygB,MAAOnf,EAAMsd,GADpB0C,GAAgC,GACUF,GAG1CP,EAAaA,GAAc,GAgB5B,OAbKA,IACJS,GAAiBA,IAAkBH,GAAW,EAG9CJ,EAAWF,EAAY,GACtBS,GAAkBT,EAAY,GAAM,GAAMA,EAAY,IACrDA,EAAY,GACTC,IACJA,EAAMM,KAAOA,EACbN,EAAMxQ,MAAQgR,EACdR,EAAM7e,IAAM8e,IAGPA,EAIR,IAAIQ,GAAoB,GAyBxB,SAASC,GAAUlT,EAAUmT,GAO5B,IANA,IAAIf,EAASpf,EAxBcA,EAE1BpC,EACA6J,EAsBA2Y,EAAS,GACTnK,EAAQ,EACRjX,EAASgO,EAAShO,OAGXiX,EAAQjX,EAAQiX,KACvBjW,EAAOgN,EAAUiJ,IACNkJ,QAIXC,EAAUpf,EAAKmf,MAAMC,QAChBe,GAKa,SAAZf,IACJgB,EAAQnK,GAAUuH,EAASle,IAAKU,EAAM,YAAe,KAC/CogB,EAAQnK,KACbjW,EAAKmf,MAAMC,QAAU,KAGK,KAAvBpf,EAAKmf,MAAMC,SAAkBF,GAAoBlf,KACrDogB,EAAQnK,IA9CVxO,EADA7J,YAF0BoC,EAiDaA,GA/C5BqI,cACXZ,EAAWzH,EAAKyH,UAChB2X,EAAUa,GAAmBxY,MAM9ByK,EAAOtU,EAAIyiB,KAAKhiB,YAAaT,EAAII,cAAeyJ,IAChD2X,EAAU1gB,EAAO2gB,IAAKnN,EAAM,WAE5BA,EAAK5T,WAAWC,YAAa2T,GAK7B+N,GAAmBxY,GAFlB2X,EADgB,SAAZA,EACM,QAEqBA,MAkCb,SAAZA,IACJgB,EAAQnK,GAAU,OAGlBuH,EAASJ,IAAKpd,EAAM,UAAWof,KAMlC,IAAMnJ,EAAQ,EAAGA,EAAQjX,EAAQiX,IACR,MAAnBmK,EAAQnK,KACZjJ,EAAUiJ,GAAQkJ,MAAMC,QAAUgB,EAAQnK,IAI5C,OAAOjJ,EAGRtO,EAAOG,GAAGiC,OAAQ,CACjBqf,KAAM,WACL,OAAOD,GAAU7gB,MAAM,IAExBihB,KAAM,WACL,OAAOJ,GAAU7gB,OAElBkhB,OAAQ,SAAUxH,GACjB,MAAsB,kBAAVA,EACJA,EAAQ1Z,KAAK8gB,OAAS9gB,KAAKihB,OAG5BjhB,KAAKQ,KAAM,WACZqf,GAAoB7f,MACxBX,EAAQW,MAAO8gB,OAEfzhB,EAAQW,MAAOihB,YAKnB,IAAIE,GAAmB,wBAEnBC,GAAa,iCAEbC,GAAgB,qCAMlBC,EADcxjB,EAASyjB,yBACRviB,YAAalB,EAASa,cAAe,SACpD6N,EAAQ1O,EAASa,cAAe,UAM3BG,aAAc,OAAQ,SAC5B0N,EAAM1N,aAAc,UAAW,WAC/B0N,EAAM1N,aAAc,OAAQ,KAE5BwiB,EAAItiB,YAAawN,GAIjB9O,EAAQ8jB,WAAaF,EAAIG,WAAW,GAAOA,WAAW,GAAO3R,UAAUiB,QAIvEuQ,EAAI7U,UAAY,yBAChB/O,EAAQgkB,iBAAmBJ,EAAIG,WAAW,GAAO3R,UAAUgF,aAK3DwM,EAAI7U,UAAY,oBAChB/O,EAAQikB,SAAWL,EAAIxR,UAKxB,IAAI8R,GAAU,CAKbC,MAAO,CAAE,EAAG,UAAW,YACvBC,IAAK,CAAE,EAAG,oBAAqB,uBAC/BC,GAAI,CAAE,EAAG,iBAAkB,oBAC3BC,GAAI,CAAE,EAAG,qBAAsB,yBAE/BC,SAAU,CAAE,EAAG,GAAI,KAYpB,SAASC,GAAQ3iB,EAAS+M,GAIzB,IAGCjM,OAD4C,IAAjCd,EAAQ8J,qBACb9J,EAAQ8J,qBAAsBiD,GAAO,UAEI,IAA7B/M,EAAQsK,iBACpBtK,EAAQsK,iBAAkByC,GAAO,KAGjC,GAGP,YAAalK,IAARkK,GAAqBA,GAAOlE,EAAU7I,EAAS+M,GAC5CjN,EAAOiB,MAAO,CAAEf,GAAWc,GAG5BA,EAKR,SAAS8hB,GAAe/hB,EAAOgiB,GAI9B,IAHA,IAAI5jB,EAAI,EACPkY,EAAItW,EAAMT,OAEHnB,EAAIkY,EAAGlY,IACd2f,EAASJ,IACR3d,EAAO5B,GACP,cACC4jB,GAAejE,EAASle,IAAKmiB,EAAa5jB,GAAK,eA1CnDojB,GAAQS,MAAQT,GAAQU,MAAQV,GAAQW,SAAWX,GAAQY,QAAUZ,GAAQC,MAC7ED,GAAQa,GAAKb,GAAQI,GAGftkB,EAAQikB,SACbC,GAAQc,SAAWd,GAAQD,OAAS,CAAE,EAAG,+BAAgC,cA2C1E,IAAIta,GAAQ,YAEZ,SAASsb,GAAeviB,EAAOb,EAASqjB,EAASC,EAAWC,GAO3D,IANA,IAAIniB,EAAM4L,EAAUwW,EAAMC,EAAU3hB,EACnC4hB,EAAW1jB,EAAQgiB,yBACnB2B,EAAQ,GACR1kB,EAAI,EACJkY,EAAItW,EAAMT,OAEHnB,EAAIkY,EAAGlY,IAGd,IAFAmC,EAAOP,EAAO5B,KAEQ,IAATmC,EAGZ,GAAwB,WAAnBxB,EAAQwB,GAIZtB,EAAOiB,MAAO4iB,EAAOviB,EAAK/C,SAAW,CAAE+C,GAASA,QAG1C,GAAM0G,GAAMmC,KAAM7I,GAIlB,CAUN,IATA4L,EAAMA,GAAO0W,EAASjkB,YAAaO,EAAQZ,cAAe,QAG1D2N,GAAQ8U,GAASnY,KAAMtI,IAAU,CAAE,GAAI,KAAQ,GAAIqD,cACnD+e,EAAOnB,GAAStV,IAASsV,GAAQK,SACjC1V,EAAIE,UAAYsW,EAAM,GAAM1jB,EAAO8jB,cAAexiB,GAASoiB,EAAM,GAGjE1hB,EAAI0hB,EAAM,GACF1hB,KACPkL,EAAMA,EAAIuD,UAKXzQ,EAAOiB,MAAO4iB,EAAO3W,EAAIhE,aAGzBgE,EAAM0W,EAAS7U,YAGXD,YAAc,QAzBlB+U,EAAMhmB,KAAMqC,EAAQ6jB,eAAgBziB,IAkCvC,IAHAsiB,EAAS9U,YAAc,GAEvB3P,EAAI,EACMmC,EAAOuiB,EAAO1kB,MAGvB,GAAKqkB,IAAkD,EAArCxjB,EAAO+D,QAASzC,EAAMkiB,GAClCC,GACJA,EAAQ5lB,KAAMyD,QAgBhB,GAXAqiB,EAAWtD,GAAY/e,GAGvB4L,EAAM2V,GAAQe,EAASjkB,YAAa2B,GAAQ,UAGvCqiB,GACJb,GAAe5V,GAIXqW,EAEJ,IADAvhB,EAAI,EACMV,EAAO4L,EAAKlL,MAChBggB,GAAY7X,KAAM7I,EAAK3C,MAAQ,KACnC4kB,EAAQ1lB,KAAMyD,GAMlB,OAAOsiB,EAIR,IAAII,GAAiB,sBAErB,SAASC,KACR,OAAO,EAGR,SAASC,KACR,OAAO,EASR,SAASC,GAAY7iB,EAAM3C,GAC1B,OAAS2C,IAMV,WACC,IACC,OAAO7C,EAAS6S,cACf,MAAQ8S,KATQC,KAAqC,UAAT1lB,GAY/C,SAAS2lB,GAAIhjB,EAAMijB,EAAOtkB,EAAU0e,EAAMxe,EAAIqkB,GAC7C,IAAIC,EAAQ9lB,EAGZ,GAAsB,iBAAjB,IAAO4lB,EAAP,eAAOA,IAAqB,CAShC,IAAM5lB,IANmB,iBAAbsB,IAGX0e,EAAOA,GAAQ1e,EACfA,OAAW8C,GAEEwhB,EACbD,GAAIhjB,EAAM3C,EAAMsB,EAAU0e,EAAM4F,EAAO5lB,GAAQ6lB,GAEhD,OAAOljB,EAsBR,GAnBa,MAARqd,GAAsB,MAANxe,GAGpBA,EAAKF,EACL0e,EAAO1e,OAAW8C,GACD,MAAN5C,IACc,iBAAbF,GAGXE,EAAKwe,EACLA,OAAO5b,IAIP5C,EAAKwe,EACLA,EAAO1e,EACPA,OAAW8C,KAGD,IAAP5C,EACJA,EAAK+jB,QACC,IAAM/jB,EACZ,OAAOmB,EAeR,OAZa,IAARkjB,IACJC,EAAStkB,GACTA,EAAK,SAAUukB,GAId,OADA1kB,IAAS2kB,IAAKD,GACPD,EAAO7mB,MAAO+C,KAAMY,aAIzB+C,KAAOmgB,EAAOngB,OAAUmgB,EAAOngB,KAAOtE,EAAOsE,SAE1ChD,EAAKH,KAAM,WACjBnB,EAAO0kB,MAAMjN,IAAK9W,KAAM4jB,EAAOpkB,EAAIwe,EAAM1e,KA+a3C,SAAS2kB,GAAgB1Z,EAAIvM,EAAMwlB,GAG5BA,GAQNrF,EAASJ,IAAKxT,EAAIvM,GAAM,GACxBqB,EAAO0kB,MAAMjN,IAAKvM,EAAIvM,EAAM,CAC3BsN,WAAW,EACXZ,QAAS,SAAUqZ,GAClB,IAAIG,EAAUlV,EACbmV,EAAQhG,EAASle,IAAKD,KAAMhC,GAE7B,GAAyB,EAAlB+lB,EAAMK,WAAmBpkB,KAAMhC,IAKrC,GAAMmmB,EAAMxkB,QAuCEN,EAAO0kB,MAAMtJ,QAASzc,IAAU,IAAKqmB,cAClDN,EAAMO,uBArBN,GAdAH,EAAQvnB,EAAMG,KAAM6D,WACpBud,EAASJ,IAAK/d,KAAMhC,EAAMmmB,GAK1BD,EAAWV,EAAYxjB,KAAMhC,GAC7BgC,KAAMhC,KAEDmmB,KADLnV,EAASmP,EAASle,IAAKD,KAAMhC,KACJkmB,EACxB/F,EAASJ,IAAK/d,KAAMhC,GAAM,GAE1BgR,EAAS,GAELmV,IAAUnV,EAWd,OARA+U,EAAMQ,2BACNR,EAAMS,iBAOCxV,GAAUA,EAAOtL,WAefygB,EAAMxkB,SAGjBwe,EAASJ,IAAK/d,KAAMhC,EAAM,CACzB0F,MAAOrE,EAAO0kB,MAAMU,QAInBplB,EAAOoC,OAAQ0iB,EAAO,GAAK9kB,EAAOqlB,MAAM9kB,WACxCukB,EAAMvnB,MAAO,GACboD,QAKF+jB,EAAMQ,qCA/E0BniB,IAA7B+b,EAASle,IAAKsK,EAAIvM,IACtBqB,EAAO0kB,MAAMjN,IAAKvM,EAAIvM,EAAMslB,IA5a/BjkB,EAAO0kB,MAAQ,CAEd7nB,OAAQ,GAER4a,IAAK,SAAUnW,EAAMijB,EAAOlZ,EAASsT,EAAM1e,GAE1C,IAAIqlB,EAAaC,EAChBC,EAAQC,EAAGC,EACXtK,EAAmBzc,EAAMgnB,EAAYC,EACrCC,EAAW/G,EAASle,IAAKU,GAG1B,GAAM8c,EAAY9c,GAuClB,IAlCK+J,EAAQA,UAEZA,GADAia,EAAcja,GACQA,QACtBpL,EAAWqlB,EAAYrlB,UAKnBA,GACJD,EAAO+M,KAAKM,gBAAiBlB,GAAiBlM,GAIzCoL,EAAQ/G,OACb+G,EAAQ/G,KAAOtE,EAAOsE,SAIfkhB,EAASK,EAASL,UACzBA,EAASK,EAASL,OAASnoB,OAAOyoB,OAAQ,QAEnCP,EAAcM,EAASE,UAC9BR,EAAcM,EAASE,OAAS,SAAU5c,GAIzC,YAAyB,IAAXnJ,GAA0BA,EAAO0kB,MAAMsB,YAAc7c,EAAExK,KACpEqB,EAAO0kB,MAAMuB,SAASroB,MAAO0D,EAAMC,gBAAcwB,IAMpD0iB,GADAlB,GAAUA,GAAS,IAAKhb,MAAO4O,IAAmB,CAAE,KAC1C7X,OACFmlB,KAEP9mB,EAAOinB,GADP1Y,EAAM8W,GAAepa,KAAM2a,EAAOkB,KAAS,IACpB,GACvBE,GAAezY,EAAK,IAAO,IAAKzI,MAAO,KAAMvC,OAGvCvD,IAKNyc,EAAUpb,EAAO0kB,MAAMtJ,QAASzc,IAAU,GAG1CA,GAASsB,EAAWmb,EAAQ4J,aAAe5J,EAAQ8K,WAAcvnB,EAGjEyc,EAAUpb,EAAO0kB,MAAMtJ,QAASzc,IAAU,GAG1C+mB,EAAY1lB,EAAOoC,OAAQ,CAC1BzD,KAAMA,EACNinB,SAAUA,EACVjH,KAAMA,EACNtT,QAASA,EACT/G,KAAM+G,EAAQ/G,KACdrE,SAAUA,EACVkW,aAAclW,GAAYD,EAAOqO,KAAK9E,MAAM4M,aAAahM,KAAMlK,GAC/DgM,UAAW0Z,EAAWpb,KAAM,MAC1B+a,IAGKa,EAAWX,EAAQ7mB,OAC1BwnB,EAAWX,EAAQ7mB,GAAS,IACnBynB,cAAgB,EAGnBhL,EAAQiL,QACiD,IAA9DjL,EAAQiL,MAAM3oB,KAAM4D,EAAMqd,EAAMgH,EAAYJ,IAEvCjkB,EAAKiL,kBACTjL,EAAKiL,iBAAkB5N,EAAM4mB,IAK3BnK,EAAQ3D,MACZ2D,EAAQ3D,IAAI/Z,KAAM4D,EAAMokB,GAElBA,EAAUra,QAAQ/G,OACvBohB,EAAUra,QAAQ/G,KAAO+G,EAAQ/G,OAK9BrE,EACJkmB,EAAShkB,OAAQgkB,EAASC,gBAAiB,EAAGV,GAE9CS,EAAStoB,KAAM6nB,GAIhB1lB,EAAO0kB,MAAM7nB,OAAQ8B,IAAS,IAMhCkb,OAAQ,SAAUvY,EAAMijB,EAAOlZ,EAASpL,EAAUqmB,GAEjD,IAAItkB,EAAGukB,EAAWrZ,EACjBsY,EAAQC,EAAGC,EACXtK,EAAS+K,EAAUxnB,EAAMgnB,EAAYC,EACrCC,EAAW/G,EAASD,QAASvd,IAAUwd,EAASle,IAAKU,GAEtD,GAAMukB,IAAeL,EAASK,EAASL,QAAvC,CAOA,IADAC,GADAlB,GAAUA,GAAS,IAAKhb,MAAO4O,IAAmB,CAAE,KAC1C7X,OACFmlB,KAMP,GAJA9mB,EAAOinB,GADP1Y,EAAM8W,GAAepa,KAAM2a,EAAOkB,KAAS,IACpB,GACvBE,GAAezY,EAAK,IAAO,IAAKzI,MAAO,KAAMvC,OAGvCvD,EAAN,CAeA,IARAyc,EAAUpb,EAAO0kB,MAAMtJ,QAASzc,IAAU,GAE1CwnB,EAAWX,EADX7mB,GAASsB,EAAWmb,EAAQ4J,aAAe5J,EAAQ8K,WAAcvnB,IACpC,GAC7BuO,EAAMA,EAAK,IACV,IAAI1F,OAAQ,UAAYme,EAAWpb,KAAM,iBAAoB,WAG9Dgc,EAAYvkB,EAAImkB,EAAS7lB,OACjB0B,KACP0jB,EAAYS,EAAUnkB,IAEfskB,GAAeV,IAAaF,EAAUE,UACzCva,GAAWA,EAAQ/G,OAASohB,EAAUphB,MACtC4I,IAAOA,EAAI/C,KAAMub,EAAUzZ,YAC3BhM,GAAYA,IAAaylB,EAAUzlB,WACxB,OAAbA,IAAqBylB,EAAUzlB,YAChCkmB,EAAShkB,OAAQH,EAAG,GAEf0jB,EAAUzlB,UACdkmB,EAASC,gBAELhL,EAAQvB,QACZuB,EAAQvB,OAAOnc,KAAM4D,EAAMokB,IAOzBa,IAAcJ,EAAS7lB,SACrB8a,EAAQoL,WACkD,IAA/DpL,EAAQoL,SAAS9oB,KAAM4D,EAAMqkB,EAAYE,EAASE,SAElD/lB,EAAOymB,YAAanlB,EAAM3C,EAAMknB,EAASE,eAGnCP,EAAQ7mB,SA1Cf,IAAMA,KAAQ6mB,EACbxlB,EAAO0kB,MAAM7K,OAAQvY,EAAM3C,EAAO4lB,EAAOkB,GAAKpa,EAASpL,GAAU,GA8C/DD,EAAO2D,cAAe6hB,IAC1B1G,EAASjF,OAAQvY,EAAM,mBAIzB2kB,SAAU,SAAUS,GAEnB,IAAIvnB,EAAG6C,EAAQ+O,EAAS2U,EAAWiB,EAClC/V,EAAO,IAAI/N,MAAOtB,UAAUjB,QAG5BokB,EAAQ1kB,EAAO0kB,MAAMkC,IAAKF,GAE1BP,GACCrH,EAASle,IAAKD,KAAM,WAActD,OAAOyoB,OAAQ,OAC/CpB,EAAM/lB,OAAU,GACnByc,EAAUpb,EAAO0kB,MAAMtJ,QAASsJ,EAAM/lB,OAAU,GAKjD,IAFAiS,EAAM,GAAM8T,EAENvlB,EAAI,EAAGA,EAAIoC,UAAUjB,OAAQnB,IAClCyR,EAAMzR,GAAMoC,UAAWpC,GAMxB,GAHAulB,EAAMmC,eAAiBlmB,MAGlBya,EAAQ0L,cAA2D,IAA5C1L,EAAQ0L,YAAYppB,KAAMiD,KAAM+jB,GAA5D,CASA,IAJAiC,EAAe3mB,EAAO0kB,MAAMyB,SAASzoB,KAAMiD,KAAM+jB,EAAOyB,GAGxDhnB,EAAI,GACM4R,EAAU4V,EAAcxnB,QAAYulB,EAAMqC,wBAInD,IAHArC,EAAMsC,cAAgBjW,EAAQzP,KAE9BU,EAAI,GACM0jB,EAAY3U,EAAQoV,SAAUnkB,QACtC0iB,EAAMuC,iCAIDvC,EAAMwC,aAAsC,IAAxBxB,EAAUzZ,YACnCyY,EAAMwC,WAAW/c,KAAMub,EAAUzZ,aAEjCyY,EAAMgB,UAAYA,EAClBhB,EAAM/F,KAAO+G,EAAU/G,UAKV5b,KAHb/B,IAAUhB,EAAO0kB,MAAMtJ,QAASsK,EAAUE,WAAc,IAAKG,QAC5DL,EAAUra,SAAUzN,MAAOmT,EAAQzP,KAAMsP,MAGT,KAAzB8T,EAAM/U,OAAS3O,KACrB0jB,EAAMS,iBACNT,EAAMO,oBAYX,OAJK7J,EAAQ+L,cACZ/L,EAAQ+L,aAAazpB,KAAMiD,KAAM+jB,GAG3BA,EAAM/U,SAGdwW,SAAU,SAAUzB,EAAOyB,GAC1B,IAAIhnB,EAAGumB,EAAWjX,EAAK2Y,EAAiBC,EACvCV,EAAe,GACfP,EAAgBD,EAASC,cACzB5a,EAAMkZ,EAAMhiB,OAGb,GAAK0jB,GAIJ5a,EAAIjN,YAOc,UAAfmmB,EAAM/lB,MAAoC,GAAhB+lB,EAAM4C,QAEnC,KAAQ9b,IAAQ7K,KAAM6K,EAAMA,EAAI5L,YAAce,KAI7C,GAAsB,IAAjB6K,EAAIjN,WAAoC,UAAfmmB,EAAM/lB,OAAqC,IAAjB6M,EAAI1C,UAAsB,CAGjF,IAFAse,EAAkB,GAClBC,EAAmB,GACbloB,EAAI,EAAGA,EAAIinB,EAAejnB,SAME4D,IAA5BskB,EAFL5Y,GAHAiX,EAAYS,EAAUhnB,IAGNc,SAAW,OAG1BonB,EAAkB5Y,GAAQiX,EAAUvP,cACC,EAApCnW,EAAQyO,EAAK9N,MAAO4W,MAAO/L,GAC3BxL,EAAO+M,KAAM0B,EAAK9N,KAAM,KAAM,CAAE6K,IAAQlL,QAErC+mB,EAAkB5Y,IACtB2Y,EAAgBvpB,KAAM6nB,GAGnB0B,EAAgB9mB,QACpBqmB,EAAa9oB,KAAM,CAAEyD,KAAMkK,EAAK2a,SAAUiB,IAY9C,OALA5b,EAAM7K,KACDylB,EAAgBD,EAAS7lB,QAC7BqmB,EAAa9oB,KAAM,CAAEyD,KAAMkK,EAAK2a,SAAUA,EAAS5oB,MAAO6oB,KAGpDO,GAGRY,QAAS,SAAUjlB,EAAMklB,GACxBnqB,OAAOmhB,eAAgBxe,EAAOqlB,MAAM9kB,UAAW+B,EAAM,CACpDmlB,YAAY,EACZhJ,cAAc,EAEd7d,IAAKtC,EAAYkpB,GAChB,WACC,GAAK7mB,KAAK+mB,cACT,OAAOF,EAAM7mB,KAAK+mB,gBAGpB,WACC,GAAK/mB,KAAK+mB,cACT,OAAO/mB,KAAK+mB,cAAeplB,IAI9Boc,IAAK,SAAUra,GACdhH,OAAOmhB,eAAgB7d,KAAM2B,EAAM,CAClCmlB,YAAY,EACZhJ,cAAc,EACdkJ,UAAU,EACVtjB,MAAOA,QAMXuiB,IAAK,SAAUc,GACd,OAAOA,EAAe1nB,EAAOgD,SAC5B0kB,EACA,IAAI1nB,EAAOqlB,MAAOqC,IAGpBtM,QAAS,CACRwM,KAAM,CAGLC,UAAU,GAEXC,MAAO,CAGNzB,MAAO,SAAU1H,GAIZzT,EAAKvK,MAAQge,EAWjB,OARKmD,GAAe3X,KAAMe,EAAGvM,OAC5BuM,EAAG4c,OAAS/e,EAAUmC,EAAI,UAG1B0Z,GAAgB1Z,EAAI,QAAS+Y,KAIvB,GAERmB,QAAS,SAAUzG,GAIdzT,EAAKvK,MAAQge,EAUjB,OAPKmD,GAAe3X,KAAMe,EAAGvM,OAC5BuM,EAAG4c,OAAS/e,EAAUmC,EAAI,UAE1B0Z,GAAgB1Z,EAAI,UAId,GAKR0X,SAAU,SAAU8B,GACfhiB,EAASgiB,EAAMhiB,OACnB,OAAOof,GAAe3X,KAAMzH,EAAO/D,OAClC+D,EAAOolB,OAAS/e,EAAUrG,EAAQ,UAClCoc,EAASle,IAAK8B,EAAQ,UACtBqG,EAAUrG,EAAQ,OAIrBqlB,aAAc,CACbZ,aAAc,SAAUzC,QAID3hB,IAAjB2hB,EAAM/U,QAAwB+U,EAAMgD,gBACxChD,EAAMgD,cAAcM,YAActD,EAAM/U,YAoG7C3P,EAAOymB,YAAc,SAAUnlB,EAAM3C,EAAMonB,GAGrCzkB,EAAK0b,qBACT1b,EAAK0b,oBAAqBre,EAAMonB,IAIlC/lB,EAAOqlB,MAAQ,SAAUzmB,EAAKqpB,GAG7B,KAAQtnB,gBAAgBX,EAAOqlB,OAC9B,OAAO,IAAIrlB,EAAOqlB,MAAOzmB,EAAKqpB,GAI1BrpB,GAAOA,EAAID,MACfgC,KAAK+mB,cAAgB9oB,EACrB+B,KAAKhC,KAAOC,EAAID,KAIhBgC,KAAKunB,mBAAqBtpB,EAAIupB,uBACHplB,IAAzBnE,EAAIupB,mBAGgB,IAApBvpB,EAAIopB,YACL/D,GACAC,GAKDvjB,KAAK+B,OAAW9D,EAAI8D,QAAkC,IAAxB9D,EAAI8D,OAAOnE,SACxCK,EAAI8D,OAAO9C,WACXhB,EAAI8D,OAEL/B,KAAKqmB,cAAgBpoB,EAAIooB,cACzBrmB,KAAKynB,cAAgBxpB,EAAIwpB,eAIzBznB,KAAKhC,KAAOC,EAIRqpB,GACJjoB,EAAOoC,OAAQzB,KAAMsnB,GAItBtnB,KAAK0nB,UAAYzpB,GAAOA,EAAIypB,WAAaliB,KAAKmiB,MAG9C3nB,KAAMX,EAAOgD,UAAY,GAK1BhD,EAAOqlB,MAAM9kB,UAAY,CACxBE,YAAaT,EAAOqlB,MACpB6C,mBAAoBhE,GACpB6C,qBAAsB7C,GACtB+C,8BAA+B/C,GAC/BqE,aAAa,EAEbpD,eAAgB,WACf,IAAIhc,EAAIxI,KAAK+mB,cAEb/mB,KAAKunB,mBAAqBjE,GAErB9a,IAAMxI,KAAK4nB,aACfpf,EAAEgc,kBAGJF,gBAAiB,WAChB,IAAI9b,EAAIxI,KAAK+mB,cAEb/mB,KAAKomB,qBAAuB9C,GAEvB9a,IAAMxI,KAAK4nB,aACfpf,EAAE8b,mBAGJC,yBAA0B,WACzB,IAAI/b,EAAIxI,KAAK+mB,cAEb/mB,KAAKsmB,8BAAgChD,GAEhC9a,IAAMxI,KAAK4nB,aACfpf,EAAE+b,2BAGHvkB,KAAKskB,oBAKPjlB,EAAOmB,KAAM,CACZqnB,QAAQ,EACRC,SAAS,EACTC,YAAY,EACZC,gBAAgB,EAChBC,SAAS,EACTC,QAAQ,EACRC,YAAY,EACZC,SAAS,EACTC,OAAO,EACPC,OAAO,EACPC,UAAU,EACVC,MAAM,EACN,MAAQ,EACRnqB,MAAM,EACNoqB,UAAU,EACVve,KAAK,EACLwe,SAAS,EACT/B,QAAQ,EACRgC,SAAS,EACTC,SAAS,EACTC,SAAS,EACTC,SAAS,EACTC,SAAS,EACTC,WAAW,EACXC,aAAa,EACbC,SAAS,EACTC,SAAS,EACTC,eAAe,EACfC,WAAW,EACXC,SAAS,EACTC,OAAO,GACLlqB,EAAO0kB,MAAM6C,SAEhBvnB,EAAOmB,KAAM,CAAEgpB,MAAO,UAAWC,KAAM,YAAc,SAAUzrB,EAAMqmB,GACpEhlB,EAAO0kB,MAAMtJ,QAASzc,GAAS,CAG9B0nB,MAAO,WAQN,OAHAzB,GAAgBjkB,KAAMhC,EAAMwlB,KAGrB,GAERiB,QAAS,WAMR,OAHAR,GAAgBjkB,KAAMhC,IAGf,GAKRikB,SAAU,WACT,OAAO,GAGRoC,aAAcA,KAYhBhlB,EAAOmB,KAAM,CACZkpB,WAAY,YACZC,WAAY,WACZC,aAAc,cACdC,aAAc,cACZ,SAAUC,EAAM7D,GAClB5mB,EAAO0kB,MAAMtJ,QAASqP,GAAS,CAC9BzF,aAAc4B,EACdV,SAAUU,EAEVb,OAAQ,SAAUrB,GACjB,IAAI1jB,EAEH0pB,EAAUhG,EAAM0D,cAChB1C,EAAYhB,EAAMgB,UASnB,OALMgF,IAAaA,IANT/pB,MAMgCX,EAAOkG,SANvCvF,KAMyD+pB,MAClEhG,EAAM/lB,KAAO+mB,EAAUE,SACvB5kB,EAAM0kB,EAAUra,QAAQzN,MAAO+C,KAAMY,WACrCmjB,EAAM/lB,KAAOioB,GAEP5lB,MAKVhB,EAAOG,GAAGiC,OAAQ,CAEjBkiB,GAAI,SAAUC,EAAOtkB,EAAU0e,EAAMxe,GACpC,OAAOmkB,GAAI3jB,KAAM4jB,EAAOtkB,EAAU0e,EAAMxe,IAEzCqkB,IAAK,SAAUD,EAAOtkB,EAAU0e,EAAMxe,GACrC,OAAOmkB,GAAI3jB,KAAM4jB,EAAOtkB,EAAU0e,EAAMxe,EAAI,IAE7CwkB,IAAK,SAAUJ,EAAOtkB,EAAUE,GAC/B,IAAIulB,EAAW/mB,EACf,GAAK4lB,GAASA,EAAMY,gBAAkBZ,EAAMmB,UAW3C,OARAA,EAAYnB,EAAMmB,UAClB1lB,EAAQukB,EAAMsC,gBAAiBlC,IAC9Be,EAAUzZ,UACTyZ,EAAUE,SAAW,IAAMF,EAAUzZ,UACrCyZ,EAAUE,SACXF,EAAUzlB,SACVylB,EAAUra,SAEJ1K,KAER,GAAsB,iBAAjB,IAAO4jB,EAAP,eAAOA,IAiBZ,OATkB,IAAbtkB,GAA0C,mBAAbA,IAGjCE,EAAKF,EACLA,OAAW8C,IAEA,IAAP5C,IACJA,EAAK+jB,IAECvjB,KAAKQ,KAAM,WACjBnB,EAAO0kB,MAAM7K,OAAQlZ,KAAM4jB,EAAOpkB,EAAIF,KAftC,IAAMtB,KAAQ4lB,EACb5jB,KAAKgkB,IAAKhmB,EAAMsB,EAAUskB,EAAO5lB,IAElC,OAAOgC,QAkBV,IAKCgqB,GAAe,wBAGfC,GAAW,oCACXC,GAAe,2CAGhB,SAASC,GAAoBxpB,EAAM2W,GAClC,OAAKlP,EAAUzH,EAAM,UACpByH,EAA+B,KAArBkP,EAAQ1Z,SAAkB0Z,EAAUA,EAAQlJ,WAAY,OAE3D/O,EAAQsB,GAAOyV,SAAU,SAAW,IAGrCzV,EAIR,SAASypB,GAAezpB,GAEvB,OADAA,EAAK3C,MAAyC,OAAhC2C,EAAK9B,aAAc,SAAsB,IAAM8B,EAAK3C,KAC3D2C,EAER,SAAS0pB,GAAe1pB,GAOvB,MAN2C,WAApCA,EAAK3C,MAAQ,IAAKpB,MAAO,EAAG,GAClC+D,EAAK3C,KAAO2C,EAAK3C,KAAKpB,MAAO,GAE7B+D,EAAKoJ,gBAAiB,QAGhBpJ,EAGR,SAAS2pB,GAAgBrsB,EAAKssB,GAC7B,IAAI/rB,EAAGkY,EAAG1Y,EAAoC6mB,EAE9C,GAAuB,IAAlB0F,EAAK3sB,SAAV,CAKA,GAAKugB,EAASD,QAASjgB,KAEtB4mB,EADW1G,EAASle,IAAKhC,GACP4mB,QAKjB,IAAM7mB,KAFNmgB,EAASjF,OAAQqR,EAAM,iBAET1F,EACb,IAAMrmB,EAAI,EAAGkY,EAAImO,EAAQ7mB,GAAO2B,OAAQnB,EAAIkY,EAAGlY,IAC9Ca,EAAO0kB,MAAMjN,IAAKyT,EAAMvsB,EAAM6mB,EAAQ7mB,GAAQQ,IAO7C4f,EAASF,QAASjgB,KACtBusB,EAAWpM,EAASzB,OAAQ1e,GAC5BwsB,EAAWprB,EAAOoC,OAAQ,GAAI+oB,GAE9BpM,EAASL,IAAKwM,EAAME,KAkBtB,SAASC,GAAUC,EAAY1a,EAAMxP,EAAUqiB,GAG9C7S,EAAOpT,EAAMoT,GAEb,IAAIgT,EAAUpiB,EAAO+hB,EAASgI,EAAYtsB,EAAMC,EAC/CC,EAAI,EACJkY,EAAIiU,EAAWhrB,OACfkrB,EAAWnU,EAAI,EACfhT,EAAQuM,EAAM,GACd6a,EAAkBntB,EAAY+F,GAG/B,GAAKonB,GACG,EAAJpU,GAA0B,iBAAVhT,IAChBhG,EAAQ8jB,YAAcyI,GAASzgB,KAAM9F,GACxC,OAAOinB,EAAWnqB,KAAM,SAAUoW,GACjC,IAAIf,EAAO8U,EAAW7pB,GAAI8V,GACrBkU,IACJ7a,EAAM,GAAMvM,EAAM3G,KAAMiD,KAAM4W,EAAOf,EAAKkV,SAE3CL,GAAU7U,EAAM5F,EAAMxP,EAAUqiB,KAIlC,GAAKpM,IAEJ7V,GADAoiB,EAAWN,GAAe1S,EAAM0a,EAAY,GAAI3hB,eAAe,EAAO2hB,EAAY7H,IACjE1U,WAEmB,IAA/B6U,EAAS1a,WAAW5I,SACxBsjB,EAAWpiB,GAIPA,GAASiiB,GAAU,CAOvB,IALA8H,GADAhI,EAAUvjB,EAAOqB,IAAKwhB,GAAQe,EAAU,UAAYmH,KAC/BzqB,OAKbnB,EAAIkY,EAAGlY,IACdF,EAAO2kB,EAEFzkB,IAAMqsB,IACVvsB,EAAOe,EAAOyC,MAAOxD,GAAM,GAAM,GAG5BssB,GAIJvrB,EAAOiB,MAAOsiB,EAASV,GAAQ5jB,EAAM,YAIvCmC,EAAS1D,KAAM4tB,EAAYnsB,GAAKF,EAAME,GAGvC,GAAKosB,EAOJ,IANArsB,EAAMqkB,EAASA,EAAQjjB,OAAS,GAAIqJ,cAGpC3J,EAAOqB,IAAKkiB,EAASyH,IAGf7rB,EAAI,EAAGA,EAAIosB,EAAYpsB,IAC5BF,EAAOskB,EAASpkB,GACX6iB,GAAY7X,KAAMlL,EAAKN,MAAQ,MAClCmgB,EAASxB,OAAQre,EAAM,eACxBe,EAAOkG,SAAUhH,EAAKD,KAEjBA,EAAKL,KAA8C,YAArCK,EAAKN,MAAQ,IAAKgG,cAG/B3E,EAAO2rB,WAAa1sB,EAAKH,UAC7BkB,EAAO2rB,SAAU1sB,EAAKL,IAAK,CAC1BC,MAAOI,EAAKJ,OAASI,EAAKO,aAAc,UACtCN,GAGJH,EAASE,EAAK6P,YAAY3L,QAAS0nB,GAAc,IAAM5rB,EAAMC,IAQnE,OAAOosB,EAGR,SAASzR,GAAQvY,EAAMrB,EAAU2rB,GAKhC,IAJA,IAAI3sB,EACH4kB,EAAQ5jB,EAAWD,EAAO6M,OAAQ5M,EAAUqB,GAASA,EACrDnC,EAAI,EAE4B,OAAvBF,EAAO4kB,EAAO1kB,IAAeA,IAChCysB,GAA8B,IAAlB3sB,EAAKV,UACtByB,EAAO6rB,UAAWhJ,GAAQ5jB,IAGtBA,EAAKW,aACJgsB,GAAYvL,GAAYphB,IAC5B6jB,GAAeD,GAAQ5jB,EAAM,WAE9BA,EAAKW,WAAWC,YAAaZ,IAI/B,OAAOqC,EAGRtB,EAAOoC,OAAQ,CACd0hB,cAAe,SAAU4H,GACxB,OAAOA,GAGRjpB,MAAO,SAAUnB,EAAMwqB,EAAeC,GACrC,IAAI5sB,EAAGkY,EAAG2U,EAAaC,EApINrtB,EAAKssB,EACnBniB,EAoIFtG,EAAQnB,EAAK8gB,WAAW,GACxB8J,EAAS7L,GAAY/e,GAGtB,KAAMjD,EAAQgkB,gBAAsC,IAAlB/gB,EAAK/C,UAAoC,KAAlB+C,EAAK/C,UAC3DyB,EAAO2V,SAAUrU,IAMnB,IAHA2qB,EAAepJ,GAAQpgB,GAGjBtD,EAAI,EAAGkY,GAFb2U,EAAcnJ,GAAQvhB,IAEOhB,OAAQnB,EAAIkY,EAAGlY,IAhJ5BP,EAiJLotB,EAAa7sB,GAjJH+rB,EAiJQe,EAAc9sB,GAhJzC4J,SAGc,WAHdA,EAAWmiB,EAAKniB,SAASpE,gBAGAmd,GAAe3X,KAAMvL,EAAID,MACrDusB,EAAKxZ,QAAU9S,EAAI8S,QAGK,UAAb3I,GAAqC,aAAbA,IACnCmiB,EAAKzV,aAAe7W,EAAI6W,cA6IxB,GAAKqW,EACJ,GAAKC,EAIJ,IAHAC,EAAcA,GAAenJ,GAAQvhB,GACrC2qB,EAAeA,GAAgBpJ,GAAQpgB,GAEjCtD,EAAI,EAAGkY,EAAI2U,EAAY1rB,OAAQnB,EAAIkY,EAAGlY,IAC3C8rB,GAAgBe,EAAa7sB,GAAK8sB,EAAc9sB,SAGjD8rB,GAAgB3pB,EAAMmB,GAWxB,OAL2B,GAD3BwpB,EAAepJ,GAAQpgB,EAAO,WACZnC,QACjBwiB,GAAemJ,GAAeC,GAAUrJ,GAAQvhB,EAAM,WAIhDmB,GAGRopB,UAAW,SAAU9qB,GAKpB,IAJA,IAAI4d,EAAMrd,EAAM3C,EACfyc,EAAUpb,EAAO0kB,MAAMtJ,QACvBjc,EAAI,OAE6B4D,KAAxBzB,EAAOP,EAAO5B,IAAqBA,IAC5C,GAAKif,EAAY9c,GAAS,CACzB,GAAOqd,EAAOrd,EAAMwd,EAAS9b,SAAc,CAC1C,GAAK2b,EAAK6G,OACT,IAAM7mB,KAAQggB,EAAK6G,OACbpK,EAASzc,GACbqB,EAAO0kB,MAAM7K,OAAQvY,EAAM3C,GAI3BqB,EAAOymB,YAAanlB,EAAM3C,EAAMggB,EAAKoH,QAOxCzkB,EAAMwd,EAAS9b,cAAYD,EAEvBzB,EAAMyd,EAAS/b,WAInB1B,EAAMyd,EAAS/b,cAAYD,OAOhC/C,EAAOG,GAAGiC,OAAQ,CACjB+pB,OAAQ,SAAUlsB,GACjB,OAAO4Z,GAAQlZ,KAAMV,GAAU,IAGhC4Z,OAAQ,SAAU5Z,GACjB,OAAO4Z,GAAQlZ,KAAMV,IAGtBV,KAAM,SAAU8E,GACf,OAAOiZ,EAAQ3c,KAAM,SAAU0D,GAC9B,YAAiBtB,IAAVsB,EACNrE,EAAOT,KAAMoB,MACbA,KAAKmZ,QAAQ3Y,KAAM,WACK,IAAlBR,KAAKpC,UAAoC,KAAlBoC,KAAKpC,UAAqC,IAAlBoC,KAAKpC,WACxDoC,KAAKmO,YAAczK,MAGpB,KAAMA,EAAO9C,UAAUjB,SAG3B8rB,OAAQ,WACP,OAAOf,GAAU1qB,KAAMY,UAAW,SAAUD,GACpB,IAAlBX,KAAKpC,UAAoC,KAAlBoC,KAAKpC,UAAqC,IAAlBoC,KAAKpC,UAC3CusB,GAAoBnqB,KAAMW,GAChC3B,YAAa2B,MAKvB+qB,QAAS,WACR,OAAOhB,GAAU1qB,KAAMY,UAAW,SAAUD,GAC3C,IACKoB,EADkB,IAAlB/B,KAAKpC,UAAoC,KAAlBoC,KAAKpC,UAAqC,IAAlBoC,KAAKpC,WACpDmE,EAASooB,GAAoBnqB,KAAMW,IAChCgrB,aAAchrB,EAAMoB,EAAOqM,eAKrCwd,OAAQ,WACP,OAAOlB,GAAU1qB,KAAMY,UAAW,SAAUD,GACtCX,KAAKf,YACTe,KAAKf,WAAW0sB,aAAchrB,EAAMX,SAKvC6rB,MAAO,WACN,OAAOnB,GAAU1qB,KAAMY,UAAW,SAAUD,GACtCX,KAAKf,YACTe,KAAKf,WAAW0sB,aAAchrB,EAAMX,KAAKgL,gBAK5CmO,MAAO,WAIN,IAHA,IAAIxY,EACHnC,EAAI,EAE2B,OAAtBmC,EAAOX,KAAMxB,IAAeA,IACd,IAAlBmC,EAAK/C,WAGTyB,EAAO6rB,UAAWhJ,GAAQvhB,GAAM,IAGhCA,EAAKwN,YAAc,IAIrB,OAAOnO,MAGR8B,MAAO,SAAUqpB,EAAeC,GAI/B,OAHAD,EAAiC,MAAjBA,GAAgCA,EAChDC,EAAyC,MAArBA,EAA4BD,EAAgBC,EAEzDprB,KAAKU,IAAK,WAChB,OAAOrB,EAAOyC,MAAO9B,KAAMmrB,EAAeC,MAI5CL,KAAM,SAAUrnB,GACf,OAAOiZ,EAAQ3c,KAAM,SAAU0D,GAC9B,IAAI/C,EAAOX,KAAM,IAAO,GACvBxB,EAAI,EACJkY,EAAI1W,KAAKL,OAEV,QAAeyC,IAAVsB,GAAyC,IAAlB/C,EAAK/C,SAChC,OAAO+C,EAAK8L,UAIb,GAAsB,iBAAV/I,IAAuBsmB,GAAaxgB,KAAM9F,KACpDke,IAAWR,GAASnY,KAAMvF,IAAW,CAAE,GAAI,KAAQ,GAAIM,eAAkB,CAE1EN,EAAQrE,EAAO8jB,cAAezf,GAE9B,IACC,KAAQlF,EAAIkY,EAAGlY,IAIS,KAHvBmC,EAAOX,KAAMxB,IAAO,IAGVZ,WACTyB,EAAO6rB,UAAWhJ,GAAQvhB,GAAM,IAChCA,EAAK8L,UAAY/I,GAInB/C,EAAO,EAGN,MAAQ6H,KAGN7H,GACJX,KAAKmZ,QAAQsS,OAAQ/nB,IAEpB,KAAMA,EAAO9C,UAAUjB,SAG3BmsB,YAAa,WACZ,IAAIhJ,EAAU,GAGd,OAAO4H,GAAU1qB,KAAMY,UAAW,SAAUD,GAC3C,IAAIiP,EAAS5P,KAAKf,WAEbI,EAAO+D,QAASpD,KAAM8iB,GAAY,IACtCzjB,EAAO6rB,UAAWhJ,GAAQliB,OACrB4P,GACJA,EAAOmc,aAAcprB,EAAMX,QAK3B8iB,MAILzjB,EAAOmB,KAAM,CACZwrB,SAAU,SACVC,UAAW,UACXN,aAAc,SACdO,YAAa,QACbC,WAAY,eACV,SAAUxqB,EAAMyqB,GAClB/sB,EAAOG,GAAImC,GAAS,SAAUrC,GAO7B,IANA,IAAIc,EACHC,EAAM,GACNgsB,EAAShtB,EAAQC,GACjByB,EAAOsrB,EAAO1sB,OAAS,EACvBnB,EAAI,EAEGA,GAAKuC,EAAMvC,IAClB4B,EAAQ5B,IAAMuC,EAAOf,KAAOA,KAAK8B,OAAO,GACxCzC,EAAQgtB,EAAQ7tB,IAAO4tB,GAAYhsB,GAInClD,EAAKD,MAAOoD,EAAKD,EAAMH,OAGxB,OAAOD,KAAKG,UAAWE,MAmBd,SAAPisB,GAAiB3rB,EAAMe,EAASjB,GACnC,IAASkB,EACR4qB,EAAM,GAGP,IAAM5qB,KAAQD,EACb6qB,EAAK5qB,GAAShB,EAAKmf,MAAOne,GAC1BhB,EAAKmf,MAAOne,GAASD,EAASC,GAM/B,IAAMA,KAHNtB,EAAMI,EAAS1D,KAAM4D,GAGPe,EACbf,EAAKmf,MAAOne,GAAS4qB,EAAK5qB,GAG3B,OAAOtB,EAjCR,IA6FKmsB,GAAkBC,GAAsBC,GAAkBC,GAC7DC,GAAyBC,GACzBC,GACAxL,GAhGEyL,GAAY,IAAIlmB,OAAQ,KAAOyY,GAAO,kBAAmB,KAEzD0N,GAAY,SAAUrsB,GAKxB,IAAI6nB,EAAO7nB,EAAKqI,cAAc0C,YAM9B,OAHC8c,GADKA,IAASA,EAAKyE,OACZ7wB,EAGDosB,GAAK0E,iBAAkBvsB,IAwB5BwsB,GAAY,IAAItmB,OAAQ4Y,GAAU7V,KAAM,KAAO,KAQlD,SAASwjB,KAGR,IAYIC,EAZE/L,KAINwL,GAAUhN,MAAMwN,QAAU,+EAE1BhM,GAAIxB,MAAMwN,QACT,4HAGD9hB,GAAgBxM,YAAa8tB,IAAY9tB,YAAasiB,IAElD+L,EAAWjxB,EAAO8wB,iBAAkB5L,IACxCkL,GAAoC,OAAjBa,EAAS1hB,IAG5BkhB,GAAsE,KAA9CU,GAAoBF,EAASG,YAIrDlM,GAAIxB,MAAM2N,MAAQ,MAClBd,GAA6D,KAAzCY,GAAoBF,EAASI,OAIjDhB,GAAgE,KAAzCc,GAAoBF,EAASK,OAMpDpM,GAAIxB,MAAM6N,SAAW,WACrBjB,GAAiE,KAA9Ca,GAAoBjM,GAAIsM,YAAc,GAEzDpiB,GAAgBtM,YAAa4tB,IAI7BxL,GAAM,MAGP,SAASiM,GAAoBM,GAC5B,OAAOvrB,KAAKwrB,MAAOC,WAAYF,IA4FjC,SAASG,GAAQrtB,EAAMgB,EAAMssB,GAC5B,IAAIP,EAA2BrtB,EAM9Byf,EAAQnf,EAAKmf,MAqCd,OAnCAmO,EAAWA,GAAYjB,GAAWrsB,MAQpB,MAFbN,EAAM4tB,EAASC,iBAAkBvsB,IAAUssB,EAAUtsB,KAEjC+d,GAAY/e,KAC/BN,EAAMhB,EAAOygB,MAAOnf,EAAMgB,KAQrBjE,EAAQywB,kBAAoBpB,GAAUvjB,KAAMnJ,IAAS8sB,GAAU3jB,KAAM7H,KAG1E+rB,EAAQ5N,EAAM4N,MACdU,EAAWtO,EAAMsO,SACjBC,EAAWvO,EAAMuO,SAGjBvO,EAAMsO,SAAWtO,EAAMuO,SAAWvO,EAAM4N,MAAQrtB,EAChDA,EAAM4tB,EAASP,MAGf5N,EAAM4N,MAAQA,EACd5N,EAAMsO,SAAWA,EACjBtO,EAAMuO,SAAWA,SAIJjsB,IAAR/B,EAINA,EAAM,GACNA,EAIF,SAASiuB,GAAcC,EAAaC,GAGnC,MAAO,CACNvuB,IAAK,WACJ,IAAKsuB,IASL,OAASvuB,KAAKC,IAAMuuB,GAASvxB,MAAO+C,KAAMY,kBALlCZ,KAAKC,MArJd6sB,GAAYhvB,EAASa,cAAe,QACpC2iB,GAAMxjB,EAASa,cAAe,QAGrBmhB,QAMVwB,GAAIxB,MAAM2O,eAAiB,cAC3BnN,GAAIG,WAAW,GAAO3B,MAAM2O,eAAiB,GAC7C/wB,EAAQgxB,gBAA+C,gBAA7BpN,GAAIxB,MAAM2O,eAEpCpvB,EAAOoC,OAAQ/D,EAAS,CACvBixB,kBAAmB,WAElB,OADAvB,KACOX,IAER0B,eAAgB,WAEf,OADAf,KACOT,IAERiC,cAAe,WAEd,OADAxB,KACOZ,IAERqC,mBAAoB,WAEnB,OADAzB,KACOP,IAERiC,cAAe,WAEd,OADA1B,KACOV,IAYRqC,qBAAsB,WACrB,IAAIC,EAAOjN,EAAakN,EAmCxB,OAlCgC,MAA3BrC,KACJoC,EAAQlxB,EAASa,cAAe,SAChCojB,EAAKjkB,EAASa,cAAe,MAC7BuwB,EAAUpxB,EAASa,cAAe,OAElCqwB,EAAMlP,MAAMwN,QAAU,2DACtBvL,EAAGjC,MAAMwN,QAAU,mBAKnBvL,EAAGjC,MAAMqP,OAAS,MAClBD,EAAQpP,MAAMqP,OAAS,MAQvBD,EAAQpP,MAAMC,QAAU,QAExBvU,GACExM,YAAagwB,GACbhwB,YAAa+iB,GACb/iB,YAAakwB,GAEfD,EAAU7yB,EAAO8wB,iBAAkBnL,GACnC6K,GAA4BwC,SAAUH,EAAQE,OAAQ,IACrDC,SAAUH,EAAQI,eAAgB,IAClCD,SAAUH,EAAQK,kBAAmB,MAAWvN,EAAGwN,aAEpD/jB,GAAgBtM,YAAa8vB,IAEvBpC,OA+EV,IAAI4C,GAAc,CAAE,SAAU,MAAO,MACpCC,GAAa3xB,EAASa,cAAe,OAAQmhB,MAC7C4P,GAAc,GAkBf,SAASC,GAAehuB,GACvB,IAAIiuB,EAAQvwB,EAAOwwB,SAAUluB,IAAU+tB,GAAa/tB,GAEpD,OAAKiuB,IAGAjuB,KAAQ8tB,GACL9tB,EAED+tB,GAAa/tB,GAxBrB,SAAyBA,GAMxB,IAHA,IAAImuB,EAAUnuB,EAAM,GAAI2b,cAAgB3b,EAAK/E,MAAO,GACnD4B,EAAIgxB,GAAY7vB,OAETnB,KAEP,IADAmD,EAAO6tB,GAAahxB,GAAMsxB,KACbL,GACZ,OAAO9tB,EAeoBouB,CAAgBpuB,IAAUA,GAIxD,IAKCquB,GAAe,4BACfC,GAAc,MACdC,GAAU,CAAEvC,SAAU,WAAYwC,WAAY,SAAUpQ,QAAS,SACjEqQ,GAAqB,CACpBC,cAAe,IACfC,WAAY,OAGd,SAASC,GAAmBrvB,EAAOwC,EAAO8sB,GAIzC,IAAIjtB,EAAUic,GAAQvW,KAAMvF,GAC5B,OAAOH,EAGNjB,KAAKmuB,IAAK,EAAGltB,EAAS,IAAQitB,GAAY,KAAUjtB,EAAS,IAAO,MACpEG,EAGF,SAASgtB,GAAoB/vB,EAAMgwB,EAAWC,EAAKC,EAAaC,EAAQC,GACvE,IAAIvyB,EAAkB,UAAdmyB,EAAwB,EAAI,EACnCK,EAAQ,EACRC,EAAQ,EAGT,GAAKL,KAAUC,EAAc,SAAW,WACvC,OAAO,EAGR,KAAQryB,EAAI,EAAGA,GAAK,EAGN,WAARoyB,IACJK,GAAS5xB,EAAO2gB,IAAKrf,EAAMiwB,EAAMnR,GAAWjhB,IAAK,EAAMsyB,IAIlDD,GAmBQ,YAARD,IACJK,GAAS5xB,EAAO2gB,IAAKrf,EAAM,UAAY8e,GAAWjhB,IAAK,EAAMsyB,IAIjD,WAARF,IACJK,GAAS5xB,EAAO2gB,IAAKrf,EAAM,SAAW8e,GAAWjhB,GAAM,SAAS,EAAMsyB,MAtBvEG,GAAS5xB,EAAO2gB,IAAKrf,EAAM,UAAY8e,GAAWjhB,IAAK,EAAMsyB,GAGhD,YAARF,EACJK,GAAS5xB,EAAO2gB,IAAKrf,EAAM,SAAW8e,GAAWjhB,GAAM,SAAS,EAAMsyB,GAItEE,GAAS3xB,EAAO2gB,IAAKrf,EAAM,SAAW8e,GAAWjhB,GAAM,SAAS,EAAMsyB,IAoCzE,OAhBMD,GAA8B,GAAfE,IAIpBE,GAAS3uB,KAAKmuB,IAAK,EAAGnuB,KAAK4uB,KAC1BvwB,EAAM,SAAWgwB,EAAW,GAAIrT,cAAgBqT,EAAU/zB,MAAO,IACjEm0B,EACAE,EACAD,EACA,MAIM,GAGDC,EAGR,SAASE,GAAkBxwB,EAAMgwB,EAAWK,GAG3C,IAAIF,EAAS9D,GAAWrsB,GAKvBkwB,IADmBnzB,EAAQixB,qBAAuBqC,IAEE,eAAnD3xB,EAAO2gB,IAAKrf,EAAM,aAAa,EAAOmwB,GACvCM,EAAmBP,EAEnBpyB,EAAMuvB,GAAQrtB,EAAMgwB,EAAWG,GAC/BO,EAAa,SAAWV,EAAW,GAAIrT,cAAgBqT,EAAU/zB,MAAO,GAIzE,GAAKmwB,GAAUvjB,KAAM/K,GAAQ,CAC5B,IAAMuyB,EACL,OAAOvyB,EAERA,EAAM,OAyCP,QAlCQf,EAAQixB,qBAAuBkC,IAMrCnzB,EAAQqxB,wBAA0B3mB,EAAUzH,EAAM,OAI3C,SAARlC,IAICsvB,WAAYtvB,IAA0D,WAAjDY,EAAO2gB,IAAKrf,EAAM,WAAW,EAAOmwB,KAG1DnwB,EAAK2wB,iBAAiB3xB,SAEtBkxB,EAAiE,eAAnDxxB,EAAO2gB,IAAKrf,EAAM,aAAa,EAAOmwB,IAKpDM,EAAmBC,KAAc1wB,KAEhClC,EAAMkC,EAAM0wB,MAKd5yB,EAAMsvB,WAAYtvB,IAAS,GAI1BiyB,GACC/vB,EACAgwB,EACAK,IAAWH,EAAc,SAAW,WACpCO,EACAN,EAGAryB,GAEE,KA+SL,SAAS8yB,GAAO5wB,EAAMe,EAASuc,EAAM3c,EAAKkwB,GACzC,OAAO,IAAID,GAAM3xB,UAAUH,KAAMkB,EAAMe,EAASuc,EAAM3c,EAAKkwB,GA7S5DnyB,EAAOoC,OAAQ,CAIdgwB,SAAU,CACTC,QAAS,CACRzxB,IAAK,SAAUU,EAAMstB,GACpB,GAAKA,EAAW,CAGX5tB,EAAM2tB,GAAQrtB,EAAM,WACxB,MAAe,KAARN,EAAa,IAAMA,MAO9BqgB,UAAW,CACV,yBAA2B,EAC3B,aAAe,EACf,aAAe,EACf,UAAY,EACZ,YAAc,EACd,YAAc,EACd,UAAY,EACZ,YAAc,EACd,eAAiB,EACjB,iBAAmB,EACnB,SAAW,EACX,YAAc,EACd,cAAgB,EAChB,YAAc,EACd,SAAW,EACX,OAAS,EACT,SAAW,EACX,QAAU,EACV,QAAU,EACV,MAAQ,GAKTmP,SAAU,GAGV/P,MAAO,SAAUnf,EAAMgB,EAAM+B,EAAOstB,GAGnC,GAAMrwB,GAA0B,IAAlBA,EAAK/C,UAAoC,IAAlB+C,EAAK/C,UAAmB+C,EAAKmf,MAAlE,CAKA,IAAIzf,EAAKrC,EAAM+gB,EACd4S,EAAWpU,EAAW5b,GACtBiwB,EAAe3B,GAAYzmB,KAAM7H,GACjCme,EAAQnf,EAAKmf,MAad,GARM8R,IACLjwB,EAAOguB,GAAegC,IAIvB5S,EAAQ1f,EAAOoyB,SAAU9vB,IAAUtC,EAAOoyB,SAAUE,QAGrCvvB,IAAVsB,EA0CJ,OAAKqb,GAAS,QAASA,QACwB3c,KAA5C/B,EAAM0e,EAAM9e,IAAKU,GAAM,EAAOqwB,IAEzB3wB,EAIDyf,EAAOne,GA7CA,YAHd3D,OAAA,IAAc0F,EAAd,eAAcA,MAGcrD,EAAMmf,GAAQvW,KAAMvF,KAAarD,EAAK,KACjEqD,EAAQuc,GAAWtf,EAAMgB,EAAMtB,GAG/BrC,EAAO,UAIM,MAAT0F,GAAiBA,GAAUA,IAOlB,WAAT1F,GAAsB4zB,IAC1BluB,GAASrD,GAAOA,EAAK,KAAShB,EAAOqhB,UAAWiR,GAAa,GAAK,OAI7Dj0B,EAAQgxB,iBAA6B,KAAVhrB,GAAiD,IAAjC/B,EAAKxE,QAAS,gBAC9D2iB,EAAOne,GAAS,WAIXod,GAAY,QAASA,QACsB3c,KAA9CsB,EAAQqb,EAAMhB,IAAKpd,EAAM+C,EAAOstB,MAE7BY,EACJ9R,EAAM+R,YAAalwB,EAAM+B,GAEzBoc,EAAOne,GAAS+B,MAkBpBsc,IAAK,SAAUrf,EAAMgB,EAAMqvB,EAAOF,GACjC,IAAIryB,EACHkzB,EAAWpU,EAAW5b,GA6BvB,OA5BgBsuB,GAAYzmB,KAAM7H,KAMjCA,EAAOguB,GAAegC,IAiBV,YAJZlzB,OADY2D,KAJZ3D,GAJDsgB,EAAQ1f,EAAOoyB,SAAU9vB,IAAUtC,EAAOoyB,SAAUE,KAGtC,QAAS5S,EAChBA,EAAM9e,IAAKU,GAAM,EAAMqwB,GAIzBvyB,GACEuvB,GAAQrtB,EAAMgB,EAAMmvB,GAItBryB,IAAoBkD,KAAQyuB,KAChC3xB,EAAM2xB,GAAoBzuB,IAIZ,KAAVqvB,GAAgBA,GACpB9wB,EAAM6tB,WAAYtvB,IACD,IAAVuyB,GAAkBc,SAAU5xB,GAAQA,GAAO,EAAIzB,GAGhDA,KAITY,EAAOmB,KAAM,CAAE,SAAU,SAAW,SAAUuD,EAAI4sB,GACjDtxB,EAAOoyB,SAAUd,GAAc,CAC9B1wB,IAAK,SAAUU,EAAMstB,EAAU+C,GAC9B,GAAK/C,EAIJ,OAAO+B,GAAaxmB,KAAMnK,EAAO2gB,IAAKrf,EAAM,aAQxCA,EAAK2wB,iBAAiB3xB,QAAWgB,EAAKoxB,wBAAwBrE,MAIjEyD,GAAkBxwB,EAAMgwB,EAAWK,GAHnC1E,GAAM3rB,EAAMuvB,GAAS,WACpB,OAAOiB,GAAkBxwB,EAAMgwB,EAAWK,MAM9CjT,IAAK,SAAUpd,EAAM+C,EAAOstB,GAC3B,IAAIztB,EACHutB,EAAS9D,GAAWrsB,GAIpBqxB,GAAsBt0B,EAAQoxB,iBACT,aAApBgC,EAAOnD,SAIRkD,GADkBmB,GAAsBhB,IAEY,eAAnD3xB,EAAO2gB,IAAKrf,EAAM,aAAa,EAAOmwB,GACvCN,EAAWQ,EACVN,GACC/vB,EACAgwB,EACAK,EACAH,EACAC,GAED,EAqBF,OAjBKD,GAAemB,IACnBxB,GAAYluB,KAAK4uB,KAChBvwB,EAAM,SAAWgwB,EAAW,GAAIrT,cAAgBqT,EAAU/zB,MAAO,IACjEmxB,WAAY+C,EAAQH,IACpBD,GAAoB/vB,EAAMgwB,EAAW,UAAU,EAAOG,GACtD,KAKGN,IAAcjtB,EAAUic,GAAQvW,KAAMvF,KACb,QAA3BH,EAAS,IAAO,QAElB5C,EAAKmf,MAAO6Q,GAAcjtB,EAC1BA,EAAQrE,EAAO2gB,IAAKrf,EAAMgwB,IAGpBJ,GAAmB5vB,EAAM+C,EAAO8sB,OAK1CnxB,EAAOoyB,SAASjE,WAAac,GAAc5wB,EAAQmxB,mBAClD,SAAUluB,EAAMstB,GACf,GAAKA,EACJ,OAASF,WAAYC,GAAQrtB,EAAM,gBAClCA,EAAKoxB,wBAAwBE,KAC5B3F,GAAM3rB,EAAM,CAAE6sB,WAAY,GAAK,WAC9B,OAAO7sB,EAAKoxB,wBAAwBE,QAEnC,OAMP5yB,EAAOmB,KAAM,CACZ0xB,OAAQ,GACRC,QAAS,GACTC,OAAQ,SACN,SAAUC,EAAQC,GACpBjzB,EAAOoyB,SAAUY,EAASC,GAAW,CACpCC,OAAQ,SAAU7uB,GAOjB,IANA,IAAIlF,EAAI,EACPg0B,EAAW,GAGXC,EAAyB,iBAAV/uB,EAAqBA,EAAMI,MAAO,KAAQ,CAAEJ,GAEpDlF,EAAI,EAAGA,IACdg0B,EAAUH,EAAS5S,GAAWjhB,GAAM8zB,GACnCG,EAAOj0B,IAAOi0B,EAAOj0B,EAAI,IAAOi0B,EAAO,GAGzC,OAAOD,IAIO,WAAXH,IACJhzB,EAAOoyB,SAAUY,EAASC,GAASvU,IAAMwS,MAI3ClxB,EAAOG,GAAGiC,OAAQ,CACjBue,IAAK,SAAUre,EAAM+B,GACpB,OAAOiZ,EAAQ3c,KAAM,SAAUW,EAAMgB,EAAM+B,GAC1C,IAAIotB,EAAQ1vB,EACXV,EAAM,GACNlC,EAAI,EAEL,GAAK0D,MAAMC,QAASR,GAAS,CAI5B,IAHAmvB,EAAS9D,GAAWrsB,GACpBS,EAAMO,EAAKhC,OAEHnB,EAAI4C,EAAK5C,IAChBkC,EAAKiB,EAAMnD,IAAQa,EAAO2gB,IAAKrf,EAAMgB,EAAMnD,IAAK,EAAOsyB,GAGxD,OAAOpwB,EAGR,YAAiB0B,IAAVsB,EACNrE,EAAOygB,MAAOnf,EAAMgB,EAAM+B,GAC1BrE,EAAO2gB,IAAKrf,EAAMgB,IACjBA,EAAM+B,EAA0B,EAAnB9C,UAAUjB,YAQ5BN,EAAOkyB,MAAQA,IAET3xB,UAAY,CACjBE,YAAayxB,GACb9xB,KAAM,SAAUkB,EAAMe,EAASuc,EAAM3c,EAAKkwB,EAAQ/Q,GACjDzgB,KAAKW,KAAOA,EACZX,KAAKie,KAAOA,EACZje,KAAKwxB,OAASA,GAAUnyB,EAAOmyB,OAAOvP,SACtCjiB,KAAK0B,QAAUA,EACf1B,KAAK2P,MAAQ3P,KAAK2nB,IAAM3nB,KAAK6K,MAC7B7K,KAAKsB,IAAMA,EACXtB,KAAKygB,KAAOA,IAAUphB,EAAOqhB,UAAWzC,GAAS,GAAK,OAEvDpT,IAAK,WACJ,IAAIkU,EAAQwS,GAAMmB,UAAW1yB,KAAKie,MAElC,OAAOc,GAASA,EAAM9e,IACrB8e,EACAwS,GAAMmB,UAAUzQ,UADVhiB,IAAKD,OAGb2yB,IAAK,SAAUC,GACd,IAAIC,EACH9T,EAAQwS,GAAMmB,UAAW1yB,KAAKie,MAoB/B,OAlBKje,KAAK0B,QAAQoxB,SACjB9yB,KAAK+yB,IAAMF,EAAQxzB,EAAOmyB,OAAQxxB,KAAKwxB,QACtCoB,EAAS5yB,KAAK0B,QAAQoxB,SAAWF,EAAS,EAAG,EAAG5yB,KAAK0B,QAAQoxB,UAG9D9yB,KAAK+yB,IAAMF,EAAQD,EAEpB5yB,KAAK2nB,KAAQ3nB,KAAKsB,IAAMtB,KAAK2P,OAAUkjB,EAAQ7yB,KAAK2P,MAE/C3P,KAAK0B,QAAQsxB,MACjBhzB,KAAK0B,QAAQsxB,KAAKj2B,KAAMiD,KAAKW,KAAMX,KAAK2nB,IAAK3nB,OAGzC+e,GAASA,EAAMhB,IACnBgB,EAEAwS,GAAMmB,UAAUzQ,UAFVlE,IAAK/d,MAILA,OAITuxB,GAAM3xB,UAAUH,KAAKG,UAAY2xB,GAAM3xB,UAEvC2xB,GAAMmB,UAAY,CACjBzQ,SAAU,CACThiB,IAAK,SAAUkgB,GAKd,OAA6B,IAAxBA,EAAMxf,KAAK/C,UACa,MAA5BuiB,EAAMxf,KAAMwf,EAAMlC,OAAoD,MAAlCkC,EAAMxf,KAAKmf,MAAOK,EAAMlC,MACrDkC,EAAMxf,KAAMwf,EAAMlC,OAO1BjP,EAAS3P,EAAO2gB,IAAKG,EAAMxf,KAAMwf,EAAMlC,KAAM,MAGhB,SAAXjP,EAAwBA,EAAJ,GAEvC+O,IAAK,SAAUoC,GAKT9gB,EAAO4zB,GAAGD,KAAM7S,EAAMlC,MAC1B5e,EAAO4zB,GAAGD,KAAM7S,EAAMlC,MAAQkC,GACK,IAAxBA,EAAMxf,KAAK/C,WACtByB,EAAOoyB,SAAUtR,EAAMlC,OAC6B,MAAnDkC,EAAMxf,KAAKmf,MAAO6P,GAAexP,EAAMlC,OAGxCkC,EAAMxf,KAAMwf,EAAMlC,MAASkC,EAAMwH,IAFjCtoB,EAAOygB,MAAOK,EAAMxf,KAAMwf,EAAMlC,KAAMkC,EAAMwH,IAAMxH,EAAMM,SAU5D8Q,GAAMmB,UAAUQ,UAAY3B,GAAMmB,UAAUS,WAAa,CACxDpV,IAAK,SAAUoC,GACTA,EAAMxf,KAAK/C,UAAYuiB,EAAMxf,KAAK1B,aACtCkhB,EAAMxf,KAAMwf,EAAMlC,MAASkC,EAAMwH,OAKpCtoB,EAAOmyB,OAAS,CACf4B,OAAQ,SAAUC,GACjB,OAAOA,GAERC,MAAO,SAAUD,GAChB,MAAO,GAAM/wB,KAAKixB,IAAKF,EAAI/wB,KAAKkxB,IAAO,GAExCvR,SAAU,SAGX5iB,EAAO4zB,GAAK1B,GAAM3xB,UAAUH,KAG5BJ,EAAO4zB,GAAGD,KAAO,GAKjB,IACCS,GAAOC,GACPC,GAAW,yBACXC,GAAO,cAER,SAASC,KACHH,MACqB,IAApB51B,EAASg2B,QAAoB13B,EAAO23B,sBACxC33B,EAAO23B,sBAAuBF,IAE9Bz3B,EAAOgf,WAAYyY,GAAUx0B,EAAO4zB,GAAGe,UAGxC30B,EAAO4zB,GAAGgB,QAKZ,SAASC,KAIR,OAHA93B,EAAOgf,WAAY,WAClBqY,QAAQrxB,IAEAqxB,GAAQjuB,KAAKmiB,MAIvB,SAASwM,GAAOn2B,EAAMo2B,GACrB,IAAI7K,EACH/qB,EAAI,EACJiM,EAAQ,CAAE0kB,OAAQnxB,GAKnB,IADAo2B,EAAeA,EAAe,EAAI,EAC1B51B,EAAI,EAAGA,GAAK,EAAI41B,EAEvB3pB,EAAO,UADP8e,EAAQ9J,GAAWjhB,KACSiM,EAAO,UAAY8e,GAAUvrB,EAO1D,OAJKo2B,IACJ3pB,EAAMinB,QAAUjnB,EAAMijB,MAAQ1vB,GAGxByM,EAGR,SAAS4pB,GAAa3wB,EAAOua,EAAMqW,GAKlC,IAJA,IAAInU,EACHwK,GAAe4J,GAAUC,SAAUvW,IAAU,IAAKjhB,OAAQu3B,GAAUC,SAAU,MAC9E5d,EAAQ,EACRjX,EAASgrB,EAAWhrB,OACbiX,EAAQjX,EAAQiX,IACvB,GAAOuJ,EAAQwK,EAAY/T,GAAQ7Z,KAAMu3B,EAAWrW,EAAMva,GAGzD,OAAOyc,EAsNV,SAASoU,GAAW5zB,EAAM8zB,EAAY/yB,GACrC,IAAIsN,EACH0lB,EACA9d,EAAQ,EACRjX,EAAS40B,GAAUI,WAAWh1B,OAC9Bia,EAAWva,EAAOka,WAAWI,OAAQ,kBAG7Bsa,EAAKtzB,OAEbszB,EAAO,WACN,GAAKS,EACJ,OAAO,EAYR,IAVA,IAAIE,EAAcnB,IAASS,KAC1BvY,EAAYrZ,KAAKmuB,IAAK,EAAG6D,EAAUO,UAAYP,EAAUxB,SAAW8B,GAKpEhC,EAAU,GADHjX,EAAY2Y,EAAUxB,UAAY,GAEzClc,EAAQ,EACRjX,EAAS20B,EAAUQ,OAAOn1B,OAEnBiX,EAAQjX,EAAQiX,IACvB0d,EAAUQ,OAAQle,GAAQ+b,IAAKC,GAMhC,OAHAhZ,EAASiB,WAAYla,EAAM,CAAE2zB,EAAW1B,EAASjX,IAG5CiX,EAAU,GAAKjzB,EACZgc,GAIFhc,GACLia,EAASiB,WAAYla,EAAM,CAAE2zB,EAAW,EAAG,IAI5C1a,EAASkB,YAAana,EAAM,CAAE2zB,KACvB,IAERA,EAAY1a,EAAS1B,QAAS,CAC7BvX,KAAMA,EACN2mB,MAAOjoB,EAAOoC,OAAQ,GAAIgzB,GAC1BM,KAAM11B,EAAOoC,QAAQ,EAAM,CAC1BuzB,cAAe,GACfxD,OAAQnyB,EAAOmyB,OAAOvP,UACpBvgB,GACHuzB,mBAAoBR,EACpBS,gBAAiBxzB,EACjBmzB,UAAWpB,IAASS,KACpBpB,SAAUpxB,EAAQoxB,SAClBgC,OAAQ,GACRT,YAAa,SAAUpW,EAAM3c,GACxB6e,EAAQ9gB,EAAOkyB,MAAO5wB,EAAM2zB,EAAUS,KAAM9W,EAAM3c,EACrDgzB,EAAUS,KAAKC,cAAe/W,IAAUqW,EAAUS,KAAKvD,QAExD,OADA8C,EAAUQ,OAAO53B,KAAMijB,GAChBA,GAERlB,KAAM,SAAUkW,GACf,IAAIve,EAAQ,EAIXjX,EAASw1B,EAAUb,EAAUQ,OAAOn1B,OAAS,EAC9C,GAAK+0B,EACJ,OAAO10B,KAGR,IADA00B,GAAU,EACF9d,EAAQjX,EAAQiX,IACvB0d,EAAUQ,OAAQle,GAAQ+b,IAAK,GAUhC,OANKwC,GACJvb,EAASiB,WAAYla,EAAM,CAAE2zB,EAAW,EAAG,IAC3C1a,EAASkB,YAAana,EAAM,CAAE2zB,EAAWa,KAEzCvb,EAASsB,WAAYva,EAAM,CAAE2zB,EAAWa,IAElCn1B,QAGTsnB,EAAQgN,EAAUhN,MAInB,KA/HD,SAAqBA,EAAO0N,GAC3B,IAAIpe,EAAOjV,EAAM6vB,EAAQ9tB,EAAOqb,EAGhC,IAAMnI,KAAS0Q,EAed,GAbAkK,EAASwD,EADTrzB,EAAO4b,EAAW3G,IAElBlT,EAAQ4jB,EAAO1Q,GACV1U,MAAMC,QAASuB,KACnB8tB,EAAS9tB,EAAO,GAChBA,EAAQ4jB,EAAO1Q,GAAUlT,EAAO,IAG5BkT,IAAUjV,IACd2lB,EAAO3lB,GAAS+B,SACT4jB,EAAO1Q,KAGfmI,EAAQ1f,EAAOoyB,SAAU9vB,KACX,WAAYod,EAMzB,IAAMnI,KALNlT,EAAQqb,EAAMwT,OAAQ7uB,UACf4jB,EAAO3lB,GAIC+B,EACNkT,KAAS0Q,IAChBA,EAAO1Q,GAAUlT,EAAOkT,GACxBoe,EAAepe,GAAU4a,QAI3BwD,EAAerzB,GAAS6vB,EA6F1B4D,CAAY9N,EAAOgN,EAAUS,KAAKC,eAE1Bpe,EAAQjX,EAAQiX,IAEvB,GADA5H,EAASulB,GAAUI,WAAY/d,GAAQ7Z,KAAMu3B,EAAW3zB,EAAM2mB,EAAOgN,EAAUS,MAM9E,OAJKp3B,EAAYqR,EAAOiQ,QACvB5f,EAAO2f,YAAasV,EAAU3zB,KAAM2zB,EAAUS,KAAKjc,OAAQmG,KAC1DjQ,EAAOiQ,KAAKoW,KAAMrmB,IAEbA,EAyBT,OArBA3P,EAAOqB,IAAK4mB,EAAO+M,GAAaC,GAE3B32B,EAAY22B,EAAUS,KAAKplB,QAC/B2kB,EAAUS,KAAKplB,MAAM5S,KAAM4D,EAAM2zB,GAIlCA,EACEpa,SAAUoa,EAAUS,KAAK7a,UACzBvU,KAAM2uB,EAAUS,KAAKpvB,KAAM2uB,EAAUS,KAAKO,UAC1Cnd,KAAMmc,EAAUS,KAAK5c,MACrBwB,OAAQ2a,EAAUS,KAAKpb,QAEzBta,EAAO4zB,GAAGsC,MACTl2B,EAAOoC,OAAQwyB,EAAM,CACpBtzB,KAAMA,EACN60B,KAAMlB,EACNxb,MAAOwb,EAAUS,KAAKjc,SAIjBwb,EAGRj1B,EAAOk1B,UAAYl1B,EAAOoC,OAAQ8yB,GAAW,CAE5CC,SAAU,CACT,IAAK,CAAE,SAAUvW,EAAMva,GACtB,IAAIyc,EAAQngB,KAAKq0B,YAAapW,EAAMva,GAEpC,OADAuc,GAAWE,EAAMxf,KAAMsd,EAAMuB,GAAQvW,KAAMvF,GAASyc,GAC7CA,KAITsV,QAAS,SAAUnO,EAAO7mB,GAYzB,IAJA,IAAIwd,EACHrH,EAAQ,EACRjX,GAPA2nB,EAFI3pB,EAAY2pB,IAChB7mB,EAAW6mB,EACH,CAAE,MAEFA,EAAM1e,MAAO4O,IAKN7X,OAERiX,EAAQjX,EAAQiX,IACvBqH,EAAOqJ,EAAO1Q,GACd2d,GAAUC,SAAUvW,GAASsW,GAAUC,SAAUvW,IAAU,GAC3DsW,GAAUC,SAAUvW,GAAOxQ,QAAShN,IAItCk0B,WAAY,CA3Wb,SAA2Bh0B,EAAM2mB,EAAOyN,GACvC,IAAI9W,EAAMva,EAAOwd,EAAQnC,EAAO2W,EAASC,EAAWC,EACnDC,EAAQ,UAAWvO,GAAS,WAAYA,EACxCkO,EAAOx1B,KACP8pB,EAAO,GACPhK,EAAQnf,EAAKmf,MACbgU,EAASnzB,EAAK/C,UAAYiiB,GAAoBlf,GAC9Cm1B,EAAW3X,EAASle,IAAKU,EAAM,UA6BhC,IAAMsd,KA1BA8W,EAAKjc,QAEa,OADvBiG,EAAQ1f,EAAO2f,YAAare,EAAM,OACvBo1B,WACVhX,EAAMgX,SAAW,EACjBL,EAAU3W,EAAM5F,MAAMV,KACtBsG,EAAM5F,MAAMV,KAAO,WACZsG,EAAMgX,UACXL,MAIH3W,EAAMgX,WAENP,EAAK7b,OAAQ,WAGZ6b,EAAK7b,OAAQ,WACZoF,EAAMgX,WACA12B,EAAOyZ,MAAOnY,EAAM,MAAOhB,QAChCof,EAAM5F,MAAMV,YAOF6O,EAEb,GADA5jB,EAAQ4jB,EAAOrJ,GACV0V,GAASnqB,KAAM9F,GAAU,CAG7B,UAFO4jB,EAAOrJ,GACdiD,EAASA,GAAoB,WAAVxd,EACdA,KAAYowB,EAAS,OAAS,QAAW,CAI7C,GAAe,SAAVpwB,IAAoBoyB,QAAiC1zB,IAArB0zB,EAAU7X,GAK9C,SAJA6V,GAAS,EAOXhK,EAAM7L,GAAS6X,GAAYA,EAAU7X,IAAU5e,EAAOygB,MAAOnf,EAAMsd,GAMrE,IADA0X,GAAat2B,EAAO2D,cAAeskB,MAChBjoB,EAAO2D,cAAe8mB,GA8DzC,IAAM7L,KAzDD4X,GAA2B,IAAlBl1B,EAAK/C,WAMlBm3B,EAAKiB,SAAW,CAAElW,EAAMkW,SAAUlW,EAAMmW,UAAWnW,EAAMoW,WAIlC,OADvBN,EAAiBE,GAAYA,EAAS/V,WAErC6V,EAAiBzX,EAASle,IAAKU,EAAM,YAGrB,UADjBof,EAAU1gB,EAAO2gB,IAAKrf,EAAM,cAEtBi1B,EACJ7V,EAAU6V,GAIV/U,GAAU,CAAElgB,IAAQ,GACpBi1B,EAAiBj1B,EAAKmf,MAAMC,SAAW6V,EACvC7V,EAAU1gB,EAAO2gB,IAAKrf,EAAM,WAC5BkgB,GAAU,CAAElgB,OAKG,WAAZof,GAAoC,iBAAZA,GAAgD,MAAlB6V,IACrB,SAAhCv2B,EAAO2gB,IAAKrf,EAAM,WAGhBg1B,IACLH,EAAK7vB,KAAM,WACVma,EAAMC,QAAU6V,IAEM,MAAlBA,IACJ7V,EAAUD,EAAMC,QAChB6V,EAA6B,SAAZ7V,EAAqB,GAAKA,IAG7CD,EAAMC,QAAU,iBAKdgV,EAAKiB,WACTlW,EAAMkW,SAAW,SACjBR,EAAK7b,OAAQ,WACZmG,EAAMkW,SAAWjB,EAAKiB,SAAU,GAChClW,EAAMmW,UAAYlB,EAAKiB,SAAU,GACjClW,EAAMoW,UAAYnB,EAAKiB,SAAU,MAKnCL,GAAY,EACE7L,EAGP6L,IACAG,EACC,WAAYA,IAChBhC,EAASgC,EAAShC,QAGnBgC,EAAW3X,EAASxB,OAAQhc,EAAM,SAAU,CAAEof,QAAS6V,IAInD1U,IACJ4U,EAAShC,QAAUA,GAIfA,GACJjT,GAAU,CAAElgB,IAAQ,GAKrB60B,EAAK7vB,KAAM,WASV,IAAMsY,KAJA6V,GACLjT,GAAU,CAAElgB,IAEbwd,EAASjF,OAAQvY,EAAM,UACTmpB,EACbzqB,EAAOygB,MAAOnf,EAAMsd,EAAM6L,EAAM7L,OAMnC0X,EAAYtB,GAAaP,EAASgC,EAAU7X,GAAS,EAAGA,EAAMuX,GACtDvX,KAAQ6X,IACfA,EAAU7X,GAAS0X,EAAUhmB,MACxBmkB,IACJ6B,EAAUr0B,IAAMq0B,EAAUhmB,MAC1BgmB,EAAUhmB,MAAQ,MAuMrBwmB,UAAW,SAAU11B,EAAUirB,GACzBA,EACJ6I,GAAUI,WAAWlnB,QAAShN,GAE9B8zB,GAAUI,WAAWz3B,KAAMuD,MAK9BpB,EAAO+2B,MAAQ,SAAUA,EAAO5E,EAAQhyB,GACvC,IAAI62B,EAAMD,GAA0B,iBAAjB,IAAOA,EAAP,eAAOA,IAAqB/2B,EAAOoC,OAAQ,GAAI20B,GAAU,CAC3Ed,SAAU91B,IAAOA,GAAMgyB,GACtB7zB,EAAYy4B,IAAWA,EACxBtD,SAAUsD,EACV5E,OAAQhyB,GAAMgyB,GAAUA,IAAW7zB,EAAY6zB,IAAYA,GAoC5D,OAhCKnyB,EAAO4zB,GAAGjP,IACdqS,EAAIvD,SAAW,EAGc,iBAAjBuD,EAAIvD,WACVuD,EAAIvD,YAAYzzB,EAAO4zB,GAAGqD,OAC9BD,EAAIvD,SAAWzzB,EAAO4zB,GAAGqD,OAAQD,EAAIvD,UAGrCuD,EAAIvD,SAAWzzB,EAAO4zB,GAAGqD,OAAOrU,UAMjB,MAAboU,EAAIvd,QAA+B,IAAdud,EAAIvd,QAC7Bud,EAAIvd,MAAQ,MAIbud,EAAI9J,IAAM8J,EAAIf,SAEde,EAAIf,SAAW,WACT33B,EAAY04B,EAAI9J,MACpB8J,EAAI9J,IAAIxvB,KAAMiD,MAGVq2B,EAAIvd,OACRzZ,EAAOwf,QAAS7e,KAAMq2B,EAAIvd,QAIrBud,GAGRh3B,EAAOG,GAAGiC,OAAQ,CACjB80B,OAAQ,SAAUH,EAAOI,EAAIhF,EAAQ/wB,GAGpC,OAAOT,KAAKkM,OAAQ2T,IAAqBG,IAAK,UAAW,GAAIc,OAG3Dxf,MAAMm1B,QAAS,CAAE/E,QAAS8E,GAAMJ,EAAO5E,EAAQ/wB,IAElDg2B,QAAS,SAAUxY,EAAMmY,EAAO5E,EAAQ/wB,GACvC,IAAI0Y,EAAQ9Z,EAAO2D,cAAeib,GACjCyY,EAASr3B,EAAO+2B,MAAOA,EAAO5E,EAAQ/wB,GACtCk2B,EAAc,WAGb,IAAInB,EAAOjB,GAAWv0B,KAAMX,EAAOoC,OAAQ,GAAIwc,GAAQyY,IAGlDvd,GAASgF,EAASle,IAAKD,KAAM,YACjCw1B,EAAKvW,MAAM,IAMd,OAFA0X,EAAYC,OAASD,EAEdxd,IAA0B,IAAjBud,EAAO5d,MACtB9Y,KAAKQ,KAAMm2B,GACX32B,KAAK8Y,MAAO4d,EAAO5d,MAAO6d,IAE5B1X,KAAM,SAAUjhB,EAAMmhB,EAAYgW,GACjB,SAAZ0B,EAAsB9X,GACzB,IAAIE,EAAOF,EAAME,YACVF,EAAME,KACbA,EAAMkW,GAYP,MATqB,iBAATn3B,IACXm3B,EAAUhW,EACVA,EAAanhB,EACbA,OAAOoE,GAEH+c,GACJnf,KAAK8Y,MAAO9a,GAAQ,KAAM,IAGpBgC,KAAKQ,KAAM,WACjB,IAAIqe,GAAU,EACbjI,EAAgB,MAAR5Y,GAAgBA,EAAO,aAC/B84B,EAASz3B,EAAOy3B,OAChB9Y,EAAOG,EAASle,IAAKD,MAEtB,GAAK4W,EACCoH,EAAMpH,IAAWoH,EAAMpH,GAAQqI,MACnC4X,EAAW7Y,EAAMpH,SAGlB,IAAMA,KAASoH,EACTA,EAAMpH,IAAWoH,EAAMpH,GAAQqI,MAAQ2U,GAAKpqB,KAAMoN,IACtDigB,EAAW7Y,EAAMpH,IAKpB,IAAMA,EAAQkgB,EAAOn3B,OAAQiX,KACvBkgB,EAAQlgB,GAAQjW,OAASX,MACnB,MAARhC,GAAgB84B,EAAQlgB,GAAQkC,QAAU9a,IAE5C84B,EAAQlgB,GAAQ4e,KAAKvW,KAAMkW,GAC3BtW,GAAU,EACViY,EAAOt1B,OAAQoV,EAAO,KAOnBiI,GAAYsW,GAChB91B,EAAOwf,QAAS7e,KAAMhC,MAIzB44B,OAAQ,SAAU54B,GAIjB,OAHc,IAATA,IACJA,EAAOA,GAAQ,MAETgC,KAAKQ,KAAM,WACjB,IAAIoW,EACHoH,EAAOG,EAASle,IAAKD,MACrB8Y,EAAQkF,EAAMhgB,EAAO,SACrB+gB,EAAQf,EAAMhgB,EAAO,cACrB84B,EAASz3B,EAAOy3B,OAChBn3B,EAASmZ,EAAQA,EAAMnZ,OAAS,EAajC,IAVAqe,EAAK4Y,QAAS,EAGdv3B,EAAOyZ,MAAO9Y,KAAMhC,EAAM,IAErB+gB,GAASA,EAAME,MACnBF,EAAME,KAAKliB,KAAMiD,MAAM,GAIlB4W,EAAQkgB,EAAOn3B,OAAQiX,KACvBkgB,EAAQlgB,GAAQjW,OAASX,MAAQ82B,EAAQlgB,GAAQkC,QAAU9a,IAC/D84B,EAAQlgB,GAAQ4e,KAAKvW,MAAM,GAC3B6X,EAAOt1B,OAAQoV,EAAO,IAKxB,IAAMA,EAAQ,EAAGA,EAAQjX,EAAQiX,IAC3BkC,EAAOlC,IAAWkC,EAAOlC,GAAQggB,QACrC9d,EAAOlC,GAAQggB,OAAO75B,KAAMiD,aAKvBge,EAAK4Y,YAKfv3B,EAAOmB,KAAM,CAAE,SAAU,OAAQ,QAAU,SAAUuD,EAAIpC,GACxD,IAAIo1B,EAAQ13B,EAAOG,GAAImC,GACvBtC,EAAOG,GAAImC,GAAS,SAAUy0B,EAAO5E,EAAQ/wB,GAC5C,OAAgB,MAAT21B,GAAkC,kBAAVA,EAC9BW,EAAM95B,MAAO+C,KAAMY,WACnBZ,KAAKy2B,QAAStC,GAAOxyB,GAAM,GAAQy0B,EAAO5E,EAAQ/wB,MAKrDpB,EAAOmB,KAAM,CACZw2B,UAAW7C,GAAO,QAClB8C,QAAS9C,GAAO,QAChB+C,YAAa/C,GAAO,UACpBgD,OAAQ,CAAEzF,QAAS,QACnB0F,QAAS,CAAE1F,QAAS,QACpB2F,WAAY,CAAE3F,QAAS,WACrB,SAAU/vB,EAAM2lB,GAClBjoB,EAAOG,GAAImC,GAAS,SAAUy0B,EAAO5E,EAAQ/wB,GAC5C,OAAOT,KAAKy2B,QAASnP,EAAO8O,EAAO5E,EAAQ/wB,MAI7CpB,EAAOy3B,OAAS,GAChBz3B,EAAO4zB,GAAGgB,KAAO,WAChB,IAAIsB,EACH/2B,EAAI,EACJs4B,EAASz3B,EAAOy3B,OAIjB,IAFArD,GAAQjuB,KAAKmiB,MAELnpB,EAAIs4B,EAAOn3B,OAAQnB,KAC1B+2B,EAAQuB,EAAQt4B,OAGCs4B,EAAQt4B,KAAQ+2B,GAChCuB,EAAOt1B,OAAQhD,IAAK,GAIhBs4B,EAAOn3B,QACZN,EAAO4zB,GAAGhU,OAEXwU,QAAQrxB,GAGT/C,EAAO4zB,GAAGsC,MAAQ,SAAUA,GAC3Bl2B,EAAOy3B,OAAO55B,KAAMq4B,GACpBl2B,EAAO4zB,GAAGtjB,SAGXtQ,EAAO4zB,GAAGe,SAAW,GACrB30B,EAAO4zB,GAAGtjB,MAAQ,WACZ+jB,KAILA,IAAa,EACbG,OAGDx0B,EAAO4zB,GAAGhU,KAAO,WAChByU,GAAa,MAGdr0B,EAAO4zB,GAAGqD,OAAS,CAClBgB,KAAM,IACNC,KAAM,IAGNtV,SAAU,KAMX5iB,EAAOG,GAAGg4B,MAAQ,SAAUC,EAAMz5B,GAIjC,OAHAy5B,EAAOp4B,EAAO4zB,IAAK5zB,EAAO4zB,GAAGqD,OAAQmB,IAAiBA,EAG/Cz3B,KAAK8Y,MAFZ9a,EAAOA,GAAQ,KAEU,SAAUsK,EAAMyW,GACxC,IAAI2Y,EAAUt7B,EAAOgf,WAAY9S,EAAMmvB,GACvC1Y,EAAME,KAAO,WACZ7iB,EAAOu7B,aAAcD,OAOnBlrB,EAAQ1O,EAASa,cAAe,SAEnC03B,GADSv4B,EAASa,cAAe,UACpBK,YAAalB,EAASa,cAAe,WAEnD6N,EAAMxO,KAAO,WAIbN,EAAQk6B,QAA0B,KAAhBprB,EAAM9I,MAIxBhG,EAAQm6B,YAAcxB,GAAIrlB,UAI1BxE,EAAQ1O,EAASa,cAAe,UAC1B+E,MAAQ,IACd8I,EAAMxO,KAAO,QACbN,EAAQo6B,WAA6B,MAAhBtrB,EAAM9I,MAI5B,IAAIq0B,GACHptB,GAAatL,EAAOqO,KAAK/C,WAE1BtL,EAAOG,GAAGiC,OAAQ,CACjBmM,KAAM,SAAUjM,EAAM+B,GACrB,OAAOiZ,EAAQ3c,KAAMX,EAAOuO,KAAMjM,EAAM+B,EAA0B,EAAnB9C,UAAUjB,SAG1Dq4B,WAAY,SAAUr2B,GACrB,OAAO3B,KAAKQ,KAAM,WACjBnB,EAAO24B,WAAYh4B,KAAM2B,QAK5BtC,EAAOoC,OAAQ,CACdmM,KAAM,SAAUjN,EAAMgB,EAAM+B,GAC3B,IAAIrD,EAAK0e,EACRkZ,EAAQt3B,EAAK/C,SAGd,GAAe,IAAVq6B,GAAyB,IAAVA,GAAyB,IAAVA,EAKnC,YAAkC,IAAtBt3B,EAAK9B,aACTQ,EAAO4e,KAAMtd,EAAMgB,EAAM+B,IAKlB,IAAVu0B,GAAgB54B,EAAO2V,SAAUrU,KACrCoe,EAAQ1f,EAAO64B,UAAWv2B,EAAKqC,iBAC5B3E,EAAOqO,KAAK9E,MAAMuvB,KAAK3uB,KAAM7H,GAASo2B,QAAW31B,SAGtCA,IAAVsB,EACW,OAAVA,OACJrE,EAAO24B,WAAYr3B,EAAMgB,GAIrBod,GAAS,QAASA,QACuB3c,KAA3C/B,EAAM0e,EAAMhB,IAAKpd,EAAM+C,EAAO/B,IACzBtB,GAGRM,EAAK7B,aAAc6C,EAAM+B,EAAQ,IAC1BA,KAGHqb,GAAS,QAASA,GAA+C,QAApC1e,EAAM0e,EAAM9e,IAAKU,EAAMgB,MAO3C,OAHdtB,EAAMhB,EAAO+M,KAAKwB,KAAMjN,EAAMgB,SAGTS,EANb/B,IAST63B,UAAW,CACVl6B,KAAM,CACL+f,IAAK,SAAUpd,EAAM+C,GACpB,IAAMhG,EAAQo6B,YAAwB,UAAVp0B,GAC3B0E,EAAUzH,EAAM,SAAY,CAC5B,IAAIlC,EAAMkC,EAAK+C,MAKf,OAJA/C,EAAK7B,aAAc,OAAQ4E,GACtBjF,IACJkC,EAAK+C,MAAQjF,GAEPiF,MAMXs0B,WAAY,SAAUr3B,EAAM+C,GAC3B,IAAI/B,EACHnD,EAAI,EAIJ45B,EAAY10B,GAASA,EAAMkF,MAAO4O,GAEnC,GAAK4gB,GAA+B,IAAlBz3B,EAAK/C,SACtB,KAAU+D,EAAOy2B,EAAW55B,MAC3BmC,EAAKoJ,gBAAiBpI,MAO1Bo2B,GAAW,CACVha,IAAK,SAAUpd,EAAM+C,EAAO/B,GAQ3B,OAPe,IAAV+B,EAGJrE,EAAO24B,WAAYr3B,EAAMgB,GAEzBhB,EAAK7B,aAAc6C,EAAMA,GAEnBA,IAITtC,EAAOmB,KAAMnB,EAAOqO,KAAK9E,MAAMuvB,KAAK5Y,OAAO3W,MAAO,QAAU,SAAU7E,EAAIpC,GACzE,IAAI02B,EAAS1tB,GAAYhJ,IAAUtC,EAAO+M,KAAKwB,KAE/CjD,GAAYhJ,GAAS,SAAUhB,EAAMgB,EAAMiD,GAC1C,IAAIvE,EAAK+kB,EACRkT,EAAgB32B,EAAKqC,cAYtB,OAVMY,IAGLwgB,EAASza,GAAY2tB,GACrB3tB,GAAY2tB,GAAkBj4B,EAC9BA,EAAqC,MAA/Bg4B,EAAQ13B,EAAMgB,EAAMiD,GACzB0zB,EACA,KACD3tB,GAAY2tB,GAAkBlT,GAExB/kB,KAOT,IAAIk4B,GAAa,sCAChBC,GAAa,gBAyIb,SAASC,GAAkB/0B,GAE1B,OADaA,EAAMkF,MAAO4O,IAAmB,IAC/B5N,KAAM,KAItB,SAAS8uB,GAAU/3B,GAClB,OAAOA,EAAK9B,cAAgB8B,EAAK9B,aAAc,UAAa,GAG7D,SAAS85B,GAAgBj1B,GACxB,OAAKxB,MAAMC,QAASuB,GACZA,EAEc,iBAAVA,GACJA,EAAMkF,MAAO4O,IAEd,GAxJRnY,EAAOG,GAAGiC,OAAQ,CACjBwc,KAAM,SAAUtc,EAAM+B,GACrB,OAAOiZ,EAAQ3c,KAAMX,EAAO4e,KAAMtc,EAAM+B,EAA0B,EAAnB9C,UAAUjB,SAG1Di5B,WAAY,SAAUj3B,GACrB,OAAO3B,KAAKQ,KAAM,kBACVR,KAAMX,EAAOw5B,QAASl3B,IAAUA,QAK1CtC,EAAOoC,OAAQ,CACdwc,KAAM,SAAUtd,EAAMgB,EAAM+B,GAC3B,IAAIrD,EAAK0e,EACRkZ,EAAQt3B,EAAK/C,SAGd,GAAe,IAAVq6B,GAAyB,IAAVA,GAAyB,IAAVA,EAWnC,OAPe,IAAVA,GAAgB54B,EAAO2V,SAAUrU,KAGrCgB,EAAOtC,EAAOw5B,QAASl3B,IAAUA,EACjCod,EAAQ1f,EAAOqzB,UAAW/wB,SAGZS,IAAVsB,EACCqb,GAAS,QAASA,QACuB3c,KAA3C/B,EAAM0e,EAAMhB,IAAKpd,EAAM+C,EAAO/B,IACzBtB,EAGCM,EAAMgB,GAAS+B,EAGpBqb,GAAS,QAASA,GAA+C,QAApC1e,EAAM0e,EAAM9e,IAAKU,EAAMgB,IACjDtB,EAGDM,EAAMgB,IAGd+wB,UAAW,CACV5hB,SAAU,CACT7Q,IAAK,SAAUU,GAOd,IAAIm4B,EAAWz5B,EAAO+M,KAAKwB,KAAMjN,EAAM,YAEvC,OAAKm4B,EACG1J,SAAU0J,EAAU,IAI3BP,GAAW/uB,KAAM7I,EAAKyH,WACtBowB,GAAWhvB,KAAM7I,EAAKyH,WACtBzH,EAAKkQ,KAEE,GAGA,KAKXgoB,QAAS,CACR,IAAO,UACP,MAAS,eAYLn7B,EAAQm6B,cACbx4B,EAAOqzB,UAAU1hB,SAAW,CAC3B/Q,IAAK,SAAUU,GAIViP,EAASjP,EAAK1B,WAIlB,OAHK2Q,GAAUA,EAAO3Q,YACrB2Q,EAAO3Q,WAAWgS,cAEZ,MAER8M,IAAK,SAAUpd,GAIViP,EAASjP,EAAK1B,WACb2Q,IACJA,EAAOqB,cAEFrB,EAAO3Q,YACX2Q,EAAO3Q,WAAWgS,kBAOvB5R,EAAOmB,KAAM,CACZ,WACA,WACA,YACA,cACA,cACA,UACA,UACA,SACA,cACA,mBACE,WACFnB,EAAOw5B,QAAS74B,KAAKgE,eAAkBhE,OA4BxCX,EAAOG,GAAGiC,OAAQ,CACjBs3B,SAAU,SAAUr1B,GACnB,IAAIs1B,EAASr4B,EAAMkK,EAAeouB,EAAO53B,EAAG63B,EAC3C16B,EAAI,EAEL,GAAKb,EAAY+F,GAChB,OAAO1D,KAAKQ,KAAM,SAAUa,GAC3BhC,EAAQW,MAAO+4B,SAAUr1B,EAAM3G,KAAMiD,KAAMqB,EAAGq3B,GAAU14B,UAM1D,IAFAg5B,EAAUL,GAAgBj1B,IAEb/D,OACZ,KAAUgB,EAAOX,KAAMxB,MAItB,GAHA26B,EAAWT,GAAU/3B,GACrBkK,EAAwB,IAAlBlK,EAAK/C,UAAoB,IAAM66B,GAAkBU,GAAa,IAEzD,CAEV,IADA93B,EAAI,EACM43B,EAAQD,EAAS33B,MACrBwJ,EAAI1N,QAAS,IAAM87B,EAAQ,KAAQ,IACvCpuB,GAAOouB,EAAQ,KAMZE,KADLD,EAAaT,GAAkB5tB,KAE9BlK,EAAK7B,aAAc,QAASo6B,GAMhC,OAAOl5B,MAGRo5B,YAAa,SAAU11B,GACtB,IAAIs1B,EAASr4B,EAAMkK,EAAeouB,EAAO53B,EAAG63B,EAC3C16B,EAAI,EAEL,GAAKb,EAAY+F,GAChB,OAAO1D,KAAKQ,KAAM,SAAUa,GAC3BhC,EAAQW,MAAOo5B,YAAa11B,EAAM3G,KAAMiD,KAAMqB,EAAGq3B,GAAU14B,UAI7D,IAAMY,UAAUjB,OACf,OAAOK,KAAK4N,KAAM,QAAS,IAK5B,IAFAorB,EAAUL,GAAgBj1B,IAEb/D,OACZ,KAAUgB,EAAOX,KAAMxB,MAMtB,GALA26B,EAAWT,GAAU/3B,GAGrBkK,EAAwB,IAAlBlK,EAAK/C,UAAoB,IAAM66B,GAAkBU,GAAa,IAEzD,CAEV,IADA93B,EAAI,EACM43B,EAAQD,EAAS33B,MAG1B,MAA4C,EAApCwJ,EAAI1N,QAAS,IAAM87B,EAAQ,MAClCpuB,EAAMA,EAAIrI,QAAS,IAAMy2B,EAAQ,IAAK,KAMnCE,KADLD,EAAaT,GAAkB5tB,KAE9BlK,EAAK7B,aAAc,QAASo6B,GAMhC,OAAOl5B,MAGRq5B,YAAa,SAAU31B,EAAO41B,GAC7B,IAAIt7B,OAAA,IAAc0F,EAAd,eAAcA,GACjB61B,EAAwB,WAATv7B,GAAqBkE,MAAMC,QAASuB,GAEpD,MAAyB,kBAAb41B,GAA0BC,EAC9BD,EAAWt5B,KAAK+4B,SAAUr1B,GAAU1D,KAAKo5B,YAAa11B,GAGzD/F,EAAY+F,GACT1D,KAAKQ,KAAM,SAAUhC,GAC3Ba,EAAQW,MAAOq5B,YACd31B,EAAM3G,KAAMiD,KAAMxB,EAAGk6B,GAAU14B,MAAQs5B,GACvCA,KAKIt5B,KAAKQ,KAAM,WACjB,IAAIsL,EAAWtN,EAAGqX,EAAM2jB,EAExB,GAAKD,EAOJ,IAJA/6B,EAAI,EACJqX,EAAOxW,EAAQW,MACfw5B,EAAab,GAAgBj1B,GAEnBoI,EAAY0tB,EAAYh7B,MAG5BqX,EAAK4jB,SAAU3tB,GACnB+J,EAAKujB,YAAattB,GAElB+J,EAAKkjB,SAAUjtB,aAKI1J,IAAVsB,GAAgC,YAAT1F,KAClC8N,EAAY4sB,GAAU14B,QAIrBme,EAASJ,IAAK/d,KAAM,gBAAiB8L,GAOjC9L,KAAKlB,cACTkB,KAAKlB,aAAc,SAClBgN,IAAuB,IAAVpI,GAEZya,EAASle,IAAKD,KAAM,kBADpB,QAQNy5B,SAAU,SAAUn6B,GAKnB,IAJA,IAAeqB,EACdnC,EAAI,EAELsN,EAAY,IAAMxM,EAAW,IACnBqB,EAAOX,KAAMxB,MACtB,GAAuB,IAAlBmC,EAAK/C,WACoE,GAA3E,IAAM66B,GAAkBC,GAAU/3B,IAAW,KAAMxD,QAAS2O,GAC9D,OAAO,EAIT,OAAO,KAOT,IAAI4tB,GAAU,MAEdr6B,EAAOG,GAAGiC,OAAQ,CACjBhD,IAAK,SAAUiF,GACd,IAAIqb,EAAO1e,EAAKyqB,EACfnqB,EAAOX,KAAM,GAEd,OAAMY,UAAUjB,QA0BhBmrB,EAAkBntB,EAAY+F,GAEvB1D,KAAKQ,KAAM,SAAUhC,GAGJ,IAAlBwB,KAAKpC,WAWE,OANXa,EADIqsB,EACEpnB,EAAM3G,KAAMiD,KAAMxB,EAAGa,EAAQW,MAAOvB,OAEpCiF,GAKNjF,EAAM,GAEoB,iBAARA,EAClBA,GAAO,GAEIyD,MAAMC,QAAS1D,KAC1BA,EAAMY,EAAOqB,IAAKjC,EAAK,SAAUiF,GAChC,OAAgB,MAATA,EAAgB,GAAKA,EAAQ,OAItCqb,EAAQ1f,EAAOs6B,SAAU35B,KAAKhC,OAAUqB,EAAOs6B,SAAU35B,KAAKoI,SAASpE,iBAGrD,QAAS+a,QAA+C3c,IAApC2c,EAAMhB,IAAK/d,KAAMvB,EAAK,WAC3DuB,KAAK0D,MAAQjF,OAzDTkC,GACJoe,EAAQ1f,EAAOs6B,SAAUh5B,EAAK3C,OAC7BqB,EAAOs6B,SAAUh5B,EAAKyH,SAASpE,iBAG/B,QAAS+a,QACgC3c,KAAvC/B,EAAM0e,EAAM9e,IAAKU,EAAM,UAElBN,EAMY,iBAHpBA,EAAMM,EAAK+C,OAIHrD,EAAImC,QAASk3B,GAAS,IAIhB,MAAPr5B,EAAc,GAAKA,OAG3B,KAyCHhB,EAAOoC,OAAQ,CACdk4B,SAAU,CACThY,OAAQ,CACP1hB,IAAK,SAAUU,GAEd,IAAIlC,EAAMY,EAAO+M,KAAKwB,KAAMjN,EAAM,SAClC,OAAc,MAAPlC,EACNA,EAMAg6B,GAAkBp5B,EAAOT,KAAM+B,MAGlCoE,OAAQ,CACP9E,IAAK,SAAUU,GAgBd,IAfA,IAAWghB,EACVjgB,EAAUf,EAAKe,QACfkV,EAAQjW,EAAKsQ,cACb4S,EAAoB,eAAdljB,EAAK3C,KACX+iB,EAAS8C,EAAM,KAAO,GACtB4M,EAAM5M,EAAMjN,EAAQ,EAAIlV,EAAQ/B,OAGhCnB,EADIoY,EAAQ,EACR6Z,EAGA5M,EAAMjN,EAAQ,EAIXpY,EAAIiyB,EAAKjyB,IAKhB,KAJAmjB,EAASjgB,EAASlD,IAIJwS,UAAYxS,IAAMoY,KAG7B+K,EAAOxZ,YACLwZ,EAAO1iB,WAAWkJ,WACnBC,EAAUuZ,EAAO1iB,WAAY,aAAiB,CAMjD,GAHAyE,EAAQrE,EAAQsiB,GAASljB,MAGpBolB,EACJ,OAAOngB,EAIRqd,EAAO7jB,KAAMwG,GAIf,OAAOqd,GAGRhD,IAAK,SAAUpd,EAAM+C,GAMpB,IALA,IAAIk2B,EAAWjY,EACdjgB,EAAUf,EAAKe,QACfqf,EAAS1hB,EAAO6D,UAAWQ,GAC3BlF,EAAIkD,EAAQ/B,OAELnB,OACPmjB,EAASjgB,EAASlD,IAINwS,UACuD,EAAlE3R,EAAO+D,QAAS/D,EAAOs6B,SAAShY,OAAO1hB,IAAK0hB,GAAUZ,MAEtD6Y,GAAY,GAUd,OAHMA,IACLj5B,EAAKsQ,eAAiB,GAEhB8P,OAOX1hB,EAAOmB,KAAM,CAAE,QAAS,YAAc,WACrCnB,EAAOs6B,SAAU35B,MAAS,CACzB+d,IAAK,SAAUpd,EAAM+C,GACpB,GAAKxB,MAAMC,QAASuB,GACnB,OAAS/C,EAAKoQ,SAA2D,EAAjD1R,EAAO+D,QAAS/D,EAAQsB,GAAOlC,MAAOiF,KAI3DhG,EAAQk6B,UACbv4B,EAAOs6B,SAAU35B,MAAOC,IAAM,SAAUU,GACvC,OAAwC,OAAjCA,EAAK9B,aAAc,SAAqB,KAAO8B,EAAK+C,UAW9DhG,EAAQm8B,QAAU,cAAez9B,EAIN,SAA1B09B,GAAoCtxB,GACnCA,EAAE8b,kBAFJ,IAAIyV,GAAc,kCAKlB16B,EAAOoC,OAAQpC,EAAO0kB,MAAO,CAE5BU,QAAS,SAAUV,EAAO/F,EAAMrd,EAAMq5B,GAErC,IAAIx7B,EAAQ+N,EAAK0tB,EAAYC,EAAQ9U,EAAQ3K,EAAS0f,EACrDC,EAAY,CAAEz5B,GAAQ7C,GACtBE,EAAOV,EAAOP,KAAMgnB,EAAO,QAAWA,EAAM/lB,KAAO+lB,EACnDiB,EAAa1nB,EAAOP,KAAMgnB,EAAO,aAAgBA,EAAMzY,UAAUxH,MAAO,KAAQ,GAEjF+G,EAAMsvB,EAAc5tB,EAAM5L,EAAOA,GAAQ7C,EAGzC,GAAuB,IAAlB6C,EAAK/C,UAAoC,IAAlB+C,EAAK/C,WAK5Bm8B,GAAYvwB,KAAMxL,EAAOqB,EAAO0kB,MAAMsB,cAIf,EAAvBrnB,EAAKb,QAAS,OAIlBa,GADAgnB,EAAahnB,EAAK8F,MAAO,MACPsG,QAClB4a,EAAWzjB,QAEZ24B,EAASl8B,EAAKb,QAAS,KAAQ,GAAK,KAAOa,GAG3C+lB,EAAQA,EAAO1kB,EAAOgD,SACrB0hB,EACA,IAAI1kB,EAAOqlB,MAAO1mB,EAAuB,iBAAjB,IAAO+lB,EAAP,eAAOA,KAAsBA,IAGhDK,UAAY4V,EAAe,EAAI,EACrCjW,EAAMzY,UAAY0Z,EAAWpb,KAAM,KACnCma,EAAMwC,WAAaxC,EAAMzY,UACxB,IAAIzE,OAAQ,UAAYme,EAAWpb,KAAM,iBAAoB,WAC7D,KAGDma,EAAM/U,YAAS5M,EACT2hB,EAAMhiB,SACXgiB,EAAMhiB,OAASpB,GAIhBqd,EAAe,MAARA,EACN,CAAE+F,GACF1kB,EAAO6D,UAAW8a,EAAM,CAAE+F,IAG3BtJ,EAAUpb,EAAO0kB,MAAMtJ,QAASzc,IAAU,GACpCg8B,IAAgBvf,EAAQgK,UAAmD,IAAxChK,EAAQgK,QAAQxnB,MAAO0D,EAAMqd,IAAtE,CAMA,IAAMgc,IAAiBvf,EAAQyM,WAAa5qB,EAAUqE,GAAS,CAM9D,IAJAs5B,EAAaxf,EAAQ4J,cAAgBrmB,EAC/B+7B,GAAYvwB,KAAMywB,EAAaj8B,KACpC6M,EAAMA,EAAI5L,YAEH4L,EAAKA,EAAMA,EAAI5L,WACtBm7B,EAAUl9B,KAAM2N,GAChB0B,EAAM1B,EAIF0B,KAAU5L,EAAKqI,eAAiBlL,IACpCs8B,EAAUl9B,KAAMqP,EAAIb,aAAea,EAAI8tB,cAAgBj+B,GAMzD,IADAoC,EAAI,GACMqM,EAAMuvB,EAAW57B,QAAYulB,EAAMqC,wBAC5C+T,EAActvB,EACdkZ,EAAM/lB,KAAW,EAAJQ,EACZy7B,EACAxf,EAAQ8K,UAAYvnB,GAGrBonB,GAAWjH,EAASle,IAAK4K,EAAK,WAAcnO,OAAOyoB,OAAQ,OAAUpB,EAAM/lB,OAC1EmgB,EAASle,IAAK4K,EAAK,YAEnBua,EAAOnoB,MAAO4N,EAAKmT,IAIpBoH,EAAS8U,GAAUrvB,EAAKqvB,KACT9U,EAAOnoB,OAASwgB,EAAY5S,KAC1CkZ,EAAM/U,OAASoW,EAAOnoB,MAAO4N,EAAKmT,IACZ,IAAjB+F,EAAM/U,QACV+U,EAAMS,kBA8CT,OA1CAT,EAAM/lB,KAAOA,EAGPg8B,GAAiBjW,EAAMwD,sBAEpB9M,EAAQwH,WACqC,IAApDxH,EAAQwH,SAAShlB,MAAOm9B,EAAUh0B,MAAO4X,KACzCP,EAAY9c,IAIPu5B,GAAUv8B,EAAYgD,EAAM3C,MAAa1B,EAAUqE,MAGvD4L,EAAM5L,EAAMu5B,MAGXv5B,EAAMu5B,GAAW,MAIlB76B,EAAO0kB,MAAMsB,UAAYrnB,EAEpB+lB,EAAMqC,wBACV+T,EAAYvuB,iBAAkB5N,EAAM87B,IAGrCn5B,EAAM3C,KAED+lB,EAAMqC,wBACV+T,EAAY9d,oBAAqBre,EAAM87B,IAGxCz6B,EAAO0kB,MAAMsB,eAAYjjB,EAEpBmK,IACJ5L,EAAMu5B,GAAW3tB,IAMdwX,EAAM/U,SAKdsrB,SAAU,SAAUt8B,EAAM2C,EAAMojB,GAC3Bvb,EAAInJ,EAAOoC,OACd,IAAIpC,EAAOqlB,MACXX,EACA,CACC/lB,KAAMA,EACN4pB,aAAa,IAIfvoB,EAAO0kB,MAAMU,QAASjc,EAAG,KAAM7H,MAKjCtB,EAAOG,GAAGiC,OAAQ,CAEjBgjB,QAAS,SAAUzmB,EAAMggB,GACxB,OAAOhe,KAAKQ,KAAM,WACjBnB,EAAO0kB,MAAMU,QAASzmB,EAAMggB,EAAMhe,SAGpCu6B,eAAgB,SAAUv8B,EAAMggB,GAC/B,IAAIrd,EAAOX,KAAM,GACjB,GAAKW,EACJ,OAAOtB,EAAO0kB,MAAMU,QAASzmB,EAAMggB,EAAMrd,GAAM,MAc5CjD,EAAQm8B,SACbx6B,EAAOmB,KAAM,CAAEgpB,MAAO,UAAWC,KAAM,YAAc,SAAUK,EAAM7D,GAGtD,SAAVvb,EAAoBqZ,GACvB1kB,EAAO0kB,MAAMuW,SAAUrU,EAAKlC,EAAMhiB,OAAQ1C,EAAO0kB,MAAMkC,IAAKlC,IAG7D1kB,EAAO0kB,MAAMtJ,QAASwL,GAAQ,CAC7BP,MAAO,WAIN,IAAInnB,EAAMyB,KAAKgJ,eAAiBhJ,KAAKlC,UAAYkC,KAChDw6B,EAAWrc,EAASxB,OAAQpe,EAAK0nB,GAE5BuU,GACLj8B,EAAIqN,iBAAkBke,EAAMpf,GAAS,GAEtCyT,EAASxB,OAAQpe,EAAK0nB,GAAOuU,GAAY,GAAM,IAEhD3U,SAAU,WACT,IAAItnB,EAAMyB,KAAKgJ,eAAiBhJ,KAAKlC,UAAYkC,KAChDw6B,EAAWrc,EAASxB,OAAQpe,EAAK0nB,GAAQ,EAEpCuU,EAKLrc,EAASxB,OAAQpe,EAAK0nB,EAAKuU,IAJ3Bj8B,EAAI8d,oBAAqByN,EAAMpf,GAAS,GACxCyT,EAASjF,OAAQ3a,EAAK0nB,QAS3B,IAAIvV,GAAWtU,EAAOsU,SAElBxS,GAAQ,CAAEyF,KAAM6B,KAAKmiB,OAErB8S,GAAW,KAKfp7B,EAAOq7B,SAAW,SAAU1c,GAC3B,IAAIzO,EAAKorB,EACT,IAAM3c,GAAwB,iBAATA,EACpB,OAAO,KAKR,IACCzO,GAAQ,IAAInT,EAAOw+B,WAAcC,gBAAiB7c,EAAM,YACvD,MAAQxV,IAYV,OAVAmyB,EAAkBprB,GAAOA,EAAIlG,qBAAsB,eAAiB,GAC9DkG,IAAOorB,GACZt7B,EAAOqD,MAAO,iBACbi4B,EACCt7B,EAAOqB,IAAKi6B,EAAgBpyB,WAAY,SAAUgC,GACjD,OAAOA,EAAG4D,cACPvE,KAAM,MACVoU,IAGIzO,GAIR,IACCurB,GAAW,QACXC,GAAQ,SACRC,GAAkB,wCAClBC,GAAe,qCA0ChB57B,EAAO67B,MAAQ,SAAUh1B,EAAGi1B,GAGpB,SAANrkB,EAAgB5M,EAAKkxB,GAGhB13B,EAAQ/F,EAAYy9B,GACvBA,IACAA,EAEDC,EAAGA,EAAE17B,QAAW27B,mBAAoBpxB,GAAQ,IAC3CoxB,mBAA6B,MAAT53B,EAAgB,GAAKA,GAV5C,IAAI2uB,EACHgJ,EAAI,GAYL,GAAU,MAALn1B,EACJ,MAAO,GAIR,GAAKhE,MAAMC,QAAS+D,IAASA,EAAErG,SAAWR,EAAO4C,cAAeiE,GAG/D7G,EAAOmB,KAAM0F,EAAG,WACf4Q,EAAK9W,KAAK2B,KAAM3B,KAAK0D,cAOtB,IAAM2uB,KAAUnsB,GAtElB,SAASq1B,EAAalJ,EAAQ91B,EAAK4+B,EAAarkB,GAG/C,GAAK5U,MAAMC,QAAS5F,GAGnB8C,EAAOmB,KAAMjE,EAAK,SAAUiC,EAAGkZ,GACzByjB,GAAeL,GAAStxB,KAAM6oB,GAGlCvb,EAAKub,EAAQ3a,GAKb6jB,EACClJ,EAAS,KAAqB,iBAAb,IAAO3a,EAAP,eAAOA,KAAuB,MAALA,EAAYlZ,EAAI,IAAO,IACjEkZ,EACAyjB,EACArkB,UAKG,GAAMqkB,GAAiC,WAAlBh8B,EAAQ5C,GAUnCua,EAAKub,EAAQ91B,QAPb,IA1BD,IAAIoF,KA0BWpF,EACbg/B,EAAalJ,EAAS,IAAM1wB,EAAO,IAAKpF,EAAKoF,GAAQw5B,EAAarkB,GA2ClEykB,CAAalJ,EAAQnsB,EAAGmsB,GAAU8I,EAAarkB,GAKjD,OAAOukB,EAAEzxB,KAAM,MAGhBvK,EAAOG,GAAGiC,OAAQ,CACjB+5B,UAAW,WACV,OAAOn8B,EAAO67B,MAAOl7B,KAAKy7B,mBAE3BA,eAAgB,WACf,OAAOz7B,KAAKU,IAAK,WAGhB,IAAIiN,EAAWtO,EAAO4e,KAAMje,KAAM,YAClC,OAAO2N,EAAWtO,EAAO6D,UAAWyK,GAAa3N,OAC9CkM,OAAQ,WACX,IAAIlO,EAAOgC,KAAKhC,KAGhB,OAAOgC,KAAK2B,OAAStC,EAAQW,MAAOoV,GAAI,cACvC6lB,GAAazxB,KAAMxJ,KAAKoI,YAAe4yB,GAAgBxxB,KAAMxL,KAC3DgC,KAAK+Q,UAAYoQ,GAAe3X,KAAMxL,MACtC0C,IAAK,SAAUqD,EAAIpD,GACtB,IAAIlC,EAAMY,EAAQW,MAAOvB,MAEzB,OAAY,MAAPA,EACG,KAGHyD,MAAMC,QAAS1D,GACZY,EAAOqB,IAAKjC,EAAK,SAAUA,GACjC,MAAO,CAAEkD,KAAMhB,EAAKgB,KAAM+B,MAAOjF,EAAI+D,QAASu4B,GAAO,WAIhD,CAAEp5B,KAAMhB,EAAKgB,KAAM+B,MAAOjF,EAAI+D,QAASu4B,GAAO,WAClD96B,SAKN,IACCy7B,GAAM,OACNC,GAAQ,OACRC,GAAa,gBACbC,GAAW,6BAIXC,GAAa,iBACbC,GAAY,QAWZpH,GAAa,GAObqH,GAAa,GAGbC,GAAW,KAAKj/B,OAAQ,KAGxBk/B,GAAep+B,EAASa,cAAe,KAKxC,SAASw9B,GAA6BC,GAGrC,OAAO,SAAUC,EAAoB7iB,GAED,iBAAvB6iB,IACX7iB,EAAO6iB,EACPA,EAAqB,KAGtB,IAAIC,EACH99B,EAAI,EACJ+9B,EAAYF,EAAmBr4B,cAAc4E,MAAO4O,IAAmB,GAExE,GAAK7Z,EAAY6b,GAGhB,KAAU8iB,EAAWC,EAAW/9B,MAGR,MAAlB89B,EAAU,IACdA,EAAWA,EAAS1/B,MAAO,IAAO,KAChCw/B,EAAWE,GAAaF,EAAWE,IAAc,IAAK7uB,QAAS+L,KAI/D4iB,EAAWE,GAAaF,EAAWE,IAAc,IAAKp/B,KAAMsc,IAQnE,SAASgjB,GAA+BJ,EAAW16B,EAASwzB,EAAiBuH,GAE5E,IAAIC,EAAY,GACfC,EAAqBP,IAAcJ,GAEpC,SAASY,EAASN,GACjB,IAAItrB,EAcJ,OAbA0rB,EAAWJ,IAAa,EACxBj9B,EAAOmB,KAAM47B,EAAWE,IAAc,GAAI,SAAU/jB,EAAGskB,GAClDC,EAAsBD,EAAoBn7B,EAASwzB,EAAiBuH,GACxE,MAAoC,iBAAxBK,GACVH,GAAqBD,EAAWI,GAKtBH,IACD3rB,EAAW8rB,QADf,GAHNp7B,EAAQ66B,UAAU9uB,QAASqvB,GAC3BF,EAASE,IACF,KAKF9rB,EAGR,OAAO4rB,EAASl7B,EAAQ66B,UAAW,MAAUG,EAAW,MAASE,EAAS,KAM3E,SAASG,GAAYh7B,EAAQ9D,GAC5B,IAAIiM,EAAKlI,EACRg7B,EAAc39B,EAAO49B,aAAaD,aAAe,GAElD,IAAM9yB,KAAOjM,OACQmE,IAAfnE,EAAKiM,MACP8yB,EAAa9yB,GAAQnI,EAAqBC,EAAVA,GAAiB,IAAUkI,GAAQjM,EAAKiM,IAO5E,OAJKlI,GACJ3C,EAAOoC,QAAQ,EAAMM,EAAQC,GAGvBD,EA/ERm6B,GAAarrB,KAAOH,GAASG,KAgP7BxR,EAAOoC,OAAQ,CAGdy7B,OAAQ,EAGRC,aAAc,GACdC,KAAM,GAENH,aAAc,CACbI,IAAK3sB,GAASG,KACd7S,KAAM,MACNs/B,QAxRgB,4DAwRQ9zB,KAAMkH,GAAS6sB,UACvCrhC,QAAQ,EACRshC,aAAa,EACbC,OAAO,EACPC,YAAa,mDAcbC,QAAS,CACR,IAAK1B,GACLr9B,KAAM,aACNmsB,KAAM,YACNxb,IAAK,4BACLquB,KAAM,qCAGPvnB,SAAU,CACT9G,IAAK,UACLwb,KAAM,SACN6S,KAAM,YAGPC,eAAgB,CACftuB,IAAK,cACL3Q,KAAM,eACNg/B,KAAM,gBAKPE,WAAY,CAGX,SAAUx5B,OAGV,aAAa,EAGb,YAAaka,KAAKC,MAGlB,WAAYpf,EAAOq7B,UAOpBsC,YAAa,CACZK,KAAK,EACL99B,SAAS,IAOXw+B,UAAW,SAAUh8B,EAAQi8B,GAC5B,OAAOA,EAGNjB,GAAYA,GAAYh7B,EAAQ1C,EAAO49B,cAAgBe,GAGvDjB,GAAY19B,EAAO49B,aAAcl7B,IAGnCk8B,cAAe9B,GAA6BxH,IAC5CuJ,cAAe/B,GAA6BH,IAG5CmC,KAAM,SAAUd,EAAK37B,GAGA,iBAAf,IAAO27B,EAAP,eAAOA,MACX37B,EAAU27B,EACVA,OAAMj7B,GAMP,IAAIg8B,EAGHC,EAGAC,EACAC,EAGAC,EAMApiB,EAGAqiB,EAGAjgC,EAGAkgC,EAGArD,EAAIh8B,EAAO0+B,UAAW,GA9BvBr8B,EAAUA,GAAW,IAiCpBi9B,EAAkBtD,EAAE97B,SAAW87B,EAG/BuD,EAAqBvD,EAAE97B,UACpBo/B,EAAgB/gC,UAAY+gC,EAAgB9+B,QAC9CR,EAAQs/B,GACRt/B,EAAO0kB,MAGRnK,EAAWva,EAAOka,WAClBslB,EAAmBx/B,EAAOgZ,UAAW,eAGrCymB,EAAazD,EAAEyD,YAAc,GAG7BC,EAAiB,GACjBC,EAAsB,GAGtBC,EAAW,WAGXxC,EAAQ,CACPhgB,WAAY,EAGZyiB,kBAAmB,SAAUh1B,GAC5B,IAAItB,EACJ,GAAKwT,EAAY,CAChB,IAAMmiB,EAEL,IADAA,EAAkB,GACR31B,EAAQizB,GAAS5yB,KAAMq1B,IAChCC,EAAiB31B,EAAO,GAAI5E,cAAgB,MACzCu6B,EAAiB31B,EAAO,GAAI5E,cAAgB,MAAS,IACrDhH,OAAQ4L,EAAO,IAGpBA,EAAQ21B,EAAiBr0B,EAAIlG,cAAgB,KAE9C,OAAgB,MAAT4E,EAAgB,KAAOA,EAAMgB,KAAM,OAI3Cu1B,sBAAuB,WACtB,OAAO/iB,EAAYkiB,EAAwB,MAI5Cc,iBAAkB,SAAUz9B,EAAM+B,GAMjC,OALkB,MAAb0Y,IACJza,EAAOq9B,EAAqBr9B,EAAKqC,eAChCg7B,EAAqBr9B,EAAKqC,gBAAmBrC,EAC9Co9B,EAAgBp9B,GAAS+B,GAEnB1D,MAIRq/B,iBAAkB,SAAUrhC,GAI3B,OAHkB,MAAboe,IACJif,EAAEiE,SAAWthC,GAEPgC,MAIR8+B,WAAY,SAAUp+B,GAErB,GAAKA,EACJ,GAAK0b,EAGJqgB,EAAM9iB,OAAQjZ,EAAK+7B,EAAM8C,cAIzB,IATF,IAAIlhC,KASYqC,EACbo+B,EAAYzgC,GAAS,CAAEygC,EAAYzgC,GAAQqC,EAAKrC,IAInD,OAAO2B,MAIRw/B,MAAO,SAAUC,GACZC,EAAYD,GAAcR,EAK9B,OAJKb,GACJA,EAAUoB,MAAOE,GAElB/5B,EAAM,EAAG+5B,GACF1/B,OAoBV,GAfA4Z,EAAS1B,QAASukB,GAKlBpB,EAAEgC,MAAUA,GAAOhC,EAAEgC,KAAO3sB,GAASG,MAAS,IAC5CrO,QAASu5B,GAAWrrB,GAAS6sB,SAAW,MAG1ClC,EAAEr9B,KAAO0D,EAAQuW,QAAUvW,EAAQ1D,MAAQq9B,EAAEpjB,QAAUojB,EAAEr9B,KAGzDq9B,EAAEkB,WAAclB,EAAEiB,UAAY,KAAMt4B,cAAc4E,MAAO4O,IAAmB,CAAE,IAGxD,MAAjB6jB,EAAEsE,YAAsB,CAC5BC,EAAY9hC,EAASa,cAAe,KAKpC,IACCihC,EAAU/uB,KAAOwqB,EAAEgC,IAInBuC,EAAU/uB,KAAO+uB,EAAU/uB,KAC3BwqB,EAAEsE,YAAczD,GAAaqB,SAAW,KAAOrB,GAAa2D,MAC3DD,EAAUrC,SAAW,KAAOqC,EAAUC,KACtC,MAAQr3B,GAIT6yB,EAAEsE,aAAc,GAalB,GARKtE,EAAErd,MAAQqd,EAAEmC,aAAiC,iBAAXnC,EAAErd,OACxCqd,EAAErd,KAAO3e,EAAO67B,MAAOG,EAAErd,KAAMqd,EAAEF,cAIlCqB,GAA+B7H,GAAY0G,EAAG35B,EAAS+6B,GAGlDrgB,EACJ,OAAOqgB,EA8ER,IAAMj+B,KAzENigC,EAAcp/B,EAAO0kB,OAASsX,EAAEn/B,SAGQ,GAApBmD,EAAO69B,UAC1B79B,EAAO0kB,MAAMU,QAAS,aAIvB4W,EAAEr9B,KAAOq9B,EAAEr9B,KAAKsf,cAGhB+d,EAAEyE,YAAchE,GAAWtyB,KAAM6xB,EAAEr9B,MAKnCqgC,EAAWhD,EAAEgC,IAAI76B,QAASm5B,GAAO,IAG3BN,EAAEyE,WAwBIzE,EAAErd,MAAQqd,EAAEmC,aACoD,KAAzEnC,EAAEqC,aAAe,IAAKvgC,QAAS,uCACjCk+B,EAAErd,KAAOqd,EAAErd,KAAKxb,QAASk5B,GAAK,OAvB9BgD,EAAWrD,EAAEgC,IAAIzgC,MAAOyhC,EAAS1+B,QAG5B07B,EAAErd,OAAUqd,EAAEmC,aAAiC,iBAAXnC,EAAErd,QAC1CqgB,IAAc5D,GAAOjxB,KAAM60B,GAAa,IAAM,KAAQhD,EAAErd,YAGjDqd,EAAErd,OAIO,IAAZqd,EAAEpxB,QACNo0B,EAAWA,EAAS77B,QAASo5B,GAAY,MACzC8C,GAAajE,GAAOjxB,KAAM60B,GAAa,IAAM,KAAQ,KAASngC,GAAMyF,OACnE+6B,GAIFrD,EAAEgC,IAAMgB,EAAWK,GASfrD,EAAE0E,aACD1gC,EAAO89B,aAAckB,IACzB5B,EAAM2C,iBAAkB,oBAAqB//B,EAAO89B,aAAckB,IAE9Dh/B,EAAO+9B,KAAMiB,IACjB5B,EAAM2C,iBAAkB,gBAAiB//B,EAAO+9B,KAAMiB,MAKnDhD,EAAErd,MAAQqd,EAAEyE,aAAgC,IAAlBzE,EAAEqC,aAAyBh8B,EAAQg8B,cACjEjB,EAAM2C,iBAAkB,eAAgB/D,EAAEqC,aAI3CjB,EAAM2C,iBACL,SACA/D,EAAEkB,UAAW,IAAOlB,EAAEsC,QAAStC,EAAEkB,UAAW,IAC3ClB,EAAEsC,QAAStC,EAAEkB,UAAW,KACA,MAArBlB,EAAEkB,UAAW,GAAc,KAAON,GAAW,WAAa,IAC7DZ,EAAEsC,QAAS,MAIFtC,EAAE2E,QACZvD,EAAM2C,iBAAkB5gC,EAAG68B,EAAE2E,QAASxhC,IAIvC,GAAK68B,EAAE4E,cAC+C,IAAnD5E,EAAE4E,WAAWljC,KAAM4hC,EAAiBlC,EAAOpB,IAAiBjf,GAG9D,OAAOqgB,EAAM+C,QAed,GAXAP,EAAW,QAGXJ,EAAiB/nB,IAAKukB,EAAE/F,UACxBmH,EAAM92B,KAAM01B,EAAE6E,SACdzD,EAAMtkB,KAAMkjB,EAAE34B,OAGd07B,EAAY5B,GAA+BR,GAAYX,EAAG35B,EAAS+6B,GAK5D,CASN,GARAA,EAAMhgB,WAAa,EAGdgiB,GACJG,EAAmBna,QAAS,WAAY,CAAEgY,EAAOpB,IAI7Cjf,EACJ,OAAOqgB,EAIHpB,EAAEoC,OAAqB,EAAZpC,EAAE3D,UACjB8G,EAAepiC,EAAOgf,WAAY,WACjCqhB,EAAM+C,MAAO,YACXnE,EAAE3D,UAGN,IACCtb,GAAY,EACZgiB,EAAU+B,KAAMpB,EAAgBp5B,GAC/B,MAAQ6C,GAGT,GAAK4T,EACJ,MAAM5T,EAIP7C,GAAO,EAAG6C,SAhCX7C,GAAO,EAAG,gBAqCX,SAASA,EAAM45B,EAAQa,EAAkBC,EAAWL,GACnD,IAAeE,EAASx9B,EAAO49B,EAC9Bb,EAAaW,EAGThkB,IAILA,GAAY,EAGPoiB,GACJpiC,EAAOu7B,aAAc6G,GAKtBJ,OAAYh8B,EAGZk8B,EAAwB0B,GAAW,GAGnCvD,EAAMhgB,WAAsB,EAAT8iB,EAAa,EAAI,EAGpCgB,EAAsB,KAAVhB,GAAiBA,EAAS,KAAkB,MAAXA,EAGxCc,IACJC,EA7lBJ,SAA8BjF,EAAGoB,EAAO4D,GAOvC,IALA,IAAIG,EAAIxiC,EAAMyiC,EAAeC,EAC5BrqB,EAAWglB,EAAEhlB,SACbkmB,EAAYlB,EAAEkB,UAGY,MAAnBA,EAAW,IAClBA,EAAUnyB,aACEhI,IAAPo+B,IACJA,EAAKnF,EAAEiE,UAAY7C,EAAMyC,kBAAmB,iBAK9C,GAAKsB,EACJ,IAAMxiC,KAAQqY,EACb,GAAKA,EAAUrY,IAAUqY,EAAUrY,GAAOwL,KAAMg3B,GAAO,CACtDjE,EAAU9uB,QAASzP,GACnB,MAMH,GAAKu+B,EAAW,KAAO8D,EACtBI,EAAgBlE,EAAW,OACrB,CAGN,IAAMv+B,KAAQqiC,EAAY,CACzB,IAAM9D,EAAW,IAAOlB,EAAEyC,WAAY9/B,EAAO,IAAMu+B,EAAW,IAAQ,CACrEkE,EAAgBziC,EAChB,MAGA0iC,EADKA,GACW1iC,EAKlByiC,EAAgBA,GAAiBC,EAMlC,GAAKD,EAIJ,OAHKA,IAAkBlE,EAAW,IACjCA,EAAU9uB,QAASgzB,GAEbJ,EAAWI,GA0iBLE,CAAqBtF,EAAGoB,EAAO4D,KAIrCE,IACsC,EAA3ClhC,EAAO+D,QAAS,SAAUi4B,EAAEkB,YAC5Bl9B,EAAO+D,QAAS,OAAQi4B,EAAEkB,WAAc,IACxClB,EAAEyC,WAAY,eAAkB,cAIjCwC,EA9iBH,SAAsBjF,EAAGiF,EAAU7D,EAAO8D,GACzC,IAAIK,EAAOC,EAASC,EAAMv0B,EAAK+J,EAC9BwnB,EAAa,GAGbvB,EAAYlB,EAAEkB,UAAU3/B,QAGzB,GAAK2/B,EAAW,GACf,IAAMuE,KAAQzF,EAAEyC,WACfA,EAAYgD,EAAK98B,eAAkBq3B,EAAEyC,WAAYgD,GAOnD,IAHAD,EAAUtE,EAAUnyB,QAGZy2B,GAcP,GAZKxF,EAAEwC,eAAgBgD,KACtBpE,EAAOpB,EAAEwC,eAAgBgD,IAAcP,IAIlChqB,GAAQiqB,GAAalF,EAAE0F,aAC5BT,EAAWjF,EAAE0F,WAAYT,EAAUjF,EAAEiB,WAGtChmB,EAAOuqB,EACPA,EAAUtE,EAAUnyB,QAKnB,GAAiB,MAAZy2B,EAEJA,EAAUvqB,OAGJ,GAAc,MAATA,GAAgBA,IAASuqB,EAAU,CAM9C,KAHAC,EAAOhD,EAAYxnB,EAAO,IAAMuqB,IAAa/C,EAAY,KAAO+C,IAI/D,IAAMD,KAAS9C,EAId,IADAvxB,EAAMq0B,EAAM98B,MAAO,MACT,KAAQ+8B,IAGjBC,EAAOhD,EAAYxnB,EAAO,IAAM/J,EAAK,KACpCuxB,EAAY,KAAOvxB,EAAK,KACb,EAGG,IAATu0B,EACJA,EAAOhD,EAAY8C,IAGgB,IAAxB9C,EAAY8C,KACvBC,EAAUt0B,EAAK,GACfgwB,EAAU9uB,QAASlB,EAAK,KAEzB,MAOJ,IAAc,IAATu0B,EAGJ,GAAKA,GAAQzF,EAAE2F,OACdV,EAAWQ,EAAMR,QAEjB,IACCA,EAAWQ,EAAMR,GAChB,MAAQ93B,GACT,MAAO,CACNkR,MAAO,cACPhX,MAAOo+B,EAAOt4B,EAAI,sBAAwB8N,EAAO,OAASuqB,IASjE,MAAO,CAAEnnB,MAAO,UAAWsE,KAAMsiB,GAidpBW,CAAa5F,EAAGiF,EAAU7D,EAAO8D,GAGvCA,GAGClF,EAAE0E,cACNmB,EAAWzE,EAAMyC,kBAAmB,oBAEnC7/B,EAAO89B,aAAckB,GAAa6C,IAEnCA,EAAWzE,EAAMyC,kBAAmB,WAEnC7/B,EAAO+9B,KAAMiB,GAAa6C,IAKZ,MAAX3B,GAA6B,SAAXlE,EAAEr9B,KACxByhC,EAAa,YAGS,MAAXF,EACXE,EAAa,eAIbA,EAAaa,EAAS5mB,MACtBwmB,EAAUI,EAAStiB,KAEnBuiB,IADA79B,EAAQ49B,EAAS59B,UAMlBA,EAAQ+8B,GACHF,GAAWE,IACfA,EAAa,QACRF,EAAS,IACbA,EAAS,KAMZ9C,EAAM8C,OAASA,EACf9C,EAAMgD,YAAeW,GAAoBX,GAAe,GAGnDc,EACJ3mB,EAASkB,YAAa6jB,EAAiB,CAAEuB,EAAST,EAAYhD,IAE9D7iB,EAASsB,WAAYyjB,EAAiB,CAAElC,EAAOgD,EAAY/8B,IAI5D+5B,EAAMqC,WAAYA,GAClBA,OAAa18B,EAERq8B,GACJG,EAAmBna,QAAS8b,EAAY,cAAgB,YACvD,CAAE9D,EAAOpB,EAAGkF,EAAYL,EAAUx9B,IAIpCm8B,EAAiBvlB,SAAUqlB,EAAiB,CAAElC,EAAOgD,IAEhDhB,IACJG,EAAmBna,QAAS,eAAgB,CAAEgY,EAAOpB,MAG3Ch8B,EAAO69B,QAChB79B,EAAO0kB,MAAMU,QAAS,cAKzB,OAAOgY,GAGR0E,QAAS,SAAU9D,EAAKrf,EAAMvd,GAC7B,OAAOpB,EAAOY,IAAKo9B,EAAKrf,EAAMvd,EAAU,SAGzC2gC,UAAW,SAAU/D,EAAK58B,GACzB,OAAOpB,EAAOY,IAAKo9B,OAAKj7B,EAAW3B,EAAU,aAI/CpB,EAAOmB,KAAM,CAAE,MAAO,QAAU,SAAUuD,EAAIkU,GAC7C5Y,EAAQ4Y,GAAW,SAAUolB,EAAKrf,EAAMvd,EAAUzC,GAUjD,OAPKL,EAAYqgB,KAChBhgB,EAAOA,GAAQyC,EACfA,EAAWud,EACXA,OAAO5b,GAID/C,EAAO8+B,KAAM9+B,EAAOoC,OAAQ,CAClC47B,IAAKA,EACLr/B,KAAMia,EACNqkB,SAAUt+B,EACVggB,KAAMA,EACNkiB,QAASz/B,GACPpB,EAAO4C,cAAeo7B,IAASA,OAIpCh+B,EAAO4+B,cAAe,SAAU5C,GAE/B,IADA,IAAI78B,KACO68B,EAAE2E,QACa,iBAApBxhC,EAAEwF,gBACNq3B,EAAEqC,YAAcrC,EAAE2E,QAASxhC,IAAO,MAMrCa,EAAO2rB,SAAW,SAAUqS,EAAK37B,EAASnD,GACzC,OAAOc,EAAO8+B,KAAM,CACnBd,IAAKA,EAGLr/B,KAAM,MACNs+B,SAAU,SACVryB,OAAO,EACPwzB,OAAO,EACPvhC,QAAQ,EAKR4hC,WAAY,CACX,cAAe,cAEhBiD,WAAY,SAAUT,GACrBjhC,EAAO4D,WAAYq9B,EAAU5+B,EAASnD,OAMzCc,EAAOG,GAAGiC,OAAQ,CACjB4/B,QAAS,SAAUtW,GA0BlB,OAvBK/qB,KAAM,KACLrC,EAAYotB,KAChBA,EAAOA,EAAKhuB,KAAMiD,KAAM,KAIzB+iB,EAAO1jB,EAAQ0rB,EAAM/qB,KAAM,GAAIgJ,eAAgBlI,GAAI,GAAIgB,OAAO,GAEzD9B,KAAM,GAAIf,YACd8jB,EAAK4I,aAAc3rB,KAAM,IAG1B+iB,EAAKriB,IAAK,WAGT,IAFA,IAAIC,EAAOX,KAEHW,EAAK2gC,mBACZ3gC,EAAOA,EAAK2gC,kBAGb,OAAO3gC,IACJ8qB,OAAQzrB,OAGNA,MAGRuhC,UAAW,SAAUxW,GACpB,OAAKptB,EAAYotB,GACT/qB,KAAKQ,KAAM,SAAUhC,GAC3Ba,EAAQW,MAAOuhC,UAAWxW,EAAKhuB,KAAMiD,KAAMxB,MAItCwB,KAAKQ,KAAM,WACjB,IAAIqV,EAAOxW,EAAQW,MAClBqW,EAAWR,EAAKQ,WAEZA,EAAS1W,OACb0W,EAASgrB,QAAStW,GAGlBlV,EAAK4V,OAAQV,MAKhBhI,KAAM,SAAUgI,GACf,IAAIyW,EAAiB7jC,EAAYotB,GAEjC,OAAO/qB,KAAKQ,KAAM,SAAUhC,GAC3Ba,EAAQW,MAAOqhC,QAASG,EAAiBzW,EAAKhuB,KAAMiD,KAAMxB,GAAMusB,MAIlE0W,OAAQ,SAAUniC,GAIjB,OAHAU,KAAK4P,OAAQtQ,GAAWsW,IAAK,QAASpV,KAAM,WAC3CnB,EAAQW,MAAO8rB,YAAa9rB,KAAKuI,cAE3BvI,QAKTX,EAAOqO,KAAK/G,QAAQmtB,OAAS,SAAUnzB,GACtC,OAAQtB,EAAOqO,KAAK/G,QAAQ+6B,QAAS/gC,IAEtCtB,EAAOqO,KAAK/G,QAAQ+6B,QAAU,SAAU/gC,GACvC,SAAWA,EAAKitB,aAAejtB,EAAK4uB,cAAgB5uB,EAAK2wB,iBAAiB3xB,SAM3EN,EAAO49B,aAAa0E,IAAM,WACzB,IACC,OAAO,IAAIvlC,EAAOwlC,eACjB,MAAQp5B,MAGX,IAAIq5B,GAAmB,CAGrBC,EAAG,IAIHC,KAAM,KAEPC,GAAe3iC,EAAO49B,aAAa0E,MAEpCjkC,EAAQukC,OAASD,IAAkB,oBAAqBA,GACxDtkC,EAAQygC,KAAO6D,KAAiBA,GAEhC3iC,EAAO6+B,cAAe,SAAUx8B,GAC/B,IAAIjB,EAAUyhC,EAGd,GAAKxkC,EAAQukC,MAAQD,KAAiBtgC,EAAQi+B,YAC7C,MAAO,CACNQ,KAAM,SAAUH,EAAS1K,GACxB,IAAI92B,EACHmjC,EAAMjgC,EAAQigC,MAWf,GATAA,EAAIQ,KACHzgC,EAAQ1D,KACR0D,EAAQ27B,IACR37B,EAAQ+7B,MACR/7B,EAAQ0gC,SACR1gC,EAAQ4P,UAIJ5P,EAAQ2gC,UACZ,IAAM7jC,KAAKkD,EAAQ2gC,UAClBV,EAAKnjC,GAAMkD,EAAQ2gC,UAAW7jC,GAmBhC,IAAMA,KAdDkD,EAAQ49B,UAAYqC,EAAItC,kBAC5BsC,EAAItC,iBAAkB39B,EAAQ49B,UAQzB59B,EAAQi+B,aAAgBK,EAAS,sBACtCA,EAAS,oBAAuB,kBAItBA,EACV2B,EAAIvC,iBAAkB5gC,EAAGwhC,EAASxhC,IAInCiC,EAAW,SAAUzC,GACpB,OAAO,WACDyC,IACJA,EAAWyhC,EAAgBP,EAAIW,OAC9BX,EAAIY,QAAUZ,EAAIa,QAAUb,EAAIc,UAC/Bd,EAAIe,mBAAqB,KAEb,UAAT1kC,EACJ2jC,EAAInC,QACgB,UAATxhC,EAKgB,iBAAf2jC,EAAIpC,OACfjK,EAAU,EAAG,SAEbA,EAGCqM,EAAIpC,OACJoC,EAAIlC,YAINnK,EACCuM,GAAkBF,EAAIpC,SAAYoC,EAAIpC,OACtCoC,EAAIlC,WAK+B,UAAjCkC,EAAIgB,cAAgB,SACM,iBAArBhB,EAAIiB,aACV,CAAEC,OAAQlB,EAAIrB,UACd,CAAE1hC,KAAM+iC,EAAIiB,cACbjB,EAAIxC,4BAQTwC,EAAIW,OAAS7hC,IACbyhC,EAAgBP,EAAIY,QAAUZ,EAAIc,UAAYhiC,EAAU,cAKnC2B,IAAhBu/B,EAAIa,QACRb,EAAIa,QAAUN,EAEdP,EAAIe,mBAAqB,WAGA,IAAnBf,EAAIllB,YAMRrgB,EAAOgf,WAAY,WACb3a,GACJyhC,OAQLzhC,EAAWA,EAAU,SAErB,IAGCkhC,EAAIxB,KAAMz+B,EAAQo+B,YAAcp+B,EAAQsc,MAAQ,MAC/C,MAAQxV,GAGT,GAAK/H,EACJ,MAAM+H,IAKTg3B,MAAO,WACD/+B,GACJA,QAWLpB,EAAO4+B,cAAe,SAAU5C,GAC1BA,EAAEsE,cACNtE,EAAEhlB,SAAS3X,QAAS,KAKtBW,EAAO0+B,UAAW,CACjBJ,QAAS,CACRj/B,OAAQ,6FAGT2X,SAAU,CACT3X,OAAQ,2BAETo/B,WAAY,CACX,cAAe,SAAUl/B,GAExB,OADAS,EAAO4D,WAAYrE,GACZA,MAMVS,EAAO4+B,cAAe,SAAU,SAAU5C,QACxBj5B,IAAZi5B,EAAEpxB,QACNoxB,EAAEpxB,OAAQ,GAENoxB,EAAEsE,cACNtE,EAAEr9B,KAAO,SAKXqB,EAAO6+B,cAAe,SAAU,SAAU7C,GAIxC,IAAI38B,EAAQ+B,EADb,GAAK46B,EAAEsE,aAAetE,EAAEyH,YAEvB,MAAO,CACN3C,KAAM,SAAU5nB,EAAG+c,GAClB52B,EAASW,EAAQ,YACfuO,KAAMytB,EAAEyH,aAAe,IACvB7kB,KAAM,CAAE8kB,QAAS1H,EAAE2H,cAAe/kC,IAAKo9B,EAAEgC,MACzC1Z,GAAI,aAAcljB,EAAW,SAAUwiC,GACvCvkC,EAAOwa,SACPzY,EAAW,KACNwiC,GACJ3N,EAAuB,UAAb2N,EAAIjlC,KAAmB,IAAM,IAAKilC,EAAIjlC,QAKnDF,EAASiB,KAAKC,YAAaN,EAAQ,KAEpC8gC,MAAO,WACD/+B,GACJA,QAUL,IAAIyiC,GAAe,GAClBC,GAAS,oBAGV9jC,EAAO0+B,UAAW,CACjBqF,MAAO,WACPC,cAAe,WACd,IAAI5iC,EAAWyiC,GAAa98B,OAAW/G,EAAOgD,QAAU,IAAQnE,GAAMyF,OAEtE,OADA3D,KAAMS,IAAa,EACZA,KAKTpB,EAAO4+B,cAAe,aAAc,SAAU5C,EAAGiI,EAAkB7G,GAElE,IAAI8G,EAAcC,EAAaC,EAC9BC,GAAuB,IAAZrI,EAAE+H,QAAqBD,GAAO35B,KAAM6xB,EAAEgC,KAChD,MACkB,iBAAXhC,EAAErd,MAE6C,KADnDqd,EAAEqC,aAAe,IACjBvgC,QAAS,sCACXgmC,GAAO35B,KAAM6xB,EAAErd,OAAU,QAI5B,GAAK0lB,GAAiC,UAArBrI,EAAEkB,UAAW,GA8D7B,OA3DAgH,EAAelI,EAAEgI,cAAgB1lC,EAAY09B,EAAEgI,eAC9ChI,EAAEgI,gBACFhI,EAAEgI,cAGEK,EACJrI,EAAGqI,GAAarI,EAAGqI,GAAWlhC,QAAS2gC,GAAQ,KAAOI,IAC/B,IAAZlI,EAAE+H,QACb/H,EAAEgC,MAAS5C,GAAOjxB,KAAM6xB,EAAEgC,KAAQ,IAAM,KAAQhC,EAAE+H,MAAQ,IAAMG,GAIjElI,EAAEyC,WAAY,eAAkB,WAI/B,OAHM2F,GACLpkC,EAAOqD,MAAO6gC,EAAe,mBAEvBE,EAAmB,IAI3BpI,EAAEkB,UAAW,GAAM,OAGnBiH,EAAcpnC,EAAQmnC,GACtBnnC,EAAQmnC,GAAiB,WACxBE,EAAoB7iC,WAIrB67B,EAAM9iB,OAAQ,gBAGQvX,IAAhBohC,EACJnkC,EAAQjD,GAASw8B,WAAY2K,GAI7BnnC,EAAQmnC,GAAiBC,EAIrBnI,EAAGkI,KAGPlI,EAAEgI,cAAgBC,EAAiBD,cAGnCH,GAAahmC,KAAMqmC,IAIfE,GAAqB9lC,EAAY6lC,IACrCA,EAAaC,EAAmB,IAGjCA,EAAoBD,OAAcphC,IAI5B,WAYT1E,EAAQimC,qBACH3iB,EAAOljB,EAAS8lC,eAAeD,mBAAoB,IAAK3iB,MACvDvU,UAAY,6BACiB,IAA3BuU,EAAKzY,WAAW5I,QAQxBN,EAAO4W,UAAY,SAAU+H,EAAMze,EAASskC,GAC3C,MAAqB,iBAAT7lB,EACJ,IAEgB,kBAAZze,IACXskC,EAActkC,EACdA,GAAU,GAKLA,IAIA7B,EAAQimC,qBAMZ7xB,GALAvS,EAAUzB,EAAS8lC,eAAeD,mBAAoB,KAKvChlC,cAAe,SACzBkS,KAAO/S,EAAS4S,SAASG,KAC9BtR,EAAQR,KAAKC,YAAa8S,IAE1BvS,EAAUzB,GAKZ8kB,GAAWihB,GAAe,IAD1BC,EAASruB,EAAWxM,KAAM+U,IAKlB,CAAEze,EAAQZ,cAAemlC,EAAQ,MAGzCA,EAASnhB,GAAe,CAAE3E,GAAQze,EAASqjB,GAEtCA,GAAWA,EAAQjjB,QACvBN,EAAQujB,GAAU1J,SAGZ7Z,EAAOiB,MAAO,GAAIwjC,EAAOv7B,cAlChC,IAAkBqa,GAyCnBvjB,EAAOG,GAAGynB,KAAO,SAAUoW,EAAK0G,EAAQtjC,GACvC,IAAInB,EAAUtB,EAAMsiC,EACnBzqB,EAAO7V,KACPgkB,EAAMqZ,EAAIlgC,QAAS,KAsDpB,OApDY,EAAP6mB,IACJ1kB,EAAWm5B,GAAkB4E,EAAIzgC,MAAOonB,IACxCqZ,EAAMA,EAAIzgC,MAAO,EAAGonB,IAIhBrmB,EAAYomC,IAGhBtjC,EAAWsjC,EACXA,OAAS3hC,GAGE2hC,GAA4B,iBAAlB,IAAOA,EAAP,eAAOA,MAC5B/lC,EAAO,QAIW,EAAd6X,EAAKlW,QACTN,EAAO8+B,KAAM,CACZd,IAAKA,EAKLr/B,KAAMA,GAAQ,MACds+B,SAAU,OACVte,KAAM+lB,IACHp+B,KAAM,SAAUi9B,GAGnBtC,EAAW1/B,UAEXiV,EAAKkV,KAAMzrB,EAIVD,EAAQ,SAAUosB,OAAQpsB,EAAO4W,UAAW2sB,IAAiBx2B,KAAM9M,GAGnEsjC,KAKEjpB,OAAQlZ,GAAY,SAAUg8B,EAAO8C,GACxC1pB,EAAKrV,KAAM,WACVC,EAASxD,MAAO+C,KAAMsgC,GAAY,CAAE7D,EAAMmG,aAAcrD,EAAQ9C,QAK5Dz8B,MAMRX,EAAOqO,KAAK/G,QAAQq9B,SAAW,SAAUrjC,GACxC,OAAOtB,EAAO4B,KAAM5B,EAAOy3B,OAAQ,SAAUt3B,GAC5C,OAAOmB,IAASnB,EAAGmB,OAChBhB,QAMLN,EAAO4kC,OAAS,CACfC,UAAW,SAAUvjC,EAAMe,EAASlD,GACnC,IAA0B2lC,EAAWC,EAAQC,EAAWC,EACvD3W,EAAWtuB,EAAO2gB,IAAKrf,EAAM,YAC7B4jC,EAAUllC,EAAQsB,GAClB2mB,EAAQ,GAGS,WAAbqG,IACJhtB,EAAKmf,MAAM6N,SAAW,YAGvB0W,EAAYE,EAAQN,SACpBE,EAAY9kC,EAAO2gB,IAAKrf,EAAM,OAC9B2jC,EAAajlC,EAAO2gB,IAAKrf,EAAM,QAS9B6jC,GARkC,aAAb7W,GAAwC,UAAbA,KACA,GAA9CwW,EAAYG,GAAannC,QAAS,SAMpCinC,GADAK,EAAcF,EAAQ5W,YACDhiB,IACX84B,EAAYxS,OAGtBmS,EAASrW,WAAYoW,IAAe,EAC1BpW,WAAYuW,IAAgB,GASnB,OAHnB5iC,EAHI/D,EAAY+D,GAGNA,EAAQ3E,KAAM4D,EAAMnC,EAAGa,EAAOoC,OAAQ,GAAI4iC,IAGhD3iC,GAAQiK,MACZ2b,EAAM3b,IAAQjK,EAAQiK,IAAM04B,EAAU14B,IAAQy4B,GAE1B,MAAhB1iC,EAAQuwB,OACZ3K,EAAM2K,KAASvwB,EAAQuwB,KAAOoS,EAAUpS,KAASuS,GAG7C,UAAW9iC,EACfA,EAAQgjC,MAAM3nC,KAAM4D,EAAM2mB,GAG1Bid,EAAQvkB,IAAKsH,KAKhBjoB,EAAOG,GAAGiC,OAAQ,CAGjBwiC,OAAQ,SAAUviC,GAGjB,GAAKd,UAAUjB,OACd,YAAmByC,IAAZV,EACN1B,KACAA,KAAKQ,KAAM,SAAUhC,GACpBa,EAAO4kC,OAAOC,UAAWlkC,KAAM0B,EAASlD,KAI3C,IAAImmC,EACHhkC,EAAOX,KAAM,GAEd,OAAMW,EAQAA,EAAK2wB,iBAAiB3xB,QAK5BglC,EAAOhkC,EAAKoxB,wBACZ6S,EAAMjkC,EAAKqI,cAAc0C,YAClB,CACNC,IAAKg5B,EAAKh5B,IAAMi5B,EAAIC,YACpB5S,KAAM0S,EAAK1S,KAAO2S,EAAIE,cARf,CAAEn5B,IAAK,EAAGsmB,KAAM,QATxB,GAuBDtE,SAAU,WACT,GAAM3tB,KAAM,GAAZ,CAIA,IAAI+kC,EAAcd,EAAQ1lC,EACzBoC,EAAOX,KAAM,GACbglC,EAAe,CAAEr5B,IAAK,EAAGsmB,KAAM,GAGhC,GAAwC,UAAnC5yB,EAAO2gB,IAAKrf,EAAM,YAGtBsjC,EAAStjC,EAAKoxB,4BAER,CAON,IANAkS,EAASjkC,KAAKikC,SAId1lC,EAAMoC,EAAKqI,cACX+7B,EAAepkC,EAAKokC,cAAgBxmC,EAAIiN,gBAChCu5B,IACLA,IAAiBxmC,EAAIyiB,MAAQ+jB,IAAiBxmC,EAAIiN,kBACT,WAA3CnM,EAAO2gB,IAAK+kB,EAAc,aAE1BA,EAAeA,EAAa9lC,WAExB8lC,GAAgBA,IAAiBpkC,GAAkC,IAA1BokC,EAAannC,YAG1DonC,EAAe3lC,EAAQ0lC,GAAed,UACzBt4B,KAAOtM,EAAO2gB,IAAK+kB,EAAc,kBAAkB,GAChEC,EAAa/S,MAAQ5yB,EAAO2gB,IAAK+kB,EAAc,mBAAmB,IAKpE,MAAO,CACNp5B,IAAKs4B,EAAOt4B,IAAMq5B,EAAar5B,IAAMtM,EAAO2gB,IAAKrf,EAAM,aAAa,GACpEsxB,KAAMgS,EAAOhS,KAAO+S,EAAa/S,KAAO5yB,EAAO2gB,IAAKrf,EAAM,cAAc,MAc1EokC,aAAc,WACb,OAAO/kC,KAAKU,IAAK,WAGhB,IAFA,IAAIqkC,EAAe/kC,KAAK+kC,aAEhBA,GAA2D,WAA3C1lC,EAAO2gB,IAAK+kB,EAAc,aACjDA,EAAeA,EAAaA,aAG7B,OAAOA,GAAgBv5B,QAM1BnM,EAAOmB,KAAM,CAAE2yB,WAAY,cAAeD,UAAW,eAAiB,SAAUjb,EAAQgG,GACvF,IAAItS,EAAM,gBAAkBsS,EAE5B5e,EAAOG,GAAIyY,GAAW,SAAUxZ,GAC/B,OAAOke,EAAQ3c,KAAM,SAAUW,EAAMsX,EAAQxZ,GAG5C,IAAImmC,EAOJ,OANKtoC,EAAUqE,GACdikC,EAAMjkC,EACuB,IAAlBA,EAAK/C,WAChBgnC,EAAMjkC,EAAK+K,kBAGCtJ,IAAR3D,EACGmmC,EAAMA,EAAK3mB,GAAStd,EAAMsX,QAG7B2sB,EACJA,EAAIK,SACFt5B,EAAYi5B,EAAIE,YAAVrmC,EACPkN,EAAMlN,EAAMmmC,EAAIC,aAIjBlkC,EAAMsX,GAAWxZ,IAEhBwZ,EAAQxZ,EAAKmC,UAAUjB,WAU5BN,EAAOmB,KAAM,CAAE,MAAO,QAAU,SAAUuD,EAAIka,GAC7C5e,EAAOoyB,SAAUxT,GAASqQ,GAAc5wB,EAAQkxB,cAC/C,SAAUjuB,EAAMstB,GACf,GAAKA,EAIJ,OAHAA,EAAWD,GAAQrtB,EAAMsd,GAGlB8O,GAAUvjB,KAAMykB,GACtB5uB,EAAQsB,GAAOgtB,WAAY1P,GAAS,KACpCgQ,MAQL5uB,EAAOmB,KAAM,CAAE0kC,OAAQ,SAAUC,MAAO,SAAW,SAAUxjC,EAAM3D,GAClEqB,EAAOmB,KAAM,CACZ2xB,QAAS,QAAUxwB,EACnB2V,QAAStZ,EACT,GAAI,QAAU2D,GACZ,SAAUyjC,EAAcC,GAG1BhmC,EAAOG,GAAI6lC,GAAa,SAAUnT,EAAQxuB,GACzC,IAAIkZ,EAAYhc,UAAUjB,SAAYylC,GAAkC,kBAAXlT,GAC5DlB,EAAQoU,KAA6B,IAAXlT,IAA6B,IAAVxuB,EAAiB,SAAW,UAE1E,OAAOiZ,EAAQ3c,KAAM,SAAUW,EAAM3C,EAAM0F,GAC1C,IAAInF,EAEJ,OAAKjC,EAAUqE,GAGyB,IAAhC0kC,EAASloC,QAAS,SACxBwD,EAAM,QAAUgB,GAChBhB,EAAK7C,SAAS0N,gBAAiB,SAAW7J,GAIrB,IAAlBhB,EAAK/C,UACTW,EAAMoC,EAAK6K,gBAIJlJ,KAAKmuB,IACX9vB,EAAKqgB,KAAM,SAAWrf,GAAQpD,EAAK,SAAWoD,GAC9ChB,EAAKqgB,KAAM,SAAWrf,GAAQpD,EAAK,SAAWoD,GAC9CpD,EAAK,SAAWoD,UAIDS,IAAVsB,EAGNrE,EAAO2gB,IAAKrf,EAAM3C,EAAMgzB,GAGxB3xB,EAAOygB,MAAOnf,EAAM3C,EAAM0F,EAAOstB,IAChChzB,EAAM4e,EAAYsV,OAAS9vB,EAAWwa,QAM5Cvd,EAAOmB,KAAM,CACZ,YACA,WACA,eACA,YACA,cACA,YACE,SAAUuD,EAAI/F,GAChBqB,EAAOG,GAAIxB,GAAS,SAAUwB,GAC7B,OAAOQ,KAAK2jB,GAAI3lB,EAAMwB,MAOxBH,EAAOG,GAAGiC,OAAQ,CAEjB4zB,KAAM,SAAUzR,EAAO5F,EAAMxe,GAC5B,OAAOQ,KAAK2jB,GAAIC,EAAO,KAAM5F,EAAMxe,IAEpC8lC,OAAQ,SAAU1hB,EAAOpkB,GACxB,OAAOQ,KAAKgkB,IAAKJ,EAAO,KAAMpkB,IAG/B+lC,SAAU,SAAUjmC,EAAUskB,EAAO5F,EAAMxe,GAC1C,OAAOQ,KAAK2jB,GAAIC,EAAOtkB,EAAU0e,EAAMxe,IAExCgmC,WAAY,SAAUlmC,EAAUskB,EAAOpkB,GAGtC,OAA4B,IAArBoB,UAAUjB,OAChBK,KAAKgkB,IAAK1kB,EAAU,MACpBU,KAAKgkB,IAAKJ,EAAOtkB,GAAY,KAAME,IAGrCimC,MAAO,SAAUC,EAAQC,GACxB,OAAO3lC,KAAK0pB,WAAYgc,GAAS/b,WAAYgc,GAASD,MAIxDrmC,EAAOmB,KACN,wLAE4DsD,MAAO,KACnE,SAAUC,EAAIpC,GAGbtC,EAAOG,GAAImC,GAAS,SAAUqc,EAAMxe,GACnC,OAA0B,EAAnBoB,UAAUjB,OAChBK,KAAK2jB,GAAIhiB,EAAM,KAAMqc,EAAMxe,GAC3BQ,KAAKykB,QAAS9iB,MAUlB,IAAImF,GAAQ,qCAMZzH,EAAOumC,MAAQ,SAAUpmC,EAAID,GAC5B,IAAS0Q,EAAM21B,EAUf,GARwB,iBAAZrmC,IACXgN,EAAM/M,EAAID,GACVA,EAAUC,EACVA,EAAK+M,GAKA5O,EAAY6B,GAalB,OARAyQ,EAAOrT,EAAMG,KAAM6D,UAAW,IAC9BglC,EAAQ,WACP,OAAOpmC,EAAGvC,MAAOsC,GAAWS,KAAMiQ,EAAKjT,OAAQJ,EAAMG,KAAM6D,eAItD+C,KAAOnE,EAAGmE,KAAOnE,EAAGmE,MAAQtE,EAAOsE,OAElCiiC,GAGRvmC,EAAOwmC,UAAY,SAAUC,GACvBA,EACJzmC,EAAOkd,YAEPld,EAAO2W,OAAO,IAGhB3W,EAAO8C,QAAUD,MAAMC,QACvB9C,EAAO0mC,UAAYvnB,KAAKC,MACxBpf,EAAO+I,SAAWA,EAClB/I,EAAO1B,WAAaA,EACpB0B,EAAO/C,SAAWA,EAClB+C,EAAOke,UAAYA,EACnBle,EAAOrB,KAAOmB,EAEdE,EAAOsoB,IAAMniB,KAAKmiB,IAElBtoB,EAAO2mC,UAAY,SAAUzpC,GAK5B,IAAIyB,EAAOqB,EAAOrB,KAAMzB,GACxB,OAAkB,WAATyB,GAA8B,WAATA,KAK5BioC,MAAO1pC,EAAMwxB,WAAYxxB,KAG5B8C,EAAO6mC,KAAO,SAAUtnC,GACvB,OAAe,MAARA,EACN,IACEA,EAAO,IAAK4D,QAASsE,GAAO,UAmB/B,mBACC,OAAOzH,GADR,SAAkB,OAAlB,eAQD,IAGC8mC,GAAU/pC,EAAOiD,OAGjB+mC,GAAKhqC,EAAOiqC,EAwBb,OAtBAhnC,EAAOinC,WAAa,SAAUtkC,GAS7B,OARK5F,EAAOiqC,IAAMhnC,IACjBjD,EAAOiqC,EAAID,IAGPpkC,GAAQ5F,EAAOiD,SAAWA,IAC9BjD,EAAOiD,OAAS8mC,IAGV9mC,QAMiB,IAAbhD,IACXD,EAAOiD,OAASjD,EAAOiqC,EAAIhnC,GAMrBA,GA9mViB,WAAlB,GAAOknC,KAAiD,WAA1B,GAAOA,GAAOC,SAShDD,GAAOC,QAAUtqC,EAAO4B,SACvB3B,EAASD,GAAQ,GACjB,SAAUuqC,GACT,IAAMA,EAAE3oC,SACP,MAAM,IAAI8E,MAAO,4CAElB,OAAOzG,EAASsqC,IAGlBtqC,EAASD,I,qEC7BSC,E,6MAAAA,EAIX,WAEL,IAAIuqC,EAEJ,SAAS3nB,IACL,OAAO2nB,EAAazpC,MAAM,KAAM2D,WASpC,SAASuB,EAAQqK,GACb,OACIA,aAAiBtK,OACyB,mBAA1CxF,OAAOkD,UAAUvC,SAASN,KAAKyP,GAIvC,SAASm6B,EAASn6B,GAGd,OACa,MAATA,GAC0C,oBAA1C9P,OAAOkD,UAAUvC,SAASN,KAAKyP,GAIvC,SAASo6B,EAAW1gC,EAAGC,GACnB,OAAOzJ,OAAOkD,UAAUrC,eAAeR,KAAKmJ,EAAGC,GAGnD,SAAS0gC,EAActqC,GACnB,GAAIG,OAAOoqC,oBACP,OAAkD,IAA3CpqC,OAAOoqC,oBAAoBvqC,GAAKoD,OAGvC,IADA,IAAIonC,KACMxqC,EACN,GAAIqqC,EAAWrqC,EAAKwqC,GAChB,OAGR,OAAO,EAIf,SAASC,EAAYx6B,GACjB,YAAiB,IAAVA,EAGX,SAASy6B,EAASz6B,GACd,MACqB,iBAAVA,GACmC,oBAA1C9P,OAAOkD,UAAUvC,SAASN,KAAKyP,GAIvC,SAAS06B,EAAO16B,GACZ,OACIA,aAAiBhH,MACyB,kBAA1C9I,OAAOkD,UAAUvC,SAASN,KAAKyP,GAIvC,SAAS9L,EAAIlE,EAAKgD,GAGd,IAFA,IAAI2nC,EAAM,GAEL3oC,EAAI,EAAGA,EAAIhC,EAAImD,SAAUnB,EAC1B2oC,EAAIjqC,KAAKsC,EAAGhD,EAAIgC,GAAIA,IAExB,OAAO2oC,EAGX,SAAS1lC,EAAOyE,EAAGC,GACf,IAAK,IAAI3H,KAAK2H,EACNygC,EAAWzgC,EAAG3H,KACd0H,EAAE1H,GAAK2H,EAAE3H,IAYjB,OARIooC,EAAWzgC,EAAG,cACdD,EAAE7I,SAAW8I,EAAE9I,UAGfupC,EAAWzgC,EAAG,aACdD,EAAEkhC,QAAUjhC,EAAEihC,SAGXlhC,EAGX,SAASmhC,EAAU76B,EAAO86B,EAAQC,EAAQC,GACtC,OAAOC,GAAiBj7B,EAAO86B,EAAQC,EAAQC,GAAQ,GAAME,MAyBjE,SAASC,EAAgBz+B,GAIrB,OAHa,MAATA,EAAE0+B,MACF1+B,EAAE0+B,IAtBC,CACHzuB,OAAO,EACP0uB,aAAc,GACdC,YAAa,GACb9R,UAAW,EACX+R,cAAe,EACfC,WAAW,EACXC,WAAY,KACZC,aAAc,KACdC,eAAe,EACfC,iBAAiB,EACjBC,KAAK,EACLC,gBAAiB,GACjBC,IAAK,KACLC,SAAU,KACVC,SAAS,EACTC,iBAAiB,IAQdx/B,EAAE0+B,IAsBb,SAASe,EAAQz/B,GACb,GAAkB,MAAdA,EAAE0/B,SAAkB,CACpB,IAAIC,EAAQlB,EAAgBz+B,GACxB4/B,EAAcC,EAAKhsC,KAAK8rC,EAAMP,gBAAiB,SAAU9pC,GACrD,OAAY,MAALA,IAEXwqC,GACK/C,MAAM/8B,EAAE+/B,GAAGC,YACZL,EAAM7S,SAAW,IAChB6S,EAAM1vB,QACN0vB,EAAMZ,aACNY,EAAMX,eACNW,EAAMM,iBACNN,EAAMH,kBACNG,EAAMb,YACNa,EAAMV,gBACNU,EAAMT,mBACLS,EAAML,UAAaK,EAAML,UAAYM,GAU/C,GARI5/B,EAAEkgC,UACFJ,EACIA,GACwB,IAAxBH,EAAMd,eACwB,IAA9Bc,EAAMhB,aAAaloC,aACDyC,IAAlBymC,EAAMQ,SAGS,MAAnB3sC,OAAO4sC,UAAqB5sC,OAAO4sC,SAASpgC,GAG5C,OAAO8/B,EAFP9/B,EAAE0/B,SAAWI,EAKrB,OAAO9/B,EAAE0/B,SAGb,SAASW,EAAcV,GACnB,IAAI3/B,EAAIm+B,EAAUmC,KAOlB,OANa,MAATX,EACApnC,EAAOkmC,EAAgBz+B,GAAI2/B,GAE3BlB,EAAgBz+B,GAAGk/B,iBAAkB,EAGlCl/B,EAKX,IAlEI6/B,EADA7mC,MAAMtC,UAAUmpC,MAGT,SAAUU,GAKb,IAJA,IAAI3kB,EAAIpoB,OAAOsD,MACXoB,EAAM0jB,EAAEnlB,SAAW,EAGlBnB,EAAI,EAAGA,EAAI4C,EAAK5C,IACjB,GAAIA,KAAKsmB,GAAK2kB,EAAI1sC,KAAKiD,KAAM8kB,EAAEtmB,GAAIA,EAAGsmB,GAClC,OAAO,EAIf,OAAO,GAqDX4kB,EAAoB3qB,EAAM2qB,iBAAmB,GAC7CC,GAAmB,EAEvB,SAASC,EAAWpT,EAAIqT,GACpB,IAAIrrC,EAAGyf,EAAMxf,EAiCb,GA/BKuoC,EAAY6C,EAAKC,oBAClBtT,EAAGsT,iBAAmBD,EAAKC,kBAE1B9C,EAAY6C,EAAK9lC,MAClByyB,EAAGzyB,GAAK8lC,EAAK9lC,IAEZijC,EAAY6C,EAAKE,MAClBvT,EAAGuT,GAAKF,EAAKE,IAEZ/C,EAAY6C,EAAKG,MAClBxT,EAAGwT,GAAKH,EAAKG,IAEZhD,EAAY6C,EAAKT,WAClB5S,EAAG4S,QAAUS,EAAKT,SAEjBpC,EAAY6C,EAAKI,QAClBzT,EAAGyT,KAAOJ,EAAKI,MAEdjD,EAAY6C,EAAKK,UAClB1T,EAAG0T,OAASL,EAAKK,QAEhBlD,EAAY6C,EAAKM,WAClB3T,EAAG2T,QAAUN,EAAKM,SAEjBnD,EAAY6C,EAAKjC,OAClBpR,EAAGoR,IAAMD,EAAgBkC,IAExB7C,EAAY6C,EAAKO,WAClB5T,EAAG4T,QAAUP,EAAKO,SAGQ,EAA1BV,EAAiB/pC,OACjB,IAAKnB,EAAI,EAAGA,EAAIkrC,EAAiB/pC,OAAQnB,IAGhCwoC,EADLvoC,EAAMorC,EADN5rB,EAAOyrB,EAAiBlrC,OAGpBg4B,EAAGvY,GAAQxf,GAKvB,OAAO+3B,EAIX,SAAS6T,EAAOC,GACZV,EAAW5pC,KAAMsqC,GACjBtqC,KAAKipC,GAAK,IAAIzjC,KAAkB,MAAb8kC,EAAOrB,GAAaqB,EAAOrB,GAAGC,UAAYM,KACxDxpC,KAAK2oC,YACN3oC,KAAKipC,GAAK,IAAIzjC,KAAKgkC,OAIE,IAArBG,IACAA,GAAmB,EACnB5qB,EAAMwrB,aAAavqC,MACnB2pC,GAAmB,GAI3B,SAASa,EAASjuC,GACd,OACIA,aAAe8tC,GAAkB,MAAP9tC,GAAuC,MAAxBA,EAAIutC,iBAIrD,SAAS9tB,EAAKrZ,IAEgC,IAAtCoc,EAAM0rB,6BACa,oBAAZ1uB,SACPA,QAAQC,MAERD,QAAQC,KAAK,wBAA0BrZ,GAI/C,SAAS+nC,EAAU/nC,EAAKnD,GACpB,IAAImrC,GAAY,EAEhB,OAAOlpC,EAAO,WAIV,GAHgC,MAA5Bsd,EAAM6rB,oBACN7rB,EAAM6rB,mBAAmB,KAAMjoC,GAE/BgoC,EAAW,CAKX,IAJA,IACIlnC,EAEAyG,EAHA+F,EAAO,GAINzR,EAAI,EAAGA,EAAIoC,UAAUjB,OAAQnB,IAAK,CAEnC,GADAiF,EAAM,GACsB,WAAxB,GAAO7C,UAAUpC,IAAiB,CAElC,IAAK0L,KADLzG,GAAO,MAAQjF,EAAI,KACPoC,UAAU,GACdgmC,EAAWhmC,UAAU,GAAIsJ,KACzBzG,GAAOyG,EAAM,KAAOtJ,UAAU,GAAGsJ,GAAO,MAGhDzG,EAAMA,EAAI7G,MAAM,GAAI,QAEpB6G,EAAM7C,UAAUpC,GAEpByR,EAAK/S,KAAKuG,GAEduY,EACIrZ,EACI,gBACAT,MAAMtC,UAAUhD,MAAMG,KAAKkT,GAAMrG,KAAK,IACtC,MACA,IAAIhH,OAAQkZ,OAEpB6uB,GAAY,EAEhB,OAAOnrC,EAAGvC,MAAM+C,KAAMY,YACvBpB,GAGP,IAAIqrC,EAAe,GAEnB,SAASC,EAAgBnpC,EAAMgB,GACK,MAA5Boc,EAAM6rB,oBACN7rB,EAAM6rB,mBAAmBjpC,EAAMgB,GAE9BkoC,EAAalpC,KACdqa,EAAKrZ,GACLkoC,EAAalpC,IAAQ,GAO7B,SAAShE,EAAW6O,GAChB,MACyB,oBAAbu+B,UAA4Bv+B,aAAiBu+B,UACX,sBAA1CruC,OAAOkD,UAAUvC,SAASN,KAAKyP,GA2BvC,SAASw+B,EAAaC,EAAcC,GAChC,IACIjtB,EADAkpB,EAAM1lC,EAAO,GAAIwpC,GAErB,IAAKhtB,KAAQitB,EACLtE,EAAWsE,EAAajtB,KACpB0oB,EAASsE,EAAahtB,KAAU0oB,EAASuE,EAAYjtB,KACrDkpB,EAAIlpB,GAAQ,GACZxc,EAAO0lC,EAAIlpB,GAAOgtB,EAAahtB,IAC/Bxc,EAAO0lC,EAAIlpB,GAAOitB,EAAYjtB,KACF,MAArBitB,EAAYjtB,GACnBkpB,EAAIlpB,GAAQitB,EAAYjtB,UAEjBkpB,EAAIlpB,IAIvB,IAAKA,KAAQgtB,EAELrE,EAAWqE,EAAchtB,KACxB2oB,EAAWsE,EAAajtB,IACzB0oB,EAASsE,EAAahtB,MAGtBkpB,EAAIlpB,GAAQxc,EAAO,GAAI0lC,EAAIlpB,KAGnC,OAAOkpB,EAGX,SAASgE,EAAOb,GACE,MAAVA,GACAtqC,KAAK+d,IAAIusB,GAhEjBvrB,EAAM0rB,6BAA8B,EACpC1rB,EAAM6rB,mBAAqB,KAoF3B,IAdI5gC,EADAtN,OAAOsN,MAGA,SAAUzN,GACb,IAAIiC,EACA2oC,EAAM,GACV,IAAK3oC,KAAKjC,EACFqqC,EAAWrqC,EAAKiC,IAChB2oC,EAAIjqC,KAAKsB,GAGjB,OAAO2oC,GAkBf,SAASiE,EAASC,EAAQC,EAAcC,GACpC,IAAIC,EAAY,GAAKlpC,KAAKmpC,IAAIJ,GAG9B,OADqB,GAAVA,EAEEE,EAAY,IAAM,GAAM,KACjCjpC,KAAKopC,IAAI,GAAIppC,KAAKmuB,IAAI,EAJR6a,EAAeE,EAAU7rC,SAIAtC,WAAWsuC,OAAO,GACzDH,EAIR,IAAII,EAAmB,yMACnBC,EAAwB,6CACxBC,EAAkB,GAClBC,EAAuB,GAM3B,SAASC,EAAer3B,EAAOs3B,EAAQC,EAASzrC,GAC5C,IAAI+Y,EACoB,iBAAb/Y,EACA,WACH,OAAOT,KAAKS,MAHTA,EAMPkU,IACAo3B,EAAqBp3B,GAAS6E,GAE9ByyB,IACAF,EAAqBE,EAAO,IAAM,WAC9B,OAAOb,EAAS5xB,EAAKvc,MAAM+C,KAAMY,WAAYqrC,EAAO,GAAIA,EAAO,MAGnEC,IACAH,EAAqBG,GAAW,WAC5B,OAAOlsC,KAAKmsC,aAAaD,QACrB1yB,EAAKvc,MAAM+C,KAAMY,WACjB+T,KAuChB,SAASy3B,EAAaljC,EAAGo+B,GACrB,OAAKp+B,EAAEy/B,WAIPrB,EAAS+E,EAAa/E,EAAQp+B,EAAEijC,cAChCL,EAAgBxE,GACZwE,EAAgBxE,IAjCxB,SAA4BA,GAKxB,IAJA,IAR4B96B,EAQxB1P,EAAQwqC,EAAO1+B,MAAMgjC,GAIpBptC,EAAI,EAAGmB,EAAS7C,EAAM6C,OAAQnB,EAAImB,EAAQnB,IACvCutC,EAAqBjvC,EAAM0B,IAC3B1B,EAAM0B,GAAKutC,EAAqBjvC,EAAM0B,IAEtC1B,EAAM0B,IAhBcgO,EAgBc1P,EAAM0B,IAftCoK,MAAM,YACL4D,EAAMhK,QAAQ,WAAY,IAE9BgK,EAAMhK,QAAQ,MAAO,IAgB5B,OAAO,SAAU8pC,GAGb,IAFA,IAAIC,EAAS,GAER/tC,EAAI,EAAGA,EAAImB,EAAQnB,IACpB+tC,GAAU5uC,EAAWb,EAAM0B,IACrB1B,EAAM0B,GAAGzB,KAAKuvC,EAAKhF,GACnBxqC,EAAM0B,GAEhB,OAAO+tC,GAYoBC,CAAmBlF,GAE3CwE,EAAgBxE,GAAQp+B,IAPpBA,EAAEijC,aAAaM,cAU9B,SAASJ,EAAa/E,EAAQC,GAC1B,IAAI/oC,EAAI,EAER,SAASkuC,EAA4BlgC,GACjC,OAAO+6B,EAAOoF,eAAengC,IAAUA,EAI3C,IADAq/B,EAAsBe,UAAY,EACtB,GAALpuC,GAAUqtC,EAAsBriC,KAAK89B,IACxCA,EAASA,EAAO9kC,QACZqpC,EACAa,GAEJb,EAAsBe,UAAY,IAClCpuC,EAGJ,OAAO8oC,EAkFX,IAAIuF,EAAU,GAEd,SAASC,EAAarsB,EAAMssB,GACxB,IAAIC,EAAYvsB,EAAKzc,cACrB6oC,EAAQG,GAAaH,EAAQG,EAAY,KAAOH,EAAQE,GAAatsB,EAGzE,SAASwsB,EAAeC,GACpB,MAAwB,iBAAVA,EACRL,EAAQK,IAAUL,EAAQK,EAAMlpC,oBAChC5B,EAGV,SAAS+qC,EAAqBC,GAC1B,IACIC,EACApvB,EAFAqvB,EAAkB,GAItB,IAAKrvB,KAAQmvB,EACLxG,EAAWwG,EAAanvB,KACxBovB,EAAiBJ,EAAehvB,MAE5BqvB,EAAgBD,GAAkBD,EAAYnvB,IAK1D,OAAOqvB,EAGX,IAAIC,EAAa,GAEjB,SAASC,EAAgB/sB,EAAMgtB,GAC3BF,EAAW9sB,GAAQgtB,EAiBvB,SAASC,EAAWC,GAChB,OAAQA,EAAO,GAAM,GAAKA,EAAO,KAAQ,GAAMA,EAAO,KAAQ,EAGlE,SAASC,EAASvC,GACd,OAAIA,EAAS,EAEF/oC,KAAK4uB,KAAKma,IAAW,EAErB/oC,KAAKurC,MAAMxC,GAI1B,SAASyC,EAAMC,GACX,IAAIC,GAAiBD,EACjBrqC,EAAQ,EAMZ,OAHIA,EADkB,GAAlBsqC,GAAuBlc,SAASkc,GACxBJ,EAASI,GAGdtqC,EAGX,SAASuqC,EAAWxtB,EAAMytB,GACtB,OAAO,SAAUxqC,GACb,OAAa,MAATA,GACAyqC,EAAMnuC,KAAMygB,EAAM/c,GAClBqb,EAAMwrB,aAAavqC,KAAMkuC,GAClBluC,MAEAC,EAAID,KAAMygB,IAK7B,SAASxgB,EAAIqsC,EAAK7rB,GACd,OAAO6rB,EAAI3D,UACL2D,EAAIrD,GAAG,OAASqD,EAAIpC,OAAS,MAAQ,IAAMzpB,KAC3C+oB,IAGV,SAAS2E,EAAM7B,EAAK7rB,EAAM/c,GAClB4oC,EAAI3D,YAAc1C,MAAMviC,KAEX,aAAT+c,GACAitB,EAAWpB,EAAIqB,SACC,IAAhBrB,EAAI8B,SACW,KAAf9B,EAAI+B,QAEJ3qC,EAAQoqC,EAAMpqC,GACd4oC,EAAIrD,GAAG,OAASqD,EAAIpC,OAAS,MAAQ,IAAMzpB,GACvC/c,EACA4oC,EAAI8B,QACJE,GAAY5qC,EAAO4oC,EAAI8B,WAG3B9B,EAAIrD,GAAG,OAASqD,EAAIpC,OAAS,MAAQ,IAAMzpB,GAAM/c,IAgC7D,IAAI6qC,EAAS,KACTC,EAAS,OACTC,EAAS,QACTC,EAAS,QACTC,EAAS,aACTC,GAAY,QACZC,GAAY,YACZC,GAAY,gBACZC,GAAY,UACZC,GAAY,UACZC,GAAY,eACZC,GAAgB,MAChBC,GAAc,WACdC,GAAc,qBACdC,GAAmB,0BAInBC,GAAY,wJAKhB,SAASC,GAAc56B,EAAO66B,EAAOC,GACjCC,GAAQ/6B,GAAShX,EAAW6xC,GACtBA,EACA,SAAUG,EAAUxD,GAChB,OAAOwD,GAAYF,EAAcA,EAAcD,GAI7D,SAASI,GAAsBj7B,EAAO21B,GAClC,OAAK1D,EAAW8I,GAAS/6B,GAIlB+6B,GAAQ/6B,GAAO21B,EAAOlB,QAASkB,EAAOF,SAHlC,IAAIvjC,OAQRgpC,GAR8Bl7B,EAU5BnS,QAAQ,KAAM,IACdA,QAAQ,sCAAuC,SAC5C4N,EACA0/B,EACAC,EACAC,EACAC,GAEA,OAAOH,GAAMC,GAAMC,GAAMC,MAKzC,SAASJ,GAAYxU,GACjB,OAAOA,EAAE74B,QAAQ,yBAA0B,QAG/C,IAvCAktC,GAAU,GAuCN99B,GAAS,GAEb,SAASs+B,GAAcv7B,EAAOlU,GAC1B,IAAIjC,EACAgb,EAAO/Y,EASX,IARqB,iBAAVkU,IACPA,EAAQ,CAACA,IAETsyB,EAASxmC,KACT+Y,EAAO,SAAUhN,EAAO1P,GACpBA,EAAM2D,GAAYqtC,EAAMthC,KAG3BhO,EAAI,EAAGA,EAAImW,EAAMhV,OAAQnB,IAC1BoT,GAAO+C,EAAMnW,IAAMgb,EAI3B,SAAS22B,GAAkBx7B,EAAOlU,GAC9ByvC,GAAcv7B,EAAO,SAAUnI,EAAO1P,EAAOwtC,EAAQ31B,GACjD21B,EAAO8F,GAAK9F,EAAO8F,IAAM,GACzB3vC,EAAS+L,EAAO89B,EAAO8F,GAAI9F,EAAQ31B,KAU3C,IAcIxX,GAdAkzC,GAAO,EACPC,GAAQ,EACRC,GAAO,EACPC,GAAO,EACPC,GAAS,EACTC,GAAS,EACTC,GAAc,EACdC,GAAO,EACPC,GAAU,EAuBd,SAASvC,GAAYX,EAAMS,GACvB,GAAInI,MAAM0H,IAAS1H,MAAMmI,GACrB,OAAO5E,IAEX,IAzBYsH,EAyBRC,GAAe3C,GAzBP0C,EAyBc,IAxBRA,GAAKA,EA0BvB,OADAnD,IAASS,EAAQ2C,GAAY,GACT,GAAbA,EACDrD,EAAWC,GACP,GACA,GACJ,GAAOoD,EAAW,EAAK,EAxB7B5zC,GADA+E,MAAMtC,UAAUzC,SAGN,SAAU6zC,GAGhB,IADA,IACKxyC,EAAI,EAAGA,EAAIwB,KAAKL,SAAUnB,EAC3B,GAAIwB,KAAKxB,KAAOwyC,EACZ,OAAOxyC,EAGf,OAAQ,GAmBhBwtC,EAAe,IAAK,CAAC,KAAM,GAAI,KAAM,WACjC,OAAOhsC,KAAKouC,QAAU,IAG1BpC,EAAe,MAAO,EAAG,EAAG,SAAU1E,GAClC,OAAOtnC,KAAKmsC,aAAa8E,YAAYjxC,KAAMsnC,KAG/C0E,EAAe,OAAQ,EAAG,EAAG,SAAU1E,GACnC,OAAOtnC,KAAKmsC,aAAa+E,OAAOlxC,KAAMsnC,KAK1CwF,EAAa,QAAS,KAItBU,EAAgB,QAAS,GAIzB+B,GAAc,IAAKX,IACnBW,GAAc,KAAMX,GAAWJ,GAC/Be,GAAc,MAAO,SAAUI,EAAUpI,GACrC,OAAOA,EAAO4J,iBAAiBxB,KAEnCJ,GAAc,OAAQ,SAAUI,EAAUpI,GACtC,OAAOA,EAAO6J,YAAYzB,KAG9BO,GAAc,CAAC,IAAK,MAAO,SAAU1jC,EAAO1P,GACxCA,EAAMwzC,IAASxC,EAAMthC,GAAS,IAGlC0jC,GAAc,CAAC,MAAO,QAAS,SAAU1jC,EAAO1P,EAAOwtC,EAAQ31B,GACvDy5B,EAAQ9D,EAAOF,QAAQiH,YAAY7kC,EAAOmI,EAAO21B,EAAOlB,SAE/C,MAATgF,EACAtxC,EAAMwzC,IAASlC,EAEfzG,EAAgB2C,GAAQpC,aAAe17B,IAM/C,IAAI8kC,GAAsB,wFAAwFxtC,MAC1G,KAEJytC,GAA2B,kDAAkDztC,MACzE,KAEJ0tC,GAAmB,gCACnBC,GAA0BnC,GAC1BoC,GAAqBpC,GAoIzB,SAASqC,GAASrF,EAAK5oC,GACnB,IAAIkuC,EAEJ,IAAKtF,EAAI3D,UAEL,OAAO2D,EAGX,GAAqB,iBAAV5oC,EACP,GAAI,QAAQ8F,KAAK9F,GACbA,EAAQoqC,EAAMpqC,QAId,IAAKujC,EAFLvjC,EAAQ4oC,EAAIH,aAAakF,YAAY3tC,IAGjC,OAAO4oC,EAOnB,OAFAsF,EAAatvC,KAAKuvC,IAAIvF,EAAI+B,OAAQC,GAAYhC,EAAIqB,OAAQjqC,IAC1D4oC,EAAIrD,GAAG,OAASqD,EAAIpC,OAAS,MAAQ,IAAM,SAASxmC,EAAOkuC,GACpDtF,EAGX,SAASwF,GAAYpuC,GACjB,OAAa,MAATA,GACAiuC,GAAS3xC,KAAM0D,GACfqb,EAAMwrB,aAAavqC,MAAM,GAClBA,MAEAC,EAAID,KAAM,SAgDzB,SAAS+xC,KACL,SAASC,EAAU9rC,EAAGC,GAClB,OAAOA,EAAExG,OAASuG,EAAEvG,OAQxB,IALA,IAII2sC,EAJA2F,EAAc,GACdC,EAAa,GACbC,EAAc,GAGb3zC,EAAI,EAAGA,EAAI,GAAIA,IAEhB8tC,EAAMjF,EAAU,CAAC,IAAM7oC,IACvByzC,EAAY/0C,KAAK8C,KAAKixC,YAAY3E,EAAK,KACvC4F,EAAWh1C,KAAK8C,KAAKkxC,OAAO5E,EAAK,KACjC6F,EAAYj1C,KAAK8C,KAAKkxC,OAAO5E,EAAK,KAClC6F,EAAYj1C,KAAK8C,KAAKixC,YAAY3E,EAAK,KAO3C,IAHA2F,EAAY1wC,KAAKywC,GACjBE,EAAW3wC,KAAKywC,GAChBG,EAAY5wC,KAAKywC,GACZxzC,EAAI,EAAGA,EAAI,GAAIA,IAChByzC,EAAYzzC,GAAKqxC,GAAYoC,EAAYzzC,IACzC0zC,EAAW1zC,GAAKqxC,GAAYqC,EAAW1zC,IAE3C,IAAKA,EAAI,EAAGA,EAAI,GAAIA,IAChB2zC,EAAY3zC,GAAKqxC,GAAYsC,EAAY3zC,IAG7CwB,KAAKoyC,aAAe,IAAIvrC,OAAO,KAAOsrC,EAAYvoC,KAAK,KAAO,IAAK,KACnE5J,KAAKqyC,kBAAoBryC,KAAKoyC,aAC9BpyC,KAAKsyC,mBAAqB,IAAIzrC,OAC1B,KAAOqrC,EAAWtoC,KAAK,KAAO,IAC9B,KAEJ5J,KAAKuyC,wBAA0B,IAAI1rC,OAC/B,KAAOorC,EAAYroC,KAAK,KAAO,IAC/B,KAiDR,SAAS4oC,GAAW7E,GAChB,OAAOD,EAAWC,GAAQ,IAAM,IA5CpC3B,EAAe,IAAK,EAAG,EAAG,WACtB,IAAIyG,EAAIzyC,KAAK2tC,OACb,OAAO8E,GAAK,KAAOrH,EAASqH,EAAG,GAAK,IAAMA,IAG9CzG,EAAe,EAAG,CAAC,KAAM,GAAI,EAAG,WAC5B,OAAOhsC,KAAK2tC,OAAS,MAGzB3B,EAAe,EAAG,CAAC,OAAQ,GAAI,EAAG,QAClCA,EAAe,EAAG,CAAC,QAAS,GAAI,EAAG,QACnCA,EAAe,EAAG,CAAC,SAAU,GAAG,GAAO,EAAG,QAI1Cc,EAAa,OAAQ,KAIrBU,EAAgB,OAAQ,GAIxB+B,GAAc,IAAKJ,IACnBI,GAAc,KAAMX,GAAWJ,GAC/Be,GAAc,OAAQP,GAAWN,GACjCa,GAAc,QAASN,GAAWN,GAClCY,GAAc,SAAUN,GAAWN,GAEnCuB,GAAc,CAAC,QAAS,UAAWG,IACnCH,GAAc,OAAQ,SAAU1jC,EAAO1P,GACnCA,EAAMuzC,IACe,IAAjB7jC,EAAM7M,OAAeof,EAAM2zB,kBAAkBlmC,GAASshC,EAAMthC,KAEpE0jC,GAAc,KAAM,SAAU1jC,EAAO1P,GACjCA,EAAMuzC,IAAQtxB,EAAM2zB,kBAAkBlmC,KAE1C0jC,GAAc,IAAK,SAAU1jC,EAAO1P,GAChCA,EAAMuzC,IAAQjhB,SAAS5iB,EAAO,MAWlCuS,EAAM2zB,kBAAoB,SAAUlmC,GAChC,OAAOshC,EAAMthC,IAAyB,GAAfshC,EAAMthC,GAAc,KAAO,MAKtD,IAAImmC,GAAa1E,EAAW,YAAY,GAMxC,SAAS2E,GAAWH,EAAGvpC,EAAG2pC,EAAGC,EAAGC,EAAG1X,EAAG2X,GAGlC,IAAI3E,EAYJ,OAVIoE,EAAI,KAAY,GAALA,GAEXpE,EAAO,IAAI7oC,KAAKitC,EAAI,IAAKvpC,EAAG2pC,EAAGC,EAAGC,EAAG1X,EAAG2X,GACpClhB,SAASuc,EAAK4E,gBACd5E,EAAK6E,YAAYT,IAGrBpE,EAAO,IAAI7oC,KAAKitC,EAAGvpC,EAAG2pC,EAAGC,EAAGC,EAAG1X,EAAG2X,GAG/B3E,EAGX,SAAS8E,GAAcV,GACnB,IAAUxiC,EAcV,OAZIwiC,EAAI,KAAY,GAALA,IACXxiC,EAAO/N,MAAMtC,UAAUhD,MAAMG,KAAK6D,YAE7B,GAAK6xC,EAAI,IACdpE,EAAO,IAAI7oC,KAAKA,KAAK4tC,IAAIn2C,MAAM,KAAMgT,IACjC6hB,SAASuc,EAAKgF,mBACdhF,EAAKiF,eAAeb,IAGxBpE,EAAO,IAAI7oC,KAAKA,KAAK4tC,IAAIn2C,MAAM,KAAM2D,YAGlCytC,EAIX,SAASkF,GAAgB5F,EAAM6F,EAAKC,GAE5BC,EAAM,EAAIF,EAAMC,EAIpB,OAAgBC,GAFH,EAAIP,GAAcxF,EAAM,EAAG+F,GAAKC,YAAcH,GAAO,EAE5C,EAI1B,SAASI,GAAmBjG,EAAMkG,EAAMC,EAASN,EAAKC,GAClD,IAGIM,EADAC,EAAY,EAAI,GAAKH,EAAO,IAFZ,EAAIC,EAAUN,GAAO,EACxBD,GAAgB5F,EAAM6F,EAAKC,GAOxCQ,EAFAD,GAAa,EAEExB,GADfuB,EAAUpG,EAAO,GACoBqG,EAC9BA,EAAYxB,GAAW7E,IAC9BoG,EAAUpG,EAAO,EACFqG,EAAYxB,GAAW7E,KAEtCoG,EAAUpG,EACKqG,GAGnB,MAAO,CACHrG,KAAMoG,EACNC,UAAWC,GAInB,SAASC,GAAW5H,EAAKkH,EAAKC,GAC1B,IAEIU,EACAJ,EAHAK,EAAab,GAAgBjH,EAAIqB,OAAQ6F,EAAKC,GAC9CI,EAAOvxC,KAAKurC,OAAOvB,EAAI0H,YAAcI,EAAa,GAAK,GAAK,EAehE,OAXIP,EAAO,EAEPM,EAAUN,EAAOQ,GADjBN,EAAUzH,EAAIqB,OAAS,EACe6F,EAAKC,GACpCI,EAAOQ,GAAY/H,EAAIqB,OAAQ6F,EAAKC,IAC3CU,EAAUN,EAAOQ,GAAY/H,EAAIqB,OAAQ6F,EAAKC,GAC9CM,EAAUzH,EAAIqB,OAAS,IAEvBoG,EAAUzH,EAAIqB,OACdwG,EAAUN,GAGP,CACHA,KAAMM,EACNxG,KAAMoG,GAId,SAASM,GAAY1G,EAAM6F,EAAKC,GAC5B,IAAIW,EAAab,GAAgB5F,EAAM6F,EAAKC,GACxCa,EAAiBf,GAAgB5F,EAAO,EAAG6F,EAAKC,GACpD,OAAQjB,GAAW7E,GAAQyG,EAAaE,GAAkB,EAK9DtI,EAAe,IAAK,CAAC,KAAM,GAAI,KAAM,QACrCA,EAAe,IAAK,CAAC,KAAM,GAAI,KAAM,WAIrCc,EAAa,OAAQ,KACrBA,EAAa,UAAW,KAIxBU,EAAgB,OAAQ,GACxBA,EAAgB,UAAW,GAI3B+B,GAAc,IAAKX,IACnBW,GAAc,KAAMX,GAAWJ,GAC/Be,GAAc,IAAKX,IACnBW,GAAc,KAAMX,GAAWJ,GAE/B2B,GAAkB,CAAC,IAAK,KAAM,IAAK,MAAO,SACtC3jC,EACAqnC,EACAvJ,EACA31B,GAEAk/B,EAAKl/B,EAAMg3B,OAAO,EAAG,IAAMmC,EAAMthC,KA0HrC,SAAS+nC,GAAcC,EAAIl/B,GACvB,OAAOk/B,EAAG53C,MAAM0Y,EAAG,GAAGtY,OAAOw3C,EAAG53C,MAAM,EAAG0Y,IArF7C02B,EAAe,IAAK,EAAG,KAAM,OAE7BA,EAAe,KAAM,EAAG,EAAG,SAAU1E,GACjC,OAAOtnC,KAAKmsC,aAAasI,YAAYz0C,KAAMsnC,KAG/C0E,EAAe,MAAO,EAAG,EAAG,SAAU1E,GAClC,OAAOtnC,KAAKmsC,aAAauI,cAAc10C,KAAMsnC,KAGjD0E,EAAe,OAAQ,EAAG,EAAG,SAAU1E,GACnC,OAAOtnC,KAAKmsC,aAAawI,SAAS30C,KAAMsnC,KAG5C0E,EAAe,IAAK,EAAG,EAAG,WAC1BA,EAAe,IAAK,EAAG,EAAG,cAI1Bc,EAAa,MAAO,KACpBA,EAAa,UAAW,KACxBA,EAAa,aAAc,KAG3BU,EAAgB,MAAO,IACvBA,EAAgB,UAAW,IAC3BA,EAAgB,aAAc,IAI9B+B,GAAc,IAAKX,IACnBW,GAAc,IAAKX,IACnBW,GAAc,IAAKX,IACnBW,GAAc,KAAM,SAAUI,EAAUpI,GACpC,OAAOA,EAAOqN,iBAAiBjF,KAEnCJ,GAAc,MAAO,SAAUI,EAAUpI,GACrC,OAAOA,EAAOsN,mBAAmBlF,KAErCJ,GAAc,OAAQ,SAAUI,EAAUpI,GACtC,OAAOA,EAAOuN,cAAcnF,KAGhCQ,GAAkB,CAAC,KAAM,MAAO,QAAS,SAAU3jC,EAAOqnC,EAAMvJ,EAAQ31B,GAChEm/B,EAAUxJ,EAAOF,QAAQ2K,cAAcvoC,EAAOmI,EAAO21B,EAAOlB,SAEjD,MAAX0K,EACAD,EAAKhB,EAAIiB,EAETnM,EAAgB2C,GAAQnB,eAAiB38B,IAIjD2jC,GAAkB,CAAC,IAAK,IAAK,KAAM,SAAU3jC,EAAOqnC,EAAMvJ,EAAQ31B,GAC9Dk/B,EAAKl/B,GAASm5B,EAAMthC,KAkCxB,IAAIwoC,GAAwB,2DAA2DlxC,MAC/E,KAEJmxC,GAA6B,8BAA8BnxC,MAAM,KACjEoxC,GAA2B,uBAAuBpxC,MAAM,KACxDqxC,GAAuB7F,GACvB8F,GAA4B9F,GAC5B+F,GAA0B/F,GAiR9B,SAASgG,KACL,SAAStD,EAAU9rC,EAAGC,GAClB,OAAOA,EAAExG,OAASuG,EAAEvG,OAYxB,IATA,IAMI41C,EACAC,EACAC,EARAC,EAAY,GACZzD,EAAc,GACdC,EAAa,GACbC,EAAc,GAMb3zC,EAAI,EAAGA,EAAI,EAAGA,IAEf8tC,EAAMjF,EAAU,CAAC,IAAM,IAAIsO,IAAIn3C,GAC/B+2C,EAAO1F,GAAY7vC,KAAKy0C,YAAYnI,EAAK,KACzCkJ,EAAS3F,GAAY7vC,KAAK00C,cAAcpI,EAAK,KAC7CmJ,EAAQ5F,GAAY7vC,KAAK20C,SAASrI,EAAK,KACvCoJ,EAAUx4C,KAAKq4C,GACftD,EAAY/0C,KAAKs4C,GACjBtD,EAAWh1C,KAAKu4C,GAChBtD,EAAYj1C,KAAKq4C,GACjBpD,EAAYj1C,KAAKs4C,GACjBrD,EAAYj1C,KAAKu4C,GAIrBC,EAAUn0C,KAAKywC,GACfC,EAAY1wC,KAAKywC,GACjBE,EAAW3wC,KAAKywC,GAChBG,EAAY5wC,KAAKywC,GAEjBhyC,KAAK41C,eAAiB,IAAI/uC,OAAO,KAAOsrC,EAAYvoC,KAAK,KAAO,IAAK,KACrE5J,KAAK61C,oBAAsB71C,KAAK41C,eAChC51C,KAAK81C,kBAAoB91C,KAAK41C,eAE9B51C,KAAK+1C,qBAAuB,IAAIlvC,OAC5B,KAAOqrC,EAAWtoC,KAAK,KAAO,IAC9B,KAEJ5J,KAAKg2C,0BAA4B,IAAInvC,OACjC,KAAOorC,EAAYroC,KAAK,KAAO,IAC/B,KAEJ5J,KAAKi2C,wBAA0B,IAAIpvC,OAC/B,KAAO6uC,EAAU9rC,KAAK,KAAO,IAC7B,KAMR,SAASssC,KACL,OAAOl2C,KAAKm2C,QAAU,IAAM,GAqChC,SAAS3N,GAAS7zB,EAAOyhC,GACrBpK,EAAer3B,EAAO,EAAG,EAAG,WACxB,OAAO3U,KAAKmsC,aAAa3D,SACrBxoC,KAAKm2C,QACLn2C,KAAKq2C,UACLD,KAiBZ,SAASE,GAAc3G,EAAUpI,GAC7B,OAAOA,EAAOgP,eArDlBvK,EAAe,IAAK,CAAC,KAAM,GAAI,EAAG,QAClCA,EAAe,IAAK,CAAC,KAAM,GAAI,EAAGkK,IAClClK,EAAe,IAAK,CAAC,KAAM,GAAI,EAN/B,WACI,OAAOhsC,KAAKm2C,SAAW,KAO3BnK,EAAe,MAAO,EAAG,EAAG,WACxB,MAAO,GAAKkK,GAAQj5C,MAAM+C,MAAQorC,EAASprC,KAAKq2C,UAAW,KAG/DrK,EAAe,QAAS,EAAG,EAAG,WAC1B,MACI,GACAkK,GAAQj5C,MAAM+C,MACdorC,EAASprC,KAAKq2C,UAAW,GACzBjL,EAASprC,KAAKw2C,UAAW,KAIjCxK,EAAe,MAAO,EAAG,EAAG,WACxB,MAAO,GAAKhsC,KAAKm2C,QAAU/K,EAASprC,KAAKq2C,UAAW,KAGxDrK,EAAe,QAAS,EAAG,EAAG,WAC1B,MACI,GACAhsC,KAAKm2C,QACL/K,EAASprC,KAAKq2C,UAAW,GACzBjL,EAASprC,KAAKw2C,UAAW,KAcjChO,GAAS,KAAK,GACdA,GAAS,KAAK,GAIdsE,EAAa,OAAQ,KAGrBU,EAAgB,OAAQ,IAQxB+B,GAAc,IAAK+G,IACnB/G,GAAc,IAAK+G,IACnB/G,GAAc,IAAKX,IACnBW,GAAc,IAAKX,IACnBW,GAAc,IAAKX,IACnBW,GAAc,KAAMX,GAAWJ,GAC/Be,GAAc,KAAMX,GAAWJ,GAC/Be,GAAc,KAAMX,GAAWJ,GAE/Be,GAAc,MAAOV,IACrBU,GAAc,QAAST,IACvBS,GAAc,MAAOV,IACrBU,GAAc,QAAST,IAEvBoB,GAAc,CAAC,IAAK,MAAOM,IAC3BN,GAAc,CAAC,IAAK,MAAO,SAAU1jC,EAAO1P,EAAOwtC,GAC3CmM,EAAS3I,EAAMthC,GACnB1P,EAAM0zC,IAAmB,KAAXiG,EAAgB,EAAIA,IAEtCvG,GAAc,CAAC,IAAK,KAAM,SAAU1jC,EAAO1P,EAAOwtC,GAC9CA,EAAOoM,MAAQpM,EAAOF,QAAQuM,KAAKnqC,GACnC89B,EAAOsM,UAAYpqC,IAEvB0jC,GAAc,CAAC,IAAK,MAAO,SAAU1jC,EAAO1P,EAAOwtC,GAC/CxtC,EAAM0zC,IAAQ1C,EAAMthC,GACpBm7B,EAAgB2C,GAAQjB,SAAU,IAEtC6G,GAAc,MAAO,SAAU1jC,EAAO1P,EAAOwtC,GACzC,IAAIvX,EAAMvmB,EAAM7M,OAAS,EACzB7C,EAAM0zC,IAAQ1C,EAAMthC,EAAMm/B,OAAO,EAAG5Y,IACpCj2B,EAAM2zC,IAAU3C,EAAMthC,EAAMm/B,OAAO5Y,IACnC4U,EAAgB2C,GAAQjB,SAAU,IAEtC6G,GAAc,QAAS,SAAU1jC,EAAO1P,EAAOwtC,GAC3C,IAAIuM,EAAOrqC,EAAM7M,OAAS,EACtBm3C,EAAOtqC,EAAM7M,OAAS,EAC1B7C,EAAM0zC,IAAQ1C,EAAMthC,EAAMm/B,OAAO,EAAGkL,IACpC/5C,EAAM2zC,IAAU3C,EAAMthC,EAAMm/B,OAAOkL,EAAM,IACzC/5C,EAAM4zC,IAAU5C,EAAMthC,EAAMm/B,OAAOmL,IACnCnP,EAAgB2C,GAAQjB,SAAU,IAEtC6G,GAAc,MAAO,SAAU1jC,EAAO1P,EAAOwtC,GACzC,IAAIvX,EAAMvmB,EAAM7M,OAAS,EACzB7C,EAAM0zC,IAAQ1C,EAAMthC,EAAMm/B,OAAO,EAAG5Y,IACpCj2B,EAAM2zC,IAAU3C,EAAMthC,EAAMm/B,OAAO5Y,MAEvCmd,GAAc,QAAS,SAAU1jC,EAAO1P,EAAOwtC,GAC3C,IAAIuM,EAAOrqC,EAAM7M,OAAS,EACtBm3C,EAAOtqC,EAAM7M,OAAS,EAC1B7C,EAAM0zC,IAAQ1C,EAAMthC,EAAMm/B,OAAO,EAAGkL,IACpC/5C,EAAM2zC,IAAU3C,EAAMthC,EAAMm/B,OAAOkL,EAAM,IACzC/5C,EAAM4zC,IAAU5C,EAAMthC,EAAMm/B,OAAOmL,MAWvC,IAKIC,GAAa9I,EAAW,SAAS,GAUrC,IAuBI+I,GAvBAC,GAAa,CACbC,SA7iDkB,CAClBC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAwiDV7K,eAl7CwB,CACxB8K,IAAK,YACLC,GAAI,SACJC,EAAG,aACHC,GAAI,eACJC,IAAK,sBACLC,KAAM,6BA66CNrL,YAh5CqB,eAi5CrBP,QA34CiB,KA44CjB6L,uBA34CgC,UA44ChCC,aAt4CsB,CACtBC,OAAQ,QACRC,KAAM,SACN7c,EAAG,gBACH8c,GAAI,aACJjvC,EAAG,WACHkvC,GAAI,aACJtF,EAAG,UACHuF,GAAI,WACJxF,EAAG,QACHyF,GAAI,UACJ7R,EAAG,SACH8R,GAAI,WACJxF,EAAG,UACHyF,GAAI,YACJ/F,EAAG,SACHgG,GAAI,YAw3CJvH,OAAQI,GACRL,YAAaM,GAEbsC,KAzlBoB,CACpBL,IAAK,EACLC,IAAK,GAylBLkB,SAAUK,GACVP,YAAaS,GACbR,cAAeO,GAEfyD,cAhC6B,iBAoC7BC,GAAU,GACVC,GAAiB,GAcrB,SAASC,GAAgB3uC,GACrB,OAAOA,GAAMA,EAAIlG,cAAcxB,QAAQ,IAAK,KAMhD,SAASs2C,GAAaC,GAOlB,IANA,IACI13C,EACAiH,EACAi/B,EACAzjC,EAJAtF,EAAI,EAMDA,EAAIu6C,EAAMp5C,QAAQ,CAKrB,IAHA0B,GADAyC,EAAQ+0C,GAAgBE,EAAMv6C,IAAIsF,MAAM,MAC9BnE,OAEV2I,GADAA,EAAOuwC,GAAgBE,EAAMv6C,EAAI,KACnB8J,EAAKxE,MAAM,KAAO,KACrB,EAAJzC,GAAO,CAEV,GADAkmC,EAASyR,GAAWl1C,EAAMlH,MAAM,EAAGyE,GAAGuI,KAAK,MAEvC,OAAO29B,EAEX,GACIj/B,GACAA,EAAK3I,QAAU0B,GArC/B,SAAsB43C,EAAMC,GAGxB,IAFA,IACIC,EAAO72C,KAAKuvC,IAAIoH,EAAKt5C,OAAQu5C,EAAKv5C,QACjCnB,EAAI,EAAGA,EAAI26C,EAAM36C,GAAK,EACvB,GAAIy6C,EAAKz6C,KAAO06C,EAAK16C,GACjB,OAAOA,EAGf,OAAO26C,EA8BKC,CAAat1C,EAAOwE,IAASjH,EAAI,EAGjC,MAEJA,IAEJ7C,IAEJ,OAAOw4C,GAGX,SAASgC,GAAWr3C,GAChB,IAAI03C,EAGJ,QACsBj3C,IAAlBu2C,GAAQh3C,SACU,IAAX4kC,IACPA,IACAA,GAAOC,QAEP,IACI6S,EAAYrC,GAAasC,MAEzBC,QAAe,KAAc53C,GAC7B63C,GAAmBH,GACrB,MAAO7wC,GAGLmwC,GAAQh3C,GAAQ,KAGxB,OAAOg3C,GAAQh3C,GAMnB,SAAS63C,GAAmBtvC,EAAK6W,GAsB7B,OApBI7W,KAEI8T,EADAgpB,EAAYjmB,GACL04B,GAAUvvC,GAEVwvC,GAAaxvC,EAAK6W,IAKzBi2B,GAAeh5B,EAEQ,oBAAZjC,SAA2BA,QAAQC,MAE1CD,QAAQC,KACJ,UAAY9R,EAAM,2CAM3B8sC,GAAasC,MAGxB,SAASI,GAAa/3C,EAAM2oC,GACxB,GAAe,OAAXA,EAiDA,cADOqO,GAAQh3C,GACR,KAhDP,IAAI4lC,EACA0D,EAAegM,GAEnB,GADA3M,EAAOqP,KAAOh4C,EACO,MAAjBg3C,GAAQh3C,GACRmpC,EACI,uBACA,2OAKJG,EAAe0N,GAAQh3C,GAAMi4C,aAC1B,GAA2B,MAAvBtP,EAAOuP,aACd,GAAoC,MAAhClB,GAAQrO,EAAOuP,cACf5O,EAAe0N,GAAQrO,EAAOuP,cAAcD,YACzC,CAEH,GAAc,OADdrS,EAASyR,GAAW1O,EAAOuP,eAWvB,OAPKjB,GAAetO,EAAOuP,gBACvBjB,GAAetO,EAAOuP,cAAgB,IAE1CjB,GAAetO,EAAOuP,cAAc38C,KAAK,CACrCyE,KAAMA,EACN2oC,OAAQA,IAEL,KATPW,EAAe1D,EAAOqS,QA0BlC,OAbAjB,GAAQh3C,GAAQ,IAAIwpC,EAAOH,EAAaC,EAAcX,IAElDsO,GAAej3C,IACfi3C,GAAej3C,GAAMm4C,QAAQ,SAAUhJ,GACnC4I,GAAa5I,EAAEnvC,KAAMmvC,EAAExG,UAO/BkP,GAAmB73C,GAEZg3C,GAAQh3C,GAsDvB,SAAS83C,GAAUvvC,GACf,IAAIq9B,EAMJ,KAHIr9B,EADAA,GAAOA,EAAIkgC,SAAWlgC,EAAIkgC,QAAQkP,MAC5BpvC,EAAIkgC,QAAQkP,MAGjBpvC,GACD,OAAO8sC,GAGX,IAAK70C,EAAQ+H,GAAM,CAGf,GADAq9B,EAASyR,GAAW9uC,GAEhB,OAAOq9B,EAEXr9B,EAAM,CAACA,GAGX,OAAO4uC,GAAa5uC,GAOxB,SAAS6vC,GAAc7wC,GACnB,IACIhD,EAAIgD,EAAE8wC,GAuCV,OArCI9zC,IAAsC,IAAjCyhC,EAAgBz+B,GAAG8sB,WACxBA,EACI9vB,EAAEoqC,IAAS,GAAgB,GAAXpqC,EAAEoqC,IACZA,GACApqC,EAAEqqC,IAAQ,GAAKrqC,EAAEqqC,IAAQjC,GAAYpoC,EAAEmqC,IAAOnqC,EAAEoqC,KAChDC,GACArqC,EAAEsqC,IAAQ,GACA,GAAVtqC,EAAEsqC,KACW,KAAZtqC,EAAEsqC,MACgB,IAAdtqC,EAAEuqC,KACe,IAAdvqC,EAAEwqC,KACiB,IAAnBxqC,EAAEyqC,KACVH,GACAtqC,EAAEuqC,IAAU,GAAiB,GAAZvqC,EAAEuqC,IACnBA,GACAvqC,EAAEwqC,IAAU,GAAiB,GAAZxqC,EAAEwqC,IACnBA,GACAxqC,EAAEyqC,IAAe,GAAsB,IAAjBzqC,EAAEyqC,IACxBA,IACC,EAGPhJ,EAAgBz+B,GAAG+wC,qBAClBjkB,EAAWqa,IAAmBE,GAAXva,KAEpBA,EAAWua,IAEX5I,EAAgBz+B,GAAGgxC,iBAAgC,IAAdlkB,IACrCA,EAAW4a,IAEXjJ,EAAgBz+B,GAAGixC,mBAAkC,IAAdnkB,IACvCA,EAAW6a,IAGflJ,EAAgBz+B,GAAG8sB,SAAWA,GAG3B9sB,EAKX,IAAIkxC,GAAmB,iJACnBC,GAAgB,6IAChBC,GAAU,wBACVC,GAAW,CACP,CAAC,eAAgB,uBACjB,CAAC,aAAc,mBACf,CAAC,eAAgB,kBACjB,CAAC,aAAc,eAAe,GAC9B,CAAC,WAAY,eACb,CAAC,UAAW,cAAc,GAC1B,CAAC,aAAc,cACf,CAAC,WAAY,SACb,CAAC,aAAc,eACf,CAAC,YAAa,eAAe,GAC7B,CAAC,UAAW,SACZ,CAAC,SAAU,SAAS,GACpB,CAAC,OAAQ,SAAS,IAGtBC,GAAW,CACP,CAAC,gBAAiB,uBAClB,CAAC,gBAAiB,sBAClB,CAAC,WAAY,kBACb,CAAC,QAAS,aACV,CAAC,cAAe,qBAChB,CAAC,cAAe,oBAChB,CAAC,SAAU,gBACX,CAAC,OAAQ,YACT,CAAC,KAAM,SAEXC,GAAkB,qBAElBhS,GAAU,0LACViS,GAAa,CACTC,GAAI,EACJC,IAAK,EACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,KAIb,SAASC,GAAc/Q,GACnB,IAAI9rC,EACAkY,EAGA4kC,EACAC,EACAC,EACAC,EALAj+B,EAAS8sB,EAAOvmC,GAChB6E,EAAQwxC,GAAiBnxC,KAAKuU,IAAW68B,GAAcpxC,KAAKuU,GAMhE,GAAI5U,EAAO,CAGP,IAFA++B,EAAgB2C,GAAQjC,KAAM,EAEzB7pC,EAAI,EAAGkY,EAAI6jC,GAAS56C,OAAQnB,EAAIkY,EAAGlY,IACpC,GAAI+7C,GAAS/7C,GAAG,GAAGyK,KAAKL,EAAM,IAAK,CAC/B2yC,EAAahB,GAAS/7C,GAAG,GACzB88C,GAA+B,IAAnBf,GAAS/7C,GAAG,GACxB,MAGR,GAAkB,MAAd+8C,EAAJ,CAIA,GAAI3yC,EAAM,GAAI,CACV,IAAKpK,EAAI,EAAGkY,EAAI8jC,GAAS76C,OAAQnB,EAAIkY,EAAGlY,IACpC,GAAIg8C,GAASh8C,GAAG,GAAGyK,KAAKL,EAAM,IAAK,CAE/B4yC,GAAc5yC,EAAM,IAAM,KAAO4xC,GAASh8C,GAAG,GAC7C,MAGR,GAAkB,MAAdg9C,EAEA,YADAlR,EAAO1B,UAAW,GAI1B,GAAK0S,GAA2B,MAAdE,EAAlB,CAIA,GAAI5yC,EAAM,GAAI,CACV,IAAI0xC,GAAQrxC,KAAKL,EAAM,IAInB,YADA0hC,EAAO1B,UAAW,GAFlB6S,EAAW,IAMnBnR,EAAOP,GAAKwR,GAAcC,GAAc,KAAOC,GAAY,IAC3DC,GAA0BpR,QAZtBA,EAAO1B,UAAW,OAjBlB0B,EAAO1B,UAAW,OA+BtB0B,EAAO1B,UAAW,EAI1B,SAAS+S,GACLC,EACAC,EACAC,EACAC,EACAC,EACAC,GAEIjtC,EAAS,CAejB,SAAwB4sC,GAChBjO,EAAOve,SAASwsB,EAAS,IAC7B,IAAIjO,GAAQ,GACR,OAAO,IAAOA,EACX,GAAIA,GAAQ,IACf,OAAO,KAAOA,EAElB,OAAOA,EArBHuO,CAAeN,GACfrK,GAAyBp0C,QAAQ0+C,GACjCzsB,SAAS0sB,EAAQ,IACjB1sB,SAAS2sB,EAAS,IAClB3sB,SAAS4sB,EAAW,KAOxB,OAJIC,GACAjtC,EAAO9R,KAAKkyB,SAAS6sB,EAAW,KAG7BjtC,EAuDX,SAASmtC,GAAkB7R,GACvB,IAhBgC8R,EAlBdC,EAAYC,EAAahS,EAkCvC1hC,EAAQ6/B,GAAQx/B,KAAuBqhC,EAAOvmC,GAxC7CvB,QAAQ,oBAAqB,KAC7BA,QAAQ,WAAY,KACpBA,QAAQ,SAAU,IAClBA,QAAQ,SAAU,KAuCnBoG,GACA2zC,EAAcZ,GACV/yC,EAAM,GACNA,EAAM,GACNA,EAAM,GACNA,EAAM,GACNA,EAAM,GACNA,EAAM,IA3CIyzC,EA6CIzzC,EAAM,GA7CE0zC,EA6CEC,EA7CWjS,EA6CEA,EA5CzC+R,GAEsBpH,GAA2B93C,QAAQk/C,KACrC,IAAI72C,KAChB82C,EAAY,GACZA,EAAY,GACZA,EAAY,IACdE,UAEF7U,EAAgB2C,GAAQ5B,iBAAkB,EAC1C4B,EAAO1B,UAAW,IAsCtB0B,EAAO0P,GAAKuC,EACZjS,EAAOL,MAhCUwS,EAgCa7zC,EAAM,GAhCRwzC,EAgCYxzC,EAAM,GAhCF8zC,EAgCM9zC,EAAM,IA/BxD6zC,EACO/B,GAAW+B,GACXL,EAEA,EAKI,MAHPO,EAAKvtB,SAASstB,EAAW,MACzBxzC,EAAIyzC,EAAK,MACM,KACHzzC,GAwBhBohC,EAAOrB,GAAKkK,GAAcl2C,MAAM,KAAMqtC,EAAO0P,IAC7C1P,EAAOrB,GAAG2T,cAActS,EAAOrB,GAAG4T,gBAAkBvS,EAAOL,MAE3DtC,EAAgB2C,GAAQ7B,SAAU,IAElC6B,EAAO1B,UAAW,EA4C1B,SAASkU,GAAS52C,EAAGC,EAAG42C,GACpB,OAAS,MAAL72C,EACOA,EAEF,MAALC,EACOA,EAEJ42C,EAoBX,SAASC,GAAgB1S,GACrB,IAAI9rC,EAGAy+C,EAEAC,EAvBkB5S,EAElB6S,EAkBA3wC,EAAQ,GAKZ,IAAI89B,EAAOrB,GAAX,CAgCA,IAzDsBqB,EA6BSA,EA3B3B6S,EAAW,IAAI33C,KAAKuZ,EAAM4I,OA2B9Bs1B,EA1BI3S,EAAO8S,QACA,CACHD,EAAS9J,iBACT8J,EAASE,cACTF,EAASG,cAGV,CAACH,EAASlK,cAAekK,EAASI,WAAYJ,EAASK,WAsB1DlT,EAAO8F,IAAyB,MAAnB9F,EAAO0P,GAAGzJ,KAAqC,MAApBjG,EAAO0P,GAAG1J,KA0E1D,SAA+BhG,GAC3B,IAAI7D,EAAGgX,EAAU5J,EAAMC,EAASN,EAAU3gC,EAAM6qC,EAAiBC,EAGrD,OADZlX,EAAI6D,EAAO8F,IACLwN,IAAqB,MAAPnX,EAAEoX,GAAoB,MAAPpX,EAAEqX,GACjCtK,EAAM,EACNC,EAAM,EAMNgK,EAAWX,GACPrW,EAAEmX,GACFtT,EAAO0P,GAAG3J,IACV6D,GAAW6J,KAAe,EAAG,GAAGpQ,MAEpCkG,EAAOiJ,GAASrW,EAAEoX,EAAG,KACrB/J,EAAUgJ,GAASrW,EAAEqX,EAAG,IACV,GAAe,EAAVhK,KACf4J,GAAkB,KAGtBlK,EAAMlJ,EAAOF,QAAQ4T,MAAMxK,IAC3BC,EAAMnJ,EAAOF,QAAQ4T,MAAMvK,IAE3BkK,EAAUzJ,GAAW6J,KAAevK,EAAKC,GAEzCgK,EAAWX,GAASrW,EAAEwX,GAAI3T,EAAO0P,GAAG3J,IAAOsN,EAAQhQ,MAGnDkG,EAAOiJ,GAASrW,EAAEA,EAAGkX,EAAQ9J,MAElB,MAAPpN,EAAEoM,IAEFiB,EAAUrN,EAAEoM,GACE,GAAe,EAAViB,KACf4J,GAAkB,GAER,MAAPjX,EAAEj+B,GAETsrC,EAAUrN,EAAEj+B,EAAIgrC,GACZ/M,EAAEj+B,EAAI,GAAW,EAANi+B,EAAEj+B,KACbk1C,GAAkB,IAItB5J,EAAUN,GAGdK,EAAO,GAAKA,EAAOQ,GAAYoJ,EAAUjK,EAAKC,GAC9C9L,EAAgB2C,GAAQ4P,gBAAiB,EACf,MAAnBwD,EACP/V,EAAgB2C,GAAQ6P,kBAAmB,GAE3CtnC,EAAO+gC,GAAmB6J,EAAU5J,EAAMC,EAASN,EAAKC,GACxDnJ,EAAO0P,GAAG3J,IAAQx9B,EAAK86B,KACvBrD,EAAO4T,WAAarrC,EAAKmhC,WAlIzBmK,CAAsB7T,GAID,MAArBA,EAAO4T,aACPhB,EAAYJ,GAASxS,EAAO0P,GAAG3J,IAAO4M,EAAY5M,MAG9C/F,EAAO4T,WAAa1L,GAAW0K,IACT,IAAtB5S,EAAO4T,cAEPvW,EAAgB2C,GAAQ2P,oBAAqB,GAGjD5L,EAAO8E,GAAc+J,EAAW,EAAG5S,EAAO4T,YAC1C5T,EAAO0P,GAAG1J,IAASjC,EAAKgP,cACxB/S,EAAO0P,GAAGzJ,IAAQlC,EAAKiP,cAQtB9+C,EAAI,EAAGA,EAAI,GAAqB,MAAhB8rC,EAAO0P,GAAGx7C,KAAcA,EACzC8rC,EAAO0P,GAAGx7C,GAAKgO,EAAMhO,GAAKy+C,EAAYz+C,GAI1C,KAAOA,EAAI,EAAGA,IACV8rC,EAAO0P,GAAGx7C,GAAKgO,EAAMhO,GACD,MAAhB8rC,EAAO0P,GAAGx7C,GAAoB,IAANA,EAAU,EAAI,EAAK8rC,EAAO0P,GAAGx7C,GAKrC,KAApB8rC,EAAO0P,GAAGxJ,KACY,IAAtBlG,EAAO0P,GAAGvJ,KACY,IAAtBnG,EAAO0P,GAAGtJ,KACiB,IAA3BpG,EAAO0P,GAAGrJ,MAEVrG,EAAO8T,UAAW,EAClB9T,EAAO0P,GAAGxJ,IAAQ,GAGtBlG,EAAOrB,IAAMqB,EAAO8S,QAAUjK,GAAgBP,IAAY31C,MACtD,KACAuP,GAEJ6xC,EAAkB/T,EAAO8S,QACnB9S,EAAOrB,GAAG0K,YACVrJ,EAAOrB,GAAGuT,SAIG,MAAflS,EAAOL,MACPK,EAAOrB,GAAG2T,cAActS,EAAOrB,GAAG4T,gBAAkBvS,EAAOL,MAG3DK,EAAO8T,WACP9T,EAAO0P,GAAGxJ,IAAQ,IAKlBlG,EAAO8F,SACgB,IAAhB9F,EAAO8F,GAAGyC,GACjBvI,EAAO8F,GAAGyC,IAAMwL,IAEhB1W,EAAgB2C,GAAQ5B,iBAAkB,IAwElD,SAASgT,GAA0BpR,GAE/B,GAAIA,EAAOP,KAAOhrB,EAAMu/B,SAIxB,GAAIhU,EAAOP,KAAOhrB,EAAMw/B,SAAxB,CAIAjU,EAAO0P,GAAK,GACZrS,EAAgB2C,GAAQnxB,OAAQ,EAgBhC,IAbA,IAEImjC,EAEA3nC,EA72DyBA,EAAOnI,EAAO89B,EAy2DvC9sB,EAAS,GAAK8sB,EAAOvmC,GAMrBy6C,EAAehhC,EAAO7d,OACtB8+C,EAAyB,EAG7B7sC,EACIy6B,EAAa/B,EAAOP,GAAIO,EAAOF,SAASxhC,MAAMgjC,IAAqB,GAElEptC,EAAI,EAAGA,EAAIoT,EAAOjS,OAAQnB,IAC3BmW,EAAQ/C,EAAOpT,IACf89C,GAAe9+B,EAAO5U,MAAMgnC,GAAsBj7B,EAAO21B,KACrD,IAAI,MAGiB,GADrBoU,EAAUlhC,EAAOmuB,OAAO,EAAGnuB,EAAOrgB,QAAQm/C,KAC9B38C,QACRgoC,EAAgB2C,GAAQxC,YAAY5qC,KAAKwhD,GAE7ClhC,EAASA,EAAO5gB,MACZ4gB,EAAOrgB,QAAQm/C,GAAeA,EAAY38C,QAE9C8+C,GAA0BnC,EAAY38C,QAGtCosC,EAAqBp3B,IACjB2nC,EACA3U,EAAgB2C,GAAQnxB,OAAQ,EAEhCwuB,EAAgB2C,GAAQzC,aAAa3qC,KAAKyX,GAz4DzBA,EA24DGA,EA34DW21B,EA24DSA,EA14DvC,OADuB99B,EA24DG8vC,IA14DlB1V,EAAWh1B,GAAQ+C,IACpC/C,GAAO+C,GAAOnI,EAAO89B,EAAO0P,GAAI1P,EAAQ31B,IA04D7B21B,EAAOlB,UAAYkT,GAC1B3U,EAAgB2C,GAAQzC,aAAa3qC,KAAKyX,GAKlDgzB,EAAgB2C,GAAQvC,cACpByW,EAAeC,EACC,EAAhBjhC,EAAO7d,QACPgoC,EAAgB2C,GAAQxC,YAAY5qC,KAAKsgB,GAKzC8sB,EAAO0P,GAAGxJ,KAAS,KACiB,IAApC7I,EAAgB2C,GAAQjB,SACN,EAAlBiB,EAAO0P,GAAGxJ,MAEV7I,EAAgB2C,GAAQjB,aAAUjnC,GAGtCulC,EAAgB2C,GAAQhC,gBAAkBgC,EAAO0P,GAAGp9C,MAAM,GAC1D+qC,EAAgB2C,GAAQ9B,SAAW8B,EAAOsM,UAE1CtM,EAAO0P,GAAGxJ,IAgBd,SAAyBjJ,EAAQoX,EAAMnW,GAGnC,GAAgB,MAAZA,EAEA,OAAOmW,EAEX,OAA2B,MAAvBpX,EAAOqX,aACArX,EAAOqX,aAAaD,EAAMnW,GACX,MAAfjB,EAAOoP,OAEdkI,EAAOtX,EAAOoP,KAAKnO,KACPmW,EAAO,KACfA,GAAQ,IAGRA,EADCE,GAAiB,KAATF,EAGNA,EAFI,GAKJA,EArCOG,CACdxU,EAAOF,QACPE,EAAO0P,GAAGxJ,IACVlG,EAAOsM,WAKC,QADZrO,EAAMZ,EAAgB2C,GAAQ/B,OAE1B+B,EAAO0P,GAAG3J,IAAQ/F,EAAOF,QAAQ2U,gBAAgBxW,EAAK+B,EAAO0P,GAAG3J,MAGpE2M,GAAgB1S,GAChByP,GAAczP,QA/EV6R,GAAkB7R,QAJlB+Q,GAAc/Q,GAwMtB,SAAS0U,GAAc1U,GACnB,IAAI99B,EAAQ89B,EAAOvmC,GACfujC,EAASgD,EAAOP,GAIpB,OAFAO,EAAOF,QAAUE,EAAOF,SAAWqP,GAAUnP,EAAON,IAEtC,OAAVx9B,QAA8BpK,IAAXklC,GAAkC,KAAV96B,EACpC+8B,EAAc,CAAEvB,WAAW,KAGjB,iBAAVx7B,IACP89B,EAAOvmC,GAAKyI,EAAQ89B,EAAOF,QAAQ6U,SAASzyC,IAG5Cg+B,EAASh+B,GACF,IAAI69B,EAAO0P,GAAcvtC,KACzB06B,EAAO16B,GACd89B,EAAOrB,GAAKz8B,EACLrK,EAAQmlC,GA1GvB,SAAkCgD,GAC9B,IAAI4U,EACAC,EACAC,EACA5gD,EACA6gD,EACAC,EACAC,GAAoB,EAExB,GAAyB,IAArBjV,EAAOP,GAAGpqC,OAGV,OAFAgoC,EAAgB2C,GAAQnC,eAAgB,EACxCmC,EAAOrB,GAAK,IAAIzjC,KAAKgkC,KAIzB,IAAKhrC,EAAI,EAAGA,EAAI8rC,EAAOP,GAAGpqC,OAAQnB,IAC9B6gD,EAAe,EACfC,GAAmB,EACnBJ,EAAatV,EAAW,GAAIU,GACN,MAAlBA,EAAO8S,UACP8B,EAAW9B,QAAU9S,EAAO8S,SAEhC8B,EAAWnV,GAAKO,EAAOP,GAAGvrC,GAC1Bk9C,GAA0BwD,GAEtBvW,EAAQuW,KACRI,GAAmB,GAIvBD,GAAgB1X,EAAgBuX,GAAYnX,cAG5CsX,GAAkE,GAAlD1X,EAAgBuX,GAAYrX,aAAaloC,OAEzDgoC,EAAgBuX,GAAYM,MAAQH,EAE/BE,EAaGF,EAAeD,IACfA,EAAcC,EACdF,EAAaD,IAbE,MAAfE,GACAC,EAAeD,GACfE,KAEAF,EAAcC,EACdF,EAAaD,EACTI,IACAC,GAAoB,IAWpC99C,EAAO6oC,EAAQ6U,GAAcD,GAkDzBO,CAAyBnV,GAClBhD,EACPoU,GAA0BpR,GAc1BtD,EADAx6B,GADiB89B,EAVDA,GAWDvmC,IAEfumC,EAAOrB,GAAK,IAAIzjC,KAAKuZ,EAAM4I,OACpBuf,EAAO16B,GACd89B,EAAOrB,GAAK,IAAIzjC,KAAKgH,EAAM46B,WACH,iBAAV56B,EAjdtB,SAA0B89B,GACtB,IAAIl6B,EAAUqqC,GAAgBxxC,KAAKqhC,EAAOvmC,IAC1B,OAAZqM,GAKJirC,GAAc/Q,IACU,IAApBA,EAAO1B,kBACA0B,EAAO1B,SAKlBuT,GAAkB7R,IACM,IAApBA,EAAO1B,kBACA0B,EAAO1B,SAKd0B,EAAOlB,QACPkB,EAAO1B,UAAW,EAGlB7pB,EAAM2gC,wBAAwBpV,MAtB9BA,EAAOrB,GAAK,IAAIzjC,MAAM4K,EAAQ,IA+c9BuvC,CAAiBrV,GACVnoC,EAAQqK,IACf89B,EAAO0P,GAAKt5C,EAAI8L,EAAM5P,MAAM,GAAI,SAAUL,GACtC,OAAO6yB,SAAS7yB,EAAK,MAEzBygD,GAAgB1S,IACT3D,EAASn6B,GA1ExB,SAA0B89B,GACtB,IAII9rC,EACAohD,EALAtV,EAAOrB,KAKP2W,OAAsBx9C,KADtB5D,EAAI2uC,EAAqB7C,EAAOvmC,KAClB4xC,IAAoBn3C,EAAE6vC,KAAO7vC,EAAEm3C,IACjDrL,EAAO0P,GAAKt5C,EACR,CAAClC,EAAEmvC,KAAMnvC,EAAE4vC,MAAOwR,EAAWphD,EAAEmgD,KAAMngD,EAAEqhD,OAAQrhD,EAAE6E,OAAQ7E,EAAEshD,aAC3D,SAAUvjD,GACN,OAAOA,GAAO6yB,SAAS7yB,EAAK,MAIpCygD,GAAgB1S,IA6DZyV,CAAiBzV,GACVrD,EAASz6B,GAEhB89B,EAAOrB,GAAK,IAAIzjC,KAAKgH,GAErBuS,EAAM2gC,wBAAwBpV,GA1B7B3B,EAAQ2B,KACTA,EAAOrB,GAAK,MAGTqB,IA0BX,SAAS7C,GAAiBj7B,EAAO86B,EAAQC,EAAQC,EAAQwY,GACrD,IAAIjD,EAAI,GA2BR,OAzBe,IAAXzV,IAA8B,IAAXA,IACnBE,EAASF,EACTA,OAASllC,IAGE,IAAXmlC,IAA8B,IAAXA,IACnBC,EAASD,EACTA,OAASnlC,IAIRukC,EAASn6B,IAAUq6B,EAAcr6B,IACjCrK,EAAQqK,IAA2B,IAAjBA,EAAM7M,UAEzB6M,OAAQpK,GAIZ26C,EAAEjT,kBAAmB,EACrBiT,EAAEK,QAAUL,EAAE7S,OAAS8V,EACvBjD,EAAE/S,GAAKzC,EACPwV,EAAEh5C,GAAKyI,EACPuwC,EAAEhT,GAAKzC,EACPyV,EAAE3T,QAAU5B,GA5FRL,EAAM,IAAIkD,EAAO0P,GAAciF,GADb1U,EA+FEyS,MA7FhBqB,WAEJjX,EAAIrwB,IAAI,EAAG,KACXqwB,EAAIiX,cAAWh8C,GAGZ+kC,EA0FX,SAAS4W,GAAYvxC,EAAO86B,EAAQC,EAAQC,GACxC,OAAOC,GAAiBj7B,EAAO86B,EAAQC,EAAQC,GAAQ,GAre3DzoB,EAAM2gC,wBAA0BhV,EAC5B,gSAGA,SAAUJ,GACNA,EAAOrB,GAAK,IAAIzjC,KAAK8kC,EAAOvmC,IAAMumC,EAAO8S,QAAU,OAAS,OAuLpEr+B,EAAMu/B,SAAW,aAGjBv/B,EAAMw/B,SAAW,aAySjB,IAAI0B,GAAevV,EACX,qGACA,WACI,IAAIwV,EAAQnC,GAAY9gD,MAAM,KAAM2D,WACpC,OAAIZ,KAAK2oC,WAAauX,EAAMvX,UACjBuX,EAAQlgD,KAAOA,KAAOkgD,EAEtB3W,MAInB4W,GAAezV,EACX,qGACA,WACI,IAAIwV,EAAQnC,GAAY9gD,MAAM,KAAM2D,WACpC,OAAIZ,KAAK2oC,WAAauX,EAAMvX,UACT3oC,KAARkgD,EAAelgD,KAAOkgD,EAEtB3W,MAUvB,SAAS6W,GAAO5gD,EAAI6gD,GAChB,IAAIlZ,EAAK3oC,EAIT,KAFI6hD,EADmB,IAAnBA,EAAQ1gD,QAAgBwC,EAAQk+C,EAAQ,IAC9BA,EAAQ,GAEjBA,GAAQ1gD,OACT,OAAOo+C,KAGX,IADA5W,EAAMkZ,EAAQ,GACT7hD,EAAI,EAAGA,EAAI6hD,EAAQ1gD,SAAUnB,EACzB6hD,EAAQ7hD,GAAGmqC,YAAa0X,EAAQ7hD,GAAGgB,GAAI2nC,KACxCA,EAAMkZ,EAAQ7hD,IAGtB,OAAO2oC,EAgBX,IAIImZ,GAAW,CACX,OACA,UACA,QACA,OACA,MACA,OACA,SACA,SACA,eAyCJ,SAASC,GAASztB,GACd,IAAIwa,EAAkBH,EAAqBra,GACvC0tB,EAAQlT,EAAgBK,MAAQ,EAChC8S,EAAWnT,EAAgBoT,SAAW,EACtCxP,EAAS5D,EAAgBc,OAAS,EAClCuS,EAAQrT,EAAgBuG,MAAQvG,EAAgBsT,SAAW,EAC3DC,EAAOvT,EAAgBqI,KAAO,EAC9BQ,EAAQ7I,EAAgBqR,MAAQ,EAChCtI,EAAU/I,EAAgBuS,QAAU,EACpCrJ,EAAUlJ,EAAgBjqC,QAAU,EACpCy9C,EAAexT,EAAgBwS,aAAe,EAElD9/C,KAAK4oC,SAlDT,SAAyB1/B,GACrB,IAAIgB,EAEA1L,EADAuiD,GAAiB,EAErB,IAAK72C,KAAOhB,EACR,GACI09B,EAAW19B,EAAGgB,MAEuB,IAAjC/M,GAAQJ,KAAKujD,GAAUp2C,IACZ,MAAVhB,EAAEgB,IAAiB+7B,MAAM/8B,EAAEgB,KAGhC,OAAO,EAIf,IAAK1L,EAAI,EAAGA,EAAI8hD,GAAS3gD,SAAUnB,EAC/B,GAAI0K,EAAEo3C,GAAS9hD,IAAK,CAChB,GAAIuiD,EACA,OAAO,EAEPhzB,WAAW7kB,EAAEo3C,GAAS9hD,OAASsvC,EAAM5kC,EAAEo3C,GAAS9hD,OAChDuiD,GAAiB,GAK7B,OAAO,EAuBSC,CAAgB1T,GAGhCttC,KAAKihD,eACAH,EACS,IAAVtK,EACU,IAAVH,EACQ,IAARF,EAAe,GAAK,GAGxBn2C,KAAKkhD,OAASL,EAAe,EAARF,EAIrB3gD,KAAKmhD,SAAWjQ,EAAoB,EAAXuP,EAAuB,GAARD,EAExCxgD,KAAK2e,MAAQ,GAEb3e,KAAKoqC,QAAUqP,KAEfz5C,KAAKohD,UAGT,SAASC,GAAW9kD,GAChB,OAAOA,aAAegkD,GAG1B,SAASe,GAASjW,GACd,OAAIA,EAAS,GACyB,EAA3B/oC,KAAKwrB,OAAO,EAAIud,GAEhB/oC,KAAKwrB,MAAMud,GAuB1B,SAASpH,GAAOtvB,EAAO4sC,GACnBvV,EAAer3B,EAAO,EAAG,EAAG,WACxB,IAAIsvB,EAASjkC,KAAKwhD,YACdC,EAAO,IAKX,OAJIxd,EAAS,IACTA,GAAUA,EACVwd,EAAO,KAGPA,EACArW,KAAYnH,EAAS,IAAK,GAC1Bsd,EACAnW,IAAWnH,EAAS,GAAI,KAKpCA,GAAO,IAAK,KACZA,GAAO,KAAM,IAIbsL,GAAc,IAAKF,IACnBE,GAAc,KAAMF,IACpBa,GAAc,CAAC,IAAK,MAAO,SAAU1jC,EAAO1P,EAAOwtC,GAC/CA,EAAO8S,SAAU,EACjB9S,EAAOL,KAAOyX,GAAiBrS,GAAkB7iC,KAQrD,IAAIm1C,GAAc,kBAElB,SAASD,GAAiBrxC,EAASmN,GAC3Bja,GAAWia,GAAU,IAAI5U,MAAMyH,GAKnC,OAAgB,OAAZ9M,EACO,KAOQ,KAFnB8yC,EAAuB,IADvB5jB,IADQlvB,EAAQA,EAAQ5D,OAAS,IAAM,IACtB,IAAIiJ,MAAM+4C,KAAgB,CAAC,IAAK,EAAG,IAClC,GAAW7T,EAAMrb,EAAM,KAElB,EAAiB,MAAbA,EAAM,GAAa4jB,GAAWA,EAI7D,SAASuL,GAAgBp1C,EAAOq1C,GAC5B,IAAI1a,EACJ,OAAI0a,EAAM3X,QACN/C,EAAM0a,EAAM//C,QACZgJ,GACK0/B,EAASh+B,IAAU06B,EAAO16B,GACrBA,EACAuxC,GAAYvxC,IADN46B,UAC0BD,EAAIC,UAE9CD,EAAI8B,GAAG6Y,QAAQ3a,EAAI8B,GAAG7B,UAAYt8B,GAClCiU,EAAMwrB,aAAapD,GAAK,GACjBA,GAEA4W,GAAYvxC,GAAOu1C,QAIlC,SAASC,GAAc94C,GAGnB,OAAQ5G,KAAKwrB,MAAM5kB,EAAE+/B,GAAGgZ,qBA0J5B,SAASC,KACL,QAAOliD,KAAK2oC,YAAY3oC,KAAKkqC,QAA2B,IAAjBlqC,KAAKmqC,SApJhDprB,EAAMwrB,aAAe,aAwJrB,IAAI4X,GAAc,wDAIdC,GAAW,sKAEf,SAASC,GAAe71C,EAAOtC,GAC3B,IAKIo4C,EALAxvB,EAAWtmB,EAEX5D,EAAQ,KAkEZ,OA7DIy4C,GAAW70C,GACXsmB,EAAW,CACPkgB,GAAIxmC,EAAMy0C,cACVpO,EAAGrmC,EAAM00C,MACTnO,EAAGvmC,EAAM20C,SAENla,EAASz6B,KAAWy5B,OAAOz5B,IAClCsmB,EAAW,GACP5oB,EACA4oB,EAAS5oB,IAAQsC,EAEjBsmB,EAASguB,cAAgBt0C,IAErB5D,EAAQu5C,GAAYl5C,KAAKuD,KACjCi1C,EAAoB,MAAb74C,EAAM,IAAc,EAAI,EAC/BkqB,EAAW,CACP2f,EAAG,EACHI,EAAG/E,EAAMllC,EAAM2nC,KAASkR,EACxB3O,EAAGhF,EAAMllC,EAAM4nC,KAASiR,EACxBv4C,EAAG4kC,EAAMllC,EAAM6nC,KAAWgR,EAC1BpmB,EAAGyS,EAAMllC,EAAM8nC,KAAW+Q,EAC1BzO,GAAIlF,EAAMwT,GAA8B,IAArB14C,EAAM+nC,MAAwB8Q,KAE7C74C,EAAQw5C,GAASn5C,KAAKuD,KAC9Bi1C,EAAoB,MAAb74C,EAAM,IAAc,EAAI,EAC/BkqB,EAAW,CACP2f,EAAG8P,GAAS35C,EAAM,GAAI64C,GACtB1O,EAAGwP,GAAS35C,EAAM,GAAI64C,GACtBhb,EAAG8b,GAAS35C,EAAM,GAAI64C,GACtB5O,EAAG0P,GAAS35C,EAAM,GAAI64C,GACtB3O,EAAGyP,GAAS35C,EAAM,GAAI64C,GACtBv4C,EAAGq5C,GAAS35C,EAAM,GAAI64C,GACtBpmB,EAAGknB,GAAS35C,EAAM,GAAI64C,KAEP,MAAZ3uB,EAEPA,EAAW,GAES,iBAApB,IAAOA,EAAP,eAAOA,MACN,SAAUA,GAAY,OAAQA,KAE/BwvB,EAiDR,SAA2BxwC,EAAMouC,GAC7B,IAAI/Y,EACJ,IAAMr1B,EAAK62B,YAAauX,EAAMvX,UAC1B,MAAO,CAAEmY,aAAc,EAAG5P,OAAQ,GAGtCgP,EAAQ0B,GAAgB1B,EAAOpuC,GAC3BA,EAAK0wC,SAAStC,GACd/Y,EAAMsb,GAA0B3wC,EAAMouC,KAEtC/Y,EAAMsb,GAA0BvC,EAAOpuC,IACnCgvC,cAAgB3Z,EAAI2Z,aACxB3Z,EAAI+J,QAAU/J,EAAI+J,QAGtB,OAAO/J,EAhEOub,CACN3E,GAAYjrB,EAAS+W,MACrBkU,GAAYjrB,EAAS0D,MAGzB1D,EAAW,IACFkgB,GAAKsP,EAAQxB,aACtBhuB,EAASigB,EAAIuP,EAAQpR,QAGzB7wC,EAAM,IAAIkgD,GAASztB,GAEfuuB,GAAW70C,IAAUo6B,EAAWp6B,EAAO,aACvCnM,EAAI+pC,QAAU59B,EAAM49B,SAGpBiX,GAAW70C,IAAUo6B,EAAWp6B,EAAO,cACvCnM,EAAIuoC,SAAWp8B,EAAMo8B,UAGlBvoC,EAMX,SAASkiD,GAASI,EAAKlB,GAIfta,EAAMwb,GAAO50B,WAAW40B,EAAIngD,QAAQ,IAAK,MAE7C,OAAQyjC,MAAMkB,GAAO,EAAIA,GAAOsa,EAGpC,SAASgB,GAA0B3wC,EAAMouC,GACrC,IAAI/Y,EAAM,GAUV,OARAA,EAAI+J,OACAgP,EAAM9R,QAAUt8B,EAAKs8B,QAAyC,IAA9B8R,EAAMvS,OAAS77B,EAAK67B,QACpD77B,EAAKhQ,QAAQgV,IAAIqwB,EAAI+J,OAAQ,KAAK0R,QAAQ1C,MACxC/Y,EAAI+J,OAGV/J,EAAI2Z,cAAgBZ,GAASpuC,EAAKhQ,QAAQgV,IAAIqwB,EAAI+J,OAAQ,KAEnD/J,EAsBX,SAAS0b,GAAYC,EAAWnhD,GAC5B,OAAO,SAAUlD,EAAKskD,GAClB,IAASx2C,EAmBT,OAjBe,OAAXw2C,GAAoB9c,OAAO8c,KAC3BjY,EACInpC,EACA,YACIA,EACA,uDACAA,EACA,kGAGR4K,EAAM9N,EACNA,EAAMskD,EACNA,EAASx2C,GAIby2C,GAAYhjD,KADNqiD,GAAe5jD,EAAKskD,GACHD,GAChB9iD,MAIf,SAASgjD,GAAY1W,EAAKxZ,EAAUmwB,EAAU1Y,GAC1C,IAAIuW,EAAehuB,EAASmuB,cACxBJ,EAAOS,GAASxuB,EAASouB,OACzBhQ,EAASoQ,GAASxuB,EAASquB,SAE1B7U,EAAI3D,YAKT4B,EAA+B,MAAhBA,GAA8BA,EAEzC2G,GACAS,GAASrF,EAAKrsC,EAAIqsC,EAAK,SAAW4E,EAAS+R,GAE3CpC,GACA1S,EAAM7B,EAAK,OAAQrsC,EAAIqsC,EAAK,QAAUuU,EAAOoC,GAE7CnC,GACAxU,EAAIrD,GAAG6Y,QAAQxV,EAAIrD,GAAG7B,UAAY0Z,EAAemC,GAEjD1Y,GACAxrB,EAAMwrB,aAAa+B,EAAKuU,GAAQ3P,IA5FxCmR,GAAe7iD,GAAK+gD,GAAS3gD,UAC7ByiD,GAAea,QA9Xf,WACI,OAAOb,GAAe7Y,MA4d1B,IAAI1yB,GAAM+rC,GAAY,EAAG,OACrBryB,GAAWqyB,IAAa,EAAG,YAE/B,SAASM,GAAS32C,GACd,MAAwB,iBAAVA,GAAsBA,aAAiBlI,OAIzD,SAAS8+C,GAAc52C,GACnB,OACIg+B,EAASh+B,IACT06B,EAAO16B,IACP22C,GAAS32C,IACTy6B,EAASz6B,IAgDjB,SAA+BA,GAC3B,IAAI62C,EAAYlhD,EAAQqK,GACpB82C,GAAe,EACfD,IACAC,EAGkB,IAFd92C,EAAMN,OAAO,SAAUrO,GACnB,OAAQopC,EAASppC,IAASslD,GAAS32C,KACpC7M,QAEX,OAAO0jD,GAAaC,EAxDhBC,CAAsB/2C,IAO9B,SAA6BA,GACzB,IA4BIhO,EACAglD,EA7BAC,EAAa9c,EAASn6B,KAAWq6B,EAAcr6B,GAC/Ck3C,GAAe,EACfjvB,EAAa,CACT,QACA,OACA,IACA,SACA,QACA,IACA,OACA,MACA,IACA,QACA,OACA,IACA,QACA,OACA,IACA,UACA,SACA,IACA,UACA,SACA,IACA,eACA,cACA,MAKR,IAAKj2B,EAAI,EAAGA,EAAIi2B,EAAW90B,OAAQnB,GAAK,EACpCglD,EAAW/uB,EAAWj2B,GACtBklD,EAAeA,GAAgB9c,EAAWp6B,EAAOg3C,GAGrD,OAAOC,GAAcC,EA3CjBC,CAAoBn3C,IALpBg+B,MAMAh+B,EAwPR,SAASo3C,GAAU19C,EAAGC,GAClB,GAAID,EAAEmoC,OAASloC,EAAEkoC,OAGb,OAAQuV,GAAUz9C,EAAGD,GAGzB,IAAI29C,EAAyC,IAAvB19C,EAAEwnC,OAASznC,EAAEynC,SAAgBxnC,EAAEioC,QAAUloC,EAAEkoC,SAE7D0V,EAAS59C,EAAEpE,QAAQgV,IAAI+sC,EAAgB,UAOvCE,EAHA59C,EAAI29C,EAAS,GAGH39C,EAAI29C,IAAWA,EAFf59C,EAAEpE,QAAQgV,IAAI+sC,EAAiB,EAAG,YAMlC19C,EAAI29C,IAFJ59C,EAAEpE,QAAQgV,IAAqB,EAAjB+sC,EAAoB,UAETC,GAIvC,QAASD,EAAiBE,IAAW,EAmHzC,SAASxc,GAAOr9B,GAGZ,YAAY9H,IAAR8H,EACOlK,KAAKoqC,QAAQkP,OAGC,OADrB0K,EAAgBvK,GAAUvvC,MAEtBlK,KAAKoqC,QAAU4Z,GAEZhkD,MA1Hf+e,EAAMklC,cAAgB,uBACtBllC,EAAMmlC,iBAAmB,yBA6HrB3zC,GAAOm6B,EACP,kJACA,SAAUxgC,GACN,YAAY9H,IAAR8H,EACOlK,KAAKmsC,aAELnsC,KAAKunC,OAAOr9B,KAK/B,SAASiiC,KACL,OAAOnsC,KAAKoqC,QAGhB,IAGI+Z,GAAmB,YAGvB,SAASC,GAAMC,EAAUC,GACrB,OAASD,EAAWC,EAAWA,GAAWA,EAG9C,SAASC,GAAiB9R,EAAGvpC,EAAG2pC,GAE5B,OAAIJ,EAAI,KAAY,GAALA,EAEJ,IAAIjtC,KAAKitC,EAAI,IAAKvpC,EAAG2pC,GAAKsR,GAE1B,IAAI3+C,KAAKitC,EAAGvpC,EAAG2pC,GAAGzL,UAIjC,SAASod,GAAe/R,EAAGvpC,EAAG2pC,GAE1B,OAAIJ,EAAI,KAAY,GAALA,EAEJjtC,KAAK4tC,IAAIX,EAAI,IAAKvpC,EAAG2pC,GAAKsR,GAE1B3+C,KAAK4tC,IAAIX,EAAGvpC,EAAG2pC,GAsb9B,SAAS4R,GAAa9U,EAAUpI,GAC5B,OAAOA,EAAOmd,cAAc/U,GAehC,SAASgV,KASL,IARA,IAAIC,EAAa,GACbC,EAAa,GACbC,EAAe,GACf3S,EAAc,GAGd4S,EAAO/kD,KAAK+kD,OAEXvmD,EAAI,EAAGkY,EAAIquC,EAAKplD,OAAQnB,EAAIkY,IAAKlY,EAClCqmD,EAAW3nD,KAAK2yC,GAAYkV,EAAKvmD,GAAGmD,OACpCijD,EAAW1nD,KAAK2yC,GAAYkV,EAAKvmD,GAAGm7C,OACpCmL,EAAa5nD,KAAK2yC,GAAYkV,EAAKvmD,GAAGwmD,SAEtC7S,EAAYj1C,KAAK2yC,GAAYkV,EAAKvmD,GAAGmD,OACrCwwC,EAAYj1C,KAAK2yC,GAAYkV,EAAKvmD,GAAGm7C,OACrCxH,EAAYj1C,KAAK2yC,GAAYkV,EAAKvmD,GAAGwmD,SAGzChlD,KAAKilD,WAAa,IAAIp+C,OAAO,KAAOsrC,EAAYvoC,KAAK,KAAO,IAAK,KACjE5J,KAAKklD,eAAiB,IAAIr+C,OAAO,KAAOg+C,EAAWj7C,KAAK,KAAO,IAAK,KACpE5J,KAAKmlD,eAAiB,IAAIt+C,OAAO,KAAO+9C,EAAWh7C,KAAK,KAAO,IAAK,KACpE5J,KAAKolD,iBAAmB,IAAIv+C,OACxB,KAAOi+C,EAAal7C,KAAK,KAAO,IAChC,KAcR,SAASy7C,GAAuB1wC,EAAO0jB,GACnC2T,EAAe,EAAG,CAACr3B,EAAOA,EAAMhV,QAAS,EAAG04B,GAoFhD,SAASitB,GAAqB94C,EAAOqnC,EAAMC,EAASN,EAAKC,GACrD,IAAI8R,EACJ,OAAa,MAAT/4C,EACO0nC,GAAWl0C,KAAMwzC,EAAKC,GAAK9F,MAElC4X,EAAclR,GAAY7nC,EAAOgnC,EAAKC,GAQ9C,SAAoBgK,EAAU5J,EAAMC,EAASN,EAAKC,GAC1C+R,EAAgB5R,GAAmB6J,EAAU5J,EAAMC,EAASN,EAAKC,GACjEpF,EAAO8E,GAAcqS,EAAc7X,KAAM,EAAG6X,EAAcxR,WAK9D,OAHAh0C,KAAK2tC,KAAKU,EAAKgF,kBACfrzC,KAAKouC,MAAMC,EAAKgP,eAChBr9C,KAAKquC,KAAKA,EAAKiP,cACRt9C,MAXejD,KAAKiD,KAAMwM,EAFzBqnC,EADO0R,EAAP1R,EACO0R,EAEyB1R,EAAMC,EAASN,EAAKC,IAjYhEzH,EAAe,IAAK,EAAG,EAAG,WAC1BA,EAAe,KAAM,EAAG,EAAG,WAC3BA,EAAe,MAAO,EAAG,EAAG,WAC5BA,EAAe,OAAQ,EAAG,EAAG,WAC7BA,EAAe,QAAS,EAAG,EAAG,aAE9BA,EAAe,IAAK,CAAC,IAAK,GAAI,KAAM,WACpCA,EAAe,IAAK,CAAC,KAAM,GAAI,EAAG,WAClCA,EAAe,IAAK,CAAC,MAAO,GAAI,EAAG,WACnCA,EAAe,IAAK,CAAC,OAAQ,GAAI,EAAG,WAEpCuD,GAAc,IAAKkV,IACnBlV,GAAc,KAAMkV,IACpBlV,GAAc,MAAOkV,IACrBlV,GAAc,OAmOd,SAAsBI,EAAUpI,GAC5B,OAAOA,EAAOke,cAAc9V,KAnOhCJ,GAAc,QAsOd,SAAwBI,EAAUpI,GAC9B,OAAOA,EAAOme,gBAAgB/V,KArOlCO,GAAc,CAAC,IAAK,KAAM,MAAO,OAAQ,SAAU,SAC/C1jC,EACA1P,EACAwtC,EACA31B,GAEI4zB,EAAM+B,EAAOF,QAAQub,UAAUn5C,EAAOmI,EAAO21B,EAAOlB,SACpDb,EACAZ,EAAgB2C,GAAQ/B,IAAMA,EAE9BZ,EAAgB2C,GAAQrC,WAAaz7B,IAI7C+iC,GAAc,IAAKL,IACnBK,GAAc,KAAML,IACpBK,GAAc,MAAOL,IACrBK,GAAc,OAAQL,IACtBK,GAAc,KAsNd,SAA6BI,EAAUpI,GACnC,OAAOA,EAAOqe,sBAAwB1W,KArN1CgB,GAAc,CAAC,IAAK,KAAM,MAAO,QAASG,IAC1CH,GAAc,CAAC,MAAO,SAAU1jC,EAAO1P,EAAOwtC,EAAQ31B,GAClD,IAAI/L,EACA0hC,EAAOF,QAAQwb,uBACfh9C,EAAQ4D,EAAM5D,MAAM0hC,EAAOF,QAAQwb,uBAGnCtb,EAAOF,QAAQyb,oBACf/oD,EAAMuzC,IAAQ/F,EAAOF,QAAQyb,oBAAoBr5C,EAAO5D,GAExD9L,EAAMuzC,IAAQjhB,SAAS5iB,EAAO,MA4OtCw/B,EAAe,EAAG,CAAC,KAAM,GAAI,EAAG,WAC5B,OAAOhsC,KAAKy9C,WAAa,MAG7BzR,EAAe,EAAG,CAAC,KAAM,GAAI,EAAG,WAC5B,OAAOhsC,KAAK8lD,cAAgB,MAOhCT,GAAuB,OAAQ,YAC/BA,GAAuB,QAAS,YAChCA,GAAuB,OAAQ,eAC/BA,GAAuB,QAAS,eAIhCvY,EAAa,WAAY,MACzBA,EAAa,cAAe,MAI5BU,EAAgB,WAAY,GAC5BA,EAAgB,cAAe,GAI/B+B,GAAc,IAAKJ,IACnBI,GAAc,IAAKJ,IACnBI,GAAc,KAAMX,GAAWJ,GAC/Be,GAAc,KAAMX,GAAWJ,GAC/Be,GAAc,OAAQP,GAAWN,GACjCa,GAAc,OAAQP,GAAWN,GACjCa,GAAc,QAASN,GAAWN,GAClCY,GAAc,QAASN,GAAWN,GAElCwB,GAAkB,CAAC,OAAQ,QAAS,OAAQ,SAAU,SAClD3jC,EACAqnC,EACAvJ,EACA31B,GAEAk/B,EAAKl/B,EAAMg3B,OAAO,EAAG,IAAMmC,EAAMthC,KAGrC2jC,GAAkB,CAAC,KAAM,MAAO,SAAU3jC,EAAOqnC,EAAMvJ,EAAQ31B,GAC3Dk/B,EAAKl/B,GAASoK,EAAM2zB,kBAAkBlmC,KAsE1Cw/B,EAAe,IAAK,EAAG,KAAM,WAI7Bc,EAAa,UAAW,KAIxBU,EAAgB,UAAW,GAI3B+B,GAAc,IAAKhB,GACnB2B,GAAc,IAAK,SAAU1jC,EAAO1P,GAChCA,EAAMwzC,IAA8B,GAApBxC,EAAMthC,GAAS,KAanCw/B,EAAe,IAAK,CAAC,KAAM,GAAI,KAAM,QAIrCc,EAAa,OAAQ,KAGrBU,EAAgB,OAAQ,GAIxB+B,GAAc,IAAKX,IACnBW,GAAc,KAAMX,GAAWJ,GAC/Be,GAAc,KAAM,SAAUI,EAAUpI,GAEpC,OAAOoI,EACDpI,EAAOwe,yBAA2Bxe,EAAOye,cACzCze,EAAO0e,iCAGjB/V,GAAc,CAAC,IAAK,MAAOK,IAC3BL,GAAc,KAAM,SAAU1jC,EAAO1P,GACjCA,EAAMyzC,IAAQzC,EAAMthC,EAAM5D,MAAMgmC,IAAW,MAK3CsX,GAAmBjY,EAAW,QAAQ,GAI1CjC,EAAe,MAAO,CAAC,OAAQ,GAAI,OAAQ,aAI3Cc,EAAa,YAAa,OAG1BU,EAAgB,YAAa,GAI7B+B,GAAc,MAAOR,IACrBQ,GAAc,OAAQd,GACtByB,GAAc,CAAC,MAAO,QAAS,SAAU1jC,EAAO1P,EAAOwtC,GACnDA,EAAO4T,WAAapQ,EAAMthC,KAiB9Bw/B,EAAe,IAAK,CAAC,KAAM,GAAI,EAAG,UAIlCc,EAAa,SAAU,KAIvBU,EAAgB,SAAU,IAI1B+B,GAAc,IAAKX,IACnBW,GAAc,KAAMX,GAAWJ,GAC/B0B,GAAc,CAAC,IAAK,MAAOO,IAIvB0V,GAAelY,EAAW,WAAW,GAIzCjC,EAAe,IAAK,CAAC,KAAM,GAAI,EAAG,UAIlCc,EAAa,SAAU,KAIvBU,EAAgB,SAAU,IAI1B+B,GAAc,IAAKX,IACnBW,GAAc,KAAMX,GAAWJ,GAC/B0B,GAAc,CAAC,IAAK,MAAOQ,IAI3B,IA8CI/7B,GA9CAyxC,GAAenY,EAAW,WAAW,GA+CzC,IA3CAjC,EAAe,IAAK,EAAG,EAAG,WACtB,SAAUhsC,KAAK8/C,cAAgB,OAGnC9T,EAAe,EAAG,CAAC,KAAM,GAAI,EAAG,WAC5B,SAAUhsC,KAAK8/C,cAAgB,MAGnC9T,EAAe,EAAG,CAAC,MAAO,GAAI,EAAG,eACjCA,EAAe,EAAG,CAAC,OAAQ,GAAI,EAAG,WAC9B,OAA4B,GAArBhsC,KAAK8/C,gBAEhB9T,EAAe,EAAG,CAAC,QAAS,GAAI,EAAG,WAC/B,OAA4B,IAArBhsC,KAAK8/C,gBAEhB9T,EAAe,EAAG,CAAC,SAAU,GAAI,EAAG,WAChC,OAA4B,IAArBhsC,KAAK8/C,gBAEhB9T,EAAe,EAAG,CAAC,UAAW,GAAI,EAAG,WACjC,OAA4B,IAArBhsC,KAAK8/C,gBAEhB9T,EAAe,EAAG,CAAC,WAAY,GAAI,EAAG,WAClC,OAA4B,IAArBhsC,KAAK8/C,gBAEhB9T,EAAe,EAAG,CAAC,YAAa,GAAI,EAAG,WACnC,OAA4B,IAArBhsC,KAAK8/C,gBAKhBhT,EAAa,cAAe,MAI5BU,EAAgB,cAAe,IAI/B+B,GAAc,IAAKR,GAAWR,GAC9BgB,GAAc,KAAMR,GAAWP,GAC/Be,GAAc,MAAOR,GAAWN,GAG3B95B,GAAQ,OAAQA,GAAMhV,QAAU,EAAGgV,IAAS,IAC7C46B,GAAc56B,GAAOu6B,IAGzB,SAASmX,GAAQ75C,EAAO1P,GACpBA,EAAM6zC,IAAe7C,EAAuB,KAAhB,KAAOthC,IAGvC,IAAKmI,GAAQ,IAAKA,GAAMhV,QAAU,EAAGgV,IAAS,IAC1Cu7B,GAAcv7B,GAAO0xC,IAGzBC,GAAoBrY,EAAW,gBAAgB,GAI/CjC,EAAe,IAAK,EAAG,EAAG,YAC1BA,EAAe,KAAM,EAAG,EAAG,YAYvBlpC,GAAQunC,EAAOzqC,UAgHnB,SAAS2mD,GAAmB/oC,GACxB,OAAOA,EA/GX1a,GAAMgU,IAAMA,GACZhU,GAAMo0C,SApoCN,SAAoBzf,EAAM+uB,GAEG,IAArB5lD,UAAUjB,SACLiB,UAAU,GAGJwiD,GAAcxiD,UAAU,KAC/B62B,EAAO72B,UAAU,GACjB4lD,OAAUpkD,GA/CtB,SAAwBoK,GAcpB,IAbA,IAAIi3C,EAAa9c,EAASn6B,KAAWq6B,EAAcr6B,GAC/Ck3C,GAAe,EACfjvB,EAAa,CACT,UACA,UACA,UACA,WACA,WACA,YAKHj2B,EAAI,EAAGA,EAAIi2B,EAAW90B,OAAQnB,GAAK,EAEpCklD,EAAeA,GAAgB9c,EAAWp6B,EAD/BioB,EAAWj2B,IAI1B,OAAOilD,GAAcC,EA6BN+C,CAAe7lD,UAAU,MAChC4lD,EAAU5lD,UAAU,GACpB62B,OAAOr1B,GANPokD,EADA/uB,OAAOr1B,GAYf,IAAIulB,EAAM8P,GAAQsmB,KACd2I,EAAM9E,GAAgBj6B,EAAK3nB,MAAM2mD,QAAQ,OACzCrf,EAASvoB,EAAM6nC,eAAe5mD,KAAM0mD,IAAQ,WAC5Cna,EACIia,IACC7oD,EAAW6oD,EAAQlf,IACdkf,EAAQlf,GAAQvqC,KAAKiD,KAAM2nB,GAC3B6+B,EAAQlf,IAEtB,OAAOtnC,KAAKsnC,OACRiF,GAAUvsC,KAAKmsC,aAAa+K,SAAS5P,EAAQtnC,KAAM+9C,GAAYp2B,MA2mCvE7kB,GAAMhB,MAvmCN,WACI,OAAO,IAAIuoC,EAAOrqC,OAumCtB8C,GAAMgI,KA/hCN,SAAc0B,EAAO0gC,EAAO2Z,GACxB,IAAIlsC,EAAMmsC,EAAWva,EAErB,IAAKvsC,KAAK2oC,UACN,OAAOa,IAKX,KAFA7uB,EAAOinC,GAAgBp1C,EAAOxM,OAEpB2oC,UACN,OAAOa,IAOX,OAJAsd,EAAoD,KAAvCnsC,EAAK6mC,YAAcxhD,KAAKwhD,aAErCtU,EAAQD,EAAeC,IAGnB,IAAK,OACDX,EAASqX,GAAU5jD,KAAM2a,GAAQ,GACjC,MACJ,IAAK,QACD4xB,EAASqX,GAAU5jD,KAAM2a,GACzB,MACJ,IAAK,UACD4xB,EAASqX,GAAU5jD,KAAM2a,GAAQ,EACjC,MACJ,IAAK,SACD4xB,GAAUvsC,KAAO2a,GAAQ,IACzB,MACJ,IAAK,SACD4xB,GAAUvsC,KAAO2a,GAAQ,IACzB,MACJ,IAAK,OACD4xB,GAAUvsC,KAAO2a,GAAQ,KACzB,MACJ,IAAK,MACD4xB,GAAUvsC,KAAO2a,EAAOmsC,GAAa,MACrC,MACJ,IAAK,OACDva,GAAUvsC,KAAO2a,EAAOmsC,GAAa,OACrC,MACJ,QACIva,EAASvsC,KAAO2a,EAGxB,OAAOksC,EAAUta,EAASqB,EAASrB,IAk/BvCzpC,GAAMikD,MA1uBN,SAAe7Z,GACX,IAAIzV,EAAMuvB,EAEV,QAAc5kD,KADd8qC,EAAQD,EAAeC,KACc,gBAAVA,IAA4BltC,KAAK2oC,UACxD,OAAO3oC,KAKX,OAFAgnD,EAAchnD,KAAKkqC,OAASsa,GAAiBD,GAErCrX,GACJ,IAAK,OACDzV,EAAOuvB,EAAYhnD,KAAK2tC,OAAS,EAAG,EAAG,GAAK,EAC5C,MACJ,IAAK,UACDlW,EACIuvB,EACIhnD,KAAK2tC,OACL3tC,KAAKouC,QAAWpuC,KAAKouC,QAAU,EAAK,EACpC,GACA,EACR,MACJ,IAAK,QACD3W,EAAOuvB,EAAYhnD,KAAK2tC,OAAQ3tC,KAAKouC,QAAU,EAAG,GAAK,EACvD,MACJ,IAAK,OACD3W,EACIuvB,EACIhnD,KAAK2tC,OACL3tC,KAAKouC,QACLpuC,KAAKquC,OAASruC,KAAK8zC,UAAY,GAC/B,EACR,MACJ,IAAK,UACDrc,EACIuvB,EACIhnD,KAAK2tC,OACL3tC,KAAKouC,QACLpuC,KAAKquC,QAAUruC,KAAKinD,aAAe,GAAK,GACxC,EACR,MACJ,IAAK,MACL,IAAK,OACDxvB,EAAOuvB,EAAYhnD,KAAK2tC,OAAQ3tC,KAAKouC,QAASpuC,KAAKquC,OAAS,GAAK,EACjE,MACJ,IAAK,OACD5W,EAAOz3B,KAAKipC,GAAG7B,UACf3P,GAzIM,KA2IF2sB,GACI3sB,GAAQz3B,KAAKkqC,OAAS,EA7ItB,IA6I0BlqC,KAAKwhD,aA5IjC,MA+IF,EACJ,MACJ,IAAK,SACD/pB,EAAOz3B,KAAKipC,GAAG7B,UACf3P,GApJQ,IAoJgB2sB,GAAM3sB,EApJtB,KAoJ6C,EACrD,MACJ,IAAK,SACDA,EAAOz3B,KAAKipC,GAAG7B,UACf3P,GAzJQ,IAyJgB2sB,GAAM3sB,EAzJtB,KAyJ6C,EAM7D,OAFAz3B,KAAKipC,GAAG6Y,QAAQrqB,GAChB1Y,EAAMwrB,aAAavqC,MAAM,GAClBA,MAyqBX8C,GAAMwkC,OAp5BN,SAAgB4f,GAOZ,OALIA,EADCA,IACalnD,KAAKkiD,QACbnjC,EAAMmlC,iBACNnlC,EAAMklC,eAEZ1X,EAASH,EAAapsC,KAAMknD,GACzBlnD,KAAKmsC,aAAagb,WAAW5a,IA84BxCzpC,GAAM+mC,KA34BN,SAAcpS,EAAM2vB,GAChB,OACIpnD,KAAK2oC,YACH6B,EAAS/S,IAASA,EAAKkR,WAAcoV,GAAYtmB,GAAMkR,WAElD0Z,GAAe,CAAE7rB,GAAIx2B,KAAM6pC,KAAMpS,IACnC8P,OAAOvnC,KAAKunC,UACZ8f,UAAUD,GAERpnD,KAAKmsC,aAAaM,eAm4BjC3pC,GAAMwkD,QA/3BN,SAAiBF,GACb,OAAOpnD,KAAK6pC,KAAKkU,KAAeqJ,IA+3BpCtkD,GAAM0zB,GA53BN,SAAYiB,EAAM2vB,GACd,OACIpnD,KAAK2oC,YACH6B,EAAS/S,IAASA,EAAKkR,WAAcoV,GAAYtmB,GAAMkR,WAElD0Z,GAAe,CAAExY,KAAM7pC,KAAMw2B,GAAIiB,IACnC8P,OAAOvnC,KAAKunC,UACZ8f,UAAUD,GAERpnD,KAAKmsC,aAAaM,eAo3BjC3pC,GAAMykD,MAh3BN,SAAeH,GACX,OAAOpnD,KAAKw2B,GAAGunB,KAAeqJ,IAg3BlCtkD,GAAM7C,IArjIN,SAAmBitC,GAEf,OAAIvvC,EAAWqC,KADfktC,EAAQD,EAAeC,KAEZltC,KAAKktC,KAETltC,MAijIX8C,GAAM0kD,UAznBN,WACI,OAAO7f,EAAgB3nC,MAAMg2B,UAynBjClzB,GAAM8/C,QA7mCN,SAAiBp2C,EAAO0gC,GAEpB,OADIua,EAAajd,EAASh+B,GAASA,EAAQuxC,GAAYvxC,MACjDxM,KAAK2oC,YAAa8e,EAAW9e,aAIrB,iBADduE,EAAQD,EAAeC,IAAU,eAEtBltC,KAAKonC,UAAYqgB,EAAWrgB,UAE5BqgB,EAAWrgB,UAAYpnC,KAAK8B,QAAQ6kD,QAAQzZ,GAAO9F,YAqmClEtkC,GAAM0/C,SAjmCN,SAAkBh2C,EAAO0gC,GAErB,OADIua,EAAajd,EAASh+B,GAASA,EAAQuxC,GAAYvxC,MACjDxM,KAAK2oC,YAAa8e,EAAW9e,aAIrB,iBADduE,EAAQD,EAAeC,IAAU,eAEtBltC,KAAKonC,UAAYqgB,EAAWrgB,UAE5BpnC,KAAK8B,QAAQilD,MAAM7Z,GAAO9F,UAAYqgB,EAAWrgB,YAylChEtkC,GAAM4kD,UArlCN,SAAmB7d,EAAMrT,EAAI0W,EAAOya,GAGhC,OAFIC,EAAYpd,EAASX,GAAQA,EAAOkU,GAAYlU,GAChDge,EAAUrd,EAAShU,GAAMA,EAAKunB,GAAYvnB,MACxCx2B,KAAK2oC,WAAaif,EAAUjf,WAAakf,EAAQlf,cAK/B,OAFxBgf,EAAcA,GAAe,MAEZ,GACP3nD,KAAK4iD,QAAQgF,EAAW1a,IACvBltC,KAAKwiD,SAASoF,EAAW1a,MACZ,MAAnBya,EAAY,GACP3nD,KAAKwiD,SAASqF,EAAS3a,IACtBltC,KAAK4iD,QAAQiF,EAAS3a,MAykCrCpqC,GAAMglD,OArkCN,SAAgBt7C,EAAO0gC,GAGnB,OAFIua,EAAajd,EAASh+B,GAASA,EAAQuxC,GAAYvxC,MAEjDxM,KAAK2oC,YAAa8e,EAAW9e,aAIrB,iBADduE,EAAQD,EAAeC,IAAU,eAEtBltC,KAAKonC,YAAcqgB,EAAWrgB,WAErC2gB,EAAUN,EAAWrgB,UAEjBpnC,KAAK8B,QAAQ6kD,QAAQzZ,GAAO9F,WAAa2gB,GACzCA,GAAW/nD,KAAK8B,QAAQilD,MAAM7Z,GAAO9F,aAyjCjDtkC,GAAMklD,cApjCN,SAAuBx7C,EAAO0gC,GAC1B,OAAOltC,KAAK8nD,OAAOt7C,EAAO0gC,IAAUltC,KAAK4iD,QAAQp2C,EAAO0gC,IAojC5DpqC,GAAMmlD,eAjjCN,SAAwBz7C,EAAO0gC,GAC3B,OAAOltC,KAAK8nD,OAAOt7C,EAAO0gC,IAAUltC,KAAKwiD,SAASh2C,EAAO0gC,IAijC7DpqC,GAAM6lC,QAxoBN,WACI,OAAOA,EAAQ3oC,OAwoBnB8C,GAAMyN,KAAOA,GACbzN,GAAMykC,OAASA,GACfzkC,GAAMqpC,WAAaA,GACnBrpC,GAAM2tB,IAAM0vB,GACZr9C,GAAM+uC,IAAMoO,GACZn9C,GAAMolD,aA1oBN,WACI,OAAOzmD,EAAO,GAAIkmC,EAAgB3nC,QA0oBtC8C,GAAMib,IA5jIN,SAAmBmvB,EAAOxpC,GACtB,GAAqB,iBAAjB,IAAOwpC,EAAP,eAAOA,IAIP,IAFA,IAAIib,EAzFZ,SAA6BC,GACzB,IACIC,EADAnb,EAAQ,GAEZ,IAAKmb,KAAKD,EACFxhB,EAAWwhB,EAAUC,IACrBnb,EAAMhwC,KAAK,CAAEujB,KAAM4nC,EAAG5a,SAAUF,EAAW8a,KAMnD,OAHAnb,EAAM3rC,KAAK,SAAU2E,EAAGC,GACpB,OAAOD,EAAEunC,SAAWtnC,EAAEsnC,WAEnBP,EA8Eeob,CADlBpb,EAAQC,EAAqBD,IAGxB1uC,EAAI,EAAGA,EAAI2pD,EAAYxoD,OAAQnB,IAChCwB,KAAKmoD,EAAY3pD,GAAGiiB,MAAMysB,EAAMib,EAAY3pD,GAAGiiB,YAInD,GAAI9iB,EAAWqC,KADfktC,EAAQD,EAAeC,KAEnB,OAAOltC,KAAKktC,GAAOxpC,GAG3B,OAAO1D,MA+iIX8C,GAAM6jD,QA/zBN,SAAiBzZ,GACb,IAAIzV,EAAMuvB,EAEV,QAAc5kD,KADd8qC,EAAQD,EAAeC,KACc,gBAAVA,IAA4BltC,KAAK2oC,UACxD,OAAO3oC,KAKX,OAFAgnD,EAAchnD,KAAKkqC,OAASsa,GAAiBD,GAErCrX,GACJ,IAAK,OACDzV,EAAOuvB,EAAYhnD,KAAK2tC,OAAQ,EAAG,GACnC,MACJ,IAAK,UACDlW,EAAOuvB,EACHhnD,KAAK2tC,OACL3tC,KAAKouC,QAAWpuC,KAAKouC,QAAU,EAC/B,GAEJ,MACJ,IAAK,QACD3W,EAAOuvB,EAAYhnD,KAAK2tC,OAAQ3tC,KAAKouC,QAAS,GAC9C,MACJ,IAAK,OACD3W,EAAOuvB,EACHhnD,KAAK2tC,OACL3tC,KAAKouC,QACLpuC,KAAKquC,OAASruC,KAAK8zC,WAEvB,MACJ,IAAK,UACDrc,EAAOuvB,EACHhnD,KAAK2tC,OACL3tC,KAAKouC,QACLpuC,KAAKquC,QAAUruC,KAAKinD,aAAe,IAEvC,MACJ,IAAK,MACL,IAAK,OACDxvB,EAAOuvB,EAAYhnD,KAAK2tC,OAAQ3tC,KAAKouC,QAASpuC,KAAKquC,QACnD,MACJ,IAAK,OACD5W,EAAOz3B,KAAKipC,GAAG7B,UACf3P,GAAQ2sB,GACJ3sB,GAAQz3B,KAAKkqC,OAAS,EAzElB,IAyEsBlqC,KAAKwhD,aAxE7B,MA2EN,MACJ,IAAK,SACD/pB,EAAOz3B,KAAKipC,GAAG7B,UACf3P,GAAQ2sB,GAAM3sB,EA/EN,KAgFR,MACJ,IAAK,SACDA,EAAOz3B,KAAKipC,GAAG7B,UACf3P,GAAQ2sB,GAAM3sB,EApFN,KA0FhB,OAFAz3B,KAAKipC,GAAG6Y,QAAQrqB,GAChB1Y,EAAMwrB,aAAavqC,MAAM,GAClBA,MAowBX8C,GAAM0tB,SAAWA,GACjB1tB,GAAM/C,QAjrBN,WACI,IAAImJ,EAAIlJ,KACR,MAAO,CACHkJ,EAAEykC,OACFzkC,EAAEklC,QACFllC,EAAEmlC,OACFnlC,EAAEy1C,OACFz1C,EAAE22C,SACF32C,EAAE7F,SACF6F,EAAE42C,gBAyqBVh9C,GAAMylD,SArqBN,WACI,IAAIr/C,EAAIlJ,KACR,MAAO,CACHwgD,MAAOt3C,EAAEykC,OACTuD,OAAQhoC,EAAEklC,QACVC,KAAMnlC,EAAEmlC,OACR8H,MAAOjtC,EAAEitC,QACTE,QAASntC,EAAEmtC,UACXG,QAASttC,EAAEstC,UACXsK,aAAc53C,EAAE43C,iBA6pBxBh+C,GAAM0lD,OAvrBN,WACI,OAAO,IAAIhjD,KAAKxF,KAAKonC,YAurBzBtkC,GAAM2lD,YAx+BN,SAAqBC,GACjB,IAAK1oD,KAAK2oC,UACN,OAAO,KAEX,IAAIjB,GAAqB,IAAfghB,EAEV,OADIx/C,EAAIw+B,EAAM1nC,KAAK8B,QAAQ4lC,MAAQ1nC,MAC7B2tC,OAAS,GAAgB,KAAXzkC,EAAEykC,OACXvB,EACHljC,EACAw+B,EACM,iCACA,gCAGV/pC,EAAW6H,KAAK5F,UAAU6oD,aAEtB/gB,EACO1nC,KAAKwoD,SAASC,cAEd,IAAIjjD,KAAKxF,KAAKonC,UAA+B,GAAnBpnC,KAAKwhD,YAAmB,KACpDiH,cACAjmD,QAAQ,IAAK4pC,EAAaljC,EAAG,MAGnCkjC,EACHljC,EACAw+B,EAAM,+BAAiC,+BA+8B/C5kC,GAAM85B,QAr8BN,WACI,IAAK58B,KAAK2oC,UACN,MAAO,qBAAuB3oC,KAAK+D,GAAK,OAE5C,IAEIsuB,EAFA7Y,EAAO,SACPmvC,EAAO,GAcX,OATK3oD,KAAKs9B,YACN9jB,EAA4B,IAArBxZ,KAAKwhD,YAAoB,aAAe,mBAC/CmH,EAAO,KAEXt2B,EAAS,IAAM7Y,EAAO,MACtBm0B,EAAO,GAAK3tC,KAAK2tC,QAAU3tC,KAAK2tC,QAAU,KAAO,OAAS,SAInD3tC,KAAKsnC,OAAOjV,EAASsb,EAHjB,yBACFgb,EAAO,UAq7BE,oBAAX/kD,QAAwC,MAAdA,OAAOglD,MACxC9lD,GAAMc,OAAOglD,IAAI,+BAAiC,WAC9C,MAAO,UAAY5oD,KAAKsnC,SAAW,MAG3CxkC,GAAM+lD,OAjqBN,WAEI,OAAO7oD,KAAK2oC,UAAY3oC,KAAKyoD,cAAgB,MAgqBjD3lD,GAAMzF,SAp/BN,WACI,OAAO2C,KAAK8B,QAAQylC,OAAO,MAAMD,OAAO,qCAo/B5CxkC,GAAMgmD,KArsBN,WACI,OAAOxmD,KAAKurC,MAAM7tC,KAAKonC,UAAY,MAqsBvCtkC,GAAMskC,QA1sBN,WACI,OAAOpnC,KAAKipC,GAAG7B,UAAkC,KAArBpnC,KAAKmqC,SAAW,IA0sBhDrnC,GAAMimD,aAppBN,WACI,MAAO,CACHv8C,MAAOxM,KAAK+D,GACZujC,OAAQtnC,KAAK+pC,GACbxC,OAAQvnC,KAAKoqC,QACb4V,MAAOhgD,KAAKkqC,OACZ1C,OAAQxnC,KAAKopC,UA+oBrBtmC,GAAMkmD,QAzgBN,WAKI,IAJA,IAEIvqD,EACAsmD,EAAO/kD,KAAKmsC,aAAa4Y,OACxBvmD,EAAI,EAAGkY,EAAIquC,EAAKplD,OAAQnB,EAAIkY,IAAKlY,EAAG,CAIrC,GAFAC,EAAMuB,KAAK8B,QAAQ6kD,QAAQ,OAAOvf,UAE9B2d,EAAKvmD,GAAGyqD,OAASxqD,GAAOA,GAAOsmD,EAAKvmD,GAAG0W,MACvC,OAAO6vC,EAAKvmD,GAAGmD,KAEnB,GAAIojD,EAAKvmD,GAAG0W,OAASzW,GAAOA,GAAOsmD,EAAKvmD,GAAGyqD,MACvC,OAAOlE,EAAKvmD,GAAGmD,KAIvB,MAAO,IAyfXmB,GAAMomD,UAtfN,WAKI,IAJA,IAEIzqD,EACAsmD,EAAO/kD,KAAKmsC,aAAa4Y,OACxBvmD,EAAI,EAAGkY,EAAIquC,EAAKplD,OAAQnB,EAAIkY,IAAKlY,EAAG,CAIrC,GAFAC,EAAMuB,KAAK8B,QAAQ6kD,QAAQ,OAAOvf,UAE9B2d,EAAKvmD,GAAGyqD,OAASxqD,GAAOA,GAAOsmD,EAAKvmD,GAAG0W,MACvC,OAAO6vC,EAAKvmD,GAAGwmD,OAEnB,GAAID,EAAKvmD,GAAG0W,OAASzW,GAAOA,GAAOsmD,EAAKvmD,GAAGyqD,MACvC,OAAOlE,EAAKvmD,GAAGwmD,OAIvB,MAAO,IAseXliD,GAAMqmD,QAneN,WAKI,IAJA,IAEI1qD,EACAsmD,EAAO/kD,KAAKmsC,aAAa4Y,OACxBvmD,EAAI,EAAGkY,EAAIquC,EAAKplD,OAAQnB,EAAIkY,IAAKlY,EAAG,CAIrC,GAFAC,EAAMuB,KAAK8B,QAAQ6kD,QAAQ,OAAOvf,UAE9B2d,EAAKvmD,GAAGyqD,OAASxqD,GAAOA,GAAOsmD,EAAKvmD,GAAG0W,MACvC,OAAO6vC,EAAKvmD,GAAGm7C,KAEnB,GAAIoL,EAAKvmD,GAAG0W,OAASzW,GAAOA,GAAOsmD,EAAKvmD,GAAGyqD,MACvC,OAAOlE,EAAKvmD,GAAGm7C,KAIvB,MAAO,IAmdX72C,GAAMsmD,QAhdN,WAMI,IALA,IAEI/gD,EACA5J,EACAsmD,EAAO/kD,KAAKmsC,aAAa4Y,OACxBvmD,EAAI,EAAGkY,EAAIquC,EAAKplD,OAAQnB,EAAIkY,IAAKlY,EAMlC,GALA6J,EAAM08C,EAAKvmD,GAAGyqD,OAASlE,EAAKvmD,GAAG0W,MAAQ,GAAM,EAG7CzW,EAAMuB,KAAK8B,QAAQ6kD,QAAQ,OAAOvf,UAG7B2d,EAAKvmD,GAAGyqD,OAASxqD,GAAOA,GAAOsmD,EAAKvmD,GAAG0W,OACvC6vC,EAAKvmD,GAAG0W,OAASzW,GAAOA,GAAOsmD,EAAKvmD,GAAGyqD,MAExC,OACKjpD,KAAK2tC,OAAS5uB,EAAMgmC,EAAKvmD,GAAGyqD,OAAOtb,QAAUtlC,EAC9C08C,EAAKvmD,GAAGylC,OAKpB,OAAOjkC,KAAK2tC,QA0bhB7qC,GAAM6qC,KAAOgF,GACb7vC,GAAM4qC,WAzkHN,WACI,OAAOA,EAAW1tC,KAAK2tC,SAykH3B7qC,GAAM26C,SAjUN,SAAwBjxC,GACpB,OAAO84C,GAAqBvoD,KACxBiD,KACAwM,EACAxM,KAAK6zC,OACL7zC,KAAK8zC,UACL9zC,KAAKmsC,aAAa6R,MAAMxK,IACxBxzC,KAAKmsC,aAAa6R,MAAMvK,MA2ThC3wC,GAAMgjD,YAvTN,SAA2Bt5C,GACvB,OAAO84C,GAAqBvoD,KACxBiD,KACAwM,EACAxM,KAAK4gD,UACL5gD,KAAKinD,aACL,EACA,IAiTRnkD,GAAM49C,QAAU59C,GAAM29C,SA/OtB,SAAuBj0C,GACnB,OAAgB,MAATA,EACDlK,KAAK4uB,MAAMlxB,KAAKouC,QAAU,GAAK,GAC/BpuC,KAAKouC,MAAoB,GAAb5hC,EAAQ,GAAUxM,KAAKouC,QAAU,IA6OvDtrC,GAAMsrC,MAAQ0D,GACdhvC,GAAMwrC,YAhuHN,WACI,OAAOA,GAAYtuC,KAAK2tC,OAAQ3tC,KAAKouC,UAguHzCtrC,GAAM+wC,KAAO/wC,GAAM69C,MAj7GnB,SAAoBn0C,GAChB,IAAIqnC,EAAO7zC,KAAKmsC,aAAa0H,KAAK7zC,MAClC,OAAgB,MAATwM,EAAgBqnC,EAAO7zC,KAAK8W,IAAqB,GAAhBtK,EAAQqnC,GAAW,MAg7G/D/wC,GAAM89C,QAAU99C,GAAMumD,SA76GtB,SAAuB78C,GACnB,IAAIqnC,EAAOK,GAAWl0C,KAAM,EAAG,GAAG6zC,KAClC,OAAgB,MAATrnC,EAAgBqnC,EAAO7zC,KAAK8W,IAAqB,GAAhBtK,EAAQqnC,GAAW,MA46G/D/wC,GAAMuxC,YA1SN,WACI,IAAIiV,EAAWtpD,KAAKmsC,aAAa6R,MACjC,OAAO3J,GAAYr0C,KAAK2tC,OAAQ2b,EAAS9V,IAAK8V,EAAS7V,MAyS3D3wC,GAAMymD,gBAtSN,WACI,IAAID,EAAWtpD,KAAKmsC,aAAa6R,MACjC,OAAO3J,GAAYr0C,KAAKy9C,WAAY6L,EAAS9V,IAAK8V,EAAS7V,MAqS/D3wC,GAAM0mD,eApTN,WACI,OAAOnV,GAAYr0C,KAAK2tC,OAAQ,EAAG,IAoTvC7qC,GAAM2mD,sBAjTN,WACI,OAAOpV,GAAYr0C,KAAK8lD,cAAe,EAAG,IAiT9ChjD,GAAMurC,KAAO6X,GACbpjD,GAAM6yC,IAAM7yC,GAAM+9C,KA9pGlB,SAAyBr0C,GACrB,IAAKxM,KAAK2oC,UACN,OAAgB,MAATn8B,EAAgBxM,KAAOwpC,IAElC,IAvNkBh9B,EAAO+6B,EAuNrBoO,EAAM31C,KAAKkqC,OAASlqC,KAAKipC,GAAG0K,YAAc3zC,KAAKipC,GAAGuT,SACtD,OAAa,MAAThwC,GAxNcA,EAyNOA,EAzNA+6B,EAyNOvnC,KAAKmsC,aAAjC3/B,EAxNiB,iBAAVA,EACAA,EAGNy5B,MAAMz5B,GAKU,iBADrBA,EAAQ+6B,EAAOwN,cAAcvoC,IAElBA,EAGJ,KARI4iB,SAAS5iB,EAAO,IAoNhBxM,KAAK8W,IAAItK,EAAQmpC,EAAK,MAEtBA,GAspGf7yC,GAAMgxC,QAlpGN,SAA+BtnC,GAC3B,IAAKxM,KAAK2oC,UACN,OAAgB,MAATn8B,EAAgBxM,KAAOwpC,IAElC,IAAIsK,GAAW9zC,KAAK21C,MAAQ,EAAI31C,KAAKmsC,aAAa6R,MAAMxK,KAAO,EAC/D,OAAgB,MAAThnC,EAAgBsnC,EAAU9zC,KAAK8W,IAAItK,EAAQsnC,EAAS,MA8oG/DhxC,GAAMmkD,WA3oGN,SAA4Bz6C,GACxB,IAAKxM,KAAK2oC,UACN,OAAgB,MAATn8B,EAAgBxM,KAAOwpC,IAOlC,GAAa,MAATh9B,EAIA,OAAOxM,KAAK21C,OAAS,EAHrB,IAAI7B,GAjOatnC,EAiOaA,EAjON+6B,EAiOavnC,KAAKmsC,aAhOzB,iBAAV3/B,EACA+6B,EAAOwN,cAAcvoC,GAAS,GAAK,EAEvCy5B,MAAMz5B,GAAS,KAAOA,GA8NzB,OAAOxM,KAAK21C,IAAI31C,KAAK21C,MAAQ,EAAI7B,EAAUA,EAAU,IAioG7DhxC,GAAMkxC,UAhMN,SAAyBxnC,GACrB,IAAIwnC,EACA1xC,KAAKwrB,OACA9tB,KAAK8B,QAAQ6kD,QAAQ,OAAS3mD,KAAK8B,QAAQ6kD,QAAQ,SAAW,OAC/D,EACR,OAAgB,MAATn6C,EAAgBwnC,EAAYh0C,KAAK8W,IAAItK,EAAQwnC,EAAW,MA4LnElxC,GAAM67C,KAAO77C,GAAMqzC,MAAQY,GAC3Bj0C,GAAM+8C,OAAS/8C,GAAMuzC,QAAU8P,GAC/BrjD,GAAMO,OAASP,GAAM0zC,QAAU4P,GAC/BtjD,GAAMg9C,YAAch9C,GAAMg+C,aAAewF,GACzCxjD,GAAM0+C,UAhnDN,SAAsBh1C,EAAOk9C,EAAeC,GACxC,IACIC,EADA3lB,EAASjkC,KAAKmqC,SAAW,EAE7B,IAAKnqC,KAAK2oC,UACN,OAAgB,MAATn8B,EAAgBxM,KAAOwpC,IAElC,GAAa,MAATh9B,EAiCA,OAAOxM,KAAKkqC,OAASjG,EAAS+d,GAAchiD,MAhC5C,GAAqB,iBAAVwM,GAEP,GAAc,QADdA,EAAQk1C,GAAiBrS,GAAkB7iC,IAEvC,OAAOxM,UAEJsC,KAAKmpC,IAAIj/B,GAAS,KAAOm9C,IAChCn9C,GAAgB,IAwBpB,OAtBKxM,KAAKkqC,QAAUwf,IAChBE,EAAc5H,GAAchiD,OAEhCA,KAAKmqC,QAAU39B,EACfxM,KAAKkqC,QAAS,EACK,MAAf0f,GACA5pD,KAAK8W,IAAI8yC,EAAa,KAEtB3lB,IAAWz3B,KACNk9C,GAAiB1pD,KAAK6pD,kBACvB7G,GACIhjD,KACAqiD,GAAe71C,EAAQy3B,EAAQ,KAC/B,GACA,GAEIjkC,KAAK6pD,oBACb7pD,KAAK6pD,mBAAoB,EACzB9qC,EAAMwrB,aAAavqC,MAAM,GACzBA,KAAK6pD,kBAAoB,OAG1B7pD,MA4kDf8C,GAAM4kC,IAxjDN,SAAwBgiB,GACpB,OAAO1pD,KAAKwhD,UAAU,EAAGkI,IAwjD7B5mD,GAAMi/C,MArjDN,SAA0B2H,GAStB,OARI1pD,KAAKkqC,SACLlqC,KAAKwhD,UAAU,EAAGkI,GAClB1pD,KAAKkqC,QAAS,EAEVwf,GACA1pD,KAAKwwB,SAASwxB,GAAchiD,MAAO,MAGpCA,MA6iDX8C,GAAMgnD,UA1iDN,WACI,IAGQC,EAOR,OAViB,MAAb/pD,KAAKiqC,KACLjqC,KAAKwhD,UAAUxhD,KAAKiqC,MAAM,GAAO,GACP,iBAAZjqC,KAAK+D,KAEN,OADTgmD,EAAQrI,GAAiBtS,GAAapvC,KAAK+D,KAE3C/D,KAAKwhD,UAAUuI,GAEf/pD,KAAKwhD,UAAU,GAAG,IAGnBxhD,MAgiDX8C,GAAMknD,qBA7hDN,SAA8Bx9C,GAC1B,QAAKxM,KAAK2oC,YAGVn8B,EAAQA,EAAQuxC,GAAYvxC,GAAOg1C,YAAc,GAEzCxhD,KAAKwhD,YAAch1C,GAAS,IAAO,IAwhD/C1J,GAAMmnD,MArhDN,WACI,OACIjqD,KAAKwhD,YAAcxhD,KAAK8B,QAAQssC,MAAM,GAAGoT,aACzCxhD,KAAKwhD,YAAcxhD,KAAK8B,QAAQssC,MAAM,GAAGoT,aAmhDjD1+C,GAAMw6B,QAz/CN,WACI,QAAOt9B,KAAK2oC,YAAa3oC,KAAKkqC,QAy/ClCpnC,GAAMonD,YAt/CN,WACI,QAAOlqD,KAAK2oC,WAAY3oC,KAAKkqC,QAs/CjCpnC,GAAMo/C,MAAQA,GACdp/C,GAAMk9C,MAAQkC,GACdp/C,GAAMqnD,SAzFN,WACI,OAAOnqD,KAAKkqC,OAAS,MAAQ,IAyFjCpnC,GAAMsnD,SAtFN,WACI,OAAOpqD,KAAKkqC,OAAS,6BAA+B,IAsFxDpnC,GAAMunD,MAAQ3f,EACV,kDACAwb,IAEJpjD,GAAMouC,OAASxG,EACX,mDACAoH,IAEJhvC,GAAM09C,MAAQ9V,EACV,iDACAiI,IAEJ7vC,GAAM6lD,KAAOje,EACT,2GA9lDJ,SAAoBl+B,EAAOk9C,GACvB,OAAa,MAATl9C,GAKAxM,KAAKwhD,UAHDh1C,EADiB,iBAAVA,GACEA,EAGEA,EAAOk9C,GAEf1pD,OAECA,KAAKwhD,cAulDrB1+C,GAAMwnD,aAAe5f,EACjB,0GAtiDJ,WACI,IAAK1D,EAAYhnC,KAAKuqD,eAClB,OAAOvqD,KAAKuqD,cAGhB,IACIrK,EADAnD,EAAI,GAcR,OAXAnT,EAAWmT,EAAG/8C,OACd+8C,EAAIiC,GAAcjC,IAEZ/C,IACFkG,GAAQnD,EAAE7S,OAAS7C,EAAkB0W,IAARhB,EAAE/C,IAC/Bh6C,KAAKuqD,cACDvqD,KAAK2oC,WAAoD,EAtOrE,SAAuB6hB,EAAQC,EAAQC,GAKnC,IAJA,IAAItpD,EAAMkB,KAAKuvC,IAAI2Y,EAAO7qD,OAAQ8qD,EAAO9qD,QACrCgrD,EAAaroD,KAAKmpC,IAAI+e,EAAO7qD,OAAS8qD,EAAO9qD,QAC7CirD,EAAQ,EAEPpsD,EAAI,EAAGA,EAAI4C,EAAK5C,KAEZksD,GAAeF,EAAOhsD,KAAOisD,EAAOjsD,KACnCksD,GAAe5c,EAAM0c,EAAOhsD,MAAQsvC,EAAM2c,EAAOjsD,MAEnDosD,IAGR,OAAOA,EAAQD,EAyNWE,CAAc9N,EAAE/C,GAAIkG,EAAMngD,YAEhDC,KAAKuqD,eAAgB,EAGlBvqD,KAAKuqD,gBAmiDZO,EAAU3f,EAAOvrC,UAuCrB,SAASmrD,GAAMzjB,EAAQ1wB,EAAOo0C,EAAO9rC,GACjC,IAAIqoB,EAASkS,KACT/R,EAAML,IAAYtpB,IAAImB,EAAQtI,GAClC,OAAO2wB,EAAOyjB,GAAOtjB,EAAKJ,GAG9B,SAAS2jB,GAAe3jB,EAAQ1wB,EAAOo0C,GAQnC,GAPI/jB,EAASK,KACT1wB,EAAQ0wB,EACRA,OAASllC,GAGbklC,EAASA,GAAU,GAEN,MAAT1wB,EACA,OAAOm0C,GAAMzjB,EAAQ1wB,EAAOo0C,EAAO,SAKvC,IAFA,IACIE,EAAM,GACL1sD,EAAI,EAAGA,EAAI,GAAIA,IAChB0sD,EAAI1sD,GAAKusD,GAAMzjB,EAAQ9oC,EAAGwsD,EAAO,SAErC,OAAOE,EAWX,SAASC,GAAiBC,EAAc9jB,EAAQ1wB,EAAOo0C,GAO/C1jB,GANwB,kBAAjB8jB,EACHnkB,EAASK,KACT1wB,EAAQ0wB,EACRA,OAASllC,IAKbklC,EAAS8jB,EAETA,GAAe,EAEXnkB,EAHJrwB,EAAQ0wB,KAIJ1wB,EAAQ0wB,EACRA,OAASllC,IARJklC,GAAU,IAcvB,IAEI9oC,EAFA+oC,EAASkS,KACTrvC,EAAQghD,EAAe7jB,EAAOyW,MAAMxK,IAAM,EAE1C0X,EAAM,GAEV,GAAa,MAATt0C,EACA,OAAOm0C,GAAMzjB,GAAS1wB,EAAQxM,GAAS,EAAG4gD,EAAO,OAGrD,IAAKxsD,EAAI,EAAGA,EAAI,EAAGA,IACf0sD,EAAI1sD,GAAKusD,GAAMzjB,GAAS9oC,EAAI4L,GAAS,EAAG4gD,EAAO,OAEnD,OAAOE,EAxGXJ,EAAQ5T,SAn9IR,SAAkBhtC,EAAKoiC,EAAK3kB,GAExB,OAAOhqB,EADH4uC,EAASvsC,KAAKqrD,UAAUnhD,IAAQlK,KAAKqrD,UAAL,UACR9e,EAAOxvC,KAAKuvC,EAAK3kB,GAAO4kB,GAk9IxDue,EAAQne,eAx1IR,SAAwBziC,GACpB,IAAIo9B,EAAStnC,KAAKsrD,gBAAgBphD,GAC9BqhD,EAAcvrD,KAAKsrD,gBAAgBphD,EAAIoT,eAE3C,OAAIgqB,IAAWikB,EACJjkB,GAGXtnC,KAAKsrD,gBAAgBphD,GAAOqhD,EACvB3iD,MAAMgjC,GACNlrC,IAAI,SAAU8qD,GACX,MACY,SAARA,GACQ,OAARA,GACQ,OAARA,GACQ,SAARA,EAEOA,EAAI5uD,MAAM,GAEd4uD,IAEV5hD,KAAK,IAEH5J,KAAKsrD,gBAAgBphD,KAk0IhC4gD,EAAQre,YA7zIR,WACI,OAAOzsC,KAAKyrD,cA6zIhBX,EAAQ5e,QAvzIR,SAAiBb,GACb,OAAOrrC,KAAK0rD,SAASlpD,QAAQ,KAAM6oC,IAuzIvCyf,EAAQ7L,SAAWsH,GACnBuE,EAAQ3D,WAAaZ,GACrBuE,EAAQ9S,aAnyIR,SAAsB3M,EAAQ+b,EAAe5pC,EAAQmuC,GACjD,IAAIpf,EAASvsC,KAAK4rD,cAAcpuC,GAChC,OAAO7f,EAAW4uC,GACZA,EAAOlB,EAAQ+b,EAAe5pC,EAAQmuC,GACtCpf,EAAO/pC,QAAQ,MAAO6oC,IAgyIhCyf,EAAQe,WA7xIR,SAAoB/gD,EAAMyhC,GAEtB,OAAO5uC,EADH2pC,EAAStnC,KAAK4rD,cAAqB,EAAP9gD,EAAW,SAAW,SAC1Bw8B,EAAOiF,GAAUjF,EAAO9kC,QAAQ,MAAO+pC,IA4xIvEue,EAAQ/sC,IA/iJR,SAAausB,GACT,IAAIrsB,EAAMzf,EACV,IAAKA,KAAK8rC,EACF1D,EAAW0D,EAAQ9rC,KAEfb,EADJsgB,EAAOqsB,EAAO9rC,IAEVwB,KAAKxB,GAAKyf,EAEVje,KAAK,IAAMxB,GAAKyf,GAI5Bje,KAAK45C,QAAUtP,EAIftqC,KAAKimD,+BAAiC,IAAIp/C,QACrC7G,KAAK+lD,wBAAwBxmC,QAAUvf,KAAKgmD,cAAczmC,QACvD,IACA,UAAUA,SA6hJtBurC,EAAQ/F,KA1qBR,SAAoB77C,EAAGo+B,GAKnB,IAJA,IAEI+G,EACA0W,EAAO/kD,KAAK8rD,OAASrS,GAAU,MAAMqS,MACpCttD,EAAI,EAAGkY,EAAIquC,EAAKplD,OAAQnB,EAAIkY,IAAKlY,EASlC,OAPS,WADT,GAAeumD,EAAKvmD,GAAGyqD,SAGf5a,EAAOtvB,EAAMgmC,EAAKvmD,GAAGyqD,OAAOtC,QAAQ,OACpC5B,EAAKvmD,GAAGyqD,MAAQ5a,EAAKjH,WAI7B,GAAe2d,EAAKvmD,GAAG0W,QACnB,IAAK,YACD6vC,EAAKvmD,GAAG0W,MAAS62C,IACjB,MACJ,IAAK,SAED1d,EAAOtvB,EAAMgmC,EAAKvmD,GAAG0W,OAAOyxC,QAAQ,OAAOvf,UAC3C2d,EAAKvmD,GAAG0W,MAAQm5B,EAAKjH,UAIjC,OAAO2d,GAkpBX+F,EAAQnF,UA/oBR,SAAyBqD,EAAS1hB,EAAQE,GACtC,IAAIhpC,EACAkY,EAEA/U,EACAg4C,EACAqL,EAHAD,EAAO/kD,KAAK+kD,OAMhB,IAFAiE,EAAUA,EAAQ1rC,cAEb9e,EAAI,EAAGkY,EAAIquC,EAAKplD,OAAQnB,EAAIkY,IAAKlY,EAKlC,GAJAmD,EAAOojD,EAAKvmD,GAAGmD,KAAK2b,cACpBq8B,EAAOoL,EAAKvmD,GAAGm7C,KAAKr8B,cACpB0nC,EAASD,EAAKvmD,GAAGwmD,OAAO1nC,cAEpBkqB,EACA,OAAQF,GACJ,IAAK,IACL,IAAK,KACL,IAAK,MACD,GAAIqS,IAASqP,EACT,OAAOjE,EAAKvmD,GAEhB,MAEJ,IAAK,OACD,GAAImD,IAASqnD,EACT,OAAOjE,EAAKvmD,GAEhB,MAEJ,IAAK,QACD,GAAIwmD,IAAWgE,EACX,OAAOjE,EAAKvmD,QAIrB,GAA6C,GAAzC,CAACmD,EAAMg4C,EAAMqL,GAAQ7nD,QAAQ6rD,GACpC,OAAOjE,EAAKvmD,IA2mBxBssD,EAAQ/L,gBAtmBR,SAA+BxW,EAAKoF,GAChC,IAAItlC,EAAMkgC,EAAI0gB,OAAS1gB,EAAIrzB,MAAQ,GAAM,EACzC,YAAa9S,IAATurC,EACO5uB,EAAMwpB,EAAI0gB,OAAOtb,OAEjB5uB,EAAMwpB,EAAI0gB,OAAOtb,QAAUA,EAAOpF,EAAItE,QAAU57B,GAkmB/DyiD,EAAQpG,cAjgBR,SAAuB/U,GAInB,OAHK/I,EAAW5mC,KAAM,mBAClB2kD,GAAiB5nD,KAAKiD,MAEnB2vC,EAAW3vC,KAAKmlD,eAAiBnlD,KAAKilD,YA8fjD6F,EAAQrF,cAzgBR,SAAuB9V,GAInB,OAHK/I,EAAW5mC,KAAM,mBAClB2kD,GAAiB5nD,KAAKiD,MAEnB2vC,EAAW3vC,KAAKklD,eAAiBllD,KAAKilD,YAsgBjD6F,EAAQpF,gBA5fR,SAAyB/V,GAIrB,OAHK/I,EAAW5mC,KAAM,qBAClB2kD,GAAiB5nD,KAAKiD,MAEnB2vC,EAAW3vC,KAAKolD,iBAAmBplD,KAAKilD,YA0fnD6F,EAAQ5Z,OAp9HR,SAAsBhoC,EAAGo+B,GACrB,OAAKp+B,GAKE/G,EAAQnC,KAAKmhD,SACdnhD,KAAKmhD,QACLnhD,KAAKmhD,SACAnhD,KAAKmhD,QAAQ6K,UAAYxa,IAAkBhoC,KAAK89B,GAC3C,SACA,eAJGp+B,EAAEklC,SALVjsC,EAAQnC,KAAKmhD,SACdnhD,KAAKmhD,QACLnhD,KAAKmhD,QAAL,YAi9Hd2J,EAAQ7Z,YAt8HR,SAA2B/nC,EAAGo+B,GAC1B,OAAKp+B,GAKE/G,EAAQnC,KAAKisD,cACdjsD,KAAKisD,aACLjsD,KAAKisD,aACDza,GAAiBhoC,KAAK89B,GAAU,SAAW,eAF7Bp+B,EAAEklC,SALfjsC,EAAQnC,KAAKisD,cACdjsD,KAAKisD,aACLjsD,KAAKisD,aAAL,YAm8HdnB,EAAQzZ,YA34HR,SAA2B6a,EAAW5kB,EAAQE,GAC1C,IAAIhpC,EAAQgxC,EAEZ,GAAIxvC,KAAKmsD,kBACL,OAnDR,SAA2BD,EAAW5kB,EAAQE,GAC1C,IAAIhpC,EACA4tD,EACA9f,EACA+f,EAAMH,EAAUI,oBACpB,IAAKtsD,KAAKusD,aAKN,IAHAvsD,KAAKusD,aAAe,GACpBvsD,KAAKwsD,iBAAmB,GACxBxsD,KAAKysD,kBAAoB,GACpBjuD,EAAI,EAAGA,EAAI,KAAMA,EAClB8tC,EAAMjF,EAAU,CAAC,IAAM7oC,IACvBwB,KAAKysD,kBAAkBjuD,GAAKwB,KAAKixC,YAC7B3E,EACA,IACFggB,oBACFtsD,KAAKwsD,iBAAiBhuD,GAAKwB,KAAKkxC,OAAO5E,EAAK,IAAIggB,oBAIxD,OAAI9kB,EACe,QAAXF,GAEe,KADf8kB,EAAKjvD,GAAQJ,KAAKiD,KAAKysD,kBAAmBJ,IACvBD,EAAK,MAGT,KADfA,EAAKjvD,GAAQJ,KAAKiD,KAAKwsD,iBAAkBH,IACtBD,EAAK,KAGb,QAAX9kB,GAEY,KADZ8kB,EAAKjvD,GAAQJ,KAAKiD,KAAKysD,kBAAmBJ,MAK3B,KADfD,EAAKjvD,GAAQJ,KAAKiD,KAAKwsD,iBAAkBH,IAF9BD,EAGa,MAGZ,KADZA,EAAKjvD,GAAQJ,KAAKiD,KAAKwsD,iBAAkBH,MAK1B,KADfD,EAAKjvD,GAAQJ,KAAKiD,KAAKysD,kBAAmBJ,IAF/BD,EAGa,MASHrvD,KAAKiD,KAAMksD,EAAW5kB,EAAQE,GAY3D,IATKxnC,KAAKusD,eACNvsD,KAAKusD,aAAe,GACpBvsD,KAAKwsD,iBAAmB,GACxBxsD,KAAKysD,kBAAoB,IAMxBjuD,EAAI,EAAGA,EAAI,GAAIA,IAAK,CAmBrB,GAjBA8tC,EAAMjF,EAAU,CAAC,IAAM7oC,IACnBgpC,IAAWxnC,KAAKwsD,iBAAiBhuD,KACjCwB,KAAKwsD,iBAAiBhuD,GAAK,IAAIqI,OAC3B,IAAM7G,KAAKkxC,OAAO5E,EAAK,IAAI9pC,QAAQ,IAAK,IAAM,IAC9C,KAEJxC,KAAKysD,kBAAkBjuD,GAAK,IAAIqI,OAC5B,IAAM7G,KAAKixC,YAAY3E,EAAK,IAAI9pC,QAAQ,IAAK,IAAM,IACnD,MAGHglC,GAAWxnC,KAAKusD,aAAa/tD,KAC9BgxC,EACI,IAAMxvC,KAAKkxC,OAAO5E,EAAK,IAAM,KAAOtsC,KAAKixC,YAAY3E,EAAK,IAC9DtsC,KAAKusD,aAAa/tD,GAAK,IAAIqI,OAAO2oC,EAAMhtC,QAAQ,IAAK,IAAK,MAI1DglC,GACW,SAAXF,GACAtnC,KAAKwsD,iBAAiBhuD,GAAGgL,KAAK0iD,GAE9B,OAAO1tD,EACJ,GACHgpC,GACW,QAAXF,GACAtnC,KAAKysD,kBAAkBjuD,GAAGgL,KAAK0iD,GAE/B,OAAO1tD,EACJ,IAAKgpC,GAAUxnC,KAAKusD,aAAa/tD,GAAGgL,KAAK0iD,GAC5C,OAAO1tD,IA41HnBssD,EAAQ1Z,YA1xHR,SAAqBzB,GACjB,OAAI3vC,KAAKmsD,mBACAvlB,EAAW5mC,KAAM,iBAClB+xC,GAAmBh1C,KAAKiD,MAExB2vC,EACO3vC,KAAKsyC,mBAELtyC,KAAKoyC,eAGXxL,EAAW5mC,KAAM,kBAClBA,KAAKoyC,aAAeV,IAEjB1xC,KAAKsyC,oBAAsB3C,EAC5B3vC,KAAKsyC,mBACLtyC,KAAKoyC,eA2wHnB0Y,EAAQ3Z,iBA/yHR,SAA0BxB,GACtB,OAAI3vC,KAAKmsD,mBACAvlB,EAAW5mC,KAAM,iBAClB+xC,GAAmBh1C,KAAKiD,MAExB2vC,EACO3vC,KAAKuyC,wBAELvyC,KAAKqyC,oBAGXzL,EAAW5mC,KAAM,uBAClBA,KAAKqyC,kBAAoBZ,IAEtBzxC,KAAKuyC,yBAA2B5C,EACjC3vC,KAAKuyC,wBACLvyC,KAAKqyC,oBAgyHnByY,EAAQjX,KAvhHR,SAAoBvH,GAChB,OAAO4H,GAAW5H,EAAKtsC,KAAKg+C,MAAMxK,IAAKxzC,KAAKg+C,MAAMvK,KAAKI,MAuhH3DiX,EAAQ4B,eA3gHR,WACI,OAAO1sD,KAAKg+C,MAAMvK,KA2gHtBqX,EAAQ6B,eAhhHR,WACI,OAAO3sD,KAAKg+C,MAAMxK,KAihHtBsX,EAAQnW,SA35GR,SAAwBzrC,EAAGo+B,GAQvB,OAPIqN,EAAWxyC,EAAQnC,KAAK4sD,WACtB5sD,KAAK4sD,UACL5sD,KAAK4sD,UACD1jD,IAAW,IAANA,GAAclJ,KAAK4sD,UAAUZ,SAASxiD,KAAK89B,GAC1C,SACA,eAEH,IAANp+B,EACDqrC,GAAcI,EAAU30C,KAAKg+C,MAAMxK,KACnCtqC,EACAyrC,EAASzrC,EAAEysC,OACXhB,GAg5GVmW,EAAQrW,YAr4GR,SAA2BvrC,GACvB,OAAa,IAANA,EACDqrC,GAAcv0C,KAAK6sD,aAAc7sD,KAAKg+C,MAAMxK,KAC5CtqC,EACAlJ,KAAK6sD,aAAa3jD,EAAEysC,OACpB31C,KAAK6sD,cAi4Gf/B,EAAQpW,cA94GR,SAA6BxrC,GACzB,OAAa,IAANA,EACDqrC,GAAcv0C,KAAK8sD,eAAgB9sD,KAAKg+C,MAAMxK,KAC9CtqC,EACAlJ,KAAK8sD,eAAe5jD,EAAEysC,OACtB31C,KAAK8sD,gBA04GfhC,EAAQ/V,cAtzGR,SAA6BgY,EAAazlB,EAAQE,GAC9C,IAAIhpC,EAAQgxC,EAEZ,GAAIxvC,KAAKgtD,oBACL,OA7ER,SAA6BD,EAAazlB,EAAQE,GAC9C,IAAIhpC,EACA4tD,EACA9f,EACA+f,EAAMU,EAAYT,oBACtB,IAAKtsD,KAAKitD,eAKN,IAJAjtD,KAAKitD,eAAiB,GACtBjtD,KAAKktD,oBAAsB,GAC3BltD,KAAKmtD,kBAAoB,GAEpB3uD,EAAI,EAAGA,EAAI,IAAKA,EACjB8tC,EAAMjF,EAAU,CAAC,IAAM,IAAIsO,IAAIn3C,GAC/BwB,KAAKmtD,kBAAkB3uD,GAAKwB,KAAKy0C,YAC7BnI,EACA,IACFggB,oBACFtsD,KAAKktD,oBAAoB1uD,GAAKwB,KAAK00C,cAC/BpI,EACA,IACFggB,oBACFtsD,KAAKitD,eAAezuD,GAAKwB,KAAK20C,SAASrI,EAAK,IAAIggB,oBAIxD,OAAI9kB,EACe,SAAXF,GAEe,KADf8kB,EAAKjvD,GAAQJ,KAAKiD,KAAKitD,eAAgBZ,IACpBD,EAAK,KACN,QAAX9kB,GAEQ,KADf8kB,EAAKjvD,GAAQJ,KAAKiD,KAAKktD,oBAAqBb,IACzBD,EAAK,MAGT,KADfA,EAAKjvD,GAAQJ,KAAKiD,KAAKmtD,kBAAmBd,IACvBD,EAAK,KAGb,SAAX9kB,GAEY,KADZ8kB,EAAKjvD,GAAQJ,KAAKiD,KAAKitD,eAAgBZ,MAK3B,KADZD,EAAKjvD,GAAQJ,KAAKiD,KAAKktD,oBAAqBb,MAK7B,KADfD,EAAKjvD,GAAQJ,KAAKiD,KAAKmtD,kBAAmBd,IAN/BD,EAOa,KACN,QAAX9kB,GAEK,KADZ8kB,EAAKjvD,GAAQJ,KAAKiD,KAAKktD,oBAAqBb,MAKhC,KADZD,EAAKjvD,GAAQJ,KAAKiD,KAAKitD,eAAgBZ,MAKxB,KADfD,EAAKjvD,GAAQJ,KAAKiD,KAAKmtD,kBAAmBd,IAN/BD,EAOa,MAGZ,KADZA,EAAKjvD,GAAQJ,KAAKiD,KAAKmtD,kBAAmBd,MAK9B,KADZD,EAAKjvD,GAAQJ,KAAKiD,KAAKitD,eAAgBZ,MAKxB,KADfD,EAAKjvD,GAAQJ,KAAKiD,KAAKktD,oBAAqBb,IANjCD,EAOa,MASDrvD,KAAKiD,KAAM+sD,EAAazlB,EAAQE,GAU/D,IAPKxnC,KAAKitD,iBACNjtD,KAAKitD,eAAiB,GACtBjtD,KAAKmtD,kBAAoB,GACzBntD,KAAKktD,oBAAsB,GAC3BltD,KAAKotD,mBAAqB,IAGzB5uD,EAAI,EAAGA,EAAI,EAAGA,IAAK,CA6BpB,GA1BA8tC,EAAMjF,EAAU,CAAC,IAAM,IAAIsO,IAAIn3C,GAC3BgpC,IAAWxnC,KAAKotD,mBAAmB5uD,KACnCwB,KAAKotD,mBAAmB5uD,GAAK,IAAIqI,OAC7B,IAAM7G,KAAK20C,SAASrI,EAAK,IAAI9pC,QAAQ,IAAK,QAAU,IACpD,KAEJxC,KAAKktD,oBAAoB1uD,GAAK,IAAIqI,OAC9B,IAAM7G,KAAK00C,cAAcpI,EAAK,IAAI9pC,QAAQ,IAAK,QAAU,IACzD,KAEJxC,KAAKmtD,kBAAkB3uD,GAAK,IAAIqI,OAC5B,IAAM7G,KAAKy0C,YAAYnI,EAAK,IAAI9pC,QAAQ,IAAK,QAAU,IACvD,MAGHxC,KAAKitD,eAAezuD,KACrBgxC,EACI,IACAxvC,KAAK20C,SAASrI,EAAK,IACnB,KACAtsC,KAAK00C,cAAcpI,EAAK,IACxB,KACAtsC,KAAKy0C,YAAYnI,EAAK,IAC1BtsC,KAAKitD,eAAezuD,GAAK,IAAIqI,OAAO2oC,EAAMhtC,QAAQ,IAAK,IAAK,MAI5DglC,GACW,SAAXF,GACAtnC,KAAKotD,mBAAmB5uD,GAAGgL,KAAKujD,GAEhC,OAAOvuD,EACJ,GACHgpC,GACW,QAAXF,GACAtnC,KAAKktD,oBAAoB1uD,GAAGgL,KAAKujD,GAEjC,OAAOvuD,EACJ,GACHgpC,GACW,OAAXF,GACAtnC,KAAKmtD,kBAAkB3uD,GAAGgL,KAAKujD,GAE/B,OAAOvuD,EACJ,IAAKgpC,GAAUxnC,KAAKitD,eAAezuD,GAAGgL,KAAKujD,GAC9C,OAAOvuD,IA0vGnBssD,EAAQhW,cA7sGR,SAAuBnF,GACnB,OAAI3vC,KAAKgtD,qBACApmB,EAAW5mC,KAAM,mBAClBs1C,GAAqBv4C,KAAKiD,MAE1B2vC,EACO3vC,KAAK+1C,qBAEL/1C,KAAK41C,iBAGXhP,EAAW5mC,KAAM,oBAClBA,KAAK41C,eAAiBT,IAEnBn1C,KAAK+1C,sBAAwBpG,EAC9B3vC,KAAK+1C,qBACL/1C,KAAK41C,iBA8rGnBkV,EAAQjW,mBA1rGR,SAA4BlF,GACxB,OAAI3vC,KAAKgtD,qBACApmB,EAAW5mC,KAAM,mBAClBs1C,GAAqBv4C,KAAKiD,MAE1B2vC,EACO3vC,KAAKg2C,0BAELh2C,KAAK61C,sBAGXjP,EAAW5mC,KAAM,yBAClBA,KAAK61C,oBAAsBT,IAExBp1C,KAAKg2C,2BAA6BrG,EACnC3vC,KAAKg2C,0BACLh2C,KAAK61C,sBA2qGnBiV,EAAQlW,iBAvqGR,SAA0BjF,GACtB,OAAI3vC,KAAKgtD,qBACApmB,EAAW5mC,KAAM,mBAClBs1C,GAAqBv4C,KAAKiD,MAE1B2vC,EACO3vC,KAAKi2C,wBAELj2C,KAAK81C,oBAGXlP,EAAW5mC,KAAM,uBAClBA,KAAK81C,kBAAoBT,IAEtBr1C,KAAKi2C,yBAA2BtG,EACjC3vC,KAAKi2C,wBACLj2C,KAAK81C,oBAypGnBgV,EAAQnU,KAv+FR,SAAoBnqC,GAGhB,MAAgD,OAAxCA,EAAQ,IAAIxI,cAAcqpD,OAAO,IAq+F7CvC,EAAQtiB,SA39FR,SAAwB2N,EAAOE,EAASiX,GACpC,OAAY,GAARnX,EACOmX,EAAU,KAAO,KAEjBA,EAAU,KAAO,MAmjGhC9T,GAAmB,KAAM,CACrBuL,KAAM,CACF,CACIkE,MAAO,aACP/zC,MAAQ62C,IACR9nB,OAAQ,EACRtiC,KAAM,cACNqjD,OAAQ,KACRrL,KAAM,MAEV,CACIsP,MAAO,aACP/zC,OAAQ62C,IACR9nB,OAAQ,EACRtiC,KAAM,gBACNqjD,OAAQ,KACRrL,KAAM,OAGd5B,uBAAwB,uBACxB7L,QAAS,SAAUb,GACf,IAAIllC,EAAIklC,EAAS,GAWjB,OAAOA,GATgC,IAA/ByC,EAAOzC,EAAS,IAAO,IACjB,KACM,GAANllC,EACA,KACM,GAANA,EACA,KACM,GAANA,EACA,KACA,SAOtB4Y,EAAMxO,KAAOm6B,EACT,wDACA8O,IAEJz6B,EAAMwuC,SAAW7iB,EACb,gEACA+O,IAGJ,IAAI+T,GAAUlrD,KAAKmpC,IAmBnB,SAASgiB,GAAc36B,EAAUtmB,EAAO9I,EAAOo/C,GACvC5C,EAAQmC,GAAe71C,EAAO9I,GAMlC,OAJAovB,EAASmuB,eAAiB6B,EAAY5C,EAAMe,cAC5CnuB,EAASouB,OAAS4B,EAAY5C,EAAMgB,MACpCpuB,EAASquB,SAAW2B,EAAY5C,EAAMiB,QAE/BruB,EAASsuB,UAapB,SAASsM,GAAQriB,GACb,OAAIA,EAAS,EACF/oC,KAAKurC,MAAMxC,GAEX/oC,KAAK4uB,KAAKma,GA2DzB,SAASsiB,GAAa9M,GAGlB,OAAe,KAAPA,EAAe,OAG3B,SAAS+M,GAAa1c,GAElB,OAAiB,OAATA,EAAmB,KA4D/B,SAAS2c,GAAOC,GACZ,OAAO,WACH,OAAO9tD,KAAK+tD,GAAGD,IAInBE,GAAiBH,GAAO,MACxBI,EAAYJ,GAAO,KACnBK,EAAYL,GAAO,KACnBM,EAAUN,GAAO,KACjBO,GAASP,GAAO,KAChBQ,EAAUR,GAAO,KACjBS,GAAWT,GAAO,KAClBU,GAAaV,GAAO,KACpBW,GAAUX,GAAO,KAWrB,SAASY,GAAW9sD,GAChB,OAAO,WACH,OAAO3B,KAAK2oC,UAAY3oC,KAAK2e,MAAMhd,GAAQ6nC,KAI/CsX,GAAe2N,GAAW,gBAC1BjY,GAAUiY,GAAW,WACrBpY,GAAUoY,GAAW,WACrBtY,GAAQsY,GAAW,SACnB5N,GAAO4N,GAAW,QAClBvd,GAASud,GAAW,UACpBjO,GAAQiO,GAAW,SAMvB,IAAI3gC,GAAQxrB,KAAKwrB,MACb4gC,GAAa,CACTvW,GAAI,GACJ9c,EAAG,GACHnyB,EAAG,GACH4pC,EAAG,GACHD,EAAG,GACHpM,EAAG,KACHsM,EAAG,IAQX,SAAS4b,GAAeC,EAAgBxH,EAAesH,EAAYnnB,GAC/D,IAAIzU,EAAWuvB,GAAeuM,GAAgBnjB,MAC1C+K,EAAU1oB,GAAMgF,EAASi7B,GAAG,MAC5B1X,EAAUvoB,GAAMgF,EAASi7B,GAAG,MAC5B5X,EAAQroB,GAAMgF,EAASi7B,GAAG,MAC1BlN,EAAO/yB,GAAMgF,EAASi7B,GAAG,MACzB7c,EAASpjB,GAAMgF,EAASi7B,GAAG,MAC3BpN,EAAQ7yB,GAAMgF,EAASi7B,GAAG,MAC1BvN,EAAQ1yB,GAAMgF,EAASi7B,GAAG,MAC1B7nD,GACKswC,GAAWkY,EAAWvW,GAAM,CAAC,IAAK3B,GAClCA,EAAUkY,EAAWrzB,GAAK,CAAC,KAAMmb,KACjCH,GAAW,GAAK,CAAC,MACjBA,EAAUqY,EAAWxlD,GAAK,CAAC,KAAMmtC,IACjCF,GAAS,GAAK,CAAC,MACfA,EAAQuY,EAAW5b,GAAK,CAAC,KAAMqD,IAC/B0K,GAAQ,GAAK,CAAC,MACdA,EAAO6N,EAAW7b,GAAK,CAAC,KAAMgO,GAgBvC,OARA36C,GALIA,EADgB,MAAhBwoD,EAAWjoB,EAEPvgC,GACCy6C,GAAS,GAAK,CAAC,MACfA,EAAQ+N,EAAWjoB,GAAK,CAAC,KAAMka,GAEpCz6C,IACCgrC,GAAU,GAAK,CAAC,MAChBA,EAASwd,EAAW3b,GAAK,CAAC,KAAM7B,IAChCsP,GAAS,GAAK,CAAC,MAAS,CAAC,KAAMA,IAElC,GAAK4G,EACPlhD,EAAE,GAAuB,GAAjB0oD,EACR1oD,EAAE,GAAKqhC,EApCX,SAA2B/pB,EAAQ6tB,EAAQ+b,EAAeuE,EAAUpkB,GAChE,OAAOA,EAAOyQ,aAAa3M,GAAU,IAAK+b,EAAe5pC,EAAQmuC,IAoCxC1uD,MAAM,KAAMiJ,GAgEzC,IAAI2oD,GAAQvsD,KAAKmpC,IAEjB,SAASgW,GAAK3Q,GACV,OAAY,EAAJA,IAAUA,EAAI,KAAOA,EAGjC,SAASge,KAQL,IAAK9uD,KAAK2oC,UACN,OAAO3oC,KAAKmsC,aAAaM,cAG7B,IAGI4J,EACAF,EACAqK,EACAnlB,EAGA0zB,EACAC,EACAC,EAXAzY,EAAUqY,GAAM7uD,KAAKihD,eAAiB,IACtCJ,EAAOgO,GAAM7uD,KAAKkhD,OAClBhQ,EAAS2d,GAAM7uD,KAAKmhD,SAKpB+N,EAAQlvD,KAAKiuD,YAMjB,OAAKiB,GAOL7Y,EAAUzI,EAAS4I,EAAU,IAC7BL,EAAQvI,EAASyI,EAAU,IAC3BG,GAAW,GACXH,GAAW,GAGXmK,EAAQ5S,EAASsD,EAAS,IAC1BA,GAAU,GAGV7V,EAAImb,EAAUA,EAAQ2Y,QAAQ,GAAG3sD,QAAQ,SAAU,IAAM,GAGzDusD,EAAStN,GAAKzhD,KAAKmhD,WAAaM,GAAKyN,GAAS,IAAM,GACpDF,EAAWvN,GAAKzhD,KAAKkhD,SAAWO,GAAKyN,GAAS,IAAM,GACpDD,EAAUxN,GAAKzhD,KAAKihD,iBAAmBQ,GAAKyN,GAAS,IAAM,IAH/CA,EAAQ,EAAI,IAAM,IAO1B,KACC1O,EAAQuO,EAASvO,EAAQ,IAAM,KAC/BtP,EAAS6d,EAAS7d,EAAS,IAAM,KACjC2P,EAAOmO,EAAWnO,EAAO,IAAM,KAC/B1K,GAASE,GAAWG,EAAU,IAAM,KACpCL,EAAQ8Y,EAAU9Y,EAAQ,IAAM,KAChCE,EAAU4Y,EAAU5Y,EAAU,IAAM,KACpCG,EAAUyY,EAAU5zB,EAAI,IAAM,KA9BxB,MAkCX+zB,EAAU7O,GAAS3gD,UAwGvB,OAtGAwvD,EAAQzmB,QAl4ER,WACI,OAAO3oC,KAAK4oC,UAk4EhBwmB,EAAQ3jB,IA3YR,WACI,IAAIztB,EAAOhe,KAAK2e,MAahB,OAXA3e,KAAKihD,cAAgBuM,GAAQxtD,KAAKihD,eAClCjhD,KAAKkhD,MAAQsM,GAAQxtD,KAAKkhD,OAC1BlhD,KAAKmhD,QAAUqM,GAAQxtD,KAAKmhD,SAE5BnjC,EAAK8iC,aAAe0M,GAAQxvC,EAAK8iC,cACjC9iC,EAAKw4B,QAAUgX,GAAQxvC,EAAKw4B,SAC5Bx4B,EAAKq4B,QAAUmX,GAAQxvC,EAAKq4B,SAC5Br4B,EAAKm4B,MAAQqX,GAAQxvC,EAAKm4B,OAC1Bn4B,EAAKkzB,OAASsc,GAAQxvC,EAAKkzB,QAC3BlzB,EAAKwiC,MAAQgN,GAAQxvC,EAAKwiC,OAEnBxgD,MA8XXovD,EAAQt4C,IAhXR,SAAetK,EAAO9I,GAClB,OAAO+pD,GAAcztD,KAAMwM,EAAO9I,EAAO,IAgX7C0rD,EAAQ5+B,SA5WR,SAAoBhkB,EAAO9I,GACvB,OAAO+pD,GAAcztD,KAAMwM,EAAO9I,GAAQ,IA4W9C0rD,EAAQrB,GA/RR,SAAY7gB,GACR,IAAKltC,KAAK2oC,UACN,OAAOa,IAEX,IAAIqX,EACA3P,EACA4P,EAAe9gD,KAAKihD,cAIxB,GAAc,WAFd/T,EAAQD,EAAeC,KAEY,YAAVA,GAAiC,SAAVA,EAG5C,OAFA2T,EAAO7gD,KAAKkhD,MAAQJ,EAAe,MACnC5P,EAASlxC,KAAKmhD,QAAUwM,GAAa9M,GAC7B3T,GACJ,IAAK,QACD,OAAOgE,EACX,IAAK,UACD,OAAOA,EAAS,EACpB,IAAK,OACD,OAAOA,EAAS,QAKxB,OADA2P,EAAO7gD,KAAKkhD,MAAQ5+C,KAAKwrB,MAAM8/B,GAAa5tD,KAAKmhD,UACzCjU,GACJ,IAAK,OACD,OAAO2T,EAAO,EAAIC,EAAe,OACrC,IAAK,MACD,OAAOD,EAAOC,EAAe,MACjC,IAAK,OACD,OAAc,GAAPD,EAAYC,EAAe,KACtC,IAAK,SACD,OAAc,KAAPD,EAAcC,EAAe,IACxC,IAAK,SACD,OAAc,MAAPD,EAAeC,EAAe,IAEzC,IAAK,cACD,OAAOx+C,KAAKurC,MAAa,MAAPgT,GAAgBC,EACtC,QACI,MAAM,IAAIl+C,MAAM,gBAAkBsqC,KAyPlDkiB,EAAQpB,eAAiBA,GACzBoB,EAAQnB,UAAYA,EACpBmB,EAAQlB,UAAYA,EACpBkB,EAAQjB,QAAUA,EAClBiB,EAAQhB,OAASA,GACjBgB,EAAQf,QAAUA,EAClBe,EAAQd,SAAWA,GACnBc,EAAQb,WAAaA,GACrBa,EAAQZ,QAAUA,GAClBY,EAAQhoB,QA5PR,WACI,OAAKpnC,KAAK2oC,UAIN3oC,KAAKihD,cACQ,MAAbjhD,KAAKkhD,MACJlhD,KAAKmhD,QAAU,GAAM,OACK,QAA3BrT,EAAM9tC,KAAKmhD,QAAU,IANd3X,KA2Pf4lB,EAAQhO,QA5WR,WACI,IAAIN,EAAe9gD,KAAKihD,cACpBJ,EAAO7gD,KAAKkhD,MACZhQ,EAASlxC,KAAKmhD,QACdnjC,EAAOhe,KAAK2e,MAgDhB,OArCyB,GAAhBmiC,GAA6B,GAARD,GAAuB,GAAV3P,GAClC4P,GAAgB,GAAKD,GAAQ,GAAK3P,GAAU,IAGjD4P,GAAuD,MAAvC4M,GAAQE,GAAa1c,GAAU2P,GAE/C3P,EADA2P,EAAO,GAMX7iC,EAAK8iC,aAAeA,EAAe,IAEnCtK,EAAU5I,EAASkT,EAAe,KAClC9iC,EAAKw4B,QAAUA,EAAU,GAEzBH,EAAUzI,EAAS4I,EAAU,IAC7Bx4B,EAAKq4B,QAAUA,EAAU,GAEzBF,EAAQvI,EAASyI,EAAU,IAC3Br4B,EAAKm4B,MAAQA,EAAQ,GAErB0K,GAAQjT,EAASuI,EAAQ,IAIzBjF,GADAme,EAAiBzhB,EAAS+f,GAAa9M,IAEvCA,GAAQ6M,GAAQE,GAAayB,IAG7B7O,EAAQ5S,EAASsD,EAAS,IAC1BA,GAAU,GAEVlzB,EAAK6iC,KAAOA,EACZ7iC,EAAKkzB,OAASA,EACdlzB,EAAKwiC,MAAQA,EAENxgD,MAyTXovD,EAAQttD,MAlOR,WACI,OAAOugD,GAAeriD,OAkO1BovD,EAAQnvD,IA/NR,SAAeitC,GAEX,OADAA,EAAQD,EAAeC,GAChBltC,KAAK2oC,UAAY3oC,KAAKktC,EAAQ,OAAS1D,KA8NlD4lB,EAAQtO,aAAeA,GACvBsO,EAAQ5Y,QAAUA,GAClB4Y,EAAQ/Y,QAAUA,GAClB+Y,EAAQjZ,MAAQA,GAChBiZ,EAAQvO,KAAOA,GACfuO,EAAQzO,MAlNR,WACI,OAAO/S,EAAS5tC,KAAK6gD,OAAS,IAkNlCuO,EAAQle,OAASA,GACjBke,EAAQ5O,MAAQA,GAChB4O,EAAQ/H,SAlIR,SAAkBiI,EAAeC,GAC7B,IAAKvvD,KAAK2oC,UACN,OAAO3oC,KAAKmsC,aAAaM,cAG7B,IAAI+iB,GAAa,EACb/sC,EAAKisC,GAyBT,MArB6B,iBAAzB,IAAOY,EAAP,eAAOA,MACPC,EAAgBD,EAChBA,GAAgB,GAES,kBAAlBA,IACPE,EAAaF,GAEY,iBAAzB,IAAOC,EAAP,eAAOA,MACP9sC,EAAK/lB,OAAO+yD,OAAO,GAAIf,GAAYa,GACZ,MAAnBA,EAAcl0B,GAAiC,MAApBk0B,EAAcpX,KACzC11B,EAAG01B,GAAKoX,EAAcl0B,EAAI,IAIlCkM,EAASvnC,KAAKmsC,aACdI,EAASoiB,GAAe3uD,MAAOwvD,EAAY/sC,EAAI8kB,GAE3CioB,IACAjjB,EAAShF,EAAOskB,YAAY7rD,KAAMusC,IAG/BhF,EAAO4f,WAAW5a,IAoG7B6iB,EAAQ3G,YAAcqG,GACtBM,EAAQ/xD,SAAWyxD,GACnBM,EAAQvG,OAASiG,GACjBM,EAAQ7nB,OAASA,GACjB6nB,EAAQjjB,WAAaA,GAErBijB,EAAQM,YAAchlB,EAClB,sFACAokB,IAEJM,EAAQ7+C,KAAOA,GAIfy7B,EAAe,IAAK,EAAG,EAAG,QAC1BA,EAAe,IAAK,EAAG,EAAG,WAI1BuD,GAAc,IAAKJ,IACnBI,GAAc,IAhuJO,wBAiuJrBW,GAAc,IAAK,SAAU1jC,EAAO1P,EAAOwtC,GACvCA,EAAOrB,GAAK,IAAIzjC,KAAyB,IAApBuoB,WAAWvhB,MAEpC0jC,GAAc,IAAK,SAAU1jC,EAAO1P,EAAOwtC,GACvCA,EAAOrB,GAAK,IAAIzjC,KAAKsoC,EAAMthC;aAK/BuS;EAAM3f,QAAU,SAj+KZsnC,EAm+KYqX,GAEhBh/B,EAAMvf,GAAKsD,GACXic,EAAM8yB,IA1/EN,WAGI,OAAOuO,GAAO,WAFH,GAAGxjD,MAAMG,KAAK6D,UAAW,KA0/ExCme,EAAM0R,IAr/EN,WAGI,OAAO2vB,GAAO,UAFH,GAAGxjD,MAAMG,KAAK6D,UAAW,KAq/ExCme,EAAM4I,IAh/EI,WACN,OAAOniB,KAAKmiB,IAAMniB,KAAKmiB,OAAS,IAAIniB,MAg/ExCuZ,EAAM2oB,IAAML,EACZtoB,EAAM+pC,KA1oBN,SAAoBt8C,GAChB,OAAOuxC,GAAoB,IAARvxC,IA0oBvBuS,EAAMmyB,OAlhBN,SAAoB5J,EAAQ1wB,GACxB,OAAOq0C,GAAe3jB,EAAQ1wB,EAAO,WAkhBzCmI,EAAMmoB,OAASA,EACfnoB,EAAMwoB,OAASiS,GACfz6B,EAAMmkC,QAAU3Z,EAChBxqB,EAAM+T,SAAWuvB,GACjBtjC,EAAMyrB,SAAWA,EACjBzrB,EAAM41B,SAhhBN,SAAsByW,EAAc9jB,EAAQ1wB,GACxC,OAAOu0C,GAAiBC,EAAc9jB,EAAQ1wB,EAAO,aAghBzDmI,EAAM+qC,UA9oBN,WACI,OAAO/L,GAAY9gD,MAAM,KAAM2D,WAAWkpD,aA8oB9C/qC,EAAMotB,WAAasN,GACnB16B,EAAMsiC,WAAaA,GACnBtiC,EAAMkyB,YAxhBN,SAAyB3J,EAAQ1wB,GAC7B,OAAOq0C,GAAe3jB,EAAQ1wB,EAAO,gBAwhBzCmI,EAAM01B,YA7gBN,SAAyB2W,EAAc9jB,EAAQ1wB,GAC3C,OAAOu0C,GAAiBC,EAAc9jB,EAAQ1wB,EAAO,gBA6gBzDmI,EAAM26B,aAAeA,GACrB36B,EAAM4wC,aAr4GN,SAAsBhuD,EAAM2oC,GACxB,IAEQslB,EACA3kB,EAsCR,OAzCc,MAAVX,GAGIW,EAAegM,GAEE,MAAjB0B,GAAQh3C,IAA+C,MAA9Bg3C,GAAQh3C,GAAMk4C,aAEvClB,GAAQh3C,GAAMoc,IAAIitB,EAAa2N,GAAQh3C,GAAMi4C,QAAStP,KAOtDA,EAASU,EAFLC,EADa,OADjB2kB,EAAY5W,GAAWr3C,IAEJiuD,EAAUhW,QAEP3O,EAAcX,GACnB,MAAbslB,IAIAtlB,EAAOqP,KAAOh4C,IAElB4lC,EAAS,IAAI4D,EAAOb,IACbuP,aAAelB,GAAQh3C,GAC9Bg3C,GAAQh3C,GAAQ4lC,GAIpBiS,GAAmB73C,IAGE,MAAjBg3C,GAAQh3C,KAC0B,MAA9Bg3C,GAAQh3C,GAAMk4C,cACdlB,GAAQh3C,GAAQg3C,GAAQh3C,GAAMk4C,aAC1Bl4C,IAAS63C,MACTA,GAAmB73C,IAEC,MAAjBg3C,GAAQh3C,WACRg3C,GAAQh3C,IAIpBg3C,GAAQh3C,IA41GnBod,EAAM45B,QAj0GN,WACI,OAAO3uC,EAAK2uC,KAi0GhB55B,EAAM21B,cArhBN,SAA2B0W,EAAc9jB,EAAQ1wB,GAC7C,OAAOu0C,GAAiBC,EAAc9jB,EAAQ1wB,EAAO,kBAqhBzDmI,EAAMkuB,eAAiBA,EACvBluB,EAAM8wC,qBAtNN,SAAoCC,GAChC,YAAyB1tD,IAArB0tD,EACOhiC,GAEqB,mBAArBgiC,IACPhiC,GAAQgiC,GACD,IAiNf/wC,EAAMgxC,sBA3MN,SAAqCC,EAAWC,GAC5C,YAA8B7tD,IAA1BssD,GAAWsB,UAGD5tD,IAAV6tD,EACOvB,GAAWsB,IAEtBtB,GAAWsB,GAAaC,EACN,MAAdD,IACAtB,GAAWvW,GAAK8X,EAAQ,IAErB,KAiMXlxC,EAAM6nC,eAx5DN,SAA2BsJ,EAAUvoC,GAEjC,OADI7c,EAAOolD,EAASplD,KAAK6c,EAAK,QAAQ,KACvB,EACT,WACA7c,GAAQ,EACR,WACAA,EAAO,EACP,UACAA,EAAO,EACP,UACAA,EAAO,EACP,UACAA,EAAO,EACP,WACA,YA24DViU,EAAMnf,UAAYkD,GAGlBic,EAAMoxC,UAAY,CACdC,eAAgB,mBAChBC,uBAAwB,sBACxBC,kBAAmB,0BACnB/f,KAAM,aACNggB,KAAM,QACNC,aAAc,WACdC,QAAS,eACT7f,KAAM,aACNN,MAAO,WAGJvxB,GA5hLY,WAAnB,GAAOynB,SAA0C,IAAXD,GAAyBA,GAAOC,QAAUrqC,SACnC,0BAAAu0D,KAAA,sC,+QCLjDC,EAAK,WACJ,OAAO3wD,KADH,GAIL,IAEC2wD,EAAIA,GAAK,IAAI5lB,SAAS,cAAb,GACR,MAAOviC,GAEc,YAAlB,oBAAOpM,OAAP,cAAOA,WAAqBu0D,EAAIv0D,QAOrCmqC,EAAOC,QAAUmqB,G,kEClBjB,IAOIC,EACAC,EARA91C,EAAUwrB,EAAOC,QAAU,GAU/B,SAASsqB,IACL,MAAM,IAAIluD,MAAM,mCAEpB,SAASmuD,IACL,MAAM,IAAInuD,MAAM,qCAsBpB,SAASouD,EAAWvnB,GAChB,GAAImnB,IAAqBx1C,WAErB,OAAOA,WAAWquB,EAAK,GAG3B,IAAKmnB,IAAqBE,IAAqBF,IAAqBx1C,WAEhE,OADAw1C,EAAmBx1C,WACZA,WAAWquB,EAAK,GAE3B,IAEI,OAAOmnB,EAAiBnnB,EAAK,GAC/B,MAAMjhC,GACJ,IAEI,OAAOooD,EAAiB7zD,KAAK,KAAM0sC,EAAK,GAC1C,MAAMjhC,GAEJ,OAAOooD,EAAiB7zD,KAAKiD,KAAMypC,EAAK,MAvCnD,WACG,IAEQmnB,EADsB,mBAAfx1C,WACYA,WAEA01C,EAEzB,MAAOtoD,GACLooD,EAAmBE,EAEvB,IAEQD,EADwB,mBAAjBl5B,aACcA,aAEAo5B,EAE3B,MAAOvoD,GACLqoD,EAAqBE,GAjB5B,GAwED,IAEIE,EAFAn4C,EAAQ,GACRo4C,GAAW,EAEXC,GAAc,EAElB,SAASC,IACAF,GAAaD,IAGlBC,GAAW,EACPD,EAAatxD,OACbmZ,EAAQm4C,EAAaj0D,OAAO8b,GAE5Bq4C,GAAc,EAEdr4C,EAAMnZ,QACN0xD,KAIR,SAASA,IACL,IAAIH,EAAJ,CAGA,IAAIx5B,EAAUs5B,EAAWI,GACzBF,GAAW,EAGX,IADA,IAAI9vD,EAAM0X,EAAMnZ,OACVyB,GAAK,CAGP,IAFA6vD,EAAen4C,EACfA,EAAQ,KACCq4C,EAAa/vD,GACd6vD,GACAA,EAAaE,GAAYx+B,MAGjCw+B,GAAc,EACd/vD,EAAM0X,EAAMnZ,OAEhBsxD,EAAe,KACfC,GAAW,EAnEf,SAAyBI,GACrB,GAAIT,IAAuBl5B,aAEvB,OAAOA,aAAa25B,GAGxB,IAAKT,IAAuBE,IAAwBF,IAAuBl5B,aAEvE,OADAk5B,EAAqBl5B,aACdA,aAAa25B,GAExB,IAEWT,EAAmBS,GAC5B,MAAO9oD,GACL,IAEI,OAAOqoD,EAAmB9zD,KAAK,KAAMu0D,GACvC,MAAO9oD,GAGL,OAAOqoD,EAAmB9zD,KAAKiD,KAAMsxD,KAgD7CC,CAAgB75B,IAiBpB,SAAS85B,EAAK/nB,EAAK3sC,GACfkD,KAAKypC,IAAMA,EACXzpC,KAAKlD,MAAQA,EAYjB,SAAS+F,KA5BTkY,EAAQ02C,SAAW,SAAUhoB,GACzB,IAAIx5B,EAAO,IAAI/N,MAAMtB,UAAUjB,OAAS,GACxC,GAAuB,EAAnBiB,UAAUjB,OACV,IAAK,IAAInB,EAAI,EAAGA,EAAIoC,UAAUjB,OAAQnB,IAClCyR,EAAKzR,EAAI,GAAKoC,UAAUpC,GAGhCsa,EAAM5b,KAAK,IAAIs0D,EAAK/nB,EAAKx5B,IACJ,IAAjB6I,EAAMnZ,QAAiBuxD,GACvBF,EAAWK,IASnBG,EAAK5xD,UAAU+yB,IAAM,WACjB3yB,KAAKypC,IAAIxsC,MAAM,KAAM+C,KAAKlD,QAE9Bie,EAAQ22C,MAAQ,UAChB32C,EAAQ42C,SAAU,EAClB52C,EAAQ62C,IAAM,GACd72C,EAAQ82C,KAAO,GACf92C,EAAQ3b,QAAU,GAClB2b,EAAQ+2C,SAAW,GAInB/2C,EAAQ4I,GAAK9gB,EACbkY,EAAQg3C,YAAclvD,EACtBkY,EAAQpC,KAAO9V,EACfkY,EAAQiJ,IAAMnhB,EACdkY,EAAQi3C,eAAiBnvD,EACzBkY,EAAQk3C,mBAAqBpvD,EAC7BkY,EAAQm3C,KAAOrvD,EACfkY,EAAQo3C,gBAAkBtvD,EAC1BkY,EAAQq3C,oBAAsBvvD,EAE9BkY,EAAQs3C,UAAY,SAAU1wD,GAAQ,MAAO,IAE7CoZ,EAAQu3C,QAAU,SAAU3wD,GACxB,MAAM,IAAIiB,MAAM,qCAGpBmY,EAAQw3C,IAAM,WAAc,MAAO,KACnCx3C,EAAQy3C,MAAQ,SAAUnqD,GACtB,MAAM,IAAIzF,MAAM,mCAEpBmY,EAAQ03C,MAAQ,WAAa,OAAO,I,iCClLjBt2D,E;;;;;IAAAA;EAIV,SAAUqqC,EAASH,EAAGqsB,GAE7B,SAASC,EAAuBnqD,GAAK,OAAOA,GAAkB,iBAAb,IAAOA,EAAP,eAAOA,KAAkB,YAAaA,EAAIA,EAAI,CAAE,QAAWA,GAE5G,IAAIoqD,EAA0BD,EAAsBtsB,GAChDwsB,EAA+BF,EAAsBD,GAEzD,SAASI,EAAkB/wD,EAAQulB,GACjC,IAAK,IAAI9oB,EAAI,EAAGA,EAAI8oB,EAAM3nB,OAAQnB,IAAK,CACrC,IAAIu0D,EAAazrC,EAAM9oB,GACvBu0D,EAAWjsC,WAAaisC,EAAWjsC,aAAc,EACjDisC,EAAWj1C,cAAe,EACtB,UAAWi1C,IAAYA,EAAW/rC,UAAW,GACjDtqB,OAAOmhB,eAAe9b,EAAQgxD,EAAW7oD,IAAK6oD,IAIlD,SAASC,EAAaC,EAAaC,EAAYC,GAG7C,OAFID,GAAYJ,EAAkBG,EAAYrzD,UAAWszD,GACrDC,GAAaL,EAAkBG,EAAaE,GACzCF,EAGT,SAASG,IAeP,OAdAA,EAAW12D,OAAO+yD,QAAU,SAAU1tD,GACpC,IAAK,IAAIvD,EAAI,EAAGA,EAAIoC,UAAUjB,OAAQnB,IAAK,CACzC,IAES0L,EAFLqV,EAAS3e,UAAUpC,GAEvB,IAAS0L,KAAOqV,EACV7iB,OAAOkD,UAAUrC,eAAeR,KAAKwiB,EAAQrV,KAC/CnI,EAAOmI,GAAOqV,EAAOrV,IAK3B,OAAOnI,IAGO9E,MAAM+C,KAAMY,WAqB9B,IAAIyyD,EAAiB,gBA0BrB,SAASC,EAAsBxgC,GAC7B,IAAIygC,EAAQvzD,KAERwzD,GAAS,EASb,OARAZ,EAAA,QAAsB5yD,MAAM6jB,IAAI4vC,EAAKJ,eAAgB,WACnDG,GAAS,IAEXp4C,WAAW,WACJo4C,GACHC,EAAKC,qBAAqBH,IAE3BzgC,GACI9yB,KAcT,IAAIyzD,EAAO,CACTJ,eAAgB,kBAChBM,OAAQ,SAAgBthC,GACtB,KACEA,MAvDQ,IAuDK/vB,KAAKC,UACXzE,SAASqL,eAAekpB,KAEjC,OAAOA,GAETuhC,uBAAwB,SAAgCC,GACtD,IAAIv0D,EAAWu0D,EAAQh1D,aAAa,eAE/BS,GAAyB,MAAbA,IAEfA,GADIw0D,EAAWD,EAAQh1D,aAAa,UACA,MAAbi1D,EAAmBA,EAAS5tB,OAAS,IAG9D,IACE,OAAOpoC,SAASi2D,cAAcz0D,GAAYA,EAAW,KACrD,MAAOiZ,GACP,OAAO,OAGXy7C,iCAAkC,SAA0CH,GAC1E,IAAKA,EACH,OAAO,EAIT,IAAII,EAAqBrB,EAAA,QAAsBiB,GAAS7zC,IAAI,uBACxDk0C,EAAkBtB,EAAA,QAAsBiB,GAAS7zC,IAAI,oBACrDm0C,EAA0BpmC,WAAWkmC,GACrCG,EAAuBrmC,WAAWmmC,GAEtC,OAAKC,GAA4BC,GAKjCH,EAAqBA,EAAmBnwD,MAAM,KAAK,GACnDowD,EAAkBA,EAAgBpwD,MAAM,KAAK,GA1FnB,KA2FlBiqB,WAAWkmC,GAAsBlmC,WAAWmmC,KAN3C,GAQXG,OAAQ,SAAgBR,GACtB,OAAOA,EAAQtkC,cAEjBmkC,qBAAsB,SAA8BG,GAClDjB,EAAA,QAAsBiB,GAASpvC,QAAQ4uC,IAEzCiB,sBAAuB,WACrB,OAAOC,QAAQlB,IAEjBmB,UAAW,SAAmBj4D,GAC5B,OAAQA,EAAI,IAAMA,GAAKqB,UAEzB62D,gBAAiB,SAAyBC,EAAepqB,EAAQqqB,GAC/D,IAAK,IAAInR,KAAYmR,EACnB,GAAIj4D,OAAOkD,UAAUrC,eAAeR,KAAK43D,EAAanR,GAAW,CAC/D,IAAIoR,EAAgBD,EAAYnR,GAC5B9/C,EAAQ4mC,EAAOkZ,GACfqR,EAAYnxD,GAAS+vD,EAAKe,UAAU9wD,GAAS,UA3GnDnH,OADUA,EA4G4DmH,GA1GjE,GAAKnH,EAGP,GAAGc,SAASN,KAAKR,GAAKqM,MAAM,eAAe,GAAG5E,cAyG/C,IAAK,IAAI6C,OAAO+tD,GAAeprD,KAAKqrD,GAClC,MAAM,IAAIjyD,MAAM8xD,EAAcp3C,cAAgB,aAAsBkmC,EAAW,oBAAwBqR,EAAY,wBAAmCD,EAAgB,MA/GhL,IAAgBr4D,GAoHdu4D,eAAgB,SAAwBjB,GACtC,IAAK/1D,SAAS0N,gBAAgBupD,aAC5B,OAAO,KAIT,GAAmC,mBAAxBlB,EAAQj0C,YAKnB,OAAIi0C,aAAmBmB,WACdnB,EAIJA,EAAQ50D,WAINw0D,EAAKqB,eAAejB,EAAQ50D,YAH1B,KAVH6W,EAAO+9C,EAAQj0C,cACnB,OAAO9J,aAAgBk/C,WAAal/C,EAAO,MAc/Cm/C,gBAAiB,WACf,QAAqC,IAA1BrC,EAAA,QACT,MAAM,IAAIh4C,UAAU,kGAGtB,IAAIxb,EAAUwzD,EAAA,QAAsBpzD,GAAGK,OAAOiE,MAAM,KAAK,GAAGA,MAAM,KAOlE,GAAI1E,EAAQ,GALE,GAKcA,EAAQ,GAJrB,GAFA,IAMsCA,EAAQ,IAJ9C,IAIiEA,EAAQ,IAAmBA,EAAQ,GAHpG,GACA,GAEqHA,EAAQ,GAC1I,MAAM,IAAIwD,MAAM,iFAItB6wD,EAAKwB,kBArHHrC,EAAA,QAAsBpzD,GAAG01D,qBAAuB5B,EAChDV,EAAA,QAAsB7uC,MAAMtJ,QAAQg5C,EAAKJ,gBA9BlC,CACL9tC,SAAU8tC,EACVhvC,aAAcgvC,EACdjuC,OAAQ,SAAgBrB,GACtB,GAAI6uC,EAAA,QAAsB7uC,EAAMhiB,QAAQqT,GAAGpV,MACzC,OAAO+jB,EAAMgB,UAAUra,QAAQzN,MAAM+C,KAAMY,aAsJnD,IAAIu0D,EAAO,QAEPC,EAAW,WAGXC,EAAqBzC,EAAA,QAAsBpzD,GAAG21D,GAc9CG,EAAqB,WACvB,SAASA,EAAMzB,GACb7zD,KAAKu1D,SAAW1B,EAIlB,IAAI2B,EAASF,EAAM11D,UAqGnB,OAlGA41D,EAAOC,MAAQ,SAAe5B,GAC5B,IAAI6B,EAAc11D,KAAKu1D,SAEnB1B,IACF6B,EAAc11D,KAAK21D,gBAAgB9B,IAGnB7zD,KAAK41D,mBAAmBF,GAE1BnuC,sBAIhBvnB,KAAK61D,eAAeH,IAGtBF,EAAOM,QAAU,WACflD,EAAA,QAAsBl0C,WAAW1e,KAAKu1D,SAAUH,GAChDp1D,KAAKu1D,SAAW,MAIlBC,EAAOG,gBAAkB,SAAyB9B,GAChD,IAAIv0D,EAAWm0D,EAAKG,uBAAuBC,GACvCjkD,GAAS,EAUb,OAHEA,GAJAA,EADEtQ,EACOxB,SAASi2D,cAAcz0D,GAG7BsQ,IACMgjD,EAAA,QAAsBiB,GAASl9C,QAAQ,UAAwB,IAM5E6+C,EAAOI,mBAAqB,SAA4B/B,GACtD,IAAIkC,EAAanD,EAAA,QAAsBluC,MA3DzB,kBA6Dd,OADAkuC,EAAA,QAAsBiB,GAASpvC,QAAQsxC,GAChCA,GAGTP,EAAOK,eAAiB,SAAwBhC,GAC9C,IAUII,EAVAV,EAAQvzD,KAEZ4yD,EAAA,QAAsBiB,GAASz6B,YA9Db,QAgEbw5B,EAAA,QAAsBiB,GAASp6B,SAjElB,SAuEdw6B,EAAqBR,EAAKO,iCAAiCH,GAC/DjB,EAAA,QAAsBiB,GAAShwC,IAAI4vC,EAAKJ,eAAgB,SAAUtvC,GAChE,OAAOwvC,EAAMyC,gBAAgBnC,EAAS9vC,KACrCmxC,qBAAqBjB,IARtBj0D,KAAKg2D,gBAAgBnC,IAWzB2B,EAAOQ,gBAAkB,SAAyBnC,GAChDjB,EAAA,QAAsBiB,GAASroC,SAAS/G,QAjFzB,mBAiF+CvL,UAIhEo8C,EAAMW,iBAAmB,SAA0B3rB,GACjD,OAAOtqC,KAAKQ,KAAK,WACf,IAAI01D,EAAWtD,EAAA,QAAsB5yD,MACjCge,EAAOk4C,EAASl4C,KAAKo3C,GAEpBp3C,IACHA,EAAO,IAAIs3C,EAAMt1D,MACjBk2D,EAASl4C,KAAKo3C,EAAUp3C,IAGX,UAAXssB,GACFtsB,EAAKssB,GAAQtqC,SAKnBs1D,EAAMa,eAAiB,SAAwBC,GAC7C,OAAO,SAAUryC,GACXA,GACFA,EAAMS,iBAGR4xC,EAAcX,MAAMz1D,QAIxBgzD,EAAasC,EAAO,KAAM,CAAC,CACzBprD,IAAK,UACLjK,IAAK,WACH,MAzHQ,YA6HLq1D,EA3GgB,GAoHzB1C,EAAA,QAAsB90D,UAAU6lB,GA9HL,0BAHJ,yBAiIoD2xC,EAAMa,eAAe,IAAIb,IAOpG1C,EAAA,QAAsBpzD,GAAG21D,GAAQG,EAAMW,iBACvCrD,EAAA,QAAsBpzD,GAAG21D,GAAMlC,YAAcqC,EAE7C1C,EAAA,QAAsBpzD,GAAG21D,GAAM7uB,WAAa,WAE1C,OADAssB,EAAA,QAAsBpzD,GAAG21D,GAAQE,EAC1BC,EAAMW,kBASf,IAAII,EAAS,SAETC,EAAa,YACbC,EAAc,IAAMD,EACpBE,EAAiB,YACjBC,EAAuB7D,EAAA,QAAsBpzD,GAAG62D,GAChDK,EAAoB,SAGpBC,EAA8B,0BAI9BC,EAAiB,6BAYjBC,EAAsB,WACxB,SAASA,EAAOhD,GACd7zD,KAAKu1D,SAAW1B,EAChB7zD,KAAK82D,0BAA2B,EAIlC,IAAItB,EAASqB,EAAOj3D,UAkFpB,OA/EA41D,EAAOt0C,OAAS,WACd,IAKM1U,EALFuqD,GAAqB,EACrBC,GAAiB,EACjBtB,EAAc9C,EAAA,QAAsB5yD,KAAKu1D,UAAU5+C,QA5B/B,2BA4B8D,IAElF++C,IACElpD,EAAQxM,KAAKu1D,SAASxB,cAAc6C,MAGnB,UAAfpqD,EAAMxO,OACJwO,EAAMuE,SAAW/Q,KAAKu1D,SAAS0B,UAAU1xD,SAASmxD,GACpDK,GAAqB,GAEjBpmD,EAAgB+kD,EAAY3B,cAlCtB,aAqCRnB,EAAA,QAAsBjiD,GAAeyoB,YAAYs9B,IAKnDK,IAEiB,aAAfvqD,EAAMxO,MAAsC,UAAfwO,EAAMxO,OACrCwO,EAAMuE,SAAW/Q,KAAKu1D,SAAS0B,UAAU1xD,SAASmxD,IAG/C12D,KAAK82D,0BACRlE,EAAA,QAAsBpmD,GAAOiY,QAAQ,WAIzCjY,EAAMgd,QACNwtC,GAAiB,GAIfh3D,KAAKu1D,SAAS2B,aAAa,aAAel3D,KAAKu1D,SAAS0B,UAAU1xD,SAAS,cAC3EyxD,GACFh3D,KAAKu1D,SAASz2D,aAAa,gBAAiBkB,KAAKu1D,SAAS0B,UAAU1xD,SAASmxD,IAG3EK,GACFnE,EAAA,QAAsB5yD,KAAKu1D,UAAUl8B,YAAYq9B,KAKvDlB,EAAOM,QAAU,WACflD,EAAA,QAAsBl0C,WAAW1e,KAAKu1D,SAAUe,GAChDt2D,KAAKu1D,SAAW,MAIlBsB,EAAOZ,iBAAmB,SAA0B3rB,EAAQ6sB,GAC1D,OAAOn3D,KAAKQ,KAAK,WACf,IAAI01D,EAAWtD,EAAA,QAAsB5yD,MACjCge,EAAOk4C,EAASl4C,KAAKs4C,GAEpBt4C,IACHA,EAAO,IAAI64C,EAAO72D,MAClBk2D,EAASl4C,KAAKs4C,EAAYt4C,IAG5BA,EAAK84C,yBAA2BK,EAEjB,WAAX7sB,GACFtsB,EAAKssB,QAKX0oB,EAAa6D,EAAQ,KAAM,CAAC,CAC1B3sD,IAAK,UACLjK,IAAK,WACH,MA7GU,YAiHP42D,EAzFiB,GAkG1BjE,EAAA,QAAsB90D,UAAU6lB,GA3GH,2BA2G8BgzC,EAA6B,SAAU5yC,GAChG,IAUMqzC,EAVFzwC,EAAS5C,EAAMhiB,OACfs1D,EAAgB1wC,IAGlBA,GADGisC,EAAA,QAAsBjsC,GAAQ8S,SAxHb,OAyHXm5B,EAAA,QAAsBjsC,GAAQhQ,QAjHrB,QAiH8C,GAG7DgQ,IAAUA,EAAOuwC,aAAa,aAAevwC,EAAOswC,UAAU1xD,SAAS,cAGtE6xD,EAAWzwC,EAAOotC,cAAc6C,MAEnBQ,EAASF,aAAa,aAAeE,EAASH,UAAU1xD,SAAS,aAJlFwe,EAAMS,iBAUwB,UAA1B6yC,EAAcC,SAA0C,UAAnB3wC,EAAO2wC,SAC9CT,EAAOZ,iBAAiBl5D,KAAK61D,EAAA,QAAsBjsC,GAAS,SAAoC,UAA1B0wC,EAAcC,WAGvF3zC,GAjI6B,mDAiICgzC,EAA6B,SAAU5yC,GACtE,IAAI4C,EAASisC,EAAA,QAAsB7uC,EAAMhiB,QAAQ4U,QApI7B,QAoIsD,GAC1Ei8C,EAAA,QAAsBjsC,GAAQ0S,YA5IT,QA4IuC,eAAe7vB,KAAKua,EAAM/lB,SAExF40D,EAAA,QAAsBx2D,QAAQunB,GApIJ,0BAoI4B,WAKpD,IAFA,IAAIgF,EAAU,GAAG/rB,MAAMG,KAAKe,SAAS+L,iBA7IH,iCA+IzBrL,EAAI,EAAG4C,EAAMunB,EAAQhpB,OAAQnB,EAAI4C,EAAK5C,IAAK,CAClD,IAAImoB,EAASgC,EAAQnqB,GACjBgO,EAAQma,EAAOotC,cAAc6C,GAE7BpqD,EAAMuE,SAAWvE,EAAM0qD,aAAa,WACtCvwC,EAAOswC,UAAUngD,IAAI4/C,GAErB/vC,EAAOswC,UAAU/9C,OAAOw9C,GAO5B,IAAK,IAAI3yD,EAAK,EAAGwzD,GAFjB5uC,EAAU,GAAG/rB,MAAMG,KAAKe,SAAS+L,iBA5JR,4BA8JOlK,OAAQoE,EAAKwzD,EAAMxzD,IAAM,CACvD,IAAIyzD,EAAU7uC,EAAQ5kB,GAEuB,SAAzCyzD,EAAQ34D,aAAa,gBACvB24D,EAAQP,UAAUngD,IAAI4/C,GAEtBc,EAAQP,UAAU/9C,OAAOw9C,MAU/B9D,EAAA,QAAsBpzD,GAAG62D,GAAUQ,EAAOZ,iBAC1CrD,EAAA,QAAsBpzD,GAAG62D,GAAQpD,YAAc4D,EAE/CjE,EAAA,QAAsBpzD,GAAG62D,GAAQ/vB,WAAa,WAE5C,OADAssB,EAAA,QAAsBpzD,GAAG62D,GAAUI,EAC5BI,EAAOZ,kBAShB,IAAIwB,EAAS,WAETC,EAAa,cACbC,EAAc,IAAMD,EAEpBE,EAAuBhF,EAAA,QAAsBpzD,GAAGi4D,GAQhDI,EAAU,CACZ7jC,SAAU,IACV8jC,UAAU,EACVC,OAAO,EACPC,MAAO,QACPj1C,MAAM,EACNk1C,OAAO,GAELC,EAAc,CAChBlkC,SAAU,mBACV8jC,SAAU,UACVC,MAAO,mBACPC,MAAO,mBACPj1C,KAAM,UACNk1C,MAAO,WAELE,EAAiB,OACjBC,EAAiB,OAIjBC,EAAa,OAASV,EAatBW,EAAsB,SAQtBC,EAAuB,wBAOvBC,EAAc,CAChBC,MAAO,QACPC,IAAK,OAQHC,EAAwB,WAC1B,SAASA,EAAS9E,EAASvpB,GACzBtqC,KAAK44D,OAAS,KACd54D,KAAK64D,UAAY,KACjB74D,KAAK84D,eAAiB,KACtB94D,KAAK+4D,WAAY,EACjB/4D,KAAKg5D,YAAa,EAClBh5D,KAAKi5D,aAAe,KACpBj5D,KAAKk5D,YAAc,EACnBl5D,KAAKm5D,YAAc,EACnBn5D,KAAK45C,QAAU55C,KAAKo5D,WAAW9uB,GAC/BtqC,KAAKu1D,SAAW1B,EAChB7zD,KAAKq5D,mBAAqBr5D,KAAKu1D,SAASxB,cAzBlB,wBA0BtB/zD,KAAKs5D,gBAAkB,iBAAkBx7D,SAAS0N,iBAA8C,EAA3B+tD,UAAUC,eAC/Ex5D,KAAKy5D,cAAgBlF,QAAQn4D,OAAOs9D,cAAgBt9D,OAAOu9D,gBAE3D35D,KAAK45D,qBAIP,IAAIpE,EAASmD,EAAS/4D,UAodtB,OAjdA41D,EAAOltD,KAAO,WACPtI,KAAKg5D,YACRh5D,KAAK65D,OAAO1B,IAIhB3C,EAAOsE,gBAAkB,WACvB,IAAI5D,EAAWtD,EAAA,QAAsB5yD,KAAKu1D,WAGrCz3D,SAASg2B,QAAUoiC,EAAS9gD,GAAG,aAA8C,WAA/B8gD,EAASl2C,IAAI,eAC9DhgB,KAAKsI,QAITktD,EAAOl/C,KAAO,WACPtW,KAAKg5D,YACRh5D,KAAK65D,OAAOzB,IAIhB5C,EAAOwC,MAAQ,SAAej0C,GACvBA,IACH/jB,KAAK+4D,WAAY,GAGf/4D,KAAKu1D,SAASxB,cA/DG,8CAgEnBN,EAAKC,qBAAqB1zD,KAAKu1D,UAC/Bv1D,KAAK+5D,OAAM,IAGbC,cAAch6D,KAAK64D,WACnB74D,KAAK64D,UAAY,MAGnBrD,EAAOuE,MAAQ,SAAeh2C,GACvBA,IACH/jB,KAAK+4D,WAAY,GAGf/4D,KAAK64D,YACPmB,cAAch6D,KAAK64D,WACnB74D,KAAK64D,UAAY,MAGf74D,KAAK45C,QAAQ5lB,WAAah0B,KAAK+4D,YACjC/4D,KAAKi6D,kBAELj6D,KAAK64D,UAAYqB,aAAap8D,SAASq8D,gBAAkBn6D,KAAK85D,gBAAkB95D,KAAKsI,MAAM+sB,KAAKr1B,MAAOA,KAAK45C,QAAQ5lB,YAIxHwhC,EAAOh/B,GAAK,SAAY5f,GACtB,IAAI28C,EAAQvzD,KAEZA,KAAK84D,eAAiB94D,KAAKu1D,SAASxB,cAAcwE,GAElD,IAAI6B,EAAcp6D,KAAKq6D,cAAcr6D,KAAK84D,gBAE1C,KAAIliD,EAAQ5W,KAAK44D,OAAOj5D,OAAS,GAAKiX,EAAQ,GAI9C,GAAI5W,KAAKg5D,WACPpG,EAAA,QAAsB5yD,KAAKu1D,UAAU1xC,IAAIw0C,EAAY,WACnD,OAAO9E,EAAM/8B,GAAG5f,SAFpB,CAOA,GAAIwjD,IAAgBxjD,EAGlB,OAFA5W,KAAKg4D,aACLh4D,KAAK+5D,QAMP/5D,KAAK65D,OAFmBO,EAARxjD,EAAsBuhD,EAAiBC,EAEhCp4D,KAAK44D,OAAOhiD,MAGrC4+C,EAAOM,QAAU,WACflD,EAAA,QAAsB5yD,KAAKu1D,UAAUvxC,IAAI2zC,GACzC/E,EAAA,QAAsBl0C,WAAW1e,KAAKu1D,SAAUmC,GAChD13D,KAAK44D,OAAS,KACd54D,KAAK45C,QAAU,KACf55C,KAAKu1D,SAAW,KAChBv1D,KAAK64D,UAAY,KACjB74D,KAAK+4D,UAAY,KACjB/4D,KAAKg5D,WAAa,KAClBh5D,KAAK84D,eAAiB,KACtB94D,KAAKq5D,mBAAqB,MAI5B7D,EAAO4D,WAAa,SAAoB9uB,GAGtC,OAFAA,EAAS8oB,EAAS,GAAIyE,EAASvtB,GAC/BmpB,EAAKgB,gBAAgBgD,EAAQntB,EAAQ4tB,GAC9B5tB,GAGTkrB,EAAO8E,aAAe,WACpB,IAAIC,EAAYj4D,KAAKmpC,IAAIzrC,KAAKm5D,aAE1BoB,GA3Lc,KA+LdzX,EAAYyX,EAAYv6D,KAAKm5D,aACjCn5D,KAAKm5D,YAAc,GAEfrW,GACF9iD,KAAKsW,OAIHwsC,EAAY,GACd9iD,KAAKsI,SAITktD,EAAOoE,mBAAqB,WAC1B,IAAIY,EAASx6D,KAETA,KAAK45C,QAAQke,UACflF,EAAA,QAAsB5yD,KAAKu1D,UAAU5xC,GAzLvB,sBAyLyC,SAAUI,GAC/D,OAAOy2C,EAAOC,SAAS12C,KAIA,UAAvB/jB,KAAK45C,QAAQoe,OACfpF,EAAA,QAAsB5yD,KAAKu1D,UAAU5xC,GA9LpB,yBA8LyC,SAAUI,GAClE,OAAOy2C,EAAOxC,MAAMj0C,KACnBJ,GA/Lc,yBA+LO,SAAUI,GAChC,OAAOy2C,EAAOT,MAAMh2C,KAIpB/jB,KAAK45C,QAAQqe,OACfj4D,KAAK06D,2BAITlF,EAAOkF,wBAA0B,WAC/B,IAMI/qD,EAiBArO,EAvBAq5D,EAAS36D,KAERA,KAAKs5D,kBAIN3pD,EAAQ,SAAeoU,GACrB42C,EAAOlB,eAAiBjB,EAAYz0C,EAAMgD,cAAckC,YAAY3L,eACtEq9C,EAAOzB,YAAcn1C,EAAMgD,cAAc6B,QAC/B+xC,EAAOlB,gBACjBkB,EAAOzB,YAAcn1C,EAAMgD,cAAcuC,QAAQ,GAAGV,UAapDtnB,EAAM,SAAayiB,GACjB42C,EAAOlB,eAAiBjB,EAAYz0C,EAAMgD,cAAckC,YAAY3L,iBACtEq9C,EAAOxB,YAAcp1C,EAAMgD,cAAc6B,QAAU+xC,EAAOzB,aAG5DyB,EAAOL,eAEsB,UAAzBK,EAAO/gB,QAAQoe,QAQjB2C,EAAO3C,QAEH2C,EAAO1B,cACTthC,aAAagjC,EAAO1B,cAGtB0B,EAAO1B,aAAe79C,WAAW,SAAU2I,GACzC,OAAO42C,EAAOZ,MAAMh2C,IAlRD,IAmRO42C,EAAO/gB,QAAQ5lB,YAI/C4+B,EAAA,QAAsB5yD,KAAKu1D,SAAS1rD,iBAxOhB,uBAwOqD8Z,GAtPtD,wBAsP2E,SAAUnb,GACtG,OAAOA,EAAEgc,mBAGPxkB,KAAKy5D,eACP7G,EAAA,QAAsB5yD,KAAKu1D,UAAU5xC,GA7PnB,0BA8PThU,GAETijD,EAAA,QAAsB5yD,KAAKu1D,UAAU5xC,GA/PrB,wBAgQPriB,GAGTtB,KAAKu1D,SAAS0B,UAAUngD,IAxPC,mBA0PzB87C,EAAA,QAAsB5yD,KAAKu1D,UAAU5xC,GAzQpB,yBA0QRhU,GAETijD,EAAA,QAAsB5yD,KAAKu1D,UAAU5xC,GA3QrB,wBA2QyC,SAAUI,IArD5CA,EAsDTA,GApDJgD,cAAcuC,SAAgD,EAArCvF,EAAMgD,cAAcuC,QAAQ3pB,OAC7Dg7D,EAAOxB,YAAc,EAErBwB,EAAOxB,YAAcp1C,EAAMgD,cAAcuC,QAAQ,GAAGV,QAAU+xC,EAAOzB,cAmDvEtG,EAAA,QAAsB5yD,KAAKu1D,UAAU5xC,GA7QtB,uBA8QNriB,MAKbk0D,EAAOiF,SAAW,SAAkB12C,GAClC,IAAI,kBAAkBva,KAAKua,EAAMhiB,OAAOu1D,SAIxC,OAAQvzC,EAAMwF,OACZ,KA3TmB,GA4TjBxF,EAAMS,iBACNxkB,KAAKsW,OACL,MAEF,KA9ToB,GA+TlByN,EAAMS,iBACNxkB,KAAKsI,SAKXktD,EAAO6E,cAAgB,SAAuBxG,GAE5C,OADA7zD,KAAK44D,OAAS/E,GAAWA,EAAQ50D,WAAa,GAAGrC,MAAMG,KAAK82D,EAAQ50D,WAAW4K,iBAtR/D,mBAsRkG,GAC3G7J,KAAK44D,OAAOz7D,QAAQ02D,IAG7B2B,EAAOoF,oBAAsB,SAA6B9X,EAAWnyC,GACnE,IAAIkqD,EAAkB/X,IAAcqV,EAChC2C,EAAkBhY,IAAcsV,EAEhCgC,EAAcp6D,KAAKq6D,cAAc1pD,GAEjCoqD,EAAgB/6D,KAAK44D,OAAOj5D,OAAS,EAGzC,IAFoBm7D,GAAmC,IAAhBV,GAAqBS,GAAmBT,IAAgBW,KAEzE/6D,KAAK45C,QAAQ72B,KACjC,OAAOpS,EAILqqD,GAAaZ,GADLtX,IAAcsV,GAAkB,EAAI,IACRp4D,KAAK44D,OAAOj5D,OACpD,OAAsB,GAAfq7D,EAAmBh7D,KAAK44D,OAAO54D,KAAK44D,OAAOj5D,OAAS,GAAKK,KAAK44D,OAAOoC,IAG9ExF,EAAOyF,mBAAqB,SAA4BxzC,EAAeyzC,GACrE,IAAIC,EAAcn7D,KAAKq6D,cAAc5yC,GAEjC2zC,EAAYp7D,KAAKq6D,cAAcr6D,KAAKu1D,SAASxB,cAAcwE,IAE3D8C,EAAazI,EAAA,QAAsBluC,MAxUzB,oBAwU4C,CACxD+C,cAAeA,EACfq7B,UAAWoY,EACXrxB,KAAMuxB,EACN5kC,GAAI2kC,IAGN,OADAvI,EAAA,QAAsB5yD,KAAKu1D,UAAU9wC,QAAQ42C,GACtCA,GAGT7F,EAAO8F,2BAA6B,SAAoCzH,GACtE,IACM0H,EADFv7D,KAAKq5D,qBACHkC,EAAa,GAAG3+D,MAAMG,KAAKiD,KAAKq5D,mBAAmBxvD,iBA/TrC,YAgUlB+oD,EAAA,QAAsB2I,GAAYniC,YAAYk/B,IAE1CkD,EAAgBx7D,KAAKq5D,mBAAmBjjD,SAASpW,KAAKq6D,cAAcxG,MAGtEjB,EAAA,QAAsB4I,GAAeziC,SAASu/B,KAKpD9C,EAAOyE,gBAAkB,WACvB,IAAIpG,EAAU7zD,KAAK84D,gBAAkB94D,KAAKu1D,SAASxB,cAAcwE,GAE5D1E,KAID4H,EAAkBrsC,SAASykC,EAAQh1D,aAAa,iBAAkB,MAGpEmB,KAAK45C,QAAQ8hB,gBAAkB17D,KAAK45C,QAAQ8hB,iBAAmB17D,KAAK45C,QAAQ5lB,SAC5Eh0B,KAAK45C,QAAQ5lB,SAAWynC,GAExBz7D,KAAK45C,QAAQ5lB,SAAWh0B,KAAK45C,QAAQ8hB,iBAAmB17D,KAAK45C,QAAQ5lB,WAIzEwhC,EAAOqE,OAAS,SAAgB/W,EAAW+Q,GACzC,IAWI8H,EACAC,EAsCAC,EAlDAC,EAAS97D,KAET2Q,EAAgB3Q,KAAKu1D,SAASxB,cAAcwE,GAE5CwD,EAAqB/7D,KAAKq6D,cAAc1pD,GAExCqrD,EAAcnI,GAAWljD,GAAiB3Q,KAAK46D,oBAAoB9X,EAAWnyC,GAE9EsrD,EAAmBj8D,KAAKq6D,cAAc2B,GAEtCE,EAAY3H,QAAQv0D,KAAK64D,WAQ3BqC,EAHEpY,IAAcqV,GAChBwD,EAhXgB,qBAiXhBC,EAhXgB,qBApBD,SAuYfD,EArXiB,sBAsXjBC,EAnXgB,qBApBA,SA2YdI,GAAepJ,EAAA,QAAsBoJ,GAAaviC,SAAS6+B,GAC7Dt4D,KAAKg5D,YAAa,EAIHh5D,KAAKi7D,mBAAmBe,EAAad,GAEvC3zC,sBAIV5W,GAAkBqrD,IAKvBh8D,KAAKg5D,YAAa,EAEdkD,GACFl8D,KAAKg4D,QAGPh4D,KAAKs7D,2BAA2BU,GAEhCh8D,KAAK84D,eAAiBkD,EAClBH,EAAYjJ,EAAA,QAAsBluC,MAAM2zC,EAAY,CACtD5wC,cAAeu0C,EACflZ,UAAWoY,EACXrxB,KAAMkyB,EACNvlC,GAAIylC,IAGFrJ,EAAA,QAAsB5yD,KAAKu1D,UAAU97B,SA3ZtB,UA4ZjBm5B,EAAA,QAAsBoJ,GAAajjC,SAAS6iC,GAC5CnI,EAAKY,OAAO2H,GACZpJ,EAAA,QAAsBjiD,GAAeooB,SAAS4iC,GAC9C/I,EAAA,QAAsBoJ,GAAajjC,SAAS4iC,GACxC1H,EAAqBR,EAAKO,iCAAiCrjD,GAC/DiiD,EAAA,QAAsBjiD,GAAekT,IAAI4vC,EAAKJ,eAAgB,WAC5DT,EAAA,QAAsBoJ,GAAa5iC,YAAYuiC,EAAuB,IAAMC,GAAgB7iC,SAASu/B,GACrG1F,EAAA,QAAsBjiD,GAAeyoB,YAAYk/B,EAAsB,IAAMsD,EAAiB,IAAMD,GACpGG,EAAO9C,YAAa,EACpB59C,WAAW,WACT,OAAOw3C,EAAA,QAAsBkJ,EAAOvG,UAAU9wC,QAAQo3C,IACrD,KACF3G,qBAAqBjB,KAExBrB,EAAA,QAAsBjiD,GAAeyoB,YAAYk/B,GACjD1F,EAAA,QAAsBoJ,GAAajjC,SAASu/B,GAC5Ct4D,KAAKg5D,YAAa,EAClBpG,EAAA,QAAsB5yD,KAAKu1D,UAAU9wC,QAAQo3C,IAG3CK,GACFl8D,KAAK+5D,UAKTpB,EAAS1C,iBAAmB,SAA0B3rB,GACpD,OAAOtqC,KAAKQ,KAAK,WACf,IAAIwd,EAAO40C,EAAA,QAAsB5yD,MAAMge,KAAK05C,GAExC9d,EAAUwZ,EAAS,GAAIyE,EAASjF,EAAA,QAAsB5yD,MAAMge,QAE1C,iBAAlB,IAAOssB,EAAP,eAAOA,MACTsP,EAAUwZ,EAAS,GAAIxZ,EAAStP,IAGlC,IAAI6xB,EAA2B,iBAAX7xB,EAAsBA,EAASsP,EAAQme,MAO3D,GALK/5C,IACHA,EAAO,IAAI26C,EAAS34D,KAAM45C,GAC1BgZ,EAAA,QAAsB5yD,MAAMge,KAAK05C,EAAY15C,IAGzB,iBAAXssB,EACTtsB,EAAKwY,GAAG8T,QACH,GAAsB,iBAAX6xB,EAAqB,CACrC,QAA4B,IAAjBn+C,EAAKm+C,GACd,MAAM,IAAIvhD,UAAU,oBAAuBuhD,EAAS,KAGtDn+C,EAAKm+C,UACIviB,EAAQ5lB,UAAY4lB,EAAQwiB,OACrCp+C,EAAKg6C,QACLh6C,EAAK+7C,YAKXpB,EAAS0D,qBAAuB,SAA8Bt4C,GAC5D,IAMIhiB,EAMAuoC,EAZAhrC,EAAWm0D,EAAKG,uBAAuB5zD,OAEtCV,IAIDyC,EAAS6wD,EAAA,QAAsBtzD,GAAU,KAE7BszD,EAAA,QAAsB7wD,GAAQ03B,SAjexB,cAqelB6Q,EAAS8oB,EAAS,GAAIR,EAAA,QAAsB7wD,GAAQic,OAAQ40C,EAAA,QAAsB5yD,MAAMge,SAExFs+C,EAAat8D,KAAKnB,aAAa,oBAGjCyrC,EAAOtW,UAAW,GAGpB2kC,EAAS1C,iBAAiBl5D,KAAK61D,EAAA,QAAsB7wD,GAASuoC,GAE1DgyB,GACF1J,EAAA,QAAsB7wD,GAAQic,KAAK05C,GAAYlhC,GAAG8lC,GAGpDv4C,EAAMS,mBAGRwuC,EAAa2F,EAAU,KAAM,CAAC,CAC5BzuD,IAAK,UACLjK,IAAK,WACH,MAtiBU,UAwiBX,CACDiK,IAAK,UACLjK,IAAK,WACH,OAAO43D,MAIJc,EAxemB,GAif5B/F,EAAA,QAAsB90D,UAAU6lB,GA5gBH,6BAeH,gCA6fsDg1C,EAAS0D,sBACzFzJ,EAAA,QAAsBx2D,QAAQunB,GA9gBF,4BA8gB4B,WAGtD,IAFA,IAAI44C,EAAY,GAAG3/D,MAAMG,KAAKe,SAAS+L,iBA9fhB,2BAggBdrL,EAAI,EAAG4C,EAAMm7D,EAAU58D,OAAQnB,EAAI4C,EAAK5C,IAAK,CACpD,IAAIg+D,EAAY5J,EAAA,QAAsB2J,EAAU/9D,IAEhDm6D,EAAS1C,iBAAiBl5D,KAAKy/D,EAAWA,EAAUx+C,WASxD40C,EAAA,QAAsBpzD,GAAGi4D,GAAUkB,EAAS1C,iBAC5CrD,EAAA,QAAsBpzD,GAAGi4D,GAAQxE,YAAc0F,EAE/C/F,EAAA,QAAsBpzD,GAAGi4D,GAAQnxB,WAAa,WAE5C,OADAssB,EAAA,QAAsBpzD,GAAGi4D,GAAUG,EAC5Be,EAAS1C,kBASlB,IAAIwG,EAAS,WAETC,EAAa,cACbC,EAAc,IAAMD,EAEpBE,EAAuBhK,EAAA,QAAsBpzD,GAAGi9D,GAChDI,EAAY,CACd37C,QAAQ,EACRtR,OAAQ,IAENktD,EAAgB,CAClB57C,OAAQ,UACRtR,OAAQ,oBAONmtD,EAAoB,OACpBC,EAAsB,WACtBC,EAAwB,aACxBC,EAAuB,YAIvBC,EAAyB,2BAOzBC,EAAwB,WAC1B,SAASA,EAASvJ,EAASvpB,GACzBtqC,KAAKq9D,kBAAmB,EACxBr9D,KAAKu1D,SAAW1B,EAChB7zD,KAAK45C,QAAU55C,KAAKo5D,WAAW9uB,GAC/BtqC,KAAKs9D,cAAgB,GAAG1gE,MAAMG,KAAKe,SAAS+L,iBAAiB,mCAAwCgqD,EAAQzqD,GAAK,6CAAyDyqD,EAAQzqD,GAAK,OAGxL,IAFA,IAAIm0D,EAAa,GAAG3gE,MAAMG,KAAKe,SAAS+L,iBAAiBszD,IAEhD3+D,EAAI,EAAG4C,EAAMm8D,EAAW59D,OAAQnB,EAAI4C,EAAK5C,IAAK,CACrD,IAAImC,EAAO48D,EAAW/+D,GAClBc,EAAWm0D,EAAKG,uBAAuBjzD,GACvC68D,EAAgB,GAAG5gE,MAAMG,KAAKe,SAAS+L,iBAAiBvK,IAAW4M,OAAO,SAAUuxD,GACtF,OAAOA,IAAc5J,IAGN,OAAbv0D,GAA4C,EAAvBk+D,EAAc79D,SACrCK,KAAK09D,UAAYp+D,EAEjBU,KAAKs9D,cAAcpgE,KAAKyD,IAI5BX,KAAK29D,QAAU39D,KAAK45C,QAAQhqC,OAAS5P,KAAK49D,aAAe,KAEpD59D,KAAK45C,QAAQhqC,QAChB5P,KAAK69D,0BAA0B79D,KAAKu1D,SAAUv1D,KAAKs9D,eAGjDt9D,KAAK45C,QAAQ14B,QACflhB,KAAKkhB,SAKT,IAAIs0C,EAAS4H,EAASx9D,UA4OtB,OAzOA41D,EAAOt0C,OAAS,WACV0xC,EAAA,QAAsB5yD,KAAKu1D,UAAU97B,SAASsjC,GAChD/8D,KAAKihB,OAELjhB,KAAK8gB,QAIT00C,EAAO10C,KAAO,WACZ,IA+BIg9C,EAeAntC,EAqBAotC,EACA9J,EApEAV,EAAQvzD,KAERA,KAAKq9D,kBAAoBzK,EAAA,QAAsB5yD,KAAKu1D,UAAU97B,SAASsjC,KAiBvEiB,EAVAh+D,KAAK29D,SASgB,KARvBK,EAAU,GAAGphE,MAAMG,KAAKiD,KAAK29D,QAAQ9zD,iBAhEpB,uBAgEwDqC,OAAO,SAAUvL,GACxF,MAAoC,iBAAzB4yD,EAAM3Z,QAAQhqC,OAChBjP,EAAK9B,aAAa,iBAAmB00D,EAAM3Z,QAAQhqC,OAGrDjP,EAAKs2D,UAAU1xD,SAASy3D,MAGrBr9D,OACA,KAIVq+D,KACFC,EAAcrL,EAAA,QAAsBoL,GAASpoD,IAAI5V,KAAK09D,WAAW1/C,KAAK0+C,KAEnDuB,EAAYZ,mBAK7BS,EAAalL,EAAA,QAAsBluC,MAhG1B,oBAiGbkuC,EAAA,QAAsB5yD,KAAKu1D,UAAU9wC,QAAQq5C,GAEzCA,EAAWv2C,uBAIXy2C,IACFZ,EAASnH,iBAAiBl5D,KAAK61D,EAAA,QAAsBoL,GAASpoD,IAAI5V,KAAK09D,WAAY,QAE9EO,GACHrL,EAAA,QAAsBoL,GAAShgD,KAAK0+C,EAAY,OAIhD/rC,EAAY3wB,KAAKk+D,gBAErBtL,EAAA,QAAsB5yD,KAAKu1D,UAAUn8B,YAAY4jC,GAAqBjkC,SAASkkC,GAC/Ej9D,KAAKu1D,SAASz1C,MAAM6Q,GAAa,EAE7B3wB,KAAKs9D,cAAc39D,QACrBizD,EAAA,QAAsB5yD,KAAKs9D,eAAelkC,YAAY8jC,GAAsBtvD,KAAK,iBAAiB,GAGpG5N,KAAKm+D,kBAAiB,GAYlBJ,EAAa,UADUptC,EAAU,GAAGrT,cAAgBqT,EAAU/zB,MAAM,IAEpEq3D,EAAqBR,EAAKO,iCAAiCh0D,KAAKu1D,UACpE3C,EAAA,QAAsB5yD,KAAKu1D,UAAU1xC,IAAI4vC,EAAKJ,eAZ/B,WACbT,EAAA,QAAsBW,EAAMgC,UAAUn8B,YAAY6jC,GAAuBlkC,SAASikC,EAAsB,IAAMD,GAC9GxJ,EAAMgC,SAASz1C,MAAM6Q,GAAa,GAElC4iC,EAAM4K,kBAAiB,GAEvBvL,EAAA,QAAsBW,EAAMgC,UAAU9wC,QA/H1B,uBAqI0DywC,qBAAqBjB,GAC7Fj0D,KAAKu1D,SAASz1C,MAAM6Q,GAAa3wB,KAAKu1D,SAASwI,GAAc,QAG/DvI,EAAOv0C,KAAO,WACZ,IAAIu5C,EAASx6D,KAEb,IAAIA,KAAKq9D,kBAAqBzK,EAAA,QAAsB5yD,KAAKu1D,UAAU97B,SAASsjC,GAA5E,CAIA,IAAIe,EAAalL,EAAA,QAAsBluC,MA/I1B,oBAkJb,GAFAkuC,EAAA,QAAsB5yD,KAAKu1D,UAAU9wC,QAAQq5C,IAEzCA,EAAWv2C,qBAAf,CAIIoJ,EAAY3wB,KAAKk+D,gBAErBl+D,KAAKu1D,SAASz1C,MAAM6Q,GAAa3wB,KAAKu1D,SAASxjC,wBAAwBpB,GAAa,KACpF8iC,EAAKY,OAAOr0D,KAAKu1D,UACjB3C,EAAA,QAAsB5yD,KAAKu1D,UAAUx8B,SAASkkC,GAAuB7jC,YAAY4jC,EAAsB,IAAMD,GAC7G,IAAIqB,EAAqBp+D,KAAKs9D,cAAc39D,OAE5C,GAAyB,EAArBy+D,EACF,IAAK,IAAI5/D,EAAI,EAAGA,EAAI4/D,EAAoB5/D,IAAK,CAC3C,IAAIimB,EAAUzkB,KAAKs9D,cAAc9+D,GAC7Bc,EAAWm0D,EAAKG,uBAAuBnvC,GAE1B,OAAbnlB,IACUszD,EAAA,QAAsB,GAAGh2D,MAAMG,KAAKe,SAAS+L,iBAAiBvK,KAE/Dm6B,SAASsjC,IAClBnK,EAAA,QAAsBnuC,GAASsU,SAASmkC,GAAsBtvD,KAAK,iBAAiB,IAM5F5N,KAAKm+D,kBAAiB,GAQtBn+D,KAAKu1D,SAASz1C,MAAM6Q,GAAa,GAC7BsjC,EAAqBR,EAAKO,iCAAiCh0D,KAAKu1D,UACpE3C,EAAA,QAAsB5yD,KAAKu1D,UAAU1xC,IAAI4vC,EAAKJ,eAR/B,WACbmH,EAAO2D,kBAAiB,GAExBvL,EAAA,QAAsB4H,EAAOjF,UAAUn8B,YAAY6jC,GAAuBlkC,SAASikC,GAAqBv4C,QAhL3F,wBAqLyDywC,qBAAqBjB,MAG/FuB,EAAO2I,iBAAmB,SAA0BE,GAClDr+D,KAAKq9D,iBAAmBgB,GAG1B7I,EAAOM,QAAU,WACflD,EAAA,QAAsBl0C,WAAW1e,KAAKu1D,SAAUmH,GAChD18D,KAAK45C,QAAU,KACf55C,KAAK29D,QAAU,KACf39D,KAAKu1D,SAAW,KAChBv1D,KAAKs9D,cAAgB,KACrBt9D,KAAKq9D,iBAAmB,MAI1B7H,EAAO4D,WAAa,SAAoB9uB,GAKtC,OAJAA,EAAS8oB,EAAS,GAAIyJ,EAAWvyB,IAC1BppB,OAASqzC,QAAQjqB,EAAOppB,QAE/BuyC,EAAKgB,gBAAgBgI,EAAQnyB,EAAQwyB,GAC9BxyB,GAGTkrB,EAAO0I,cAAgB,WAErB,OADetL,EAAA,QAAsB5yD,KAAKu1D,UAAU97B,SAzMlC,iBACC,UA4MrB+7B,EAAOoI,WAAa,WAClB,IAEIhuD,EAFA+qD,EAAS36D,KAITyzD,EAAKe,UAAUx0D,KAAK45C,QAAQhqC,SAC9BA,EAAS5P,KAAK45C,QAAQhqC,YAEoB,IAA/B5P,KAAK45C,QAAQhqC,OAAO/P,SAC7B+P,EAAS5P,KAAK45C,QAAQhqC,OAAO,KAG/BA,EAAS9R,SAASi2D,cAAc/zD,KAAK45C,QAAQhqC,QAG/C,IAAItQ,EAAW,yCAA8CU,KAAK45C,QAAQhqC,OAAS,KAC/EwG,EAAW,GAAGxZ,MAAMG,KAAK6S,EAAO/F,iBAAiBvK,IAIrD,OAHAszD,EAAA,QAAsBx8C,GAAU5V,KAAK,SAAUhC,EAAGq1D,GAChD8G,EAAOkD,0BAA0BT,EAASkB,sBAAsBzK,GAAU,CAACA,MAEtEjkD,GAGT4lD,EAAOqI,0BAA4B,SAAmChK,EAAS0K,GACzEC,EAAS5L,EAAA,QAAsBiB,GAASp6B,SAASsjC,GAEjDwB,EAAa5+D,QACfizD,EAAA,QAAsB2L,GAAcllC,YAAY6jC,GAAuBsB,GAAQ5wD,KAAK,gBAAiB4wD,IAKzGpB,EAASkB,sBAAwB,SAA+BzK,GAC1Dv0D,EAAWm0D,EAAKG,uBAAuBC,GAC3C,OAAOv0D,EAAWxB,SAASi2D,cAAcz0D,GAAY,MAGvD89D,EAASnH,iBAAmB,SAA0B3rB,GACpD,OAAOtqC,KAAKQ,KAAK,WACf,IAAI01D,EAAWtD,EAAA,QAAsB5yD,MACjCge,EAAOk4C,EAASl4C,KAAK0+C,GAErB9iB,EAAUwZ,EAAS,GAAIyJ,EAAW3G,EAASl4C,OAA0B,iBAAlB,IAAOssB,EAAP,eAAOA,KAAuBA,EAASA,EAAS,IAWvG,IATKtsB,GAAQ47B,EAAQ14B,QAA4B,iBAAXopB,GAAuB,YAAY9gC,KAAK8gC,KAC5EsP,EAAQ14B,QAAS,GAGdlD,IACHA,EAAO,IAAIo/C,EAASp9D,KAAM45C,GAC1Bsc,EAASl4C,KAAK0+C,EAAY1+C,IAGN,iBAAXssB,EAAqB,CAC9B,QAA4B,IAAjBtsB,EAAKssB,GACd,MAAM,IAAI1vB,UAAU,oBAAuB0vB,EAAS,KAGtDtsB,EAAKssB,SAKX0oB,EAAaoK,EAAU,KAAM,CAAC,CAC5BlzD,IAAK,UACLjK,IAAK,WACH,MArSU,UAuSX,CACDiK,IAAK,UACLjK,IAAK,WACH,OAAO48D,MAIJO,EA9QmB,GAuR5BxK,EAAA,QAAsB90D,UAAU6lB,GAtSH,6BAsS8Bw5C,EAAwB,SAAUp5C,GAEvD,MAAhCA,EAAMsC,cAAcixC,SACtBvzC,EAAMS,iBAGR,IAAIi6C,EAAW7L,EAAA,QAAsB5yD,MACjCV,EAAWm0D,EAAKG,uBAAuB5zD,MACvCsO,EAAY,GAAG1R,MAAMG,KAAKe,SAAS+L,iBAAiBvK,IACxDszD,EAAA,QAAsBtkD,GAAW9N,KAAK,WACpC,IAAIk+D,EAAU9L,EAAA,QAAsB5yD,MAEhCsqC,EADOo0B,EAAQ1gD,KAAK0+C,GACJ,SAAW+B,EAASzgD,OAExCo/C,EAASnH,iBAAiBl5D,KAAK2hE,EAASp0B,OAS5CsoB,EAAA,QAAsBpzD,GAAGi9D,GAAUW,EAASnH,iBAC5CrD,EAAA,QAAsBpzD,GAAGi9D,GAAQxJ,YAAcmK,EAE/CxK,EAAA,QAAsBpzD,GAAGi9D,GAAQn2B,WAAa,WAE5C,OADAssB,EAAA,QAAsBpzD,GAAGi9D,GAAUG,EAC5BQ,EAASnH,kBASlB,IAAI0I,EAAS,WAETC,EAAa,cACbC,EAAc,IAAMD,EACpBE,EAAiB,YACjBC,EAAuBnM,EAAA,QAAsBpzD,GAAGm/D,GAahDK,EAAiB,IAAIn4D,OAAOo4D,YAC5BC,EAAe,OAASL,EACxBM,EAAiB,SAAWN,EAI5BO,EAAyB,QAAUP,EAAcC,EACjDO,EAAyB,UAAYR,EAAcC,EAEnDQ,GAAsB,WACtBC,GAAoB,OAIpBC,GAAuB,sBAEvBC,GAAyB,2BAEzBC,GAAgB,iBAShBC,GAAY,CACd17B,OAAQ,EACR27B,MAAM,EACNC,SAAU,eACVC,UAAW,SACX//C,QAAS,UACTggD,aAAc,MAEZC,GAAgB,CAClB/7B,OAAQ,2BACR27B,KAAM,UACNC,SAAU,mBACVC,UAAW,mBACX//C,QAAS,SACTggD,aAAc,iBAQZE,GAAwB,WAC1B,SAASA,EAASpM,EAASvpB,GACzBtqC,KAAKu1D,SAAW1B,EAChB7zD,KAAKkgE,QAAU,KACflgE,KAAK45C,QAAU55C,KAAKo5D,WAAW9uB,GAC/BtqC,KAAKmgE,MAAQngE,KAAKogE,kBAClBpgE,KAAKqgE,UAAYrgE,KAAKsgE,gBAEtBtgE,KAAK45D,qBAIP,IAAIpE,EAASyK,EAASrgE,UA8YtB,OA3YA41D,EAAOt0C,OAAS,WACd,IAIIq/C,EAJAvgE,KAAKu1D,SAASptD,UAAYyqD,EAAA,QAAsB5yD,KAAKu1D,UAAU97B,SAAS6lC,MAIxEiB,EAAW3N,EAAA,QAAsB5yD,KAAKmgE,OAAO1mC,SAAS8lC,IAE1DU,EAASO,cAELD,GAIJvgE,KAAK8gB,MAAK,KAGZ00C,EAAO10C,KAAO,SAAc2/C,GAK1B,QAJkB,IAAdA,IACFA,GAAY,KAGVzgE,KAAKu1D,SAASptD,UAAYyqD,EAAA,QAAsB5yD,KAAKu1D,UAAU97B,SAAS6lC,KAAwB1M,EAAA,QAAsB5yD,KAAKmgE,OAAO1mC,SAAS8lC,KAA/I,CAIA,IAAI93C,EAAgB,CAClBA,cAAeznB,KAAKu1D,UAElBmL,EAAY9N,EAAA,QAAsBluC,MAzFvB,mBAyF2C+C,GAEtD7X,EAASqwD,EAASU,sBAAsB3gE,KAAKu1D,UAIjD,GAFA3C,EAAA,QAAsBhjD,GAAQ6U,QAAQi8C,IAElCA,EAAUn5C,qBAAd,CAKA,IAAKvnB,KAAKqgE,WAAaI,EAAW,CAKhC,QAA0C,IAA/B5N,EAAA,QACT,MAAM,IAAIj4C,UAAU,gEAGlBgmD,EAAmB5gE,KAAKu1D,SAEG,WAA3Bv1D,KAAK45C,QAAQkmB,UACfc,EAAmBhxD,EACV6jD,EAAKe,UAAUx0D,KAAK45C,QAAQkmB,aACrCc,EAAmB5gE,KAAK45C,QAAQkmB,eAEa,IAAlC9/D,KAAK45C,QAAQkmB,UAAUjgE,SAChC+gE,EAAmB5gE,KAAK45C,QAAQkmB,UAAU,KAOhB,iBAA1B9/D,KAAK45C,QAAQimB,UACfjN,EAAA,QAAsBhjD,GAAQmpB,SAjHL,mBAoH3B/4B,KAAKkgE,QAAU,IAAIrN,EAAA,QAA2B+N,EAAkB5gE,KAAKmgE,MAAOngE,KAAK6gE,oBAO/E,iBAAkB/iE,SAAS0N,iBAAyF,IAAtEonD,EAAA,QAAsBhjD,GAAQ+G,QAvH1D,eAuHuFhX,QAC3GizD,EAAA,QAAsB90D,SAASkjB,MAAM5K,WAAWuN,GAAG,YAAa,KAAMivC,EAAA,QAAsB/vD,MAG9F7C,KAAKu1D,SAAS/rC,QAEdxpB,KAAKu1D,SAASz2D,aAAa,iBAAiB,GAE5C8zD,EAAA,QAAsB5yD,KAAKmgE,OAAO9mC,YAAYkmC,IAC9C3M,EAAA,QAAsBhjD,GAAQypB,YAAYkmC,IAAmB96C,QAAQmuC,EAAA,QAAsBluC,MA/I3E,oBA+IgG+C,OAGlH+tC,EAAOv0C,KAAO,WACZ,IAIIwG,EAGAq5C,EAEAlxD,EATA5P,KAAKu1D,SAASptD,UAAYyqD,EAAA,QAAsB5yD,KAAKu1D,UAAU97B,SAAS6lC,MAAyB1M,EAAA,QAAsB5yD,KAAKmgE,OAAO1mC,SAAS8lC,MAI5I93C,EAAgB,CAClBA,cAAeznB,KAAKu1D,UAElBuL,EAAYlO,EAAA,QAAsBluC,MAAMw6C,EAAcz3C,GAEtD7X,EAASqwD,EAASU,sBAAsB3gE,KAAKu1D,UAEjD3C,EAAA,QAAsBhjD,GAAQ6U,QAAQq8C,GAElCA,EAAUv5C,uBAIVvnB,KAAKkgE,SACPlgE,KAAKkgE,QAAQa,UAGfnO,EAAA,QAAsB5yD,KAAKmgE,OAAO9mC,YAAYkmC,IAC9C3M,EAAA,QAAsBhjD,GAAQypB,YAAYkmC,IAAmB96C,QAAQmuC,EAAA,QAAsBluC,MAAMy6C,EAAgB13C,OAGnH+tC,EAAOM,QAAU,WACflD,EAAA,QAAsBl0C,WAAW1e,KAAKu1D,SAAUqJ,GAChDhM,EAAA,QAAsB5yD,KAAKu1D,UAAUvxC,IAAI66C,GACzC7+D,KAAKu1D,SAAW,MAChBv1D,KAAKmgE,MAAQ,QAETngE,KAAKkgE,UACPlgE,KAAKkgE,QAAQa,UAEb/gE,KAAKkgE,QAAU,OAInB1K,EAAOwL,OAAS,WACdhhE,KAAKqgE,UAAYrgE,KAAKsgE,gBAED,OAAjBtgE,KAAKkgE,SACPlgE,KAAKkgE,QAAQe,kBAKjBzL,EAAOoE,mBAAqB,WAC1B,IAAIrG,EAAQvzD,KAEZ4yD,EAAA,QAAsB5yD,KAAKu1D,UAAU5xC,GApMvB,oBAoMuC,SAAUI,GAC7DA,EAAMS,iBACNT,EAAMO,kBAENivC,EAAMryC,YAIVs0C,EAAO4D,WAAa,SAAoB9uB,GAGtC,OAFAA,EAAS8oB,EAAS,GAAIpzD,KAAKF,YAAY+3D,QAASjF,EAAA,QAAsB5yD,KAAKu1D,UAAUv3C,OAAQssB,GAC7FmpB,EAAKgB,gBAAgBkK,EAAQr0B,EAAQtqC,KAAKF,YAAYo4D,aAC/C5tB,GAGTkrB,EAAO4K,gBAAkB,WACvB,IACMxwD,EAON,OARK5P,KAAKmgE,QACJvwD,EAASqwD,EAASU,sBAAsB3gE,KAAKu1D,aAG/Cv1D,KAAKmgE,MAAQvwD,EAAOmkD,cAAc2L,KAI/B1/D,KAAKmgE,OAGd3K,EAAO0L,cAAgB,WACrB,IAAIC,EAAkBvO,EAAA,QAAsB5yD,KAAKu1D,SAASt2D,YACtDmiE,EA9Me,eA0NnB,OAVID,EAAgB1nC,SA5NA,UA6NlB2nC,EAAYxO,EAAA,QAAsB5yD,KAAKmgE,OAAO1mC,SAAS+lC,IAlNtC,UADH,YAoNL2B,EAAgB1nC,SA7NJ,aA8NrB2nC,EAjNgB,cAkNPD,EAAgB1nC,SA9NL,YA+NpB2nC,EAlNe,aAmNNxO,EAAA,QAAsB5yD,KAAKmgE,OAAO1mC,SAAS+lC,MACpD4B,EAtNoB,cAyNfA,GAGT5L,EAAO8K,cAAgB,WACrB,OAAwE,EAAjE1N,EAAA,QAAsB5yD,KAAKu1D,UAAU5+C,QAAQ,WAAWhX,QAGjE61D,EAAO6L,WAAa,WAClB,IAAI7G,EAASx6D,KAETikC,EAAS,GAWb,MATmC,mBAAxBjkC,KAAK45C,QAAQ3V,OACtBA,EAAOzkC,GAAK,SAAUwe,GAEpB,OADAA,EAAKsjD,QAAUlO,EAAS,GAAIp1C,EAAKsjD,QAAS9G,EAAO5gB,QAAQ3V,OAAOjmB,EAAKsjD,QAAS9G,EAAOjF,WAAa,IAC3Fv3C,GAGTimB,EAAOA,OAASjkC,KAAK45C,QAAQ3V,OAGxBA,GAGTuxB,EAAOqL,iBAAmB,WACxB,IAAId,EAAe,CACjBqB,UAAWphE,KAAKkhE,gBAChBK,UAAW,CACTt9B,OAAQjkC,KAAKqhE,aACbzB,KAAM,CACJ4B,QAASxhE,KAAK45C,QAAQgmB,MAExB6B,gBAAiB,CACfC,kBAAmB1hE,KAAK45C,QAAQimB,YAWtC,MAN6B,WAAzB7/D,KAAK45C,QAAQ75B,UACfggD,EAAawB,UAAUI,WAAa,CAClCH,SAAS,IAINpO,EAAS,GAAI2M,EAAc//D,KAAK45C,QAAQmmB,eAIjDE,EAAShK,iBAAmB,SAA0B3rB,GACpD,OAAOtqC,KAAKQ,KAAK,WACf,IAAIwd,EAAO40C,EAAA,QAAsB5yD,MAAMge,KAAK4gD,GAExChlB,EAA4B,iBAAlB,IAAOtP,EAAP,eAAOA,IAAsBA,EAAS,KAOpD,GALKtsB,IACHA,EAAO,IAAIiiD,EAASjgE,KAAM45C,GAC1BgZ,EAAA,QAAsB5yD,MAAMge,KAAK4gD,EAAY5gD,IAGzB,iBAAXssB,EAAqB,CAC9B,QAA4B,IAAjBtsB,EAAKssB,GACd,MAAM,IAAI1vB,UAAU,oBAAuB0vB,EAAS,KAGtDtsB,EAAKssB,SAKX21B,EAASO,YAAc,SAAqBz8C,GAC1C,IAAIA,GAzTuB,IAyTbA,EAAMwF,QAAqD,UAAfxF,EAAM/lB,MA/TlD,IA+TsE+lB,EAAMwF,OAM1F,IAFA,IAAIq4C,EAAU,GAAGhlE,MAAMG,KAAKe,SAAS+L,iBAAiB41D,KAE7CjhE,EAAI,EAAG4C,EAAMwgE,EAAQjiE,OAAQnB,EAAI4C,EAAK5C,IAAK,CAClD,IAeIqjE,EAUAf,EAzBAlxD,EAASqwD,EAASU,sBAAsBiB,EAAQpjE,IAEhDe,EAAUqzD,EAAA,QAAsBgP,EAAQpjE,IAAIwf,KAAK4gD,GACjDn3C,EAAgB,CAClBA,cAAem6C,EAAQpjE,IAGrBulB,GAAwB,UAAfA,EAAM/lB,OACjBypB,EAAcq6C,WAAa/9C,GAGxBxkB,IAIDsiE,EAAetiE,EAAQ4gE,MAEtBvN,EAAA,QAAsBhjD,GAAQ6pB,SAAS8lC,MAIxCx7C,IAAyB,UAAfA,EAAM/lB,MAAoB,kBAAkBwL,KAAKua,EAAMhiB,OAAOu1D,UAA2B,UAAfvzC,EAAM/lB,MA3VlF,IA2VsG+lB,EAAMwF,QAA0BqpC,EAAA,QAAsBrtD,SAASqK,EAAQmU,EAAMhiB,UAI3L++D,EAAYlO,EAAA,QAAsBluC,MAAMw6C,EAAcz3C,GAC1DmrC,EAAA,QAAsBhjD,GAAQ6U,QAAQq8C,GAElCA,EAAUv5C,uBAMV,iBAAkBzpB,SAAS0N,iBAC7BonD,EAAA,QAAsB90D,SAASkjB,MAAM5K,WAAW4N,IAAI,YAAa,KAAM4uC,EAAA,QAAsB/vD,MAG/F++D,EAAQpjE,GAAGM,aAAa,gBAAiB,SAErCS,EAAQ2gE,SACV3gE,EAAQ2gE,QAAQa,UAGlBnO,EAAA,QAAsBiP,GAAczoC,YAAYmmC,IAChD3M,EAAA,QAAsBhjD,GAAQwpB,YAAYmmC,IAAmB96C,QAAQmuC,EAAA,QAAsBluC,MAAMy6C,EAAgB13C,UAIrHw4C,EAASU,sBAAwB,SAA+B9M,GAC9D,IAAIjkD,EACAtQ,EAAWm0D,EAAKG,uBAAuBC,GAM3C,OAHEjkD,EADEtQ,EACOxB,SAASi2D,cAAcz0D,GAG3BsQ,IAAUikD,EAAQ50D,YAI3BghE,EAAS8B,uBAAyB,SAAgCh+C,GAQhE,IAAI,kBAAkBva,KAAKua,EAAMhiB,OAAOu1D,WA7YxB,KA6YmCvzC,EAAMwF,OA/YxC,KA+YmExF,EAAMwF,QAvYrE,KAuYkGxF,EAAMwF,OAzY1G,KAyY0IxF,EAAMwF,OAA8BqpC,EAAA,QAAsB7uC,EAAMhiB,QAAQ4U,QAAQ+oD,IAAe//D,SAAWq/D,EAAex1D,KAAKua,EAAMwF,UAI7RvpB,KAAKmI,WAAYyqD,EAAA,QAAsB5yD,MAAMy5B,SAAS6lC,IAA1D,CAIA,IAAI1vD,EAASqwD,EAASU,sBAAsB3gE,MAExCugE,EAAW3N,EAAA,QAAsBhjD,GAAQ6pB,SAAS8lC,IAEtD,GAAKgB,GA3ZY,KA2ZAx8C,EAAMwF,MAAvB,CAOA,GAHAxF,EAAMS,iBACNT,EAAMO,mBAEDi8C,GAlaY,KAkaAx8C,EAAMwF,OAhaP,KAgamCxF,EAAMwF,MAMvD,OAxae,KAmaXxF,EAAMwF,OACRqpC,EAAA,QAAsBhjD,EAAOmkD,cAAc0L,KAAyBh7C,QAAQ,cAG9EmuC,EAAA,QAAsB5yD,MAAMykB,QAAQ,SAIlCu9C,EAAQ,GAAGplE,MAAMG,KAAK6S,EAAO/F,iBA3YR,gEA2YkDqC,OAAO,SAAUrO,GAC1F,OAAO+0D,EAAA,QAAsB/0D,GAAMuX,GAAG,cAGnB,IAAjB4sD,EAAMriE,SAINiX,EAAQorD,EAAM7kE,QAAQ4mB,EAAMhiB,QA7ab,KA+afgiB,EAAMwF,OAAsC,EAAR3S,GAEtCA,IA/amB,KAkbjBmN,EAAMwF,OAAgC3S,EAAQorD,EAAMriE,OAAS,GAE/DiX,IAOForD,EAHEprD,EADEA,EAAQ,EACF,EAGJA,GAAO4S,YAGfwpC,EAAaiN,EAAU,KAAM,CAAC,CAC5B/1D,IAAK,UACLjK,IAAK,WACH,MA9cU,UAgdX,CACDiK,IAAK,UACLjK,IAAK,WACH,OAAO0/D,KAER,CACDz1D,IAAK,cACLjK,IAAK,WACH,OAAO+/D,OAIJC,EA1ZmB,GAma5BrN,EAAA,QAAsB90D,UAAU6lB,GAAG07C,EAAwBI,GAAwBQ,GAAS8B,wBAAwBp+C,GAAG07C,EAAwBK,GAAeO,GAAS8B,wBAAwBp+C,GAAGy7C,EAAyB,8BAA4Ba,GAASO,aAAa78C,GAAGy7C,EAAwBK,GAAwB,SAAU17C,GACxUA,EAAMS,iBACNT,EAAMO,kBAEN27C,GAAShK,iBAAiBl5D,KAAK61D,EAAA,QAAsB5yD,MAAO,YAC3D2jB,GAAGy7C,EAxcoB,iBAwcyB,SAAU52D,GAC3DA,EAAE8b,oBAQJsuC,EAAA,QAAsBpzD,GAAGm/D,GAAUsB,GAAShK,iBAC5CrD,EAAA,QAAsBpzD,GAAGm/D,GAAQ1L,YAAcgN,GAE/CrN,EAAA,QAAsBpzD,GAAGm/D,GAAQr4B,WAAa,WAE5C,OADAssB,EAAA,QAAsBpzD,GAAGm/D,GAAUI,EAC5BkB,GAAShK,kBASlB,IAAIgM,GAAS,QAETC,GAAa,WACbC,GAAc,IAAMD,GAEpBE,GAAuBxP,EAAA,QAAsBpzD,GAAGyiE,IAGhDI,GAAY,CACdC,UAAU,EACVxK,UAAU,EACVtuC,OAAO,EACP1I,MAAM,GAEJyhD,GAAgB,CAClBD,SAAU,mBACVxK,SAAU,UACVtuC,MAAO,UACP1I,KAAM,WAIJ0hD,GAAiB,SAAWL,GAC5BM,GAAe,OAASN,GAExBO,GAAgB,UAAYP,GAC5BQ,GAAe,SAAWR,GAC1BS,GAAsB,gBAAkBT,GACxCU,GAAwB,kBAAoBV,GAE5CW,GAA0B,oBAAsBX,GAKhDY,GAAkB,aAClBC,GAAoB,OACpBC,GAAoB,OACpBC,GAAoB,eAKpBC,GAAyB,oDACzBC,GAA0B,cAO1BC,GAAqB,WACvB,SAASA,EAAMxP,EAASvpB,GACtBtqC,KAAK45C,QAAU55C,KAAKo5D,WAAW9uB,GAC/BtqC,KAAKu1D,SAAW1B,EAChB7zD,KAAKsjE,QAAUzP,EAAQE,cAhBL,iBAiBlB/zD,KAAKujE,UAAY,KACjBvjE,KAAKwjE,UAAW,EAChBxjE,KAAKyjE,oBAAqB,EAC1BzjE,KAAK0jE,sBAAuB,EAC5B1jE,KAAKq9D,kBAAmB,EACxBr9D,KAAK2jE,gBAAkB,EAIzB,IAAInO,EAAS6N,EAAMzjE,UA0enB,OAveA41D,EAAOt0C,OAAS,SAAgBuG,GAC9B,OAAOznB,KAAKwjE,SAAWxjE,KAAKihB,OAASjhB,KAAK8gB,KAAK2G,IAGjD+tC,EAAO10C,KAAO,SAAc2G,GAC1B,IAUIi5C,EAVAnN,EAAQvzD,KAERA,KAAKwjE,UAAYxjE,KAAKq9D,mBAItBzK,EAAA,QAAsB5yD,KAAKu1D,UAAU97B,SAASupC,MAChDhjE,KAAKq9D,kBAAmB,GAGtBqD,EAAY9N,EAAA,QAAsBluC,MAAM+9C,GAAc,CACxDh7C,cAAeA,IAEjBmrC,EAAA,QAAsB5yD,KAAKu1D,UAAU9wC,QAAQi8C,GAEzC1gE,KAAKwjE,UAAY9C,EAAUn5C,uBAI/BvnB,KAAKwjE,UAAW,EAEhBxjE,KAAK4jE,kBAEL5jE,KAAK6jE,gBAEL7jE,KAAK8jE,gBAEL9jE,KAAK+jE,kBAEL/jE,KAAKgkE,kBAELpR,EAAA,QAAsB5yD,KAAKu1D,UAAU5xC,GAAGi/C,GA9DhB,yBA8D4D,SAAU7+C,GAC5F,OAAOwvC,EAAMtyC,KAAK8C,KAEpB6uC,EAAA,QAAsB5yD,KAAKsjE,SAAS3/C,GAAGm/C,GAAyB,WAC9DlQ,EAAA,QAAsBW,EAAMgC,UAAU1xC,IA/EhB,2BA+E2C,SAAUE,GACrE6uC,EAAA,QAAsB7uC,EAAMhiB,QAAQqT,GAAGm+C,EAAMgC,YAC/ChC,EAAMmQ,sBAAuB,OAKnC1jE,KAAKikE,cAAc,WACjB,OAAO1Q,EAAM2Q,aAAaz8C,QAI9B+tC,EAAOv0C,KAAO,SAAc8C,GAC1B,IAAIy2C,EAASx6D,KAET+jB,GACFA,EAAMS,iBAGHxkB,KAAKwjE,WAAYxjE,KAAKq9D,mBAIvByD,EAAYlO,EAAA,QAAsBluC,MA/GvB,iBAgHfkuC,EAAA,QAAsB5yD,KAAKu1D,UAAU9wC,QAAQq8C,GAExC9gE,KAAKwjE,WAAY1C,EAAUv5C,uBAIhCvnB,KAAKwjE,UAAW,GACZW,EAAavR,EAAA,QAAsB5yD,KAAKu1D,UAAU97B,SAASupC,OAG7DhjE,KAAKq9D,kBAAmB,GAG1Br9D,KAAK+jE,kBAEL/jE,KAAKgkE,kBAELpR,EAAA,QAAsB90D,UAAUkmB,IAAI0+C,IACpC9P,EAAA,QAAsB5yD,KAAKu1D,UAAUn8B,YAAY6pC,IACjDrQ,EAAA,QAAsB5yD,KAAKu1D,UAAUvxC,IAAI4+C,IACzChQ,EAAA,QAAsB5yD,KAAKsjE,SAASt/C,IAAI8+C,IAEpCqB,GACElQ,EAAqBR,EAAKO,iCAAiCh0D,KAAKu1D,UACpE3C,EAAA,QAAsB5yD,KAAKu1D,UAAU1xC,IAAI4vC,EAAKJ,eAAgB,SAAUtvC,GACtE,OAAOy2C,EAAO4J,WAAWrgD,KACxBmxC,qBAAqBjB,IAExBj0D,KAAKokE,gBAIT5O,EAAOM,QAAU,WACf,CAAC15D,OAAQ4D,KAAKu1D,SAAUv1D,KAAKsjE,SAASxpB,QAAQ,SAAUuqB,GACtD,OAAOzR,EAAA,QAAsByR,GAAargD,IAAIm+C,MAQhDvP,EAAA,QAAsB90D,UAAUkmB,IAAI0+C,IACpC9P,EAAA,QAAsBl0C,WAAW1e,KAAKu1D,SAAU2M,IAChDliE,KAAK45C,QAAU,KACf55C,KAAKu1D,SAAW,KAChBv1D,KAAKsjE,QAAU,KACftjE,KAAKujE,UAAY,KACjBvjE,KAAKwjE,SAAW,KAChBxjE,KAAKyjE,mBAAqB,KAC1BzjE,KAAK0jE,qBAAuB,KAC5B1jE,KAAKq9D,iBAAmB,KACxBr9D,KAAK2jE,gBAAkB,MAGzBnO,EAAO8O,aAAe,WACpBtkE,KAAK8jE,iBAIPtO,EAAO4D,WAAa,SAAoB9uB,GAGtC,OAFAA,EAAS8oB,EAAS,GAAIiP,GAAW/3B,GACjCmpB,EAAKgB,gBAAgBwN,GAAQ33B,EAAQi4B,IAC9Bj4B,GAGTkrB,EAAO+O,2BAA6B,WAClC,IASIC,EAQAC,EAjBA9J,EAAS36D,KAET0kE,EAAqB9R,EAAA,QAAsBluC,MApLxB,0BAqLvBkuC,EAAA,QAAsB5yD,KAAKu1D,UAAU9wC,QAAQigD,GAEzCA,EAAmBn9C,wBAInBi9C,EAAqBxkE,KAAKu1D,SAASoP,aAAe7mE,SAAS0N,gBAAgBo5D,gBAG7E5kE,KAAKu1D,SAASz1C,MAAMoW,UAAY,UAGlCl2B,KAAKu1D,SAAS0B,UAAUngD,IAAIosD,IAExBuB,EAA0BhR,EAAKO,iCAAiCh0D,KAAKsjE,SACzE1Q,EAAA,QAAsB5yD,KAAKu1D,UAAUvxC,IAAIyvC,EAAKJ,gBAC9CT,EAAA,QAAsB5yD,KAAKu1D,UAAU1xC,IAAI4vC,EAAKJ,eAAgB,WAC5DsH,EAAOpF,SAAS0B,UAAU/9C,OAAOgqD,IAE5BsB,GACH5R,EAAA,QAAsB+H,EAAOpF,UAAU1xC,IAAI4vC,EAAKJ,eAAgB,WAC9DsH,EAAOpF,SAASz1C,MAAMoW,UAAY,KACjCg/B,qBAAqByF,EAAOpF,SAAUkP,KAE1CvP,qBAAqBuP,GAExBzkE,KAAKu1D,SAAS/rC,UAGhBgsC,EAAO0O,aAAe,SAAsBz8C,GAC1C,IAAIq0C,EAAS97D,KAETmkE,EAAavR,EAAA,QAAsB5yD,KAAKu1D,UAAU97B,SAASupC,IAC3D6B,EAAY7kE,KAAKsjE,QAAUtjE,KAAKsjE,QAAQvP,cAnMtB,eAmM2D,KAE5E/zD,KAAKu1D,SAASt2D,YAAce,KAAKu1D,SAASt2D,WAAWrB,WAAaknE,KAAKC,cAE1EjnE,SAASkjB,KAAKhiB,YAAYgB,KAAKu1D,UAGjCv1D,KAAKu1D,SAASz1C,MAAMC,QAAU,QAE9B/f,KAAKu1D,SAASxrD,gBAAgB,eAE9B/J,KAAKu1D,SAASz2D,aAAa,cAAc,GAEzCkB,KAAKu1D,SAASz2D,aAAa,OAAQ,UAE/B8zD,EAAA,QAAsB5yD,KAAKsjE,SAAS7pC,SA1NhB,4BA0NmDorC,EACzEA,EAAU3xC,UAAY,EAEtBlzB,KAAKu1D,SAASriC,UAAY,EAGxBixC,GACF1Q,EAAKY,OAAOr0D,KAAKu1D,UAGnB3C,EAAA,QAAsB5yD,KAAKu1D,UAAUx8B,SAASkqC,IAE1CjjE,KAAK45C,QAAQpwB,OACfxpB,KAAKglE,gBAGP,IAAIC,EAAarS,EAAA,QAAsBluC,MAlPvB,iBAkP4C,CAC1D+C,cAAeA,IAGby9C,EAAqB,WACnBpJ,EAAOliB,QAAQpwB,OACjBsyC,EAAOvG,SAAS/rC,QAGlBsyC,EAAOuB,kBAAmB,EAC1BzK,EAAA,QAAsBkJ,EAAOvG,UAAU9wC,QAAQwgD,IAG7Cd,GACElQ,EAAqBR,EAAKO,iCAAiCh0D,KAAKsjE,SACpE1Q,EAAA,QAAsB5yD,KAAKsjE,SAASz/C,IAAI4vC,EAAKJ,eAAgB6R,GAAoBhQ,qBAAqBjB,IAEtGiR,KAIJ1P,EAAOwP,cAAgB,WACrB,IAAIG,EAASnlE,KAEb4yD,EAAA,QAAsB90D,UAAUkmB,IAAI0+C,IACnC/+C,GAAG++C,GAAe,SAAU3+C,GACvBjmB,WAAaimB,EAAMhiB,QAAUojE,EAAO5P,WAAaxxC,EAAMhiB,QAA8E,IAApE6wD,EAAA,QAAsBuS,EAAO5P,UAAU/+C,IAAIuN,EAAMhiB,QAAQpC,QAC5HwlE,EAAO5P,SAAS/rC,WAKtBgsC,EAAOuO,gBAAkB,WACvB,IAAIqB,EAASplE,KAETA,KAAKwjE,SACP5Q,EAAA,QAAsB5yD,KAAKu1D,UAAU5xC,GAAGk/C,GAAuB,SAAU9+C,GACnEqhD,EAAOxrB,QAAQke,UAzSJ,KAySgB/zC,EAAMwF,OACnCxF,EAAMS,iBAEN4gD,EAAOnkD,QACGmkD,EAAOxrB,QAAQke,UA7SZ,KA6SwB/zC,EAAMwF,OAC3C67C,EAAOb,+BAGDvkE,KAAKwjE,UACf5Q,EAAA,QAAsB5yD,KAAKu1D,UAAUvxC,IAAI6+C,KAI7CrN,EAAOwO,gBAAkB,WACvB,IAAIqB,EAASrlE,KAETA,KAAKwjE,SACP5Q,EAAA,QAAsBx2D,QAAQunB,GAAGg/C,GAAc,SAAU5+C,GACvD,OAAOshD,EAAOf,aAAavgD,KAG7B6uC,EAAA,QAAsBx2D,QAAQ4nB,IAAI2+C,KAItCnN,EAAO4O,WAAa,WAClB,IAAIkB,EAAStlE,KAEbA,KAAKu1D,SAASz1C,MAAMC,QAAU,OAE9B/f,KAAKu1D,SAASz2D,aAAa,eAAe,GAE1CkB,KAAKu1D,SAASxrD,gBAAgB,cAE9B/J,KAAKu1D,SAASxrD,gBAAgB,QAE9B/J,KAAKq9D,kBAAmB,EAExBr9D,KAAKikE,cAAc,WACjBrR,EAAA,QAAsB90D,SAASkjB,MAAMoY,YAAY2pC,IAEjDuC,EAAOC,oBAEPD,EAAOE,kBAEP5S,EAAA,QAAsB0S,EAAO/P,UAAU9wC,QAAQ+9C,OAInDhN,EAAOiQ,gBAAkB,WACnBzlE,KAAKujE,YACP3Q,EAAA,QAAsB5yD,KAAKujE,WAAWrqD,SACtClZ,KAAKujE,UAAY,OAIrB/N,EAAOyO,cAAgB,SAAuBxjE,GAC5C,IA2DQilE,EA3DJC,EAAS3lE,KAETy2B,EAAUm8B,EAAA,QAAsB5yD,KAAKu1D,UAAU97B,SAASupC,IAAqBA,GAAoB,GAEjGhjE,KAAKwjE,UAAYxjE,KAAK45C,QAAQ0oB,UAChCtiE,KAAKujE,UAAYzlE,SAASa,cAAc,OACxCqB,KAAKujE,UAAUz3D,UA5UK,iBA8UhB2qB,GACFz2B,KAAKujE,UAAUtM,UAAUngD,IAAI2f,GAG/Bm8B,EAAA,QAAsB5yD,KAAKujE,WAAWv3C,SAASluB,SAASkjB,MACxD4xC,EAAA,QAAsB5yD,KAAKu1D,UAAU5xC,GAAGi/C,GAAqB,SAAU7+C,GACjE4hD,EAAOjC,qBACTiC,EAAOjC,sBAAuB,EAI5B3/C,EAAMhiB,SAAWgiB,EAAMsC,gBAIK,WAA5Bs/C,EAAO/rB,QAAQ0oB,SACjBqD,EAAOpB,6BAEPoB,EAAO1kD,UAIPwV,GACFg9B,EAAKY,OAAOr0D,KAAKujE,WAGnB3Q,EAAA,QAAsB5yD,KAAKujE,WAAWxqC,SAASkqC,IAE1CxiE,IAIAg2B,GAKDmvC,EAA6BnS,EAAKO,iCAAiCh0D,KAAKujE,WAC5E3Q,EAAA,QAAsB5yD,KAAKujE,WAAW1/C,IAAI4vC,EAAKJ,eAAgB5yD,GAAUy0D,qBAAqB0Q,IAL5FnlE,OAMQT,KAAKwjE,UAAYxjE,KAAKujE,WAChC3Q,EAAA,QAAsB5yD,KAAKujE,WAAWnqC,YAAY6pC,IAE9C4C,EAAiB,WACnBF,EAAOF,kBAEHhlE,GACFA,KAIAmyD,EAAA,QAAsB5yD,KAAKu1D,UAAU97B,SAASupC,KAC5C0C,EAA8BjS,EAAKO,iCAAiCh0D,KAAKujE,WAE7E3Q,EAAA,QAAsB5yD,KAAKujE,WAAW1/C,IAAI4vC,EAAKJ,eAAgBwS,GAAgB3Q,qBAAqBwQ,IAEpGG,KAEOplE,GACTA,KAQJ+0D,EAAOsO,cAAgB,WACrB,IAAIU,EAAqBxkE,KAAKu1D,SAASoP,aAAe7mE,SAAS0N,gBAAgBo5D,cAE1E5kE,KAAKyjE,oBAAsBe,IAC9BxkE,KAAKu1D,SAASz1C,MAAMgmD,YAAc9lE,KAAK2jE,gBAAkB,MAGvD3jE,KAAKyjE,qBAAuBe,IAC9BxkE,KAAKu1D,SAASz1C,MAAMimD,aAAe/lE,KAAK2jE,gBAAkB,OAI9DnO,EAAO+P,kBAAoB,WACzBvlE,KAAKu1D,SAASz1C,MAAMgmD,YAAc,GAClC9lE,KAAKu1D,SAASz1C,MAAMimD,aAAe,IAGrCvQ,EAAOoO,gBAAkB,WACvB,IAAIj/B,EAAO7mC,SAASkjB,KAAK+Q,wBACzB/xB,KAAKyjE,mBAAqBnhE,KAAKwrB,MAAM6W,EAAK1S,KAAO0S,EAAKlX,OAASrxB,OAAO4pE,WACtEhmE,KAAK2jE,gBAAkB3jE,KAAKimE,sBAG9BzQ,EAAOqO,cAAgB,WACrB,IAoBMqC,EACAC,EArBFC,EAAUpmE,KAEVA,KAAKyjE,qBAGH4C,EAAe,GAAGzpE,MAAMG,KAAKe,SAAS+L,iBAAiBs5D,KACvDmD,EAAgB,GAAG1pE,MAAMG,KAAKe,SAAS+L,iBAAiBu5D,KAE5DxQ,EAAA,QAAsByT,GAAc7lE,KAAK,SAAUoW,EAAOi9C,GACxD,IAAIqS,EAAgBrS,EAAQ/zC,MAAMimD,aAC9BI,EAAoBvT,EAAA,QAAsBiB,GAAS7zC,IAAI,iBAC3D4yC,EAAA,QAAsBiB,GAAS71C,KAAK,gBAAiBkoD,GAAelmD,IAAI,gBAAiB+N,WAAWo4C,GAAqBC,EAAQzC,gBAAkB,QAGrJ/Q,EAAA,QAAsB0T,GAAe9lE,KAAK,SAAUoW,EAAOi9C,GACzD,IAAI0S,EAAe1S,EAAQ/zC,MAAM0mD,YAC7BC,EAAmB7T,EAAA,QAAsBiB,GAAS7zC,IAAI,gBAC1D4yC,EAAA,QAAsBiB,GAAS71C,KAAK,eAAgBuoD,GAAcvmD,IAAI,eAAgB+N,WAAW04C,GAAoBL,EAAQzC,gBAAkB,QAG7IuC,EAAgBpoE,SAASkjB,KAAKlB,MAAMimD,aACpCI,EAAoBvT,EAAA,QAAsB90D,SAASkjB,MAAMhB,IAAI,iBACjE4yC,EAAA,QAAsB90D,SAASkjB,MAAMhD,KAAK,gBAAiBkoD,GAAelmD,IAAI,gBAAiB+N,WAAWo4C,GAAqBnmE,KAAK2jE,gBAAkB,OAGxJ/Q,EAAA,QAAsB90D,SAASkjB,MAAM+X,SAASgqC,KAGhDvN,EAAOgQ,gBAAkB,WAEvB,IAAIa,EAAe,GAAGzpE,MAAMG,KAAKe,SAAS+L,iBAAiBs5D,KAC3DvQ,EAAA,QAAsByT,GAAc7lE,KAAK,SAAUoW,EAAOi9C,GACxD,IAAI1hC,EAAUygC,EAAA,QAAsBiB,GAAS71C,KAAK,iBAClD40C,EAAA,QAAsBiB,GAASn1C,WAAW,iBAC1Cm1C,EAAQ/zC,MAAMimD,aAAe5zC,GAAoB,KAG/CxkB,EAAW,GAAG/Q,MAAMG,KAAKe,SAAS+L,iBAAsBu5D,KAC5DxQ,EAAA,QAAsBjlD,GAAUnN,KAAK,SAAUoW,EAAOi9C,GACpD,IAAI3hC,EAAS0gC,EAAA,QAAsBiB,GAAS71C,KAAK,qBAE3B,IAAXkU,GACT0gC,EAAA,QAAsBiB,GAAS7zC,IAAI,eAAgBkS,GAAQxT,WAAW,kBAItEyT,EAAUygC,EAAA,QAAsB90D,SAASkjB,MAAMhD,KAAK,iBACxD40C,EAAA,QAAsB90D,SAASkjB,MAAMtC,WAAW,iBAChD5gB,SAASkjB,KAAKlB,MAAMimD,aAAe5zC,GAAoB,IAGzDqjC,EAAOyQ,mBAAqB,WAE1B,IAAIS,EAAY5oE,SAASa,cAAc,OACvC+nE,EAAU56D,UA/dsB,0BAgehChO,SAASkjB,KAAKhiB,YAAY0nE,GAC1B,IAAIC,EAAiBD,EAAU30C,wBAAwBrE,MAAQg5C,EAAUE,YAEzE,OADA9oE,SAASkjB,KAAK9hB,YAAYwnE,GACnBC,GAITtD,EAAMpN,iBAAmB,SAA0B3rB,EAAQ7iB,GACzD,OAAOznB,KAAKQ,KAAK,WACf,IAAIwd,EAAO40C,EAAA,QAAsB5yD,MAAMge,KAAKkkD,IAExCtoB,EAAUwZ,EAAS,GAAIiP,GAAWzP,EAAA,QAAsB5yD,MAAMge,OAA0B,iBAAlB,IAAOssB,EAAP,eAAOA,KAAuBA,EAASA,EAAS,IAO1H,GALKtsB,IACHA,EAAO,IAAIqlD,EAAMrjE,KAAM45C,GACvBgZ,EAAA,QAAsB5yD,MAAMge,KAAKkkD,GAAYlkD,IAGzB,iBAAXssB,EAAqB,CAC9B,QAA4B,IAAjBtsB,EAAKssB,GACd,MAAM,IAAI1vB,UAAU,oBAAuB0vB,EAAS,KAGtDtsB,EAAKssB,GAAQ7iB,QACJmyB,EAAQ94B,MACjB9C,EAAK8C,KAAK2G,MAKhBurC,EAAaqQ,EAAO,KAAM,CAAC,CACzBn5D,IAAK,UACLjK,IAAK,WACH,MAjiBU,UAmiBX,CACDiK,IAAK,UACLjK,IAAK,WACH,OAAOoiE,OAIJgB,EAxfgB,GAigBzBzQ,EAAA,QAAsB90D,UAAU6lB,GArhBH,0BAUA,wBA2gBsD,SAAUI,GAC3F,IAEIhiB,EAFA8kE,EAAU7mE,KAGVV,EAAWm0D,EAAKG,uBAAuB5zD,MAEvCV,IACFyC,EAASjE,SAASi2D,cAAcz0D,IAG9BgrC,EAASsoB,EAAA,QAAsB7wD,GAAQic,KAAKkkD,IAAc,SAAW9O,EAAS,GAAIR,EAAA,QAAsB7wD,GAAQic,OAAQ40C,EAAA,QAAsB5yD,MAAMge,QAEnI,MAAjBhe,KAAKs3D,SAAoC,SAAjBt3D,KAAKs3D,SAC/BvzC,EAAMS,iBAGR,IAAIk6C,EAAU9L,EAAA,QAAsB7wD,GAAQ8hB,IAAI4+C,GAAc,SAAU/B,GAClEA,EAAUn5C,sBAKdm3C,EAAQ76C,IAAI2+C,GAAgB,WACtB5P,EAAA,QAAsBiU,GAASzxD,GAAG,aACpCyxD,EAAQr9C,YAKd65C,GAAMpN,iBAAiBl5D,KAAK61D,EAAA,QAAsB7wD,GAASuoC,EAAQtqC,QAQrE4yD,EAAA,QAAsBpzD,GAAGyiE,IAAUoB,GAAMpN,iBACzCrD,EAAA,QAAsBpzD,GAAGyiE,IAAQhP,YAAcoQ,GAE/CzQ,EAAA,QAAsBpzD,GAAGyiE,IAAQ37B,WAAa,WAE5C,OADAssB,EAAA,QAAsBpzD,GAAGyiE,IAAUG,GAC5BiB,GAAMpN,kBASf,IAAI6Q,GAAW,CAAC,aAAc,OAAQ,OAAQ,WAAY,WAAY,SAAU,MAAO,cAEnFC,EAAmB,CAErB,IAAK,CAAC,QAAS,MAAO,KAAM,OAAQ,OAHT,kBAI3B7gE,EAAG,CAAC,SAAU,OAAQ,QAAS,OAC/B8gE,KAAM,GACN7gE,EAAG,GACH8gE,GAAI,GACJnlD,IAAK,GACLzjB,KAAM,GACNijB,IAAK,GACL4lD,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJjpE,EAAG,GACHkpE,IAAK,CAAC,MAAO,SAAU,MAAO,QAAS,QAAS,UAChDC,GAAI,GACJC,GAAI,GACJv0C,EAAG,GACHw0C,IAAK,GACLxsC,EAAG,GACHysC,MAAO,GACPC,KAAM,GACNC,IAAK,GACLC,IAAK,GACLC,OAAQ,GACR7f,EAAG,GACH8f,GAAI,IAQFC,GAAmB,8DAOnBC,GAAmB,qIA0BvB,SAASC,GAAaC,EAAYC,EAAWC,GAC3C,GAA0B,IAAtBF,EAAW5oE,OACb,OAAO4oE,EAGT,GAAIE,GAAoC,mBAAfA,EACvB,OAAOA,EAAWF,GA0BpB,IAvBA,IACIG,GADY,IAAItsE,OAAOw+B,WACKC,gBAAgB0tC,EAAY,aACxDI,EAAgBjsE,OAAOsN,KAAKw+D,GAC5B76D,EAAW,GAAG/Q,MAAMG,KAAK2rE,EAAgB1nD,KAAKnX,iBAAiB,MAE/D++D,EAAQ,SAAepqE,EAAG4C,GAC5B,IAAImJ,EAAKoD,EAASnP,GACdqqE,EAASt+D,EAAGnC,SAASpE,cAEzB,IAA0D,IAAtD2kE,EAAcxrE,QAAQoN,EAAGnC,SAASpE,eAEpC,OADAuG,EAAGtL,WAAWC,YAAYqL,GACnB,WAGT,IAAIu+D,EAAgB,GAAGlsE,MAAMG,KAAKwN,EAAG7D,YACjCqiE,EAAwB,GAAG/rE,OAAOwrE,EAAU,MAAQ,GAAIA,EAAUK,IAAW,IACjFC,EAAchvB,QAAQ,SAAUlsC,IAjDpC,SAA0BA,EAAMo7D,GAC9B,IAAIC,EAAWr7D,EAAKxF,SAASpE,cAE7B,IAAgD,IAA5CglE,EAAqB7rE,QAAQ8rE,GAC/B,OAAoC,IAAhCnC,GAAS3pE,QAAQ8rE,IACZ1U,QAAQ3mD,EAAKS,UAAUzF,MAAMw/D,KAAqBx6D,EAAKS,UAAUzF,MAAMy/D,KAUlF,IAJA,IAAIa,EAASF,EAAqB98D,OAAO,SAAUi9D,GACjD,OAAOA,aAAqBtiE,SAGrBrI,EAAI,EAAG4C,EAAM8nE,EAAOvpE,OAAQnB,EAAI4C,EAAK5C,IAC5C,GAAIyqE,EAASrgE,MAAMsgE,EAAO1qE,IACxB,OAAO,EAiCF4qE,CAAiBx7D,EAAMm7D,IAC1Bx+D,EAAGR,gBAAgB6D,EAAKxF,aAKrB5J,EAAI,EAAG4C,EAAMuM,EAAShO,OAAQnB,EAAI4C,EAAK5C,IACnCoqE,EAAMpqE,GAKnB,OAAOkqE,EAAgB1nD,KAAKvU,UAS9B,IAAI48D,GAAS,UAETC,GAAa,aACbC,GAAc,IAAMD,GACpBE,GAAuB5W,EAAA,QAAsBpzD,GAAG6pE,IAChDI,GAAe,aACfC,GAAqB,IAAI7iE,OAAO,UAAY4iE,GAAe,OAAQ,KACnEE,GAAwB,CAAC,WAAY,YAAa,cAClDC,GAAgB,CAClBt1C,UAAW,UACXu1C,SAAU,SACVnY,MAAO,4BACPjtC,QAAS,SACT+S,MAAO,kBACPzM,KAAM,UACNzrB,SAAU,mBACV8hE,UAAW,oBACXn9B,OAAQ,2BACRnX,UAAW,2BACXg9C,kBAAmB,iBACnBjK,SAAU,mBACVkK,YAAa,oBACbC,SAAU,UACVvB,WAAY,kBACZD,UAAW,SACXzI,aAAc,iBAEZkK,GAAgB,CAClBC,KAAM,OACNC,IAAK,MACLC,MAAO,QACPC,OAAQ,SACRC,KAAM,QAEJC,GAAY,CACdj2C,WAAW,EACXu1C,SAAU,uGACVplD,QAAS,cACTitC,MAAO,GACPl6B,MAAO,EACPzM,MAAM,EACNzrB,UAAU,EACV8hE,UAAW,MACXn9B,OAAQ,EACRnX,WAAW,EACXg9C,kBAAmB,OACnBjK,SAAU,eACVkK,YAAa,GACbC,UAAU,EACVvB,WAAY,KACZD,UAAWzB,EACXhH,aAAc,MAEZyK,GAAmB,OAEnB9lD,GAAQ,CACV+lD,KAAM,OAASlB,GACfmB,OAAQ,SAAWnB,GACnBoB,KAAM,OAASpB,GACfqB,MAAO,QAAUrB,GACjBsB,SAAU,WAAatB,GACvBuB,MAAO,QAAUvB,GACjBwB,QAAS,UAAYxB,GACrByB,SAAU,WAAazB,GACvB0B,WAAY,aAAe1B,GAC3B2B,WAAY,aAAe3B,IAEzB4B,GAAoB,OACpBC,GAAoB,OAGpBC,GAAgB,QAUhBC,GAAuB,WACzB,SAASA,EAAQzX,EAASvpB,GACxB,QAA0C,IAA/BuoB,EAAA,QACT,MAAM,IAAIj4C,UAAU,+DAItB5a,KAAKurE,YAAa,EAClBvrE,KAAKwrE,SAAW,EAChBxrE,KAAKyrE,YAAc,GACnBzrE,KAAK0rE,eAAiB,GACtB1rE,KAAKkgE,QAAU,KAEflgE,KAAK6zD,QAAUA,EACf7zD,KAAKsqC,OAAStqC,KAAKo5D,WAAW9uB,GAC9BtqC,KAAK2rE,IAAM,KAEX3rE,KAAK4rE,gBAIP,IAAIpW,EAAS8V,EAAQ1rE,UA+kBrB,OA5kBA41D,EAAOqW,OAAS,WACd7rE,KAAKurE,YAAa,GAGpB/V,EAAOp8C,QAAU,WACfpZ,KAAKurE,YAAa,GAGpB/V,EAAOsW,cAAgB,WACrB9rE,KAAKurE,YAAcvrE,KAAKurE,YAG1B/V,EAAOt0C,OAAS,SAAgB6C,GAC9B,IAKMgoD,EACAxsE,EANDS,KAAKurE,aAINxnD,GACEgoD,EAAU/rE,KAAKF,YAAYs1D,UAC3B71D,EAAUqzD,EAAA,QAAsB7uC,EAAMsC,eAAerI,KAAK+tD,MAG5DxsE,EAAU,IAAIS,KAAKF,YAAYikB,EAAMsC,cAAermB,KAAKgsE,sBACzDpZ,EAAA,QAAsB7uC,EAAMsC,eAAerI,KAAK+tD,EAASxsE,IAG3DA,EAAQmsE,eAAevkD,OAAS5nB,EAAQmsE,eAAevkD,MAEnD5nB,EAAQ0sE,uBACV1sE,EAAQ2sE,OAAO,KAAM3sE,GAErBA,EAAQ4sE,OAAO,KAAM5sE,IAGnBqzD,EAAA,QAAsB5yD,KAAKosE,iBAAiB3yC,SAAS2xC,IACvDprE,KAAKmsE,OAAO,KAAMnsE,MAKpBA,KAAKksE,OAAO,KAAMlsE,QAItBw1D,EAAOM,QAAU,WACfn+B,aAAa33B,KAAKwrE,UAClB5Y,EAAA,QAAsBl0C,WAAW1e,KAAK6zD,QAAS7zD,KAAKF,YAAYs1D,UAChExC,EAAA,QAAsB5yD,KAAK6zD,SAAS7vC,IAAIhkB,KAAKF,YAAYusE,WACzDzZ,EAAA,QAAsB5yD,KAAK6zD,SAASl9C,QAAQ,UAAUqN,IAAI,gBAAiBhkB,KAAKssE,mBAE5EtsE,KAAK2rE,KACP/Y,EAAA,QAAsB5yD,KAAK2rE,KAAKzyD,SAGlClZ,KAAKurE,WAAa,KAClBvrE,KAAKwrE,SAAW,KAChBxrE,KAAKyrE,YAAc,KACnBzrE,KAAK0rE,eAAiB,KAElB1rE,KAAKkgE,SACPlgE,KAAKkgE,QAAQa,UAGf/gE,KAAKkgE,QAAU,KACflgE,KAAK6zD,QAAU,KACf7zD,KAAKsqC,OAAS,KACdtqC,KAAK2rE,IAAM,MAGbnW,EAAO10C,KAAO,WACZ,IAAIyyC,EAAQvzD,KAEZ,GAA2D,SAAvD4yD,EAAA,QAAsB5yD,KAAK6zD,SAAS7zC,IAAI,WAC1C,MAAM,IAAIpd,MAAM,uCAGlB,IA2BMkqB,EAmCEmnC,EA9DJyM,EAAY9N,EAAA,QAAsBluC,MAAM1kB,KAAKF,YAAY4kB,MAAMimD,MAE/D3qE,KAAKusE,iBAAmBvsE,KAAKurE,aAC/B3Y,EAAA,QAAsB5yD,KAAK6zD,SAASpvC,QAAQi8C,GACxC8L,EAAa/Y,EAAKqB,eAAe90D,KAAK6zD,SACtC4Y,EAAa7Z,EAAA,QAAsBrtD,SAAwB,OAAfinE,EAAsBA,EAAaxsE,KAAK6zD,QAAQ7qD,cAAcwC,gBAAiBxL,KAAK6zD,UAEhI6M,EAAUn5C,sBAAyBklD,IAInCd,EAAM3rE,KAAKosE,gBACXM,EAAQjZ,EAAKE,OAAO3zD,KAAKF,YAAYq1D,MACzCwW,EAAI7sE,aAAa,KAAM4tE,GACvB1sE,KAAK6zD,QAAQ/0D,aAAa,mBAAoB4tE,GAC9C1sE,KAAK2sE,aAED3sE,KAAKsqC,OAAOhW,WACds+B,EAAA,QAAsB+Y,GAAK5yC,SAASoyC,IAGlC/J,EAA6C,mBAA1BphE,KAAKsqC,OAAO82B,UAA2BphE,KAAKsqC,OAAO82B,UAAUrkE,KAAKiD,KAAM2rE,EAAK3rE,KAAK6zD,SAAW7zD,KAAKsqC,OAAO82B,UAE5HwL,EAAa5sE,KAAK6sE,eAAezL,GAErCphE,KAAK8sE,mBAAmBF,GAEpB9/C,EAAY9sB,KAAK+sE,gBAErBna,EAAA,QAAsB+Y,GAAK3tD,KAAKhe,KAAKF,YAAYs1D,SAAUp1D,MAEtD4yD,EAAA,QAAsBrtD,SAASvF,KAAK6zD,QAAQ7qD,cAAcwC,gBAAiBxL,KAAK2rE,MACnF/Y,EAAA,QAAsB+Y,GAAK3/C,SAASc,GAGtC8lC,EAAA,QAAsB5yD,KAAK6zD,SAASpvC,QAAQzkB,KAAKF,YAAY4kB,MAAMmmD,UACnE7qE,KAAKkgE,QAAU,IAAIrN,EAAA,QAA2B7yD,KAAK6zD,QAAS8X,EAAK3rE,KAAK6gE,iBAAiB+L,IACvFha,EAAA,QAAsB+Y,GAAK5yC,SAASqyC,IACpCxY,EAAA,QAAsB+Y,GAAK5yC,SAAS/4B,KAAKsqC,OAAOy/B,aAK5C,iBAAkBjsE,SAAS0N,iBAC7BonD,EAAA,QAAsB90D,SAASkjB,MAAM5K,WAAWuN,GAAG,YAAa,KAAMivC,EAAA,QAAsB/vD,MAG1FyyB,EAAW,WACTi+B,EAAMjpB,OAAOhW,WACfi/B,EAAMyZ,iBAGR,IAAIC,EAAiB1Z,EAAMkY,YAC3BlY,EAAMkY,YAAc,KACpB7Y,EAAA,QAAsBW,EAAMM,SAASpvC,QAAQ8uC,EAAMzzD,YAAY4kB,MAAMkmD,OArLvD,QAuLVqC,GACF1Z,EAAM4Y,OAAO,KAAM5Y,IAInBX,EAAA,QAAsB5yD,KAAK2rE,KAAKlyC,SAAS0xC,KACvClX,EAAqBR,EAAKO,iCAAiCh0D,KAAK2rE,KACpE/Y,EAAA,QAAsB5yD,KAAK2rE,KAAK9nD,IAAI4vC,EAAKJ,eAAgB/9B,GAAU4/B,qBAAqBjB,IAExF3+B,OAKNkgC,EAAOv0C,KAAO,SAAcxgB,GAMX,SAAX60B,IACEklC,EAAOiR,cAAgBjB,IAAoBmB,EAAI1sE,YACjD0sE,EAAI1sE,WAAWC,YAAYysE,GAG7BnR,EAAO0S,iBAEP1S,EAAO3G,QAAQ9pD,gBAAgB,oBAE/B6oD,EAAA,QAAsB4H,EAAO3G,SAASpvC,QAAQ+1C,EAAO16D,YAAY4kB,MAAMgmD,QAEhD,OAAnBlQ,EAAO0F,SACT1F,EAAO0F,QAAQa,UAGbtgE,GACFA,IArBJ,IAAI+5D,EAASx6D,KAET2rE,EAAM3rE,KAAKosE,gBACXtL,EAAYlO,EAAA,QAAsBluC,MAAM1kB,KAAKF,YAAY4kB,MAAM+lD,MAsBnE7X,EAAA,QAAsB5yD,KAAK6zD,SAASpvC,QAAQq8C,GAExCA,EAAUv5C,uBAIdqrC,EAAA,QAAsB+Y,GAAKvyC,YAAYgyC,IAGnC,iBAAkBttE,SAAS0N,iBAC7BonD,EAAA,QAAsB90D,SAASkjB,MAAM5K,WAAW4N,IAAI,YAAa,KAAM4uC,EAAA,QAAsB/vD,MAG/F7C,KAAK0rE,eAAL,OAAqC,EACrC1rE,KAAK0rE,eAAL,OAAqC,EACrC1rE,KAAK0rE,eAAeL,KAAiB,EAEjCzY,EAAA,QAAsB5yD,KAAK2rE,KAAKlyC,SAAS0xC,KACvClX,EAAqBR,EAAKO,iCAAiC2X,GAC/D/Y,EAAA,QAAsB+Y,GAAK9nD,IAAI4vC,EAAKJ,eAAgB/9B,GAAU4/B,qBAAqBjB,IAEnF3+B,IAGFt1B,KAAKyrE,YAAc,KAGrBjW,EAAOwL,OAAS,WACO,OAAjBhhE,KAAKkgE,SACPlgE,KAAKkgE,QAAQe,kBAKjBzL,EAAO+W,cAAgB,WACrB,OAAOhY,QAAQv0D,KAAKmtE,aAGtB3X,EAAOsX,mBAAqB,SAA4BF,GACtDha,EAAA,QAAsB5yD,KAAKosE,iBAAiBrzC,SAAS0wC,GAAe,IAAMmD,IAG5EpX,EAAO4W,cAAgB,WAErB,OADApsE,KAAK2rE,IAAM3rE,KAAK2rE,KAAO/Y,EAAA,QAAsB5yD,KAAKsqC,OAAOu/B,UAAU,GAC5D7pE,KAAK2rE,KAGdnW,EAAOmX,WAAa,WAClB,IAAIhB,EAAM3rE,KAAKosE,gBACfpsE,KAAKotE,kBAAkBxa,EAAA,QAAsB+Y,EAAI9hE,iBAjQxB,mBAiQmE7J,KAAKmtE,YACjGva,EAAA,QAAsB+Y,GAAKvyC,YAAY+xC,cAGzC3V,EAAO4X,kBAAoB,SAA2BlX,EAAU5+C,GACvC,iBAAnB,IAAOA,EAAP,eAAOA,MAAyBA,EAAQ1Z,WAAY0Z,EAAQzX,OAa5DG,KAAKsqC,OAAOvf,MACV/qB,KAAKsqC,OAAO0/B,WACd1yD,EAAUgxD,GAAahxD,EAAStX,KAAKsqC,OAAOk+B,UAAWxoE,KAAKsqC,OAAOm+B,aAGrEvS,EAASnrC,KAAKzT,IAEd4+C,EAASt3D,KAAK0Y,GAlBVtX,KAAKsqC,OAAOvf,KACT6nC,EAAA,QAAsBt7C,GAAS1H,SAASwF,GAAG8gD,IAC9CA,EAAS/8C,QAAQsS,OAAOnU,GAG1B4+C,EAASt3D,KAAKg0D,EAAA,QAAsBt7C,GAAS1Y,SAiBnD42D,EAAO2X,SAAW,WAOhB,OANYntE,KAAK6zD,QAAQh1D,aAAa,yBAGC,mBAAtBmB,KAAKsqC,OAAOonB,MAAuB1xD,KAAKsqC,OAAOonB,MAAM30D,KAAKiD,KAAK6zD,SAAW7zD,KAAKsqC,OAAOonB,QAOzG8D,EAAOqL,iBAAmB,SAA0B+L,GAClD,IAAIjS,EAAS36D,KAyBb,OAAOozD,EAAS,GAvBM,CACpBgO,UAAWwL,EACXrL,UAAW,CACTt9B,OAAQjkC,KAAKqhE,aACbzB,KAAM,CACJyN,SAAUrtE,KAAKsqC,OAAOw/B,mBAExBwD,MAAO,CACLzZ,QAnTW,UAqTb4N,gBAAiB,CACfC,kBAAmB1hE,KAAKsqC,OAAOu1B,WAGnC0N,SAAU,SAAkBvvD,GACtBA,EAAKwvD,oBAAsBxvD,EAAKojD,WAClCzG,EAAO8S,6BAA6BzvD,IAGxC0vD,SAAU,SAAkB1vD,GAC1B,OAAO28C,EAAO8S,6BAA6BzvD,KAGVhe,KAAKsqC,OAAOy1B,eAGnDvK,EAAO6L,WAAa,WAClB,IAAIvF,EAAS97D,KAETikC,EAAS,GAWb,MATkC,mBAAvBjkC,KAAKsqC,OAAOrG,OACrBA,EAAOzkC,GAAK,SAAUwe,GAEpB,OADAA,EAAKsjD,QAAUlO,EAAS,GAAIp1C,EAAKsjD,QAASxF,EAAOxxB,OAAOrG,OAAOjmB,EAAKsjD,QAASxF,EAAOjI,UAAY,IACzF71C,GAGTimB,EAAOA,OAASjkC,KAAKsqC,OAAOrG,OAGvBA,GAGTuxB,EAAOuX,cAAgB,WACrB,OAA8B,IAA1B/sE,KAAKsqC,OAAOxd,UACPhvB,SAASkjB,KAGdyyC,EAAKe,UAAUx0D,KAAKsqC,OAAOxd,WACtB8lC,EAAA,QAAsB5yD,KAAKsqC,OAAOxd,WAGpC8lC,EAAA,QAAsB90D,UAAUsO,KAAKpM,KAAKsqC,OAAOxd,YAG1D0oC,EAAOqX,eAAiB,SAAwBzL,GAC9C,OAAO6I,GAAc7I,EAAU9jD,gBAGjCk4C,EAAOoW,cAAgB,WACrB,IAAIzG,EAASnlE,KAEEA,KAAKsqC,OAAO7lB,QAAQ3gB,MAAM,KAChCg2C,QAAQ,SAAUr1B,GACzB,IAKMkpD,EALU,UAAZlpD,EACFmuC,EAAA,QAAsBuS,EAAOtR,SAASlwC,GAAGwhD,EAAOrlE,YAAY4kB,MAAMomD,MAAO3F,EAAO76B,OAAOhrC,SAAU,SAAUykB,GACzG,OAAOohD,EAAOjkD,OAAO6C,KAzWV,WA2WJU,IACLkpD,EAAUlpD,IAAY4mD,GAAgBlG,EAAOrlE,YAAY4kB,MAAMumD,WAAa9F,EAAOrlE,YAAY4kB,MAAMqmD,QACrG6C,EAAWnpD,IAAY4mD,GAAgBlG,EAAOrlE,YAAY4kB,MAAMwmD,WAAa/F,EAAOrlE,YAAY4kB,MAAMsmD,SAC1GpY,EAAA,QAAsBuS,EAAOtR,SAASlwC,GAAGgqD,EAASxI,EAAO76B,OAAOhrC,SAAU,SAAUykB,GAClF,OAAOohD,EAAO+G,OAAOnoD,KACpBJ,GAAGiqD,EAAUzI,EAAO76B,OAAOhrC,SAAU,SAAUykB,GAChD,OAAOohD,EAAOgH,OAAOpoD,QAK3B/jB,KAAKssE,kBAAoB,WACnBnH,EAAOtR,SACTsR,EAAOlkD,QAIX2xC,EAAA,QAAsB5yD,KAAK6zD,SAASl9C,QAAQ,UAAUgN,GAAG,gBAAiB3jB,KAAKssE,mBAE3EtsE,KAAKsqC,OAAOhrC,SACdU,KAAKsqC,OAAS8oB,EAAS,GAAIpzD,KAAKsqC,OAAQ,CACtC7lB,QAAS,SACTnlB,SAAU,KAGZU,KAAK6tE,aAITrY,EAAOqY,UAAY,WACjB,IAAIC,EAAYA,GAAO9tE,KAAK6zD,QAAQh1D,aAAa,yBAE7CmB,KAAK6zD,QAAQh1D,aAAa,UAA0B,WAAdivE,IACxC9tE,KAAK6zD,QAAQ/0D,aAAa,sBAAuBkB,KAAK6zD,QAAQh1D,aAAa,UAAY,IACvFmB,KAAK6zD,QAAQ/0D,aAAa,QAAS,MAIvC02D,EAAO0W,OAAS,SAAgBnoD,EAAOxkB,GACrC,IAAIwsE,EAAU/rE,KAAKF,YAAYs1D,UAC/B71D,EAAUA,GAAWqzD,EAAA,QAAsB7uC,EAAMsC,eAAerI,KAAK+tD,MAGnExsE,EAAU,IAAIS,KAAKF,YAAYikB,EAAMsC,cAAermB,KAAKgsE,sBACzDpZ,EAAA,QAAsB7uC,EAAMsC,eAAerI,KAAK+tD,EAASxsE,IAGvDwkB,IACFxkB,EAAQmsE,eAA8B,YAAf3nD,EAAM/lB,KA7Zf,QA6ZoDqtE,KAAiB,GAGjFzY,EAAA,QAAsBrzD,EAAQ6sE,iBAAiB3yC,SAAS2xC,KAAsB7rE,EAAQksE,cAAgBjB,GACxGjrE,EAAQksE,YAAcjB,IAIxB7yC,aAAap4B,EAAQisE,UACrBjsE,EAAQksE,YAAcjB,GAEjBjrE,EAAQ+qC,OAAO9S,OAAUj4B,EAAQ+qC,OAAO9S,MAAM1W,KAKnDvhB,EAAQisE,SAAWpwD,WAAW,WACxB7b,EAAQksE,cAAgBjB,IAC1BjrE,EAAQuhB,QAETvhB,EAAQ+qC,OAAO9S,MAAM1W,MARtBvhB,EAAQuhB,SAWZ00C,EAAO2W,OAAS,SAAgBpoD,EAAOxkB,GACrC,IAAIwsE,EAAU/rE,KAAKF,YAAYs1D,UAC/B71D,EAAUA,GAAWqzD,EAAA,QAAsB7uC,EAAMsC,eAAerI,KAAK+tD,MAGnExsE,EAAU,IAAIS,KAAKF,YAAYikB,EAAMsC,cAAermB,KAAKgsE,sBACzDpZ,EAAA,QAAsB7uC,EAAMsC,eAAerI,KAAK+tD,EAASxsE,IAGvDwkB,IACFxkB,EAAQmsE,eAA8B,aAAf3nD,EAAM/lB,KA9bf,QA8bqDqtE,KAAiB,GAGlF9rE,EAAQ0sE,yBAIZt0C,aAAap4B,EAAQisE,UACrBjsE,EAAQksE,YAxdU,MA0dblsE,EAAQ+qC,OAAO9S,OAAUj4B,EAAQ+qC,OAAO9S,MAAMvW,KAKnD1hB,EAAQisE,SAAWpwD,WAAW,WA/dZ,QAgeZ7b,EAAQksE,aACVlsE,EAAQ0hB,QAET1hB,EAAQ+qC,OAAO9S,MAAMvW,MARtB1hB,EAAQ0hB,SAWZu0C,EAAOyW,qBAAuB,WAC5B,IAAK,IAAIxnD,KAAWzkB,KAAK0rE,eACvB,GAAI1rE,KAAK0rE,eAAejnD,GACtB,OAAO,EAIX,OAAO,GAGT+wC,EAAO4D,WAAa,SAAoB9uB,GACtC,IAAIyjC,EAAiBnb,EAAA,QAAsB5yD,KAAK6zD,SAAS71C,OA6BzD,OA5BAthB,OAAOsN,KAAK+jE,GAAgBj0B,QAAQ,SAAUv7B,IACK,IAA7CorD,GAAsBxsE,QAAQohB,WACzBwvD,EAAexvD,KAKE,iBAF5B+rB,EAAS8oB,EAAS,GAAIpzD,KAAKF,YAAY+3D,QAASkW,EAAkC,iBAAlB,IAAOzjC,EAAP,eAAOA,KAAuBA,EAASA,EAAS,KAE9F9S,QAChB8S,EAAO9S,MAAQ,CACb1W,KAAMwpB,EAAO9S,MACbvW,KAAMqpB,EAAO9S,QAIW,iBAAjB8S,EAAOonB,QAChBpnB,EAAOonB,MAAQpnB,EAAOonB,MAAMr0D,YAGA,iBAAnBitC,EAAOhzB,UAChBgzB,EAAOhzB,QAAUgzB,EAAOhzB,QAAQja,YAGlCo2D,EAAKgB,gBAAgB4U,GAAQ/+B,EAAQtqC,KAAKF,YAAYo4D,aAElD5tB,EAAO0/B,WACT1/B,EAAOu/B,SAAWvB,GAAah+B,EAAOu/B,SAAUv/B,EAAOk+B,UAAWl+B,EAAOm+B,aAGpEn+B,GAGTkrB,EAAOwW,mBAAqB,WAC1B,IAAI1hC,EAAS,GAEb,GAAItqC,KAAKsqC,OACP,IAAK,IAAIpgC,KAAOlK,KAAKsqC,OACftqC,KAAKF,YAAY+3D,QAAQ3tD,KAASlK,KAAKsqC,OAAOpgC,KAChDogC,EAAOpgC,GAAOlK,KAAKsqC,OAAOpgC,IAKhC,OAAOogC,GAGTkrB,EAAO0X,eAAiB,WACtB,IAAIc,EAAOpb,EAAA,QAAsB5yD,KAAKosE,iBAClC6B,EAAWD,EAAKpgE,KAAK,SAAShF,MAAM8gE,IAEvB,OAAbuE,GAAqBA,EAAStuE,QAChCquE,EAAK50C,YAAY60C,EAASrkE,KAAK,MAInC4rD,EAAOiY,6BAA+B,SAAsCS,GAC1EluE,KAAK2rE,IAAMuC,EAAWC,SAASC,OAE/BpuE,KAAKktE,iBAELltE,KAAK8sE,mBAAmB9sE,KAAK6sE,eAAeqB,EAAW9M,aAGzD5L,EAAOwX,eAAiB,WACtB,IAAIrB,EAAM3rE,KAAKosE,gBACXiC,EAAsBruE,KAAKsqC,OAAOhW,UAEE,OAApCq3C,EAAI9sE,aAAa,iBAIrB+zD,EAAA,QAAsB+Y,GAAKvyC,YAAY+xC,IACvCnrE,KAAKsqC,OAAOhW,WAAY,EACxBt0B,KAAKihB,OACLjhB,KAAK8gB,OACL9gB,KAAKsqC,OAAOhW,UAAY+5C,IAI1B/C,EAAQrV,iBAAmB,SAA0B3rB,GACnD,OAAOtqC,KAAKQ,KAAK,WACf,IAAI01D,EAAWtD,EAAA,QAAsB5yD,MACjCge,EAAOk4C,EAASl4C,KAAKsrD,IAErB1vB,EAA4B,iBAAlB,IAAOtP,EAAP,eAAOA,KAAuBA,EAE5C,IAAKtsB,IAAQ,eAAexU,KAAK8gC,MAI5BtsB,IACHA,EAAO,IAAIstD,EAAQtrE,KAAM45C,GACzBsc,EAASl4C,KAAKsrD,GAAYtrD,IAGN,iBAAXssB,GAAqB,CAC9B,QAA4B,IAAjBtsB,EAAKssB,GACd,MAAM,IAAI1vB,UAAU,oBAAuB0vB,EAAS,KAGtDtsB,EAAKssB,SAKX0oB,EAAasY,EAAS,KAAM,CAAC,CAC3BphE,IAAK,UACLjK,IAAK,WACH,MAlpBU,UAopBX,CACDiK,IAAK,UACLjK,IAAK,WACH,OAAOsqE,KAER,CACDrgE,IAAK,OACLjK,IAAK,WACH,OAAOopE,KAER,CACDn/D,IAAK,WACLjK,IAAK,WACH,OAAOqpE,KAER,CACDp/D,IAAK,QACLjK,IAAK,WACH,OAAOykB,KAER,CACDxa,IAAK,YACLjK,IAAK,WACH,OAAOspE,KAER,CACDr/D,IAAK,cACLjK,IAAK,WACH,OAAO2pE,OAIJ0B,EApmBkB,GA6mB3B1Y,EAAA,QAAsBpzD,GAAG6pE,IAAUiC,GAAQrV,iBAC3CrD,EAAA,QAAsBpzD,GAAG6pE,IAAQpW,YAAcqY,GAE/C1Y,EAAA,QAAsBpzD,GAAG6pE,IAAQ/iC,WAAa,WAE5C,OADAssB,EAAA,QAAsBpzD,GAAG6pE,IAAUG,GAC5B8B,GAAQrV,kBASjB,IAAIqY,GAAS,UAETC,GAAa,aACbC,GAAc,IAAMD,GACpBE,GAAuB7b,EAAA,QAAsBpzD,GAAG8uE,IAChDI,GAAiB,aACjBC,GAAuB,IAAI9nE,OAAO,UAAY6nE,GAAiB,OAAQ,KAEvEE,GAAYxb,EAAS,GAAIkY,GAAQzT,QAAS,CAC5CuJ,UAAW,QACX38C,QAAS,QACTnN,QAAS,GACTuyD,SAAU,wIAGRgF,GAAgBzb,EAAS,GAAIkY,GAAQpT,YAAa,CACpD5gD,QAAS,8BAOPw3D,GAAU,CACZrE,KAAM,OAAS+D,GACf9D,OAAQ,SAAW8D,GACnB7D,KAAM,OAAS6D,GACf5D,MAAO,QAAU4D,GACjB3D,SAAU,WAAa2D,GACvB1D,MAAO,QAAU0D,GACjBzD,QAAS,UAAYyD,GACrBxD,SAAU,WAAawD,GACvBvD,WAAY,aAAeuD,GAC3BtD,WAAY,aAAesD,IAQzBO,GAAuB,SAAUC,GAx6GrC,IAAwBC,EA26GtB,SAASF,IACP,OAAOC,EAAS/xE,MAAM+C,KAAMY,YAAcZ,KA56GZkvE,EAy6GRF,GAz6GFC,EAy6GPF,GAx6GNnvE,UAAYlD,OAAOyoB,OAAO+pD,EAAWtvE,YAC9CqvE,EAASrvE,UAAUE,YAAcmvE,GACxBE,UAAYD,EA46GrB,IAAI1Z,EAASuZ,EAAQnvE,UA6GrB,OA1GA41D,EAAO+W,cAAgB,WACrB,OAAOvsE,KAAKmtE,YAAcntE,KAAKovE,eAGjC5Z,EAAOsX,mBAAqB,SAA4BF,GACtDha,EAAA,QAAsB5yD,KAAKosE,iBAAiBrzC,SAAS21C,GAAiB,IAAM9B,IAG9EpX,EAAO4W,cAAgB,WAErB,OADApsE,KAAK2rE,IAAM3rE,KAAK2rE,KAAO/Y,EAAA,QAAsB5yD,KAAKsqC,OAAOu/B,UAAU,GAC5D7pE,KAAK2rE,KAGdnW,EAAOmX,WAAa,WAClB,IAAIqB,EAAOpb,EAAA,QAAsB5yD,KAAKosE,iBAEtCpsE,KAAKotE,kBAAkBY,EAAK5hE,KA9CX,mBA8CiCpM,KAAKmtE,YAEvD,IAAI71D,EAAUtX,KAAKovE,cAEI,mBAAZ93D,IACTA,EAAUA,EAAQva,KAAKiD,KAAK6zD,UAG9B7zD,KAAKotE,kBAAkBY,EAAK5hE,KArDT,iBAqDiCkL,GACpD02D,EAAK50C,YAAYi2C,cAInB7Z,EAAO4Z,YAAc,WACnB,OAAOpvE,KAAK6zD,QAAQh1D,aAAa,iBAAmBmB,KAAKsqC,OAAOhzB,SAGlEk+C,EAAO0X,eAAiB,WACtB,IAAIc,EAAOpb,EAAA,QAAsB5yD,KAAKosE,iBAClC6B,EAAWD,EAAKpgE,KAAK,SAAShF,MAAM+lE,IAEvB,OAAbV,GAAuC,EAAlBA,EAAStuE,QAChCquE,EAAK50C,YAAY60C,EAASrkE,KAAK,MAKnCmlE,EAAQ9Y,iBAAmB,SAA0B3rB,GACnD,OAAOtqC,KAAKQ,KAAK,WACf,IAAIwd,EAAO40C,EAAA,QAAsB5yD,MAAMge,KAAKuwD,IAExC30B,EAA4B,iBAAlB,IAAOtP,EAAP,eAAOA,IAAsBA,EAAS,KAEpD,IAAKtsB,IAAQ,eAAexU,KAAK8gC,MAI5BtsB,IACHA,EAAO,IAAI+wD,EAAQ/uE,KAAM45C,GACzBgZ,EAAA,QAAsB5yD,MAAMge,KAAKuwD,GAAYvwD,IAGzB,iBAAXssB,GAAqB,CAC9B,QAA4B,IAAjBtsB,EAAKssB,GACd,MAAM,IAAI1vB,UAAU,oBAAuB0vB,EAAS,KAGtDtsB,EAAKssB,SAKX0oB,EAAa+b,EAAS,KAAM,CAAC,CAC3B7kE,IAAK,UAELjK,IAAK,WACH,MA1HU,UA4HX,CACDiK,IAAK,UACLjK,IAAK,WACH,OAAO2uE,KAER,CACD1kE,IAAK,OACLjK,IAAK,WACH,OAAOquE,KAER,CACDpkE,IAAK,WACLjK,IAAK,WACH,OAAOsuE,KAER,CACDrkE,IAAK,QACLjK,IAAK,WACH,OAAO6uE,KAER,CACD5kE,IAAK,YACLjK,IAAK,WACH,OAAOuuE,KAER,CACDtkE,IAAK,cACLjK,IAAK,WACH,OAAO4uE,OAIJE,EApHkB,CAqHzBzD,IAQF1Y,EAAA,QAAsBpzD,GAAG8uE,IAAUS,GAAQ9Y,iBAC3CrD,EAAA,QAAsBpzD,GAAG8uE,IAAQrb,YAAc8b,GAE/Cnc,EAAA,QAAsBpzD,GAAG8uE,IAAQhoC,WAAa,WAE5C,OADAssB,EAAA,QAAsBpzD,GAAG8uE,IAAUG,GAC5BM,GAAQ9Y,kBASjB,IAAIqZ,GAAS,YAETC,GAAa,eACbC,GAAc,IAAMD,GAEpBE,GAAuB7c,EAAA,QAAsBpzD,GAAG8vE,IAChDI,GAAY,CACdzrC,OAAQ,GACRhsB,OAAQ,OACRlW,OAAQ,IAEN4tE,GAAgB,CAClB1rC,OAAQ,SACRhsB,OAAQ,SACRlW,OAAQ,oBAMN6tE,GAAsB,SAEtBC,GAA0B,oBAC1BC,GAAqB,YAErBC,GAAsB,mBAYtBC,GAAyB,WAC3B,SAASA,EAAUnc,EAASvpB,GAC1B,IAAIipB,EAAQvzD,KAEZA,KAAKu1D,SAAW1B,EAChB7zD,KAAKiwE,eAAqC,SAApBpc,EAAQyD,QAAqBl7D,OAASy3D,EAC5D7zD,KAAK45C,QAAU55C,KAAKo5D,WAAW9uB,GAC/BtqC,KAAK09D,UAAY19D,KAAK45C,QAAQ73C,OAAS,IAAM+tE,GAAqB,IAAO9vE,KAAK45C,QAAQ73C,OAAS,IAAMguE,GAAsB,IAAQ/vE,KAAK45C,QAAQ73C,OAAS,kBACzJ/B,KAAKkwE,SAAW,GAChBlwE,KAAKmwE,SAAW,GAChBnwE,KAAKowE,cAAgB,KACrBpwE,KAAKqwE,cAAgB,EACrBzd,EAAA,QAAsB5yD,KAAKiwE,gBAAgBtsD,GAhC5B,sBAgC6C,SAAUI,GACpE,OAAOwvC,EAAM+c,SAASvsD,KAExB/jB,KAAKuwE,UAELvwE,KAAKswE,WAIP,IAAI9a,EAASwa,EAAUpwE,UAmMvB,OAhMA41D,EAAO+a,QAAU,WACf,IAAI/V,EAASx6D,KAETwwE,EAAaxwE,KAAKiwE,iBAAmBjwE,KAAKiwE,eAAe7zE,OAnC7C,SACE,WAmCdq0E,EAAuC,SAAxBzwE,KAAK45C,QAAQ3hC,OAAoBu4D,EAAaxwE,KAAK45C,QAAQ3hC,OAC1Ey4D,EApCc,aAoCDD,EAAmCzwE,KAAK2wE,gBAAkB,EAC3E3wE,KAAKkwE,SAAW,GAChBlwE,KAAKmwE,SAAW,GAChBnwE,KAAKqwE,cAAgBrwE,KAAK4wE,mBACZ,GAAGh0E,MAAMG,KAAKe,SAAS+L,iBAAiB7J,KAAK09D,YACnDh9D,IAAI,SAAUmzD,GACpB,IAAI9xD,EACA8uE,EAAiBpd,EAAKG,uBAAuBC,GAMjD,GAHE9xD,EADE8uE,EACO/yE,SAASi2D,cAAc8c,GAG9B9uE,EAAQ,CACN+uE,EAAY/uE,EAAOgwB,wBAEvB,GAAI++C,EAAUpjD,OAASojD,EAAU3hD,OAE/B,MAAO,CAACyjC,EAAA,QAAsB7wD,GAAQ0uE,KAAgB9kE,IAAM+kE,EAAYG,GAI5E,OAAO,OACN3kE,OAAO,SAAUrO,GAClB,OAAOA,IACN0D,KAAK,SAAU2E,EAAGC,GACnB,OAAOD,EAAE,GAAKC,EAAE,KACf2zC,QAAQ,SAAUj8C,GACnB28D,EAAO0V,SAAShzE,KAAKW,EAAK,IAE1B28D,EAAO2V,SAASjzE,KAAKW,EAAK,OAI9B23D,EAAOM,QAAU,WACflD,EAAA,QAAsBl0C,WAAW1e,KAAKu1D,SAAUga,IAChD3c,EAAA,QAAsB5yD,KAAKiwE,gBAAgBjsD,IAAIwrD,IAC/CxvE,KAAKu1D,SAAW,KAChBv1D,KAAKiwE,eAAiB,KACtBjwE,KAAK45C,QAAU,KACf55C,KAAK09D,UAAY,KACjB19D,KAAKkwE,SAAW,KAChBlwE,KAAKmwE,SAAW,KAChBnwE,KAAKowE,cAAgB,KACrBpwE,KAAKqwE,cAAgB,MAIvB7a,EAAO4D,WAAa,SAAoB9uB,GAGtC,IACMlhC,EAWN,MAZ6B,iBAF7BkhC,EAAS8oB,EAAS,GAAIsc,GAA6B,iBAAlB,IAAOplC,EAAP,eAAOA,KAAuBA,EAASA,EAAS,KAE/DvoC,QAAuB0xD,EAAKe,UAAUlqB,EAAOvoC,WACzDqH,EAAKwpD,EAAA,QAAsBtoB,EAAOvoC,QAAQ6L,KAAK,SAGjDxE,EAAKqqD,EAAKE,OAAO2b,IACjB1c,EAAA,QAAsBtoB,EAAOvoC,QAAQ6L,KAAK,KAAMxE,IAGlDkhC,EAAOvoC,OAAS,IAAMqH,GAGxBqqD,EAAKgB,gBAAgB6a,GAAQhlC,EAAQqlC,IAC9BrlC,GAGTkrB,EAAOmb,cAAgB,WACrB,OAAO3wE,KAAKiwE,iBAAmB7zE,OAAS4D,KAAKiwE,eAAeprC,YAAc7kC,KAAKiwE,eAAe/8C,WAGhGsiC,EAAOob,iBAAmB,WACxB,OAAO5wE,KAAKiwE,eAAetL,cAAgBriE,KAAKmuB,IAAI3yB,SAASkjB,KAAK2jD,aAAc7mE,SAAS0N,gBAAgBm5D,eAG3GnP,EAAOub,iBAAmB,WACxB,OAAO/wE,KAAKiwE,iBAAmB7zE,OAASA,OAAO40E,YAAchxE,KAAKiwE,eAAel+C,wBAAwB5C,QAG3GqmC,EAAO8a,SAAW,WAChB,IAAIp9C,EAAYlzB,KAAK2wE,gBAAkB3wE,KAAK45C,QAAQ3V,OAEhD0gC,EAAe3kE,KAAK4wE,mBAEpBK,EAAYjxE,KAAK45C,QAAQ3V,OAAS0gC,EAAe3kE,KAAK+wE,mBAM1D,GAJI/wE,KAAKqwE,gBAAkB1L,GACzB3kE,KAAKuwE,UAGUU,GAAb/9C,EAAJ,CACMnxB,EAAS/B,KAAKmwE,SAASnwE,KAAKmwE,SAASxwE,OAAS,GAE9CK,KAAKowE,gBAAkBruE,GACzB/B,KAAKkxE,UAAUnvE,OAJnB,CAUA,GAAI/B,KAAKowE,eAAiBl9C,EAAYlzB,KAAKkwE,SAAS,IAAyB,EAAnBlwE,KAAKkwE,SAAS,GAKtE,OAJAlwE,KAAKowE,cAAgB,UAErBpwE,KAAKmxE,SAKP,IAAK,IAAI3yE,EAAIwB,KAAKkwE,SAASvwE,OAAQnB,KACZwB,KAAKowE,gBAAkBpwE,KAAKmwE,SAAS3xE,IAAM00B,GAAalzB,KAAKkwE,SAAS1xE,UAAuC,IAAzBwB,KAAKkwE,SAAS1xE,EAAI,IAAsB00B,EAAYlzB,KAAKkwE,SAAS1xE,EAAI,KAG7KwB,KAAKkxE,UAAUlxE,KAAKmwE,SAAS3xE,MAKnCg3D,EAAO0b,UAAY,SAAmBnvE,GACpC/B,KAAKowE,cAAgBruE,EAErB/B,KAAKmxE,SAEL,IAAIC,EAAUpxE,KAAK09D,UAAU55D,MAAM,KAAKpD,IAAI,SAAUpB,GACpD,OAAOA,EAAW,iBAAoByC,EAAS,MAASzC,EAAW,UAAayC,EAAS,OAGvFsvE,EAAQze,EAAA,QAAsB,GAAGh2D,MAAMG,KAAKe,SAAS+L,iBAAiBunE,EAAQxnE,KAAK,QAEnFynE,EAAM53C,SA9KiB,kBA+KzB43C,EAAM16D,QAxKY,aAwKevK,KAtKR,oBAsKuC2sB,SAAS62C,IACzEyB,EAAMt4C,SAAS62C,MAGfyB,EAAMt4C,SAAS62C,IAGfyB,EAAMr6D,QAAQ64D,IAAyBv5D,KAAKw5D,GAAqB,KAAOC,IAAqBh3C,SAAS62C,IAEtGyB,EAAMr6D,QAAQ64D,IAAyBv5D,KAnLpB,aAmL6CF,SAAS05D,IAAoB/2C,SAAS62C,KAGxGhd,EAAA,QAAsB5yD,KAAKiwE,gBAAgBxrD,QA9L1B,wBA8LkD,CACjEgD,cAAe1lB,KAInByzD,EAAO2b,OAAS,WACd,GAAGv0E,MAAMG,KAAKe,SAAS+L,iBAAiB7J,KAAK09D,YAAYxxD,OAAO,SAAU5N,GACxE,OAAOA,EAAK24D,UAAU1xD,SAASqqE,MAC9B91B,QAAQ,SAAUx7C,GACnB,OAAOA,EAAK24D,UAAU/9C,OAAO02D,OAKjCI,EAAU/Z,iBAAmB,SAA0B3rB,GACrD,OAAOtqC,KAAKQ,KAAK,WACf,IAAIwd,EAAO40C,EAAA,QAAsB5yD,MAAMge,KAAKuxD,IAExC31B,EAA4B,iBAAlB,IAAOtP,EAAP,eAAOA,KAAuBA,EAO5C,GALKtsB,IACHA,EAAO,IAAIgyD,EAAUhwE,KAAM45C,GAC3BgZ,EAAA,QAAsB5yD,MAAMge,KAAKuxD,GAAYvxD,IAGzB,iBAAXssB,EAAqB,CAC9B,QAA4B,IAAjBtsB,EAAKssB,GACd,MAAM,IAAI1vB,UAAU,oBAAuB0vB,EAAS,KAGtDtsB,EAAKssB,SAKX0oB,EAAagd,EAAW,KAAM,CAAC,CAC7B9lE,IAAK,UACLjK,IAAK,WACH,MAnPU,UAqPX,CACDiK,IAAK,UACLjK,IAAK,WACH,OAAOyvE,OAIJM,EAxNoB,GAiO7Bpd,EAAA,QAAsBx2D,QAAQunB,GApPF,6BAoP4B,WAItD,IAHA,IAAI2tD,EAAa,GAAG10E,MAAMG,KAAKe,SAAS+L,iBAlPlB,wBAqPbrL,EAFc8yE,EAAW3xE,OAEHnB,KAAM,CACnC,IAAI+yE,EAAO3e,EAAA,QAAsB0e,EAAW9yE,IAE5CwxE,GAAU/Z,iBAAiBl5D,KAAKw0E,EAAMA,EAAKvzD,WAS/C40C,EAAA,QAAsBpzD,GAAG8vE,IAAUU,GAAU/Z,iBAC7CrD,EAAA,QAAsBpzD,GAAG8vE,IAAQrc,YAAc+c,GAE/Cpd,EAAA,QAAsBpzD,GAAG8vE,IAAQhpC,WAAa,WAE5C,OADAssB,EAAA,QAAsBpzD,GAAG8vE,IAAUG,GAC5BO,GAAU/Z,kBASnB,IAEIub,GAAa,SAGbC,GAAuB7e,EAAA,QAAsBpzD,GAAtB,IAOvBkyE,GAAsB,SAOtBC,GAAqB,iBAUrBC,GAAmB,WACrB,SAASA,EAAI/d,GACX7zD,KAAKu1D,SAAW1B,EAIlB,IAAI2B,EAASoc,EAAIhyE,UA6JjB,OA1JA41D,EAAO10C,KAAO,WACZ,IAMI/e,EAGAzC,EAIFuyE,EAIE/Q,EAGAJ,EAoBAprC,EAxCAi+B,EAAQvzD,KAERA,KAAKu1D,SAASt2D,YAAce,KAAKu1D,SAASt2D,WAAWrB,WAAaknE,KAAKC,cAAgBnS,EAAA,QAAsB5yD,KAAKu1D,UAAU97B,SAASi4C,KAAwB9e,EAAA,QAAsB5yD,KAAKu1D,UAAU97B,SA5B9K,cAkCpBq4C,EAAclf,EAAA,QAAsB5yD,KAAKu1D,UAAU5+C,QA9B3B,qBA8B8D,GACtFrX,EAAWm0D,EAAKG,uBAAuB5zD,KAAKu1D,UAE5Cuc,IACEC,EAAwC,OAAzBD,EAAY1pE,UAA8C,OAAzB0pE,EAAY1pE,SAAoBupE,GAjClE,UAmClBE,GADAA,EAAWjf,EAAA,QAAsB1vD,UAAU0vD,EAAA,QAAsBkf,GAAa1lE,KAAK2lE,KAC/DF,EAASlyE,OAAS,IAGpCmhE,EAAYlO,EAAA,QAAsBluC,MAlDvB,cAkD2C,CACxD+C,cAAeznB,KAAKu1D,WAElBmL,EAAY9N,EAAA,QAAsBluC,MAnDvB,cAmD2C,CACxD+C,cAAeoqD,IAGbA,GACFjf,EAAA,QAAsBif,GAAUptD,QAAQq8C,GAG1ClO,EAAA,QAAsB5yD,KAAKu1D,UAAU9wC,QAAQi8C,GAEzCA,EAAUn5C,sBAAwBu5C,EAAUv5C,uBAI5CjoB,IACFyC,EAASjE,SAASi2D,cAAcz0D,IAGlCU,KAAKkxE,UAAUlxE,KAAKu1D,SAAUuc,GAE1Bx8C,EAAW,WACb,IAAI08C,EAAcpf,EAAA,QAAsBluC,MAzEzB,gBAyE+C,CAC5D+C,cAAe8rC,EAAMgC,WAEnB0P,EAAarS,EAAA,QAAsBluC,MA1EzB,eA0E8C,CAC1D+C,cAAeoqD,IAEjBjf,EAAA,QAAsBif,GAAUptD,QAAQutD,GACxCpf,EAAA,QAAsBW,EAAMgC,UAAU9wC,QAAQwgD,IAG5CljE,EACF/B,KAAKkxE,UAAUnvE,EAAQA,EAAO9C,WAAYq2B,GAE1CA,OAIJkgC,EAAOM,QAAU,WACflD,EAAA,QAAsBl0C,WAAW1e,KAAKu1D,SAAUic,IAChDxxE,KAAKu1D,SAAW,MAIlBC,EAAO0b,UAAY,SAAmBrd,EAAS/mC,EAAWrsB,GACxD,IAAI+5D,EAASx6D,KAGTk9B,IADiBpQ,GAAqC,OAAvBA,EAAU1kB,UAA4C,OAAvB0kB,EAAU1kB,SAAiFwqD,EAAA,QAAsB9lC,GAAW1W,SAxF1K,WAwF6Ew8C,EAAA,QAAsB9lC,GAAW1gB,KAAKulE,KAC3G,GACxBtT,EAAkB59D,GAAYy8B,GAAU01B,EAAA,QAAsB11B,GAAQzD,SA9FtD,QAgGhBnE,EAAW,WACb,OAAOklC,EAAOyX,oBAAoBpe,EAAS32B,EAAQz8B,IAGjDy8B,GAAUmhC,GACRpK,EAAqBR,EAAKO,iCAAiC92B,GAC/D01B,EAAA,QAAsB11B,GAAQ9D,YArGZ,QAqG2CvV,IAAI4vC,EAAKJ,eAAgB/9B,GAAU4/B,qBAAqBjB,IAErH3+B,KAIJkgC,EAAOyc,oBAAsB,SAA6Bpe,EAAS32B,EAAQz8B,GACzE,IAEMyxE,EAFFh1C,IACF01B,EAAA,QAAsB11B,GAAQ9D,YAAYs4C,KACtCQ,EAAgBtf,EAAA,QAAsB11B,EAAOj+B,YAAYmN,KAvG9B,4BAuGmE,KAGhGwmD,EAAA,QAAsBsf,GAAe94C,YAAYs4C,IAGf,QAAhCx0C,EAAOr+B,aAAa,SACtBq+B,EAAOp+B,aAAa,iBAAiB,IAIzC8zD,EAAA,QAAsBiB,GAAS96B,SAAS24C,IAEH,QAAjC7d,EAAQh1D,aAAa,SACvBg1D,EAAQ/0D,aAAa,iBAAiB,GAGxC20D,EAAKY,OAAOR,GAERA,EAAQoD,UAAU1xD,SAlIF,SAmIlBsuD,EAAQoD,UAAUngD,IAlIA,QAqIhB+8C,EAAQ50D,YAAc2zD,EAAA,QAAsBiB,EAAQ50D,YAAYw6B,SAzIzC,oBA0IrB04C,EAAkBvf,EAAA,QAAsBiB,GAASl9C,QArIjC,aAqI8D,MAG5Ey7D,EAAqB,GAAGx1E,MAAMG,KAAKo1E,EAAgBtoE,iBAnI9B,qBAoIzB+oD,EAAA,QAAsBwf,GAAoBr5C,SAAS24C,KAGrD7d,EAAQ/0D,aAAa,iBAAiB,IAGpC2B,GACFA,KAKJmxE,EAAI3b,iBAAmB,SAA0B3rB,GAC/C,OAAOtqC,KAAKQ,KAAK,WACf,IAAI6xE,EAAQzf,EAAA,QAAsB5yD,MAC9Bge,EAAOq0D,EAAMr0D,KAAKwzD,IAOtB,GALKxzD,IACHA,EAAO,IAAI4zD,EAAI5xE,MACfqyE,EAAMr0D,KAAKwzD,GAAYxzD,IAGH,iBAAXssB,EAAqB,CAC9B,QAA4B,IAAjBtsB,EAAKssB,GACd,MAAM,IAAI1vB,UAAU,oBAAuB0vB,EAAS,KAGtDtsB,EAAKssB,SAKX0oB,EAAa4e,EAAK,KAAM,CAAC,CACvB1nE,IAAK,UACLjK,IAAK,WACH,MA3LU,YA+LP2xE,EAnKc,GA4KvBhf,EAAA,QAAsB90D,UAAU6lB,GA/LH,wBAUA,kEAqLsD,SAAUI,GAC3FA,EAAMS,iBAENotD,GAAI3b,iBAAiBl5D,KAAK61D,EAAA,QAAsB5yD,MAAO,UAQzD4yD,EAAA,QAAsBpzD,GAAtB,IAAmCoyE,GAAI3b,iBACvCrD,EAAA,QAAsBpzD,GAAtB,IAAiCyzD,YAAc2e,GAE/Chf,EAAA,QAAsBpzD,GAAtB,IAAiC8mC,WAAa,WAE5C,OADAssB,EAAA,QAAsBpzD,GAAtB,IAAmCiyE,GAC5BG,GAAI3b,kBASb,IAAIqc,GAAS,QAETC,GAAa,WACbC,EAAc,IAAMD,GACpBE,GAAuB7f,EAAA,QAAsBpzD,GAAG8yE,IAChDI,GAAwB,gBAAkBF,EAO1CG,GAAoB,OAEpBC,GAAgB,CAClBt+C,UAAW,UACXu+C,SAAU,UACVr7C,MAAO,UAELs7C,GAAY,CACdx+C,WAAW,EACXu+C,UAAU,EACVr7C,MAAO,KASLu7C,GAAqB,WACvB,SAASA,EAAMlf,EAASvpB,GACtBtqC,KAAKu1D,SAAW1B,EAChB7zD,KAAK45C,QAAU55C,KAAKo5D,WAAW9uB,GAC/BtqC,KAAKwrE,SAAW,KAEhBxrE,KAAK4rE,gBAIP,IAAIpW,EAASud,EAAMnzE,UA0JnB,OAvJA41D,EAAO10C,KAAO,WACZ,IAeIwU,EAfAi+B,EAAQvzD,KAER0gE,EAAY9N,EAAA,QAAsBluC,MAvCvB,iBAwCfkuC,EAAA,QAAsB5yD,KAAKu1D,UAAU9wC,QAAQi8C,GAEzCA,EAAUn5C,uBAIdvnB,KAAKgzE,gBAEDhzE,KAAK45C,QAAQtlB,WACft0B,KAAKu1D,SAAS0B,UAAUngD,IA/CN,QAkDhBwe,EAAW,WACbi+B,EAAMgC,SAAS0B,UAAU/9C,OAhDN,WAkDnBq6C,EAAMgC,SAAS0B,UAAUngD,IAAI67D,IAE7B/f,EAAA,QAAsBW,EAAMgC,UAAU9wC,QAxDxB,kBA0DV8uC,EAAM3Z,QAAQi5B,WAChBtf,EAAMiY,SAAWpwD,WAAW,WAC1Bm4C,EAAMtyC,QACLsyC,EAAM3Z,QAAQpiB,SAIrBx3B,KAAKu1D,SAAS0B,UAAU/9C,OA/DN,QAiElBu6C,EAAKY,OAAOr0D,KAAKu1D,UAEjBv1D,KAAKu1D,SAAS0B,UAAUngD,IAjEH,WAmEjB9W,KAAK45C,QAAQtlB,WACX2/B,EAAqBR,EAAKO,iCAAiCh0D,KAAKu1D,UACpE3C,EAAA,QAAsB5yD,KAAKu1D,UAAU1xC,IAAI4vC,EAAKJ,eAAgB/9B,GAAU4/B,qBAAqBjB,IAE7F3+B,MAIJkgC,EAAOv0C,KAAO,WACZ,IAII6/C,EAJC9gE,KAAKu1D,SAAS0B,UAAU1xD,SAASotE,MAIlC7R,EAAYlO,EAAA,QAAsBluC,MAvFvB,iBAwFfkuC,EAAA,QAAsB5yD,KAAKu1D,UAAU9wC,QAAQq8C,GAEzCA,EAAUv5C,sBAIdvnB,KAAKizE,WAGPzd,EAAOM,QAAU,WACf91D,KAAKgzE,gBAEDhzE,KAAKu1D,SAAS0B,UAAU1xD,SAASotE,KACnC3yE,KAAKu1D,SAAS0B,UAAU/9C,OAAOy5D,IAGjC/f,EAAA,QAAsB5yD,KAAKu1D,UAAUvxC,IAAI0uD,IACzC9f,EAAA,QAAsBl0C,WAAW1e,KAAKu1D,SAAUgd,IAChDvyE,KAAKu1D,SAAW,KAChBv1D,KAAK45C,QAAU,MAIjB4b,EAAO4D,WAAa,SAAoB9uB,GAGtC,OAFAA,EAAS8oB,EAAS,GAAI0f,GAAWlgB,EAAA,QAAsB5yD,KAAKu1D,UAAUv3C,OAA0B,iBAAlB,IAAOssB,EAAP,eAAOA,KAAuBA,EAASA,EAAS,IAC9HmpB,EAAKgB,gBAAgB6d,GAAQhoC,EAAQtqC,KAAKF,YAAYo4D,aAC/C5tB,GAGTkrB,EAAOoW,cAAgB,WACrB,IAAIpR,EAASx6D,KAEb4yD,EAAA,QAAsB5yD,KAAKu1D,UAAU5xC,GAAG+uD,GAtGd,yBAsG8D,WACtF,OAAOlY,EAAOv5C,UAIlBu0C,EAAOyd,OAAS,WAGC,SAAX39C,IACFqlC,EAAOpF,SAAS0B,UAAUngD,IA5HV,QA8HhB87C,EAAA,QAAsB+H,EAAOpF,UAAU9wC,QAlIxB,mBA6HjB,IAWMwvC,EAXF0G,EAAS36D,KAQbA,KAAKu1D,SAAS0B,UAAU/9C,OAAOy5D,IAE3B3yE,KAAK45C,QAAQtlB,WACX2/B,EAAqBR,EAAKO,iCAAiCh0D,KAAKu1D,UACpE3C,EAAA,QAAsB5yD,KAAKu1D,UAAU1xC,IAAI4vC,EAAKJ,eAAgB/9B,GAAU4/B,qBAAqBjB,IAE7F3+B,KAIJkgC,EAAOwd,cAAgB,WACrBr7C,aAAa33B,KAAKwrE,UAClBxrE,KAAKwrE,SAAW,MAIlBuH,EAAM9c,iBAAmB,SAA0B3rB,GACjD,OAAOtqC,KAAKQ,KAAK,WACf,IAAI01D,EAAWtD,EAAA,QAAsB5yD,MACjCge,EAAOk4C,EAASl4C,KAAKu0D,IAErB34B,EAA4B,iBAAlB,IAAOtP,EAAP,eAAOA,KAAuBA,EAO5C,GALKtsB,IACHA,EAAO,IAAI+0D,EAAM/yE,KAAM45C,GACvBsc,EAASl4C,KAAKu0D,GAAYv0D,IAGN,iBAAXssB,EAAqB,CAC9B,QAA4B,IAAjBtsB,EAAKssB,GACd,MAAM,IAAI1vB,UAAU,oBAAuB0vB,EAAS,KAGtDtsB,EAAKssB,GAAQtqC,UAKnBgzD,EAAa+f,EAAO,KAAM,CAAC,CACzB7oE,IAAK,UACLjK,IAAK,WACH,MApLU,UAsLX,CACDiK,IAAK,cACLjK,IAAK,WACH,OAAO2yE,KAER,CACD1oE,IAAK,UACLjK,IAAK,WACH,OAAO6yE,OAIJC,EApKgB,GA6KzBngB,EAAA,QAAsBpzD,GAAG8yE,IAAUS,GAAM9c,iBACzCrD,EAAA,QAAsBpzD,GAAG8yE,IAAQrf,YAAc8f,GAE/CngB,EAAA,QAAsBpzD,GAAG8yE,IAAQhsC,WAAa,WAE5C,OADAssB,EAAA,QAAsBpzD,GAAG8yE,IAAUG,GAC5BM,GAAM9c,kBAGfzvB,EAAQ8uB,MAAQA,EAChB9uB,EAAQqwB,OAASA,EACjBrwB,EAAQmyB,SAAWA,EACnBnyB,EAAQ42B,SAAWA,EACnB52B,EAAQy5B,SAAWA,GACnBz5B,EAAQ68B,MAAQA,GAChB78B,EAAQuoC,QAAUA,GAClBvoC,EAAQ0sC,UAAYlD,GACpBxpC,EAAQorC,IAAMA,GACdprC,EAAQusC,MAAQA,GAChBvsC,EAAQ8kC,QAAUA,GAClB9kC,EAAQitB,KAAOA,EAEf/2D,OAAOmhB,eAAe2oB,EAAS,aAAc,CAAE9iC,OAAO,KAt0InC,WAAnB,GAAO8iC,SAA0C,IAAXD,EAAyBpqC,EAAQqqC,EAAS2sC,EAAQ,GAAWA,EAAQ,MAC9DziB,EAAO,CAAC,EAAW,KAAU,YAA7B,gE,0CCP/C,IAAIhnD,OAA2B,IAAXxN,GAA0BA,GACjB,oBAAT2Z,MAAwBA,MAChCzZ,OACRa,EAAQ8tC,SAASnrC,UAAU3C,MAiB/B,SAASm2E,EAAQhqE,EAAIiqE,GACnBrzE,KAAKszE,IAAMlqE,EACXpJ,KAAKuzE,SAAWF,EAflB7sC,EAAQprB,WAAa,WACnB,OAAO,IAAIg4D,EAAQn2E,EAAMF,KAAKqe,WAAY1R,EAAO9I,WAAY+2B,eAE/D6O,EAAQ0zB,YAAc,WACpB,OAAO,IAAIkZ,EAAQn2E,EAAMF,KAAKm9D,YAAaxwD,EAAO9I,WAAYo5D,gBAEhExzB,EAAQ7O,aACR6O,EAAQwzB,cAAgB,SAAStiC,GAC3BA,GACFA,EAAQ+9B,SAQZ2d,EAAQxzE,UAAU4zE,MAAQJ,EAAQxzE,UAAU6zE,IAAM,aAClDL,EAAQxzE,UAAU61D,MAAQ,WACxBz1D,KAAKuzE,SAASx2E,KAAK2M,EAAO1J,KAAKszE,MAIjC9sC,EAAQktC,OAAS,SAAS71E,EAAM81E,GAC9Bh8C,aAAa95B,EAAK+1E,gBAClB/1E,EAAKg2E,aAAeF,GAGtBntC,EAAQstC,SAAW,SAASj2E,GAC1B85B,aAAa95B,EAAK+1E,gBAClB/1E,EAAKg2E,cAAgB,GAGvBrtC,EAAQutC,aAAevtC,EAAQtJ,OAAS,SAASr/B,GAC/C85B,aAAa95B,EAAK+1E,gBAElB,IAAID,EAAQ91E,EAAKg2E,aACJ,GAATF,IACF91E,EAAK+1E,eAAiBx4D,WAAW,WAC3Bvd,EAAKm2E,YACPn2E,EAAKm2E,cACNL,KAKPR,EAAQ,KAIR3sC,EAAQytC,aAAgC,oBAATp+D,MAAwBA,KAAKo+D,mBAClB,IAAX/3E,GAA0BA,EAAO+3E,mBACxC,EACxBztC,EAAQ0tC,eAAkC,oBAATr+D,MAAwBA,KAAKq+D,qBAClB,IAAXh4E,GAA0BA,EAAOg4E,qBACxC,G,+CC9D1B3tC,EAAOC,QAAU,SAASD,GAoBzB,OAnBKA,EAAO4tC,kBACX5tC,EAAOmE,UAAY,aACnBnE,EAAO6tC,MAAQ,GAEV7tC,EAAOnwB,WAAUmwB,EAAOnwB,SAAW,IACxC1Z,OAAOmhB,eAAe0oB,EAAQ,SAAU,CACvCzf,YAAY,EACZ7mB,IAAK,WACJ,OAAOsmC,EAAO7vB,KAGhBha,OAAOmhB,eAAe0oB,EAAQ,KAAM,CACnCzf,YAAY,EACZ7mB,IAAK,WACJ,OAAOsmC,EAAO/nC,KAGhB+nC,EAAO4tC,gBAAkB,GAEnB5tC,I;;;;;;;;;;;;;;;;;;;;;;;;GCIR;IAAI8tC,EAA8B,oBAAXj4E,QAA8C,oBAAb0B,UAAiD,oBAAdy7D,UAEvF+a,EAAkB,WAEpB,IADA,IAAIC,EAAwB,CAAC,OAAQ,UAAW,WACvC/1E,EAAI,EAAGA,EAAI+1E,EAAsB50E,OAAQnB,GAAK,EACrD,GAAI61E,GAAsE,GAAzD9a,UAAUib,UAAUr3E,QAAQo3E,EAAsB/1E,IACjE,OAAO,EAGX,OAAO,EAPa,GAqCtB,IAWIi2E,EAXqBJ,GAAaj4E,OAAOs4E,QA3B7C,SAA2Bl1E,GACzB,IAAIg0D,GAAS,EACb,OAAO,WACDA,IAGJA,GAAS,EACTp3D,OAAOs4E,QAAQ58D,UAAUM,KAAK,WAC5Bo7C,GAAS,EACTh0D,SAKN,SAAsBA,GACpB,IAAIm1E,GAAY,EAChB,OAAO,WACAA,IACHA,GAAY,EACZv5D,WAAW,WACTu5D,GAAY,EACZn1E,KACC80E,MAyBT,SAAS32E,EAAWi3E,GAElB,OAAOA,GAA8D,sBADvD,GACoBv3E,SAASN,KAAK63E,GAUlD,SAASC,EAAyBhhB,EAASrQ,GACzC,GAAyB,IAArBqQ,EAAQj2D,SACV,MAAO,GAILoiB,EADS6zC,EAAQ7qD,cAAc0C,YAClBwhB,iBAAiB2mC,EAAS,MAC3C,OAAOrQ,EAAWxjC,EAAIwjC,GAAYxjC,EAUpC,SAAS80D,EAAcjhB,GACrB,MAAyB,SAArBA,EAAQzrD,SACHyrD,EAEFA,EAAQ50D,YAAc40D,EAAQh0B,KAUvC,SAASk1C,EAAgBlhB,GAEvB,IAAKA,EACH,OAAO/1D,SAASkjB,KAGlB,OAAQ6yC,EAAQzrD,UACd,IAAK,OACL,IAAK,OACH,OAAOyrD,EAAQ7qD,cAAcgY,KAC/B,IAAK,YACH,OAAO6yC,EAAQ7yC,KAKnB,IAAIg0D,EAAwBH,EAAyBhhB,GACjD79B,EAAWg/C,EAAsBh/C,SACjCC,EAAY++C,EAAsB/+C,UAClCC,EAAY8+C,EAAsB9+C,UAEtC,MAAI,wBAAwB1sB,KAAKwsB,EAAWE,EAAYD,GAC/C49B,EAGFkhB,EAAgBD,EAAcjhB,IAUvC,SAASohB,EAAiBnV,GACxB,OAAOA,GAAaA,EAAUoV,cAAgBpV,EAAUoV,cAAgBpV,EAG1E,IAAIqV,EAASd,MAAgBj4E,OAAOg5E,uBAAwBt3E,SAASu3E,cACjEC,EAASjB,GAAa,UAAU7qE,KAAK+vD,UAAUib,WASnD,SAASe,EAAKn2E,GACZ,OAAgB,KAAZA,EACK+1E,EAEO,KAAZ/1E,GAGG+1E,GAFEG,EAYX,SAASE,EAAgB3hB,GACvB,IAAKA,EACH,OAAO/1D,SAAS0N,gBAQlB,IALA,IAAIiqE,EAAiBF,EAAK,IAAMz3E,SAASkjB,KAAO,KAG5C+jB,EAAe8uB,EAAQ9uB,cAAgB,KAEpCA,IAAiB0wC,GAAkB5hB,EAAQ6hB,oBAChD3wC,GAAgB8uB,EAAUA,EAAQ6hB,oBAAoB3wC,aAGxD,IAAI38B,EAAW28B,GAAgBA,EAAa38B,SAE5C,OAAKA,GAAyB,SAAbA,GAAoC,SAAbA,GAMsB,IAA1D,CAAC,KAAM,KAAM,SAASjL,QAAQ4nC,EAAa38B,WAA2E,WAAvDysE,EAAyB9vC,EAAc,YACjGywC,EAAgBzwC,GAGlBA,GATE8uB,EAAUA,EAAQ7qD,cAAgClL,UAAlB0N,gBA4B3C,SAASmqE,EAAQr3E,GACf,OAAwB,OAApBA,EAAKW,WACA02E,EAAQr3E,EAAKW,YAGfX,EAWT,SAASs3E,EAAuBC,EAAUC,GAExC,KAAKD,GAAaA,EAASj4E,UAAak4E,GAAaA,EAASl4E,UAC5D,OAAOE,SAAS0N,gBAIlB,IAAIuqE,EAAQF,EAAS5oE,wBAAwB6oE,GAAYhR,KAAKkR,4BAC1DrmE,EAAQomE,EAAQF,EAAWC,EAC3Bx0E,EAAMy0E,EAAQD,EAAWD,EAGzBI,EAAQn4E,SAASo4E,cACrBD,EAAME,SAASxmE,EAAO,GACtBsmE,EAAMG,OAAO90E,EAAK,GACd+0E,EAA0BJ,EAAMI,wBAIpC,GAAIR,IAAaQ,GAA2BP,IAAaO,GAA2B1mE,EAAMpK,SAASjE,GACjG,MAjDe,UAFb8G,GADqByrD,EAoDDwiB,GAnDDjuE,WAKH,SAAbA,GAAuBotE,EAAgB3hB,EAAQvyB,qBAAuBuyB,EAkDpE2hB,EAAgBa,GAHdA,EAOPC,EAAeX,EAAQE,GAC3B,OAAIS,EAAaz2C,KACR+1C,EAAuBU,EAAaz2C,KAAMi2C,GAE1CF,EAAuBC,EAAUF,EAAQG,GAAUj2C,MAY9D,SAAS02C,EAAU1iB,EAAnB,GACE,IAEI2iB,EAAqB,SAFK,EAAnB51E,UAAUjB,aAA+ByC,IADtD,IACiF,OAE9C,YAAc,aAC3CgG,EAAWyrD,EAAQzrD,SAEvB,GAAiB,SAAbA,GAAoC,SAAbA,EAM3B,OAAOyrD,EAAQ2iB,GALTzrD,EAAO8oC,EAAQ7qD,cAAcwC,gBAEjC,OADuBqoD,EAAQ7qD,cAAcytE,kBAAoB1rD,GACzCyrD,GAsC5B,SAASE,EAAe5lD,EAAQ6lD,GAC9B,IAAIC,EAAiB,MAATD,EAAe,OAAS,MAChCE,EAAkB,QAAVD,EAAmB,QAAU,SAEzC,OAAO7oD,WAAW+C,EAAO,SAAW8lD,EAAQ,UAAY7oD,WAAW+C,EAAO,SAAW+lD,EAAQ,UAG/F,SAASC,EAAQH,EAAM31D,EAAM+J,EAAMgsD,GACjC,OAAOz0E,KAAKmuB,IAAIzP,EAAK,SAAW21D,GAAO31D,EAAK,SAAW21D,GAAO5rD,EAAK,SAAW4rD,GAAO5rD,EAAK,SAAW4rD,GAAO5rD,EAAK,SAAW4rD,GAAOpB,EAAK,IAAMnmD,SAASrE,EAAK,SAAW4rD,IAASvnD,SAAS2nD,EAAc,UAAqB,WAATJ,EAAoB,MAAQ,UAAYvnD,SAAS2nD,EAAc,UAAqB,WAATJ,EAAoB,SAAW,WAAa,GAG5U,SAASK,EAAel5E,GACtB,IAAIkjB,EAAOljB,EAASkjB,KAChB+J,EAAOjtB,EAAS0N,gBAChBurE,EAAgBxB,EAAK,KAAOroD,iBAAiBnC,GAEjD,MAAO,CACLoE,OAAQ2nD,EAAQ,SAAU91D,EAAM+J,EAAMgsD,GACtCrpD,MAAOopD,EAAQ,QAAS91D,EAAM+J,EAAMgsD,IAIxC,IAAIE,EAAiB,SAAU9I,EAAUlb,GACvC,KAAMkb,aAAoBlb,GACxB,MAAM,IAAIr4C,UAAU,sCAIpBs8D,EAWK,SAAUjkB,EAAaC,EAAYC,GAGxC,OAFID,GAAYikB,EAAiBlkB,EAAYrzD,UAAWszD,GACpDC,GAAagkB,EAAiBlkB,EAAaE,GACxCF,GAbT,SAASkkB,EAAiBp1E,EAAQulB,GAChC,IAAK,IAAI9oB,EAAI,EAAGA,EAAI8oB,EAAM3nB,OAAQnB,IAAK,CACrC,IAAIu0D,EAAazrC,EAAM9oB,GACvBu0D,EAAWjsC,WAAaisC,EAAWjsC,aAAc,EACjDisC,EAAWj1C,cAAe,EACtB,UAAWi1C,IAAYA,EAAW/rC,UAAW,GACjDtqB,OAAOmhB,eAAe9b,EAAQgxD,EAAW7oD,IAAK6oD,IAe/B,SAAjBl1C,EAA2BthB,EAAK2N,EAAKxG,GAYvC,OAXIwG,KAAO3N,EACTG,OAAOmhB,eAAethB,EAAK2N,EAAK,CAC9BxG,MAAOA,EACPojB,YAAY,EACZhJ,cAAc,EACdkJ,UAAU,IAGZzqB,EAAI2N,GAAOxG,EAGNnH,EAZT,IAeI62D,EAAW12D,OAAO+yD,QAAU,SAAU1tD,GACxC,IAAK,IAAIvD,EAAI,EAAGA,EAAIoC,UAAUjB,OAAQnB,IAAK,CACzC,IAES0L,EAFLqV,EAAS3e,UAAUpC,GAEvB,IAAS0L,KAAOqV,EACV7iB,OAAOkD,UAAUrC,eAAeR,KAAKwiB,EAAQrV,KAC/CnI,EAAOmI,GAAOqV,EAAOrV,IAK3B,OAAOnI,GAUT,SAASq1E,EAAc9V,GACrB,OAAOlO,EAAS,GAAIkO,EAAS,CAC3B7zC,MAAO6zC,EAAQrvC,KAAOqvC,EAAQ5zC,MAC9B2pD,OAAQ/V,EAAQ31D,IAAM21D,EAAQnyC,SAWlC,SAAS4C,EAAsB8hC,GAC7B,IAAIlvB,EAAO,GAKX,IACM4wC,EAAK,KACP5wC,EAAOkvB,EAAQ9hC,wBACXmB,EAAYqjD,EAAU1iB,EAAS,OAC/B1gC,EAAaojD,EAAU1iB,EAAS,QACpClvB,EAAKh5B,KAAOunB,EACZyR,EAAK1S,MAAQkB,EACbwR,EAAK0yC,QAAUnkD,EACfyR,EAAKlX,OAAS0F,GAEdwR,EAAOkvB,EAAQ9hC,wBAEjB,MAAOvpB,IAET,IAAIwG,EAAS,CACXijB,KAAM0S,EAAK1S,KACXtmB,IAAKg5B,EAAKh5B,IACV+hB,MAAOiX,EAAKlX,MAAQkX,EAAK1S,KACzB9C,OAAQwV,EAAK0yC,OAAS1yC,EAAKh5B,KAIzB2rE,EAA6B,SAArBzjB,EAAQzrD,SAAsB4uE,EAAenjB,EAAQ7qD,eAAiB,GAC9E0kB,EAAQ4pD,EAAM5pD,OAASmmC,EAAQ+S,aAAe53D,EAAO0e,MACrDyB,EAASmoD,EAAMnoD,QAAU0kC,EAAQ+Q,cAAgB51D,EAAOmgB,OAExDooD,EAAiB1jB,EAAQjmC,YAAcF,EACvC8pD,EAAgB3jB,EAAQtkC,aAAeJ,EAa3C,OATIooD,GAAkBC,KAEpBD,GAAkBb,EADd5lD,EAAS+jD,EAAyBhhB,GACG,KACzC2jB,GAAiBd,EAAe5lD,EAAQ,KAExC9hB,EAAO0e,OAAS6pD,EAChBvoE,EAAOmgB,QAAUqoD,GAGZJ,EAAcpoE,GAGvB,SAASyoE,EAAqCrhE,EAAUxG,EAAxD,GACE,IAAI8nE,EAAmC,EAAnB92E,UAAUjB,aAA+ByC,IAD/D,KAGMkzE,EAASC,EAAK,IACdoC,EAA6B,SAApB/nE,EAAOxH,SAChBwvE,EAAe7lD,EAAsB3b,GACrCyhE,EAAa9lD,EAAsBniB,GACnCkoE,EAAe/C,EAAgB3+D,GAE/B0a,EAAS+jD,EAAyBjlE,GAClCyf,EAAiBtB,WAAW+C,EAAOzB,gBACnC0oD,EAAkBhqD,WAAW+C,EAAOinD,iBAGpCL,GAAiBC,IACnBE,EAAWlsE,IAAMrJ,KAAKmuB,IAAIonD,EAAWlsE,IAAK,GAC1CksE,EAAW5lD,KAAO3vB,KAAKmuB,IAAIonD,EAAW5lD,KAAM,IAE1CqvC,EAAU8V,EAAc,CAC1BzrE,IAAKisE,EAAajsE,IAAMksE,EAAWlsE,IAAM0jB,EACzC4C,KAAM2lD,EAAa3lD,KAAO4lD,EAAW5lD,KAAO8lD,EAC5CrqD,MAAOkqD,EAAalqD,MACpByB,OAAQyoD,EAAazoD,SA2BvB,OAzBAmyC,EAAQ0W,UAAY,EACpB1W,EAAQ9zC,WAAa,GAMhB8nD,GAAUqC,IACTK,EAAYjqD,WAAW+C,EAAOknD,WAC9BxqD,EAAaO,WAAW+C,EAAOtD,YAEnC8zC,EAAQ31D,KAAO0jB,EAAiB2oD,EAChC1W,EAAQ+V,QAAUhoD,EAAiB2oD,EACnC1W,EAAQrvC,MAAQ8lD,EAAkBvqD,EAClC8zC,EAAQ7zC,OAASsqD,EAAkBvqD,EAGnC8zC,EAAQ0W,UAAYA,EACpB1W,EAAQ9zC,WAAaA,GAIrB8zC,GADEgU,IAAWoC,EAAgB9nE,EAAOrK,SAASuyE,GAAgBloE,IAAWkoE,GAA0C,SAA1BA,EAAa1vE,UAzNzG,SAAuBu8B,EAAMkvB,EAA7B,GACE,IAAIrjC,EAA8B,EAAnB5vB,UAAUjB,aAA+ByC,IAD1D,KAGM8wB,EAAYqjD,EAAU1iB,EAAS,OAC/B1gC,EAAaojD,EAAU1iB,EAAS,QAChCokB,EAAWznD,GAAY,EAAI,EAK/B,OAJAmU,EAAKh5B,KAAOunB,EAAY+kD,EACxBtzC,EAAK0yC,QAAUnkD,EAAY+kD,EAC3BtzC,EAAK1S,MAAQkB,EAAa8kD,EAC1BtzC,EAAKlX,OAAS0F,EAAa8kD,EACpBtzC,EAgNKuzC,CAAc5W,EAAS1xD,GAG5B0xD,EAuDT,SAAS6W,EAA6BtkB,GAEpC,IAAKA,IAAYA,EAAQukB,eAAiB7C,IACxC,OAAOz3E,SAAS0N,gBAGlB,IADA,IAAIjB,EAAKspD,EAAQukB,cACV7tE,GAAoD,SAA9CsqE,EAAyBtqE,EAAI,cACxCA,EAAKA,EAAG6tE,cAEV,OAAO7tE,GAAMzM,SAAS0N,gBAcxB,SAAS6sE,EAAcjK,EAAQtO,EAAW3tC,EAASuvC,EAAnD,GACE,IAAIgW,EAAmC,EAAnB92E,UAAUjB,aAA+ByC,IAD/D,KAKMk2E,EAAa,CAAE3sE,IAAK,EAAGsmB,KAAM,GAC7B8S,EAAe2yC,EAAgBS,EAA6B/J,GAAUwH,EAAuBxH,EAAQ6G,EAAiBnV,IAGhG,aAAtB4B,EACF4W,EArFJ,SAAuDzkB,EAAvD,GACE,IAAI0kB,EAAmC,EAAnB33E,UAAUjB,aAA+ByC,IAD/D,KAGM2oB,EAAO8oC,EAAQ7qD,cAAcwC,gBAC7BgtE,EAAiBf,EAAqC5jB,EAAS9oC,GAC/D2C,EAAQprB,KAAKmuB,IAAI1F,EAAK67C,YAAaxqE,OAAO4pE,YAAc,GACxD72C,EAAS7sB,KAAKmuB,IAAI1F,EAAK65C,aAAcxoE,OAAO40E,aAAe,GAE3D99C,EAAaqlD,EAAkC,EAAlBhC,EAAUxrD,GACvCoI,EAAcolD,EAA0C,EAA1BhC,EAAUxrD,EAAM,QASlD,OAAOqsD,EAPM,CACXzrE,IAAKunB,EAAYslD,EAAe7sE,IAAM6sE,EAAeR,UACrD/lD,KAAMkB,EAAaqlD,EAAevmD,KAAOumD,EAAehrD,WACxDE,MAAOA,EACPyB,OAAQA,IAsEKspD,CAA8C1zC,EAAc2yC,IAGrEgB,OAAiB,EACK,iBAAtBhX,EAE8B,UADhCgX,EAAiB3D,EAAgBD,EAAchV,KAC5B13D,WACjBswE,EAAiBtK,EAAOplE,cAAcwC,iBAGxCktE,EAD+B,WAAtBhX,EACQ0M,EAAOplE,cAAcwC,gBAErBk2D,EAGfJ,EAAUmW,EAAqCiB,EAAgB3zC,EAAc2yC,GAGjD,SAA5BgB,EAAetwE,UA1EvB,SAASuwE,EAAQ9kB,GACf,IAAIzrD,EAAWyrD,EAAQzrD,SACvB,GAAiB,SAAbA,GAAoC,SAAbA,EACzB,OAAO,EAET,GAAsD,UAAlDysE,EAAyBhhB,EAAS,YACpC,OAAO,EAEL50D,EAAa61E,EAAcjhB,GAC/B,QAAK50D,GAGE05E,EAAQ15E,GA8D8B05E,CAAQ5zC,GAWjDuzC,EAAahX,GATTnyC,GADAypD,EAAkB5B,EAAe5I,EAAOplE,gBACfmmB,OACzBzB,EAAQkrD,EAAgBlrD,MAE5B4qD,EAAW3sE,KAAO21D,EAAQ31D,IAAM21D,EAAQ0W,UACxCM,EAAWjB,OAASloD,EAASmyC,EAAQ31D,IACrC2sE,EAAWrmD,MAAQqvC,EAAQrvC,KAAOqvC,EAAQ9zC,WAC1C8qD,EAAW7qD,MAAQC,EAAQ4zC,EAAQrvC,OASvC,IAAI4mD,EAAqC,iBADzC1mD,EAAUA,GAAW,GAOrB,OALAmmD,EAAWrmD,MAAQ4mD,EAAkB1mD,EAAUA,EAAQF,MAAQ,EAC/DqmD,EAAW3sE,KAAOktE,EAAkB1mD,EAAUA,EAAQxmB,KAAO,EAC7D2sE,EAAW7qD,OAASorD,EAAkB1mD,EAAUA,EAAQ1E,OAAS,EACjE6qD,EAAWjB,QAAUwB,EAAkB1mD,EAAUA,EAAQklD,QAAU,EAE5DiB,EAmBT,SAASQ,EAAqB1X,EAAW2X,EAAS3K,EAAQtO,EAAW4B,EAArE,GACMvvC,EAA6B,EAAnBvxB,UAAUjB,aAA+ByC,IADzD,IACoF,EAElF,IAAmC,IAA/Bg/D,EAAUjkE,QAAQ,QACpB,OAAOikE,EAGT,IAAIkX,EAAaD,EAAcjK,EAAQtO,EAAW3tC,EAASuvC,GAEvDsX,EAAQ,CACVrtE,IAAK,CACH+hB,MAAO4qD,EAAW5qD,MAClByB,OAAQ4pD,EAAQptE,IAAM2sE,EAAW3sE,KAEnC8hB,MAAO,CACLC,MAAO4qD,EAAW7qD,MAAQsrD,EAAQtrD,MAClC0B,OAAQmpD,EAAWnpD,QAErBkoD,OAAQ,CACN3pD,MAAO4qD,EAAW5qD,MAClByB,OAAQmpD,EAAWjB,OAAS0B,EAAQ1B,QAEtCplD,KAAM,CACJvE,MAAOqrD,EAAQ9mD,KAAOqmD,EAAWrmD,KACjC9C,OAAQmpD,EAAWnpD,SAInB8pD,EAAcv8E,OAAOsN,KAAKgvE,GAAOt4E,IAAI,SAAUwJ,GACjD,OAAOkpD,EAAS,CACdlpD,IAAKA,GACJ8uE,EAAM9uE,GAAM,CACb88D,MAhDWkS,EAgDGF,EAAM9uE,IA/CPwjB,MACJwrD,EAAK/pD,WAgDf5tB,KAAK,SAAU2E,EAAGC,GACnB,OAAOA,EAAE6gE,KAAO9gE,EAAE8gE,OAGhBmS,EAAgBF,EAAY/sE,OAAO,SAAUktE,GAC/C,IAAI1rD,EAAQ0rD,EAAM1rD,MACdyB,EAASiqD,EAAMjqD,OACnB,OAAOzB,GAAS0gD,EAAOxH,aAAez3C,GAAUi/C,EAAOxJ,eAGrDyU,GAA2C,EAAvBF,EAAcx5E,OAAaw5E,EAAuBF,GAAT,GAAG/uE,IAEhEovE,EAAYlY,EAAUt9D,MAAM,KAAK,GAErC,OAAOu1E,GAAqBC,EAAY,IAAMA,EAAY,IAa5D,SAASC,EAAoB7/D,EAAO00D,EAAQtO,EAA5C,GACM4X,EAAmC,EAAnB92E,UAAUjB,aAA+ByC,IAD/D,IAC0F,KAGxF,OAAOq1E,EAAqC3X,EADnB4X,EAAgBS,EAA6B/J,GAAUwH,EAAuBxH,EAAQ6G,EAAiBnV,IACrD4X,GAU7E,SAAS8B,EAAc3lB,GACrB,IACI/iC,EADS+iC,EAAQ7qD,cAAc0C,YACfwhB,iBAAiB2mC,GACjC/iB,EAAI/iB,WAAW+C,EAAOknD,WAAa,GAAKjqD,WAAW+C,EAAO2oD,cAAgB,GAC1EhnC,EAAI1kB,WAAW+C,EAAOtD,YAAc,GAAKO,WAAW+C,EAAO01C,aAAe,GAK9E,MAJa,CACX94C,MAAOmmC,EAAQjmC,YAAc6kB,EAC7BtjB,OAAQ0kC,EAAQtkC,aAAeuhB,GAYnC,SAAS4oC,EAAqBtY,GAC5B,IAAI3wD,EAAO,CAAEwhB,KAAM,QAASxE,MAAO,OAAQ4pD,OAAQ,MAAO1rE,IAAK,UAC/D,OAAOy1D,EAAU5+D,QAAQ,yBAA0B,SAAU4N,GAC3D,OAAOK,EAAKL,KAchB,SAASupE,EAAiBvL,EAAQwL,EAAkBxY,GAClDA,EAAYA,EAAUt9D,MAAM,KAAK,GAGjC,IAAI+1E,EAAaL,EAAcpL,GAG3B0L,EAAgB,CAClBpsD,MAAOmsD,EAAWnsD,MAClByB,OAAQ0qD,EAAW1qD,QAIjB4qD,GAAoD,IAA1C,CAAC,QAAS,QAAQ58E,QAAQikE,GACpC4Y,EAAWD,EAAU,MAAQ,OAC7BE,EAAgBF,EAAU,OAAS,MACnCG,EAAcH,EAAU,SAAW,QACnCI,EAAwBJ,EAAqB,QAAX,SAStC,OAPAD,EAAcE,GAAYJ,EAAiBI,GAAYJ,EAAiBM,GAAe,EAAIL,EAAWK,GAAe,EAEnHJ,EAAcG,GADZ7Y,IAAc6Y,EACeL,EAAiBK,GAAiBJ,EAAWM,GAE7CP,EAAiBF,EAAqBO,IAGhEH,EAYT,SAAS1tE,EAAK5P,EAAKuS,GAEjB,OAAI7M,MAAMtC,UAAUwM,KACX5P,EAAI4P,KAAK2C,GAIXvS,EAAI0P,OAAO6C,GAAO,GAqC3B,SAASqrE,EAAa7Y,EAAWvjD,EAAMq8D,GAoBrC,YAnB8Bj4E,IAATi4E,EAAqB9Y,EAAYA,EAAU3kE,MAAM,EA1BxE,SAAmBJ,EAAKyhB,EAAMva,GAE5B,GAAIxB,MAAMtC,UAAU06E,UAClB,OAAO99E,EAAI89E,UAAU,SAAUzvE,GAC7B,OAAOA,EAAIoT,KAAUva,IAKzB,IAAIkF,EAAQwD,EAAK5P,EAAK,SAAUD,GAC9B,OAAOA,EAAI0hB,KAAUva,IAEvB,OAAOlH,EAAIW,QAAQyL,GAcsD0xE,CAAU/Y,EAAW,OAAQ8Y,KAEvFvgC,QAAQ,SAAUm+B,GAC3BA,EAAA,UAEFl8D,QAAQC,KAAK,yDAEf,IAAIxc,EAAKy4E,EAAA,UAAwBA,EAASz4E,GACtCy4E,EAASzW,SAAW7jE,EAAW6B,KAIjCwe,EAAKsjD,QAAQ8M,OAASgJ,EAAcp5D,EAAKsjD,QAAQ8M,QACjDpwD,EAAKsjD,QAAQxB,UAAYsX,EAAcp5D,EAAKsjD,QAAQxB,WAEpD9hD,EAAOxe,EAAGwe,EAAMi6D,MAIbj6D,EA8DT,SAASu8D,EAAkBhZ,EAAWiZ,GACpC,OAAOjZ,EAAUx4B,KAAK,SAAUmwC,GAC9B,IAAIv3E,EAAOu3E,EAAKv3E,KAEhB,OADcu3E,EAAK1X,SACD7/D,IAAS64E,IAW/B,SAASC,EAAyBj3B,GAIhC,IAHA,IAAIk3B,EAAW,EAAC,EAAO,KAAM,SAAU,MAAO,KAC1CC,EAAYn3B,EAAS6J,OAAO,GAAG/vC,cAAgBkmC,EAAS5mD,MAAM,GAEzD4B,EAAI,EAAGA,EAAIk8E,EAAS/6E,OAAQnB,IAAK,CACxC,IAAI6zB,EAASqoD,EAASl8E,GAClBo8E,EAAUvoD,EAAS,GAAKA,EAASsoD,EAAYn3B,EACjD,QAA4C,IAAjC1lD,SAASkjB,KAAKlB,MAAM86D,GAC7B,OAAOA,EAGX,OAAO,KAsCT,SAASC,EAAUhnB,GACb7qD,EAAgB6qD,EAAQ7qD,cAC5B,OAAOA,EAAgBA,EAAc0C,YAActP,OAoBrD,SAAS0+E,EAAoBhb,EAAWp+D,EAASgY,EAAOqhE,GAEtDrhE,EAAMqhE,YAAcA,EACpBF,EAAU/a,GAAWl0D,iBAAiB,SAAU8N,EAAMqhE,YAAa,CAAEC,SAAS,IAG1EC,EAAgBlG,EAAgBjV,GAKpC,OA5BF,SAASob,EAAsBpD,EAAc/zD,EAAOtjB,EAAU06E,GAC5D,IAAIC,EAAmC,SAA1BtD,EAAa1vE,SACtBrG,EAASq5E,EAAStD,EAAa9uE,cAAc0C,YAAcosE,EAC/D/1E,EAAO6J,iBAAiBmY,EAAOtjB,EAAU,CAAEu6E,SAAS,IAE/CI,GACHF,EAAsBnG,EAAgBhzE,EAAO9C,YAAa8kB,EAAOtjB,EAAU06E,GAE7EA,EAAcj+E,KAAK6E,GAgBnBm5E,CAAsBD,EAAe,SAAUvhE,EAAMqhE,YAAarhE,EAAMyhE,eACxEzhE,EAAMuhE,cAAgBA,EACtBvhE,EAAM2hE,eAAgB,EAEf3hE,EA6CT,SAAS4hE,IAxBT,IAA8Bxb,EAAWpmD,EAyBnC1Z,KAAK0Z,MAAM2hE,gBACbE,qBAAqBv7E,KAAKihE,gBAC1BjhE,KAAK0Z,OA3BqBomD,EA2BQ9/D,KAAK8/D,UA3BFpmD,EA2Ba1Z,KAAK0Z,MAzBzDmhE,EAAU/a,GAAWzjD,oBAAoB,SAAU3C,EAAMqhE,aAGzDrhE,EAAMyhE,cAAcrhC,QAAQ,SAAU/3C,GACpCA,EAAOsa,oBAAoB,SAAU3C,EAAMqhE,eAI7CrhE,EAAMqhE,YAAc,KACpBrhE,EAAMyhE,cAAgB,GACtBzhE,EAAMuhE,cAAgB,KACtBvhE,EAAM2hE,eAAgB,EACf3hE,IAwBT,SAASssB,EAAU1wB,GACjB,MAAa,KAANA,IAAa2wB,MAAMlY,WAAWzY,KAAOwc,SAASxc,GAWvD,SAASkmE,EAAU3nB,EAAS/iC,GAC1Bp0B,OAAOsN,KAAK8mB,GAAQgpB,QAAQ,SAAU77B,GACpC,IAAIwC,EAAO,IAEkE,IAAzE,CAAC,QAAS,SAAU,MAAO,QAAS,SAAU,QAAQtjB,QAAQ8gB,IAAgB+nB,EAAUlV,EAAO7S,MACjGwC,EAAO,MAETozC,EAAQ/zC,MAAM7B,GAAQ6S,EAAO7S,GAAQwC,IAgIzC,IAAIg7D,EAAYpH,GAAa,WAAW7qE,KAAK+vD,UAAUib,WA8GvD,SAASkH,EAAmBna,EAAWoa,EAAgBC,GACrD,IAAIC,EAAazvE,EAAKm1D,EAAW,SAAU2X,GAEzC,OADWA,EAAKv3E,OACAg6E,IAGdG,IAAeD,GAActa,EAAUx4B,KAAK,SAAUkvC,GACxD,OAAOA,EAASt2E,OAASi6E,GAAiB3D,EAASzW,SAAWyW,EAASlC,MAAQ8F,EAAW9F,QAQ5F,OALK+F,IACCC,EAAc,IAAMJ,EAAiB,IAEzC5/D,QAAQC,KADQ,IAAM4/D,EAAgB,IACb,4BAA8BG,EAAc,4DAA8DA,EAAc,MAE5ID,EAoIT,IAAIE,EAAa,CAAC,aAAc,OAAQ,WAAY,YAAa,MAAO,UAAW,cAAe,QAAS,YAAa,aAAc,SAAU,eAAgB,WAAY,OAAQ,cAGhLC,EAAkBD,EAAWp/E,MAAM,GAYvC,SAASs/E,EAAU9a,EAAnB,GACM+a,EAA6B,EAAnBv7E,UAAUjB,aAA+ByC,IADzD,KAGMwU,EAAQqlE,EAAgB9+E,QAAQikE,GAChC5kE,EAAMy/E,EAAgBr/E,MAAMga,EAAQ,GAAG5Z,OAAOi/E,EAAgBr/E,MAAM,EAAGga,IAC3E,OAAOulE,EAAU3/E,EAAI+a,UAAY/a,EAGnC,IAAI4/E,EACI,OADJA,EAES,YAFTA,EAGgB,mBAiMpB,SAASC,EAAYp4C,EAAQ61C,EAAeF,EAAkB0C,GAC5D,IAAIhb,EAAU,CAAC,EAAG,GAKdib,GAA0D,IAA9C,CAAC,QAAS,QAAQp/E,QAAQm/E,GAItCE,EAAYv4C,EAAOngC,MAAM,WAAWpD,IAAI,SAAU+7E,GACpD,OAAOA,EAAKv2C,SAKVw2C,EAAUF,EAAUr/E,QAAQiP,EAAKowE,EAAW,SAAUC,GACxD,OAAgC,IAAzBA,EAAKE,OAAO,WAGjBH,EAAUE,KAAiD,IAArCF,EAAUE,GAASv/E,QAAQ,MACnD4e,QAAQC,KAAK,gFAKX4gE,EAAa,cAsCjB,QArCuB,IAAbF,EAAiB,CAACF,EAAU5/E,MAAM,EAAG8/E,GAAS1/E,OAAO,CAACw/E,EAAUE,GAAS54E,MAAM84E,GAAY,KAAM,CAACJ,EAAUE,GAAS54E,MAAM84E,GAAY,IAAI5/E,OAAOw/E,EAAU5/E,MAAM8/E,EAAU,KAAO,CAACF,IAGpL97E,IAAI,SAAUm8E,EAAIjmE,GAE1B,IAAIsjE,GAAyB,IAAVtjE,GAAe2lE,EAAYA,GAAa,SAAW,QAClEO,GAAoB,EACxB,OAAOD,EAGNE,OAAO,SAAU72E,EAAGC,GACnB,MAAwB,KAApBD,EAAEA,EAAEvG,OAAS,KAAwC,IAA3B,CAAC,IAAK,KAAKxC,QAAQgJ,IAC/CD,EAAEA,EAAEvG,OAAS,GAAKwG,EAClB22E,GAAoB,EACb52E,GACE42E,GACT52E,EAAEA,EAAEvG,OAAS,IAAMwG,EACnB22E,GAAoB,EACb52E,GAEAA,EAAElJ,OAAOmJ,IAEjB,IAEFzF,IAAI,SAAUs8E,GACb,OAxGgB9C,EAwGIA,EAxGSJ,EAwGIA,EAxGWF,EAwGIA,EArGhDl2E,IADAI,GAFWk5E,EAwGIA,GAtGHp0E,MAAM,8BACH,GACf6X,EAAO3c,EAAM,GAGZJ,EAIqB,IAAtB+c,EAAKtjB,QAAQ,KAYJi6E,EATJ,OADC32D,EAEMq5D,EAKAF,GAIFM,GAAe,IAAMx2E,EACf,OAAT+c,GAA0B,OAATA,EAYnB/c,GATM,OAAT+c,EACKne,KAAKmuB,IAAI3yB,SAAS0N,gBAAgBo5D,aAAcxoE,OAAO40E,aAAe,GAEtE1uE,KAAKmuB,IAAI3yB,SAAS0N,gBAAgBo7D,YAAaxqE,OAAO4pE,YAAc,IAE/D,IAAMtiE,EAzBbs5E,EARX,IAAiBA,EAAK9C,EAAaJ,EAAeF,EAI5Cn5D,MAyGAq5B,QAAQ,SAAU+iC,EAAIjmE,GACxBimE,EAAG/iC,QAAQ,SAAU2iC,EAAMQ,GACrBj3C,EAAUy2C,KACZnb,EAAQ1qD,IAAU6lE,GAA2B,MAAnBI,EAAGI,EAAS,IAAc,EAAI,QAIvD3b,EA2OT,IAkWI4b,EAAW,CAKb9b,UAAW,SAMX+b,eAAe,EAMf9B,eAAe,EAOf+B,iBAAiB,EAQjB7P,SAAU,aAUVG,SAAU,aAOVnM,UAnZc,CASdn3D,MAAO,CAEL2rE,MAAO,IAEPvU,SAAS,EAEThiE,GA9HJ,SAAewe,GACb,IAOM8hD,EAIAud,EAXFjc,EAAYpjD,EAAKojD,UACjBkb,EAAgBlb,EAAUt9D,MAAM,KAAK,GACrCw5E,EAAiBlc,EAAUt9D,MAAM,KAAK,GAoB1C,OAjBIw5E,IAEExd,GADAyd,EAAgBv/D,EAAKsjD,SACKxB,UAC1BsO,EAASmP,EAAcnP,OAIvB8L,GAFAsD,GAA2D,IAA9C,CAAC,SAAU,OAAOrgF,QAAQm/E,IAEZ,QAAU,SAErCmB,EAAe,CACjB9tE,MAAOkO,EAAe,GAJpBw/D,EAAOG,EAAa,OAAS,MAIC1d,EAAUud,IAC1C/7E,IAAKuc,EAAe,GAAIw/D,EAAMvd,EAAUud,GAAQvd,EAAUoa,GAAe9L,EAAO8L,KAGlFl8D,EAAKsjD,QAAQ8M,OAAShb,EAAS,GAAIgb,EAAQqP,EAAaH,KAGnDt/D,IAgJPimB,OAAQ,CAEN8xC,MAAO,IAEPvU,SAAS,EAEThiE,GA7RJ,SAAgBwe,EAAMk7D,GACpB,IAAIj1C,EAASi1C,EAAKj1C,OACdm9B,EAAYpjD,EAAKojD,UAEjBgN,GADAmP,EAAgBv/D,EAAKsjD,SACE8M,OACvBtO,EAAYyd,EAAczd,UAE1Bwc,EAAgBlb,EAAUt9D,MAAM,KAAK,GAErCw9D,OAAU,EAEZA,EADEt7B,GAAW/B,GACH,EAAEA,EAAQ,GAEVo4C,EAAYp4C,EAAQmqC,EAAQtO,EAAWwc,GAkBnD,MAfsB,SAAlBA,GACFlO,EAAOziE,KAAO21D,EAAQ,GACtB8M,EAAOn8C,MAAQqvC,EAAQ,IACI,UAAlBgb,GACTlO,EAAOziE,KAAO21D,EAAQ,GACtB8M,EAAOn8C,MAAQqvC,EAAQ,IACI,QAAlBgb,GACTlO,EAAOn8C,MAAQqvC,EAAQ,GACvB8M,EAAOziE,KAAO21D,EAAQ,IACK,WAAlBgb,IACTlO,EAAOn8C,MAAQqvC,EAAQ,GACvB8M,EAAOziE,KAAO21D,EAAQ,IAGxBtjD,EAAKowD,OAASA,EACPpwD,GAkQLimB,OAAQ,GAoBVw9B,gBAAiB,CAEfsU,MAAO,IAEPvU,SAAS,EAEThiE,GAlRJ,SAAyBwe,EAAMtc,GAC7B,IAAIggE,EAAoBhgE,EAAQggE,mBAAqB8T,EAAgBx3D,EAAKmwD,SAASC,QAK/EpwD,EAAKmwD,SAASrO,YAAc4B,IAC9BA,EAAoB8T,EAAgB9T,IAMtC,IAAIgc,EAAgBjD,EAAyB,aACzCkD,EAAe3/D,EAAKmwD,SAASC,OAAOtuD,MACpCnU,EAAMgyE,EAAahyE,IACnBsmB,EAAO0rD,EAAa1rD,KACpB2rD,EAAYD,EAAaD,GAE7BC,EAAahyE,IAAM,GACnBgyE,EAAa1rD,KAAO,GACpB0rD,EAAaD,GAAiB,GAE9B,IAAIpF,EAAaD,EAAcr6D,EAAKmwD,SAASC,OAAQpwD,EAAKmwD,SAASrO,UAAWp+D,EAAQywB,QAASuvC,EAAmB1jD,EAAKm/D,eAIvHQ,EAAahyE,IAAMA,EACnBgyE,EAAa1rD,KAAOA,EACpB0rD,EAAaD,GAAiBE,EAE9Bl8E,EAAQ42E,WAAaA,EAErB,IAAIvC,EAAQr0E,EAAQ+rC,SAChB2gC,EAASpwD,EAAKsjD,QAAQ8M,OAEtBr/D,EAAQ,CACV6M,QAAS,SAAiBwlD,GACxB,IAAI19D,EAAQ0qE,EAAOhN,GAInB,OAHIgN,EAAOhN,GAAakX,EAAWlX,KAAe1/D,EAAQm8E,sBACxDn6E,EAAQpB,KAAKmuB,IAAI29C,EAAOhN,GAAYkX,EAAWlX,KAE1CvjD,EAAe,GAAIujD,EAAW19D,IAEvCo6E,UAAW,SAAmB1c,GAC5B,IAAI4Y,EAAyB,UAAd5Y,EAAwB,OAAS,MAC5C19D,EAAQ0qE,EAAO4L,GAInB,OAHI5L,EAAOhN,GAAakX,EAAWlX,KAAe1/D,EAAQm8E,sBACxDn6E,EAAQpB,KAAKuvC,IAAIu8B,EAAO4L,GAAW1B,EAAWlX,IAA4B,UAAdA,EAAwBgN,EAAO1gD,MAAQ0gD,EAAOj/C,UAErGtR,EAAe,GAAIm8D,EAAUt2E,KAWxC,OAPAqyE,EAAMj8B,QAAQ,SAAUsnB,GACtB,IAAIic,GAA+C,IAAxC,CAAC,OAAQ,OAAOlgF,QAAQikE,GAAoB,UAAY,YACnEgN,EAAShb,EAAS,GAAIgb,EAAQr/D,EAAMsuE,GAAMjc,MAG5CpjD,EAAKsjD,QAAQ8M,OAASA,EAEfpwD,GA2NLyvB,SAAU,CAAC,OAAQ,QAAS,MAAO,UAOnCtb,QAAS,EAMTuvC,kBAAmB,gBAYrBqc,aAAc,CAEZhI,MAAO,IAEPvU,SAAS,EAEThiE,GAlgBJ,SAAsBwe,GACpB,IACIowD,GADAmP,EAAgBv/D,EAAKsjD,SACE8M,OACvBtO,EAAYyd,EAAczd,UAE1BsB,EAAYpjD,EAAKojD,UAAUt9D,MAAM,KAAK,GACtC+pC,EAAQvrC,KAAKurC,MAEbwvC,GADAG,GAAuD,IAA1C,CAAC,MAAO,UAAUrgF,QAAQikE,IACnB,QAAU,SAC9B4c,EAASR,EAAa,OAAS,MAC/BtD,EAAcsD,EAAa,QAAU,SASzC,OAPIpP,EAAOiP,GAAQxvC,EAAMiyB,EAAUke,MACjChgE,EAAKsjD,QAAQ8M,OAAO4P,GAAUnwC,EAAMiyB,EAAUke,IAAW5P,EAAO8L,IAE9D9L,EAAO4P,GAAUnwC,EAAMiyB,EAAUud,MACnCr/D,EAAKsjD,QAAQ8M,OAAO4P,GAAUnwC,EAAMiyB,EAAUud,KAGzCr/D,IA4fPsvD,MAAO,CAELyI,MAAO,IAEPvU,SAAS,EAEThiE,GApxBJ,SAAewe,EAAMtc,GAInB,IAAKg6E,EAAmB19D,EAAKmwD,SAAS5M,UAAW,QAAS,gBACxD,OAAOvjD,EAGT,IAAIigE,EAAev8E,EAAQmyD,QAG3B,GAA4B,iBAAjBoqB,GAIT,KAHAA,EAAejgE,EAAKmwD,SAASC,OAAOra,cAAckqB,IAIhD,OAAOjgE,OAKT,IAAKA,EAAKmwD,SAASC,OAAO7oE,SAAS04E,GAEjC,OADAliE,QAAQC,KAAK,iEACNgC,EAIX,IAAIojD,EAAYpjD,EAAKojD,UAAUt9D,MAAM,KAAK,GAEtCsqE,GADAmP,EAAgBv/D,EAAKsjD,SACE8M,OACvBtO,EAAYyd,EAAczd,UAE1B0d,GAAuD,IAA1C,CAAC,OAAQ,SAASrgF,QAAQikE,GAEvChgE,EAAMo8E,EAAa,SAAW,QAC9BU,EAAkBV,EAAa,MAAQ,OACvCH,EAAOa,EAAgBl6E,cACvBm6E,EAAUX,EAAa,OAAS,MAChCQ,EAASR,EAAa,SAAW,QACjCY,EAAmB5E,EAAcyE,GAAc78E,GAiCnD,OAzBI0+D,EAAUke,GAAUI,EAAmBhQ,EAAOiP,KAChDr/D,EAAKsjD,QAAQ8M,OAAOiP,IAASjP,EAAOiP,IAASvd,EAAUke,GAAUI,IAG/Dte,EAAUud,GAAQe,EAAmBhQ,EAAO4P,KAC9ChgE,EAAKsjD,QAAQ8M,OAAOiP,IAASvd,EAAUud,GAAQe,EAAmBhQ,EAAO4P,IAE3EhgE,EAAKsjD,QAAQ8M,OAASgJ,EAAcp5D,EAAKsjD,QAAQ8M,QAG7CiQ,EAASve,EAAUud,GAAQvd,EAAU1+D,GAAO,EAAIg9E,EAAmB,EAInEp+D,EAAM60D,EAAyB72D,EAAKmwD,SAASC,QAC7CkQ,EAAmBvwD,WAAW/N,EAAI,SAAWk+D,IAC7CK,EAAmBxwD,WAAW/N,EAAI,SAAWk+D,EAAkB,UAC/DM,EAAYH,EAASrgE,EAAKsjD,QAAQ8M,OAAOiP,GAAQiB,EAAmBC,EAGxEC,EAAYl8E,KAAKmuB,IAAInuB,KAAKuvC,IAAIu8B,EAAOhtE,GAAOg9E,EAAkBI,GAAY,GAE1ExgE,EAAKigE,aAAeA,EACpBjgE,EAAKsjD,QAAQgM,OAAmCzvD,EAA1B4gE,EAAsB,GAAwCpB,EAAM/6E,KAAKwrB,MAAM0wD,IAAa3gE,EAAe4gE,EAAqBN,EAAS,IAAKM,GAE7JzgE,GA8sBL61C,QAAS,aAcX+L,KAAM,CAEJmW,MAAO,IAEPvU,SAAS,EAEThiE,GA5oBJ,SAAcwe,EAAMtc,GAElB,GAAI64E,EAAkBv8D,EAAKmwD,SAAS5M,UAAW,SAC7C,OAAOvjD,EAGT,GAAIA,EAAK0gE,SAAW1gE,EAAKojD,YAAcpjD,EAAKwvD,kBAE1C,OAAOxvD,EAGT,IAAIs6D,EAAaD,EAAcr6D,EAAKmwD,SAASC,OAAQpwD,EAAKmwD,SAASrO,UAAWp+D,EAAQywB,QAASzwB,EAAQggE,kBAAmB1jD,EAAKm/D,eAE3H/b,EAAYpjD,EAAKojD,UAAUt9D,MAAM,KAAK,GACtC66E,EAAoBjF,EAAqBtY,GACzCkY,EAAYt7D,EAAKojD,UAAUt9D,MAAM,KAAK,IAAM,GAE5C86E,EAAY,GAEhB,OAAQl9E,EAAQ2rE,UACd,KAAK+O,EACHwC,EAAY,CAACxd,EAAWud,GACxB,MACF,KAAKvC,EACHwC,EAAY1C,EAAU9a,GACtB,MACF,KAAKgb,EACHwC,EAAY1C,EAAU9a,GAAW,GACjC,MACF,QACEwd,EAAYl9E,EAAQ2rE,SAyDxB,OAtDAuR,EAAU9kC,QAAQ,SAAU9mB,EAAMpc,GAChC,GAAIwqD,IAAcpuC,GAAQ4rD,EAAUj/E,SAAWiX,EAAQ,EACrD,OAAOoH,EAGTojD,EAAYpjD,EAAKojD,UAAUt9D,MAAM,KAAK,GACtC66E,EAAoBjF,EAAqBtY,GAEzC,IAAI0Y,EAAgB97D,EAAKsjD,QAAQ8M,OAC7ByQ,EAAa7gE,EAAKsjD,QAAQxB,UAG1BjyB,EAAQvrC,KAAKurC,MACbixC,EAA4B,SAAd1d,GAAwBvzB,EAAMisC,EAAcrsD,OAASogB,EAAMgxC,EAAW5sD,OAAuB,UAAdmvC,GAAyBvzB,EAAMisC,EAAc7nD,MAAQ4b,EAAMgxC,EAAWpxD,QAAwB,QAAd2zC,GAAuBvzB,EAAMisC,EAAczC,QAAUxpC,EAAMgxC,EAAWlzE,MAAsB,WAAdy1D,GAA0BvzB,EAAMisC,EAAcnuE,KAAOkiC,EAAMgxC,EAAWxH,QAEjU0H,EAAgBlxC,EAAMisC,EAAc7nD,MAAQ4b,EAAMyqC,EAAWrmD,MAC7D+sD,EAAiBnxC,EAAMisC,EAAcrsD,OAASogB,EAAMyqC,EAAW7qD,OAC/DwxD,EAAepxC,EAAMisC,EAAcnuE,KAAOkiC,EAAMyqC,EAAW3sE,KAC3DuzE,EAAkBrxC,EAAMisC,EAAczC,QAAUxpC,EAAMyqC,EAAWjB,QAEjE8H,EAAoC,SAAd/d,GAAwB2d,GAA+B,UAAd3d,GAAyB4d,GAAgC,QAAd5d,GAAuB6d,GAA8B,WAAd7d,GAA0B8d,EAG3K1B,GAAuD,IAA1C,CAAC,MAAO,UAAUrgF,QAAQikE,GAGvCge,IAA0B19E,EAAQ29E,iBAAmB7B,GAA4B,UAAdlE,GAAyByF,GAAiBvB,GAA4B,QAAdlE,GAAuB0F,IAAmBxB,GAA4B,UAAdlE,GAAyB2F,IAAiBzB,GAA4B,QAAdlE,GAAuB4F,GAGlQI,IAA8B59E,EAAQ69E,0BAA4B/B,GAA4B,UAAdlE,GAAyB0F,GAAkBxB,GAA4B,QAAdlE,GAAuByF,IAAkBvB,GAA4B,UAAdlE,GAAyB4F,IAAoB1B,GAA4B,QAAdlE,GAAuB2F,GAElRO,EAAmBJ,GAAyBE,GAE5CR,GAAeK,GAAuBK,KAExCxhE,EAAK0gE,SAAU,GAEXI,GAAeK,KACjB/d,EAAYwd,EAAUhoE,EAAQ,IAG5B4oE,IACFlG,EAtJY,SADUA,EAuJWA,GArJ9B,QACgB,UAAdA,EACF,MAEFA,GAoJHt7D,EAAKojD,UAAYA,GAAakY,EAAY,IAAMA,EAAY,IAI5Dt7D,EAAKsjD,QAAQ8M,OAAShb,EAAS,GAAIp1C,EAAKsjD,QAAQ8M,OAAQuL,EAAiB37D,EAAKmwD,SAASC,OAAQpwD,EAAKsjD,QAAQxB,UAAW9hD,EAAKojD,YAE5HpjD,EAAOo8D,EAAap8D,EAAKmwD,SAAS5M,UAAWvjD,EAAM,WAGhDA,GA4jBLqvD,SAAU,OAKVl7C,QAAS,EAOTuvC,kBAAmB,WAQnB2d,gBAAgB,EAQhBE,yBAAyB,GAU3BE,MAAO,CAEL1J,MAAO,IAEPvU,SAAS,EAEThiE,GArQJ,SAAewe,GACb,IAAIojD,EAAYpjD,EAAKojD,UACjBkb,EAAgBlb,EAAUt9D,MAAM,KAAK,GAErCsqE,GADAmP,EAAgBv/D,EAAKsjD,SACE8M,OACvBtO,EAAYyd,EAAczd,UAE1Bia,GAAwD,IAA9C,CAAC,OAAQ,SAAS58E,QAAQm/E,GAEpCoD,GAA6D,IAA5C,CAAC,MAAO,QAAQviF,QAAQm/E,GAO7C,OALAlO,EAAO2L,EAAU,OAAS,OAASja,EAAUwc,IAAkBoD,EAAiBtR,EAAO2L,EAAU,QAAU,UAAY,GAEvH/7D,EAAKojD,UAAYsY,EAAqBtY,GACtCpjD,EAAKsjD,QAAQ8M,OAASgJ,EAAchJ,GAE7BpwD,IAkQPiD,KAAM,CAEJ80D,MAAO,IAEPvU,SAAS,EAEThiE,GA9TJ,SAAcwe,GACZ,IAAK09D,EAAmB19D,EAAKmwD,SAAS5M,UAAW,OAAQ,mBACvD,OAAOvjD,EAGT,IAAI+6D,EAAU/6D,EAAKsjD,QAAQxB,UACvB6f,EAAQvzE,EAAK4R,EAAKmwD,SAAS5M,UAAW,SAAU0W,GAClD,MAAyB,oBAAlBA,EAASt2E,OACf22E,WAEH,GAAIS,EAAQ1B,OAASsI,EAAMh0E,KAAOotE,EAAQ9mD,KAAO0tD,EAAMlyD,OAASsrD,EAAQptE,IAAMg0E,EAAMtI,QAAU0B,EAAQtrD,MAAQkyD,EAAM1tD,KAAM,CAExH,IAAkB,IAAdjU,EAAKiD,KACP,OAAOjD,EAGTA,EAAKiD,MAAO,EACZjD,EAAKtX,WAAW,uBAAyB,OACpC,CAEL,IAAkB,IAAdsX,EAAKiD,KACP,OAAOjD,EAGTA,EAAKiD,MAAO,EACZjD,EAAKtX,WAAW,wBAAyB,EAG3C,OAAOsX,IAoTP4hE,aAAc,CAEZ7J,MAAO,IAEPvU,SAAS,EAEThiE,GAtgCJ,SAAsBwe,EAAMtc,GAC1B,IAAIovC,EAAIpvC,EAAQovC,EACZ2B,EAAI/wC,EAAQ+wC,EACZ27B,EAASpwD,EAAKsjD,QAAQ8M,YAOUhsE,KAHhCy9E,EAA8BzzE,EAAK4R,EAAKmwD,SAAS5M,UAAW,SAAU0W,GACxE,MAAyB,eAAlBA,EAASt2E,OACfm+E,kBAED/jE,QAAQC,KAAK,iIAEf,IApDyBgC,EAGrB8hD,EACAhyC,EAQAiyD,EAwCAD,OAAkD19E,IAAhCy9E,EAA4CA,EAA8Bn+E,EAAQo+E,gBAEpG/6C,EAAeywC,EAAgBx3D,EAAKmwD,SAASC,QAC7C4R,EAAmBjuD,EAAsBgT,GAGzCjU,EAAS,CACXnD,SAAUygD,EAAOzgD,UAGf2zC,GA9DqBtjD,EA8DOA,EA9DDiiE,EA8DO7jF,OAAO8jF,iBAAmB,IAAMzE,EA5DlErN,GADAmP,EAAgBv/D,EAAKsjD,SACE8M,OACvBtO,EAAYyd,EAAczd,UAC1BhyC,EAAQxrB,KAAKwrB,MACb+f,EAAQvrC,KAAKurC,MAEbsyC,EAAU,SAAiBzoE,GAC7B,OAAOA,GAGL0oE,EAAiBtyD,EAAMgyC,EAAUpyC,OACjCqyD,EAAcjyD,EAAMsgD,EAAO1gD,OAE3B8vD,GAA4D,IAA/C,CAAC,OAAQ,SAASrgF,QAAQ6gB,EAAKojD,WAC5Cif,GAA+C,IAAjCriE,EAAKojD,UAAUjkE,QAAQ,KAIrCmjF,EAAuBL,EAAwBzC,GAAc6C,GAH3CD,EAAiB,GAAML,EAAc,EAGuCjyD,EAAQ+f,EAAjEsyC,EACrCI,EAAqBN,EAAwBnyD,EAAVqyD,EAEhC,CACLluD,KAAMquD,EANWF,EAAiB,GAAM,GAAKL,EAAc,GAAM,IAMtBM,GAAeJ,EAAc7R,EAAOn8C,KAAO,EAAIm8C,EAAOn8C,MACjGtmB,IAAK40E,EAAkBnS,EAAOziE,KAC9B0rE,OAAQkJ,EAAkBnS,EAAOiJ,QACjC5pD,MAAO6yD,EAAoBlS,EAAO3gD,SAsChCmpD,EAAc,WAAN9lC,EAAiB,MAAQ,SACjC+lC,EAAc,UAANpkC,EAAgB,OAAS,QAKjC+tC,EAAmB/F,EAAyB,aAW5CxoD,OAAO,EACPtmB,OAAM,EAKNA,EAJU,UAAVirE,EAG4B,SAA1B7xC,EAAa38B,UACR28B,EAAa6/B,aAAetD,EAAQ+V,QAEpC2I,EAAiB7wD,OAASmyC,EAAQ+V,OAGrC/V,EAAQ31D,IAIZsmB,EAFU,SAAV4kD,EAC4B,SAA1B9xC,EAAa38B,UACP28B,EAAa6hC,YAActF,EAAQ7zC,OAEnCuyD,EAAiBtyD,MAAQ4zC,EAAQ7zC,MAGpC6zC,EAAQrvC,KA0BjB,OAxBI6tD,GAAmBU,GACrB1vD,EAAO0vD,GAAoB,eAAiBvuD,EAAO,OAAStmB,EAAM,SAClEmlB,EAAO8lD,GAAS,EAChB9lD,EAAO+lD,GAAS,EAChB/lD,EAAO2vD,WAAa,cAIhBC,EAAuB,SAAV7J,GAAqB,EAAI,EAC1C/lD,EAAO8lD,GAASjrE,GAFU,UAAVirE,GAAsB,EAAI,GAG1C9lD,EAAO+lD,GAAS5kD,EAAOyuD,EACvB5vD,EAAO2vD,WAAa7J,EAAQ,KAAOC,GAIjCnwE,EAAa,CACf,cAAesX,EAAKojD,WAItBpjD,EAAKtX,WAAa0sD,EAAS,GAAI1sD,EAAYsX,EAAKtX,YAChDsX,EAAK8S,OAASsiC,EAAS,GAAItiC,EAAQ9S,EAAK8S,QACxC9S,EAAK2iE,YAAcvtB,EAAS,GAAIp1C,EAAKsjD,QAAQgM,MAAOtvD,EAAK2iE,aAElD3iE,GAo7BL8hE,iBAAiB,EAMjBhvC,EAAG,SAMH2B,EAAG,SAkBLkvB,WAAY,CAEVoU,MAAO,IAEPvU,SAAS,EAEThiE,GAzpCJ,SAAoBwe,GApBpB,IAAuB61C,EAASntD,EAoC9B,OAXA80E,EAAUx9D,EAAKmwD,SAASC,OAAQpwD,EAAK8S,QAzBhB+iC,EA6BP71C,EAAKmwD,SAASC,OA7BE1nE,EA6BMsX,EAAKtX,WA5BzChK,OAAOsN,KAAKtD,GAAYozC,QAAQ,SAAU77B,IAE1B,IADFvX,EAAWuX,GAErB41C,EAAQ/0D,aAAamf,EAAMvX,EAAWuX,IAEtC41C,EAAQ9pD,gBAAgBkU,KA0BxBD,EAAKigE,cAAgBvhF,OAAOsN,KAAKgU,EAAK2iE,aAAahhF,QACrD67E,EAAUx9D,EAAKigE,aAAcjgE,EAAK2iE,aAG7B3iE,GA2oCL4iE,OA9nCJ,SAA0B9gB,EAAWsO,EAAQ1sE,EAASm/E,EAAiBnnE,GAerE,OAbIkgE,EAAmBL,EAAoB7/D,EAAO00D,EAAQtO,EAAWp+D,EAAQy7E,eAKzE/b,EAAY0X,EAAqBp3E,EAAQ0/D,UAAWwY,EAAkBxL,EAAQtO,EAAWp+D,EAAQ6/D,UAAU3B,KAAK8B,kBAAmBhgE,EAAQ6/D,UAAU3B,KAAKztC,SAE9Ji8C,EAAOtvE,aAAa,cAAesiE,GAInCoa,EAAUpN,EAAQ,CAAEzgD,SAAUjsB,EAAQy7E,cAAgB,QAAU,aAEzDz7E,GAsnCLo+E,qBAAiB19E,KAuGjBswD,GA+EFwkB,EAAYxkB,EAAQ,CAAC,CACnBxoD,IAAK,SACLxG,MAAO,WACL,OA9lDN,WAEE,IAIIsa,EAJAhe,KAAK0Z,MAAMonE,eAIX9iE,EAAO,CACTmwD,SAAUnuE,KACV8wB,OAAQ,GACR6vD,YAAa,GACbj6E,WAAY,GACZg4E,SAAS,EACTpd,QAAS,KAINA,QAAQxB,UAAYyZ,EAAoBv5E,KAAK0Z,MAAO1Z,KAAKouE,OAAQpuE,KAAK8/D,UAAW9/D,KAAK0B,QAAQy7E,eAKnGn/D,EAAKojD,UAAY0X,EAAqB94E,KAAK0B,QAAQ0/D,UAAWpjD,EAAKsjD,QAAQxB,UAAW9/D,KAAKouE,OAAQpuE,KAAK8/D,UAAW9/D,KAAK0B,QAAQ6/D,UAAU3B,KAAK8B,kBAAmB1hE,KAAK0B,QAAQ6/D,UAAU3B,KAAKztC,SAG9LnU,EAAKwvD,kBAAoBxvD,EAAKojD,UAE9BpjD,EAAKm/D,cAAgBn9E,KAAK0B,QAAQy7E,cAGlCn/D,EAAKsjD,QAAQ8M,OAASuL,EAAiB35E,KAAKouE,OAAQpwD,EAAKsjD,QAAQxB,UAAW9hD,EAAKojD,WAEjFpjD,EAAKsjD,QAAQ8M,OAAOzgD,SAAW3tB,KAAK0B,QAAQy7E,cAAgB,QAAU,WAGtEn/D,EAAOo8D,EAAap6E,KAAKuhE,UAAWvjD,GAI/Bhe,KAAK0Z,MAAMqnE,UAId/gF,KAAK0B,QAAQgsE,SAAS1vD,IAHtBhe,KAAK0Z,MAAMqnE,WAAY,EACvB/gF,KAAK0B,QAAQ6rE,SAASvvD,MAsjDNjhB,KAAKiD,QAEpB,CACDkK,IAAK,UACLxG,MAAO,WACL,OA7gDN,WAsBE,OArBA1D,KAAK0Z,MAAMonE,aAAc,EAGrBvG,EAAkBv6E,KAAKuhE,UAAW,gBACpCvhE,KAAKouE,OAAOrkE,gBAAgB,eAC5B/J,KAAKouE,OAAOtuD,MAAM6N,SAAW,GAC7B3tB,KAAKouE,OAAOtuD,MAAMnU,IAAM,GACxB3L,KAAKouE,OAAOtuD,MAAMmS,KAAO,GACzBjyB,KAAKouE,OAAOtuD,MAAM2N,MAAQ,GAC1BztB,KAAKouE,OAAOtuD,MAAMu3D,OAAS,GAC3Br3E,KAAKouE,OAAOtuD,MAAM2gE,WAAa,GAC/BzgF,KAAKouE,OAAOtuD,MAAM26D,EAAyB,cAAgB,IAG7Dz6E,KAAKs7E,wBAIDt7E,KAAK0B,QAAQ07E,iBACfp9E,KAAKouE,OAAOnvE,WAAWC,YAAYc,KAAKouE,QAEnCpuE,MAu/CYjD,KAAKiD,QAErB,CACDkK,IAAK,uBACLxG,MAAO,WACL,OA18CN,WACO1D,KAAK0Z,MAAM2hE,gBACdr7E,KAAK0Z,MAAQohE,EAAoB96E,KAAK8/D,UAAW9/D,KAAK0B,QAAS1B,KAAK0Z,MAAO1Z,KAAKihE,kBAw8ClDlkE,KAAKiD,QAElC,CACDkK,IAAK,wBACLxG,MAAO,WACL,OAAO43E,EAAsBv+E,KAAKiD,UA4B/B0yD,GApHP,SAASA,EAAOoN,EAAWsO,GACzB,IAAI7a,EAAQvzD,KAER0B,EAA6B,EAAnBd,UAAUjB,aAA+ByC,IAAjBxB,UAAU,GAAmBA,UAAU,GAAK,GAClFq2E,EAAej3E,KAAM0yD,GAErB1yD,KAAKihE,eAAiB,WACpB,OAAOltC,sBAAsBw/B,EAAMyN,SAIrChhE,KAAKghE,OAASyT,EAASz0E,KAAKghE,OAAO3rC,KAAKr1B,OAGxCA,KAAK0B,QAAU0xD,EAAS,GAAIV,EAAOwqB,SAAUx7E,GAG7C1B,KAAK0Z,MAAQ,CACXonE,aAAa,EACbC,WAAW,EACX5F,cAAe,IAIjBn7E,KAAK8/D,UAAYA,GAAaA,EAAUjgE,OAASigE,EAAU,GAAKA,EAChE9/D,KAAKouE,OAASA,GAAUA,EAAOvuE,OAASuuE,EAAO,GAAKA,EAGpDpuE,KAAK0B,QAAQ6/D,UAAY,GACzB7kE,OAAOsN,KAAKopD,EAAS,GAAIV,EAAOwqB,SAAS3b,UAAW7/D,EAAQ6/D,YAAYznB,QAAQ,SAAUn4C,GACxF4xD,EAAM7xD,QAAQ6/D,UAAU5/D,GAAQyxD,EAAS,GAAIV,EAAOwqB,SAAS3b,UAAU5/D,IAAS,GAAID,EAAQ6/D,UAAY7/D,EAAQ6/D,UAAU5/D,GAAQ,MAIpI3B,KAAKuhE,UAAY7kE,OAAOsN,KAAKhK,KAAK0B,QAAQ6/D,WAAW7gE,IAAI,SAAUiB,GACjE,OAAOyxD,EAAS,CACdzxD,KAAMA,GACL4xD,EAAM7xD,QAAQ6/D,UAAU5/D,MAG5BJ,KAAK,SAAU2E,EAAGC,GACjB,OAAOD,EAAE6vE,MAAQ5vE,EAAE4vE,QAOrB/1E,KAAKuhE,UAAUznB,QAAQ,SAAU+mC,GAC3BA,EAAgBrf,SAAW7jE,EAAWkjF,EAAgBD,SACxDC,EAAgBD,OAAOrtB,EAAMuM,UAAWvM,EAAM6a,OAAQ7a,EAAM7xD,QAASm/E,EAAiBttB,EAAM75C,SAKhG1Z,KAAKghE,SAEDqa,EAAgBr7E,KAAK0B,QAAQ25E,cAC7BA,GAEFr7E,KAAKghF,uBAGPhhF,KAAK0Z,MAAM2hE,cAAgBA,EA6E/B3oB,EAAOuuB,OAA2B,oBAAX7kF,OAAyBA,OAASF,GAAQglF,YACjExuB,EAAOspB,WAAaA,EACpBtpB,EAAOwqB,SAAWA,E,WAEHxqB,G,mDCljFKv2D,E,4MAAAA,EAKX,SAAUglF,GAsEf,OAlESA,EAAOznC,aAAa,KAAM,CAC/BxI,OAAQ,8FAA8FptC,MAClG,KAEJmtC,YAAa,kDAAkDntC,MAAM,KACrE6wC,SAAU,4DAA4D7wC,MAClE,KAEJ4wC,cAAe,8BAA8B5wC,MAAM,KACnD2wC,YAAa,uBAAuB3wC,MAAM,KAC1C40C,cAAe,SACf/B,KAAM,SAAUnqC,GACZ,MAAO,QAAQhD,KAAKgD,IAExBg8B,SAAU,SAAU2N,EAAOE,EAASiX,GAChC,OAAInX,EAAQ,GACDmX,EAAU,KAAO,KAEjBA,EAAU,KAAO,MAGhC3gB,eAAgB,CACZ+K,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVZ,SAAU,CACNC,QAAS,iBACTC,QAAS,eACTC,SAAU,eACVC,QAAS,iBACTC,SAAU,sBACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,SACRC,KAAM,YACN7c,EAAG,mBACH8c,GAAI,cACJjvC,EAAG,YACHkvC,GAAI,YACJtF,EAAG,SACHuF,GAAI,SACJxF,EAAG,SACHyF,GAAI,SACJvF,EAAG,WACHyF,GAAI,YACJ/F,EAAG,UACHgG,GAAI,WAERV,uBAAwB,kBACxB7L,QAAS,SAAUb,GACf,OACIA,GACY,IAAXA,GAA2B,IAAXA,GAA0B,IAAVA,EAAe,MAAQ,OAGhEwI,KAAM,CACFL,IAAK,EACLC,IAAK,MAtEK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCD5Bv0D,E,4MAAAA,EAKX,SAAUglF,GA4BE,SAAbC,EAAuB9rE,GACnB,OAAa,IAANA,EACD,EACM,IAANA,EACA,EACM,IAANA,EACA,EACW,GAAXA,EAAI,KAAYA,EAAI,KAAO,GAC3B,EACW,IAAXA,EAAI,IACJ,EACA,EAoDE,SAAZ+rE,EAAsBh5B,GAClB,OAAO,SAAUhd,EAAQ+b,EAAe5pC,EAAQmuC,GAC5C,IAAI21B,EAAIF,EAAW/1C,GACf2xC,EAAMuE,EAAQl5B,GAAG+4B,EAAW/1C,IAIhC,OAFI2xC,EADM,IAANsE,EACMtE,EAAI51B,EAAgB,EAAI,GAE3B41B,GAAIx6E,QAAQ,MAAO6oC;kCA9FtC;IAAIm2C,EAAY,CACRC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHngD,EAAG,KAEPogD,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAeTX,EAAU,CACNlmD,EAAG,CACC,eACA,cACA,CAAC,UAAW,WACZ,UACA,WACA,YAEJnyB,EAAG,CACC,eACA,cACA,CAAC,UAAW,WACZ,WACA,WACA,YAEJ4pC,EAAG,CACC,cACA,aACA,CAAC,SAAU,UACX,WACA,UACA,WAEJD,EAAG,CACC,aACA,WACA,CAAC,QAAS,SACV,UACA,WACA,UAEJE,EAAG,CACC,aACA,WACA,CAAC,QAAS,SACV,UACA,UACA,UAEJN,EAAG,CACC,aACA,WACA,CAAC,QAAS,SACV,WACA,WACA,WAaRvB,EAAS,CACL,QACA,SACA,OACA,QACA,OACA,QACA,QACA,QACA,SACA,SACA,SACA,UAyER,OAtESiwC,EAAOznC,aAAa,KAAM,CAC/BxI,OAAQA,EACRD,YAAaC,EACbyD,SAAU,sDAAsD7wC,MAAM,KACtE4wC,cAAe,wCAAwC5wC,MAAM,KAC7D2wC,YAAa,gBAAgB3wC,MAAM,KACnCq+E,oBAAoB,EACpBx1C,eAAgB,CACZ+K,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVY,cAAe,MACf/B,KAAM,SAAUnqC,GACZ,MAAO,MAAQA,GAEnBg8B,SAAU,SAAUmW,EAAMkB,EAAQyN,GAC9B,OAAI3O,EAAO,GACA,IAEA,KAGfzH,SAAU,CACNC,QAAS,wBACTC,QAAS,uBACTC,SAAU,uBACVC,QAAS,sBACTC,SAAU,uBACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,SACRC,KAAM,SACN7c,EAAGgmD,EAAU,KACblpC,GAAIkpC,EAAU,KACdn4E,EAAGm4E,EAAU,KACbjpC,GAAIipC,EAAU,KACdvuC,EAAGuuC,EAAU,KACbhpC,GAAIgpC,EAAU,KACdxuC,EAAGwuC,EAAU,KACb/oC,GAAI+oC,EAAU,KACdtuC,EAAGsuC,EAAU,KACb7oC,GAAI6oC,EAAU,KACd5uC,EAAG4uC,EAAU,KACb5oC,GAAI4oC,EAAU,MAElBpiC,SAAU,SAAUzhC,GAChB,OAAOA,EACFhb,QAAQ,gBAAiB,SAAUoG,GAChC,OAAOs5E,EAAUt5E,KAEpBpG,QAAQ,KAAM,MAEvB2kD,WAAY,SAAU3pC,GAClB,OAAOA,EACFhb,QAAQ,MAAO,SAAUoG,GACtB,OAAO44E,EAAU54E,KAEpBpG,QAAQ,KAAM,MAEvBqxC,KAAM,CACFL,IAAK,EACLC,IAAK,OA1LK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCD5Bv0D,E,4MAAAA,EAKX,SAAUglF,GAIE,SAAbC,EAAuB9rE,GACnB,OAAa,IAANA,EACD,EACM,IAANA,EACA,EACM,IAANA,EACA,EACW,GAAXA,EAAI,KAAYA,EAAI,KAAO,GAC3B,EACW,IAAXA,EAAI,IACJ,EACA,EAoDE,SAAZ+rE,EAAsBh5B,GAClB,OAAO,SAAUhd,EAAQ+b,EAAe5pC,EAAQmuC,GAC5C,IAAI21B,EAAIF,EAAW/1C,GACf2xC,EAAMuE,EAAQl5B,GAAG+4B,EAAW/1C,IAIhC,OAFI2xC,EADM,IAANsE,EACMtE,EAAI51B,EAAgB,EAAI,GAE3B41B,GAAIx6E,QAAQ,MAAO6oC;kCAtEtC;IAaIk2C,EAAU,CACNlmD,EAAG,CACC,eACA,cACA,CAAC,UAAW,WACZ,UACA,WACA,YAEJnyB,EAAG,CACC,eACA,cACA,CAAC,UAAW,WACZ,WACA,WACA,YAEJ4pC,EAAG,CACC,cACA,aACA,CAAC,SAAU,UACX,WACA,UACA,WAEJD,EAAG,CACC,aACA,WACA,CAAC,QAAS,SACV,UACA,WACA,UAEJE,EAAG,CACC,aACA,WACA,CAAC,QAAS,SACV,UACA,UACA,UAEJN,EAAG,CACC,aACA,WACA,CAAC,QAAS,SACV,WACA,WACA,WAaRvB,EAAS,CACL,QACA,QACA,OACA,QACA,MACA,OACA,SACA,MACA,SACA,SACA,SACA,UA8DR,OA3DWiwC,EAAOznC,aAAa,QAAS,CACpCxI,OAAQA,EACRD,YAAaC,EACbyD,SAAU,sDAAsD7wC,MAAM,KACtE4wC,cAAe,wCAAwC5wC,MAAM,KAC7D2wC,YAAa,gBAAgB3wC,MAAM,KACnCq+E,oBAAoB,EACpBx1C,eAAgB,CACZ+K,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVY,cAAe,MACf/B,KAAM,SAAUnqC,GACZ,MAAO,MAAQA,GAEnBg8B,SAAU,SAAUmW,EAAMkB,EAAQyN,GAC9B,OAAI3O,EAAO,GACA,IAEA,KAGfzH,SAAU,CACNC,QAAS,wBACTC,QAAS,uBACTC,SAAU,uBACVC,QAAS,sBACTC,SAAU,uBACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,SACRC,KAAM,SACN7c,EAAGgmD,EAAU,KACblpC,GAAIkpC,EAAU,KACdn4E,EAAGm4E,EAAU,KACbjpC,GAAIipC,EAAU,KACdvuC,EAAGuuC,EAAU,KACbhpC,GAAIgpC,EAAU,KACdxuC,EAAGwuC,EAAU,KACb/oC,GAAI+oC,EAAU,KACdtuC,EAAGsuC,EAAU,KACb7oC,GAAI6oC,EAAU,KACd5uC,EAAG4uC,EAAU,KACb5oC,GAAI4oC,EAAU,MAElBl6B,WAAY,SAAU3pC,GAClB,OAAOA,EAAOhb,QAAQ,KAAM,MAEhCqxC,KAAM,CACFL,IAAK,EACLC,IAAK,MAvJK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCP5Bv0D,E,4MAAAA,EAKX,SAAUglF,GAqDf,OAjDWA,EAAOznC,aAAa,QAAS,CACpCxI,OAAQ,wEAAwEptC,MAC5E,KAEJmtC,YAAa,wEAAwEntC,MACjF,KAEJ6wC,SAAU,sDAAsD7wC,MAAM,KACtE4wC,cAAe,wCAAwC5wC,MAAM,KAC7D2wC,YAAa,gBAAgB3wC,MAAM,KACnCq+E,oBAAoB,EACpBx1C,eAAgB,CACZ+K,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVZ,SAAU,CACNC,QAAS,wBACTC,QAAS,sBACTC,SAAU,uBACVC,QAAS,sBACTC,SAAU,uBACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN7c,EAAG,OACH8c,GAAI,WACJjvC,EAAG,QACHkvC,GAAI,WACJtF,EAAG,OACHuF,GAAI,WACJxF,EAAG,MACHyF,GAAI,UACJvF,EAAG,MACHyF,GAAI,UACJ/F,EAAG,MACHgG,GAAI,YAER5E,KAAM,CACFL,IAAK,EACLC,IAAK,OArDK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCH5Bv0D,E,4MAAAA,EAKX,SAAUglF,GAgBE,SAAbC,EAAuB9rE,GACnB,OAAa,IAANA,EACD,EACM,IAANA,EACA,EACM,IAANA,EACA,EACW,GAAXA,EAAI,KAAYA,EAAI,KAAO,GAC3B,EACW,IAAXA,EAAI,IACJ,EACA,EAoDE,SAAZ+rE,EAAsBh5B,GAClB,OAAO,SAAUhd,EAAQ+b,EAAe5pC,EAAQmuC,GAC5C,IAAI21B,EAAIF,EAAW/1C,GACf2xC,EAAMuE,EAAQl5B,GAAG+4B,EAAW/1C,IAIhC,OAFI2xC,EADM,IAANsE,EACMtE,EAAI51B,EAAgB,EAAI,GAE3B41B,GAAIx6E,QAAQ,MAAO6oC;kCAlFtC;IAAIm2C,EAAY,CACRC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHngD,EAAG,KAePy/C,EAAU,CACNlmD,EAAG,CACC,eACA,cACA,CAAC,UAAW,WACZ,UACA,WACA,YAEJnyB,EAAG,CACC,eACA,cACA,CAAC,UAAW,WACZ,WACA,WACA,YAEJ4pC,EAAG,CACC,cACA,aACA,CAAC,SAAU,UACX,WACA,UACA,WAEJD,EAAG,CACC,aACA,WACA,CAAC,QAAS,SACV,UACA,WACA,UAEJE,EAAG,CACC,aACA,WACA,CAAC,QAAS,SACV,UACA,UACA,UAEJN,EAAG,CACC,aACA,WACA,CAAC,QAAS,SACV,WACA,WACA,WAaRvB,EAAS,CACL,QACA,SACA,OACA,QACA,OACA,QACA,QACA,QACA,SACA,SACA,SACA,UAqER,OAlEWiwC,EAAOznC,aAAa,QAAS,CACpCxI,OAAQA,EACRD,YAAaC,EACbyD,SAAU,sDAAsD7wC,MAAM,KACtE4wC,cAAe,wCAAwC5wC,MAAM,KAC7D2wC,YAAa,gBAAgB3wC,MAAM,KACnCq+E,oBAAoB,EACpBx1C,eAAgB,CACZ+K,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVY,cAAe,MACf/B,KAAM,SAAUnqC,GACZ,MAAO,MAAQA,GAEnBg8B,SAAU,SAAUmW,EAAMkB,EAAQyN,GAC9B,OAAI3O,EAAO,GACA,IAEA,KAGfzH,SAAU,CACNC,QAAS,wBACTC,QAAS,uBACTC,SAAU,uBACVC,QAAS,sBACTC,SAAU,uBACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,SACRC,KAAM,SACN7c,EAAGgmD,EAAU,KACblpC,GAAIkpC,EAAU,KACdn4E,EAAGm4E,EAAU,KACbjpC,GAAIipC,EAAU,KACdvuC,EAAGuuC,EAAU,KACbhpC,GAAIgpC,EAAU,KACdxuC,EAAGwuC,EAAU,KACb/oC,GAAI+oC,EAAU,KACdtuC,EAAGsuC,EAAU,KACb7oC,GAAI6oC,EAAU,KACd5uC,EAAG4uC,EAAU,KACb5oC,GAAI4oC,EAAU,MAElBpiC,SAAU,SAAUzhC,GAChB,OAAOA,EAAOhb,QAAQ,KAAM,MAEhC2kD,WAAY,SAAU3pC,GAClB,OAAOA,EACFhb,QAAQ,MAAO,SAAUoG,GACtB,OAAO44E,EAAU54E,KAEpBpG,QAAQ,KAAM,MAEvBqxC,KAAM,CACFL,IAAK,EACLC,IAAK,OA1KK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCF5Bv0D,E,4MAAAA,EAKX,SAAUglF,GAqDf,OAjDWA,EAAOznC,aAAa,QAAS,CACpCxI,OAAQ,wEAAwEptC,MAC5E,KAEJmtC,YAAa,wEAAwEntC,MACjF,KAEJ6wC,SAAU,sDAAsD7wC,MAAM,KACtE4wC,cAAe,wCAAwC5wC,MAAM,KAC7D2wC,YAAa,gBAAgB3wC,MAAM,KACnCq+E,oBAAoB,EACpBx1C,eAAgB,CACZ+K,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVZ,SAAU,CACNC,QAAS,wBACTC,QAAS,sBACTC,SAAU,uBACVC,QAAS,sBACTC,SAAU,uBACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN7c,EAAG,OACH8c,GAAI,WACJjvC,EAAG,QACHkvC,GAAI,WACJtF,EAAG,OACHuF,GAAI,WACJxF,EAAG,MACHyF,GAAI,UACJvF,EAAG,MACHyF,GAAI,UACJ/F,EAAG,MACHgG,GAAI,YAER5E,KAAM,CACFL,IAAK,EACLC,IAAK,MArDK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCJ5Bv0D,E,4MAAAA,EAKX,SAAUglF;kCAIf;IAAIK,EAAY,CACRC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHngD,EAAG,KAEPogD,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KA6Eb,OA1EWf,EAAOznC,aAAa,QAAS,CACpCxI,OAAQ,6EAA6EptC,MACjF,KAEJmtC,YAAa,6EAA6EntC,MACtF,KAEJ6wC,SAAU,sDAAsD7wC,MAAM,KACtE4wC,cAAe,wCAAwC5wC,MAAM,KAC7D2wC,YAAa,gBAAgB3wC,MAAM,KACnCq+E,oBAAoB,EACpBx1C,eAAgB,CACZ+K,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVY,cAAe,MACf/B,KAAM,SAAUnqC,GACZ,MAAO,MAAQA,GAEnBg8B,SAAU,SAAUmW,EAAMkB,EAAQyN,GAC9B,OAAI3O,EAAO,GACA,IAEA,KAGfzH,SAAU,CACNC,QAAS,wBACTC,QAAS,sBACTC,SAAU,uBACVC,QAAS,sBACTC,SAAU,uBACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN7c,EAAG,OACH8c,GAAI,WACJjvC,EAAG,QACHkvC,GAAI,WACJtF,EAAG,OACHuF,GAAI,WACJxF,EAAG,MACHyF,GAAI,UACJvF,EAAG,MACHyF,GAAI,UACJ/F,EAAG,MACHgG,GAAI,YAERwG,SAAU,SAAUzhC,GAChB,OAAOA,EACFhb,QAAQ,gBAAiB,SAAUoG,GAChC,OAAOs5E,EAAUt5E,KAEpBpG,QAAQ,KAAM,MAEvB2kD,WAAY,SAAU3pC,GAClB,OAAOA,EACFhb,QAAQ,MAAO,SAAUoG,GACtB,OAAO44E,EAAU54E,KAEpBpG,QAAQ,KAAM,MAEvBqxC,KAAM,CACFL,IAAK,EACLC,IAAK,MAvGK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCH5Bv0D,E,4MAAAA,EAKX,SAAUglF,GAqDf,OAjDWA,EAAOznC,aAAa,QAAS,CACpCxI,OAAQ,yEAAyEptC,MAC7E,KAEJmtC,YAAa,yEAAyEntC,MAClF,KAEJ6wC,SAAU,sDAAsD7wC,MAAM,KACtE4wC,cAAe,wCAAwC5wC,MAAM,KAC7D2wC,YAAa,gBAAgB3wC,MAAM,KACnCq+E,oBAAoB,EACpBx1C,eAAgB,CACZ+K,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVZ,SAAU,CACNC,QAAS,wBACTC,QAAS,sBACTC,SAAU,uBACVC,QAAS,sBACTC,SAAU,uBACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN7c,EAAG,OACH8c,GAAI,WACJjvC,EAAG,QACHkvC,GAAI,WACJtF,EAAG,OACHuF,GAAI,WACJxF,EAAG,MACHyF,GAAI,UACJvF,EAAG,MACHyF,GAAI,UACJ/F,EAAG,MACHgG,GAAI,YAER5E,KAAM,CACFL,IAAK,EACLC,IAAK,MArDK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCH5Bv0D,E,4MAAAA,EAKX,SAAUglF;kCAIf;IAAIiB,EAAW,CACXX,EAAG,QACHI,EAAG,QACHG,EAAG,QACHK,GAAI,QACJC,GAAI,QACJZ,EAAG,OACHK,EAAG,OACHQ,GAAI,OACJC,GAAI,OACJb,EAAG,QACHC,EAAG,QACHa,IAAK,QACLX,EAAG,OACHG,EAAG,QACHS,GAAI,QACJC,GAAI,QACJC,GAAI,QACJC,GAAI,SA8ER,OA3ES1B,EAAOznC,aAAa,KAAM,CAC/BxI,OAAQ,+EAA+EptC,MACnF,KAEJmtC,YAAa,kDAAkDntC,MAAM,KACrE6wC,SAAU,qEAAqE7wC,MAC3E,KAEJ4wC,cAAe,8BAA8B5wC,MAAM,KACnD2wC,YAAa,uBAAuB3wC,MAAM,KAC1Cq+E,oBAAoB,EACpBx1C,eAAgB,CACZ+K,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVZ,SAAU,CACNC,QAAS,kBACTC,QAAS,kBACTC,SAAU,+BACVC,QAAS,aACTC,SAAU,+BACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,WACRC,KAAM,WACN7c,EAAG,kBACH8c,GAAI,YACJjvC,EAAG,aACHkvC,GAAI,YACJtF,EAAG,WACHuF,GAAI,UACJxF,EAAG,UACHyF,GAAI,SACJvF,EAAG,SACHyF,GAAI,QACJ/F,EAAG,SACHgG,GAAI,SAERC,cAAe,0BACf/B,KAAM,SAAUnqC,GACZ,MAAO,mBAAmBhD,KAAKgD,IAEnCg8B,SAAU,SAAUmW,EAAMkB,EAAQyN,GAC9B,OAAI3O,EAAO,EACA,OACAA,EAAO,GACP,QACAA,EAAO,GACP,SAEA,SAGf5G,uBAAwB,wCACxB7L,QAAS,SAAUb,GACf,GAAe,IAAXA,EAEA,OAAOA,EAAS,QAEpB,IAAInlC,EAAImlC,EAAS,GAGjB,OAAOA,GAAU+2C,EAASl8E,IAAMk8E,EAFvB/2C,EAAS,IAAOnlC,IAEsBk8E,EAD7B,KAAV/2C,EAAgB,IAAM,QAGlCwI,KAAM,CACFL,IAAK,EACLC,IAAK,MApGK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCD5Bv0D,E,4MAAAA,EAKX,SAAUglF,GAYf,SAAS2B,EAAuBz3C,EAAQ+b,EAAel9C,GASnD,MAAY,MAARA,EACOk9C,EAAgB,UAAY,UACpB,MAARl9C,EACAk9C,EAAgB,UAAY,UAE5B/b,EAAS,KAtBFnrC,GAsB6BmrC,EArB3C03C,GADQC,EASC,CACT7qC,GAAIiP,EAAgB,yBAA2B,yBAC/ChP,GAAIgP,EAAgB,yBAA2B,yBAC/C/O,GAAI+O,EAAgB,yBAA2B,yBAC/C9O,GAAI,iBACJE,GAAI,uBACJC,GAAI,kBAOgCvuC,IArBvBpG,MAAM,KAChB5D,EAAM,IAAO,GAAKA,EAAM,KAAQ,GACjC6iF,EAAM,GACM,GAAZ7iF,EAAM,IAAWA,EAAM,IAAM,IAAMA,EAAM,IAAM,IAAmB,IAAbA,EAAM,KAC3D6iF,EAAM,GACNA,EAAM,IAgIhB,OA5GS5B,EAAOznC,aAAa,KAAM,CAC/BxI,OAAQ,CACJ5J,OAAQ,uGAAuGxjC,MAC3G,KAEJm/E,WAAY,qGAAqGn/E,MAC7G,MAGRmtC,YAAa,0DAA0DntC,MACnE,KAEJ6wC,SAAU,CACNrN,OAAQ,0DAA0DxjC,MAC9D,KAEJm/E,WAAY,0DAA0Dn/E,MAClE,KAEJkoD,SAAU,+CAEdtX,cAAe,uBAAuB5wC,MAAM,KAC5C2wC,YAAa,uBAAuB3wC,MAAM,KAC1C6oC,eAAgB,CACZ+K,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,iBACJC,IAAK,wBACLC,KAAM,+BAEVZ,SAAU,CACNC,QAAS,eACTC,QAAS,gBACTE,QAAS,eACTD,SAAU,WACN,MAAO,mBAEXE,SAAU,WACN,OAAQv3C,KAAK21C,OACT,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,0BACX,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,2BAGnB6B,SAAU,KAEdQ,aAAc,CACVC,OAAQ,UACRC,KAAM,UACN7c,EAAG,kBACHnyB,EAAG45E,EACH1qC,GAAI0qC,EACJhwC,EAAGgwC,EACHzqC,GAAIyqC,EACJjwC,EAAG,QACHyF,GAAIwqC,EACJ/vC,EAAG,QACHyF,GAAIsqC,EACJrwC,EAAG,MACHgG,GAAIqqC,GAERpqC,cAAe,yBACf/B,KAAM,SAAUnqC,GACZ,MAAO,iBAAiBhD,KAAKgD,IAEjCg8B,SAAU,SAAUmW,EAAMkB,EAAQyN,GAC9B,OAAI3O,EAAO,EACA,OACAA,EAAO,GACP,SACAA,EAAO,GACP,MAEA,UAGf5G,uBAAwB,mBACxB7L,QAAS,SAAUb,EAAQ0X,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,IACL,IAAK,IACD,OAAQ1X,EAAS,IAAO,GAAKA,EAAS,IAAO,GACzCA,EAAS,KAAQ,IACjBA,EAAS,KAAQ,GAEfA,EAAS,KADTA,EAAS,KAEnB,IAAK,IACD,OAAOA,EAAS,MACpB,QACI,OAAOA,IAGnBwI,KAAM,CACFL,IAAK,EACLC,IAAK,MA1IK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCL5Bv0D,E,4MAAAA,EAKX,SAAUglF,GAsFf,OAlFSA,EAAOznC,aAAa,KAAM,CAC/BxI,OAAQ,oFAAoFptC,MACxF,KAEJmtC,YAAa,kDAAkDntC,MAAM,KACrE6wC,SAAU,yDAAyD7wC,MAC/D,KAEJ4wC,cAAe,8BAA8B5wC,MAAM,KACnD2wC,YAAa,uBAAuB3wC,MAAM,KAC1C6oC,eAAgB,CACZ+K,GAAI,OACJD,IAAK,UACLE,EAAG,YACHC,GAAI,cACJC,IAAK,mBACLC,KAAM,0BAEVZ,SAAU,CACNC,QAAS,cACTC,QAAS,cACTC,SAAU,cACVC,QAAS,eACTC,SAAU,WACN,OAAQv3C,KAAK21C,OACT,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,yBACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,0BAGnB6B,SAAU,KAEdQ,aAAc,CACVC,OAAQ,UACRC,KAAM,WACN7c,EAAG,kBACH8c,GAAI,aACJjvC,EAAG,SACHkvC,GAAI,YACJtF,EAAG,MACHuF,GAAI,UACJxF,EAAG,MACHyF,GAAI,UACJ7R,EAAG,UACH8R,GAAI,aACJxF,EAAG,QACHyF,GAAI,YACJ/F,EAAG,SACHgG,GAAI,aAERV,uBAAwB,8BACxB7L,QAAS,SAAUb,GACf,IAAI63C,EAAY73C,EAAS,GACrB83C,EAAc93C,EAAS,IAC3B,OAAe,IAAXA,EACOA,EAAS,MACO,GAAhB83C,EACA93C,EAAS,MACK,GAAd83C,GAAoBA,EAAc,GAClC93C,EAAS,MACK,GAAd63C,EACA73C,EAAS,MACK,GAAd63C,EACA73C,EAAS,MACK,GAAd63C,GAAiC,GAAdA,EACnB73C,EAAS,MAETA,EAAS,OAGxBwI,KAAM,CACFL,IAAK,EACLC,IAAK,MAtFK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCH5Bv0D,E,4MAAAA,EAKX,SAAUglF,GAkDf,OA9CSA,EAAOznC,aAAa,KAAM,CAC/BxI,OAAQ,8IAA8IptC,MAClJ,KAEJmtC,YAAa,iDAAiDntC,MAAM,KACpE6wC,SAAU,+CAA+C7wC,MAAM,KAC/D4wC,cAAe,8BAA8B5wC,MAAM,KACnD2wC,YAAa,uBAAuB3wC,MAAM,KAC1C6oC,eAAgB,CACZ+K,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,2BACJC,IAAK,wCACLC,KAAM,8CAEVZ,SAAU,CACNC,QAAS,eACTC,QAAS,iBACTC,SAAU,qBACVC,QAAS,iBACTC,SAAU,yBACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,UACRC,KAAM,aACN7c,EAAG,kBACH8c,GAAI,aACJjvC,EAAG,eACHkvC,GAAI,YACJtF,EAAG,aACHuF,GAAI,UACJxF,EAAG,aACHyF,GAAI,UACJvF,EAAG,aACHyF,GAAI,UACJ/F,EAAG,YACHgG,GAAI,UAER5E,KAAM,CACFL,IAAK,EACLC,IAAK,MAlDK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCH5Bv0D,E,4MAAAA,EAKX,SAAUglF;kCAIf;IAAIK,EAAY,CACRC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHngD,EAAG,KAEPogD,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KA2Fb,OAxFSf,EAAOznC,aAAa,KAAM,CAC/BxI,OAAQ,0FAA0FptC,MAC9F,KAEJmtC,YAAa,mEAAmEntC,MAC5E,KAEJ6wC,SAAU,4DAA4D7wC,MAClE,KAEJ4wC,cAAe,uCAAuC5wC,MAAM,KAC5D2wC,YAAa,kCAAkC3wC,MAAM,KACrD6oC,eAAgB,CACZ+K,GAAI,aACJD,IAAK,gBACLE,EAAG,aACHC,GAAI,cACJC,IAAK,0BACLC,KAAM,iCAEVZ,SAAU,CACNC,QAAS,UACTC,QAAS,gBACTC,SAAU,WACVC,QAAS,aACTC,SAAU,gBACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,SACRC,KAAM,SACN7c,EAAG,eACH8c,GAAI,aACJjvC,EAAG,WACHkvC,GAAI,WACJtF,EAAG,WACHuF,GAAI,WACJxF,EAAG,SACHyF,GAAI,SACJvF,EAAG,SACHyF,GAAI,SACJ/F,EAAG,SACHgG,GAAI,UAERwG,SAAU,SAAUzhC,GAChB,OAAOA,EAAOhb,QAAQ,gBAAiB,SAAUoG,GAC7C,OAAOs5E,EAAUt5E,MAGzBu+C,WAAY,SAAU3pC,GAClB,OAAOA,EAAOhb,QAAQ,MAAO,SAAUoG,GACnC,OAAO44E,EAAU54E,MAGzB8vC,cAAe,2BACfkG,aAAc,SAAUD,EAAMnW,GAI1B,OAHa,KAATmW,IACAA,EAAO,GAGO,QAAbnW,GAA8B,GAARmW,GACT,UAAbnW,GAAwBmW,EAAO,GACnB,UAAbnW,EAEOmW,EAAO,GAEPA,GAGfnW,SAAU,SAAUmW,EAAMkB,EAAQyN,GAC9B,OAAI3O,EAAO,EACA,MACAA,EAAO,GACP,OACAA,EAAO,GACP,QACAA,EAAO,GACP,QAEA,OAGf9K,KAAM,CACFL,IAAK,EACLC,IAAK,MArHK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCH5Bv0D,E,4MAAAA,EAKX,SAAUglF;kCAIf;IAAIK,EAAY,CACRC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHngD,EAAG,KAEPogD,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAqGb,OAlGWf,EAAOznC,aAAa,QAAS,CACpCxI,OAAQ,0FAA0FptC,MAC9F,KAEJmtC,YAAa,mEAAmEntC,MAC5E,KAEJ6wC,SAAU,4DAA4D7wC,MAClE,KAEJ4wC,cAAe,uCAAuC5wC,MAAM,KAC5D2wC,YAAa,kCAAkC3wC,MAAM,KACrD6oC,eAAgB,CACZ+K,GAAI,aACJD,IAAK,gBACLE,EAAG,aACHC,GAAI,cACJC,IAAK,0BACLC,KAAM,iCAEVZ,SAAU,CACNC,QAAS,UACTC,QAAS,gBACTC,SAAU,WACVC,QAAS,aACTC,SAAU,gBACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,SACRC,KAAM,SACN7c,EAAG,eACH8c,GAAI,aACJjvC,EAAG,WACHkvC,GAAI,WACJtF,EAAG,WACHuF,GAAI,WACJxF,EAAG,SACHyF,GAAI,SACJvF,EAAG,SACHyF,GAAI,SACJ/F,EAAG,SACHgG,GAAI,UAERwG,SAAU,SAAUzhC,GAChB,OAAOA,EAAOhb,QAAQ,gBAAiB,SAAUoG,GAC7C,OAAOs5E,EAAUt5E,MAGzBu+C,WAAY,SAAU3pC,GAClB,OAAOA,EAAOhb,QAAQ,MAAO,SAAUoG,GACnC,OAAO44E,EAAU54E,MAIzB8vC,cAAe,uCACfkG,aAAc,SAAUD,EAAMnW,GAI1B,OAHa,KAATmW,IACAA,EAAO,GAEM,QAAbnW,EACOmW,EAAO,EAAIA,EAAOA,EAAO,GACZ,QAAbnW,GAEa,SAAbA,EADAmW,EAGa,UAAbnW,EACQ,GAARmW,EAAYA,EAAOA,EAAO,GACb,UAAbnW,GAEa,YAAbA,EADAmW,EAAO,QACX,GAKXnW,SAAU,SAAUmW,EAAMkB,EAAQyN,GAC9B,OAAI3O,EAAO,EACA,MACAA,EAAO,EACP,MACAA,EAAO,GACP,OACAA,EAAO,GACP,QACAA,EAAO,GACP,QACAA,EAAO,GACP,UAEA,OAGf9K,KAAM,CACFL,IAAK,EACLC,IAAK,MA/HK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCH5Bv0D,E,4MAAAA,EAKX,SAAUglF;kCAIf;IAAIK,EAAY,CACRC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHngD,EAAG,KAEPogD,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KA+Fb,OA5FSf,EAAOznC,aAAa,KAAM,CAC/BxI,OAAQ,qJAAqJptC,MACzJ,KAEJmtC,YAAa,iEAAiEntC,MAC1E,KAEJqtC,iBAAkB,gBAClBiyC,kBAAkB,EAClBzuC,SAAU,gFAAgF7wC,MACtF,KAEJ4wC,cAAe,oDAAoD5wC,MAC/D,KAEJ2wC,YAAa,6BAA6B3wC,MAAM,KAChD6oC,eAAgB,CACZ+K,GAAI,SACJD,IAAK,YACLE,EAAG,aACHC,GAAI,cACJC,IAAK,sBACLC,KAAM,6BAEVZ,SAAU,CACNC,QAAS,cACTC,QAAS,cACTC,SAAU,wBACVC,QAAS,YACTC,SAAU,4BACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,QACRC,KAAM,WACN7c,EAAG,QACH8c,GAAI,YACJjvC,EAAG,aACHkvC,GAAI,WACJtF,EAAG,cACHuF,GAAI,YACJxF,EAAG,WACHyF,GAAI,UACJvF,EAAG,YACHyF,GAAI,UACJ/F,EAAG,UACHgG,GAAI,SAERwG,SAAU,SAAUzhC,GAChB,OAAOA,EAAOhb,QAAQ,gBAAiB,SAAUoG,GAC7C,OAAOs5E,EAAUt5E,MAGzBu+C,WAAY,SAAU3pC,GAClB,OAAOA,EAAOhb,QAAQ,MAAO,SAAUoG,GACnC,OAAO44E,EAAU54E,MAGzB8vC,cAAe,wCACfkG,aAAc,SAAUD,EAAMnW,GAI1B,OAHa,KAATmW,IACAA,EAAO,GAGO,WAAbnW,GAAiC,GAARmW,GACZ,YAAbnW,GAA0BmW,EAAO,GACrB,YAAbnW,EAEOmW,EAAO,GAEPA,GAGfnW,SAAU,SAAUmW,EAAMkB,EAAQyN,GAC9B,OAAI3O,EAAO,EACA,SACAA,EAAO,GACP,UACAA,EAAO,GACP,UACAA,EAAO,GACP,UAEA,UAGf9K,KAAM,CACFL,IAAK,EACLC,IAAK,MAzHK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCH5Bv0D,E,4MAAAA,EAKX,SAAUglF;kCAIf;SAASkC,EAAyBh4C,EAAQ+b,EAAel9C,GAMrD,OAAOmhC,EAAS,KAoBFzsC,EAzBD,CACTw5C,GAAI,WACJI,GAAI,MACJF,GAAI,UAE8BpuC,GAqBvB,IArB6BmhC,EAwBrCzsC,EAEX,SAAsBA,GAClB,IAAI0kF,EAAgB,CAChBp6E,EAAG,IACH/C,EAAG,IACH0sC,EAAG,KAEP,YAAsCzwC,IAAlCkhF,EAAc1kF,EAAKyuD,OAAO,IAGvBi2B,EAAc1kF,EAAKyuD,OAAO,IAAMzuD,EAAK2kF,UAAU,GAF3C3kF,EAXA4kF,CAAa5kF,IAgB5B,IAAIyyC,EAAc,CACV,QACA,cACA,QACA,QACA,QACA,cACA,QACA,QACA,QACA,QACA,OACA,SAEJD,EAAc,6IAqBdqyC,EAAmB,CACf,OACA,OACA,eACA,QACA,OACA,OACA,QA0ER,OAvEStC,EAAOznC,aAAa,KAAM,CAC/BxI,OAAQ,gFAAgFptC,MACpF,KAEJmtC,YAAa,mDAAmDntC,MAAM,KACtE6wC,SAAU,6CAA6C7wC,MAAM,KAC7D4wC,cAAe,8BAA8B5wC,MAAM,KACnD2wC,YAAa,wBAAwB3wC,MAAM,KAC3CixC,cAAe0uC,EACfC,kBArCoB,CAChB,QACA,QACA,WACA,iBACA,SACA,WACA,YA+BJC,mBA7BqB,CACjB,QACA,QACA,QACA,QACA,QACA,QACA,SAuBJF,iBAAkBA,EAElBryC,YAAaA,EACbD,iBAAkBC,EAClBwyC,kBA7CoB,wFA8CpBC,uBA7CyB,2DA8CzBxyC,YAAaA,EACbyyC,gBAAiBzyC,EACjB0yC,iBAAkB1yC,EAElB1E,eAAgB,CACZ+K,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,sBACJC,IAAK,4BACLC,KAAM,mCAEVZ,SAAU,CACNC,QAAS,gBACTC,QAAS,qBACTC,SAAU,eACVC,QAAS,gBACTC,SAAU,qBACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,YACRC,KAAM,SACN7c,EAAG,wBACH8c,GAAI,YACJjvC,EAAG,cACHkvC,GAAIirC,EACJvwC,EAAG,SACHuF,GAAI,SACJxF,EAAG,YACHyF,GAAI+qC,EACJtwC,EAAG,SACHyF,GAAI6qC,EACJ5wC,EAAG,WACHgG,GApIR,SAAiCpN,GAC7B,OAWJ,SAAS24C,EAAW34C,GAChB,GAAa,EAATA,EACA,OAAO24C,EAAW34C,EAAS,IAE/B,OAAOA,EAfC24C,CAAW34C,IACf,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,OAAOA,EAAS,SACpB,QACI,OAAOA,EAAS,YA6HxB0M,uBAAwB,kBACxB7L,QAAS,SAAUb,GAEf,OAAOA,GADiB,IAAXA,EAAe,KAAO,QAGvCwI,KAAM,CACFL,IAAK,EACLC,IAAK,GAETiF,cAAe,YACf/B,KAAM,SAAUhiC,GACZ,MAAiB,SAAVA,GAEX6zB,SAAU,SAAUmW,EAAMkB,EAAQyN,GAC9B,OAAO3O,EAAO,GAAK,OAAS,WApKlB,WAAnB,EAAOnY,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCF5Bv0D,E,4MAAAA,EAKX,SAAUglF;kCAIf;SAAS8C,EAAU54C,EAAQ+b,EAAel9C,GACtC,IAAI8E,EAASq8B,EAAS,IACtB,OAAQnhC,GACJ,IAAK,KAQD,OANI8E,GADW,IAAXq8B,EACU,UACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,UAEA,UAGlB,IAAK,IACD,OAAO+b,EAAgB,eAAiB,eAC5C,IAAK,KAQD,OANIp4C,GADW,IAAXq8B,IAEkB,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,GAC7B,SAFA,SAOlB,IAAK,IACD,OAAO+b,EAAgB,YAAc,cACzC,IAAK,KAQD,OANIp4C,GADW,IAAXq8B,EACU,MACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,OAEA,OAGlB,IAAK,KAMD,OAJIr8B,GADW,IAAXq8B,EACU,MAEA,OAGlB,IAAK,KAQD,OANIr8B,GADW,IAAXq8B,EACU,SACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,UAEA,UAGlB,IAAK,KAQD,OANIr8B,GADW,IAAXq8B,IAEkB,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,GAC7B,SAFA,UA2F1B,OAjFS81C,EAAOznC,aAAa,KAAM,CAC/BxI,OAAQ,qFAAqFptC,MACzF,KAEJmtC,YAAa,8DAA8DntC,MACvE,KAEJs/E,kBAAkB,EAClBzuC,SAAU,4DAA4D7wC,MAClE,KAEJ4wC,cAAe,qCAAqC5wC,MAAM,KAC1D2wC,YAAa,uBAAuB3wC,MAAM,KAC1Cq+E,oBAAoB,EACpBx1C,eAAgB,CACZ+K,GAAI,OACJD,IAAK,UACLE,EAAG,aACHC,GAAI,eACJC,IAAK,oBACLC,KAAM,2BAEVZ,SAAU,CACNC,QAAS,eACTC,QAAS,eACTC,SAAU,WACN,OAAQr3C,KAAK21C,OACT,KAAK,EACD,MAAO,wBACX,KAAK,EACD,MAAO,uBACX,KAAK,EACD,MAAO,sBACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,oBAGnB2B,QAAS,eACTC,SAAU,WACN,OAAQv3C,KAAK21C,OACT,KAAK,EACL,KAAK,EACD,MAAO,uBACX,KAAK,EACD,MAAO,2BACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,yBAGnB6B,SAAU,KAEdQ,aAAc,CACVC,OAAQ,QACRC,KAAM,WACN7c,EAAG,cACH8c,GAAI8rC,EACJ/6E,EAAG+6E,EACH7rC,GAAI6rC,EACJnxC,EAAGmxC,EACH5rC,GAAI4rC,EACJpxC,EAAG,MACHyF,GAAI2rC,EACJlxC,EAAG,SACHyF,GAAIyrC,EACJxxC,EAAG,SACHgG,GAAIwrC,GAERlsC,uBAAwB,YACxB7L,QAAS,MACT2H,KAAM,CACFL,IAAK,EACLC,IAAK,MAnJK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCJ5Bv0D,E,4MAAAA,EAKX,SAAUglF,GAgGf,OA5FSA,EAAOznC,aAAa,KAAM,CAC/BxI,OAAQ,CACJ+xC,WAAY,oFAAoFn/E,MAC5F,KAEJwjC,OAAQ,qHAAqHxjC,MACzH,KAEJkoD,SAAU,mBAEd/a,YAAa,8DAA8DntC,MACvE,KAEJs/E,kBAAkB,EAClBzuC,SAAU,8DAA8D7wC,MACpE,KAEJ4wC,cAAe,8BAA8B5wC,MAAM,KACnD2wC,YAAa,uBAAuB3wC,MAAM,KAC1Cq+E,oBAAoB,EACpBx1C,eAAgB,CACZ+K,GAAI,OACJD,IAAK,UACLE,EAAG,aACHC,GAAI,mBACJssC,GAAI,aACJrsC,IAAK,gCACLssC,IAAK,mBACLrsC,KAAM,qCACNssC,KAAM,wBAEVltC,SAAU,CACNC,QAAS,WACL,MAAO,YAA+B,IAAjBn3C,KAAKm2C,QAAgB,MAAQ,MAAQ,QAE9DiB,QAAS,WACL,MAAO,YAA+B,IAAjBp3C,KAAKm2C,QAAgB,MAAQ,MAAQ,QAE9DkB,SAAU,WACN,MAAO,YAA+B,IAAjBr3C,KAAKm2C,QAAgB,MAAQ,MAAQ,QAE9DmB,QAAS,WACL,MAAO,YAA+B,IAAjBt3C,KAAKm2C,QAAgB,MAAQ,MAAQ,QAE9DoB,SAAU,WACN,MACI,wBACkB,IAAjBv3C,KAAKm2C,QAAgB,MAAQ,MAC9B,QAGRqB,SAAU,KAEdQ,aAAc,CACVC,OAAQ,YACRC,KAAM,QACN7c,EAAG,aACH8c,GAAI,YACJjvC,EAAG,WACHkvC,GAAI,YACJtF,EAAG,WACHuF,GAAI,WACJxF,EAAG,SACHyF,GAAI,UACJvF,EAAG,SACHyF,GAAI,WACJ/F,EAAG,SACHgG,GAAI,WAERV,uBAAwB,qBACxB7L,QAAS,SAAUb,EAAQ0X,GAcvB,OAAO1X,GAHQ,MAAX0X,GAA6B,MAAXA,EATP,IAAX1X,EACM,IACW,IAAXA,EACA,IACW,IAAXA,EACA,IACW,IAAXA,EACA,IACA,IAEG,MAIjBwI,KAAM,CACFL,IAAK,EACLC,IAAK,MAhGK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCH5Bv0D,E,4MAAAA,EAKX,SAAUglF;kCAIf;IAAIjwC,EAAS,oFAAoFptC,MACzF,KAEJmtC,EAAc,kDAAkDntC,MAAM,KACtEutC,EAAc,CACV,QACA,QACA,QACA,QACA,QACA,yBACA,4BACA,QACA,QACA,QACA,QACA,SAIJD,EAAc,wJAElB,SAASizC,EAAO/uE,GACZ,OAAW,EAAJA,GAASA,EAAI,GAAoB,MAAZA,EAAI,IAEpC,SAAS2uE,EAAU54C,EAAQ+b,EAAel9C,EAAKyhD,GAC3C,IAAI38C,EAASq8B,EAAS,IACtB,OAAQnhC,GACJ,IAAK,IACD,OAAOk9C,GAAiBuE,EAAW,aAAe,gBACtD,IAAK,KACD,OAAIvE,GAAiBuE,EACV38C,GAAUq1E,EAAOh5C,GAAU,UAAY,UAEvCr8B,EAAS,YAExB,IAAK,IACD,OAAOo4C,EAAgB,SAAWuE,EAAW,SAAW,UAC5D,IAAK,KACD,OAAIvE,GAAiBuE,EACV38C,GAAUq1E,EAAOh5C,GAAU,SAAW,SAEtCr8B,EAAS,WAExB,IAAK,IACD,OAAOo4C,EAAgB,SAAWuE,EAAW,SAAW,UAC5D,IAAK,KACD,OAAIvE,GAAiBuE,EACV38C,GAAUq1E,EAAOh5C,GAAU,SAAW,SAEtCr8B,EAAS,WAExB,IAAK,IACD,OAAOo4C,GAAiBuE,EAAW,MAAQ,OAC/C,IAAK,KACD,OAAIvE,GAAiBuE,EACV38C,GAAUq1E,EAAOh5C,GAAU,MAAQ,OAEnCr8B,EAAS,MAExB,IAAK,IACD,OAAOo4C,GAAiBuE,EAAW,QAAU,UACjD,IAAK,KACD,OAAIvE,GAAiBuE,EACV38C,GAAUq1E,EAAOh5C,GAAU,SAAW,UAEtCr8B,EAAS,SAExB,IAAK,IACD,OAAOo4C,GAAiBuE,EAAW,MAAQ,QAC/C,IAAK,KACD,OAAIvE,GAAiBuE,EACV38C,GAAUq1E,EAAOh5C,GAAU,OAAS,OAEpCr8B,EAAS,QA4FhC,OAvFSmyE,EAAOznC,aAAa,KAAM,CAC/BxI,OAAQA,EACRD,YAAaA,EACbG,YAAaA,EACbD,iBAAkBC,EAGlBwyC,kBAAmB,uKACnBC,uBAAwB,sDACxBxyC,YAAaA,EACbyyC,gBAAiBzyC,EACjB0yC,iBAAkB1yC,EAClBsD,SAAU,mDAAmD7wC,MAAM,KACnE4wC,cAAe,uBAAuB5wC,MAAM,KAC5C2wC,YAAa,uBAAuB3wC,MAAM,KAC1C6oC,eAAgB,CACZ+K,GAAI,OACJD,IAAK,UACLE,EAAG,aACHC,GAAI,eACJC,IAAK,oBACLC,KAAM,yBACNphC,EAAG,cAEPwgC,SAAU,CACNC,QAAS,cACTC,QAAS,eACTC,SAAU,WACN,OAAQr3C,KAAK21C,OACT,KAAK,EACD,MAAO,kBACX,KAAK,EACL,KAAK,EACD,MAAO,kBACX,KAAK,EACD,MAAO,mBACX,KAAK,EACD,MAAO,oBACX,KAAK,EACD,MAAO,iBACX,KAAK,EACD,MAAO,oBAGnB2B,QAAS,eACTC,SAAU,WACN,OAAQv3C,KAAK21C,OACT,KAAK,EACD,MAAO,wBACX,KAAK,EACL,KAAK,EACD,MAAO,uBACX,KAAK,EACD,MAAO,wBACX,KAAK,EACL,KAAK,EACD,MAAO,uBACX,KAAK,EACD,MAAO,0BAGnB6B,SAAU,KAEdQ,aAAc,CACVC,OAAQ,QACRC,KAAM,UACN7c,EAAG4oD,EACH9rC,GAAI8rC,EACJ/6E,EAAG+6E,EACH7rC,GAAI6rC,EACJnxC,EAAGmxC,EACH5rC,GAAI4rC,EACJpxC,EAAGoxC,EACH3rC,GAAI2rC,EACJlxC,EAAGkxC,EACHzrC,GAAIyrC,EACJxxC,EAAGwxC,EACHxrC,GAAIwrC,GAERlsC,uBAAwB,YACxB7L,QAAS,MACT2H,KAAM,CACFL,IAAK,EACLC,IAAK,MA1KK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCH5Bv0D,E,4MAAAA,EAKX,SAAUglF,GA6Df,OAzDSA,EAAOznC,aAAa,KAAM,CAC/BxI,OAAQ,gEAAgEptC,MACpE,KAEJmtC,YAAa,kDAAkDntC,MAAM,KACrE6wC,SAAU,oEAAoE7wC,MAC1E,KAEJ4wC,cAAe,6BAA6B5wC,MAAM,KAClD2wC,YAAa,uBAAuB3wC,MAAM,KAC1C6oC,eAAgB,CACZ+K,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,sCACJC,IAAK,6CACLC,KAAM,oDAEVZ,SAAU,CACNC,QAAS,sBACTC,QAAS,sBACTE,QAAS,sBACTD,SAAU,4BACVE,SAAU,4BACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,SAAU1L,GAMd,OAAOA,GALK,UAAUtjC,KAAKsjC,GACrB,MACA,QAAQtjC,KAAKsjC,GACb,MACA,QAGV2L,KAAM,YACN7c,EAAG,iBACH8c,GAAI,aACJjvC,EAAG,YACHkvC,GAAI,WACJtF,EAAG,YACHuF,GAAI,WACJxF,EAAG,UACHyF,GAAI,SACJvF,EAAG,WACHyF,GAAI,UACJ/F,EAAG,UACHgG,GAAI,UAERV,uBAAwB,cACxB7L,QAAS,SACT2H,KAAM,CACFL,IAAK,EACLC,IAAK,MA7DK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCF5Bv0D,E,4MAAAA,EAKX,SAAUglF,GA+Ff,OA3FSA,EAAOznC,aAAa,KAAM,CAC/BxI,OAAQ,yFAAyFptC,MAC7F,KAEJmtC,YAAa,qDAAqDntC,MAC9D,KAEJ6wC,SAAU,+EAA+E7wC,MACrF,KAEJ4wC,cAAe,+BAA+B5wC,MAAM,KACpD2wC,YAAa,uBAAuB3wC,MAAM,KAC1Cq+E,oBAAoB,EAEpBx1C,eAAgB,CACZ+K,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVZ,SAAU,CACNC,QAAS,iBACTC,QAAS,gBACTC,SAAU,eACVC,QAAS,eACTC,SAAU,wBACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,UACRC,KAAM,WACN7c,EAAG,mBACH8c,GAAI,YACJjvC,EAAG,QACHkvC,GAAI,WACJtF,EAAG,MACHuF,GAAI,SACJxF,EAAG,UACHyF,GAAI,aACJvF,EAAG,MACHyF,GAAI,SACJ/F,EAAG,WACHgG,GAAI,cAERV,uBAAwB,mCAExB7L,QAAS,SAAUb,GACf,IACIkB,EAAS,GAiCb,OATQ,GAzBAlB,EA2BAkB,EADM,KA1BNlB,GA0BkB,KA1BlBA,GA0B8B,KA1B9BA,GA0B0C,KA1B1CA,GA0BsD,MA1BtDA,EA2BS,MAEA,MAEF,EA/BPA,IAgCJkB,EA9BS,CACL,GACA,KACA,KACA,MACA,MACA,KACA,KACA,KACA,MACA,MACA,MACA,KACA,MACA,KACA,KACA,MACA,KACA,KACA,MACA,KACA,OAvBAlB,IAkCDA,EAASkB,GAEpBsH,KAAM,CACFL,IAAK,EACLC,IAAK,MA/FK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCJ5Bv0D,E,4MAAAA,EAKX,SAAUglF,GAoDf,OAhDSA,EAAOznC,aAAa,KAAM,CAC/BxI,OAAQ,sFAAsFptC,MAC1F,KAEJmtC,YAAa,kDAAkDntC,MAAM,KACrE6wC,SAAU,qDAAqD7wC,MAAM,KACrE4wC,cAAe,8BAA8B5wC,MAAM,KACnD2wC,YAAa,uBAAuB3wC,MAAM,KAC1C6oC,eAAgB,CACZ+K,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,eACJC,IAAK,qBACLC,KAAM,sCAEVZ,SAAU,CACNC,QAAS,iBACTC,QAAS,oBACTC,SAAU,mBACVC,QAAS,iBACTC,SAAU,qBACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,QACRC,KAAM,WACN7c,EAAG,cACH8c,GAAI,cACJjvC,EAAG,WACHkvC,GAAI,cACJtF,EAAG,UACHuF,GAAI,WACJxF,EAAG,SACHyF,GAAI,UACJvF,EAAG,WACHyF,GAAI,aACJ/F,EAAG,QACHgG,GAAI,SAERV,uBAAwB,YACxB7L,QAAS,MACT2H,KAAM,CACFL,IAAK,EACLC,IAAK,MApDK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCD5Bv0D,E,4MAAAA,EAKX,SAAUglF;kCAIf;SAASmD,EAAoBj5C,EAAQ+b,EAAel9C,EAAKyhD,GACjDrkB,EAAS,CACTp+B,EAAG,CAAC,cAAe,gBACnB4pC,EAAG,CAAC,cAAe,gBACnBD,EAAG,CAAC,UAAW,aACfyF,GAAI,CAACjN,EAAS,QAASA,EAAS,UAChC5E,EAAG,CAAC,aAAc,eAClBsM,EAAG,CAAC,YAAa,eACjByF,GAAI,CAACnN,EAAS,UAAWA,EAAS,YAClCoH,EAAG,CAAC,WAAY,cAChBgG,GAAI,CAACpN,EAAS,SAAUA,EAAS,YAErC,OAAO+b,EAAgB9f,EAAOp9B,GAAK,GAAKo9B,EAAOp9B,GAAK,GA2DxD,OAxDSi3E,EAAOznC,aAAa,KAAM,CAC/BxI,OAAQ,qFAAqFptC,MACzF,KAEJmtC,YAAa,6DAA6DntC,MACtE,KAEJs/E,kBAAkB,EAClBzuC,SAAU,8DAA8D7wC,MACpE,KAEJ4wC,cAAe,8BAA8B5wC,MAAM,KACnD2wC,YAAa,uBAAuB3wC,MAAM,KAC1Cq+E,oBAAoB,EACpBx1C,eAAgB,CACZ+K,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,eACJC,IAAK,qBACLC,KAAM,4BAEVZ,SAAU,CACNC,QAAS,sBACTK,SAAU,IACVJ,QAAS,uBACTC,SAAU,qBACVC,QAAS,wBACTC,SAAU,gCAEdS,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN7c,EAAG,oBACH8c,GAAI,cACJjvC,EAAGo7E,EACHlsC,GAAI,aACJtF,EAAGwxC,EACHjsC,GAAI,aACJxF,EAAGyxC,EACHhsC,GAAIgsC,EACJ79C,EAAG69C,EACH/rC,GAAI,YACJxF,EAAGuxC,EACH9rC,GAAI8rC,EACJ7xC,EAAG6xC,EACH7rC,GAAI6rC,GAERvsC,uBAAwB,YACxB7L,QAAS,MACT2H,KAAM,CACFL,IAAK,EACLC,IAAK,MA3EK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCF5Bv0D,E,4MAAAA,EAKX,SAAUglF;kCAIf;SAASmD,EAAoBj5C,EAAQ+b,EAAel9C,EAAKyhD,GACjDrkB,EAAS,CACTp+B,EAAG,CAAC,cAAe,gBACnB4pC,EAAG,CAAC,cAAe,gBACnBD,EAAG,CAAC,UAAW,aACfyF,GAAI,CAACjN,EAAS,QAASA,EAAS,UAChC5E,EAAG,CAAC,aAAc,eAClBsM,EAAG,CAAC,YAAa,eACjByF,GAAI,CAACnN,EAAS,UAAWA,EAAS,YAClCoH,EAAG,CAAC,WAAY,cAChBgG,GAAI,CAACpN,EAAS,SAAUA,EAAS,YAErC,OAAO+b,EAAgB9f,EAAOp9B,GAAK,GAAKo9B,EAAOp9B,GAAK,GA2DxD,OAxDWi3E,EAAOznC,aAAa,QAAS,CACpCxI,OAAQ,qFAAqFptC,MACzF,KAEJmtC,YAAa,6DAA6DntC,MACtE,KAEJs/E,kBAAkB,EAClBzuC,SAAU,8DAA8D7wC,MACpE,KAEJ4wC,cAAe,8BAA8B5wC,MAAM,KACnD2wC,YAAa,uBAAuB3wC,MAAM,KAC1Cq+E,oBAAoB,EACpBx1C,eAAgB,CACZ+K,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,eACJC,IAAK,qBACLC,KAAM,4BAEVZ,SAAU,CACNC,QAAS,sBACTK,SAAU,IACVJ,QAAS,uBACTC,SAAU,qBACVC,QAAS,wBACTC,SAAU,gCAEdS,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN7c,EAAG,oBACH8c,GAAI,cACJjvC,EAAGo7E,EACHlsC,GAAI,aACJtF,EAAGwxC,EACHjsC,GAAI,aACJxF,EAAGyxC,EACHhsC,GAAIgsC,EACJ79C,EAAG69C,EACH/rC,GAAI,YACJxF,EAAGuxC,EACH9rC,GAAI8rC,EACJ7xC,EAAG6xC,EACH7rC,GAAI6rC,GAERvsC,uBAAwB,YACxB7L,QAAS,MACT2H,KAAM,CACFL,IAAK,EACLC,IAAK,MA3EK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCN5Bv0D,E,4MAAAA,EAKX,SAAUglF;kCAIf;SAASmD,EAAoBj5C,EAAQ+b,EAAel9C,EAAKyhD,GACjDrkB,EAAS,CACTp+B,EAAG,CAAC,cAAe,gBACnB4pC,EAAG,CAAC,cAAe,gBACnBD,EAAG,CAAC,UAAW,aACfyF,GAAI,CAACjN,EAAS,QAASA,EAAS,UAChC5E,EAAG,CAAC,aAAc,eAClBsM,EAAG,CAAC,YAAa,eACjByF,GAAI,CAACnN,EAAS,UAAWA,EAAS,YAClCoH,EAAG,CAAC,WAAY,cAChBgG,GAAI,CAACpN,EAAS,SAAUA,EAAS,YAErC,OAAO+b,EAAgB9f,EAAOp9B,GAAK,GAAKo9B,EAAOp9B,GAAK,GA2DxD,OAxDWi3E,EAAOznC,aAAa,QAAS,CACpCxI,OAAQ,qFAAqFptC,MACzF,KAEJmtC,YAAa,6DAA6DntC,MACtE,KAEJs/E,kBAAkB,EAClBzuC,SAAU,8DAA8D7wC,MACpE,KAEJ4wC,cAAe,uBAAuB5wC,MAAM,KAC5C2wC,YAAa,uBAAuB3wC,MAAM,KAC1Cq+E,oBAAoB,EACpBx1C,eAAgB,CACZ+K,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,eACJC,IAAK,qBACLC,KAAM,4BAEVZ,SAAU,CACNC,QAAS,sBACTK,SAAU,IACVJ,QAAS,uBACTC,SAAU,qBACVC,QAAS,wBACTC,SAAU,gCAEdS,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN7c,EAAG,oBACH8c,GAAI,cACJjvC,EAAGo7E,EACHlsC,GAAI,aACJtF,EAAGwxC,EACHjsC,GAAI,aACJxF,EAAGyxC,EACHhsC,GAAIgsC,EACJ79C,EAAG69C,EACH/rC,GAAI,YACJxF,EAAGuxC,EACH9rC,GAAI8rC,EACJ7xC,EAAG6xC,EACH7rC,GAAI6rC,GAERvsC,uBAAwB,YACxB7L,QAAS,MACT2H,KAAM,CACFL,IAAK,EACLC,IAAK,MA3EK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCH5Bv0D,E,4MAAAA,EAKX,SAAUglF;kCAIf;IAAIjwC,EAAS,CACL,WACA,aACA,SACA,WACA,KACA,OACA,SACA,WACA,eACA,aACA,aACA,cAEJyD,EAAW,CACP,WACA,OACA,WACA,OACA,aACA,SACA,YAgER,OA7DSwsC,EAAOznC,aAAa,KAAM,CAC/BxI,OAAQA,EACRD,YAAaC,EACbyD,SAAUA,EACVD,cAAeC,EACfF,YAAa,qCAAqC3wC,MAAM,KACxD6oC,eAAgB,CACZ+K,GAAI,QACJD,IAAK,WACLE,EAAG,WACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVY,cAAe,QACf/B,KAAM,SAAUnqC,GACZ,MAAO,OAASA,GAEpBg8B,SAAU,SAAUmW,EAAMkB,EAAQyN,GAC9B,OAAI3O,EAAO,GACA,KAEA,MAGfzH,SAAU,CACNC,QAAS,cACTC,QAAS,cACTC,SAAU,UACVC,QAAS,cACTC,SAAU,qBACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,cACRC,KAAM,YACN7c,EAAG,iBACH8c,GAAI,cACJjvC,EAAG,WACHkvC,GAAI,YACJtF,EAAG,aACHuF,GAAI,cACJxF,EAAG,WACHyF,GAAI,YACJvF,EAAG,SACHyF,GAAI,UACJ/F,EAAG,WACHgG,GAAI,aAERwG,SAAU,SAAUzhC,GAChB,OAAOA,EAAOhb,QAAQ,KAAM,MAEhC2kD,WAAY,SAAU3pC,GAClB,OAAOA,EAAOhb,QAAQ,KAAM,MAEhCqxC,KAAM,CACFL,IAAK,EACLC,IAAK,OAzFK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCH5Bv0D,E,4MAAAA,EAKX,SAAUglF,GAuGf,OA5FSA,EAAOznC,aAAa,KAAM,CAC/B6qC,mBAAoB,qHAAqHzgF,MACrI,KAEJ0gF,iBAAkB,qHAAqH1gF,MACnI,KAEJotC,OAAQ,SAAUuzC,EAAgBn9C,GAC9B,OAAKm9C,GAGiB,iBAAXn9C,GACP,IAAI99B,KAAK89B,EAAOi8C,UAAU,EAAGj8C,EAAOnqC,QAAQ,UAGrC6C,KAAK0kF,kBAEL1kF,KAAK2kF,qBAFkBF,EAAer2C,SANtCpuC,KAAK2kF,qBAWpB1zC,YAAa,oDAAoDntC,MAAM,KACvE6wC,SAAU,yDAAyD7wC,MAC/D,KAEJ4wC,cAAe,8BAA8B5wC,MAAM,KACnD2wC,YAAa,uBAAuB3wC,MAAM,KAC1C0kC,SAAU,SAAU2N,EAAOE,EAASiX,GAChC,OAAY,GAARnX,EACOmX,EAAU,KAAO,KAEjBA,EAAU,KAAO,MAGhC3W,KAAM,SAAUnqC,GACZ,MAAyC,OAAjCA,EAAQ,IAAIxI,cAAc,IAEtC00C,cAAe,gBACf/L,eAAgB,CACZ+K,GAAI,SACJD,IAAK,YACLE,EAAG,aACHC,GAAI,cACJC,IAAK,qBACLC,KAAM,4BAEV8sC,WAAY,CACRztC,QAAS,iBACTC,QAAS,gBACTC,SAAU,eACVC,QAAS,eACTC,SAAU,WACN,OACS,IADDv3C,KAAK21C,MAIE,iCAFA,iCAKnB6B,SAAU,KAEdN,SAAU,SAAUhtC,EAAKoiC,GACrB,IAAIC,EAASvsC,KAAK6kF,YAAY36E,GAC1BisC,EAAQ7J,GAAOA,EAAI6J,QAIvB,OAzEY3pC,EAsEG+/B,GACXA,EArEiB,oBAAbxB,UAA4Bv+B,aAAiBu+B,UACX,sBAA1CruC,OAAOkD,UAAUvC,SAASN,KAAKyP,GAoElB+/B,EAAOtvC,MAAMqvC,GAEnBC,GAAO/pC,QAAQ,KAAM2zC,EAAQ,IAAO,EAAI,MAAQ,SAE3D6B,aAAc,CACVC,OAAQ,QACRC,KAAM,UACN7c,EAAG,oBACH8c,GAAI,kBACJjvC,EAAG,YACHkvC,GAAI,WACJtF,EAAG,UACHuF,GAAI,UACJxF,EAAG,WACHyF,GAAI,WACJvF,EAAG,aACHyF,GAAI,WACJ/F,EAAG,cACHgG,GAAI,aAERV,uBAAwB,WACxB7L,QAAS,MACT2H,KAAM,CACFL,IAAK,EACLC,IAAK,MAvGK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCH5Bv0D,E,4MAAAA,EAKX,SAAUglF,GAmEf,OA/DWA,EAAOznC,aAAa,QAAS,CACpCxI,OAAQ,wFAAwFptC,MAC5F,KAEJmtC,YAAa,kDAAkDntC,MAAM,KACrE6wC,SAAU,2DAA2D7wC,MACjE,KAEJ4wC,cAAe,8BAA8B5wC,MAAM,KACnD2wC,YAAa,uBAAuB3wC,MAAM,KAC1C6oC,eAAgB,CACZ+K,GAAI,SACJD,IAAK,YACLE,EAAG,aACHC,GAAI,cACJC,IAAK,qBACLC,KAAM,4BAEVZ,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN7c,EAAG,gBACH8c,GAAI,aACJjvC,EAAG,WACHkvC,GAAI,aACJtF,EAAG,UACHuF,GAAI,WACJxF,EAAG,QACHyF,GAAI,UACJvF,EAAG,UACHyF,GAAI,YACJ/F,EAAG,SACHgG,GAAI,YAERV,uBAAwB,uBACxB7L,QAAS,SAAUb,GACf,IAAIllC,EAAIklC,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,GAANllC,EACA,KACM,GAANA,EACA,KACM,GAANA,EACA,KACA,OAGlB0tC,KAAM,CACFL,IAAK,EACLC,IAAK,MAnEK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCH5Bv0D,E,4MAAAA,EAKX,SAAUglF,GA+Df,OA3DWA,EAAOznC,aAAa,QAAS,CACpCxI,OAAQ,wFAAwFptC,MAC5F,KAEJmtC,YAAa,kDAAkDntC,MAAM,KACrE6wC,SAAU,2DAA2D7wC,MACjE,KAEJ4wC,cAAe,8BAA8B5wC,MAAM,KACnD2wC,YAAa,uBAAuB3wC,MAAM,KAC1C6oC,eAAgB,CACZ+K,GAAI,SACJD,IAAK,YACLE,EAAG,aACHC,GAAI,eACJC,IAAK,sBACLC,KAAM,6BAEVZ,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN7c,EAAG,gBACH8c,GAAI,aACJjvC,EAAG,WACHkvC,GAAI,aACJtF,EAAG,UACHuF,GAAI,WACJxF,EAAG,QACHyF,GAAI,UACJvF,EAAG,UACHyF,GAAI,YACJ/F,EAAG,SACHgG,GAAI,YAERV,uBAAwB,uBACxB7L,QAAS,SAAUb,GACf,IAAIllC,EAAIklC,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,GAANllC,EACA,KACM,GAANA,EACA,KACM,GAANA,EACA,KACA,UA9DJ,WAAnB,EAAOqgC,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCH5Bv0D,E,4MAAAA,EAKX,SAAUglF,GAmEf,OA/DWA,EAAOznC,aAAa,QAAS,CACpCxI,OAAQ,wFAAwFptC,MAC5F,KAEJmtC,YAAa,kDAAkDntC,MAAM,KACrE6wC,SAAU,2DAA2D7wC,MACjE,KAEJ4wC,cAAe,8BAA8B5wC,MAAM,KACnD2wC,YAAa,uBAAuB3wC,MAAM,KAC1C6oC,eAAgB,CACZ+K,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVZ,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN7c,EAAG,gBACH8c,GAAI,aACJjvC,EAAG,WACHkvC,GAAI,aACJtF,EAAG,UACHuF,GAAI,WACJxF,EAAG,QACHyF,GAAI,UACJvF,EAAG,UACHyF,GAAI,YACJ/F,EAAG,SACHgG,GAAI,YAERV,uBAAwB,uBACxB7L,QAAS,SAAUb,GACf,IAAIllC,EAAIklC,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,GAANllC,EACA,KACM,GAANA,EACA,KACM,GAANA,EACA,KACA,OAGlB0tC,KAAM,CACFL,IAAK,EACLC,IAAK,MAnEK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCH5Bv0D,E,4MAAAA,EAKX,SAAUglF,GAmEf,OA/DWA,EAAOznC,aAAa,QAAS,CACpCxI,OAAQ,wFAAwFptC,MAC5F,KAEJmtC,YAAa,kDAAkDntC,MAAM,KACrE6wC,SAAU,2DAA2D7wC,MACjE,KAEJ4wC,cAAe,8BAA8B5wC,MAAM,KACnD2wC,YAAa,uBAAuB3wC,MAAM,KAC1C6oC,eAAgB,CACZ+K,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVZ,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN7c,EAAG,gBACH8c,GAAI,aACJjvC,EAAG,WACHkvC,GAAI,aACJtF,EAAG,UACHuF,GAAI,WACJxF,EAAG,QACHyF,GAAI,UACJvF,EAAG,UACHyF,GAAI,YACJ/F,EAAG,SACHgG,GAAI,YAERV,uBAAwB,uBACxB7L,QAAS,SAAUb,GACf,IAAIllC,EAAIklC,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,GAANllC,EACA,KACM,GAANA,EACA,KACM,GAANA,EACA,KACA,OAGlB0tC,KAAM,CACFL,IAAK,EACLC,IAAK,MAnEK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCH5Bv0D,E,4MAAAA,EAKX,SAAUglF,GA+Df,OA3DWA,EAAOznC,aAAa,QAAS,CACpCxI,OAAQ,wFAAwFptC,MAC5F,KAEJmtC,YAAa,kDAAkDntC,MAAM,KACrE6wC,SAAU,2DAA2D7wC,MACjE,KAEJ4wC,cAAe,8BAA8B5wC,MAAM,KACnD2wC,YAAa,uBAAuB3wC,MAAM,KAC1C6oC,eAAgB,CACZ+K,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVZ,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN7c,EAAG,gBACH8c,GAAI,aACJjvC,EAAG,WACHkvC,GAAI,aACJtF,EAAG,UACHuF,GAAI,WACJxF,EAAG,QACHyF,GAAI,UACJvF,EAAG,UACHyF,GAAI,YACJ/F,EAAG,SACHgG,GAAI,YAERV,uBAAwB,uBACxB7L,QAAS,SAAUb,GACf,IAAIllC,EAAIklC,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,GAANllC,EACA,KACM,GAANA,EACA,KACM,GAANA,EACA,KACA,UA9DJ,WAAnB,EAAOqgC,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCH5Bv0D,E,4MAAAA,EAKX,SAAUglF,GAmEf,OA/DWA,EAAOznC,aAAa,QAAS,CACpCxI,OAAQ,wFAAwFptC,MAC5F,KAEJmtC,YAAa,kDAAkDntC,MAAM,KACrE6wC,SAAU,2DAA2D7wC,MACjE,KAEJ4wC,cAAe,8BAA8B5wC,MAAM,KACnD2wC,YAAa,uBAAuB3wC,MAAM,KAC1C6oC,eAAgB,CACZ+K,GAAI,SACJD,IAAK,YACLE,EAAG,aACHC,GAAI,cACJC,IAAK,qBACLC,KAAM,4BAEVZ,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN7c,EAAG,gBACH8c,GAAI,aACJjvC,EAAG,WACHkvC,GAAI,aACJtF,EAAG,UACHuF,GAAI,WACJxF,EAAG,QACHyF,GAAI,UACJvF,EAAG,UACHyF,GAAI,YACJ/F,EAAG,SACHgG,GAAI,YAERV,uBAAwB,uBACxB7L,QAAS,SAAUb,GACf,IAAIllC,EAAIklC,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,GAANllC,EACA,KACM,GAANA,EACA,KACM,GAANA,EACA,KACA,OAGlB0tC,KAAM,CACFL,IAAK,EACLC,IAAK,MAnEK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCH5Bv0D,E,4MAAAA,EAKX,SAAUglF,GAmEf,OA/DWA,EAAOznC,aAAa,QAAS,CACpCxI,OAAQ,wFAAwFptC,MAC5F,KAEJmtC,YAAa,kDAAkDntC,MAAM,KACrE6wC,SAAU,2DAA2D7wC,MACjE,KAEJ4wC,cAAe,8BAA8B5wC,MAAM,KACnD2wC,YAAa,uBAAuB3wC,MAAM,KAC1C6oC,eAAgB,CACZ+K,GAAI,SACJD,IAAK,YACLE,EAAG,aACHC,GAAI,cACJC,IAAK,qBACLC,KAAM,4BAEVZ,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN7c,EAAG,gBACH8c,GAAI,aACJjvC,EAAG,WACHkvC,GAAI,aACJtF,EAAG,UACHuF,GAAI,WACJxF,EAAG,QACHyF,GAAI,UACJvF,EAAG,UACHyF,GAAI,YACJ/F,EAAG,SACHgG,GAAI,YAERV,uBAAwB,uBACxB7L,QAAS,SAAUb,GACf,IAAIllC,EAAIklC,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,GAANllC,EACA,KACM,GAANA,EACA,KACM,GAANA,EACA,KACA,OAGlB0tC,KAAM,CACFL,IAAK,EACLC,IAAK,MAnEK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCH5Bv0D,E,4MAAAA,EAKX,SAAUglF,GAmEf,OA/DWA,EAAOznC,aAAa,QAAS,CACpCxI,OAAQ,wFAAwFptC,MAC5F,KAEJmtC,YAAa,kDAAkDntC,MAAM,KACrE6wC,SAAU,2DAA2D7wC,MACjE,KAEJ4wC,cAAe,8BAA8B5wC,MAAM,KACnD2wC,YAAa,uBAAuB3wC,MAAM,KAC1C6oC,eAAgB,CACZ+K,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVZ,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN7c,EAAG,gBACH8c,GAAI,aACJjvC,EAAG,WACHkvC,GAAI,aACJtF,EAAG,UACHuF,GAAI,WACJxF,EAAG,QACHyF,GAAI,UACJvF,EAAG,UACHyF,GAAI,YACJ/F,EAAG,SACHgG,GAAI,YAERV,uBAAwB,uBACxB7L,QAAS,SAAUb,GACf,IAAIllC,EAAIklC,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,GAANllC,EACA,KACM,GAANA,EACA,KACM,GAANA,EACA,KACA,OAGlB0tC,KAAM,CACFL,IAAK,EACLC,IAAK,MAnEK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCA5Bv0D,E,4MAAAA,EAKX,SAAUglF,GAgEf,OA5DSA,EAAOznC,aAAa,KAAM,CAC/BxI,OAAQ,6FAA6FptC,MACjG,KAEJmtC,YAAa,oDAAoDntC,MAAM,KACvE6wC,SAAU,qDAAqD7wC,MAAM,KACrE4wC,cAAe,gCAAgC5wC,MAAM,KACrD2wC,YAAa,uBAAuB3wC,MAAM,KAC1C6oC,eAAgB,CACZ+K,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,4BACJC,IAAK,kCACLC,KAAM,2CACNssC,KAAM,uCAEV1rC,cAAe,cACf/B,KAAM,SAAUnqC,GACZ,MAAyC,MAAlCA,EAAM6gD,OAAO,GAAGrpD,eAE3BwkC,SAAU,SAAU2N,EAAOE,EAASiX,GAChC,OAAY,GAARnX,EACOmX,EAAU,SAAW,SAErBA,EAAU,SAAW,UAGpCpW,SAAU,CACNC,QAAS,iBACTC,QAAS,iBACTC,SAAU,gBACVC,QAAS,iBACTC,SAAU,2BACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,UACRC,KAAM,WACN7c,EAAG,kBACH8c,GAAI,cACJjvC,EAAG,aACHkvC,GAAI,aACJtF,EAAG,WACHuF,GAAI,WACJxF,EAAG,WACHyF,GAAI,WACJvF,EAAG,aACHyF,GAAI,aACJ/F,EAAG,WACHgG,GAAI,YAERV,uBAAwB,WACxB7L,QAAS,MACT2H,KAAM,CACFL,IAAK,EACLC,IAAK,MAhEK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCN5Bv0D,E,4MAAAA,EAKX,SAAUglF;kCAIf;IAAI2D,EAAiB,8DAA8DhhF,MAC3E,KAEJmtC,EAAc,kDAAkDntC,MAAM,KACtEutC,EAAc,CACV,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,SAEJD,EAAc,mLAmFlB,OAjFS+vC,EAAOznC,aAAa,KAAM,CAC/BxI,OAAQ,2FAA2FptC,MAC/F,KAEJmtC,YAAa,SAAU/nC,EAAGo+B,GACtB,OAAKp+B,GAEM,QAAQM,KAAK89B,GACb2J,EAEA6zC,GAFY57E,EAAEklC,SAFd02C,GAOf1zC,YAAaA,EACbD,iBAAkBC,EAClBwyC,kBAAmB,+FACnBC,uBAAwB,0FACxBxyC,YAAaA,EACbyyC,gBAAiBzyC,EACjB0yC,iBAAkB1yC,EAClBsD,SAAU,uDAAuD7wC,MAAM,KACvE4wC,cAAe,qCAAqC5wC,MAAM,KAC1D2wC,YAAa,uBAAuB3wC,MAAM,KAC1Cq+E,oBAAoB,EACpBx1C,eAAgB,CACZ+K,GAAI,OACJD,IAAK,UACLE,EAAG,aACHC,GAAI,wBACJC,IAAK,6BACLC,KAAM,oCAEVZ,SAAU,CACNC,QAAS,WACL,MAAO,aAAgC,IAAjBn3C,KAAKm2C,QAAgB,IAAM,IAAM,QAE3DiB,QAAS,WACL,MAAO,gBAAmC,IAAjBp3C,KAAKm2C,QAAgB,IAAM,IAAM,QAE9DkB,SAAU,WACN,MAAO,cAAiC,IAAjBr3C,KAAKm2C,QAAgB,IAAM,IAAM,QAE5DmB,QAAS,WACL,MAAO,cAAiC,IAAjBt3C,KAAKm2C,QAAgB,IAAM,IAAM,QAE5DoB,SAAU,WACN,MACI,0BACkB,IAAjBv3C,KAAKm2C,QAAgB,IAAM,IAC5B,QAGRqB,SAAU,KAEdQ,aAAc,CACVC,OAAQ,QACRC,KAAM,UACN7c,EAAG,gBACH8c,GAAI,cACJjvC,EAAG,YACHkvC,GAAI,aACJtF,EAAG,WACHuF,GAAI,WACJxF,EAAG,SACHyF,GAAI,UACJ7R,EAAG,aACH8R,GAAI,aACJxF,EAAG,SACHyF,GAAI,WACJ/F,EAAG,SACHgG,GAAI,WAERV,uBAAwB,WACxB7L,QAAS,MACT2H,KAAM,CACFL,IAAK,EACLC,IAAK,GAEThH,YAAa,oBA1GC,WAAnB,EAAOjG,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCJ5Bv0D,E,4MAAAA,EAKX,SAAUglF;kCAIf;IAAI2D,EAAiB,8DAA8DhhF,MAC3E,KAEJmtC,EAAc,kDAAkDntC,MAAM,KACtEutC,EAAc,CACV,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,SAEJD,EAAc,mLAkFlB,OAhFW+vC,EAAOznC,aAAa,QAAS,CACpCxI,OAAQ,2FAA2FptC,MAC/F,KAEJmtC,YAAa,SAAU/nC,EAAGo+B,GACtB,OAAKp+B,GAEM,QAAQM,KAAK89B,GACb2J,EAEA6zC,GAFY57E,EAAEklC,SAFd02C,GAOf1zC,YAAaA,EACbD,iBAAkBC,EAClBwyC,kBAAmB,+FACnBC,uBAAwB,0FACxBxyC,YAAaA,EACbyyC,gBAAiBzyC,EACjB0yC,iBAAkB1yC,EAClBsD,SAAU,uDAAuD7wC,MAAM,KACvE4wC,cAAe,qCAAqC5wC,MAAM,KAC1D2wC,YAAa,uBAAuB3wC,MAAM,KAC1Cq+E,oBAAoB,EACpBx1C,eAAgB,CACZ+K,GAAI,SACJD,IAAK,YACLE,EAAG,aACHC,GAAI,wBACJC,IAAK,+BACLC,KAAM,sCAEVZ,SAAU,CACNC,QAAS,WACL,MAAO,aAAgC,IAAjBn3C,KAAKm2C,QAAgB,IAAM,IAAM,QAE3DiB,QAAS,WACL,MAAO,gBAAmC,IAAjBp3C,KAAKm2C,QAAgB,IAAM,IAAM,QAE9DkB,SAAU,WACN,MAAO,cAAiC,IAAjBr3C,KAAKm2C,QAAgB,IAAM,IAAM,QAE5DmB,QAAS,WACL,MAAO,cAAiC,IAAjBt3C,KAAKm2C,QAAgB,IAAM,IAAM,QAE5DoB,SAAU,WACN,MACI,0BACkB,IAAjBv3C,KAAKm2C,QAAgB,IAAM,IAC5B,QAGRqB,SAAU,KAEdQ,aAAc,CACVC,OAAQ,QACRC,KAAM,UACN7c,EAAG,gBACH8c,GAAI,cACJjvC,EAAG,YACHkvC,GAAI,aACJtF,EAAG,WACHuF,GAAI,WACJxF,EAAG,SACHyF,GAAI,UACJ7R,EAAG,aACH8R,GAAI,aACJxF,EAAG,SACHyF,GAAI,WACJ/F,EAAG,SACHgG,GAAI,WAERV,uBAAwB,WACxB7L,QAAS,MACT2H,KAAM,CACFL,IAAK,EACLC,IAAK,MAxGK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCF5Bv0D,E,4MAAAA,EAKX,SAAUglF;kCAIf;IAAI2D,EAAiB,8DAA8DhhF,MAC3E,KAEJmtC,EAAc,kDAAkDntC,MAAM,KACtEutC,EAAc,CACV,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,SAEJD,EAAc,mLAmFlB,OAjFW+vC,EAAOznC,aAAa,QAAS,CACpCxI,OAAQ,2FAA2FptC,MAC/F,KAEJmtC,YAAa,SAAU/nC,EAAGo+B,GACtB,OAAKp+B,GAEM,QAAQM,KAAK89B,GACb2J,EAEA6zC,GAFY57E,EAAEklC,SAFd02C,GAOf1zC,YAAaA,EACbD,iBAAkBC,EAClBwyC,kBAAmB,+FACnBC,uBAAwB,0FACxBxyC,YAAaA,EACbyyC,gBAAiBzyC,EACjB0yC,iBAAkB1yC,EAClBsD,SAAU,uDAAuD7wC,MAAM,KACvE4wC,cAAe,qCAAqC5wC,MAAM,KAC1D2wC,YAAa,uBAAuB3wC,MAAM,KAC1Cq+E,oBAAoB,EACpBx1C,eAAgB,CACZ+K,GAAI,OACJD,IAAK,UACLE,EAAG,aACHC,GAAI,wBACJC,IAAK,6BACLC,KAAM,oCAEVZ,SAAU,CACNC,QAAS,WACL,MAAO,aAAgC,IAAjBn3C,KAAKm2C,QAAgB,IAAM,IAAM,QAE3DiB,QAAS,WACL,MAAO,gBAAmC,IAAjBp3C,KAAKm2C,QAAgB,IAAM,IAAM,QAE9DkB,SAAU,WACN,MAAO,cAAiC,IAAjBr3C,KAAKm2C,QAAgB,IAAM,IAAM,QAE5DmB,QAAS,WACL,MAAO,cAAiC,IAAjBt3C,KAAKm2C,QAAgB,IAAM,IAAM,QAE5DoB,SAAU,WACN,MACI,0BACkB,IAAjBv3C,KAAKm2C,QAAgB,IAAM,IAC5B,QAGRqB,SAAU,KAEdQ,aAAc,CACVC,OAAQ,QACRC,KAAM,UACN7c,EAAG,gBACH8c,GAAI,cACJjvC,EAAG,YACHkvC,GAAI,aACJtF,EAAG,WACHuF,GAAI,WACJxF,EAAG,SACHyF,GAAI,UACJ7R,EAAG,aACH8R,GAAI,aACJxF,EAAG,SACHyF,GAAI,WACJ/F,EAAG,SACHgG,GAAI,WAERV,uBAAwB,WACxB7L,QAAS,MACT2H,KAAM,CACFL,IAAK,EACLC,IAAK,GAEThH,YAAa,oBA1GC,WAAnB,EAAOjG,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCF5Bv0D,E,4MAAAA,EAKX,SAAUglF;kCAIf;IAAI2D,EAAiB,8DAA8DhhF,MAC3E,KAEJmtC,EAAc,kDAAkDntC,MAAM,KACtEutC,EAAc,CACV,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,SAEJD,EAAc,mLAkFlB,OAhFW+vC,EAAOznC,aAAa,QAAS,CACpCxI,OAAQ,2FAA2FptC,MAC/F,KAEJmtC,YAAa,SAAU/nC,EAAGo+B,GACtB,OAAKp+B,GAEM,QAAQM,KAAK89B,GACb2J,EAEA6zC,GAFY57E,EAAEklC,SAFd02C,GAOf1zC,YAAaA,EACbD,iBAAkBC,EAClBwyC,kBAAmB,+FACnBC,uBAAwB,0FACxBxyC,YAAaA,EACbyyC,gBAAiBzyC,EACjB0yC,iBAAkB1yC,EAClBsD,SAAU,uDAAuD7wC,MAAM,KACvE4wC,cAAe,qCAAqC5wC,MAAM,KAC1D2wC,YAAa,uBAAuB3wC,MAAM,KAC1Cq+E,oBAAoB,EACpBx1C,eAAgB,CACZ+K,GAAI,SACJD,IAAK,YACLE,EAAG,aACHC,GAAI,wBACJC,IAAK,+BACLC,KAAM,sCAEVZ,SAAU,CACNC,QAAS,WACL,MAAO,aAAgC,IAAjBn3C,KAAKm2C,QAAgB,IAAM,IAAM,QAE3DiB,QAAS,WACL,MAAO,gBAAmC,IAAjBp3C,KAAKm2C,QAAgB,IAAM,IAAM,QAE9DkB,SAAU,WACN,MAAO,cAAiC,IAAjBr3C,KAAKm2C,QAAgB,IAAM,IAAM,QAE5DmB,QAAS,WACL,MAAO,cAAiC,IAAjBt3C,KAAKm2C,QAAgB,IAAM,IAAM,QAE5DoB,SAAU,WACN,MACI,0BACkB,IAAjBv3C,KAAKm2C,QAAgB,IAAM,IAC5B,QAGRqB,SAAU,KAEdQ,aAAc,CACVC,OAAQ,QACRC,KAAM,UACN7c,EAAG,gBACH8c,GAAI,cACJjvC,EAAG,YACHkvC,GAAI,aACJtF,EAAG,WACHuF,GAAI,WACJxF,EAAG,SACHyF,GAAI,UACJ7R,EAAG,aACH8R,GAAI,aACJxF,EAAG,SACHyF,GAAI,WACJ/F,EAAG,SACHgG,GAAI,WAERV,uBAAwB,WACxB7L,QAAS,MACT2H,KAAM,CACFL,IAAK,EACLC,IAAK,MAxGK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCH5Bv0D,E,4MAAAA,EAKX,SAAUglF;kCAIf;SAASmD,EAAoBj5C,EAAQ+b,EAAel9C,EAAKyhD,GACjDrkB,EAAS,CACTjM,EAAG,CAAC,eAAgB,cAAe,iBACnC8c,GAAI,CAAC9M,EAAS,UAAWA,EAAS,YAClCniC,EAAG,CAAC,aAAc,aAClBkvC,GAAI,CAAC/M,EAAS,UAAWA,EAAS,YAClCyH,EAAG,CAAC,YAAa,YAAa,YAC9BuF,GAAI,CAAChN,EAAS,SAAUA,EAAS,UACjCwH,EAAG,CAAC,YAAa,YACjBE,EAAG,CAAC,UAAW,WAAY,WAC3ByF,GAAI,CAACnN,EAAS,OAAQA,EAAS,SAC/BoH,EAAG,CAAC,YAAa,QAAS,aAC1BgG,GAAI,CAACpN,EAAS,SAAUA,EAAS,YAErC,OAAI+b,EACO9f,EAAOp9B,GAAK,IAAsBo9B,EAAOp9B,GAAK,GAElDyhD,EAAWrkB,EAAOp9B,GAAK,GAAKo9B,EAAOp9B,GAAK,GAuDnD,OApDSi3E,EAAOznC,aAAa,KAAM,CAC/BxI,OAAQ,6FAA6FptC,MACjG,KAEJmtC,YAAa,6DAA6DntC,MACtE,KAEJ6wC,SAAU,iEAAiE7wC,MACvE,KAEJ4wC,cAAe,gBAAgB5wC,MAAM,KACrC2wC,YAAa,gBAAgB3wC,MAAM,KACnC6oC,eAAgB,CACZ+K,GAAI,OACJD,IAAK,UACLE,EAAG,aACHC,GAAI,eACJC,IAAK,oBACLC,KAAM,2BAEVZ,SAAU,CACNC,QAAS,aACTC,QAAS,cACTC,SAAU,qBACVC,QAAS,aACTC,SAAU,oBACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,YACRC,KAAM,YACN7c,EAAGipD,EACHnsC,GAAImsC,EACJp7E,EAAGo7E,EACHlsC,GAAIksC,EACJxxC,EAAGwxC,EACHjsC,GAAIisC,EACJzxC,EAAGyxC,EACHhsC,GAAI,WACJvF,EAAGuxC,EACH9rC,GAAI8rC,EACJ7xC,EAAG6xC,EACH7rC,GAAI6rC,GAERvsC,uBAAwB,YACxB7L,QAAS,MACT2H,KAAM,CACFL,IAAK,EACLC,IAAK,MA5EK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCJ5Bv0D,E,4MAAAA,EAKX,SAAUglF,GA8Df,OA1DSA,EAAOznC,aAAa,KAAM,CAC/BxI,OAAQ,+FAA+FptC,MACnG,KAEJmtC,YAAa,8DAA8DntC,MACvE,KAEJs/E,kBAAkB,EAClBzuC,SAAU,sEAAsE7wC,MAC5E,KAEJ4wC,cAAe,8BAA8B5wC,MAAM,KACnD2wC,YAAa,uBAAuB3wC,MAAM,KAC1Cq+E,oBAAoB,EACpBx1C,eAAgB,CACZ+K,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,0BACJC,IAAK,gCACLC,KAAM,sCACNphC,EAAG,WACHwtE,GAAI,oBACJC,IAAK,0BACLC,KAAM,gCAEVltC,SAAU,CACNC,QAAS,kBACTC,QAAS,mBACTC,SAAU,gBACVC,QAAS,kBACTC,SAAU,0BACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,WACRC,KAAM,WACN7c,EAAG,iBACH8c,GAAI,aACJjvC,EAAG,aACHkvC,GAAI,YACJtF,EAAG,WACHuF,GAAI,UACJxF,EAAG,WACHyF,GAAI,UACJvF,EAAG,eACHyF,GAAI,cACJ/F,EAAG,WACHgG,GAAI,WAERV,uBAAwB,YACxB7L,QAAS,MACT2H,KAAM,CACFL,IAAK,EACLC,IAAK,MA9DK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCH5Bv0D,E,4MAAAA,EAKX,SAAUglF;kCAIf;IAAIK,EAAY,CACRC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHngD,EAAG,KAEPogD,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAmFb,OAhFSf,EAAOznC,aAAa,KAAM,CAC/BxI,OAAQ,wEAAwEptC,MAC5E,KAEJmtC,YAAa,wEAAwEntC,MACjF,KAEJ6wC,SAAU,qDAAoE7wC,MAC1E,KAEJ4wC,cAAe,qDAAoE5wC,MAC/E,KAEJ2wC,YAAa,gBAAgB3wC,MAAM,KACnCq+E,oBAAoB,EACpBx1C,eAAgB,CACZ+K,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVY,cAAe,wBACf/B,KAAM,SAAUnqC,GACZ,MAAO,aAAahD,KAAKgD,IAE7Bg8B,SAAU,SAAUmW,EAAMkB,EAAQyN,GAC9B,OAAI3O,EAAO,GACA,aAEA,cAGfzH,SAAU,CACNC,QAAS,kBACTC,QAAS,iBACTC,SAAU,iBACVC,QAAS,kBACTC,SAAU,uBACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN7c,EAAG,YACH8c,GAAI,WACJjvC,EAAG,WACHkvC,GAAI,WACJtF,EAAG,UACHuF,GAAI,UACJxF,EAAG,SACHyF,GAAI,SACJvF,EAAG,SACHyF,GAAI,SACJ/F,EAAG,SACHgG,GAAI,UAERwG,SAAU,SAAUzhC,GAChB,OAAOA,EACFhb,QAAQ,SAAU,SAAUoG,GACzB,OAAOs5E,EAAUt5E,KAEpBpG,QAAQ,KAAM,MAEvB2kD,WAAY,SAAU3pC,GAClB,OAAOA,EACFhb,QAAQ,MAAO,SAAUoG,GACtB,OAAO44E,EAAU54E,KAEpBpG,QAAQ,KAAM,MAEvBu1C,uBAAwB,WACxB7L,QAAS,MACT2H,KAAM,CACFL,IAAK,EACLC,IAAK,OA7GK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCH5Bv0D,E,4MAAAA,EAKX,SAAUglF;kCAIf;IAAI4D,EAAc,wEAAwEjhF,MAClF,KAEJkhF,EAAgB,CACZ,QACA,QACA,SACA,SACA,SACA,SACA,SACAD,EAAY,GACZA,EAAY,GACZA,EAAY,IAEpB,SAASd,EAAU54C,EAAQ+b,EAAel9C,EAAKyhD,GAC3C,IAAI38C,EAAS,GACb,OAAQ9E,GACJ,IAAK,IACD,OAAOyhD,EAAW,oBAAsB,kBAC5C,IAAK,KACD38C,EAAS28C,EAAW,WAAa,WACjC,MACJ,IAAK,IACD,OAAOA,EAAW,WAAa,WACnC,IAAK,KACD38C,EAAS28C,EAAW,WAAa,YACjC,MACJ,IAAK,IACD,OAAOA,EAAW,SAAW,QACjC,IAAK,KACD38C,EAAS28C,EAAW,SAAW,SAC/B,MACJ,IAAK,IACD,OAAOA,EAAW,SAAW,QACjC,IAAK,KACD38C,EAAS28C,EAAW,SAAW,SAC/B,MACJ,IAAK,IACD,OAAOA,EAAW,YAAc,WACpC,IAAK,KACD38C,EAAS28C,EAAW,YAAc,YAClC,MACJ,IAAK,IACD,OAAOA,EAAW,SAAW,QACjC,IAAK,KACD38C,EAAS28C,EAAW,SAAW,SAIvC,OAE0BA,EAHIA,EAA9B38C,IAGkBq8B,EAHIA,GAIN,IACVsgB,EACIq5B,EACAD,GADc15C,GAElBA,GARoC,IAAMr8B,EAmEpD,OAxDSmyE,EAAOznC,aAAa,KAAM,CAC/BxI,OAAQ,2GAA2GptC,MAC/G,KAEJmtC,YAAa,uEAAuEntC,MAChF,KAEJ6wC,SAAU,qEAAqE7wC,MAC3E,KAEJ4wC,cAAe,uBAAuB5wC,MAAM,KAC5C2wC,YAAa,uBAAuB3wC,MAAM,KAC1C6oC,eAAgB,CACZ+K,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,mBACJC,IAAK,gCACLC,KAAM,sCACNphC,EAAG,WACHwtE,GAAI,cACJC,IAAK,2BACLC,KAAM,iCAEVltC,SAAU,CACNC,QAAS,oBACTC,QAAS,sBACTC,SAAU,gBACVC,QAAS,mBACTC,SAAU,4BACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,YACRC,KAAM,YACN7c,EAAG4oD,EACH9rC,GAAI8rC,EACJ/6E,EAAG+6E,EACH7rC,GAAI6rC,EACJnxC,EAAGmxC,EACH5rC,GAAI4rC,EACJpxC,EAAGoxC,EACH3rC,GAAI2rC,EACJlxC,EAAGkxC,EACHzrC,GAAIyrC,EACJxxC,EAAGwxC,EACHxrC,GAAIwrC,GAERlsC,uBAAwB,YACxB7L,QAAS,MACT2H,KAAM,CACFL,IAAK,EACLC,IAAK,MAxHK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCF5Bv0D,E,4MAAAA,EAKX,SAAUglF,GAwDf,OApDUA,EAAOznC,aAAa,MAAO,CACjCxI,OAAQ,0FAA0FptC,MAC9F,KAEJmtC,YAAa,kDAAkDntC,MAAM,KACrE6wC,SAAU,yDAAyD7wC,MAC/D,KAEJ4wC,cAAe,8BAA8B5wC,MAAM,KACnD2wC,YAAa,wBAAwB3wC,MAAM,KAC3C6oC,eAAgB,CACZ+K,GAAI,QACJD,IAAK,WACLE,EAAG,YACHC,GAAI,eACJC,IAAK,qBACLC,KAAM,6BAEVZ,SAAU,CACNC,QAAS,oBACTC,QAAS,gBACTC,SAAU,0BACVC,QAAS,eACTC,SAAU,4BACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,gBACRC,KAAM,mBACN7c,EAAG,gBACH8c,GAAI,aACJjvC,EAAG,eACHkvC,GAAI,YACJtF,EAAG,aACHuF,GAAI,UACJxF,EAAG,aACHyF,GAAI,UACJvF,EAAG,cACHyF,GAAI,WACJ/F,EAAG,aACHgG,GAAI,WAERV,uBAAwB,UACxB7L,QAAS,SAAUb,GACf,OAAOA,GAEXwI,KAAM,CACFL,IAAK,EACLC,IAAK,MAxDK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCH5Bv0D,E,4MAAAA,EAKX,SAAUglF,GAsDf,OAlDSA,EAAOznC,aAAa,KAAM,CAC/BxI,OAAQ,qFAAqFptC,MACzF,KAEJmtC,YAAa,kDAAkDntC,MAAM,KACrE6wC,SAAU,4EAA4E7wC,MAClF,KAEJ4wC,cAAe,8BAA8B5wC,MAAM,KACnD2wC,YAAa,uBAAuB3wC,MAAM,KAC1C6oC,eAAgB,CACZ+K,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,4BAEVZ,SAAU,CACNC,QAAS,iBACTC,QAAS,oBACTC,SAAU,gBACVC,QAAS,kBACTC,SAAU,wBACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,QACRC,KAAM,YACN7c,EAAG,YACH8c,GAAI,cACJjvC,EAAG,eACHkvC,GAAI,cACJtF,EAAG,WACHuF,GAAI,WACJxF,EAAG,YACHyF,GAAI,WACJvF,EAAG,cACHyF,GAAI,aACJ/F,EAAG,UACHgG,GAAI,SAERV,uBAAwB,YACxB7L,QAAS,MACT2H,KAAM,CACFL,IAAK,EACLC,IAAK,MAtDK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCJ5Bv0D,E,4MAAAA,EAKX,SAAUglF;kCAIf;IAEI/vC,EAAc,yKACdC,EAAc,CACV,SACA,SACA,SACA,QACA,QACA,SACA,SACA,SACA,SACA,QACA,QACA,SAoFR,OAjFS8vC,EAAOznC,aAAa,KAAM,CAC/BxI,OAAQ,uFAAuFptC,MAC3F,KAEJmtC,YAAa,iEAAiEntC,MAC1E,KAEJstC,YAAaA,EACbD,iBAAkBC,EAClBwyC,kBA3BoB,2FA4BpBC,uBA3ByB,oFA4BzBxyC,YAAaA,EACbyyC,gBAAiBzyC,EACjB0yC,iBAAkB1yC,EAClBsD,SAAU,sDAAsD7wC,MAAM,KACtE4wC,cAAe,qCAAqC5wC,MAAM,KAC1D2wC,YAAa,uBAAuB3wC,MAAM,KAC1Cq+E,oBAAoB,EACpBx1C,eAAgB,CACZ+K,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVZ,SAAU,CACNC,QAAS,qBACTC,QAAS,gBACTC,SAAU,cACVC,QAAS,cACTC,SAAU,sBACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,UACRC,KAAM,YACN7c,EAAG,oBACH8c,GAAI,cACJjvC,EAAG,aACHkvC,GAAI,aACJtF,EAAG,YACHuF,GAAI,YACJxF,EAAG,UACHyF,GAAI,WACJ7R,EAAG,cACH8R,GAAI,cACJxF,EAAG,UACHyF,GAAI,UACJ/F,EAAG,QACHgG,GAAI,UAERV,uBAAwB,eACxB7L,QAAS,SAAUb,EAAQ0X,GACvB,OAAQA,GAIJ,IAAK,IACD,OAAO1X,GAAqB,IAAXA,EAAe,KAAO,IAG3C,QACA,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,IACD,OAAOA,GAAqB,IAAXA,EAAe,KAAO,KAG3C,IAAK,IACL,IAAK,IACD,OAAOA,GAAqB,IAAXA,EAAe,KAAO,OAGnDwI,KAAM,CACFL,IAAK,EACLC,IAAK,MAvGK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCH5Bv0D,E,4MAAAA,EAKX,SAAUglF,GAoEf,OAhEWA,EAAOznC,aAAa,QAAS,CACpCxI,OAAQ,uFAAuFptC,MAC3F,KAEJmtC,YAAa,iEAAiEntC,MAC1E,KAEJs/E,kBAAkB,EAClBzuC,SAAU,sDAAsD7wC,MAAM,KACtE4wC,cAAe,qCAAqC5wC,MAAM,KAC1D2wC,YAAa,uBAAuB3wC,MAAM,KAC1Cq+E,oBAAoB,EACpBx1C,eAAgB,CACZ+K,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVZ,SAAU,CACNC,QAAS,qBACTC,QAAS,gBACTC,SAAU,cACVC,QAAS,cACTC,SAAU,sBACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,UACRC,KAAM,YACN7c,EAAG,oBACH8c,GAAI,cACJjvC,EAAG,aACHkvC,GAAI,aACJtF,EAAG,YACHuF,GAAI,YACJxF,EAAG,UACHyF,GAAI,WACJvF,EAAG,UACHyF,GAAI,UACJ/F,EAAG,QACHgG,GAAI,UAERV,uBAAwB,gBACxB7L,QAAS,SAAUb,EAAQ0X,GACvB,OAAQA,GAEJ,QACA,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,IACD,OAAO1X,GAAqB,IAAXA,EAAe,KAAO,KAG3C,IAAK,IACL,IAAK,IACD,OAAOA,GAAqB,IAAXA,EAAe,KAAO,UAnErC,WAAnB,EAAO7E,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCH5Bv0D,E,4MAAAA,EAKX,SAAUglF,GAwEf,OApEWA,EAAOznC,aAAa,QAAS,CACpCxI,OAAQ,uFAAuFptC,MAC3F,KAEJmtC,YAAa,iEAAiEntC,MAC1E,KAEJs/E,kBAAkB,EAClBzuC,SAAU,sDAAsD7wC,MAAM,KACtE4wC,cAAe,qCAAqC5wC,MAAM,KAC1D2wC,YAAa,uBAAuB3wC,MAAM,KAC1Cq+E,oBAAoB,EACpBx1C,eAAgB,CACZ+K,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVZ,SAAU,CACNC,QAAS,qBACTC,QAAS,gBACTC,SAAU,cACVC,QAAS,cACTC,SAAU,sBACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,UACRC,KAAM,YACN7c,EAAG,oBACH8c,GAAI,cACJjvC,EAAG,aACHkvC,GAAI,aACJtF,EAAG,YACHuF,GAAI,YACJxF,EAAG,UACHyF,GAAI,WACJvF,EAAG,UACHyF,GAAI,UACJ/F,EAAG,QACHgG,GAAI,UAERV,uBAAwB,gBACxB7L,QAAS,SAAUb,EAAQ0X,GACvB,OAAQA,GAEJ,QACA,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,IACD,OAAO1X,GAAqB,IAAXA,EAAe,KAAO,KAG3C,IAAK,IACL,IAAK,IACD,OAAOA,GAAqB,IAAXA,EAAe,KAAO,OAGnDwI,KAAM,CACFL,IAAK,EACLC,IAAK,MAxEK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCH5Bv0D,E,4MAAAA,EAKX,SAAUglF;kCAIf;IAAI8D,EAAsB,6DAA6DnhF,MAC/E,KAEJohF,EAAyB,kDAAkDphF,MACvE,KAoER,OAjESq9E,EAAOznC,aAAa,KAAM,CAC/BxI,OAAQ,iGAAiGptC,MACrG,KAEJmtC,YAAa,SAAU/nC,EAAGo+B,GACtB,OAAKp+B,GAEM,QAAQM,KAAK89B,GACb49C,EAEAD,GAFuB/7E,EAAEklC,SAFzB62C,GAOf7B,kBAAkB,EAClBzuC,SAAU,wDAAwD7wC,MAC9D,KAEJ4wC,cAAe,8BAA8B5wC,MAAM,KACnD2wC,YAAa,uBAAuB3wC,MAAM,KAC1Cq+E,oBAAoB,EACpBx1C,eAAgB,CACZ+K,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVZ,SAAU,CACNC,QAAS,gBACTC,QAAS,gBACTC,SAAU,eACVC,QAAS,iBACTC,SAAU,wBACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,SACRC,KAAM,SACN7c,EAAG,mBACH8c,GAAI,cACJjvC,EAAG,YACHkvC,GAAI,aACJtF,EAAG,WACHuF,GAAI,WACJxF,EAAG,UACHyF,GAAI,WACJvF,EAAG,aACHyF,GAAI,aACJ/F,EAAG,WACHgG,GAAI,cAERV,uBAAwB,kBACxB7L,QAAS,SAAUb,GACf,OACIA,GACY,IAAXA,GAA2B,IAAXA,GAA0B,IAAVA,EAAe,MAAQ,OAGhEwI,KAAM,CACFL,IAAK,EACLC,IAAK,MA5EK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCH5Bv0D,E,4MAAAA,EAKX,SAAUglF,GA8Ff,OAlDSA,EAAOznC,aAAa,KAAM,CAC/BxI,OAzCS,CACL,SACA,UACA,QACA,UACA,YACA,YACA,OACA,SACA,eACA,mBACA,UACA,WA8BJD,YA5Bc,CACV,MACA,QACA,OACA,MACA,OACA,QACA,OACA,MACA,OACA,OACA,OACA,QAiBJmyC,kBAAkB,EAClBzuC,SAhBW,CACP,eACA,WACA,WACA,cACA,YACA,YACA,eAUJD,cARgB,CAAC,OAAQ,OAAQ,QAAS,OAAQ,OAAQ,QAAS,QASnED,YARc,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,MASlD9H,eAAgB,CACZ+K,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVZ,SAAU,CACNC,QAAS,gBACTC,QAAS,kBACTC,SAAU,eACVC,QAAS,eACTC,SAAU,2BACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,OACRC,KAAM,YACN7c,EAAG,gBACH8c,GAAI,aACJjvC,EAAG,UACHkvC,GAAI,aACJtF,EAAG,iBACHuF,GAAI,oBACJxF,EAAG,KACHyF,GAAI,QACJvF,EAAG,KACHyF,GAAI,YACJ/F,EAAG,SACHgG,GAAI,aAERV,uBAAwB,mBACxB7L,QAAS,SAAUb,GAEf,OAAOA,GADiB,IAAXA,EAAe,IAAMA,EAAS,IAAO,EAAI,KAAO,OAGjEwI,KAAM,CACFL,IAAK,EACLC,IAAK,MA9FK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCH5Bv0D,E,4MAAAA,EAKX,SAAUglF,GA8Ff,OAlDSA,EAAOznC,aAAa,KAAM,CAC/BxI,OAzCS,CACL,gBACA,aACA,UACA,aACA,aACA,eACA,cACA,cACA,eACA,aACA,eACA,gBA8BJD,YA5Bc,CACV,OACA,OACA,OACA,OACA,OACA,OACA,OACA,MACA,OACA,OACA,OACA,QAiBJmyC,kBAAkB,EAClBzuC,SAhBW,CACP,cACA,UACA,UACA,YACA,YACA,WACA,eAUJD,cARgB,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAS3DD,YARc,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MASnD9H,eAAgB,CACZ+K,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVZ,SAAU,CACNC,QAAS,oBACTC,QAAS,sBACTC,SAAU,gBACVC,QAAS,iBACTC,SAAU,6BACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,YACRC,KAAM,gBACN7c,EAAG,gBACH8c,GAAI,YACJjvC,EAAG,UACHkvC,GAAI,gBACJtF,EAAG,OACHuF,GAAI,aACJxF,EAAG,QACHyF,GAAI,WACJvF,EAAG,OACHyF,GAAI,YACJ/F,EAAG,WACHgG,GAAI,eAERV,uBAAwB,mBACxB7L,QAAS,SAAUb,GAEf,OAAOA,GADiB,IAAXA,EAAe,IAAMA,EAAS,IAAO,EAAI,KAAO,OAGjEwI,KAAM,CACFL,IAAK,EACLC,IAAK,MA9FK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCH5Bv0D,E,4MAAAA,EAKX,SAAUglF,GAyEf,OArESA,EAAOznC,aAAa,KAAM,CAC/BxI,OAAQ,yFAAyFptC,MAC7F,KAEJmtC,YAAa,8DAA8DntC,MACvE,KAEJs/E,kBAAkB,EAClBzuC,SAAU,mDAAmD7wC,MAAM,KACnE4wC,cAAe,qCAAqC5wC,MAAM,KAC1D2wC,YAAa,uBAAuB3wC,MAAM,KAC1Cq+E,oBAAoB,EACpBx1C,eAAgB,CACZ+K,GAAI,OACJD,IAAK,UACLE,EAAG,aACHC,GAAI,wBACJC,IAAK,6BACLC,KAAM,oCAEVZ,SAAU,CACNC,QAAS,WACL,MAAO,UAA6B,IAAjBn3C,KAAKm2C,QAAgB,KAAO,KAAO,QAE1DiB,QAAS,WACL,MAAO,UAA6B,IAAjBp3C,KAAKm2C,QAAgB,KAAO,KAAO,QAE1DkB,SAAU,WACN,MAAO,UAA6B,IAAjBr3C,KAAKm2C,QAAgB,KAAO,KAAO,QAE1DmB,QAAS,WACL,MAAO,UAA6B,IAAjBt3C,KAAKm2C,QAAgB,IAAM,KAAO,QAEzDoB,SAAU,WACN,MACI,qBAAwC,IAAjBv3C,KAAKm2C,QAAgB,KAAO,KAAO,QAGlEqB,SAAU,KAEdQ,aAAc,CACVC,OAAQ,SAAU+kC,GACd,OAA0B,IAAtBA,EAAI7/E,QAAQ,MACL,IAAM6/E,EAEV,MAAQA,GAEnB9kC,KAAM,SACN7c,EAAG,eACH8c,GAAI,cACJjvC,EAAG,YACHkvC,GAAI,aACJtF,EAAG,YACHuF,GAAI,WACJxF,EAAG,SACHyF,GAAI,UACJvF,EAAG,SACHyF,GAAI,WACJ/F,EAAG,SACHgG,GAAI,WAERV,uBAAwB,WACxB7L,QAAS,MACT2H,KAAM,CACFL,IAAK,EACLC,IAAK,MAzEK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCH5Bv0D,E,4MAAAA,EAKX,SAAUglF;kCAIf;SAASmD,EAAoBj5C,EAAQ+b,EAAel9C,EAAKyhD,GACjDrkB,EAAS,CACTjM,EAAG,CAAC,kBAAmB,cACvB8c,GAAI,CAAC9M,EAAS,aAAcA,EAAS,UACrCniC,EAAG,CAAC,aAAc,YAClBkvC,GAAI,CAAC/M,EAAS,YAAaA,EAAS,WACpCyH,EAAG,CAAC,WAAY,SAChBuF,GAAI,CAAChN,EAAS,UAAWA,EAAS,SAClCwH,EAAG,CAAC,YAAa,UACjByF,GAAI,CAACjN,EAAS,WAAYA,EAAS,QACnC0H,EAAG,CAAC,gBAAiB,aACrByF,GAAI,CAACnN,EAAS,cAAeA,EAAS,WACtCoH,EAAG,CAAC,aAAc,WAClBgG,GAAI,CAACpN,EAAS,YAAaA,EAAS,YAExC,OAAOsgB,EAAWrkB,EAAOp9B,GAAK,GAAKo9B,EAAOp9B,GAAK,GAwGnD,OArGci3E,EAAOznC,aAAa,WAAY,CAC1CxI,OAAQ,CACJ+xC,WAAY,wFAAwFn/E,MAChG,KAEJwjC,OAAQ,mJAAmJxjC,MACvJ,KAEJkoD,SAAU,mBAEd/a,YAAa,4EAA4EntC,MACrF,KAEJs/E,kBAAkB,EAClBzuC,SAAU,qDAAqD7wC,MAAM,KACrE4wC,cAAe,4CAA4C5wC,MAAM,KACjE2wC,YAAa,wBAAwB3wC,MAAM,KAC3Cq+E,oBAAoB,EACpBx1C,eAAgB,CACZ+K,GAAI,kBACJD,IAAK,qBACLE,EAAG,aACHC,GAAI,cACJC,IAAK,8BACLC,KAAM,uCACNssC,KAAM,oCAEVltC,SAAU,CACNC,QAAS,WACTC,QAAS,eACTC,SAAU,qBACVC,QAAS,WACTC,SAAU,qBACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,KACRC,KAAM,UACN7c,EAAGipD,EACHnsC,GAAImsC,EACJp7E,EAAGo7E,EACHlsC,GAAIksC,EACJxxC,EAAGwxC,EACHjsC,GAAIisC,EACJzxC,EAAGyxC,EACHhsC,GAAIgsC,EACJvxC,EAAGuxC,EACH9rC,GAAI8rC,EACJ7xC,EAAG6xC,EACH7rC,GAAI6rC,GAERvsC,uBAAwB,eACxB7L,QAAS,SAAUb,EAAQ0X,GACvB,OAAQA,GAEJ,IAAK,IACD,OAAO1X,EAAS,MACpB,QACA,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,IACL,IAAK,IACL,IAAK,IACD,OAAOA,IAGnBwI,KAAM,CACFL,IAAK,EACLC,IAAK,GAETiF,cAAe,4BACfkG,aAAc,SAAUD,EAAMnW,GAI1B,OAHa,KAATmW,IACAA,EAAO,GAEM,SAAbnW,EACOmW,EAAO,EAAIA,EAAOA,EAAO,GACZ,WAAbnW,EACAmW,EACa,YAAbnW,EACO,GAAPmW,EAAYA,EAAOA,EAAO,GACb,UAAbnW,EACAmW,EAAO,QADX,GAIXnW,SAAU,SAAUmW,EAAMkB,EAAQyN,GAC9B,OAAI3O,EAAO,EACA,OACAA,EAAO,GACP,SACAA,EAAO,GACP,UACAA,EAAO,GACP,QAEA,WA1HD,WAAnB,EAAOnY,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCH5Bv0D,E,4MAAAA,EAKX,SAAUglF;kCAIf;SAASmD,EAAoBj5C,EAAQ+b,EAAel9C,EAAKyhD,GACjDrkB,EAAS,CACTjM,EAAG,CAAC,qBAAsB,iBAC1B8c,GAAI,CAAC9M,EAAS,cAAeA,EAAS,WACtCniC,EAAG,CAAC,aAAc,YAClBkvC,GAAI,CAAC/M,EAAS,YAAaA,EAAS,WACpCyH,EAAG,CAAC,YAAa,UACjBuF,GAAI,CAAChN,EAAS,WAAYA,EAAS,UACnCwH,EAAG,CAAC,YAAa,UACjByF,GAAI,CAACjN,EAAS,WAAYA,EAAS,QACnC0H,EAAG,CAAC,eAAgB,aACpByF,GAAI,CAACnN,EAAS,cAAeA,EAAS,WACtCoH,EAAG,CAAC,aAAc,YAClBgG,GAAI,CAACpN,EAAS,YAAaA,EAAS,YAExC,OAAOsgB,EAAWrkB,EAAOp9B,GAAK,GAAKo9B,EAAOp9B,GAAK,GAwGnD,OArGci3E,EAAOznC,aAAa,WAAY,CAC1CxI,OAAQ,CACJ+xC,WAAY,4EAA4En/E,MACpF,KAEJwjC,OAAQ,wIAAwIxjC,MAC5I,KAEJkoD,SAAU,mBAEd/a,YAAa,4DAA4DntC,MACrE,KAEJs/E,kBAAkB,EAClBzuC,SAAU,uDAAuD7wC,MAAM,KACvE4wC,cAAe,qCAAqC5wC,MAAM,KAC1D2wC,YAAa,uBAAuB3wC,MAAM,KAC1Cq+E,oBAAoB,EACpBx1C,eAAgB,CACZ+K,GAAI,iBACJD,IAAK,oBACLE,EAAG,aACHC,GAAI,cACJC,IAAK,6BACLC,KAAM,sCACNssC,KAAM,mCAEVltC,SAAU,CACNC,QAAS,WACTC,QAAS,cACTC,SAAU,sBACVC,QAAS,WACTC,SAAU,sBACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,KACRC,KAAM,UACN7c,EAAGipD,EACHnsC,GAAImsC,EACJp7E,EAAGo7E,EACHlsC,GAAIksC,EACJxxC,EAAGwxC,EACHjsC,GAAIisC,EACJzxC,EAAGyxC,EACHhsC,GAAIgsC,EACJvxC,EAAGuxC,EACH9rC,GAAI8rC,EACJ7xC,EAAG6xC,EACH7rC,GAAI6rC,GAERvsC,uBAAwB,cACxB7L,QAAS,SAAUb,EAAQ0X,GACvB,OAAQA,GAEJ,IAAK,IACD,OAAO1X,EAAS,KACpB,QACA,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,IACL,IAAK,IACL,IAAK,IACD,OAAOA,IAGnBwI,KAAM,CACFL,IAAK,EACLC,IAAK,GAETiF,cAAe,+BACfkG,aAAc,SAAUD,EAAMnW,GAI1B,OAHa,KAATmW,IACAA,EAAO,GAEM,SAAbnW,EACOmW,EAAO,EAAIA,EAAOA,EAAO,GACZ,aAAbnW,EACAmW,EACa,aAAbnW,EACO,GAAPmW,EAAYA,EAAOA,EAAO,GACb,UAAbnW,EACAmW,EAAO,QADX,GAIXnW,SAAU,SAAUmW,EAAMkB,EAAQyN,GAC9B,OAAI3O,EAAO,EACA,OACAA,EAAO,GACP,WACAA,EAAO,GACP,WACAA,EAAO,GACP,QAEA,WA1HD,WAAnB,EAAOnY,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCH5Bv0D,E,4MAAAA,EAKX,SAAUglF;kCAIf;IAAIK,EAAY,CACRC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHngD,EAAG,KAEPogD,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KA8Fb,OA3FSf,EAAOznC,aAAa,KAAM,CAC/BxI,OAAQ,yFAAyFptC,MAC7F,KAEJmtC,YAAa,yEAAyEntC,MAClF,KAEJs/E,kBAAkB,EAClBzuC,SAAU,wDAAwD7wC,MAC9D,KAEJ4wC,cAAe,mCAAmC5wC,MAAM,KACxD2wC,YAAa,qBAAqB3wC,MAAM,KACxC6oC,eAAgB,CACZ+K,GAAI,gBACJD,IAAK,mBACLE,EAAG,aACHC,GAAI,cACJC,IAAK,6BACLC,KAAM,oCAEVZ,SAAU,CACNC,QAAS,UACTC,QAAS,YACTC,SAAU,WACVC,QAAS,cACTC,SAAU,mBACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,QACRC,KAAM,WACN7c,EAAG,WACH8c,GAAI,WACJjvC,EAAG,WACHkvC,GAAI,WACJtF,EAAG,UACHuF,GAAI,UACJxF,EAAG,UACHyF,GAAI,UACJvF,EAAG,WACHyF,GAAI,WACJ/F,EAAG,UACHgG,GAAI,WAERwG,SAAU,SAAUzhC,GAChB,OAAOA,EAAOhb,QAAQ,gBAAiB,SAAUoG,GAC7C,OAAOs5E,EAAUt5E,MAGzBu+C,WAAY,SAAU3pC,GAClB,OAAOA,EAAOhb,QAAQ,MAAO,SAAUoG,GACnC,OAAO44E,EAAU54E,MAKzB8vC,cAAe,qBACfkG,aAAc,SAAUD,EAAMnW,GAI1B,OAHa,KAATmW,IACAA,EAAO,GAEM,QAAbnW,EACOmW,EAAO,EAAIA,EAAOA,EAAO,GACZ,SAAbnW,EACAmW,EACa,SAAbnW,EACQ,IAARmW,EAAaA,EAAOA,EAAO,GACd,SAAbnW,EACAmW,EAAO,QADX,GAIXnW,SAAU,SAAUmW,EAAMkB,EAAQyN,GAC9B,OAAI3O,EAAO,EACA,MACAA,EAAO,GACP,OACAA,EAAO,GACP,OACAA,EAAO,GACP,OAEA,OAGf9K,KAAM,CACFL,IAAK,EACLC,IAAK,MAxHK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCD5Bv0D,E,4MAAAA,EAKX,SAAUglF,GA2Ff,OAvFSA,EAAOznC,aAAa,KAAM,CAC/BxI,OAAQ,0EAA0EptC,MAC9E,KAEJmtC,YAAa,4DAA4DntC,MACrE,KAEJ6wC,SAAU,uCAAuC7wC,MAAM,KACvD4wC,cAAe,uBAAuB5wC,MAAM,KAC5C2wC,YAAa,gBAAgB3wC,MAAM,KACnC6oC,eAAgB,CACZ+K,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,iBACJC,IAAK,uBACLC,KAAM,6BACNphC,EAAG,WACHwtE,GAAI,aACJC,IAAK,mBACLC,KAAM,yBAEVltC,SAAU,CACNC,QAAS,cACTC,QAAS,aACTC,SAAU,iBACVC,QAAS,eACTC,SAAU,+BACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,UACRC,KAAM,UACN7c,EAAG,aACH8c,GAAI,WACJjvC,EAAG,MACHkvC,GAAI,UACJtF,EAAG,MACHuF,GAAI,SAAUhN,GACV,OAAe,IAAXA,EACO,SAEJA,EAAS,SAEpBwH,EAAG,MACHyF,GAAI,SAAUjN,GACV,OAAe,IAAXA,EACO,SAEJA,EAAS,SAEpB0H,EAAG,OACHyF,GAAI,SAAUnN,GACV,OAAe,IAAXA,EACO,UAEJA,EAAS,WAEpBoH,EAAG,MACHgG,GAAI,SAAUpN,GACV,OAAe,IAAXA,EACO,SACAA,EAAS,IAAO,GAAgB,KAAXA,EACrBA,EAAS,OAEbA,EAAS,UAGxBqN,cAAe,gEACf/B,KAAM,SAAUnqC,GACZ,MAAO,8BAA8BhD,KAAKgD,IAE9Cg8B,SAAU,SAAUmW,EAAMkB,EAAQyN,GAC9B,OAAI3O,EAAO,EACA,aACAA,EAAO,GACP,QACAA,EAAO,GACP2O,EAAU,SAAW,eACrB3O,EAAO,GACP2O,EAAU,QAAU,eAEpB,WA1FD,WAAnB,EAAO9mB,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCL5Bv0D,E,4MAAAA,EAKX,SAAUglF;kCAIf;IAAIK,EAAY,CACRC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHngD,EAAG,KAEPogD,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAET7wC,EAAc,CACV,OACA,WACA,UACA,UACA,OACA,QACA,QACA,OACA,aACA,UACA,WACA,cA2HR,OA1GS8vC,EAAOznC,aAAa,KAAM,CAC/BxI,OAAQ,CACJ5J,OAAQ,8EAA8ExjC,MAClF,KAEJm/E,WAAY,0EAA0En/E,MAClF,MAGRmtC,YAAa,6DAA6DntC,MACtE,KAEJ6wC,SAAU,uDAAuD7wC,MAAM,KACvE4wC,cAAe,kCAAkC5wC,MAAM,KACvD2wC,YAAa,qBAAqB3wC,MAAM,KACxC6oC,eAAgB,CACZ+K,GAAI,aACJD,IAAK,gBACLE,EAAG,aACHC,GAAI,cACJC,IAAK,0BACLC,KAAM,iCAGVzG,YAAaA,EACbyyC,gBAAiBzyC,EACjB0yC,iBAzCmB,CACf,OACA,QACA,UACA,UACA,OACA,QACA,QACA,OACA,QACA,UACA,OACA,SA+BJ3yC,YAAa,+KAEbD,iBAAkB,+KAElByyC,kBAAmB,uIAEnBC,uBAAwB,sFAExB3sC,SAAU,CACNC,QAAS,UACTC,QAAS,UACTC,SAAU,WACVC,QAAS,UACTC,SAAU,mBACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,SACRC,KAAM,UACN7c,EAAG,cACH8c,GAAI,WACJjvC,EAAG,UACHkvC,GAAI,UACJtF,EAAG,UACHuF,GAAI,UACJxF,EAAG,SACHyF,GAAI,SACJvF,EAAG,WACHyF,GAAI,WACJ/F,EAAG,UACHgG,GAAI,WAERwG,SAAU,SAAUzhC,GAChB,OAAOA,EAAOhb,QAAQ,gBAAiB,SAAUoG,GAC7C,OAAOs5E,EAAUt5E,MAGzBu+C,WAAY,SAAU3pC,GAClB,OAAOA,EAAOhb,QAAQ,MAAO,SAAUoG,GACnC,OAAO44E,EAAU54E,MAKzB8vC,cAAe,qBACfkG,aAAc,SAAUD,EAAMnW,GAI1B,OAHa,KAATmW,IACAA,EAAO,GAEM,QAAbnW,EACOmW,EAAO,EAAIA,EAAOA,EAAO,GACZ,SAAbnW,EACAmW,EACa,UAAbnW,EACQ,IAARmW,EAAaA,EAAOA,EAAO,GACd,QAAbnW,EACAmW,EAAO,QADX,GAIXnW,SAAU,SAAUmW,EAAMkB,EAAQyN,GAC9B,OAAI3O,EAAO,EACA,MACAA,EAAO,GACP,OACAA,EAAO,GACP,QACAA,EAAO,GACP,MAEA,OAGf9K,KAAM,CACFL,IAAK,EACLC,IAAK,MAnKK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCH5Bv0D,E,4MAAAA,EAKX,SAAUglF;kCAIf;SAAS8C,EAAU54C,EAAQ+b,EAAel9C,GACtC,IAAI8E,EAASq8B,EAAS,IACtB,OAAQnhC,GACJ,IAAK,KAQD,OANI8E,GADW,IAAXq8B,EACU,UACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,UAEA,UAGlB,IAAK,IACD,OAAO+b,EAAgB,eAAiB,eAC5C,IAAK,KAQD,OANIp4C,GADW,IAAXq8B,IAEkB,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,GAC7B,SAFA,SAOlB,IAAK,IACD,OAAO+b,EAAgB,YAAc,cACzC,IAAK,KAQD,OANIp4C,GADW,IAAXq8B,EACU,MACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,OAEA,OAGlB,IAAK,KAMD,OAJIr8B,GADW,IAAXq8B,EACU,MAEA,OAGlB,IAAK,KAQD,OANIr8B,GADW,IAAXq8B,EACU,SACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,UAEA,UAGlB,IAAK,KAQD,OANIr8B,GADW,IAAXq8B,IAEkB,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,GAC7B,SAFA,UAiG1B,OAvFS81C,EAAOznC,aAAa,KAAM,CAC/BxI,OAAQ,CACJ5J,OAAQ,oGAAoGxjC,MACxG,KAEJm/E,WAAY,gGAAgGn/E,MACxG,MAGRmtC,YAAa,+DAA+DntC,MACxE,KAEJs/E,kBAAkB,EAClBzuC,SAAU,4DAA4D7wC,MAClE,KAEJ4wC,cAAe,qCAAqC5wC,MAAM,KAC1D2wC,YAAa,uBAAuB3wC,MAAM,KAC1Cq+E,oBAAoB,EACpBx1C,eAAgB,CACZ+K,GAAI,OACJD,IAAK,UACLE,EAAG,aACHC,GAAI,eACJC,IAAK,oBACLC,KAAM,2BAEVZ,SAAU,CACNC,QAAS,eACTC,QAAS,eACTC,SAAU,WACN,OAAQr3C,KAAK21C,OACT,KAAK,EACD,MAAO,wBACX,KAAK,EACD,MAAO,uBACX,KAAK,EACD,MAAO,sBACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,oBAGnB2B,QAAS,eACTC,SAAU,WACN,OAAQv3C,KAAK21C,OACT,KAAK,EACD,MAAO,6BACX,KAAK,EACD,MAAO,4BACX,KAAK,EACD,MAAO,2BACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,yBAGnB6B,SAAU,KAEdQ,aAAc,CACVC,OAAQ,QACRC,KAAM,WACN7c,EAAG,cACH8c,GAAI8rC,EACJ/6E,EAAG+6E,EACH7rC,GAAI6rC,EACJnxC,EAAGmxC,EACH5rC,GAAI4rC,EACJpxC,EAAG,MACHyF,GAAI2rC,EACJlxC,EAAG,SACHyF,GAAIyrC,EACJxxC,EAAG,SACHgG,GAAIwrC,GAERlsC,uBAAwB,YACxB7L,QAAS,MACT2H,KAAM,CACFL,IAAK,EACLC,IAAK,MAzJK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCF5Bv0D,E,4MAAAA,EAKX,SAAUglF;kCAIf;IAAIgE,EAAc,gEAAgErhF,MAC9E,KAEJ,SAASmgF,EAAU54C,EAAQ+b,EAAel9C,EAAKyhD,GAC3C,IAAIzrD,EAAMmrC,EACV,OAAQnhC,GACJ,IAAK,IACD,OAAOyhD,GAAYvE,EACb,mBACA,oBACV,IAAK,KACD,OAAOlnD,GAAOyrD,GAAYvE,GACpB,aACA,cACV,IAAK,IACD,MAAO,OAASuE,GAAYvE,EAAgB,QAAU,UAC1D,IAAK,KACD,OAAOlnD,GAAOyrD,GAAYvE,EAAgB,QAAU,UACxD,IAAK,IACD,MAAO,OAASuE,GAAYvE,EAAgB,OAAS,UACzD,IAAK,KACD,OAAOlnD,GAAOyrD,GAAYvE,EAAgB,OAAS,UACvD,IAAK,IACD,MAAO,OAASuE,GAAYvE,EAAgB,OAAS,UACzD,IAAK,KACD,OAAOlnD,GAAOyrD,GAAYvE,EAAgB,OAAS,UACvD,IAAK,IACD,MAAO,OAASuE,GAAYvE,EAAgB,SAAW,YAC3D,IAAK,KACD,OAAOlnD,GAAOyrD,GAAYvE,EAAgB,SAAW,YACzD,IAAK,IACD,MAAO,OAASuE,GAAYvE,EAAgB,MAAQ,QACxD,IAAK,KACD,OAAOlnD,GAAOyrD,GAAYvE,EAAgB,MAAQ,QAE1D,MAAO,GAEX,SAASvT,EAAK8X,GACV,OACKA,EAAW,GAAK,WACjB,IACAw5B,EAAYnlF,KAAK21C,OACjB,aAsER,OAlESwrC,EAAOznC,aAAa,KAAM,CAC/BxI,OAAQ,oGAAoGptC,MACxG,KAEJmtC,YAAa,iEAAiEntC,MAC1E,KAEJs/E,kBAAkB,EAClBzuC,SAAU,sDAAsD7wC,MAAM,KACtE4wC,cAAe,gCAAgC5wC,MAAM,KACrD2wC,YAAa,qBAAqB3wC,MAAM,KACxC6oC,eAAgB,CACZ+K,GAAI,OACJD,IAAK,UACLE,EAAG,cACHC,GAAI,gBACJC,IAAK,qBACLC,KAAM,4BAEVY,cAAe,SACf/B,KAAM,SAAUnqC,GACZ,MAAyC,MAAlCA,EAAM6gD,OAAO,GAAGrpD,eAE3BwkC,SAAU,SAAU2N,EAAOE,EAASiX,GAChC,OAAInX,EAAQ,IACW,IAAZmX,EAAmB,KAAO,MAEd,IAAZA,EAAmB,KAAO,MAGzCpW,SAAU,CACNC,QAAS,gBACTC,QAAS,oBACTC,SAAU,WACN,OAAOxD,EAAK92C,KAAKiD,MAAM,IAE3Bs3C,QAAS,oBACTC,SAAU,WACN,OAAO1D,EAAK92C,KAAKiD,MAAM,IAE3Bw3C,SAAU,KAEdQ,aAAc,CACVC,OAAQ,WACRC,KAAM,KACN7c,EAAG4oD,EACH9rC,GAAI8rC,EACJ/6E,EAAG+6E,EACH7rC,GAAI6rC,EACJnxC,EAAGmxC,EACH5rC,GAAI4rC,EACJpxC,EAAGoxC,EACH3rC,GAAI2rC,EACJlxC,EAAGkxC,EACHzrC,GAAIyrC,EACJxxC,EAAGwxC,EACHxrC,GAAIwrC,GAERlsC,uBAAwB,YACxB7L,QAAS,MACT2H,KAAM,CACFL,IAAK,EACLC,IAAK,MApHK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCJ5Bv0D,E,4MAAAA,EAKX,SAAUglF,GA2Ff,OAvFWA,EAAOznC,aAAa,QAAS,CACpCxI,OAAQ,CACJ5J,OAAQ,4GAA4GxjC,MAChH,KAEJm/E,WAAY,gGAAgGn/E,MACxG,MAGRmtC,YAAa,kDAAkDntC,MAAM,KACrE6wC,SAAU,gEAAgE7wC,MACtE,KAEJ4wC,cAAe,+BAA+B5wC,MAAM,KACpD2wC,YAAa,+BAA+B3wC,MAAM,KAClD6oC,eAAgB,CACZ+K,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,iBACJC,IAAK,wBACLC,KAAM,+BAEVZ,SAAU,CACNC,QAAS,aACTC,QAAS,YACTE,QAAS,YACTD,SAAU,WACN,MAAO,sBAEXE,SAAU,WACN,MAAO,8BAEXC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,UACRC,KAAM,UACN7c,EAAG,mBACH8c,GAAI,cACJjvC,EAAG,OACHkvC,GAAI,UACJtF,EAAG,MACHuF,GAAI,SACJxF,EAAG,KACHyF,GAAI,QACJvF,EAAG,OACHyF,GAAI,UACJ/F,EAAG,OACHgG,GAAI,WAERC,cAAe,oCACf/B,KAAM,SAAUnqC,GACZ,MAAO,uBAAuBhD,KAAKgD,IAEvCg8B,SAAU,SAAUmW,GAChB,OAAIA,EAAO,EACA,UACAA,EAAO,GACP,WACAA,EAAO,GACP,UAEA,YAGf5G,uBAAwB,0BACxB7L,QAAS,SAAUb,EAAQ0X,GACvB,OAAQA,GACJ,IAAK,MACL,IAAK,IACL,IAAK,IACL,IAAK,OACD,OAAe,IAAX1X,EACOA,EAAS,MAEbA,EAAS,MACpB,QACI,OAAOA,IAGnBwI,KAAM,CACFL,IAAK,EACLC,IAAK,MA3FK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCF5Bv0D,E,4MAAAA,EAKX,SAAUglF,GA0Ef,OAtESA,EAAOznC,aAAa,KAAM,CAC/BxI,OAAQ,yFAAyFptC,MAC7F,KAEJmtC,YAAa,kDAAkDntC,MAAM,KACrE6wC,SAAU,6CAA6C7wC,MAAM,KAC7D4wC,cAAe,8BAA8B5wC,MAAM,KACnD2wC,YAAa,uBAAuB3wC,MAAM,KAC1C6oC,eAAgB,CACZ+K,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,4BACLC,KAAM,mCAEVY,cAAe,wBACfkG,aAAc,SAAUD,EAAMnW,GAI1B,OAHa,KAATmW,IACAA,EAAO,GAEM,SAAbnW,EACOmW,EACa,UAAbnW,EACQ,IAARmW,EAAaA,EAAOA,EAAO,GACd,SAAbnW,GAAoC,UAAbA,EACvBmW,EAAO,QADX,GAIXnW,SAAU,SAAU2N,EAAOE,EAASiX,GAChC,OAAInX,EAAQ,GACD,OACAA,EAAQ,GACR,QACAA,EAAQ,GACR,OAEA,SAGfe,SAAU,CACNC,QAAS,sBACTC,QAAS,mBACTC,SAAU,kBACVC,QAAS,qBACTC,SAAU,uBACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,WACRC,KAAM,eACN7c,EAAG,iBACH8c,GAAI,WACJjvC,EAAG,UACHkvC,GAAI,WACJtF,EAAG,QACHuF,GAAI,SACJxF,EAAG,SACHyF,GAAI,UACJvF,EAAG,UACHyF,GAAI,WACJ/F,EAAG,UACHgG,GAAI,YAER5E,KAAM,CACFL,IAAK,EACLC,IAAK,MA1EK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCJ5Bv0D,E,4MAAAA,EAKX,SAAUglF;kCAIf;SAASkD,EAAO/uE,GACZ,OAAIA,EAAI,KAAQ,IAELA,EAAI,IAAO,EAK1B,SAAS2uE,EAAU54C,EAAQ+b,EAAel9C,EAAKyhD,GAC3C,IAAI38C,EAASq8B,EAAS,IACtB,OAAQnhC,GACJ,IAAK,IACD,OAAOk9C,GAAiBuE,EAClB,mBACA,mBACV,IAAK,KACD,OAAI04B,EAAOh5C,GAEHr8B,GACCo4C,GAAiBuE,EAAW,WAAa,YAG3C38C,EAAS,UACpB,IAAK,IACD,OAAOo4C,EAAgB,SAAW,SACtC,IAAK,KACD,OAAIi9B,EAAOh5C,GAEHr8B,GAAUo4C,GAAiBuE,EAAW,UAAY,WAE/CvE,EACAp4C,EAAS,SAEbA,EAAS,SACpB,IAAK,KACD,OAAIq1E,EAAOh5C,GAEHr8B,GACCo4C,GAAiBuE,EACZ,gBACA,iBAGP38C,EAAS,cACpB,IAAK,IACD,OAAIo4C,EACO,QAEJuE,EAAW,MAAQ,OAC9B,IAAK,KACD,OAAI04B,EAAOh5C,GACH+b,EACOp4C,EAAS,QAEbA,GAAU28C,EAAW,OAAS,SAC9BvE,EACAp4C,EAAS,QAEbA,GAAU28C,EAAW,MAAQ,QACxC,IAAK,IACD,OAAIvE,EACO,UAEJuE,EAAW,QAAU,SAChC,IAAK,KACD,OAAI04B,EAAOh5C,GACH+b,EACOp4C,EAAS,UAEbA,GAAU28C,EAAW,SAAW,WAChCvE,EACAp4C,EAAS,UAEbA,GAAU28C,EAAW,QAAU,UAC1C,IAAK,IACD,OAAOvE,GAAiBuE,EAAW,KAAO,MAC9C,IAAK,KACD,OAAI04B,EAAOh5C,GACAr8B,GAAUo4C,GAAiBuE,EAAW,KAAO,QAEjD38C,GAAUo4C,GAAiBuE,EAAW,KAAO,QAsDhE,OAlDSw1B,EAAOznC,aAAa,KAAM,CAC/BxI,OAAQ,oFAAoFptC,MACxF,KAEJmtC,YAAa,kDAAkDntC,MAAM,KACrE6wC,SAAU,mFAAmF7wC,MACzF,KAEJ4wC,cAAe,8BAA8B5wC,MAAM,KACnD2wC,YAAa,uBAAuB3wC,MAAM,KAC1C6oC,eAAgB,CACZ+K,GAAI,OACJD,IAAK,UACLE,EAAG,aACHC,GAAI,eACJC,IAAK,0BACLC,KAAM,iCAEVZ,SAAU,CACNC,QAAS,iBACTC,QAAS,oBACTC,SAAU,gBACVC,QAAS,iBACTC,SAAU,0BACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,WACRC,KAAM,iBACN7c,EAAG4oD,EACH9rC,GAAI8rC,EACJ/6E,EAAG+6E,EACH7rC,GAAI6rC,EACJnxC,EAAG,cACHuF,GAAI4rC,EACJpxC,EAAGoxC,EACH3rC,GAAI2rC,EACJlxC,EAAGkxC,EACHzrC,GAAIyrC,EACJxxC,EAAGwxC,EACHxrC,GAAIwrC,GAERlsC,uBAAwB,YACxB7L,QAAS,MACT2H,KAAM,CACFL,IAAK,EACLC,IAAK,MA1IK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCD5Bv0D,E,4MAAAA,EAKX,SAAUglF,GAuGf,OAnGSA,EAAOznC,aAAa,KAAM,CAC/BxI,OAAQ,gGAAgGptC,MACpG,KAEJmtC,YAAa,kDAAkDntC,MAAM,KACrE6wC,SAAU,2DAA2D7wC,MACjE,KAEJ4wC,cAAe,8BAA8B5wC,MAAM,KACnD2wC,YAAa,uBAAuB3wC,MAAM,KAC1C6oC,eAAgB,CACZ+K,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVZ,SAAU,CACNC,QAAS,WACL,MACI,WACgB,EAAfn3C,KAAKm2C,QAAc,OAA0B,IAAjBn2C,KAAKm2C,QAAgB,IAAM,OACxD,OAGRiB,QAAS,WACL,MACI,aACgB,EAAfp3C,KAAKm2C,QAAc,OAA0B,IAAjBn2C,KAAKm2C,QAAgB,IAAM,OACxD,OAGRkB,SAAU,WACN,MACI,WACgB,EAAfr3C,KAAKm2C,QAAc,OAA0B,IAAjBn2C,KAAKm2C,QAAgB,IAAM,OACxD,OAGRmB,QAAS,WACL,MACI,WACgB,EAAft3C,KAAKm2C,QAAc,OAA0B,IAAjBn2C,KAAKm2C,QAAgB,IAAM,OACxD,OAGRoB,SAAU,WACN,OACS,IADDv3C,KAAK21C,MAaD,uBACgB,EAAf31C,KAAKm2C,QACA,OACiB,IAAjBn2C,KAAKm2C,QACL,IACA,OACN,MAhBA,uBACgB,EAAfn2C,KAAKm2C,QACA,OACiB,IAAjBn2C,KAAKm2C,QACL,IACA,OACN,OAchBqB,SAAU,KAEdQ,aAAc,CACVC,OAAQ,SACRC,KAAM,QACN7c,EAAG,iBACH8c,GAAI,aACJjvC,EAAG,YACHkvC,GAAI,YACJtF,EAAG,SACHuF,GAAI,SACJxF,EAAG,YACHyF,GAAI,YACJ7R,EAAG,gBACH8R,GAAI,eACJxF,EAAG,UACHyF,GAAI,UACJ/F,EAAG,UACHgG,GAAI,WAERV,uBAAwB,WACxB7L,QAAS,MACT2H,KAAM,CACFL,IAAK,EACLC,IAAK,MAvGK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCL5Bv0D,E,4MAAAA,EAKX,SAAUglF,GA+Df,OA3DWA,EAAOznC,aAAa,QAAS,CACpCxI,OAAQ,gGAAgGptC,MACpG,KAEJmtC,YAAa,kDAAkDntC,MAAM,KACrE6wC,SAAU,2DAA2D7wC,MACjE,KAEJ4wC,cAAe,8BAA8B5wC,MAAM,KACnD2wC,YAAa,uBAAuB3wC,MAAM,KAC1C6oC,eAAgB,CACZ+K,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVZ,SAAU,CACNC,QAAS,iBACTC,QAAS,mBACTC,SAAU,iBACVC,QAAS,iBACTC,SAAU,WACN,OACS,IADDv3C,KAAK21C,MAIE,6BAFA,8BAKnB6B,SAAU,KAEdQ,aAAc,CACVC,OAAQ,SAAU5c,GACd,OAAQ,YAAY7xB,KAAK6xB,GAAK,MAAQ,MAAQ,IAAMA,GAExD6c,KAAM,QACN7c,EAAG,iBACH8c,GAAI,aACJjvC,EAAG,YACHkvC,GAAI,YACJtF,EAAG,SACHuF,GAAI,SACJxF,EAAG,YACHyF,GAAI,YACJvF,EAAG,UACHyF,GAAI,UACJ/F,EAAG,UACHgG,GAAI,WAERV,uBAAwB,WACxB7L,QAAS,MACT2H,KAAM,CACFL,IAAK,EACLC,IAAK,MA/DK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCH5Bv0D,E,4MAAAA,EAKX,SAAUglF,GAmJf,OA/ISA,EAAOznC,aAAa,KAAM,CAC/BqL,KAAM,CACF,CACIkE,MAAO,aACPhlB,OAAQ,EACRtiC,KAAM,KACNqjD,OAAQ,IACRrL,KAAM,KAEV,CACIsP,MAAO,aACP/zC,MAAO,aACP+uB,OAAQ,EACRtiC,KAAM,KACNqjD,OAAQ,IACRrL,KAAM,KAEV,CACIsP,MAAO,aACP/zC,MAAO,aACP+uB,OAAQ,EACRtiC,KAAM,KACNqjD,OAAQ,IACRrL,KAAM,KAEV,CACIsP,MAAO,aACP/zC,MAAO,aACP+uB,OAAQ,EACRtiC,KAAM,KACNqjD,OAAQ,IACRrL,KAAM,KAEV,CACIsP,MAAO,aACP/zC,MAAO,aACP+uB,OAAQ,EACRtiC,KAAM,KACNqjD,OAAQ,IACRrL,KAAM,KAEV,CACIsP,MAAO,aACP/zC,MAAO,aACP+uB,OAAQ,EACRtiC,KAAM,KACNqjD,OAAQ,KACRrL,KAAM,MAEV,CACIsP,MAAO,aACP/zC,OAAQ62C,IACR9nB,OAAQ,EACRtiC,KAAM,MACNqjD,OAAQ,KACRrL,KAAM,OAGdyrC,oBAAqB,WACrBv/B,oBAAqB,SAAUr5C,EAAO5D,GAClC,MAAoB,MAAbA,EAAM,GAAa,EAAIwmB,SAASxmB,EAAM,IAAM4D,EAAO,KAE9D0kC,OAAQ,yCAAyCptC,MAAM,KACvDmtC,YAAa,yCAAyCntC,MAClD,KAEJ6wC,SAAU,8BAA8B7wC,MAAM,KAC9C4wC,cAAe,gBAAgB5wC,MAAM,KACrC2wC,YAAa,gBAAgB3wC,MAAM,KACnC6oC,eAAgB,CACZ+K,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,YACJC,IAAK,kBACLC,KAAM,uBACNphC,EAAG,aACHwtE,GAAI,YACJC,IAAK,kBACLC,KAAM,wBAEV1rC,cAAe,SACf/B,KAAM,SAAUnqC,GACZ,MAAiB,OAAVA,GAEXg8B,SAAU,SAAUmW,EAAMkB,EAAQyN,GAC9B,OAAI3O,EAAO,GACA,KAEA,MAGfzH,SAAU,CACNC,QAAS,UACTC,QAAS,UACTC,SAAU,SAAU1vB,GAChB,OAAIA,EAAIksB,SAAW7zC,KAAK6zC,OACb,cAEA,WAGfyD,QAAS,UACTC,SAAU,SAAU5vB,GAChB,OAAI3nB,KAAK6zC,SAAWlsB,EAAIksB,OACb,cAEA,WAGf2D,SAAU,KAEdO,uBAAwB,WACxB7L,QAAS,SAAUb,EAAQ0X,GACvB,OAAQA,GACJ,IAAK,IACD,OAAkB,IAAX1X,EAAe,KAAOA,EAAS,IAC1C,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAOA,EAAS,IACpB,QACI,OAAOA,IAGnB2M,aAAc,CACVC,OAAQ,MACRC,KAAM,MACN7c,EAAG,KACH8c,GAAI,MACJjvC,EAAG,KACHkvC,GAAI,MACJtF,EAAG,MACHuF,GAAI,OACJxF,EAAG,KACHyF,GAAI,MACJvF,EAAG,MACHyF,GAAI,OACJ/F,EAAG,KACHgG,GAAI,UAnJM,WAAnB,EAAOjS,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCF5Bv0D,E,4MAAAA,EAKX,SAAUglF,GA0Ef,OAtESA,EAAOznC,aAAa,KAAM,CAC/BxI,OAAQ,yFAAyFptC,MAC7F,KAEJmtC,YAAa,kDAAkDntC,MAAM,KACrE6wC,SAAU,+CAA+C7wC,MAAM,KAC/D4wC,cAAe,8BAA8B5wC,MAAM,KACnD2wC,YAAa,uBAAuB3wC,MAAM,KAC1C6oC,eAAgB,CACZ+K,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,4BACLC,KAAM,mCAEVY,cAAe,6BACfkG,aAAc,SAAUD,EAAMnW,GAI1B,OAHa,KAATmW,IACAA,EAAO,GAEM,WAAbnW,EACOmW,EACa,WAAbnW,EACQ,IAARmW,EAAaA,EAAOA,EAAO,GACd,WAAbnW,GAAsC,UAAbA,EACzBmW,EAAO,QADX,GAIXnW,SAAU,SAAU2N,EAAOE,EAASiX,GAChC,OAAInX,EAAQ,GACD,SACAA,EAAQ,GACR,SACAA,EAAQ,GACR,SAEA,SAGfe,SAAU,CACNC,QAAS,2BACTC,QAAS,sBACTC,SAAU,kBACVC,QAAS,wBACTC,SAAU,4BACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,gBACRC,KAAM,uBACN7c,EAAG,kBACH8c,GAAI,WACJjvC,EAAG,kBACHkvC,GAAI,WACJtF,EAAG,gBACHuF,GAAI,SACJxF,EAAG,WACHyF,GAAI,YACJvF,EAAG,UACHyF,GAAI,WACJ/F,EAAG,SACHgG,GAAI,WAER5E,KAAM,CACFL,IAAK,EACLC,IAAK,MA1EK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCJ5Bv0D,E,4MAAAA,EAKX,SAAUglF,GA2Ff,OAvFSA,EAAOznC,aAAa,KAAM,CAC/BxI,OAAQ,qGAAqGptC,MACzG,KAEJmtC,YAAa,kDAAkDntC,MAAM,KACrE6wC,SAAU,CACNsuC,WAAY,gEAAgEn/E,MACxE,KAEJwjC,OAAQ,iEAAiExjC,MACrE,KAEJkoD,SAAU,iBAEdtX,cAAe,8BAA8B5wC,MAAM,KACnD2wC,YAAa,uBAAuB3wC,MAAM,KAC1C6oC,eAAgB,CACZ+K,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVZ,SAAU,CACNC,QAAS,iBACTC,QAAS,iBACTE,QAAS,kBACTD,SAAU,wBACVE,SAAU,oBACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,SAAU5c,GACd,OAAOA,EAAE74B,QAAQ,gCAAiC,SAC9C6iF,EACAC,EACAC,GAEA,MAAc,MAAPA,EAAaD,EAAK,KAAOA,EAAKC,EAAK,QAGlDrtC,KAAM,SAAU7c,GACZ,MAAI,4BAA4B7xB,KAAK6xB,GAC1BA,EAAE74B,QAAQ,SAAU,UAE3B,OAAOgH,KAAK6xB,GACLA,EAAE74B,QAAQ,QAAS,YAEvB64B,GAEXA,EAAG,iBACH8c,GAAI,UACJjvC,EAAG,OACHkvC,GAAI,UACJtF,EAAG,QACHuF,GAAI,WACJxF,EAAG,MACHyF,GAAI,SACJvF,EAAG,MACHyF,GAAI,SACJ/F,EAAG,OACHgG,GAAI,WAERV,uBAAwB,8BACxB7L,QAAS,SAAUb,GACf,OAAe,IAAXA,EACOA,EAEI,IAAXA,EACOA,EAAS,MAGhBA,EAAS,IACRA,GAAU,KAAOA,EAAS,IAAO,GAClCA,EAAS,KAAQ,EAEV,MAAQA,EAEZA,EAAS,MAEpBwI,KAAM,CACFL,IAAK,EACLC,IAAK,MA3FK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCH5Bv0D,E,4MAAAA,EAKX,SAAUglF;kCAIf;IAAIiB,EAAW,CACXtgD,EAAG,MACH2/C,EAAG,MACHC,EAAG,MACHC,EAAG,MACHC,EAAG,MACHC,EAAG,MACHC,EAAG,MACHC,EAAG,MACHC,EAAG,MACHC,EAAG,MACHS,GAAI,MACJH,GAAI,MACJI,GAAI,MACJ6C,GAAI,MACJhD,GAAI,MACJI,GAAI,MACJP,GAAI,MACJC,GAAI,MACJO,GAAI,MACJJ,IAAK,OAyDT,OAtDStB,EAAOznC,aAAa,KAAM,CAC/BxI,OAAQ,qFAAqFptC,MACzF,KAEJmtC,YAAa,kDAAkDntC,MAAM,KACrE6wC,SAAU,0DAA0D7wC,MAChE,KAEJ4wC,cAAe,8BAA8B5wC,MAAM,KACnD2wC,YAAa,uBAAuB3wC,MAAM,KAC1C6oC,eAAgB,CACZ+K,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVZ,SAAU,CACNC,QAAS,mBACTC,QAAS,mBACTC,SAAU,kBACVC,QAAS,kBACTC,SAAU,kCACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,YACRC,KAAM,WACN7c,EAAG,iBACH8c,GAAI,YACJjvC,EAAG,YACHkvC,GAAI,WACJtF,EAAG,YACHuF,GAAI,WACJxF,EAAG,UACHyF,GAAI,SACJvF,EAAG,SACHyF,GAAI,QACJ/F,EAAG,UACHgG,GAAI,UAERV,uBAAwB,kBACxB7L,QAAS,SAAUb,GAGf,OAAOA,GAAU+2C,EAAS/2C,IAAW+2C,EAF7B/2C,EAAS,KAEmC+2C,EADlC,KAAV/2C,EAAgB,IAAM,QAGlCwI,KAAM,CACFL,IAAK,EACLC,IAAK,MAjFK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCH5Bv0D,E,4MAAAA,EAKX,SAAUglF;kCAIf;IAAIK,EAAY,CACRC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHngD,EAAG,KAEPogD,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KA2Eb,OAxESf,EAAOznC,aAAa,KAAM,CAC/BxI,OAAQ,yEAAyEptC,MAC7E,KAEJmtC,YAAa,yEAAyEntC,MAClF,KAEJ6wC,SAAU,iDAAiD7wC,MAAM,KACjE4wC,cAAe,oBAAoB5wC,MAAM,KACzC2wC,YAAa,oBAAoB3wC,MAAM,KACvCq+E,oBAAoB,EACpBx1C,eAAgB,CACZ+K,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVY,cAAe,cACf/B,KAAM,SAAUnqC,GACZ,MAAiB,UAAVA,GAEXg8B,SAAU,SAAUmW,EAAMkB,EAAQyN,GAC9B,OAAI3O,EAAO,GACA,QAEA,SAGfzH,SAAU,CACNC,QAAS,oBACTC,QAAS,kBACTC,SAAU,iBACVC,QAAS,qBACTC,SAAU,8BACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,QACRC,KAAM,QACN7c,EAAG,iBACH8c,GAAI,YACJjvC,EAAG,UACHkvC,GAAI,UACJtF,EAAG,UACHuF,GAAI,UACJxF,EAAG,UACHyF,GAAI,UACJvF,EAAG,QACHyF,GAAI,QACJ/F,EAAG,WACHgG,GAAI,YAERV,uBAAwB,YACxB7L,QAAS,OACT+S,SAAU,SAAUzhC,GAChB,OAAOA,EAAOhb,QAAQ,gBAAiB,SAAUoG,GAC7C,OAAOs5E,EAAUt5E,MAGzBu+C,WAAY,SAAU3pC,GAClB,OAAOA,EAAOhb,QAAQ,MAAO,SAAUoG,GACnC,OAAO44E,EAAU54E,MAGzBirC,KAAM,CACFL,IAAK,EACLC,IAAK,MArGK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCH5Bv0D,E,4MAAAA,EAKX,SAAUglF;kCAIf;IAAIK,EAAY,CACRC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHngD,EAAG,KAEPogD,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAgGb,OA7FSf,EAAOznC,aAAa,KAAM,CAC/BxI,OAAQ,6FAA6FptC,MACjG,KAEJmtC,YAAa,2EAA2EntC,MACpF,KAEJs/E,kBAAkB,EAClBzuC,SAAU,0DAA0D7wC,MAChE,KAEJ4wC,cAAe,qCAAqC5wC,MAAM,KAC1D2wC,YAAa,wBAAwB3wC,MAAM,KAC3C6oC,eAAgB,CACZ+K,GAAI,SACJD,IAAK,YACLE,EAAG,aACHC,GAAI,cACJC,IAAK,sBACLC,KAAM,6BAEVZ,SAAU,CACNC,QAAS,YACTC,QAAS,YACTC,SAAU,WACVC,QAAS,cACTC,SAAU,oBACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,UACRC,KAAM,WACN7c,EAAG,gBACH8c,GAAI,gBACJjvC,EAAG,aACHkvC,GAAI,WACJtF,EAAG,YACHuF,GAAI,UACJxF,EAAG,WACHyF,GAAI,SACJvF,EAAG,cACHyF,GAAI,YACJ/F,EAAG,YACHgG,GAAI,WAERwG,SAAU,SAAUzhC,GAChB,OAAOA,EAAOhb,QAAQ,gBAAiB,SAAUoG,GAC7C,OAAOs5E,EAAUt5E,MAGzBu+C,WAAY,SAAU3pC,GAClB,OAAOA,EAAOhb,QAAQ,MAAO,SAAUoG,GACnC,OAAO44E,EAAU54E,MAGzB8vC,cAAe,gCACfkG,aAAc,SAAUD,EAAMnW,GAI1B,OAHa,KAATmW,IACAA,EAAO,GAEM,WAAbnW,EACOmW,EAAO,EAAIA,EAAOA,EAAO,GACZ,aAAbnW,EACAmW,EACa,aAAbnW,EACQ,IAARmW,EAAaA,EAAOA,EAAO,GACd,SAAbnW,EACAmW,EAAO,QADX,GAIXnW,SAAU,SAAUmW,EAAMkB,EAAQyN,GAC9B,OAAI3O,EAAO,EACA,SACAA,EAAO,GACP,WACAA,EAAO,GACP,WACAA,EAAO,GACP,OAEA,UAGf5G,uBAAwB,eACxB7L,QAAS,SAAUb,GACf,OAAOA,EAAS,OAEpBwI,KAAM,CACFL,IAAK,EACLC,IAAK,MA1HK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCF5Bv0D,E,4MAAAA,EAKX,SAAUglF,GAyEf,OArESA,EAAOznC,aAAa,KAAM,CAC/BxI,OAAQ,yCAAyCptC,MAAM,KACvDmtC,YAAa,yCAAyCntC,MAClD,KAEJ6wC,SAAU,8BAA8B7wC,MAAM,KAC9C4wC,cAAe,gBAAgB5wC,MAAM,KACrC2wC,YAAa,gBAAgB3wC,MAAM,KACnC6oC,eAAgB,CACZ+K,GAAI,SACJD,IAAK,YACLE,EAAG,cACHC,GAAI,gBACJC,IAAK,uBACLC,KAAM,4BACNphC,EAAG,cACHwtE,GAAI,gBACJC,IAAK,uBACLC,KAAM,6BAEVltC,SAAU,CACNC,QAAS,QACTC,QAAS,QACTC,SAAU,UACVC,QAAS,QACTC,SAAU,cACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,OACRC,KAAM,OACN7c,EAAG,MACH8c,GAAI,MACJjvC,EAAG,KACHkvC,GAAI,MACJtF,EAAG,OACHuF,GAAI,OACJxF,EAAG,KACHyF,GAAI,MACJvF,EAAG,MACHyF,GAAI,MACJ/F,EAAG,MACHgG,GAAI,OAERV,uBAAwB,iBACxB7L,QAAS,SAAUb,EAAQ0X,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAO1X,EAAS,IACpB,IAAK,IACD,OAAOA,EAAS,IACpB,IAAK,IACL,IAAK,IACD,OAAOA,EAAS,IACpB,QACI,OAAOA,IAGnBqN,cAAe,QACf/B,KAAM,SAAUhiC,GACZ,MAAiB,OAAVA,GAEX6zB,SAAU,SAAUmW,EAAMkB,EAAQ4lC,GAC9B,OAAO9mC,EAAO,GAAK,KAAO,SAzEhB,WAAnB,EAAOnY,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCJ5Bv0D,E,4MAAAA,EAKX,SAAUglF;kCAIf;IAAIK,EAAY,CACRC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHngD,EAAG,KAEPogD,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAEThxC,EAAS,CACL,eACA,QACA,QACA,QACA,QACA,WACA,SACA,MACA,UACA,eACA,eACA,gBA6ER,OA1ESiwC,EAAOznC,aAAa,KAAM,CAC/BxI,OAAQA,EACRD,YAAaC,EACbyD,SAAU,0EAA0E7wC,MAChF,KAEJ4wC,cAAe,2DAA2D5wC,MACtE,KAEJ2wC,YAAa,gBAAgB3wC,MAAM,KACnCq+E,oBAAoB,EACpBx1C,eAAgB,CACZ+K,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVY,cAAe,kBACf/B,KAAM,SAAUnqC,GACZ,MAAO,UAAUhD,KAAKgD,IAE1Bg8B,SAAU,SAAUmW,EAAMkB,EAAQyN,GAC9B,OAAI3O,EAAO,GACA,UAEA,WAGfzH,SAAU,CACNC,QAAS,sBACTC,QAAS,uBACTC,SAAU,oBACVC,QAAS,qBACTC,SAAU,oBACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,SACRC,KAAM,KACN7c,EAAG,kBACH8c,GAAI,WACJjvC,EAAG,cACHkvC,GAAI,YACJtF,EAAG,eACHuF,GAAI,aACJxF,EAAG,WACHyF,GAAI,SACJvF,EAAG,YACHyF,GAAI,UACJ/F,EAAG,WACHgG,GAAI,UAERwG,SAAU,SAAUzhC,GAChB,OAAOA,EACFhb,QAAQ,gBAAiB,SAAUoG,GAChC,OAAOs5E,EAAUt5E,KAEpBpG,QAAQ,KAAM,MAEvB2kD,WAAY,SAAU3pC,GAClB,OAAOA,EACFhb,QAAQ,MAAO,SAAUoG,GACtB,OAAO44E,EAAU54E,KAEpBpG,QAAQ,KAAM,MAEvBqxC,KAAM,CACFL,IAAK,EACLC,IAAK,OArHK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCH5Bv0D,E,4MAAAA,EAKX,SAAUglF;kCAIf;IAAIiB,EAAW,CACXtgD,EAAG,MACH2/C,EAAG,MACHC,EAAG,MACHC,EAAG,MACHC,EAAG,MACHC,EAAG,MACHC,EAAG,MACHC,EAAG,MACHC,EAAG,MACHC,EAAG,MACHS,GAAI,MACJH,GAAI,MACJI,GAAI,MACJ6C,GAAI,MACJhD,GAAI,MACJI,GAAI,MACJP,GAAI,MACJC,GAAI,MACJO,GAAI,MACJJ,IAAK,OA2DT,OAxDStB,EAAOznC,aAAa,KAAM,CAC/BxI,OAAQ,kFAAkFptC,MACtF,KAEJmtC,YAAa,qDAAqDntC,MAC9D,KAEJ6wC,SAAU,2DAA2D7wC,MACjE,KAEJ4wC,cAAe,8BAA8B5wC,MAAM,KACnD2wC,YAAa,uBAAuB3wC,MAAM,KAC1C6oC,eAAgB,CACZ+K,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVZ,SAAU,CACNC,QAAS,kBACTC,QAAS,kBACTC,SAAU,iBACVC,QAAS,kBACTC,SAAU,wCACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,YACRC,KAAM,WACN7c,EAAG,iBACH8c,GAAI,YACJjvC,EAAG,YACHkvC,GAAI,WACJtF,EAAG,WACHuF,GAAI,UACJxF,EAAG,UACHyF,GAAI,SACJvF,EAAG,SACHyF,GAAI,QACJ/F,EAAG,UACHgG,GAAI,UAERV,uBAAwB,wBACxB7L,QAAS,SAAUb,GAGf,OAAOA,GAAU+2C,EAAS/2C,IAAW+2C,EAF7B/2C,EAAS,KAEmC+2C,EADlC,KAAV/2C,EAAgB,IAAM,QAGlCwI,KAAM,CACFL,IAAK,EACLC,IAAK,MAnFK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCF5Bv0D,E,4MAAAA,EAKX,SAAUglF;kCAIf;SAASmD,EAAoBj5C,EAAQ+b,EAAel9C,EAAKyhD,GACrD,IAAIrkB,EAAS,CACTp+B,EAAG,CAAC,aAAc,gBAClB4pC,EAAG,CAAC,YAAa,eACjBD,EAAG,CAAC,UAAW,aACfE,EAAG,CAAC,WAAY,eAChBN,EAAG,CAAC,UAAW,eAEnB,OAAO2U,EAAgB9f,EAAOp9B,GAAK,GAAKo9B,EAAOp9B,GAAK,GAuBxD,SAASw7E,EAA4Br6C,GAEjC,GADAA,EAASjc,SAASic,EAAQ,IACtBpF,MAAMoF,GACN,OAAO,EAEX,GAAIA,EAAS,EAET,OAAO,EACJ,GAAIA,EAAS,GAEhB,OAAI,GAAKA,GAAUA,GAAU,EAI1B,GAAIA,EAAS,IAAK,CAErB,IAAI63C,EAAY73C,EAAS,GAEzB,OAAkB,GAAd63C,EACOwC,EAFMr6C,EAAS,IAInBq6C,EAA4BxC,GAChC,GAAI73C,EAAS,IAAO,CAEvB,KAAiB,IAAVA,GACHA,GAAkB,GAEtB,OAAOq6C,EAA4Br6C,GAInC,OAAOq6C,EADPr6C,GAAkB,KAoE1B,OA/DS81C,EAAOznC,aAAa,KAAM,CAC/BxI,OAAQ,uFAAuFptC,MAC3F,KAEJmtC,YAAa,+DAA+DntC,MACxE,KAEJs/E,kBAAkB,EAClBzuC,SAAU,mEAAmE7wC,MACzE,KAEJ4wC,cAAe,8BAA8B5wC,MAAM,KACnD2wC,YAAa,uBAAuB3wC,MAAM,KAC1Cq+E,oBAAoB,EACpBx1C,eAAgB,CACZ+K,GAAI,cACJD,IAAK,iBACLE,EAAG,aACHC,GAAI,eACJC,IAAK,2BACLC,KAAM,kCAEVZ,SAAU,CACNC,QAAS,eACTK,SAAU,IACVJ,QAAS,eACTC,SAAU,eACVC,QAAS,mBACTC,SAAU,WAEN,OAAQv3C,KAAK21C,OACT,KAAK,EACL,KAAK,EACD,MAAO,0BACX,QACI,MAAO,4BAIvBqC,aAAc,CACVC,OAhGR,SAA2Bz6B,GAEvB,OAAIkoE,EADSloE,EAAOmuB,OAAO,EAAGnuB,EAAOrgB,QAAQ,OAElC,KAAOqgB,EAEX,MAAQA,GA4FX06B,KA1FR,SAAyB16B,GAErB,OAAIkoE,EADSloE,EAAOmuB,OAAO,EAAGnuB,EAAOrgB,QAAQ,OAElC,QAAUqgB,EAEd,SAAWA,GAsFd6d,EAAG,kBACH8c,GAAI,cACJjvC,EAAGo7E,EACHlsC,GAAI,cACJtF,EAAGwxC,EACHjsC,GAAI,aACJxF,EAAGyxC,EACHhsC,GAAI,UACJvF,EAAGuxC,EACH9rC,GAAI,WACJ/F,EAAG6xC,EACH7rC,GAAI,WAERV,uBAAwB,YACxB7L,QAAS,MACT2H,KAAM,CACFL,IAAK,EACLC,IAAK,MArIK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCJ5Bv0D,E,4MAAAA,EAKX,SAAUglF,GAgEf,OA5DSA,EAAOznC,aAAa,KAAM,CAC/BxI,OAAQ,6EAA6EptC,MACjF,KAEJmtC,YAAa,6EAA6EntC,MACtF,KAEJ6wC,SAAU,sCAAsC7wC,MAAM,KACtD4wC,cAAe,oCAAoC5wC,MAAM,KACzD2wC,YAAa,mBAAmB3wC,MAAM,KACtCq+E,oBAAoB,EACpBx1C,eAAgB,CACZ+K,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,6BAEVY,cAAe,kBACf/B,KAAM,SAAUnqC,GACZ,MAAiB,WAAVA,GAEXg8B,SAAU,SAAUmW,EAAMkB,EAAQyN,GAC9B,OAAI3O,EAAO,GACA,WAEA,UAGfzH,SAAU,CACNC,QAAS,kBACTC,QAAS,mBACTC,SAAU,wBACVC,QAAS,qBACTC,SAAU,4BACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,SACRC,KAAM,WACN7c,EAAG,mBACH8c,GAAI,YACJjvC,EAAG,SACHkvC,GAAI,UACJtF,EAAG,YACHuF,GAAI,aACJxF,EAAG,QACHyF,GAAI,SACJvF,EAAG,UACHyF,GAAI,WACJ/F,EAAG,OACHgG,GAAI,SAERV,uBAAwB,eACxB7L,QAAS,SAAUb,GACf,MAAO,MAAQA,MAhEL,WAAnB,EAAO7E,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCH5Bv0D,E,4MAAAA,EAKX,SAAUglF;kCAIf;IAAIj0C,EAAQ,CACRiL,GAAI,6BACJjvC,EAAG,wBACHkvC,GAAI,0BACJtF,EAAG,2BACHuF,GAAI,4BACJxF,EAAG,qBACHyF,GAAI,sBACJvF,EAAG,uBACHyF,GAAI,4BACJ/F,EAAG,mBACHgG,GAAI,oBASR,SAASktC,EAAkBt6C,EAAQ+b,EAAel9C,EAAKyhD,GACnD,OAAOvE,EACD27B,EAAM74E,GAAK,GACXyhD,EACAo3B,EAAM74E,GAAK,GACX64E,EAAM74E,GAAK,GAErB,SAASuQ,EAAQ4wB,GACb,OAAOA,EAAS,IAAO,GAAe,GAATA,GAAeA,EAAS,GAEzD,SAAS03C,EAAM74E,GACX,OAAOgjC,EAAMhjC,GAAKpG,MAAM,KAE5B,SAASmgF,EAAU54C,EAAQ+b,EAAel9C,EAAKyhD,GAC3C,IAAI38C,EAASq8B,EAAS,IACtB,OAAe,IAAXA,EAEIr8B,EAAS22E,EAAkBt6C,EAAQ+b,EAAel9C,EAAI,GAAIyhD,GAEvDvE,EACAp4C,GAAUyL,EAAQ4wB,GAAU03C,EAAM74E,GAAK,GAAK64E,EAAM74E,GAAK,IAE1DyhD,EACO38C,EAAS+zE,EAAM74E,GAAK,GAEpB8E,GAAUyL,EAAQ4wB,GAAU03C,EAAM74E,GAAK,GAAK64E,EAAM74E,GAAK,IAyE1E,OArESi3E,EAAOznC,aAAa,KAAM,CAC/BxI,OAAQ,CACJ5J,OAAQ,oGAAoGxjC,MACxG,KAEJm/E,WAAY,kGAAkGn/E,MAC1G,KAEJkoD,SAAU,+DAEd/a,YAAa,kDAAkDntC,MAAM,KACrE6wC,SAAU,CACNrN,OAAQ,oFAAoFxjC,MACxF,KAEJm/E,WAAY,2FAA2Fn/E,MACnG,KAEJkoD,SAAU,cAEdtX,cAAe,8BAA8B5wC,MAAM,KACnD2wC,YAAa,iBAAiB3wC,MAAM,KACpCq+E,oBAAoB,EACpBx1C,eAAgB,CACZ+K,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,wBACJC,IAAK,sCACLC,KAAM,4CACNphC,EAAG,aACHwtE,GAAI,wBACJC,IAAK,sCACLC,KAAM,4CAEVltC,SAAU,CACNC,QAAS,gBACTC,QAAS,aACTC,SAAU,UACVC,QAAS,aACTC,SAAU,qBACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,QACRC,KAAM,WACN7c,EAlFR,SAA0BgQ,EAAQ+b,EAAel9C,EAAKyhD,GAClD,OAAIvE,EACO,kBAEAuE,EAAW,kBAAoB,mBA+EtCxT,GAAI8rC,EACJ/6E,EAAGy8E,EACHvtC,GAAI6rC,EACJnxC,EAAG6yC,EACHttC,GAAI4rC,EACJpxC,EAAG8yC,EACHrtC,GAAI2rC,EACJlxC,EAAG4yC,EACHntC,GAAIyrC,EACJxxC,EAAGkzC,EACHltC,GAAIwrC,GAERlsC,uBAAwB,cACxB7L,QAAS,SAAUb,GACf,OAAOA,EAAS,QAEpBwI,KAAM,CACFL,IAAK,EACLC,IAAK,MA1HK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCF5Bv0D,E,4MAAAA,EAKX,SAAUglF;kCAIf;IAAIj0C,EAAQ,CACRiL,GAAI,qCAAqCr0C,MAAM,KAC/CoF,EAAG,iCAAiCpF,MAAM,KAC1Cs0C,GAAI,iCAAiCt0C,MAAM,KAC3CgvC,EAAG,iCAAiChvC,MAAM,KAC1Cu0C,GAAI,iCAAiCv0C,MAAM,KAC3C+uC,EAAG,6BAA6B/uC,MAAM,KACtCw0C,GAAI,6BAA6Bx0C,MAAM,KACvCivC,EAAG,iCAAiCjvC,MAAM,KAC1C00C,GAAI,iCAAiC10C,MAAM,KAC3C2uC,EAAG,wBAAwB3uC,MAAM,KACjC20C,GAAI,wBAAwB30C,MAAM,MAKtC,SAASwjC,EAAOy7C,EAAO13C,EAAQ+b,GAC3B,OAAIA,EAEO/b,EAAS,IAAO,GAAKA,EAAS,KAAQ,GAAK03C,EAAM,GAAKA,EAAM,GAI5D13C,EAAS,IAAO,GAAKA,EAAS,KAAQ,GAAK03C,EAAM,GAAKA,EAAM,GAG3E,SAASD,EAAuBz3C,EAAQ+b,EAAel9C,GACnD,OAAOmhC,EAAS,IAAM/D,EAAO4F,EAAMhjC,GAAMmhC,EAAQ+b,GAErD,SAASw+B,EAAyBv6C,EAAQ+b,EAAel9C,GACrD,OAAOo9B,EAAO4F,EAAMhjC,GAAMmhC,EAAQ+b,GAyDtC,OAnDS+5B,EAAOznC,aAAa,KAAM,CAC/BxI,OAAQ,uGAAuGptC,MAC3G,KAEJmtC,YAAa,kDAAkDntC,MAAM,KACrE6wC,SAAU,0EAA0E7wC,MAChF,KAEJ4wC,cAAe,kBAAkB5wC,MAAM,KACvC2wC,YAAa,kBAAkB3wC,MAAM,KACrCq+E,oBAAoB,EACpBx1C,eAAgB,CACZ+K,GAAI,QACJD,IAAK,WACLE,EAAG,cACHC,GAAI,uBACJC,IAAK,8BACLC,KAAM,qCAEVZ,SAAU,CACNC,QAAS,uBACTC,QAAS,oBACTC,SAAU,qBACVC,QAAS,sBACTC,SAAU,gCACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,SACRC,KAAM,WACN7c,EAlCR,SAAyBgQ,EAAQ+b,GAC7B,OAAOA,EAAgB,iBAAmB,kBAkCtCjP,GAAI2qC,EACJ55E,EAAG08E,EACHxtC,GAAI0qC,EACJhwC,EAAG8yC,EACHvtC,GAAIyqC,EACJjwC,EAAG+yC,EACHttC,GAAIwqC,EACJ/vC,EAAG6yC,EACHptC,GAAIsqC,EACJrwC,EAAGmzC,EACHntC,GAAIqqC,GAER/qC,uBAAwB,YACxB7L,QAAS,MACT2H,KAAM,CACFL,IAAK,EACLC,IAAK,MA3FK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCJ5Bv0D,E,4MAAAA,EAKX,SAAUglF;kCAIf;IAAI0E,EAAa,CACbC,MAAO,CAEH3tC,GAAI,CAAC,SAAU,UAAW,WAC1BjvC,EAAG,CAAC,cAAe,iBACnBkvC,GAAI,CAAC,QAAS,SAAU,UACxBtF,EAAG,CAAC,YAAa,eACjBuF,GAAI,CAAC,MAAO,OAAQ,QACpBC,GAAI,CAAC,MAAO,OAAQ,QACpBE,GAAI,CAAC,SAAU,UAAW,WAC1BC,GAAI,CAAC,SAAU,SAAU,WAE7BstC,uBAAwB,SAAU16C,EAAQ26C,GACtC,OAAkB,IAAX36C,EACD26C,EAAQ,GACE,GAAV36C,GAAeA,GAAU,EACzB26C,EAAQ,GACRA,EAAQ,IAElB/B,UAAW,SAAU54C,EAAQ+b,EAAel9C,GACxC,IAAI87E,EAAUH,EAAWC,MAAM57E,GAC/B,OAAmB,IAAfA,EAAIvK,OACGynD,EAAgB4+B,EAAQ,GAAKA,EAAQ,GAGxC36C,EACA,IACAw6C,EAAWE,uBAAuB16C,EAAQ26C,KAsF1D,OAhFS7E,EAAOznC,aAAa,KAAM,CAC/BxI,OAAQ,mFAAmFptC,MACvF,KAEJmtC,YAAa,2DAA2DntC,MACpE,KAEJs/E,kBAAkB,EAClBzuC,SAAU,4DAA4D7wC,MAClE,KAEJ4wC,cAAe,qCAAqC5wC,MAAM,KAC1D2wC,YAAa,uBAAuB3wC,MAAM,KAC1Cq+E,oBAAoB,EACpBx1C,eAAgB,CACZ+K,GAAI,OACJD,IAAK,UACLE,EAAG,aACHC,GAAI,eACJC,IAAK,oBACLC,KAAM,2BAEVZ,SAAU,CACNC,QAAS,eACTC,QAAS,gBAETC,SAAU,WACN,OAAQr3C,KAAK21C,OACT,KAAK,EACD,MAAO,wBACX,KAAK,EACD,MAAO,uBACX,KAAK,EACD,MAAO,sBACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,oBAGnB2B,QAAS,cACTC,SAAU,WAUN,MATmB,CACf,6BACA,iCACA,4BACA,4BACA,8BACA,2BACA,4BAEgBv3C,KAAK21C,QAE7B6B,SAAU,KAEdQ,aAAc,CACVC,OAAQ,QACRC,KAAM,WACN7c,EAAG,mBACH8c,GAAI0tC,EAAW5B,UACf/6E,EAAG28E,EAAW5B,UACd7rC,GAAIytC,EAAW5B,UACfnxC,EAAG+yC,EAAW5B,UACd5rC,GAAIwtC,EAAW5B,UACfpxC,EAAG,MACHyF,GAAIutC,EAAW5B,UACflxC,EAAG,SACHyF,GAAIqtC,EAAW5B,UACfxxC,EAAG,SACHgG,GAAIotC,EAAW5B,WAEnBlsC,uBAAwB,YACxB7L,QAAS,MACT2H,KAAM,CACFL,IAAK,EACLC,IAAK,MArHK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCH5Bv0D,E,4MAAAA,EAKX,SAAUglF,GA0Df,OAtDSA,EAAOznC,aAAa,KAAM,CAC/BxI,OAAQ,8IAA8IptC,MAClJ,KAEJmtC,YAAa,iEAAiEntC,MAC1E,KAEJstC,YAAa,yCACbwyC,kBAAmB,yCACnBzyC,iBAAkB,yCAClB0yC,uBAAwB,yCACxBlvC,SAAU,kDAAkD7wC,MAAM,KAClE4wC,cAAe,wBAAwB5wC,MAAM,KAC7C2wC,YAAa,wBAAwB3wC,MAAM,KAC3C6oC,eAAgB,CACZ+K,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,wBACLC,KAAM,+BAEVZ,SAAU,CACNC,QAAS,wBACTC,QAAS,eACTC,SAAU,cACVC,QAAS,iBACTC,SAAU,2BACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,cACRC,KAAM,WACN7c,EAAG,mBACH8c,GAAI,YACJjvC,EAAG,YACHkvC,GAAI,YACJtF,EAAG,WACHuF,GAAI,WACJxF,EAAG,QACHyF,GAAI,QACJvF,EAAG,YACHyF,GAAI,YACJ/F,EAAG,SACHgG,GAAI,UAERV,uBAAwB,WACxB7L,QAAS,MACT2H,KAAM,CACFL,IAAK,EACLC,IAAK,MA1DK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCF5Bv0D,E,4MAAAA,EAKX,SAAUglF,GAoFf,OAhFSA,EAAOznC,aAAa,KAAM,CAC/BxI,OAAQ,uFAAuFptC,MAC3F,KAEJmtC,YAAa,kDAAkDntC,MAAM,KACrE6wC,SAAU,wDAAwD7wC,MAC9D,KAEJ4wC,cAAe,8BAA8B5wC,MAAM,KACnD2wC,YAAa,uBAAuB3wC,MAAM,KAC1C6oC,eAAgB,CACZ+K,GAAI,OACJD,IAAK,UACLE,EAAG,YACHC,GAAI,cACJC,IAAK,mBACLC,KAAM,0BAEVZ,SAAU,CACNC,QAAS,gBACTC,QAAS,eACTC,SAAU,oBACVC,QAAS,gBACTC,SAAU,WACN,OAAQv3C,KAAK21C,OACT,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,4BACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,8BAGnB6B,SAAU,KAEdQ,aAAc,CACVC,OAAQ,QACRC,KAAM,UACN7c,EAAG,kBACH8c,GAAI,aACJjvC,EAAG,cACHkvC,GAAI,YACJtF,EAAG,WACHuF,GAAI,UACJxF,EAAG,WACHyF,GAAI,UACJvF,EAAG,aACHyF,GAAI,YACJ/F,EAAG,cACHgG,GAAI,aAERV,uBAAwB,8BACxB7L,QAAS,SAAUb,GACf,IAAI63C,EAAY73C,EAAS,GACrB83C,EAAc93C,EAAS,IAC3B,OAAe,IAAXA,EACOA,EAAS,MACO,GAAhB83C,EACA93C,EAAS,MACK,GAAd83C,GAAoBA,EAAc,GAClC93C,EAAS,MACK,GAAd63C,EACA73C,EAAS,MACK,GAAd63C,EACA73C,EAAS,MACK,GAAd63C,GAAiC,GAAdA,EACnB73C,EAAS,MAETA,EAAS,OAGxBwI,KAAM,CACFL,IAAK,EACLC,IAAK,MApFK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCJ5Bv0D,E,4MAAAA,EAKX,SAAUglF,GA+Ef,OA3ESA,EAAOznC,aAAa,KAAM,CAC/BxI,OAAQ,yFAAyFptC,MAC7F,KAEJmtC,YAAa,yEAAyEntC,MAClF,KAEJs/E,kBAAkB,EAClBzuC,SAAU,wEAAwE7wC,MAC9E,KAEJ4wC,cAAe,2CAA2C5wC,MAAM,KAChE2wC,YAAa,wBAAwB3wC,MAAM,KAC3C6oC,eAAgB,CACZ+K,GAAI,aACJD,IAAK,gBACLE,EAAG,aACHC,GAAI,cACJC,IAAK,0BACLC,KAAM,iCAEVZ,SAAU,CACNC,QAAS,aACTC,QAAS,YACTC,SAAU,WACVC,QAAS,cACTC,SAAU,oBACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,aACRC,KAAM,WACN7c,EAAG,gBACH8c,GAAI,cACJjvC,EAAG,eACHkvC,GAAI,cACJtF,EAAG,eACHuF,GAAI,cACJxF,EAAG,YACHyF,GAAI,WACJvF,EAAG,WACHyF,GAAI,UACJ/F,EAAG,WACHgG,GAAI,WAERC,cAAe,gDACfkG,aAAc,SAAUD,EAAMnW,GAI1B,OAHa,KAATmW,IACAA,EAAO,GAGO,WAAbnW,GAAiC,GAARmW,GACb,iBAAbnW,GACa,eAAbA,EAEOmW,EAAO,GAEPA,GAGfnW,SAAU,SAAUmW,EAAMkB,EAAQyN,GAC9B,OAAI3O,EAAO,EACA,SACAA,EAAO,GACP,SACAA,EAAO,GACP,eACAA,EAAO,GACP,aAEA,aA9ED,WAAnB,EAAOnY,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCH5Bv0D,E,4MAAAA,EAKX,SAAUglF;kCAIf;SAAS8C,EAAU54C,EAAQ+b,EAAel9C,EAAKyhD,GAC3C,OAAQzhD,GACJ,IAAK,IACD,OAAOk9C,EAAgB,gBAAkB,kBAC7C,IAAK,KACD,OAAO/b,GAAU+b,EAAgB,UAAY,aACjD,IAAK,IACL,IAAK,KACD,OAAO/b,GAAU+b,EAAgB,SAAW,YAChD,IAAK,IACL,IAAK,KACD,OAAO/b,GAAU+b,EAAgB,OAAS,WAC9C,IAAK,IACL,IAAK,KACD,OAAO/b,GAAU+b,EAAgB,QAAU,WAC/C,IAAK,IACL,IAAK,KACD,OAAO/b,GAAU+b,EAAgB,OAAS,UAC9C,IAAK,IACL,IAAK,KACD,OAAO/b,GAAU+b,EAAgB,OAAS,WAC9C,QACI,OAAO/b,GAwEnB,OApES81C,EAAOznC,aAAa,KAAM,CAC/BxI,OAAQ,+LAA+LptC,MACnM,KAEJmtC,YAAa,6EAA6EntC,MACtF,KAEJs/E,kBAAkB,EAClBzuC,SAAU,6CAA6C7wC,MAAM,KAC7D4wC,cAAe,8BAA8B5wC,MAAM,KACnD2wC,YAAa,uBAAuB3wC,MAAM,KAC1Cq+E,oBAAoB,EACpBx1C,eAAgB,CACZ+K,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,oBACJC,IAAK,0BACLC,KAAM,iCAEVY,cAAe,SACf/B,KAAM,SAAUnqC,GACZ,MAAiB,OAAVA,GAEXg8B,SAAU,SAAUmW,EAAMkB,EAAQyN,GAC9B,OAAI3O,EAAO,GACA,KAEA,MAGfzH,SAAU,CACNC,QAAS,eACTC,QAAS,eACTC,SAAU,iBACVC,QAAS,eACTC,SAAU,qBACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,WACRC,KAAM,UACN7c,EAAG4oD,EACH9rC,GAAI8rC,EACJ/6E,EAAG+6E,EACH7rC,GAAI6rC,EACJnxC,EAAGmxC,EACH5rC,GAAI4rC,EACJpxC,EAAGoxC,EACH3rC,GAAI2rC,EACJlxC,EAAGkxC,EACHzrC,GAAIyrC,EACJxxC,EAAGwxC,EACHxrC,GAAIwrC,GAERlsC,uBAAwB,eACxB7L,QAAS,SAAUb,EAAQ0X,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAO1X,EAAS,QACpB,QACI,OAAOA,OAjGL,WAAnB,EAAO7E,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCF5Bv0D,E,4MAAAA,EAKX,SAAUglF;kCAIf;IAAIK,EAAY,CACRC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHngD,EAAG,KAEPogD,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGb,SAAS+D,EAAe56C,EAAQ+b,EAAe5pC,EAAQmuC,GACnD,IAAIpf,EAAS,GACb,GAAI6a,EACA,OAAQ5pC,GACJ,IAAK,IACD+uB,EAAS,aACT,MACJ,IAAK,KACDA,EAAS,WACT,MACJ,IAAK,IACDA,EAAS,WACT,MACJ,IAAK,KACDA,EAAS,YACT,MACJ,IAAK,IACDA,EAAS,SACT,MACJ,IAAK,KACDA,EAAS,SACT,MACJ,IAAK,IACDA,EAAS,UACT,MACJ,IAAK,KACDA,EAAS,UACT,MACJ,IAAK,IACDA,EAAS,WACT,MACJ,IAAK,KACDA,EAAS,WACT,MACJ,IAAK,IACDA,EAAS,UACT,MACJ,IAAK,KACDA,EAAS,gBAIjB,OAAQ/uB,GACJ,IAAK,IACD+uB,EAAS,eACT,MACJ,IAAK,KACDA,EAAS,aACT,MACJ,IAAK,IACDA,EAAS,aACT,MACJ,IAAK,KACDA,EAAS,aACT,MACJ,IAAK,IACDA,EAAS,WACT,MACJ,IAAK,KACDA,EAAS,WACT,MACJ,IAAK,IACDA,EAAS,YACT,MACJ,IAAK,KACDA,EAAS,YACT,MACJ,IAAK,IACDA,EAAS,cACT,MACJ,IAAK,KACDA,EAAS,cACT,MACJ,IAAK,IACDA,EAAS,YACT,MACJ,IAAK,KACDA,EAAS,YAIrB,OAAOA,EAAO/pC,QAAQ,MAAO6oC,GA0FjC,OAvFS81C,EAAOznC,aAAa,KAAM,CAC/BxI,OAAQ,wFAAwFptC,MAC5F,KAEJmtC,YAAa,gFAAgFntC,MACzF,KAEJs/E,kBAAkB,EAClBzuC,SAAU,uDAAuD7wC,MAAM,KACvE4wC,cAAe,kCAAkC5wC,MAAM,KACvD2wC,YAAa,qBAAqB3wC,MAAM,KACxC6oC,eAAgB,CACZ+K,GAAI,eACJD,IAAK,kBACLE,EAAG,aACHC,GAAI,cACJC,IAAK,4BACLC,KAAM,mCAEVZ,SAAU,CACNC,QAAS,UACTC,QAAS,aACTC,SAAU,WACVC,QAAS,WACTC,SAAU,mBACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,UACRC,KAAM,WACN7c,EAAG4qD,EACH9tC,GAAI8tC,EACJ/8E,EAAG+8E,EACH7tC,GAAI6tC,EACJnzC,EAAGmzC,EACH5tC,GAAI4tC,EACJpzC,EAAGozC,EACH3tC,GAAI2tC,EACJlzC,EAAGkzC,EACHztC,GAAIytC,EACJxzC,EAAGwzC,EACHxtC,GAAIwtC,GAERhnC,SAAU,SAAUzhC,GAChB,OAAOA,EAAOhb,QAAQ,gBAAiB,SAAUoG,GAC7C,OAAOs5E,EAAUt5E,MAGzBu+C,WAAY,SAAU3pC,GAClB,OAAOA,EAAOhb,QAAQ,MAAO,SAAUoG,GACnC,OAAO44E,EAAU54E,MAGzB8vC,cAAe,qCACfkG,aAAc,SAAUD,EAAMnW,GAI1B,OAHa,KAATmW,IACAA,EAAO,GAEM,UAAbnW,GAAqC,UAAbA,EACjBmW,EAEM,WAAbnW,GACa,aAAbA,GACa,WAAbA,EAEe,IAARmW,EAAaA,EAAOA,EAAO,QAL/B,GAQXnW,SAAU,SAAUmW,EAAMkB,EAAQyN,GAC9B,OAAY,GAAR3O,GAAaA,EAAO,EACb,QACAA,EAAO,GACP,QACAA,EAAO,GACP,SACAA,EAAO,GACP,WAEA,UAGf9K,KAAM,CACFL,IAAK,EACLC,IAAK,MAxMK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCJ5Bv0D,E,4MAAAA,EAKX,SAAUglF,GA0Ef,OAtESA,EAAOznC,aAAa,KAAM,CAC/BxI,OAAQ,oFAAoFptC,MACxF,KAEJmtC,YAAa,kDAAkDntC,MAAM,KACrE6wC,SAAU,6CAA6C7wC,MAAM,KAC7D4wC,cAAe,8BAA8B5wC,MAAM,KACnD2wC,YAAa,uBAAuB3wC,MAAM,KAC1C6oC,eAAgB,CACZ+K,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,4BACLC,KAAM,mCAEVY,cAAe,8BACfkG,aAAc,SAAUD,EAAMnW,GAI1B,OAHa,KAATmW,IACAA,EAAO,GAEM,SAAbnW,EACOmW,EACa,cAAbnW,EACQ,IAARmW,EAAaA,EAAOA,EAAO,GACd,WAAbnW,GAAsC,UAAbA,EACzBmW,EAAO,QADX,GAIXnW,SAAU,SAAU2N,EAAOE,EAASiX,GAChC,OAAInX,EAAQ,GACD,OACAA,EAAQ,GACR,YACAA,EAAQ,GACR,SAEA,SAGfe,SAAU,CACNC,QAAS,sBACTC,QAAS,kBACTC,SAAU,kBACVC,QAAS,sBACTC,SAAU,wBACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,WACRC,KAAM,gBACN7c,EAAG,gBACH8c,GAAI,UACJjvC,EAAG,UACHkvC,GAAI,WACJtF,EAAG,QACHuF,GAAI,SACJxF,EAAG,SACHyF,GAAI,UACJvF,EAAG,UACHyF,GAAI,WACJ/F,EAAG,UACHgG,GAAI,YAER5E,KAAM,CACFL,IAAK,EACLC,IAAK,MA1EK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCF5Bv0D,E,4MAAAA,EAKX,SAAUglF,GA0Ef,OAtEWA,EAAOznC,aAAa,QAAS,CACpCxI,OAAQ,oFAAoFptC,MACxF,KAEJmtC,YAAa,kDAAkDntC,MAAM,KACrE6wC,SAAU,6CAA6C7wC,MAAM,KAC7D4wC,cAAe,8BAA8B5wC,MAAM,KACnD2wC,YAAa,uBAAuB3wC,MAAM,KAC1C6oC,eAAgB,CACZ+K,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,4BACLC,KAAM,mCAEVY,cAAe,8BACfkG,aAAc,SAAUD,EAAMnW,GAI1B,OAHa,KAATmW,IACAA,EAAO,GAEM,SAAbnW,EACOmW,EACa,cAAbnW,EACQ,IAARmW,EAAaA,EAAOA,EAAO,GACd,WAAbnW,GAAsC,UAAbA,EACzBmW,EAAO,QADX,GAIXnW,SAAU,SAAU2N,EAAOE,EAASiX,GAChC,OAAInX,EAAQ,GACD,OACAA,EAAQ,GACR,YACAA,EAAQ,GACR,SAEA,SAGfe,SAAU,CACNC,QAAS,sBACTC,QAAS,kBACTC,SAAU,kBACVC,QAAS,sBACTC,SAAU,wBACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,WACRC,KAAM,gBACN7c,EAAG,gBACH8c,GAAI,UACJjvC,EAAG,UACHkvC,GAAI,WACJtF,EAAG,QACHuF,GAAI,SACJxF,EAAG,SACHyF,GAAI,UACJvF,EAAG,UACHyF,GAAI,WACJ/F,EAAG,UACHgG,GAAI,YAER5E,KAAM,CACFL,IAAK,EACLC,IAAK,MA1EK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCJ5Bv0D,E,4MAAAA,EAKX,SAAUglF,GAsDf,OAlDSA,EAAOznC,aAAa,KAAM,CAC/BxI,OAAQ,wFAAwFptC,MAC5F,KAEJmtC,YAAa,kDAAkDntC,MAAM,KACrE6wC,SAAU,iEAAiE7wC,MACvE,KAEJ4wC,cAAe,8BAA8B5wC,MAAM,KACnD2wC,YAAa,uBAAuB3wC,MAAM,KAC1C6oC,eAAgB,CACZ+K,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVZ,SAAU,CACNC,QAAS,iBACTC,QAAS,iBACTC,SAAU,gBACVC,QAAS,qBACTC,SAAU,4BACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN7c,EAAG,eACH8c,GAAI,aACJjvC,EAAG,SACHkvC,GAAI,YACJtF,EAAG,SACHuF,GAAI,aACJxF,EAAG,UACHyF,GAAI,YACJvF,EAAG,QACHyF,GAAI,UACJ/F,EAAG,OACHgG,GAAI,UAERV,uBAAwB,WACxB7L,QAAS,MACT2H,KAAM,CACFL,IAAK,EACLC,IAAK,MAtDK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCD5Bv0D,E,4MAAAA,EAKX,SAAUglF;kCAIf;IAAIK,EAAY,CACRC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHngD,EAAG,KAEPogD,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KA8Db,OA3DSf,EAAOznC,aAAa,KAAM,CAC/BxI,OAAQ,2FAA2FptC,MAC/F,KAEJmtC,YAAa,mDAAmDntC,MAAM,KACtE6wC,SAAU,wDAAwD7wC,MAC9D,KAEJ4wC,cAAe,2BAA2B5wC,MAAM,KAChD2wC,YAAa,2BAA2B3wC,MAAM,KAE9C6oC,eAAgB,CACZ+K,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVZ,SAAU,CACNC,QAAS,kBACTC,QAAS,sBACTC,SAAU,gBACVC,QAAS,mBACTC,SAAU,6BACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,gBACRC,KAAM,kBACN7c,EAAG,kBACH8c,GAAI,aACJjvC,EAAG,WACHkvC,GAAI,WACJtF,EAAG,UACHuF,GAAI,UACJxF,EAAG,SACHyF,GAAI,SACJvF,EAAG,OACHyF,GAAI,OACJ/F,EAAG,UACHgG,GAAI,WAERwG,SAAU,SAAUzhC,GAChB,OAAOA,EAAOhb,QAAQ,gBAAiB,SAAUoG,GAC7C,OAAOs5E,EAAUt5E,MAGzBu+C,WAAY,SAAU3pC,GAClB,OAAOA,EAAOhb,QAAQ,MAAO,SAAUoG,GACnC,OAAO44E,EAAU54E,MAGzBirC,KAAM,CACFL,IAAK,EACLC,IAAK,MAxFK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCH5Bv0D,E,4MAAAA,EAKX,SAAUglF,GA0Df,OAtDSA,EAAOznC,aAAa,KAAM,CAC/BxI,OAAQ,qFAAqFptC,MACzF,KAEJmtC,YAAa,6DAA6DntC,MACtE,KAEJs/E,kBAAkB,EAClBzuC,SAAU,qDAAqD7wC,MAAM,KACrE4wC,cAAe,8BAA8B5wC,MAAM,KACnD2wC,YAAa,uBAAuB3wC,MAAM,KAC1Cq+E,oBAAoB,EACpBx1C,eAAgB,CACZ+K,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,eACJC,IAAK,2BACLC,KAAM,iCAEVZ,SAAU,CACNC,QAAS,iBACTC,QAAS,oBACTC,SAAU,gBACVC,QAAS,iBACTC,SAAU,0BACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,QACRC,KAAM,WACN7c,EAAG,gBACH8c,GAAI,cACJjvC,EAAG,aACHkvC,GAAI,cACJtF,EAAG,UACHuF,GAAI,WACJxF,EAAG,SACHyF,GAAI,WACJ7R,EAAG,SACH8R,GAAI,UACJxF,EAAG,WACHyF,GAAI,aACJ/F,EAAG,SACHgG,GAAI,SAERV,uBAAwB,YACxB7L,QAAS,MACT2H,KAAM,CACFL,IAAK,EACLC,IAAK,MA1DK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCL5Bv0D,E,4MAAAA,EAKX,SAAUglF;kCAIf;IAAIK,EAAY,CACRC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHngD,EAAG,KAEPogD,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KA6Fb,OA1FSf,EAAOznC,aAAa,KAAM,CAC/BxI,OAAQ,uFAAuFptC,MAC3F,KAEJmtC,YAAa,uEAAuEntC,MAChF,KAEJs/E,kBAAkB,EAClBzuC,SAAU,wDAAwD7wC,MAC9D,KAEJ4wC,cAAe,0CAA0C5wC,MAAM,KAC/D2wC,YAAa,4BAA4B3wC,MAAM,KAC/Cq+E,oBAAoB,EACpBx1C,eAAgB,CACZ+K,GAAI,eACJD,IAAK,kBACLE,EAAG,aACHC,GAAI,cACJC,IAAK,4BACLC,KAAM,mCAEVmH,SAAU,SAAUzhC,GAChB,OAAOA,EAAOhb,QAAQ,gBAAiB,SAAUoG,GAC7C,OAAOs5E,EAAUt5E,MAGzBu+C,WAAY,SAAU3pC,GAClB,OAAOA,EAAOhb,QAAQ,MAAO,SAAUoG,GACnC,OAAO44E,EAAU54E,MAGzB8vC,cAAe,yBACfkG,aAAc,SAAUD,EAAMnW,GAI1B,OAHa,KAATmW,IACAA,EAAO,GAEM,SAAbnW,EACOmW,EAAO,EAAIA,EAAOA,EAAO,GACZ,UAAbnW,EACAmW,EACa,WAAbnW,EACQ,IAARmW,EAAaA,EAAOA,EAAO,GACd,SAAbnW,EACAmW,EAAO,QADX,GAIXnW,SAAU,SAAUmW,EAAMkB,EAAQyN,GAC9B,OAAI3O,EAAO,EACA,OACAA,EAAO,GACP,QACAA,EAAO,GACP,SACAA,EAAO,GACP,OAEA,QAGfzH,SAAU,CACNC,QAAS,UACTC,QAAS,YACTC,SAAU,qBACVC,QAAS,YACTC,SAAU,oBACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,OACRC,KAAM,WACN7c,EAAG,YACH8c,GAAI,aACJjvC,EAAG,WACHkvC,GAAI,WACJtF,EAAG,WACHuF,GAAI,WACJxF,EAAG,SACHyF,GAAI,SACJvF,EAAG,WACHyF,GAAI,WACJ/F,EAAG,UACHgG,GAAI,WAER5E,KAAM,CACFL,IAAK,EACLC,IAAK,MAvHK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCF5Bv0D,E,4MAAAA,EAKX,SAAUglF;kCAIf;IAAI8D,EAAsB,6DAA6DnhF,MAC/E,KAEJohF,EAAyB,kDAAkDphF,MACvE,KAEJutC,EAAc,CACV,QACA,QACA,iBACA,QACA,SACA,cACA,cACA,QACA,QACA,QACA,QACA,SAEJD,EAAc,qKA8ElB,OA5ES+vC,EAAOznC,aAAa,KAAM,CAC/BxI,OAAQ,0FAA0FptC,MAC9F,KAEJmtC,YAAa,SAAU/nC,EAAGo+B,GACtB,OAAKp+B,GAEM,QAAQM,KAAK89B,GACb49C,EAEAD,GAFuB/7E,EAAEklC,SAFzB62C,GAQf7zC,YAAaA,EACbD,iBAAkBC,EAClBwyC,kBAAmB,4FACnBC,uBAAwB,mFAExBxyC,YAAaA,EACbyyC,gBAAiBzyC,EACjB0yC,iBAAkB1yC,EAElBsD,SAAU,6DAA6D7wC,MACnE,KAEJ4wC,cAAe,8BAA8B5wC,MAAM,KACnD2wC,YAAa,uBAAuB3wC,MAAM,KAC1Cq+E,oBAAoB,EACpBx1C,eAAgB,CACZ+K,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVZ,SAAU,CACNC,QAAS,kBACTC,QAAS,iBACTC,SAAU,eACVC,QAAS,mBACTC,SAAU,2BACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,UACRC,KAAM,aACN7c,EAAG,oBACH8c,GAAI,cACJjvC,EAAG,aACHkvC,GAAI,aACJtF,EAAG,UACHuF,GAAI,SACJxF,EAAG,UACHyF,GAAI,WACJ7R,EAAG,WACH8R,GAAI,WACJxF,EAAG,YACHyF,GAAI,aACJ/F,EAAG,WACHgG,GAAI,WAERV,uBAAwB,kBACxB7L,QAAS,SAAUb,GACf,OACIA,GACY,IAAXA,GAA2B,IAAXA,GAA0B,IAAVA,EAAe,MAAQ,OAGhEwI,KAAM,CACFL,IAAK,EACLC,IAAK,MAtGK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCH5Bv0D,E,4MAAAA,EAKX,SAAUglF;kCAIf;IAAI8D,EAAsB,6DAA6DnhF,MAC/E,KAEJohF,EAAyB,kDAAkDphF,MACvE,KAEJutC,EAAc,CACV,QACA,QACA,iBACA,QACA,SACA,cACA,cACA,QACA,QACA,QACA,QACA,SAEJD,EAAc,qKA4ElB,OA1EW+vC,EAAOznC,aAAa,QAAS,CACpCxI,OAAQ,0FAA0FptC,MAC9F,KAEJmtC,YAAa,SAAU/nC,EAAGo+B,GACtB,OAAKp+B,GAEM,QAAQM,KAAK89B,GACb49C,EAEAD,GAFuB/7E,EAAEklC,SAFzB62C,GAQf7zC,YAAaA,EACbD,iBAAkBC,EAClBwyC,kBAAmB,4FACnBC,uBAAwB,mFAExBxyC,YAAaA,EACbyyC,gBAAiBzyC,EACjB0yC,iBAAkB1yC,EAElBsD,SAAU,6DAA6D7wC,MACnE,KAEJ4wC,cAAe,8BAA8B5wC,MAAM,KACnD2wC,YAAa,uBAAuB3wC,MAAM,KAC1Cq+E,oBAAoB,EACpBx1C,eAAgB,CACZ+K,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVZ,SAAU,CACNC,QAAS,kBACTC,QAAS,iBACTC,SAAU,eACVC,QAAS,mBACTC,SAAU,2BACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,UACRC,KAAM,aACN7c,EAAG,oBACH8c,GAAI,cACJjvC,EAAG,aACHkvC,GAAI,aACJtF,EAAG,UACHuF,GAAI,SACJxF,EAAG,UACHyF,GAAI,WACJvF,EAAG,YACHyF,GAAI,aACJ/F,EAAG,WACHgG,GAAI,WAERV,uBAAwB,kBACxB7L,QAAS,SAAUb,GACf,OACIA,GACY,IAAXA,GAA2B,IAAXA,GAA0B,IAAVA,EAAe,MAAQ,OAGhEwI,KAAM,CACFL,IAAK,EACLC,IAAK,MApGK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCH5Bv0D,E,4MAAAA,EAKX,SAAUglF,GA0Df,OAtDSA,EAAOznC,aAAa,KAAM,CAC/BxI,OAAQ,qFAAqFptC,MACzF,KAEJmtC,YAAa,6DAA6DntC,MACtE,KAEJs/E,kBAAkB,EAClBzuC,SAAU,qDAAqD7wC,MAAM,KACrE4wC,cAAe,+BAA+B5wC,MAAM,KACpD2wC,YAAa,uBAAuB3wC,MAAM,KAC1Cq+E,oBAAoB,EACpBx1C,eAAgB,CACZ+K,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,eACJC,IAAK,0BACLC,KAAM,iCAEVZ,SAAU,CACNC,QAAS,oBACTC,QAAS,uBACTC,SAAU,mBACVC,QAAS,oBACTC,SAAU,gCACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,QACRC,KAAM,WACN7c,EAAG,eACH8c,GAAI,YACJjvC,EAAG,aACHkvC,GAAI,YACJtF,EAAG,WACHuF,GAAI,WACJxF,EAAG,UACHyF,GAAI,WACJ7R,EAAG,UACH8R,GAAI,WACJxF,EAAG,YACHyF,GAAI,aACJ/F,EAAG,SACHgG,GAAI,SAERV,uBAAwB,YACxB7L,QAAS,MACT2H,KAAM,CACFL,IAAK,EACLC,IAAK,MA1DK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCJ5Bv0D,E,4MAAAA,EAKX,SAAUglF,GAkFf,OA9EYA,EAAOznC,aAAa,SAAU,CACtCxI,OAAQ,CACJ+xC,WAAY,qFAAqFn/E,MAC7F,KAEJwjC,OAAQ,sHAAsHxjC,MAC1H,KAEJkoD,SAAU,mBAEd/a,YAAa,+DAA+DntC,MACxE,KAEJs/E,kBAAkB,EAClBzuC,SAAU,2DAA2D7wC,MACjE,KAEJ4wC,cAAe,8BAA8B5wC,MAAM,KACnD2wC,YAAa,uBAAuB3wC,MAAM,KAC1Cq+E,oBAAoB,EACpBx1C,eAAgB,CACZ+K,GAAI,OACJD,IAAK,UACLE,EAAG,aACHC,GAAI,mBACJssC,GAAI,aACJrsC,IAAK,4BACLssC,IAAK,mBACLrsC,KAAM,iCACNssC,KAAM,wBAEVltC,SAAU,CACNC,QAAS,aACTC,QAAS,eACTC,SAAU,cACVC,QAAS,aACTC,SAAU,qBACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,YACRC,KAAM,QACN7c,EAAG,gBACH8c,GAAI,cACJjvC,EAAG,aACHkvC,GAAI,aACJtF,EAAG,UACHuF,GAAI,UACJxF,EAAG,UACHyF,GAAI,WACJvF,EAAG,SACHyF,GAAI,WACJ/F,EAAG,QACHgG,GAAI,UAERV,uBAAwB,qBACxB7L,QAAS,SAAUb,EAAQ0X,GAcvB,OAAO1X,GAHQ,MAAX0X,GAA6B,MAAXA,EATP,IAAX1X,EACM,IACW,IAAXA,EACA,IACW,IAAXA,EACA,IACW,IAAXA,EACA,IACA,IAEG,MAIjBwI,KAAM,CACFL,IAAK,EACLC,IAAK,MAlFK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCH5Bv0D,E,4MAAAA,EAKX,SAAUglF;kCAIf;IAAIK,EAAY,CACRC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHngD,EAAG,KAEPogD,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KA8Fb,OA3FWf,EAAOznC,aAAa,QAAS,CAEpCxI,OAAQ,sEAAsEptC,MAC1E,KAEJmtC,YAAa,sEAAsEntC,MAC/E,KAEJ6wC,SAAU,yDAAyD7wC,MAC/D,KAEJ4wC,cAAe,iCAAiC5wC,MAAM,KACtD2wC,YAAa,iCAAiC3wC,MAAM,KACpD6oC,eAAgB,CACZ+K,GAAI,aACJD,IAAK,gBACLE,EAAG,aACHC,GAAI,cACJC,IAAK,0BACLC,KAAM,iCAEVZ,SAAU,CACNC,QAAS,UACTC,QAAS,UACTC,SAAU,kBACVC,QAAS,UACTC,SAAU,mBACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,UACRC,KAAM,WACN7c,EAAG,YACH8c,GAAI,WACJjvC,EAAG,UACHkvC,GAAI,UACJtF,EAAG,WACHuF,GAAI,UACJxF,EAAG,UACHyF,GAAI,SACJvF,EAAG,YACHyF,GAAI,WACJ/F,EAAG,UACHgG,GAAI,UAERwG,SAAU,SAAUzhC,GAChB,OAAOA,EAAOhb,QAAQ,gBAAiB,SAAUoG,GAC7C,OAAOs5E,EAAUt5E,MAGzBu+C,WAAY,SAAU3pC,GAClB,OAAOA,EAAOhb,QAAQ,MAAO,SAAUoG,GACnC,OAAO44E,EAAU54E,MAKzB8vC,cAAe,uBACfkG,aAAc,SAAUD,EAAMnW,GAI1B,OAHa,KAATmW,IACAA,EAAO,GAEM,QAAbnW,EACOmW,EAAO,EAAIA,EAAOA,EAAO,GACZ,SAAbnW,EACAmW,EACa,WAAbnW,EACQ,IAARmW,EAAaA,EAAOA,EAAO,GACd,SAAbnW,EACAmW,EAAO,QADX,GAIXnW,SAAU,SAAUmW,EAAMkB,EAAQyN,GAC9B,OAAI3O,EAAO,EACA,MACAA,EAAO,GACP,OACAA,EAAO,GACP,SACAA,EAAO,GACP,OAEA,OAGf9K,KAAM,CACFL,IAAK,EACLC,IAAK,MAxHK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCH5Bv0D,E,4MAAAA,EAKX,SAAUglF;kCAIf;IAAI+E,EAAmB,mGAAmGpiF,MAClH,KAEJqiF,EAAmB,qGAAqGriF,MACpH,KAEJutC,EAAc,CACV,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,SAER,SAASgzC,EAAO/uE,GACZ,OAAOA,EAAI,GAAK,GAAc,EAATA,EAAI,OAAaA,EAAI,IAAM,IAAO,EAE3D,SAAS2uE,EAAU54C,EAAQ+b,EAAel9C,GACtC,IAAI8E,EAASq8B,EAAS,IACtB,OAAQnhC,GACJ,IAAK,KACD,OAAO8E,GAAUq1E,EAAOh5C,GAAU,UAAY,UAClD,IAAK,IACD,OAAO+b,EAAgB,SAAW,SACtC,IAAK,KACD,OAAOp4C,GAAUq1E,EAAOh5C,GAAU,SAAW,SACjD,IAAK,IACD,OAAO+b,EAAgB,UAAY,UACvC,IAAK,KACD,OAAOp4C,GAAUq1E,EAAOh5C,GAAU,UAAY,UAClD,IAAK,KACD,OAAOr8B,GAAUq1E,EAAOh5C,GAAU,WAAa,WACnD,IAAK,KACD,OAAOr8B,GAAUq1E,EAAOh5C,GAAU,WAAa,YACnD,IAAK,KACD,OAAOr8B,GAAUq1E,EAAOh5C,GAAU,OAAS,QA6FvD,OAzFS81C,EAAOznC,aAAa,KAAM,CAC/BxI,OAAQ,SAAUuzC,EAAgBn9C,GAC9B,OAAKm9C,GAEM,SAASj7E,KAAK89B,GACd6+C,EAEAD,GAFiBzB,EAAer2C,SAFhC83C,GAOfj1C,YAAa,kDAAkDntC,MAAM,KACrEutC,YAAaA,EACbyyC,gBAAiBzyC,EACjB0yC,iBAAkB1yC,EAClBsD,SAAU,6DAA6D7wC,MACnE,KAEJ4wC,cAAe,2BAA2B5wC,MAAM,KAChD2wC,YAAa,uBAAuB3wC,MAAM,KAC1C6oC,eAAgB,CACZ+K,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVZ,SAAU,CACNC,QAAS,cACTC,QAAS,eACTC,SAAU,WACN,OAAQr3C,KAAK21C,OACT,KAAK,EACD,MAAO,qBAEX,KAAK,EACD,MAAO,mBAEX,KAAK,EACD,MAAO,iBAEX,KAAK,EACD,MAAO,kBAEX,QACI,MAAO,oBAGnB2B,QAAS,iBACTC,SAAU,WACN,OAAQv3C,KAAK21C,OACT,KAAK,EACD,MAAO,4BACX,KAAK,EACD,MAAO,wBACX,KAAK,EACD,MAAO,yBACX,QACI,MAAO,2BAGnB6B,SAAU,KAEdQ,aAAc,CACVC,OAAQ,QACRC,KAAM,UACN7c,EAAG,eACH8c,GAAI8rC,EACJ/6E,EAAG+6E,EACH7rC,GAAI6rC,EACJnxC,EAAGmxC,EACH5rC,GAAI4rC,EACJpxC,EAAG,UACHyF,GAAI,SACJ7R,EAAG,UACH8R,GAAI0rC,EACJlxC,EAAG,UACHyF,GAAIyrC,EACJxxC,EAAG,MACHgG,GAAIwrC,GAERlsC,uBAAwB,YACxB7L,QAAS,MACT2H,KAAM,CACFL,IAAK,EACLC,IAAK,MA1IK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCH5Bv0D,E,4MAAAA,EAKX,SAAUglF,GA6Df,OAzDSA,EAAOznC,aAAa,KAAM,CAC/BxI,OAAQ,2FAA2FptC,MAC/F,KAEJmtC,YAAa,kDAAkDntC,MAAM,KACrE6wC,SAAU,iFAAiF7wC,MACvF,KAEJ4wC,cAAe,8BAA8B5wC,MAAM,KACnD2wC,YAAa,uBAAuB3wC,MAAM,KAC1Cq+E,oBAAoB,EACpBx1C,eAAgB,CACZ+K,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,wBACJC,IAAK,8BACLC,KAAM,qCAEVZ,SAAU,CACNC,QAAS,eACTC,QAAS,iBACTC,SAAU,eACVC,QAAS,gBACTC,SAAU,WACN,OAAsB,IAAfv3C,KAAK21C,OAA8B,IAAf31C,KAAK21C,MAC1B,wBACA,yBAEV6B,SAAU,KAEdQ,aAAc,CACVC,OAAQ,QACRC,KAAM,QACN7c,EAAG,WACH8c,GAAI,cACJjvC,EAAG,YACHkvC,GAAI,aACJtF,EAAG,WACHuF,GAAI,WACJxF,EAAG,SACHyF,GAAI,UACJ7R,EAAG,aACH8R,GAAI,aACJxF,EAAG,SACHyF,GAAI,WACJ/F,EAAG,SACHgG,GAAI,WAERV,uBAAwB,WACxB7L,QAAS,MACT2H,KAAM,CACFL,IAAK,EACLC,IAAK,MA7DK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCH5Bv0D,E,4MAAAA,EAKX,SAAUglF,GAwDf,OApDWA,EAAOznC,aAAa,QAAS,CACpCxI,OAAQ,2FAA2FptC,MAC/F,KAEJmtC,YAAa,kDAAkDntC,MAAM,KACrE6wC,SAAU,iFAAiF7wC,MACvF,KAEJ4wC,cAAe,8BAA8B5wC,MAAM,KACnD2wC,YAAa,uBAAuB3wC,MAAM,KAC1Cq+E,oBAAoB,EACpBx1C,eAAgB,CACZ+K,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,wBACJC,IAAK,mCACLC,KAAM,0CAEVZ,SAAU,CACNC,QAAS,eACTC,QAAS,iBACTC,SAAU,eACVC,QAAS,gBACTC,SAAU,WACN,OAAsB,IAAfv3C,KAAK21C,OAA8B,IAAf31C,KAAK21C,MAC1B,wBACA,yBAEV6B,SAAU,KAEdQ,aAAc,CACVC,OAAQ,QACRC,KAAM,QACN7c,EAAG,kBACH8c,GAAI,cACJjvC,EAAG,YACHkvC,GAAI,aACJtF,EAAG,WACHuF,GAAI,WACJxF,EAAG,SACHyF,GAAI,UACJvF,EAAG,SACHyF,GAAI,WACJ/F,EAAG,SACHgG,GAAI,WAERV,uBAAwB,WACxB7L,QAAS,MACTO,YAAa,mBAzDC,WAAnB,EAAOjG,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCD5Bv0D,E,4MAAAA,EAKX,SAAUglF;kCAIf;SAAS2B,EAAuBz3C,EAAQ+b,EAAel9C,GAcnD,OAAOmhC,GAHa,IAAhBA,EAAS,KAAwB,KAAVA,GAAiBA,EAAS,KAAQ,EAC7C,OAFA,KATH,CACL8M,GAAI,UACJC,GAAI,SACJC,GAAI,MACJC,GAAI,OACJC,GAAI,YACJC,GAAI,OACJC,GAAI,OAMuBvuC,GAsDvC,OAnDSi3E,EAAOznC,aAAa,KAAM,CAC/BxI,OAAQ,oGAAoGptC,MACxG,KAEJmtC,YAAa,+DAA+DntC,MACxE,KAEJs/E,kBAAkB,EAClBzuC,SAAU,kDAAkD7wC,MAAM,KAClE4wC,cAAe,8BAA8B5wC,MAAM,KACnD2wC,YAAa,uBAAuB3wC,MAAM,KAC1C6oC,eAAgB,CACZ+K,GAAI,OACJD,IAAK,UACLE,EAAG,aACHC,GAAI,cACJC,IAAK,mBACLC,KAAM,0BAEVZ,SAAU,CACNC,QAAS,cACTC,QAAS,gBACTC,SAAU,eACVC,QAAS,eACTC,SAAU,uBACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,WACRC,KAAM,aACN7c,EAAG,iBACH8c,GAAI2qC,EACJ55E,EAAG,WACHkvC,GAAI0qC,EACJhwC,EAAG,QACHuF,GAAIyqC,EACJjwC,EAAG,OACHyF,GAAIwqC,EACJr8C,EAAG,cACH8R,GAAIuqC,EACJ/vC,EAAG,SACHyF,GAAIsqC,EACJrwC,EAAG,QACHgG,GAAIqqC,GAERjvC,KAAM,CACFL,IAAK,EACLC,IAAK,MAxEK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCH5Bv0D,E,4MAAAA,EAKX,SAAUglF,GAYf,SAAS2B,EAAuBz3C,EAAQ+b,EAAel9C,GAUnD,MAAY,MAARA,EACOk9C,EAAgB,SAAW,SAE3B/b,EAAS,KArBFnrC,GAqB6BmrC,EApB3C03C,GADQC,EASC,CACT7qC,GAAIiP,EAAgB,yBAA2B,yBAC/ChP,GAAIgP,EAAgB,sBAAwB,sBAC5C/O,GAAI,iBACJC,GAAI,gBACJC,GAAI,uBACJC,GAAI,uBACJC,GAAI,gBAKgCvuC,IApBvBpG,MAAM,KAChB5D,EAAM,IAAO,GAAKA,EAAM,KAAQ,GACjC6iF,EAAM,GACM,GAAZ7iF,EAAM,IAAWA,EAAM,IAAM,IAAMA,EAAM,IAAM,IAAmB,IAAbA,EAAM,KAC3D6iF,EAAM,GACNA,EAAM,IAkBhB,IAAI1xC,EAAc,CACd,QACA,QACA,QACA,QACA,WACA,QACA,QACA,QACA,QACA,QACA,QACA,SAmKJ,OA7JS8vC,EAAOznC,aAAa,KAAM,CAC/BxI,OAAQ,CACJ5J,OAAQ,oFAAoFxjC,MACxF,KAEJm/E,WAAY,kFAAkFn/E,MAC1F,MAGRmtC,YAAa,CAET3J,OAAQ,gEAAgExjC,MACpE,KAEJm/E,WAAY,gEAAgEn/E,MACxE,MAGR6wC,SAAU,CACNsuC,WAAY,gEAAgEn/E,MACxE,KAEJwjC,OAAQ,gEAAgExjC,MACpE,KAEJkoD,SAAU,iDAEdtX,cAAe,uBAAuB5wC,MAAM,KAC5C2wC,YAAa,uBAAuB3wC,MAAM,KAC1CutC,YAAaA,EACbyyC,gBAAiBzyC,EACjB0yC,iBAAkB1yC,EAGlBD,YAAa,2MAGbD,iBAAkB,2MAGlByyC,kBAAmB,wHAGnBC,uBAAwB,6FACxBl3C,eAAgB,CACZ+K,GAAI,OACJD,IAAK,UACLE,EAAG,aACHC,GAAI,iBACJC,IAAK,uBACLC,KAAM,8BAEVZ,SAAU,CACNC,QAAS,kBACTC,QAAS,iBACTE,QAAS,gBACTD,SAAU,SAAU1vB,GAChB,GAAIA,EAAIksB,SAAW7zC,KAAK6zC,OAcpB,OAAmB,IAAf7zC,KAAK21C,MACE,oBAEA,mBAhBX,OAAQ31C,KAAK21C,OACT,KAAK,EACD,MAAO,6BACX,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,6BACX,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,+BAUvB4B,SAAU,SAAU5vB,GAChB,GAAIA,EAAIksB,SAAW7zC,KAAK6zC,OAcpB,OAAmB,IAAf7zC,KAAK21C,MACE,oBAEA,mBAhBX,OAAQ31C,KAAK21C,OACT,KAAK,EACD,MAAO,2BACX,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,2BACX,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,6BAUvB6B,SAAU,KAEdQ,aAAc,CACVC,OAAQ,WACRC,KAAM,WACN7c,EAAG,mBACH8c,GAAI2qC,EACJ55E,EAAG45E,EACH1qC,GAAI0qC,EACJhwC,EAAG,MACHuF,GAAIyqC,EACJjwC,EAAG,OACHyF,GAAIwqC,EACJr8C,EAAG,SACH8R,GAAIuqC,EACJ/vC,EAAG,QACHyF,GAAIsqC,EACJrwC,EAAG,MACHgG,GAAIqqC,GAERpqC,cAAe,wBACf/B,KAAM,SAAUnqC,GACZ,MAAO,iBAAiBhD,KAAKgD,IAEjCg8B,SAAU,SAAUmW,EAAMkB,EAAQyN,GAC9B,OAAI3O,EAAO,EACA,OACAA,EAAO,GACP,OACAA,EAAO,GACP,MAEA,UAGf5G,uBAAwB,mBACxB7L,QAAS,SAAUb,EAAQ0X,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAO1X,EAAS,KACpB,IAAK,IACD,OAAOA,EAAS,MACpB,IAAK,IACL,IAAK,IACD,OAAOA,EAAS,KACpB,QACI,OAAOA,IAGnBwI,KAAM,CACFL,IAAK,EACLC,IAAK,MA3MK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCL5Bv0D,E,4MAAAA,EAKX,SAAUglF;kCAIf;IAAIjwC,EAAS,CACL,QACA,UACA,OACA,QACA,MACA,MACA,SACA,OACA,UACA,SACA,QACA,SAEJ2P,EAAO,CAAC,MAAO,OAAQ,QAAS,OAAQ,OAAQ,MAAO,QA8D3D,OA5DSsgC,EAAOznC,aAAa,KAAM,CAC/BxI,OAAQA,EACRD,YAAaC,EACbyD,SAAUkM,EACVnM,cAAemM,EACfpM,YAAaoM,EACblU,eAAgB,CACZ+K,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVY,cAAe,UACf/B,KAAM,SAAUnqC,GACZ,MAAO,QAAUA,GAErBg8B,SAAU,SAAUmW,EAAMkB,EAAQyN,GAC9B,OAAI3O,EAAO,GACA,MAEJ,OAEXzH,SAAU,CACNC,QAAS,UACTC,QAAS,aACTC,SAAU,yBACVC,QAAS,aACTC,SAAU,4BACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,SACRC,KAAM,QACN7c,EAAG,YACH8c,GAAI,WACJjvC,EAAG,SACHkvC,GAAI,SACJtF,EAAG,UACHuF,GAAI,UACJxF,EAAG,WACHyF,GAAI,WACJvF,EAAG,WACHyF,GAAI,WACJ/F,EAAG,SACHgG,GAAI,UAERwG,SAAU,SAAUzhC,GAChB,OAAOA,EAAOhb,QAAQ,KAAM,MAEhC2kD,WAAY,SAAU3pC,GAClB,OAAOA,EAAOhb,QAAQ,KAAM,MAEhCqxC,KAAM,CACFL,IAAK,EACLC,IAAK,MAhFK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCH5Bv0D,E,4MAAAA,EAKX,SAAUglF,GAwDf,OApDSA,EAAOznC,aAAa,KAAM,CAC/BxI,OAAQ,mJAAmJptC,MACvJ,KAEJmtC,YAAa,6DAA6DntC,MACtE,KAEJ6wC,SAAU,6EAA6E7wC,MACnF,KAEJ4wC,cAAe,mCAAmC5wC,MAAM,KACxD2wC,YAAa,gBAAgB3wC,MAAM,KACnC6oC,eAAgB,CACZ+K,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,oBACJC,IAAK,gCACLC,KAAM,uCAEVZ,SAAU,CACNC,QAAS,eACTC,QAAS,iBACTC,SAAU,eACVC,QAAS,eACTC,SAAU,wBACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,YACRC,KAAM,WACN7c,EAAG,mBACH8c,GAAI,eACJjvC,EAAG,eACHkvC,GAAI,cACJtF,EAAG,cACHuF,GAAI,aACJxF,EAAG,cACHyF,GAAI,cACJvF,EAAG,aACHyF,GAAI,WACJ/F,EAAG,aACHgG,GAAI,YAERV,uBAAwB,YACxB7L,QAAS,MACT2H,KAAM,CACFL,IAAK,EACLC,IAAK,MAxDK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCH5Bv0D,E,4MAAAA,EAKX,SAAUglF,GAmEf,OA9DSA,EAAOznC,aAAa,KAAM,CAC/BxI,OAAQ,kGAAkGptC,MACtG,KAEJmtC,YAAa,wDAAwDntC,MACjE,KAEJ6wC,SAAU,gEAAgE7wC,MACtE,KAEJ4wC,cAAe,gCAAgC5wC,MAAM,KACrD2wC,YAAa,qBAAqB3wC,MAAM,KACxCq+E,oBAAoB,EACpBx1C,eAAgB,CACZ+K,GAAI,SACJD,IAAK,YACLE,EAAG,aACHC,GAAI,cACJC,IAAK,sBACLC,KAAM,sCAEVZ,SAAU,CACNC,QAAS,aACTC,QAAS,cACTC,SAAU,aACVC,QAAS,cACTC,SAAU,sBACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,SACRC,KAAM,WACN7c,EAAG,eACH8c,GAAI,WACJjvC,EAAG,YACHkvC,GAAI,cACJtF,EAAG,MACHuF,GAAI,SACJxF,EAAG,OACHyF,GAAI,SACJvF,EAAG,OACHyF,GAAI,SACJ/F,EAAG,MACHgG,GAAI,UAERV,uBAAwB,eACxB7L,QAAS,SAAUb,GACf,OAAOA,EAAS,SAEpBqN,cAAe,4BACf/B,KAAM,SAAUnqC,GACZ,MAAiB,SAAVA,GAA8B,YAAVA,GAE/Bg8B,SAAU,SAAU2N,EAAOE,EAASiX,GAChC,OAAY,GAARnX,EACOmX,EAAU,OAAS,UAEnBA,EAAU,QAAU,cAlErB,WAAnB,EAAO9mB,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCF5Bv0D,E,4MAAAA,EAKX,SAAUglF;kCAIf;IAAIjwC,EAAS,oFAAoFptC,MACzF,KAEJmtC,EAAc,kDAAkDntC,MAAM,KAC1E,SAASugF,EAAO/uE,GACZ,OAAW,EAAJA,GAASA,EAAI,EAExB,SAAS2uE,EAAU54C,EAAQ+b,EAAel9C,EAAKyhD,GAC3C,IAAI38C,EAASq8B,EAAS,IACtB,OAAQnhC,GACJ,IAAK,IACD,OAAOk9C,GAAiBuE,EAAW,aAAe,gBACtD,IAAK,KACD,OAAIvE,GAAiBuE,EACV38C,GAAUq1E,EAAOh5C,GAAU,UAAY,UAEvCr8B,EAAS,YAExB,IAAK,IACD,OAAOo4C,EAAgB,SAAWuE,EAAW,SAAW,UAC5D,IAAK,KACD,OAAIvE,GAAiBuE,EACV38C,GAAUq1E,EAAOh5C,GAAU,SAAW,SAEtCr8B,EAAS,WAExB,IAAK,IACD,OAAOo4C,EAAgB,SAAWuE,EAAW,SAAW,UAC5D,IAAK,KACD,OAAIvE,GAAiBuE,EACV38C,GAAUq1E,EAAOh5C,GAAU,SAAW,SAEtCr8B,EAAS,WAExB,IAAK,IACD,OAAOo4C,GAAiBuE,EAAW,MAAQ,OAC/C,IAAK,KACD,OAAIvE,GAAiBuE,EACV38C,GAAUq1E,EAAOh5C,GAAU,MAAQ,OAEnCr8B,EAAS,QAExB,IAAK,IACD,OAAOo4C,GAAiBuE,EAAW,SAAW,WAClD,IAAK,KACD,OAAIvE,GAAiBuE,EACV38C,GAAUq1E,EAAOh5C,GAAU,UAAY,YAEvCr8B,EAAS,WAExB,IAAK,IACD,OAAOo4C,GAAiBuE,EAAW,MAAQ,QAC/C,IAAK,KACD,OAAIvE,GAAiBuE,EACV38C,GAAUq1E,EAAOh5C,GAAU,OAAS,SAEpCr8B,EAAS,SAkFhC,OA7ESmyE,EAAOznC,aAAa,KAAM,CAC/BxI,OAAQA,EACRD,YAAaA,EACb0D,SAAU,sDAAsD7wC,MAAM,KACtE4wC,cAAe,uBAAuB5wC,MAAM,KAC5C2wC,YAAa,uBAAuB3wC,MAAM,KAC1C6oC,eAAgB,CACZ+K,GAAI,OACJD,IAAK,UACLE,EAAG,aACHC,GAAI,eACJC,IAAK,oBACLC,KAAM,0BAEVZ,SAAU,CACNC,QAAS,cACTC,QAAS,gBACTC,SAAU,WACN,OAAQr3C,KAAK21C,OACT,KAAK,EACD,MAAO,kBACX,KAAK,EACL,KAAK,EACD,MAAO,kBACX,KAAK,EACD,MAAO,kBACX,KAAK,EACD,MAAO,oBACX,KAAK,EACD,MAAO,kBACX,KAAK,EACD,MAAO,oBAGnB2B,QAAS,eACTC,SAAU,WACN,OAAQv3C,KAAK21C,OACT,KAAK,EACD,MAAO,uBACX,KAAK,EACL,KAAK,EACD,MAAO,uBACX,KAAK,EACD,MAAO,uBACX,KAAK,EACL,KAAK,EACD,MAAO,uBACX,KAAK,EACD,MAAO,yBAGnB6B,SAAU,KAEdQ,aAAc,CACVC,OAAQ,QACRC,KAAM,UACN7c,EAAG4oD,EACH9rC,GAAI8rC,EACJ/6E,EAAG+6E,EACH7rC,GAAI6rC,EACJnxC,EAAGmxC,EACH5rC,GAAI4rC,EACJpxC,EAAGoxC,EACH3rC,GAAI2rC,EACJlxC,EAAGkxC,EACHzrC,GAAIyrC,EACJxxC,EAAGwxC,EACHxrC,GAAIwrC,GAERlsC,uBAAwB,YACxB7L,QAAS,MACT2H,KAAM,CACFL,IAAK,EACLC,IAAK,MA9IK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCJ5Bv0D,E,4MAAAA,EAKX,SAAUglF;kCAIf;SAASmD,EAAoBj5C,EAAQ+b,EAAel9C,EAAKyhD,GACrD,IAAI38C,EAASq8B,EAAS,IACtB,OAAQnhC,GACJ,IAAK,IACD,OAAOk9C,GAAiBuE,EAClB,eACA,kBACV,IAAK,KAUD,OARI38C,GADW,IAAXq8B,EACU+b,EAAgB,UAAY,UACpB,IAAX/b,EACG+b,GAAiBuE,EAAW,UAAY,WAC3CtgB,EAAS,EACN+b,GAAiBuE,EAAW,UAAY,WAExC,SAGlB,IAAK,IACD,OAAOvE,EAAgB,aAAe,aAC1C,IAAK,KAUD,OARIp4C,GADW,IAAXq8B,EACU+b,EAAgB,SAAW,SACnB,IAAX/b,EACG+b,GAAiBuE,EAAW,SAAW,WAC1CtgB,EAAS,EACN+b,GAAiBuE,EAAW,SAAW,WAEvCvE,GAAiBuE,EAAW,QAAU,WAGxD,IAAK,IACD,OAAOvE,EAAgB,UAAY,UACvC,IAAK,KAUD,OARIp4C,GADW,IAAXq8B,EACU+b,EAAgB,MAAQ,MAChB,IAAX/b,EACG+b,GAAiBuE,EAAW,MAAQ,QACvCtgB,EAAS,EACN+b,GAAiBuE,EAAW,MAAQ,QAEpCvE,GAAiBuE,EAAW,KAAO,QAGrD,IAAK,IACD,OAAOvE,GAAiBuE,EAAW,SAAW,YAClD,IAAK,KAQD,OANI38C,GADW,IAAXq8B,EACU+b,GAAiBuE,EAAW,MAAQ,OAC5B,IAAXtgB,EACG+b,GAAiBuE,EAAW,MAAQ,UAEpCvE,GAAiBuE,EAAW,MAAQ,QAGtD,IAAK,IACD,OAAOvE,GAAiBuE,EAAW,WAAa,eACpD,IAAK,KAUD,OARI38C,GADW,IAAXq8B,EACU+b,GAAiBuE,EAAW,QAAU,UAC9B,IAAXtgB,EACG+b,GAAiBuE,EAAW,SAAW,WAC1CtgB,EAAS,EACN+b,GAAiBuE,EAAW,SAAW,SAEvCvE,GAAiBuE,EAAW,UAAY,SAG1D,IAAK,IACD,OAAOvE,GAAiBuE,EAAW,WAAa,aACpD,IAAK,KAUD,OARI38C,GADW,IAAXq8B,EACU+b,GAAiBuE,EAAW,OAAS,QAC7B,IAAXtgB,EACG+b,GAAiBuE,EAAW,OAAS,SACxCtgB,EAAS,EACN+b,GAAiBuE,EAAW,OAAS,OAErCvE,GAAiBuE,EAAW,MAAQ,QAuF9D,OAjFSw1B,EAAOznC,aAAa,KAAM,CAC/BxI,OAAQ,wFAAwFptC,MAC5F,KAEJmtC,YAAa,8DAA8DntC,MACvE,KAEJs/E,kBAAkB,EAClBzuC,SAAU,sDAAsD7wC,MAAM,KACtE4wC,cAAe,qCAAqC5wC,MAAM,KAC1D2wC,YAAa,uBAAuB3wC,MAAM,KAC1Cq+E,oBAAoB,EACpBx1C,eAAgB,CACZ+K,GAAI,OACJD,IAAK,UACLE,EAAG,eACHC,GAAI,eACJC,IAAK,oBACLC,KAAM,2BAEVZ,SAAU,CACNC,QAAS,gBACTC,QAAS,gBAETC,SAAU,WACN,OAAQr3C,KAAK21C,OACT,KAAK,EACD,MAAO,wBACX,KAAK,EACD,MAAO,sBACX,KAAK,EACD,MAAO,uBACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,qBAGnB2B,QAAS,iBACTC,SAAU,WACN,OAAQv3C,KAAK21C,OACT,KAAK,EACD,MAAO,+BACX,KAAK,EACD,MAAO,6BACX,KAAK,EACD,MAAO,8BACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,4BAGnB6B,SAAU,KAEdQ,aAAc,CACVC,OAAQ,SACRC,KAAM,UACN7c,EAAGipD,EACHnsC,GAAImsC,EACJp7E,EAAGo7E,EACHlsC,GAAIksC,EACJxxC,EAAGwxC,EACHjsC,GAAIisC,EACJzxC,EAAGyxC,EACHhsC,GAAIgsC,EACJvxC,EAAGuxC,EACH9rC,GAAI8rC,EACJ7xC,EAAG6xC,EACH7rC,GAAI6rC,GAERvsC,uBAAwB,YACxB7L,QAAS,MACT2H,KAAM,CACFL,IAAK,EACLC,IAAK,MAzKK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCD5Bv0D,E,4MAAAA,EAKX,SAAUglF,GA8Df,OA1DSA,EAAOznC,aAAa,KAAM,CAC/BxI,OAAQ,gFAAgFptC,MACpF,KAEJmtC,YAAa,kDAAkDntC,MAAM,KACrE6wC,SAAU,4DAA4D7wC,MAClE,KAEJ4wC,cAAe,8BAA8B5wC,MAAM,KACnD2wC,YAAa,mBAAmB3wC,MAAM,KACtCq+E,oBAAoB,EACpBzpC,cAAe,QACf/B,KAAM,SAAUnqC,GACZ,MAA2B,MAApBA,EAAM6gD,OAAO,IAExB7kB,SAAU,SAAU2N,EAAOE,EAASiX,GAChC,OAAOnX,EAAQ,GAAK,KAAO,MAE/BxJ,eAAgB,CACZ+K,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVZ,SAAU,CACNC,QAAS,cACTC,QAAS,gBACTC,SAAU,eACVC,QAAS,cACTC,SAAU,wBACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,QACRC,KAAM,aACN7c,EAAG,eACH8c,GAAI,aACJjvC,EAAG,aACHkvC,GAAI,YACJtF,EAAG,UACHuF,GAAI,SACJxF,EAAG,WACHyF,GAAI,UACJvF,EAAG,WACHyF,GAAI,UACJ/F,EAAG,UACHgG,GAAI,WAERV,uBAAwB,YACxB7L,QAAS,MACT2H,KAAM,CACFL,IAAK,EACLC,IAAK,MA9DK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCJ5Bv0D,E,4MAAAA,EAKX,SAAUglF;kCAIf;IAAI0E,EAAa,CACbC,MAAO,CAEH3tC,GAAI,CAAC,UAAW,UAAW,WAC3BjvC,EAAG,CAAC,cAAe,gBACnBkvC,GAAI,CAAC,QAAS,SAAU,UACxBtF,EAAG,CAAC,YAAa,eACjBuF,GAAI,CAAC,MAAO,OAAQ,QACpBC,GAAI,CAAC,MAAO,OAAQ,QACpBE,GAAI,CAAC,QAAS,SAAU,UACxBC,GAAI,CAAC,SAAU,SAAU,WAE7BstC,uBAAwB,SAAU16C,EAAQ26C,GACtC,OAAkB,IAAX36C,EACD26C,EAAQ,GACE,GAAV36C,GAAeA,GAAU,EACzB26C,EAAQ,GACRA,EAAQ,IAElB/B,UAAW,SAAU54C,EAAQ+b,EAAel9C,GACxC,IAAI87E,EAAUH,EAAWC,MAAM57E,GAC/B,OAAmB,IAAfA,EAAIvK,OACGynD,EAAgB4+B,EAAQ,GAAKA,EAAQ,GAGxC36C,EACA,IACAw6C,EAAWE,uBAAuB16C,EAAQ26C,KAqF1D,OA/ES7E,EAAOznC,aAAa,KAAM,CAC/BxI,OAAQ,mFAAmFptC,MACvF,KAEJmtC,YAAa,2DAA2DntC,MACpE,KAEJs/E,kBAAkB,EAClBzuC,SAAU,wDAAwD7wC,MAC9D,KAEJ4wC,cAAe,qCAAqC5wC,MAAM,KAC1D2wC,YAAa,uBAAuB3wC,MAAM,KAC1Cq+E,oBAAoB,EACpBx1C,eAAgB,CACZ+K,GAAI,OACJD,IAAK,UACLE,EAAG,cACHC,GAAI,gBACJC,IAAK,qBACLC,KAAM,4BAEVZ,SAAU,CACNC,QAAS,eACTC,QAAS,eACTC,SAAU,WACN,OAAQr3C,KAAK21C,OACT,KAAK,EACD,MAAO,uBACX,KAAK,EACD,MAAO,qBACX,KAAK,EACD,MAAO,sBACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,oBAGnB2B,QAAS,cACTC,SAAU,WAUN,MATmB,CACf,4BACA,gCACA,4BACA,0BACA,8BACA,2BACA,4BAEgBv3C,KAAK21C,QAE7B6B,SAAU,KAEdQ,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN7c,EAAG,mBACH8c,GAAI0tC,EAAW5B,UACf/6E,EAAG28E,EAAW5B,UACd7rC,GAAIytC,EAAW5B,UACfnxC,EAAG+yC,EAAW5B,UACd5rC,GAAIwtC,EAAW5B,UACfpxC,EAAG,MACHyF,GAAIutC,EAAW5B,UACflxC,EAAG,QACHyF,GAAIqtC,EAAW5B,UACfxxC,EAAG,SACHgG,GAAIotC,EAAW5B,WAEnBlsC,uBAAwB,YACxB7L,QAAS,MACT2H,KAAM,CACFL,IAAK,EACLC,IAAK,MApHK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCH5Bv0D,E,4MAAAA,EAKX,SAAUglF;kCAIf;IAAI0E,EAAa,CACbC,MAAO,CAEH3tC,GAAI,CAAC,UAAW,UAAW,WAC3BjvC,EAAG,CAAC,cAAe,gBACnBkvC,GAAI,CAAC,QAAS,SAAU,UACxBtF,EAAG,CAAC,YAAa,eACjBuF,GAAI,CAAC,MAAO,OAAQ,QACpBC,GAAI,CAAC,MAAO,OAAQ,QACpBE,GAAI,CAAC,QAAS,SAAU,UACxBC,GAAI,CAAC,SAAU,SAAU,WAE7BstC,uBAAwB,SAAU16C,EAAQ26C,GACtC,OAAkB,IAAX36C,EACD26C,EAAQ,GACE,GAAV36C,GAAeA,GAAU,EACzB26C,EAAQ,GACRA,EAAQ,IAElB/B,UAAW,SAAU54C,EAAQ+b,EAAel9C,GACxC,IAAI87E,EAAUH,EAAWC,MAAM57E,GAC/B,OAAmB,IAAfA,EAAIvK,OACGynD,EAAgB4+B,EAAQ,GAAKA,EAAQ,GAGxC36C,EACA,IACAw6C,EAAWE,uBAAuB16C,EAAQ26C,KAmF1D,OA7Ea7E,EAAOznC,aAAa,UAAW,CACxCxI,OAAQ,mFAAmFptC,MACvF,KAEJmtC,YAAa,2DAA2DntC,MACpE,KAEJs/E,kBAAkB,EAClBzuC,SAAU,sDAAsD7wC,MAAM,KACtE4wC,cAAe,qCAAqC5wC,MAAM,KAC1D2wC,YAAa,uBAAuB3wC,MAAM,KAC1Cq+E,oBAAoB,EACpBx1C,eAAgB,CACZ+K,GAAI,OACJD,IAAK,UACLE,EAAG,cACHC,GAAI,gBACJC,IAAK,qBACLC,KAAM,4BAEVZ,SAAU,CACNC,QAAS,eACTC,QAAS,eACTC,SAAU,WACN,OAAQr3C,KAAK21C,OACT,KAAK,EACD,MAAO,sBACX,KAAK,EACD,MAAO,qBACX,KAAK,EACD,MAAO,sBACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,oBAGnB2B,QAAS,cACTC,SAAU,WAUN,MATmB,CACf,2BACA,+BACA,4BACA,0BACA,8BACA,2BACA,4BAEgBv3C,KAAK21C,QAE7B6B,SAAU,KAEdQ,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN7c,EAAG,mBACH8c,GAAI0tC,EAAW5B,UACf/6E,EAAG28E,EAAW5B,UACd7rC,GAAIytC,EAAW5B,UACfnxC,EAAG+yC,EAAW5B,UACd5rC,GAAIwtC,EAAW5B,UACfpxC,EAAG,MACHyF,GAAIutC,EAAW5B,UACflxC,EAAG,QACHyF,GAAIqtC,EAAW5B,UACfxxC,EAAG,SACHgG,GAAIotC,EAAW5B,WAEnBlsC,uBAAwB,YACxB7L,QAAS,MACT2H,KAAM,CACFL,IAAK,EACLC,IAAK,MAlHK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCJ5Bv0D,E,4MAAAA,EAKX,SAAUglF,GAkFf,OA9ESA,EAAOznC,aAAa,KAAM,CAC/BxI,OAAQ,mHAAmHptC,MACvH,KAEJmtC,YAAa,kDAAkDntC,MAAM,KACrE6wC,SAAU,sEAAsE7wC,MAC5E,KAEJ4wC,cAAe,8BAA8B5wC,MAAM,KACnD2wC,YAAa,uBAAuB3wC,MAAM,KAC1Cq+E,oBAAoB,EACpBx1C,eAAgB,CACZ+K,GAAI,SACJD,IAAK,YACLE,EAAG,aACHC,GAAI,cACJC,IAAK,qBACLC,KAAM,4BAEVZ,SAAU,CACNC,QAAS,mBACTC,QAAS,kBACTC,SAAU,gBACVC,QAAS,iBACTC,SAAU,8BACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,SACRC,KAAM,iBACN7c,EAAG,qBACH8c,GAAI,cACJjvC,EAAG,SACHkvC,GAAI,aACJtF,EAAG,SACHuF,GAAI,aACJxF,EAAG,UACHyF,GAAI,cACJvF,EAAG,UACHyF,GAAI,cACJ/F,EAAG,UACHgG,GAAI,eAERC,cAAe,mCACflQ,SAAU,SAAU2N,EAAOE,EAASiX,GAChC,OAAInX,EAAQ,GACD,UACAA,EAAQ,GACR,QACAA,EAAQ,GACR,aAEA,WAGfyI,aAAc,SAAUD,EAAMnW,GAI1B,OAHa,KAATmW,IACAA,EAAO,GAEM,YAAbnW,EACOmW,EACa,UAAbnW,EACQ,IAARmW,EAAaA,EAAOA,EAAO,GACd,eAAbnW,GAA0C,YAAbA,EACvB,IAATmW,EACO,EAEJA,EAAO,QAJX,GAOX5G,uBAAwB,UACxB7L,QAAS,KACT2H,KAAM,CACFL,IAAK,EACLC,IAAK,MAlFK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCH5Bv0D,E,4MAAAA,EAKX,SAAUglF,GAmEf,OA/DSA,EAAOznC,aAAa,KAAM,CAC/BxI,OAAQ,wFAAwFptC,MAC5F,KAEJmtC,YAAa,kDAAkDntC,MAAM,KACrE6wC,SAAU,oDAAoD7wC,MAAM,KACpE4wC,cAAe,8BAA8B5wC,MAAM,KACnD2wC,YAAa,uBAAuB3wC,MAAM,KAC1C6oC,eAAgB,CACZ+K,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,0BACLC,KAAM,+BACNqsC,IAAK,mBACLC,KAAM,wBAEVltC,SAAU,CACNC,QAAS,YACTC,QAAS,eACTE,QAAS,YACTD,SAAU,eACVE,SAAU,iBACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,QACRC,KAAM,eACN7c,EAAG,iBACH8c,GAAI,cACJjvC,EAAG,WACHkvC,GAAI,aACJtF,EAAG,WACHuF,GAAI,YACJxF,EAAG,SACHyF,GAAI,WACJvF,EAAG,WACHyF,GAAI,aACJ/F,EAAG,SACHgG,GAAI,SAERV,uBAAwB,mBACxB7L,QAAS,SAAUb,GACf,IAAIllC,EAAIklC,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,MAER,GAANllC,GAEM,GAANA,GADA,KAFA,OAUlB0tC,KAAM,CACFL,IAAK,EACLC,IAAK,MAnEK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCH5Bv0D,E,4MAAAA,EAKX,SAAUglF,GAqDf,OAjDSA,EAAOznC,aAAa,KAAM,CAC/BxI,OAAQ,sFAAsFptC,MAC1F,KAEJmtC,YAAa,kDAAkDntC,MAAM,KACrE6wC,SAAU,8DAA8D7wC,MACpE,KAEJ4wC,cAAe,kCAAkC5wC,MAAM,KACvD2wC,YAAa,uBAAuB3wC,MAAM,KAC1Cq+E,oBAAoB,EACpBx1C,eAAgB,CACZ+K,GAAI,UACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVZ,SAAU,CACNC,QAAS,eACTC,QAAS,iBACTC,SAAU,8BACVC,QAAS,YACTC,SAAU,kCACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,aACRC,KAAM,WACN7c,EAAG,aACH8c,GAAI,aACJjvC,EAAG,cACHkvC,GAAI,YACJtF,EAAG,aACHuF,GAAI,WACJxF,EAAG,YACHyF,GAAI,UACJvF,EAAG,cACHyF,GAAI,WACJ/F,EAAG,cACHgG,GAAI,YAER5E,KAAM,CACFL,IAAK,EACLC,IAAK,MArDK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCH5Bv0D,E,4MAAAA,EAKX,SAAUglF;kCAIf;IAAIK,EAAY,CACRC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHngD,EAAG,KAEPogD,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAsGb,OAnGSf,EAAOznC,aAAa,KAAM,CAC/BxI,OAAQ,0FAA0FptC,MAC9F,KAEJmtC,YAAa,0FAA0FntC,MACnG,KAEJ6wC,SAAU,8FAA8F7wC,MACpG,KAEJ4wC,cAAe,mDAAmD5wC,MAC9D,KAEJ2wC,YAAa,sBAAsB3wC,MAAM,KACzC6oC,eAAgB,CACZ+K,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,qBACLC,KAAM,4BAEVZ,SAAU,CACNC,QAAS,aACTC,QAAS,YACTC,SAAU,WACVC,QAAS,cACTC,SAAU,yBACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,SACRC,KAAM,UACN7c,EAAG,oBACH8c,GAAI,eACJjvC,EAAG,cACHkvC,GAAI,gBACJtF,EAAG,gBACHuF,GAAI,eACJxF,EAAG,WACHyF,GAAI,aACJvF,EAAG,YACHyF,GAAI,cACJ/F,EAAG,aACHgG,GAAI,eAERV,uBAAwB,aACxB7L,QAAS,SAAUb,GACf,OAAOA,EAAS,OAEpB4T,SAAU,SAAUzhC,GAChB,OAAOA,EAAOhb,QAAQ,gBAAiB,SAAUoG,GAC7C,OAAOs5E,EAAUt5E,MAGzBu+C,WAAY,SAAU3pC,GAClB,OAAOA,EAAOhb,QAAQ,MAAO,SAAUoG,GACnC,OAAO44E,EAAU54E,MAIzB8vC,cAAe,wCACflQ,SAAU,SAAUmW,EAAMkB,EAAQyN,GAC9B,OAAI3O,EAAO,EACA,SACAA,EAAO,EACP,SACAA,EAAO,GACP,QACAA,EAAO,GACP,WACAA,EAAO,GACP,WACAA,EAAO,GACP,QAEA,UAGfC,aAAc,SAAUD,EAAMnW,GAI1B,OAHa,KAATmW,IACAA,EAAO,GAEM,UAAbnW,EACOmW,EAAO,EAAIA,EAAOA,EAAO,GACZ,UAAbnW,GAAqC,SAAbA,GAEX,YAAbA,GACQ,IAARmW,EAFAA,EAIAA,EAAO,IAGtB9K,KAAM,CACFL,IAAK,EACLC,IAAK,MAhIK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCH5Bv0D,E,4MAAAA,EAKX,SAAUglF,GAqFf,OAjFSA,EAAOznC,aAAa,KAAM,CAC/BxI,OAAQ,wFAAwFptC,MAC5F,KAEJmtC,YAAa,mEAAmEntC,MAC5E,KAEJs/E,kBAAkB,EAClBzuC,SAAU,8DAA8D7wC,MACpE,KAEJ4wC,cAAe,kCAAkC5wC,MAAM,KACvD2wC,YAAa,qBAAqB3wC,MAAM,KACxC6oC,eAAgB,CACZ+K,GAAI,SACJD,IAAK,YACLE,EAAG,aACHC,GAAI,cACJC,IAAK,sBACLC,KAAM,6BAEVZ,SAAU,CACNC,QAAS,YACTC,QAAS,YACTC,SAAU,WACVC,QAAS,aACTC,SAAU,gBACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,QACRC,KAAM,YACN7c,EAAG,iBACH8c,GAAI,aACJjvC,EAAG,YACHkvC,GAAI,cACJtF,EAAG,SACHuF,GAAI,WACJxF,EAAG,UACHyF,GAAI,YACJvF,EAAG,SACHyF,GAAI,WACJ/F,EAAG,cACHgG,GAAI,iBAERV,uBAAwB,WACxB7L,QAAS,MACTwM,cAAe,iCACfkG,aAAc,SAAUD,EAAMnW,GAI1B,OAHa,KAATmW,IACAA,EAAO,GAEM,WAAbnW,EACOmW,EAAO,EAAIA,EAAOA,EAAO,GACZ,SAAbnW,EACAmW,EACa,cAAbnW,EACQ,IAARmW,EAAaA,EAAOA,EAAO,GACd,aAAbnW,EACAmW,EAAO,QADX,GAIXnW,SAAU,SAAUmW,EAAMkB,EAAQyN,GAC9B,OAAI3O,EAAO,EACA,SACAA,EAAO,GACP,OACAA,EAAO,GACP,YACAA,EAAO,GACP,WAEA,UAGf9K,KAAM,CACFL,IAAK,EACLC,IAAK,MArFK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCD5Bv0D,E,4MAAAA,EAKX,SAAUglF,GAiEf,OA7DUA,EAAOznC,aAAa,MAAO,CACjCxI,OAAQ,0FAA0FptC,MAC9F,KAEJmtC,YAAa,kDAAkDntC,MAAM,KACrE6wC,SAAU,kDAAkD7wC,MAAM,KAClE4wC,cAAe,iCAAiC5wC,MAAM,KACtD2wC,YAAa,yBAAyB3wC,MAAM,KAC5C6oC,eAAgB,CACZ+K,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVZ,SAAU,CACNC,QAAS,gBACTC,QAAS,gBACTC,SAAU,gBACVC,QAAS,oBACTC,SAAU,+BACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,SACRC,KAAM,WACN7c,EAAG,gBACH8c,GAAI,aACJjvC,EAAG,aACHkvC,GAAI,YACJtF,EAAG,WACHuF,GAAI,UACJxF,EAAG,YACHyF,GAAI,WACJvF,EAAG,YACHyF,GAAI,WACJ/F,EAAG,YACHgG,GAAI,YAERV,uBAAwB,uBACxB7L,QAAS,SAAUb,GACf,IAAIllC,EAAIklC,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,GAANllC,EACA,KACM,GAANA,EACA,KACM,GAANA,EACA,KACA,OAGlB0tC,KAAM,CACFL,IAAK,EACLC,IAAK,MAjEK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCL5Bv0D,E,4MAAAA,EAKX,SAAUglF;kCAIf;IAAIiB,EAAW,CACXtgD,EAAG,MACH2/C,EAAG,MACHC,EAAG,MACHC,EAAG,MACHC,EAAG,MACHC,EAAG,MACHC,EAAG,MACHC,EAAG,MACHC,EAAG,MACHC,EAAG,MACHS,GAAI,MACJ0D,GAAI,MACJC,GAAI,MACJ9D,GAAI,MACJI,GAAI,MACJ6C,GAAI,MACJhD,GAAI,MACJI,GAAI,MACJP,GAAI,MACJC,GAAI,MACJO,GAAI,MACJJ,IAAK,OAyFT,OAtFStB,EAAOznC,aAAa,KAAM,CAC/BxI,OAAQ,CACJ5J,OAAQ,qFAAqFxjC,MACzF,KAEJm/E,WAAY,yEAAyEn/E,MACjF,MAGRmtC,YAAa,kDAAkDntC,MAAM,KACrE6wC,SAAU,yDAAyD7wC,MAC/D,KAEJ4wC,cAAe,8BAA8B5wC,MAAM,KACnD2wC,YAAa,uBAAuB3wC,MAAM,KAC1C6oC,eAAgB,CACZ+K,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVZ,SAAU,CACNC,QAAS,mBACTC,QAAS,mBACTE,QAAS,mBACTD,SAAU,kCACVE,SAAU,oCACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,WACRC,KAAM,SACN7c,EAAG,eACHnyB,EAAG,YACHkvC,GAAI,YACJtF,EAAG,UACHuF,GAAI,UACJxF,EAAG,SACHyF,GAAI,SACJvF,EAAG,SACHyF,GAAI,SACJ/F,EAAG,SACHgG,GAAI,UAERC,cAAe,qBACfkG,aAAc,SAAUD,EAAMnW,GAI1B,OAHa,KAATmW,IACAA,EAAO,GAEM,QAAbnW,EACOmW,EAAO,EAAIA,EAAOA,EAAO,GACZ,SAAbnW,EACAmW,EACa,QAAbnW,EACQ,IAARmW,EAAaA,EAAOA,EAAO,GACd,UAAbnW,EACAmW,EAAO,QADX,GAIXnW,SAAU,SAAUmW,EAAMkB,EAAQyN,GAC9B,OAAI3O,EAAO,EACA,MACAA,EAAO,GACP,OACAA,EAAO,GACP,MACAA,EAAO,GACP,QAEA,OAGf5G,uBAAwB,kBACxB7L,QAAS,SAAUb,GAGf,OAAOA,GAAU+2C,EAAS/2C,IAAW+2C,EAF7B/2C,EAAS,KAEmC+2C,EADlC,KAAV/2C,EAAgB,IAAM,QAGlCwI,KAAM,CACFL,IAAK,EACLC,IAAK,MAnHK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCH5Bv0D,E,4MAAAA,EAKX,SAAUglF,GA+Df,OA3DSA,EAAOznC,aAAa,KAAM,CAC/BxI,OAAQ,oGAAoGptC,MACxG,KAEJmtC,YAAa,iEAAiEntC,MAC1E,KAEJs/E,kBAAkB,EAClBzuC,SAAU,iDAAiD7wC,MAAM,KACjE4wC,cAAe,8CAA8C5wC,MAAM,KACnE2wC,YAAa,yBAAyB3wC,MAAM,KAC5Cq+E,oBAAoB,EACpBx1C,eAAgB,CACZ+K,GAAI,OACJD,IAAK,UACLE,EAAG,aACHC,GAAI,cACJC,IAAK,wBACLC,KAAM,oCAEVY,cAAe,wBACf/B,KAAM,SAAUnqC,GACZ,MAAiB,eAAVA,GAEXg8B,SAAU,SAAUmW,EAAMkB,EAAQyN,GAC9B,OAAI3O,EAAO,GACA,aAEA,cAGfzH,SAAU,CACNC,QAAS,mBACTC,QAAS,qBACTC,SAAU,qBACVC,QAAS,wBACTC,SAAU,6BACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,SACRC,KAAM,YACN7c,EAAG,eACH8c,GAAI,YACJjvC,EAAG,SACHkvC,GAAI,UACJtF,EAAG,YACHuF,GAAI,aACJxF,EAAG,QACHyF,GAAI,SACJ7R,EAAG,YACH8R,GAAI,aACJxF,EAAG,UACHyF,GAAI,WACJ/F,EAAG,OACHgG,GAAI,YA/DM,WAAnB,EAAOjS,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCH5Bv0D,E,4MAAAA,EAKX,SAAUglF;kCAIf;IAAIiB,EAAW,CACXX,EAAG,QACHI,EAAG,QACHG,EAAG,QACHK,GAAI,QACJC,GAAI,QACJZ,EAAG,OACHK,EAAG,OACHQ,GAAI,OACJC,GAAI,OACJb,EAAG,QACHC,EAAG,QACHa,IAAK,QACLX,EAAG,OACHG,EAAG,QACHS,GAAI,QACJC,GAAI,QACJC,GAAI,QACJC,GAAI,SAoER,OAjES1B,EAAOznC,aAAa,KAAM,CAC/BxI,OAAQ,+EAA+EptC,MACnF,KAEJmtC,YAAa,kDAAkDntC,MAAM,KACrE6wC,SAAU,wDAAwD7wC,MAC9D,KAEJ4wC,cAAe,8BAA8B5wC,MAAM,KACnD2wC,YAAa,uBAAuB3wC,MAAM,KAC1C6oC,eAAgB,CACZ+K,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVZ,SAAU,CACNC,QAAS,mBACTC,QAAS,mBACTC,SAAU,2BACVC,QAAS,YACTC,SAAU,0BACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,SACRC,KAAM,QACN7c,EAAG,iBACHnyB,EAAG,YACHkvC,GAAI,WACJtF,EAAG,YACHuF,GAAI,WACJxF,EAAG,UACHyF,GAAI,SACJvF,EAAG,SACHyF,GAAI,QACJ/F,EAAG,UACHgG,GAAI,UAERvM,QAAS,SAAUb,EAAQ0X,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,KACL,IAAK,KACD,OAAO1X,EACX,QACI,GAAe,IAAXA,EAEA,OAAOA,EAAS,QAEpB,IAAInlC,EAAImlC,EAAS,GAGjB,OAAOA,GAAU+2C,EAASl8E,IAAMk8E,EAFvB/2C,EAAS,IAAOnlC,IAEsBk8E,EAD7B,KAAV/2C,EAAgB,IAAM,SAI1CwI,KAAM,CACFL,IAAK,EACLC,IAAK,MA1FK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCH5Bv0D,E,4MAAAA,EAKX,SAAUglF,GAwDf,OApDWA,EAAOznC,aAAa,QAAS,CACpCxI,OAAQ,0FAA0FptC,MAC9F,KAEJmtC,YAAa,kDAAkDntC,MAAM,KACrE6wC,SAAU,yDAAyD7wC,MAC/D,KAEJ4wC,cAAe,8BAA8B5wC,MAAM,KACnD2wC,YAAa,wBAAwB3wC,MAAM,KAC3C6oC,eAAgB,CACZ+K,GAAI,QACJD,IAAK,WACLE,EAAG,YACHC,GAAI,eACJC,IAAK,qBACLC,KAAM,6BAEVZ,SAAU,CACNC,QAAS,oBACTC,QAAS,gBACTC,SAAU,0BACVC,QAAS,eACTC,SAAU,4BACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,gBACRC,KAAM,mBACN7c,EAAG,gBACH8c,GAAI,aACJjvC,EAAG,eACHkvC,GAAI,YACJtF,EAAG,aACHuF,GAAI,UACJxF,EAAG,aACHyF,GAAI,UACJvF,EAAG,cACHyF,GAAI,WACJ/F,EAAG,aACHgG,GAAI,WAERV,uBAAwB,UACxB7L,QAAS,SAAUb,GACf,OAAOA,GAEXwI,KAAM,CACFL,IAAK,EACLC,IAAK,MAxDK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCH5Bv0D,E,4MAAAA,EAKX,SAAUglF;kCAIf;IAAImF,EAAe,iDAAiDxiF,MAAM,KA4B1E,SAASmgF,EAAU54C,EAAQ+b,EAAe5pC,EAAQmuC,GAC9C,IAAI46B,EAiBR,SAAsBl7C,GAClB,IAAIm7C,EAAUlkF,KAAKurC,MAAOxC,EAAS,IAAQ,KACvCo7C,EAAMnkF,KAAKurC,MAAOxC,EAAS,IAAO,IAClCxnB,EAAMwnB,EAAS,GACf23C,EAAO,GACG,EAAVwD,IACAxD,GAAQsD,EAAaE,GAAW,SAE1B,EAANC,IACAzD,IAAkB,KAATA,EAAc,IAAM,IAAMsD,EAAaG,GAAO,OAEjD,EAAN5iE,IACAm/D,IAAkB,KAATA,EAAc,IAAM,IAAMsD,EAAaziE,IAEpD,MAAgB,KAATm/D,EAAc,OAASA,EA/Bb0D,CAAar7C,GAC9B,OAAQ7tB,GACJ,IAAK,KACD,OAAO+oE,EAAa,OACxB,IAAK,KACD,OAAOA,EAAa,OACxB,IAAK,KACD,OAAOA,EAAa,OACxB,IAAK,KACD,OAAOA,EAAa,OACxB,IAAK,KACD,OAAOA,EAAa,OACxB,IAAK,KACD,OAAOA,EAAa,QA8EhC,OAzDUpF,EAAOznC,aAAa,MAAO,CACjCxI,OAAQ,kMAAkMptC,MACtM,KAEJmtC,YAAa,0HAA0HntC,MACnI,KAEJs/E,kBAAkB,EAClBzuC,SAAU,2DAA2D7wC,MACjE,KAEJ4wC,cAAe,2DAA2D5wC,MACtE,KAEJ2wC,YAAa,2DAA2D3wC,MACpE,KAEJ6oC,eAAgB,CACZ+K,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVZ,SAAU,CACNC,QAAS,cACTC,QAAS,cACTC,SAAU,MACVC,QAAS,cACTC,SAAU,MACVC,SAAU,KAEdQ,aAAc,CACVC,OA/FR,SAAyB1L,GACrB,IAAI9U,EAAO8U,EASX,OARA9U,GAC+B,IAA3B8U,EAAOpvC,QAAQ,OACTs6B,EAAK76B,MAAM,GAAI,GAAK,OACO,IAA3B2vC,EAAOpvC,QAAQ,OACfs6B,EAAK76B,MAAM,GAAI,GAAK,OACO,IAA3B2vC,EAAOpvC,QAAQ,OACfs6B,EAAK76B,MAAM,GAAI,GAAK,MACpB66B,EAAO,QAuFbygB,KAnFR,SAAuB3L,GACnB,IAAI9U,EAAO8U,EASX,OARA9U,GAC+B,IAA3B8U,EAAOpvC,QAAQ,OACTs6B,EAAK76B,MAAM,GAAI,GAAK,OACO,IAA3B2vC,EAAOpvC,QAAQ,OACfs6B,EAAK76B,MAAM,GAAI,GAAK,OACO,IAA3B2vC,EAAOpvC,QAAQ,OACfs6B,EAAK76B,MAAM,GAAI,GAAK,MACpB66B,EAAO,QA2Eb4D,EAAG,UACH8c,GAAI8rC,EACJ/6E,EAAG,UACHkvC,GAAI6rC,EACJnxC,EAAG,UACHuF,GAAI4rC,EACJpxC,EAAG,UACHyF,GAAI2rC,EACJlxC,EAAG,UACHyF,GAAIyrC,EACJxxC,EAAG,UACHgG,GAAIwrC,GAERlsC,uBAAwB,YACxB7L,QAAS,MACT2H,KAAM,CACFL,IAAK,EACLC,IAAK,MA5HK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCF5Bv0D,E,4MAAAA,EAKX,SAAUglF;kCAIf;IAAIiB,EAAW,CACXX,EAAG,QACHI,EAAG,QACHG,EAAG,QACHK,GAAI,QACJC,GAAI,QACJZ,EAAG,OACHK,EAAG,OACHQ,GAAI,OACJC,GAAI,OACJb,EAAG,QACHC,EAAG,QACHa,IAAK,QACLX,EAAG,OACHG,EAAG,QACHS,GAAI,QACJC,GAAI,QACJC,GAAI,QACJC,GAAI,SAkFR,OA/ES1B,EAAOznC,aAAa,KAAM,CAC/BxI,OAAQ,6EAA6EptC,MACjF,KAEJmtC,YAAa,kDAAkDntC,MAAM,KACrE6wC,SAAU,wDAAwD7wC,MAC9D,KAEJ4wC,cAAe,8BAA8B5wC,MAAM,KACnD2wC,YAAa,uBAAuB3wC,MAAM,KAC1C0kC,SAAU,SAAU2N,EAAOE,EAASiX,GAChC,OAAInX,EAAQ,GACDmX,EAAU,KAAO,KAEjBA,EAAU,KAAO,MAGhC5U,cAAe,cACf/B,KAAM,SAAUnqC,GACZ,MAAiB,OAAVA,GAA4B,OAAVA,GAE7BmgC,eAAgB,CACZ+K,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVZ,SAAU,CACNC,QAAS,kBACTC,QAAS,kBACTC,SAAU,2BACVC,QAAS,WACTC,SAAU,yBACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,WACRC,KAAM,UACN7c,EAAG,gBACH8c,GAAI,YACJjvC,EAAG,aACHkvC,GAAI,YACJtF,EAAG,WACHuF,GAAI,UACJxF,EAAG,UACHyF,GAAI,SACJ7R,EAAG,YACH8R,GAAI,WACJxF,EAAG,SACHyF,GAAI,QACJ/F,EAAG,UACHgG,GAAI,UAERvM,QAAS,SAAUb,EAAQ0X,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,KACL,IAAK,KACD,OAAO1X,EACX,QACI,GAAe,IAAXA,EAEA,OAAOA,EAAS,QAEpB,IAAInlC,EAAImlC,EAAS,GAGjB,OAAOA,GAAU+2C,EAASl8E,IAAMk8E,EAFvB/2C,EAAS,IAAOnlC,IAEsBk8E,EAD7B,KAAV/2C,EAAgB,IAAM,SAI1CwI,KAAM,CACFL,IAAK,EACLC,IAAK,MAxGK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCH5Bv0D,E,4MAAAA,EAKX,SAAUglF,GAiEf,SAASmD,EAAoBj5C,EAAQ+b,EAAel9C,EAAKyhD,GACjDrkB,EAAS,CACTjM,EAAG,CAAC,kBAAmB,mBACvB8c,GAAI,CAAC9M,EAAS,WAAiBA,EAAS,YACxCniC,EAAG,CAAC,UAAW,cACfkvC,GAAI,CAAC/M,EAAS,SAAeA,EAAS,UACtCyH,EAAG,CAAC,UAAW,eACfuF,GAAI,CAAChN,EAAS,SAAeA,EAAS,UACtCwH,EAAG,CAAC,UAAW,eACfyF,GAAI,CAACjN,EAAS,SAAeA,EAAS,UACtC0H,EAAG,CAAC,SAAU,aACdyF,GAAI,CAACnN,EAAS,SAAeA,EAAS,UACtCoH,EAAG,CAAC,QAAS,YACbgG,GAAI,CAACpN,EAAS,OAAaA,EAAS,SAExC,OAAOsgB,GAEDvE,EADA9f,EAAOp9B,GAAK,GAGZo9B,EAAOp9B,GAAK,GAGtB,OAjFUi3E,EAAOznC,aAAa,MAAO,CACjCxI,OAAQ,sFAAsFptC,MAC1F,KAEJmtC,YAAa,kDAAkDntC,MAAM,KACrE6wC,SAAU,sDAAsD7wC,MAAM,KACtE4wC,cAAe,8BAA8B5wC,MAAM,KACnD2wC,YAAa,uBAAuB3wC,MAAM,KAC1C6oC,eAAgB,CACZ+K,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,wBACJC,IAAK,8BACLC,KAAM,0CAEVY,cAAe,aACf/B,KAAM,SAAUnqC,GACZ,MAAO,QAAUA,EAAMxI,eAE3BwkC,SAAU,SAAU2N,EAAOE,EAASiX,GAChC,OAAY,GAARnX,EACOmX,EAAU,MAAQ,MAElBA,EAAU,MAAQ,OAGjCpW,SAAU,CACNC,QAAS,cACTC,QAAS,cACTC,SAAU,cACVC,QAAS,eACTC,SAAU,8BACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,YACRC,KAAM,OACN7c,EAAGipD,EACHnsC,GAAImsC,EACJp7E,EAAGo7E,EACHlsC,GAAIksC,EACJxxC,EAAGwxC,EACHjsC,GAAIisC,EACJzxC,EAAGyxC,EACHhsC,GAAIgsC,EACJvxC,EAAGuxC,EACH9rC,GAAI8rC,EACJ7xC,EAAG6xC,EACH7rC,GAAI6rC,GAERvsC,uBAAwB,YACxB7L,QAAS,MACT2H,KAAM,CACFL,IAAK,EACLC,IAAK,MAjEK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCJ5Bv0D,E,4MAAAA,EAKX,SAAUglF,GAoDf,OAhDUA,EAAOznC,aAAa,MAAO,CACjCxI,OAAQ,kFAAkFptC,MACtF,KAEJmtC,YAAa,kFAAkFntC,MAC3F,KAEJ6wC,SAAU,kDAAkD7wC,MAAM,KAClE4wC,cAAe,kDAAkD5wC,MAAM,KACvE2wC,YAAa,kDAAkD3wC,MAAM,KACrE6oC,eAAgB,CACZ+K,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVZ,SAAU,CACNC,QAAS,cACTC,QAAS,cACTC,SAAU,cACVC,QAAS,eACTC,SAAU,cACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,gBACRC,KAAM,SACN7c,EAAG,OACH8c,GAAI,UACJjvC,EAAG,QACHkvC,GAAI,WACJtF,EAAG,OACHuF,GAAI,cACJxF,EAAG,MACHyF,GAAI,WACJvF,EAAG,QACHyF,GAAI,YACJ/F,EAAG,QACHgG,GAAI,aAER5E,KAAM,CACFL,IAAK,EACLC,IAAK,OApDK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCH5Bv0D,E,4MAAAA,EAKX,SAAUglF,GAoDf,OAhDcA,EAAOznC,aAAa,WAAY,CAC1CxI,OAAQ,wFAAwFptC,MAC5F,KAEJmtC,YAAa,wFAAwFntC,MACjG,KAEJ6wC,SAAU,kDAAkD7wC,MAAM,KAClE4wC,cAAe,kDAAkD5wC,MAAM,KACvE2wC,YAAa,kDAAkD3wC,MAAM,KACrE6oC,eAAgB,CACZ+K,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVZ,SAAU,CACNC,QAAS,eACTC,QAAS,cACTC,SAAU,cACVC,QAAS,gBACTC,SAAU,cACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,iBACRC,KAAM,SACN7c,EAAG,OACH8c,GAAI,UACJjvC,EAAG,QACHkvC,GAAI,WACJtF,EAAG,OACHuF,GAAI,cACJxF,EAAG,MACHyF,GAAI,WACJvF,EAAG,QACHyF,GAAI,YACJ/F,EAAG,QACHgG,GAAI,aAER5E,KAAM,CACFL,IAAK,EACLC,IAAK,OApDK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCH5Bv0D,E,4MAAAA,EAKX,SAAUglF,GA6Gf,OAzGWA,EAAOznC,aAAa,QAAS,CACpCxI,OAAQ,sFAAsFptC,MAC1F,KAEJmtC,YAAa,sFAAsFntC,MAC/F,KAEJ6wC,SAAU,yDAAyD7wC,MAC/D,KAEJ4wC,cAAe,uBAAuB5wC,MAAM,KAC5C2wC,YAAa,uBAAuB3wC,MAAM,KAC1C6oC,eAAgB,CACZ+K,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,0BACJC,IAAK,iCACLC,KAAM,wCAEVY,cAAe,qDACfkG,aAAc,SAAUD,EAAMnW,GAI1B,OAHa,KAATmW,IACAA,EAAO,GAGM,eAAbnW,GACa,UAAbA,GACa,iBAAbA,GAGoB,iBAAbA,GAA4C,QAAbA,GAGvB,IAARmW,EAJAA,EAEAA,EAAO,IAKtBnW,SAAU,SAAUmW,EAAMkB,EAAQyN,GAC1B3Q,EAAY,IAAPgC,EAAakB,EACtB,OAAIlD,EAAK,IACE,aACAA,EAAK,IACL,QACAA,EAAK,KACL,eACAA,EAAK,KACL,MACAA,EAAK,KACL,eAEA,OAGfzF,SAAU,CACNC,QAAS,mBACTC,QAAS,kBACTC,SAAU,4BACVC,QAAS,eACTC,SAAU,6BACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,WACRC,KAAM,WACN7c,EAAG,eACH8c,GAAI,YACJjvC,EAAG,YACHkvC,GAAI,WACJtF,EAAG,YACHuF,GAAI,WACJxF,EAAG,UACHyF,GAAI,SACJvF,EAAG,UACHyF,GAAI,SACJ/F,EAAG,UACHgG,GAAI,UAGRV,uBAAwB,6BACxB7L,QAAS,SAAUb,EAAQ0X,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAO1X,EAAS,QACpB,IAAK,IACL,IAAK,IACD,OAAOA,EAAS,SACpB,QACI,OAAOA,IAGnB4T,SAAU,SAAUzhC,GAChB,OAAOA,EAAOhb,QAAQ,KAAM,MAEhC2kD,WAAY,SAAU3pC,GAClB,OAAOA,EAAOhb,QAAQ,KAAM,MAEhCqxC,KAAM,CAEFL,IAAK,EACLC,IAAK,MA7GK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCF5Bv0D,E,4MAAAA,EAKX,SAAUglF,GAYf,SAAS2B,EAAuBz3C,EAAQ+b,EAAel9C,GASnD,MAAY,MAARA,EACOk9C,EAAgB,UAAY,UACpB,MAARl9C,EACAk9C,EAAgB,SAAW,SAE3B/b,EAAS,KAtBFnrC,GAsB6BmrC,EArB3C03C,GADQC,EASC,CACT7qC,GAAIiP,EAAgB,yBAA2B,yBAC/ChP,GAAIgP,EAAgB,yBAA2B,yBAC/C/O,GAAI+O,EAAgB,sBAAwB,sBAC5C9O,GAAI,gBACJE,GAAI,wBACJC,GAAI,kBAOgCvuC,IArBvBpG,MAAM,KAChB5D,EAAM,IAAO,GAAKA,EAAM,KAAQ,GACjC6iF,EAAM,GACM,GAAZ7iF,EAAM,IAAWA,EAAM,IAAM,IAAMA,EAAM,IAAM,IAAmB,IAAbA,EAAM,KAC3D6iF,EAAM,GACNA,EAAM,IAiDhB,SAAS4D,EAAqB3J,GAC1B,OAAO,WACH,OAAOA,EAAM,KAAwB,KAAjBh9E,KAAKm2C,QAAiB,IAAM,IAAM,QAoG9D,OAhGSgrC,EAAOznC,aAAa,KAAM,CAC/BxI,OAAQ,CACJ5J,OAAQ,yFAAyFxjC,MAC7F,KAEJm/E,WAAY,iGAAiGn/E,MACzG,MAGRmtC,YAAa,yDAAyDntC,MAClE,KAEJ6wC,SAhDJ,SAA6BzrC,EAAGo+B,GAC5B,IAAIqN,EAAW,CACPiyC,WAAY,0DAA0D9iF,MAClE,KAEJ+iF,WAAY,0DAA0D/iF,MAClE,KAEJgjF,SAAU,4DAA4DhjF,MAClE,MAKZ,OAAU,IAANoF,EACOyrC,EAAA,WACF/3C,MAAM,EAAG,GACTI,OAAO23C,EAAA,WAAuB/3C,MAAM,EAAG,IAE3CsM,EASEyrC,EALI,qBAAqBnrC,KAAK89B,GAC/B,aACA,sCAAsC99B,KAAK89B,GAC3C,WACA,cACoBp+B,EAAEysC,OARjBhB,EAAA,YA6BXD,cAAe,uBAAuB5wC,MAAM,KAC5C2wC,YAAa,uBAAuB3wC,MAAM,KAC1C6oC,eAAgB,CACZ+K,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,iBACJC,IAAK,wBACLC,KAAM,+BAEVZ,SAAU,CACNC,QAASwvC,EAAqB,cAC9BvvC,QAASuvC,EAAqB,YAC9BrvC,QAASqvC,EAAqB,WAC9BtvC,SAAUsvC,EAAqB,cAC/BpvC,SAAU,WACN,OAAQv3C,KAAK21C,OACT,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,OAAOgxC,EAAqB,oBAAoB5pF,KAAKiD,MACzD,KAAK,EACL,KAAK,EACL,KAAK,EACD,OAAO2mF,EAAqB,qBAAqB5pF,KAAKiD,QAGlEw3C,SAAU,KAEdQ,aAAc,CACVC,OAAQ,QACRC,KAAM,UACN7c,EAAG,kBACH8c,GAAI2qC,EACJ55E,EAAG45E,EACH1qC,GAAI0qC,EACJhwC,EAAG,SACHuF,GAAIyqC,EACJjwC,EAAG,OACHyF,GAAIwqC,EACJ/vC,EAAG,SACHyF,GAAIsqC,EACJrwC,EAAG,MACHgG,GAAIqqC,GAGRpqC,cAAe,wBACf/B,KAAM,SAAUnqC,GACZ,MAAO,iBAAiBhD,KAAKgD,IAEjCg8B,SAAU,SAAUmW,EAAMkB,EAAQyN,GAC9B,OAAI3O,EAAO,EACA,OACAA,EAAO,GACP,QACAA,EAAO,GACP,MAEA,UAGf5G,uBAAwB,iBACxB7L,QAAS,SAAUb,EAAQ0X,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,IACL,IAAK,IACD,OAAO1X,EAAS,KACpB,IAAK,IACD,OAAOA,EAAS,MACpB,QACI,OAAOA,IAGnBwI,KAAM,CACFL,IAAK,EACLC,IAAK,MAjKK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCH5Bv0D,E,4MAAAA,EAKX,SAAUglF;kCAIf;IAAIjwC,EAAS,CACL,QACA,QACA,OACA,QACA,MACA,MACA,SACA,OACA,QACA,SACA,QACA,SAEJ2P,EAAO,CAAC,QAAS,MAAO,OAAQ,MAAO,SAAU,OAAQ,QA8D7D,OA5DSsgC,EAAOznC,aAAa,KAAM,CAC/BxI,OAAQA,EACRD,YAAaC,EACbyD,SAAUkM,EACVnM,cAAemM,EACfpM,YAAaoM,EACblU,eAAgB,CACZ+K,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVY,cAAe,UACf/B,KAAM,SAAUnqC,GACZ,MAAO,QAAUA,GAErBg8B,SAAU,SAAUmW,EAAMkB,EAAQyN,GAC9B,OAAI3O,EAAO,GACA,MAEJ,OAEXzH,SAAU,CACNC,QAAS,eACTC,QAAS,eACTC,SAAU,iBACVC,QAAS,sBACTC,SAAU,yBACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,SACRC,KAAM,SACN7c,EAAG,YACH8c,GAAI,WACJjvC,EAAG,UACHkvC,GAAI,SACJtF,EAAG,YACHuF,GAAI,WACJxF,EAAG,SACHyF,GAAI,QACJvF,EAAG,UACHyF,GAAI,SACJ/F,EAAG,UACHgG,GAAI,UAERwG,SAAU,SAAUzhC,GAChB,OAAOA,EAAOhb,QAAQ,KAAM,MAEhC2kD,WAAY,SAAU3pC,GAClB,OAAOA,EAAOhb,QAAQ,KAAM,MAEhCqxC,KAAM,CACFL,IAAK,EACLC,IAAK,MAhFK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCJ5Bv0D,E,4MAAAA,EAKX,SAAUglF,GAkDf,OA9CSA,EAAOznC,aAAa,KAAM,CAC/BxI,OAAQ,yEAAyEptC,MAC7E,KAEJmtC,YAAa,kDAAkDntC,MAAM,KACrE6wC,SAAU,uDAAuD7wC,MAAM,KACvE4wC,cAAe,8BAA8B5wC,MAAM,KACnD2wC,YAAa,uBAAuB3wC,MAAM,KAC1C6oC,eAAgB,CACZ+K,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVZ,SAAU,CACNC,QAAS,uBACTC,QAAS,mBACTC,SAAU,2BACVC,QAAS,sBACTC,SAAU,mCACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,gBACRC,KAAM,oBACN7c,EAAG,SACH8c,GAAI,YACJjvC,EAAG,aACHkvC,GAAI,YACJtF,EAAG,WACHuF,GAAI,UACJxF,EAAG,UACHyF,GAAI,SACJvF,EAAG,SACHyF,GAAI,QACJ/F,EAAG,UACHgG,GAAI,UAER5E,KAAM,CACFL,IAAK,EACLC,IAAK,MAlDK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCH5Bv0D,E,4MAAAA,EAKX,SAAUglF,GAoDf,OAhDaA,EAAOznC,aAAa,UAAW,CACxCxI,OAAQ,6EAA6EptC,MACjF,KAEJmtC,YAAa,oDAAoDntC,MAAM,KACvE6wC,SAAU,+DAA+D7wC,MACrE,KAEJ4wC,cAAe,kCAAkC5wC,MAAM,KACvD2wC,YAAa,yBAAyB3wC,MAAM,KAC5C6oC,eAAgB,CACZ+K,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVZ,SAAU,CACNC,QAAS,uBACTC,QAAS,mBACTC,SAAU,2BACVC,QAAS,uBACTC,SAAU,oCACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,kBACRC,KAAM,qBACN7c,EAAG,SACH8c,GAAI,YACJjvC,EAAG,aACHkvC,GAAI,YACJtF,EAAG,WACHuF,GAAI,UACJxF,EAAG,UACHyF,GAAI,SACJvF,EAAG,SACHyF,GAAI,QACJ/F,EAAG,UACHgG,GAAI,UAER5E,KAAM,CACFL,IAAK,EACLC,IAAK,MApDK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCF5Bv0D,E,4MAAAA,EAKX,SAAUglF,GA6Ef,OAzESA,EAAOznC,aAAa,KAAM,CAC/BxI,OAAQ,qGAAqGptC,MACzG,KAEJmtC,YAAa,sFAAsFntC,MAC/F,KAEJs/E,kBAAkB,EAClBzuC,SAAU,yDAAyD7wC,MAC/D,KAEJ4wC,cAAe,uBAAuB5wC,MAAM,KAC5C2wC,YAAa,uBAAuB3wC,MAAM,KAC1Cq+E,oBAAoB,EACpBzpC,cAAe,SACf/B,KAAM,SAAUnqC,GACZ,MAAO,QAAQhD,KAAKgD,IAExBg8B,SAAU,SAAU2N,EAAOE,EAASiX,GAChC,OAAInX,EAAQ,GACDmX,EAAU,KAAO,KAEjBA,EAAU,KAAO,MAGhC3gB,eAAgB,CACZ+K,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,oBACJC,IAAK,0BACLC,KAAM,gCACNphC,EAAG,YACHwtE,GAAI,aACJC,IAAK,mBACLC,KAAM,yBAEVltC,SAAU,CACNC,QAAS,mBACTC,QAAS,oBACTC,SAAU,yBACVC,QAAS,mBACTC,SAAU,2BACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,SACRC,KAAM,WACN7c,EAAG,WACH8c,GAAI,UACJjvC,EAAG,WACHkvC,GAAI,UACJtF,EAAG,UACHuF,GAAI,SACJxF,EAAG,WACHyF,GAAI,UACJ7R,EAAG,WACH8R,GAAI,UACJxF,EAAG,YACHyF,GAAI,WACJ/F,EAAG,UACHgG,GAAI,UAERV,uBAAwB,UACxB7L,QAAS,SAAUb,GACf,OAAOA,GAEXwI,KAAM,CACFL,IAAK,EACLC,IAAK,MA7EK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCJ5Bv0D,E,4MAAAA,EAKX,SAAUglF,GAsEf,OAlEcA,EAAOznC,aAAa,WAAY,CAC1CxI,OAAQ,6GAA6GptC,MACjH,KAEJmtC,YAAa,8DAA8DntC,MACvE,KAEJs/E,kBAAkB,EAClBzuC,SAAU,yEAAyE7wC,MAC/E,KAEJ4wC,cAAe,qCAAqC5wC,MAAM,KAC1D2wC,YAAa,4BAA4B3wC,MAAM,KAC/Cq+E,oBAAoB,EACpBx1C,eAAgB,CACZ+K,GAAI,QACJC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVZ,SAAU,CACNC,QAAS,kBACTC,QAAS,sBACTC,SAAU,eACVC,QAAS,uBACTC,SAAU,uBACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,SACRC,KAAM,UACN7c,EAAG,mBACH8c,GAAI,eACJjvC,EAAG,aACHkvC,GAAI,eACJtF,EAAG,YACHuF,GAAI,YACJxF,EAAG,SACHyF,GAAI,WACJvF,EAAG,YACHyF,GAAI,cACJ/F,EAAG,UACHgG,GAAI,aAERV,uBAAwB,uBACxB7L,QAAS,SAAUb,GACf,IAAIllC,EAAIklC,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,GAANllC,EACA,KACM,GAANA,EACA,KACM,GAANA,EACA,KACA,OAGlB0tC,KAAM,CACFL,IAAK,EACLC,IAAK,MAtEK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCH5Bv0D,E,4MAAAA,EAKX,SAAUglF,GAoDf,OAhDSA,EAAOznC,aAAa,KAAM,CAC/BxI,OAAQ,0FAA0FptC,MAC9F,KAEJmtC,YAAa,gEAAgEntC,MAAM,KACnF6wC,SAAU,uDAAuD7wC,MAAM,KACvE4wC,cAAe,sCAAsC5wC,MAAM,KAC3D2wC,YAAa,2BAA2B3wC,MAAM,KAC9C6oC,eAAgB,CACZ+K,GAAI,SACJD,IAAK,YACLE,EAAG,aACHC,GAAI,cACJC,IAAK,qBACLC,KAAM,4BAEVZ,SAAU,CACNC,QAAS,gBACTC,QAAS,eACTC,SAAU,8BACVC,QAAS,eACTC,SAAU,6BACVC,SAAU,KAEdQ,aAAc,CACVC,OAAQ,SACRC,KAAM,WACN7c,EAAG,oBACH8c,GAAI,WACJjvC,EAAG,cACHkvC,GAAI,aACJtF,EAAG,cACHuF,GAAI,aACJxF,EAAG,WACHyF,GAAI,UACJvF,EAAG,WACHyF,GAAI,UACJ/F,EAAG,YACHgG,GAAI,YAERV,uBAAwB,gBACxB7L,QAAS,UACT2H,KAAM,CACFL,IAAK,EACLC,IAAK,MApDK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCD5Bv0D,E,4MAAAA,EAKX,SAAUglF,GAqHf,OAjHWA,EAAOznC,aAAa,QAAS,CACpCxI,OAAQ,wCAAwCptC,MAC5C,KAEJmtC,YAAa,yCAAyCntC,MAClD,KAEJ6wC,SAAU,8BAA8B7wC,MAAM,KAC9C4wC,cAAe,uBAAuB5wC,MAAM,KAC5C2wC,YAAa,gBAAgB3wC,MAAM,KACnC6oC,eAAgB,CACZ+K,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,YACJC,IAAK,kBACLC,KAAM,sBACNphC,EAAG,WACHwtE,GAAI,YACJC,IAAK,kBACLC,KAAM,uBAEV1rC,cAAe,oBACfkG,aAAc,SAAUD,EAAMnW,GAI1B,OAHa,KAATmW,IACAA,EAAO,GAEM,OAAbnW,GAAkC,OAAbA,GAAkC,OAAbA,GAEtB,OAAbA,GAAkC,OAAbA,GAIb,IAARmW,EALAA,EAEAA,EAAO,IAMtBnW,SAAU,SAAUmW,EAAMkB,EAAQyN,GAC1B3Q,EAAY,IAAPgC,EAAakB,EACtB,OAAIlD,EAAK,IACE,KACAA,EAAK,IACL,KACAA,EAAK,KACL,KACAA,EAAK,KACL,KACAA,EAAK,KACL,KAEA,MAGfzF,SAAU,CACNC,QAAS,SACTC,QAAS,SACTC,SAAU,SAAU1vB,GAChB,OAAIA,EAAIksB,SAAW7zC,KAAK6zC,OACb,WAEA,YAGfyD,QAAS,SACTC,SAAU,SAAU5vB,GAChB,OAAI3nB,KAAK6zC,SAAWlsB,EAAIksB,OACb,WAEA,YAGf2D,SAAU,KAEdO,uBAAwB,iBACxB7L,QAAS,SAAUb,EAAQ0X,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAO1X,EAAS,IACpB,IAAK,IACD,OAAOA,EAAS,IACpB,IAAK,IACL,IAAK,IACD,OAAOA,EAAS,IACpB,QACI,OAAOA,IAGnB2M,aAAc,CACVC,OAAQ,MACRC,KAAM,MACN7c,EAAG,KACH8c,GAAI,OACJjvC,EAAG,OACHkvC,GAAI,QACJtF,EAAG,OACHuF,GAAI,QACJxF,EAAG,MACHyF,GAAI,OACJ7R,EAAG,MACH8R,GAAI,OACJxF,EAAG,OACHyF,GAAI,QACJ/F,EAAG,MACHgG,GAAI,QAER5E,KAAM,CAEFL,IAAK,EACLC,IAAK,MArHK,WAAnB,EAAOjN,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCF5Bv0D,E,4MAAAA,EAKX,SAAUglF,GAiGf,OA7FWA,EAAOznC,aAAa,QAAS,CACpCxI,OAAQ,wCAAwCptC,MAC5C,KAEJmtC,YAAa,yCAAyCntC,MAClD,KAEJ6wC,SAAU,8BAA8B7wC,MAAM,KAC9C4wC,cAAe,uBAAuB5wC,MAAM,KAC5C2wC,YAAa,gBAAgB3wC,MAAM,KACnC6oC,eAAgB,CACZ+K,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,YACJC,IAAK,kBACLC,KAAM,sBACNphC,EAAG,WACHwtE,GAAI,YACJC,IAAK,kBACLC,KAAM,uBAEV1rC,cAAe,oBACfkG,aAAc,SAAUD,EAAMnW,GAI1B,OAHa,KAATmW,IACAA,EAAO,GAEM,OAAbnW,GAAkC,OAAbA,GAAkC,OAAbA,EACnCmW,EACa,OAAbnW,EACQ,IAARmW,EAAaA,EAAOA,EAAO,GACd,OAAbnW,GAAkC,OAAbA,EACrBmW,EAAO,QADX,GAIXnW,SAAU,SAAUmW,EAAMkB,EAAQyN,GAC1B3Q,EAAY,IAAPgC,EAAakB,EACtB,OAAIlD,EAAK,IACE,KACAA,EAAK,IACL,KACAA,EAAK,KACL,KACO,OAAPA,EACA,KACAA,EAAK,KACL,KAEA,MAGfzF,SAAU,CACNC,QAAS,SACTC,QAAS,SACTC,SAAU,YACVC,QAAS,SACTC,SAAU,YACVC,SAAU,KAEdO,uBAAwB,iBACxB7L,QAAS,SAAUb,EAAQ0X,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAO1X,EAAS,IACpB,IAAK,IACD,OAAOA,EAAS,IACpB,IAAK,IACL,IAAK,IACD,OAAOA,EAAS,IACpB,QACI,OAAOA,IAGnB2M,aAAc,CACVC,OAAQ,MACRC,KAAM,MACN7c,EAAG,KACH8c,GAAI,OACJjvC,EAAG,OACHkvC,GAAI,QACJtF,EAAG,OACHuF,GAAI,QACJxF,EAAG,MACHyF,GAAI,OACJvF,EAAG,OACHyF,GAAI,QACJ/F,EAAG,MACHgG,GAAI,WAjGM,WAAnB,EAAOjS,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCJ5Bv0D,E,4MAAAA,EAKX,SAAUglF,GAiGf,OA7FWA,EAAOznC,aAAa,QAAS,CACpCxI,OAAQ,wCAAwCptC,MAC5C,KAEJmtC,YAAa,yCAAyCntC,MAClD,KAEJ6wC,SAAU,8BAA8B7wC,MAAM,KAC9C4wC,cAAe,uBAAuB5wC,MAAM,KAC5C2wC,YAAa,gBAAgB3wC,MAAM,KACnC6oC,eAAgB,CACZ+K,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,YACJC,IAAK,kBACLC,KAAM,sBACNphC,EAAG,WACHwtE,GAAI,YACJC,IAAK,kBACLC,KAAM,uBAEV1rC,cAAe,oBACfkG,aAAc,SAAUD,EAAMnW,GAI1B,OAHa,KAATmW,IACAA,EAAO,GAEM,OAAbnW,GAAkC,OAAbA,GAAkC,OAAbA,EACnCmW,EACa,OAAbnW,EACQ,IAARmW,EAAaA,EAAOA,EAAO,GACd,OAAbnW,GAAkC,OAAbA,EACrBmW,EAAO,QADX,GAIXnW,SAAU,SAAUmW,EAAMkB,EAAQyN,GAC1B3Q,EAAY,IAAPgC,EAAakB,EACtB,OAAIlD,EAAK,IACE,KACAA,EAAK,IACL,KACAA,EAAK,KACL,KACAA,EAAK,KACL,KACAA,EAAK,KACL,KAEA,MAGfzF,SAAU,CACNC,QAAS,UACTC,QAAS,UACTC,SAAU,aACVC,QAAS,UACTC,SAAU,aACVC,SAAU,KAEdO,uBAAwB,iBACxB7L,QAAS,SAAUb,EAAQ0X,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAO1X,EAAS,IACpB,IAAK,IACD,OAAOA,EAAS,IACpB,IAAK,IACL,IAAK,IACD,OAAOA,EAAS,IACpB,QACI,OAAOA,IAGnB2M,aAAc,CACVC,OAAQ,MACRC,KAAM,MACN7c,EAAG,KACH8c,GAAI,OACJjvC,EAAG,OACHkvC,GAAI,QACJtF,EAAG,OACHuF,GAAI,QACJxF,EAAG,MACHyF,GAAI,OACJvF,EAAG,OACHyF,GAAI,QACJ/F,EAAG,MACHgG,GAAI,WAjGM,WAAnB,EAAOjS,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,iCCJ5Bv0D,E,4MAAAA,EAKX,SAAUglF,GAiGf,OA7FWA,EAAOznC,aAAa,QAAS,CACpCxI,OAAQ,wCAAwCptC,MAC5C,KAEJmtC,YAAa,yCAAyCntC,MAClD,KAEJ6wC,SAAU,8BAA8B7wC,MAAM,KAC9C4wC,cAAe,uBAAuB5wC,MAAM,KAC5C2wC,YAAa,gBAAgB3wC,MAAM,KACnC6oC,eAAgB,CACZ+K,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,YACJC,IAAK,kBACLC,KAAM,sBACNphC,EAAG,WACHwtE,GAAI,YACJC,IAAK,kBACLC,KAAM,uBAEV1rC,cAAe,oBACfkG,aAAc,SAAUD,EAAMnW,GAI1B,OAHa,KAATmW,IACAA,EAAO,GAEM,OAAbnW,GAAkC,OAAbA,GAAkC,OAAbA,EACnCmW,EACa,OAAbnW,EACQ,IAARmW,EAAaA,EAAOA,EAAO,GACd,OAAbnW,GAAkC,OAAbA,EACrBmW,EAAO,QADX,GAIXnW,SAAU,SAAUmW,EAAMkB,EAAQyN,GAC1B3Q,EAAY,IAAPgC,EAAakB,EACtB,OAAIlD,EAAK,IACE,KACAA,EAAK,IACL,KACAA,EAAK,KACL,KACAA,EAAK,KACL,KACAA,EAAK,KACL,KAEA,MAGfzF,SAAU,CACNC,QAAS,UACTC,QAAS,UACTC,SAAU,aACVC,QAAS,UACTC,SAAU,aACVC,SAAU,KAEdO,uBAAwB,iBACxB7L,QAAS,SAAUb,EAAQ0X,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAO1X,EAAS,IACpB,IAAK,IACD,OAAOA,EAAS,IACpB,IAAK,IACL,IAAK,IACD,OAAOA,EAAS,IACpB,QACI,OAAOA,IAGnB2M,aAAc,CACVC,OAAQ,MACRC,KAAM,MACN7c,EAAG,KACH8c,GAAI,OACJjvC,EAAG,OACHkvC,GAAI,QACJtF,EAAG,OACHuF,GAAI,QACJxF,EAAG,MACHyF,GAAI,OACJvF,EAAG,OACHyF,GAAI,QACJ/F,EAAG,MACHgG,GAAI,WAjGM,WAAnB,EAAOjS,SAA0C,IAAXD,EACCpqC,EAAQg3E,EAAQ,KACVziB,EAAO,CAAC,WAAR,gE,6BCFjC,SAASq2B,EACtBC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,GAGA,IAqBI1gE,EAyCI2gE,EA9DJ9lF,EAAmC,mBAAlBslF,EACjBA,EAActlF,QACdslF,EA0EJ,OAvEIC,IACFvlF,EAAQulF,OAASA,EACjBvlF,EAAQwlF,gBAAkBA,EAC1BxlF,EAAQ+lF,WAAY,GAIlBN,IACFzlF,EAAQgmF,YAAa,GAInBL,IACF3lF,EAAQimF,SAAW,UAAYN,GAI7BC,GACFzgE,EAAO,SAAUtnB,IAEfA,EACEA,GACCS,KAAK4nF,QAAU5nF,KAAK4nF,OAAOC,YAC3B7nF,KAAK4P,QAAU5P,KAAK4P,OAAOg4E,QAAU5nF,KAAK4P,OAAOg4E,OAAOC,aAEZ,oBAAxBC,sBACrBvoF,EAAUuoF,qBAGRV,GACFA,EAAarqF,KAAKiD,KAAMT,GAGtBA,GAAWA,EAAQwoF,uBACrBxoF,EAAQwoF,sBAAsBjxE,IAAIwwE,IAKtC5lF,EAAQsmF,aAAenhE,GACdugE,IACTvgE,EAAO0gE,EACH,WACAH,EAAarqF,KACXiD,MACC0B,EAAQgmF,WAAa1nF,KAAK4P,OAAS5P,MAAMioF,MAAMC,SAAS1b,aAG3D4a,GAGFvgE,IACEnlB,EAAQgmF,YAGVhmF,EAAQymF,cAAgBthE,EAEpB2gE,EAAiB9lF,EAAQulF,OAC7BvlF,EAAQulF,OAAS,SAAmCn0C,EAAGvzC,GAErD,OADAsnB,EAAK9pB,KAAKwC,GACHioF,EAAe10C,EAAGvzC,MAIvB6oF,EAAW1mF,EAAQ2mF,aACvB3mF,EAAQ2mF,aAAeD,EACnB,GAAGprF,OAAOorF,EAAUvhE,GACpB,CAACA,KAIF,CACL2f,QAASwgD,EACTtlF,QAASA,GA/Fb,iC,8CC8BI,SAASwyE,EAAe9uD,UACbkjE,EAAcljE,GAyBzB,SAASmjE,EAAanjE,GAGlB,GAAIojE,EAGAptE,WAAWmtE,EAAc,EAAGnjE,OACzB,CACH,IAAIqjE,EAAOH,EAAcljE,GACzB,GAAIqjE,EAAM,CACND,GAAwB,EACxB,KAjCZ,SAAaC,GACT,IAAIhoF,EAAWgoF,EAAKhoF,SAChBwP,EAAOw4E,EAAKx4E,KAChB,OAAQA,EAAKtQ,QACb,KAAK,EACDc,IACA,MACJ,KAAK,EACDA,EAASwP,EAAK,IACd,MACJ,KAAK,EACDxP,EAASwP,EAAK,GAAIA,EAAK,IACvB,MACJ,KAAK,EACDxP,EAASwP,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAChC,MACJ,QACIxP,EAASxD,MAAMmF,EAAW6N,IAiBlB0iB,CAAI81D,GADR,QAGIvU,EAAe9uD,GACfojE,GAAwB,KA2BxC,SAASE,IAMiB,SAAlBC,EAA2B5kE,GACvBA,EAAMxE,SAAWrjB,GACK,iBAAf6nB,EAAM/F,MACyB,IAAtC+F,EAAM/F,KAAK7gB,QAAQyrF,IACnBL,GAAcxkE,EAAM/F,KAAKphB,MAAMgsF,EAAcjpF,SALrD,IAAIipF,EAAgB,gBAAkBtmF,KAAKC,SAAW,IASlDrG,EAAO0P,iBACP1P,EAAO0P,iBAAiB,UAAW+8E,GAAiB,GAEpDzsF,EAAO2P,YAAY,YAAa88E,GAGpCE,EAAoB,SAASzjE,GACzBlpB,EAAO4sF,YAAYF,EAAgBxjE,EAAQ,MAvHtD,IAAUlpB,EAAQkG,EAOX2mF,EACAT,EACAE,EACAjqF,EACAsqF,EA6HI99D,EAZAi+D,GA5HD9sF,EAyLO,oBAAT2Z,UAAyC,IAAX3Z,OAAP,EAAuCA,EAAS2Z,MAtLjEo+D,eAIP8U,EAAa,EAEbP,IADAF,EAAgB,IAEhB/pF,EAAMrC,EAAO4B,SAqJjBmrF,GADIA,EAAWvsF,OAAOC,gBAAkBD,OAAOC,eAAeT,KACvC+sF,EAAS7tE,WAAa6tE,EAAW/sF,EAGf,qBAArC,GAAGmB,SAASN,KAAKb,EAAO6e,SApFxB8tE,EAAoB,SAASzjE,GACzBrK,EAAQ02C,SAAS,WAAc82B,EAAanjE,OAIpD,WAGI,GAAIlpB,EAAO4sF,cAAgB5sF,EAAOgtF,cAAe,CAC7C,IAAIC,GAA4B,EAC5BC,EAAeltF,EAAOmtF,UAM1B,OALAntF,EAAOmtF,UAAY,WACfF,GAA4B,GAEhCjtF,EAAO4sF,YAAY,GAAI,KACvB5sF,EAAOmtF,UAAYD,EACZD,GAwEJG,GApCPT,EAwCO3sF,EAAOqtF,iBA9CVP,EAAU,IAAIO,gBACVC,MAAMH,UAAY,SAAStlE,GAE/BwkE,EADaxkE,EAAM/F,OAIH,SAASoH,GACzB4jE,EAAQS,MAAMX,YAAY1jE,KA2CvB7mB,GAAO,uBAAwBA,EAAII,cAAc,WAtCpDosB,EAAOxsB,EAAIiN,gBACK,SAAS4Z,GAGzB,IAAI1mB,EAASH,EAAII,cAAc,UAC/BD,EAAOgkC,mBAAqB,WACxB6lD,EAAanjE,GACb1mB,EAAOgkC,mBAAqB,KAC5B3X,EAAK7rB,YAAYR,GACjBA,EAAS,MAEbqsB,EAAK/rB,YAAYN,KAKD,SAAS0mB,GACzBhK,WAAWmtE,EAAc,EAAGnjE,IAehCsjE,IAeJO,EAAShV,aA1KT,SAAsBxzE,GAEI,mBAAbA,IACTA,EAAW,IAAIsqC,SAAS,GAAKtqC,IAI/B,IADA,IAAIwP,EAAO,IAAI/N,MAAMtB,UAAUjB,OAAS,GAC/BnB,EAAI,EAAGA,EAAIyR,EAAKtQ,OAAQnB,IAC7ByR,EAAKzR,GAAKoC,UAAUpC,EAAI,GAM5B,OAFA8pF,EAAcS,GADH,CAAEtoF,SAAUA,EAAUwP,KAAMA,GAEvC44E,EAAkBE,GACXA,KA6JTE,EAAS/U,eAAiBA,I,gDCxL9B3tC,EAAOC,QAAU,WAChB,MAAM,IAAI5jC,MAAM,oC,eCDjB,YACA2jC,EAAOC,QAAUkjD,G","file":"vendor.js","sourcesContent":["/*!\n * jQuery JavaScript Library v3.6.0\n * https://jquery.com/\n *\n * Includes Sizzle.js\n * https://sizzlejs.com/\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2021-03-02T17:08Z\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\t\t// Support: Chrome <=57, Firefox <=52\n\t\t// In some browsers, typeof returns \"function\" for HTML <object> elements\n\t\t// (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n\t\t// We don't want to classify *any* DOM node as a function.\n\t\t// Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5\n\t\t// Plus for old WebKit, typeof returns \"function\" for HTML collections\n\t\t// (e.g., `typeof document.getElementsByTagName(\"div\") === \"function\"`). (gh-4756)\n\t\treturn typeof obj === \"function\" && typeof obj.nodeType !== \"number\" &&\n\t\t\ttypeof obj.item !== \"function\";\n\t};\n\n\nvar isWindow = function isWindow( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t};\n\n\nvar document = window.document;\n\n\n\n\tvar preservedScriptAttributes = {\n\t\ttype: true,\n\t\tsrc: true,\n\t\tnonce: true,\n\t\tnoModule: true\n\t};\n\n\tfunction DOMEval( code, node, doc ) {\n\t\tdoc = doc || document;\n\n\t\tvar i, val,\n\t\t\tscript = doc.createElement( \"script\" );\n\n\t\tscript.text = code;\n\t\tif ( node ) {\n\t\t\tfor ( i in preservedScriptAttributes ) {\n\n\t\t\t\t// Support: Firefox 64+, Edge 18+\n\t\t\t\t// Some browsers don't support the \"nonce\" property on scripts.\n\t\t\t\t// On the other hand, just using `getAttribute` is not enough as\n\t\t\t\t// the `nonce` attribute is reset to an empty string whenever it\n\t\t\t\t// becomes browsing-context connected.\n\t\t\t\t// See https://github.com/whatwg/html/issues/2369\n\t\t\t\t// See https://html.spec.whatwg.org/#nonce-attributes\n\t\t\t\t// The `node.getAttribute` check was added for the sake of\n\t\t\t\t// `jQuery.globalEval` so that it can fake a nonce-containing node\n\t\t\t\t// via an object.\n\t\t\t\tval = node[ i ] || node.getAttribute && node.getAttribute( i );\n\t\t\t\tif ( val ) {\n\t\t\t\t\tscript.setAttribute( i, val );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tdoc.head.appendChild( script ).parentNode.removeChild( script );\n\t}\n\n\nfunction toType( obj ) {\n\tif ( obj == null ) {\n\t\treturn obj + \"\";\n\t}\n\n\t// Support: Android <=2.3 only (functionish RegExp)\n\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\ttypeof obj;\n}\n/* global Symbol */\n// Defining this global in .eslintrc.json would create a danger of using the global\n// unguarded in another place, it seems safer to define global only for this module\n\n\n\nvar\n\tversion = \"3.6.0\",\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\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( \" \" ),\n\tfunction( _i, name ) {\n\t\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n\t} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: real iOS 8.2 only (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = toType( obj );\n\n\tif ( isFunction( obj ) || isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\nvar Sizzle =\n/*!\n * Sizzle CSS Selector Engine v2.3.6\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: 2021-02-16\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 && elem.namespaceURI,\n\t\tdocElem = elem && ( 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 = \"<a id='\" + expando + \"'></a>\" +\n\t\t\t\t\"<select id='\" + expando + \"-\\r\\\\' msallowcapture=''>\" +\n\t\t\t\t\"<option selected=''></option></select>\";\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 = \"<a href='' disabled='disabled'></a>\" +\n\t\t\t\t\"<select disabled='disabled'><option/></select>\";\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: <number>) 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 = \"<a href='#'></a>\";\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 = \"<input/>\";\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\treturn 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 <tag> 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// <object> elements with no `data` attribute has an object\n\t\t\t// `contentDocument` with a `null` prototype.\n\t\t\tgetProto( elem.contentDocument ) ) {\n\n\t\t\treturn elem.contentDocument;\n\t\t}\n\n\t\t// Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n\t\t// Treat the template element as a regular one in browsers that\n\t\t// don't support it.\n\t\tif ( nodeName( elem, \"template\" ) ) {\n\t\t\telem = elem.content || elem;\n\t\t}\n\n\t\treturn jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\nvar rnothtmlwhite = ( /[^\\x20\\t\\r\\n\\f]+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = locked || options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && toType( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory && !firing ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\nfunction Identity( v ) {\n\treturn v;\n}\nfunction Thrower( ex ) {\n\tthrow ex;\n}\n\nfunction adoptValue( value, resolve, reject, noValue ) {\n\tvar method;\n\n\ttry {\n\n\t\t// Check for promise aspect first to privilege synchronous behavior\n\t\tif ( value && isFunction( ( method = value.promise ) ) ) {\n\t\t\tmethod.call( value ).done( resolve ).fail( reject );\n\n\t\t// Other thenables\n\t\t} else if ( value && isFunction( ( method = value.then ) ) ) {\n\t\t\tmethod.call( value, resolve, reject );\n\n\t\t// Other non-thenables\n\t\t} else {\n\n\t\t\t// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n\t\t\t// * false: [ value ].slice( 0 ) => resolve( value )\n\t\t\t// * true: [ value ].slice( 1 ) => resolve()\n\t\t\tresolve.apply( undefined, [ value ].slice( noValue ) );\n\t\t}\n\n\t// For Promises/A+, convert exceptions into rejections\n\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n\t// Deferred#then to conditionally suppress rejection.\n\t} catch ( value ) {\n\n\t\t// Support: Android 4.0 only\n\t\t// Strict mode functions invoked without .call/.apply get global-object context\n\t\treject.apply( undefined, [ value ] );\n\t}\n}\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, callbacks,\n\t\t\t\t// ... .then handlers, argument index, [final state]\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"memory\" ), 2 ],\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 0, \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 1, \"rejected\" ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\t\"catch\": function( fn ) {\n\t\t\t\t\treturn promise.then( null, fn );\n\t\t\t\t},\n\n\t\t\t\t// Keep pipe for back-compat\n\t\t\t\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( _i, tuple ) {\n\n\t\t\t\t\t\t\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\n\t\t\t\t\t\t\tvar fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];\n\n\t\t\t\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\n\t\t\t\t\t\t\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\n\t\t\t\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\t\t\t\tthen: function( onFulfilled, onRejected, onProgress ) {\n\t\t\t\t\tvar maxDepth = 0;\n\t\t\t\t\tfunction resolve( depth, deferred, handler, special ) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tvar that = this,\n\t\t\t\t\t\t\t\targs = arguments,\n\t\t\t\t\t\t\t\tmightThrow = function() {\n\t\t\t\t\t\t\t\t\tvar returned, then;\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.3\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-59\n\t\t\t\t\t\t\t\t\t// Ignore double-resolution attempts\n\t\t\t\t\t\t\t\t\tif ( depth < maxDepth ) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturned = handler.apply( that, args );\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.1\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-48\n\t\t\t\t\t\t\t\t\tif ( returned === deferred.promise() ) {\n\t\t\t\t\t\t\t\t\t\tthrow new TypeError( \"Thenable self-resolution\" );\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ sections 2.3.3.1, 3.5\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-54\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-75\n\t\t\t\t\t\t\t\t\t// Retrieve `then` only once\n\t\t\t\t\t\t\t\t\tthen = returned &&\n\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.4\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-64\n\t\t\t\t\t\t\t\t\t\t// Only check objects and functions for thenability\n\t\t\t\t\t\t\t\t\t\t( typeof returned === \"object\" ||\n\t\t\t\t\t\t\t\t\t\t\ttypeof returned === \"function\" ) &&\n\t\t\t\t\t\t\t\t\t\treturned.then;\n\n\t\t\t\t\t\t\t\t\t// Handle a returned thenable\n\t\t\t\t\t\t\t\t\tif ( isFunction( then ) ) {\n\n\t\t\t\t\t\t\t\t\t\t// Special processors (notify) just wait for resolution\n\t\t\t\t\t\t\t\t\t\tif ( special ) {\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special )\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t// Normal processors (resolve) also hook into progress\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t// ...and disregard older resolution values\n\t\t\t\t\t\t\t\t\t\t\tmaxDepth++;\n\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.notifyWith )\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Handle all other returned values\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\tif ( handler !== Identity ) {\n\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\targs = [ returned ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Process the value(s)\n\t\t\t\t\t\t\t\t\t\t// Default process is resolve\n\t\t\t\t\t\t\t\t\t\t( special || deferred.resolveWith )( that, args );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t// Only normal processors (resolve) catch and reject exceptions\n\t\t\t\t\t\t\t\tprocess = special ?\n\t\t\t\t\t\t\t\t\tmightThrow :\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tmightThrow();\n\t\t\t\t\t\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t\t\t\t\t\tif ( jQuery.Deferred.exceptionHook ) {\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery.Deferred.exceptionHook( e,\n\t\t\t\t\t\t\t\t\t\t\t\t\tprocess.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 primary Deferred\n\t\t\tprimary = jQuery.Deferred(),\n\n\t\t\t// subordinate callback factory\n\t\t\tupdateFunc = function( i ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tresolveContexts[ i ] = this;\n\t\t\t\t\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( !( --remaining ) ) {\n\t\t\t\t\t\tprimary.resolveWith( resolveContexts, resolveValues );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t// Single- and empty arguments are adopted like Promise.resolve\n\t\tif ( remaining <= 1 ) {\n\t\t\tadoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject,\n\t\t\t\t!remaining );\n\n\t\t\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\n\t\t\tif ( primary.state() === \"pending\" ||\n\t\t\t\tisFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\treturn primary.then();\n\t\t\t}\n\t\t}\n\n\t\t// Multiple arguments are aggregated like Promise.all array elements\n\t\twhile ( i-- ) {\n\t\t\tadoptValue( resolveValues[ i ], updateFunc( i ), primary.reject );\n\t\t}\n\n\t\treturn primary.promise();\n\t}\n} );\n\n\n// These usually indicate a programmer mistake during development,\n// warn about them ASAP rather than swallowing them by default.\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\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\t\tvalue :\n\t\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( chainable ) {\n\t\treturn elems;\n\t}\n\n\t// Gets\n\tif ( bulk ) {\n\t\treturn fn.call( elems );\n\t}\n\n\treturn len ? fn( elems[ 0 ], key ) : emptyGet;\n};\n\n\n// Matches dashed string for camelizing\nvar rmsPrefix = /^-ms-/,\n\trdashAlpha = /-([a-z])/g;\n\n// Used by camelCase as callback to replace()\nfunction fcamelCase( _all, letter ) {\n\treturn letter.toUpperCase();\n}\n\n// Convert dashed to camelCase; used by the css and data modules\n// Support: IE <=9 - 11, Edge 12 - 15\n// Microsoft forgot to hump their vendor prefix (#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 = \"<textarea>x</textarea>\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n\n\t// Support: IE <=9 only\n\t// IE <=9 replaces <option> tags with their contents when inserted outside of\n\t// the select element.\n\tdiv.innerHTML = \"<option></option>\";\n\tsupport.option = !!div.lastChild;\n} )();\n\n\n// We have to close these tags to support XHTML (#13200)\nvar wrapMap = {\n\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting <tbody> or other required elements.\n\tthead: [ 1, \"<table>\", \"</table>\" ],\n\tcol: [ 2, \"<table><colgroup>\", \"</colgroup></table>\" ],\n\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// Support: IE <=9 only\nif ( !support.option ) {\n\twrapMap.optgroup = wrapMap.option = [ 1, \"<select multiple='multiple'>\", \"</select>\" ];\n}\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE <=9 - 11 only\n\t// Use typeof to avoid zero-argument method invocation on host objects (#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 rtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\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\tdataPriv.get( this, \"events\" ) || Object.create( null )\n\t\t\t)[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// If the event is namespaced, then each handler is only invoked if it is\n\t\t\t\t// specially universal or its namespaces are a superset of the event's.\n\t\t\t\tif ( !event.rnamespace || handleObj.namespace === false ||\n\t\t\t\t\tevent.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\tif ( delegateCount &&\n\n\t\t\t// Support: IE <=9\n\t\t\t// Black-hole SVG <use> instance trees (trac-13180)\n\t\t\tcur.nodeType &&\n\n\t\t\t// Support: Firefox <=42\n\t\t\t// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n\t\t\t// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n\t\t\t// Support: IE 11 only\n\t\t\t// ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n\t\t\t!( event.type === \"click\" && event.button >= 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (#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\treturn hook( this.originalEvent );\n\t\t\t\t\t}\n\t\t\t\t} :\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn this.originalEvent[ name ];\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\tset: function( value ) {\n\t\t\t\tObject.defineProperty( this, name, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: value\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\tfix: function( originalEvent ) {\n\t\treturn originalEvent[ jQuery.expando ] ?\n\t\t\toriginalEvent :\n\t\t\tnew jQuery.Event( originalEvent );\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tclick: {\n\n\t\t\t// Utilize native event to ensure correct state for checkable inputs\n\t\t\tsetup: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Claim the first handler\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\t// dataPriv.set( el, \"click\", ... )\n\t\t\t\t\tleverageNative( el, \"click\", 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\n\t\t\t\t\t\t// Support: Chrome 86+\n\t\t\t\t\t\t// In Chrome, if an element having a focusout handler is blurred by\n\t\t\t\t\t\t// clicking outside of it, it invokes the handler synchronously. If\n\t\t\t\t\t\t// that handler calls `.remove()` on the element, the data is cleared,\n\t\t\t\t\t\t// leaving `result` undefined. We need to guard against this.\n\t\t\t\t\t\treturn result && 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\twhich: true\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\t// Suppress native focus or blur as it's already being fired\n\t\t// in leverageNative.\n\t\t_default: function() {\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 = /<script|<style|<link/i,\n\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\trcleanScript = /^\\s*<!(?:\\[CDATA\\[|--)|(?:\\]\\]|--)>\\s*$/g;\n\n// Prefer a tbody over its parent table for containing new rows\nfunction manipulationTarget( elem, content ) {\n\tif ( nodeName( elem, \"table\" ) &&\n\t\tnodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ) {\n\n\t\treturn jQuery( elem ).children( \"tbody\" )[ 0 ] || elem;\n\t}\n\n\treturn elem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tif ( ( elem.type || \"\" ).slice( 0, 5 ) === \"true/\" ) {\n\t\telem.type = elem.type.slice( 5 );\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.get( src );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdataPriv.remove( dest, \"handle events\" );\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = flat( args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tvalueIsFunction = isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( valueIsFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (#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\t//\n\t\t// Support: Firefox 70+\n\t\t// Only Firefox includes border widths\n\t\t// in computed dimensions. (gh-4529)\n\t\treliableTrDimensions: function() {\n\t\t\tvar table, tr, trChild, trStyle;\n\t\t\tif ( reliableTrDimensionsVal == null ) {\n\t\t\t\ttable = document.createElement( \"table\" );\n\t\t\t\ttr = document.createElement( \"tr\" );\n\t\t\t\ttrChild = document.createElement( \"div\" );\n\n\t\t\t\ttable.style.cssText = \"position:absolute;left:-11111px;border-collapse:separate\";\n\t\t\t\ttr.style.cssText = \"border:1px solid\";\n\n\t\t\t\t// Support: Chrome 86+\n\t\t\t\t// Height set through cssText does not get applied.\n\t\t\t\t// Computed height then comes back as 0.\n\t\t\t\ttr.style.height = \"1px\";\n\t\t\t\ttrChild.style.height = \"9px\";\n\n\t\t\t\t// Support: Android 8 Chrome 86+\n\t\t\t\t// In our bodyBackground.html iframe,\n\t\t\t\t// display for all div elements is set to \"inline\",\n\t\t\t\t// which causes a problem only in Android 8 Chrome 86.\n\t\t\t\t// Ensuring the div is display: block\n\t\t\t\t// gets around this issue.\n\t\t\t\ttrChild.style.display = \"block\";\n\n\t\t\t\tdocumentElement\n\t\t\t\t\t.appendChild( table )\n\t\t\t\t\t.appendChild( tr )\n\t\t\t\t\t.appendChild( trChild );\n\n\t\t\t\ttrStyle = window.getComputedStyle( tr );\n\t\t\t\treliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderTopWidth, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight;\n\n\t\t\t\tdocumentElement.removeChild( table );\n\t\t\t}\n\t\t\treturn reliableTrDimensionsVal;\n\t\t}\n\t} );\n} )();\n\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\n\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\tswap( elem, cssShow, function() {\n\t\t\t\t\t\treturn getWidthOrHeight( elem, dimension, extra );\n\t\t\t\t\t} ) :\n\t\t\t\t\tgetWidthOrHeight( elem, dimension, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar matches,\n\t\t\t\tstyles = getStyles( elem ),\n\n\t\t\t\t// Only read styles.position if the test has a chance to fail\n\t\t\t\t// to avoid forcing a reflow.\n\t\t\t\tscrollboxSizeBuggy = !support.scrollboxSize() &&\n\t\t\t\t\tstyles.position === \"absolute\",\n\n\t\t\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)\n\t\t\t\tboxSizingNeeded = scrollboxSizeBuggy || extra,\n\t\t\t\tisBorderBox = boxSizingNeeded &&\n\t\t\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\tsubtract = extra ?\n\t\t\t\t\tboxModelAdjustment(\n\t\t\t\t\t\telem,\n\t\t\t\t\t\tdimension,\n\t\t\t\t\t\textra,\n\t\t\t\t\t\tisBorderBox,\n\t\t\t\t\t\tstyles\n\t\t\t\t\t) :\n\t\t\t\t\t0;\n\n\t\t\t// Account for unreliable border-box dimensions by comparing offset* to computed and\n\t\t\t// faking a content-box to get border and padding (gh-3699)\n\t\t\tif ( isBorderBox && scrollboxSizeBuggy ) {\n\t\t\t\tsubtract -= Math.ceil(\n\t\t\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\t\t\tparseFloat( styles[ dimension ] ) -\n\t\t\t\t\tboxModelAdjustment( elem, dimension, \"border\", false, styles ) -\n\t\t\t\t\t0.5\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Convert to pixels if value adjustment is needed\n\t\t\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\n\t\t\t\t( matches[ 3 ] || \"px\" ) !== \"px\" ) {\n\n\t\t\t\telem.style[ dimension ] = value;\n\t\t\t\tvalue = jQuery.css( elem, dimension );\n\t\t\t}\n\n\t\t\treturn setPositiveNumber( elem, value, subtract );\n\t\t}\n\t};\n} );\n\njQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\treturn ( parseFloat( curCSS( elem, \"marginLeft\" ) ) ||\n\t\t\t\telem.getBoundingClientRect().left -\n\t\t\t\t\tswap( elem, { marginLeft: 0 }, function() {\n\t\t\t\t\t\treturn elem.getBoundingClientRect().left;\n\t\t\t\t\t} )\n\t\t\t) + \"px\";\n\t\t}\n\t}\n);\n\n// These hooks are used by animate to expand properties\njQuery.each( {\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// Assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split( \" \" ) : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( prefix !== \"margin\" ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n} );\n\njQuery.fn.extend( {\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t}\n} );\n\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || jQuery.easing._default;\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\t// Use a property on the element directly when it is not a DOM element,\n\t\t\t// or when there is no matching style property that exists.\n\t\t\tif ( tween.elem.nodeType !== 1 ||\n\t\t\t\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t\t\t// Simple values such as \"10px\" are parsed to Float;\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as-is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\n\t\t\t// Use step hook for back compat.\n\t\t\t// Use cssHook if its there.\n\t\t\t// Use .style if available and use plain properties where available.\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.nodeType === 1 && (\n\t\t\t\tjQuery.cssHooks[ tween.prop ] ||\n\t\t\t\t\ttween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE <=9 only\n// Panic based approach to setting things on disconnected nodes\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t},\n\t_default: \"swing\"\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back compat <1.8 extension point\njQuery.fx.step = {};\n\n\n\n\nvar\n\tfxNow, inProgress,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trrun = /queueHooks$/;\n\nfunction schedule() {\n\tif ( inProgress ) {\n\t\tif ( document.hidden === false && window.requestAnimationFrame ) {\n\t\t\twindow.requestAnimationFrame( schedule );\n\t\t} else {\n\t\t\twindow.setTimeout( schedule, jQuery.fx.interval );\n\t\t}\n\n\t\tjQuery.fx.tick();\n\t}\n}\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\twindow.setTimeout( function() {\n\t\tfxNow = undefined;\n\t} );\n\treturn ( fxNow = Date.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\ti = 0,\n\t\tattrs = { height: type };\n\n\t// If we include width, step value is 1 to do all cssExpand values,\n\t// otherwise step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\n\n\t\t\t// We're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,\n\t\tisBox = \"width\" in props || \"height\" in props,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHiddenWithinTree( elem ),\n\t\tdataShow = dataPriv.get( elem, \"fxshow\" );\n\n\t// Queue-skipping animations hijack the fx hooks\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always( function() {\n\n\t\t\t// Ensure the complete handler is called before this completes\n\t\t\tanim.always( function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Detect show/hide animations\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.test( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\n\t\t\t\t// Pretend to be hidden if this is a \"show\" and\n\t\t\t\t// there is still data from a stopped show/hide\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\n\t\t\t\t// Ignore all other no-op show/hide data\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\t\t}\n\t}\n\n\t// Bail out if this is a no-op like .hide().hide()\n\tpropTween = !jQuery.isEmptyObject( props );\n\tif ( !propTween && jQuery.isEmptyObject( orig ) ) {\n\t\treturn;\n\t}\n\n\t// Restrict \"overflow\" and \"display\" styles during box animations\n\tif ( isBox && elem.nodeType === 1 ) {\n\n\t\t// Support: IE <=9 - 11, Edge 12 - 15\n\t\t// Record all 3 overflow attributes because IE does not infer the shorthand\n\t\t// from identically-valued overflowX and overflowY and Edge just mirrors\n\t\t// the overflowX value there.\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Identify a display type, preferring old show/hide data over the CSS cascade\n\t\trestoreDisplay = dataShow && dataShow.display;\n\t\tif ( restoreDisplay == null ) {\n\t\t\trestoreDisplay = dataPriv.get( elem, \"display\" );\n\t\t}\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\tif ( display === \"none\" ) {\n\t\t\tif ( restoreDisplay ) {\n\t\t\t\tdisplay = restoreDisplay;\n\t\t\t} else {\n\n\t\t\t\t// Get nonempty value(s) by temporarily forcing visibility\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t\trestoreDisplay = elem.style.display || restoreDisplay;\n\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\t\tshowHide( [ elem ] );\n\t\t\t}\n\t\t}\n\n\t\t// Animate inline elements as inline-block\n\t\tif ( display === \"inline\" || display === \"inline-block\" && restoreDisplay != null ) {\n\t\t\tif ( jQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t\t// Restore the original display value at the end of pure show/hide animations\n\t\t\t\tif ( !propTween ) {\n\t\t\t\t\tanim.done( function() {\n\t\t\t\t\t\tstyle.display = restoreDisplay;\n\t\t\t\t\t} );\n\t\t\t\t\tif ( restoreDisplay == null ) {\n\t\t\t\t\t\tdisplay = style.display;\n\t\t\t\t\t\trestoreDisplay = display === \"none\" ? \"\" : display;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstyle.display = \"inline-block\";\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tanim.always( function() {\n\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t} );\n\t}\n\n\t// Implement show/hide animations\n\tpropTween = false;\n\tfor ( prop in orig ) {\n\n\t\t// General show/hide setup for this element animation\n\t\tif ( !propTween ) {\n\t\t\tif ( dataShow ) {\n\t\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\t\thidden = dataShow.hidden;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdataShow = dataPriv.access( elem, \"fxshow\", { display: restoreDisplay } );\n\t\t\t}\n\n\t\t\t// Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\t\t\tif ( toggle ) {\n\t\t\t\tdataShow.hidden = !hidden;\n\t\t\t}\n\n\t\t\t// Show elements before animating them\n\t\t\tif ( hidden ) {\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t}\n\n\t\t\t/* eslint-disable no-loop-func */\n\n\t\t\tanim.done( function() {\n\n\t\t\t\t/* eslint-enable no-loop-func */\n\n\t\t\t\t// The final step of a \"hide\" animation is actually hiding the element\n\t\t\t\tif ( !hidden ) {\n\t\t\t\t\tshowHide( [ elem ] );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( elem, \"fxshow\" );\n\t\t\t\tfor ( prop in orig ) {\n\t\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t// Per-property setup\n\t\tpropTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\t\tif ( !( prop in dataShow ) ) {\n\t\t\tdataShow[ prop ] = propTween.start;\n\t\t\tif ( hidden ) {\n\t\t\t\tpropTween.end = propTween.start;\n\t\t\t\tpropTween.start = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( Array.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// Not quite $.extend, this won't overwrite existing keys.\n\t\t\t// Reusing 'index' because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = Animation.prefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\n\t\t\t// Don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t} ),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\n\t\t\t\t// Support: Android 2.3 only\n\t\t\t\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\n\n\t\t\t// If there's more to do, yield\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t}\n\n\t\t\t// If this was an empty animation, synthesize a final progress notification\n\t\t\tif ( !length ) {\n\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t}\n\n\t\t\t// Resolve the animation and report its conclusion\n\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\treturn false;\n\t\t},\n\t\tanimation = deferred.promise( {\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, {\n\t\t\t\tspecialEasing: {},\n\t\t\t\teasing: jQuery.easing._default\n\t\t\t}, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\n\t\t\t\t\t// If we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// Resolve when we played the last frame; otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t} ),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length; index++ ) {\n\t\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\tif ( isFunction( result.stop ) ) {\n\t\t\t\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\n\t\t\t\t\tresult.stop.bind( result );\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\t// Attach callbacks from options\n\tanimation\n\t\t.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t} )\n\t);\n\n\treturn animation;\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweeners: {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value );\n\t\t\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\n\t\t\treturn tween;\n\t\t} ]\n\t},\n\n\ttweener: function( props, callback ) {\n\t\tif ( isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.match( rnothtmlwhite );\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\n\t\t\tAnimation.tweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilters: [ defaultPrefilter ],\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tAnimation.prefilters.unshift( callback );\n\t\t} else {\n\t\t\tAnimation.prefilters.push( callback );\n\t\t}\n\t}\n} );\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tisFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !isFunction( easing ) && easing\n\t};\n\n\t// Go to the end state if fx are off\n\tif ( jQuery.fx.off ) {\n\t\topt.duration = 0;\n\n\t} else {\n\t\tif ( typeof opt.duration !== \"number\" ) {\n\t\t\tif ( opt.duration in jQuery.fx.speeds ) {\n\t\t\t\topt.duration = jQuery.fx.speeds[ opt.duration ];\n\n\t\t\t} else {\n\t\t\t\topt.duration = jQuery.fx.speeds._default;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend( {\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// Show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHiddenWithinTree ).css( \"opacity\", 0 ).show()\n\n\t\t\t// Animate to the value specified\n\t\t\t.end().animate( { opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || dataPriv.get( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\n\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = dataPriv.get( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this &&\n\t\t\t\t\t( type == null || timers[ index ].queue === type ) ) {\n\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Start the next in the queue if the last step wasn't forced.\n\t\t\t// Timers currently will call their complete callbacks, which\n\t\t\t// will dequeue but only if they were gotoEnd.\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t} );\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tvar index,\n\t\t\t\tdata = dataPriv.get( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// Enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// Empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// Look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t} );\n\t}\n} );\n\njQuery.each( [ \"toggle\", \"show\", \"hide\" ], function( _i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n} );\n\n// Generate shortcuts for custom animations\njQuery.each( {\n\tslideDown: genFx( \"show\" ),\n\tslideUp: genFx( \"hide\" ),\n\tslideToggle: genFx( \"toggle\" ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n} );\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ti = 0,\n\t\ttimers = jQuery.timers;\n\n\tfxNow = Date.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\n\t\t// Run the timer and safely remove it when done (allowing for external removal)\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tjQuery.fx.start();\n};\n\njQuery.fx.interval = 13;\njQuery.fx.start = function() {\n\tif ( inProgress ) {\n\t\treturn;\n\t}\n\n\tinProgress = true;\n\tschedule();\n};\n\njQuery.fx.stop = function() {\n\tinProgress = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\n\t// Default speed\n\t_default: 400\n};\n\n\n// Based off of the plugin by Clint Helfers, with permission.\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\t\"\" :\n\t\t\t\t\t\t\tdataPriv.get( this, \"__className__\" ) || \"\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className, elem,\n\t\t\ti = 0;\n\n\t\tclassName = \" \" + selector + \" \";\n\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\tif ( elem.nodeType === 1 &&\n\t\t\t\t( \" \" + stripAndCollapse( getClass( elem ) ) + \" \" ).indexOf( className ) > -1 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n} );\n\n\n\n\nvar rreturn = /\\r/g;\n\njQuery.fn.extend( {\n\tval: function( value ) {\n\t\tvar hooks, ret, valueIsFunction,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] ||\n\t\t\t\t\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks &&\n\t\t\t\t\t\"get\" in hooks &&\n\t\t\t\t\t( ret = hooks.get( elem, \"value\" ) ) !== undefined\n\t\t\t\t) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\t// Handle most common string cases\n\t\t\t\tif ( typeof ret === \"string\" ) {\n\t\t\t\t\treturn ret.replace( rreturn, \"\" );\n\t\t\t\t}\n\n\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\treturn ret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tvalueIsFunction = isFunction( value );\n\n\t\treturn this.each( function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\n\t\t\t} else if ( Array.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !( \"set\" in hooks ) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\n\t\t\t\t\t// Support: IE <=10 - 11 only\n\t\t\t\t\t// option.text throws exceptions (#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 = ( dataPriv.get( cur, \"events\" ) || Object.create( null ) )[ event.type ] &&\n\t\t\t\tdataPriv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( ( !special._default ||\n\t\t\t\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\n\t\t\t\tacceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (#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, parserErrorElem;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE 9 - 11 only\n\t// IE throws on parseFromString with invalid input.\n\ttry {\n\t\txml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\n\t} catch ( e ) {}\n\n\tparserErrorElem = xml && xml.getElementsByTagName( \"parsererror\" )[ 0 ];\n\tif ( !xml || parserErrorElem ) {\n\t\tjQuery.error( \"Invalid XML: \" + (\n\t\t\tparserErrorElem ?\n\t\t\t\tjQuery.map( parserErrorElem.childNodes, function( el ) {\n\t\t\t\t\treturn el.textContent;\n\t\t\t\t} ).join( \"\\n\" ) :\n\t\t\t\tdata\n\t\t) );\n\t}\n\treturn xml;\n};\n\n\nvar\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( Array.isArray( obj ) ) {\n\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams(\n\t\t\t\t\tprefix + \"[\" + ( typeof v === \"object\" && v != null ? i : \"\" ) + \"]\",\n\t\t\t\t\tv,\n\t\t\t\t\ttraditional,\n\t\t\t\t\tadd\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t} else if ( !traditional && toType( obj ) === \"object\" ) {\n\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, valueOrFunction ) {\n\n\t\t\t// If value is a function, invoke it and use its return value\n\t\t\tvar value = isFunction( valueOrFunction ) ?\n\t\t\t\tvalueOrFunction() :\n\t\t\t\tvalueOrFunction;\n\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( value == null ? \"\" : value );\n\t\t};\n\n\tif ( a == null ) {\n\t\treturn \"\";\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t} );\n\n\t} else {\n\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" );\n};\n\njQuery.fn.extend( {\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map( function() {\n\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t} ).filter( function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t} ).map( function( _i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\tif ( val == null ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( Array.isArray( val ) ) {\n\t\t\t\treturn jQuery.map( val, function( val ) {\n\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t} ).get();\n\t}\n} );\n\n\nvar\n\tr20 = /%20/g,\n\trhash = /#.*$/,\n\trantiCache = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\n\t// #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\noriginAnchor.href = location.href;\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];\n\n\t\tif ( isFunction( func ) ) {\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\n\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[ 0 ] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" &&\n\t\t\t\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t} );\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes #9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"Content-Type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[ 0 ] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s.throws ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstate: \"parsererror\",\n\t\t\t\t\t\t\t\terror: conv ? e : \"No conversion from \" + prev + \" to \" + current\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\n\njQuery.extend( {\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( location.protocol ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /\\bxml\\b/,\n\t\t\thtml: /\\bhtml/,\n\t\t\tjson: /\\bjson\\b/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": JSON.parse,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar transport,\n\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// Url cleanup var\n\t\t\turlAnchor,\n\n\t\t\t// Request state (becomes false upon send and true upon completion)\n\t\t\tcompleted,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\t// Loop variable\n\t\t\ti,\n\n\t\t\t// uncached part of the url\n\t\t\tuncached,\n\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context &&\n\t\t\t\t( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\tjQuery.event,\n\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( completed ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[ 1 ].toLowerCase() + \" \" ] =\n\t\t\t\t\t\t\t\t\t( responseHeaders[ match[ 1 ].toLowerCase() + \" \" ] || [] )\n\t\t\t\t\t\t\t\t\t\t.concat( match[ 2 ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() + \" \" ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match.join( \", \" );\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn completed ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\tname = requestHeadersNames[ name.toLowerCase() ] =\n\t\t\t\t\t\t\trequestHeadersNames[ name.toLowerCase() ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( completed ) {\n\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Lazy-add the new callbacks in a way that preserves old ones\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\n\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t// Handle falsy url in the settings object (#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 but not if jsonp\n\t\t\tif ( !isSuccess &&\n\t\t\t\tjQuery.inArray( \"script\", s.dataTypes ) > -1 &&\n\t\t\t\tjQuery.inArray( \"json\", s.dataTypes ) < 0 ) {\n\t\t\t\ts.converters[ \"text script\" ] = function() {};\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"Last-Modified\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"etag\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Extract error from statusText and normalize for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( _i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\n\t\t// Shift arguments if data argument was omitted\n\t\tif ( isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\t// The url can be an options object (which then must have .url)\n\t\treturn jQuery.ajax( jQuery.extend( {\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t}, jQuery.isPlainObject( url ) && url ) );\n\t};\n} );\n\njQuery.ajaxPrefilter( function( s ) {\n\tvar i;\n\tfor ( i in s.headers ) {\n\t\tif ( i.toLowerCase() === \"content-type\" ) {\n\t\t\ts.contentType = s.headers[ i ] || \"\";\n\t\t}\n\t}\n} );\n\n\njQuery._evalUrl = function( url, options, doc ) {\n\treturn jQuery.ajax( {\n\t\turl: url,\n\n\t\t// Make this explicit, since user can override this through ajaxSetup (#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( \"<script>\" )\n\t\t\t\t\t.attr( s.scriptAttrs || {} )\n\t\t\t\t\t.prop( { charset: s.scriptCharset, src: s.url } )\n\t\t\t\t\t.on( \"load error\", callback = function( evt ) {\n\t\t\t\t\t\tscript.remove();\n\t\t\t\t\t\tcallback = null;\n\t\t\t\t\t\tif ( evt ) {\n\t\t\t\t\t\t\tcomplete( evt.type === \"error\" ? 404 : 200, evt.type );\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\n\t\t\t\t// Use native DOM manipulation to avoid our domManip AJAX trickery\n\t\t\t\tdocument.head.appendChild( script[ 0 ] );\n\t\t\t},\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\nvar oldCallbacks = [],\n\trjsonp = /(=)\\?(?=&|$)|\\?\\?/;\n\n// Default jsonp settings\njQuery.ajaxSetup( {\n\tjsonp: \"callback\",\n\tjsonpCallback: function() {\n\t\tvar callback = oldCallbacks.pop() || ( jQuery.expando + \"_\" + ( nonce.guid++ ) );\n\t\tthis[ callback ] = true;\n\t\treturn callback;\n\t}\n} );\n\n// Detect, normalize options and install callbacks for jsonp requests\njQuery.ajaxPrefilter( \"json jsonp\", function( s, originalSettings, jqXHR ) {\n\n\tvar callbackName, overwritten, responseContainer,\n\t\tjsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?\n\t\t\t\"url\" :\n\t\t\ttypeof s.data === \"string\" &&\n\t\t\t\t( s.contentType || \"\" )\n\t\t\t\t\t.indexOf( \"application/x-www-form-urlencoded\" ) === 0 &&\n\t\t\t\trjsonp.test( s.data ) && \"data\"\n\t\t);\n\n\t// Handle iff the expected data type is \"jsonp\" or we have a parameter to set\n\tif ( jsonProp || s.dataTypes[ 0 ] === \"jsonp\" ) {\n\n\t\t// Get callback name, remembering preexisting value associated with it\n\t\tcallbackName = s.jsonpCallback = isFunction( s.jsonpCallback ) ?\n\t\t\ts.jsonpCallback() :\n\t\t\ts.jsonpCallback;\n\n\t\t// Insert callback into url or form data\n\t\tif ( jsonProp ) {\n\t\t\ts[ jsonProp ] = s[ jsonProp ].replace( rjsonp, \"$1\" + callbackName );\n\t\t} else if ( s.jsonp !== false ) {\n\t\t\ts.url += ( rquery.test( s.url ) ? \"&\" : \"?\" ) + s.jsonp + \"=\" + callbackName;\n\t\t}\n\n\t\t// Use data converter to retrieve json after script execution\n\t\ts.converters[ \"script json\" ] = function() {\n\t\t\tif ( !responseContainer ) {\n\t\t\t\tjQuery.error( callbackName + \" was not called\" );\n\t\t\t}\n\t\t\treturn responseContainer[ 0 ];\n\t\t};\n\n\t\t// Force json dataType\n\t\ts.dataTypes[ 0 ] = \"json\";\n\n\t\t// Install callback\n\t\toverwritten = window[ callbackName ];\n\t\twindow[ callbackName ] = function() {\n\t\t\tresponseContainer = arguments;\n\t\t};\n\n\t\t// Clean-up function (fires after converters)\n\t\tjqXHR.always( function() {\n\n\t\t\t// If previous value didn't exist - remove it\n\t\t\tif ( overwritten === undefined ) {\n\t\t\t\tjQuery( window ).removeProp( callbackName );\n\n\t\t\t// Otherwise restore preexisting value\n\t\t\t} else {\n\t\t\t\twindow[ callbackName ] = overwritten;\n\t\t\t}\n\n\t\t\t// Save back as free\n\t\t\tif ( s[ callbackName ] ) {\n\n\t\t\t\t// Make sure that re-using the options doesn't screw things around\n\t\t\t\ts.jsonpCallback = originalSettings.jsonpCallback;\n\n\t\t\t\t// Save the callback name for future use\n\t\t\t\toldCallbacks.push( callbackName );\n\t\t\t}\n\n\t\t\t// Call if it was a function and we have a response\n\t\t\tif ( responseContainer && isFunction( overwritten ) ) {\n\t\t\t\toverwritten( responseContainer[ 0 ] );\n\t\t\t}\n\n\t\t\tresponseContainer = overwritten = undefined;\n\t\t} );\n\n\t\t// Delegate to script\n\t\treturn \"script\";\n\t}\n} );\n\n\n\n\n// Support: Safari 8 only\n// In Safari 8 documents created via document.implementation.createHTMLDocument\n// collapse sibling forms: the second one becomes a child of the first one.\n// Because of that, this security measure has to be disabled in Safari 8.\n// https://bugs.webkit.org/show_bug.cgi?id=137337\nsupport.createHTMLDocument = ( function() {\n\tvar body = document.implementation.createHTMLDocument( \"\" ).body;\n\tbody.innerHTML = \"<form></form><form></form>\";\n\treturn body.childNodes.length === 2;\n} )();\n\n\n// Argument \"data\" should be string of html\n// context (optional): If specified, the fragment will be created in this context,\n// defaults to document\n// keepScripts (optional): If true, will include scripts passed in the html string\njQuery.parseHTML = function( data, context, keepScripts ) {\n\tif ( typeof data !== \"string\" ) {\n\t\treturn [];\n\t}\n\tif ( typeof context === \"boolean\" ) {\n\t\tkeepScripts = context;\n\t\tcontext = false;\n\t}\n\n\tvar base, parsed, scripts;\n\n\tif ( !context ) {\n\n\t\t// Stop scripts or inline event handlers from being executed immediately\n\t\t// by using document.implementation\n\t\tif ( support.createHTMLDocument ) {\n\t\t\tcontext = document.implementation.createHTMLDocument( \"\" );\n\n\t\t\t// Set the base href for the created document\n\t\t\t// so any parsed elements with URLs\n\t\t\t// are based on the document's URL (gh-2965)\n\t\t\tbase = context.createElement( \"base\" );\n\t\t\tbase.href = document.location.href;\n\t\t\tcontext.head.appendChild( base );\n\t\t} else {\n\t\t\tcontext = document;\n\t\t}\n\t}\n\n\tparsed = rsingleTag.exec( data );\n\tscripts = !keepScripts && [];\n\n\t// Single tag\n\tif ( parsed ) {\n\t\treturn [ context.createElement( parsed[ 1 ] ) ];\n\t}\n\n\tparsed = buildFragment( [ data ], context, scripts );\n\n\tif ( scripts && scripts.length ) {\n\t\tjQuery( scripts ).remove();\n\t}\n\n\treturn jQuery.merge( [], parsed.childNodes );\n};\n\n\n/**\n * Load a url into a page\n */\njQuery.fn.load = function( url, params, callback ) {\n\tvar selector, type, response,\n\t\tself = this,\n\t\toff = url.indexOf( \" \" );\n\n\tif ( off > -1 ) {\n\t\tselector = stripAndCollapse( url.slice( off ) );\n\t\turl = url.slice( 0, off );\n\t}\n\n\t// If it's a function\n\tif ( isFunction( params ) ) {\n\n\t\t// We assume that it's the callback\n\t\tcallback = params;\n\t\tparams = undefined;\n\n\t// Otherwise, build a param string\n\t} else if ( params && typeof params === \"object\" ) {\n\t\ttype = \"POST\";\n\t}\n\n\t// If we have elements to modify, make the request\n\tif ( self.length > 0 ) {\n\t\tjQuery.ajax( {\n\t\t\turl: url,\n\n\t\t\t// If \"type\" variable is undefined, then \"GET\" method will be used.\n\t\t\t// Make value of this field explicit since\n\t\t\t// user can override it through ajaxSetup method\n\t\t\ttype: type || \"GET\",\n\t\t\tdataType: \"html\",\n\t\t\tdata: params\n\t\t} ).done( function( responseText ) {\n\n\t\t\t// Save response for use in complete callback\n\t\t\tresponse = arguments;\n\n\t\t\tself.html( selector ?\n\n\t\t\t\t// If a selector was specified, locate the right elements in a dummy div\n\t\t\t\t// Exclude scripts to avoid IE 'Permission Denied' errors\n\t\t\t\tjQuery( \"<div>\" ).append( jQuery.parseHTML( responseText ) ).find( selector ) :\n\n\t\t\t\t// Otherwise use the full result\n\t\t\t\tresponseText );\n\n\t\t// If the request succeeds, this function gets \"data\", \"status\", \"jqXHR\"\n\t\t// but they are ignored because response was set above.\n\t\t// If it fails, this function gets \"jqXHR\", \"status\", \"error\"\n\t\t} ).always( callback && function( jqXHR, status ) {\n\t\t\tself.each( function() {\n\t\t\t\tcallback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] );\n\t\t\t} );\n\t\t} );\n\t}\n\n\treturn this;\n};\n\n\n\n\njQuery.expr.pseudos.animated = function( elem ) {\n\treturn jQuery.grep( jQuery.timers, function( fn ) {\n\t\treturn elem === fn.elem;\n\t} ).length;\n};\n\n\n\n\njQuery.offset = {\n\tsetOffset: function( elem, options, i ) {\n\t\tvar curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,\n\t\t\tposition = jQuery.css( elem, \"position\" ),\n\t\t\tcurElem = jQuery( elem ),\n\t\t\tprops = {};\n\n\t\t// Set position first, in-case top/left are set even on static elem\n\t\tif ( position === \"static\" ) {\n\t\t\telem.style.position = \"relative\";\n\t\t}\n\n\t\tcurOffset = curElem.offset();\n\t\tcurCSSTop = jQuery.css( elem, \"top\" );\n\t\tcurCSSLeft = jQuery.css( elem, \"left\" );\n\t\tcalculatePosition = ( position === \"absolute\" || position === \"fixed\" ) &&\n\t\t\t( curCSSTop + curCSSLeft ).indexOf( \"auto\" ) > -1;\n\n\t\t// Need to be able to calculate position if either\n\t\t// top or left is auto and position is either absolute or fixed\n\t\tif ( calculatePosition ) {\n\t\t\tcurPosition = curElem.position();\n\t\t\tcurTop = curPosition.top;\n\t\t\tcurLeft = curPosition.left;\n\n\t\t} else {\n\t\t\tcurTop = parseFloat( curCSSTop ) || 0;\n\t\t\tcurLeft = parseFloat( curCSSLeft ) || 0;\n\t\t}\n\n\t\tif ( isFunction( options ) ) {\n\n\t\t\t// Use jQuery.extend here to allow modification of coordinates argument (gh-1848)\n\t\t\toptions = options.call( elem, i, jQuery.extend( {}, curOffset ) );\n\t\t}\n\n\t\tif ( options.top != null ) {\n\t\t\tprops.top = ( options.top - curOffset.top ) + curTop;\n\t\t}\n\t\tif ( options.left != null ) {\n\t\t\tprops.left = ( options.left - curOffset.left ) + curLeft;\n\t\t}\n\n\t\tif ( \"using\" in options ) {\n\t\t\toptions.using.call( elem, props );\n\n\t\t} else {\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\njQuery.fn.extend( {\n\n\t// offset() relates an element's border box to the document origin\n\toffset: function( options ) {\n\n\t\t// Preserve chaining for setter\n\t\tif ( arguments.length ) {\n\t\t\treturn options === undefined ?\n\t\t\t\tthis :\n\t\t\t\tthis.each( function( i ) {\n\t\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t\t} );\n\t\t}\n\n\t\tvar rect, win,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !elem ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Return zeros for disconnected and hidden (display: none) elements (gh-2310)\n\t\t// Support: IE <=11 only\n\t\t// Running getBoundingClientRect on a\n\t\t// disconnected node in IE throws an error\n\t\tif ( !elem.getClientRects().length ) {\n\t\t\treturn { top: 0, left: 0 };\n\t\t}\n\n\t\t// Get document-relative position by adding viewport scroll to viewport-relative gBCR\n\t\trect = elem.getBoundingClientRect();\n\t\twin = elem.ownerDocument.defaultView;\n\t\treturn {\n\t\t\ttop: rect.top + win.pageYOffset,\n\t\t\tleft: rect.left + win.pageXOffset\n\t\t};\n\t},\n\n\t// position() relates an element's margin box to its offset parent's padding box\n\t// This corresponds to the behavior of CSS absolute positioning\n\tposition: function() {\n\t\tif ( !this[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar offsetParent, offset, doc,\n\t\t\telem = this[ 0 ],\n\t\t\tparentOffset = { top: 0, left: 0 };\n\n\t\t// position:fixed elements are offset from the viewport, which itself always has zero offset\n\t\tif ( jQuery.css( elem, \"position\" ) === \"fixed\" ) {\n\n\t\t\t// Assume position:fixed implies availability of getBoundingClientRect\n\t\t\toffset = elem.getBoundingClientRect();\n\n\t\t} else {\n\t\t\toffset = this.offset();\n\n\t\t\t// Account for the *real* offset parent, which can be the document or its root element\n\t\t\t// when a statically positioned element is identified\n\t\t\tdoc = elem.ownerDocument;\n\t\t\toffsetParent = elem.offsetParent || doc.documentElement;\n\t\t\twhile ( offsetParent &&\n\t\t\t\t( offsetParent === doc.body || offsetParent === doc.documentElement ) &&\n\t\t\t\tjQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\n\t\t\t\toffsetParent = offsetParent.parentNode;\n\t\t\t}\n\t\t\tif ( offsetParent && offsetParent !== elem && offsetParent.nodeType === 1 ) {\n\n\t\t\t\t// Incorporate borders into its offset, since they are outside its content origin\n\t\t\t\tparentOffset = jQuery( offsetParent ).offset();\n\t\t\t\tparentOffset.top += jQuery.css( offsetParent, \"borderTopWidth\", true );\n\t\t\t\tparentOffset.left += jQuery.css( offsetParent, \"borderLeftWidth\", true );\n\t\t\t}\n\t\t}\n\n\t\t// Subtract parent offsets and element margins\n\t\treturn {\n\t\t\ttop: offset.top - parentOffset.top - jQuery.css( elem, \"marginTop\", true ),\n\t\t\tleft: offset.left - parentOffset.left - jQuery.css( elem, \"marginLeft\", true )\n\t\t};\n\t},\n\n\t// This method will return documentElement in the following cases:\n\t// 1) For the element inside the iframe without offsetParent, this method will return\n\t//    documentElement of the parent window\n\t// 2) For the hidden or detached element\n\t// 3) For body or html element, i.e. in case of the html node - it will return itself\n\t//\n\t// but those exceptions were never presented as a real life use-cases\n\t// and might be considered as more preferable results.\n\t//\n\t// This logic, however, is not guaranteed and can change at any point in the future\n\toffsetParent: function() {\n\t\treturn this.map( function() {\n\t\t\tvar offsetParent = this.offsetParent;\n\n\t\t\twhile ( offsetParent && jQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\n\t\t\treturn offsetParent || documentElement;\n\t\t} );\n\t}\n} );\n\n// Create scrollLeft and scrollTop methods\njQuery.each( { scrollLeft: \"pageXOffset\", scrollTop: \"pageYOffset\" }, function( method, prop ) {\n\tvar top = \"pageYOffset\" === prop;\n\n\tjQuery.fn[ method ] = function( val ) {\n\t\treturn access( this, function( elem, method, val ) {\n\n\t\t\t// Coalesce documents and windows\n\t\t\tvar win;\n\t\t\tif ( isWindow( elem ) ) {\n\t\t\t\twin = elem;\n\t\t\t} else if ( elem.nodeType === 9 ) {\n\t\t\t\twin = elem.defaultView;\n\t\t\t}\n\n\t\t\tif ( val === undefined ) {\n\t\t\t\treturn win ? win[ prop ] : elem[ method ];\n\t\t\t}\n\n\t\t\tif ( win ) {\n\t\t\t\twin.scrollTo(\n\t\t\t\t\t!top ? val : win.pageXOffset,\n\t\t\t\t\ttop ? val : win.pageYOffset\n\t\t\t\t);\n\n\t\t\t} else {\n\t\t\t\telem[ method ] = val;\n\t\t\t}\n\t\t}, method, val, arguments.length );\n\t};\n} );\n\n// Support: Safari <=7 - 9.1, Chrome <=37 - 49\n// Add the top/left cssHooks using jQuery.fn.position\n// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084\n// Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347\n// getComputedStyle returns percent when specified for top/left/bottom/right;\n// rather than make the css module depend on the offset module, just check for it here\njQuery.each( [ \"top\", \"left\" ], function( _i, prop ) {\n\tjQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,\n\t\tfunction( elem, computed ) {\n\t\t\tif ( computed ) {\n\t\t\t\tcomputed = curCSS( elem, prop );\n\n\t\t\t\t// If curCSS returns percentage, fallback to offset\n\t\t\t\treturn rnumnonpx.test( computed ) ?\n\t\t\t\t\tjQuery( elem ).position()[ prop ] + \"px\" :\n\t\t\t\t\tcomputed;\n\t\t\t}\n\t\t}\n\t);\n} );\n\n\n// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods\njQuery.each( { Height: \"height\", Width: \"width\" }, function( name, type ) {\n\tjQuery.each( {\n\t\tpadding: \"inner\" + name,\n\t\tcontent: type,\n\t\t\"\": \"outer\" + name\n\t}, function( defaultExtra, funcName ) {\n\n\t\t// Margin is only for outerHeight, outerWidth\n\t\tjQuery.fn[ funcName ] = function( margin, value ) {\n\t\t\tvar chainable = arguments.length && ( defaultExtra || typeof margin !== \"boolean\" ),\n\t\t\t\textra = defaultExtra || ( margin === true || value === true ? \"margin\" : \"border\" );\n\n\t\t\treturn access( this, function( elem, type, value ) {\n\t\t\t\tvar doc;\n\n\t\t\t\tif ( isWindow( elem ) ) {\n\n\t\t\t\t\t// $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)\n\t\t\t\t\treturn funcName.indexOf( \"outer\" ) === 0 ?\n\t\t\t\t\t\telem[ \"inner\" + name ] :\n\t\t\t\t\t\telem.document.documentElement[ \"client\" + name ];\n\t\t\t\t}\n\n\t\t\t\t// Get document width or height\n\t\t\t\tif ( elem.nodeType === 9 ) {\n\t\t\t\t\tdoc = elem.documentElement;\n\n\t\t\t\t\t// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],\n\t\t\t\t\t// whichever is greatest\n\t\t\t\t\treturn Math.max(\n\t\t\t\t\t\telem.body[ \"scroll\" + name ], doc[ \"scroll\" + name ],\n\t\t\t\t\t\telem.body[ \"offset\" + name ], doc[ \"offset\" + name ],\n\t\t\t\t\t\tdoc[ \"client\" + name ]\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn value === undefined ?\n\n\t\t\t\t\t// Get width or height on the element, requesting but not forcing parseFloat\n\t\t\t\t\tjQuery.css( elem, type, extra ) :\n\n\t\t\t\t\t// Set width or height on the element\n\t\t\t\t\tjQuery.style( elem, type, value, extra );\n\t\t\t}, type, chainable ? margin : undefined, chainable );\n\t\t};\n\t} );\n} );\n\n\njQuery.each( [\n\t\"ajaxStart\",\n\t\"ajaxStop\",\n\t\"ajaxComplete\",\n\t\"ajaxError\",\n\t\"ajaxSuccess\",\n\t\"ajaxSend\"\n], function( _i, type ) {\n\tjQuery.fn[ type ] = function( fn ) {\n\t\treturn this.on( type, fn );\n\t};\n} );\n\n\n\n\njQuery.fn.extend( {\n\n\tbind: function( types, data, fn ) {\n\t\treturn this.on( types, null, data, fn );\n\t},\n\tunbind: function( types, fn ) {\n\t\treturn this.off( types, null, fn );\n\t},\n\n\tdelegate: function( selector, types, data, fn ) {\n\t\treturn this.on( types, selector, data, fn );\n\t},\n\tundelegate: function( selector, types, fn ) {\n\n\t\t// ( namespace ) or ( selector, types [, fn] )\n\t\treturn arguments.length === 1 ?\n\t\t\tthis.off( selector, \"**\" ) :\n\t\t\tthis.off( types, selector || \"**\", fn );\n\t},\n\n\thover: function( fnOver, fnOut ) {\n\t\treturn this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );\n\t}\n} );\n\njQuery.each(\n\t( \"blur focus focusin focusout resize scroll click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup contextmenu\" ).split( \" \" ),\n\tfunction( _i, name ) {\n\n\t\t// Handle event binding\n\t\tjQuery.fn[ name ] = function( data, fn ) {\n\t\t\treturn arguments.length > 0 ?\n\t\t\t\tthis.on( name, null, data, fn ) :\n\t\t\t\tthis.trigger( name );\n\t\t};\n\t}\n);\n\n\n\n\n// Support: Android <=4.0 only\n// Make sure we trim BOM and NBSP\nvar rtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g;\n\n// Bind a function to a context, optionally partially applying any\n// arguments.\n// jQuery.proxy is deprecated to promote standards (specifically Function#bind)\n// However, it is not slated for removal any time soon\njQuery.proxy = function( fn, context ) {\n\tvar tmp, args, proxy;\n\n\tif ( typeof context === \"string\" ) {\n\t\ttmp = fn[ context ];\n\t\tcontext = fn;\n\t\tfn = tmp;\n\t}\n\n\t// Quick check to determine if target is callable, in the spec\n\t// this throws a TypeError, but we will just return undefined.\n\tif ( !isFunction( fn ) ) {\n\t\treturn undefined;\n\t}\n\n\t// Simulated bind\n\targs = slice.call( arguments, 2 );\n\tproxy = function() {\n\t\treturn fn.apply( context || this, args.concat( slice.call( arguments ) ) );\n\t};\n\n\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\n\n\treturn proxy;\n};\n\njQuery.holdReady = function( hold ) {\n\tif ( hold ) {\n\t\tjQuery.readyWait++;\n\t} else {\n\t\tjQuery.ready( true );\n\t}\n};\njQuery.isArray = Array.isArray;\njQuery.parseJSON = JSON.parse;\njQuery.nodeName = nodeName;\njQuery.isFunction = isFunction;\njQuery.isWindow = isWindow;\njQuery.camelCase = camelCase;\njQuery.type = toType;\n\njQuery.now = Date.now;\n\njQuery.isNumeric = function( obj ) {\n\n\t// As of jQuery 3.0, isNumeric is limited to\n\t// strings and numbers (primitives or objects)\n\t// that can be coerced to finite numbers (gh-2662)\n\tvar type = jQuery.type( obj );\n\treturn ( type === \"number\" || type === \"string\" ) &&\n\n\t\t// parseFloat NaNs numeric-cast false positives (\"\")\n\t\t// ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n\t\t// subtraction forces infinities to NaN\n\t\t!isNaN( obj - parseFloat( obj ) );\n};\n\njQuery.trim = function( text ) {\n\treturn text == null ?\n\t\t\"\" :\n\t\t( text + \"\" ).replace( rtrim, \"\" );\n};\n\n\n\n// Register as a named AMD module, since jQuery can be concatenated with other\n// files that may use define, but not via a proper concatenation script that\n// understands anonymous AMD modules. A named AMD is safest and most robust\n// way to register. Lowercase jquery is used because AMD module names are\n// derived from file names, and jQuery is normally delivered in a lowercase\n// file name. Do this after creating the global so that if an AMD module wants\n// to call noConflict to hide this version of jQuery, it will work.\n\n// Note that for maximum portability, libraries that are not jQuery should\n// declare themselves as anonymous modules, and avoid setting a global if an\n// AMD loader is present. jQuery is a special case. For more information, see\n// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon\n\nif ( typeof define === \"function\" && define.amd ) {\n\tdefine( \"jquery\", [], function() {\n\t\treturn jQuery;\n\t} );\n}\n\n\n\n\nvar\n\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$;\n\njQuery.noConflict = function( deep ) {\n\tif ( window.$ === jQuery ) {\n\t\twindow.$ = _$;\n\t}\n\n\tif ( deep && window.jQuery === jQuery ) {\n\t\twindow.jQuery = _jQuery;\n\t}\n\n\treturn jQuery;\n};\n\n// Expose jQuery and $ identifiers, even in AMD\n// (#7102#comment:10, https://github.com/jquery/jquery/pull/557)\n// and CommonJS for browser emulators (#13566)\nif ( typeof noGlobal === \"undefined\" ) {\n\twindow.jQuery = window.$ = jQuery;\n}\n\n\n\n\nreturn jQuery;\n} );\n","//! moment.js\n//! version : 2.29.1\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n    typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n    typeof define === 'function' && define.amd ? define(factory) :\n    global.moment = factory()\n}(this, (function () { 'use strict';\n\n    var hookCallback;\n\n    function hooks() {\n        return hookCallback.apply(null, arguments);\n    }\n\n    // This is done to register the method called with moment()\n    // without creating circular dependencies.\n    function setHookCallback(callback) {\n        hookCallback = callback;\n    }\n\n    function isArray(input) {\n        return (\n            input instanceof Array ||\n            Object.prototype.toString.call(input) === '[object Array]'\n        );\n    }\n\n    function isObject(input) {\n        // IE8 will treat undefined and null as object if it wasn't for\n        // input != null\n        return (\n            input != null &&\n            Object.prototype.toString.call(input) === '[object Object]'\n        );\n    }\n\n    function hasOwnProp(a, b) {\n        return Object.prototype.hasOwnProperty.call(a, b);\n    }\n\n    function isObjectEmpty(obj) {\n        if (Object.getOwnPropertyNames) {\n            return Object.getOwnPropertyNames(obj).length === 0;\n        } else {\n            var k;\n            for (k in obj) {\n                if (hasOwnProp(obj, k)) {\n                    return false;\n                }\n            }\n            return true;\n        }\n    }\n\n    function isUndefined(input) {\n        return input === void 0;\n    }\n\n    function isNumber(input) {\n        return (\n            typeof input === 'number' ||\n            Object.prototype.toString.call(input) === '[object Number]'\n        );\n    }\n\n    function isDate(input) {\n        return (\n            input instanceof Date ||\n            Object.prototype.toString.call(input) === '[object Date]'\n        );\n    }\n\n    function map(arr, fn) {\n        var res = [],\n            i;\n        for (i = 0; i < arr.length; ++i) {\n            res.push(fn(arr[i], i));\n        }\n        return res;\n    }\n\n    function extend(a, b) {\n        for (var i in b) {\n            if (hasOwnProp(b, i)) {\n                a[i] = b[i];\n            }\n        }\n\n        if (hasOwnProp(b, 'toString')) {\n            a.toString = b.toString;\n        }\n\n        if (hasOwnProp(b, 'valueOf')) {\n            a.valueOf = b.valueOf;\n        }\n\n        return a;\n    }\n\n    function createUTC(input, format, locale, strict) {\n        return createLocalOrUTC(input, format, locale, strict, true).utc();\n    }\n\n    function defaultParsingFlags() {\n        // We need to deep clone this object.\n        return {\n            empty: false,\n            unusedTokens: [],\n            unusedInput: [],\n            overflow: -2,\n            charsLeftOver: 0,\n            nullInput: false,\n            invalidEra: null,\n            invalidMonth: null,\n            invalidFormat: false,\n            userInvalidated: false,\n            iso: false,\n            parsedDateParts: [],\n            era: null,\n            meridiem: null,\n            rfc2822: false,\n            weekdayMismatch: false,\n        };\n    }\n\n    function getParsingFlags(m) {\n        if (m._pf == null) {\n            m._pf = defaultParsingFlags();\n        }\n        return m._pf;\n    }\n\n    var some;\n    if (Array.prototype.some) {\n        some = Array.prototype.some;\n    } else {\n        some = function (fun) {\n            var t = Object(this),\n                len = t.length >>> 0,\n                i;\n\n            for (i = 0; i < len; i++) {\n                if (i in t && fun.call(this, t[i], i, t)) {\n                    return true;\n                }\n            }\n\n            return false;\n        };\n    }\n\n    function isValid(m) {\n        if (m._isValid == null) {\n            var flags = getParsingFlags(m),\n                parsedParts = some.call(flags.parsedDateParts, function (i) {\n                    return i != null;\n                }),\n                isNowValid =\n                    !isNaN(m._d.getTime()) &&\n                    flags.overflow < 0 &&\n                    !flags.empty &&\n                    !flags.invalidEra &&\n                    !flags.invalidMonth &&\n                    !flags.invalidWeekday &&\n                    !flags.weekdayMismatch &&\n                    !flags.nullInput &&\n                    !flags.invalidFormat &&\n                    !flags.userInvalidated &&\n                    (!flags.meridiem || (flags.meridiem && parsedParts));\n\n            if (m._strict) {\n                isNowValid =\n                    isNowValid &&\n                    flags.charsLeftOver === 0 &&\n                    flags.unusedTokens.length === 0 &&\n                    flags.bigHour === undefined;\n            }\n\n            if (Object.isFrozen == null || !Object.isFrozen(m)) {\n                m._isValid = isNowValid;\n            } else {\n                return isNowValid;\n            }\n        }\n        return m._isValid;\n    }\n\n    function createInvalid(flags) {\n        var m = createUTC(NaN);\n        if (flags != null) {\n            extend(getParsingFlags(m), flags);\n        } else {\n            getParsingFlags(m).userInvalidated = true;\n        }\n\n        return m;\n    }\n\n    // Plugins that add properties should also add the key here (null value),\n    // so we can properly clone ourselves.\n    var momentProperties = (hooks.momentProperties = []),\n        updateInProgress = false;\n\n    function copyConfig(to, from) {\n        var i, prop, val;\n\n        if (!isUndefined(from._isAMomentObject)) {\n            to._isAMomentObject = from._isAMomentObject;\n        }\n        if (!isUndefined(from._i)) {\n            to._i = from._i;\n        }\n        if (!isUndefined(from._f)) {\n            to._f = from._f;\n        }\n        if (!isUndefined(from._l)) {\n            to._l = from._l;\n        }\n        if (!isUndefined(from._strict)) {\n            to._strict = from._strict;\n        }\n        if (!isUndefined(from._tzm)) {\n            to._tzm = from._tzm;\n        }\n        if (!isUndefined(from._isUTC)) {\n            to._isUTC = from._isUTC;\n        }\n        if (!isUndefined(from._offset)) {\n            to._offset = from._offset;\n        }\n        if (!isUndefined(from._pf)) {\n            to._pf = getParsingFlags(from);\n        }\n        if (!isUndefined(from._locale)) {\n            to._locale = from._locale;\n        }\n\n        if (momentProperties.length > 0) {\n            for (i = 0; i < momentProperties.length; i++) {\n                prop = momentProperties[i];\n                val = from[prop];\n                if (!isUndefined(val)) {\n                    to[prop] = val;\n                }\n            }\n        }\n\n        return to;\n    }\n\n    // Moment prototype object\n    function Moment(config) {\n        copyConfig(this, config);\n        this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n        if (!this.isValid()) {\n            this._d = new Date(NaN);\n        }\n        // Prevent infinite loop in case updateOffset creates new moment\n        // objects.\n        if (updateInProgress === false) {\n            updateInProgress = true;\n            hooks.updateOffset(this);\n            updateInProgress = false;\n        }\n    }\n\n    function isMoment(obj) {\n        return (\n            obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n        );\n    }\n\n    function warn(msg) {\n        if (\n            hooks.suppressDeprecationWarnings === false &&\n            typeof console !== 'undefined' &&\n            console.warn\n        ) {\n            console.warn('Deprecation warning: ' + msg);\n        }\n    }\n\n    function deprecate(msg, fn) {\n        var firstTime = true;\n\n        return extend(function () {\n            if (hooks.deprecationHandler != null) {\n                hooks.deprecationHandler(null, msg);\n            }\n            if (firstTime) {\n                var args = [],\n                    arg,\n                    i,\n                    key;\n                for (i = 0; i < arguments.length; i++) {\n                    arg = '';\n                    if (typeof arguments[i] === 'object') {\n                        arg += '\\n[' + i + '] ';\n                        for (key in arguments[0]) {\n                            if (hasOwnProp(arguments[0], key)) {\n                                arg += key + ': ' + arguments[0][key] + ', ';\n                            }\n                        }\n                        arg = arg.slice(0, -2); // Remove trailing comma and space\n                    } else {\n                        arg = arguments[i];\n                    }\n                    args.push(arg);\n                }\n                warn(\n                    msg +\n                        '\\nArguments: ' +\n                        Array.prototype.slice.call(args).join('') +\n                        '\\n' +\n                        new Error().stack\n                );\n                firstTime = false;\n            }\n            return fn.apply(this, arguments);\n        }, fn);\n    }\n\n    var deprecations = {};\n\n    function deprecateSimple(name, msg) {\n        if (hooks.deprecationHandler != null) {\n            hooks.deprecationHandler(name, msg);\n        }\n        if (!deprecations[name]) {\n            warn(msg);\n            deprecations[name] = true;\n        }\n    }\n\n    hooks.suppressDeprecationWarnings = false;\n    hooks.deprecationHandler = null;\n\n    function isFunction(input) {\n        return (\n            (typeof Function !== 'undefined' && input instanceof Function) ||\n            Object.prototype.toString.call(input) === '[object Function]'\n        );\n    }\n\n    function set(config) {\n        var prop, i;\n        for (i in config) {\n            if (hasOwnProp(config, i)) {\n                prop = config[i];\n                if (isFunction(prop)) {\n                    this[i] = prop;\n                } else {\n                    this['_' + i] = prop;\n                }\n            }\n        }\n        this._config = config;\n        // Lenient ordinal parsing accepts just a number in addition to\n        // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n        // TODO: Remove \"ordinalParse\" fallback in next major release.\n        this._dayOfMonthOrdinalParseLenient = new RegExp(\n            (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n                '|' +\n                /\\d{1,2}/.source\n        );\n    }\n\n    function mergeConfigs(parentConfig, childConfig) {\n        var res = extend({}, parentConfig),\n            prop;\n        for (prop in childConfig) {\n            if (hasOwnProp(childConfig, prop)) {\n                if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n                    res[prop] = {};\n                    extend(res[prop], parentConfig[prop]);\n                    extend(res[prop], childConfig[prop]);\n                } else if (childConfig[prop] != null) {\n                    res[prop] = childConfig[prop];\n                } else {\n                    delete res[prop];\n                }\n            }\n        }\n        for (prop in parentConfig) {\n            if (\n                hasOwnProp(parentConfig, prop) &&\n                !hasOwnProp(childConfig, prop) &&\n                isObject(parentConfig[prop])\n            ) {\n                // make sure changes to properties don't modify parent config\n                res[prop] = extend({}, res[prop]);\n            }\n        }\n        return res;\n    }\n\n    function Locale(config) {\n        if (config != null) {\n            this.set(config);\n        }\n    }\n\n    var keys;\n\n    if (Object.keys) {\n        keys = Object.keys;\n    } else {\n        keys = function (obj) {\n            var i,\n                res = [];\n            for (i in obj) {\n                if (hasOwnProp(obj, i)) {\n                    res.push(i);\n                }\n            }\n            return res;\n        };\n    }\n\n    var defaultCalendar = {\n        sameDay: '[Today at] LT',\n        nextDay: '[Tomorrow at] LT',\n        nextWeek: 'dddd [at] LT',\n        lastDay: '[Yesterday at] LT',\n        lastWeek: '[Last] dddd [at] LT',\n        sameElse: 'L',\n    };\n\n    function calendar(key, mom, now) {\n        var output = this._calendar[key] || this._calendar['sameElse'];\n        return isFunction(output) ? output.call(mom, now) : output;\n    }\n\n    function zeroFill(number, targetLength, forceSign) {\n        var absNumber = '' + Math.abs(number),\n            zerosToFill = targetLength - absNumber.length,\n            sign = number >= 0;\n        return (\n            (sign ? (forceSign ? '+' : '') : '-') +\n            Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n            absNumber\n        );\n    }\n\n    var formattingTokens = /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n        localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n        formatFunctions = {},\n        formatTokenFunctions = {};\n\n    // token:    'M'\n    // padded:   ['MM', 2]\n    // ordinal:  'Mo'\n    // callback: function () { this.month() + 1 }\n    function addFormatToken(token, padded, ordinal, callback) {\n        var func = callback;\n        if (typeof callback === 'string') {\n            func = function () {\n                return this[callback]();\n            };\n        }\n        if (token) {\n            formatTokenFunctions[token] = func;\n        }\n        if (padded) {\n            formatTokenFunctions[padded[0]] = function () {\n                return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n            };\n        }\n        if (ordinal) {\n            formatTokenFunctions[ordinal] = function () {\n                return this.localeData().ordinal(\n                    func.apply(this, arguments),\n                    token\n                );\n            };\n        }\n    }\n\n    function removeFormattingTokens(input) {\n        if (input.match(/\\[[\\s\\S]/)) {\n            return input.replace(/^\\[|\\]$/g, '');\n        }\n        return input.replace(/\\\\/g, '');\n    }\n\n    function makeFormatFunction(format) {\n        var array = format.match(formattingTokens),\n            i,\n            length;\n\n        for (i = 0, length = array.length; i < length; i++) {\n            if (formatTokenFunctions[array[i]]) {\n                array[i] = formatTokenFunctions[array[i]];\n            } else {\n                array[i] = removeFormattingTokens(array[i]);\n            }\n        }\n\n        return function (mom) {\n            var output = '',\n                i;\n            for (i = 0; i < length; i++) {\n                output += isFunction(array[i])\n                    ? array[i].call(mom, format)\n                    : array[i];\n            }\n            return output;\n        };\n    }\n\n    // format date using native date object\n    function formatMoment(m, format) {\n        if (!m.isValid()) {\n            return m.localeData().invalidDate();\n        }\n\n        format = expandFormat(format, m.localeData());\n        formatFunctions[format] =\n            formatFunctions[format] || makeFormatFunction(format);\n\n        return formatFunctions[format](m);\n    }\n\n    function expandFormat(format, locale) {\n        var i = 5;\n\n        function replaceLongDateFormatTokens(input) {\n            return locale.longDateFormat(input) || input;\n        }\n\n        localFormattingTokens.lastIndex = 0;\n        while (i >= 0 && localFormattingTokens.test(format)) {\n            format = format.replace(\n                localFormattingTokens,\n                replaceLongDateFormatTokens\n            );\n            localFormattingTokens.lastIndex = 0;\n            i -= 1;\n        }\n\n        return format;\n    }\n\n    var defaultLongDateFormat = {\n        LTS: 'h:mm:ss A',\n        LT: 'h:mm A',\n        L: 'MM/DD/YYYY',\n        LL: 'MMMM D, YYYY',\n        LLL: 'MMMM D, YYYY h:mm A',\n        LLLL: 'dddd, MMMM D, YYYY h:mm A',\n    };\n\n    function longDateFormat(key) {\n        var format = this._longDateFormat[key],\n            formatUpper = this._longDateFormat[key.toUpperCase()];\n\n        if (format || !formatUpper) {\n            return format;\n        }\n\n        this._longDateFormat[key] = formatUpper\n            .match(formattingTokens)\n            .map(function (tok) {\n                if (\n                    tok === 'MMMM' ||\n                    tok === 'MM' ||\n                    tok === 'DD' ||\n                    tok === 'dddd'\n                ) {\n                    return tok.slice(1);\n                }\n                return tok;\n            })\n            .join('');\n\n        return this._longDateFormat[key];\n    }\n\n    var defaultInvalidDate = 'Invalid date';\n\n    function invalidDate() {\n        return this._invalidDate;\n    }\n\n    var defaultOrdinal = '%d',\n        defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n    function ordinal(number) {\n        return this._ordinal.replace('%d', number);\n    }\n\n    var defaultRelativeTime = {\n        future: 'in %s',\n        past: '%s ago',\n        s: 'a few seconds',\n        ss: '%d seconds',\n        m: 'a minute',\n        mm: '%d minutes',\n        h: 'an hour',\n        hh: '%d hours',\n        d: 'a day',\n        dd: '%d days',\n        w: 'a week',\n        ww: '%d weeks',\n        M: 'a month',\n        MM: '%d months',\n        y: 'a year',\n        yy: '%d years',\n    };\n\n    function relativeTime(number, withoutSuffix, string, isFuture) {\n        var output = this._relativeTime[string];\n        return isFunction(output)\n            ? output(number, withoutSuffix, string, isFuture)\n            : output.replace(/%d/i, number);\n    }\n\n    function pastFuture(diff, output) {\n        var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n        return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n    }\n\n    var aliases = {};\n\n    function addUnitAlias(unit, shorthand) {\n        var lowerCase = unit.toLowerCase();\n        aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n    }\n\n    function normalizeUnits(units) {\n        return typeof units === 'string'\n            ? aliases[units] || aliases[units.toLowerCase()]\n            : undefined;\n    }\n\n    function normalizeObjectUnits(inputObject) {\n        var normalizedInput = {},\n            normalizedProp,\n            prop;\n\n        for (prop in inputObject) {\n            if (hasOwnProp(inputObject, prop)) {\n                normalizedProp = normalizeUnits(prop);\n                if (normalizedProp) {\n                    normalizedInput[normalizedProp] = inputObject[prop];\n                }\n            }\n        }\n\n        return normalizedInput;\n    }\n\n    var priorities = {};\n\n    function addUnitPriority(unit, priority) {\n        priorities[unit] = priority;\n    }\n\n    function getPrioritizedUnits(unitsObj) {\n        var units = [],\n            u;\n        for (u in unitsObj) {\n            if (hasOwnProp(unitsObj, u)) {\n                units.push({ unit: u, priority: priorities[u] });\n            }\n        }\n        units.sort(function (a, b) {\n            return a.priority - b.priority;\n        });\n        return units;\n    }\n\n    function isLeapYear(year) {\n        return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n    }\n\n    function absFloor(number) {\n        if (number < 0) {\n            // -0 -> 0\n            return Math.ceil(number) || 0;\n        } else {\n            return Math.floor(number);\n        }\n    }\n\n    function toInt(argumentForCoercion) {\n        var coercedNumber = +argumentForCoercion,\n            value = 0;\n\n        if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n            value = absFloor(coercedNumber);\n        }\n\n        return value;\n    }\n\n    function makeGetSet(unit, keepTime) {\n        return function (value) {\n            if (value != null) {\n                set$1(this, unit, value);\n                hooks.updateOffset(this, keepTime);\n                return this;\n            } else {\n                return get(this, unit);\n            }\n        };\n    }\n\n    function get(mom, unit) {\n        return mom.isValid()\n            ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]()\n            : NaN;\n    }\n\n    function set$1(mom, unit, value) {\n        if (mom.isValid() && !isNaN(value)) {\n            if (\n                unit === 'FullYear' &&\n                isLeapYear(mom.year()) &&\n                mom.month() === 1 &&\n                mom.date() === 29\n            ) {\n                value = toInt(value);\n                mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](\n                    value,\n                    mom.month(),\n                    daysInMonth(value, mom.month())\n                );\n            } else {\n                mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n            }\n        }\n    }\n\n    // MOMENTS\n\n    function stringGet(units) {\n        units = normalizeUnits(units);\n        if (isFunction(this[units])) {\n            return this[units]();\n        }\n        return this;\n    }\n\n    function stringSet(units, value) {\n        if (typeof units === 'object') {\n            units = normalizeObjectUnits(units);\n            var prioritized = getPrioritizedUnits(units),\n                i;\n            for (i = 0; i < prioritized.length; i++) {\n                this[prioritized[i].unit](units[prioritized[i].unit]);\n            }\n        } else {\n            units = normalizeUnits(units);\n            if (isFunction(this[units])) {\n                return this[units](value);\n            }\n        }\n        return this;\n    }\n\n    var match1 = /\\d/, //       0 - 9\n        match2 = /\\d\\d/, //      00 - 99\n        match3 = /\\d{3}/, //     000 - 999\n        match4 = /\\d{4}/, //    0000 - 9999\n        match6 = /[+-]?\\d{6}/, // -999999 - 999999\n        match1to2 = /\\d\\d?/, //       0 - 99\n        match3to4 = /\\d\\d\\d\\d?/, //     999 - 9999\n        match5to6 = /\\d\\d\\d\\d\\d\\d?/, //   99999 - 999999\n        match1to3 = /\\d{1,3}/, //       0 - 999\n        match1to4 = /\\d{1,4}/, //       0 - 9999\n        match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n        matchUnsigned = /\\d+/, //       0 - inf\n        matchSigned = /[+-]?\\d+/, //    -inf - inf\n        matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n        matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n        matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n        // any word (or two) characters or numbers including two/three word month in arabic.\n        // includes scottish gaelic two word and hyphenated months\n        matchWord = /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n        regexes;\n\n    regexes = {};\n\n    function addRegexToken(token, regex, strictRegex) {\n        regexes[token] = isFunction(regex)\n            ? regex\n            : function (isStrict, localeData) {\n                  return isStrict && strictRegex ? strictRegex : regex;\n              };\n    }\n\n    function getParseRegexForToken(token, config) {\n        if (!hasOwnProp(regexes, token)) {\n            return new RegExp(unescapeFormat(token));\n        }\n\n        return regexes[token](config._strict, config._locale);\n    }\n\n    // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n    function unescapeFormat(s) {\n        return regexEscape(\n            s\n                .replace('\\\\', '')\n                .replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g, function (\n                    matched,\n                    p1,\n                    p2,\n                    p3,\n                    p4\n                ) {\n                    return p1 || p2 || p3 || p4;\n                })\n        );\n    }\n\n    function regexEscape(s) {\n        return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n    }\n\n    var tokens = {};\n\n    function addParseToken(token, callback) {\n        var i,\n            func = callback;\n        if (typeof token === 'string') {\n            token = [token];\n        }\n        if (isNumber(callback)) {\n            func = function (input, array) {\n                array[callback] = toInt(input);\n            };\n        }\n        for (i = 0; i < token.length; i++) {\n            tokens[token[i]] = func;\n        }\n    }\n\n    function addWeekParseToken(token, callback) {\n        addParseToken(token, function (input, array, config, token) {\n            config._w = config._w || {};\n            callback(input, config._w, config, token);\n        });\n    }\n\n    function addTimeToArrayFromToken(token, input, config) {\n        if (input != null && hasOwnProp(tokens, token)) {\n            tokens[token](input, config._a, config, token);\n        }\n    }\n\n    var YEAR = 0,\n        MONTH = 1,\n        DATE = 2,\n        HOUR = 3,\n        MINUTE = 4,\n        SECOND = 5,\n        MILLISECOND = 6,\n        WEEK = 7,\n        WEEKDAY = 8;\n\n    function mod(n, x) {\n        return ((n % x) + x) % x;\n    }\n\n    var indexOf;\n\n    if (Array.prototype.indexOf) {\n        indexOf = Array.prototype.indexOf;\n    } else {\n        indexOf = function (o) {\n            // I know\n            var i;\n            for (i = 0; i < this.length; ++i) {\n                if (this[i] === o) {\n                    return i;\n                }\n            }\n            return -1;\n        };\n    }\n\n    function daysInMonth(year, month) {\n        if (isNaN(year) || isNaN(month)) {\n            return NaN;\n        }\n        var modMonth = mod(month, 12);\n        year += (month - modMonth) / 12;\n        return modMonth === 1\n            ? isLeapYear(year)\n                ? 29\n                : 28\n            : 31 - ((modMonth % 7) % 2);\n    }\n\n    // FORMATTING\n\n    addFormatToken('M', ['MM', 2], 'Mo', function () {\n        return this.month() + 1;\n    });\n\n    addFormatToken('MMM', 0, 0, function (format) {\n        return this.localeData().monthsShort(this, format);\n    });\n\n    addFormatToken('MMMM', 0, 0, function (format) {\n        return this.localeData().months(this, format);\n    });\n\n    // ALIASES\n\n    addUnitAlias('month', 'M');\n\n    // PRIORITY\n\n    addUnitPriority('month', 8);\n\n    // PARSING\n\n    addRegexToken('M', match1to2);\n    addRegexToken('MM', match1to2, match2);\n    addRegexToken('MMM', function (isStrict, locale) {\n        return locale.monthsShortRegex(isStrict);\n    });\n    addRegexToken('MMMM', function (isStrict, locale) {\n        return locale.monthsRegex(isStrict);\n    });\n\n    addParseToken(['M', 'MM'], function (input, array) {\n        array[MONTH] = toInt(input) - 1;\n    });\n\n    addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n        var month = config._locale.monthsParse(input, token, config._strict);\n        // if we didn't find a month name, mark the date as invalid.\n        if (month != null) {\n            array[MONTH] = month;\n        } else {\n            getParsingFlags(config).invalidMonth = input;\n        }\n    });\n\n    // LOCALES\n\n    var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n            '_'\n        ),\n        defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split(\n            '_'\n        ),\n        MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n        defaultMonthsShortRegex = matchWord,\n        defaultMonthsRegex = matchWord;\n\n    function localeMonths(m, format) {\n        if (!m) {\n            return isArray(this._months)\n                ? this._months\n                : this._months['standalone'];\n        }\n        return isArray(this._months)\n            ? this._months[m.month()]\n            : this._months[\n                  (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n                      ? 'format'\n                      : 'standalone'\n              ][m.month()];\n    }\n\n    function localeMonthsShort(m, format) {\n        if (!m) {\n            return isArray(this._monthsShort)\n                ? this._monthsShort\n                : this._monthsShort['standalone'];\n        }\n        return isArray(this._monthsShort)\n            ? this._monthsShort[m.month()]\n            : this._monthsShort[\n                  MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n              ][m.month()];\n    }\n\n    function handleStrictParse(monthName, format, strict) {\n        var i,\n            ii,\n            mom,\n            llc = monthName.toLocaleLowerCase();\n        if (!this._monthsParse) {\n            // this is not used\n            this._monthsParse = [];\n            this._longMonthsParse = [];\n            this._shortMonthsParse = [];\n            for (i = 0; i < 12; ++i) {\n                mom = createUTC([2000, i]);\n                this._shortMonthsParse[i] = this.monthsShort(\n                    mom,\n                    ''\n                ).toLocaleLowerCase();\n                this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n            }\n        }\n\n        if (strict) {\n            if (format === 'MMM') {\n                ii = indexOf.call(this._shortMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._longMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        } else {\n            if (format === 'MMM') {\n                ii = indexOf.call(this._shortMonthsParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._longMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._longMonthsParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._shortMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        }\n    }\n\n    function localeMonthsParse(monthName, format, strict) {\n        var i, mom, regex;\n\n        if (this._monthsParseExact) {\n            return handleStrictParse.call(this, monthName, format, strict);\n        }\n\n        if (!this._monthsParse) {\n            this._monthsParse = [];\n            this._longMonthsParse = [];\n            this._shortMonthsParse = [];\n        }\n\n        // TODO: add sorting\n        // Sorting makes sure if one month (or abbr) is a prefix of another\n        // see sorting in computeMonthsParse\n        for (i = 0; i < 12; i++) {\n            // make the regex if we don't have it already\n            mom = createUTC([2000, i]);\n            if (strict && !this._longMonthsParse[i]) {\n                this._longMonthsParse[i] = new RegExp(\n                    '^' + this.months(mom, '').replace('.', '') + '$',\n                    'i'\n                );\n                this._shortMonthsParse[i] = new RegExp(\n                    '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n                    'i'\n                );\n            }\n            if (!strict && !this._monthsParse[i]) {\n                regex =\n                    '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n                this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n            }\n            // test the regex\n            if (\n                strict &&\n                format === 'MMMM' &&\n                this._longMonthsParse[i].test(monthName)\n            ) {\n                return i;\n            } else if (\n                strict &&\n                format === 'MMM' &&\n                this._shortMonthsParse[i].test(monthName)\n            ) {\n                return i;\n            } else if (!strict && this._monthsParse[i].test(monthName)) {\n                return i;\n            }\n        }\n    }\n\n    // MOMENTS\n\n    function setMonth(mom, value) {\n        var dayOfMonth;\n\n        if (!mom.isValid()) {\n            // No op\n            return mom;\n        }\n\n        if (typeof value === 'string') {\n            if (/^\\d+$/.test(value)) {\n                value = toInt(value);\n            } else {\n                value = mom.localeData().monthsParse(value);\n                // TODO: Another silent failure?\n                if (!isNumber(value)) {\n                    return mom;\n                }\n            }\n        }\n\n        dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n        mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n        return mom;\n    }\n\n    function getSetMonth(value) {\n        if (value != null) {\n            setMonth(this, value);\n            hooks.updateOffset(this, true);\n            return this;\n        } else {\n            return get(this, 'Month');\n        }\n    }\n\n    function getDaysInMonth() {\n        return daysInMonth(this.year(), this.month());\n    }\n\n    function monthsShortRegex(isStrict) {\n        if (this._monthsParseExact) {\n            if (!hasOwnProp(this, '_monthsRegex')) {\n                computeMonthsParse.call(this);\n            }\n            if (isStrict) {\n                return this._monthsShortStrictRegex;\n            } else {\n                return this._monthsShortRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_monthsShortRegex')) {\n                this._monthsShortRegex = defaultMonthsShortRegex;\n            }\n            return this._monthsShortStrictRegex && isStrict\n                ? this._monthsShortStrictRegex\n                : this._monthsShortRegex;\n        }\n    }\n\n    function monthsRegex(isStrict) {\n        if (this._monthsParseExact) {\n            if (!hasOwnProp(this, '_monthsRegex')) {\n                computeMonthsParse.call(this);\n            }\n            if (isStrict) {\n                return this._monthsStrictRegex;\n            } else {\n                return this._monthsRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_monthsRegex')) {\n                this._monthsRegex = defaultMonthsRegex;\n            }\n            return this._monthsStrictRegex && isStrict\n                ? this._monthsStrictRegex\n                : this._monthsRegex;\n        }\n    }\n\n    function computeMonthsParse() {\n        function cmpLenRev(a, b) {\n            return b.length - a.length;\n        }\n\n        var shortPieces = [],\n            longPieces = [],\n            mixedPieces = [],\n            i,\n            mom;\n        for (i = 0; i < 12; i++) {\n            // make the regex if we don't have it already\n            mom = createUTC([2000, i]);\n            shortPieces.push(this.monthsShort(mom, ''));\n            longPieces.push(this.months(mom, ''));\n            mixedPieces.push(this.months(mom, ''));\n            mixedPieces.push(this.monthsShort(mom, ''));\n        }\n        // Sorting makes sure if one month (or abbr) is a prefix of another it\n        // will match the longer piece.\n        shortPieces.sort(cmpLenRev);\n        longPieces.sort(cmpLenRev);\n        mixedPieces.sort(cmpLenRev);\n        for (i = 0; i < 12; i++) {\n            shortPieces[i] = regexEscape(shortPieces[i]);\n            longPieces[i] = regexEscape(longPieces[i]);\n        }\n        for (i = 0; i < 24; i++) {\n            mixedPieces[i] = regexEscape(mixedPieces[i]);\n        }\n\n        this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n        this._monthsShortRegex = this._monthsRegex;\n        this._monthsStrictRegex = new RegExp(\n            '^(' + longPieces.join('|') + ')',\n            'i'\n        );\n        this._monthsShortStrictRegex = new RegExp(\n            '^(' + shortPieces.join('|') + ')',\n            'i'\n        );\n    }\n\n    // FORMATTING\n\n    addFormatToken('Y', 0, 0, function () {\n        var y = this.year();\n        return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n    });\n\n    addFormatToken(0, ['YY', 2], 0, function () {\n        return this.year() % 100;\n    });\n\n    addFormatToken(0, ['YYYY', 4], 0, 'year');\n    addFormatToken(0, ['YYYYY', 5], 0, 'year');\n    addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n    // ALIASES\n\n    addUnitAlias('year', 'y');\n\n    // PRIORITIES\n\n    addUnitPriority('year', 1);\n\n    // PARSING\n\n    addRegexToken('Y', matchSigned);\n    addRegexToken('YY', match1to2, match2);\n    addRegexToken('YYYY', match1to4, match4);\n    addRegexToken('YYYYY', match1to6, match6);\n    addRegexToken('YYYYYY', match1to6, match6);\n\n    addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n    addParseToken('YYYY', function (input, array) {\n        array[YEAR] =\n            input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n    });\n    addParseToken('YY', function (input, array) {\n        array[YEAR] = hooks.parseTwoDigitYear(input);\n    });\n    addParseToken('Y', function (input, array) {\n        array[YEAR] = parseInt(input, 10);\n    });\n\n    // HELPERS\n\n    function daysInYear(year) {\n        return isLeapYear(year) ? 366 : 365;\n    }\n\n    // HOOKS\n\n    hooks.parseTwoDigitYear = function (input) {\n        return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n    };\n\n    // MOMENTS\n\n    var getSetYear = makeGetSet('FullYear', true);\n\n    function getIsLeapYear() {\n        return isLeapYear(this.year());\n    }\n\n    function createDate(y, m, d, h, M, s, ms) {\n        // can't just apply() to create a date:\n        // https://stackoverflow.com/q/181348\n        var date;\n        // the date constructor remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            // preserve leap years using a full 400 year cycle, then reset\n            date = new Date(y + 400, m, d, h, M, s, ms);\n            if (isFinite(date.getFullYear())) {\n                date.setFullYear(y);\n            }\n        } else {\n            date = new Date(y, m, d, h, M, s, ms);\n        }\n\n        return date;\n    }\n\n    function createUTCDate(y) {\n        var date, args;\n        // the Date.UTC function remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            args = Array.prototype.slice.call(arguments);\n            // preserve leap years using a full 400 year cycle, then reset\n            args[0] = y + 400;\n            date = new Date(Date.UTC.apply(null, args));\n            if (isFinite(date.getUTCFullYear())) {\n                date.setUTCFullYear(y);\n            }\n        } else {\n            date = new Date(Date.UTC.apply(null, arguments));\n        }\n\n        return date;\n    }\n\n    // start-of-first-week - start-of-year\n    function firstWeekOffset(year, dow, doy) {\n        var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n            fwd = 7 + dow - doy,\n            // first-week day local weekday -- which local weekday is fwd\n            fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n        return -fwdlw + fwd - 1;\n    }\n\n    // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n    function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n        var localWeekday = (7 + weekday - dow) % 7,\n            weekOffset = firstWeekOffset(year, dow, doy),\n            dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n            resYear,\n            resDayOfYear;\n\n        if (dayOfYear <= 0) {\n            resYear = year - 1;\n            resDayOfYear = daysInYear(resYear) + dayOfYear;\n        } else if (dayOfYear > daysInYear(year)) {\n            resYear = year + 1;\n            resDayOfYear = dayOfYear - daysInYear(year);\n        } else {\n            resYear = year;\n            resDayOfYear = dayOfYear;\n        }\n\n        return {\n            year: resYear,\n            dayOfYear: resDayOfYear,\n        };\n    }\n\n    function weekOfYear(mom, dow, doy) {\n        var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n            week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n            resWeek,\n            resYear;\n\n        if (week < 1) {\n            resYear = mom.year() - 1;\n            resWeek = week + weeksInYear(resYear, dow, doy);\n        } else if (week > weeksInYear(mom.year(), dow, doy)) {\n            resWeek = week - weeksInYear(mom.year(), dow, doy);\n            resYear = mom.year() + 1;\n        } else {\n            resYear = mom.year();\n            resWeek = week;\n        }\n\n        return {\n            week: resWeek,\n            year: resYear,\n        };\n    }\n\n    function weeksInYear(year, dow, doy) {\n        var weekOffset = firstWeekOffset(year, dow, doy),\n            weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n        return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n    }\n\n    // FORMATTING\n\n    addFormatToken('w', ['ww', 2], 'wo', 'week');\n    addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n    // ALIASES\n\n    addUnitAlias('week', 'w');\n    addUnitAlias('isoWeek', 'W');\n\n    // PRIORITIES\n\n    addUnitPriority('week', 5);\n    addUnitPriority('isoWeek', 5);\n\n    // PARSING\n\n    addRegexToken('w', match1to2);\n    addRegexToken('ww', match1to2, match2);\n    addRegexToken('W', match1to2);\n    addRegexToken('WW', match1to2, match2);\n\n    addWeekParseToken(['w', 'ww', 'W', 'WW'], function (\n        input,\n        week,\n        config,\n        token\n    ) {\n        week[token.substr(0, 1)] = toInt(input);\n    });\n\n    // HELPERS\n\n    // LOCALES\n\n    function localeWeek(mom) {\n        return weekOfYear(mom, this._week.dow, this._week.doy).week;\n    }\n\n    var defaultLocaleWeek = {\n        dow: 0, // Sunday is the first day of the week.\n        doy: 6, // The week that contains Jan 6th is the first week of the year.\n    };\n\n    function localeFirstDayOfWeek() {\n        return this._week.dow;\n    }\n\n    function localeFirstDayOfYear() {\n        return this._week.doy;\n    }\n\n    // MOMENTS\n\n    function getSetWeek(input) {\n        var week = this.localeData().week(this);\n        return input == null ? week : this.add((input - week) * 7, 'd');\n    }\n\n    function getSetISOWeek(input) {\n        var week = weekOfYear(this, 1, 4).week;\n        return input == null ? week : this.add((input - week) * 7, 'd');\n    }\n\n    // FORMATTING\n\n    addFormatToken('d', 0, 'do', 'day');\n\n    addFormatToken('dd', 0, 0, function (format) {\n        return this.localeData().weekdaysMin(this, format);\n    });\n\n    addFormatToken('ddd', 0, 0, function (format) {\n        return this.localeData().weekdaysShort(this, format);\n    });\n\n    addFormatToken('dddd', 0, 0, function (format) {\n        return this.localeData().weekdays(this, format);\n    });\n\n    addFormatToken('e', 0, 0, 'weekday');\n    addFormatToken('E', 0, 0, 'isoWeekday');\n\n    // ALIASES\n\n    addUnitAlias('day', 'd');\n    addUnitAlias('weekday', 'e');\n    addUnitAlias('isoWeekday', 'E');\n\n    // PRIORITY\n    addUnitPriority('day', 11);\n    addUnitPriority('weekday', 11);\n    addUnitPriority('isoWeekday', 11);\n\n    // PARSING\n\n    addRegexToken('d', match1to2);\n    addRegexToken('e', match1to2);\n    addRegexToken('E', match1to2);\n    addRegexToken('dd', function (isStrict, locale) {\n        return locale.weekdaysMinRegex(isStrict);\n    });\n    addRegexToken('ddd', function (isStrict, locale) {\n        return locale.weekdaysShortRegex(isStrict);\n    });\n    addRegexToken('dddd', function (isStrict, locale) {\n        return locale.weekdaysRegex(isStrict);\n    });\n\n    addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n        var weekday = config._locale.weekdaysParse(input, token, config._strict);\n        // if we didn't get a weekday name, mark the date as invalid\n        if (weekday != null) {\n            week.d = weekday;\n        } else {\n            getParsingFlags(config).invalidWeekday = input;\n        }\n    });\n\n    addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n        week[token] = toInt(input);\n    });\n\n    // HELPERS\n\n    function parseWeekday(input, locale) {\n        if (typeof input !== 'string') {\n            return input;\n        }\n\n        if (!isNaN(input)) {\n            return parseInt(input, 10);\n        }\n\n        input = locale.weekdaysParse(input);\n        if (typeof input === 'number') {\n            return input;\n        }\n\n        return null;\n    }\n\n    function parseIsoWeekday(input, locale) {\n        if (typeof input === 'string') {\n            return locale.weekdaysParse(input) % 7 || 7;\n        }\n        return isNaN(input) ? null : input;\n    }\n\n    // LOCALES\n    function shiftWeekdays(ws, n) {\n        return ws.slice(n, 7).concat(ws.slice(0, n));\n    }\n\n    var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n            '_'\n        ),\n        defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        defaultWeekdaysRegex = matchWord,\n        defaultWeekdaysShortRegex = matchWord,\n        defaultWeekdaysMinRegex = matchWord;\n\n    function localeWeekdays(m, format) {\n        var weekdays = isArray(this._weekdays)\n            ? this._weekdays\n            : this._weekdays[\n                  m && m !== true && this._weekdays.isFormat.test(format)\n                      ? 'format'\n                      : 'standalone'\n              ];\n        return m === true\n            ? shiftWeekdays(weekdays, this._week.dow)\n            : m\n            ? weekdays[m.day()]\n            : weekdays;\n    }\n\n    function localeWeekdaysShort(m) {\n        return m === true\n            ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n            : m\n            ? this._weekdaysShort[m.day()]\n            : this._weekdaysShort;\n    }\n\n    function localeWeekdaysMin(m) {\n        return m === true\n            ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n            : m\n            ? this._weekdaysMin[m.day()]\n            : this._weekdaysMin;\n    }\n\n    function handleStrictParse$1(weekdayName, format, strict) {\n        var i,\n            ii,\n            mom,\n            llc = weekdayName.toLocaleLowerCase();\n        if (!this._weekdaysParse) {\n            this._weekdaysParse = [];\n            this._shortWeekdaysParse = [];\n            this._minWeekdaysParse = [];\n\n            for (i = 0; i < 7; ++i) {\n                mom = createUTC([2000, 1]).day(i);\n                this._minWeekdaysParse[i] = this.weekdaysMin(\n                    mom,\n                    ''\n                ).toLocaleLowerCase();\n                this._shortWeekdaysParse[i] = this.weekdaysShort(\n                    mom,\n                    ''\n                ).toLocaleLowerCase();\n                this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n            }\n        }\n\n        if (strict) {\n            if (format === 'dddd') {\n                ii = indexOf.call(this._weekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else if (format === 'ddd') {\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        } else {\n            if (format === 'dddd') {\n                ii = indexOf.call(this._weekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else if (format === 'ddd') {\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._weekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._weekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        }\n    }\n\n    function localeWeekdaysParse(weekdayName, format, strict) {\n        var i, mom, regex;\n\n        if (this._weekdaysParseExact) {\n            return handleStrictParse$1.call(this, weekdayName, format, strict);\n        }\n\n        if (!this._weekdaysParse) {\n            this._weekdaysParse = [];\n            this._minWeekdaysParse = [];\n            this._shortWeekdaysParse = [];\n            this._fullWeekdaysParse = [];\n        }\n\n        for (i = 0; i < 7; i++) {\n            // make the regex if we don't have it already\n\n            mom = createUTC([2000, 1]).day(i);\n            if (strict && !this._fullWeekdaysParse[i]) {\n                this._fullWeekdaysParse[i] = new RegExp(\n                    '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n                    'i'\n                );\n                this._shortWeekdaysParse[i] = new RegExp(\n                    '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n                    'i'\n                );\n                this._minWeekdaysParse[i] = new RegExp(\n                    '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n                    'i'\n                );\n            }\n            if (!this._weekdaysParse[i]) {\n                regex =\n                    '^' +\n                    this.weekdays(mom, '') +\n                    '|^' +\n                    this.weekdaysShort(mom, '') +\n                    '|^' +\n                    this.weekdaysMin(mom, '');\n                this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n            }\n            // test the regex\n            if (\n                strict &&\n                format === 'dddd' &&\n                this._fullWeekdaysParse[i].test(weekdayName)\n            ) {\n                return i;\n            } else if (\n                strict &&\n                format === 'ddd' &&\n                this._shortWeekdaysParse[i].test(weekdayName)\n            ) {\n                return i;\n            } else if (\n                strict &&\n                format === 'dd' &&\n                this._minWeekdaysParse[i].test(weekdayName)\n            ) {\n                return i;\n            } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n                return i;\n            }\n        }\n    }\n\n    // MOMENTS\n\n    function getSetDayOfWeek(input) {\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n        var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n        if (input != null) {\n            input = parseWeekday(input, this.localeData());\n            return this.add(input - day, 'd');\n        } else {\n            return day;\n        }\n    }\n\n    function getSetLocaleDayOfWeek(input) {\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n        var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n        return input == null ? weekday : this.add(input - weekday, 'd');\n    }\n\n    function getSetISODayOfWeek(input) {\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n\n        // behaves the same as moment#day except\n        // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n        // as a setter, sunday should belong to the previous week.\n\n        if (input != null) {\n            var weekday = parseIsoWeekday(input, this.localeData());\n            return this.day(this.day() % 7 ? weekday : weekday - 7);\n        } else {\n            return this.day() || 7;\n        }\n    }\n\n    function weekdaysRegex(isStrict) {\n        if (this._weekdaysParseExact) {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                computeWeekdaysParse.call(this);\n            }\n            if (isStrict) {\n                return this._weekdaysStrictRegex;\n            } else {\n                return this._weekdaysRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                this._weekdaysRegex = defaultWeekdaysRegex;\n            }\n            return this._weekdaysStrictRegex && isStrict\n                ? this._weekdaysStrictRegex\n                : this._weekdaysRegex;\n        }\n    }\n\n    function weekdaysShortRegex(isStrict) {\n        if (this._weekdaysParseExact) {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                computeWeekdaysParse.call(this);\n            }\n            if (isStrict) {\n                return this._weekdaysShortStrictRegex;\n            } else {\n                return this._weekdaysShortRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n                this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n            }\n            return this._weekdaysShortStrictRegex && isStrict\n                ? this._weekdaysShortStrictRegex\n                : this._weekdaysShortRegex;\n        }\n    }\n\n    function weekdaysMinRegex(isStrict) {\n        if (this._weekdaysParseExact) {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                computeWeekdaysParse.call(this);\n            }\n            if (isStrict) {\n                return this._weekdaysMinStrictRegex;\n            } else {\n                return this._weekdaysMinRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n                this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n            }\n            return this._weekdaysMinStrictRegex && isStrict\n                ? this._weekdaysMinStrictRegex\n                : this._weekdaysMinRegex;\n        }\n    }\n\n    function computeWeekdaysParse() {\n        function cmpLenRev(a, b) {\n            return b.length - a.length;\n        }\n\n        var minPieces = [],\n            shortPieces = [],\n            longPieces = [],\n            mixedPieces = [],\n            i,\n            mom,\n            minp,\n            shortp,\n            longp;\n        for (i = 0; i < 7; i++) {\n            // make the regex if we don't have it already\n            mom = createUTC([2000, 1]).day(i);\n            minp = regexEscape(this.weekdaysMin(mom, ''));\n            shortp = regexEscape(this.weekdaysShort(mom, ''));\n            longp = regexEscape(this.weekdays(mom, ''));\n            minPieces.push(minp);\n            shortPieces.push(shortp);\n            longPieces.push(longp);\n            mixedPieces.push(minp);\n            mixedPieces.push(shortp);\n            mixedPieces.push(longp);\n        }\n        // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n        // will match the longer piece.\n        minPieces.sort(cmpLenRev);\n        shortPieces.sort(cmpLenRev);\n        longPieces.sort(cmpLenRev);\n        mixedPieces.sort(cmpLenRev);\n\n        this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n        this._weekdaysShortRegex = this._weekdaysRegex;\n        this._weekdaysMinRegex = this._weekdaysRegex;\n\n        this._weekdaysStrictRegex = new RegExp(\n            '^(' + longPieces.join('|') + ')',\n            'i'\n        );\n        this._weekdaysShortStrictRegex = new RegExp(\n            '^(' + shortPieces.join('|') + ')',\n            'i'\n        );\n        this._weekdaysMinStrictRegex = new RegExp(\n            '^(' + minPieces.join('|') + ')',\n            'i'\n        );\n    }\n\n    // FORMATTING\n\n    function hFormat() {\n        return this.hours() % 12 || 12;\n    }\n\n    function kFormat() {\n        return this.hours() || 24;\n    }\n\n    addFormatToken('H', ['HH', 2], 0, 'hour');\n    addFormatToken('h', ['hh', 2], 0, hFormat);\n    addFormatToken('k', ['kk', 2], 0, kFormat);\n\n    addFormatToken('hmm', 0, 0, function () {\n        return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n    });\n\n    addFormatToken('hmmss', 0, 0, function () {\n        return (\n            '' +\n            hFormat.apply(this) +\n            zeroFill(this.minutes(), 2) +\n            zeroFill(this.seconds(), 2)\n        );\n    });\n\n    addFormatToken('Hmm', 0, 0, function () {\n        return '' + this.hours() + zeroFill(this.minutes(), 2);\n    });\n\n    addFormatToken('Hmmss', 0, 0, function () {\n        return (\n            '' +\n            this.hours() +\n            zeroFill(this.minutes(), 2) +\n            zeroFill(this.seconds(), 2)\n        );\n    });\n\n    function meridiem(token, lowercase) {\n        addFormatToken(token, 0, 0, function () {\n            return this.localeData().meridiem(\n                this.hours(),\n                this.minutes(),\n                lowercase\n            );\n        });\n    }\n\n    meridiem('a', true);\n    meridiem('A', false);\n\n    // ALIASES\n\n    addUnitAlias('hour', 'h');\n\n    // PRIORITY\n    addUnitPriority('hour', 13);\n\n    // PARSING\n\n    function matchMeridiem(isStrict, locale) {\n        return locale._meridiemParse;\n    }\n\n    addRegexToken('a', matchMeridiem);\n    addRegexToken('A', matchMeridiem);\n    addRegexToken('H', match1to2);\n    addRegexToken('h', match1to2);\n    addRegexToken('k', match1to2);\n    addRegexToken('HH', match1to2, match2);\n    addRegexToken('hh', match1to2, match2);\n    addRegexToken('kk', match1to2, match2);\n\n    addRegexToken('hmm', match3to4);\n    addRegexToken('hmmss', match5to6);\n    addRegexToken('Hmm', match3to4);\n    addRegexToken('Hmmss', match5to6);\n\n    addParseToken(['H', 'HH'], HOUR);\n    addParseToken(['k', 'kk'], function (input, array, config) {\n        var kInput = toInt(input);\n        array[HOUR] = kInput === 24 ? 0 : kInput;\n    });\n    addParseToken(['a', 'A'], function (input, array, config) {\n        config._isPm = config._locale.isPM(input);\n        config._meridiem = input;\n    });\n    addParseToken(['h', 'hh'], function (input, array, config) {\n        array[HOUR] = toInt(input);\n        getParsingFlags(config).bigHour = true;\n    });\n    addParseToken('hmm', function (input, array, config) {\n        var pos = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos));\n        array[MINUTE] = toInt(input.substr(pos));\n        getParsingFlags(config).bigHour = true;\n    });\n    addParseToken('hmmss', function (input, array, config) {\n        var pos1 = input.length - 4,\n            pos2 = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos1));\n        array[MINUTE] = toInt(input.substr(pos1, 2));\n        array[SECOND] = toInt(input.substr(pos2));\n        getParsingFlags(config).bigHour = true;\n    });\n    addParseToken('Hmm', function (input, array, config) {\n        var pos = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos));\n        array[MINUTE] = toInt(input.substr(pos));\n    });\n    addParseToken('Hmmss', function (input, array, config) {\n        var pos1 = input.length - 4,\n            pos2 = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos1));\n        array[MINUTE] = toInt(input.substr(pos1, 2));\n        array[SECOND] = toInt(input.substr(pos2));\n    });\n\n    // LOCALES\n\n    function localeIsPM(input) {\n        // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n        // Using charAt should be more compatible.\n        return (input + '').toLowerCase().charAt(0) === 'p';\n    }\n\n    var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n        // Setting the hour should keep the time, because the user explicitly\n        // specified which hour they want. So trying to maintain the same hour (in\n        // a new timezone) makes sense. Adding/subtracting hours does not follow\n        // this rule.\n        getSetHour = makeGetSet('Hours', true);\n\n    function localeMeridiem(hours, minutes, isLower) {\n        if (hours > 11) {\n            return isLower ? 'pm' : 'PM';\n        } else {\n            return isLower ? 'am' : 'AM';\n        }\n    }\n\n    var baseConfig = {\n        calendar: defaultCalendar,\n        longDateFormat: defaultLongDateFormat,\n        invalidDate: defaultInvalidDate,\n        ordinal: defaultOrdinal,\n        dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n        relativeTime: defaultRelativeTime,\n\n        months: defaultLocaleMonths,\n        monthsShort: defaultLocaleMonthsShort,\n\n        week: defaultLocaleWeek,\n\n        weekdays: defaultLocaleWeekdays,\n        weekdaysMin: defaultLocaleWeekdaysMin,\n        weekdaysShort: defaultLocaleWeekdaysShort,\n\n        meridiemParse: defaultLocaleMeridiemParse,\n    };\n\n    // internal storage for locale config files\n    var locales = {},\n        localeFamilies = {},\n        globalLocale;\n\n    function commonPrefix(arr1, arr2) {\n        var i,\n            minl = Math.min(arr1.length, arr2.length);\n        for (i = 0; i < minl; i += 1) {\n            if (arr1[i] !== arr2[i]) {\n                return i;\n            }\n        }\n        return minl;\n    }\n\n    function normalizeLocale(key) {\n        return key ? key.toLowerCase().replace('_', '-') : key;\n    }\n\n    // pick the locale from the array\n    // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n    // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n    function chooseLocale(names) {\n        var i = 0,\n            j,\n            next,\n            locale,\n            split;\n\n        while (i < names.length) {\n            split = normalizeLocale(names[i]).split('-');\n            j = split.length;\n            next = normalizeLocale(names[i + 1]);\n            next = next ? next.split('-') : null;\n            while (j > 0) {\n                locale = loadLocale(split.slice(0, j).join('-'));\n                if (locale) {\n                    return locale;\n                }\n                if (\n                    next &&\n                    next.length >= j &&\n                    commonPrefix(split, next) >= j - 1\n                ) {\n                    //the next array item is better than a shallower substring of this one\n                    break;\n                }\n                j--;\n            }\n            i++;\n        }\n        return globalLocale;\n    }\n\n    function loadLocale(name) {\n        var oldLocale = null,\n            aliasedRequire;\n        // TODO: Find a better way to register and load all the locales in Node\n        if (\n            locales[name] === undefined &&\n            typeof module !== 'undefined' &&\n            module &&\n            module.exports\n        ) {\n            try {\n                oldLocale = globalLocale._abbr;\n                aliasedRequire = require;\n                aliasedRequire('./locale/' + name);\n                getSetGlobalLocale(oldLocale);\n            } catch (e) {\n                // mark as not found to avoid repeating expensive file require call causing high CPU\n                // when trying to find en-US, en_US, en-us for every format call\n                locales[name] = null; // null means not found\n            }\n        }\n        return locales[name];\n    }\n\n    // This function will load locale and then set the global locale.  If\n    // no arguments are passed in, it will simply return the current global\n    // locale key.\n    function getSetGlobalLocale(key, values) {\n        var data;\n        if (key) {\n            if (isUndefined(values)) {\n                data = getLocale(key);\n            } else {\n                data = defineLocale(key, values);\n            }\n\n            if (data) {\n                // moment.duration._locale = moment._locale = data;\n                globalLocale = data;\n            } else {\n                if (typeof console !== 'undefined' && console.warn) {\n                    //warn user if arguments are passed but the locale could not be set\n                    console.warn(\n                        'Locale ' + key + ' not found. Did you forget to load it?'\n                    );\n                }\n            }\n        }\n\n        return globalLocale._abbr;\n    }\n\n    function defineLocale(name, config) {\n        if (config !== null) {\n            var locale,\n                parentConfig = baseConfig;\n            config.abbr = name;\n            if (locales[name] != null) {\n                deprecateSimple(\n                    'defineLocaleOverride',\n                    'use moment.updateLocale(localeName, config) to change ' +\n                        'an existing locale. moment.defineLocale(localeName, ' +\n                        'config) should only be used for creating a new locale ' +\n                        'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n                );\n                parentConfig = locales[name]._config;\n            } else if (config.parentLocale != null) {\n                if (locales[config.parentLocale] != null) {\n                    parentConfig = locales[config.parentLocale]._config;\n                } else {\n                    locale = loadLocale(config.parentLocale);\n                    if (locale != null) {\n                        parentConfig = locale._config;\n                    } else {\n                        if (!localeFamilies[config.parentLocale]) {\n                            localeFamilies[config.parentLocale] = [];\n                        }\n                        localeFamilies[config.parentLocale].push({\n                            name: name,\n                            config: config,\n                        });\n                        return null;\n                    }\n                }\n            }\n            locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n            if (localeFamilies[name]) {\n                localeFamilies[name].forEach(function (x) {\n                    defineLocale(x.name, x.config);\n                });\n            }\n\n            // backwards compat for now: also set the locale\n            // make sure we set the locale AFTER all child locales have been\n            // created, so we won't end up with the child locale set.\n            getSetGlobalLocale(name);\n\n            return locales[name];\n        } else {\n            // useful for testing\n            delete locales[name];\n            return null;\n        }\n    }\n\n    function updateLocale(name, config) {\n        if (config != null) {\n            var locale,\n                tmpLocale,\n                parentConfig = baseConfig;\n\n            if (locales[name] != null && locales[name].parentLocale != null) {\n                // Update existing child locale in-place to avoid memory-leaks\n                locales[name].set(mergeConfigs(locales[name]._config, config));\n            } else {\n                // MERGE\n                tmpLocale = loadLocale(name);\n                if (tmpLocale != null) {\n                    parentConfig = tmpLocale._config;\n                }\n                config = mergeConfigs(parentConfig, config);\n                if (tmpLocale == null) {\n                    // updateLocale is called for creating a new locale\n                    // Set abbr so it will have a name (getters return\n                    // undefined otherwise).\n                    config.abbr = name;\n                }\n                locale = new Locale(config);\n                locale.parentLocale = locales[name];\n                locales[name] = locale;\n            }\n\n            // backwards compat for now: also set the locale\n            getSetGlobalLocale(name);\n        } else {\n            // pass null for config to unupdate, useful for tests\n            if (locales[name] != null) {\n                if (locales[name].parentLocale != null) {\n                    locales[name] = locales[name].parentLocale;\n                    if (name === getSetGlobalLocale()) {\n                        getSetGlobalLocale(name);\n                    }\n                } else if (locales[name] != null) {\n                    delete locales[name];\n                }\n            }\n        }\n        return locales[name];\n    }\n\n    // returns locale data\n    function getLocale(key) {\n        var locale;\n\n        if (key && key._locale && key._locale._abbr) {\n            key = key._locale._abbr;\n        }\n\n        if (!key) {\n            return globalLocale;\n        }\n\n        if (!isArray(key)) {\n            //short-circuit everything else\n            locale = loadLocale(key);\n            if (locale) {\n                return locale;\n            }\n            key = [key];\n        }\n\n        return chooseLocale(key);\n    }\n\n    function listLocales() {\n        return keys(locales);\n    }\n\n    function checkOverflow(m) {\n        var overflow,\n            a = m._a;\n\n        if (a && getParsingFlags(m).overflow === -2) {\n            overflow =\n                a[MONTH] < 0 || a[MONTH] > 11\n                    ? MONTH\n                    : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n                    ? DATE\n                    : a[HOUR] < 0 ||\n                      a[HOUR] > 24 ||\n                      (a[HOUR] === 24 &&\n                          (a[MINUTE] !== 0 ||\n                              a[SECOND] !== 0 ||\n                              a[MILLISECOND] !== 0))\n                    ? HOUR\n                    : a[MINUTE] < 0 || a[MINUTE] > 59\n                    ? MINUTE\n                    : a[SECOND] < 0 || a[SECOND] > 59\n                    ? SECOND\n                    : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n                    ? MILLISECOND\n                    : -1;\n\n            if (\n                getParsingFlags(m)._overflowDayOfYear &&\n                (overflow < YEAR || overflow > DATE)\n            ) {\n                overflow = DATE;\n            }\n            if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n                overflow = WEEK;\n            }\n            if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n                overflow = WEEKDAY;\n            }\n\n            getParsingFlags(m).overflow = overflow;\n        }\n\n        return m;\n    }\n\n    // iso 8601 regex\n    // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n    var extendedIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n        basicIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n        tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n        isoDates = [\n            ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n            ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n            ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n            ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n            ['YYYY-DDD', /\\d{4}-\\d{3}/],\n            ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n            ['YYYYYYMMDD', /[+-]\\d{10}/],\n            ['YYYYMMDD', /\\d{8}/],\n            ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n            ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n            ['YYYYDDD', /\\d{7}/],\n            ['YYYYMM', /\\d{6}/, false],\n            ['YYYY', /\\d{4}/, false],\n        ],\n        // iso time formats and regexes\n        isoTimes = [\n            ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n            ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n            ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n            ['HH:mm', /\\d\\d:\\d\\d/],\n            ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n            ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n            ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n            ['HHmm', /\\d\\d\\d\\d/],\n            ['HH', /\\d\\d/],\n        ],\n        aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n        // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n        rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n        obsOffsets = {\n            UT: 0,\n            GMT: 0,\n            EDT: -4 * 60,\n            EST: -5 * 60,\n            CDT: -5 * 60,\n            CST: -6 * 60,\n            MDT: -6 * 60,\n            MST: -7 * 60,\n            PDT: -7 * 60,\n            PST: -8 * 60,\n        };\n\n    // date from iso format\n    function configFromISO(config) {\n        var i,\n            l,\n            string = config._i,\n            match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n            allowTime,\n            dateFormat,\n            timeFormat,\n            tzFormat;\n\n        if (match) {\n            getParsingFlags(config).iso = true;\n\n            for (i = 0, l = isoDates.length; i < l; i++) {\n                if (isoDates[i][1].exec(match[1])) {\n                    dateFormat = isoDates[i][0];\n                    allowTime = isoDates[i][2] !== false;\n                    break;\n                }\n            }\n            if (dateFormat == null) {\n                config._isValid = false;\n                return;\n            }\n            if (match[3]) {\n                for (i = 0, l = isoTimes.length; i < l; i++) {\n                    if (isoTimes[i][1].exec(match[3])) {\n                        // match[2] should be 'T' or space\n                        timeFormat = (match[2] || ' ') + isoTimes[i][0];\n                        break;\n                    }\n                }\n                if (timeFormat == null) {\n                    config._isValid = false;\n                    return;\n                }\n            }\n            if (!allowTime && timeFormat != null) {\n                config._isValid = false;\n                return;\n            }\n            if (match[4]) {\n                if (tzRegex.exec(match[4])) {\n                    tzFormat = 'Z';\n                } else {\n                    config._isValid = false;\n                    return;\n                }\n            }\n            config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n            configFromStringAndFormat(config);\n        } else {\n            config._isValid = false;\n        }\n    }\n\n    function extractFromRFC2822Strings(\n        yearStr,\n        monthStr,\n        dayStr,\n        hourStr,\n        minuteStr,\n        secondStr\n    ) {\n        var result = [\n            untruncateYear(yearStr),\n            defaultLocaleMonthsShort.indexOf(monthStr),\n            parseInt(dayStr, 10),\n            parseInt(hourStr, 10),\n            parseInt(minuteStr, 10),\n        ];\n\n        if (secondStr) {\n            result.push(parseInt(secondStr, 10));\n        }\n\n        return result;\n    }\n\n    function untruncateYear(yearStr) {\n        var year = parseInt(yearStr, 10);\n        if (year <= 49) {\n            return 2000 + year;\n        } else if (year <= 999) {\n            return 1900 + year;\n        }\n        return year;\n    }\n\n    function preprocessRFC2822(s) {\n        // Remove comments and folding whitespace and replace multiple-spaces with a single space\n        return s\n            .replace(/\\([^)]*\\)|[\\n\\t]/g, ' ')\n            .replace(/(\\s\\s+)/g, ' ')\n            .replace(/^\\s\\s*/, '')\n            .replace(/\\s\\s*$/, '');\n    }\n\n    function checkWeekday(weekdayStr, parsedInput, config) {\n        if (weekdayStr) {\n            // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n            var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n                weekdayActual = new Date(\n                    parsedInput[0],\n                    parsedInput[1],\n                    parsedInput[2]\n                ).getDay();\n            if (weekdayProvided !== weekdayActual) {\n                getParsingFlags(config).weekdayMismatch = true;\n                config._isValid = false;\n                return false;\n            }\n        }\n        return true;\n    }\n\n    function calculateOffset(obsOffset, militaryOffset, numOffset) {\n        if (obsOffset) {\n            return obsOffsets[obsOffset];\n        } else if (militaryOffset) {\n            // the only allowed military tz is Z\n            return 0;\n        } else {\n            var hm = parseInt(numOffset, 10),\n                m = hm % 100,\n                h = (hm - m) / 100;\n            return h * 60 + m;\n        }\n    }\n\n    // date and time from ref 2822 format\n    function configFromRFC2822(config) {\n        var match = rfc2822.exec(preprocessRFC2822(config._i)),\n            parsedArray;\n        if (match) {\n            parsedArray = extractFromRFC2822Strings(\n                match[4],\n                match[3],\n                match[2],\n                match[5],\n                match[6],\n                match[7]\n            );\n            if (!checkWeekday(match[1], parsedArray, config)) {\n                return;\n            }\n\n            config._a = parsedArray;\n            config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n            config._d = createUTCDate.apply(null, config._a);\n            config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n            getParsingFlags(config).rfc2822 = true;\n        } else {\n            config._isValid = false;\n        }\n    }\n\n    // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n    function configFromString(config) {\n        var matched = aspNetJsonRegex.exec(config._i);\n        if (matched !== null) {\n            config._d = new Date(+matched[1]);\n            return;\n        }\n\n        configFromISO(config);\n        if (config._isValid === false) {\n            delete config._isValid;\n        } else {\n            return;\n        }\n\n        configFromRFC2822(config);\n        if (config._isValid === false) {\n            delete config._isValid;\n        } else {\n            return;\n        }\n\n        if (config._strict) {\n            config._isValid = false;\n        } else {\n            // Final attempt, use Input Fallback\n            hooks.createFromInputFallback(config);\n        }\n    }\n\n    hooks.createFromInputFallback = deprecate(\n        'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n            'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n            'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n        function (config) {\n            config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n        }\n    );\n\n    // Pick the first defined of two or three arguments.\n    function defaults(a, b, c) {\n        if (a != null) {\n            return a;\n        }\n        if (b != null) {\n            return b;\n        }\n        return c;\n    }\n\n    function currentDateArray(config) {\n        // hooks is actually the exported moment object\n        var nowValue = new Date(hooks.now());\n        if (config._useUTC) {\n            return [\n                nowValue.getUTCFullYear(),\n                nowValue.getUTCMonth(),\n                nowValue.getUTCDate(),\n            ];\n        }\n        return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n    }\n\n    // convert an array to a date.\n    // the array should mirror the parameters below\n    // note: all values past the year are optional and will default to the lowest possible value.\n    // [year, month, day , hour, minute, second, millisecond]\n    function configFromArray(config) {\n        var i,\n            date,\n            input = [],\n            currentDate,\n            expectedWeekday,\n            yearToUse;\n\n        if (config._d) {\n            return;\n        }\n\n        currentDate = currentDateArray(config);\n\n        //compute day of the year from weeks and weekdays\n        if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n            dayOfYearFromWeekInfo(config);\n        }\n\n        //if the day of the year is set, figure out what it is\n        if (config._dayOfYear != null) {\n            yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n            if (\n                config._dayOfYear > daysInYear(yearToUse) ||\n                config._dayOfYear === 0\n            ) {\n                getParsingFlags(config)._overflowDayOfYear = true;\n            }\n\n            date = createUTCDate(yearToUse, 0, config._dayOfYear);\n            config._a[MONTH] = date.getUTCMonth();\n            config._a[DATE] = date.getUTCDate();\n        }\n\n        // Default to current date.\n        // * if no year, month, day of month are given, default to today\n        // * if day of month is given, default month and year\n        // * if month is given, default only year\n        // * if year is given, don't default anything\n        for (i = 0; i < 3 && config._a[i] == null; ++i) {\n            config._a[i] = input[i] = currentDate[i];\n        }\n\n        // Zero out whatever was not defaulted, including time\n        for (; i < 7; i++) {\n            config._a[i] = input[i] =\n                config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n        }\n\n        // Check for 24:00:00.000\n        if (\n            config._a[HOUR] === 24 &&\n            config._a[MINUTE] === 0 &&\n            config._a[SECOND] === 0 &&\n            config._a[MILLISECOND] === 0\n        ) {\n            config._nextDay = true;\n            config._a[HOUR] = 0;\n        }\n\n        config._d = (config._useUTC ? createUTCDate : createDate).apply(\n            null,\n            input\n        );\n        expectedWeekday = config._useUTC\n            ? config._d.getUTCDay()\n            : config._d.getDay();\n\n        // Apply timezone offset from input. The actual utcOffset can be changed\n        // with parseZone.\n        if (config._tzm != null) {\n            config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n        }\n\n        if (config._nextDay) {\n            config._a[HOUR] = 24;\n        }\n\n        // check for mismatching day of week\n        if (\n            config._w &&\n            typeof config._w.d !== 'undefined' &&\n            config._w.d !== expectedWeekday\n        ) {\n            getParsingFlags(config).weekdayMismatch = true;\n        }\n    }\n\n    function dayOfYearFromWeekInfo(config) {\n        var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n        w = config._w;\n        if (w.GG != null || w.W != null || w.E != null) {\n            dow = 1;\n            doy = 4;\n\n            // TODO: We need to take the current isoWeekYear, but that depends on\n            // how we interpret now (local, utc, fixed offset). So create\n            // a now version of current config (take local/utc/offset flags, and\n            // create now).\n            weekYear = defaults(\n                w.GG,\n                config._a[YEAR],\n                weekOfYear(createLocal(), 1, 4).year\n            );\n            week = defaults(w.W, 1);\n            weekday = defaults(w.E, 1);\n            if (weekday < 1 || weekday > 7) {\n                weekdayOverflow = true;\n            }\n        } else {\n            dow = config._locale._week.dow;\n            doy = config._locale._week.doy;\n\n            curWeek = weekOfYear(createLocal(), dow, doy);\n\n            weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n            // Default to current week.\n            week = defaults(w.w, curWeek.week);\n\n            if (w.d != null) {\n                // weekday -- low day numbers are considered next week\n                weekday = w.d;\n                if (weekday < 0 || weekday > 6) {\n                    weekdayOverflow = true;\n                }\n            } else if (w.e != null) {\n                // local weekday -- counting starts from beginning of week\n                weekday = w.e + dow;\n                if (w.e < 0 || w.e > 6) {\n                    weekdayOverflow = true;\n                }\n            } else {\n                // default to beginning of week\n                weekday = dow;\n            }\n        }\n        if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n            getParsingFlags(config)._overflowWeeks = true;\n        } else if (weekdayOverflow != null) {\n            getParsingFlags(config)._overflowWeekday = true;\n        } else {\n            temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n            config._a[YEAR] = temp.year;\n            config._dayOfYear = temp.dayOfYear;\n        }\n    }\n\n    // constant that refers to the ISO standard\n    hooks.ISO_8601 = function () {};\n\n    // constant that refers to the RFC 2822 form\n    hooks.RFC_2822 = function () {};\n\n    // date from string and format string\n    function configFromStringAndFormat(config) {\n        // TODO: Move this to another part of the creation flow to prevent circular deps\n        if (config._f === hooks.ISO_8601) {\n            configFromISO(config);\n            return;\n        }\n        if (config._f === hooks.RFC_2822) {\n            configFromRFC2822(config);\n            return;\n        }\n        config._a = [];\n        getParsingFlags(config).empty = true;\n\n        // This array is used to make a Date, either with `new Date` or `Date.UTC`\n        var string = '' + config._i,\n            i,\n            parsedInput,\n            tokens,\n            token,\n            skipped,\n            stringLength = string.length,\n            totalParsedInputLength = 0,\n            era;\n\n        tokens =\n            expandFormat(config._f, config._locale).match(formattingTokens) || [];\n\n        for (i = 0; i < tokens.length; i++) {\n            token = tokens[i];\n            parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n                [])[0];\n            if (parsedInput) {\n                skipped = string.substr(0, string.indexOf(parsedInput));\n                if (skipped.length > 0) {\n                    getParsingFlags(config).unusedInput.push(skipped);\n                }\n                string = string.slice(\n                    string.indexOf(parsedInput) + parsedInput.length\n                );\n                totalParsedInputLength += parsedInput.length;\n            }\n            // don't parse if it's not a known token\n            if (formatTokenFunctions[token]) {\n                if (parsedInput) {\n                    getParsingFlags(config).empty = false;\n                } else {\n                    getParsingFlags(config).unusedTokens.push(token);\n                }\n                addTimeToArrayFromToken(token, parsedInput, config);\n            } else if (config._strict && !parsedInput) {\n                getParsingFlags(config).unusedTokens.push(token);\n            }\n        }\n\n        // add remaining unparsed input length to the string\n        getParsingFlags(config).charsLeftOver =\n            stringLength - totalParsedInputLength;\n        if (string.length > 0) {\n            getParsingFlags(config).unusedInput.push(string);\n        }\n\n        // clear _12h flag if hour is <= 12\n        if (\n            config._a[HOUR] <= 12 &&\n            getParsingFlags(config).bigHour === true &&\n            config._a[HOUR] > 0\n        ) {\n            getParsingFlags(config).bigHour = undefined;\n        }\n\n        getParsingFlags(config).parsedDateParts = config._a.slice(0);\n        getParsingFlags(config).meridiem = config._meridiem;\n        // handle meridiem\n        config._a[HOUR] = meridiemFixWrap(\n            config._locale,\n            config._a[HOUR],\n            config._meridiem\n        );\n\n        // handle era\n        era = getParsingFlags(config).era;\n        if (era !== null) {\n            config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n        }\n\n        configFromArray(config);\n        checkOverflow(config);\n    }\n\n    function meridiemFixWrap(locale, hour, meridiem) {\n        var isPm;\n\n        if (meridiem == null) {\n            // nothing to do\n            return hour;\n        }\n        if (locale.meridiemHour != null) {\n            return locale.meridiemHour(hour, meridiem);\n        } else if (locale.isPM != null) {\n            // Fallback\n            isPm = locale.isPM(meridiem);\n            if (isPm && hour < 12) {\n                hour += 12;\n            }\n            if (!isPm && hour === 12) {\n                hour = 0;\n            }\n            return hour;\n        } else {\n            // this is not supposed to happen\n            return hour;\n        }\n    }\n\n    // date from string and array of format strings\n    function configFromStringAndArray(config) {\n        var tempConfig,\n            bestMoment,\n            scoreToBeat,\n            i,\n            currentScore,\n            validFormatFound,\n            bestFormatIsValid = false;\n\n        if (config._f.length === 0) {\n            getParsingFlags(config).invalidFormat = true;\n            config._d = new Date(NaN);\n            return;\n        }\n\n        for (i = 0; i < config._f.length; i++) {\n            currentScore = 0;\n            validFormatFound = false;\n            tempConfig = copyConfig({}, config);\n            if (config._useUTC != null) {\n                tempConfig._useUTC = config._useUTC;\n            }\n            tempConfig._f = config._f[i];\n            configFromStringAndFormat(tempConfig);\n\n            if (isValid(tempConfig)) {\n                validFormatFound = true;\n            }\n\n            // if there is any input that was not parsed add a penalty for that format\n            currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n            //or tokens\n            currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n            getParsingFlags(tempConfig).score = currentScore;\n\n            if (!bestFormatIsValid) {\n                if (\n                    scoreToBeat == null ||\n                    currentScore < scoreToBeat ||\n                    validFormatFound\n                ) {\n                    scoreToBeat = currentScore;\n                    bestMoment = tempConfig;\n                    if (validFormatFound) {\n                        bestFormatIsValid = true;\n                    }\n                }\n            } else {\n                if (currentScore < scoreToBeat) {\n                    scoreToBeat = currentScore;\n                    bestMoment = tempConfig;\n                }\n            }\n        }\n\n        extend(config, bestMoment || tempConfig);\n    }\n\n    function configFromObject(config) {\n        if (config._d) {\n            return;\n        }\n\n        var i = normalizeObjectUnits(config._i),\n            dayOrDate = i.day === undefined ? i.date : i.day;\n        config._a = map(\n            [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n            function (obj) {\n                return obj && parseInt(obj, 10);\n            }\n        );\n\n        configFromArray(config);\n    }\n\n    function createFromConfig(config) {\n        var res = new Moment(checkOverflow(prepareConfig(config)));\n        if (res._nextDay) {\n            // Adding is smart enough around DST\n            res.add(1, 'd');\n            res._nextDay = undefined;\n        }\n\n        return res;\n    }\n\n    function prepareConfig(config) {\n        var input = config._i,\n            format = config._f;\n\n        config._locale = config._locale || getLocale(config._l);\n\n        if (input === null || (format === undefined && input === '')) {\n            return createInvalid({ nullInput: true });\n        }\n\n        if (typeof input === 'string') {\n            config._i = input = config._locale.preparse(input);\n        }\n\n        if (isMoment(input)) {\n            return new Moment(checkOverflow(input));\n        } else if (isDate(input)) {\n            config._d = input;\n        } else if (isArray(format)) {\n            configFromStringAndArray(config);\n        } else if (format) {\n            configFromStringAndFormat(config);\n        } else {\n            configFromInput(config);\n        }\n\n        if (!isValid(config)) {\n            config._d = null;\n        }\n\n        return config;\n    }\n\n    function configFromInput(config) {\n        var input = config._i;\n        if (isUndefined(input)) {\n            config._d = new Date(hooks.now());\n        } else if (isDate(input)) {\n            config._d = new Date(input.valueOf());\n        } else if (typeof input === 'string') {\n            configFromString(config);\n        } else if (isArray(input)) {\n            config._a = map(input.slice(0), function (obj) {\n                return parseInt(obj, 10);\n            });\n            configFromArray(config);\n        } else if (isObject(input)) {\n            configFromObject(config);\n        } else if (isNumber(input)) {\n            // from milliseconds\n            config._d = new Date(input);\n        } else {\n            hooks.createFromInputFallback(config);\n        }\n    }\n\n    function createLocalOrUTC(input, format, locale, strict, isUTC) {\n        var c = {};\n\n        if (format === true || format === false) {\n            strict = format;\n            format = undefined;\n        }\n\n        if (locale === true || locale === false) {\n            strict = locale;\n            locale = undefined;\n        }\n\n        if (\n            (isObject(input) && isObjectEmpty(input)) ||\n            (isArray(input) && input.length === 0)\n        ) {\n            input = undefined;\n        }\n        // object construction must be done this way.\n        // https://github.com/moment/moment/issues/1423\n        c._isAMomentObject = true;\n        c._useUTC = c._isUTC = isUTC;\n        c._l = locale;\n        c._i = input;\n        c._f = format;\n        c._strict = strict;\n\n        return createFromConfig(c);\n    }\n\n    function createLocal(input, format, locale, strict) {\n        return createLocalOrUTC(input, format, locale, strict, false);\n    }\n\n    var prototypeMin = deprecate(\n            'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n            function () {\n                var other = createLocal.apply(null, arguments);\n                if (this.isValid() && other.isValid()) {\n                    return other < this ? this : other;\n                } else {\n                    return createInvalid();\n                }\n            }\n        ),\n        prototypeMax = deprecate(\n            'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n            function () {\n                var other = createLocal.apply(null, arguments);\n                if (this.isValid() && other.isValid()) {\n                    return other > this ? this : other;\n                } else {\n                    return createInvalid();\n                }\n            }\n        );\n\n    // Pick a moment m from moments so that m[fn](other) is true for all\n    // other. This relies on the function fn to be transitive.\n    //\n    // moments should either be an array of moment objects or an array, whose\n    // first element is an array of moment objects.\n    function pickBy(fn, moments) {\n        var res, i;\n        if (moments.length === 1 && isArray(moments[0])) {\n            moments = moments[0];\n        }\n        if (!moments.length) {\n            return createLocal();\n        }\n        res = moments[0];\n        for (i = 1; i < moments.length; ++i) {\n            if (!moments[i].isValid() || moments[i][fn](res)) {\n                res = moments[i];\n            }\n        }\n        return res;\n    }\n\n    // TODO: Use [].sort instead?\n    function min() {\n        var args = [].slice.call(arguments, 0);\n\n        return pickBy('isBefore', args);\n    }\n\n    function max() {\n        var args = [].slice.call(arguments, 0);\n\n        return pickBy('isAfter', args);\n    }\n\n    var now = function () {\n        return Date.now ? Date.now() : +new Date();\n    };\n\n    var ordering = [\n        'year',\n        'quarter',\n        'month',\n        'week',\n        'day',\n        'hour',\n        'minute',\n        'second',\n        'millisecond',\n    ];\n\n    function isDurationValid(m) {\n        var key,\n            unitHasDecimal = false,\n            i;\n        for (key in m) {\n            if (\n                hasOwnProp(m, key) &&\n                !(\n                    indexOf.call(ordering, key) !== -1 &&\n                    (m[key] == null || !isNaN(m[key]))\n                )\n            ) {\n                return false;\n            }\n        }\n\n        for (i = 0; i < ordering.length; ++i) {\n            if (m[ordering[i]]) {\n                if (unitHasDecimal) {\n                    return false; // only allow non-integers for smallest unit\n                }\n                if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n                    unitHasDecimal = true;\n                }\n            }\n        }\n\n        return true;\n    }\n\n    function isValid$1() {\n        return this._isValid;\n    }\n\n    function createInvalid$1() {\n        return createDuration(NaN);\n    }\n\n    function Duration(duration) {\n        var normalizedInput = normalizeObjectUnits(duration),\n            years = normalizedInput.year || 0,\n            quarters = normalizedInput.quarter || 0,\n            months = normalizedInput.month || 0,\n            weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n            days = normalizedInput.day || 0,\n            hours = normalizedInput.hour || 0,\n            minutes = normalizedInput.minute || 0,\n            seconds = normalizedInput.second || 0,\n            milliseconds = normalizedInput.millisecond || 0;\n\n        this._isValid = isDurationValid(normalizedInput);\n\n        // representation for dateAddRemove\n        this._milliseconds =\n            +milliseconds +\n            seconds * 1e3 + // 1000\n            minutes * 6e4 + // 1000 * 60\n            hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n        // Because of dateAddRemove treats 24 hours as different from a\n        // day when working around DST, we need to store them separately\n        this._days = +days + weeks * 7;\n        // It is impossible to translate months into days without knowing\n        // which months you are are talking about, so we have to store\n        // it separately.\n        this._months = +months + quarters * 3 + years * 12;\n\n        this._data = {};\n\n        this._locale = getLocale();\n\n        this._bubble();\n    }\n\n    function isDuration(obj) {\n        return obj instanceof Duration;\n    }\n\n    function absRound(number) {\n        if (number < 0) {\n            return Math.round(-1 * number) * -1;\n        } else {\n            return Math.round(number);\n        }\n    }\n\n    // compare two arrays, return the number of differences\n    function compareArrays(array1, array2, dontConvert) {\n        var len = Math.min(array1.length, array2.length),\n            lengthDiff = Math.abs(array1.length - array2.length),\n            diffs = 0,\n            i;\n        for (i = 0; i < len; i++) {\n            if (\n                (dontConvert && array1[i] !== array2[i]) ||\n                (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n            ) {\n                diffs++;\n            }\n        }\n        return diffs + lengthDiff;\n    }\n\n    // FORMATTING\n\n    function offset(token, separator) {\n        addFormatToken(token, 0, 0, function () {\n            var offset = this.utcOffset(),\n                sign = '+';\n            if (offset < 0) {\n                offset = -offset;\n                sign = '-';\n            }\n            return (\n                sign +\n                zeroFill(~~(offset / 60), 2) +\n                separator +\n                zeroFill(~~offset % 60, 2)\n            );\n        });\n    }\n\n    offset('Z', ':');\n    offset('ZZ', '');\n\n    // PARSING\n\n    addRegexToken('Z', matchShortOffset);\n    addRegexToken('ZZ', matchShortOffset);\n    addParseToken(['Z', 'ZZ'], function (input, array, config) {\n        config._useUTC = true;\n        config._tzm = offsetFromString(matchShortOffset, input);\n    });\n\n    // HELPERS\n\n    // timezone chunker\n    // '+10:00' > ['10',  '00']\n    // '-1530'  > ['-15', '30']\n    var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n    function offsetFromString(matcher, string) {\n        var matches = (string || '').match(matcher),\n            chunk,\n            parts,\n            minutes;\n\n        if (matches === null) {\n            return null;\n        }\n\n        chunk = matches[matches.length - 1] || [];\n        parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n        minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n        return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n    }\n\n    // Return a moment from input, that is local/utc/zone equivalent to model.\n    function cloneWithOffset(input, model) {\n        var res, diff;\n        if (model._isUTC) {\n            res = model.clone();\n            diff =\n                (isMoment(input) || isDate(input)\n                    ? input.valueOf()\n                    : createLocal(input).valueOf()) - res.valueOf();\n            // Use low-level api, because this fn is low-level api.\n            res._d.setTime(res._d.valueOf() + diff);\n            hooks.updateOffset(res, false);\n            return res;\n        } else {\n            return createLocal(input).local();\n        }\n    }\n\n    function getDateOffset(m) {\n        // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n        // https://github.com/moment/moment/pull/1871\n        return -Math.round(m._d.getTimezoneOffset());\n    }\n\n    // HOOKS\n\n    // This function will be called whenever a moment is mutated.\n    // It is intended to keep the offset in sync with the timezone.\n    hooks.updateOffset = function () {};\n\n    // MOMENTS\n\n    // keepLocalTime = true means only change the timezone, without\n    // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n    // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n    // +0200, so we adjust the time as needed, to be valid.\n    //\n    // Keeping the time actually adds/subtracts (one hour)\n    // from the actual represented time. That is why we call updateOffset\n    // a second time. In case it wants us to change the offset again\n    // _changeInProgress == true case, then we have to adjust, because\n    // there is no such time in the given timezone.\n    function getSetOffset(input, keepLocalTime, keepMinutes) {\n        var offset = this._offset || 0,\n            localAdjust;\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n        if (input != null) {\n            if (typeof input === 'string') {\n                input = offsetFromString(matchShortOffset, input);\n                if (input === null) {\n                    return this;\n                }\n            } else if (Math.abs(input) < 16 && !keepMinutes) {\n                input = input * 60;\n            }\n            if (!this._isUTC && keepLocalTime) {\n                localAdjust = getDateOffset(this);\n            }\n            this._offset = input;\n            this._isUTC = true;\n            if (localAdjust != null) {\n                this.add(localAdjust, 'm');\n            }\n            if (offset !== input) {\n                if (!keepLocalTime || this._changeInProgress) {\n                    addSubtract(\n                        this,\n                        createDuration(input - offset, 'm'),\n                        1,\n                        false\n                    );\n                } else if (!this._changeInProgress) {\n                    this._changeInProgress = true;\n                    hooks.updateOffset(this, true);\n                    this._changeInProgress = null;\n                }\n            }\n            return this;\n        } else {\n            return this._isUTC ? offset : getDateOffset(this);\n        }\n    }\n\n    function getSetZone(input, keepLocalTime) {\n        if (input != null) {\n            if (typeof input !== 'string') {\n                input = -input;\n            }\n\n            this.utcOffset(input, keepLocalTime);\n\n            return this;\n        } else {\n            return -this.utcOffset();\n        }\n    }\n\n    function setOffsetToUTC(keepLocalTime) {\n        return this.utcOffset(0, keepLocalTime);\n    }\n\n    function setOffsetToLocal(keepLocalTime) {\n        if (this._isUTC) {\n            this.utcOffset(0, keepLocalTime);\n            this._isUTC = false;\n\n            if (keepLocalTime) {\n                this.subtract(getDateOffset(this), 'm');\n            }\n        }\n        return this;\n    }\n\n    function setOffsetToParsedOffset() {\n        if (this._tzm != null) {\n            this.utcOffset(this._tzm, false, true);\n        } else if (typeof this._i === 'string') {\n            var tZone = offsetFromString(matchOffset, this._i);\n            if (tZone != null) {\n                this.utcOffset(tZone);\n            } else {\n                this.utcOffset(0, true);\n            }\n        }\n        return this;\n    }\n\n    function hasAlignedHourOffset(input) {\n        if (!this.isValid()) {\n            return false;\n        }\n        input = input ? createLocal(input).utcOffset() : 0;\n\n        return (this.utcOffset() - input) % 60 === 0;\n    }\n\n    function isDaylightSavingTime() {\n        return (\n            this.utcOffset() > this.clone().month(0).utcOffset() ||\n            this.utcOffset() > this.clone().month(5).utcOffset()\n        );\n    }\n\n    function isDaylightSavingTimeShifted() {\n        if (!isUndefined(this._isDSTShifted)) {\n            return this._isDSTShifted;\n        }\n\n        var c = {},\n            other;\n\n        copyConfig(c, this);\n        c = prepareConfig(c);\n\n        if (c._a) {\n            other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n            this._isDSTShifted =\n                this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n        } else {\n            this._isDSTShifted = false;\n        }\n\n        return this._isDSTShifted;\n    }\n\n    function isLocal() {\n        return this.isValid() ? !this._isUTC : false;\n    }\n\n    function isUtcOffset() {\n        return this.isValid() ? this._isUTC : false;\n    }\n\n    function isUtc() {\n        return this.isValid() ? this._isUTC && this._offset === 0 : false;\n    }\n\n    // ASP.NET json date format regex\n    var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n        // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n        // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n        // and further modified to allow for strings containing both week and day\n        isoRegex = /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n    function createDuration(input, key) {\n        var duration = input,\n            // matching against regexp is expensive, do it on demand\n            match = null,\n            sign,\n            ret,\n            diffRes;\n\n        if (isDuration(input)) {\n            duration = {\n                ms: input._milliseconds,\n                d: input._days,\n                M: input._months,\n            };\n        } else if (isNumber(input) || !isNaN(+input)) {\n            duration = {};\n            if (key) {\n                duration[key] = +input;\n            } else {\n                duration.milliseconds = +input;\n            }\n        } else if ((match = aspNetRegex.exec(input))) {\n            sign = match[1] === '-' ? -1 : 1;\n            duration = {\n                y: 0,\n                d: toInt(match[DATE]) * sign,\n                h: toInt(match[HOUR]) * sign,\n                m: toInt(match[MINUTE]) * sign,\n                s: toInt(match[SECOND]) * sign,\n                ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n            };\n        } else if ((match = isoRegex.exec(input))) {\n            sign = match[1] === '-' ? -1 : 1;\n            duration = {\n                y: parseIso(match[2], sign),\n                M: parseIso(match[3], sign),\n                w: parseIso(match[4], sign),\n                d: parseIso(match[5], sign),\n                h: parseIso(match[6], sign),\n                m: parseIso(match[7], sign),\n                s: parseIso(match[8], sign),\n            };\n        } else if (duration == null) {\n            // checks for null or undefined\n            duration = {};\n        } else if (\n            typeof duration === 'object' &&\n            ('from' in duration || 'to' in duration)\n        ) {\n            diffRes = momentsDifference(\n                createLocal(duration.from),\n                createLocal(duration.to)\n            );\n\n            duration = {};\n            duration.ms = diffRes.milliseconds;\n            duration.M = diffRes.months;\n        }\n\n        ret = new Duration(duration);\n\n        if (isDuration(input) && hasOwnProp(input, '_locale')) {\n            ret._locale = input._locale;\n        }\n\n        if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n            ret._isValid = input._isValid;\n        }\n\n        return ret;\n    }\n\n    createDuration.fn = Duration.prototype;\n    createDuration.invalid = createInvalid$1;\n\n    function parseIso(inp, sign) {\n        // We'd normally use ~~inp for this, but unfortunately it also\n        // converts floats to ints.\n        // inp may be undefined, so careful calling replace on it.\n        var res = inp && parseFloat(inp.replace(',', '.'));\n        // apply sign while we're at it\n        return (isNaN(res) ? 0 : res) * sign;\n    }\n\n    function positiveMomentsDifference(base, other) {\n        var res = {};\n\n        res.months =\n            other.month() - base.month() + (other.year() - base.year()) * 12;\n        if (base.clone().add(res.months, 'M').isAfter(other)) {\n            --res.months;\n        }\n\n        res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n        return res;\n    }\n\n    function momentsDifference(base, other) {\n        var res;\n        if (!(base.isValid() && other.isValid())) {\n            return { milliseconds: 0, months: 0 };\n        }\n\n        other = cloneWithOffset(other, base);\n        if (base.isBefore(other)) {\n            res = positiveMomentsDifference(base, other);\n        } else {\n            res = positiveMomentsDifference(other, base);\n            res.milliseconds = -res.milliseconds;\n            res.months = -res.months;\n        }\n\n        return res;\n    }\n\n    // TODO: remove 'name' arg after deprecation is removed\n    function createAdder(direction, name) {\n        return function (val, period) {\n            var dur, tmp;\n            //invert the arguments, but complain about it\n            if (period !== null && !isNaN(+period)) {\n                deprecateSimple(\n                    name,\n                    'moment().' +\n                        name +\n                        '(period, number) is deprecated. Please use moment().' +\n                        name +\n                        '(number, period). ' +\n                        'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n                );\n                tmp = val;\n                val = period;\n                period = tmp;\n            }\n\n            dur = createDuration(val, period);\n            addSubtract(this, dur, direction);\n            return this;\n        };\n    }\n\n    function addSubtract(mom, duration, isAdding, updateOffset) {\n        var milliseconds = duration._milliseconds,\n            days = absRound(duration._days),\n            months = absRound(duration._months);\n\n        if (!mom.isValid()) {\n            // No op\n            return;\n        }\n\n        updateOffset = updateOffset == null ? true : updateOffset;\n\n        if (months) {\n            setMonth(mom, get(mom, 'Month') + months * isAdding);\n        }\n        if (days) {\n            set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n        }\n        if (milliseconds) {\n            mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n        }\n        if (updateOffset) {\n            hooks.updateOffset(mom, days || months);\n        }\n    }\n\n    var add = createAdder(1, 'add'),\n        subtract = createAdder(-1, 'subtract');\n\n    function isString(input) {\n        return typeof input === 'string' || input instanceof String;\n    }\n\n    // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n    function isMomentInput(input) {\n        return (\n            isMoment(input) ||\n            isDate(input) ||\n            isString(input) ||\n            isNumber(input) ||\n            isNumberOrStringArray(input) ||\n            isMomentInputObject(input) ||\n            input === null ||\n            input === undefined\n        );\n    }\n\n    function isMomentInputObject(input) {\n        var objectTest = isObject(input) && !isObjectEmpty(input),\n            propertyTest = false,\n            properties = [\n                'years',\n                'year',\n                'y',\n                'months',\n                'month',\n                'M',\n                'days',\n                'day',\n                'd',\n                'dates',\n                'date',\n                'D',\n                'hours',\n                'hour',\n                'h',\n                'minutes',\n                'minute',\n                'm',\n                'seconds',\n                'second',\n                's',\n                'milliseconds',\n                'millisecond',\n                'ms',\n            ],\n            i,\n            property;\n\n        for (i = 0; i < properties.length; i += 1) {\n            property = properties[i];\n            propertyTest = propertyTest || hasOwnProp(input, property);\n        }\n\n        return objectTest && propertyTest;\n    }\n\n    function isNumberOrStringArray(input) {\n        var arrayTest = isArray(input),\n            dataTypeTest = false;\n        if (arrayTest) {\n            dataTypeTest =\n                input.filter(function (item) {\n                    return !isNumber(item) && isString(input);\n                }).length === 0;\n        }\n        return arrayTest && dataTypeTest;\n    }\n\n    function isCalendarSpec(input) {\n        var objectTest = isObject(input) && !isObjectEmpty(input),\n            propertyTest = false,\n            properties = [\n                'sameDay',\n                'nextDay',\n                'lastDay',\n                'nextWeek',\n                'lastWeek',\n                'sameElse',\n            ],\n            i,\n            property;\n\n        for (i = 0; i < properties.length; i += 1) {\n            property = properties[i];\n            propertyTest = propertyTest || hasOwnProp(input, property);\n        }\n\n        return objectTest && propertyTest;\n    }\n\n    function getCalendarFormat(myMoment, now) {\n        var diff = myMoment.diff(now, 'days', true);\n        return diff < -6\n            ? 'sameElse'\n            : diff < -1\n            ? 'lastWeek'\n            : diff < 0\n            ? 'lastDay'\n            : diff < 1\n            ? 'sameDay'\n            : diff < 2\n            ? 'nextDay'\n            : diff < 7\n            ? 'nextWeek'\n            : 'sameElse';\n    }\n\n    function calendar$1(time, formats) {\n        // Support for single parameter, formats only overload to the calendar function\n        if (arguments.length === 1) {\n            if (!arguments[0]) {\n                time = undefined;\n                formats = undefined;\n            } else if (isMomentInput(arguments[0])) {\n                time = arguments[0];\n                formats = undefined;\n            } else if (isCalendarSpec(arguments[0])) {\n                formats = arguments[0];\n                time = undefined;\n            }\n        }\n        // We want to compare the start of today, vs this.\n        // Getting start-of-today depends on whether we're local/utc/offset or not.\n        var now = time || createLocal(),\n            sod = cloneWithOffset(now, this).startOf('day'),\n            format = hooks.calendarFormat(this, sod) || 'sameElse',\n            output =\n                formats &&\n                (isFunction(formats[format])\n                    ? formats[format].call(this, now)\n                    : formats[format]);\n\n        return this.format(\n            output || this.localeData().calendar(format, this, createLocal(now))\n        );\n    }\n\n    function clone() {\n        return new Moment(this);\n    }\n\n    function isAfter(input, units) {\n        var localInput = isMoment(input) ? input : createLocal(input);\n        if (!(this.isValid() && localInput.isValid())) {\n            return false;\n        }\n        units = normalizeUnits(units) || 'millisecond';\n        if (units === 'millisecond') {\n            return this.valueOf() > localInput.valueOf();\n        } else {\n            return localInput.valueOf() < this.clone().startOf(units).valueOf();\n        }\n    }\n\n    function isBefore(input, units) {\n        var localInput = isMoment(input) ? input : createLocal(input);\n        if (!(this.isValid() && localInput.isValid())) {\n            return false;\n        }\n        units = normalizeUnits(units) || 'millisecond';\n        if (units === 'millisecond') {\n            return this.valueOf() < localInput.valueOf();\n        } else {\n            return this.clone().endOf(units).valueOf() < localInput.valueOf();\n        }\n    }\n\n    function isBetween(from, to, units, inclusivity) {\n        var localFrom = isMoment(from) ? from : createLocal(from),\n            localTo = isMoment(to) ? to : createLocal(to);\n        if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n            return false;\n        }\n        inclusivity = inclusivity || '()';\n        return (\n            (inclusivity[0] === '('\n                ? this.isAfter(localFrom, units)\n                : !this.isBefore(localFrom, units)) &&\n            (inclusivity[1] === ')'\n                ? this.isBefore(localTo, units)\n                : !this.isAfter(localTo, units))\n        );\n    }\n\n    function isSame(input, units) {\n        var localInput = isMoment(input) ? input : createLocal(input),\n            inputMs;\n        if (!(this.isValid() && localInput.isValid())) {\n            return false;\n        }\n        units = normalizeUnits(units) || 'millisecond';\n        if (units === 'millisecond') {\n            return this.valueOf() === localInput.valueOf();\n        } else {\n            inputMs = localInput.valueOf();\n            return (\n                this.clone().startOf(units).valueOf() <= inputMs &&\n                inputMs <= this.clone().endOf(units).valueOf()\n            );\n        }\n    }\n\n    function isSameOrAfter(input, units) {\n        return this.isSame(input, units) || this.isAfter(input, units);\n    }\n\n    function isSameOrBefore(input, units) {\n        return this.isSame(input, units) || this.isBefore(input, units);\n    }\n\n    function diff(input, units, asFloat) {\n        var that, zoneDelta, output;\n\n        if (!this.isValid()) {\n            return NaN;\n        }\n\n        that = cloneWithOffset(input, this);\n\n        if (!that.isValid()) {\n            return NaN;\n        }\n\n        zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n        units = normalizeUnits(units);\n\n        switch (units) {\n            case 'year':\n                output = monthDiff(this, that) / 12;\n                break;\n            case 'month':\n                output = monthDiff(this, that);\n                break;\n            case 'quarter':\n                output = monthDiff(this, that) / 3;\n                break;\n            case 'second':\n                output = (this - that) / 1e3;\n                break; // 1000\n            case 'minute':\n                output = (this - that) / 6e4;\n                break; // 1000 * 60\n            case 'hour':\n                output = (this - that) / 36e5;\n                break; // 1000 * 60 * 60\n            case 'day':\n                output = (this - that - zoneDelta) / 864e5;\n                break; // 1000 * 60 * 60 * 24, negate dst\n            case 'week':\n                output = (this - that - zoneDelta) / 6048e5;\n                break; // 1000 * 60 * 60 * 24 * 7, negate dst\n            default:\n                output = this - that;\n        }\n\n        return asFloat ? output : absFloor(output);\n    }\n\n    function monthDiff(a, b) {\n        if (a.date() < b.date()) {\n            // end-of-month calculations work correct when the start month has more\n            // days than the end month.\n            return -monthDiff(b, a);\n        }\n        // difference in months\n        var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n            // b is in (anchor - 1 month, anchor + 1 month)\n            anchor = a.clone().add(wholeMonthDiff, 'months'),\n            anchor2,\n            adjust;\n\n        if (b - anchor < 0) {\n            anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n            // linear across the month\n            adjust = (b - anchor) / (anchor - anchor2);\n        } else {\n            anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n            // linear across the month\n            adjust = (b - anchor) / (anchor2 - anchor);\n        }\n\n        //check for negative zero, return zero if negative zero\n        return -(wholeMonthDiff + adjust) || 0;\n    }\n\n    hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n    hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n    function toString() {\n        return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n    }\n\n    function toISOString(keepOffset) {\n        if (!this.isValid()) {\n            return null;\n        }\n        var utc = keepOffset !== true,\n            m = utc ? this.clone().utc() : this;\n        if (m.year() < 0 || m.year() > 9999) {\n            return formatMoment(\n                m,\n                utc\n                    ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n                    : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n            );\n        }\n        if (isFunction(Date.prototype.toISOString)) {\n            // native implementation is ~50x faster, use it when we can\n            if (utc) {\n                return this.toDate().toISOString();\n            } else {\n                return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n                    .toISOString()\n                    .replace('Z', formatMoment(m, 'Z'));\n            }\n        }\n        return formatMoment(\n            m,\n            utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n        );\n    }\n\n    /**\n     * Return a human readable representation of a moment that can\n     * also be evaluated to get a new moment which is the same\n     *\n     * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n     */\n    function inspect() {\n        if (!this.isValid()) {\n            return 'moment.invalid(/* ' + this._i + ' */)';\n        }\n        var func = 'moment',\n            zone = '',\n            prefix,\n            year,\n            datetime,\n            suffix;\n        if (!this.isLocal()) {\n            func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n            zone = 'Z';\n        }\n        prefix = '[' + func + '(\"]';\n        year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n        datetime = '-MM-DD[T]HH:mm:ss.SSS';\n        suffix = zone + '[\")]';\n\n        return this.format(prefix + year + datetime + suffix);\n    }\n\n    function format(inputString) {\n        if (!inputString) {\n            inputString = this.isUtc()\n                ? hooks.defaultFormatUtc\n                : hooks.defaultFormat;\n        }\n        var output = formatMoment(this, inputString);\n        return this.localeData().postformat(output);\n    }\n\n    function from(time, withoutSuffix) {\n        if (\n            this.isValid() &&\n            ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n        ) {\n            return createDuration({ to: this, from: time })\n                .locale(this.locale())\n                .humanize(!withoutSuffix);\n        } else {\n            return this.localeData().invalidDate();\n        }\n    }\n\n    function fromNow(withoutSuffix) {\n        return this.from(createLocal(), withoutSuffix);\n    }\n\n    function to(time, withoutSuffix) {\n        if (\n            this.isValid() &&\n            ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n        ) {\n            return createDuration({ from: this, to: time })\n                .locale(this.locale())\n                .humanize(!withoutSuffix);\n        } else {\n            return this.localeData().invalidDate();\n        }\n    }\n\n    function toNow(withoutSuffix) {\n        return this.to(createLocal(), withoutSuffix);\n    }\n\n    // If passed a locale key, it will set the locale for this\n    // instance.  Otherwise, it will return the locale configuration\n    // variables for this instance.\n    function locale(key) {\n        var newLocaleData;\n\n        if (key === undefined) {\n            return this._locale._abbr;\n        } else {\n            newLocaleData = getLocale(key);\n            if (newLocaleData != null) {\n                this._locale = newLocaleData;\n            }\n            return this;\n        }\n    }\n\n    var lang = deprecate(\n        'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n        function (key) {\n            if (key === undefined) {\n                return this.localeData();\n            } else {\n                return this.locale(key);\n            }\n        }\n    );\n\n    function localeData() {\n        return this._locale;\n    }\n\n    var MS_PER_SECOND = 1000,\n        MS_PER_MINUTE = 60 * MS_PER_SECOND,\n        MS_PER_HOUR = 60 * MS_PER_MINUTE,\n        MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n    // actual modulo - handles negative numbers (for dates before 1970):\n    function mod$1(dividend, divisor) {\n        return ((dividend % divisor) + divisor) % divisor;\n    }\n\n    function localStartOfDate(y, m, d) {\n        // the date constructor remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            // preserve leap years using a full 400 year cycle, then reset\n            return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n        } else {\n            return new Date(y, m, d).valueOf();\n        }\n    }\n\n    function utcStartOfDate(y, m, d) {\n        // Date.UTC remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            // preserve leap years using a full 400 year cycle, then reset\n            return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n        } else {\n            return Date.UTC(y, m, d);\n        }\n    }\n\n    function startOf(units) {\n        var time, startOfDate;\n        units = normalizeUnits(units);\n        if (units === undefined || units === 'millisecond' || !this.isValid()) {\n            return this;\n        }\n\n        startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n        switch (units) {\n            case 'year':\n                time = startOfDate(this.year(), 0, 1);\n                break;\n            case 'quarter':\n                time = startOfDate(\n                    this.year(),\n                    this.month() - (this.month() % 3),\n                    1\n                );\n                break;\n            case 'month':\n                time = startOfDate(this.year(), this.month(), 1);\n                break;\n            case 'week':\n                time = startOfDate(\n                    this.year(),\n                    this.month(),\n                    this.date() - this.weekday()\n                );\n                break;\n            case 'isoWeek':\n                time = startOfDate(\n                    this.year(),\n                    this.month(),\n                    this.date() - (this.isoWeekday() - 1)\n                );\n                break;\n            case 'day':\n            case 'date':\n                time = startOfDate(this.year(), this.month(), this.date());\n                break;\n            case 'hour':\n                time = this._d.valueOf();\n                time -= mod$1(\n                    time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n                    MS_PER_HOUR\n                );\n                break;\n            case 'minute':\n                time = this._d.valueOf();\n                time -= mod$1(time, MS_PER_MINUTE);\n                break;\n            case 'second':\n                time = this._d.valueOf();\n                time -= mod$1(time, MS_PER_SECOND);\n                break;\n        }\n\n        this._d.setTime(time);\n        hooks.updateOffset(this, true);\n        return this;\n    }\n\n    function endOf(units) {\n        var time, startOfDate;\n        units = normalizeUnits(units);\n        if (units === undefined || units === 'millisecond' || !this.isValid()) {\n            return this;\n        }\n\n        startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n        switch (units) {\n            case 'year':\n                time = startOfDate(this.year() + 1, 0, 1) - 1;\n                break;\n            case 'quarter':\n                time =\n                    startOfDate(\n                        this.year(),\n                        this.month() - (this.month() % 3) + 3,\n                        1\n                    ) - 1;\n                break;\n            case 'month':\n                time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n                break;\n            case 'week':\n                time =\n                    startOfDate(\n                        this.year(),\n                        this.month(),\n                        this.date() - this.weekday() + 7\n                    ) - 1;\n                break;\n            case 'isoWeek':\n                time =\n                    startOfDate(\n                        this.year(),\n                        this.month(),\n                        this.date() - (this.isoWeekday() - 1) + 7\n                    ) - 1;\n                break;\n            case 'day':\n            case 'date':\n                time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n                break;\n            case 'hour':\n                time = this._d.valueOf();\n                time +=\n                    MS_PER_HOUR -\n                    mod$1(\n                        time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n                        MS_PER_HOUR\n                    ) -\n                    1;\n                break;\n            case 'minute':\n                time = this._d.valueOf();\n                time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n                break;\n            case 'second':\n                time = this._d.valueOf();\n                time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n                break;\n        }\n\n        this._d.setTime(time);\n        hooks.updateOffset(this, true);\n        return this;\n    }\n\n    function valueOf() {\n        return this._d.valueOf() - (this._offset || 0) * 60000;\n    }\n\n    function unix() {\n        return Math.floor(this.valueOf() / 1000);\n    }\n\n    function toDate() {\n        return new Date(this.valueOf());\n    }\n\n    function toArray() {\n        var m = this;\n        return [\n            m.year(),\n            m.month(),\n            m.date(),\n            m.hour(),\n            m.minute(),\n            m.second(),\n            m.millisecond(),\n        ];\n    }\n\n    function toObject() {\n        var m = this;\n        return {\n            years: m.year(),\n            months: m.month(),\n            date: m.date(),\n            hours: m.hours(),\n            minutes: m.minutes(),\n            seconds: m.seconds(),\n            milliseconds: m.milliseconds(),\n        };\n    }\n\n    function toJSON() {\n        // new Date(NaN).toJSON() === null\n        return this.isValid() ? this.toISOString() : null;\n    }\n\n    function isValid$2() {\n        return isValid(this);\n    }\n\n    function parsingFlags() {\n        return extend({}, getParsingFlags(this));\n    }\n\n    function invalidAt() {\n        return getParsingFlags(this).overflow;\n    }\n\n    function creationData() {\n        return {\n            input: this._i,\n            format: this._f,\n            locale: this._locale,\n            isUTC: this._isUTC,\n            strict: this._strict,\n        };\n    }\n\n    addFormatToken('N', 0, 0, 'eraAbbr');\n    addFormatToken('NN', 0, 0, 'eraAbbr');\n    addFormatToken('NNN', 0, 0, 'eraAbbr');\n    addFormatToken('NNNN', 0, 0, 'eraName');\n    addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n    addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n    addFormatToken('y', ['yy', 2], 0, 'eraYear');\n    addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n    addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n    addRegexToken('N', matchEraAbbr);\n    addRegexToken('NN', matchEraAbbr);\n    addRegexToken('NNN', matchEraAbbr);\n    addRegexToken('NNNN', matchEraName);\n    addRegexToken('NNNNN', matchEraNarrow);\n\n    addParseToken(['N', 'NN', 'NNN', 'NNNN', 'NNNNN'], function (\n        input,\n        array,\n        config,\n        token\n    ) {\n        var era = config._locale.erasParse(input, token, config._strict);\n        if (era) {\n            getParsingFlags(config).era = era;\n        } else {\n            getParsingFlags(config).invalidEra = input;\n        }\n    });\n\n    addRegexToken('y', matchUnsigned);\n    addRegexToken('yy', matchUnsigned);\n    addRegexToken('yyy', matchUnsigned);\n    addRegexToken('yyyy', matchUnsigned);\n    addRegexToken('yo', matchEraYearOrdinal);\n\n    addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n    addParseToken(['yo'], function (input, array, config, token) {\n        var match;\n        if (config._locale._eraYearOrdinalRegex) {\n            match = input.match(config._locale._eraYearOrdinalRegex);\n        }\n\n        if (config._locale.eraYearOrdinalParse) {\n            array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n        } else {\n            array[YEAR] = parseInt(input, 10);\n        }\n    });\n\n    function localeEras(m, format) {\n        var i,\n            l,\n            date,\n            eras = this._eras || getLocale('en')._eras;\n        for (i = 0, l = eras.length; i < l; ++i) {\n            switch (typeof eras[i].since) {\n                case 'string':\n                    // truncate time\n                    date = hooks(eras[i].since).startOf('day');\n                    eras[i].since = date.valueOf();\n                    break;\n            }\n\n            switch (typeof eras[i].until) {\n                case 'undefined':\n                    eras[i].until = +Infinity;\n                    break;\n                case 'string':\n                    // truncate time\n                    date = hooks(eras[i].until).startOf('day').valueOf();\n                    eras[i].until = date.valueOf();\n                    break;\n            }\n        }\n        return eras;\n    }\n\n    function localeErasParse(eraName, format, strict) {\n        var i,\n            l,\n            eras = this.eras(),\n            name,\n            abbr,\n            narrow;\n        eraName = eraName.toUpperCase();\n\n        for (i = 0, l = eras.length; i < l; ++i) {\n            name = eras[i].name.toUpperCase();\n            abbr = eras[i].abbr.toUpperCase();\n            narrow = eras[i].narrow.toUpperCase();\n\n            if (strict) {\n                switch (format) {\n                    case 'N':\n                    case 'NN':\n                    case 'NNN':\n                        if (abbr === eraName) {\n                            return eras[i];\n                        }\n                        break;\n\n                    case 'NNNN':\n                        if (name === eraName) {\n                            return eras[i];\n                        }\n                        break;\n\n                    case 'NNNNN':\n                        if (narrow === eraName) {\n                            return eras[i];\n                        }\n                        break;\n                }\n            } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n                return eras[i];\n            }\n        }\n    }\n\n    function localeErasConvertYear(era, year) {\n        var dir = era.since <= era.until ? +1 : -1;\n        if (year === undefined) {\n            return hooks(era.since).year();\n        } else {\n            return hooks(era.since).year() + (year - era.offset) * dir;\n        }\n    }\n\n    function getEraName() {\n        var i,\n            l,\n            val,\n            eras = this.localeData().eras();\n        for (i = 0, l = eras.length; i < l; ++i) {\n            // truncate time\n            val = this.clone().startOf('day').valueOf();\n\n            if (eras[i].since <= val && val <= eras[i].until) {\n                return eras[i].name;\n            }\n            if (eras[i].until <= val && val <= eras[i].since) {\n                return eras[i].name;\n            }\n        }\n\n        return '';\n    }\n\n    function getEraNarrow() {\n        var i,\n            l,\n            val,\n            eras = this.localeData().eras();\n        for (i = 0, l = eras.length; i < l; ++i) {\n            // truncate time\n            val = this.clone().startOf('day').valueOf();\n\n            if (eras[i].since <= val && val <= eras[i].until) {\n                return eras[i].narrow;\n            }\n            if (eras[i].until <= val && val <= eras[i].since) {\n                return eras[i].narrow;\n            }\n        }\n\n        return '';\n    }\n\n    function getEraAbbr() {\n        var i,\n            l,\n            val,\n            eras = this.localeData().eras();\n        for (i = 0, l = eras.length; i < l; ++i) {\n            // truncate time\n            val = this.clone().startOf('day').valueOf();\n\n            if (eras[i].since <= val && val <= eras[i].until) {\n                return eras[i].abbr;\n            }\n            if (eras[i].until <= val && val <= eras[i].since) {\n                return eras[i].abbr;\n            }\n        }\n\n        return '';\n    }\n\n    function getEraYear() {\n        var i,\n            l,\n            dir,\n            val,\n            eras = this.localeData().eras();\n        for (i = 0, l = eras.length; i < l; ++i) {\n            dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n            // truncate time\n            val = this.clone().startOf('day').valueOf();\n\n            if (\n                (eras[i].since <= val && val <= eras[i].until) ||\n                (eras[i].until <= val && val <= eras[i].since)\n            ) {\n                return (\n                    (this.year() - hooks(eras[i].since).year()) * dir +\n                    eras[i].offset\n                );\n            }\n        }\n\n        return this.year();\n    }\n\n    function erasNameRegex(isStrict) {\n        if (!hasOwnProp(this, '_erasNameRegex')) {\n            computeErasParse.call(this);\n        }\n        return isStrict ? this._erasNameRegex : this._erasRegex;\n    }\n\n    function erasAbbrRegex(isStrict) {\n        if (!hasOwnProp(this, '_erasAbbrRegex')) {\n            computeErasParse.call(this);\n        }\n        return isStrict ? this._erasAbbrRegex : this._erasRegex;\n    }\n\n    function erasNarrowRegex(isStrict) {\n        if (!hasOwnProp(this, '_erasNarrowRegex')) {\n            computeErasParse.call(this);\n        }\n        return isStrict ? this._erasNarrowRegex : this._erasRegex;\n    }\n\n    function matchEraAbbr(isStrict, locale) {\n        return locale.erasAbbrRegex(isStrict);\n    }\n\n    function matchEraName(isStrict, locale) {\n        return locale.erasNameRegex(isStrict);\n    }\n\n    function matchEraNarrow(isStrict, locale) {\n        return locale.erasNarrowRegex(isStrict);\n    }\n\n    function matchEraYearOrdinal(isStrict, locale) {\n        return locale._eraYearOrdinalRegex || matchUnsigned;\n    }\n\n    function computeErasParse() {\n        var abbrPieces = [],\n            namePieces = [],\n            narrowPieces = [],\n            mixedPieces = [],\n            i,\n            l,\n            eras = this.eras();\n\n        for (i = 0, l = eras.length; i < l; ++i) {\n            namePieces.push(regexEscape(eras[i].name));\n            abbrPieces.push(regexEscape(eras[i].abbr));\n            narrowPieces.push(regexEscape(eras[i].narrow));\n\n            mixedPieces.push(regexEscape(eras[i].name));\n            mixedPieces.push(regexEscape(eras[i].abbr));\n            mixedPieces.push(regexEscape(eras[i].narrow));\n        }\n\n        this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n        this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n        this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n        this._erasNarrowRegex = new RegExp(\n            '^(' + narrowPieces.join('|') + ')',\n            'i'\n        );\n    }\n\n    // FORMATTING\n\n    addFormatToken(0, ['gg', 2], 0, function () {\n        return this.weekYear() % 100;\n    });\n\n    addFormatToken(0, ['GG', 2], 0, function () {\n        return this.isoWeekYear() % 100;\n    });\n\n    function addWeekYearFormatToken(token, getter) {\n        addFormatToken(0, [token, token.length], 0, getter);\n    }\n\n    addWeekYearFormatToken('gggg', 'weekYear');\n    addWeekYearFormatToken('ggggg', 'weekYear');\n    addWeekYearFormatToken('GGGG', 'isoWeekYear');\n    addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n    // ALIASES\n\n    addUnitAlias('weekYear', 'gg');\n    addUnitAlias('isoWeekYear', 'GG');\n\n    // PRIORITY\n\n    addUnitPriority('weekYear', 1);\n    addUnitPriority('isoWeekYear', 1);\n\n    // PARSING\n\n    addRegexToken('G', matchSigned);\n    addRegexToken('g', matchSigned);\n    addRegexToken('GG', match1to2, match2);\n    addRegexToken('gg', match1to2, match2);\n    addRegexToken('GGGG', match1to4, match4);\n    addRegexToken('gggg', match1to4, match4);\n    addRegexToken('GGGGG', match1to6, match6);\n    addRegexToken('ggggg', match1to6, match6);\n\n    addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (\n        input,\n        week,\n        config,\n        token\n    ) {\n        week[token.substr(0, 2)] = toInt(input);\n    });\n\n    addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n        week[token] = hooks.parseTwoDigitYear(input);\n    });\n\n    // MOMENTS\n\n    function getSetWeekYear(input) {\n        return getSetWeekYearHelper.call(\n            this,\n            input,\n            this.week(),\n            this.weekday(),\n            this.localeData()._week.dow,\n            this.localeData()._week.doy\n        );\n    }\n\n    function getSetISOWeekYear(input) {\n        return getSetWeekYearHelper.call(\n            this,\n            input,\n            this.isoWeek(),\n            this.isoWeekday(),\n            1,\n            4\n        );\n    }\n\n    function getISOWeeksInYear() {\n        return weeksInYear(this.year(), 1, 4);\n    }\n\n    function getISOWeeksInISOWeekYear() {\n        return weeksInYear(this.isoWeekYear(), 1, 4);\n    }\n\n    function getWeeksInYear() {\n        var weekInfo = this.localeData()._week;\n        return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n    }\n\n    function getWeeksInWeekYear() {\n        var weekInfo = this.localeData()._week;\n        return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n    }\n\n    function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n        var weeksTarget;\n        if (input == null) {\n            return weekOfYear(this, dow, doy).year;\n        } else {\n            weeksTarget = weeksInYear(input, dow, doy);\n            if (week > weeksTarget) {\n                week = weeksTarget;\n            }\n            return setWeekAll.call(this, input, week, weekday, dow, doy);\n        }\n    }\n\n    function setWeekAll(weekYear, week, weekday, dow, doy) {\n        var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n            date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n        this.year(date.getUTCFullYear());\n        this.month(date.getUTCMonth());\n        this.date(date.getUTCDate());\n        return this;\n    }\n\n    // FORMATTING\n\n    addFormatToken('Q', 0, 'Qo', 'quarter');\n\n    // ALIASES\n\n    addUnitAlias('quarter', 'Q');\n\n    // PRIORITY\n\n    addUnitPriority('quarter', 7);\n\n    // PARSING\n\n    addRegexToken('Q', match1);\n    addParseToken('Q', function (input, array) {\n        array[MONTH] = (toInt(input) - 1) * 3;\n    });\n\n    // MOMENTS\n\n    function getSetQuarter(input) {\n        return input == null\n            ? Math.ceil((this.month() + 1) / 3)\n            : this.month((input - 1) * 3 + (this.month() % 3));\n    }\n\n    // FORMATTING\n\n    addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n    // ALIASES\n\n    addUnitAlias('date', 'D');\n\n    // PRIORITY\n    addUnitPriority('date', 9);\n\n    // PARSING\n\n    addRegexToken('D', match1to2);\n    addRegexToken('DD', match1to2, match2);\n    addRegexToken('Do', function (isStrict, locale) {\n        // TODO: Remove \"ordinalParse\" fallback in next major release.\n        return isStrict\n            ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n            : locale._dayOfMonthOrdinalParseLenient;\n    });\n\n    addParseToken(['D', 'DD'], DATE);\n    addParseToken('Do', function (input, array) {\n        array[DATE] = toInt(input.match(match1to2)[0]);\n    });\n\n    // MOMENTS\n\n    var getSetDayOfMonth = makeGetSet('Date', true);\n\n    // FORMATTING\n\n    addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n    // ALIASES\n\n    addUnitAlias('dayOfYear', 'DDD');\n\n    // PRIORITY\n    addUnitPriority('dayOfYear', 4);\n\n    // PARSING\n\n    addRegexToken('DDD', match1to3);\n    addRegexToken('DDDD', match3);\n    addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n        config._dayOfYear = toInt(input);\n    });\n\n    // HELPERS\n\n    // MOMENTS\n\n    function getSetDayOfYear(input) {\n        var dayOfYear =\n            Math.round(\n                (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n            ) + 1;\n        return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n    }\n\n    // FORMATTING\n\n    addFormatToken('m', ['mm', 2], 0, 'minute');\n\n    // ALIASES\n\n    addUnitAlias('minute', 'm');\n\n    // PRIORITY\n\n    addUnitPriority('minute', 14);\n\n    // PARSING\n\n    addRegexToken('m', match1to2);\n    addRegexToken('mm', match1to2, match2);\n    addParseToken(['m', 'mm'], MINUTE);\n\n    // MOMENTS\n\n    var getSetMinute = makeGetSet('Minutes', false);\n\n    // FORMATTING\n\n    addFormatToken('s', ['ss', 2], 0, 'second');\n\n    // ALIASES\n\n    addUnitAlias('second', 's');\n\n    // PRIORITY\n\n    addUnitPriority('second', 15);\n\n    // PARSING\n\n    addRegexToken('s', match1to2);\n    addRegexToken('ss', match1to2, match2);\n    addParseToken(['s', 'ss'], SECOND);\n\n    // MOMENTS\n\n    var getSetSecond = makeGetSet('Seconds', false);\n\n    // FORMATTING\n\n    addFormatToken('S', 0, 0, function () {\n        return ~~(this.millisecond() / 100);\n    });\n\n    addFormatToken(0, ['SS', 2], 0, function () {\n        return ~~(this.millisecond() / 10);\n    });\n\n    addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n    addFormatToken(0, ['SSSS', 4], 0, function () {\n        return this.millisecond() * 10;\n    });\n    addFormatToken(0, ['SSSSS', 5], 0, function () {\n        return this.millisecond() * 100;\n    });\n    addFormatToken(0, ['SSSSSS', 6], 0, function () {\n        return this.millisecond() * 1000;\n    });\n    addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n        return this.millisecond() * 10000;\n    });\n    addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n        return this.millisecond() * 100000;\n    });\n    addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n        return this.millisecond() * 1000000;\n    });\n\n    // ALIASES\n\n    addUnitAlias('millisecond', 'ms');\n\n    // PRIORITY\n\n    addUnitPriority('millisecond', 16);\n\n    // PARSING\n\n    addRegexToken('S', match1to3, match1);\n    addRegexToken('SS', match1to3, match2);\n    addRegexToken('SSS', match1to3, match3);\n\n    var token, getSetMillisecond;\n    for (token = 'SSSS'; token.length <= 9; token += 'S') {\n        addRegexToken(token, matchUnsigned);\n    }\n\n    function parseMs(input, array) {\n        array[MILLISECOND] = toInt(('0.' + input) * 1000);\n    }\n\n    for (token = 'S'; token.length <= 9; token += 'S') {\n        addParseToken(token, parseMs);\n    }\n\n    getSetMillisecond = makeGetSet('Milliseconds', false);\n\n    // FORMATTING\n\n    addFormatToken('z', 0, 0, 'zoneAbbr');\n    addFormatToken('zz', 0, 0, 'zoneName');\n\n    // MOMENTS\n\n    function getZoneAbbr() {\n        return this._isUTC ? 'UTC' : '';\n    }\n\n    function getZoneName() {\n        return this._isUTC ? 'Coordinated Universal Time' : '';\n    }\n\n    var proto = Moment.prototype;\n\n    proto.add = add;\n    proto.calendar = calendar$1;\n    proto.clone = clone;\n    proto.diff = diff;\n    proto.endOf = endOf;\n    proto.format = format;\n    proto.from = from;\n    proto.fromNow = fromNow;\n    proto.to = to;\n    proto.toNow = toNow;\n    proto.get = stringGet;\n    proto.invalidAt = invalidAt;\n    proto.isAfter = isAfter;\n    proto.isBefore = isBefore;\n    proto.isBetween = isBetween;\n    proto.isSame = isSame;\n    proto.isSameOrAfter = isSameOrAfter;\n    proto.isSameOrBefore = isSameOrBefore;\n    proto.isValid = isValid$2;\n    proto.lang = lang;\n    proto.locale = locale;\n    proto.localeData = localeData;\n    proto.max = prototypeMax;\n    proto.min = prototypeMin;\n    proto.parsingFlags = parsingFlags;\n    proto.set = stringSet;\n    proto.startOf = startOf;\n    proto.subtract = subtract;\n    proto.toArray = toArray;\n    proto.toObject = toObject;\n    proto.toDate = toDate;\n    proto.toISOString = toISOString;\n    proto.inspect = inspect;\n    if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n        proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n            return 'Moment<' + this.format() + '>';\n        };\n    }\n    proto.toJSON = toJSON;\n    proto.toString = toString;\n    proto.unix = unix;\n    proto.valueOf = valueOf;\n    proto.creationData = creationData;\n    proto.eraName = getEraName;\n    proto.eraNarrow = getEraNarrow;\n    proto.eraAbbr = getEraAbbr;\n    proto.eraYear = getEraYear;\n    proto.year = getSetYear;\n    proto.isLeapYear = getIsLeapYear;\n    proto.weekYear = getSetWeekYear;\n    proto.isoWeekYear = getSetISOWeekYear;\n    proto.quarter = proto.quarters = getSetQuarter;\n    proto.month = getSetMonth;\n    proto.daysInMonth = getDaysInMonth;\n    proto.week = proto.weeks = getSetWeek;\n    proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n    proto.weeksInYear = getWeeksInYear;\n    proto.weeksInWeekYear = getWeeksInWeekYear;\n    proto.isoWeeksInYear = getISOWeeksInYear;\n    proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n    proto.date = getSetDayOfMonth;\n    proto.day = proto.days = getSetDayOfWeek;\n    proto.weekday = getSetLocaleDayOfWeek;\n    proto.isoWeekday = getSetISODayOfWeek;\n    proto.dayOfYear = getSetDayOfYear;\n    proto.hour = proto.hours = getSetHour;\n    proto.minute = proto.minutes = getSetMinute;\n    proto.second = proto.seconds = getSetSecond;\n    proto.millisecond = proto.milliseconds = getSetMillisecond;\n    proto.utcOffset = getSetOffset;\n    proto.utc = setOffsetToUTC;\n    proto.local = setOffsetToLocal;\n    proto.parseZone = setOffsetToParsedOffset;\n    proto.hasAlignedHourOffset = hasAlignedHourOffset;\n    proto.isDST = isDaylightSavingTime;\n    proto.isLocal = isLocal;\n    proto.isUtcOffset = isUtcOffset;\n    proto.isUtc = isUtc;\n    proto.isUTC = isUtc;\n    proto.zoneAbbr = getZoneAbbr;\n    proto.zoneName = getZoneName;\n    proto.dates = deprecate(\n        'dates accessor is deprecated. Use date instead.',\n        getSetDayOfMonth\n    );\n    proto.months = deprecate(\n        'months accessor is deprecated. Use month instead',\n        getSetMonth\n    );\n    proto.years = deprecate(\n        'years accessor is deprecated. Use year instead',\n        getSetYear\n    );\n    proto.zone = deprecate(\n        'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n        getSetZone\n    );\n    proto.isDSTShifted = deprecate(\n        'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n        isDaylightSavingTimeShifted\n    );\n\n    function createUnix(input) {\n        return createLocal(input * 1000);\n    }\n\n    function createInZone() {\n        return createLocal.apply(null, arguments).parseZone();\n    }\n\n    function preParsePostFormat(string) {\n        return string;\n    }\n\n    var proto$1 = Locale.prototype;\n\n    proto$1.calendar = calendar;\n    proto$1.longDateFormat = longDateFormat;\n    proto$1.invalidDate = invalidDate;\n    proto$1.ordinal = ordinal;\n    proto$1.preparse = preParsePostFormat;\n    proto$1.postformat = preParsePostFormat;\n    proto$1.relativeTime = relativeTime;\n    proto$1.pastFuture = pastFuture;\n    proto$1.set = set;\n    proto$1.eras = localeEras;\n    proto$1.erasParse = localeErasParse;\n    proto$1.erasConvertYear = localeErasConvertYear;\n    proto$1.erasAbbrRegex = erasAbbrRegex;\n    proto$1.erasNameRegex = erasNameRegex;\n    proto$1.erasNarrowRegex = erasNarrowRegex;\n\n    proto$1.months = localeMonths;\n    proto$1.monthsShort = localeMonthsShort;\n    proto$1.monthsParse = localeMonthsParse;\n    proto$1.monthsRegex = monthsRegex;\n    proto$1.monthsShortRegex = monthsShortRegex;\n    proto$1.week = localeWeek;\n    proto$1.firstDayOfYear = localeFirstDayOfYear;\n    proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n    proto$1.weekdays = localeWeekdays;\n    proto$1.weekdaysMin = localeWeekdaysMin;\n    proto$1.weekdaysShort = localeWeekdaysShort;\n    proto$1.weekdaysParse = localeWeekdaysParse;\n\n    proto$1.weekdaysRegex = weekdaysRegex;\n    proto$1.weekdaysShortRegex = weekdaysShortRegex;\n    proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n    proto$1.isPM = localeIsPM;\n    proto$1.meridiem = localeMeridiem;\n\n    function get$1(format, index, field, setter) {\n        var locale = getLocale(),\n            utc = createUTC().set(setter, index);\n        return locale[field](utc, format);\n    }\n\n    function listMonthsImpl(format, index, field) {\n        if (isNumber(format)) {\n            index = format;\n            format = undefined;\n        }\n\n        format = format || '';\n\n        if (index != null) {\n            return get$1(format, index, field, 'month');\n        }\n\n        var i,\n            out = [];\n        for (i = 0; i < 12; i++) {\n            out[i] = get$1(format, i, field, 'month');\n        }\n        return out;\n    }\n\n    // ()\n    // (5)\n    // (fmt, 5)\n    // (fmt)\n    // (true)\n    // (true, 5)\n    // (true, fmt, 5)\n    // (true, fmt)\n    function listWeekdaysImpl(localeSorted, format, index, field) {\n        if (typeof localeSorted === 'boolean') {\n            if (isNumber(format)) {\n                index = format;\n                format = undefined;\n            }\n\n            format = format || '';\n        } else {\n            format = localeSorted;\n            index = format;\n            localeSorted = false;\n\n            if (isNumber(format)) {\n                index = format;\n                format = undefined;\n            }\n\n            format = format || '';\n        }\n\n        var locale = getLocale(),\n            shift = localeSorted ? locale._week.dow : 0,\n            i,\n            out = [];\n\n        if (index != null) {\n            return get$1(format, (index + shift) % 7, field, 'day');\n        }\n\n        for (i = 0; i < 7; i++) {\n            out[i] = get$1(format, (i + shift) % 7, field, 'day');\n        }\n        return out;\n    }\n\n    function listMonths(format, index) {\n        return listMonthsImpl(format, index, 'months');\n    }\n\n    function listMonthsShort(format, index) {\n        return listMonthsImpl(format, index, 'monthsShort');\n    }\n\n    function listWeekdays(localeSorted, format, index) {\n        return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n    }\n\n    function listWeekdaysShort(localeSorted, format, index) {\n        return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n    }\n\n    function listWeekdaysMin(localeSorted, format, index) {\n        return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n    }\n\n    getSetGlobalLocale('en', {\n        eras: [\n            {\n                since: '0001-01-01',\n                until: +Infinity,\n                offset: 1,\n                name: 'Anno Domini',\n                narrow: 'AD',\n                abbr: 'AD',\n            },\n            {\n                since: '0000-12-31',\n                until: -Infinity,\n                offset: 1,\n                name: 'Before Christ',\n                narrow: 'BC',\n                abbr: 'BC',\n            },\n        ],\n        dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    toInt((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                        ? 'st'\n                        : b === 2\n                        ? 'nd'\n                        : b === 3\n                        ? 'rd'\n                        : 'th';\n            return number + output;\n        },\n    });\n\n    // Side effect imports\n\n    hooks.lang = deprecate(\n        'moment.lang is deprecated. Use moment.locale instead.',\n        getSetGlobalLocale\n    );\n    hooks.langData = deprecate(\n        'moment.langData is deprecated. Use moment.localeData instead.',\n        getLocale\n    );\n\n    var mathAbs = Math.abs;\n\n    function abs() {\n        var data = this._data;\n\n        this._milliseconds = mathAbs(this._milliseconds);\n        this._days = mathAbs(this._days);\n        this._months = mathAbs(this._months);\n\n        data.milliseconds = mathAbs(data.milliseconds);\n        data.seconds = mathAbs(data.seconds);\n        data.minutes = mathAbs(data.minutes);\n        data.hours = mathAbs(data.hours);\n        data.months = mathAbs(data.months);\n        data.years = mathAbs(data.years);\n\n        return this;\n    }\n\n    function addSubtract$1(duration, input, value, direction) {\n        var other = createDuration(input, value);\n\n        duration._milliseconds += direction * other._milliseconds;\n        duration._days += direction * other._days;\n        duration._months += direction * other._months;\n\n        return duration._bubble();\n    }\n\n    // supports only 2.0-style add(1, 's') or add(duration)\n    function add$1(input, value) {\n        return addSubtract$1(this, input, value, 1);\n    }\n\n    // supports only 2.0-style subtract(1, 's') or subtract(duration)\n    function subtract$1(input, value) {\n        return addSubtract$1(this, input, value, -1);\n    }\n\n    function absCeil(number) {\n        if (number < 0) {\n            return Math.floor(number);\n        } else {\n            return Math.ceil(number);\n        }\n    }\n\n    function bubble() {\n        var milliseconds = this._milliseconds,\n            days = this._days,\n            months = this._months,\n            data = this._data,\n            seconds,\n            minutes,\n            hours,\n            years,\n            monthsFromDays;\n\n        // if we have a mix of positive and negative values, bubble down first\n        // check: https://github.com/moment/moment/issues/2166\n        if (\n            !(\n                (milliseconds >= 0 && days >= 0 && months >= 0) ||\n                (milliseconds <= 0 && days <= 0 && months <= 0)\n            )\n        ) {\n            milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n            days = 0;\n            months = 0;\n        }\n\n        // The following code bubbles up values, see the tests for\n        // examples of what that means.\n        data.milliseconds = milliseconds % 1000;\n\n        seconds = absFloor(milliseconds / 1000);\n        data.seconds = seconds % 60;\n\n        minutes = absFloor(seconds / 60);\n        data.minutes = minutes % 60;\n\n        hours = absFloor(minutes / 60);\n        data.hours = hours % 24;\n\n        days += absFloor(hours / 24);\n\n        // convert days to months\n        monthsFromDays = absFloor(daysToMonths(days));\n        months += monthsFromDays;\n        days -= absCeil(monthsToDays(monthsFromDays));\n\n        // 12 months -> 1 year\n        years = absFloor(months / 12);\n        months %= 12;\n\n        data.days = days;\n        data.months = months;\n        data.years = years;\n\n        return this;\n    }\n\n    function daysToMonths(days) {\n        // 400 years have 146097 days (taking into account leap year rules)\n        // 400 years have 12 months === 4800\n        return (days * 4800) / 146097;\n    }\n\n    function monthsToDays(months) {\n        // the reverse of daysToMonths\n        return (months * 146097) / 4800;\n    }\n\n    function as(units) {\n        if (!this.isValid()) {\n            return NaN;\n        }\n        var days,\n            months,\n            milliseconds = this._milliseconds;\n\n        units = normalizeUnits(units);\n\n        if (units === 'month' || units === 'quarter' || units === 'year') {\n            days = this._days + milliseconds / 864e5;\n            months = this._months + daysToMonths(days);\n            switch (units) {\n                case 'month':\n                    return months;\n                case 'quarter':\n                    return months / 3;\n                case 'year':\n                    return months / 12;\n            }\n        } else {\n            // handle milliseconds separately because of floating point math errors (issue #1867)\n            days = this._days + Math.round(monthsToDays(this._months));\n            switch (units) {\n                case 'week':\n                    return days / 7 + milliseconds / 6048e5;\n                case 'day':\n                    return days + milliseconds / 864e5;\n                case 'hour':\n                    return days * 24 + milliseconds / 36e5;\n                case 'minute':\n                    return days * 1440 + milliseconds / 6e4;\n                case 'second':\n                    return days * 86400 + milliseconds / 1000;\n                // Math.floor prevents floating point math errors here\n                case 'millisecond':\n                    return Math.floor(days * 864e5) + milliseconds;\n                default:\n                    throw new Error('Unknown unit ' + units);\n            }\n        }\n    }\n\n    // TODO: Use this.as('ms')?\n    function valueOf$1() {\n        if (!this.isValid()) {\n            return NaN;\n        }\n        return (\n            this._milliseconds +\n            this._days * 864e5 +\n            (this._months % 12) * 2592e6 +\n            toInt(this._months / 12) * 31536e6\n        );\n    }\n\n    function makeAs(alias) {\n        return function () {\n            return this.as(alias);\n        };\n    }\n\n    var asMilliseconds = makeAs('ms'),\n        asSeconds = makeAs('s'),\n        asMinutes = makeAs('m'),\n        asHours = makeAs('h'),\n        asDays = makeAs('d'),\n        asWeeks = makeAs('w'),\n        asMonths = makeAs('M'),\n        asQuarters = makeAs('Q'),\n        asYears = makeAs('y');\n\n    function clone$1() {\n        return createDuration(this);\n    }\n\n    function get$2(units) {\n        units = normalizeUnits(units);\n        return this.isValid() ? this[units + 's']() : NaN;\n    }\n\n    function makeGetter(name) {\n        return function () {\n            return this.isValid() ? this._data[name] : NaN;\n        };\n    }\n\n    var milliseconds = makeGetter('milliseconds'),\n        seconds = makeGetter('seconds'),\n        minutes = makeGetter('minutes'),\n        hours = makeGetter('hours'),\n        days = makeGetter('days'),\n        months = makeGetter('months'),\n        years = makeGetter('years');\n\n    function weeks() {\n        return absFloor(this.days() / 7);\n    }\n\n    var round = Math.round,\n        thresholds = {\n            ss: 44, // a few seconds to seconds\n            s: 45, // seconds to minute\n            m: 45, // minutes to hour\n            h: 22, // hours to day\n            d: 26, // days to month/week\n            w: null, // weeks to month\n            M: 11, // months to year\n        };\n\n    // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n    function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n        return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n    }\n\n    function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n        var duration = createDuration(posNegDuration).abs(),\n            seconds = round(duration.as('s')),\n            minutes = round(duration.as('m')),\n            hours = round(duration.as('h')),\n            days = round(duration.as('d')),\n            months = round(duration.as('M')),\n            weeks = round(duration.as('w')),\n            years = round(duration.as('y')),\n            a =\n                (seconds <= thresholds.ss && ['s', seconds]) ||\n                (seconds < thresholds.s && ['ss', seconds]) ||\n                (minutes <= 1 && ['m']) ||\n                (minutes < thresholds.m && ['mm', minutes]) ||\n                (hours <= 1 && ['h']) ||\n                (hours < thresholds.h && ['hh', hours]) ||\n                (days <= 1 && ['d']) ||\n                (days < thresholds.d && ['dd', days]);\n\n        if (thresholds.w != null) {\n            a =\n                a ||\n                (weeks <= 1 && ['w']) ||\n                (weeks < thresholds.w && ['ww', weeks]);\n        }\n        a = a ||\n            (months <= 1 && ['M']) ||\n            (months < thresholds.M && ['MM', months]) ||\n            (years <= 1 && ['y']) || ['yy', years];\n\n        a[2] = withoutSuffix;\n        a[3] = +posNegDuration > 0;\n        a[4] = locale;\n        return substituteTimeAgo.apply(null, a);\n    }\n\n    // This function allows you to set the rounding function for relative time strings\n    function getSetRelativeTimeRounding(roundingFunction) {\n        if (roundingFunction === undefined) {\n            return round;\n        }\n        if (typeof roundingFunction === 'function') {\n            round = roundingFunction;\n            return true;\n        }\n        return false;\n    }\n\n    // This function allows you to set a threshold for relative time strings\n    function getSetRelativeTimeThreshold(threshold, limit) {\n        if (thresholds[threshold] === undefined) {\n            return false;\n        }\n        if (limit === undefined) {\n            return thresholds[threshold];\n        }\n        thresholds[threshold] = limit;\n        if (threshold === 's') {\n            thresholds.ss = limit - 1;\n        }\n        return true;\n    }\n\n    function humanize(argWithSuffix, argThresholds) {\n        if (!this.isValid()) {\n            return this.localeData().invalidDate();\n        }\n\n        var withSuffix = false,\n            th = thresholds,\n            locale,\n            output;\n\n        if (typeof argWithSuffix === 'object') {\n            argThresholds = argWithSuffix;\n            argWithSuffix = false;\n        }\n        if (typeof argWithSuffix === 'boolean') {\n            withSuffix = argWithSuffix;\n        }\n        if (typeof argThresholds === 'object') {\n            th = Object.assign({}, thresholds, argThresholds);\n            if (argThresholds.s != null && argThresholds.ss == null) {\n                th.ss = argThresholds.s - 1;\n            }\n        }\n\n        locale = this.localeData();\n        output = relativeTime$1(this, !withSuffix, th, locale);\n\n        if (withSuffix) {\n            output = locale.pastFuture(+this, output);\n        }\n\n        return locale.postformat(output);\n    }\n\n    var abs$1 = Math.abs;\n\n    function sign(x) {\n        return (x > 0) - (x < 0) || +x;\n    }\n\n    function toISOString$1() {\n        // for ISO strings we do not use the normal bubbling rules:\n        //  * milliseconds bubble up until they become hours\n        //  * days do not bubble at all\n        //  * months bubble up until they become years\n        // This is because there is no context-free conversion between hours and days\n        // (think of clock changes)\n        // and also not between days and months (28-31 days per month)\n        if (!this.isValid()) {\n            return this.localeData().invalidDate();\n        }\n\n        var seconds = abs$1(this._milliseconds) / 1000,\n            days = abs$1(this._days),\n            months = abs$1(this._months),\n            minutes,\n            hours,\n            years,\n            s,\n            total = this.asSeconds(),\n            totalSign,\n            ymSign,\n            daysSign,\n            hmsSign;\n\n        if (!total) {\n            // this is the same as C#'s (Noda) and python (isodate)...\n            // but not other JS (goog.date)\n            return 'P0D';\n        }\n\n        // 3600 seconds -> 60 minutes -> 1 hour\n        minutes = absFloor(seconds / 60);\n        hours = absFloor(minutes / 60);\n        seconds %= 60;\n        minutes %= 60;\n\n        // 12 months -> 1 year\n        years = absFloor(months / 12);\n        months %= 12;\n\n        // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n        s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n        totalSign = total < 0 ? '-' : '';\n        ymSign = sign(this._months) !== sign(total) ? '-' : '';\n        daysSign = sign(this._days) !== sign(total) ? '-' : '';\n        hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n        return (\n            totalSign +\n            'P' +\n            (years ? ymSign + years + 'Y' : '') +\n            (months ? ymSign + months + 'M' : '') +\n            (days ? daysSign + days + 'D' : '') +\n            (hours || minutes || seconds ? 'T' : '') +\n            (hours ? hmsSign + hours + 'H' : '') +\n            (minutes ? hmsSign + minutes + 'M' : '') +\n            (seconds ? hmsSign + s + 'S' : '')\n        );\n    }\n\n    var proto$2 = Duration.prototype;\n\n    proto$2.isValid = isValid$1;\n    proto$2.abs = abs;\n    proto$2.add = add$1;\n    proto$2.subtract = subtract$1;\n    proto$2.as = as;\n    proto$2.asMilliseconds = asMilliseconds;\n    proto$2.asSeconds = asSeconds;\n    proto$2.asMinutes = asMinutes;\n    proto$2.asHours = asHours;\n    proto$2.asDays = asDays;\n    proto$2.asWeeks = asWeeks;\n    proto$2.asMonths = asMonths;\n    proto$2.asQuarters = asQuarters;\n    proto$2.asYears = asYears;\n    proto$2.valueOf = valueOf$1;\n    proto$2._bubble = bubble;\n    proto$2.clone = clone$1;\n    proto$2.get = get$2;\n    proto$2.milliseconds = milliseconds;\n    proto$2.seconds = seconds;\n    proto$2.minutes = minutes;\n    proto$2.hours = hours;\n    proto$2.days = days;\n    proto$2.weeks = weeks;\n    proto$2.months = months;\n    proto$2.years = years;\n    proto$2.humanize = humanize;\n    proto$2.toISOString = toISOString$1;\n    proto$2.toString = toISOString$1;\n    proto$2.toJSON = toISOString$1;\n    proto$2.locale = locale;\n    proto$2.localeData = localeData;\n\n    proto$2.toIsoString = deprecate(\n        'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n        toISOString$1\n    );\n    proto$2.lang = lang;\n\n    // FORMATTING\n\n    addFormatToken('X', 0, 0, 'unix');\n    addFormatToken('x', 0, 0, 'valueOf');\n\n    // PARSING\n\n    addRegexToken('x', matchSigned);\n    addRegexToken('X', matchTimestamp);\n    addParseToken('X', function (input, array, config) {\n        config._d = new Date(parseFloat(input) * 1000);\n    });\n    addParseToken('x', function (input, array, config) {\n        config._d = new Date(toInt(input));\n    });\n\n    //! moment.js\n\n    hooks.version = '2.29.1';\n\n    setHookCallback(createLocal);\n\n    hooks.fn = proto;\n    hooks.min = min;\n    hooks.max = max;\n    hooks.now = now;\n    hooks.utc = createUTC;\n    hooks.unix = createUnix;\n    hooks.months = listMonths;\n    hooks.isDate = isDate;\n    hooks.locale = getSetGlobalLocale;\n    hooks.invalid = createInvalid;\n    hooks.duration = createDuration;\n    hooks.isMoment = isMoment;\n    hooks.weekdays = listWeekdays;\n    hooks.parseZone = createInZone;\n    hooks.localeData = getLocale;\n    hooks.isDuration = isDuration;\n    hooks.monthsShort = listMonthsShort;\n    hooks.weekdaysMin = listWeekdaysMin;\n    hooks.defineLocale = defineLocale;\n    hooks.updateLocale = updateLocale;\n    hooks.locales = listLocales;\n    hooks.weekdaysShort = listWeekdaysShort;\n    hooks.normalizeUnits = normalizeUnits;\n    hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n    hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n    hooks.calendarFormat = getCalendarFormat;\n    hooks.prototype = proto;\n\n    // currently HTML5 input type only supports 24-hour formats\n    hooks.HTML5_FMT = {\n        DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // <input type=\"datetime-local\" />\n        DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // <input type=\"datetime-local\" step=\"1\" />\n        DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // <input type=\"datetime-local\" step=\"0.001\" />\n        DATE: 'YYYY-MM-DD', // <input type=\"date\" />\n        TIME: 'HH:mm', // <input type=\"time\" />\n        TIME_SECONDS: 'HH:mm:ss', // <input type=\"time\" step=\"1\" />\n        TIME_MS: 'HH:mm:ss.SSS', // <input type=\"time\" step=\"0.001\" />\n        WEEK: 'GGGG-[W]WW', // <input type=\"week\" />\n        MONTH: 'YYYY-MM', // <input type=\"month\" />\n    };\n\n    return hooks;\n\n})));\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things.  But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals.  It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n    throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n    throw new Error('clearTimeout has not been defined');\n}\n(function () {\n    try {\n        if (typeof setTimeout === 'function') {\n            cachedSetTimeout = setTimeout;\n        } else {\n            cachedSetTimeout = defaultSetTimout;\n        }\n    } catch (e) {\n        cachedSetTimeout = defaultSetTimout;\n    }\n    try {\n        if (typeof clearTimeout === 'function') {\n            cachedClearTimeout = clearTimeout;\n        } else {\n            cachedClearTimeout = defaultClearTimeout;\n        }\n    } catch (e) {\n        cachedClearTimeout = defaultClearTimeout;\n    }\n} ())\nfunction runTimeout(fun) {\n    if (cachedSetTimeout === setTimeout) {\n        //normal enviroments in sane situations\n        return setTimeout(fun, 0);\n    }\n    // if setTimeout wasn't available but was latter defined\n    if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n        cachedSetTimeout = setTimeout;\n        return setTimeout(fun, 0);\n    }\n    try {\n        // when when somebody has screwed with setTimeout but no I.E. maddness\n        return cachedSetTimeout(fun, 0);\n    } catch(e){\n        try {\n            // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n            return cachedSetTimeout.call(null, fun, 0);\n        } catch(e){\n            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n            return cachedSetTimeout.call(this, fun, 0);\n        }\n    }\n\n\n}\nfunction runClearTimeout(marker) {\n    if (cachedClearTimeout === clearTimeout) {\n        //normal enviroments in sane situations\n        return clearTimeout(marker);\n    }\n    // if clearTimeout wasn't available but was latter defined\n    if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n        cachedClearTimeout = clearTimeout;\n        return clearTimeout(marker);\n    }\n    try {\n        // when when somebody has screwed with setTimeout but no I.E. maddness\n        return cachedClearTimeout(marker);\n    } catch (e){\n        try {\n            // When we are in I.E. but the script has been evaled so I.E. doesn't  trust the global object when called normally\n            return cachedClearTimeout.call(null, marker);\n        } catch (e){\n            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n            // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n            return cachedClearTimeout.call(this, marker);\n        }\n    }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n    if (!draining || !currentQueue) {\n        return;\n    }\n    draining = false;\n    if (currentQueue.length) {\n        queue = currentQueue.concat(queue);\n    } else {\n        queueIndex = -1;\n    }\n    if (queue.length) {\n        drainQueue();\n    }\n}\n\nfunction drainQueue() {\n    if (draining) {\n        return;\n    }\n    var timeout = runTimeout(cleanUpNextTick);\n    draining = true;\n\n    var len = queue.length;\n    while(len) {\n        currentQueue = queue;\n        queue = [];\n        while (++queueIndex < len) {\n            if (currentQueue) {\n                currentQueue[queueIndex].run();\n            }\n        }\n        queueIndex = -1;\n        len = queue.length;\n    }\n    currentQueue = null;\n    draining = false;\n    runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n    var args = new Array(arguments.length - 1);\n    if (arguments.length > 1) {\n        for (var i = 1; i < arguments.length; i++) {\n            args[i - 1] = arguments[i];\n        }\n    }\n    queue.push(new Item(fun, args));\n    if (queue.length === 1 && !draining) {\n        runTimeout(drainQueue);\n    }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n    this.fun = fun;\n    this.array = array;\n}\nItem.prototype.run = function () {\n    this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n    throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n    throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","/*!\n  * Bootstrap v4.6.0 (https://getbootstrap.com/)\n  * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n  */\n(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('jquery'), require('popper.js')) :\n  typeof define === 'function' && define.amd ? define(['exports', 'jquery', 'popper.js'], factory) :\n  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.bootstrap = {}, global.jQuery, global.Popper));\n}(this, (function (exports, $, Popper) { 'use strict';\n\n  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\n  var $__default = /*#__PURE__*/_interopDefaultLegacy($);\n  var Popper__default = /*#__PURE__*/_interopDefaultLegacy(Popper);\n\n  function _defineProperties(target, props) {\n    for (var i = 0; i < props.length; i++) {\n      var descriptor = props[i];\n      descriptor.enumerable = descriptor.enumerable || false;\n      descriptor.configurable = true;\n      if (\"value\" in descriptor) descriptor.writable = true;\n      Object.defineProperty(target, descriptor.key, descriptor);\n    }\n  }\n\n  function _createClass(Constructor, protoProps, staticProps) {\n    if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n    if (staticProps) _defineProperties(Constructor, staticProps);\n    return Constructor;\n  }\n\n  function _extends() {\n    _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    return _extends.apply(this, arguments);\n  }\n\n  function _inheritsLoose(subClass, superClass) {\n    subClass.prototype = Object.create(superClass.prototype);\n    subClass.prototype.constructor = subClass;\n    subClass.__proto__ = superClass;\n  }\n\n  /**\n   * --------------------------------------------------------------------------\n   * Bootstrap (v4.6.0): util.js\n   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n   * --------------------------------------------------------------------------\n   */\n  /**\n   * ------------------------------------------------------------------------\n   * Private TransitionEnd Helpers\n   * ------------------------------------------------------------------------\n   */\n\n  var TRANSITION_END = 'transitionend';\n  var MAX_UID = 1000000;\n  var MILLISECONDS_MULTIPLIER = 1000; // Shoutout AngusCroll (https://goo.gl/pxwQGp)\n\n  function toType(obj) {\n    if (obj === null || typeof obj === 'undefined') {\n      return \"\" + obj;\n    }\n\n    return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase();\n  }\n\n  function getSpecialTransitionEndEvent() {\n    return {\n      bindType: TRANSITION_END,\n      delegateType: TRANSITION_END,\n      handle: function handle(event) {\n        if ($__default['default'](event.target).is(this)) {\n          return event.handleObj.handler.apply(this, arguments); // eslint-disable-line prefer-rest-params\n        }\n\n        return undefined;\n      }\n    };\n  }\n\n  function transitionEndEmulator(duration) {\n    var _this = this;\n\n    var called = false;\n    $__default['default'](this).one(Util.TRANSITION_END, function () {\n      called = true;\n    });\n    setTimeout(function () {\n      if (!called) {\n        Util.triggerTransitionEnd(_this);\n      }\n    }, duration);\n    return this;\n  }\n\n  function setTransitionEndSupport() {\n    $__default['default'].fn.emulateTransitionEnd = transitionEndEmulator;\n    $__default['default'].event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent();\n  }\n  /**\n   * --------------------------------------------------------------------------\n   * Public Util Api\n   * --------------------------------------------------------------------------\n   */\n\n\n  var Util = {\n    TRANSITION_END: 'bsTransitionEnd',\n    getUID: function getUID(prefix) {\n      do {\n        prefix += ~~(Math.random() * MAX_UID); // \"~~\" acts like a faster Math.floor() here\n      } while (document.getElementById(prefix));\n\n      return prefix;\n    },\n    getSelectorFromElement: function getSelectorFromElement(element) {\n      var selector = element.getAttribute('data-target');\n\n      if (!selector || selector === '#') {\n        var hrefAttr = element.getAttribute('href');\n        selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : '';\n      }\n\n      try {\n        return document.querySelector(selector) ? selector : null;\n      } catch (_) {\n        return null;\n      }\n    },\n    getTransitionDurationFromElement: function getTransitionDurationFromElement(element) {\n      if (!element) {\n        return 0;\n      } // Get transition-duration of the element\n\n\n      var transitionDuration = $__default['default'](element).css('transition-duration');\n      var transitionDelay = $__default['default'](element).css('transition-delay');\n      var floatTransitionDuration = parseFloat(transitionDuration);\n      var floatTransitionDelay = parseFloat(transitionDelay); // Return 0 if element or transition duration is not found\n\n      if (!floatTransitionDuration && !floatTransitionDelay) {\n        return 0;\n      } // If multiple durations are defined, take the first\n\n\n      transitionDuration = transitionDuration.split(',')[0];\n      transitionDelay = transitionDelay.split(',')[0];\n      return (parseFloat(transitionDuration) + parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;\n    },\n    reflow: function reflow(element) {\n      return element.offsetHeight;\n    },\n    triggerTransitionEnd: function triggerTransitionEnd(element) {\n      $__default['default'](element).trigger(TRANSITION_END);\n    },\n    supportsTransitionEnd: function supportsTransitionEnd() {\n      return Boolean(TRANSITION_END);\n    },\n    isElement: function isElement(obj) {\n      return (obj[0] || obj).nodeType;\n    },\n    typeCheckConfig: function typeCheckConfig(componentName, config, configTypes) {\n      for (var property in configTypes) {\n        if (Object.prototype.hasOwnProperty.call(configTypes, property)) {\n          var expectedTypes = configTypes[property];\n          var value = config[property];\n          var valueType = value && Util.isElement(value) ? 'element' : toType(value);\n\n          if (!new RegExp(expectedTypes).test(valueType)) {\n            throw new Error(componentName.toUpperCase() + \": \" + (\"Option \\\"\" + property + \"\\\" provided type \\\"\" + valueType + \"\\\" \") + (\"but expected type \\\"\" + expectedTypes + \"\\\".\"));\n          }\n        }\n      }\n    },\n    findShadowRoot: function findShadowRoot(element) {\n      if (!document.documentElement.attachShadow) {\n        return null;\n      } // Can find the shadow root otherwise it'll return the document\n\n\n      if (typeof element.getRootNode === 'function') {\n        var root = element.getRootNode();\n        return root instanceof ShadowRoot ? root : null;\n      }\n\n      if (element instanceof ShadowRoot) {\n        return element;\n      } // when we don't find a shadow root\n\n\n      if (!element.parentNode) {\n        return null;\n      }\n\n      return Util.findShadowRoot(element.parentNode);\n    },\n    jQueryDetection: function jQueryDetection() {\n      if (typeof $__default['default'] === 'undefined') {\n        throw new TypeError('Bootstrap\\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\\'s JavaScript.');\n      }\n\n      var version = $__default['default'].fn.jquery.split(' ')[0].split('.');\n      var minMajor = 1;\n      var ltMajor = 2;\n      var minMinor = 9;\n      var minPatch = 1;\n      var maxMajor = 4;\n\n      if (version[0] < ltMajor && version[1] < minMinor || version[0] === minMajor && version[1] === minMinor && version[2] < minPatch || version[0] >= maxMajor) {\n        throw new Error('Bootstrap\\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0');\n      }\n    }\n  };\n  Util.jQueryDetection();\n  setTransitionEndSupport();\n\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  var NAME = 'alert';\n  var VERSION = '4.6.0';\n  var DATA_KEY = 'bs.alert';\n  var EVENT_KEY = \".\" + DATA_KEY;\n  var DATA_API_KEY = '.data-api';\n  var JQUERY_NO_CONFLICT = $__default['default'].fn[NAME];\n  var SELECTOR_DISMISS = '[data-dismiss=\"alert\"]';\n  var EVENT_CLOSE = \"close\" + EVENT_KEY;\n  var EVENT_CLOSED = \"closed\" + EVENT_KEY;\n  var EVENT_CLICK_DATA_API = \"click\" + EVENT_KEY + DATA_API_KEY;\n  var CLASS_NAME_ALERT = 'alert';\n  var CLASS_NAME_FADE = 'fade';\n  var CLASS_NAME_SHOW = 'show';\n  /**\n   * ------------------------------------------------------------------------\n   * Class Definition\n   * ------------------------------------------------------------------------\n   */\n\n  var Alert = /*#__PURE__*/function () {\n    function Alert(element) {\n      this._element = element;\n    } // Getters\n\n\n    var _proto = Alert.prototype;\n\n    // Public\n    _proto.close = function close(element) {\n      var rootElement = this._element;\n\n      if (element) {\n        rootElement = this._getRootElement(element);\n      }\n\n      var customEvent = this._triggerCloseEvent(rootElement);\n\n      if (customEvent.isDefaultPrevented()) {\n        return;\n      }\n\n      this._removeElement(rootElement);\n    };\n\n    _proto.dispose = function dispose() {\n      $__default['default'].removeData(this._element, DATA_KEY);\n      this._element = null;\n    } // Private\n    ;\n\n    _proto._getRootElement = function _getRootElement(element) {\n      var selector = Util.getSelectorFromElement(element);\n      var parent = false;\n\n      if (selector) {\n        parent = document.querySelector(selector);\n      }\n\n      if (!parent) {\n        parent = $__default['default'](element).closest(\".\" + CLASS_NAME_ALERT)[0];\n      }\n\n      return parent;\n    };\n\n    _proto._triggerCloseEvent = function _triggerCloseEvent(element) {\n      var closeEvent = $__default['default'].Event(EVENT_CLOSE);\n      $__default['default'](element).trigger(closeEvent);\n      return closeEvent;\n    };\n\n    _proto._removeElement = function _removeElement(element) {\n      var _this = this;\n\n      $__default['default'](element).removeClass(CLASS_NAME_SHOW);\n\n      if (!$__default['default'](element).hasClass(CLASS_NAME_FADE)) {\n        this._destroyElement(element);\n\n        return;\n      }\n\n      var transitionDuration = Util.getTransitionDurationFromElement(element);\n      $__default['default'](element).one(Util.TRANSITION_END, function (event) {\n        return _this._destroyElement(element, event);\n      }).emulateTransitionEnd(transitionDuration);\n    };\n\n    _proto._destroyElement = function _destroyElement(element) {\n      $__default['default'](element).detach().trigger(EVENT_CLOSED).remove();\n    } // Static\n    ;\n\n    Alert._jQueryInterface = function _jQueryInterface(config) {\n      return this.each(function () {\n        var $element = $__default['default'](this);\n        var data = $element.data(DATA_KEY);\n\n        if (!data) {\n          data = new Alert(this);\n          $element.data(DATA_KEY, data);\n        }\n\n        if (config === 'close') {\n          data[config](this);\n        }\n      });\n    };\n\n    Alert._handleDismiss = function _handleDismiss(alertInstance) {\n      return function (event) {\n        if (event) {\n          event.preventDefault();\n        }\n\n        alertInstance.close(this);\n      };\n    };\n\n    _createClass(Alert, null, [{\n      key: \"VERSION\",\n      get: function get() {\n        return VERSION;\n      }\n    }]);\n\n    return Alert;\n  }();\n  /**\n   * ------------------------------------------------------------------------\n   * Data Api implementation\n   * ------------------------------------------------------------------------\n   */\n\n\n  $__default['default'](document).on(EVENT_CLICK_DATA_API, SELECTOR_DISMISS, Alert._handleDismiss(new Alert()));\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   */\n\n  $__default['default'].fn[NAME] = Alert._jQueryInterface;\n  $__default['default'].fn[NAME].Constructor = Alert;\n\n  $__default['default'].fn[NAME].noConflict = function () {\n    $__default['default'].fn[NAME] = JQUERY_NO_CONFLICT;\n    return Alert._jQueryInterface;\n  };\n\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  var NAME$1 = 'button';\n  var VERSION$1 = '4.6.0';\n  var DATA_KEY$1 = 'bs.button';\n  var EVENT_KEY$1 = \".\" + DATA_KEY$1;\n  var DATA_API_KEY$1 = '.data-api';\n  var JQUERY_NO_CONFLICT$1 = $__default['default'].fn[NAME$1];\n  var CLASS_NAME_ACTIVE = 'active';\n  var CLASS_NAME_BUTTON = 'btn';\n  var CLASS_NAME_FOCUS = 'focus';\n  var SELECTOR_DATA_TOGGLE_CARROT = '[data-toggle^=\"button\"]';\n  var SELECTOR_DATA_TOGGLES = '[data-toggle=\"buttons\"]';\n  var SELECTOR_DATA_TOGGLE = '[data-toggle=\"button\"]';\n  var SELECTOR_DATA_TOGGLES_BUTTONS = '[data-toggle=\"buttons\"] .btn';\n  var SELECTOR_INPUT = 'input:not([type=\"hidden\"])';\n  var SELECTOR_ACTIVE = '.active';\n  var SELECTOR_BUTTON = '.btn';\n  var EVENT_CLICK_DATA_API$1 = \"click\" + EVENT_KEY$1 + DATA_API_KEY$1;\n  var EVENT_FOCUS_BLUR_DATA_API = \"focus\" + EVENT_KEY$1 + DATA_API_KEY$1 + \" \" + (\"blur\" + EVENT_KEY$1 + DATA_API_KEY$1);\n  var EVENT_LOAD_DATA_API = \"load\" + EVENT_KEY$1 + DATA_API_KEY$1;\n  /**\n   * ------------------------------------------------------------------------\n   * Class Definition\n   * ------------------------------------------------------------------------\n   */\n\n  var Button = /*#__PURE__*/function () {\n    function Button(element) {\n      this._element = element;\n      this.shouldAvoidTriggerChange = false;\n    } // Getters\n\n\n    var _proto = Button.prototype;\n\n    // Public\n    _proto.toggle = function toggle() {\n      var triggerChangeEvent = true;\n      var addAriaPressed = true;\n      var rootElement = $__default['default'](this._element).closest(SELECTOR_DATA_TOGGLES)[0];\n\n      if (rootElement) {\n        var input = this._element.querySelector(SELECTOR_INPUT);\n\n        if (input) {\n          if (input.type === 'radio') {\n            if (input.checked && this._element.classList.contains(CLASS_NAME_ACTIVE)) {\n              triggerChangeEvent = false;\n            } else {\n              var activeElement = rootElement.querySelector(SELECTOR_ACTIVE);\n\n              if (activeElement) {\n                $__default['default'](activeElement).removeClass(CLASS_NAME_ACTIVE);\n              }\n            }\n          }\n\n          if (triggerChangeEvent) {\n            // if it's not a radio button or checkbox don't add a pointless/invalid checked property to the input\n            if (input.type === 'checkbox' || input.type === 'radio') {\n              input.checked = !this._element.classList.contains(CLASS_NAME_ACTIVE);\n            }\n\n            if (!this.shouldAvoidTriggerChange) {\n              $__default['default'](input).trigger('change');\n            }\n          }\n\n          input.focus();\n          addAriaPressed = false;\n        }\n      }\n\n      if (!(this._element.hasAttribute('disabled') || this._element.classList.contains('disabled'))) {\n        if (addAriaPressed) {\n          this._element.setAttribute('aria-pressed', !this._element.classList.contains(CLASS_NAME_ACTIVE));\n        }\n\n        if (triggerChangeEvent) {\n          $__default['default'](this._element).toggleClass(CLASS_NAME_ACTIVE);\n        }\n      }\n    };\n\n    _proto.dispose = function dispose() {\n      $__default['default'].removeData(this._element, DATA_KEY$1);\n      this._element = null;\n    } // Static\n    ;\n\n    Button._jQueryInterface = function _jQueryInterface(config, avoidTriggerChange) {\n      return this.each(function () {\n        var $element = $__default['default'](this);\n        var data = $element.data(DATA_KEY$1);\n\n        if (!data) {\n          data = new Button(this);\n          $element.data(DATA_KEY$1, data);\n        }\n\n        data.shouldAvoidTriggerChange = avoidTriggerChange;\n\n        if (config === 'toggle') {\n          data[config]();\n        }\n      });\n    };\n\n    _createClass(Button, null, [{\n      key: \"VERSION\",\n      get: function get() {\n        return VERSION$1;\n      }\n    }]);\n\n    return Button;\n  }();\n  /**\n   * ------------------------------------------------------------------------\n   * Data Api implementation\n   * ------------------------------------------------------------------------\n   */\n\n\n  $__default['default'](document).on(EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE_CARROT, function (event) {\n    var button = event.target;\n    var initialButton = button;\n\n    if (!$__default['default'](button).hasClass(CLASS_NAME_BUTTON)) {\n      button = $__default['default'](button).closest(SELECTOR_BUTTON)[0];\n    }\n\n    if (!button || button.hasAttribute('disabled') || button.classList.contains('disabled')) {\n      event.preventDefault(); // work around Firefox bug #1540995\n    } else {\n      var inputBtn = button.querySelector(SELECTOR_INPUT);\n\n      if (inputBtn && (inputBtn.hasAttribute('disabled') || inputBtn.classList.contains('disabled'))) {\n        event.preventDefault(); // work around Firefox bug #1540995\n\n        return;\n      }\n\n      if (initialButton.tagName === 'INPUT' || button.tagName !== 'LABEL') {\n        Button._jQueryInterface.call($__default['default'](button), 'toggle', initialButton.tagName === 'INPUT');\n      }\n    }\n  }).on(EVENT_FOCUS_BLUR_DATA_API, SELECTOR_DATA_TOGGLE_CARROT, function (event) {\n    var button = $__default['default'](event.target).closest(SELECTOR_BUTTON)[0];\n    $__default['default'](button).toggleClass(CLASS_NAME_FOCUS, /^focus(in)?$/.test(event.type));\n  });\n  $__default['default'](window).on(EVENT_LOAD_DATA_API, function () {\n    // ensure correct active class is set to match the controls' actual values/states\n    // find all checkboxes/readio buttons inside data-toggle groups\n    var buttons = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLES_BUTTONS));\n\n    for (var i = 0, len = buttons.length; i < len; i++) {\n      var button = buttons[i];\n      var input = button.querySelector(SELECTOR_INPUT);\n\n      if (input.checked || input.hasAttribute('checked')) {\n        button.classList.add(CLASS_NAME_ACTIVE);\n      } else {\n        button.classList.remove(CLASS_NAME_ACTIVE);\n      }\n    } // find all button toggles\n\n\n    buttons = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE));\n\n    for (var _i = 0, _len = buttons.length; _i < _len; _i++) {\n      var _button = buttons[_i];\n\n      if (_button.getAttribute('aria-pressed') === 'true') {\n        _button.classList.add(CLASS_NAME_ACTIVE);\n      } else {\n        _button.classList.remove(CLASS_NAME_ACTIVE);\n      }\n    }\n  });\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   */\n\n  $__default['default'].fn[NAME$1] = Button._jQueryInterface;\n  $__default['default'].fn[NAME$1].Constructor = Button;\n\n  $__default['default'].fn[NAME$1].noConflict = function () {\n    $__default['default'].fn[NAME$1] = JQUERY_NO_CONFLICT$1;\n    return Button._jQueryInterface;\n  };\n\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  var NAME$2 = 'carousel';\n  var VERSION$2 = '4.6.0';\n  var DATA_KEY$2 = 'bs.carousel';\n  var EVENT_KEY$2 = \".\" + DATA_KEY$2;\n  var DATA_API_KEY$2 = '.data-api';\n  var JQUERY_NO_CONFLICT$2 = $__default['default'].fn[NAME$2];\n  var ARROW_LEFT_KEYCODE = 37; // KeyboardEvent.which value for left arrow key\n\n  var ARROW_RIGHT_KEYCODE = 39; // KeyboardEvent.which value for right arrow key\n\n  var TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch\n\n  var SWIPE_THRESHOLD = 40;\n  var Default = {\n    interval: 5000,\n    keyboard: true,\n    slide: false,\n    pause: 'hover',\n    wrap: true,\n    touch: true\n  };\n  var DefaultType = {\n    interval: '(number|boolean)',\n    keyboard: 'boolean',\n    slide: '(boolean|string)',\n    pause: '(string|boolean)',\n    wrap: 'boolean',\n    touch: 'boolean'\n  };\n  var DIRECTION_NEXT = 'next';\n  var DIRECTION_PREV = 'prev';\n  var DIRECTION_LEFT = 'left';\n  var DIRECTION_RIGHT = 'right';\n  var EVENT_SLIDE = \"slide\" + EVENT_KEY$2;\n  var EVENT_SLID = \"slid\" + EVENT_KEY$2;\n  var EVENT_KEYDOWN = \"keydown\" + EVENT_KEY$2;\n  var EVENT_MOUSEENTER = \"mouseenter\" + EVENT_KEY$2;\n  var EVENT_MOUSELEAVE = \"mouseleave\" + EVENT_KEY$2;\n  var EVENT_TOUCHSTART = \"touchstart\" + EVENT_KEY$2;\n  var EVENT_TOUCHMOVE = \"touchmove\" + EVENT_KEY$2;\n  var EVENT_TOUCHEND = \"touchend\" + EVENT_KEY$2;\n  var EVENT_POINTERDOWN = \"pointerdown\" + EVENT_KEY$2;\n  var EVENT_POINTERUP = \"pointerup\" + EVENT_KEY$2;\n  var EVENT_DRAG_START = \"dragstart\" + EVENT_KEY$2;\n  var EVENT_LOAD_DATA_API$1 = \"load\" + EVENT_KEY$2 + DATA_API_KEY$2;\n  var EVENT_CLICK_DATA_API$2 = \"click\" + EVENT_KEY$2 + DATA_API_KEY$2;\n  var CLASS_NAME_CAROUSEL = 'carousel';\n  var CLASS_NAME_ACTIVE$1 = 'active';\n  var CLASS_NAME_SLIDE = 'slide';\n  var CLASS_NAME_RIGHT = 'carousel-item-right';\n  var CLASS_NAME_LEFT = 'carousel-item-left';\n  var CLASS_NAME_NEXT = 'carousel-item-next';\n  var CLASS_NAME_PREV = 'carousel-item-prev';\n  var CLASS_NAME_POINTER_EVENT = 'pointer-event';\n  var SELECTOR_ACTIVE$1 = '.active';\n  var SELECTOR_ACTIVE_ITEM = '.active.carousel-item';\n  var SELECTOR_ITEM = '.carousel-item';\n  var SELECTOR_ITEM_IMG = '.carousel-item img';\n  var SELECTOR_NEXT_PREV = '.carousel-item-next, .carousel-item-prev';\n  var SELECTOR_INDICATORS = '.carousel-indicators';\n  var SELECTOR_DATA_SLIDE = '[data-slide], [data-slide-to]';\n  var SELECTOR_DATA_RIDE = '[data-ride=\"carousel\"]';\n  var PointerType = {\n    TOUCH: 'touch',\n    PEN: 'pen'\n  };\n  /**\n   * ------------------------------------------------------------------------\n   * Class Definition\n   * ------------------------------------------------------------------------\n   */\n\n  var Carousel = /*#__PURE__*/function () {\n    function Carousel(element, config) {\n      this._items = null;\n      this._interval = null;\n      this._activeElement = null;\n      this._isPaused = false;\n      this._isSliding = false;\n      this.touchTimeout = null;\n      this.touchStartX = 0;\n      this.touchDeltaX = 0;\n      this._config = this._getConfig(config);\n      this._element = element;\n      this._indicatorsElement = this._element.querySelector(SELECTOR_INDICATORS);\n      this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0;\n      this._pointerEvent = Boolean(window.PointerEvent || window.MSPointerEvent);\n\n      this._addEventListeners();\n    } // Getters\n\n\n    var _proto = Carousel.prototype;\n\n    // Public\n    _proto.next = function next() {\n      if (!this._isSliding) {\n        this._slide(DIRECTION_NEXT);\n      }\n    };\n\n    _proto.nextWhenVisible = function nextWhenVisible() {\n      var $element = $__default['default'](this._element); // Don't call next when the page isn't visible\n      // or the carousel or its parent isn't visible\n\n      if (!document.hidden && $element.is(':visible') && $element.css('visibility') !== 'hidden') {\n        this.next();\n      }\n    };\n\n    _proto.prev = function prev() {\n      if (!this._isSliding) {\n        this._slide(DIRECTION_PREV);\n      }\n    };\n\n    _proto.pause = function pause(event) {\n      if (!event) {\n        this._isPaused = true;\n      }\n\n      if (this._element.querySelector(SELECTOR_NEXT_PREV)) {\n        Util.triggerTransitionEnd(this._element);\n        this.cycle(true);\n      }\n\n      clearInterval(this._interval);\n      this._interval = null;\n    };\n\n    _proto.cycle = function cycle(event) {\n      if (!event) {\n        this._isPaused = false;\n      }\n\n      if (this._interval) {\n        clearInterval(this._interval);\n        this._interval = null;\n      }\n\n      if (this._config.interval && !this._isPaused) {\n        this._updateInterval();\n\n        this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval);\n      }\n    };\n\n    _proto.to = function to(index) {\n      var _this = this;\n\n      this._activeElement = this._element.querySelector(SELECTOR_ACTIVE_ITEM);\n\n      var activeIndex = this._getItemIndex(this._activeElement);\n\n      if (index > this._items.length - 1 || index < 0) {\n        return;\n      }\n\n      if (this._isSliding) {\n        $__default['default'](this._element).one(EVENT_SLID, function () {\n          return _this.to(index);\n        });\n        return;\n      }\n\n      if (activeIndex === index) {\n        this.pause();\n        this.cycle();\n        return;\n      }\n\n      var direction = index > activeIndex ? DIRECTION_NEXT : DIRECTION_PREV;\n\n      this._slide(direction, this._items[index]);\n    };\n\n    _proto.dispose = function dispose() {\n      $__default['default'](this._element).off(EVENT_KEY$2);\n      $__default['default'].removeData(this._element, DATA_KEY$2);\n      this._items = null;\n      this._config = null;\n      this._element = null;\n      this._interval = null;\n      this._isPaused = null;\n      this._isSliding = null;\n      this._activeElement = null;\n      this._indicatorsElement = null;\n    } // Private\n    ;\n\n    _proto._getConfig = function _getConfig(config) {\n      config = _extends({}, Default, config);\n      Util.typeCheckConfig(NAME$2, config, DefaultType);\n      return config;\n    };\n\n    _proto._handleSwipe = function _handleSwipe() {\n      var absDeltax = Math.abs(this.touchDeltaX);\n\n      if (absDeltax <= SWIPE_THRESHOLD) {\n        return;\n      }\n\n      var direction = absDeltax / this.touchDeltaX;\n      this.touchDeltaX = 0; // swipe left\n\n      if (direction > 0) {\n        this.prev();\n      } // swipe right\n\n\n      if (direction < 0) {\n        this.next();\n      }\n    };\n\n    _proto._addEventListeners = function _addEventListeners() {\n      var _this2 = this;\n\n      if (this._config.keyboard) {\n        $__default['default'](this._element).on(EVENT_KEYDOWN, function (event) {\n          return _this2._keydown(event);\n        });\n      }\n\n      if (this._config.pause === 'hover') {\n        $__default['default'](this._element).on(EVENT_MOUSEENTER, function (event) {\n          return _this2.pause(event);\n        }).on(EVENT_MOUSELEAVE, function (event) {\n          return _this2.cycle(event);\n        });\n      }\n\n      if (this._config.touch) {\n        this._addTouchEventListeners();\n      }\n    };\n\n    _proto._addTouchEventListeners = function _addTouchEventListeners() {\n      var _this3 = this;\n\n      if (!this._touchSupported) {\n        return;\n      }\n\n      var start = function start(event) {\n        if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {\n          _this3.touchStartX = event.originalEvent.clientX;\n        } else if (!_this3._pointerEvent) {\n          _this3.touchStartX = event.originalEvent.touches[0].clientX;\n        }\n      };\n\n      var move = function move(event) {\n        // ensure swiping with one touch and not pinching\n        if (event.originalEvent.touches && event.originalEvent.touches.length > 1) {\n          _this3.touchDeltaX = 0;\n        } else {\n          _this3.touchDeltaX = event.originalEvent.touches[0].clientX - _this3.touchStartX;\n        }\n      };\n\n      var end = function end(event) {\n        if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {\n          _this3.touchDeltaX = event.originalEvent.clientX - _this3.touchStartX;\n        }\n\n        _this3._handleSwipe();\n\n        if (_this3._config.pause === 'hover') {\n          // If it's a touch-enabled device, mouseenter/leave are fired as\n          // part of the mouse compatibility events on first tap - the carousel\n          // would stop cycling until user tapped out of it;\n          // here, we listen for touchend, explicitly pause the carousel\n          // (as if it's the second time we tap on it, mouseenter compat event\n          // is NOT fired) and after a timeout (to allow for mouse compatibility\n          // events to fire) we explicitly restart cycling\n          _this3.pause();\n\n          if (_this3.touchTimeout) {\n            clearTimeout(_this3.touchTimeout);\n          }\n\n          _this3.touchTimeout = setTimeout(function (event) {\n            return _this3.cycle(event);\n          }, TOUCHEVENT_COMPAT_WAIT + _this3._config.interval);\n        }\n      };\n\n      $__default['default'](this._element.querySelectorAll(SELECTOR_ITEM_IMG)).on(EVENT_DRAG_START, function (e) {\n        return e.preventDefault();\n      });\n\n      if (this._pointerEvent) {\n        $__default['default'](this._element).on(EVENT_POINTERDOWN, function (event) {\n          return start(event);\n        });\n        $__default['default'](this._element).on(EVENT_POINTERUP, function (event) {\n          return end(event);\n        });\n\n        this._element.classList.add(CLASS_NAME_POINTER_EVENT);\n      } else {\n        $__default['default'](this._element).on(EVENT_TOUCHSTART, function (event) {\n          return start(event);\n        });\n        $__default['default'](this._element).on(EVENT_TOUCHMOVE, function (event) {\n          return move(event);\n        });\n        $__default['default'](this._element).on(EVENT_TOUCHEND, function (event) {\n          return end(event);\n        });\n      }\n    };\n\n    _proto._keydown = function _keydown(event) {\n      if (/input|textarea/i.test(event.target.tagName)) {\n        return;\n      }\n\n      switch (event.which) {\n        case ARROW_LEFT_KEYCODE:\n          event.preventDefault();\n          this.prev();\n          break;\n\n        case ARROW_RIGHT_KEYCODE:\n          event.preventDefault();\n          this.next();\n          break;\n      }\n    };\n\n    _proto._getItemIndex = function _getItemIndex(element) {\n      this._items = element && element.parentNode ? [].slice.call(element.parentNode.querySelectorAll(SELECTOR_ITEM)) : [];\n      return this._items.indexOf(element);\n    };\n\n    _proto._getItemByDirection = function _getItemByDirection(direction, activeElement) {\n      var isNextDirection = direction === DIRECTION_NEXT;\n      var isPrevDirection = direction === DIRECTION_PREV;\n\n      var activeIndex = this._getItemIndex(activeElement);\n\n      var lastItemIndex = this._items.length - 1;\n      var isGoingToWrap = isPrevDirection && activeIndex === 0 || isNextDirection && activeIndex === lastItemIndex;\n\n      if (isGoingToWrap && !this._config.wrap) {\n        return activeElement;\n      }\n\n      var delta = direction === DIRECTION_PREV ? -1 : 1;\n      var itemIndex = (activeIndex + delta) % this._items.length;\n      return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex];\n    };\n\n    _proto._triggerSlideEvent = function _triggerSlideEvent(relatedTarget, eventDirectionName) {\n      var targetIndex = this._getItemIndex(relatedTarget);\n\n      var fromIndex = this._getItemIndex(this._element.querySelector(SELECTOR_ACTIVE_ITEM));\n\n      var slideEvent = $__default['default'].Event(EVENT_SLIDE, {\n        relatedTarget: relatedTarget,\n        direction: eventDirectionName,\n        from: fromIndex,\n        to: targetIndex\n      });\n      $__default['default'](this._element).trigger(slideEvent);\n      return slideEvent;\n    };\n\n    _proto._setActiveIndicatorElement = function _setActiveIndicatorElement(element) {\n      if (this._indicatorsElement) {\n        var indicators = [].slice.call(this._indicatorsElement.querySelectorAll(SELECTOR_ACTIVE$1));\n        $__default['default'](indicators).removeClass(CLASS_NAME_ACTIVE$1);\n\n        var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)];\n\n        if (nextIndicator) {\n          $__default['default'](nextIndicator).addClass(CLASS_NAME_ACTIVE$1);\n        }\n      }\n    };\n\n    _proto._updateInterval = function _updateInterval() {\n      var element = this._activeElement || this._element.querySelector(SELECTOR_ACTIVE_ITEM);\n\n      if (!element) {\n        return;\n      }\n\n      var elementInterval = parseInt(element.getAttribute('data-interval'), 10);\n\n      if (elementInterval) {\n        this._config.defaultInterval = this._config.defaultInterval || this._config.interval;\n        this._config.interval = elementInterval;\n      } else {\n        this._config.interval = this._config.defaultInterval || this._config.interval;\n      }\n    };\n\n    _proto._slide = function _slide(direction, element) {\n      var _this4 = this;\n\n      var activeElement = this._element.querySelector(SELECTOR_ACTIVE_ITEM);\n\n      var activeElementIndex = this._getItemIndex(activeElement);\n\n      var nextElement = element || activeElement && this._getItemByDirection(direction, activeElement);\n\n      var nextElementIndex = this._getItemIndex(nextElement);\n\n      var isCycling = Boolean(this._interval);\n      var directionalClassName;\n      var orderClassName;\n      var eventDirectionName;\n\n      if (direction === DIRECTION_NEXT) {\n        directionalClassName = CLASS_NAME_LEFT;\n        orderClassName = CLASS_NAME_NEXT;\n        eventDirectionName = DIRECTION_LEFT;\n      } else {\n        directionalClassName = CLASS_NAME_RIGHT;\n        orderClassName = CLASS_NAME_PREV;\n        eventDirectionName = DIRECTION_RIGHT;\n      }\n\n      if (nextElement && $__default['default'](nextElement).hasClass(CLASS_NAME_ACTIVE$1)) {\n        this._isSliding = false;\n        return;\n      }\n\n      var slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName);\n\n      if (slideEvent.isDefaultPrevented()) {\n        return;\n      }\n\n      if (!activeElement || !nextElement) {\n        // Some weirdness is happening, so we bail\n        return;\n      }\n\n      this._isSliding = true;\n\n      if (isCycling) {\n        this.pause();\n      }\n\n      this._setActiveIndicatorElement(nextElement);\n\n      this._activeElement = nextElement;\n      var slidEvent = $__default['default'].Event(EVENT_SLID, {\n        relatedTarget: nextElement,\n        direction: eventDirectionName,\n        from: activeElementIndex,\n        to: nextElementIndex\n      });\n\n      if ($__default['default'](this._element).hasClass(CLASS_NAME_SLIDE)) {\n        $__default['default'](nextElement).addClass(orderClassName);\n        Util.reflow(nextElement);\n        $__default['default'](activeElement).addClass(directionalClassName);\n        $__default['default'](nextElement).addClass(directionalClassName);\n        var transitionDuration = Util.getTransitionDurationFromElement(activeElement);\n        $__default['default'](activeElement).one(Util.TRANSITION_END, function () {\n          $__default['default'](nextElement).removeClass(directionalClassName + \" \" + orderClassName).addClass(CLASS_NAME_ACTIVE$1);\n          $__default['default'](activeElement).removeClass(CLASS_NAME_ACTIVE$1 + \" \" + orderClassName + \" \" + directionalClassName);\n          _this4._isSliding = false;\n          setTimeout(function () {\n            return $__default['default'](_this4._element).trigger(slidEvent);\n          }, 0);\n        }).emulateTransitionEnd(transitionDuration);\n      } else {\n        $__default['default'](activeElement).removeClass(CLASS_NAME_ACTIVE$1);\n        $__default['default'](nextElement).addClass(CLASS_NAME_ACTIVE$1);\n        this._isSliding = false;\n        $__default['default'](this._element).trigger(slidEvent);\n      }\n\n      if (isCycling) {\n        this.cycle();\n      }\n    } // Static\n    ;\n\n    Carousel._jQueryInterface = function _jQueryInterface(config) {\n      return this.each(function () {\n        var data = $__default['default'](this).data(DATA_KEY$2);\n\n        var _config = _extends({}, Default, $__default['default'](this).data());\n\n        if (typeof config === 'object') {\n          _config = _extends({}, _config, config);\n        }\n\n        var action = typeof config === 'string' ? config : _config.slide;\n\n        if (!data) {\n          data = new Carousel(this, _config);\n          $__default['default'](this).data(DATA_KEY$2, data);\n        }\n\n        if (typeof config === 'number') {\n          data.to(config);\n        } else if (typeof action === 'string') {\n          if (typeof data[action] === 'undefined') {\n            throw new TypeError(\"No method named \\\"\" + action + \"\\\"\");\n          }\n\n          data[action]();\n        } else if (_config.interval && _config.ride) {\n          data.pause();\n          data.cycle();\n        }\n      });\n    };\n\n    Carousel._dataApiClickHandler = function _dataApiClickHandler(event) {\n      var selector = Util.getSelectorFromElement(this);\n\n      if (!selector) {\n        return;\n      }\n\n      var target = $__default['default'](selector)[0];\n\n      if (!target || !$__default['default'](target).hasClass(CLASS_NAME_CAROUSEL)) {\n        return;\n      }\n\n      var config = _extends({}, $__default['default'](target).data(), $__default['default'](this).data());\n\n      var slideIndex = this.getAttribute('data-slide-to');\n\n      if (slideIndex) {\n        config.interval = false;\n      }\n\n      Carousel._jQueryInterface.call($__default['default'](target), config);\n\n      if (slideIndex) {\n        $__default['default'](target).data(DATA_KEY$2).to(slideIndex);\n      }\n\n      event.preventDefault();\n    };\n\n    _createClass(Carousel, null, [{\n      key: \"VERSION\",\n      get: function get() {\n        return VERSION$2;\n      }\n    }, {\n      key: \"Default\",\n      get: function get() {\n        return Default;\n      }\n    }]);\n\n    return Carousel;\n  }();\n  /**\n   * ------------------------------------------------------------------------\n   * Data Api implementation\n   * ------------------------------------------------------------------------\n   */\n\n\n  $__default['default'](document).on(EVENT_CLICK_DATA_API$2, SELECTOR_DATA_SLIDE, Carousel._dataApiClickHandler);\n  $__default['default'](window).on(EVENT_LOAD_DATA_API$1, function () {\n    var carousels = [].slice.call(document.querySelectorAll(SELECTOR_DATA_RIDE));\n\n    for (var i = 0, len = carousels.length; i < len; i++) {\n      var $carousel = $__default['default'](carousels[i]);\n\n      Carousel._jQueryInterface.call($carousel, $carousel.data());\n    }\n  });\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   */\n\n  $__default['default'].fn[NAME$2] = Carousel._jQueryInterface;\n  $__default['default'].fn[NAME$2].Constructor = Carousel;\n\n  $__default['default'].fn[NAME$2].noConflict = function () {\n    $__default['default'].fn[NAME$2] = JQUERY_NO_CONFLICT$2;\n    return Carousel._jQueryInterface;\n  };\n\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  var NAME$3 = 'collapse';\n  var VERSION$3 = '4.6.0';\n  var DATA_KEY$3 = 'bs.collapse';\n  var EVENT_KEY$3 = \".\" + DATA_KEY$3;\n  var DATA_API_KEY$3 = '.data-api';\n  var JQUERY_NO_CONFLICT$3 = $__default['default'].fn[NAME$3];\n  var Default$1 = {\n    toggle: true,\n    parent: ''\n  };\n  var DefaultType$1 = {\n    toggle: 'boolean',\n    parent: '(string|element)'\n  };\n  var EVENT_SHOW = \"show\" + EVENT_KEY$3;\n  var EVENT_SHOWN = \"shown\" + EVENT_KEY$3;\n  var EVENT_HIDE = \"hide\" + EVENT_KEY$3;\n  var EVENT_HIDDEN = \"hidden\" + EVENT_KEY$3;\n  var EVENT_CLICK_DATA_API$3 = \"click\" + EVENT_KEY$3 + DATA_API_KEY$3;\n  var CLASS_NAME_SHOW$1 = 'show';\n  var CLASS_NAME_COLLAPSE = 'collapse';\n  var CLASS_NAME_COLLAPSING = 'collapsing';\n  var CLASS_NAME_COLLAPSED = 'collapsed';\n  var DIMENSION_WIDTH = 'width';\n  var DIMENSION_HEIGHT = 'height';\n  var SELECTOR_ACTIVES = '.show, .collapsing';\n  var SELECTOR_DATA_TOGGLE$1 = '[data-toggle=\"collapse\"]';\n  /**\n   * ------------------------------------------------------------------------\n   * Class Definition\n   * ------------------------------------------------------------------------\n   */\n\n  var Collapse = /*#__PURE__*/function () {\n    function Collapse(element, config) {\n      this._isTransitioning = false;\n      this._element = element;\n      this._config = this._getConfig(config);\n      this._triggerArray = [].slice.call(document.querySelectorAll(\"[data-toggle=\\\"collapse\\\"][href=\\\"#\" + element.id + \"\\\"],\" + (\"[data-toggle=\\\"collapse\\\"][data-target=\\\"#\" + element.id + \"\\\"]\")));\n      var toggleList = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE$1));\n\n      for (var i = 0, len = toggleList.length; i < len; i++) {\n        var elem = toggleList[i];\n        var selector = Util.getSelectorFromElement(elem);\n        var filterElement = [].slice.call(document.querySelectorAll(selector)).filter(function (foundElem) {\n          return foundElem === element;\n        });\n\n        if (selector !== null && filterElement.length > 0) {\n          this._selector = selector;\n\n          this._triggerArray.push(elem);\n        }\n      }\n\n      this._parent = this._config.parent ? this._getParent() : null;\n\n      if (!this._config.parent) {\n        this._addAriaAndCollapsedClass(this._element, this._triggerArray);\n      }\n\n      if (this._config.toggle) {\n        this.toggle();\n      }\n    } // Getters\n\n\n    var _proto = Collapse.prototype;\n\n    // Public\n    _proto.toggle = function toggle() {\n      if ($__default['default'](this._element).hasClass(CLASS_NAME_SHOW$1)) {\n        this.hide();\n      } else {\n        this.show();\n      }\n    };\n\n    _proto.show = function show() {\n      var _this = this;\n\n      if (this._isTransitioning || $__default['default'](this._element).hasClass(CLASS_NAME_SHOW$1)) {\n        return;\n      }\n\n      var actives;\n      var activesData;\n\n      if (this._parent) {\n        actives = [].slice.call(this._parent.querySelectorAll(SELECTOR_ACTIVES)).filter(function (elem) {\n          if (typeof _this._config.parent === 'string') {\n            return elem.getAttribute('data-parent') === _this._config.parent;\n          }\n\n          return elem.classList.contains(CLASS_NAME_COLLAPSE);\n        });\n\n        if (actives.length === 0) {\n          actives = null;\n        }\n      }\n\n      if (actives) {\n        activesData = $__default['default'](actives).not(this._selector).data(DATA_KEY$3);\n\n        if (activesData && activesData._isTransitioning) {\n          return;\n        }\n      }\n\n      var startEvent = $__default['default'].Event(EVENT_SHOW);\n      $__default['default'](this._element).trigger(startEvent);\n\n      if (startEvent.isDefaultPrevented()) {\n        return;\n      }\n\n      if (actives) {\n        Collapse._jQueryInterface.call($__default['default'](actives).not(this._selector), 'hide');\n\n        if (!activesData) {\n          $__default['default'](actives).data(DATA_KEY$3, null);\n        }\n      }\n\n      var dimension = this._getDimension();\n\n      $__default['default'](this._element).removeClass(CLASS_NAME_COLLAPSE).addClass(CLASS_NAME_COLLAPSING);\n      this._element.style[dimension] = 0;\n\n      if (this._triggerArray.length) {\n        $__default['default'](this._triggerArray).removeClass(CLASS_NAME_COLLAPSED).attr('aria-expanded', true);\n      }\n\n      this.setTransitioning(true);\n\n      var complete = function complete() {\n        $__default['default'](_this._element).removeClass(CLASS_NAME_COLLAPSING).addClass(CLASS_NAME_COLLAPSE + \" \" + CLASS_NAME_SHOW$1);\n        _this._element.style[dimension] = '';\n\n        _this.setTransitioning(false);\n\n        $__default['default'](_this._element).trigger(EVENT_SHOWN);\n      };\n\n      var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);\n      var scrollSize = \"scroll\" + capitalizedDimension;\n      var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n      $__default['default'](this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n      this._element.style[dimension] = this._element[scrollSize] + \"px\";\n    };\n\n    _proto.hide = function hide() {\n      var _this2 = this;\n\n      if (this._isTransitioning || !$__default['default'](this._element).hasClass(CLASS_NAME_SHOW$1)) {\n        return;\n      }\n\n      var startEvent = $__default['default'].Event(EVENT_HIDE);\n      $__default['default'](this._element).trigger(startEvent);\n\n      if (startEvent.isDefaultPrevented()) {\n        return;\n      }\n\n      var dimension = this._getDimension();\n\n      this._element.style[dimension] = this._element.getBoundingClientRect()[dimension] + \"px\";\n      Util.reflow(this._element);\n      $__default['default'](this._element).addClass(CLASS_NAME_COLLAPSING).removeClass(CLASS_NAME_COLLAPSE + \" \" + CLASS_NAME_SHOW$1);\n      var triggerArrayLength = this._triggerArray.length;\n\n      if (triggerArrayLength > 0) {\n        for (var i = 0; i < triggerArrayLength; i++) {\n          var trigger = this._triggerArray[i];\n          var selector = Util.getSelectorFromElement(trigger);\n\n          if (selector !== null) {\n            var $elem = $__default['default']([].slice.call(document.querySelectorAll(selector)));\n\n            if (!$elem.hasClass(CLASS_NAME_SHOW$1)) {\n              $__default['default'](trigger).addClass(CLASS_NAME_COLLAPSED).attr('aria-expanded', false);\n            }\n          }\n        }\n      }\n\n      this.setTransitioning(true);\n\n      var complete = function complete() {\n        _this2.setTransitioning(false);\n\n        $__default['default'](_this2._element).removeClass(CLASS_NAME_COLLAPSING).addClass(CLASS_NAME_COLLAPSE).trigger(EVENT_HIDDEN);\n      };\n\n      this._element.style[dimension] = '';\n      var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n      $__default['default'](this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n    };\n\n    _proto.setTransitioning = function setTransitioning(isTransitioning) {\n      this._isTransitioning = isTransitioning;\n    };\n\n    _proto.dispose = function dispose() {\n      $__default['default'].removeData(this._element, DATA_KEY$3);\n      this._config = null;\n      this._parent = null;\n      this._element = null;\n      this._triggerArray = null;\n      this._isTransitioning = null;\n    } // Private\n    ;\n\n    _proto._getConfig = function _getConfig(config) {\n      config = _extends({}, Default$1, config);\n      config.toggle = Boolean(config.toggle); // Coerce string values\n\n      Util.typeCheckConfig(NAME$3, config, DefaultType$1);\n      return config;\n    };\n\n    _proto._getDimension = function _getDimension() {\n      var hasWidth = $__default['default'](this._element).hasClass(DIMENSION_WIDTH);\n      return hasWidth ? DIMENSION_WIDTH : DIMENSION_HEIGHT;\n    };\n\n    _proto._getParent = function _getParent() {\n      var _this3 = this;\n\n      var parent;\n\n      if (Util.isElement(this._config.parent)) {\n        parent = this._config.parent; // It's a jQuery object\n\n        if (typeof this._config.parent.jquery !== 'undefined') {\n          parent = this._config.parent[0];\n        }\n      } else {\n        parent = document.querySelector(this._config.parent);\n      }\n\n      var selector = \"[data-toggle=\\\"collapse\\\"][data-parent=\\\"\" + this._config.parent + \"\\\"]\";\n      var children = [].slice.call(parent.querySelectorAll(selector));\n      $__default['default'](children).each(function (i, element) {\n        _this3._addAriaAndCollapsedClass(Collapse._getTargetFromElement(element), [element]);\n      });\n      return parent;\n    };\n\n    _proto._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) {\n      var isOpen = $__default['default'](element).hasClass(CLASS_NAME_SHOW$1);\n\n      if (triggerArray.length) {\n        $__default['default'](triggerArray).toggleClass(CLASS_NAME_COLLAPSED, !isOpen).attr('aria-expanded', isOpen);\n      }\n    } // Static\n    ;\n\n    Collapse._getTargetFromElement = function _getTargetFromElement(element) {\n      var selector = Util.getSelectorFromElement(element);\n      return selector ? document.querySelector(selector) : null;\n    };\n\n    Collapse._jQueryInterface = function _jQueryInterface(config) {\n      return this.each(function () {\n        var $element = $__default['default'](this);\n        var data = $element.data(DATA_KEY$3);\n\n        var _config = _extends({}, Default$1, $element.data(), typeof config === 'object' && config ? config : {});\n\n        if (!data && _config.toggle && typeof config === 'string' && /show|hide/.test(config)) {\n          _config.toggle = false;\n        }\n\n        if (!data) {\n          data = new Collapse(this, _config);\n          $element.data(DATA_KEY$3, data);\n        }\n\n        if (typeof config === 'string') {\n          if (typeof data[config] === 'undefined') {\n            throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n          }\n\n          data[config]();\n        }\n      });\n    };\n\n    _createClass(Collapse, null, [{\n      key: \"VERSION\",\n      get: function get() {\n        return VERSION$3;\n      }\n    }, {\n      key: \"Default\",\n      get: function get() {\n        return Default$1;\n      }\n    }]);\n\n    return Collapse;\n  }();\n  /**\n   * ------------------------------------------------------------------------\n   * Data Api implementation\n   * ------------------------------------------------------------------------\n   */\n\n\n  $__default['default'](document).on(EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$1, function (event) {\n    // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n    if (event.currentTarget.tagName === 'A') {\n      event.preventDefault();\n    }\n\n    var $trigger = $__default['default'](this);\n    var selector = Util.getSelectorFromElement(this);\n    var selectors = [].slice.call(document.querySelectorAll(selector));\n    $__default['default'](selectors).each(function () {\n      var $target = $__default['default'](this);\n      var data = $target.data(DATA_KEY$3);\n      var config = data ? 'toggle' : $trigger.data();\n\n      Collapse._jQueryInterface.call($target, config);\n    });\n  });\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   */\n\n  $__default['default'].fn[NAME$3] = Collapse._jQueryInterface;\n  $__default['default'].fn[NAME$3].Constructor = Collapse;\n\n  $__default['default'].fn[NAME$3].noConflict = function () {\n    $__default['default'].fn[NAME$3] = JQUERY_NO_CONFLICT$3;\n    return Collapse._jQueryInterface;\n  };\n\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  var NAME$4 = 'dropdown';\n  var VERSION$4 = '4.6.0';\n  var DATA_KEY$4 = 'bs.dropdown';\n  var EVENT_KEY$4 = \".\" + DATA_KEY$4;\n  var DATA_API_KEY$4 = '.data-api';\n  var JQUERY_NO_CONFLICT$4 = $__default['default'].fn[NAME$4];\n  var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key\n\n  var SPACE_KEYCODE = 32; // KeyboardEvent.which value for space key\n\n  var TAB_KEYCODE = 9; // KeyboardEvent.which value for tab key\n\n  var ARROW_UP_KEYCODE = 38; // KeyboardEvent.which value for up arrow key\n\n  var ARROW_DOWN_KEYCODE = 40; // KeyboardEvent.which value for down arrow key\n\n  var RIGHT_MOUSE_BUTTON_WHICH = 3; // MouseEvent.which value for the right button (assuming a right-handed mouse)\n\n  var REGEXP_KEYDOWN = new RegExp(ARROW_UP_KEYCODE + \"|\" + ARROW_DOWN_KEYCODE + \"|\" + ESCAPE_KEYCODE);\n  var EVENT_HIDE$1 = \"hide\" + EVENT_KEY$4;\n  var EVENT_HIDDEN$1 = \"hidden\" + EVENT_KEY$4;\n  var EVENT_SHOW$1 = \"show\" + EVENT_KEY$4;\n  var EVENT_SHOWN$1 = \"shown\" + EVENT_KEY$4;\n  var EVENT_CLICK = \"click\" + EVENT_KEY$4;\n  var EVENT_CLICK_DATA_API$4 = \"click\" + EVENT_KEY$4 + DATA_API_KEY$4;\n  var EVENT_KEYDOWN_DATA_API = \"keydown\" + EVENT_KEY$4 + DATA_API_KEY$4;\n  var EVENT_KEYUP_DATA_API = \"keyup\" + EVENT_KEY$4 + DATA_API_KEY$4;\n  var CLASS_NAME_DISABLED = 'disabled';\n  var CLASS_NAME_SHOW$2 = 'show';\n  var CLASS_NAME_DROPUP = 'dropup';\n  var CLASS_NAME_DROPRIGHT = 'dropright';\n  var CLASS_NAME_DROPLEFT = 'dropleft';\n  var CLASS_NAME_MENURIGHT = 'dropdown-menu-right';\n  var CLASS_NAME_POSITION_STATIC = 'position-static';\n  var SELECTOR_DATA_TOGGLE$2 = '[data-toggle=\"dropdown\"]';\n  var SELECTOR_FORM_CHILD = '.dropdown form';\n  var SELECTOR_MENU = '.dropdown-menu';\n  var SELECTOR_NAVBAR_NAV = '.navbar-nav';\n  var SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)';\n  var PLACEMENT_TOP = 'top-start';\n  var PLACEMENT_TOPEND = 'top-end';\n  var PLACEMENT_BOTTOM = 'bottom-start';\n  var PLACEMENT_BOTTOMEND = 'bottom-end';\n  var PLACEMENT_RIGHT = 'right-start';\n  var PLACEMENT_LEFT = 'left-start';\n  var Default$2 = {\n    offset: 0,\n    flip: true,\n    boundary: 'scrollParent',\n    reference: 'toggle',\n    display: 'dynamic',\n    popperConfig: null\n  };\n  var DefaultType$2 = {\n    offset: '(number|string|function)',\n    flip: 'boolean',\n    boundary: '(string|element)',\n    reference: '(string|element)',\n    display: 'string',\n    popperConfig: '(null|object)'\n  };\n  /**\n   * ------------------------------------------------------------------------\n   * Class Definition\n   * ------------------------------------------------------------------------\n   */\n\n  var Dropdown = /*#__PURE__*/function () {\n    function Dropdown(element, config) {\n      this._element = element;\n      this._popper = null;\n      this._config = this._getConfig(config);\n      this._menu = this._getMenuElement();\n      this._inNavbar = this._detectNavbar();\n\n      this._addEventListeners();\n    } // Getters\n\n\n    var _proto = Dropdown.prototype;\n\n    // Public\n    _proto.toggle = function toggle() {\n      if (this._element.disabled || $__default['default'](this._element).hasClass(CLASS_NAME_DISABLED)) {\n        return;\n      }\n\n      var isActive = $__default['default'](this._menu).hasClass(CLASS_NAME_SHOW$2);\n\n      Dropdown._clearMenus();\n\n      if (isActive) {\n        return;\n      }\n\n      this.show(true);\n    };\n\n    _proto.show = function show(usePopper) {\n      if (usePopper === void 0) {\n        usePopper = false;\n      }\n\n      if (this._element.disabled || $__default['default'](this._element).hasClass(CLASS_NAME_DISABLED) || $__default['default'](this._menu).hasClass(CLASS_NAME_SHOW$2)) {\n        return;\n      }\n\n      var relatedTarget = {\n        relatedTarget: this._element\n      };\n      var showEvent = $__default['default'].Event(EVENT_SHOW$1, relatedTarget);\n\n      var parent = Dropdown._getParentFromElement(this._element);\n\n      $__default['default'](parent).trigger(showEvent);\n\n      if (showEvent.isDefaultPrevented()) {\n        return;\n      } // Totally disable Popper for Dropdowns in Navbar\n\n\n      if (!this._inNavbar && usePopper) {\n        /**\n         * Check for Popper dependency\n         * Popper - https://popper.js.org\n         */\n        if (typeof Popper__default['default'] === 'undefined') {\n          throw new TypeError('Bootstrap\\'s dropdowns require Popper (https://popper.js.org)');\n        }\n\n        var referenceElement = this._element;\n\n        if (this._config.reference === 'parent') {\n          referenceElement = parent;\n        } else if (Util.isElement(this._config.reference)) {\n          referenceElement = this._config.reference; // Check if it's jQuery element\n\n          if (typeof this._config.reference.jquery !== 'undefined') {\n            referenceElement = this._config.reference[0];\n          }\n        } // If boundary is not `scrollParent`, then set position to `static`\n        // to allow the menu to \"escape\" the scroll parent's boundaries\n        // https://github.com/twbs/bootstrap/issues/24251\n\n\n        if (this._config.boundary !== 'scrollParent') {\n          $__default['default'](parent).addClass(CLASS_NAME_POSITION_STATIC);\n        }\n\n        this._popper = new Popper__default['default'](referenceElement, this._menu, this._getPopperConfig());\n      } // If this is a touch-enabled device we add extra\n      // empty mouseover listeners to the body's immediate children;\n      // only needed because of broken event delegation on iOS\n      // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n\n\n      if ('ontouchstart' in document.documentElement && $__default['default'](parent).closest(SELECTOR_NAVBAR_NAV).length === 0) {\n        $__default['default'](document.body).children().on('mouseover', null, $__default['default'].noop);\n      }\n\n      this._element.focus();\n\n      this._element.setAttribute('aria-expanded', true);\n\n      $__default['default'](this._menu).toggleClass(CLASS_NAME_SHOW$2);\n      $__default['default'](parent).toggleClass(CLASS_NAME_SHOW$2).trigger($__default['default'].Event(EVENT_SHOWN$1, relatedTarget));\n    };\n\n    _proto.hide = function hide() {\n      if (this._element.disabled || $__default['default'](this._element).hasClass(CLASS_NAME_DISABLED) || !$__default['default'](this._menu).hasClass(CLASS_NAME_SHOW$2)) {\n        return;\n      }\n\n      var relatedTarget = {\n        relatedTarget: this._element\n      };\n      var hideEvent = $__default['default'].Event(EVENT_HIDE$1, relatedTarget);\n\n      var parent = Dropdown._getParentFromElement(this._element);\n\n      $__default['default'](parent).trigger(hideEvent);\n\n      if (hideEvent.isDefaultPrevented()) {\n        return;\n      }\n\n      if (this._popper) {\n        this._popper.destroy();\n      }\n\n      $__default['default'](this._menu).toggleClass(CLASS_NAME_SHOW$2);\n      $__default['default'](parent).toggleClass(CLASS_NAME_SHOW$2).trigger($__default['default'].Event(EVENT_HIDDEN$1, relatedTarget));\n    };\n\n    _proto.dispose = function dispose() {\n      $__default['default'].removeData(this._element, DATA_KEY$4);\n      $__default['default'](this._element).off(EVENT_KEY$4);\n      this._element = null;\n      this._menu = null;\n\n      if (this._popper !== null) {\n        this._popper.destroy();\n\n        this._popper = null;\n      }\n    };\n\n    _proto.update = function update() {\n      this._inNavbar = this._detectNavbar();\n\n      if (this._popper !== null) {\n        this._popper.scheduleUpdate();\n      }\n    } // Private\n    ;\n\n    _proto._addEventListeners = function _addEventListeners() {\n      var _this = this;\n\n      $__default['default'](this._element).on(EVENT_CLICK, function (event) {\n        event.preventDefault();\n        event.stopPropagation();\n\n        _this.toggle();\n      });\n    };\n\n    _proto._getConfig = function _getConfig(config) {\n      config = _extends({}, this.constructor.Default, $__default['default'](this._element).data(), config);\n      Util.typeCheckConfig(NAME$4, config, this.constructor.DefaultType);\n      return config;\n    };\n\n    _proto._getMenuElement = function _getMenuElement() {\n      if (!this._menu) {\n        var parent = Dropdown._getParentFromElement(this._element);\n\n        if (parent) {\n          this._menu = parent.querySelector(SELECTOR_MENU);\n        }\n      }\n\n      return this._menu;\n    };\n\n    _proto._getPlacement = function _getPlacement() {\n      var $parentDropdown = $__default['default'](this._element.parentNode);\n      var placement = PLACEMENT_BOTTOM; // Handle dropup\n\n      if ($parentDropdown.hasClass(CLASS_NAME_DROPUP)) {\n        placement = $__default['default'](this._menu).hasClass(CLASS_NAME_MENURIGHT) ? PLACEMENT_TOPEND : PLACEMENT_TOP;\n      } else if ($parentDropdown.hasClass(CLASS_NAME_DROPRIGHT)) {\n        placement = PLACEMENT_RIGHT;\n      } else if ($parentDropdown.hasClass(CLASS_NAME_DROPLEFT)) {\n        placement = PLACEMENT_LEFT;\n      } else if ($__default['default'](this._menu).hasClass(CLASS_NAME_MENURIGHT)) {\n        placement = PLACEMENT_BOTTOMEND;\n      }\n\n      return placement;\n    };\n\n    _proto._detectNavbar = function _detectNavbar() {\n      return $__default['default'](this._element).closest('.navbar').length > 0;\n    };\n\n    _proto._getOffset = function _getOffset() {\n      var _this2 = this;\n\n      var offset = {};\n\n      if (typeof this._config.offset === 'function') {\n        offset.fn = function (data) {\n          data.offsets = _extends({}, data.offsets, _this2._config.offset(data.offsets, _this2._element) || {});\n          return data;\n        };\n      } else {\n        offset.offset = this._config.offset;\n      }\n\n      return offset;\n    };\n\n    _proto._getPopperConfig = function _getPopperConfig() {\n      var popperConfig = {\n        placement: this._getPlacement(),\n        modifiers: {\n          offset: this._getOffset(),\n          flip: {\n            enabled: this._config.flip\n          },\n          preventOverflow: {\n            boundariesElement: this._config.boundary\n          }\n        }\n      }; // Disable Popper if we have a static display\n\n      if (this._config.display === 'static') {\n        popperConfig.modifiers.applyStyle = {\n          enabled: false\n        };\n      }\n\n      return _extends({}, popperConfig, this._config.popperConfig);\n    } // Static\n    ;\n\n    Dropdown._jQueryInterface = function _jQueryInterface(config) {\n      return this.each(function () {\n        var data = $__default['default'](this).data(DATA_KEY$4);\n\n        var _config = typeof config === 'object' ? config : null;\n\n        if (!data) {\n          data = new Dropdown(this, _config);\n          $__default['default'](this).data(DATA_KEY$4, data);\n        }\n\n        if (typeof config === 'string') {\n          if (typeof data[config] === 'undefined') {\n            throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n          }\n\n          data[config]();\n        }\n      });\n    };\n\n    Dropdown._clearMenus = function _clearMenus(event) {\n      if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH || event.type === 'keyup' && event.which !== TAB_KEYCODE)) {\n        return;\n      }\n\n      var toggles = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE$2));\n\n      for (var i = 0, len = toggles.length; i < len; i++) {\n        var parent = Dropdown._getParentFromElement(toggles[i]);\n\n        var context = $__default['default'](toggles[i]).data(DATA_KEY$4);\n        var relatedTarget = {\n          relatedTarget: toggles[i]\n        };\n\n        if (event && event.type === 'click') {\n          relatedTarget.clickEvent = event;\n        }\n\n        if (!context) {\n          continue;\n        }\n\n        var dropdownMenu = context._menu;\n\n        if (!$__default['default'](parent).hasClass(CLASS_NAME_SHOW$2)) {\n          continue;\n        }\n\n        if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) && $__default['default'].contains(parent, event.target)) {\n          continue;\n        }\n\n        var hideEvent = $__default['default'].Event(EVENT_HIDE$1, relatedTarget);\n        $__default['default'](parent).trigger(hideEvent);\n\n        if (hideEvent.isDefaultPrevented()) {\n          continue;\n        } // If this is a touch-enabled device we remove the extra\n        // empty mouseover listeners we added for iOS support\n\n\n        if ('ontouchstart' in document.documentElement) {\n          $__default['default'](document.body).children().off('mouseover', null, $__default['default'].noop);\n        }\n\n        toggles[i].setAttribute('aria-expanded', 'false');\n\n        if (context._popper) {\n          context._popper.destroy();\n        }\n\n        $__default['default'](dropdownMenu).removeClass(CLASS_NAME_SHOW$2);\n        $__default['default'](parent).removeClass(CLASS_NAME_SHOW$2).trigger($__default['default'].Event(EVENT_HIDDEN$1, relatedTarget));\n      }\n    };\n\n    Dropdown._getParentFromElement = function _getParentFromElement(element) {\n      var parent;\n      var selector = Util.getSelectorFromElement(element);\n\n      if (selector) {\n        parent = document.querySelector(selector);\n      }\n\n      return parent || element.parentNode;\n    } // eslint-disable-next-line complexity\n    ;\n\n    Dropdown._dataApiKeydownHandler = function _dataApiKeydownHandler(event) {\n      // If not input/textarea:\n      //  - And not a key in REGEXP_KEYDOWN => not a dropdown command\n      // If input/textarea:\n      //  - If space key => not a dropdown command\n      //  - If key is other than escape\n      //    - If key is not up or down => not a dropdown command\n      //    - If trigger inside the menu => not a dropdown command\n      if (/input|textarea/i.test(event.target.tagName) ? event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE && (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE || $__default['default'](event.target).closest(SELECTOR_MENU).length) : !REGEXP_KEYDOWN.test(event.which)) {\n        return;\n      }\n\n      if (this.disabled || $__default['default'](this).hasClass(CLASS_NAME_DISABLED)) {\n        return;\n      }\n\n      var parent = Dropdown._getParentFromElement(this);\n\n      var isActive = $__default['default'](parent).hasClass(CLASS_NAME_SHOW$2);\n\n      if (!isActive && event.which === ESCAPE_KEYCODE) {\n        return;\n      }\n\n      event.preventDefault();\n      event.stopPropagation();\n\n      if (!isActive || event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE) {\n        if (event.which === ESCAPE_KEYCODE) {\n          $__default['default'](parent.querySelector(SELECTOR_DATA_TOGGLE$2)).trigger('focus');\n        }\n\n        $__default['default'](this).trigger('click');\n        return;\n      }\n\n      var items = [].slice.call(parent.querySelectorAll(SELECTOR_VISIBLE_ITEMS)).filter(function (item) {\n        return $__default['default'](item).is(':visible');\n      });\n\n      if (items.length === 0) {\n        return;\n      }\n\n      var index = items.indexOf(event.target);\n\n      if (event.which === ARROW_UP_KEYCODE && index > 0) {\n        // Up\n        index--;\n      }\n\n      if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) {\n        // Down\n        index++;\n      }\n\n      if (index < 0) {\n        index = 0;\n      }\n\n      items[index].focus();\n    };\n\n    _createClass(Dropdown, null, [{\n      key: \"VERSION\",\n      get: function get() {\n        return VERSION$4;\n      }\n    }, {\n      key: \"Default\",\n      get: function get() {\n        return Default$2;\n      }\n    }, {\n      key: \"DefaultType\",\n      get: function get() {\n        return DefaultType$2;\n      }\n    }]);\n\n    return Dropdown;\n  }();\n  /**\n   * ------------------------------------------------------------------------\n   * Data Api implementation\n   * ------------------------------------------------------------------------\n   */\n\n\n  $__default['default'](document).on(EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$2, Dropdown._dataApiKeydownHandler).on(EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown._dataApiKeydownHandler).on(EVENT_CLICK_DATA_API$4 + \" \" + EVENT_KEYUP_DATA_API, Dropdown._clearMenus).on(EVENT_CLICK_DATA_API$4, SELECTOR_DATA_TOGGLE$2, function (event) {\n    event.preventDefault();\n    event.stopPropagation();\n\n    Dropdown._jQueryInterface.call($__default['default'](this), 'toggle');\n  }).on(EVENT_CLICK_DATA_API$4, SELECTOR_FORM_CHILD, function (e) {\n    e.stopPropagation();\n  });\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   */\n\n  $__default['default'].fn[NAME$4] = Dropdown._jQueryInterface;\n  $__default['default'].fn[NAME$4].Constructor = Dropdown;\n\n  $__default['default'].fn[NAME$4].noConflict = function () {\n    $__default['default'].fn[NAME$4] = JQUERY_NO_CONFLICT$4;\n    return Dropdown._jQueryInterface;\n  };\n\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  var NAME$5 = 'modal';\n  var VERSION$5 = '4.6.0';\n  var DATA_KEY$5 = 'bs.modal';\n  var EVENT_KEY$5 = \".\" + DATA_KEY$5;\n  var DATA_API_KEY$5 = '.data-api';\n  var JQUERY_NO_CONFLICT$5 = $__default['default'].fn[NAME$5];\n  var ESCAPE_KEYCODE$1 = 27; // KeyboardEvent.which value for Escape (Esc) key\n\n  var Default$3 = {\n    backdrop: true,\n    keyboard: true,\n    focus: true,\n    show: true\n  };\n  var DefaultType$3 = {\n    backdrop: '(boolean|string)',\n    keyboard: 'boolean',\n    focus: 'boolean',\n    show: 'boolean'\n  };\n  var EVENT_HIDE$2 = \"hide\" + EVENT_KEY$5;\n  var EVENT_HIDE_PREVENTED = \"hidePrevented\" + EVENT_KEY$5;\n  var EVENT_HIDDEN$2 = \"hidden\" + EVENT_KEY$5;\n  var EVENT_SHOW$2 = \"show\" + EVENT_KEY$5;\n  var EVENT_SHOWN$2 = \"shown\" + EVENT_KEY$5;\n  var EVENT_FOCUSIN = \"focusin\" + EVENT_KEY$5;\n  var EVENT_RESIZE = \"resize\" + EVENT_KEY$5;\n  var EVENT_CLICK_DISMISS = \"click.dismiss\" + EVENT_KEY$5;\n  var EVENT_KEYDOWN_DISMISS = \"keydown.dismiss\" + EVENT_KEY$5;\n  var EVENT_MOUSEUP_DISMISS = \"mouseup.dismiss\" + EVENT_KEY$5;\n  var EVENT_MOUSEDOWN_DISMISS = \"mousedown.dismiss\" + EVENT_KEY$5;\n  var EVENT_CLICK_DATA_API$5 = \"click\" + EVENT_KEY$5 + DATA_API_KEY$5;\n  var CLASS_NAME_SCROLLABLE = 'modal-dialog-scrollable';\n  var CLASS_NAME_SCROLLBAR_MEASURER = 'modal-scrollbar-measure';\n  var CLASS_NAME_BACKDROP = 'modal-backdrop';\n  var CLASS_NAME_OPEN = 'modal-open';\n  var CLASS_NAME_FADE$1 = 'fade';\n  var CLASS_NAME_SHOW$3 = 'show';\n  var CLASS_NAME_STATIC = 'modal-static';\n  var SELECTOR_DIALOG = '.modal-dialog';\n  var SELECTOR_MODAL_BODY = '.modal-body';\n  var SELECTOR_DATA_TOGGLE$3 = '[data-toggle=\"modal\"]';\n  var SELECTOR_DATA_DISMISS = '[data-dismiss=\"modal\"]';\n  var SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top';\n  var SELECTOR_STICKY_CONTENT = '.sticky-top';\n  /**\n   * ------------------------------------------------------------------------\n   * Class Definition\n   * ------------------------------------------------------------------------\n   */\n\n  var Modal = /*#__PURE__*/function () {\n    function Modal(element, config) {\n      this._config = this._getConfig(config);\n      this._element = element;\n      this._dialog = element.querySelector(SELECTOR_DIALOG);\n      this._backdrop = null;\n      this._isShown = false;\n      this._isBodyOverflowing = false;\n      this._ignoreBackdropClick = false;\n      this._isTransitioning = false;\n      this._scrollbarWidth = 0;\n    } // Getters\n\n\n    var _proto = Modal.prototype;\n\n    // Public\n    _proto.toggle = function toggle(relatedTarget) {\n      return this._isShown ? this.hide() : this.show(relatedTarget);\n    };\n\n    _proto.show = function show(relatedTarget) {\n      var _this = this;\n\n      if (this._isShown || this._isTransitioning) {\n        return;\n      }\n\n      if ($__default['default'](this._element).hasClass(CLASS_NAME_FADE$1)) {\n        this._isTransitioning = true;\n      }\n\n      var showEvent = $__default['default'].Event(EVENT_SHOW$2, {\n        relatedTarget: relatedTarget\n      });\n      $__default['default'](this._element).trigger(showEvent);\n\n      if (this._isShown || showEvent.isDefaultPrevented()) {\n        return;\n      }\n\n      this._isShown = true;\n\n      this._checkScrollbar();\n\n      this._setScrollbar();\n\n      this._adjustDialog();\n\n      this._setEscapeEvent();\n\n      this._setResizeEvent();\n\n      $__default['default'](this._element).on(EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, function (event) {\n        return _this.hide(event);\n      });\n      $__default['default'](this._dialog).on(EVENT_MOUSEDOWN_DISMISS, function () {\n        $__default['default'](_this._element).one(EVENT_MOUSEUP_DISMISS, function (event) {\n          if ($__default['default'](event.target).is(_this._element)) {\n            _this._ignoreBackdropClick = true;\n          }\n        });\n      });\n\n      this._showBackdrop(function () {\n        return _this._showElement(relatedTarget);\n      });\n    };\n\n    _proto.hide = function hide(event) {\n      var _this2 = this;\n\n      if (event) {\n        event.preventDefault();\n      }\n\n      if (!this._isShown || this._isTransitioning) {\n        return;\n      }\n\n      var hideEvent = $__default['default'].Event(EVENT_HIDE$2);\n      $__default['default'](this._element).trigger(hideEvent);\n\n      if (!this._isShown || hideEvent.isDefaultPrevented()) {\n        return;\n      }\n\n      this._isShown = false;\n      var transition = $__default['default'](this._element).hasClass(CLASS_NAME_FADE$1);\n\n      if (transition) {\n        this._isTransitioning = true;\n      }\n\n      this._setEscapeEvent();\n\n      this._setResizeEvent();\n\n      $__default['default'](document).off(EVENT_FOCUSIN);\n      $__default['default'](this._element).removeClass(CLASS_NAME_SHOW$3);\n      $__default['default'](this._element).off(EVENT_CLICK_DISMISS);\n      $__default['default'](this._dialog).off(EVENT_MOUSEDOWN_DISMISS);\n\n      if (transition) {\n        var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n        $__default['default'](this._element).one(Util.TRANSITION_END, function (event) {\n          return _this2._hideModal(event);\n        }).emulateTransitionEnd(transitionDuration);\n      } else {\n        this._hideModal();\n      }\n    };\n\n    _proto.dispose = function dispose() {\n      [window, this._element, this._dialog].forEach(function (htmlElement) {\n        return $__default['default'](htmlElement).off(EVENT_KEY$5);\n      });\n      /**\n       * `document` has 2 events `EVENT_FOCUSIN` and `EVENT_CLICK_DATA_API`\n       * Do not move `document` in `htmlElements` array\n       * It will remove `EVENT_CLICK_DATA_API` event that should remain\n       */\n\n      $__default['default'](document).off(EVENT_FOCUSIN);\n      $__default['default'].removeData(this._element, DATA_KEY$5);\n      this._config = null;\n      this._element = null;\n      this._dialog = null;\n      this._backdrop = null;\n      this._isShown = null;\n      this._isBodyOverflowing = null;\n      this._ignoreBackdropClick = null;\n      this._isTransitioning = null;\n      this._scrollbarWidth = null;\n    };\n\n    _proto.handleUpdate = function handleUpdate() {\n      this._adjustDialog();\n    } // Private\n    ;\n\n    _proto._getConfig = function _getConfig(config) {\n      config = _extends({}, Default$3, config);\n      Util.typeCheckConfig(NAME$5, config, DefaultType$3);\n      return config;\n    };\n\n    _proto._triggerBackdropTransition = function _triggerBackdropTransition() {\n      var _this3 = this;\n\n      var hideEventPrevented = $__default['default'].Event(EVENT_HIDE_PREVENTED);\n      $__default['default'](this._element).trigger(hideEventPrevented);\n\n      if (hideEventPrevented.isDefaultPrevented()) {\n        return;\n      }\n\n      var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n\n      if (!isModalOverflowing) {\n        this._element.style.overflowY = 'hidden';\n      }\n\n      this._element.classList.add(CLASS_NAME_STATIC);\n\n      var modalTransitionDuration = Util.getTransitionDurationFromElement(this._dialog);\n      $__default['default'](this._element).off(Util.TRANSITION_END);\n      $__default['default'](this._element).one(Util.TRANSITION_END, function () {\n        _this3._element.classList.remove(CLASS_NAME_STATIC);\n\n        if (!isModalOverflowing) {\n          $__default['default'](_this3._element).one(Util.TRANSITION_END, function () {\n            _this3._element.style.overflowY = '';\n          }).emulateTransitionEnd(_this3._element, modalTransitionDuration);\n        }\n      }).emulateTransitionEnd(modalTransitionDuration);\n\n      this._element.focus();\n    };\n\n    _proto._showElement = function _showElement(relatedTarget) {\n      var _this4 = this;\n\n      var transition = $__default['default'](this._element).hasClass(CLASS_NAME_FADE$1);\n      var modalBody = this._dialog ? this._dialog.querySelector(SELECTOR_MODAL_BODY) : null;\n\n      if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {\n        // Don't move modal's DOM position\n        document.body.appendChild(this._element);\n      }\n\n      this._element.style.display = 'block';\n\n      this._element.removeAttribute('aria-hidden');\n\n      this._element.setAttribute('aria-modal', true);\n\n      this._element.setAttribute('role', 'dialog');\n\n      if ($__default['default'](this._dialog).hasClass(CLASS_NAME_SCROLLABLE) && modalBody) {\n        modalBody.scrollTop = 0;\n      } else {\n        this._element.scrollTop = 0;\n      }\n\n      if (transition) {\n        Util.reflow(this._element);\n      }\n\n      $__default['default'](this._element).addClass(CLASS_NAME_SHOW$3);\n\n      if (this._config.focus) {\n        this._enforceFocus();\n      }\n\n      var shownEvent = $__default['default'].Event(EVENT_SHOWN$2, {\n        relatedTarget: relatedTarget\n      });\n\n      var transitionComplete = function transitionComplete() {\n        if (_this4._config.focus) {\n          _this4._element.focus();\n        }\n\n        _this4._isTransitioning = false;\n        $__default['default'](_this4._element).trigger(shownEvent);\n      };\n\n      if (transition) {\n        var transitionDuration = Util.getTransitionDurationFromElement(this._dialog);\n        $__default['default'](this._dialog).one(Util.TRANSITION_END, transitionComplete).emulateTransitionEnd(transitionDuration);\n      } else {\n        transitionComplete();\n      }\n    };\n\n    _proto._enforceFocus = function _enforceFocus() {\n      var _this5 = this;\n\n      $__default['default'](document).off(EVENT_FOCUSIN) // Guard against infinite focus loop\n      .on(EVENT_FOCUSIN, function (event) {\n        if (document !== event.target && _this5._element !== event.target && $__default['default'](_this5._element).has(event.target).length === 0) {\n          _this5._element.focus();\n        }\n      });\n    };\n\n    _proto._setEscapeEvent = function _setEscapeEvent() {\n      var _this6 = this;\n\n      if (this._isShown) {\n        $__default['default'](this._element).on(EVENT_KEYDOWN_DISMISS, function (event) {\n          if (_this6._config.keyboard && event.which === ESCAPE_KEYCODE$1) {\n            event.preventDefault();\n\n            _this6.hide();\n          } else if (!_this6._config.keyboard && event.which === ESCAPE_KEYCODE$1) {\n            _this6._triggerBackdropTransition();\n          }\n        });\n      } else if (!this._isShown) {\n        $__default['default'](this._element).off(EVENT_KEYDOWN_DISMISS);\n      }\n    };\n\n    _proto._setResizeEvent = function _setResizeEvent() {\n      var _this7 = this;\n\n      if (this._isShown) {\n        $__default['default'](window).on(EVENT_RESIZE, function (event) {\n          return _this7.handleUpdate(event);\n        });\n      } else {\n        $__default['default'](window).off(EVENT_RESIZE);\n      }\n    };\n\n    _proto._hideModal = function _hideModal() {\n      var _this8 = this;\n\n      this._element.style.display = 'none';\n\n      this._element.setAttribute('aria-hidden', true);\n\n      this._element.removeAttribute('aria-modal');\n\n      this._element.removeAttribute('role');\n\n      this._isTransitioning = false;\n\n      this._showBackdrop(function () {\n        $__default['default'](document.body).removeClass(CLASS_NAME_OPEN);\n\n        _this8._resetAdjustments();\n\n        _this8._resetScrollbar();\n\n        $__default['default'](_this8._element).trigger(EVENT_HIDDEN$2);\n      });\n    };\n\n    _proto._removeBackdrop = function _removeBackdrop() {\n      if (this._backdrop) {\n        $__default['default'](this._backdrop).remove();\n        this._backdrop = null;\n      }\n    };\n\n    _proto._showBackdrop = function _showBackdrop(callback) {\n      var _this9 = this;\n\n      var animate = $__default['default'](this._element).hasClass(CLASS_NAME_FADE$1) ? CLASS_NAME_FADE$1 : '';\n\n      if (this._isShown && this._config.backdrop) {\n        this._backdrop = document.createElement('div');\n        this._backdrop.className = CLASS_NAME_BACKDROP;\n\n        if (animate) {\n          this._backdrop.classList.add(animate);\n        }\n\n        $__default['default'](this._backdrop).appendTo(document.body);\n        $__default['default'](this._element).on(EVENT_CLICK_DISMISS, function (event) {\n          if (_this9._ignoreBackdropClick) {\n            _this9._ignoreBackdropClick = false;\n            return;\n          }\n\n          if (event.target !== event.currentTarget) {\n            return;\n          }\n\n          if (_this9._config.backdrop === 'static') {\n            _this9._triggerBackdropTransition();\n          } else {\n            _this9.hide();\n          }\n        });\n\n        if (animate) {\n          Util.reflow(this._backdrop);\n        }\n\n        $__default['default'](this._backdrop).addClass(CLASS_NAME_SHOW$3);\n\n        if (!callback) {\n          return;\n        }\n\n        if (!animate) {\n          callback();\n          return;\n        }\n\n        var backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop);\n        $__default['default'](this._backdrop).one(Util.TRANSITION_END, callback).emulateTransitionEnd(backdropTransitionDuration);\n      } else if (!this._isShown && this._backdrop) {\n        $__default['default'](this._backdrop).removeClass(CLASS_NAME_SHOW$3);\n\n        var callbackRemove = function callbackRemove() {\n          _this9._removeBackdrop();\n\n          if (callback) {\n            callback();\n          }\n        };\n\n        if ($__default['default'](this._element).hasClass(CLASS_NAME_FADE$1)) {\n          var _backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop);\n\n          $__default['default'](this._backdrop).one(Util.TRANSITION_END, callbackRemove).emulateTransitionEnd(_backdropTransitionDuration);\n        } else {\n          callbackRemove();\n        }\n      } else if (callback) {\n        callback();\n      }\n    } // ----------------------------------------------------------------------\n    // the following methods are used to handle overflowing modals\n    // todo (fat): these should probably be refactored out of modal.js\n    // ----------------------------------------------------------------------\n    ;\n\n    _proto._adjustDialog = function _adjustDialog() {\n      var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n\n      if (!this._isBodyOverflowing && isModalOverflowing) {\n        this._element.style.paddingLeft = this._scrollbarWidth + \"px\";\n      }\n\n      if (this._isBodyOverflowing && !isModalOverflowing) {\n        this._element.style.paddingRight = this._scrollbarWidth + \"px\";\n      }\n    };\n\n    _proto._resetAdjustments = function _resetAdjustments() {\n      this._element.style.paddingLeft = '';\n      this._element.style.paddingRight = '';\n    };\n\n    _proto._checkScrollbar = function _checkScrollbar() {\n      var rect = document.body.getBoundingClientRect();\n      this._isBodyOverflowing = Math.round(rect.left + rect.right) < window.innerWidth;\n      this._scrollbarWidth = this._getScrollbarWidth();\n    };\n\n    _proto._setScrollbar = function _setScrollbar() {\n      var _this10 = this;\n\n      if (this._isBodyOverflowing) {\n        // Note: DOMNode.style.paddingRight returns the actual value or '' if not set\n        //   while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set\n        var fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT));\n        var stickyContent = [].slice.call(document.querySelectorAll(SELECTOR_STICKY_CONTENT)); // Adjust fixed content padding\n\n        $__default['default'](fixedContent).each(function (index, element) {\n          var actualPadding = element.style.paddingRight;\n          var calculatedPadding = $__default['default'](element).css('padding-right');\n          $__default['default'](element).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + _this10._scrollbarWidth + \"px\");\n        }); // Adjust sticky content margin\n\n        $__default['default'](stickyContent).each(function (index, element) {\n          var actualMargin = element.style.marginRight;\n          var calculatedMargin = $__default['default'](element).css('margin-right');\n          $__default['default'](element).data('margin-right', actualMargin).css('margin-right', parseFloat(calculatedMargin) - _this10._scrollbarWidth + \"px\");\n        }); // Adjust body padding\n\n        var actualPadding = document.body.style.paddingRight;\n        var calculatedPadding = $__default['default'](document.body).css('padding-right');\n        $__default['default'](document.body).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + this._scrollbarWidth + \"px\");\n      }\n\n      $__default['default'](document.body).addClass(CLASS_NAME_OPEN);\n    };\n\n    _proto._resetScrollbar = function _resetScrollbar() {\n      // Restore fixed content padding\n      var fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT));\n      $__default['default'](fixedContent).each(function (index, element) {\n        var padding = $__default['default'](element).data('padding-right');\n        $__default['default'](element).removeData('padding-right');\n        element.style.paddingRight = padding ? padding : '';\n      }); // Restore sticky content\n\n      var elements = [].slice.call(document.querySelectorAll(\"\" + SELECTOR_STICKY_CONTENT));\n      $__default['default'](elements).each(function (index, element) {\n        var margin = $__default['default'](element).data('margin-right');\n\n        if (typeof margin !== 'undefined') {\n          $__default['default'](element).css('margin-right', margin).removeData('margin-right');\n        }\n      }); // Restore body padding\n\n      var padding = $__default['default'](document.body).data('padding-right');\n      $__default['default'](document.body).removeData('padding-right');\n      document.body.style.paddingRight = padding ? padding : '';\n    };\n\n    _proto._getScrollbarWidth = function _getScrollbarWidth() {\n      // thx d.walsh\n      var scrollDiv = document.createElement('div');\n      scrollDiv.className = CLASS_NAME_SCROLLBAR_MEASURER;\n      document.body.appendChild(scrollDiv);\n      var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth;\n      document.body.removeChild(scrollDiv);\n      return scrollbarWidth;\n    } // Static\n    ;\n\n    Modal._jQueryInterface = function _jQueryInterface(config, relatedTarget) {\n      return this.each(function () {\n        var data = $__default['default'](this).data(DATA_KEY$5);\n\n        var _config = _extends({}, Default$3, $__default['default'](this).data(), typeof config === 'object' && config ? config : {});\n\n        if (!data) {\n          data = new Modal(this, _config);\n          $__default['default'](this).data(DATA_KEY$5, data);\n        }\n\n        if (typeof config === 'string') {\n          if (typeof data[config] === 'undefined') {\n            throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n          }\n\n          data[config](relatedTarget);\n        } else if (_config.show) {\n          data.show(relatedTarget);\n        }\n      });\n    };\n\n    _createClass(Modal, null, [{\n      key: \"VERSION\",\n      get: function get() {\n        return VERSION$5;\n      }\n    }, {\n      key: \"Default\",\n      get: function get() {\n        return Default$3;\n      }\n    }]);\n\n    return Modal;\n  }();\n  /**\n   * ------------------------------------------------------------------------\n   * Data Api implementation\n   * ------------------------------------------------------------------------\n   */\n\n\n  $__default['default'](document).on(EVENT_CLICK_DATA_API$5, SELECTOR_DATA_TOGGLE$3, function (event) {\n    var _this11 = this;\n\n    var target;\n    var selector = Util.getSelectorFromElement(this);\n\n    if (selector) {\n      target = document.querySelector(selector);\n    }\n\n    var config = $__default['default'](target).data(DATA_KEY$5) ? 'toggle' : _extends({}, $__default['default'](target).data(), $__default['default'](this).data());\n\n    if (this.tagName === 'A' || this.tagName === 'AREA') {\n      event.preventDefault();\n    }\n\n    var $target = $__default['default'](target).one(EVENT_SHOW$2, function (showEvent) {\n      if (showEvent.isDefaultPrevented()) {\n        // Only register focus restorer if modal will actually get shown\n        return;\n      }\n\n      $target.one(EVENT_HIDDEN$2, function () {\n        if ($__default['default'](_this11).is(':visible')) {\n          _this11.focus();\n        }\n      });\n    });\n\n    Modal._jQueryInterface.call($__default['default'](target), config, this);\n  });\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   */\n\n  $__default['default'].fn[NAME$5] = Modal._jQueryInterface;\n  $__default['default'].fn[NAME$5].Constructor = Modal;\n\n  $__default['default'].fn[NAME$5].noConflict = function () {\n    $__default['default'].fn[NAME$5] = JQUERY_NO_CONFLICT$5;\n    return Modal._jQueryInterface;\n  };\n\n  /**\n   * --------------------------------------------------------------------------\n   * Bootstrap (v4.6.0): tools/sanitizer.js\n   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n   * --------------------------------------------------------------------------\n   */\n  var uriAttrs = ['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href'];\n  var ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i;\n  var DefaultWhitelist = {\n    // Global attributes allowed on any supplied element below.\n    '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n    a: ['target', 'href', 'title', 'rel'],\n    area: [],\n    b: [],\n    br: [],\n    col: [],\n    code: [],\n    div: [],\n    em: [],\n    hr: [],\n    h1: [],\n    h2: [],\n    h3: [],\n    h4: [],\n    h5: [],\n    h6: [],\n    i: [],\n    img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n    li: [],\n    ol: [],\n    p: [],\n    pre: [],\n    s: [],\n    small: [],\n    span: [],\n    sub: [],\n    sup: [],\n    strong: [],\n    u: [],\n    ul: []\n  };\n  /**\n   * A pattern that recognizes a commonly useful subset of URLs that are safe.\n   *\n   * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n   */\n\n  var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/gi;\n  /**\n   * A pattern that matches safe data URLs. Only matches image, video and audio types.\n   *\n   * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n   */\n\n  var DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[\\d+/a-z]+=*$/i;\n\n  function allowedAttribute(attr, allowedAttributeList) {\n    var attrName = attr.nodeName.toLowerCase();\n\n    if (allowedAttributeList.indexOf(attrName) !== -1) {\n      if (uriAttrs.indexOf(attrName) !== -1) {\n        return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN));\n      }\n\n      return true;\n    }\n\n    var regExp = allowedAttributeList.filter(function (attrRegex) {\n      return attrRegex instanceof RegExp;\n    }); // Check if a regular expression validates the attribute.\n\n    for (var i = 0, len = regExp.length; i < len; i++) {\n      if (attrName.match(regExp[i])) {\n        return true;\n      }\n    }\n\n    return false;\n  }\n\n  function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {\n    if (unsafeHtml.length === 0) {\n      return unsafeHtml;\n    }\n\n    if (sanitizeFn && typeof sanitizeFn === 'function') {\n      return sanitizeFn(unsafeHtml);\n    }\n\n    var domParser = new window.DOMParser();\n    var createdDocument = domParser.parseFromString(unsafeHtml, 'text/html');\n    var whitelistKeys = Object.keys(whiteList);\n    var elements = [].slice.call(createdDocument.body.querySelectorAll('*'));\n\n    var _loop = function _loop(i, len) {\n      var el = elements[i];\n      var elName = el.nodeName.toLowerCase();\n\n      if (whitelistKeys.indexOf(el.nodeName.toLowerCase()) === -1) {\n        el.parentNode.removeChild(el);\n        return \"continue\";\n      }\n\n      var attributeList = [].slice.call(el.attributes);\n      var whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || []);\n      attributeList.forEach(function (attr) {\n        if (!allowedAttribute(attr, whitelistedAttributes)) {\n          el.removeAttribute(attr.nodeName);\n        }\n      });\n    };\n\n    for (var i = 0, len = elements.length; i < len; i++) {\n      var _ret = _loop(i);\n\n      if (_ret === \"continue\") continue;\n    }\n\n    return createdDocument.body.innerHTML;\n  }\n\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  var NAME$6 = 'tooltip';\n  var VERSION$6 = '4.6.0';\n  var DATA_KEY$6 = 'bs.tooltip';\n  var EVENT_KEY$6 = \".\" + DATA_KEY$6;\n  var JQUERY_NO_CONFLICT$6 = $__default['default'].fn[NAME$6];\n  var CLASS_PREFIX = 'bs-tooltip';\n  var BSCLS_PREFIX_REGEX = new RegExp(\"(^|\\\\s)\" + CLASS_PREFIX + \"\\\\S+\", 'g');\n  var DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn'];\n  var DefaultType$4 = {\n    animation: 'boolean',\n    template: 'string',\n    title: '(string|element|function)',\n    trigger: 'string',\n    delay: '(number|object)',\n    html: 'boolean',\n    selector: '(string|boolean)',\n    placement: '(string|function)',\n    offset: '(number|string|function)',\n    container: '(string|element|boolean)',\n    fallbackPlacement: '(string|array)',\n    boundary: '(string|element)',\n    customClass: '(string|function)',\n    sanitize: 'boolean',\n    sanitizeFn: '(null|function)',\n    whiteList: 'object',\n    popperConfig: '(null|object)'\n  };\n  var AttachmentMap = {\n    AUTO: 'auto',\n    TOP: 'top',\n    RIGHT: 'right',\n    BOTTOM: 'bottom',\n    LEFT: 'left'\n  };\n  var Default$4 = {\n    animation: true,\n    template: '<div class=\"tooltip\" role=\"tooltip\">' + '<div class=\"arrow\"></div>' + '<div class=\"tooltip-inner\"></div></div>',\n    trigger: 'hover focus',\n    title: '',\n    delay: 0,\n    html: false,\n    selector: false,\n    placement: 'top',\n    offset: 0,\n    container: false,\n    fallbackPlacement: 'flip',\n    boundary: 'scrollParent',\n    customClass: '',\n    sanitize: true,\n    sanitizeFn: null,\n    whiteList: DefaultWhitelist,\n    popperConfig: null\n  };\n  var HOVER_STATE_SHOW = 'show';\n  var HOVER_STATE_OUT = 'out';\n  var Event = {\n    HIDE: \"hide\" + EVENT_KEY$6,\n    HIDDEN: \"hidden\" + EVENT_KEY$6,\n    SHOW: \"show\" + EVENT_KEY$6,\n    SHOWN: \"shown\" + EVENT_KEY$6,\n    INSERTED: \"inserted\" + EVENT_KEY$6,\n    CLICK: \"click\" + EVENT_KEY$6,\n    FOCUSIN: \"focusin\" + EVENT_KEY$6,\n    FOCUSOUT: \"focusout\" + EVENT_KEY$6,\n    MOUSEENTER: \"mouseenter\" + EVENT_KEY$6,\n    MOUSELEAVE: \"mouseleave\" + EVENT_KEY$6\n  };\n  var CLASS_NAME_FADE$2 = 'fade';\n  var CLASS_NAME_SHOW$4 = 'show';\n  var SELECTOR_TOOLTIP_INNER = '.tooltip-inner';\n  var SELECTOR_ARROW = '.arrow';\n  var TRIGGER_HOVER = 'hover';\n  var TRIGGER_FOCUS = 'focus';\n  var TRIGGER_CLICK = 'click';\n  var TRIGGER_MANUAL = 'manual';\n  /**\n   * ------------------------------------------------------------------------\n   * Class Definition\n   * ------------------------------------------------------------------------\n   */\n\n  var Tooltip = /*#__PURE__*/function () {\n    function Tooltip(element, config) {\n      if (typeof Popper__default['default'] === 'undefined') {\n        throw new TypeError('Bootstrap\\'s tooltips require Popper (https://popper.js.org)');\n      } // private\n\n\n      this._isEnabled = true;\n      this._timeout = 0;\n      this._hoverState = '';\n      this._activeTrigger = {};\n      this._popper = null; // Protected\n\n      this.element = element;\n      this.config = this._getConfig(config);\n      this.tip = null;\n\n      this._setListeners();\n    } // Getters\n\n\n    var _proto = Tooltip.prototype;\n\n    // Public\n    _proto.enable = function enable() {\n      this._isEnabled = true;\n    };\n\n    _proto.disable = function disable() {\n      this._isEnabled = false;\n    };\n\n    _proto.toggleEnabled = function toggleEnabled() {\n      this._isEnabled = !this._isEnabled;\n    };\n\n    _proto.toggle = function toggle(event) {\n      if (!this._isEnabled) {\n        return;\n      }\n\n      if (event) {\n        var dataKey = this.constructor.DATA_KEY;\n        var context = $__default['default'](event.currentTarget).data(dataKey);\n\n        if (!context) {\n          context = new this.constructor(event.currentTarget, this._getDelegateConfig());\n          $__default['default'](event.currentTarget).data(dataKey, context);\n        }\n\n        context._activeTrigger.click = !context._activeTrigger.click;\n\n        if (context._isWithActiveTrigger()) {\n          context._enter(null, context);\n        } else {\n          context._leave(null, context);\n        }\n      } else {\n        if ($__default['default'](this.getTipElement()).hasClass(CLASS_NAME_SHOW$4)) {\n          this._leave(null, this);\n\n          return;\n        }\n\n        this._enter(null, this);\n      }\n    };\n\n    _proto.dispose = function dispose() {\n      clearTimeout(this._timeout);\n      $__default['default'].removeData(this.element, this.constructor.DATA_KEY);\n      $__default['default'](this.element).off(this.constructor.EVENT_KEY);\n      $__default['default'](this.element).closest('.modal').off('hide.bs.modal', this._hideModalHandler);\n\n      if (this.tip) {\n        $__default['default'](this.tip).remove();\n      }\n\n      this._isEnabled = null;\n      this._timeout = null;\n      this._hoverState = null;\n      this._activeTrigger = null;\n\n      if (this._popper) {\n        this._popper.destroy();\n      }\n\n      this._popper = null;\n      this.element = null;\n      this.config = null;\n      this.tip = null;\n    };\n\n    _proto.show = function show() {\n      var _this = this;\n\n      if ($__default['default'](this.element).css('display') === 'none') {\n        throw new Error('Please use show on visible elements');\n      }\n\n      var showEvent = $__default['default'].Event(this.constructor.Event.SHOW);\n\n      if (this.isWithContent() && this._isEnabled) {\n        $__default['default'](this.element).trigger(showEvent);\n        var shadowRoot = Util.findShadowRoot(this.element);\n        var isInTheDom = $__default['default'].contains(shadowRoot !== null ? shadowRoot : this.element.ownerDocument.documentElement, this.element);\n\n        if (showEvent.isDefaultPrevented() || !isInTheDom) {\n          return;\n        }\n\n        var tip = this.getTipElement();\n        var tipId = Util.getUID(this.constructor.NAME);\n        tip.setAttribute('id', tipId);\n        this.element.setAttribute('aria-describedby', tipId);\n        this.setContent();\n\n        if (this.config.animation) {\n          $__default['default'](tip).addClass(CLASS_NAME_FADE$2);\n        }\n\n        var placement = typeof this.config.placement === 'function' ? this.config.placement.call(this, tip, this.element) : this.config.placement;\n\n        var attachment = this._getAttachment(placement);\n\n        this.addAttachmentClass(attachment);\n\n        var container = this._getContainer();\n\n        $__default['default'](tip).data(this.constructor.DATA_KEY, this);\n\n        if (!$__default['default'].contains(this.element.ownerDocument.documentElement, this.tip)) {\n          $__default['default'](tip).appendTo(container);\n        }\n\n        $__default['default'](this.element).trigger(this.constructor.Event.INSERTED);\n        this._popper = new Popper__default['default'](this.element, tip, this._getPopperConfig(attachment));\n        $__default['default'](tip).addClass(CLASS_NAME_SHOW$4);\n        $__default['default'](tip).addClass(this.config.customClass); // If this is a touch-enabled device we add extra\n        // empty mouseover listeners to the body's immediate children;\n        // only needed because of broken event delegation on iOS\n        // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n\n        if ('ontouchstart' in document.documentElement) {\n          $__default['default'](document.body).children().on('mouseover', null, $__default['default'].noop);\n        }\n\n        var complete = function complete() {\n          if (_this.config.animation) {\n            _this._fixTransition();\n          }\n\n          var prevHoverState = _this._hoverState;\n          _this._hoverState = null;\n          $__default['default'](_this.element).trigger(_this.constructor.Event.SHOWN);\n\n          if (prevHoverState === HOVER_STATE_OUT) {\n            _this._leave(null, _this);\n          }\n        };\n\n        if ($__default['default'](this.tip).hasClass(CLASS_NAME_FADE$2)) {\n          var transitionDuration = Util.getTransitionDurationFromElement(this.tip);\n          $__default['default'](this.tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n        } else {\n          complete();\n        }\n      }\n    };\n\n    _proto.hide = function hide(callback) {\n      var _this2 = this;\n\n      var tip = this.getTipElement();\n      var hideEvent = $__default['default'].Event(this.constructor.Event.HIDE);\n\n      var complete = function complete() {\n        if (_this2._hoverState !== HOVER_STATE_SHOW && tip.parentNode) {\n          tip.parentNode.removeChild(tip);\n        }\n\n        _this2._cleanTipClass();\n\n        _this2.element.removeAttribute('aria-describedby');\n\n        $__default['default'](_this2.element).trigger(_this2.constructor.Event.HIDDEN);\n\n        if (_this2._popper !== null) {\n          _this2._popper.destroy();\n        }\n\n        if (callback) {\n          callback();\n        }\n      };\n\n      $__default['default'](this.element).trigger(hideEvent);\n\n      if (hideEvent.isDefaultPrevented()) {\n        return;\n      }\n\n      $__default['default'](tip).removeClass(CLASS_NAME_SHOW$4); // If this is a touch-enabled device we remove the extra\n      // empty mouseover listeners we added for iOS support\n\n      if ('ontouchstart' in document.documentElement) {\n        $__default['default'](document.body).children().off('mouseover', null, $__default['default'].noop);\n      }\n\n      this._activeTrigger[TRIGGER_CLICK] = false;\n      this._activeTrigger[TRIGGER_FOCUS] = false;\n      this._activeTrigger[TRIGGER_HOVER] = false;\n\n      if ($__default['default'](this.tip).hasClass(CLASS_NAME_FADE$2)) {\n        var transitionDuration = Util.getTransitionDurationFromElement(tip);\n        $__default['default'](tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n      } else {\n        complete();\n      }\n\n      this._hoverState = '';\n    };\n\n    _proto.update = function update() {\n      if (this._popper !== null) {\n        this._popper.scheduleUpdate();\n      }\n    } // Protected\n    ;\n\n    _proto.isWithContent = function isWithContent() {\n      return Boolean(this.getTitle());\n    };\n\n    _proto.addAttachmentClass = function addAttachmentClass(attachment) {\n      $__default['default'](this.getTipElement()).addClass(CLASS_PREFIX + \"-\" + attachment);\n    };\n\n    _proto.getTipElement = function getTipElement() {\n      this.tip = this.tip || $__default['default'](this.config.template)[0];\n      return this.tip;\n    };\n\n    _proto.setContent = function setContent() {\n      var tip = this.getTipElement();\n      this.setElementContent($__default['default'](tip.querySelectorAll(SELECTOR_TOOLTIP_INNER)), this.getTitle());\n      $__default['default'](tip).removeClass(CLASS_NAME_FADE$2 + \" \" + CLASS_NAME_SHOW$4);\n    };\n\n    _proto.setElementContent = function setElementContent($element, content) {\n      if (typeof content === 'object' && (content.nodeType || content.jquery)) {\n        // Content is a DOM node or a jQuery\n        if (this.config.html) {\n          if (!$__default['default'](content).parent().is($element)) {\n            $element.empty().append(content);\n          }\n        } else {\n          $element.text($__default['default'](content).text());\n        }\n\n        return;\n      }\n\n      if (this.config.html) {\n        if (this.config.sanitize) {\n          content = sanitizeHtml(content, this.config.whiteList, this.config.sanitizeFn);\n        }\n\n        $element.html(content);\n      } else {\n        $element.text(content);\n      }\n    };\n\n    _proto.getTitle = function getTitle() {\n      var title = this.element.getAttribute('data-original-title');\n\n      if (!title) {\n        title = typeof this.config.title === 'function' ? this.config.title.call(this.element) : this.config.title;\n      }\n\n      return title;\n    } // Private\n    ;\n\n    _proto._getPopperConfig = function _getPopperConfig(attachment) {\n      var _this3 = this;\n\n      var defaultBsConfig = {\n        placement: attachment,\n        modifiers: {\n          offset: this._getOffset(),\n          flip: {\n            behavior: this.config.fallbackPlacement\n          },\n          arrow: {\n            element: SELECTOR_ARROW\n          },\n          preventOverflow: {\n            boundariesElement: this.config.boundary\n          }\n        },\n        onCreate: function onCreate(data) {\n          if (data.originalPlacement !== data.placement) {\n            _this3._handlePopperPlacementChange(data);\n          }\n        },\n        onUpdate: function onUpdate(data) {\n          return _this3._handlePopperPlacementChange(data);\n        }\n      };\n      return _extends({}, defaultBsConfig, this.config.popperConfig);\n    };\n\n    _proto._getOffset = function _getOffset() {\n      var _this4 = this;\n\n      var offset = {};\n\n      if (typeof this.config.offset === 'function') {\n        offset.fn = function (data) {\n          data.offsets = _extends({}, data.offsets, _this4.config.offset(data.offsets, _this4.element) || {});\n          return data;\n        };\n      } else {\n        offset.offset = this.config.offset;\n      }\n\n      return offset;\n    };\n\n    _proto._getContainer = function _getContainer() {\n      if (this.config.container === false) {\n        return document.body;\n      }\n\n      if (Util.isElement(this.config.container)) {\n        return $__default['default'](this.config.container);\n      }\n\n      return $__default['default'](document).find(this.config.container);\n    };\n\n    _proto._getAttachment = function _getAttachment(placement) {\n      return AttachmentMap[placement.toUpperCase()];\n    };\n\n    _proto._setListeners = function _setListeners() {\n      var _this5 = this;\n\n      var triggers = this.config.trigger.split(' ');\n      triggers.forEach(function (trigger) {\n        if (trigger === 'click') {\n          $__default['default'](_this5.element).on(_this5.constructor.Event.CLICK, _this5.config.selector, function (event) {\n            return _this5.toggle(event);\n          });\n        } else if (trigger !== TRIGGER_MANUAL) {\n          var eventIn = trigger === TRIGGER_HOVER ? _this5.constructor.Event.MOUSEENTER : _this5.constructor.Event.FOCUSIN;\n          var eventOut = trigger === TRIGGER_HOVER ? _this5.constructor.Event.MOUSELEAVE : _this5.constructor.Event.FOCUSOUT;\n          $__default['default'](_this5.element).on(eventIn, _this5.config.selector, function (event) {\n            return _this5._enter(event);\n          }).on(eventOut, _this5.config.selector, function (event) {\n            return _this5._leave(event);\n          });\n        }\n      });\n\n      this._hideModalHandler = function () {\n        if (_this5.element) {\n          _this5.hide();\n        }\n      };\n\n      $__default['default'](this.element).closest('.modal').on('hide.bs.modal', this._hideModalHandler);\n\n      if (this.config.selector) {\n        this.config = _extends({}, this.config, {\n          trigger: 'manual',\n          selector: ''\n        });\n      } else {\n        this._fixTitle();\n      }\n    };\n\n    _proto._fixTitle = function _fixTitle() {\n      var titleType = typeof this.element.getAttribute('data-original-title');\n\n      if (this.element.getAttribute('title') || titleType !== 'string') {\n        this.element.setAttribute('data-original-title', this.element.getAttribute('title') || '');\n        this.element.setAttribute('title', '');\n      }\n    };\n\n    _proto._enter = function _enter(event, context) {\n      var dataKey = this.constructor.DATA_KEY;\n      context = context || $__default['default'](event.currentTarget).data(dataKey);\n\n      if (!context) {\n        context = new this.constructor(event.currentTarget, this._getDelegateConfig());\n        $__default['default'](event.currentTarget).data(dataKey, context);\n      }\n\n      if (event) {\n        context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true;\n      }\n\n      if ($__default['default'](context.getTipElement()).hasClass(CLASS_NAME_SHOW$4) || context._hoverState === HOVER_STATE_SHOW) {\n        context._hoverState = HOVER_STATE_SHOW;\n        return;\n      }\n\n      clearTimeout(context._timeout);\n      context._hoverState = HOVER_STATE_SHOW;\n\n      if (!context.config.delay || !context.config.delay.show) {\n        context.show();\n        return;\n      }\n\n      context._timeout = setTimeout(function () {\n        if (context._hoverState === HOVER_STATE_SHOW) {\n          context.show();\n        }\n      }, context.config.delay.show);\n    };\n\n    _proto._leave = function _leave(event, context) {\n      var dataKey = this.constructor.DATA_KEY;\n      context = context || $__default['default'](event.currentTarget).data(dataKey);\n\n      if (!context) {\n        context = new this.constructor(event.currentTarget, this._getDelegateConfig());\n        $__default['default'](event.currentTarget).data(dataKey, context);\n      }\n\n      if (event) {\n        context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] = false;\n      }\n\n      if (context._isWithActiveTrigger()) {\n        return;\n      }\n\n      clearTimeout(context._timeout);\n      context._hoverState = HOVER_STATE_OUT;\n\n      if (!context.config.delay || !context.config.delay.hide) {\n        context.hide();\n        return;\n      }\n\n      context._timeout = setTimeout(function () {\n        if (context._hoverState === HOVER_STATE_OUT) {\n          context.hide();\n        }\n      }, context.config.delay.hide);\n    };\n\n    _proto._isWithActiveTrigger = function _isWithActiveTrigger() {\n      for (var trigger in this._activeTrigger) {\n        if (this._activeTrigger[trigger]) {\n          return true;\n        }\n      }\n\n      return false;\n    };\n\n    _proto._getConfig = function _getConfig(config) {\n      var dataAttributes = $__default['default'](this.element).data();\n      Object.keys(dataAttributes).forEach(function (dataAttr) {\n        if (DISALLOWED_ATTRIBUTES.indexOf(dataAttr) !== -1) {\n          delete dataAttributes[dataAttr];\n        }\n      });\n      config = _extends({}, this.constructor.Default, dataAttributes, typeof config === 'object' && config ? config : {});\n\n      if (typeof config.delay === 'number') {\n        config.delay = {\n          show: config.delay,\n          hide: config.delay\n        };\n      }\n\n      if (typeof config.title === 'number') {\n        config.title = config.title.toString();\n      }\n\n      if (typeof config.content === 'number') {\n        config.content = config.content.toString();\n      }\n\n      Util.typeCheckConfig(NAME$6, config, this.constructor.DefaultType);\n\n      if (config.sanitize) {\n        config.template = sanitizeHtml(config.template, config.whiteList, config.sanitizeFn);\n      }\n\n      return config;\n    };\n\n    _proto._getDelegateConfig = function _getDelegateConfig() {\n      var config = {};\n\n      if (this.config) {\n        for (var key in this.config) {\n          if (this.constructor.Default[key] !== this.config[key]) {\n            config[key] = this.config[key];\n          }\n        }\n      }\n\n      return config;\n    };\n\n    _proto._cleanTipClass = function _cleanTipClass() {\n      var $tip = $__default['default'](this.getTipElement());\n      var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX);\n\n      if (tabClass !== null && tabClass.length) {\n        $tip.removeClass(tabClass.join(''));\n      }\n    };\n\n    _proto._handlePopperPlacementChange = function _handlePopperPlacementChange(popperData) {\n      this.tip = popperData.instance.popper;\n\n      this._cleanTipClass();\n\n      this.addAttachmentClass(this._getAttachment(popperData.placement));\n    };\n\n    _proto._fixTransition = function _fixTransition() {\n      var tip = this.getTipElement();\n      var initConfigAnimation = this.config.animation;\n\n      if (tip.getAttribute('x-placement') !== null) {\n        return;\n      }\n\n      $__default['default'](tip).removeClass(CLASS_NAME_FADE$2);\n      this.config.animation = false;\n      this.hide();\n      this.show();\n      this.config.animation = initConfigAnimation;\n    } // Static\n    ;\n\n    Tooltip._jQueryInterface = function _jQueryInterface(config) {\n      return this.each(function () {\n        var $element = $__default['default'](this);\n        var data = $element.data(DATA_KEY$6);\n\n        var _config = typeof config === 'object' && config;\n\n        if (!data && /dispose|hide/.test(config)) {\n          return;\n        }\n\n        if (!data) {\n          data = new Tooltip(this, _config);\n          $element.data(DATA_KEY$6, data);\n        }\n\n        if (typeof config === 'string') {\n          if (typeof data[config] === 'undefined') {\n            throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n          }\n\n          data[config]();\n        }\n      });\n    };\n\n    _createClass(Tooltip, null, [{\n      key: \"VERSION\",\n      get: function get() {\n        return VERSION$6;\n      }\n    }, {\n      key: \"Default\",\n      get: function get() {\n        return Default$4;\n      }\n    }, {\n      key: \"NAME\",\n      get: function get() {\n        return NAME$6;\n      }\n    }, {\n      key: \"DATA_KEY\",\n      get: function get() {\n        return DATA_KEY$6;\n      }\n    }, {\n      key: \"Event\",\n      get: function get() {\n        return Event;\n      }\n    }, {\n      key: \"EVENT_KEY\",\n      get: function get() {\n        return EVENT_KEY$6;\n      }\n    }, {\n      key: \"DefaultType\",\n      get: function get() {\n        return DefaultType$4;\n      }\n    }]);\n\n    return Tooltip;\n  }();\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   */\n\n\n  $__default['default'].fn[NAME$6] = Tooltip._jQueryInterface;\n  $__default['default'].fn[NAME$6].Constructor = Tooltip;\n\n  $__default['default'].fn[NAME$6].noConflict = function () {\n    $__default['default'].fn[NAME$6] = JQUERY_NO_CONFLICT$6;\n    return Tooltip._jQueryInterface;\n  };\n\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  var NAME$7 = 'popover';\n  var VERSION$7 = '4.6.0';\n  var DATA_KEY$7 = 'bs.popover';\n  var EVENT_KEY$7 = \".\" + DATA_KEY$7;\n  var JQUERY_NO_CONFLICT$7 = $__default['default'].fn[NAME$7];\n  var CLASS_PREFIX$1 = 'bs-popover';\n  var BSCLS_PREFIX_REGEX$1 = new RegExp(\"(^|\\\\s)\" + CLASS_PREFIX$1 + \"\\\\S+\", 'g');\n\n  var Default$5 = _extends({}, Tooltip.Default, {\n    placement: 'right',\n    trigger: 'click',\n    content: '',\n    template: '<div class=\"popover\" role=\"tooltip\">' + '<div class=\"arrow\"></div>' + '<h3 class=\"popover-header\"></h3>' + '<div class=\"popover-body\"></div></div>'\n  });\n\n  var DefaultType$5 = _extends({}, Tooltip.DefaultType, {\n    content: '(string|element|function)'\n  });\n\n  var CLASS_NAME_FADE$3 = 'fade';\n  var CLASS_NAME_SHOW$5 = 'show';\n  var SELECTOR_TITLE = '.popover-header';\n  var SELECTOR_CONTENT = '.popover-body';\n  var Event$1 = {\n    HIDE: \"hide\" + EVENT_KEY$7,\n    HIDDEN: \"hidden\" + EVENT_KEY$7,\n    SHOW: \"show\" + EVENT_KEY$7,\n    SHOWN: \"shown\" + EVENT_KEY$7,\n    INSERTED: \"inserted\" + EVENT_KEY$7,\n    CLICK: \"click\" + EVENT_KEY$7,\n    FOCUSIN: \"focusin\" + EVENT_KEY$7,\n    FOCUSOUT: \"focusout\" + EVENT_KEY$7,\n    MOUSEENTER: \"mouseenter\" + EVENT_KEY$7,\n    MOUSELEAVE: \"mouseleave\" + EVENT_KEY$7\n  };\n  /**\n   * ------------------------------------------------------------------------\n   * Class Definition\n   * ------------------------------------------------------------------------\n   */\n\n  var Popover = /*#__PURE__*/function (_Tooltip) {\n    _inheritsLoose(Popover, _Tooltip);\n\n    function Popover() {\n      return _Tooltip.apply(this, arguments) || this;\n    }\n\n    var _proto = Popover.prototype;\n\n    // Overrides\n    _proto.isWithContent = function isWithContent() {\n      return this.getTitle() || this._getContent();\n    };\n\n    _proto.addAttachmentClass = function addAttachmentClass(attachment) {\n      $__default['default'](this.getTipElement()).addClass(CLASS_PREFIX$1 + \"-\" + attachment);\n    };\n\n    _proto.getTipElement = function getTipElement() {\n      this.tip = this.tip || $__default['default'](this.config.template)[0];\n      return this.tip;\n    };\n\n    _proto.setContent = function setContent() {\n      var $tip = $__default['default'](this.getTipElement()); // We use append for html objects to maintain js events\n\n      this.setElementContent($tip.find(SELECTOR_TITLE), this.getTitle());\n\n      var content = this._getContent();\n\n      if (typeof content === 'function') {\n        content = content.call(this.element);\n      }\n\n      this.setElementContent($tip.find(SELECTOR_CONTENT), content);\n      $tip.removeClass(CLASS_NAME_FADE$3 + \" \" + CLASS_NAME_SHOW$5);\n    } // Private\n    ;\n\n    _proto._getContent = function _getContent() {\n      return this.element.getAttribute('data-content') || this.config.content;\n    };\n\n    _proto._cleanTipClass = function _cleanTipClass() {\n      var $tip = $__default['default'](this.getTipElement());\n      var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX$1);\n\n      if (tabClass !== null && tabClass.length > 0) {\n        $tip.removeClass(tabClass.join(''));\n      }\n    } // Static\n    ;\n\n    Popover._jQueryInterface = function _jQueryInterface(config) {\n      return this.each(function () {\n        var data = $__default['default'](this).data(DATA_KEY$7);\n\n        var _config = typeof config === 'object' ? config : null;\n\n        if (!data && /dispose|hide/.test(config)) {\n          return;\n        }\n\n        if (!data) {\n          data = new Popover(this, _config);\n          $__default['default'](this).data(DATA_KEY$7, data);\n        }\n\n        if (typeof config === 'string') {\n          if (typeof data[config] === 'undefined') {\n            throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n          }\n\n          data[config]();\n        }\n      });\n    };\n\n    _createClass(Popover, null, [{\n      key: \"VERSION\",\n      // Getters\n      get: function get() {\n        return VERSION$7;\n      }\n    }, {\n      key: \"Default\",\n      get: function get() {\n        return Default$5;\n      }\n    }, {\n      key: \"NAME\",\n      get: function get() {\n        return NAME$7;\n      }\n    }, {\n      key: \"DATA_KEY\",\n      get: function get() {\n        return DATA_KEY$7;\n      }\n    }, {\n      key: \"Event\",\n      get: function get() {\n        return Event$1;\n      }\n    }, {\n      key: \"EVENT_KEY\",\n      get: function get() {\n        return EVENT_KEY$7;\n      }\n    }, {\n      key: \"DefaultType\",\n      get: function get() {\n        return DefaultType$5;\n      }\n    }]);\n\n    return Popover;\n  }(Tooltip);\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   */\n\n\n  $__default['default'].fn[NAME$7] = Popover._jQueryInterface;\n  $__default['default'].fn[NAME$7].Constructor = Popover;\n\n  $__default['default'].fn[NAME$7].noConflict = function () {\n    $__default['default'].fn[NAME$7] = JQUERY_NO_CONFLICT$7;\n    return Popover._jQueryInterface;\n  };\n\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  var NAME$8 = 'scrollspy';\n  var VERSION$8 = '4.6.0';\n  var DATA_KEY$8 = 'bs.scrollspy';\n  var EVENT_KEY$8 = \".\" + DATA_KEY$8;\n  var DATA_API_KEY$6 = '.data-api';\n  var JQUERY_NO_CONFLICT$8 = $__default['default'].fn[NAME$8];\n  var Default$6 = {\n    offset: 10,\n    method: 'auto',\n    target: ''\n  };\n  var DefaultType$6 = {\n    offset: 'number',\n    method: 'string',\n    target: '(string|element)'\n  };\n  var EVENT_ACTIVATE = \"activate\" + EVENT_KEY$8;\n  var EVENT_SCROLL = \"scroll\" + EVENT_KEY$8;\n  var EVENT_LOAD_DATA_API$2 = \"load\" + EVENT_KEY$8 + DATA_API_KEY$6;\n  var CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item';\n  var CLASS_NAME_ACTIVE$2 = 'active';\n  var SELECTOR_DATA_SPY = '[data-spy=\"scroll\"]';\n  var SELECTOR_NAV_LIST_GROUP = '.nav, .list-group';\n  var SELECTOR_NAV_LINKS = '.nav-link';\n  var SELECTOR_NAV_ITEMS = '.nav-item';\n  var SELECTOR_LIST_ITEMS = '.list-group-item';\n  var SELECTOR_DROPDOWN = '.dropdown';\n  var SELECTOR_DROPDOWN_ITEMS = '.dropdown-item';\n  var SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle';\n  var METHOD_OFFSET = 'offset';\n  var METHOD_POSITION = 'position';\n  /**\n   * ------------------------------------------------------------------------\n   * Class Definition\n   * ------------------------------------------------------------------------\n   */\n\n  var ScrollSpy = /*#__PURE__*/function () {\n    function ScrollSpy(element, config) {\n      var _this = this;\n\n      this._element = element;\n      this._scrollElement = element.tagName === 'BODY' ? window : element;\n      this._config = this._getConfig(config);\n      this._selector = this._config.target + \" \" + SELECTOR_NAV_LINKS + \",\" + (this._config.target + \" \" + SELECTOR_LIST_ITEMS + \",\") + (this._config.target + \" \" + SELECTOR_DROPDOWN_ITEMS);\n      this._offsets = [];\n      this._targets = [];\n      this._activeTarget = null;\n      this._scrollHeight = 0;\n      $__default['default'](this._scrollElement).on(EVENT_SCROLL, function (event) {\n        return _this._process(event);\n      });\n      this.refresh();\n\n      this._process();\n    } // Getters\n\n\n    var _proto = ScrollSpy.prototype;\n\n    // Public\n    _proto.refresh = function refresh() {\n      var _this2 = this;\n\n      var autoMethod = this._scrollElement === this._scrollElement.window ? METHOD_OFFSET : METHOD_POSITION;\n      var offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method;\n      var offsetBase = offsetMethod === METHOD_POSITION ? this._getScrollTop() : 0;\n      this._offsets = [];\n      this._targets = [];\n      this._scrollHeight = this._getScrollHeight();\n      var targets = [].slice.call(document.querySelectorAll(this._selector));\n      targets.map(function (element) {\n        var target;\n        var targetSelector = Util.getSelectorFromElement(element);\n\n        if (targetSelector) {\n          target = document.querySelector(targetSelector);\n        }\n\n        if (target) {\n          var targetBCR = target.getBoundingClientRect();\n\n          if (targetBCR.width || targetBCR.height) {\n            // TODO (fat): remove sketch reliance on jQuery position/offset\n            return [$__default['default'](target)[offsetMethod]().top + offsetBase, targetSelector];\n          }\n        }\n\n        return null;\n      }).filter(function (item) {\n        return item;\n      }).sort(function (a, b) {\n        return a[0] - b[0];\n      }).forEach(function (item) {\n        _this2._offsets.push(item[0]);\n\n        _this2._targets.push(item[1]);\n      });\n    };\n\n    _proto.dispose = function dispose() {\n      $__default['default'].removeData(this._element, DATA_KEY$8);\n      $__default['default'](this._scrollElement).off(EVENT_KEY$8);\n      this._element = null;\n      this._scrollElement = null;\n      this._config = null;\n      this._selector = null;\n      this._offsets = null;\n      this._targets = null;\n      this._activeTarget = null;\n      this._scrollHeight = null;\n    } // Private\n    ;\n\n    _proto._getConfig = function _getConfig(config) {\n      config = _extends({}, Default$6, typeof config === 'object' && config ? config : {});\n\n      if (typeof config.target !== 'string' && Util.isElement(config.target)) {\n        var id = $__default['default'](config.target).attr('id');\n\n        if (!id) {\n          id = Util.getUID(NAME$8);\n          $__default['default'](config.target).attr('id', id);\n        }\n\n        config.target = \"#\" + id;\n      }\n\n      Util.typeCheckConfig(NAME$8, config, DefaultType$6);\n      return config;\n    };\n\n    _proto._getScrollTop = function _getScrollTop() {\n      return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop;\n    };\n\n    _proto._getScrollHeight = function _getScrollHeight() {\n      return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight);\n    };\n\n    _proto._getOffsetHeight = function _getOffsetHeight() {\n      return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height;\n    };\n\n    _proto._process = function _process() {\n      var scrollTop = this._getScrollTop() + this._config.offset;\n\n      var scrollHeight = this._getScrollHeight();\n\n      var maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight();\n\n      if (this._scrollHeight !== scrollHeight) {\n        this.refresh();\n      }\n\n      if (scrollTop >= maxScroll) {\n        var target = this._targets[this._targets.length - 1];\n\n        if (this._activeTarget !== target) {\n          this._activate(target);\n        }\n\n        return;\n      }\n\n      if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {\n        this._activeTarget = null;\n\n        this._clear();\n\n        return;\n      }\n\n      for (var i = this._offsets.length; i--;) {\n        var isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1]);\n\n        if (isActiveTarget) {\n          this._activate(this._targets[i]);\n        }\n      }\n    };\n\n    _proto._activate = function _activate(target) {\n      this._activeTarget = target;\n\n      this._clear();\n\n      var queries = this._selector.split(',').map(function (selector) {\n        return selector + \"[data-target=\\\"\" + target + \"\\\"],\" + selector + \"[href=\\\"\" + target + \"\\\"]\";\n      });\n\n      var $link = $__default['default']([].slice.call(document.querySelectorAll(queries.join(','))));\n\n      if ($link.hasClass(CLASS_NAME_DROPDOWN_ITEM)) {\n        $link.closest(SELECTOR_DROPDOWN).find(SELECTOR_DROPDOWN_TOGGLE).addClass(CLASS_NAME_ACTIVE$2);\n        $link.addClass(CLASS_NAME_ACTIVE$2);\n      } else {\n        // Set triggered link as active\n        $link.addClass(CLASS_NAME_ACTIVE$2); // Set triggered links parents as active\n        // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n\n        $link.parents(SELECTOR_NAV_LIST_GROUP).prev(SELECTOR_NAV_LINKS + \", \" + SELECTOR_LIST_ITEMS).addClass(CLASS_NAME_ACTIVE$2); // Handle special case when .nav-link is inside .nav-item\n\n        $link.parents(SELECTOR_NAV_LIST_GROUP).prev(SELECTOR_NAV_ITEMS).children(SELECTOR_NAV_LINKS).addClass(CLASS_NAME_ACTIVE$2);\n      }\n\n      $__default['default'](this._scrollElement).trigger(EVENT_ACTIVATE, {\n        relatedTarget: target\n      });\n    };\n\n    _proto._clear = function _clear() {\n      [].slice.call(document.querySelectorAll(this._selector)).filter(function (node) {\n        return node.classList.contains(CLASS_NAME_ACTIVE$2);\n      }).forEach(function (node) {\n        return node.classList.remove(CLASS_NAME_ACTIVE$2);\n      });\n    } // Static\n    ;\n\n    ScrollSpy._jQueryInterface = function _jQueryInterface(config) {\n      return this.each(function () {\n        var data = $__default['default'](this).data(DATA_KEY$8);\n\n        var _config = typeof config === 'object' && config;\n\n        if (!data) {\n          data = new ScrollSpy(this, _config);\n          $__default['default'](this).data(DATA_KEY$8, data);\n        }\n\n        if (typeof config === 'string') {\n          if (typeof data[config] === 'undefined') {\n            throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n          }\n\n          data[config]();\n        }\n      });\n    };\n\n    _createClass(ScrollSpy, null, [{\n      key: \"VERSION\",\n      get: function get() {\n        return VERSION$8;\n      }\n    }, {\n      key: \"Default\",\n      get: function get() {\n        return Default$6;\n      }\n    }]);\n\n    return ScrollSpy;\n  }();\n  /**\n   * ------------------------------------------------------------------------\n   * Data Api implementation\n   * ------------------------------------------------------------------------\n   */\n\n\n  $__default['default'](window).on(EVENT_LOAD_DATA_API$2, function () {\n    var scrollSpys = [].slice.call(document.querySelectorAll(SELECTOR_DATA_SPY));\n    var scrollSpysLength = scrollSpys.length;\n\n    for (var i = scrollSpysLength; i--;) {\n      var $spy = $__default['default'](scrollSpys[i]);\n\n      ScrollSpy._jQueryInterface.call($spy, $spy.data());\n    }\n  });\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   */\n\n  $__default['default'].fn[NAME$8] = ScrollSpy._jQueryInterface;\n  $__default['default'].fn[NAME$8].Constructor = ScrollSpy;\n\n  $__default['default'].fn[NAME$8].noConflict = function () {\n    $__default['default'].fn[NAME$8] = JQUERY_NO_CONFLICT$8;\n    return ScrollSpy._jQueryInterface;\n  };\n\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  var NAME$9 = 'tab';\n  var VERSION$9 = '4.6.0';\n  var DATA_KEY$9 = 'bs.tab';\n  var EVENT_KEY$9 = \".\" + DATA_KEY$9;\n  var DATA_API_KEY$7 = '.data-api';\n  var JQUERY_NO_CONFLICT$9 = $__default['default'].fn[NAME$9];\n  var EVENT_HIDE$3 = \"hide\" + EVENT_KEY$9;\n  var EVENT_HIDDEN$3 = \"hidden\" + EVENT_KEY$9;\n  var EVENT_SHOW$3 = \"show\" + EVENT_KEY$9;\n  var EVENT_SHOWN$3 = \"shown\" + EVENT_KEY$9;\n  var EVENT_CLICK_DATA_API$6 = \"click\" + EVENT_KEY$9 + DATA_API_KEY$7;\n  var CLASS_NAME_DROPDOWN_MENU = 'dropdown-menu';\n  var CLASS_NAME_ACTIVE$3 = 'active';\n  var CLASS_NAME_DISABLED$1 = 'disabled';\n  var CLASS_NAME_FADE$4 = 'fade';\n  var CLASS_NAME_SHOW$6 = 'show';\n  var SELECTOR_DROPDOWN$1 = '.dropdown';\n  var SELECTOR_NAV_LIST_GROUP$1 = '.nav, .list-group';\n  var SELECTOR_ACTIVE$2 = '.active';\n  var SELECTOR_ACTIVE_UL = '> li > .active';\n  var SELECTOR_DATA_TOGGLE$4 = '[data-toggle=\"tab\"], [data-toggle=\"pill\"], [data-toggle=\"list\"]';\n  var SELECTOR_DROPDOWN_TOGGLE$1 = '.dropdown-toggle';\n  var SELECTOR_DROPDOWN_ACTIVE_CHILD = '> .dropdown-menu .active';\n  /**\n   * ------------------------------------------------------------------------\n   * Class Definition\n   * ------------------------------------------------------------------------\n   */\n\n  var Tab = /*#__PURE__*/function () {\n    function Tab(element) {\n      this._element = element;\n    } // Getters\n\n\n    var _proto = Tab.prototype;\n\n    // Public\n    _proto.show = function show() {\n      var _this = this;\n\n      if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && $__default['default'](this._element).hasClass(CLASS_NAME_ACTIVE$3) || $__default['default'](this._element).hasClass(CLASS_NAME_DISABLED$1)) {\n        return;\n      }\n\n      var target;\n      var previous;\n      var listElement = $__default['default'](this._element).closest(SELECTOR_NAV_LIST_GROUP$1)[0];\n      var selector = Util.getSelectorFromElement(this._element);\n\n      if (listElement) {\n        var itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? SELECTOR_ACTIVE_UL : SELECTOR_ACTIVE$2;\n        previous = $__default['default'].makeArray($__default['default'](listElement).find(itemSelector));\n        previous = previous[previous.length - 1];\n      }\n\n      var hideEvent = $__default['default'].Event(EVENT_HIDE$3, {\n        relatedTarget: this._element\n      });\n      var showEvent = $__default['default'].Event(EVENT_SHOW$3, {\n        relatedTarget: previous\n      });\n\n      if (previous) {\n        $__default['default'](previous).trigger(hideEvent);\n      }\n\n      $__default['default'](this._element).trigger(showEvent);\n\n      if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) {\n        return;\n      }\n\n      if (selector) {\n        target = document.querySelector(selector);\n      }\n\n      this._activate(this._element, listElement);\n\n      var complete = function complete() {\n        var hiddenEvent = $__default['default'].Event(EVENT_HIDDEN$3, {\n          relatedTarget: _this._element\n        });\n        var shownEvent = $__default['default'].Event(EVENT_SHOWN$3, {\n          relatedTarget: previous\n        });\n        $__default['default'](previous).trigger(hiddenEvent);\n        $__default['default'](_this._element).trigger(shownEvent);\n      };\n\n      if (target) {\n        this._activate(target, target.parentNode, complete);\n      } else {\n        complete();\n      }\n    };\n\n    _proto.dispose = function dispose() {\n      $__default['default'].removeData(this._element, DATA_KEY$9);\n      this._element = null;\n    } // Private\n    ;\n\n    _proto._activate = function _activate(element, container, callback) {\n      var _this2 = this;\n\n      var activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ? $__default['default'](container).find(SELECTOR_ACTIVE_UL) : $__default['default'](container).children(SELECTOR_ACTIVE$2);\n      var active = activeElements[0];\n      var isTransitioning = callback && active && $__default['default'](active).hasClass(CLASS_NAME_FADE$4);\n\n      var complete = function complete() {\n        return _this2._transitionComplete(element, active, callback);\n      };\n\n      if (active && isTransitioning) {\n        var transitionDuration = Util.getTransitionDurationFromElement(active);\n        $__default['default'](active).removeClass(CLASS_NAME_SHOW$6).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n      } else {\n        complete();\n      }\n    };\n\n    _proto._transitionComplete = function _transitionComplete(element, active, callback) {\n      if (active) {\n        $__default['default'](active).removeClass(CLASS_NAME_ACTIVE$3);\n        var dropdownChild = $__default['default'](active.parentNode).find(SELECTOR_DROPDOWN_ACTIVE_CHILD)[0];\n\n        if (dropdownChild) {\n          $__default['default'](dropdownChild).removeClass(CLASS_NAME_ACTIVE$3);\n        }\n\n        if (active.getAttribute('role') === 'tab') {\n          active.setAttribute('aria-selected', false);\n        }\n      }\n\n      $__default['default'](element).addClass(CLASS_NAME_ACTIVE$3);\n\n      if (element.getAttribute('role') === 'tab') {\n        element.setAttribute('aria-selected', true);\n      }\n\n      Util.reflow(element);\n\n      if (element.classList.contains(CLASS_NAME_FADE$4)) {\n        element.classList.add(CLASS_NAME_SHOW$6);\n      }\n\n      if (element.parentNode && $__default['default'](element.parentNode).hasClass(CLASS_NAME_DROPDOWN_MENU)) {\n        var dropdownElement = $__default['default'](element).closest(SELECTOR_DROPDOWN$1)[0];\n\n        if (dropdownElement) {\n          var dropdownToggleList = [].slice.call(dropdownElement.querySelectorAll(SELECTOR_DROPDOWN_TOGGLE$1));\n          $__default['default'](dropdownToggleList).addClass(CLASS_NAME_ACTIVE$3);\n        }\n\n        element.setAttribute('aria-expanded', true);\n      }\n\n      if (callback) {\n        callback();\n      }\n    } // Static\n    ;\n\n    Tab._jQueryInterface = function _jQueryInterface(config) {\n      return this.each(function () {\n        var $this = $__default['default'](this);\n        var data = $this.data(DATA_KEY$9);\n\n        if (!data) {\n          data = new Tab(this);\n          $this.data(DATA_KEY$9, data);\n        }\n\n        if (typeof config === 'string') {\n          if (typeof data[config] === 'undefined') {\n            throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n          }\n\n          data[config]();\n        }\n      });\n    };\n\n    _createClass(Tab, null, [{\n      key: \"VERSION\",\n      get: function get() {\n        return VERSION$9;\n      }\n    }]);\n\n    return Tab;\n  }();\n  /**\n   * ------------------------------------------------------------------------\n   * Data Api implementation\n   * ------------------------------------------------------------------------\n   */\n\n\n  $__default['default'](document).on(EVENT_CLICK_DATA_API$6, SELECTOR_DATA_TOGGLE$4, function (event) {\n    event.preventDefault();\n\n    Tab._jQueryInterface.call($__default['default'](this), 'show');\n  });\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   */\n\n  $__default['default'].fn[NAME$9] = Tab._jQueryInterface;\n  $__default['default'].fn[NAME$9].Constructor = Tab;\n\n  $__default['default'].fn[NAME$9].noConflict = function () {\n    $__default['default'].fn[NAME$9] = JQUERY_NO_CONFLICT$9;\n    return Tab._jQueryInterface;\n  };\n\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  var NAME$a = 'toast';\n  var VERSION$a = '4.6.0';\n  var DATA_KEY$a = 'bs.toast';\n  var EVENT_KEY$a = \".\" + DATA_KEY$a;\n  var JQUERY_NO_CONFLICT$a = $__default['default'].fn[NAME$a];\n  var EVENT_CLICK_DISMISS$1 = \"click.dismiss\" + EVENT_KEY$a;\n  var EVENT_HIDE$4 = \"hide\" + EVENT_KEY$a;\n  var EVENT_HIDDEN$4 = \"hidden\" + EVENT_KEY$a;\n  var EVENT_SHOW$4 = \"show\" + EVENT_KEY$a;\n  var EVENT_SHOWN$4 = \"shown\" + EVENT_KEY$a;\n  var CLASS_NAME_FADE$5 = 'fade';\n  var CLASS_NAME_HIDE = 'hide';\n  var CLASS_NAME_SHOW$7 = 'show';\n  var CLASS_NAME_SHOWING = 'showing';\n  var DefaultType$7 = {\n    animation: 'boolean',\n    autohide: 'boolean',\n    delay: 'number'\n  };\n  var Default$7 = {\n    animation: true,\n    autohide: true,\n    delay: 500\n  };\n  var SELECTOR_DATA_DISMISS$1 = '[data-dismiss=\"toast\"]';\n  /**\n   * ------------------------------------------------------------------------\n   * Class Definition\n   * ------------------------------------------------------------------------\n   */\n\n  var Toast = /*#__PURE__*/function () {\n    function Toast(element, config) {\n      this._element = element;\n      this._config = this._getConfig(config);\n      this._timeout = null;\n\n      this._setListeners();\n    } // Getters\n\n\n    var _proto = Toast.prototype;\n\n    // Public\n    _proto.show = function show() {\n      var _this = this;\n\n      var showEvent = $__default['default'].Event(EVENT_SHOW$4);\n      $__default['default'](this._element).trigger(showEvent);\n\n      if (showEvent.isDefaultPrevented()) {\n        return;\n      }\n\n      this._clearTimeout();\n\n      if (this._config.animation) {\n        this._element.classList.add(CLASS_NAME_FADE$5);\n      }\n\n      var complete = function complete() {\n        _this._element.classList.remove(CLASS_NAME_SHOWING);\n\n        _this._element.classList.add(CLASS_NAME_SHOW$7);\n\n        $__default['default'](_this._element).trigger(EVENT_SHOWN$4);\n\n        if (_this._config.autohide) {\n          _this._timeout = setTimeout(function () {\n            _this.hide();\n          }, _this._config.delay);\n        }\n      };\n\n      this._element.classList.remove(CLASS_NAME_HIDE);\n\n      Util.reflow(this._element);\n\n      this._element.classList.add(CLASS_NAME_SHOWING);\n\n      if (this._config.animation) {\n        var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n        $__default['default'](this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n      } else {\n        complete();\n      }\n    };\n\n    _proto.hide = function hide() {\n      if (!this._element.classList.contains(CLASS_NAME_SHOW$7)) {\n        return;\n      }\n\n      var hideEvent = $__default['default'].Event(EVENT_HIDE$4);\n      $__default['default'](this._element).trigger(hideEvent);\n\n      if (hideEvent.isDefaultPrevented()) {\n        return;\n      }\n\n      this._close();\n    };\n\n    _proto.dispose = function dispose() {\n      this._clearTimeout();\n\n      if (this._element.classList.contains(CLASS_NAME_SHOW$7)) {\n        this._element.classList.remove(CLASS_NAME_SHOW$7);\n      }\n\n      $__default['default'](this._element).off(EVENT_CLICK_DISMISS$1);\n      $__default['default'].removeData(this._element, DATA_KEY$a);\n      this._element = null;\n      this._config = null;\n    } // Private\n    ;\n\n    _proto._getConfig = function _getConfig(config) {\n      config = _extends({}, Default$7, $__default['default'](this._element).data(), typeof config === 'object' && config ? config : {});\n      Util.typeCheckConfig(NAME$a, config, this.constructor.DefaultType);\n      return config;\n    };\n\n    _proto._setListeners = function _setListeners() {\n      var _this2 = this;\n\n      $__default['default'](this._element).on(EVENT_CLICK_DISMISS$1, SELECTOR_DATA_DISMISS$1, function () {\n        return _this2.hide();\n      });\n    };\n\n    _proto._close = function _close() {\n      var _this3 = this;\n\n      var complete = function complete() {\n        _this3._element.classList.add(CLASS_NAME_HIDE);\n\n        $__default['default'](_this3._element).trigger(EVENT_HIDDEN$4);\n      };\n\n      this._element.classList.remove(CLASS_NAME_SHOW$7);\n\n      if (this._config.animation) {\n        var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n        $__default['default'](this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n      } else {\n        complete();\n      }\n    };\n\n    _proto._clearTimeout = function _clearTimeout() {\n      clearTimeout(this._timeout);\n      this._timeout = null;\n    } // Static\n    ;\n\n    Toast._jQueryInterface = function _jQueryInterface(config) {\n      return this.each(function () {\n        var $element = $__default['default'](this);\n        var data = $element.data(DATA_KEY$a);\n\n        var _config = typeof config === 'object' && config;\n\n        if (!data) {\n          data = new Toast(this, _config);\n          $element.data(DATA_KEY$a, data);\n        }\n\n        if (typeof config === 'string') {\n          if (typeof data[config] === 'undefined') {\n            throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n          }\n\n          data[config](this);\n        }\n      });\n    };\n\n    _createClass(Toast, null, [{\n      key: \"VERSION\",\n      get: function get() {\n        return VERSION$a;\n      }\n    }, {\n      key: \"DefaultType\",\n      get: function get() {\n        return DefaultType$7;\n      }\n    }, {\n      key: \"Default\",\n      get: function get() {\n        return Default$7;\n      }\n    }]);\n\n    return Toast;\n  }();\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   */\n\n\n  $__default['default'].fn[NAME$a] = Toast._jQueryInterface;\n  $__default['default'].fn[NAME$a].Constructor = Toast;\n\n  $__default['default'].fn[NAME$a].noConflict = function () {\n    $__default['default'].fn[NAME$a] = JQUERY_NO_CONFLICT$a;\n    return Toast._jQueryInterface;\n  };\n\n  exports.Alert = Alert;\n  exports.Button = Button;\n  exports.Carousel = Carousel;\n  exports.Collapse = Collapse;\n  exports.Dropdown = Dropdown;\n  exports.Modal = Modal;\n  exports.Popover = Popover;\n  exports.Scrollspy = ScrollSpy;\n  exports.Tab = Tab;\n  exports.Toast = Toast;\n  exports.Tooltip = Tooltip;\n  exports.Util = Util;\n\n  Object.defineProperty(exports, '__esModule', { value: true });\n\n})));\n//# sourceMappingURL=bootstrap.js.map\n","var scope = (typeof global !== \"undefined\" && global) ||\n            (typeof self !== \"undefined\" && self) ||\n            window;\nvar apply = Function.prototype.apply;\n\n// DOM APIs, for completeness\n\nexports.setTimeout = function() {\n  return new Timeout(apply.call(setTimeout, scope, arguments), clearTimeout);\n};\nexports.setInterval = function() {\n  return new Timeout(apply.call(setInterval, scope, arguments), clearInterval);\n};\nexports.clearTimeout =\nexports.clearInterval = function(timeout) {\n  if (timeout) {\n    timeout.close();\n  }\n};\n\nfunction Timeout(id, clearFn) {\n  this._id = id;\n  this._clearFn = clearFn;\n}\nTimeout.prototype.unref = Timeout.prototype.ref = function() {};\nTimeout.prototype.close = function() {\n  this._clearFn.call(scope, this._id);\n};\n\n// Does not start the time, just sets up the members needed.\nexports.enroll = function(item, msecs) {\n  clearTimeout(item._idleTimeoutId);\n  item._idleTimeout = msecs;\n};\n\nexports.unenroll = function(item) {\n  clearTimeout(item._idleTimeoutId);\n  item._idleTimeout = -1;\n};\n\nexports._unrefActive = exports.active = function(item) {\n  clearTimeout(item._idleTimeoutId);\n\n  var msecs = item._idleTimeout;\n  if (msecs >= 0) {\n    item._idleTimeoutId = setTimeout(function onTimeout() {\n      if (item._onTimeout)\n        item._onTimeout();\n    }, msecs);\n  }\n};\n\n// setimmediate attaches itself to the global object\nrequire(\"setimmediate\");\n// On some exotic environments, it's not clear which object `setimmediate` was\n// able to install onto.  Search each possibility in the same order as the\n// `setimmediate` library.\nexports.setImmediate = (typeof self !== \"undefined\" && self.setImmediate) ||\n                       (typeof global !== \"undefined\" && global.setImmediate) ||\n                       (this && this.setImmediate);\nexports.clearImmediate = (typeof self !== \"undefined\" && self.clearImmediate) ||\n                         (typeof global !== \"undefined\" && global.clearImmediate) ||\n                         (this && this.clearImmediate);\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\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.<br />\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 <html> the positioning is relative to the bottom of the screen (excluding the scrollbar)\n    // and not the bottom of the html element\n    if (offsetParent.nodeName === 'HTML') {\n      top = -offsetParent.clientHeight + offsets.bottom;\n    } else {\n      top = -offsetParentRect.height + offsets.bottom;\n    }\n  } else {\n    top = offsets.top;\n  }\n  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.<br />\n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\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.<br />\n * Valid placements are:\n * - `auto`\n * - `top`\n * - `right`\n * - `bottom`\n * - `left`\n *\n * Each placement can have a variation from this list:\n * - `-start`\n * - `-end`\n *\n * Variations are interpreted easily if you think of them as the left to right\n * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`\n * is right.<br />\n * Vertically (`left` and `right`), `start` is top and `end` is bottom.\n *\n * Some valid examples are:\n * - `top-end` (on top of reference, right aligned)\n * - `right-start` (on right of reference, top aligned)\n * - `bottom` (on bottom, centered)\n * - `auto-end` (on the side with more space available, alignment depends by placement)\n *\n * @static\n * @type {Array}\n * @enum {String}\n * @readonly\n * @method placements\n * @memberof Popper\n */\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.<br />\n * These functions will be called on each update, this means that you must\n * make sure they are performant enough to avoid performance bottlenecks.\n *\n * @function ModifierFn\n * @argument {dataObject} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {dataObject} The data object, properly modified\n */\n\n/**\n * Modifiers are plugins used to alter the behavior of your poppers.<br />\n * Popper.js uses a set of 9 modifiers to provide all the basic functionalities\n * needed by the library.\n *\n * Usually you don't want to override the `order`, `fn` and `onLoad` props.\n * All the other properties are configurations that could be tweaked.\n * @namespace modifiers\n */\nvar modifiers = {\n  /**\n   * Modifier used to shift the popper on the start or end of its reference\n   * element.<br />\n   * It will read the variation of the `placement` property.<br />\n   * It can be one either `-end` or `-start`.\n   * @memberof modifiers\n   * @inner\n   */\n  shift: {\n    /** @prop {number} order=100 - Index used to define the order of execution */\n    order: 100,\n    /** @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.<br />\n   * This means that if the placement is `top` or `bottom`, the length will be the\n   * `width`. In case of `left` or `right`, it will be the `height`.\n   *\n   * You can provide a single value (as `Number` or `String`), or a pair of values\n   * as `String` divided by a comma or one (or more) white spaces.<br />\n   * The latter is a deprecated method because it leads to confusion and will be\n   * removed in v2.<br />\n   * Additionally, it accepts additions and subtractions between different units.\n   * Note that multiplications and divisions aren't supported.\n   *\n   * Valid examples are:\n   * ```\n   * 10\n   * '10%'\n   * '10, 10'\n   * '10%, 10'\n   * '10 + 10%'\n   * '10 - 5vh + 3%'\n   * '-10px + 5vh, 5px - 6%'\n   * ```\n   * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap\n   * > with their reference element, unfortunately, you will have to disable the `flip` modifier.\n   * > You can read more on this at this [issue](https://github.com/FezVrasta/popper.js/issues/373).\n   *\n   * @memberof modifiers\n   * @inner\n   */\n  offset: {\n    /** @prop {number} order=200 - Index used to define the order of execution */\n    order: 200,\n    /** @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.<br />\n   * We can say it has \"escaped the boundaries\" — or just \"escaped\".<br />\n   * In this case we need to decide whether the popper should either:\n   *\n   * - detach from the reference and remain \"trapped\" in the boundaries, or\n   * - if it should ignore the boundary and \"escape with its reference\"\n   *\n   * When `escapeWithReference` is set to`true` and reference is completely\n   * outside its boundaries, the popper will overflow (or completely leave)\n   * the boundaries in order to remain attached to the edge of the reference.\n   *\n   * @memberof modifiers\n   * @inner\n   */\n  preventOverflow: {\n    /** @prop {number} order=300 - Index used to define the order of execution */\n    order: 300,\n    /** @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.<br />\n * These can be overridden using the `options` argument of Popper.js.<br />\n * To override an option, simply pass an object with the same\n * structure of the `options` object, as the 3rd argument. For example:\n * ```\n * new Popper(ref, pop, {\n *   modifiers: {\n *     preventOverflow: { enabled: false }\n *   }\n * })\n * ```\n * @type {Object}\n * @static\n * @memberof Popper\n */\nvar Defaults = {\n  /**\n   * Popper's placement.\n   * @prop {Popper.placements} placement='bottom'\n   */\n  placement: 'bottom',\n\n  /**\n   * Set this to true if you want popper to position it self in 'fixed' mode\n   * @prop {Boolean} positionFixed=false\n   */\n  positionFixed: false,\n\n  /**\n   * Whether events (resize, scroll) are initially enabled.\n   * @prop {Boolean} eventsEnabled=true\n   */\n  eventsEnabled: true,\n\n  /**\n   * Set to true if you want to automatically remove the popper when\n   * you call the `destroy` method.\n   * @prop {Boolean} removeOnDestroy=false\n   */\n  removeOnDestroy: false,\n\n  /**\n   * Callback called when the popper is created.<br />\n   * By default, it is set to no-op.<br />\n   * Access Popper.js instance with `data.instance`.\n   * @prop {onCreate}\n   */\n  onCreate: function onCreate() {},\n\n  /**\n   * Callback called when the popper is updated. This callback is not called\n   * on the initialization/creation of the popper, but only on subsequent\n   * updates.<br />\n   * By default, it is set to no-op.<br />\n   * Access Popper.js instance with `data.instance`.\n   * @prop {onUpdate}\n   */\n  onUpdate: function onUpdate() {},\n\n  /**\n   * List of modifiers used to modify the offsets before they are applied to the popper.\n   * They provide most of the functionalities of Popper.js.\n   * @prop {modifiers}\n   */\n  modifiers: modifiers\n};\n\n/**\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.<br />\n * You can use this method to position a popper relatively to a set of coordinates\n * in case you don't have a DOM node to use as reference.\n *\n * ```\n * new Popper(referenceObject, popperNode);\n * ```\n *\n * NB: This feature isn't supported in Internet Explorer 10.\n * @name referenceObject\n * @property {Function} data.getBoundingClientRect\n * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.\n * @property {number} data.clientWidth\n * An ES6 getter that will return the width of the virtual reference element.\n * @property {number} data.clientHeight\n * An ES6 getter that will return the height of the virtual reference element.\n */\n\n\nPopper.Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;\nPopper.placements = placements;\nPopper.Defaults = Defaults;\n\nexport default Popper;\n//# sourceMappingURL=popper.js.map\n","//! moment.js locale configuration\n//! locale : Afrikaans [af]\n//! author : Werner Mollentze : https://github.com/wernerm\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var af = moment.defineLocale('af', {\n        months: 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'),\n        weekdays: 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split(\n            '_'\n        ),\n        weekdaysShort: 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'),\n        weekdaysMin: 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'),\n        meridiemParse: /vm|nm/i,\n        isPM: function (input) {\n            return /^nm$/i.test(input);\n        },\n        meridiem: function (hours, minutes, isLower) {\n            if (hours < 12) {\n                return isLower ? 'vm' : 'VM';\n            } else {\n                return isLower ? 'nm' : 'NM';\n            }\n        },\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Vandag om] LT',\n            nextDay: '[Môre om] LT',\n            nextWeek: 'dddd [om] LT',\n            lastDay: '[Gister om] LT',\n            lastWeek: '[Laas] dddd [om] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'oor %s',\n            past: '%s gelede',\n            s: \"'n paar sekondes\",\n            ss: '%d sekondes',\n            m: \"'n minuut\",\n            mm: '%d minute',\n            h: \"'n uur\",\n            hh: '%d ure',\n            d: \"'n dag\",\n            dd: '%d dae',\n            M: \"'n maand\",\n            MM: '%d maande',\n            y: \"'n jaar\",\n            yy: '%d jaar',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n        ordinal: function (number) {\n            return (\n                number +\n                (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n            ); // Thanks to Joris Röling : https://github.com/jjupiter\n        },\n        week: {\n            dow: 1, // Maandag is die eerste dag van die week.\n            doy: 4, // Die week wat die 4de Januarie bevat is die eerste week van die jaar.\n        },\n    });\n\n    return af;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic [ar]\n//! author : Abdel Said: https://github.com/abdelsaid\n//! author : Ahmed Elkhatib\n//! author : forabi https://github.com/forabi\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '١',\n            2: '٢',\n            3: '٣',\n            4: '٤',\n            5: '٥',\n            6: '٦',\n            7: '٧',\n            8: '٨',\n            9: '٩',\n            0: '٠',\n        },\n        numberMap = {\n            '١': '1',\n            '٢': '2',\n            '٣': '3',\n            '٤': '4',\n            '٥': '5',\n            '٦': '6',\n            '٧': '7',\n            '٨': '8',\n            '٩': '9',\n            '٠': '0',\n        },\n        pluralForm = function (n) {\n            return n === 0\n                ? 0\n                : n === 1\n                ? 1\n                : n === 2\n                ? 2\n                : n % 100 >= 3 && n % 100 <= 10\n                ? 3\n                : n % 100 >= 11\n                ? 4\n                : 5;\n        },\n        plurals = {\n            s: [\n                'أقل من ثانية',\n                'ثانية واحدة',\n                ['ثانيتان', 'ثانيتين'],\n                '%d ثوان',\n                '%d ثانية',\n                '%d ثانية',\n            ],\n            m: [\n                'أقل من دقيقة',\n                'دقيقة واحدة',\n                ['دقيقتان', 'دقيقتين'],\n                '%d دقائق',\n                '%d دقيقة',\n                '%d دقيقة',\n            ],\n            h: [\n                'أقل من ساعة',\n                'ساعة واحدة',\n                ['ساعتان', 'ساعتين'],\n                '%d ساعات',\n                '%d ساعة',\n                '%d ساعة',\n            ],\n            d: [\n                'أقل من يوم',\n                'يوم واحد',\n                ['يومان', 'يومين'],\n                '%d أيام',\n                '%d يومًا',\n                '%d يوم',\n            ],\n            M: [\n                'أقل من شهر',\n                'شهر واحد',\n                ['شهران', 'شهرين'],\n                '%d أشهر',\n                '%d شهرا',\n                '%d شهر',\n            ],\n            y: [\n                'أقل من عام',\n                'عام واحد',\n                ['عامان', 'عامين'],\n                '%d أعوام',\n                '%d عامًا',\n                '%d عام',\n            ],\n        },\n        pluralize = function (u) {\n            return function (number, withoutSuffix, string, isFuture) {\n                var f = pluralForm(number),\n                    str = plurals[u][pluralForm(number)];\n                if (f === 2) {\n                    str = str[withoutSuffix ? 0 : 1];\n                }\n                return str.replace(/%d/i, number);\n            };\n        },\n        months = [\n            'يناير',\n            'فبراير',\n            'مارس',\n            'أبريل',\n            'مايو',\n            'يونيو',\n            'يوليو',\n            'أغسطس',\n            'سبتمبر',\n            'أكتوبر',\n            'نوفمبر',\n            'ديسمبر',\n        ];\n\n    var ar = moment.defineLocale('ar', {\n        months: months,\n        monthsShort: months,\n        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'D/\\u200FM/\\u200FYYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        meridiemParse: /ص|م/,\n        isPM: function (input) {\n            return 'م' === input;\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ص';\n            } else {\n                return 'م';\n            }\n        },\n        calendar: {\n            sameDay: '[اليوم عند الساعة] LT',\n            nextDay: '[غدًا عند الساعة] LT',\n            nextWeek: 'dddd [عند الساعة] LT',\n            lastDay: '[أمس عند الساعة] LT',\n            lastWeek: 'dddd [عند الساعة] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'بعد %s',\n            past: 'منذ %s',\n            s: pluralize('s'),\n            ss: pluralize('s'),\n            m: pluralize('m'),\n            mm: pluralize('m'),\n            h: pluralize('h'),\n            hh: pluralize('h'),\n            d: pluralize('d'),\n            dd: pluralize('d'),\n            M: pluralize('M'),\n            MM: pluralize('M'),\n            y: pluralize('y'),\n            yy: pluralize('y'),\n        },\n        preparse: function (string) {\n            return string\n                .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n                    return numberMap[match];\n                })\n                .replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string\n                .replace(/\\d/g, function (match) {\n                    return symbolMap[match];\n                })\n                .replace(/,/g, '،');\n        },\n        week: {\n            dow: 6, // Saturday is the first day of the week.\n            doy: 12, // The week that contains Jan 12th is the first week of the year.\n        },\n    });\n\n    return ar;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Algeria) [ar-dz]\n//! author : Amine Roukh: https://github.com/Amine27\n//! author : Abdel Said: https://github.com/abdelsaid\n//! author : Ahmed Elkhatib\n//! author : forabi https://github.com/forabi\n//! author : Noureddine LOUAHEDJ : https://github.com/noureddinem\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var pluralForm = function (n) {\n            return n === 0\n                ? 0\n                : n === 1\n                ? 1\n                : n === 2\n                ? 2\n                : n % 100 >= 3 && n % 100 <= 10\n                ? 3\n                : n % 100 >= 11\n                ? 4\n                : 5;\n        },\n        plurals = {\n            s: [\n                'أقل من ثانية',\n                'ثانية واحدة',\n                ['ثانيتان', 'ثانيتين'],\n                '%d ثوان',\n                '%d ثانية',\n                '%d ثانية',\n            ],\n            m: [\n                'أقل من دقيقة',\n                'دقيقة واحدة',\n                ['دقيقتان', 'دقيقتين'],\n                '%d دقائق',\n                '%d دقيقة',\n                '%d دقيقة',\n            ],\n            h: [\n                'أقل من ساعة',\n                'ساعة واحدة',\n                ['ساعتان', 'ساعتين'],\n                '%d ساعات',\n                '%d ساعة',\n                '%d ساعة',\n            ],\n            d: [\n                'أقل من يوم',\n                'يوم واحد',\n                ['يومان', 'يومين'],\n                '%d أيام',\n                '%d يومًا',\n                '%d يوم',\n            ],\n            M: [\n                'أقل من شهر',\n                'شهر واحد',\n                ['شهران', 'شهرين'],\n                '%d أشهر',\n                '%d شهرا',\n                '%d شهر',\n            ],\n            y: [\n                'أقل من عام',\n                'عام واحد',\n                ['عامان', 'عامين'],\n                '%d أعوام',\n                '%d عامًا',\n                '%d عام',\n            ],\n        },\n        pluralize = function (u) {\n            return function (number, withoutSuffix, string, isFuture) {\n                var f = pluralForm(number),\n                    str = plurals[u][pluralForm(number)];\n                if (f === 2) {\n                    str = str[withoutSuffix ? 0 : 1];\n                }\n                return str.replace(/%d/i, number);\n            };\n        },\n        months = [\n            'جانفي',\n            'فيفري',\n            'مارس',\n            'أفريل',\n            'ماي',\n            'جوان',\n            'جويلية',\n            'أوت',\n            'سبتمبر',\n            'أكتوبر',\n            'نوفمبر',\n            'ديسمبر',\n        ];\n\n    var arDz = moment.defineLocale('ar-dz', {\n        months: months,\n        monthsShort: months,\n        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'D/\\u200FM/\\u200FYYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        meridiemParse: /ص|م/,\n        isPM: function (input) {\n            return 'م' === input;\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ص';\n            } else {\n                return 'م';\n            }\n        },\n        calendar: {\n            sameDay: '[اليوم عند الساعة] LT',\n            nextDay: '[غدًا عند الساعة] LT',\n            nextWeek: 'dddd [عند الساعة] LT',\n            lastDay: '[أمس عند الساعة] LT',\n            lastWeek: 'dddd [عند الساعة] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'بعد %s',\n            past: 'منذ %s',\n            s: pluralize('s'),\n            ss: pluralize('s'),\n            m: pluralize('m'),\n            mm: pluralize('m'),\n            h: pluralize('h'),\n            hh: pluralize('h'),\n            d: pluralize('d'),\n            dd: pluralize('d'),\n            M: pluralize('M'),\n            MM: pluralize('M'),\n            y: pluralize('y'),\n            yy: pluralize('y'),\n        },\n        postformat: function (string) {\n            return string.replace(/,/g, '،');\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return arDz;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Kuwait) [ar-kw]\n//! author : Nusret Parlak: https://github.com/nusretparlak\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var arKw = moment.defineLocale('ar-kw', {\n        months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n            '_'\n        ),\n        monthsShort: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n            '_'\n        ),\n        weekdays: 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n        weekdaysShort: 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[اليوم على الساعة] LT',\n            nextDay: '[غدا على الساعة] LT',\n            nextWeek: 'dddd [على الساعة] LT',\n            lastDay: '[أمس على الساعة] LT',\n            lastWeek: 'dddd [على الساعة] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'في %s',\n            past: 'منذ %s',\n            s: 'ثوان',\n            ss: '%d ثانية',\n            m: 'دقيقة',\n            mm: '%d دقائق',\n            h: 'ساعة',\n            hh: '%d ساعات',\n            d: 'يوم',\n            dd: '%d أيام',\n            M: 'شهر',\n            MM: '%d أشهر',\n            y: 'سنة',\n            yy: '%d سنوات',\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 12, // The week that contains Jan 12th is the first week of the year.\n        },\n    });\n\n    return arKw;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Lybia) [ar-ly]\n//! author : Ali Hmer: https://github.com/kikoanis\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '1',\n            2: '2',\n            3: '3',\n            4: '4',\n            5: '5',\n            6: '6',\n            7: '7',\n            8: '8',\n            9: '9',\n            0: '0',\n        },\n        pluralForm = function (n) {\n            return n === 0\n                ? 0\n                : n === 1\n                ? 1\n                : n === 2\n                ? 2\n                : n % 100 >= 3 && n % 100 <= 10\n                ? 3\n                : n % 100 >= 11\n                ? 4\n                : 5;\n        },\n        plurals = {\n            s: [\n                'أقل من ثانية',\n                'ثانية واحدة',\n                ['ثانيتان', 'ثانيتين'],\n                '%d ثوان',\n                '%d ثانية',\n                '%d ثانية',\n            ],\n            m: [\n                'أقل من دقيقة',\n                'دقيقة واحدة',\n                ['دقيقتان', 'دقيقتين'],\n                '%d دقائق',\n                '%d دقيقة',\n                '%d دقيقة',\n            ],\n            h: [\n                'أقل من ساعة',\n                'ساعة واحدة',\n                ['ساعتان', 'ساعتين'],\n                '%d ساعات',\n                '%d ساعة',\n                '%d ساعة',\n            ],\n            d: [\n                'أقل من يوم',\n                'يوم واحد',\n                ['يومان', 'يومين'],\n                '%d أيام',\n                '%d يومًا',\n                '%d يوم',\n            ],\n            M: [\n                'أقل من شهر',\n                'شهر واحد',\n                ['شهران', 'شهرين'],\n                '%d أشهر',\n                '%d شهرا',\n                '%d شهر',\n            ],\n            y: [\n                'أقل من عام',\n                'عام واحد',\n                ['عامان', 'عامين'],\n                '%d أعوام',\n                '%d عامًا',\n                '%d عام',\n            ],\n        },\n        pluralize = function (u) {\n            return function (number, withoutSuffix, string, isFuture) {\n                var f = pluralForm(number),\n                    str = plurals[u][pluralForm(number)];\n                if (f === 2) {\n                    str = str[withoutSuffix ? 0 : 1];\n                }\n                return str.replace(/%d/i, number);\n            };\n        },\n        months = [\n            'يناير',\n            'فبراير',\n            'مارس',\n            'أبريل',\n            'مايو',\n            'يونيو',\n            'يوليو',\n            'أغسطس',\n            'سبتمبر',\n            'أكتوبر',\n            'نوفمبر',\n            'ديسمبر',\n        ];\n\n    var arLy = moment.defineLocale('ar-ly', {\n        months: months,\n        monthsShort: months,\n        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'D/\\u200FM/\\u200FYYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        meridiemParse: /ص|م/,\n        isPM: function (input) {\n            return 'م' === input;\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ص';\n            } else {\n                return 'م';\n            }\n        },\n        calendar: {\n            sameDay: '[اليوم عند الساعة] LT',\n            nextDay: '[غدًا عند الساعة] LT',\n            nextWeek: 'dddd [عند الساعة] LT',\n            lastDay: '[أمس عند الساعة] LT',\n            lastWeek: 'dddd [عند الساعة] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'بعد %s',\n            past: 'منذ %s',\n            s: pluralize('s'),\n            ss: pluralize('s'),\n            m: pluralize('m'),\n            mm: pluralize('m'),\n            h: pluralize('h'),\n            hh: pluralize('h'),\n            d: pluralize('d'),\n            dd: pluralize('d'),\n            M: pluralize('M'),\n            MM: pluralize('M'),\n            y: pluralize('y'),\n            yy: pluralize('y'),\n        },\n        preparse: function (string) {\n            return string.replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string\n                .replace(/\\d/g, function (match) {\n                    return symbolMap[match];\n                })\n                .replace(/,/g, '،');\n        },\n        week: {\n            dow: 6, // Saturday is the first day of the week.\n            doy: 12, // The week that contains Jan 12th is the first week of the year.\n        },\n    });\n\n    return arLy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Morocco) [ar-ma]\n//! author : ElFadili Yassine : https://github.com/ElFadiliY\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var arMa = moment.defineLocale('ar-ma', {\n        months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n            '_'\n        ),\n        monthsShort: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n            '_'\n        ),\n        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n        weekdaysShort: 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[اليوم على الساعة] LT',\n            nextDay: '[غدا على الساعة] LT',\n            nextWeek: 'dddd [على الساعة] LT',\n            lastDay: '[أمس على الساعة] LT',\n            lastWeek: 'dddd [على الساعة] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'في %s',\n            past: 'منذ %s',\n            s: 'ثوان',\n            ss: '%d ثانية',\n            m: 'دقيقة',\n            mm: '%d دقائق',\n            h: 'ساعة',\n            hh: '%d ساعات',\n            d: 'يوم',\n            dd: '%d أيام',\n            M: 'شهر',\n            MM: '%d أشهر',\n            y: 'سنة',\n            yy: '%d سنوات',\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return arMa;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Saudi Arabia) [ar-sa]\n//! author : Suhail Alkowaileet : https://github.com/xsoh\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '١',\n            2: '٢',\n            3: '٣',\n            4: '٤',\n            5: '٥',\n            6: '٦',\n            7: '٧',\n            8: '٨',\n            9: '٩',\n            0: '٠',\n        },\n        numberMap = {\n            '١': '1',\n            '٢': '2',\n            '٣': '3',\n            '٤': '4',\n            '٥': '5',\n            '٦': '6',\n            '٧': '7',\n            '٨': '8',\n            '٩': '9',\n            '٠': '0',\n        };\n\n    var arSa = moment.defineLocale('ar-sa', {\n        months: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n            '_'\n        ),\n        monthsShort: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n            '_'\n        ),\n        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        meridiemParse: /ص|م/,\n        isPM: function (input) {\n            return 'م' === input;\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ص';\n            } else {\n                return 'م';\n            }\n        },\n        calendar: {\n            sameDay: '[اليوم على الساعة] LT',\n            nextDay: '[غدا على الساعة] LT',\n            nextWeek: 'dddd [على الساعة] LT',\n            lastDay: '[أمس على الساعة] LT',\n            lastWeek: 'dddd [على الساعة] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'في %s',\n            past: 'منذ %s',\n            s: 'ثوان',\n            ss: '%d ثانية',\n            m: 'دقيقة',\n            mm: '%d دقائق',\n            h: 'ساعة',\n            hh: '%d ساعات',\n            d: 'يوم',\n            dd: '%d أيام',\n            M: 'شهر',\n            MM: '%d أشهر',\n            y: 'سنة',\n            yy: '%d سنوات',\n        },\n        preparse: function (string) {\n            return string\n                .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n                    return numberMap[match];\n                })\n                .replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string\n                .replace(/\\d/g, function (match) {\n                    return symbolMap[match];\n                })\n                .replace(/,/g, '،');\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return arSa;\n\n})));\n","//! moment.js locale configuration\n//! locale  :  Arabic (Tunisia) [ar-tn]\n//! author : Nader Toukabri : https://github.com/naderio\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var arTn = moment.defineLocale('ar-tn', {\n        months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n            '_'\n        ),\n        monthsShort: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n            '_'\n        ),\n        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[اليوم على الساعة] LT',\n            nextDay: '[غدا على الساعة] LT',\n            nextWeek: 'dddd [على الساعة] LT',\n            lastDay: '[أمس على الساعة] LT',\n            lastWeek: 'dddd [على الساعة] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'في %s',\n            past: 'منذ %s',\n            s: 'ثوان',\n            ss: '%d ثانية',\n            m: 'دقيقة',\n            mm: '%d دقائق',\n            h: 'ساعة',\n            hh: '%d ساعات',\n            d: 'يوم',\n            dd: '%d أيام',\n            M: 'شهر',\n            MM: '%d أشهر',\n            y: 'سنة',\n            yy: '%d سنوات',\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return arTn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Azerbaijani [az]\n//! author : topchiyev : https://github.com/topchiyev\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var suffixes = {\n        1: '-inci',\n        5: '-inci',\n        8: '-inci',\n        70: '-inci',\n        80: '-inci',\n        2: '-nci',\n        7: '-nci',\n        20: '-nci',\n        50: '-nci',\n        3: '-üncü',\n        4: '-üncü',\n        100: '-üncü',\n        6: '-ncı',\n        9: '-uncu',\n        10: '-uncu',\n        30: '-uncu',\n        60: '-ıncı',\n        90: '-ıncı',\n    };\n\n    var az = moment.defineLocale('az', {\n        months: 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split(\n            '_'\n        ),\n        monthsShort: 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'),\n        weekdays: 'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split(\n            '_'\n        ),\n        weekdaysShort: 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'),\n        weekdaysMin: 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[bugün saat] LT',\n            nextDay: '[sabah saat] LT',\n            nextWeek: '[gələn həftə] dddd [saat] LT',\n            lastDay: '[dünən] LT',\n            lastWeek: '[keçən həftə] dddd [saat] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s sonra',\n            past: '%s əvvəl',\n            s: 'bir neçə saniyə',\n            ss: '%d saniyə',\n            m: 'bir dəqiqə',\n            mm: '%d dəqiqə',\n            h: 'bir saat',\n            hh: '%d saat',\n            d: 'bir gün',\n            dd: '%d gün',\n            M: 'bir ay',\n            MM: '%d ay',\n            y: 'bir il',\n            yy: '%d il',\n        },\n        meridiemParse: /gecə|səhər|gündüz|axşam/,\n        isPM: function (input) {\n            return /^(gündüz|axşam)$/.test(input);\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'gecə';\n            } else if (hour < 12) {\n                return 'səhər';\n            } else if (hour < 17) {\n                return 'gündüz';\n            } else {\n                return 'axşam';\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,\n        ordinal: function (number) {\n            if (number === 0) {\n                // special case for zero\n                return number + '-ıncı';\n            }\n            var a = number % 10,\n                b = (number % 100) - a,\n                c = number >= 100 ? 100 : null;\n            return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return az;\n\n})));\n","//! moment.js locale configuration\n//! locale : Belarusian [be]\n//! author : Dmitry Demidov : https://github.com/demidov91\n//! author: Praleska: http://praleska.pro/\n//! Author : Menelion Elensúle : https://github.com/Oire\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function plural(word, num) {\n        var forms = word.split('_');\n        return num % 10 === 1 && num % 100 !== 11\n            ? forms[0]\n            : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n            ? forms[1]\n            : forms[2];\n    }\n    function relativeTimeWithPlural(number, withoutSuffix, key) {\n        var format = {\n            ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n            mm: withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін',\n            hh: withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін',\n            dd: 'дзень_дні_дзён',\n            MM: 'месяц_месяцы_месяцаў',\n            yy: 'год_гады_гадоў',\n        };\n        if (key === 'm') {\n            return withoutSuffix ? 'хвіліна' : 'хвіліну';\n        } else if (key === 'h') {\n            return withoutSuffix ? 'гадзіна' : 'гадзіну';\n        } else {\n            return number + ' ' + plural(format[key], +number);\n        }\n    }\n\n    var be = moment.defineLocale('be', {\n        months: {\n            format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split(\n                '_'\n            ),\n            standalone: 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split(\n                '_'\n            ),\n        },\n        monthsShort: 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split(\n            '_'\n        ),\n        weekdays: {\n            format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split(\n                '_'\n            ),\n            standalone: 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split(\n                '_'\n            ),\n            isFormat: /\\[ ?[Ууў] ?(?:мінулую|наступную)? ?\\] ?dddd/,\n        },\n        weekdaysShort: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n        weekdaysMin: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY г.',\n            LLL: 'D MMMM YYYY г., HH:mm',\n            LLLL: 'dddd, D MMMM YYYY г., HH:mm',\n        },\n        calendar: {\n            sameDay: '[Сёння ў] LT',\n            nextDay: '[Заўтра ў] LT',\n            lastDay: '[Учора ў] LT',\n            nextWeek: function () {\n                return '[У] dddd [ў] LT';\n            },\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                    case 3:\n                    case 5:\n                    case 6:\n                        return '[У мінулую] dddd [ў] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                        return '[У мінулы] dddd [ў] LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'праз %s',\n            past: '%s таму',\n            s: 'некалькі секунд',\n            m: relativeTimeWithPlural,\n            mm: relativeTimeWithPlural,\n            h: relativeTimeWithPlural,\n            hh: relativeTimeWithPlural,\n            d: 'дзень',\n            dd: relativeTimeWithPlural,\n            M: 'месяц',\n            MM: relativeTimeWithPlural,\n            y: 'год',\n            yy: relativeTimeWithPlural,\n        },\n        meridiemParse: /ночы|раніцы|дня|вечара/,\n        isPM: function (input) {\n            return /^(дня|вечара)$/.test(input);\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'ночы';\n            } else if (hour < 12) {\n                return 'раніцы';\n            } else if (hour < 17) {\n                return 'дня';\n            } else {\n                return 'вечара';\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(і|ы|га)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'M':\n                case 'd':\n                case 'DDD':\n                case 'w':\n                case 'W':\n                    return (number % 10 === 2 || number % 10 === 3) &&\n                        number % 100 !== 12 &&\n                        number % 100 !== 13\n                        ? number + '-і'\n                        : number + '-ы';\n                case 'D':\n                    return number + '-га';\n                default:\n                    return number;\n            }\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return be;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bulgarian [bg]\n//! author : Krasen Borisov : https://github.com/kraz\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var bg = moment.defineLocale('bg', {\n        months: 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split(\n            '_'\n        ),\n        monthsShort: 'яну_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'),\n        weekdays: 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split(\n            '_'\n        ),\n        weekdaysShort: 'нед_пон_вто_сря_чет_пет_съб'.split('_'),\n        weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'D.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY H:mm',\n            LLLL: 'dddd, D MMMM YYYY H:mm',\n        },\n        calendar: {\n            sameDay: '[Днес в] LT',\n            nextDay: '[Утре в] LT',\n            nextWeek: 'dddd [в] LT',\n            lastDay: '[Вчера в] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                    case 3:\n                    case 6:\n                        return '[Миналата] dddd [в] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[Миналия] dddd [в] LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'след %s',\n            past: 'преди %s',\n            s: 'няколко секунди',\n            ss: '%d секунди',\n            m: 'минута',\n            mm: '%d минути',\n            h: 'час',\n            hh: '%d часа',\n            d: 'ден',\n            dd: '%d дена',\n            w: 'седмица',\n            ww: '%d седмици',\n            M: 'месец',\n            MM: '%d месеца',\n            y: 'година',\n            yy: '%d години',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n        ordinal: function (number) {\n            var lastDigit = number % 10,\n                last2Digits = number % 100;\n            if (number === 0) {\n                return number + '-ев';\n            } else if (last2Digits === 0) {\n                return number + '-ен';\n            } else if (last2Digits > 10 && last2Digits < 20) {\n                return number + '-ти';\n            } else if (lastDigit === 1) {\n                return number + '-ви';\n            } else if (lastDigit === 2) {\n                return number + '-ри';\n            } else if (lastDigit === 7 || lastDigit === 8) {\n                return number + '-ми';\n            } else {\n                return number + '-ти';\n            }\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return bg;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bambara [bm]\n//! author : Estelle Comment : https://github.com/estellecomment\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var bm = moment.defineLocale('bm', {\n        months: 'Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo'.split(\n            '_'\n        ),\n        monthsShort: 'Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des'.split('_'),\n        weekdays: 'Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri'.split('_'),\n        weekdaysShort: 'Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib'.split('_'),\n        weekdaysMin: 'Ka_Nt_Ta_Ar_Al_Ju_Si'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'MMMM [tile] D [san] YYYY',\n            LLL: 'MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',\n            LLLL: 'dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',\n        },\n        calendar: {\n            sameDay: '[Bi lɛrɛ] LT',\n            nextDay: '[Sini lɛrɛ] LT',\n            nextWeek: 'dddd [don lɛrɛ] LT',\n            lastDay: '[Kunu lɛrɛ] LT',\n            lastWeek: 'dddd [tɛmɛnen lɛrɛ] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s kɔnɔ',\n            past: 'a bɛ %s bɔ',\n            s: 'sanga dama dama',\n            ss: 'sekondi %d',\n            m: 'miniti kelen',\n            mm: 'miniti %d',\n            h: 'lɛrɛ kelen',\n            hh: 'lɛrɛ %d',\n            d: 'tile kelen',\n            dd: 'tile %d',\n            M: 'kalo kelen',\n            MM: 'kalo %d',\n            y: 'san kelen',\n            yy: 'san %d',\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return bm;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bengali [bn]\n//! author : Kaushik Gandhi : https://github.com/kaushikgandhi\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '১',\n            2: '২',\n            3: '৩',\n            4: '৪',\n            5: '৫',\n            6: '৬',\n            7: '৭',\n            8: '৮',\n            9: '৯',\n            0: '০',\n        },\n        numberMap = {\n            '১': '1',\n            '২': '2',\n            '৩': '3',\n            '৪': '4',\n            '৫': '5',\n            '৬': '6',\n            '৭': '7',\n            '৮': '8',\n            '৯': '9',\n            '০': '0',\n        };\n\n    var bn = moment.defineLocale('bn', {\n        months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(\n            '_'\n        ),\n        monthsShort: 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(\n            '_'\n        ),\n        weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(\n            '_'\n        ),\n        weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),\n        weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),\n        longDateFormat: {\n            LT: 'A h:mm সময়',\n            LTS: 'A h:mm:ss সময়',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, A h:mm সময়',\n            LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',\n        },\n        calendar: {\n            sameDay: '[আজ] LT',\n            nextDay: '[আগামীকাল] LT',\n            nextWeek: 'dddd, LT',\n            lastDay: '[গতকাল] LT',\n            lastWeek: '[গত] dddd, LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s পরে',\n            past: '%s আগে',\n            s: 'কয়েক সেকেন্ড',\n            ss: '%d সেকেন্ড',\n            m: 'এক মিনিট',\n            mm: '%d মিনিট',\n            h: 'এক ঘন্টা',\n            hh: '%d ঘন্টা',\n            d: 'এক দিন',\n            dd: '%d দিন',\n            M: 'এক মাস',\n            MM: '%d মাস',\n            y: 'এক বছর',\n            yy: '%d বছর',\n        },\n        preparse: function (string) {\n            return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (\n                (meridiem === 'রাত' && hour >= 4) ||\n                (meridiem === 'দুপুর' && hour < 5) ||\n                meridiem === 'বিকাল'\n            ) {\n                return hour + 12;\n            } else {\n                return hour;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'রাত';\n            } else if (hour < 10) {\n                return 'সকাল';\n            } else if (hour < 17) {\n                return 'দুপুর';\n            } else if (hour < 20) {\n                return 'বিকাল';\n            } else {\n                return 'রাত';\n            }\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return bn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bengali (Bangladesh) [bn-bd]\n//! author : Asraf Hossain Patoary : https://github.com/ashwoolford\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '১',\n            2: '২',\n            3: '৩',\n            4: '৪',\n            5: '৫',\n            6: '৬',\n            7: '৭',\n            8: '৮',\n            9: '৯',\n            0: '০',\n        },\n        numberMap = {\n            '১': '1',\n            '২': '2',\n            '৩': '3',\n            '৪': '4',\n            '৫': '5',\n            '৬': '6',\n            '৭': '7',\n            '৮': '8',\n            '৯': '9',\n            '০': '0',\n        };\n\n    var bnBd = moment.defineLocale('bn-bd', {\n        months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(\n            '_'\n        ),\n        monthsShort: 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(\n            '_'\n        ),\n        weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(\n            '_'\n        ),\n        weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),\n        weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),\n        longDateFormat: {\n            LT: 'A h:mm সময়',\n            LTS: 'A h:mm:ss সময়',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, A h:mm সময়',\n            LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',\n        },\n        calendar: {\n            sameDay: '[আজ] LT',\n            nextDay: '[আগামীকাল] LT',\n            nextWeek: 'dddd, LT',\n            lastDay: '[গতকাল] LT',\n            lastWeek: '[গত] dddd, LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s পরে',\n            past: '%s আগে',\n            s: 'কয়েক সেকেন্ড',\n            ss: '%d সেকেন্ড',\n            m: 'এক মিনিট',\n            mm: '%d মিনিট',\n            h: 'এক ঘন্টা',\n            hh: '%d ঘন্টা',\n            d: 'এক দিন',\n            dd: '%d দিন',\n            M: 'এক মাস',\n            MM: '%d মাস',\n            y: 'এক বছর',\n            yy: '%d বছর',\n        },\n        preparse: function (string) {\n            return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n\n        meridiemParse: /রাত|ভোর|সকাল|দুপুর|বিকাল|সন্ধ্যা|রাত/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'রাত') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'ভোর') {\n                return hour;\n            } else if (meridiem === 'সকাল') {\n                return hour;\n            } else if (meridiem === 'দুপুর') {\n                return hour >= 3 ? hour : hour + 12;\n            } else if (meridiem === 'বিকাল') {\n                return hour + 12;\n            } else if (meridiem === 'সন্ধ্যা') {\n                return hour + 12;\n            }\n        },\n\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'রাত';\n            } else if (hour < 6) {\n                return 'ভোর';\n            } else if (hour < 12) {\n                return 'সকাল';\n            } else if (hour < 15) {\n                return 'দুপুর';\n            } else if (hour < 18) {\n                return 'বিকাল';\n            } else if (hour < 20) {\n                return 'সন্ধ্যা';\n            } else {\n                return 'রাত';\n            }\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return bnBd;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tibetan [bo]\n//! author : Thupten N. Chakrishar : https://github.com/vajradog\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '༡',\n            2: '༢',\n            3: '༣',\n            4: '༤',\n            5: '༥',\n            6: '༦',\n            7: '༧',\n            8: '༨',\n            9: '༩',\n            0: '༠',\n        },\n        numberMap = {\n            '༡': '1',\n            '༢': '2',\n            '༣': '3',\n            '༤': '4',\n            '༥': '5',\n            '༦': '6',\n            '༧': '7',\n            '༨': '8',\n            '༩': '9',\n            '༠': '0',\n        };\n\n    var bo = moment.defineLocale('bo', {\n        months: 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split(\n            '_'\n        ),\n        monthsShort: 'ཟླ་1_ཟླ་2_ཟླ་3_ཟླ་4_ཟླ་5_ཟླ་6_ཟླ་7_ཟླ་8_ཟླ་9_ཟླ་10_ཟླ་11_ཟླ་12'.split(\n            '_'\n        ),\n        monthsShortRegex: /^(ཟླ་\\d{1,2})/,\n        monthsParseExact: true,\n        weekdays: 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split(\n            '_'\n        ),\n        weekdaysShort: 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split(\n            '_'\n        ),\n        weekdaysMin: 'ཉི_ཟླ_མིག_ལྷག_ཕུར_སངས_སྤེན'.split('_'),\n        longDateFormat: {\n            LT: 'A h:mm',\n            LTS: 'A h:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, A h:mm',\n            LLLL: 'dddd, D MMMM YYYY, A h:mm',\n        },\n        calendar: {\n            sameDay: '[དི་རིང] LT',\n            nextDay: '[སང་ཉིན] LT',\n            nextWeek: '[བདུན་ཕྲག་རྗེས་མ], LT',\n            lastDay: '[ཁ་སང] LT',\n            lastWeek: '[བདུན་ཕྲག་མཐའ་མ] dddd, LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s ལ་',\n            past: '%s སྔན་ལ',\n            s: 'ལམ་སང',\n            ss: '%d སྐར་ཆ།',\n            m: 'སྐར་མ་གཅིག',\n            mm: '%d སྐར་མ',\n            h: 'ཆུ་ཚོད་གཅིག',\n            hh: '%d ཆུ་ཚོད',\n            d: 'ཉིན་གཅིག',\n            dd: '%d ཉིན་',\n            M: 'ཟླ་བ་གཅིག',\n            MM: '%d ཟླ་བ',\n            y: 'ལོ་གཅིག',\n            yy: '%d ལོ',\n        },\n        preparse: function (string) {\n            return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (\n                (meridiem === 'མཚན་མོ' && hour >= 4) ||\n                (meridiem === 'ཉིན་གུང' && hour < 5) ||\n                meridiem === 'དགོང་དག'\n            ) {\n                return hour + 12;\n            } else {\n                return hour;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'མཚན་མོ';\n            } else if (hour < 10) {\n                return 'ཞོགས་ཀས';\n            } else if (hour < 17) {\n                return 'ཉིན་གུང';\n            } else if (hour < 20) {\n                return 'དགོང་དག';\n            } else {\n                return 'མཚན་མོ';\n            }\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return bo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Breton [br]\n//! author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function relativeTimeWithMutation(number, withoutSuffix, key) {\n        var format = {\n            mm: 'munutenn',\n            MM: 'miz',\n            dd: 'devezh',\n        };\n        return number + ' ' + mutation(format[key], number);\n    }\n    function specialMutationForYears(number) {\n        switch (lastNumber(number)) {\n            case 1:\n            case 3:\n            case 4:\n            case 5:\n            case 9:\n                return number + ' bloaz';\n            default:\n                return number + ' vloaz';\n        }\n    }\n    function lastNumber(number) {\n        if (number > 9) {\n            return lastNumber(number % 10);\n        }\n        return number;\n    }\n    function mutation(text, number) {\n        if (number === 2) {\n            return softMutation(text);\n        }\n        return text;\n    }\n    function softMutation(text) {\n        var mutationTable = {\n            m: 'v',\n            b: 'v',\n            d: 'z',\n        };\n        if (mutationTable[text.charAt(0)] === undefined) {\n            return text;\n        }\n        return mutationTable[text.charAt(0)] + text.substring(1);\n    }\n\n    var monthsParse = [\n            /^gen/i,\n            /^c[ʼ\\']hwe/i,\n            /^meu/i,\n            /^ebr/i,\n            /^mae/i,\n            /^(mez|eve)/i,\n            /^gou/i,\n            /^eos/i,\n            /^gwe/i,\n            /^her/i,\n            /^du/i,\n            /^ker/i,\n        ],\n        monthsRegex = /^(genver|c[ʼ\\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu|gen|c[ʼ\\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,\n        monthsStrictRegex = /^(genver|c[ʼ\\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu)/i,\n        monthsShortStrictRegex = /^(gen|c[ʼ\\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,\n        fullWeekdaysParse = [\n            /^sul/i,\n            /^lun/i,\n            /^meurzh/i,\n            /^merc[ʼ\\']her/i,\n            /^yaou/i,\n            /^gwener/i,\n            /^sadorn/i,\n        ],\n        shortWeekdaysParse = [\n            /^Sul/i,\n            /^Lun/i,\n            /^Meu/i,\n            /^Mer/i,\n            /^Yao/i,\n            /^Gwe/i,\n            /^Sad/i,\n        ],\n        minWeekdaysParse = [\n            /^Su/i,\n            /^Lu/i,\n            /^Me([^r]|$)/i,\n            /^Mer/i,\n            /^Ya/i,\n            /^Gw/i,\n            /^Sa/i,\n        ];\n\n    var br = moment.defineLocale('br', {\n        months: 'Genver_Cʼhwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split(\n            '_'\n        ),\n        monthsShort: 'Gen_Cʼhwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'),\n        weekdays: 'Sul_Lun_Meurzh_Mercʼher_Yaou_Gwener_Sadorn'.split('_'),\n        weekdaysShort: 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'),\n        weekdaysMin: 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'),\n        weekdaysParse: minWeekdaysParse,\n        fullWeekdaysParse: fullWeekdaysParse,\n        shortWeekdaysParse: shortWeekdaysParse,\n        minWeekdaysParse: minWeekdaysParse,\n\n        monthsRegex: monthsRegex,\n        monthsShortRegex: monthsRegex,\n        monthsStrictRegex: monthsStrictRegex,\n        monthsShortStrictRegex: monthsShortStrictRegex,\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: monthsParse,\n\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D [a viz] MMMM YYYY',\n            LLL: 'D [a viz] MMMM YYYY HH:mm',\n            LLLL: 'dddd, D [a viz] MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Hiziv da] LT',\n            nextDay: '[Warcʼhoazh da] LT',\n            nextWeek: 'dddd [da] LT',\n            lastDay: '[Decʼh da] LT',\n            lastWeek: 'dddd [paset da] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'a-benn %s',\n            past: '%s ʼzo',\n            s: 'un nebeud segondennoù',\n            ss: '%d eilenn',\n            m: 'ur vunutenn',\n            mm: relativeTimeWithMutation,\n            h: 'un eur',\n            hh: '%d eur',\n            d: 'un devezh',\n            dd: relativeTimeWithMutation,\n            M: 'ur miz',\n            MM: relativeTimeWithMutation,\n            y: 'ur bloaz',\n            yy: specialMutationForYears,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(añ|vet)/,\n        ordinal: function (number) {\n            var output = number === 1 ? 'añ' : 'vet';\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n        meridiemParse: /a.m.|g.m./, // goude merenn | a-raok merenn\n        isPM: function (token) {\n            return token === 'g.m.';\n        },\n        meridiem: function (hour, minute, isLower) {\n            return hour < 12 ? 'a.m.' : 'g.m.';\n        },\n    });\n\n    return br;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bosnian [bs]\n//! author : Nedim Cholich : https://github.com/frontyard\n//! based on (hr) translation by Bojan Marković\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function translate(number, withoutSuffix, key) {\n        var result = number + ' ';\n        switch (key) {\n            case 'ss':\n                if (number === 1) {\n                    result += 'sekunda';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'sekunde';\n                } else {\n                    result += 'sekundi';\n                }\n                return result;\n            case 'm':\n                return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n            case 'mm':\n                if (number === 1) {\n                    result += 'minuta';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'minute';\n                } else {\n                    result += 'minuta';\n                }\n                return result;\n            case 'h':\n                return withoutSuffix ? 'jedan sat' : 'jednog sata';\n            case 'hh':\n                if (number === 1) {\n                    result += 'sat';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'sata';\n                } else {\n                    result += 'sati';\n                }\n                return result;\n            case 'dd':\n                if (number === 1) {\n                    result += 'dan';\n                } else {\n                    result += 'dana';\n                }\n                return result;\n            case 'MM':\n                if (number === 1) {\n                    result += 'mjesec';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'mjeseca';\n                } else {\n                    result += 'mjeseci';\n                }\n                return result;\n            case 'yy':\n                if (number === 1) {\n                    result += 'godina';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'godine';\n                } else {\n                    result += 'godina';\n                }\n                return result;\n        }\n    }\n\n    var bs = moment.defineLocale('bs', {\n        months: 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split(\n            '_'\n        ),\n        monthsShort: 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n            '_'\n        ),\n        weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY H:mm',\n            LLLL: 'dddd, D. MMMM YYYY H:mm',\n        },\n        calendar: {\n            sameDay: '[danas u] LT',\n            nextDay: '[sutra u] LT',\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[u] [nedjelju] [u] LT';\n                    case 3:\n                        return '[u] [srijedu] [u] LT';\n                    case 6:\n                        return '[u] [subotu] [u] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[u] dddd [u] LT';\n                }\n            },\n            lastDay: '[jučer u] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                    case 3:\n                        return '[prošlu] dddd [u] LT';\n                    case 6:\n                        return '[prošle] [subote] [u] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[prošli] dddd [u] LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'za %s',\n            past: 'prije %s',\n            s: 'par sekundi',\n            ss: translate,\n            m: translate,\n            mm: translate,\n            h: translate,\n            hh: translate,\n            d: 'dan',\n            dd: translate,\n            M: 'mjesec',\n            MM: translate,\n            y: 'godinu',\n            yy: translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return bs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Catalan [ca]\n//! author : Juan G. Hurtado : https://github.com/juanghurtado\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var ca = moment.defineLocale('ca', {\n        months: {\n            standalone: 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split(\n                '_'\n            ),\n            format: \"de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre\".split(\n                '_'\n            ),\n            isFormat: /D[oD]?(\\s)+MMMM/,\n        },\n        monthsShort: 'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split(\n            '_'\n        ),\n        weekdaysShort: 'dg._dl._dt._dc._dj._dv._ds.'.split('_'),\n        weekdaysMin: 'dg_dl_dt_dc_dj_dv_ds'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM [de] YYYY',\n            ll: 'D MMM YYYY',\n            LLL: 'D MMMM [de] YYYY [a les] H:mm',\n            lll: 'D MMM YYYY, H:mm',\n            LLLL: 'dddd D MMMM [de] YYYY [a les] H:mm',\n            llll: 'ddd D MMM YYYY, H:mm',\n        },\n        calendar: {\n            sameDay: function () {\n                return '[avui a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n            },\n            nextDay: function () {\n                return '[demà a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n            },\n            nextWeek: function () {\n                return 'dddd [a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n            },\n            lastDay: function () {\n                return '[ahir a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n            },\n            lastWeek: function () {\n                return (\n                    '[el] dddd [passat a ' +\n                    (this.hours() !== 1 ? 'les' : 'la') +\n                    '] LT'\n                );\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: \"d'aquí %s\",\n            past: 'fa %s',\n            s: 'uns segons',\n            ss: '%d segons',\n            m: 'un minut',\n            mm: '%d minuts',\n            h: 'una hora',\n            hh: '%d hores',\n            d: 'un dia',\n            dd: '%d dies',\n            M: 'un mes',\n            MM: '%d mesos',\n            y: 'un any',\n            yy: '%d anys',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n        ordinal: function (number, period) {\n            var output =\n                number === 1\n                    ? 'r'\n                    : number === 2\n                    ? 'n'\n                    : number === 3\n                    ? 'r'\n                    : number === 4\n                    ? 't'\n                    : 'è';\n            if (period === 'w' || period === 'W') {\n                output = 'a';\n            }\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return ca;\n\n})));\n","//! moment.js locale configuration\n//! locale : Czech [cs]\n//! author : petrbela : https://github.com/petrbela\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var months = 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split(\n            '_'\n        ),\n        monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_'),\n        monthsParse = [\n            /^led/i,\n            /^úno/i,\n            /^bře/i,\n            /^dub/i,\n            /^kvě/i,\n            /^(čvn|červen$|června)/i,\n            /^(čvc|červenec|července)/i,\n            /^srp/i,\n            /^zář/i,\n            /^říj/i,\n            /^lis/i,\n            /^pro/i,\n        ],\n        // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.\n        // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.\n        monthsRegex = /^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i;\n\n    function plural(n) {\n        return n > 1 && n < 5 && ~~(n / 10) !== 1;\n    }\n    function translate(number, withoutSuffix, key, isFuture) {\n        var result = number + ' ';\n        switch (key) {\n            case 's': // a few seconds / in a few seconds / a few seconds ago\n                return withoutSuffix || isFuture ? 'pár sekund' : 'pár sekundami';\n            case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'sekundy' : 'sekund');\n                } else {\n                    return result + 'sekundami';\n                }\n            case 'm': // a minute / in a minute / a minute ago\n                return withoutSuffix ? 'minuta' : isFuture ? 'minutu' : 'minutou';\n            case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'minuty' : 'minut');\n                } else {\n                    return result + 'minutami';\n                }\n            case 'h': // an hour / in an hour / an hour ago\n                return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n            case 'hh': // 9 hours / in 9 hours / 9 hours ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'hodiny' : 'hodin');\n                } else {\n                    return result + 'hodinami';\n                }\n            case 'd': // a day / in a day / a day ago\n                return withoutSuffix || isFuture ? 'den' : 'dnem';\n            case 'dd': // 9 days / in 9 days / 9 days ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'dny' : 'dní');\n                } else {\n                    return result + 'dny';\n                }\n            case 'M': // a month / in a month / a month ago\n                return withoutSuffix || isFuture ? 'měsíc' : 'měsícem';\n            case 'MM': // 9 months / in 9 months / 9 months ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'měsíce' : 'měsíců');\n                } else {\n                    return result + 'měsíci';\n                }\n            case 'y': // a year / in a year / a year ago\n                return withoutSuffix || isFuture ? 'rok' : 'rokem';\n            case 'yy': // 9 years / in 9 years / 9 years ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'roky' : 'let');\n                } else {\n                    return result + 'lety';\n                }\n        }\n    }\n\n    var cs = moment.defineLocale('cs', {\n        months: months,\n        monthsShort: monthsShort,\n        monthsRegex: monthsRegex,\n        monthsShortRegex: monthsRegex,\n        // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.\n        // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.\n        monthsStrictRegex: /^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i,\n        monthsShortStrictRegex: /^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: monthsParse,\n        weekdays: 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'),\n        weekdaysShort: 'ne_po_út_st_čt_pá_so'.split('_'),\n        weekdaysMin: 'ne_po_út_st_čt_pá_so'.split('_'),\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY H:mm',\n            LLLL: 'dddd D. MMMM YYYY H:mm',\n            l: 'D. M. YYYY',\n        },\n        calendar: {\n            sameDay: '[dnes v] LT',\n            nextDay: '[zítra v] LT',\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[v neděli v] LT';\n                    case 1:\n                    case 2:\n                        return '[v] dddd [v] LT';\n                    case 3:\n                        return '[ve středu v] LT';\n                    case 4:\n                        return '[ve čtvrtek v] LT';\n                    case 5:\n                        return '[v pátek v] LT';\n                    case 6:\n                        return '[v sobotu v] LT';\n                }\n            },\n            lastDay: '[včera v] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[minulou neděli v] LT';\n                    case 1:\n                    case 2:\n                        return '[minulé] dddd [v] LT';\n                    case 3:\n                        return '[minulou středu v] LT';\n                    case 4:\n                    case 5:\n                        return '[minulý] dddd [v] LT';\n                    case 6:\n                        return '[minulou sobotu v] LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'za %s',\n            past: 'před %s',\n            s: translate,\n            ss: translate,\n            m: translate,\n            mm: translate,\n            h: translate,\n            hh: translate,\n            d: translate,\n            dd: translate,\n            M: translate,\n            MM: translate,\n            y: translate,\n            yy: translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return cs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chuvash [cv]\n//! author : Anatoly Mironov : https://github.com/mirontoli\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var cv = moment.defineLocale('cv', {\n        months: 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split(\n            '_'\n        ),\n        monthsShort: 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'),\n        weekdays: 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split(\n            '_'\n        ),\n        weekdaysShort: 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'),\n        weekdaysMin: 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD-MM-YYYY',\n            LL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]',\n            LLL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\n            LLLL: 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\n        },\n        calendar: {\n            sameDay: '[Паян] LT [сехетре]',\n            nextDay: '[Ыран] LT [сехетре]',\n            lastDay: '[Ӗнер] LT [сехетре]',\n            nextWeek: '[Ҫитес] dddd LT [сехетре]',\n            lastWeek: '[Иртнӗ] dddd LT [сехетре]',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: function (output) {\n                var affix = /сехет$/i.exec(output)\n                    ? 'рен'\n                    : /ҫул$/i.exec(output)\n                    ? 'тан'\n                    : 'ран';\n                return output + affix;\n            },\n            past: '%s каялла',\n            s: 'пӗр-ик ҫеккунт',\n            ss: '%d ҫеккунт',\n            m: 'пӗр минут',\n            mm: '%d минут',\n            h: 'пӗр сехет',\n            hh: '%d сехет',\n            d: 'пӗр кун',\n            dd: '%d кун',\n            M: 'пӗр уйӑх',\n            MM: '%d уйӑх',\n            y: 'пӗр ҫул',\n            yy: '%d ҫул',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-мӗш/,\n        ordinal: '%d-мӗш',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return cv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Welsh [cy]\n//! author : Robert Allen : https://github.com/robgallen\n//! author : https://github.com/ryangreaves\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var cy = moment.defineLocale('cy', {\n        months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split(\n            '_'\n        ),\n        monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split(\n            '_'\n        ),\n        weekdays: 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split(\n            '_'\n        ),\n        weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'),\n        weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'),\n        weekdaysParseExact: true,\n        // time formats are the same as en-gb\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Heddiw am] LT',\n            nextDay: '[Yfory am] LT',\n            nextWeek: 'dddd [am] LT',\n            lastDay: '[Ddoe am] LT',\n            lastWeek: 'dddd [diwethaf am] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'mewn %s',\n            past: '%s yn ôl',\n            s: 'ychydig eiliadau',\n            ss: '%d eiliad',\n            m: 'munud',\n            mm: '%d munud',\n            h: 'awr',\n            hh: '%d awr',\n            d: 'diwrnod',\n            dd: '%d diwrnod',\n            M: 'mis',\n            MM: '%d mis',\n            y: 'blwyddyn',\n            yy: '%d flynedd',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,\n        // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh\n        ordinal: function (number) {\n            var b = number,\n                output = '',\n                lookup = [\n                    '',\n                    'af',\n                    'il',\n                    'ydd',\n                    'ydd',\n                    'ed',\n                    'ed',\n                    'ed',\n                    'fed',\n                    'fed',\n                    'fed', // 1af to 10fed\n                    'eg',\n                    'fed',\n                    'eg',\n                    'eg',\n                    'fed',\n                    'eg',\n                    'eg',\n                    'fed',\n                    'eg',\n                    'fed', // 11eg to 20fed\n                ];\n            if (b > 20) {\n                if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) {\n                    output = 'fed'; // not 30ain, 70ain or 90ain\n                } else {\n                    output = 'ain';\n                }\n            } else if (b > 0) {\n                output = lookup[b];\n            }\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return cy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Danish [da]\n//! author : Ulrik Nielsen : https://github.com/mrbase\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var da = moment.defineLocale('da', {\n        months: 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split(\n            '_'\n        ),\n        monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n        weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n        weekdaysShort: 'søn_man_tir_ons_tor_fre_lør'.split('_'),\n        weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY HH:mm',\n            LLLL: 'dddd [d.] D. MMMM YYYY [kl.] HH:mm',\n        },\n        calendar: {\n            sameDay: '[i dag kl.] LT',\n            nextDay: '[i morgen kl.] LT',\n            nextWeek: 'på dddd [kl.] LT',\n            lastDay: '[i går kl.] LT',\n            lastWeek: '[i] dddd[s kl.] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'om %s',\n            past: '%s siden',\n            s: 'få sekunder',\n            ss: '%d sekunder',\n            m: 'et minut',\n            mm: '%d minutter',\n            h: 'en time',\n            hh: '%d timer',\n            d: 'en dag',\n            dd: '%d dage',\n            M: 'en måned',\n            MM: '%d måneder',\n            y: 'et år',\n            yy: '%d år',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return da;\n\n})));\n","//! moment.js locale configuration\n//! locale : German [de]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Mikolaj Dadela : https://github.com/mik01aj\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var format = {\n            m: ['eine Minute', 'einer Minute'],\n            h: ['eine Stunde', 'einer Stunde'],\n            d: ['ein Tag', 'einem Tag'],\n            dd: [number + ' Tage', number + ' Tagen'],\n            w: ['eine Woche', 'einer Woche'],\n            M: ['ein Monat', 'einem Monat'],\n            MM: [number + ' Monate', number + ' Monaten'],\n            y: ['ein Jahr', 'einem Jahr'],\n            yy: [number + ' Jahre', number + ' Jahren'],\n        };\n        return withoutSuffix ? format[key][0] : format[key][1];\n    }\n\n    var de = moment.defineLocale('de', {\n        months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n            '_'\n        ),\n        monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n            '_'\n        ),\n        weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n        weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY HH:mm',\n            LLLL: 'dddd, D. MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[heute um] LT [Uhr]',\n            sameElse: 'L',\n            nextDay: '[morgen um] LT [Uhr]',\n            nextWeek: 'dddd [um] LT [Uhr]',\n            lastDay: '[gestern um] LT [Uhr]',\n            lastWeek: '[letzten] dddd [um] LT [Uhr]',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: 'vor %s',\n            s: 'ein paar Sekunden',\n            ss: '%d Sekunden',\n            m: processRelativeTime,\n            mm: '%d Minuten',\n            h: processRelativeTime,\n            hh: '%d Stunden',\n            d: processRelativeTime,\n            dd: processRelativeTime,\n            w: processRelativeTime,\n            ww: '%d Wochen',\n            M: processRelativeTime,\n            MM: processRelativeTime,\n            y: processRelativeTime,\n            yy: processRelativeTime,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return de;\n\n})));\n","//! moment.js locale configuration\n//! locale : German (Austria) [de-at]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Martin Groller : https://github.com/MadMG\n//! author : Mikolaj Dadela : https://github.com/mik01aj\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var format = {\n            m: ['eine Minute', 'einer Minute'],\n            h: ['eine Stunde', 'einer Stunde'],\n            d: ['ein Tag', 'einem Tag'],\n            dd: [number + ' Tage', number + ' Tagen'],\n            w: ['eine Woche', 'einer Woche'],\n            M: ['ein Monat', 'einem Monat'],\n            MM: [number + ' Monate', number + ' Monaten'],\n            y: ['ein Jahr', 'einem Jahr'],\n            yy: [number + ' Jahre', number + ' Jahren'],\n        };\n        return withoutSuffix ? format[key][0] : format[key][1];\n    }\n\n    var deAt = moment.defineLocale('de-at', {\n        months: 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n            '_'\n        ),\n        monthsShort: 'Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n            '_'\n        ),\n        weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n        weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY HH:mm',\n            LLLL: 'dddd, D. MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[heute um] LT [Uhr]',\n            sameElse: 'L',\n            nextDay: '[morgen um] LT [Uhr]',\n            nextWeek: 'dddd [um] LT [Uhr]',\n            lastDay: '[gestern um] LT [Uhr]',\n            lastWeek: '[letzten] dddd [um] LT [Uhr]',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: 'vor %s',\n            s: 'ein paar Sekunden',\n            ss: '%d Sekunden',\n            m: processRelativeTime,\n            mm: '%d Minuten',\n            h: processRelativeTime,\n            hh: '%d Stunden',\n            d: processRelativeTime,\n            dd: processRelativeTime,\n            w: processRelativeTime,\n            ww: '%d Wochen',\n            M: processRelativeTime,\n            MM: processRelativeTime,\n            y: processRelativeTime,\n            yy: processRelativeTime,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return deAt;\n\n})));\n","//! moment.js locale configuration\n//! locale : German (Switzerland) [de-ch]\n//! author : sschueller : https://github.com/sschueller\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var format = {\n            m: ['eine Minute', 'einer Minute'],\n            h: ['eine Stunde', 'einer Stunde'],\n            d: ['ein Tag', 'einem Tag'],\n            dd: [number + ' Tage', number + ' Tagen'],\n            w: ['eine Woche', 'einer Woche'],\n            M: ['ein Monat', 'einem Monat'],\n            MM: [number + ' Monate', number + ' Monaten'],\n            y: ['ein Jahr', 'einem Jahr'],\n            yy: [number + ' Jahre', number + ' Jahren'],\n        };\n        return withoutSuffix ? format[key][0] : format[key][1];\n    }\n\n    var deCh = moment.defineLocale('de-ch', {\n        months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n            '_'\n        ),\n        monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n            '_'\n        ),\n        weekdaysShort: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n        weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY HH:mm',\n            LLLL: 'dddd, D. MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[heute um] LT [Uhr]',\n            sameElse: 'L',\n            nextDay: '[morgen um] LT [Uhr]',\n            nextWeek: 'dddd [um] LT [Uhr]',\n            lastDay: '[gestern um] LT [Uhr]',\n            lastWeek: '[letzten] dddd [um] LT [Uhr]',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: 'vor %s',\n            s: 'ein paar Sekunden',\n            ss: '%d Sekunden',\n            m: processRelativeTime,\n            mm: '%d Minuten',\n            h: processRelativeTime,\n            hh: '%d Stunden',\n            d: processRelativeTime,\n            dd: processRelativeTime,\n            w: processRelativeTime,\n            ww: '%d Wochen',\n            M: processRelativeTime,\n            MM: processRelativeTime,\n            y: processRelativeTime,\n            yy: processRelativeTime,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return deCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maldivian [dv]\n//! author : Jawish Hameed : https://github.com/jawish\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var months = [\n            'ޖެނުއަރީ',\n            'ފެބްރުއަރީ',\n            'މާރިޗު',\n            'އޭޕްރީލު',\n            'މޭ',\n            'ޖޫން',\n            'ޖުލައި',\n            'އޯގަސްޓު',\n            'ސެޕްޓެމްބަރު',\n            'އޮކްޓޯބަރު',\n            'ނޮވެމްބަރު',\n            'ޑިސެމްބަރު',\n        ],\n        weekdays = [\n            'އާދިއްތަ',\n            'ހޯމަ',\n            'އަންގާރަ',\n            'ބުދަ',\n            'ބުރާސްފަތި',\n            'ހުކުރު',\n            'ހޮނިހިރު',\n        ];\n\n    var dv = moment.defineLocale('dv', {\n        months: months,\n        monthsShort: months,\n        weekdays: weekdays,\n        weekdaysShort: weekdays,\n        weekdaysMin: 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'D/M/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        meridiemParse: /މކ|މފ/,\n        isPM: function (input) {\n            return 'މފ' === input;\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'މކ';\n            } else {\n                return 'މފ';\n            }\n        },\n        calendar: {\n            sameDay: '[މިއަދު] LT',\n            nextDay: '[މާދަމާ] LT',\n            nextWeek: 'dddd LT',\n            lastDay: '[އިއްޔެ] LT',\n            lastWeek: '[ފާއިތުވި] dddd LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'ތެރޭގައި %s',\n            past: 'ކުރިން %s',\n            s: 'ސިކުންތުކޮޅެއް',\n            ss: 'd% ސިކުންތު',\n            m: 'މިނިޓެއް',\n            mm: 'މިނިޓު %d',\n            h: 'ގަޑިއިރެއް',\n            hh: 'ގަޑިއިރު %d',\n            d: 'ދުވަހެއް',\n            dd: 'ދުވަސް %d',\n            M: 'މަހެއް',\n            MM: 'މަސް %d',\n            y: 'އަހަރެއް',\n            yy: 'އަހަރު %d',\n        },\n        preparse: function (string) {\n            return string.replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string.replace(/,/g, '،');\n        },\n        week: {\n            dow: 7, // Sunday is the first day of the week.\n            doy: 12, // The week that contains Jan 12th is the first week of the year.\n        },\n    });\n\n    return dv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Greek [el]\n//! author : Aggelos Karalias : https://github.com/mehiel\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function isFunction(input) {\n        return (\n            (typeof Function !== 'undefined' && input instanceof Function) ||\n            Object.prototype.toString.call(input) === '[object Function]'\n        );\n    }\n\n    var el = moment.defineLocale('el', {\n        monthsNominativeEl: 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split(\n            '_'\n        ),\n        monthsGenitiveEl: 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split(\n            '_'\n        ),\n        months: function (momentToFormat, format) {\n            if (!momentToFormat) {\n                return this._monthsNominativeEl;\n            } else if (\n                typeof format === 'string' &&\n                /D/.test(format.substring(0, format.indexOf('MMMM')))\n            ) {\n                // if there is a day number before 'MMMM'\n                return this._monthsGenitiveEl[momentToFormat.month()];\n            } else {\n                return this._monthsNominativeEl[momentToFormat.month()];\n            }\n        },\n        monthsShort: 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'),\n        weekdays: 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split(\n            '_'\n        ),\n        weekdaysShort: 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'),\n        weekdaysMin: 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'),\n        meridiem: function (hours, minutes, isLower) {\n            if (hours > 11) {\n                return isLower ? 'μμ' : 'ΜΜ';\n            } else {\n                return isLower ? 'πμ' : 'ΠΜ';\n            }\n        },\n        isPM: function (input) {\n            return (input + '').toLowerCase()[0] === 'μ';\n        },\n        meridiemParse: /[ΠΜ]\\.?Μ?\\.?/i,\n        longDateFormat: {\n            LT: 'h:mm A',\n            LTS: 'h:mm:ss A',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY h:mm A',\n            LLLL: 'dddd, D MMMM YYYY h:mm A',\n        },\n        calendarEl: {\n            sameDay: '[Σήμερα {}] LT',\n            nextDay: '[Αύριο {}] LT',\n            nextWeek: 'dddd [{}] LT',\n            lastDay: '[Χθες {}] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 6:\n                        return '[το προηγούμενο] dddd [{}] LT';\n                    default:\n                        return '[την προηγούμενη] dddd [{}] LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        calendar: function (key, mom) {\n            var output = this._calendarEl[key],\n                hours = mom && mom.hours();\n            if (isFunction(output)) {\n                output = output.apply(mom);\n            }\n            return output.replace('{}', hours % 12 === 1 ? 'στη' : 'στις');\n        },\n        relativeTime: {\n            future: 'σε %s',\n            past: '%s πριν',\n            s: 'λίγα δευτερόλεπτα',\n            ss: '%d δευτερόλεπτα',\n            m: 'ένα λεπτό',\n            mm: '%d λεπτά',\n            h: 'μία ώρα',\n            hh: '%d ώρες',\n            d: 'μία μέρα',\n            dd: '%d μέρες',\n            M: 'ένας μήνας',\n            MM: '%d μήνες',\n            y: 'ένας χρόνος',\n            yy: '%d χρόνια',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}η/,\n        ordinal: '%dη',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4st is the first week of the year.\n        },\n    });\n\n    return el;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Australia) [en-au]\n//! author : Jared Morse : https://github.com/jarcoal\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var enAu = moment.defineLocale('en-au', {\n        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n            '_'\n        ),\n        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat: {\n            LT: 'h:mm A',\n            LTS: 'h:mm:ss A',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY h:mm A',\n            LLLL: 'dddd, D MMMM YYYY h:mm A',\n        },\n        calendar: {\n            sameDay: '[Today at] LT',\n            nextDay: '[Tomorrow at] LT',\n            nextWeek: 'dddd [at] LT',\n            lastDay: '[Yesterday at] LT',\n            lastWeek: '[Last] dddd [at] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: '%s ago',\n            s: 'a few seconds',\n            ss: '%d seconds',\n            m: 'a minute',\n            mm: '%d minutes',\n            h: 'an hour',\n            hh: '%d hours',\n            d: 'a day',\n            dd: '%d days',\n            M: 'a month',\n            MM: '%d months',\n            y: 'a year',\n            yy: '%d years',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                        ? 'st'\n                        : b === 2\n                        ? 'nd'\n                        : b === 3\n                        ? 'rd'\n                        : 'th';\n            return number + output;\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return enAu;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Canada) [en-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var enCa = moment.defineLocale('en-ca', {\n        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n            '_'\n        ),\n        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat: {\n            LT: 'h:mm A',\n            LTS: 'h:mm:ss A',\n            L: 'YYYY-MM-DD',\n            LL: 'MMMM D, YYYY',\n            LLL: 'MMMM D, YYYY h:mm A',\n            LLLL: 'dddd, MMMM D, YYYY h:mm A',\n        },\n        calendar: {\n            sameDay: '[Today at] LT',\n            nextDay: '[Tomorrow at] LT',\n            nextWeek: 'dddd [at] LT',\n            lastDay: '[Yesterday at] LT',\n            lastWeek: '[Last] dddd [at] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: '%s ago',\n            s: 'a few seconds',\n            ss: '%d seconds',\n            m: 'a minute',\n            mm: '%d minutes',\n            h: 'an hour',\n            hh: '%d hours',\n            d: 'a day',\n            dd: '%d days',\n            M: 'a month',\n            MM: '%d months',\n            y: 'a year',\n            yy: '%d years',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                        ? 'st'\n                        : b === 2\n                        ? 'nd'\n                        : b === 3\n                        ? 'rd'\n                        : 'th';\n            return number + output;\n        },\n    });\n\n    return enCa;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (United Kingdom) [en-gb]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var enGb = moment.defineLocale('en-gb', {\n        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n            '_'\n        ),\n        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Today at] LT',\n            nextDay: '[Tomorrow at] LT',\n            nextWeek: 'dddd [at] LT',\n            lastDay: '[Yesterday at] LT',\n            lastWeek: '[Last] dddd [at] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: '%s ago',\n            s: 'a few seconds',\n            ss: '%d seconds',\n            m: 'a minute',\n            mm: '%d minutes',\n            h: 'an hour',\n            hh: '%d hours',\n            d: 'a day',\n            dd: '%d days',\n            M: 'a month',\n            MM: '%d months',\n            y: 'a year',\n            yy: '%d years',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                        ? 'st'\n                        : b === 2\n                        ? 'nd'\n                        : b === 3\n                        ? 'rd'\n                        : 'th';\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return enGb;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Ireland) [en-ie]\n//! author : Chris Cartlidge : https://github.com/chriscartlidge\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var enIe = moment.defineLocale('en-ie', {\n        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n            '_'\n        ),\n        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Today at] LT',\n            nextDay: '[Tomorrow at] LT',\n            nextWeek: 'dddd [at] LT',\n            lastDay: '[Yesterday at] LT',\n            lastWeek: '[Last] dddd [at] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: '%s ago',\n            s: 'a few seconds',\n            ss: '%d seconds',\n            m: 'a minute',\n            mm: '%d minutes',\n            h: 'an hour',\n            hh: '%d hours',\n            d: 'a day',\n            dd: '%d days',\n            M: 'a month',\n            MM: '%d months',\n            y: 'a year',\n            yy: '%d years',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                        ? 'st'\n                        : b === 2\n                        ? 'nd'\n                        : b === 3\n                        ? 'rd'\n                        : 'th';\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return enIe;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Israel) [en-il]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var enIl = moment.defineLocale('en-il', {\n        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n            '_'\n        ),\n        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Today at] LT',\n            nextDay: '[Tomorrow at] LT',\n            nextWeek: 'dddd [at] LT',\n            lastDay: '[Yesterday at] LT',\n            lastWeek: '[Last] dddd [at] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: '%s ago',\n            s: 'a few seconds',\n            ss: '%d seconds',\n            m: 'a minute',\n            mm: '%d minutes',\n            h: 'an hour',\n            hh: '%d hours',\n            d: 'a day',\n            dd: '%d days',\n            M: 'a month',\n            MM: '%d months',\n            y: 'a year',\n            yy: '%d years',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                        ? 'st'\n                        : b === 2\n                        ? 'nd'\n                        : b === 3\n                        ? 'rd'\n                        : 'th';\n            return number + output;\n        },\n    });\n\n    return enIl;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (India) [en-in]\n//! author : Jatin Agrawal : https://github.com/jatinag22\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var enIn = moment.defineLocale('en-in', {\n        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n            '_'\n        ),\n        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat: {\n            LT: 'h:mm A',\n            LTS: 'h:mm:ss A',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY h:mm A',\n            LLLL: 'dddd, D MMMM YYYY h:mm A',\n        },\n        calendar: {\n            sameDay: '[Today at] LT',\n            nextDay: '[Tomorrow at] LT',\n            nextWeek: 'dddd [at] LT',\n            lastDay: '[Yesterday at] LT',\n            lastWeek: '[Last] dddd [at] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: '%s ago',\n            s: 'a few seconds',\n            ss: '%d seconds',\n            m: 'a minute',\n            mm: '%d minutes',\n            h: 'an hour',\n            hh: '%d hours',\n            d: 'a day',\n            dd: '%d days',\n            M: 'a month',\n            MM: '%d months',\n            y: 'a year',\n            yy: '%d years',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                        ? 'st'\n                        : b === 2\n                        ? 'nd'\n                        : b === 3\n                        ? 'rd'\n                        : 'th';\n            return number + output;\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 1st is the first week of the year.\n        },\n    });\n\n    return enIn;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (New Zealand) [en-nz]\n//! author : Luke McGregor : https://github.com/lukemcgregor\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var enNz = moment.defineLocale('en-nz', {\n        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n            '_'\n        ),\n        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat: {\n            LT: 'h:mm A',\n            LTS: 'h:mm:ss A',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY h:mm A',\n            LLLL: 'dddd, D MMMM YYYY h:mm A',\n        },\n        calendar: {\n            sameDay: '[Today at] LT',\n            nextDay: '[Tomorrow at] LT',\n            nextWeek: 'dddd [at] LT',\n            lastDay: '[Yesterday at] LT',\n            lastWeek: '[Last] dddd [at] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: '%s ago',\n            s: 'a few seconds',\n            ss: '%d seconds',\n            m: 'a minute',\n            mm: '%d minutes',\n            h: 'an hour',\n            hh: '%d hours',\n            d: 'a day',\n            dd: '%d days',\n            M: 'a month',\n            MM: '%d months',\n            y: 'a year',\n            yy: '%d years',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                        ? 'st'\n                        : b === 2\n                        ? 'nd'\n                        : b === 3\n                        ? 'rd'\n                        : 'th';\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return enNz;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Singapore) [en-sg]\n//! author : Matthew Castrillon-Madrigal : https://github.com/techdimension\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var enSg = moment.defineLocale('en-sg', {\n        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n            '_'\n        ),\n        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Today at] LT',\n            nextDay: '[Tomorrow at] LT',\n            nextWeek: 'dddd [at] LT',\n            lastDay: '[Yesterday at] LT',\n            lastWeek: '[Last] dddd [at] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: '%s ago',\n            s: 'a few seconds',\n            ss: '%d seconds',\n            m: 'a minute',\n            mm: '%d minutes',\n            h: 'an hour',\n            hh: '%d hours',\n            d: 'a day',\n            dd: '%d days',\n            M: 'a month',\n            MM: '%d months',\n            y: 'a year',\n            yy: '%d years',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                        ? 'st'\n                        : b === 2\n                        ? 'nd'\n                        : b === 3\n                        ? 'rd'\n                        : 'th';\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return enSg;\n\n})));\n","//! moment.js locale configuration\n//! locale : Esperanto [eo]\n//! author : Colin Dean : https://github.com/colindean\n//! author : Mia Nordentoft Imperatori : https://github.com/miestasmia\n//! comment : miestasmia corrected the translation by colindean\n//! comment : Vivakvo corrected the translation by colindean and miestasmia\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var eo = moment.defineLocale('eo', {\n        months: 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split(\n            '_'\n        ),\n        monthsShort: 'jan_feb_mart_apr_maj_jun_jul_aŭg_sept_okt_nov_dec'.split('_'),\n        weekdays: 'dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato'.split('_'),\n        weekdaysShort: 'dim_lun_mard_merk_ĵaŭ_ven_sab'.split('_'),\n        weekdaysMin: 'di_lu_ma_me_ĵa_ve_sa'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'YYYY-MM-DD',\n            LL: '[la] D[-an de] MMMM, YYYY',\n            LLL: '[la] D[-an de] MMMM, YYYY HH:mm',\n            LLLL: 'dddd[n], [la] D[-an de] MMMM, YYYY HH:mm',\n            llll: 'ddd, [la] D[-an de] MMM, YYYY HH:mm',\n        },\n        meridiemParse: /[ap]\\.t\\.m/i,\n        isPM: function (input) {\n            return input.charAt(0).toLowerCase() === 'p';\n        },\n        meridiem: function (hours, minutes, isLower) {\n            if (hours > 11) {\n                return isLower ? 'p.t.m.' : 'P.T.M.';\n            } else {\n                return isLower ? 'a.t.m.' : 'A.T.M.';\n            }\n        },\n        calendar: {\n            sameDay: '[Hodiaŭ je] LT',\n            nextDay: '[Morgaŭ je] LT',\n            nextWeek: 'dddd[n je] LT',\n            lastDay: '[Hieraŭ je] LT',\n            lastWeek: '[pasintan] dddd[n je] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'post %s',\n            past: 'antaŭ %s',\n            s: 'kelkaj sekundoj',\n            ss: '%d sekundoj',\n            m: 'unu minuto',\n            mm: '%d minutoj',\n            h: 'unu horo',\n            hh: '%d horoj',\n            d: 'unu tago', //ne 'diurno', ĉar estas uzita por proksimumo\n            dd: '%d tagoj',\n            M: 'unu monato',\n            MM: '%d monatoj',\n            y: 'unu jaro',\n            yy: '%d jaroj',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}a/,\n        ordinal: '%da',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return eo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish [es]\n//! author : Julio Napurí : https://github.com/julionc\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n            '_'\n        ),\n        monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n        monthsParse = [\n            /^ene/i,\n            /^feb/i,\n            /^mar/i,\n            /^abr/i,\n            /^may/i,\n            /^jun/i,\n            /^jul/i,\n            /^ago/i,\n            /^sep/i,\n            /^oct/i,\n            /^nov/i,\n            /^dic/i,\n        ],\n        monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n    var es = moment.defineLocale('es', {\n        months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n            '_'\n        ),\n        monthsShort: function (m, format) {\n            if (!m) {\n                return monthsShortDot;\n            } else if (/-MMM-/.test(format)) {\n                return monthsShort[m.month()];\n            } else {\n                return monthsShortDot[m.month()];\n            }\n        },\n        monthsRegex: monthsRegex,\n        monthsShortRegex: monthsRegex,\n        monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n        monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: monthsParse,\n        weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n        weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n        weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D [de] MMMM [de] YYYY',\n            LLL: 'D [de] MMMM [de] YYYY H:mm',\n            LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n        },\n        calendar: {\n            sameDay: function () {\n                return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            nextDay: function () {\n                return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            nextWeek: function () {\n                return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            lastDay: function () {\n                return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            lastWeek: function () {\n                return (\n                    '[el] dddd [pasado a la' +\n                    (this.hours() !== 1 ? 's' : '') +\n                    '] LT'\n                );\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'en %s',\n            past: 'hace %s',\n            s: 'unos segundos',\n            ss: '%d segundos',\n            m: 'un minuto',\n            mm: '%d minutos',\n            h: 'una hora',\n            hh: '%d horas',\n            d: 'un día',\n            dd: '%d días',\n            w: 'una semana',\n            ww: '%d semanas',\n            M: 'un mes',\n            MM: '%d meses',\n            y: 'un año',\n            yy: '%d años',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n        invalidDate: 'Fecha inválida',\n    });\n\n    return es;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish (Dominican Republic) [es-do]\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n            '_'\n        ),\n        monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n        monthsParse = [\n            /^ene/i,\n            /^feb/i,\n            /^mar/i,\n            /^abr/i,\n            /^may/i,\n            /^jun/i,\n            /^jul/i,\n            /^ago/i,\n            /^sep/i,\n            /^oct/i,\n            /^nov/i,\n            /^dic/i,\n        ],\n        monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n    var esDo = moment.defineLocale('es-do', {\n        months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n            '_'\n        ),\n        monthsShort: function (m, format) {\n            if (!m) {\n                return monthsShortDot;\n            } else if (/-MMM-/.test(format)) {\n                return monthsShort[m.month()];\n            } else {\n                return monthsShortDot[m.month()];\n            }\n        },\n        monthsRegex: monthsRegex,\n        monthsShortRegex: monthsRegex,\n        monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n        monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: monthsParse,\n        weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n        weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n        weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'h:mm A',\n            LTS: 'h:mm:ss A',\n            L: 'DD/MM/YYYY',\n            LL: 'D [de] MMMM [de] YYYY',\n            LLL: 'D [de] MMMM [de] YYYY h:mm A',\n            LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',\n        },\n        calendar: {\n            sameDay: function () {\n                return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            nextDay: function () {\n                return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            nextWeek: function () {\n                return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            lastDay: function () {\n                return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            lastWeek: function () {\n                return (\n                    '[el] dddd [pasado a la' +\n                    (this.hours() !== 1 ? 's' : '') +\n                    '] LT'\n                );\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'en %s',\n            past: 'hace %s',\n            s: 'unos segundos',\n            ss: '%d segundos',\n            m: 'un minuto',\n            mm: '%d minutos',\n            h: 'una hora',\n            hh: '%d horas',\n            d: 'un día',\n            dd: '%d días',\n            w: 'una semana',\n            ww: '%d semanas',\n            M: 'un mes',\n            MM: '%d meses',\n            y: 'un año',\n            yy: '%d años',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return esDo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish (Mexico) [es-mx]\n//! author : JC Franco : https://github.com/jcfranco\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n            '_'\n        ),\n        monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n        monthsParse = [\n            /^ene/i,\n            /^feb/i,\n            /^mar/i,\n            /^abr/i,\n            /^may/i,\n            /^jun/i,\n            /^jul/i,\n            /^ago/i,\n            /^sep/i,\n            /^oct/i,\n            /^nov/i,\n            /^dic/i,\n        ],\n        monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n    var esMx = moment.defineLocale('es-mx', {\n        months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n            '_'\n        ),\n        monthsShort: function (m, format) {\n            if (!m) {\n                return monthsShortDot;\n            } else if (/-MMM-/.test(format)) {\n                return monthsShort[m.month()];\n            } else {\n                return monthsShortDot[m.month()];\n            }\n        },\n        monthsRegex: monthsRegex,\n        monthsShortRegex: monthsRegex,\n        monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n        monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: monthsParse,\n        weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n        weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n        weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D [de] MMMM [de] YYYY',\n            LLL: 'D [de] MMMM [de] YYYY H:mm',\n            LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n        },\n        calendar: {\n            sameDay: function () {\n                return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            nextDay: function () {\n                return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            nextWeek: function () {\n                return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            lastDay: function () {\n                return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            lastWeek: function () {\n                return (\n                    '[el] dddd [pasado a la' +\n                    (this.hours() !== 1 ? 's' : '') +\n                    '] LT'\n                );\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'en %s',\n            past: 'hace %s',\n            s: 'unos segundos',\n            ss: '%d segundos',\n            m: 'un minuto',\n            mm: '%d minutos',\n            h: 'una hora',\n            hh: '%d horas',\n            d: 'un día',\n            dd: '%d días',\n            w: 'una semana',\n            ww: '%d semanas',\n            M: 'un mes',\n            MM: '%d meses',\n            y: 'un año',\n            yy: '%d años',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n        invalidDate: 'Fecha inválida',\n    });\n\n    return esMx;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish (United States) [es-us]\n//! author : bustta : https://github.com/bustta\n//! author : chrisrodz : https://github.com/chrisrodz\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n            '_'\n        ),\n        monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n        monthsParse = [\n            /^ene/i,\n            /^feb/i,\n            /^mar/i,\n            /^abr/i,\n            /^may/i,\n            /^jun/i,\n            /^jul/i,\n            /^ago/i,\n            /^sep/i,\n            /^oct/i,\n            /^nov/i,\n            /^dic/i,\n        ],\n        monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n    var esUs = moment.defineLocale('es-us', {\n        months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n            '_'\n        ),\n        monthsShort: function (m, format) {\n            if (!m) {\n                return monthsShortDot;\n            } else if (/-MMM-/.test(format)) {\n                return monthsShort[m.month()];\n            } else {\n                return monthsShortDot[m.month()];\n            }\n        },\n        monthsRegex: monthsRegex,\n        monthsShortRegex: monthsRegex,\n        monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n        monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: monthsParse,\n        weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n        weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n        weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'h:mm A',\n            LTS: 'h:mm:ss A',\n            L: 'MM/DD/YYYY',\n            LL: 'D [de] MMMM [de] YYYY',\n            LLL: 'D [de] MMMM [de] YYYY h:mm A',\n            LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',\n        },\n        calendar: {\n            sameDay: function () {\n                return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            nextDay: function () {\n                return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            nextWeek: function () {\n                return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            lastDay: function () {\n                return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            lastWeek: function () {\n                return (\n                    '[el] dddd [pasado a la' +\n                    (this.hours() !== 1 ? 's' : '') +\n                    '] LT'\n                );\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'en %s',\n            past: 'hace %s',\n            s: 'unos segundos',\n            ss: '%d segundos',\n            m: 'un minuto',\n            mm: '%d minutos',\n            h: 'una hora',\n            hh: '%d horas',\n            d: 'un día',\n            dd: '%d días',\n            w: 'una semana',\n            ww: '%d semanas',\n            M: 'un mes',\n            MM: '%d meses',\n            y: 'un año',\n            yy: '%d años',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return esUs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Estonian [et]\n//! author : Henry Kehlmann : https://github.com/madhenry\n//! improvements : Illimar Tambek : https://github.com/ragulka\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var format = {\n            s: ['mõne sekundi', 'mõni sekund', 'paar sekundit'],\n            ss: [number + 'sekundi', number + 'sekundit'],\n            m: ['ühe minuti', 'üks minut'],\n            mm: [number + ' minuti', number + ' minutit'],\n            h: ['ühe tunni', 'tund aega', 'üks tund'],\n            hh: [number + ' tunni', number + ' tundi'],\n            d: ['ühe päeva', 'üks päev'],\n            M: ['kuu aja', 'kuu aega', 'üks kuu'],\n            MM: [number + ' kuu', number + ' kuud'],\n            y: ['ühe aasta', 'aasta', 'üks aasta'],\n            yy: [number + ' aasta', number + ' aastat'],\n        };\n        if (withoutSuffix) {\n            return format[key][2] ? format[key][2] : format[key][1];\n        }\n        return isFuture ? format[key][0] : format[key][1];\n    }\n\n    var et = moment.defineLocale('et', {\n        months: 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split(\n            '_'\n        ),\n        monthsShort: 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split(\n            '_'\n        ),\n        weekdays: 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split(\n            '_'\n        ),\n        weekdaysShort: 'P_E_T_K_N_R_L'.split('_'),\n        weekdaysMin: 'P_E_T_K_N_R_L'.split('_'),\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY H:mm',\n            LLLL: 'dddd, D. MMMM YYYY H:mm',\n        },\n        calendar: {\n            sameDay: '[Täna,] LT',\n            nextDay: '[Homme,] LT',\n            nextWeek: '[Järgmine] dddd LT',\n            lastDay: '[Eile,] LT',\n            lastWeek: '[Eelmine] dddd LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s pärast',\n            past: '%s tagasi',\n            s: processRelativeTime,\n            ss: processRelativeTime,\n            m: processRelativeTime,\n            mm: processRelativeTime,\n            h: processRelativeTime,\n            hh: processRelativeTime,\n            d: processRelativeTime,\n            dd: '%d päeva',\n            M: processRelativeTime,\n            MM: processRelativeTime,\n            y: processRelativeTime,\n            yy: processRelativeTime,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return et;\n\n})));\n","//! moment.js locale configuration\n//! locale : Basque [eu]\n//! author : Eneko Illarramendi : https://github.com/eillarra\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var eu = moment.defineLocale('eu', {\n        months: 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split(\n            '_'\n        ),\n        monthsShort: 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split(\n            '_'\n        ),\n        weekdaysShort: 'ig._al._ar._az._og._ol._lr.'.split('_'),\n        weekdaysMin: 'ig_al_ar_az_og_ol_lr'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'YYYY-MM-DD',\n            LL: 'YYYY[ko] MMMM[ren] D[a]',\n            LLL: 'YYYY[ko] MMMM[ren] D[a] HH:mm',\n            LLLL: 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm',\n            l: 'YYYY-M-D',\n            ll: 'YYYY[ko] MMM D[a]',\n            lll: 'YYYY[ko] MMM D[a] HH:mm',\n            llll: 'ddd, YYYY[ko] MMM D[a] HH:mm',\n        },\n        calendar: {\n            sameDay: '[gaur] LT[etan]',\n            nextDay: '[bihar] LT[etan]',\n            nextWeek: 'dddd LT[etan]',\n            lastDay: '[atzo] LT[etan]',\n            lastWeek: '[aurreko] dddd LT[etan]',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s barru',\n            past: 'duela %s',\n            s: 'segundo batzuk',\n            ss: '%d segundo',\n            m: 'minutu bat',\n            mm: '%d minutu',\n            h: 'ordu bat',\n            hh: '%d ordu',\n            d: 'egun bat',\n            dd: '%d egun',\n            M: 'hilabete bat',\n            MM: '%d hilabete',\n            y: 'urte bat',\n            yy: '%d urte',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return eu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Persian [fa]\n//! author : Ebrahim Byagowi : https://github.com/ebraminio\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '۱',\n            2: '۲',\n            3: '۳',\n            4: '۴',\n            5: '۵',\n            6: '۶',\n            7: '۷',\n            8: '۸',\n            9: '۹',\n            0: '۰',\n        },\n        numberMap = {\n            '۱': '1',\n            '۲': '2',\n            '۳': '3',\n            '۴': '4',\n            '۵': '5',\n            '۶': '6',\n            '۷': '7',\n            '۸': '8',\n            '۹': '9',\n            '۰': '0',\n        };\n\n    var fa = moment.defineLocale('fa', {\n        months: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(\n            '_'\n        ),\n        monthsShort: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(\n            '_'\n        ),\n        weekdays: 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split(\n            '_'\n        ),\n        weekdaysShort: 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split(\n            '_'\n        ),\n        weekdaysMin: 'ی_د_س_چ_پ_ج_ش'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        meridiemParse: /قبل از ظهر|بعد از ظهر/,\n        isPM: function (input) {\n            return /بعد از ظهر/.test(input);\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'قبل از ظهر';\n            } else {\n                return 'بعد از ظهر';\n            }\n        },\n        calendar: {\n            sameDay: '[امروز ساعت] LT',\n            nextDay: '[فردا ساعت] LT',\n            nextWeek: 'dddd [ساعت] LT',\n            lastDay: '[دیروز ساعت] LT',\n            lastWeek: 'dddd [پیش] [ساعت] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'در %s',\n            past: '%s پیش',\n            s: 'چند ثانیه',\n            ss: '%d ثانیه',\n            m: 'یک دقیقه',\n            mm: '%d دقیقه',\n            h: 'یک ساعت',\n            hh: '%d ساعت',\n            d: 'یک روز',\n            dd: '%d روز',\n            M: 'یک ماه',\n            MM: '%d ماه',\n            y: 'یک سال',\n            yy: '%d سال',\n        },\n        preparse: function (string) {\n            return string\n                .replace(/[۰-۹]/g, function (match) {\n                    return numberMap[match];\n                })\n                .replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string\n                .replace(/\\d/g, function (match) {\n                    return symbolMap[match];\n                })\n                .replace(/,/g, '،');\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}م/,\n        ordinal: '%dم',\n        week: {\n            dow: 6, // Saturday is the first day of the week.\n            doy: 12, // The week that contains Jan 12th is the first week of the year.\n        },\n    });\n\n    return fa;\n\n})));\n","//! moment.js locale configuration\n//! locale : Finnish [fi]\n//! author : Tarmo Aidantausta : https://github.com/bleadof\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var numbersPast = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(\n            ' '\n        ),\n        numbersFuture = [\n            'nolla',\n            'yhden',\n            'kahden',\n            'kolmen',\n            'neljän',\n            'viiden',\n            'kuuden',\n            numbersPast[7],\n            numbersPast[8],\n            numbersPast[9],\n        ];\n    function translate(number, withoutSuffix, key, isFuture) {\n        var result = '';\n        switch (key) {\n            case 's':\n                return isFuture ? 'muutaman sekunnin' : 'muutama sekunti';\n            case 'ss':\n                result = isFuture ? 'sekunnin' : 'sekuntia';\n                break;\n            case 'm':\n                return isFuture ? 'minuutin' : 'minuutti';\n            case 'mm':\n                result = isFuture ? 'minuutin' : 'minuuttia';\n                break;\n            case 'h':\n                return isFuture ? 'tunnin' : 'tunti';\n            case 'hh':\n                result = isFuture ? 'tunnin' : 'tuntia';\n                break;\n            case 'd':\n                return isFuture ? 'päivän' : 'päivä';\n            case 'dd':\n                result = isFuture ? 'päivän' : 'päivää';\n                break;\n            case 'M':\n                return isFuture ? 'kuukauden' : 'kuukausi';\n            case 'MM':\n                result = isFuture ? 'kuukauden' : 'kuukautta';\n                break;\n            case 'y':\n                return isFuture ? 'vuoden' : 'vuosi';\n            case 'yy':\n                result = isFuture ? 'vuoden' : 'vuotta';\n                break;\n        }\n        result = verbalNumber(number, isFuture) + ' ' + result;\n        return result;\n    }\n    function verbalNumber(number, isFuture) {\n        return number < 10\n            ? isFuture\n                ? numbersFuture[number]\n                : numbersPast[number]\n            : number;\n    }\n\n    var fi = moment.defineLocale('fi', {\n        months: 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split(\n            '_'\n        ),\n        monthsShort: 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split(\n            '_'\n        ),\n        weekdays: 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split(\n            '_'\n        ),\n        weekdaysShort: 'su_ma_ti_ke_to_pe_la'.split('_'),\n        weekdaysMin: 'su_ma_ti_ke_to_pe_la'.split('_'),\n        longDateFormat: {\n            LT: 'HH.mm',\n            LTS: 'HH.mm.ss',\n            L: 'DD.MM.YYYY',\n            LL: 'Do MMMM[ta] YYYY',\n            LLL: 'Do MMMM[ta] YYYY, [klo] HH.mm',\n            LLLL: 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm',\n            l: 'D.M.YYYY',\n            ll: 'Do MMM YYYY',\n            lll: 'Do MMM YYYY, [klo] HH.mm',\n            llll: 'ddd, Do MMM YYYY, [klo] HH.mm',\n        },\n        calendar: {\n            sameDay: '[tänään] [klo] LT',\n            nextDay: '[huomenna] [klo] LT',\n            nextWeek: 'dddd [klo] LT',\n            lastDay: '[eilen] [klo] LT',\n            lastWeek: '[viime] dddd[na] [klo] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s päästä',\n            past: '%s sitten',\n            s: translate,\n            ss: translate,\n            m: translate,\n            mm: translate,\n            h: translate,\n            hh: translate,\n            d: translate,\n            dd: translate,\n            M: translate,\n            MM: translate,\n            y: translate,\n            yy: translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return fi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Filipino [fil]\n//! author : Dan Hagman : https://github.com/hagmandan\n//! author : Matthew Co : https://github.com/matthewdeeco\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var fil = moment.defineLocale('fil', {\n        months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(\n            '_'\n        ),\n        monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n        weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(\n            '_'\n        ),\n        weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n        weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'MM/D/YYYY',\n            LL: 'MMMM D, YYYY',\n            LLL: 'MMMM D, YYYY HH:mm',\n            LLLL: 'dddd, MMMM DD, YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: 'LT [ngayong araw]',\n            nextDay: '[Bukas ng] LT',\n            nextWeek: 'LT [sa susunod na] dddd',\n            lastDay: 'LT [kahapon]',\n            lastWeek: 'LT [noong nakaraang] dddd',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'sa loob ng %s',\n            past: '%s ang nakalipas',\n            s: 'ilang segundo',\n            ss: '%d segundo',\n            m: 'isang minuto',\n            mm: '%d minuto',\n            h: 'isang oras',\n            hh: '%d oras',\n            d: 'isang araw',\n            dd: '%d araw',\n            M: 'isang buwan',\n            MM: '%d buwan',\n            y: 'isang taon',\n            yy: '%d taon',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}/,\n        ordinal: function (number) {\n            return number;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return fil;\n\n})));\n","//! moment.js locale configuration\n//! locale : Faroese [fo]\n//! author : Ragnar Johannesen : https://github.com/ragnar123\n//! author : Kristian Sakarisson : https://github.com/sakarisson\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var fo = moment.defineLocale('fo', {\n        months: 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split(\n            '_'\n        ),\n        monthsShort: 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),\n        weekdays: 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split(\n            '_'\n        ),\n        weekdaysShort: 'sun_mán_týs_mik_hós_frí_ley'.split('_'),\n        weekdaysMin: 'su_má_tý_mi_hó_fr_le'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D. MMMM, YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Í dag kl.] LT',\n            nextDay: '[Í morgin kl.] LT',\n            nextWeek: 'dddd [kl.] LT',\n            lastDay: '[Í gjár kl.] LT',\n            lastWeek: '[síðstu] dddd [kl] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'um %s',\n            past: '%s síðani',\n            s: 'fá sekund',\n            ss: '%d sekundir',\n            m: 'ein minuttur',\n            mm: '%d minuttir',\n            h: 'ein tími',\n            hh: '%d tímar',\n            d: 'ein dagur',\n            dd: '%d dagar',\n            M: 'ein mánaður',\n            MM: '%d mánaðir',\n            y: 'eitt ár',\n            yy: '%d ár',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return fo;\n\n})));\n","//! moment.js locale configuration\n//! locale : French [fr]\n//! author : John Fischer : https://github.com/jfroffice\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var monthsStrictRegex = /^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,\n        monthsShortStrictRegex = /(janv\\.?|févr\\.?|mars|avr\\.?|mai|juin|juil\\.?|août|sept\\.?|oct\\.?|nov\\.?|déc\\.?)/i,\n        monthsRegex = /(janv\\.?|févr\\.?|mars|avr\\.?|mai|juin|juil\\.?|août|sept\\.?|oct\\.?|nov\\.?|déc\\.?|janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,\n        monthsParse = [\n            /^janv/i,\n            /^févr/i,\n            /^mars/i,\n            /^avr/i,\n            /^mai/i,\n            /^juin/i,\n            /^juil/i,\n            /^août/i,\n            /^sept/i,\n            /^oct/i,\n            /^nov/i,\n            /^déc/i,\n        ];\n\n    var fr = moment.defineLocale('fr', {\n        months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n            '_'\n        ),\n        monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n            '_'\n        ),\n        monthsRegex: monthsRegex,\n        monthsShortRegex: monthsRegex,\n        monthsStrictRegex: monthsStrictRegex,\n        monthsShortStrictRegex: monthsShortStrictRegex,\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: monthsParse,\n        weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n        weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n        weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Aujourd’hui à] LT',\n            nextDay: '[Demain à] LT',\n            nextWeek: 'dddd [à] LT',\n            lastDay: '[Hier à] LT',\n            lastWeek: 'dddd [dernier à] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'dans %s',\n            past: 'il y a %s',\n            s: 'quelques secondes',\n            ss: '%d secondes',\n            m: 'une minute',\n            mm: '%d minutes',\n            h: 'une heure',\n            hh: '%d heures',\n            d: 'un jour',\n            dd: '%d jours',\n            w: 'une semaine',\n            ww: '%d semaines',\n            M: 'un mois',\n            MM: '%d mois',\n            y: 'un an',\n            yy: '%d ans',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(er|)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                // TODO: Return 'e' when day of month > 1. Move this case inside\n                // block for masculine words below.\n                // See https://github.com/moment/moment/issues/3375\n                case 'D':\n                    return number + (number === 1 ? 'er' : '');\n\n                // Words with masculine grammatical gender: mois, trimestre, jour\n                default:\n                case 'M':\n                case 'Q':\n                case 'DDD':\n                case 'd':\n                    return number + (number === 1 ? 'er' : 'e');\n\n                // Words with feminine grammatical gender: semaine\n                case 'w':\n                case 'W':\n                    return number + (number === 1 ? 're' : 'e');\n            }\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return fr;\n\n})));\n","//! moment.js locale configuration\n//! locale : French (Canada) [fr-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var frCa = moment.defineLocale('fr-ca', {\n        months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n            '_'\n        ),\n        monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n        weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n        weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'YYYY-MM-DD',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Aujourd’hui à] LT',\n            nextDay: '[Demain à] LT',\n            nextWeek: 'dddd [à] LT',\n            lastDay: '[Hier à] LT',\n            lastWeek: 'dddd [dernier à] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'dans %s',\n            past: 'il y a %s',\n            s: 'quelques secondes',\n            ss: '%d secondes',\n            m: 'une minute',\n            mm: '%d minutes',\n            h: 'une heure',\n            hh: '%d heures',\n            d: 'un jour',\n            dd: '%d jours',\n            M: 'un mois',\n            MM: '%d mois',\n            y: 'un an',\n            yy: '%d ans',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                // Words with masculine grammatical gender: mois, trimestre, jour\n                default:\n                case 'M':\n                case 'Q':\n                case 'D':\n                case 'DDD':\n                case 'd':\n                    return number + (number === 1 ? 'er' : 'e');\n\n                // Words with feminine grammatical gender: semaine\n                case 'w':\n                case 'W':\n                    return number + (number === 1 ? 're' : 'e');\n            }\n        },\n    });\n\n    return frCa;\n\n})));\n","//! moment.js locale configuration\n//! locale : French (Switzerland) [fr-ch]\n//! author : Gaspard Bucher : https://github.com/gaspard\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var frCh = moment.defineLocale('fr-ch', {\n        months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n            '_'\n        ),\n        monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n        weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n        weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Aujourd’hui à] LT',\n            nextDay: '[Demain à] LT',\n            nextWeek: 'dddd [à] LT',\n            lastDay: '[Hier à] LT',\n            lastWeek: 'dddd [dernier à] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'dans %s',\n            past: 'il y a %s',\n            s: 'quelques secondes',\n            ss: '%d secondes',\n            m: 'une minute',\n            mm: '%d minutes',\n            h: 'une heure',\n            hh: '%d heures',\n            d: 'un jour',\n            dd: '%d jours',\n            M: 'un mois',\n            MM: '%d mois',\n            y: 'un an',\n            yy: '%d ans',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                // Words with masculine grammatical gender: mois, trimestre, jour\n                default:\n                case 'M':\n                case 'Q':\n                case 'D':\n                case 'DDD':\n                case 'd':\n                    return number + (number === 1 ? 'er' : 'e');\n\n                // Words with feminine grammatical gender: semaine\n                case 'w':\n                case 'W':\n                    return number + (number === 1 ? 're' : 'e');\n            }\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return frCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Frisian [fy]\n//! author : Robin van der Vliet : https://github.com/robin0van0der0v\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var monthsShortWithDots = 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split(\n            '_'\n        ),\n        monthsShortWithoutDots = 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split(\n            '_'\n        );\n\n    var fy = moment.defineLocale('fy', {\n        months: 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split(\n            '_'\n        ),\n        monthsShort: function (m, format) {\n            if (!m) {\n                return monthsShortWithDots;\n            } else if (/-MMM-/.test(format)) {\n                return monthsShortWithoutDots[m.month()];\n            } else {\n                return monthsShortWithDots[m.month()];\n            }\n        },\n        monthsParseExact: true,\n        weekdays: 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split(\n            '_'\n        ),\n        weekdaysShort: 'si._mo._ti._wo._to._fr._so.'.split('_'),\n        weekdaysMin: 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD-MM-YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[hjoed om] LT',\n            nextDay: '[moarn om] LT',\n            nextWeek: 'dddd [om] LT',\n            lastDay: '[juster om] LT',\n            lastWeek: '[ôfrûne] dddd [om] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'oer %s',\n            past: '%s lyn',\n            s: 'in pear sekonden',\n            ss: '%d sekonden',\n            m: 'ien minút',\n            mm: '%d minuten',\n            h: 'ien oere',\n            hh: '%d oeren',\n            d: 'ien dei',\n            dd: '%d dagen',\n            M: 'ien moanne',\n            MM: '%d moannen',\n            y: 'ien jier',\n            yy: '%d jierren',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n        ordinal: function (number) {\n            return (\n                number +\n                (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n            );\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return fy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Irish or Irish Gaelic [ga]\n//! author : André Silva : https://github.com/askpt\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var months = [\n            'Eanáir',\n            'Feabhra',\n            'Márta',\n            'Aibreán',\n            'Bealtaine',\n            'Meitheamh',\n            'Iúil',\n            'Lúnasa',\n            'Meán Fómhair',\n            'Deireadh Fómhair',\n            'Samhain',\n            'Nollaig',\n        ],\n        monthsShort = [\n            'Ean',\n            'Feabh',\n            'Márt',\n            'Aib',\n            'Beal',\n            'Meith',\n            'Iúil',\n            'Lún',\n            'M.F.',\n            'D.F.',\n            'Samh',\n            'Noll',\n        ],\n        weekdays = [\n            'Dé Domhnaigh',\n            'Dé Luain',\n            'Dé Máirt',\n            'Dé Céadaoin',\n            'Déardaoin',\n            'Dé hAoine',\n            'Dé Sathairn',\n        ],\n        weekdaysShort = ['Domh', 'Luan', 'Máirt', 'Céad', 'Déar', 'Aoine', 'Sath'],\n        weekdaysMin = ['Do', 'Lu', 'Má', 'Cé', 'Dé', 'A', 'Sa'];\n\n    var ga = moment.defineLocale('ga', {\n        months: months,\n        monthsShort: monthsShort,\n        monthsParseExact: true,\n        weekdays: weekdays,\n        weekdaysShort: weekdaysShort,\n        weekdaysMin: weekdaysMin,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Inniu ag] LT',\n            nextDay: '[Amárach ag] LT',\n            nextWeek: 'dddd [ag] LT',\n            lastDay: '[Inné ag] LT',\n            lastWeek: 'dddd [seo caite] [ag] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'i %s',\n            past: '%s ó shin',\n            s: 'cúpla soicind',\n            ss: '%d soicind',\n            m: 'nóiméad',\n            mm: '%d nóiméad',\n            h: 'uair an chloig',\n            hh: '%d uair an chloig',\n            d: 'lá',\n            dd: '%d lá',\n            M: 'mí',\n            MM: '%d míonna',\n            y: 'bliain',\n            yy: '%d bliain',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(d|na|mh)/,\n        ordinal: function (number) {\n            var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return ga;\n\n})));\n","//! moment.js locale configuration\n//! locale : Scottish Gaelic [gd]\n//! author : Jon Ashdown : https://github.com/jonashdown\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var months = [\n            'Am Faoilleach',\n            'An Gearran',\n            'Am Màrt',\n            'An Giblean',\n            'An Cèitean',\n            'An t-Ògmhios',\n            'An t-Iuchar',\n            'An Lùnastal',\n            'An t-Sultain',\n            'An Dàmhair',\n            'An t-Samhain',\n            'An Dùbhlachd',\n        ],\n        monthsShort = [\n            'Faoi',\n            'Gear',\n            'Màrt',\n            'Gibl',\n            'Cèit',\n            'Ògmh',\n            'Iuch',\n            'Lùn',\n            'Sult',\n            'Dàmh',\n            'Samh',\n            'Dùbh',\n        ],\n        weekdays = [\n            'Didòmhnaich',\n            'Diluain',\n            'Dimàirt',\n            'Diciadain',\n            'Diardaoin',\n            'Dihaoine',\n            'Disathairne',\n        ],\n        weekdaysShort = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'],\n        weekdaysMin = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa'];\n\n    var gd = moment.defineLocale('gd', {\n        months: months,\n        monthsShort: monthsShort,\n        monthsParseExact: true,\n        weekdays: weekdays,\n        weekdaysShort: weekdaysShort,\n        weekdaysMin: weekdaysMin,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[An-diugh aig] LT',\n            nextDay: '[A-màireach aig] LT',\n            nextWeek: 'dddd [aig] LT',\n            lastDay: '[An-dè aig] LT',\n            lastWeek: 'dddd [seo chaidh] [aig] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'ann an %s',\n            past: 'bho chionn %s',\n            s: 'beagan diogan',\n            ss: '%d diogan',\n            m: 'mionaid',\n            mm: '%d mionaidean',\n            h: 'uair',\n            hh: '%d uairean',\n            d: 'latha',\n            dd: '%d latha',\n            M: 'mìos',\n            MM: '%d mìosan',\n            y: 'bliadhna',\n            yy: '%d bliadhna',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(d|na|mh)/,\n        ordinal: function (number) {\n            var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return gd;\n\n})));\n","//! moment.js locale configuration\n//! locale : Galician [gl]\n//! author : Juan G. Hurtado : https://github.com/juanghurtado\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var gl = moment.defineLocale('gl', {\n        months: 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split(\n            '_'\n        ),\n        monthsShort: 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'),\n        weekdaysShort: 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'),\n        weekdaysMin: 'do_lu_ma_mé_xo_ve_sá'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D [de] MMMM [de] YYYY',\n            LLL: 'D [de] MMMM [de] YYYY H:mm',\n            LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n        },\n        calendar: {\n            sameDay: function () {\n                return '[hoxe ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';\n            },\n            nextDay: function () {\n                return '[mañá ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';\n            },\n            nextWeek: function () {\n                return 'dddd [' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT';\n            },\n            lastDay: function () {\n                return '[onte ' + (this.hours() !== 1 ? 'á' : 'a') + '] LT';\n            },\n            lastWeek: function () {\n                return (\n                    '[o] dddd [pasado ' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT'\n                );\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: function (str) {\n                if (str.indexOf('un') === 0) {\n                    return 'n' + str;\n                }\n                return 'en ' + str;\n            },\n            past: 'hai %s',\n            s: 'uns segundos',\n            ss: '%d segundos',\n            m: 'un minuto',\n            mm: '%d minutos',\n            h: 'unha hora',\n            hh: '%d horas',\n            d: 'un día',\n            dd: '%d días',\n            M: 'un mes',\n            MM: '%d meses',\n            y: 'un ano',\n            yy: '%d anos',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return gl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Konkani Devanagari script [gom-deva]\n//! author : The Discoverer : https://github.com/WikiDiscoverer\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var format = {\n            s: ['थोडया सॅकंडांनी', 'थोडे सॅकंड'],\n            ss: [number + ' सॅकंडांनी', number + ' सॅकंड'],\n            m: ['एका मिणटान', 'एक मिनूट'],\n            mm: [number + ' मिणटांनी', number + ' मिणटां'],\n            h: ['एका वरान', 'एक वर'],\n            hh: [number + ' वरांनी', number + ' वरां'],\n            d: ['एका दिसान', 'एक दीस'],\n            dd: [number + ' दिसांनी', number + ' दीस'],\n            M: ['एका म्हयन्यान', 'एक म्हयनो'],\n            MM: [number + ' म्हयन्यानी', number + ' म्हयने'],\n            y: ['एका वर्सान', 'एक वर्स'],\n            yy: [number + ' वर्सांनी', number + ' वर्सां'],\n        };\n        return isFuture ? format[key][0] : format[key][1];\n    }\n\n    var gomDeva = moment.defineLocale('gom-deva', {\n        months: {\n            standalone: 'जानेवारी_फेब्रुवारी_मार्च_एप्रील_मे_जून_जुलय_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(\n                '_'\n            ),\n            format: 'जानेवारीच्या_फेब्रुवारीच्या_मार्चाच्या_एप्रीलाच्या_मेयाच्या_जूनाच्या_जुलयाच्या_ऑगस्टाच्या_सप्टेंबराच्या_ऑक्टोबराच्या_नोव्हेंबराच्या_डिसेंबराच्या'.split(\n                '_'\n            ),\n            isFormat: /MMMM(\\s)+D[oD]?/,\n        },\n        monthsShort: 'जाने._फेब्रु._मार्च_एप्री._मे_जून_जुल._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'आयतार_सोमार_मंगळार_बुधवार_बिरेस्तार_सुक्रार_शेनवार'.split('_'),\n        weekdaysShort: 'आयत._सोम._मंगळ._बुध._ब्रेस्त._सुक्र._शेन.'.split('_'),\n        weekdaysMin: 'आ_सो_मं_बु_ब्रे_सु_शे'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'A h:mm [वाजतां]',\n            LTS: 'A h:mm:ss [वाजतां]',\n            L: 'DD-MM-YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY A h:mm [वाजतां]',\n            LLLL: 'dddd, MMMM Do, YYYY, A h:mm [वाजतां]',\n            llll: 'ddd, D MMM YYYY, A h:mm [वाजतां]',\n        },\n        calendar: {\n            sameDay: '[आयज] LT',\n            nextDay: '[फाल्यां] LT',\n            nextWeek: '[फुडलो] dddd[,] LT',\n            lastDay: '[काल] LT',\n            lastWeek: '[फाटलो] dddd[,] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s',\n            past: '%s आदीं',\n            s: processRelativeTime,\n            ss: processRelativeTime,\n            m: processRelativeTime,\n            mm: processRelativeTime,\n            h: processRelativeTime,\n            hh: processRelativeTime,\n            d: processRelativeTime,\n            dd: processRelativeTime,\n            M: processRelativeTime,\n            MM: processRelativeTime,\n            y: processRelativeTime,\n            yy: processRelativeTime,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(वेर)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                // the ordinal 'वेर' only applies to day of the month\n                case 'D':\n                    return number + 'वेर';\n                default:\n                case 'M':\n                case 'Q':\n                case 'DDD':\n                case 'd':\n                case 'w':\n                case 'W':\n                    return number;\n            }\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week\n            doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)\n        },\n        meridiemParse: /राती|सकाळीं|दनपारां|सांजे/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'राती') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'सकाळीं') {\n                return hour;\n            } else if (meridiem === 'दनपारां') {\n                return hour > 12 ? hour : hour + 12;\n            } else if (meridiem === 'सांजे') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'राती';\n            } else if (hour < 12) {\n                return 'सकाळीं';\n            } else if (hour < 16) {\n                return 'दनपारां';\n            } else if (hour < 20) {\n                return 'सांजे';\n            } else {\n                return 'राती';\n            }\n        },\n    });\n\n    return gomDeva;\n\n})));\n","//! moment.js locale configuration\n//! locale : Konkani Latin script [gom-latn]\n//! author : The Discoverer : https://github.com/WikiDiscoverer\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var format = {\n            s: ['thoddea sekondamni', 'thodde sekond'],\n            ss: [number + ' sekondamni', number + ' sekond'],\n            m: ['eka mintan', 'ek minut'],\n            mm: [number + ' mintamni', number + ' mintam'],\n            h: ['eka voran', 'ek vor'],\n            hh: [number + ' voramni', number + ' voram'],\n            d: ['eka disan', 'ek dis'],\n            dd: [number + ' disamni', number + ' dis'],\n            M: ['eka mhoinean', 'ek mhoino'],\n            MM: [number + ' mhoineamni', number + ' mhoine'],\n            y: ['eka vorsan', 'ek voros'],\n            yy: [number + ' vorsamni', number + ' vorsam'],\n        };\n        return isFuture ? format[key][0] : format[key][1];\n    }\n\n    var gomLatn = moment.defineLocale('gom-latn', {\n        months: {\n            standalone: 'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split(\n                '_'\n            ),\n            format: 'Janerachea_Febrerachea_Marsachea_Abrilachea_Maiachea_Junachea_Julaiachea_Agostachea_Setembrachea_Otubrachea_Novembrachea_Dezembrachea'.split(\n                '_'\n            ),\n            isFormat: /MMMM(\\s)+D[oD]?/,\n        },\n        monthsShort: 'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: \"Aitar_Somar_Mongllar_Budhvar_Birestar_Sukrar_Son'var\".split('_'),\n        weekdaysShort: 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'),\n        weekdaysMin: 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'A h:mm [vazta]',\n            LTS: 'A h:mm:ss [vazta]',\n            L: 'DD-MM-YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY A h:mm [vazta]',\n            LLLL: 'dddd, MMMM Do, YYYY, A h:mm [vazta]',\n            llll: 'ddd, D MMM YYYY, A h:mm [vazta]',\n        },\n        calendar: {\n            sameDay: '[Aiz] LT',\n            nextDay: '[Faleam] LT',\n            nextWeek: '[Fuddlo] dddd[,] LT',\n            lastDay: '[Kal] LT',\n            lastWeek: '[Fattlo] dddd[,] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s',\n            past: '%s adim',\n            s: processRelativeTime,\n            ss: processRelativeTime,\n            m: processRelativeTime,\n            mm: processRelativeTime,\n            h: processRelativeTime,\n            hh: processRelativeTime,\n            d: processRelativeTime,\n            dd: processRelativeTime,\n            M: processRelativeTime,\n            MM: processRelativeTime,\n            y: processRelativeTime,\n            yy: processRelativeTime,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(er)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                // the ordinal 'er' only applies to day of the month\n                case 'D':\n                    return number + 'er';\n                default:\n                case 'M':\n                case 'Q':\n                case 'DDD':\n                case 'd':\n                case 'w':\n                case 'W':\n                    return number;\n            }\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week\n            doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)\n        },\n        meridiemParse: /rati|sokallim|donparam|sanje/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'rati') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'sokallim') {\n                return hour;\n            } else if (meridiem === 'donparam') {\n                return hour > 12 ? hour : hour + 12;\n            } else if (meridiem === 'sanje') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'rati';\n            } else if (hour < 12) {\n                return 'sokallim';\n            } else if (hour < 16) {\n                return 'donparam';\n            } else if (hour < 20) {\n                return 'sanje';\n            } else {\n                return 'rati';\n            }\n        },\n    });\n\n    return gomLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Gujarati [gu]\n//! author : Kaushik Thanki : https://github.com/Kaushik1987\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '૧',\n            2: '૨',\n            3: '૩',\n            4: '૪',\n            5: '૫',\n            6: '૬',\n            7: '૭',\n            8: '૮',\n            9: '૯',\n            0: '૦',\n        },\n        numberMap = {\n            '૧': '1',\n            '૨': '2',\n            '૩': '3',\n            '૪': '4',\n            '૫': '5',\n            '૬': '6',\n            '૭': '7',\n            '૮': '8',\n            '૯': '9',\n            '૦': '0',\n        };\n\n    var gu = moment.defineLocale('gu', {\n        months: 'જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર'.split(\n            '_'\n        ),\n        monthsShort: 'જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર'.split(\n            '_'\n        ),\n        weekdaysShort: 'રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ'.split('_'),\n        weekdaysMin: 'ર_સો_મં_બુ_ગુ_શુ_શ'.split('_'),\n        longDateFormat: {\n            LT: 'A h:mm વાગ્યે',\n            LTS: 'A h:mm:ss વાગ્યે',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, A h:mm વાગ્યે',\n            LLLL: 'dddd, D MMMM YYYY, A h:mm વાગ્યે',\n        },\n        calendar: {\n            sameDay: '[આજ] LT',\n            nextDay: '[કાલે] LT',\n            nextWeek: 'dddd, LT',\n            lastDay: '[ગઇકાલે] LT',\n            lastWeek: '[પાછલા] dddd, LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s મા',\n            past: '%s પહેલા',\n            s: 'અમુક પળો',\n            ss: '%d સેકંડ',\n            m: 'એક મિનિટ',\n            mm: '%d મિનિટ',\n            h: 'એક કલાક',\n            hh: '%d કલાક',\n            d: 'એક દિવસ',\n            dd: '%d દિવસ',\n            M: 'એક મહિનો',\n            MM: '%d મહિનો',\n            y: 'એક વર્ષ',\n            yy: '%d વર્ષ',\n        },\n        preparse: function (string) {\n            return string.replace(/[૧૨૩૪૫૬૭૮૯૦]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        // Gujarati notation for meridiems are quite fuzzy in practice. While there exists\n        // a rigid notion of a 'Pahar' it is not used as rigidly in modern Gujarati.\n        meridiemParse: /રાત|બપોર|સવાર|સાંજ/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'રાત') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'સવાર') {\n                return hour;\n            } else if (meridiem === 'બપોર') {\n                return hour >= 10 ? hour : hour + 12;\n            } else if (meridiem === 'સાંજ') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'રાત';\n            } else if (hour < 10) {\n                return 'સવાર';\n            } else if (hour < 17) {\n                return 'બપોર';\n            } else if (hour < 20) {\n                return 'સાંજ';\n            } else {\n                return 'રાત';\n            }\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return gu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hebrew [he]\n//! author : Tomer Cohen : https://github.com/tomer\n//! author : Moshe Simantov : https://github.com/DevelopmentIL\n//! author : Tal Ater : https://github.com/TalAter\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var he = moment.defineLocale('he', {\n        months: 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split(\n            '_'\n        ),\n        monthsShort: 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split(\n            '_'\n        ),\n        weekdays: 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'),\n        weekdaysShort: 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'),\n        weekdaysMin: 'א_ב_ג_ד_ה_ו_ש'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D [ב]MMMM YYYY',\n            LLL: 'D [ב]MMMM YYYY HH:mm',\n            LLLL: 'dddd, D [ב]MMMM YYYY HH:mm',\n            l: 'D/M/YYYY',\n            ll: 'D MMM YYYY',\n            lll: 'D MMM YYYY HH:mm',\n            llll: 'ddd, D MMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[היום ב־]LT',\n            nextDay: '[מחר ב־]LT',\n            nextWeek: 'dddd [בשעה] LT',\n            lastDay: '[אתמול ב־]LT',\n            lastWeek: '[ביום] dddd [האחרון בשעה] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'בעוד %s',\n            past: 'לפני %s',\n            s: 'מספר שניות',\n            ss: '%d שניות',\n            m: 'דקה',\n            mm: '%d דקות',\n            h: 'שעה',\n            hh: function (number) {\n                if (number === 2) {\n                    return 'שעתיים';\n                }\n                return number + ' שעות';\n            },\n            d: 'יום',\n            dd: function (number) {\n                if (number === 2) {\n                    return 'יומיים';\n                }\n                return number + ' ימים';\n            },\n            M: 'חודש',\n            MM: function (number) {\n                if (number === 2) {\n                    return 'חודשיים';\n                }\n                return number + ' חודשים';\n            },\n            y: 'שנה',\n            yy: function (number) {\n                if (number === 2) {\n                    return 'שנתיים';\n                } else if (number % 10 === 0 && number !== 10) {\n                    return number + ' שנה';\n                }\n                return number + ' שנים';\n            },\n        },\n        meridiemParse: /אחה\"צ|לפנה\"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,\n        isPM: function (input) {\n            return /^(אחה\"צ|אחרי הצהריים|בערב)$/.test(input);\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 5) {\n                return 'לפנות בוקר';\n            } else if (hour < 10) {\n                return 'בבוקר';\n            } else if (hour < 12) {\n                return isLower ? 'לפנה\"צ' : 'לפני הצהריים';\n            } else if (hour < 18) {\n                return isLower ? 'אחה\"צ' : 'אחרי הצהריים';\n            } else {\n                return 'בערב';\n            }\n        },\n    });\n\n    return he;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hindi [hi]\n//! author : Mayank Singhal : https://github.com/mayanksinghal\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '१',\n            2: '२',\n            3: '३',\n            4: '४',\n            5: '५',\n            6: '६',\n            7: '७',\n            8: '८',\n            9: '९',\n            0: '०',\n        },\n        numberMap = {\n            '१': '1',\n            '२': '2',\n            '३': '3',\n            '४': '4',\n            '५': '5',\n            '६': '6',\n            '७': '7',\n            '८': '8',\n            '९': '9',\n            '०': '0',\n        },\n        monthsParse = [\n            /^जन/i,\n            /^फ़र|फर/i,\n            /^मार्च/i,\n            /^अप्रै/i,\n            /^मई/i,\n            /^जून/i,\n            /^जुल/i,\n            /^अग/i,\n            /^सितं|सित/i,\n            /^अक्टू/i,\n            /^नव|नवं/i,\n            /^दिसं|दिस/i,\n        ],\n        shortMonthsParse = [\n            /^जन/i,\n            /^फ़र/i,\n            /^मार्च/i,\n            /^अप्रै/i,\n            /^मई/i,\n            /^जून/i,\n            /^जुल/i,\n            /^अग/i,\n            /^सित/i,\n            /^अक्टू/i,\n            /^नव/i,\n            /^दिस/i,\n        ];\n\n    var hi = moment.defineLocale('hi', {\n        months: {\n            format: 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split(\n                '_'\n            ),\n            standalone: 'जनवरी_फरवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितंबर_अक्टूबर_नवंबर_दिसंबर'.split(\n                '_'\n            ),\n        },\n        monthsShort: 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split(\n            '_'\n        ),\n        weekdays: 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n        weekdaysShort: 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'),\n        weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),\n        longDateFormat: {\n            LT: 'A h:mm बजे',\n            LTS: 'A h:mm:ss बजे',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, A h:mm बजे',\n            LLLL: 'dddd, D MMMM YYYY, A h:mm बजे',\n        },\n\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: shortMonthsParse,\n\n        monthsRegex: /^(जनवरी|जन\\.?|फ़रवरी|फरवरी|फ़र\\.?|मार्च?|अप्रैल|अप्रै\\.?|मई?|जून?|जुलाई|जुल\\.?|अगस्त|अग\\.?|सितम्बर|सितंबर|सित\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर|नव\\.?|दिसम्बर|दिसंबर|दिस\\.?)/i,\n\n        monthsShortRegex: /^(जनवरी|जन\\.?|फ़रवरी|फरवरी|फ़र\\.?|मार्च?|अप्रैल|अप्रै\\.?|मई?|जून?|जुलाई|जुल\\.?|अगस्त|अग\\.?|सितम्बर|सितंबर|सित\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर|नव\\.?|दिसम्बर|दिसंबर|दिस\\.?)/i,\n\n        monthsStrictRegex: /^(जनवरी?|फ़रवरी|फरवरी?|मार्च?|अप्रैल?|मई?|जून?|जुलाई?|अगस्त?|सितम्बर|सितंबर|सित?\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर?|दिसम्बर|दिसंबर?)/i,\n\n        monthsShortStrictRegex: /^(जन\\.?|फ़र\\.?|मार्च?|अप्रै\\.?|मई?|जून?|जुल\\.?|अग\\.?|सित\\.?|अक्टू\\.?|नव\\.?|दिस\\.?)/i,\n\n        calendar: {\n            sameDay: '[आज] LT',\n            nextDay: '[कल] LT',\n            nextWeek: 'dddd, LT',\n            lastDay: '[कल] LT',\n            lastWeek: '[पिछले] dddd, LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s में',\n            past: '%s पहले',\n            s: 'कुछ ही क्षण',\n            ss: '%d सेकंड',\n            m: 'एक मिनट',\n            mm: '%d मिनट',\n            h: 'एक घंटा',\n            hh: '%d घंटे',\n            d: 'एक दिन',\n            dd: '%d दिन',\n            M: 'एक महीने',\n            MM: '%d महीने',\n            y: 'एक वर्ष',\n            yy: '%d वर्ष',\n        },\n        preparse: function (string) {\n            return string.replace(/[१२३४५६७८९०]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        // Hindi notation for meridiems are quite fuzzy in practice. While there exists\n        // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.\n        meridiemParse: /रात|सुबह|दोपहर|शाम/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'रात') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'सुबह') {\n                return hour;\n            } else if (meridiem === 'दोपहर') {\n                return hour >= 10 ? hour : hour + 12;\n            } else if (meridiem === 'शाम') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'रात';\n            } else if (hour < 10) {\n                return 'सुबह';\n            } else if (hour < 17) {\n                return 'दोपहर';\n            } else if (hour < 20) {\n                return 'शाम';\n            } else {\n                return 'रात';\n            }\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return hi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Croatian [hr]\n//! author : Bojan Marković : https://github.com/bmarkovic\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function translate(number, withoutSuffix, key) {\n        var result = number + ' ';\n        switch (key) {\n            case 'ss':\n                if (number === 1) {\n                    result += 'sekunda';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'sekunde';\n                } else {\n                    result += 'sekundi';\n                }\n                return result;\n            case 'm':\n                return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n            case 'mm':\n                if (number === 1) {\n                    result += 'minuta';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'minute';\n                } else {\n                    result += 'minuta';\n                }\n                return result;\n            case 'h':\n                return withoutSuffix ? 'jedan sat' : 'jednog sata';\n            case 'hh':\n                if (number === 1) {\n                    result += 'sat';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'sata';\n                } else {\n                    result += 'sati';\n                }\n                return result;\n            case 'dd':\n                if (number === 1) {\n                    result += 'dan';\n                } else {\n                    result += 'dana';\n                }\n                return result;\n            case 'MM':\n                if (number === 1) {\n                    result += 'mjesec';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'mjeseca';\n                } else {\n                    result += 'mjeseci';\n                }\n                return result;\n            case 'yy':\n                if (number === 1) {\n                    result += 'godina';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'godine';\n                } else {\n                    result += 'godina';\n                }\n                return result;\n        }\n    }\n\n    var hr = moment.defineLocale('hr', {\n        months: {\n            format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split(\n                '_'\n            ),\n            standalone: 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split(\n                '_'\n            ),\n        },\n        monthsShort: 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n            '_'\n        ),\n        weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'Do MMMM YYYY',\n            LLL: 'Do MMMM YYYY H:mm',\n            LLLL: 'dddd, Do MMMM YYYY H:mm',\n        },\n        calendar: {\n            sameDay: '[danas u] LT',\n            nextDay: '[sutra u] LT',\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[u] [nedjelju] [u] LT';\n                    case 3:\n                        return '[u] [srijedu] [u] LT';\n                    case 6:\n                        return '[u] [subotu] [u] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[u] dddd [u] LT';\n                }\n            },\n            lastDay: '[jučer u] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[prošlu] [nedjelju] [u] LT';\n                    case 3:\n                        return '[prošlu] [srijedu] [u] LT';\n                    case 6:\n                        return '[prošle] [subote] [u] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[prošli] dddd [u] LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'za %s',\n            past: 'prije %s',\n            s: 'par sekundi',\n            ss: translate,\n            m: translate,\n            mm: translate,\n            h: translate,\n            hh: translate,\n            d: 'dan',\n            dd: translate,\n            M: 'mjesec',\n            MM: translate,\n            y: 'godinu',\n            yy: translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return hr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hungarian [hu]\n//! author : Adam Brunner : https://github.com/adambrunner\n//! author : Peter Viszt  : https://github.com/passatgt\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(\n        ' '\n    );\n    function translate(number, withoutSuffix, key, isFuture) {\n        var num = number;\n        switch (key) {\n            case 's':\n                return isFuture || withoutSuffix\n                    ? 'néhány másodperc'\n                    : 'néhány másodperce';\n            case 'ss':\n                return num + (isFuture || withoutSuffix)\n                    ? ' másodperc'\n                    : ' másodperce';\n            case 'm':\n                return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce');\n            case 'mm':\n                return num + (isFuture || withoutSuffix ? ' perc' : ' perce');\n            case 'h':\n                return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája');\n            case 'hh':\n                return num + (isFuture || withoutSuffix ? ' óra' : ' órája');\n            case 'd':\n                return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja');\n            case 'dd':\n                return num + (isFuture || withoutSuffix ? ' nap' : ' napja');\n            case 'M':\n                return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n            case 'MM':\n                return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n            case 'y':\n                return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve');\n            case 'yy':\n                return num + (isFuture || withoutSuffix ? ' év' : ' éve');\n        }\n        return '';\n    }\n    function week(isFuture) {\n        return (\n            (isFuture ? '' : '[múlt] ') +\n            '[' +\n            weekEndings[this.day()] +\n            '] LT[-kor]'\n        );\n    }\n\n    var hu = moment.defineLocale('hu', {\n        months: 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split(\n            '_'\n        ),\n        monthsShort: 'jan._feb._márc._ápr._máj._jún._júl._aug._szept._okt._nov._dec.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'),\n        weekdaysShort: 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'),\n        weekdaysMin: 'v_h_k_sze_cs_p_szo'.split('_'),\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'YYYY.MM.DD.',\n            LL: 'YYYY. MMMM D.',\n            LLL: 'YYYY. MMMM D. H:mm',\n            LLLL: 'YYYY. MMMM D., dddd H:mm',\n        },\n        meridiemParse: /de|du/i,\n        isPM: function (input) {\n            return input.charAt(1).toLowerCase() === 'u';\n        },\n        meridiem: function (hours, minutes, isLower) {\n            if (hours < 12) {\n                return isLower === true ? 'de' : 'DE';\n            } else {\n                return isLower === true ? 'du' : 'DU';\n            }\n        },\n        calendar: {\n            sameDay: '[ma] LT[-kor]',\n            nextDay: '[holnap] LT[-kor]',\n            nextWeek: function () {\n                return week.call(this, true);\n            },\n            lastDay: '[tegnap] LT[-kor]',\n            lastWeek: function () {\n                return week.call(this, false);\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s múlva',\n            past: '%s',\n            s: translate,\n            ss: translate,\n            m: translate,\n            mm: translate,\n            h: translate,\n            hh: translate,\n            d: translate,\n            dd: translate,\n            M: translate,\n            MM: translate,\n            y: translate,\n            yy: translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return hu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Armenian [hy-am]\n//! author : Armendarabyan : https://github.com/armendarabyan\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var hyAm = moment.defineLocale('hy-am', {\n        months: {\n            format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split(\n                '_'\n            ),\n            standalone: 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split(\n                '_'\n            ),\n        },\n        monthsShort: 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'),\n        weekdays: 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split(\n            '_'\n        ),\n        weekdaysShort: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n        weekdaysMin: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY թ.',\n            LLL: 'D MMMM YYYY թ., HH:mm',\n            LLLL: 'dddd, D MMMM YYYY թ., HH:mm',\n        },\n        calendar: {\n            sameDay: '[այսօր] LT',\n            nextDay: '[վաղը] LT',\n            lastDay: '[երեկ] LT',\n            nextWeek: function () {\n                return 'dddd [օրը ժամը] LT';\n            },\n            lastWeek: function () {\n                return '[անցած] dddd [օրը ժամը] LT';\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s հետո',\n            past: '%s առաջ',\n            s: 'մի քանի վայրկյան',\n            ss: '%d վայրկյան',\n            m: 'րոպե',\n            mm: '%d րոպե',\n            h: 'ժամ',\n            hh: '%d ժամ',\n            d: 'օր',\n            dd: '%d օր',\n            M: 'ամիս',\n            MM: '%d ամիս',\n            y: 'տարի',\n            yy: '%d տարի',\n        },\n        meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,\n        isPM: function (input) {\n            return /^(ցերեկվա|երեկոյան)$/.test(input);\n        },\n        meridiem: function (hour) {\n            if (hour < 4) {\n                return 'գիշերվա';\n            } else if (hour < 12) {\n                return 'առավոտվա';\n            } else if (hour < 17) {\n                return 'ցերեկվա';\n            } else {\n                return 'երեկոյան';\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}|\\d{1,2}-(ին|րդ)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'DDD':\n                case 'w':\n                case 'W':\n                case 'DDDo':\n                    if (number === 1) {\n                        return number + '-ին';\n                    }\n                    return number + '-րդ';\n                default:\n                    return number;\n            }\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return hyAm;\n\n})));\n","//! moment.js locale configuration\n//! locale : Indonesian [id]\n//! author : Mohammad Satrio Utomo : https://github.com/tyok\n//! reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var id = moment.defineLocale('id', {\n        months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des'.split('_'),\n        weekdays: 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),\n        weekdaysShort: 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'),\n        weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),\n        longDateFormat: {\n            LT: 'HH.mm',\n            LTS: 'HH.mm.ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY [pukul] HH.mm',\n            LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n        },\n        meridiemParse: /pagi|siang|sore|malam/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'pagi') {\n                return hour;\n            } else if (meridiem === 'siang') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === 'sore' || meridiem === 'malam') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hours, minutes, isLower) {\n            if (hours < 11) {\n                return 'pagi';\n            } else if (hours < 15) {\n                return 'siang';\n            } else if (hours < 19) {\n                return 'sore';\n            } else {\n                return 'malam';\n            }\n        },\n        calendar: {\n            sameDay: '[Hari ini pukul] LT',\n            nextDay: '[Besok pukul] LT',\n            nextWeek: 'dddd [pukul] LT',\n            lastDay: '[Kemarin pukul] LT',\n            lastWeek: 'dddd [lalu pukul] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'dalam %s',\n            past: '%s yang lalu',\n            s: 'beberapa detik',\n            ss: '%d detik',\n            m: 'semenit',\n            mm: '%d menit',\n            h: 'sejam',\n            hh: '%d jam',\n            d: 'sehari',\n            dd: '%d hari',\n            M: 'sebulan',\n            MM: '%d bulan',\n            y: 'setahun',\n            yy: '%d tahun',\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return id;\n\n})));\n","//! moment.js locale configuration\n//! locale : Icelandic [is]\n//! author : Hinrik Örn Sigurðsson : https://github.com/hinrik\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function plural(n) {\n        if (n % 100 === 11) {\n            return true;\n        } else if (n % 10 === 1) {\n            return false;\n        }\n        return true;\n    }\n    function translate(number, withoutSuffix, key, isFuture) {\n        var result = number + ' ';\n        switch (key) {\n            case 's':\n                return withoutSuffix || isFuture\n                    ? 'nokkrar sekúndur'\n                    : 'nokkrum sekúndum';\n            case 'ss':\n                if (plural(number)) {\n                    return (\n                        result +\n                        (withoutSuffix || isFuture ? 'sekúndur' : 'sekúndum')\n                    );\n                }\n                return result + 'sekúnda';\n            case 'm':\n                return withoutSuffix ? 'mínúta' : 'mínútu';\n            case 'mm':\n                if (plural(number)) {\n                    return (\n                        result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum')\n                    );\n                } else if (withoutSuffix) {\n                    return result + 'mínúta';\n                }\n                return result + 'mínútu';\n            case 'hh':\n                if (plural(number)) {\n                    return (\n                        result +\n                        (withoutSuffix || isFuture\n                            ? 'klukkustundir'\n                            : 'klukkustundum')\n                    );\n                }\n                return result + 'klukkustund';\n            case 'd':\n                if (withoutSuffix) {\n                    return 'dagur';\n                }\n                return isFuture ? 'dag' : 'degi';\n            case 'dd':\n                if (plural(number)) {\n                    if (withoutSuffix) {\n                        return result + 'dagar';\n                    }\n                    return result + (isFuture ? 'daga' : 'dögum');\n                } else if (withoutSuffix) {\n                    return result + 'dagur';\n                }\n                return result + (isFuture ? 'dag' : 'degi');\n            case 'M':\n                if (withoutSuffix) {\n                    return 'mánuður';\n                }\n                return isFuture ? 'mánuð' : 'mánuði';\n            case 'MM':\n                if (plural(number)) {\n                    if (withoutSuffix) {\n                        return result + 'mánuðir';\n                    }\n                    return result + (isFuture ? 'mánuði' : 'mánuðum');\n                } else if (withoutSuffix) {\n                    return result + 'mánuður';\n                }\n                return result + (isFuture ? 'mánuð' : 'mánuði');\n            case 'y':\n                return withoutSuffix || isFuture ? 'ár' : 'ári';\n            case 'yy':\n                if (plural(number)) {\n                    return result + (withoutSuffix || isFuture ? 'ár' : 'árum');\n                }\n                return result + (withoutSuffix || isFuture ? 'ár' : 'ári');\n        }\n    }\n\n    var is = moment.defineLocale('is', {\n        months: 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split(\n            '_'\n        ),\n        monthsShort: 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'),\n        weekdays: 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split(\n            '_'\n        ),\n        weekdaysShort: 'sun_mán_þri_mið_fim_fös_lau'.split('_'),\n        weekdaysMin: 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'),\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY [kl.] H:mm',\n            LLLL: 'dddd, D. MMMM YYYY [kl.] H:mm',\n        },\n        calendar: {\n            sameDay: '[í dag kl.] LT',\n            nextDay: '[á morgun kl.] LT',\n            nextWeek: 'dddd [kl.] LT',\n            lastDay: '[í gær kl.] LT',\n            lastWeek: '[síðasta] dddd [kl.] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'eftir %s',\n            past: 'fyrir %s síðan',\n            s: translate,\n            ss: translate,\n            m: translate,\n            mm: translate,\n            h: 'klukkustund',\n            hh: translate,\n            d: translate,\n            dd: translate,\n            M: translate,\n            MM: translate,\n            y: translate,\n            yy: translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return is;\n\n})));\n","//! moment.js locale configuration\n//! locale : Italian [it]\n//! author : Lorenzo : https://github.com/aliem\n//! author: Mattia Larentis: https://github.com/nostalgiaz\n//! author: Marco : https://github.com/Manfre98\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var it = moment.defineLocale('it', {\n        months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(\n            '_'\n        ),\n        monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n        weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(\n            '_'\n        ),\n        weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n        weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: function () {\n                return (\n                    '[Oggi a' +\n                    (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n                    ']LT'\n                );\n            },\n            nextDay: function () {\n                return (\n                    '[Domani a' +\n                    (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n                    ']LT'\n                );\n            },\n            nextWeek: function () {\n                return (\n                    'dddd [a' +\n                    (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n                    ']LT'\n                );\n            },\n            lastDay: function () {\n                return (\n                    '[Ieri a' +\n                    (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n                    ']LT'\n                );\n            },\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return (\n                            '[La scorsa] dddd [a' +\n                            (this.hours() > 1\n                                ? 'lle '\n                                : this.hours() === 0\n                                ? ' '\n                                : \"ll'\") +\n                            ']LT'\n                        );\n                    default:\n                        return (\n                            '[Lo scorso] dddd [a' +\n                            (this.hours() > 1\n                                ? 'lle '\n                                : this.hours() === 0\n                                ? ' '\n                                : \"ll'\") +\n                            ']LT'\n                        );\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'tra %s',\n            past: '%s fa',\n            s: 'alcuni secondi',\n            ss: '%d secondi',\n            m: 'un minuto',\n            mm: '%d minuti',\n            h: \"un'ora\",\n            hh: '%d ore',\n            d: 'un giorno',\n            dd: '%d giorni',\n            w: 'una settimana',\n            ww: '%d settimane',\n            M: 'un mese',\n            MM: '%d mesi',\n            y: 'un anno',\n            yy: '%d anni',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return it;\n\n})));\n","//! moment.js locale configuration\n//! locale : Italian (Switzerland) [it-ch]\n//! author : xfh : https://github.com/xfh\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var itCh = moment.defineLocale('it-ch', {\n        months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(\n            '_'\n        ),\n        monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n        weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(\n            '_'\n        ),\n        weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n        weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Oggi alle] LT',\n            nextDay: '[Domani alle] LT',\n            nextWeek: 'dddd [alle] LT',\n            lastDay: '[Ieri alle] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[la scorsa] dddd [alle] LT';\n                    default:\n                        return '[lo scorso] dddd [alle] LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: function (s) {\n                return (/^[0-9].+$/.test(s) ? 'tra' : 'in') + ' ' + s;\n            },\n            past: '%s fa',\n            s: 'alcuni secondi',\n            ss: '%d secondi',\n            m: 'un minuto',\n            mm: '%d minuti',\n            h: \"un'ora\",\n            hh: '%d ore',\n            d: 'un giorno',\n            dd: '%d giorni',\n            M: 'un mese',\n            MM: '%d mesi',\n            y: 'un anno',\n            yy: '%d anni',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return itCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Japanese [ja]\n//! author : LI Long : https://github.com/baryon\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var ja = moment.defineLocale('ja', {\n        eras: [\n            {\n                since: '2019-05-01',\n                offset: 1,\n                name: '令和',\n                narrow: '㋿',\n                abbr: 'R',\n            },\n            {\n                since: '1989-01-08',\n                until: '2019-04-30',\n                offset: 1,\n                name: '平成',\n                narrow: '㍻',\n                abbr: 'H',\n            },\n            {\n                since: '1926-12-25',\n                until: '1989-01-07',\n                offset: 1,\n                name: '昭和',\n                narrow: '㍼',\n                abbr: 'S',\n            },\n            {\n                since: '1912-07-30',\n                until: '1926-12-24',\n                offset: 1,\n                name: '大正',\n                narrow: '㍽',\n                abbr: 'T',\n            },\n            {\n                since: '1873-01-01',\n                until: '1912-07-29',\n                offset: 6,\n                name: '明治',\n                narrow: '㍾',\n                abbr: 'M',\n            },\n            {\n                since: '0001-01-01',\n                until: '1873-12-31',\n                offset: 1,\n                name: '西暦',\n                narrow: 'AD',\n                abbr: 'AD',\n            },\n            {\n                since: '0000-12-31',\n                until: -Infinity,\n                offset: 1,\n                name: '紀元前',\n                narrow: 'BC',\n                abbr: 'BC',\n            },\n        ],\n        eraYearOrdinalRegex: /(元|\\d+)年/,\n        eraYearOrdinalParse: function (input, match) {\n            return match[1] === '元' ? 1 : parseInt(match[1] || input, 10);\n        },\n        months: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n            '_'\n        ),\n        weekdays: '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'),\n        weekdaysShort: '日_月_火_水_木_金_土'.split('_'),\n        weekdaysMin: '日_月_火_水_木_金_土'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'YYYY/MM/DD',\n            LL: 'YYYY年M月D日',\n            LLL: 'YYYY年M月D日 HH:mm',\n            LLLL: 'YYYY年M月D日 dddd HH:mm',\n            l: 'YYYY/MM/DD',\n            ll: 'YYYY年M月D日',\n            lll: 'YYYY年M月D日 HH:mm',\n            llll: 'YYYY年M月D日(ddd) HH:mm',\n        },\n        meridiemParse: /午前|午後/i,\n        isPM: function (input) {\n            return input === '午後';\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return '午前';\n            } else {\n                return '午後';\n            }\n        },\n        calendar: {\n            sameDay: '[今日] LT',\n            nextDay: '[明日] LT',\n            nextWeek: function (now) {\n                if (now.week() !== this.week()) {\n                    return '[来週]dddd LT';\n                } else {\n                    return 'dddd LT';\n                }\n            },\n            lastDay: '[昨日] LT',\n            lastWeek: function (now) {\n                if (this.week() !== now.week()) {\n                    return '[先週]dddd LT';\n                } else {\n                    return 'dddd LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}日/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'y':\n                    return number === 1 ? '元年' : number + '年';\n                case 'd':\n                case 'D':\n                case 'DDD':\n                    return number + '日';\n                default:\n                    return number;\n            }\n        },\n        relativeTime: {\n            future: '%s後',\n            past: '%s前',\n            s: '数秒',\n            ss: '%d秒',\n            m: '1分',\n            mm: '%d分',\n            h: '1時間',\n            hh: '%d時間',\n            d: '1日',\n            dd: '%d日',\n            M: '1ヶ月',\n            MM: '%dヶ月',\n            y: '1年',\n            yy: '%d年',\n        },\n    });\n\n    return ja;\n\n})));\n","//! moment.js locale configuration\n//! locale : Javanese [jv]\n//! author : Rony Lantip : https://github.com/lantip\n//! reference: http://jv.wikipedia.org/wiki/Basa_Jawa\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var jv = moment.defineLocale('jv', {\n        months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'),\n        weekdays: 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'),\n        weekdaysShort: 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'),\n        weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'),\n        longDateFormat: {\n            LT: 'HH.mm',\n            LTS: 'HH.mm.ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY [pukul] HH.mm',\n            LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n        },\n        meridiemParse: /enjing|siyang|sonten|ndalu/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'enjing') {\n                return hour;\n            } else if (meridiem === 'siyang') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === 'sonten' || meridiem === 'ndalu') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hours, minutes, isLower) {\n            if (hours < 11) {\n                return 'enjing';\n            } else if (hours < 15) {\n                return 'siyang';\n            } else if (hours < 19) {\n                return 'sonten';\n            } else {\n                return 'ndalu';\n            }\n        },\n        calendar: {\n            sameDay: '[Dinten puniko pukul] LT',\n            nextDay: '[Mbenjang pukul] LT',\n            nextWeek: 'dddd [pukul] LT',\n            lastDay: '[Kala wingi pukul] LT',\n            lastWeek: 'dddd [kepengker pukul] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'wonten ing %s',\n            past: '%s ingkang kepengker',\n            s: 'sawetawis detik',\n            ss: '%d detik',\n            m: 'setunggal menit',\n            mm: '%d menit',\n            h: 'setunggal jam',\n            hh: '%d jam',\n            d: 'sedinten',\n            dd: '%d dinten',\n            M: 'sewulan',\n            MM: '%d wulan',\n            y: 'setaun',\n            yy: '%d taun',\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return jv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Georgian [ka]\n//! author : Irakli Janiashvili : https://github.com/IrakliJani\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var ka = moment.defineLocale('ka', {\n        months: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split(\n            '_'\n        ),\n        monthsShort: 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'),\n        weekdays: {\n            standalone: 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split(\n                '_'\n            ),\n            format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split(\n                '_'\n            ),\n            isFormat: /(წინა|შემდეგ)/,\n        },\n        weekdaysShort: 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'),\n        weekdaysMin: 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[დღეს] LT[-ზე]',\n            nextDay: '[ხვალ] LT[-ზე]',\n            lastDay: '[გუშინ] LT[-ზე]',\n            nextWeek: '[შემდეგ] dddd LT[-ზე]',\n            lastWeek: '[წინა] dddd LT-ზე',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: function (s) {\n                return s.replace(/(წამ|წუთ|საათ|წელ|დღ|თვ)(ი|ე)/, function (\n                    $0,\n                    $1,\n                    $2\n                ) {\n                    return $2 === 'ი' ? $1 + 'ში' : $1 + $2 + 'ში';\n                });\n            },\n            past: function (s) {\n                if (/(წამი|წუთი|საათი|დღე|თვე)/.test(s)) {\n                    return s.replace(/(ი|ე)$/, 'ის წინ');\n                }\n                if (/წელი/.test(s)) {\n                    return s.replace(/წელი$/, 'წლის წინ');\n                }\n                return s;\n            },\n            s: 'რამდენიმე წამი',\n            ss: '%d წამი',\n            m: 'წუთი',\n            mm: '%d წუთი',\n            h: 'საათი',\n            hh: '%d საათი',\n            d: 'დღე',\n            dd: '%d დღე',\n            M: 'თვე',\n            MM: '%d თვე',\n            y: 'წელი',\n            yy: '%d წელი',\n        },\n        dayOfMonthOrdinalParse: /0|1-ლი|მე-\\d{1,2}|\\d{1,2}-ე/,\n        ordinal: function (number) {\n            if (number === 0) {\n                return number;\n            }\n            if (number === 1) {\n                return number + '-ლი';\n            }\n            if (\n                number < 20 ||\n                (number <= 100 && number % 20 === 0) ||\n                number % 100 === 0\n            ) {\n                return 'მე-' + number;\n            }\n            return number + '-ე';\n        },\n        week: {\n            dow: 1,\n            doy: 7,\n        },\n    });\n\n    return ka;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kazakh [kk]\n//! authors : Nurlan Rakhimzhanov : https://github.com/nurlan\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var suffixes = {\n        0: '-ші',\n        1: '-ші',\n        2: '-ші',\n        3: '-ші',\n        4: '-ші',\n        5: '-ші',\n        6: '-шы',\n        7: '-ші',\n        8: '-ші',\n        9: '-шы',\n        10: '-шы',\n        20: '-шы',\n        30: '-шы',\n        40: '-шы',\n        50: '-ші',\n        60: '-шы',\n        70: '-ші',\n        80: '-ші',\n        90: '-шы',\n        100: '-ші',\n    };\n\n    var kk = moment.defineLocale('kk', {\n        months: 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split(\n            '_'\n        ),\n        monthsShort: 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'),\n        weekdays: 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split(\n            '_'\n        ),\n        weekdaysShort: 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'),\n        weekdaysMin: 'жк_дй_сй_ср_бй_жм_сн'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Бүгін сағат] LT',\n            nextDay: '[Ертең сағат] LT',\n            nextWeek: 'dddd [сағат] LT',\n            lastDay: '[Кеше сағат] LT',\n            lastWeek: '[Өткен аптаның] dddd [сағат] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s ішінде',\n            past: '%s бұрын',\n            s: 'бірнеше секунд',\n            ss: '%d секунд',\n            m: 'бір минут',\n            mm: '%d минут',\n            h: 'бір сағат',\n            hh: '%d сағат',\n            d: 'бір күн',\n            dd: '%d күн',\n            M: 'бір ай',\n            MM: '%d ай',\n            y: 'бір жыл',\n            yy: '%d жыл',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(ші|шы)/,\n        ordinal: function (number) {\n            var a = number % 10,\n                b = number >= 100 ? 100 : null;\n            return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return kk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Cambodian [km]\n//! author : Kruy Vanna : https://github.com/kruyvanna\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '១',\n            2: '២',\n            3: '៣',\n            4: '៤',\n            5: '៥',\n            6: '៦',\n            7: '៧',\n            8: '៨',\n            9: '៩',\n            0: '០',\n        },\n        numberMap = {\n            '១': '1',\n            '២': '2',\n            '៣': '3',\n            '៤': '4',\n            '៥': '5',\n            '៦': '6',\n            '៧': '7',\n            '៨': '8',\n            '៩': '9',\n            '០': '0',\n        };\n\n    var km = moment.defineLocale('km', {\n        months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(\n            '_'\n        ),\n        monthsShort: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(\n            '_'\n        ),\n        weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),\n        weekdaysShort: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n        weekdaysMin: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        meridiemParse: /ព្រឹក|ល្ងាច/,\n        isPM: function (input) {\n            return input === 'ល្ងាច';\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ព្រឹក';\n            } else {\n                return 'ល្ងាច';\n            }\n        },\n        calendar: {\n            sameDay: '[ថ្ងៃនេះ ម៉ោង] LT',\n            nextDay: '[ស្អែក ម៉ោង] LT',\n            nextWeek: 'dddd [ម៉ោង] LT',\n            lastDay: '[ម្សិលមិញ ម៉ោង] LT',\n            lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%sទៀត',\n            past: '%sមុន',\n            s: 'ប៉ុន្មានវិនាទី',\n            ss: '%d វិនាទី',\n            m: 'មួយនាទី',\n            mm: '%d នាទី',\n            h: 'មួយម៉ោង',\n            hh: '%d ម៉ោង',\n            d: 'មួយថ្ងៃ',\n            dd: '%d ថ្ងៃ',\n            M: 'មួយខែ',\n            MM: '%d ខែ',\n            y: 'មួយឆ្នាំ',\n            yy: '%d ឆ្នាំ',\n        },\n        dayOfMonthOrdinalParse: /ទី\\d{1,2}/,\n        ordinal: 'ទី%d',\n        preparse: function (string) {\n            return string.replace(/[១២៣៤៥៦៧៨៩០]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return km;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kannada [kn]\n//! author : Rajeev Naik : https://github.com/rajeevnaikte\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '೧',\n            2: '೨',\n            3: '೩',\n            4: '೪',\n            5: '೫',\n            6: '೬',\n            7: '೭',\n            8: '೮',\n            9: '೯',\n            0: '೦',\n        },\n        numberMap = {\n            '೧': '1',\n            '೨': '2',\n            '೩': '3',\n            '೪': '4',\n            '೫': '5',\n            '೬': '6',\n            '೭': '7',\n            '೮': '8',\n            '೯': '9',\n            '೦': '0',\n        };\n\n    var kn = moment.defineLocale('kn', {\n        months: 'ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್'.split(\n            '_'\n        ),\n        monthsShort: 'ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ'.split(\n            '_'\n        ),\n        weekdaysShort: 'ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ'.split('_'),\n        weekdaysMin: 'ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ'.split('_'),\n        longDateFormat: {\n            LT: 'A h:mm',\n            LTS: 'A h:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, A h:mm',\n            LLLL: 'dddd, D MMMM YYYY, A h:mm',\n        },\n        calendar: {\n            sameDay: '[ಇಂದು] LT',\n            nextDay: '[ನಾಳೆ] LT',\n            nextWeek: 'dddd, LT',\n            lastDay: '[ನಿನ್ನೆ] LT',\n            lastWeek: '[ಕೊನೆಯ] dddd, LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s ನಂತರ',\n            past: '%s ಹಿಂದೆ',\n            s: 'ಕೆಲವು ಕ್ಷಣಗಳು',\n            ss: '%d ಸೆಕೆಂಡುಗಳು',\n            m: 'ಒಂದು ನಿಮಿಷ',\n            mm: '%d ನಿಮಿಷ',\n            h: 'ಒಂದು ಗಂಟೆ',\n            hh: '%d ಗಂಟೆ',\n            d: 'ಒಂದು ದಿನ',\n            dd: '%d ದಿನ',\n            M: 'ಒಂದು ತಿಂಗಳು',\n            MM: '%d ತಿಂಗಳು',\n            y: 'ಒಂದು ವರ್ಷ',\n            yy: '%d ವರ್ಷ',\n        },\n        preparse: function (string) {\n            return string.replace(/[೧೨೩೪೫೬೭೮೯೦]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        meridiemParse: /ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'ರಾತ್ರಿ') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'ಬೆಳಿಗ್ಗೆ') {\n                return hour;\n            } else if (meridiem === 'ಮಧ್ಯಾಹ್ನ') {\n                return hour >= 10 ? hour : hour + 12;\n            } else if (meridiem === 'ಸಂಜೆ') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'ರಾತ್ರಿ';\n            } else if (hour < 10) {\n                return 'ಬೆಳಿಗ್ಗೆ';\n            } else if (hour < 17) {\n                return 'ಮಧ್ಯಾಹ್ನ';\n            } else if (hour < 20) {\n                return 'ಸಂಜೆ';\n            } else {\n                return 'ರಾತ್ರಿ';\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(ನೇ)/,\n        ordinal: function (number) {\n            return number + 'ನೇ';\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return kn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Korean [ko]\n//! author : Kyungwook, Park : https://github.com/kyungw00k\n//! author : Jeeeyul Lee <jeeeyul@gmail.com>\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var ko = moment.defineLocale('ko', {\n        months: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),\n        monthsShort: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split(\n            '_'\n        ),\n        weekdays: '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'),\n        weekdaysShort: '일_월_화_수_목_금_토'.split('_'),\n        weekdaysMin: '일_월_화_수_목_금_토'.split('_'),\n        longDateFormat: {\n            LT: 'A h:mm',\n            LTS: 'A h:mm:ss',\n            L: 'YYYY.MM.DD.',\n            LL: 'YYYY년 MMMM D일',\n            LLL: 'YYYY년 MMMM D일 A h:mm',\n            LLLL: 'YYYY년 MMMM D일 dddd A h:mm',\n            l: 'YYYY.MM.DD.',\n            ll: 'YYYY년 MMMM D일',\n            lll: 'YYYY년 MMMM D일 A h:mm',\n            llll: 'YYYY년 MMMM D일 dddd A h:mm',\n        },\n        calendar: {\n            sameDay: '오늘 LT',\n            nextDay: '내일 LT',\n            nextWeek: 'dddd LT',\n            lastDay: '어제 LT',\n            lastWeek: '지난주 dddd LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s 후',\n            past: '%s 전',\n            s: '몇 초',\n            ss: '%d초',\n            m: '1분',\n            mm: '%d분',\n            h: '한 시간',\n            hh: '%d시간',\n            d: '하루',\n            dd: '%d일',\n            M: '한 달',\n            MM: '%d달',\n            y: '일 년',\n            yy: '%d년',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(일|월|주)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'DDD':\n                    return number + '일';\n                case 'M':\n                    return number + '월';\n                case 'w':\n                case 'W':\n                    return number + '주';\n                default:\n                    return number;\n            }\n        },\n        meridiemParse: /오전|오후/,\n        isPM: function (token) {\n            return token === '오후';\n        },\n        meridiem: function (hour, minute, isUpper) {\n            return hour < 12 ? '오전' : '오후';\n        },\n    });\n\n    return ko;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kurdish [ku]\n//! author : Shahram Mebashar : https://github.com/ShahramMebashar\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '١',\n            2: '٢',\n            3: '٣',\n            4: '٤',\n            5: '٥',\n            6: '٦',\n            7: '٧',\n            8: '٨',\n            9: '٩',\n            0: '٠',\n        },\n        numberMap = {\n            '١': '1',\n            '٢': '2',\n            '٣': '3',\n            '٤': '4',\n            '٥': '5',\n            '٦': '6',\n            '٧': '7',\n            '٨': '8',\n            '٩': '9',\n            '٠': '0',\n        },\n        months = [\n            'کانونی دووەم',\n            'شوبات',\n            'ئازار',\n            'نیسان',\n            'ئایار',\n            'حوزەیران',\n            'تەمموز',\n            'ئاب',\n            'ئەیلوول',\n            'تشرینی یەكەم',\n            'تشرینی دووەم',\n            'كانونی یەکەم',\n        ];\n\n    var ku = moment.defineLocale('ku', {\n        months: months,\n        monthsShort: months,\n        weekdays: 'یه‌كشه‌ممه‌_دووشه‌ممه‌_سێشه‌ممه‌_چوارشه‌ممه‌_پێنجشه‌ممه‌_هه‌ینی_شه‌ممه‌'.split(\n            '_'\n        ),\n        weekdaysShort: 'یه‌كشه‌م_دووشه‌م_سێشه‌م_چوارشه‌م_پێنجشه‌م_هه‌ینی_شه‌ممه‌'.split(\n            '_'\n        ),\n        weekdaysMin: 'ی_د_س_چ_پ_ه_ش'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        meridiemParse: /ئێواره‌|به‌یانی/,\n        isPM: function (input) {\n            return /ئێواره‌/.test(input);\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'به‌یانی';\n            } else {\n                return 'ئێواره‌';\n            }\n        },\n        calendar: {\n            sameDay: '[ئه‌مرۆ كاتژمێر] LT',\n            nextDay: '[به‌یانی كاتژمێر] LT',\n            nextWeek: 'dddd [كاتژمێر] LT',\n            lastDay: '[دوێنێ كاتژمێر] LT',\n            lastWeek: 'dddd [كاتژمێر] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'له‌ %s',\n            past: '%s',\n            s: 'چه‌ند چركه‌یه‌ك',\n            ss: 'چركه‌ %d',\n            m: 'یه‌ك خوله‌ك',\n            mm: '%d خوله‌ك',\n            h: 'یه‌ك كاتژمێر',\n            hh: '%d كاتژمێر',\n            d: 'یه‌ك ڕۆژ',\n            dd: '%d ڕۆژ',\n            M: 'یه‌ك مانگ',\n            MM: '%d مانگ',\n            y: 'یه‌ك ساڵ',\n            yy: '%d ساڵ',\n        },\n        preparse: function (string) {\n            return string\n                .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n                    return numberMap[match];\n                })\n                .replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string\n                .replace(/\\d/g, function (match) {\n                    return symbolMap[match];\n                })\n                .replace(/,/g, '،');\n        },\n        week: {\n            dow: 6, // Saturday is the first day of the week.\n            doy: 12, // The week that contains Jan 12th is the first week of the year.\n        },\n    });\n\n    return ku;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kyrgyz [ky]\n//! author : Chyngyz Arystan uulu : https://github.com/chyngyz\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var suffixes = {\n        0: '-чү',\n        1: '-чи',\n        2: '-чи',\n        3: '-чү',\n        4: '-чү',\n        5: '-чи',\n        6: '-чы',\n        7: '-чи',\n        8: '-чи',\n        9: '-чу',\n        10: '-чу',\n        20: '-чы',\n        30: '-чу',\n        40: '-чы',\n        50: '-чү',\n        60: '-чы',\n        70: '-чи',\n        80: '-чи',\n        90: '-чу',\n        100: '-чү',\n    };\n\n    var ky = moment.defineLocale('ky', {\n        months: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(\n            '_'\n        ),\n        monthsShort: 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split(\n            '_'\n        ),\n        weekdays: 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split(\n            '_'\n        ),\n        weekdaysShort: 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'),\n        weekdaysMin: 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Бүгүн саат] LT',\n            nextDay: '[Эртең саат] LT',\n            nextWeek: 'dddd [саат] LT',\n            lastDay: '[Кечээ саат] LT',\n            lastWeek: '[Өткөн аптанын] dddd [күнү] [саат] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s ичинде',\n            past: '%s мурун',\n            s: 'бирнече секунд',\n            ss: '%d секунд',\n            m: 'бир мүнөт',\n            mm: '%d мүнөт',\n            h: 'бир саат',\n            hh: '%d саат',\n            d: 'бир күн',\n            dd: '%d күн',\n            M: 'бир ай',\n            MM: '%d ай',\n            y: 'бир жыл',\n            yy: '%d жыл',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(чи|чы|чү|чу)/,\n        ordinal: function (number) {\n            var a = number % 10,\n                b = number >= 100 ? 100 : null;\n            return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return ky;\n\n})));\n","//! moment.js locale configuration\n//! locale : Luxembourgish [lb]\n//! author : mweimerskirch : https://github.com/mweimerskirch\n//! author : David Raison : https://github.com/kwisatz\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var format = {\n            m: ['eng Minutt', 'enger Minutt'],\n            h: ['eng Stonn', 'enger Stonn'],\n            d: ['een Dag', 'engem Dag'],\n            M: ['ee Mount', 'engem Mount'],\n            y: ['ee Joer', 'engem Joer'],\n        };\n        return withoutSuffix ? format[key][0] : format[key][1];\n    }\n    function processFutureTime(string) {\n        var number = string.substr(0, string.indexOf(' '));\n        if (eifelerRegelAppliesToNumber(number)) {\n            return 'a ' + string;\n        }\n        return 'an ' + string;\n    }\n    function processPastTime(string) {\n        var number = string.substr(0, string.indexOf(' '));\n        if (eifelerRegelAppliesToNumber(number)) {\n            return 'viru ' + string;\n        }\n        return 'virun ' + string;\n    }\n    /**\n     * Returns true if the word before the given number loses the '-n' ending.\n     * e.g. 'an 10 Deeg' but 'a 5 Deeg'\n     *\n     * @param number {integer}\n     * @returns {boolean}\n     */\n    function eifelerRegelAppliesToNumber(number) {\n        number = parseInt(number, 10);\n        if (isNaN(number)) {\n            return false;\n        }\n        if (number < 0) {\n            // Negative Number --> always true\n            return true;\n        } else if (number < 10) {\n            // Only 1 digit\n            if (4 <= number && number <= 7) {\n                return true;\n            }\n            return false;\n        } else if (number < 100) {\n            // 2 digits\n            var lastDigit = number % 10,\n                firstDigit = number / 10;\n            if (lastDigit === 0) {\n                return eifelerRegelAppliesToNumber(firstDigit);\n            }\n            return eifelerRegelAppliesToNumber(lastDigit);\n        } else if (number < 10000) {\n            // 3 or 4 digits --> recursively check first digit\n            while (number >= 10) {\n                number = number / 10;\n            }\n            return eifelerRegelAppliesToNumber(number);\n        } else {\n            // Anything larger than 4 digits: recursively check first n-3 digits\n            number = number / 1000;\n            return eifelerRegelAppliesToNumber(number);\n        }\n    }\n\n    var lb = moment.defineLocale('lb', {\n        months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n            '_'\n        ),\n        monthsShort: 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split(\n            '_'\n        ),\n        weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'),\n        weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm [Auer]',\n            LTS: 'H:mm:ss [Auer]',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY H:mm [Auer]',\n            LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]',\n        },\n        calendar: {\n            sameDay: '[Haut um] LT',\n            sameElse: 'L',\n            nextDay: '[Muer um] LT',\n            nextWeek: 'dddd [um] LT',\n            lastDay: '[Gëschter um] LT',\n            lastWeek: function () {\n                // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule\n                switch (this.day()) {\n                    case 2:\n                    case 4:\n                        return '[Leschten] dddd [um] LT';\n                    default:\n                        return '[Leschte] dddd [um] LT';\n                }\n            },\n        },\n        relativeTime: {\n            future: processFutureTime,\n            past: processPastTime,\n            s: 'e puer Sekonnen',\n            ss: '%d Sekonnen',\n            m: processRelativeTime,\n            mm: '%d Minutten',\n            h: processRelativeTime,\n            hh: '%d Stonnen',\n            d: processRelativeTime,\n            dd: '%d Deeg',\n            M: processRelativeTime,\n            MM: '%d Méint',\n            y: processRelativeTime,\n            yy: '%d Joer',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return lb;\n\n})));\n","//! moment.js locale configuration\n//! locale : Lao [lo]\n//! author : Ryan Hart : https://github.com/ryanhart2\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var lo = moment.defineLocale('lo', {\n        months: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(\n            '_'\n        ),\n        monthsShort: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(\n            '_'\n        ),\n        weekdays: 'ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n        weekdaysShort: 'ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n        weekdaysMin: 'ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'ວັນdddd D MMMM YYYY HH:mm',\n        },\n        meridiemParse: /ຕອນເຊົ້າ|ຕອນແລງ/,\n        isPM: function (input) {\n            return input === 'ຕອນແລງ';\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ຕອນເຊົ້າ';\n            } else {\n                return 'ຕອນແລງ';\n            }\n        },\n        calendar: {\n            sameDay: '[ມື້ນີ້ເວລາ] LT',\n            nextDay: '[ມື້ອື່ນເວລາ] LT',\n            nextWeek: '[ວັນ]dddd[ໜ້າເວລາ] LT',\n            lastDay: '[ມື້ວານນີ້ເວລາ] LT',\n            lastWeek: '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'ອີກ %s',\n            past: '%sຜ່ານມາ',\n            s: 'ບໍ່ເທົ່າໃດວິນາທີ',\n            ss: '%d ວິນາທີ',\n            m: '1 ນາທີ',\n            mm: '%d ນາທີ',\n            h: '1 ຊົ່ວໂມງ',\n            hh: '%d ຊົ່ວໂມງ',\n            d: '1 ມື້',\n            dd: '%d ມື້',\n            M: '1 ເດືອນ',\n            MM: '%d ເດືອນ',\n            y: '1 ປີ',\n            yy: '%d ປີ',\n        },\n        dayOfMonthOrdinalParse: /(ທີ່)\\d{1,2}/,\n        ordinal: function (number) {\n            return 'ທີ່' + number;\n        },\n    });\n\n    return lo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Lithuanian [lt]\n//! author : Mindaugas Mozūras : https://github.com/mmozuras\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var units = {\n        ss: 'sekundė_sekundžių_sekundes',\n        m: 'minutė_minutės_minutę',\n        mm: 'minutės_minučių_minutes',\n        h: 'valanda_valandos_valandą',\n        hh: 'valandos_valandų_valandas',\n        d: 'diena_dienos_dieną',\n        dd: 'dienos_dienų_dienas',\n        M: 'mėnuo_mėnesio_mėnesį',\n        MM: 'mėnesiai_mėnesių_mėnesius',\n        y: 'metai_metų_metus',\n        yy: 'metai_metų_metus',\n    };\n    function translateSeconds(number, withoutSuffix, key, isFuture) {\n        if (withoutSuffix) {\n            return 'kelios sekundės';\n        } else {\n            return isFuture ? 'kelių sekundžių' : 'kelias sekundes';\n        }\n    }\n    function translateSingular(number, withoutSuffix, key, isFuture) {\n        return withoutSuffix\n            ? forms(key)[0]\n            : isFuture\n            ? forms(key)[1]\n            : forms(key)[2];\n    }\n    function special(number) {\n        return number % 10 === 0 || (number > 10 && number < 20);\n    }\n    function forms(key) {\n        return units[key].split('_');\n    }\n    function translate(number, withoutSuffix, key, isFuture) {\n        var result = number + ' ';\n        if (number === 1) {\n            return (\n                result + translateSingular(number, withoutSuffix, key[0], isFuture)\n            );\n        } else if (withoutSuffix) {\n            return result + (special(number) ? forms(key)[1] : forms(key)[0]);\n        } else {\n            if (isFuture) {\n                return result + forms(key)[1];\n            } else {\n                return result + (special(number) ? forms(key)[1] : forms(key)[2]);\n            }\n        }\n    }\n    var lt = moment.defineLocale('lt', {\n        months: {\n            format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split(\n                '_'\n            ),\n            standalone: 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split(\n                '_'\n            ),\n            isFormat: /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?|MMMM?(\\[[^\\[\\]]*\\]|\\s)+D[oD]?/,\n        },\n        monthsShort: 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'),\n        weekdays: {\n            format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split(\n                '_'\n            ),\n            standalone: 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split(\n                '_'\n            ),\n            isFormat: /dddd HH:mm/,\n        },\n        weekdaysShort: 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'),\n        weekdaysMin: 'S_P_A_T_K_Pn_Š'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'YYYY-MM-DD',\n            LL: 'YYYY [m.] MMMM D [d.]',\n            LLL: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n            LLLL: 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',\n            l: 'YYYY-MM-DD',\n            ll: 'YYYY [m.] MMMM D [d.]',\n            lll: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n            llll: 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]',\n        },\n        calendar: {\n            sameDay: '[Šiandien] LT',\n            nextDay: '[Rytoj] LT',\n            nextWeek: 'dddd LT',\n            lastDay: '[Vakar] LT',\n            lastWeek: '[Praėjusį] dddd LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'po %s',\n            past: 'prieš %s',\n            s: translateSeconds,\n            ss: translate,\n            m: translateSingular,\n            mm: translate,\n            h: translateSingular,\n            hh: translate,\n            d: translateSingular,\n            dd: translate,\n            M: translateSingular,\n            MM: translate,\n            y: translateSingular,\n            yy: translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-oji/,\n        ordinal: function (number) {\n            return number + '-oji';\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return lt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Latvian [lv]\n//! author : Kristaps Karlsons : https://github.com/skakri\n//! author : Jānis Elmeris : https://github.com/JanisE\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var units = {\n        ss: 'sekundes_sekundēm_sekunde_sekundes'.split('_'),\n        m: 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n        mm: 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n        h: 'stundas_stundām_stunda_stundas'.split('_'),\n        hh: 'stundas_stundām_stunda_stundas'.split('_'),\n        d: 'dienas_dienām_diena_dienas'.split('_'),\n        dd: 'dienas_dienām_diena_dienas'.split('_'),\n        M: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n        MM: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n        y: 'gada_gadiem_gads_gadi'.split('_'),\n        yy: 'gada_gadiem_gads_gadi'.split('_'),\n    };\n    /**\n     * @param withoutSuffix boolean true = a length of time; false = before/after a period of time.\n     */\n    function format(forms, number, withoutSuffix) {\n        if (withoutSuffix) {\n            // E.g. \"21 minūte\", \"3 minūtes\".\n            return number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3];\n        } else {\n            // E.g. \"21 minūtes\" as in \"pēc 21 minūtes\".\n            // E.g. \"3 minūtēm\" as in \"pēc 3 minūtēm\".\n            return number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1];\n        }\n    }\n    function relativeTimeWithPlural(number, withoutSuffix, key) {\n        return number + ' ' + format(units[key], number, withoutSuffix);\n    }\n    function relativeTimeWithSingular(number, withoutSuffix, key) {\n        return format(units[key], number, withoutSuffix);\n    }\n    function relativeSeconds(number, withoutSuffix) {\n        return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm';\n    }\n\n    var lv = moment.defineLocale('lv', {\n        months: 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split(\n            '_'\n        ),\n        monthsShort: 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'),\n        weekdays: 'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split(\n            '_'\n        ),\n        weekdaysShort: 'Sv_P_O_T_C_Pk_S'.split('_'),\n        weekdaysMin: 'Sv_P_O_T_C_Pk_S'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY.',\n            LL: 'YYYY. [gada] D. MMMM',\n            LLL: 'YYYY. [gada] D. MMMM, HH:mm',\n            LLLL: 'YYYY. [gada] D. MMMM, dddd, HH:mm',\n        },\n        calendar: {\n            sameDay: '[Šodien pulksten] LT',\n            nextDay: '[Rīt pulksten] LT',\n            nextWeek: 'dddd [pulksten] LT',\n            lastDay: '[Vakar pulksten] LT',\n            lastWeek: '[Pagājušā] dddd [pulksten] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'pēc %s',\n            past: 'pirms %s',\n            s: relativeSeconds,\n            ss: relativeTimeWithPlural,\n            m: relativeTimeWithSingular,\n            mm: relativeTimeWithPlural,\n            h: relativeTimeWithSingular,\n            hh: relativeTimeWithPlural,\n            d: relativeTimeWithSingular,\n            dd: relativeTimeWithPlural,\n            M: relativeTimeWithSingular,\n            MM: relativeTimeWithPlural,\n            y: relativeTimeWithSingular,\n            yy: relativeTimeWithPlural,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return lv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Montenegrin [me]\n//! author : Miodrag Nikač <miodrag@restartit.me> : https://github.com/miodragnikac\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var translator = {\n        words: {\n            //Different grammatical cases\n            ss: ['sekund', 'sekunda', 'sekundi'],\n            m: ['jedan minut', 'jednog minuta'],\n            mm: ['minut', 'minuta', 'minuta'],\n            h: ['jedan sat', 'jednog sata'],\n            hh: ['sat', 'sata', 'sati'],\n            dd: ['dan', 'dana', 'dana'],\n            MM: ['mjesec', 'mjeseca', 'mjeseci'],\n            yy: ['godina', 'godine', 'godina'],\n        },\n        correctGrammaticalCase: function (number, wordKey) {\n            return number === 1\n                ? wordKey[0]\n                : number >= 2 && number <= 4\n                ? wordKey[1]\n                : wordKey[2];\n        },\n        translate: function (number, withoutSuffix, key) {\n            var wordKey = translator.words[key];\n            if (key.length === 1) {\n                return withoutSuffix ? wordKey[0] : wordKey[1];\n            } else {\n                return (\n                    number +\n                    ' ' +\n                    translator.correctGrammaticalCase(number, wordKey)\n                );\n            }\n        },\n    };\n\n    var me = moment.defineLocale('me', {\n        months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(\n            '_'\n        ),\n        monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n            '_'\n        ),\n        weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY H:mm',\n            LLLL: 'dddd, D. MMMM YYYY H:mm',\n        },\n        calendar: {\n            sameDay: '[danas u] LT',\n            nextDay: '[sjutra u] LT',\n\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[u] [nedjelju] [u] LT';\n                    case 3:\n                        return '[u] [srijedu] [u] LT';\n                    case 6:\n                        return '[u] [subotu] [u] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[u] dddd [u] LT';\n                }\n            },\n            lastDay: '[juče u] LT',\n            lastWeek: function () {\n                var lastWeekDays = [\n                    '[prošle] [nedjelje] [u] LT',\n                    '[prošlog] [ponedjeljka] [u] LT',\n                    '[prošlog] [utorka] [u] LT',\n                    '[prošle] [srijede] [u] LT',\n                    '[prošlog] [četvrtka] [u] LT',\n                    '[prošlog] [petka] [u] LT',\n                    '[prošle] [subote] [u] LT',\n                ];\n                return lastWeekDays[this.day()];\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'za %s',\n            past: 'prije %s',\n            s: 'nekoliko sekundi',\n            ss: translator.translate,\n            m: translator.translate,\n            mm: translator.translate,\n            h: translator.translate,\n            hh: translator.translate,\n            d: 'dan',\n            dd: translator.translate,\n            M: 'mjesec',\n            MM: translator.translate,\n            y: 'godinu',\n            yy: translator.translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return me;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maori [mi]\n//! author : John Corrigan <robbiecloset@gmail.com> : https://github.com/johnideal\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var mi = moment.defineLocale('mi', {\n        months: 'Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea'.split(\n            '_'\n        ),\n        monthsShort: 'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split(\n            '_'\n        ),\n        monthsRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n        monthsStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n        monthsShortRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n        monthsShortStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,2}/i,\n        weekdays: 'Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei'.split('_'),\n        weekdaysShort: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n        weekdaysMin: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY [i] HH:mm',\n            LLLL: 'dddd, D MMMM YYYY [i] HH:mm',\n        },\n        calendar: {\n            sameDay: '[i teie mahana, i] LT',\n            nextDay: '[apopo i] LT',\n            nextWeek: 'dddd [i] LT',\n            lastDay: '[inanahi i] LT',\n            lastWeek: 'dddd [whakamutunga i] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'i roto i %s',\n            past: '%s i mua',\n            s: 'te hēkona ruarua',\n            ss: '%d hēkona',\n            m: 'he meneti',\n            mm: '%d meneti',\n            h: 'te haora',\n            hh: '%d haora',\n            d: 'he ra',\n            dd: '%d ra',\n            M: 'he marama',\n            MM: '%d marama',\n            y: 'he tau',\n            yy: '%d tau',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return mi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Macedonian [mk]\n//! author : Borislav Mickov : https://github.com/B0k0\n//! author : Sashko Todorov : https://github.com/bkyceh\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var mk = moment.defineLocale('mk', {\n        months: 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split(\n            '_'\n        ),\n        monthsShort: 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'),\n        weekdays: 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split(\n            '_'\n        ),\n        weekdaysShort: 'нед_пон_вто_сре_чет_пет_саб'.split('_'),\n        weekdaysMin: 'нe_пo_вт_ср_че_пе_сa'.split('_'),\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'D.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY H:mm',\n            LLLL: 'dddd, D MMMM YYYY H:mm',\n        },\n        calendar: {\n            sameDay: '[Денес во] LT',\n            nextDay: '[Утре во] LT',\n            nextWeek: '[Во] dddd [во] LT',\n            lastDay: '[Вчера во] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                    case 3:\n                    case 6:\n                        return '[Изминатата] dddd [во] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[Изминатиот] dddd [во] LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'за %s',\n            past: 'пред %s',\n            s: 'неколку секунди',\n            ss: '%d секунди',\n            m: 'една минута',\n            mm: '%d минути',\n            h: 'еден час',\n            hh: '%d часа',\n            d: 'еден ден',\n            dd: '%d дена',\n            M: 'еден месец',\n            MM: '%d месеци',\n            y: 'една година',\n            yy: '%d години',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n        ordinal: function (number) {\n            var lastDigit = number % 10,\n                last2Digits = number % 100;\n            if (number === 0) {\n                return number + '-ев';\n            } else if (last2Digits === 0) {\n                return number + '-ен';\n            } else if (last2Digits > 10 && last2Digits < 20) {\n                return number + '-ти';\n            } else if (lastDigit === 1) {\n                return number + '-ви';\n            } else if (lastDigit === 2) {\n                return number + '-ри';\n            } else if (lastDigit === 7 || lastDigit === 8) {\n                return number + '-ми';\n            } else {\n                return number + '-ти';\n            }\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return mk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malayalam [ml]\n//! author : Floyd Pink : https://github.com/floydpink\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var ml = moment.defineLocale('ml', {\n        months: 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split(\n            '_'\n        ),\n        monthsShort: 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split(\n            '_'\n        ),\n        weekdaysShort: 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'),\n        weekdaysMin: 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'),\n        longDateFormat: {\n            LT: 'A h:mm -നു',\n            LTS: 'A h:mm:ss -നു',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, A h:mm -നു',\n            LLLL: 'dddd, D MMMM YYYY, A h:mm -നു',\n        },\n        calendar: {\n            sameDay: '[ഇന്ന്] LT',\n            nextDay: '[നാളെ] LT',\n            nextWeek: 'dddd, LT',\n            lastDay: '[ഇന്നലെ] LT',\n            lastWeek: '[കഴിഞ്ഞ] dddd, LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s കഴിഞ്ഞ്',\n            past: '%s മുൻപ്',\n            s: 'അൽപ നിമിഷങ്ങൾ',\n            ss: '%d സെക്കൻഡ്',\n            m: 'ഒരു മിനിറ്റ്',\n            mm: '%d മിനിറ്റ്',\n            h: 'ഒരു മണിക്കൂർ',\n            hh: '%d മണിക്കൂർ',\n            d: 'ഒരു ദിവസം',\n            dd: '%d ദിവസം',\n            M: 'ഒരു മാസം',\n            MM: '%d മാസം',\n            y: 'ഒരു വർഷം',\n            yy: '%d വർഷം',\n        },\n        meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (\n                (meridiem === 'രാത്രി' && hour >= 4) ||\n                meridiem === 'ഉച്ച കഴിഞ്ഞ്' ||\n                meridiem === 'വൈകുന്നേരം'\n            ) {\n                return hour + 12;\n            } else {\n                return hour;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'രാത്രി';\n            } else if (hour < 12) {\n                return 'രാവിലെ';\n            } else if (hour < 17) {\n                return 'ഉച്ച കഴിഞ്ഞ്';\n            } else if (hour < 20) {\n                return 'വൈകുന്നേരം';\n            } else {\n                return 'രാത്രി';\n            }\n        },\n    });\n\n    return ml;\n\n})));\n","//! moment.js locale configuration\n//! locale : Mongolian [mn]\n//! author : Javkhlantugs Nyamdorj : https://github.com/javkhaanj7\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function translate(number, withoutSuffix, key, isFuture) {\n        switch (key) {\n            case 's':\n                return withoutSuffix ? 'хэдхэн секунд' : 'хэдхэн секундын';\n            case 'ss':\n                return number + (withoutSuffix ? ' секунд' : ' секундын');\n            case 'm':\n            case 'mm':\n                return number + (withoutSuffix ? ' минут' : ' минутын');\n            case 'h':\n            case 'hh':\n                return number + (withoutSuffix ? ' цаг' : ' цагийн');\n            case 'd':\n            case 'dd':\n                return number + (withoutSuffix ? ' өдөр' : ' өдрийн');\n            case 'M':\n            case 'MM':\n                return number + (withoutSuffix ? ' сар' : ' сарын');\n            case 'y':\n            case 'yy':\n                return number + (withoutSuffix ? ' жил' : ' жилийн');\n            default:\n                return number;\n        }\n    }\n\n    var mn = moment.defineLocale('mn', {\n        months: 'Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар'.split(\n            '_'\n        ),\n        monthsShort: '1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба'.split('_'),\n        weekdaysShort: 'Ням_Дав_Мяг_Лха_Пүр_Баа_Бям'.split('_'),\n        weekdaysMin: 'Ня_Да_Мя_Лх_Пү_Ба_Бя'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'YYYY-MM-DD',\n            LL: 'YYYY оны MMMMын D',\n            LLL: 'YYYY оны MMMMын D HH:mm',\n            LLLL: 'dddd, YYYY оны MMMMын D HH:mm',\n        },\n        meridiemParse: /ҮӨ|ҮХ/i,\n        isPM: function (input) {\n            return input === 'ҮХ';\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ҮӨ';\n            } else {\n                return 'ҮХ';\n            }\n        },\n        calendar: {\n            sameDay: '[Өнөөдөр] LT',\n            nextDay: '[Маргааш] LT',\n            nextWeek: '[Ирэх] dddd LT',\n            lastDay: '[Өчигдөр] LT',\n            lastWeek: '[Өнгөрсөн] dddd LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s дараа',\n            past: '%s өмнө',\n            s: translate,\n            ss: translate,\n            m: translate,\n            mm: translate,\n            h: translate,\n            hh: translate,\n            d: translate,\n            dd: translate,\n            M: translate,\n            MM: translate,\n            y: translate,\n            yy: translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2} өдөр/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'DDD':\n                    return number + ' өдөр';\n                default:\n                    return number;\n            }\n        },\n    });\n\n    return mn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Marathi [mr]\n//! author : Harshad Kale : https://github.com/kalehv\n//! author : Vivek Athalye : https://github.com/vnathalye\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '१',\n            2: '२',\n            3: '३',\n            4: '४',\n            5: '५',\n            6: '६',\n            7: '७',\n            8: '८',\n            9: '९',\n            0: '०',\n        },\n        numberMap = {\n            '१': '1',\n            '२': '2',\n            '३': '3',\n            '४': '4',\n            '५': '5',\n            '६': '6',\n            '७': '7',\n            '८': '8',\n            '९': '9',\n            '०': '0',\n        };\n\n    function relativeTimeMr(number, withoutSuffix, string, isFuture) {\n        var output = '';\n        if (withoutSuffix) {\n            switch (string) {\n                case 's':\n                    output = 'काही सेकंद';\n                    break;\n                case 'ss':\n                    output = '%d सेकंद';\n                    break;\n                case 'm':\n                    output = 'एक मिनिट';\n                    break;\n                case 'mm':\n                    output = '%d मिनिटे';\n                    break;\n                case 'h':\n                    output = 'एक तास';\n                    break;\n                case 'hh':\n                    output = '%d तास';\n                    break;\n                case 'd':\n                    output = 'एक दिवस';\n                    break;\n                case 'dd':\n                    output = '%d दिवस';\n                    break;\n                case 'M':\n                    output = 'एक महिना';\n                    break;\n                case 'MM':\n                    output = '%d महिने';\n                    break;\n                case 'y':\n                    output = 'एक वर्ष';\n                    break;\n                case 'yy':\n                    output = '%d वर्षे';\n                    break;\n            }\n        } else {\n            switch (string) {\n                case 's':\n                    output = 'काही सेकंदां';\n                    break;\n                case 'ss':\n                    output = '%d सेकंदां';\n                    break;\n                case 'm':\n                    output = 'एका मिनिटा';\n                    break;\n                case 'mm':\n                    output = '%d मिनिटां';\n                    break;\n                case 'h':\n                    output = 'एका तासा';\n                    break;\n                case 'hh':\n                    output = '%d तासां';\n                    break;\n                case 'd':\n                    output = 'एका दिवसा';\n                    break;\n                case 'dd':\n                    output = '%d दिवसां';\n                    break;\n                case 'M':\n                    output = 'एका महिन्या';\n                    break;\n                case 'MM':\n                    output = '%d महिन्यां';\n                    break;\n                case 'y':\n                    output = 'एका वर्षा';\n                    break;\n                case 'yy':\n                    output = '%d वर्षां';\n                    break;\n            }\n        }\n        return output.replace(/%d/i, number);\n    }\n\n    var mr = moment.defineLocale('mr', {\n        months: 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(\n            '_'\n        ),\n        monthsShort: 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n        weekdaysShort: 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'),\n        weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),\n        longDateFormat: {\n            LT: 'A h:mm वाजता',\n            LTS: 'A h:mm:ss वाजता',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, A h:mm वाजता',\n            LLLL: 'dddd, D MMMM YYYY, A h:mm वाजता',\n        },\n        calendar: {\n            sameDay: '[आज] LT',\n            nextDay: '[उद्या] LT',\n            nextWeek: 'dddd, LT',\n            lastDay: '[काल] LT',\n            lastWeek: '[मागील] dddd, LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%sमध्ये',\n            past: '%sपूर्वी',\n            s: relativeTimeMr,\n            ss: relativeTimeMr,\n            m: relativeTimeMr,\n            mm: relativeTimeMr,\n            h: relativeTimeMr,\n            hh: relativeTimeMr,\n            d: relativeTimeMr,\n            dd: relativeTimeMr,\n            M: relativeTimeMr,\n            MM: relativeTimeMr,\n            y: relativeTimeMr,\n            yy: relativeTimeMr,\n        },\n        preparse: function (string) {\n            return string.replace(/[१२३४५६७८९०]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        meridiemParse: /पहाटे|सकाळी|दुपारी|सायंकाळी|रात्री/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'पहाटे' || meridiem === 'सकाळी') {\n                return hour;\n            } else if (\n                meridiem === 'दुपारी' ||\n                meridiem === 'सायंकाळी' ||\n                meridiem === 'रात्री'\n            ) {\n                return hour >= 12 ? hour : hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour >= 0 && hour < 6) {\n                return 'पहाटे';\n            } else if (hour < 12) {\n                return 'सकाळी';\n            } else if (hour < 17) {\n                return 'दुपारी';\n            } else if (hour < 20) {\n                return 'सायंकाळी';\n            } else {\n                return 'रात्री';\n            }\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return mr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malay [ms]\n//! author : Weldan Jamili : https://github.com/weldan\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var ms = moment.defineLocale('ms', {\n        months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n        weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n        weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n        weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n        longDateFormat: {\n            LT: 'HH.mm',\n            LTS: 'HH.mm.ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY [pukul] HH.mm',\n            LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n        },\n        meridiemParse: /pagi|tengahari|petang|malam/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'pagi') {\n                return hour;\n            } else if (meridiem === 'tengahari') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === 'petang' || meridiem === 'malam') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hours, minutes, isLower) {\n            if (hours < 11) {\n                return 'pagi';\n            } else if (hours < 15) {\n                return 'tengahari';\n            } else if (hours < 19) {\n                return 'petang';\n            } else {\n                return 'malam';\n            }\n        },\n        calendar: {\n            sameDay: '[Hari ini pukul] LT',\n            nextDay: '[Esok pukul] LT',\n            nextWeek: 'dddd [pukul] LT',\n            lastDay: '[Kelmarin pukul] LT',\n            lastWeek: 'dddd [lepas pukul] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'dalam %s',\n            past: '%s yang lepas',\n            s: 'beberapa saat',\n            ss: '%d saat',\n            m: 'seminit',\n            mm: '%d minit',\n            h: 'sejam',\n            hh: '%d jam',\n            d: 'sehari',\n            dd: '%d hari',\n            M: 'sebulan',\n            MM: '%d bulan',\n            y: 'setahun',\n            yy: '%d tahun',\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return ms;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malay [ms-my]\n//! note : DEPRECATED, the correct one is [ms]\n//! author : Weldan Jamili : https://github.com/weldan\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var msMy = moment.defineLocale('ms-my', {\n        months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n        weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n        weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n        weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n        longDateFormat: {\n            LT: 'HH.mm',\n            LTS: 'HH.mm.ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY [pukul] HH.mm',\n            LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n        },\n        meridiemParse: /pagi|tengahari|petang|malam/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'pagi') {\n                return hour;\n            } else if (meridiem === 'tengahari') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === 'petang' || meridiem === 'malam') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hours, minutes, isLower) {\n            if (hours < 11) {\n                return 'pagi';\n            } else if (hours < 15) {\n                return 'tengahari';\n            } else if (hours < 19) {\n                return 'petang';\n            } else {\n                return 'malam';\n            }\n        },\n        calendar: {\n            sameDay: '[Hari ini pukul] LT',\n            nextDay: '[Esok pukul] LT',\n            nextWeek: 'dddd [pukul] LT',\n            lastDay: '[Kelmarin pukul] LT',\n            lastWeek: 'dddd [lepas pukul] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'dalam %s',\n            past: '%s yang lepas',\n            s: 'beberapa saat',\n            ss: '%d saat',\n            m: 'seminit',\n            mm: '%d minit',\n            h: 'sejam',\n            hh: '%d jam',\n            d: 'sehari',\n            dd: '%d hari',\n            M: 'sebulan',\n            MM: '%d bulan',\n            y: 'setahun',\n            yy: '%d tahun',\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return msMy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maltese (Malta) [mt]\n//! author : Alessandro Maruccia : https://github.com/alesma\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var mt = moment.defineLocale('mt', {\n        months: 'Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ'.split('_'),\n        weekdays: 'Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt'.split(\n            '_'\n        ),\n        weekdaysShort: 'Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib'.split('_'),\n        weekdaysMin: 'Ħa_Tn_Tl_Er_Ħa_Ġi_Si'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Illum fil-]LT',\n            nextDay: '[Għada fil-]LT',\n            nextWeek: 'dddd [fil-]LT',\n            lastDay: '[Il-bieraħ fil-]LT',\n            lastWeek: 'dddd [li għadda] [fil-]LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'f’ %s',\n            past: '%s ilu',\n            s: 'ftit sekondi',\n            ss: '%d sekondi',\n            m: 'minuta',\n            mm: '%d minuti',\n            h: 'siegħa',\n            hh: '%d siegħat',\n            d: 'ġurnata',\n            dd: '%d ġranet',\n            M: 'xahar',\n            MM: '%d xhur',\n            y: 'sena',\n            yy: '%d sni',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return mt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Burmese [my]\n//! author : Squar team, mysquar.com\n//! author : David Rossellat : https://github.com/gholadr\n//! author : Tin Aung Lin : https://github.com/thanyawzinmin\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '၁',\n            2: '၂',\n            3: '၃',\n            4: '၄',\n            5: '၅',\n            6: '၆',\n            7: '၇',\n            8: '၈',\n            9: '၉',\n            0: '၀',\n        },\n        numberMap = {\n            '၁': '1',\n            '၂': '2',\n            '၃': '3',\n            '၄': '4',\n            '၅': '5',\n            '၆': '6',\n            '၇': '7',\n            '၈': '8',\n            '၉': '9',\n            '၀': '0',\n        };\n\n    var my = moment.defineLocale('my', {\n        months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split(\n            '_'\n        ),\n        monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'),\n        weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split(\n            '_'\n        ),\n        weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n        weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[ယနေ.] LT [မှာ]',\n            nextDay: '[မနက်ဖြန်] LT [မှာ]',\n            nextWeek: 'dddd LT [မှာ]',\n            lastDay: '[မနေ.က] LT [မှာ]',\n            lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'လာမည့် %s မှာ',\n            past: 'လွန်ခဲ့သော %s က',\n            s: 'စက္ကန်.အနည်းငယ်',\n            ss: '%d စက္ကန့်',\n            m: 'တစ်မိနစ်',\n            mm: '%d မိနစ်',\n            h: 'တစ်နာရီ',\n            hh: '%d နာရီ',\n            d: 'တစ်ရက်',\n            dd: '%d ရက်',\n            M: 'တစ်လ',\n            MM: '%d လ',\n            y: 'တစ်နှစ်',\n            yy: '%d နှစ်',\n        },\n        preparse: function (string) {\n            return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return my;\n\n})));\n","//! moment.js locale configuration\n//! locale : Norwegian Bokmål [nb]\n//! authors : Espen Hovlandsdal : https://github.com/rexxars\n//!           Sigurd Gartmann : https://github.com/sigurdga\n//!           Stephen Ramthun : https://github.com/stephenramthun\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var nb = moment.defineLocale('nb', {\n        months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(\n            '_'\n        ),\n        monthsShort: 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n        weekdaysShort: 'sø._ma._ti._on._to._fr._lø.'.split('_'),\n        weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY [kl.] HH:mm',\n            LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',\n        },\n        calendar: {\n            sameDay: '[i dag kl.] LT',\n            nextDay: '[i morgen kl.] LT',\n            nextWeek: 'dddd [kl.] LT',\n            lastDay: '[i går kl.] LT',\n            lastWeek: '[forrige] dddd [kl.] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'om %s',\n            past: '%s siden',\n            s: 'noen sekunder',\n            ss: '%d sekunder',\n            m: 'ett minutt',\n            mm: '%d minutter',\n            h: 'en time',\n            hh: '%d timer',\n            d: 'en dag',\n            dd: '%d dager',\n            w: 'en uke',\n            ww: '%d uker',\n            M: 'en måned',\n            MM: '%d måneder',\n            y: 'ett år',\n            yy: '%d år',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return nb;\n\n})));\n","//! moment.js locale configuration\n//! locale : Nepalese [ne]\n//! author : suvash : https://github.com/suvash\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '१',\n            2: '२',\n            3: '३',\n            4: '४',\n            5: '५',\n            6: '६',\n            7: '७',\n            8: '८',\n            9: '९',\n            0: '०',\n        },\n        numberMap = {\n            '१': '1',\n            '२': '2',\n            '३': '3',\n            '४': '4',\n            '५': '5',\n            '६': '6',\n            '७': '7',\n            '८': '8',\n            '९': '9',\n            '०': '0',\n        };\n\n    var ne = moment.defineLocale('ne', {\n        months: 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split(\n            '_'\n        ),\n        monthsShort: 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split(\n            '_'\n        ),\n        weekdaysShort: 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'),\n        weekdaysMin: 'आ._सो._मं._बु._बि._शु._श.'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'Aको h:mm बजे',\n            LTS: 'Aको h:mm:ss बजे',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, Aको h:mm बजे',\n            LLLL: 'dddd, D MMMM YYYY, Aको h:mm बजे',\n        },\n        preparse: function (string) {\n            return string.replace(/[१२३४५६७८९०]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        meridiemParse: /राति|बिहान|दिउँसो|साँझ/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'राति') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'बिहान') {\n                return hour;\n            } else if (meridiem === 'दिउँसो') {\n                return hour >= 10 ? hour : hour + 12;\n            } else if (meridiem === 'साँझ') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 3) {\n                return 'राति';\n            } else if (hour < 12) {\n                return 'बिहान';\n            } else if (hour < 16) {\n                return 'दिउँसो';\n            } else if (hour < 20) {\n                return 'साँझ';\n            } else {\n                return 'राति';\n            }\n        },\n        calendar: {\n            sameDay: '[आज] LT',\n            nextDay: '[भोलि] LT',\n            nextWeek: '[आउँदो] dddd[,] LT',\n            lastDay: '[हिजो] LT',\n            lastWeek: '[गएको] dddd[,] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%sमा',\n            past: '%s अगाडि',\n            s: 'केही क्षण',\n            ss: '%d सेकेण्ड',\n            m: 'एक मिनेट',\n            mm: '%d मिनेट',\n            h: 'एक घण्टा',\n            hh: '%d घण्टा',\n            d: 'एक दिन',\n            dd: '%d दिन',\n            M: 'एक महिना',\n            MM: '%d महिना',\n            y: 'एक बर्ष',\n            yy: '%d बर्ष',\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return ne;\n\n})));\n","//! moment.js locale configuration\n//! locale : Dutch [nl]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split(\n            '_'\n        ),\n        monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split(\n            '_'\n        ),\n        monthsParse = [\n            /^jan/i,\n            /^feb/i,\n            /^maart|mrt.?$/i,\n            /^apr/i,\n            /^mei$/i,\n            /^jun[i.]?$/i,\n            /^jul[i.]?$/i,\n            /^aug/i,\n            /^sep/i,\n            /^okt/i,\n            /^nov/i,\n            /^dec/i,\n        ],\n        monthsRegex = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\n    var nl = moment.defineLocale('nl', {\n        months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(\n            '_'\n        ),\n        monthsShort: function (m, format) {\n            if (!m) {\n                return monthsShortWithDots;\n            } else if (/-MMM-/.test(format)) {\n                return monthsShortWithoutDots[m.month()];\n            } else {\n                return monthsShortWithDots[m.month()];\n            }\n        },\n\n        monthsRegex: monthsRegex,\n        monthsShortRegex: monthsRegex,\n        monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n        monthsShortStrictRegex: /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: monthsParse,\n\n        weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split(\n            '_'\n        ),\n        weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n        weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD-MM-YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[vandaag om] LT',\n            nextDay: '[morgen om] LT',\n            nextWeek: 'dddd [om] LT',\n            lastDay: '[gisteren om] LT',\n            lastWeek: '[afgelopen] dddd [om] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'over %s',\n            past: '%s geleden',\n            s: 'een paar seconden',\n            ss: '%d seconden',\n            m: 'één minuut',\n            mm: '%d minuten',\n            h: 'één uur',\n            hh: '%d uur',\n            d: 'één dag',\n            dd: '%d dagen',\n            w: 'één week',\n            ww: '%d weken',\n            M: 'één maand',\n            MM: '%d maanden',\n            y: 'één jaar',\n            yy: '%d jaar',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n        ordinal: function (number) {\n            return (\n                number +\n                (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n            );\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return nl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Dutch (Belgium) [nl-be]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split(\n            '_'\n        ),\n        monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split(\n            '_'\n        ),\n        monthsParse = [\n            /^jan/i,\n            /^feb/i,\n            /^maart|mrt.?$/i,\n            /^apr/i,\n            /^mei$/i,\n            /^jun[i.]?$/i,\n            /^jul[i.]?$/i,\n            /^aug/i,\n            /^sep/i,\n            /^okt/i,\n            /^nov/i,\n            /^dec/i,\n        ],\n        monthsRegex = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\n    var nlBe = moment.defineLocale('nl-be', {\n        months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(\n            '_'\n        ),\n        monthsShort: function (m, format) {\n            if (!m) {\n                return monthsShortWithDots;\n            } else if (/-MMM-/.test(format)) {\n                return monthsShortWithoutDots[m.month()];\n            } else {\n                return monthsShortWithDots[m.month()];\n            }\n        },\n\n        monthsRegex: monthsRegex,\n        monthsShortRegex: monthsRegex,\n        monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n        monthsShortStrictRegex: /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: monthsParse,\n\n        weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split(\n            '_'\n        ),\n        weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n        weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[vandaag om] LT',\n            nextDay: '[morgen om] LT',\n            nextWeek: 'dddd [om] LT',\n            lastDay: '[gisteren om] LT',\n            lastWeek: '[afgelopen] dddd [om] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'over %s',\n            past: '%s geleden',\n            s: 'een paar seconden',\n            ss: '%d seconden',\n            m: 'één minuut',\n            mm: '%d minuten',\n            h: 'één uur',\n            hh: '%d uur',\n            d: 'één dag',\n            dd: '%d dagen',\n            M: 'één maand',\n            MM: '%d maanden',\n            y: 'één jaar',\n            yy: '%d jaar',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n        ordinal: function (number) {\n            return (\n                number +\n                (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n            );\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return nlBe;\n\n})));\n","//! moment.js locale configuration\n//! locale : Nynorsk [nn]\n//! authors : https://github.com/mechuwind\n//!           Stephen Ramthun : https://github.com/stephenramthun\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var nn = moment.defineLocale('nn', {\n        months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(\n            '_'\n        ),\n        monthsShort: 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'),\n        weekdaysShort: 'su._må._ty._on._to._fr._lau.'.split('_'),\n        weekdaysMin: 'su_må_ty_on_to_fr_la'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY [kl.] H:mm',\n            LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',\n        },\n        calendar: {\n            sameDay: '[I dag klokka] LT',\n            nextDay: '[I morgon klokka] LT',\n            nextWeek: 'dddd [klokka] LT',\n            lastDay: '[I går klokka] LT',\n            lastWeek: '[Føregåande] dddd [klokka] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'om %s',\n            past: '%s sidan',\n            s: 'nokre sekund',\n            ss: '%d sekund',\n            m: 'eit minutt',\n            mm: '%d minutt',\n            h: 'ein time',\n            hh: '%d timar',\n            d: 'ein dag',\n            dd: '%d dagar',\n            w: 'ei veke',\n            ww: '%d veker',\n            M: 'ein månad',\n            MM: '%d månader',\n            y: 'eit år',\n            yy: '%d år',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return nn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Occitan, lengadocian dialecte [oc-lnc]\n//! author : Quentin PAGÈS : https://github.com/Quenty31\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var ocLnc = moment.defineLocale('oc-lnc', {\n        months: {\n            standalone: 'genièr_febrièr_març_abril_mai_junh_julhet_agost_setembre_octòbre_novembre_decembre'.split(\n                '_'\n            ),\n            format: \"de genièr_de febrièr_de març_d'abril_de mai_de junh_de julhet_d'agost_de setembre_d'octòbre_de novembre_de decembre\".split(\n                '_'\n            ),\n            isFormat: /D[oD]?(\\s)+MMMM/,\n        },\n        monthsShort: 'gen._febr._març_abr._mai_junh_julh._ago._set._oct._nov._dec.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'dimenge_diluns_dimars_dimècres_dijòus_divendres_dissabte'.split(\n            '_'\n        ),\n        weekdaysShort: 'dg._dl._dm._dc._dj._dv._ds.'.split('_'),\n        weekdaysMin: 'dg_dl_dm_dc_dj_dv_ds'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM [de] YYYY',\n            ll: 'D MMM YYYY',\n            LLL: 'D MMMM [de] YYYY [a] H:mm',\n            lll: 'D MMM YYYY, H:mm',\n            LLLL: 'dddd D MMMM [de] YYYY [a] H:mm',\n            llll: 'ddd D MMM YYYY, H:mm',\n        },\n        calendar: {\n            sameDay: '[uèi a] LT',\n            nextDay: '[deman a] LT',\n            nextWeek: 'dddd [a] LT',\n            lastDay: '[ièr a] LT',\n            lastWeek: 'dddd [passat a] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: \"d'aquí %s\",\n            past: 'fa %s',\n            s: 'unas segondas',\n            ss: '%d segondas',\n            m: 'una minuta',\n            mm: '%d minutas',\n            h: 'una ora',\n            hh: '%d oras',\n            d: 'un jorn',\n            dd: '%d jorns',\n            M: 'un mes',\n            MM: '%d meses',\n            y: 'un an',\n            yy: '%d ans',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n        ordinal: function (number, period) {\n            var output =\n                number === 1\n                    ? 'r'\n                    : number === 2\n                    ? 'n'\n                    : number === 3\n                    ? 'r'\n                    : number === 4\n                    ? 't'\n                    : 'è';\n            if (period === 'w' || period === 'W') {\n                output = 'a';\n            }\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4,\n        },\n    });\n\n    return ocLnc;\n\n})));\n","//! moment.js locale configuration\n//! locale : Punjabi (India) [pa-in]\n//! author : Harpreet Singh : https://github.com/harpreetkhalsagtbit\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '੧',\n            2: '੨',\n            3: '੩',\n            4: '੪',\n            5: '੫',\n            6: '੬',\n            7: '੭',\n            8: '੮',\n            9: '੯',\n            0: '੦',\n        },\n        numberMap = {\n            '੧': '1',\n            '੨': '2',\n            '੩': '3',\n            '੪': '4',\n            '੫': '5',\n            '੬': '6',\n            '੭': '7',\n            '੮': '8',\n            '੯': '9',\n            '੦': '0',\n        };\n\n    var paIn = moment.defineLocale('pa-in', {\n        // There are months name as per Nanakshahi Calendar but they are not used as rigidly in modern Punjabi.\n        months: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(\n            '_'\n        ),\n        monthsShort: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(\n            '_'\n        ),\n        weekdays: 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split(\n            '_'\n        ),\n        weekdaysShort: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n        weekdaysMin: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n        longDateFormat: {\n            LT: 'A h:mm ਵਜੇ',\n            LTS: 'A h:mm:ss ਵਜੇ',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, A h:mm ਵਜੇ',\n            LLLL: 'dddd, D MMMM YYYY, A h:mm ਵਜੇ',\n        },\n        calendar: {\n            sameDay: '[ਅਜ] LT',\n            nextDay: '[ਕਲ] LT',\n            nextWeek: '[ਅਗਲਾ] dddd, LT',\n            lastDay: '[ਕਲ] LT',\n            lastWeek: '[ਪਿਛਲੇ] dddd, LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s ਵਿੱਚ',\n            past: '%s ਪਿਛਲੇ',\n            s: 'ਕੁਝ ਸਕਿੰਟ',\n            ss: '%d ਸਕਿੰਟ',\n            m: 'ਇਕ ਮਿੰਟ',\n            mm: '%d ਮਿੰਟ',\n            h: 'ਇੱਕ ਘੰਟਾ',\n            hh: '%d ਘੰਟੇ',\n            d: 'ਇੱਕ ਦਿਨ',\n            dd: '%d ਦਿਨ',\n            M: 'ਇੱਕ ਮਹੀਨਾ',\n            MM: '%d ਮਹੀਨੇ',\n            y: 'ਇੱਕ ਸਾਲ',\n            yy: '%d ਸਾਲ',\n        },\n        preparse: function (string) {\n            return string.replace(/[੧੨੩੪੫੬੭੮੯੦]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        // Punjabi notation for meridiems are quite fuzzy in practice. While there exists\n        // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi.\n        meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'ਰਾਤ') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'ਸਵੇਰ') {\n                return hour;\n            } else if (meridiem === 'ਦੁਪਹਿਰ') {\n                return hour >= 10 ? hour : hour + 12;\n            } else if (meridiem === 'ਸ਼ਾਮ') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'ਰਾਤ';\n            } else if (hour < 10) {\n                return 'ਸਵੇਰ';\n            } else if (hour < 17) {\n                return 'ਦੁਪਹਿਰ';\n            } else if (hour < 20) {\n                return 'ਸ਼ਾਮ';\n            } else {\n                return 'ਰਾਤ';\n            }\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return paIn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Polish [pl]\n//! author : Rafal Hirsz : https://github.com/evoL\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var monthsNominative = 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split(\n            '_'\n        ),\n        monthsSubjective = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split(\n            '_'\n        ),\n        monthsParse = [\n            /^sty/i,\n            /^lut/i,\n            /^mar/i,\n            /^kwi/i,\n            /^maj/i,\n            /^cze/i,\n            /^lip/i,\n            /^sie/i,\n            /^wrz/i,\n            /^paź/i,\n            /^lis/i,\n            /^gru/i,\n        ];\n    function plural(n) {\n        return n % 10 < 5 && n % 10 > 1 && ~~(n / 10) % 10 !== 1;\n    }\n    function translate(number, withoutSuffix, key) {\n        var result = number + ' ';\n        switch (key) {\n            case 'ss':\n                return result + (plural(number) ? 'sekundy' : 'sekund');\n            case 'm':\n                return withoutSuffix ? 'minuta' : 'minutę';\n            case 'mm':\n                return result + (plural(number) ? 'minuty' : 'minut');\n            case 'h':\n                return withoutSuffix ? 'godzina' : 'godzinę';\n            case 'hh':\n                return result + (plural(number) ? 'godziny' : 'godzin');\n            case 'ww':\n                return result + (plural(number) ? 'tygodnie' : 'tygodni');\n            case 'MM':\n                return result + (plural(number) ? 'miesiące' : 'miesięcy');\n            case 'yy':\n                return result + (plural(number) ? 'lata' : 'lat');\n        }\n    }\n\n    var pl = moment.defineLocale('pl', {\n        months: function (momentToFormat, format) {\n            if (!momentToFormat) {\n                return monthsNominative;\n            } else if (/D MMMM/.test(format)) {\n                return monthsSubjective[momentToFormat.month()];\n            } else {\n                return monthsNominative[momentToFormat.month()];\n            }\n        },\n        monthsShort: 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: monthsParse,\n        weekdays: 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split(\n            '_'\n        ),\n        weekdaysShort: 'ndz_pon_wt_śr_czw_pt_sob'.split('_'),\n        weekdaysMin: 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Dziś o] LT',\n            nextDay: '[Jutro o] LT',\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[W niedzielę o] LT';\n\n                    case 2:\n                        return '[We wtorek o] LT';\n\n                    case 3:\n                        return '[W środę o] LT';\n\n                    case 6:\n                        return '[W sobotę o] LT';\n\n                    default:\n                        return '[W] dddd [o] LT';\n                }\n            },\n            lastDay: '[Wczoraj o] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[W zeszłą niedzielę o] LT';\n                    case 3:\n                        return '[W zeszłą środę o] LT';\n                    case 6:\n                        return '[W zeszłą sobotę o] LT';\n                    default:\n                        return '[W zeszły] dddd [o] LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'za %s',\n            past: '%s temu',\n            s: 'kilka sekund',\n            ss: translate,\n            m: translate,\n            mm: translate,\n            h: translate,\n            hh: translate,\n            d: '1 dzień',\n            dd: '%d dni',\n            w: 'tydzień',\n            ww: translate,\n            M: 'miesiąc',\n            MM: translate,\n            y: 'rok',\n            yy: translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return pl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Portuguese [pt]\n//! author : Jefferson : https://github.com/jalex79\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var pt = moment.defineLocale('pt', {\n        months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(\n            '_'\n        ),\n        monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n        weekdays: 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split(\n            '_'\n        ),\n        weekdaysShort: 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),\n        weekdaysMin: 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D [de] MMMM [de] YYYY',\n            LLL: 'D [de] MMMM [de] YYYY HH:mm',\n            LLLL: 'dddd, D [de] MMMM [de] YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Hoje às] LT',\n            nextDay: '[Amanhã às] LT',\n            nextWeek: 'dddd [às] LT',\n            lastDay: '[Ontem às] LT',\n            lastWeek: function () {\n                return this.day() === 0 || this.day() === 6\n                    ? '[Último] dddd [às] LT' // Saturday + Sunday\n                    : '[Última] dddd [às] LT'; // Monday - Friday\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'em %s',\n            past: 'há %s',\n            s: 'segundos',\n            ss: '%d segundos',\n            m: 'um minuto',\n            mm: '%d minutos',\n            h: 'uma hora',\n            hh: '%d horas',\n            d: 'um dia',\n            dd: '%d dias',\n            w: 'uma semana',\n            ww: '%d semanas',\n            M: 'um mês',\n            MM: '%d meses',\n            y: 'um ano',\n            yy: '%d anos',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return pt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Portuguese (Brazil) [pt-br]\n//! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var ptBr = moment.defineLocale('pt-br', {\n        months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(\n            '_'\n        ),\n        monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n        weekdays: 'domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado'.split(\n            '_'\n        ),\n        weekdaysShort: 'dom_seg_ter_qua_qui_sex_sáb'.split('_'),\n        weekdaysMin: 'do_2ª_3ª_4ª_5ª_6ª_sá'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D [de] MMMM [de] YYYY',\n            LLL: 'D [de] MMMM [de] YYYY [às] HH:mm',\n            LLLL: 'dddd, D [de] MMMM [de] YYYY [às] HH:mm',\n        },\n        calendar: {\n            sameDay: '[Hoje às] LT',\n            nextDay: '[Amanhã às] LT',\n            nextWeek: 'dddd [às] LT',\n            lastDay: '[Ontem às] LT',\n            lastWeek: function () {\n                return this.day() === 0 || this.day() === 6\n                    ? '[Último] dddd [às] LT' // Saturday + Sunday\n                    : '[Última] dddd [às] LT'; // Monday - Friday\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'em %s',\n            past: 'há %s',\n            s: 'poucos segundos',\n            ss: '%d segundos',\n            m: 'um minuto',\n            mm: '%d minutos',\n            h: 'uma hora',\n            hh: '%d horas',\n            d: 'um dia',\n            dd: '%d dias',\n            M: 'um mês',\n            MM: '%d meses',\n            y: 'um ano',\n            yy: '%d anos',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        invalidDate: 'Data inválida',\n    });\n\n    return ptBr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Romanian [ro]\n//! author : Vlad Gurdiga : https://github.com/gurdiga\n//! author : Valentin Agachi : https://github.com/avaly\n//! author : Emanuel Cepoi : https://github.com/cepem\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function relativeTimeWithPlural(number, withoutSuffix, key) {\n        var format = {\n                ss: 'secunde',\n                mm: 'minute',\n                hh: 'ore',\n                dd: 'zile',\n                ww: 'săptămâni',\n                MM: 'luni',\n                yy: 'ani',\n            },\n            separator = ' ';\n        if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) {\n            separator = ' de ';\n        }\n        return number + separator + format[key];\n    }\n\n    var ro = moment.defineLocale('ro', {\n        months: 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split(\n            '_'\n        ),\n        monthsShort: 'ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'),\n        weekdaysShort: 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'),\n        weekdaysMin: 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'),\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY H:mm',\n            LLLL: 'dddd, D MMMM YYYY H:mm',\n        },\n        calendar: {\n            sameDay: '[azi la] LT',\n            nextDay: '[mâine la] LT',\n            nextWeek: 'dddd [la] LT',\n            lastDay: '[ieri la] LT',\n            lastWeek: '[fosta] dddd [la] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'peste %s',\n            past: '%s în urmă',\n            s: 'câteva secunde',\n            ss: relativeTimeWithPlural,\n            m: 'un minut',\n            mm: relativeTimeWithPlural,\n            h: 'o oră',\n            hh: relativeTimeWithPlural,\n            d: 'o zi',\n            dd: relativeTimeWithPlural,\n            w: 'o săptămână',\n            ww: relativeTimeWithPlural,\n            M: 'o lună',\n            MM: relativeTimeWithPlural,\n            y: 'un an',\n            yy: relativeTimeWithPlural,\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return ro;\n\n})));\n","//! moment.js locale configuration\n//! locale : Russian [ru]\n//! author : Viktorminator : https://github.com/Viktorminator\n//! author : Menelion Elensúle : https://github.com/Oire\n//! author : Коренберг Марк : https://github.com/socketpair\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function plural(word, num) {\n        var forms = word.split('_');\n        return num % 10 === 1 && num % 100 !== 11\n            ? forms[0]\n            : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n            ? forms[1]\n            : forms[2];\n    }\n    function relativeTimeWithPlural(number, withoutSuffix, key) {\n        var format = {\n            ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n            mm: withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',\n            hh: 'час_часа_часов',\n            dd: 'день_дня_дней',\n            ww: 'неделя_недели_недель',\n            MM: 'месяц_месяца_месяцев',\n            yy: 'год_года_лет',\n        };\n        if (key === 'm') {\n            return withoutSuffix ? 'минута' : 'минуту';\n        } else {\n            return number + ' ' + plural(format[key], +number);\n        }\n    }\n    var monthsParse = [\n        /^янв/i,\n        /^фев/i,\n        /^мар/i,\n        /^апр/i,\n        /^ма[йя]/i,\n        /^июн/i,\n        /^июл/i,\n        /^авг/i,\n        /^сен/i,\n        /^окт/i,\n        /^ноя/i,\n        /^дек/i,\n    ];\n\n    // http://new.gramota.ru/spravka/rules/139-prop : § 103\n    // Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637\n    // CLDR data:          http://www.unicode.org/cldr/charts/28/summary/ru.html#1753\n    var ru = moment.defineLocale('ru', {\n        months: {\n            format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split(\n                '_'\n            ),\n            standalone: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(\n                '_'\n            ),\n        },\n        monthsShort: {\n            // по CLDR именно \"июл.\" и \"июн.\", но какой смысл менять букву на точку?\n            format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split(\n                '_'\n            ),\n            standalone: 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split(\n                '_'\n            ),\n        },\n        weekdays: {\n            standalone: 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split(\n                '_'\n            ),\n            format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split(\n                '_'\n            ),\n            isFormat: /\\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?] ?dddd/,\n        },\n        weekdaysShort: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n        weekdaysMin: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: monthsParse,\n\n        // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки\n        monthsRegex: /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n        // копия предыдущего\n        monthsShortRegex: /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n        // полные названия с падежами\n        monthsStrictRegex: /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,\n\n        // Выражение, которое соответствует только сокращённым формам\n        monthsShortStrictRegex: /^(янв\\.|февр?\\.|мар[т.]|апр\\.|ма[яй]|июн[ья.]|июл[ья.]|авг\\.|сент?\\.|окт\\.|нояб?\\.|дек\\.)/i,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY г.',\n            LLL: 'D MMMM YYYY г., H:mm',\n            LLLL: 'dddd, D MMMM YYYY г., H:mm',\n        },\n        calendar: {\n            sameDay: '[Сегодня, в] LT',\n            nextDay: '[Завтра, в] LT',\n            lastDay: '[Вчера, в] LT',\n            nextWeek: function (now) {\n                if (now.week() !== this.week()) {\n                    switch (this.day()) {\n                        case 0:\n                            return '[В следующее] dddd, [в] LT';\n                        case 1:\n                        case 2:\n                        case 4:\n                            return '[В следующий] dddd, [в] LT';\n                        case 3:\n                        case 5:\n                        case 6:\n                            return '[В следующую] dddd, [в] LT';\n                    }\n                } else {\n                    if (this.day() === 2) {\n                        return '[Во] dddd, [в] LT';\n                    } else {\n                        return '[В] dddd, [в] LT';\n                    }\n                }\n            },\n            lastWeek: function (now) {\n                if (now.week() !== this.week()) {\n                    switch (this.day()) {\n                        case 0:\n                            return '[В прошлое] dddd, [в] LT';\n                        case 1:\n                        case 2:\n                        case 4:\n                            return '[В прошлый] dddd, [в] LT';\n                        case 3:\n                        case 5:\n                        case 6:\n                            return '[В прошлую] dddd, [в] LT';\n                    }\n                } else {\n                    if (this.day() === 2) {\n                        return '[Во] dddd, [в] LT';\n                    } else {\n                        return '[В] dddd, [в] LT';\n                    }\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'через %s',\n            past: '%s назад',\n            s: 'несколько секунд',\n            ss: relativeTimeWithPlural,\n            m: relativeTimeWithPlural,\n            mm: relativeTimeWithPlural,\n            h: 'час',\n            hh: relativeTimeWithPlural,\n            d: 'день',\n            dd: relativeTimeWithPlural,\n            w: 'неделя',\n            ww: relativeTimeWithPlural,\n            M: 'месяц',\n            MM: relativeTimeWithPlural,\n            y: 'год',\n            yy: relativeTimeWithPlural,\n        },\n        meridiemParse: /ночи|утра|дня|вечера/i,\n        isPM: function (input) {\n            return /^(дня|вечера)$/.test(input);\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'ночи';\n            } else if (hour < 12) {\n                return 'утра';\n            } else if (hour < 17) {\n                return 'дня';\n            } else {\n                return 'вечера';\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(й|го|я)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'M':\n                case 'd':\n                case 'DDD':\n                    return number + '-й';\n                case 'D':\n                    return number + '-го';\n                case 'w':\n                case 'W':\n                    return number + '-я';\n                default:\n                    return number;\n            }\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return ru;\n\n})));\n","//! moment.js locale configuration\n//! locale : Sindhi [sd]\n//! author : Narain Sagar : https://github.com/narainsagar\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var months = [\n            'جنوري',\n            'فيبروري',\n            'مارچ',\n            'اپريل',\n            'مئي',\n            'جون',\n            'جولاءِ',\n            'آگسٽ',\n            'سيپٽمبر',\n            'آڪٽوبر',\n            'نومبر',\n            'ڊسمبر',\n        ],\n        days = ['آچر', 'سومر', 'اڱارو', 'اربع', 'خميس', 'جمع', 'ڇنڇر'];\n\n    var sd = moment.defineLocale('sd', {\n        months: months,\n        monthsShort: months,\n        weekdays: days,\n        weekdaysShort: days,\n        weekdaysMin: days,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd، D MMMM YYYY HH:mm',\n        },\n        meridiemParse: /صبح|شام/,\n        isPM: function (input) {\n            return 'شام' === input;\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'صبح';\n            }\n            return 'شام';\n        },\n        calendar: {\n            sameDay: '[اڄ] LT',\n            nextDay: '[سڀاڻي] LT',\n            nextWeek: 'dddd [اڳين هفتي تي] LT',\n            lastDay: '[ڪالهه] LT',\n            lastWeek: '[گزريل هفتي] dddd [تي] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s پوء',\n            past: '%s اڳ',\n            s: 'چند سيڪنڊ',\n            ss: '%d سيڪنڊ',\n            m: 'هڪ منٽ',\n            mm: '%d منٽ',\n            h: 'هڪ ڪلاڪ',\n            hh: '%d ڪلاڪ',\n            d: 'هڪ ڏينهن',\n            dd: '%d ڏينهن',\n            M: 'هڪ مهينو',\n            MM: '%d مهينا',\n            y: 'هڪ سال',\n            yy: '%d سال',\n        },\n        preparse: function (string) {\n            return string.replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string.replace(/,/g, '،');\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return sd;\n\n})));\n","//! moment.js locale configuration\n//! locale : Northern Sami [se]\n//! authors : Bård Rolstad Henriksen : https://github.com/karamell\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var se = moment.defineLocale('se', {\n        months: 'ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu'.split(\n            '_'\n        ),\n        monthsShort: 'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split(\n            '_'\n        ),\n        weekdays: 'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split(\n            '_'\n        ),\n        weekdaysShort: 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'),\n        weekdaysMin: 's_v_m_g_d_b_L'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'MMMM D. [b.] YYYY',\n            LLL: 'MMMM D. [b.] YYYY [ti.] HH:mm',\n            LLLL: 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm',\n        },\n        calendar: {\n            sameDay: '[otne ti] LT',\n            nextDay: '[ihttin ti] LT',\n            nextWeek: 'dddd [ti] LT',\n            lastDay: '[ikte ti] LT',\n            lastWeek: '[ovddit] dddd [ti] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s geažes',\n            past: 'maŋit %s',\n            s: 'moadde sekunddat',\n            ss: '%d sekunddat',\n            m: 'okta minuhta',\n            mm: '%d minuhtat',\n            h: 'okta diimmu',\n            hh: '%d diimmut',\n            d: 'okta beaivi',\n            dd: '%d beaivvit',\n            M: 'okta mánnu',\n            MM: '%d mánut',\n            y: 'okta jahki',\n            yy: '%d jagit',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return se;\n\n})));\n","//! moment.js locale configuration\n//! locale : Sinhalese [si]\n//! author : Sampath Sitinamaluwa : https://github.com/sampathsris\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    /*jshint -W100*/\n    var si = moment.defineLocale('si', {\n        months: 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split(\n            '_'\n        ),\n        monthsShort: 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split(\n            '_'\n        ),\n        weekdays: 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split(\n            '_'\n        ),\n        weekdaysShort: 'ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන'.split('_'),\n        weekdaysMin: 'ඉ_ස_අ_බ_බ්‍ර_සි_සෙ'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'a h:mm',\n            LTS: 'a h:mm:ss',\n            L: 'YYYY/MM/DD',\n            LL: 'YYYY MMMM D',\n            LLL: 'YYYY MMMM D, a h:mm',\n            LLLL: 'YYYY MMMM D [වැනි] dddd, a h:mm:ss',\n        },\n        calendar: {\n            sameDay: '[අද] LT[ට]',\n            nextDay: '[හෙට] LT[ට]',\n            nextWeek: 'dddd LT[ට]',\n            lastDay: '[ඊයේ] LT[ට]',\n            lastWeek: '[පසුගිය] dddd LT[ට]',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%sකින්',\n            past: '%sකට පෙර',\n            s: 'තත්පර කිහිපය',\n            ss: 'තත්පර %d',\n            m: 'මිනිත්තුව',\n            mm: 'මිනිත්තු %d',\n            h: 'පැය',\n            hh: 'පැය %d',\n            d: 'දිනය',\n            dd: 'දින %d',\n            M: 'මාසය',\n            MM: 'මාස %d',\n            y: 'වසර',\n            yy: 'වසර %d',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2} වැනි/,\n        ordinal: function (number) {\n            return number + ' වැනි';\n        },\n        meridiemParse: /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,\n        isPM: function (input) {\n            return input === 'ප.ව.' || input === 'පස් වරු';\n        },\n        meridiem: function (hours, minutes, isLower) {\n            if (hours > 11) {\n                return isLower ? 'ප.ව.' : 'පස් වරු';\n            } else {\n                return isLower ? 'පෙ.ව.' : 'පෙර වරු';\n            }\n        },\n    });\n\n    return si;\n\n})));\n","//! moment.js locale configuration\n//! locale : Slovak [sk]\n//! author : Martin Minka : https://github.com/k2s\n//! based on work of petrbela : https://github.com/petrbela\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var months = 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split(\n            '_'\n        ),\n        monthsShort = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_');\n    function plural(n) {\n        return n > 1 && n < 5;\n    }\n    function translate(number, withoutSuffix, key, isFuture) {\n        var result = number + ' ';\n        switch (key) {\n            case 's': // a few seconds / in a few seconds / a few seconds ago\n                return withoutSuffix || isFuture ? 'pár sekúnd' : 'pár sekundami';\n            case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'sekundy' : 'sekúnd');\n                } else {\n                    return result + 'sekundami';\n                }\n            case 'm': // a minute / in a minute / a minute ago\n                return withoutSuffix ? 'minúta' : isFuture ? 'minútu' : 'minútou';\n            case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'minúty' : 'minút');\n                } else {\n                    return result + 'minútami';\n                }\n            case 'h': // an hour / in an hour / an hour ago\n                return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n            case 'hh': // 9 hours / in 9 hours / 9 hours ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'hodiny' : 'hodín');\n                } else {\n                    return result + 'hodinami';\n                }\n            case 'd': // a day / in a day / a day ago\n                return withoutSuffix || isFuture ? 'deň' : 'dňom';\n            case 'dd': // 9 days / in 9 days / 9 days ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'dni' : 'dní');\n                } else {\n                    return result + 'dňami';\n                }\n            case 'M': // a month / in a month / a month ago\n                return withoutSuffix || isFuture ? 'mesiac' : 'mesiacom';\n            case 'MM': // 9 months / in 9 months / 9 months ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'mesiace' : 'mesiacov');\n                } else {\n                    return result + 'mesiacmi';\n                }\n            case 'y': // a year / in a year / a year ago\n                return withoutSuffix || isFuture ? 'rok' : 'rokom';\n            case 'yy': // 9 years / in 9 years / 9 years ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'roky' : 'rokov');\n                } else {\n                    return result + 'rokmi';\n                }\n        }\n    }\n\n    var sk = moment.defineLocale('sk', {\n        months: months,\n        monthsShort: monthsShort,\n        weekdays: 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'),\n        weekdaysShort: 'ne_po_ut_st_št_pi_so'.split('_'),\n        weekdaysMin: 'ne_po_ut_st_št_pi_so'.split('_'),\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY H:mm',\n            LLLL: 'dddd D. MMMM YYYY H:mm',\n        },\n        calendar: {\n            sameDay: '[dnes o] LT',\n            nextDay: '[zajtra o] LT',\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[v nedeľu o] LT';\n                    case 1:\n                    case 2:\n                        return '[v] dddd [o] LT';\n                    case 3:\n                        return '[v stredu o] LT';\n                    case 4:\n                        return '[vo štvrtok o] LT';\n                    case 5:\n                        return '[v piatok o] LT';\n                    case 6:\n                        return '[v sobotu o] LT';\n                }\n            },\n            lastDay: '[včera o] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[minulú nedeľu o] LT';\n                    case 1:\n                    case 2:\n                        return '[minulý] dddd [o] LT';\n                    case 3:\n                        return '[minulú stredu o] LT';\n                    case 4:\n                    case 5:\n                        return '[minulý] dddd [o] LT';\n                    case 6:\n                        return '[minulú sobotu o] LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'za %s',\n            past: 'pred %s',\n            s: translate,\n            ss: translate,\n            m: translate,\n            mm: translate,\n            h: translate,\n            hh: translate,\n            d: translate,\n            dd: translate,\n            M: translate,\n            MM: translate,\n            y: translate,\n            yy: translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return sk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Slovenian [sl]\n//! author : Robert Sedovšek : https://github.com/sedovsek\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var result = number + ' ';\n        switch (key) {\n            case 's':\n                return withoutSuffix || isFuture\n                    ? 'nekaj sekund'\n                    : 'nekaj sekundami';\n            case 'ss':\n                if (number === 1) {\n                    result += withoutSuffix ? 'sekundo' : 'sekundi';\n                } else if (number === 2) {\n                    result += withoutSuffix || isFuture ? 'sekundi' : 'sekundah';\n                } else if (number < 5) {\n                    result += withoutSuffix || isFuture ? 'sekunde' : 'sekundah';\n                } else {\n                    result += 'sekund';\n                }\n                return result;\n            case 'm':\n                return withoutSuffix ? 'ena minuta' : 'eno minuto';\n            case 'mm':\n                if (number === 1) {\n                    result += withoutSuffix ? 'minuta' : 'minuto';\n                } else if (number === 2) {\n                    result += withoutSuffix || isFuture ? 'minuti' : 'minutama';\n                } else if (number < 5) {\n                    result += withoutSuffix || isFuture ? 'minute' : 'minutami';\n                } else {\n                    result += withoutSuffix || isFuture ? 'minut' : 'minutami';\n                }\n                return result;\n            case 'h':\n                return withoutSuffix ? 'ena ura' : 'eno uro';\n            case 'hh':\n                if (number === 1) {\n                    result += withoutSuffix ? 'ura' : 'uro';\n                } else if (number === 2) {\n                    result += withoutSuffix || isFuture ? 'uri' : 'urama';\n                } else if (number < 5) {\n                    result += withoutSuffix || isFuture ? 'ure' : 'urami';\n                } else {\n                    result += withoutSuffix || isFuture ? 'ur' : 'urami';\n                }\n                return result;\n            case 'd':\n                return withoutSuffix || isFuture ? 'en dan' : 'enim dnem';\n            case 'dd':\n                if (number === 1) {\n                    result += withoutSuffix || isFuture ? 'dan' : 'dnem';\n                } else if (number === 2) {\n                    result += withoutSuffix || isFuture ? 'dni' : 'dnevoma';\n                } else {\n                    result += withoutSuffix || isFuture ? 'dni' : 'dnevi';\n                }\n                return result;\n            case 'M':\n                return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem';\n            case 'MM':\n                if (number === 1) {\n                    result += withoutSuffix || isFuture ? 'mesec' : 'mesecem';\n                } else if (number === 2) {\n                    result += withoutSuffix || isFuture ? 'meseca' : 'mesecema';\n                } else if (number < 5) {\n                    result += withoutSuffix || isFuture ? 'mesece' : 'meseci';\n                } else {\n                    result += withoutSuffix || isFuture ? 'mesecev' : 'meseci';\n                }\n                return result;\n            case 'y':\n                return withoutSuffix || isFuture ? 'eno leto' : 'enim letom';\n            case 'yy':\n                if (number === 1) {\n                    result += withoutSuffix || isFuture ? 'leto' : 'letom';\n                } else if (number === 2) {\n                    result += withoutSuffix || isFuture ? 'leti' : 'letoma';\n                } else if (number < 5) {\n                    result += withoutSuffix || isFuture ? 'leta' : 'leti';\n                } else {\n                    result += withoutSuffix || isFuture ? 'let' : 'leti';\n                }\n                return result;\n        }\n    }\n\n    var sl = moment.defineLocale('sl', {\n        months: 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split(\n            '_'\n        ),\n        monthsShort: 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'),\n        weekdaysShort: 'ned._pon._tor._sre._čet._pet._sob.'.split('_'),\n        weekdaysMin: 'ne_po_to_sr_če_pe_so'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD. MM. YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY H:mm',\n            LLLL: 'dddd, D. MMMM YYYY H:mm',\n        },\n        calendar: {\n            sameDay: '[danes ob] LT',\n            nextDay: '[jutri ob] LT',\n\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[v] [nedeljo] [ob] LT';\n                    case 3:\n                        return '[v] [sredo] [ob] LT';\n                    case 6:\n                        return '[v] [soboto] [ob] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[v] dddd [ob] LT';\n                }\n            },\n            lastDay: '[včeraj ob] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[prejšnjo] [nedeljo] [ob] LT';\n                    case 3:\n                        return '[prejšnjo] [sredo] [ob] LT';\n                    case 6:\n                        return '[prejšnjo] [soboto] [ob] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[prejšnji] dddd [ob] LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'čez %s',\n            past: 'pred %s',\n            s: processRelativeTime,\n            ss: processRelativeTime,\n            m: processRelativeTime,\n            mm: processRelativeTime,\n            h: processRelativeTime,\n            hh: processRelativeTime,\n            d: processRelativeTime,\n            dd: processRelativeTime,\n            M: processRelativeTime,\n            MM: processRelativeTime,\n            y: processRelativeTime,\n            yy: processRelativeTime,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return sl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Albanian [sq]\n//! author : Flakërim Ismani : https://github.com/flakerimi\n//! author : Menelion Elensúle : https://github.com/Oire\n//! author : Oerd Cukalla : https://github.com/oerd\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var sq = moment.defineLocale('sq', {\n        months: 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'),\n        weekdays: 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split(\n            '_'\n        ),\n        weekdaysShort: 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'),\n        weekdaysMin: 'D_H_Ma_Më_E_P_Sh'.split('_'),\n        weekdaysParseExact: true,\n        meridiemParse: /PD|MD/,\n        isPM: function (input) {\n            return input.charAt(0) === 'M';\n        },\n        meridiem: function (hours, minutes, isLower) {\n            return hours < 12 ? 'PD' : 'MD';\n        },\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Sot në] LT',\n            nextDay: '[Nesër në] LT',\n            nextWeek: 'dddd [në] LT',\n            lastDay: '[Dje në] LT',\n            lastWeek: 'dddd [e kaluar në] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'në %s',\n            past: '%s më parë',\n            s: 'disa sekonda',\n            ss: '%d sekonda',\n            m: 'një minutë',\n            mm: '%d minuta',\n            h: 'një orë',\n            hh: '%d orë',\n            d: 'një ditë',\n            dd: '%d ditë',\n            M: 'një muaj',\n            MM: '%d muaj',\n            y: 'një vit',\n            yy: '%d vite',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return sq;\n\n})));\n","//! moment.js locale configuration\n//! locale : Serbian [sr]\n//! author : Milan Janačković<milanjanackovic@gmail.com> : https://github.com/milan-j\n//! author : Stefan Crnjaković <stefan@hotmail.rs> : https://github.com/crnjakovic\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var translator = {\n        words: {\n            //Different grammatical cases\n            ss: ['sekunda', 'sekunde', 'sekundi'],\n            m: ['jedan minut', 'jedne minute'],\n            mm: ['minut', 'minute', 'minuta'],\n            h: ['jedan sat', 'jednog sata'],\n            hh: ['sat', 'sata', 'sati'],\n            dd: ['dan', 'dana', 'dana'],\n            MM: ['mesec', 'meseca', 'meseci'],\n            yy: ['godina', 'godine', 'godina'],\n        },\n        correctGrammaticalCase: function (number, wordKey) {\n            return number === 1\n                ? wordKey[0]\n                : number >= 2 && number <= 4\n                ? wordKey[1]\n                : wordKey[2];\n        },\n        translate: function (number, withoutSuffix, key) {\n            var wordKey = translator.words[key];\n            if (key.length === 1) {\n                return withoutSuffix ? wordKey[0] : wordKey[1];\n            } else {\n                return (\n                    number +\n                    ' ' +\n                    translator.correctGrammaticalCase(number, wordKey)\n                );\n            }\n        },\n    };\n\n    var sr = moment.defineLocale('sr', {\n        months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(\n            '_'\n        ),\n        monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split(\n            '_'\n        ),\n        weekdaysShort: 'ned._pon._uto._sre._čet._pet._sub.'.split('_'),\n        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'D. M. YYYY.',\n            LL: 'D. MMMM YYYY.',\n            LLL: 'D. MMMM YYYY. H:mm',\n            LLLL: 'dddd, D. MMMM YYYY. H:mm',\n        },\n        calendar: {\n            sameDay: '[danas u] LT',\n            nextDay: '[sutra u] LT',\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[u] [nedelju] [u] LT';\n                    case 3:\n                        return '[u] [sredu] [u] LT';\n                    case 6:\n                        return '[u] [subotu] [u] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[u] dddd [u] LT';\n                }\n            },\n            lastDay: '[juče u] LT',\n            lastWeek: function () {\n                var lastWeekDays = [\n                    '[prošle] [nedelje] [u] LT',\n                    '[prošlog] [ponedeljka] [u] LT',\n                    '[prošlog] [utorka] [u] LT',\n                    '[prošle] [srede] [u] LT',\n                    '[prošlog] [četvrtka] [u] LT',\n                    '[prošlog] [petka] [u] LT',\n                    '[prošle] [subote] [u] LT',\n                ];\n                return lastWeekDays[this.day()];\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'za %s',\n            past: 'pre %s',\n            s: 'nekoliko sekundi',\n            ss: translator.translate,\n            m: translator.translate,\n            mm: translator.translate,\n            h: translator.translate,\n            hh: translator.translate,\n            d: 'dan',\n            dd: translator.translate,\n            M: 'mesec',\n            MM: translator.translate,\n            y: 'godinu',\n            yy: translator.translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return sr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Serbian Cyrillic [sr-cyrl]\n//! author : Milan Janačković<milanjanackovic@gmail.com> : https://github.com/milan-j\n//! author : Stefan Crnjaković <stefan@hotmail.rs> : https://github.com/crnjakovic\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var translator = {\n        words: {\n            //Different grammatical cases\n            ss: ['секунда', 'секунде', 'секунди'],\n            m: ['један минут', 'једне минуте'],\n            mm: ['минут', 'минуте', 'минута'],\n            h: ['један сат', 'једног сата'],\n            hh: ['сат', 'сата', 'сати'],\n            dd: ['дан', 'дана', 'дана'],\n            MM: ['месец', 'месеца', 'месеци'],\n            yy: ['година', 'године', 'година'],\n        },\n        correctGrammaticalCase: function (number, wordKey) {\n            return number === 1\n                ? wordKey[0]\n                : number >= 2 && number <= 4\n                ? wordKey[1]\n                : wordKey[2];\n        },\n        translate: function (number, withoutSuffix, key) {\n            var wordKey = translator.words[key];\n            if (key.length === 1) {\n                return withoutSuffix ? wordKey[0] : wordKey[1];\n            } else {\n                return (\n                    number +\n                    ' ' +\n                    translator.correctGrammaticalCase(number, wordKey)\n                );\n            }\n        },\n    };\n\n    var srCyrl = moment.defineLocale('sr-cyrl', {\n        months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split(\n            '_'\n        ),\n        monthsShort: 'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'недеља_понедељак_уторак_среда_четвртак_петак_субота'.split('_'),\n        weekdaysShort: 'нед._пон._уто._сре._чет._пет._суб.'.split('_'),\n        weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'D. M. YYYY.',\n            LL: 'D. MMMM YYYY.',\n            LLL: 'D. MMMM YYYY. H:mm',\n            LLLL: 'dddd, D. MMMM YYYY. H:mm',\n        },\n        calendar: {\n            sameDay: '[данас у] LT',\n            nextDay: '[сутра у] LT',\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[у] [недељу] [у] LT';\n                    case 3:\n                        return '[у] [среду] [у] LT';\n                    case 6:\n                        return '[у] [суботу] [у] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[у] dddd [у] LT';\n                }\n            },\n            lastDay: '[јуче у] LT',\n            lastWeek: function () {\n                var lastWeekDays = [\n                    '[прошле] [недеље] [у] LT',\n                    '[прошлог] [понедељка] [у] LT',\n                    '[прошлог] [уторка] [у] LT',\n                    '[прошле] [среде] [у] LT',\n                    '[прошлог] [четвртка] [у] LT',\n                    '[прошлог] [петка] [у] LT',\n                    '[прошле] [суботе] [у] LT',\n                ];\n                return lastWeekDays[this.day()];\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'за %s',\n            past: 'пре %s',\n            s: 'неколико секунди',\n            ss: translator.translate,\n            m: translator.translate,\n            mm: translator.translate,\n            h: translator.translate,\n            hh: translator.translate,\n            d: 'дан',\n            dd: translator.translate,\n            M: 'месец',\n            MM: translator.translate,\n            y: 'годину',\n            yy: translator.translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 1st is the first week of the year.\n        },\n    });\n\n    return srCyrl;\n\n})));\n","//! moment.js locale configuration\n//! locale : siSwati [ss]\n//! author : Nicolai Davies<mail@nicolai.io> : https://github.com/nicolaidavies\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var ss = moment.defineLocale('ss', {\n        months: \"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni\".split(\n            '_'\n        ),\n        monthsShort: 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'),\n        weekdays: 'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split(\n            '_'\n        ),\n        weekdaysShort: 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'),\n        weekdaysMin: 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'h:mm A',\n            LTS: 'h:mm:ss A',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY h:mm A',\n            LLLL: 'dddd, D MMMM YYYY h:mm A',\n        },\n        calendar: {\n            sameDay: '[Namuhla nga] LT',\n            nextDay: '[Kusasa nga] LT',\n            nextWeek: 'dddd [nga] LT',\n            lastDay: '[Itolo nga] LT',\n            lastWeek: 'dddd [leliphelile] [nga] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'nga %s',\n            past: 'wenteka nga %s',\n            s: 'emizuzwana lomcane',\n            ss: '%d mzuzwana',\n            m: 'umzuzu',\n            mm: '%d emizuzu',\n            h: 'lihora',\n            hh: '%d emahora',\n            d: 'lilanga',\n            dd: '%d emalanga',\n            M: 'inyanga',\n            MM: '%d tinyanga',\n            y: 'umnyaka',\n            yy: '%d iminyaka',\n        },\n        meridiemParse: /ekuseni|emini|entsambama|ebusuku/,\n        meridiem: function (hours, minutes, isLower) {\n            if (hours < 11) {\n                return 'ekuseni';\n            } else if (hours < 15) {\n                return 'emini';\n            } else if (hours < 19) {\n                return 'entsambama';\n            } else {\n                return 'ebusuku';\n            }\n        },\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'ekuseni') {\n                return hour;\n            } else if (meridiem === 'emini') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') {\n                if (hour === 0) {\n                    return 0;\n                }\n                return hour + 12;\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}/,\n        ordinal: '%d',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return ss;\n\n})));\n","//! moment.js locale configuration\n//! locale : Swedish [sv]\n//! author : Jens Alm : https://github.com/ulmus\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var sv = moment.defineLocale('sv', {\n        months: 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split(\n            '_'\n        ),\n        monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n        weekdays: 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),\n        weekdaysShort: 'sön_mån_tis_ons_tor_fre_lör'.split('_'),\n        weekdaysMin: 'sö_må_ti_on_to_fr_lö'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'YYYY-MM-DD',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY [kl.] HH:mm',\n            LLLL: 'dddd D MMMM YYYY [kl.] HH:mm',\n            lll: 'D MMM YYYY HH:mm',\n            llll: 'ddd D MMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Idag] LT',\n            nextDay: '[Imorgon] LT',\n            lastDay: '[Igår] LT',\n            nextWeek: '[På] dddd LT',\n            lastWeek: '[I] dddd[s] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'om %s',\n            past: 'för %s sedan',\n            s: 'några sekunder',\n            ss: '%d sekunder',\n            m: 'en minut',\n            mm: '%d minuter',\n            h: 'en timme',\n            hh: '%d timmar',\n            d: 'en dag',\n            dd: '%d dagar',\n            M: 'en månad',\n            MM: '%d månader',\n            y: 'ett år',\n            yy: '%d år',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(\\:e|\\:a)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? ':e'\n                        : b === 1\n                        ? ':a'\n                        : b === 2\n                        ? ':a'\n                        : b === 3\n                        ? ':e'\n                        : ':e';\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return sv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Swahili [sw]\n//! author : Fahad Kassim : https://github.com/fadsel\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var sw = moment.defineLocale('sw', {\n        months: 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'),\n        weekdays: 'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split(\n            '_'\n        ),\n        weekdaysShort: 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'),\n        weekdaysMin: 'J2_J3_J4_J5_Al_Ij_J1'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'hh:mm A',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[leo saa] LT',\n            nextDay: '[kesho saa] LT',\n            nextWeek: '[wiki ijayo] dddd [saat] LT',\n            lastDay: '[jana] LT',\n            lastWeek: '[wiki iliyopita] dddd [saat] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s baadaye',\n            past: 'tokea %s',\n            s: 'hivi punde',\n            ss: 'sekunde %d',\n            m: 'dakika moja',\n            mm: 'dakika %d',\n            h: 'saa limoja',\n            hh: 'masaa %d',\n            d: 'siku moja',\n            dd: 'siku %d',\n            M: 'mwezi mmoja',\n            MM: 'miezi %d',\n            y: 'mwaka mmoja',\n            yy: 'miaka %d',\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return sw;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tamil [ta]\n//! author : Arjunkumar Krishnamoorthy : https://github.com/tk120404\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '௧',\n            2: '௨',\n            3: '௩',\n            4: '௪',\n            5: '௫',\n            6: '௬',\n            7: '௭',\n            8: '௮',\n            9: '௯',\n            0: '௦',\n        },\n        numberMap = {\n            '௧': '1',\n            '௨': '2',\n            '௩': '3',\n            '௪': '4',\n            '௫': '5',\n            '௬': '6',\n            '௭': '7',\n            '௮': '8',\n            '௯': '9',\n            '௦': '0',\n        };\n\n    var ta = moment.defineLocale('ta', {\n        months: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(\n            '_'\n        ),\n        monthsShort: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(\n            '_'\n        ),\n        weekdays: 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split(\n            '_'\n        ),\n        weekdaysShort: 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split(\n            '_'\n        ),\n        weekdaysMin: 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, HH:mm',\n            LLLL: 'dddd, D MMMM YYYY, HH:mm',\n        },\n        calendar: {\n            sameDay: '[இன்று] LT',\n            nextDay: '[நாளை] LT',\n            nextWeek: 'dddd, LT',\n            lastDay: '[நேற்று] LT',\n            lastWeek: '[கடந்த வாரம்] dddd, LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s இல்',\n            past: '%s முன்',\n            s: 'ஒரு சில விநாடிகள்',\n            ss: '%d விநாடிகள்',\n            m: 'ஒரு நிமிடம்',\n            mm: '%d நிமிடங்கள்',\n            h: 'ஒரு மணி நேரம்',\n            hh: '%d மணி நேரம்',\n            d: 'ஒரு நாள்',\n            dd: '%d நாட்கள்',\n            M: 'ஒரு மாதம்',\n            MM: '%d மாதங்கள்',\n            y: 'ஒரு வருடம்',\n            yy: '%d ஆண்டுகள்',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}வது/,\n        ordinal: function (number) {\n            return number + 'வது';\n        },\n        preparse: function (string) {\n            return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        // refer http://ta.wikipedia.org/s/1er1\n        meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 2) {\n                return ' யாமம்';\n            } else if (hour < 6) {\n                return ' வைகறை'; // வைகறை\n            } else if (hour < 10) {\n                return ' காலை'; // காலை\n            } else if (hour < 14) {\n                return ' நண்பகல்'; // நண்பகல்\n            } else if (hour < 18) {\n                return ' எற்பாடு'; // எற்பாடு\n            } else if (hour < 22) {\n                return ' மாலை'; // மாலை\n            } else {\n                return ' யாமம்';\n            }\n        },\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'யாமம்') {\n                return hour < 2 ? hour : hour + 12;\n            } else if (meridiem === 'வைகறை' || meridiem === 'காலை') {\n                return hour;\n            } else if (meridiem === 'நண்பகல்') {\n                return hour >= 10 ? hour : hour + 12;\n            } else {\n                return hour + 12;\n            }\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return ta;\n\n})));\n","//! moment.js locale configuration\n//! locale : Telugu [te]\n//! author : Krishna Chaitanya Thota : https://github.com/kcthota\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var te = moment.defineLocale('te', {\n        months: 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split(\n            '_'\n        ),\n        monthsShort: 'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split(\n            '_'\n        ),\n        weekdaysShort: 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'),\n        weekdaysMin: 'ఆ_సో_మం_బు_గు_శు_శ'.split('_'),\n        longDateFormat: {\n            LT: 'A h:mm',\n            LTS: 'A h:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, A h:mm',\n            LLLL: 'dddd, D MMMM YYYY, A h:mm',\n        },\n        calendar: {\n            sameDay: '[నేడు] LT',\n            nextDay: '[రేపు] LT',\n            nextWeek: 'dddd, LT',\n            lastDay: '[నిన్న] LT',\n            lastWeek: '[గత] dddd, LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s లో',\n            past: '%s క్రితం',\n            s: 'కొన్ని క్షణాలు',\n            ss: '%d సెకన్లు',\n            m: 'ఒక నిమిషం',\n            mm: '%d నిమిషాలు',\n            h: 'ఒక గంట',\n            hh: '%d గంటలు',\n            d: 'ఒక రోజు',\n            dd: '%d రోజులు',\n            M: 'ఒక నెల',\n            MM: '%d నెలలు',\n            y: 'ఒక సంవత్సరం',\n            yy: '%d సంవత్సరాలు',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}వ/,\n        ordinal: '%dవ',\n        meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'రాత్రి') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'ఉదయం') {\n                return hour;\n            } else if (meridiem === 'మధ్యాహ్నం') {\n                return hour >= 10 ? hour : hour + 12;\n            } else if (meridiem === 'సాయంత్రం') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'రాత్రి';\n            } else if (hour < 10) {\n                return 'ఉదయం';\n            } else if (hour < 17) {\n                return 'మధ్యాహ్నం';\n            } else if (hour < 20) {\n                return 'సాయంత్రం';\n            } else {\n                return 'రాత్రి';\n            }\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return te;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tetun Dili (East Timor) [tet]\n//! author : Joshua Brooks : https://github.com/joshbrooks\n//! author : Onorio De J. Afonso : https://github.com/marobo\n//! author : Sonia Simoes : https://github.com/soniasimoes\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var tet = moment.defineLocale('tet', {\n        months: 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),\n        weekdays: 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu'.split('_'),\n        weekdaysShort: 'Dom_Seg_Ters_Kua_Kint_Sest_Sab'.split('_'),\n        weekdaysMin: 'Do_Seg_Te_Ku_Ki_Ses_Sa'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Ohin iha] LT',\n            nextDay: '[Aban iha] LT',\n            nextWeek: 'dddd [iha] LT',\n            lastDay: '[Horiseik iha] LT',\n            lastWeek: 'dddd [semana kotuk] [iha] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'iha %s',\n            past: '%s liuba',\n            s: 'segundu balun',\n            ss: 'segundu %d',\n            m: 'minutu ida',\n            mm: 'minutu %d',\n            h: 'oras ida',\n            hh: 'oras %d',\n            d: 'loron ida',\n            dd: 'loron %d',\n            M: 'fulan ida',\n            MM: 'fulan %d',\n            y: 'tinan ida',\n            yy: 'tinan %d',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                        ? 'st'\n                        : b === 2\n                        ? 'nd'\n                        : b === 3\n                        ? 'rd'\n                        : 'th';\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return tet;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tajik [tg]\n//! author : Orif N. Jr. : https://github.com/orif-jr\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var suffixes = {\n        0: '-ум',\n        1: '-ум',\n        2: '-юм',\n        3: '-юм',\n        4: '-ум',\n        5: '-ум',\n        6: '-ум',\n        7: '-ум',\n        8: '-ум',\n        9: '-ум',\n        10: '-ум',\n        12: '-ум',\n        13: '-ум',\n        20: '-ум',\n        30: '-юм',\n        40: '-ум',\n        50: '-ум',\n        60: '-ум',\n        70: '-ум',\n        80: '-ум',\n        90: '-ум',\n        100: '-ум',\n    };\n\n    var tg = moment.defineLocale('tg', {\n        months: {\n            format: 'январи_феврали_марти_апрели_майи_июни_июли_августи_сентябри_октябри_ноябри_декабри'.split(\n                '_'\n            ),\n            standalone: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(\n                '_'\n            ),\n        },\n        monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n        weekdays: 'якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе'.split(\n            '_'\n        ),\n        weekdaysShort: 'яшб_дшб_сшб_чшб_пшб_ҷум_шнб'.split('_'),\n        weekdaysMin: 'яш_дш_сш_чш_пш_ҷм_шб'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Имрӯз соати] LT',\n            nextDay: '[Фардо соати] LT',\n            lastDay: '[Дирӯз соати] LT',\n            nextWeek: 'dddd[и] [ҳафтаи оянда соати] LT',\n            lastWeek: 'dddd[и] [ҳафтаи гузашта соати] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'баъди %s',\n            past: '%s пеш',\n            s: 'якчанд сония',\n            m: 'як дақиқа',\n            mm: '%d дақиқа',\n            h: 'як соат',\n            hh: '%d соат',\n            d: 'як рӯз',\n            dd: '%d рӯз',\n            M: 'як моҳ',\n            MM: '%d моҳ',\n            y: 'як сол',\n            yy: '%d сол',\n        },\n        meridiemParse: /шаб|субҳ|рӯз|бегоҳ/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'шаб') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'субҳ') {\n                return hour;\n            } else if (meridiem === 'рӯз') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === 'бегоҳ') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'шаб';\n            } else if (hour < 11) {\n                return 'субҳ';\n            } else if (hour < 16) {\n                return 'рӯз';\n            } else if (hour < 19) {\n                return 'бегоҳ';\n            } else {\n                return 'шаб';\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(ум|юм)/,\n        ordinal: function (number) {\n            var a = number % 10,\n                b = number >= 100 ? 100 : null;\n            return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 1th is the first week of the year.\n        },\n    });\n\n    return tg;\n\n})));\n","//! moment.js locale configuration\n//! locale : Thai [th]\n//! author : Kridsada Thanabulpong : https://github.com/sirn\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var th = moment.defineLocale('th', {\n        months: 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split(\n            '_'\n        ),\n        monthsShort: 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'),\n        weekdaysShort: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference\n        weekdaysMin: 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY เวลา H:mm',\n            LLLL: 'วันddddที่ D MMMM YYYY เวลา H:mm',\n        },\n        meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/,\n        isPM: function (input) {\n            return input === 'หลังเที่ยง';\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ก่อนเที่ยง';\n            } else {\n                return 'หลังเที่ยง';\n            }\n        },\n        calendar: {\n            sameDay: '[วันนี้ เวลา] LT',\n            nextDay: '[พรุ่งนี้ เวลา] LT',\n            nextWeek: 'dddd[หน้า เวลา] LT',\n            lastDay: '[เมื่อวานนี้ เวลา] LT',\n            lastWeek: '[วัน]dddd[ที่แล้ว เวลา] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'อีก %s',\n            past: '%sที่แล้ว',\n            s: 'ไม่กี่วินาที',\n            ss: '%d วินาที',\n            m: '1 นาที',\n            mm: '%d นาที',\n            h: '1 ชั่วโมง',\n            hh: '%d ชั่วโมง',\n            d: '1 วัน',\n            dd: '%d วัน',\n            w: '1 สัปดาห์',\n            ww: '%d สัปดาห์',\n            M: '1 เดือน',\n            MM: '%d เดือน',\n            y: '1 ปี',\n            yy: '%d ปี',\n        },\n    });\n\n    return th;\n\n})));\n","//! moment.js locale configuration\n//! locale : Turkmen [tk]\n//! author : Atamyrat Abdyrahmanov : https://github.com/atamyratabdy\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var suffixes = {\n        1: \"'inji\",\n        5: \"'inji\",\n        8: \"'inji\",\n        70: \"'inji\",\n        80: \"'inji\",\n        2: \"'nji\",\n        7: \"'nji\",\n        20: \"'nji\",\n        50: \"'nji\",\n        3: \"'ünji\",\n        4: \"'ünji\",\n        100: \"'ünji\",\n        6: \"'njy\",\n        9: \"'unjy\",\n        10: \"'unjy\",\n        30: \"'unjy\",\n        60: \"'ynjy\",\n        90: \"'ynjy\",\n    };\n\n    var tk = moment.defineLocale('tk', {\n        months: 'Ýanwar_Fewral_Mart_Aprel_Maý_Iýun_Iýul_Awgust_Sentýabr_Oktýabr_Noýabr_Dekabr'.split(\n            '_'\n        ),\n        monthsShort: 'Ýan_Few_Mar_Apr_Maý_Iýn_Iýl_Awg_Sen_Okt_Noý_Dek'.split('_'),\n        weekdays: 'Ýekşenbe_Duşenbe_Sişenbe_Çarşenbe_Penşenbe_Anna_Şenbe'.split(\n            '_'\n        ),\n        weekdaysShort: 'Ýek_Duş_Siş_Çar_Pen_Ann_Şen'.split('_'),\n        weekdaysMin: 'Ýk_Dş_Sş_Çr_Pn_An_Şn'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[bugün sagat] LT',\n            nextDay: '[ertir sagat] LT',\n            nextWeek: '[indiki] dddd [sagat] LT',\n            lastDay: '[düýn] LT',\n            lastWeek: '[geçen] dddd [sagat] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s soň',\n            past: '%s öň',\n            s: 'birnäçe sekunt',\n            m: 'bir minut',\n            mm: '%d minut',\n            h: 'bir sagat',\n            hh: '%d sagat',\n            d: 'bir gün',\n            dd: '%d gün',\n            M: 'bir aý',\n            MM: '%d aý',\n            y: 'bir ýyl',\n            yy: '%d ýyl',\n        },\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'Do':\n                case 'DD':\n                    return number;\n                default:\n                    if (number === 0) {\n                        // special case for zero\n                        return number + \"'unjy\";\n                    }\n                    var a = number % 10,\n                        b = (number % 100) - a,\n                        c = number >= 100 ? 100 : null;\n                    return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n            }\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return tk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tagalog (Philippines) [tl-ph]\n//! author : Dan Hagman : https://github.com/hagmandan\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var tlPh = moment.defineLocale('tl-ph', {\n        months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(\n            '_'\n        ),\n        monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n        weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(\n            '_'\n        ),\n        weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n        weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'MM/D/YYYY',\n            LL: 'MMMM D, YYYY',\n            LLL: 'MMMM D, YYYY HH:mm',\n            LLLL: 'dddd, MMMM DD, YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: 'LT [ngayong araw]',\n            nextDay: '[Bukas ng] LT',\n            nextWeek: 'LT [sa susunod na] dddd',\n            lastDay: 'LT [kahapon]',\n            lastWeek: 'LT [noong nakaraang] dddd',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'sa loob ng %s',\n            past: '%s ang nakalipas',\n            s: 'ilang segundo',\n            ss: '%d segundo',\n            m: 'isang minuto',\n            mm: '%d minuto',\n            h: 'isang oras',\n            hh: '%d oras',\n            d: 'isang araw',\n            dd: '%d araw',\n            M: 'isang buwan',\n            MM: '%d buwan',\n            y: 'isang taon',\n            yy: '%d taon',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}/,\n        ordinal: function (number) {\n            return number;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return tlPh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Klingon [tlh]\n//! author : Dominika Kruk : https://github.com/amaranthrose\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_');\n\n    function translateFuture(output) {\n        var time = output;\n        time =\n            output.indexOf('jaj') !== -1\n                ? time.slice(0, -3) + 'leS'\n                : output.indexOf('jar') !== -1\n                ? time.slice(0, -3) + 'waQ'\n                : output.indexOf('DIS') !== -1\n                ? time.slice(0, -3) + 'nem'\n                : time + ' pIq';\n        return time;\n    }\n\n    function translatePast(output) {\n        var time = output;\n        time =\n            output.indexOf('jaj') !== -1\n                ? time.slice(0, -3) + 'Hu’'\n                : output.indexOf('jar') !== -1\n                ? time.slice(0, -3) + 'wen'\n                : output.indexOf('DIS') !== -1\n                ? time.slice(0, -3) + 'ben'\n                : time + ' ret';\n        return time;\n    }\n\n    function translate(number, withoutSuffix, string, isFuture) {\n        var numberNoun = numberAsNoun(number);\n        switch (string) {\n            case 'ss':\n                return numberNoun + ' lup';\n            case 'mm':\n                return numberNoun + ' tup';\n            case 'hh':\n                return numberNoun + ' rep';\n            case 'dd':\n                return numberNoun + ' jaj';\n            case 'MM':\n                return numberNoun + ' jar';\n            case 'yy':\n                return numberNoun + ' DIS';\n        }\n    }\n\n    function numberAsNoun(number) {\n        var hundred = Math.floor((number % 1000) / 100),\n            ten = Math.floor((number % 100) / 10),\n            one = number % 10,\n            word = '';\n        if (hundred > 0) {\n            word += numbersNouns[hundred] + 'vatlh';\n        }\n        if (ten > 0) {\n            word += (word !== '' ? ' ' : '') + numbersNouns[ten] + 'maH';\n        }\n        if (one > 0) {\n            word += (word !== '' ? ' ' : '') + numbersNouns[one];\n        }\n        return word === '' ? 'pagh' : word;\n    }\n\n    var tlh = moment.defineLocale('tlh', {\n        months: 'tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’'.split(\n            '_'\n        ),\n        monthsShort: 'jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(\n            '_'\n        ),\n        weekdaysShort: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(\n            '_'\n        ),\n        weekdaysMin: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(\n            '_'\n        ),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[DaHjaj] LT',\n            nextDay: '[wa’leS] LT',\n            nextWeek: 'LLL',\n            lastDay: '[wa’Hu’] LT',\n            lastWeek: 'LLL',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: translateFuture,\n            past: translatePast,\n            s: 'puS lup',\n            ss: translate,\n            m: 'wa’ tup',\n            mm: translate,\n            h: 'wa’ rep',\n            hh: translate,\n            d: 'wa’ jaj',\n            dd: translate,\n            M: 'wa’ jar',\n            MM: translate,\n            y: 'wa’ DIS',\n            yy: translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return tlh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Turkish [tr]\n//! authors : Erhan Gundogan : https://github.com/erhangundogan,\n//!           Burak Yiğit Kaya: https://github.com/BYK\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var suffixes = {\n        1: \"'inci\",\n        5: \"'inci\",\n        8: \"'inci\",\n        70: \"'inci\",\n        80: \"'inci\",\n        2: \"'nci\",\n        7: \"'nci\",\n        20: \"'nci\",\n        50: \"'nci\",\n        3: \"'üncü\",\n        4: \"'üncü\",\n        100: \"'üncü\",\n        6: \"'ncı\",\n        9: \"'uncu\",\n        10: \"'uncu\",\n        30: \"'uncu\",\n        60: \"'ıncı\",\n        90: \"'ıncı\",\n    };\n\n    var tr = moment.defineLocale('tr', {\n        months: 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split(\n            '_'\n        ),\n        monthsShort: 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'),\n        weekdays: 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split(\n            '_'\n        ),\n        weekdaysShort: 'Paz_Pts_Sal_Çar_Per_Cum_Cts'.split('_'),\n        weekdaysMin: 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),\n        meridiem: function (hours, minutes, isLower) {\n            if (hours < 12) {\n                return isLower ? 'öö' : 'ÖÖ';\n            } else {\n                return isLower ? 'ös' : 'ÖS';\n            }\n        },\n        meridiemParse: /öö|ÖÖ|ös|ÖS/,\n        isPM: function (input) {\n            return input === 'ös' || input === 'ÖS';\n        },\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[bugün saat] LT',\n            nextDay: '[yarın saat] LT',\n            nextWeek: '[gelecek] dddd [saat] LT',\n            lastDay: '[dün] LT',\n            lastWeek: '[geçen] dddd [saat] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s sonra',\n            past: '%s önce',\n            s: 'birkaç saniye',\n            ss: '%d saniye',\n            m: 'bir dakika',\n            mm: '%d dakika',\n            h: 'bir saat',\n            hh: '%d saat',\n            d: 'bir gün',\n            dd: '%d gün',\n            w: 'bir hafta',\n            ww: '%d hafta',\n            M: 'bir ay',\n            MM: '%d ay',\n            y: 'bir yıl',\n            yy: '%d yıl',\n        },\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'Do':\n                case 'DD':\n                    return number;\n                default:\n                    if (number === 0) {\n                        // special case for zero\n                        return number + \"'ıncı\";\n                    }\n                    var a = number % 10,\n                        b = (number % 100) - a,\n                        c = number >= 100 ? 100 : null;\n                    return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n            }\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return tr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Talossan [tzl]\n//! author : Robin van der Vliet : https://github.com/robin0van0der0v\n//! author : Iustì Canun\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    // After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals.\n    // This is currently too difficult (maybe even impossible) to add.\n    var tzl = moment.defineLocale('tzl', {\n        months: 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'),\n        weekdays: 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'),\n        weekdaysShort: 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'),\n        weekdaysMin: 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'),\n        longDateFormat: {\n            LT: 'HH.mm',\n            LTS: 'HH.mm.ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM [dallas] YYYY',\n            LLL: 'D. MMMM [dallas] YYYY HH.mm',\n            LLLL: 'dddd, [li] D. MMMM [dallas] YYYY HH.mm',\n        },\n        meridiemParse: /d\\'o|d\\'a/i,\n        isPM: function (input) {\n            return \"d'o\" === input.toLowerCase();\n        },\n        meridiem: function (hours, minutes, isLower) {\n            if (hours > 11) {\n                return isLower ? \"d'o\" : \"D'O\";\n            } else {\n                return isLower ? \"d'a\" : \"D'A\";\n            }\n        },\n        calendar: {\n            sameDay: '[oxhi à] LT',\n            nextDay: '[demà à] LT',\n            nextWeek: 'dddd [à] LT',\n            lastDay: '[ieiri à] LT',\n            lastWeek: '[sür el] dddd [lasteu à] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'osprei %s',\n            past: 'ja%s',\n            s: processRelativeTime,\n            ss: processRelativeTime,\n            m: processRelativeTime,\n            mm: processRelativeTime,\n            h: processRelativeTime,\n            hh: processRelativeTime,\n            d: processRelativeTime,\n            dd: processRelativeTime,\n            M: processRelativeTime,\n            MM: processRelativeTime,\n            y: processRelativeTime,\n            yy: processRelativeTime,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var format = {\n            s: ['viensas secunds', \"'iensas secunds\"],\n            ss: [number + ' secunds', '' + number + ' secunds'],\n            m: [\"'n míut\", \"'iens míut\"],\n            mm: [number + ' míuts', '' + number + ' míuts'],\n            h: [\"'n þora\", \"'iensa þora\"],\n            hh: [number + ' þoras', '' + number + ' þoras'],\n            d: [\"'n ziua\", \"'iensa ziua\"],\n            dd: [number + ' ziuas', '' + number + ' ziuas'],\n            M: [\"'n mes\", \"'iens mes\"],\n            MM: [number + ' mesen', '' + number + ' mesen'],\n            y: [\"'n ar\", \"'iens ar\"],\n            yy: [number + ' ars', '' + number + ' ars'],\n        };\n        return isFuture\n            ? format[key][0]\n            : withoutSuffix\n            ? format[key][0]\n            : format[key][1];\n    }\n\n    return tzl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Central Atlas Tamazight [tzm]\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var tzm = moment.defineLocale('tzm', {\n        months: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(\n            '_'\n        ),\n        monthsShort: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(\n            '_'\n        ),\n        weekdays: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n        weekdaysShort: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n        weekdaysMin: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[ⴰⵙⴷⵅ ⴴ] LT',\n            nextDay: '[ⴰⵙⴽⴰ ⴴ] LT',\n            nextWeek: 'dddd [ⴴ] LT',\n            lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT',\n            lastWeek: 'dddd [ⴴ] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s',\n            past: 'ⵢⴰⵏ %s',\n            s: 'ⵉⵎⵉⴽ',\n            ss: '%d ⵉⵎⵉⴽ',\n            m: 'ⵎⵉⵏⵓⴺ',\n            mm: '%d ⵎⵉⵏⵓⴺ',\n            h: 'ⵙⴰⵄⴰ',\n            hh: '%d ⵜⴰⵙⵙⴰⵄⵉⵏ',\n            d: 'ⴰⵙⵙ',\n            dd: '%d oⵙⵙⴰⵏ',\n            M: 'ⴰⵢoⵓⵔ',\n            MM: '%d ⵉⵢⵢⵉⵔⵏ',\n            y: 'ⴰⵙⴳⴰⵙ',\n            yy: '%d ⵉⵙⴳⴰⵙⵏ',\n        },\n        week: {\n            dow: 6, // Saturday is the first day of the week.\n            doy: 12, // The week that contains Jan 12th is the first week of the year.\n        },\n    });\n\n    return tzm;\n\n})));\n","//! moment.js locale configuration\n//! locale : Central Atlas Tamazight Latin [tzm-latn]\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var tzmLatn = moment.defineLocale('tzm-latn', {\n        months: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(\n            '_'\n        ),\n        monthsShort: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(\n            '_'\n        ),\n        weekdays: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n        weekdaysShort: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n        weekdaysMin: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[asdkh g] LT',\n            nextDay: '[aska g] LT',\n            nextWeek: 'dddd [g] LT',\n            lastDay: '[assant g] LT',\n            lastWeek: 'dddd [g] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'dadkh s yan %s',\n            past: 'yan %s',\n            s: 'imik',\n            ss: '%d imik',\n            m: 'minuḍ',\n            mm: '%d minuḍ',\n            h: 'saɛa',\n            hh: '%d tassaɛin',\n            d: 'ass',\n            dd: '%d ossan',\n            M: 'ayowr',\n            MM: '%d iyyirn',\n            y: 'asgas',\n            yy: '%d isgasn',\n        },\n        week: {\n            dow: 6, // Saturday is the first day of the week.\n            doy: 12, // The week that contains Jan 12th is the first week of the year.\n        },\n    });\n\n    return tzmLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Uyghur (China) [ug-cn]\n//! author: boyaq : https://github.com/boyaq\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var ugCn = moment.defineLocale('ug-cn', {\n        months: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(\n            '_'\n        ),\n        monthsShort: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(\n            '_'\n        ),\n        weekdays: 'يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە'.split(\n            '_'\n        ),\n        weekdaysShort: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n        weekdaysMin: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'YYYY-MM-DD',\n            LL: 'YYYY-يىلىM-ئاينىڭD-كۈنى',\n            LLL: 'YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',\n            LLLL: 'dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',\n        },\n        meridiemParse: /يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (\n                meridiem === 'يېرىم كېچە' ||\n                meridiem === 'سەھەر' ||\n                meridiem === 'چۈشتىن بۇرۇن'\n            ) {\n                return hour;\n            } else if (meridiem === 'چۈشتىن كېيىن' || meridiem === 'كەچ') {\n                return hour + 12;\n            } else {\n                return hour >= 11 ? hour : hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            var hm = hour * 100 + minute;\n            if (hm < 600) {\n                return 'يېرىم كېچە';\n            } else if (hm < 900) {\n                return 'سەھەر';\n            } else if (hm < 1130) {\n                return 'چۈشتىن بۇرۇن';\n            } else if (hm < 1230) {\n                return 'چۈش';\n            } else if (hm < 1800) {\n                return 'چۈشتىن كېيىن';\n            } else {\n                return 'كەچ';\n            }\n        },\n        calendar: {\n            sameDay: '[بۈگۈن سائەت] LT',\n            nextDay: '[ئەتە سائەت] LT',\n            nextWeek: '[كېلەركى] dddd [سائەت] LT',\n            lastDay: '[تۆنۈگۈن] LT',\n            lastWeek: '[ئالدىنقى] dddd [سائەت] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s كېيىن',\n            past: '%s بۇرۇن',\n            s: 'نەچچە سېكونت',\n            ss: '%d سېكونت',\n            m: 'بىر مىنۇت',\n            mm: '%d مىنۇت',\n            h: 'بىر سائەت',\n            hh: '%d سائەت',\n            d: 'بىر كۈن',\n            dd: '%d كۈن',\n            M: 'بىر ئاي',\n            MM: '%d ئاي',\n            y: 'بىر يىل',\n            yy: '%d يىل',\n        },\n\n        dayOfMonthOrdinalParse: /\\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'DDD':\n                    return number + '-كۈنى';\n                case 'w':\n                case 'W':\n                    return number + '-ھەپتە';\n                default:\n                    return number;\n            }\n        },\n        preparse: function (string) {\n            return string.replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string.replace(/,/g, '،');\n        },\n        week: {\n            // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 1st is the first week of the year.\n        },\n    });\n\n    return ugCn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Ukrainian [uk]\n//! author : zemlanin : https://github.com/zemlanin\n//! Author : Menelion Elensúle : https://github.com/Oire\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function plural(word, num) {\n        var forms = word.split('_');\n        return num % 10 === 1 && num % 100 !== 11\n            ? forms[0]\n            : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n            ? forms[1]\n            : forms[2];\n    }\n    function relativeTimeWithPlural(number, withoutSuffix, key) {\n        var format = {\n            ss: withoutSuffix ? 'секунда_секунди_секунд' : 'секунду_секунди_секунд',\n            mm: withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин',\n            hh: withoutSuffix ? 'година_години_годин' : 'годину_години_годин',\n            dd: 'день_дні_днів',\n            MM: 'місяць_місяці_місяців',\n            yy: 'рік_роки_років',\n        };\n        if (key === 'm') {\n            return withoutSuffix ? 'хвилина' : 'хвилину';\n        } else if (key === 'h') {\n            return withoutSuffix ? 'година' : 'годину';\n        } else {\n            return number + ' ' + plural(format[key], +number);\n        }\n    }\n    function weekdaysCaseReplace(m, format) {\n        var weekdays = {\n                nominative: 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split(\n                    '_'\n                ),\n                accusative: 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split(\n                    '_'\n                ),\n                genitive: 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split(\n                    '_'\n                ),\n            },\n            nounCase;\n\n        if (m === true) {\n            return weekdays['nominative']\n                .slice(1, 7)\n                .concat(weekdays['nominative'].slice(0, 1));\n        }\n        if (!m) {\n            return weekdays['nominative'];\n        }\n\n        nounCase = /(\\[[ВвУу]\\]) ?dddd/.test(format)\n            ? 'accusative'\n            : /\\[?(?:минулої|наступної)? ?\\] ?dddd/.test(format)\n            ? 'genitive'\n            : 'nominative';\n        return weekdays[nounCase][m.day()];\n    }\n    function processHoursFunction(str) {\n        return function () {\n            return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT';\n        };\n    }\n\n    var uk = moment.defineLocale('uk', {\n        months: {\n            format: 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split(\n                '_'\n            ),\n            standalone: 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split(\n                '_'\n            ),\n        },\n        monthsShort: 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split(\n            '_'\n        ),\n        weekdays: weekdaysCaseReplace,\n        weekdaysShort: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n        weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY р.',\n            LLL: 'D MMMM YYYY р., HH:mm',\n            LLLL: 'dddd, D MMMM YYYY р., HH:mm',\n        },\n        calendar: {\n            sameDay: processHoursFunction('[Сьогодні '),\n            nextDay: processHoursFunction('[Завтра '),\n            lastDay: processHoursFunction('[Вчора '),\n            nextWeek: processHoursFunction('[У] dddd ['),\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                    case 3:\n                    case 5:\n                    case 6:\n                        return processHoursFunction('[Минулої] dddd [').call(this);\n                    case 1:\n                    case 2:\n                    case 4:\n                        return processHoursFunction('[Минулого] dddd [').call(this);\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'за %s',\n            past: '%s тому',\n            s: 'декілька секунд',\n            ss: relativeTimeWithPlural,\n            m: relativeTimeWithPlural,\n            mm: relativeTimeWithPlural,\n            h: 'годину',\n            hh: relativeTimeWithPlural,\n            d: 'день',\n            dd: relativeTimeWithPlural,\n            M: 'місяць',\n            MM: relativeTimeWithPlural,\n            y: 'рік',\n            yy: relativeTimeWithPlural,\n        },\n        // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason\n        meridiemParse: /ночі|ранку|дня|вечора/,\n        isPM: function (input) {\n            return /^(дня|вечора)$/.test(input);\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'ночі';\n            } else if (hour < 12) {\n                return 'ранку';\n            } else if (hour < 17) {\n                return 'дня';\n            } else {\n                return 'вечора';\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(й|го)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'M':\n                case 'd':\n                case 'DDD':\n                case 'w':\n                case 'W':\n                    return number + '-й';\n                case 'D':\n                    return number + '-го';\n                default:\n                    return number;\n            }\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return uk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Urdu [ur]\n//! author : Sawood Alam : https://github.com/ibnesayeed\n//! author : Zack : https://github.com/ZackVision\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var months = [\n            'جنوری',\n            'فروری',\n            'مارچ',\n            'اپریل',\n            'مئی',\n            'جون',\n            'جولائی',\n            'اگست',\n            'ستمبر',\n            'اکتوبر',\n            'نومبر',\n            'دسمبر',\n        ],\n        days = ['اتوار', 'پیر', 'منگل', 'بدھ', 'جمعرات', 'جمعہ', 'ہفتہ'];\n\n    var ur = moment.defineLocale('ur', {\n        months: months,\n        monthsShort: months,\n        weekdays: days,\n        weekdaysShort: days,\n        weekdaysMin: days,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd، D MMMM YYYY HH:mm',\n        },\n        meridiemParse: /صبح|شام/,\n        isPM: function (input) {\n            return 'شام' === input;\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'صبح';\n            }\n            return 'شام';\n        },\n        calendar: {\n            sameDay: '[آج بوقت] LT',\n            nextDay: '[کل بوقت] LT',\n            nextWeek: 'dddd [بوقت] LT',\n            lastDay: '[گذشتہ روز بوقت] LT',\n            lastWeek: '[گذشتہ] dddd [بوقت] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s بعد',\n            past: '%s قبل',\n            s: 'چند سیکنڈ',\n            ss: '%d سیکنڈ',\n            m: 'ایک منٹ',\n            mm: '%d منٹ',\n            h: 'ایک گھنٹہ',\n            hh: '%d گھنٹے',\n            d: 'ایک دن',\n            dd: '%d دن',\n            M: 'ایک ماہ',\n            MM: '%d ماہ',\n            y: 'ایک سال',\n            yy: '%d سال',\n        },\n        preparse: function (string) {\n            return string.replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string.replace(/,/g, '،');\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return ur;\n\n})));\n","//! moment.js locale configuration\n//! locale : Uzbek [uz]\n//! author : Sardor Muminov : https://github.com/muminoff\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var uz = moment.defineLocale('uz', {\n        months: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(\n            '_'\n        ),\n        monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n        weekdays: 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'),\n        weekdaysShort: 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'),\n        weekdaysMin: 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'D MMMM YYYY, dddd HH:mm',\n        },\n        calendar: {\n            sameDay: '[Бугун соат] LT [да]',\n            nextDay: '[Эртага] LT [да]',\n            nextWeek: 'dddd [куни соат] LT [да]',\n            lastDay: '[Кеча соат] LT [да]',\n            lastWeek: '[Утган] dddd [куни соат] LT [да]',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'Якин %s ичида',\n            past: 'Бир неча %s олдин',\n            s: 'фурсат',\n            ss: '%d фурсат',\n            m: 'бир дакика',\n            mm: '%d дакика',\n            h: 'бир соат',\n            hh: '%d соат',\n            d: 'бир кун',\n            dd: '%d кун',\n            M: 'бир ой',\n            MM: '%d ой',\n            y: 'бир йил',\n            yy: '%d йил',\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return uz;\n\n})));\n","//! moment.js locale configuration\n//! locale : Uzbek Latin [uz-latn]\n//! author : Rasulbek Mirzayev : github.com/Rasulbeeek\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var uzLatn = moment.defineLocale('uz-latn', {\n        months: 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split(\n            '_'\n        ),\n        monthsShort: 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'),\n        weekdays: 'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split(\n            '_'\n        ),\n        weekdaysShort: 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'),\n        weekdaysMin: 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'D MMMM YYYY, dddd HH:mm',\n        },\n        calendar: {\n            sameDay: '[Bugun soat] LT [da]',\n            nextDay: '[Ertaga] LT [da]',\n            nextWeek: 'dddd [kuni soat] LT [da]',\n            lastDay: '[Kecha soat] LT [da]',\n            lastWeek: \"[O'tgan] dddd [kuni soat] LT [da]\",\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'Yaqin %s ichida',\n            past: 'Bir necha %s oldin',\n            s: 'soniya',\n            ss: '%d soniya',\n            m: 'bir daqiqa',\n            mm: '%d daqiqa',\n            h: 'bir soat',\n            hh: '%d soat',\n            d: 'bir kun',\n            dd: '%d kun',\n            M: 'bir oy',\n            MM: '%d oy',\n            y: 'bir yil',\n            yy: '%d yil',\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return uzLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Vietnamese [vi]\n//! author : Bang Nguyen : https://github.com/bangnk\n//! author : Chien Kira : https://github.com/chienkira\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var vi = moment.defineLocale('vi', {\n        months: 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split(\n            '_'\n        ),\n        monthsShort: 'Thg 01_Thg 02_Thg 03_Thg 04_Thg 05_Thg 06_Thg 07_Thg 08_Thg 09_Thg 10_Thg 11_Thg 12'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split(\n            '_'\n        ),\n        weekdaysShort: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n        weekdaysMin: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n        weekdaysParseExact: true,\n        meridiemParse: /sa|ch/i,\n        isPM: function (input) {\n            return /^ch$/i.test(input);\n        },\n        meridiem: function (hours, minutes, isLower) {\n            if (hours < 12) {\n                return isLower ? 'sa' : 'SA';\n            } else {\n                return isLower ? 'ch' : 'CH';\n            }\n        },\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM [năm] YYYY',\n            LLL: 'D MMMM [năm] YYYY HH:mm',\n            LLLL: 'dddd, D MMMM [năm] YYYY HH:mm',\n            l: 'DD/M/YYYY',\n            ll: 'D MMM YYYY',\n            lll: 'D MMM YYYY HH:mm',\n            llll: 'ddd, D MMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Hôm nay lúc] LT',\n            nextDay: '[Ngày mai lúc] LT',\n            nextWeek: 'dddd [tuần tới lúc] LT',\n            lastDay: '[Hôm qua lúc] LT',\n            lastWeek: 'dddd [tuần trước lúc] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s tới',\n            past: '%s trước',\n            s: 'vài giây',\n            ss: '%d giây',\n            m: 'một phút',\n            mm: '%d phút',\n            h: 'một giờ',\n            hh: '%d giờ',\n            d: 'một ngày',\n            dd: '%d ngày',\n            w: 'một tuần',\n            ww: '%d tuần',\n            M: 'một tháng',\n            MM: '%d tháng',\n            y: 'một năm',\n            yy: '%d năm',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}/,\n        ordinal: function (number) {\n            return number;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return vi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Pseudo [x-pseudo]\n//! author : Andrew Hood : https://github.com/andrewhood125\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var xPseudo = moment.defineLocale('x-pseudo', {\n        months: 'J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér'.split(\n            '_'\n        ),\n        monthsShort: 'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split(\n            '_'\n        ),\n        weekdaysShort: 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'),\n        weekdaysMin: 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[T~ódá~ý át] LT',\n            nextDay: '[T~ómó~rró~w át] LT',\n            nextWeek: 'dddd [át] LT',\n            lastDay: '[Ý~ést~érdá~ý át] LT',\n            lastWeek: '[L~ást] dddd [át] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'í~ñ %s',\n            past: '%s á~gó',\n            s: 'á ~féw ~sécó~ñds',\n            ss: '%d s~écóñ~ds',\n            m: 'á ~míñ~úté',\n            mm: '%d m~íñú~tés',\n            h: 'á~ñ hó~úr',\n            hh: '%d h~óúrs',\n            d: 'á ~dáý',\n            dd: '%d d~áýs',\n            M: 'á ~móñ~th',\n            MM: '%d m~óñt~hs',\n            y: 'á ~ýéár',\n            yy: '%d ý~éárs',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                        ? 'st'\n                        : b === 2\n                        ? 'nd'\n                        : b === 3\n                        ? 'rd'\n                        : 'th';\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return xPseudo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Yoruba Nigeria [yo]\n//! author : Atolagbe Abisoye : https://github.com/andela-batolagbe\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var yo = moment.defineLocale('yo', {\n        months: 'Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split(\n            '_'\n        ),\n        monthsShort: 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'),\n        weekdays: 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'),\n        weekdaysShort: 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'),\n        weekdaysMin: 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb'.split('_'),\n        longDateFormat: {\n            LT: 'h:mm A',\n            LTS: 'h:mm:ss A',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY h:mm A',\n            LLLL: 'dddd, D MMMM YYYY h:mm A',\n        },\n        calendar: {\n            sameDay: '[Ònì ni] LT',\n            nextDay: '[Ọ̀la ni] LT',\n            nextWeek: \"dddd [Ọsẹ̀ tón'bọ] [ni] LT\",\n            lastDay: '[Àna ni] LT',\n            lastWeek: 'dddd [Ọsẹ̀ tólọ́] [ni] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'ní %s',\n            past: '%s kọjá',\n            s: 'ìsẹjú aayá die',\n            ss: 'aayá %d',\n            m: 'ìsẹjú kan',\n            mm: 'ìsẹjú %d',\n            h: 'wákati kan',\n            hh: 'wákati %d',\n            d: 'ọjọ́ kan',\n            dd: 'ọjọ́ %d',\n            M: 'osù kan',\n            MM: 'osù %d',\n            y: 'ọdún kan',\n            yy: 'ọdún %d',\n        },\n        dayOfMonthOrdinalParse: /ọjọ́\\s\\d{1,2}/,\n        ordinal: 'ọjọ́ %d',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return yo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (China) [zh-cn]\n//! author : suupic : https://github.com/suupic\n//! author : Zeno Zeng : https://github.com/zenozeng\n//! author : uu109 : https://github.com/uu109\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var zhCn = moment.defineLocale('zh-cn', {\n        months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n            '_'\n        ),\n        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n            '_'\n        ),\n        weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n        weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'),\n        weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'YYYY/MM/DD',\n            LL: 'YYYY年M月D日',\n            LLL: 'YYYY年M月D日Ah点mm分',\n            LLLL: 'YYYY年M月D日ddddAh点mm分',\n            l: 'YYYY/M/D',\n            ll: 'YYYY年M月D日',\n            lll: 'YYYY年M月D日 HH:mm',\n            llll: 'YYYY年M月D日dddd HH:mm',\n        },\n        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n                return hour;\n            } else if (meridiem === '下午' || meridiem === '晚上') {\n                return hour + 12;\n            } else {\n                // '中午'\n                return hour >= 11 ? hour : hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            var hm = hour * 100 + minute;\n            if (hm < 600) {\n                return '凌晨';\n            } else if (hm < 900) {\n                return '早上';\n            } else if (hm < 1130) {\n                return '上午';\n            } else if (hm < 1230) {\n                return '中午';\n            } else if (hm < 1800) {\n                return '下午';\n            } else {\n                return '晚上';\n            }\n        },\n        calendar: {\n            sameDay: '[今天]LT',\n            nextDay: '[明天]LT',\n            nextWeek: function (now) {\n                if (now.week() !== this.week()) {\n                    return '[下]dddLT';\n                } else {\n                    return '[本]dddLT';\n                }\n            },\n            lastDay: '[昨天]LT',\n            lastWeek: function (now) {\n                if (this.week() !== now.week()) {\n                    return '[上]dddLT';\n                } else {\n                    return '[本]dddLT';\n                }\n            },\n            sameElse: 'L',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(日|月|周)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'DDD':\n                    return number + '日';\n                case 'M':\n                    return number + '月';\n                case 'w':\n                case 'W':\n                    return number + '周';\n                default:\n                    return number;\n            }\n        },\n        relativeTime: {\n            future: '%s后',\n            past: '%s前',\n            s: '几秒',\n            ss: '%d 秒',\n            m: '1 分钟',\n            mm: '%d 分钟',\n            h: '1 小时',\n            hh: '%d 小时',\n            d: '1 天',\n            dd: '%d 天',\n            w: '1 周',\n            ww: '%d 周',\n            M: '1 个月',\n            MM: '%d 个月',\n            y: '1 年',\n            yy: '%d 年',\n        },\n        week: {\n            // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return zhCn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Hong Kong) [zh-hk]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n//! author : Konstantin : https://github.com/skfd\n//! author : Anthony : https://github.com/anthonylau\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var zhHk = moment.defineLocale('zh-hk', {\n        months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n            '_'\n        ),\n        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n            '_'\n        ),\n        weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n        weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n        weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'YYYY/MM/DD',\n            LL: 'YYYY年M月D日',\n            LLL: 'YYYY年M月D日 HH:mm',\n            LLLL: 'YYYY年M月D日dddd HH:mm',\n            l: 'YYYY/M/D',\n            ll: 'YYYY年M月D日',\n            lll: 'YYYY年M月D日 HH:mm',\n            llll: 'YYYY年M月D日dddd HH:mm',\n        },\n        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n                return hour;\n            } else if (meridiem === '中午') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === '下午' || meridiem === '晚上') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            var hm = hour * 100 + minute;\n            if (hm < 600) {\n                return '凌晨';\n            } else if (hm < 900) {\n                return '早上';\n            } else if (hm < 1200) {\n                return '上午';\n            } else if (hm === 1200) {\n                return '中午';\n            } else if (hm < 1800) {\n                return '下午';\n            } else {\n                return '晚上';\n            }\n        },\n        calendar: {\n            sameDay: '[今天]LT',\n            nextDay: '[明天]LT',\n            nextWeek: '[下]ddddLT',\n            lastDay: '[昨天]LT',\n            lastWeek: '[上]ddddLT',\n            sameElse: 'L',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'DDD':\n                    return number + '日';\n                case 'M':\n                    return number + '月';\n                case 'w':\n                case 'W':\n                    return number + '週';\n                default:\n                    return number;\n            }\n        },\n        relativeTime: {\n            future: '%s後',\n            past: '%s前',\n            s: '幾秒',\n            ss: '%d 秒',\n            m: '1 分鐘',\n            mm: '%d 分鐘',\n            h: '1 小時',\n            hh: '%d 小時',\n            d: '1 天',\n            dd: '%d 天',\n            M: '1 個月',\n            MM: '%d 個月',\n            y: '1 年',\n            yy: '%d 年',\n        },\n    });\n\n    return zhHk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Macau) [zh-mo]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n//! author : Tan Yuanhong : https://github.com/le0tan\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var zhMo = moment.defineLocale('zh-mo', {\n        months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n            '_'\n        ),\n        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n            '_'\n        ),\n        weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n        weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n        weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'YYYY年M月D日',\n            LLL: 'YYYY年M月D日 HH:mm',\n            LLLL: 'YYYY年M月D日dddd HH:mm',\n            l: 'D/M/YYYY',\n            ll: 'YYYY年M月D日',\n            lll: 'YYYY年M月D日 HH:mm',\n            llll: 'YYYY年M月D日dddd HH:mm',\n        },\n        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n                return hour;\n            } else if (meridiem === '中午') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === '下午' || meridiem === '晚上') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            var hm = hour * 100 + minute;\n            if (hm < 600) {\n                return '凌晨';\n            } else if (hm < 900) {\n                return '早上';\n            } else if (hm < 1130) {\n                return '上午';\n            } else if (hm < 1230) {\n                return '中午';\n            } else if (hm < 1800) {\n                return '下午';\n            } else {\n                return '晚上';\n            }\n        },\n        calendar: {\n            sameDay: '[今天] LT',\n            nextDay: '[明天] LT',\n            nextWeek: '[下]dddd LT',\n            lastDay: '[昨天] LT',\n            lastWeek: '[上]dddd LT',\n            sameElse: 'L',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'DDD':\n                    return number + '日';\n                case 'M':\n                    return number + '月';\n                case 'w':\n                case 'W':\n                    return number + '週';\n                default:\n                    return number;\n            }\n        },\n        relativeTime: {\n            future: '%s內',\n            past: '%s前',\n            s: '幾秒',\n            ss: '%d 秒',\n            m: '1 分鐘',\n            mm: '%d 分鐘',\n            h: '1 小時',\n            hh: '%d 小時',\n            d: '1 天',\n            dd: '%d 天',\n            M: '1 個月',\n            MM: '%d 個月',\n            y: '1 年',\n            yy: '%d 年',\n        },\n    });\n\n    return zhMo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Taiwan) [zh-tw]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var zhTw = moment.defineLocale('zh-tw', {\n        months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n            '_'\n        ),\n        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n            '_'\n        ),\n        weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n        weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n        weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'YYYY/MM/DD',\n            LL: 'YYYY年M月D日',\n            LLL: 'YYYY年M月D日 HH:mm',\n            LLLL: 'YYYY年M月D日dddd HH:mm',\n            l: 'YYYY/M/D',\n            ll: 'YYYY年M月D日',\n            lll: 'YYYY年M月D日 HH:mm',\n            llll: 'YYYY年M月D日dddd HH:mm',\n        },\n        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n                return hour;\n            } else if (meridiem === '中午') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === '下午' || meridiem === '晚上') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            var hm = hour * 100 + minute;\n            if (hm < 600) {\n                return '凌晨';\n            } else if (hm < 900) {\n                return '早上';\n            } else if (hm < 1130) {\n                return '上午';\n            } else if (hm < 1230) {\n                return '中午';\n            } else if (hm < 1800) {\n                return '下午';\n            } else {\n                return '晚上';\n            }\n        },\n        calendar: {\n            sameDay: '[今天] LT',\n            nextDay: '[明天] LT',\n            nextWeek: '[下]dddd LT',\n            lastDay: '[昨天] LT',\n            lastWeek: '[上]dddd LT',\n            sameElse: 'L',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'DDD':\n                    return number + '日';\n                case 'M':\n                    return number + '月';\n                case 'w':\n                case 'W':\n                    return number + '週';\n                default:\n                    return number;\n            }\n        },\n        relativeTime: {\n            future: '%s後',\n            past: '%s前',\n            s: '幾秒',\n            ss: '%d 秒',\n            m: '1 分鐘',\n            mm: '%d 分鐘',\n            h: '1 小時',\n            hh: '%d 小時',\n            d: '1 天',\n            dd: '%d 天',\n            M: '1 個月',\n            MM: '%d 個月',\n            y: '1 年',\n            yy: '%d 年',\n        },\n    });\n\n    return zhTw;\n\n})));\n","/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nexport default function normalizeComponent (\n  scriptExports,\n  render,\n  staticRenderFns,\n  functionalTemplate,\n  injectStyles,\n  scopeId,\n  moduleIdentifier, /* server only */\n  shadowMode /* vue-cli only */\n) {\n  // Vue.extend constructor export interop\n  var options = typeof scriptExports === 'function'\n    ? scriptExports.options\n    : scriptExports\n\n  // render functions\n  if (render) {\n    options.render = render\n    options.staticRenderFns = staticRenderFns\n    options._compiled = true\n  }\n\n  // functional template\n  if (functionalTemplate) {\n    options.functional = true\n  }\n\n  // scopedId\n  if (scopeId) {\n    options._scopeId = 'data-v-' + scopeId\n  }\n\n  var hook\n  if (moduleIdentifier) { // server build\n    hook = function (context) {\n      // 2.3 injection\n      context =\n        context || // cached call\n        (this.$vnode && this.$vnode.ssrContext) || // stateful\n        (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n      // 2.2 with runInNewContext: true\n      if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n        context = __VUE_SSR_CONTEXT__\n      }\n      // inject component styles\n      if (injectStyles) {\n        injectStyles.call(this, context)\n      }\n      // register component module identifier for async chunk inferrence\n      if (context && context._registeredComponents) {\n        context._registeredComponents.add(moduleIdentifier)\n      }\n    }\n    // used by ssr in case component is cached and beforeCreate\n    // never gets called\n    options._ssrRegister = hook\n  } else if (injectStyles) {\n    hook = shadowMode\n      ? function () {\n        injectStyles.call(\n          this,\n          (options.functional ? this.parent : this).$root.$options.shadowRoot\n        )\n      }\n      : injectStyles\n  }\n\n  if (hook) {\n    if (options.functional) {\n      // for template-only hot-reload because in that case the render fn doesn't\n      // go through the normalizer\n      options._injectStyles = hook\n      // register for functional component in vue file\n      var originalRender = options.render\n      options.render = function renderWithStyleInjection (h, context) {\n        hook.call(context)\n        return originalRender(h, context)\n      }\n    } else {\n      // inject component registration as beforeCreate hook\n      var existing = options.beforeCreate\n      options.beforeCreate = existing\n        ? [].concat(existing, hook)\n        : [hook]\n    }\n  }\n\n  return {\n    exports: scriptExports,\n    options: options\n  }\n}\n","(function (global, undefined) {\n    \"use strict\";\n\n    if (global.setImmediate) {\n        return;\n    }\n\n    var nextHandle = 1; // Spec says greater than zero\n    var tasksByHandle = {};\n    var currentlyRunningATask = false;\n    var doc = global.document;\n    var registerImmediate;\n\n    function setImmediate(callback) {\n      // Callback can either be a function or a string\n      if (typeof callback !== \"function\") {\n        callback = new Function(\"\" + callback);\n      }\n      // Copy function arguments\n      var args = new Array(arguments.length - 1);\n      for (var i = 0; i < args.length; i++) {\n          args[i] = arguments[i + 1];\n      }\n      // Store and register the task\n      var task = { callback: callback, args: args };\n      tasksByHandle[nextHandle] = task;\n      registerImmediate(nextHandle);\n      return nextHandle++;\n    }\n\n    function clearImmediate(handle) {\n        delete tasksByHandle[handle];\n    }\n\n    function run(task) {\n        var callback = task.callback;\n        var args = task.args;\n        switch (args.length) {\n        case 0:\n            callback();\n            break;\n        case 1:\n            callback(args[0]);\n            break;\n        case 2:\n            callback(args[0], args[1]);\n            break;\n        case 3:\n            callback(args[0], args[1], args[2]);\n            break;\n        default:\n            callback.apply(undefined, args);\n            break;\n        }\n    }\n\n    function runIfPresent(handle) {\n        // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n        // So if we're currently running a task, we'll need to delay this invocation.\n        if (currentlyRunningATask) {\n            // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n            // \"too much recursion\" error.\n            setTimeout(runIfPresent, 0, handle);\n        } else {\n            var task = tasksByHandle[handle];\n            if (task) {\n                currentlyRunningATask = true;\n                try {\n                    run(task);\n                } finally {\n                    clearImmediate(handle);\n                    currentlyRunningATask = false;\n                }\n            }\n        }\n    }\n\n    function installNextTickImplementation() {\n        registerImmediate = function(handle) {\n            process.nextTick(function () { runIfPresent(handle); });\n        };\n    }\n\n    function canUsePostMessage() {\n        // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n        // where `global.postMessage` means something completely different and can't be used for this purpose.\n        if (global.postMessage && !global.importScripts) {\n            var postMessageIsAsynchronous = true;\n            var oldOnMessage = global.onmessage;\n            global.onmessage = function() {\n                postMessageIsAsynchronous = false;\n            };\n            global.postMessage(\"\", \"*\");\n            global.onmessage = oldOnMessage;\n            return postMessageIsAsynchronous;\n        }\n    }\n\n    function installPostMessageImplementation() {\n        // Installs an event handler on `global` for the `message` event: see\n        // * https://developer.mozilla.org/en/DOM/window.postMessage\n        // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n\n        var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n        var onGlobalMessage = function(event) {\n            if (event.source === global &&\n                typeof event.data === \"string\" &&\n                event.data.indexOf(messagePrefix) === 0) {\n                runIfPresent(+event.data.slice(messagePrefix.length));\n            }\n        };\n\n        if (global.addEventListener) {\n            global.addEventListener(\"message\", onGlobalMessage, false);\n        } else {\n            global.attachEvent(\"onmessage\", onGlobalMessage);\n        }\n\n        registerImmediate = function(handle) {\n            global.postMessage(messagePrefix + handle, \"*\");\n        };\n    }\n\n    function installMessageChannelImplementation() {\n        var channel = new MessageChannel();\n        channel.port1.onmessage = function(event) {\n            var handle = event.data;\n            runIfPresent(handle);\n        };\n\n        registerImmediate = function(handle) {\n            channel.port2.postMessage(handle);\n        };\n    }\n\n    function installReadyStateChangeImplementation() {\n        var html = doc.documentElement;\n        registerImmediate = function(handle) {\n            // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted\n            // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n            var script = doc.createElement(\"script\");\n            script.onreadystatechange = function () {\n                runIfPresent(handle);\n                script.onreadystatechange = null;\n                html.removeChild(script);\n                script = null;\n            };\n            html.appendChild(script);\n        };\n    }\n\n    function installSetTimeoutImplementation() {\n        registerImmediate = function(handle) {\n            setTimeout(runIfPresent, 0, handle);\n        };\n    }\n\n    // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live.\n    var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global);\n    attachTo = attachTo && attachTo.setTimeout ? attachTo : global;\n\n    // Don't get fooled by e.g. browserify environments.\n    if ({}.toString.call(global.process) === \"[object process]\") {\n        // For Node.js before 0.9\n        installNextTickImplementation();\n\n    } else if (canUsePostMessage()) {\n        // For non-IE10 modern browsers\n        installPostMessageImplementation();\n\n    } else if (global.MessageChannel) {\n        // For web workers, where supported\n        installMessageChannelImplementation();\n\n    } else if (doc && \"onreadystatechange\" in doc.createElement(\"script\")) {\n        // For IE 6–8\n        installReadyStateChangeImplementation();\n\n    } else {\n        // For older browsers\n        installSetTimeoutImplementation();\n    }\n\n    attachTo.setImmediate = setImmediate;\n    attachTo.clearImmediate = clearImmediate;\n}(typeof self === \"undefined\" ? typeof global === \"undefined\" ? this : global : self));\n","module.exports = function() {\n\tthrow new Error(\"define cannot be used indirect\");\n};\n","/* globals __webpack_amd_options__ */\nmodule.exports = __webpack_amd_options__;\n"],"sourceRoot":""}