{"version":3,"sources":["../node_modules/@babel/runtime/regenerator/index.js","../node_modules/react/index.js","../node_modules/react/jsx-runtime.js","../node_modules/big.js/big.js","../node_modules/@babel/runtime/helpers/classCallCheck.js","../node_modules/@babel/runtime/helpers/createClass.js","../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/superPropBase.js","../node_modules/@babel/runtime/helpers/esm/get.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/esm/createSuper.js","../node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","../node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/chart.js/dist/chunks/helpers.segment.js","../node_modules/chart.js/dist/chart.esm.js","../node_modules/@babel/runtime/helpers/asyncToGenerator.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@babel/runtime/helpers/inherits.js","../node_modules/@babel/runtime/helpers/createSuper.js","../node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/moment/moment.js","../node_modules/buffer/index.js","../node_modules/near-api-js/lib/utils/key_pair.js","../node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../node_modules/@babel/runtime/helpers/objectSpread2.js","../node_modules/@babel/runtime/helpers/createForOfIteratorHelper.js","../node_modules/near-api-js/node_modules/bn.js/lib/bn.js","../node_modules/near-api-js/lib/browser-index.js","../node_modules/@babel/runtime/helpers/getPrototypeOf.js","../node_modules/borsh/lib/index.js","../node_modules/near-api-js/node_modules/depd/lib/browser/index.js","../node_modules/near-api-js/lib/utils/errors.js","../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../node_modules/o3/index.js","../node_modules/u3/index.js","../node_modules/@babel/runtime/helpers/defineProperty.js","../node_modules/@babel/runtime/helpers/slicedToArray.js","../node_modules/near-api-js/lib/providers/index.js","../node_modules/react-dom/index.js","../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/webpack/buildin/global.js","../node_modules/near-api-js/lib/key_stores/keystore.js","../node_modules/@babel/runtime/helpers/wrapNativeSuper.js","../node_modules/near-api-js/lib/utils/web.js","../node_modules/near-api-js/lib/transaction.js","../node_modules/near-api-js/lib/account.js","../node_modules/react-singleton-hook/es/utils/env.js","../node_modules/react-singleton-hook/es/utils/warning.js","../node_modules/object-assign/index.js","../node_modules/capability/index.js","../node_modules/error-polyfill/lib/prepareStackTrace.js","../node_modules/@babel/runtime/helpers/get.js","../node_modules/@babel/runtime/helpers/toConsumableArray.js","../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","../node_modules/@babel/runtime/helpers/setPrototypeOf.js","../node_modules/webpack/buildin/module.js","../node_modules/near-api-js/lib/utils/enums.js","../node_modules/near-api-js/lib/utils/exponential-backoff.js","../node_modules/near-api-js/lib/utils/rpc_errors.js","../node_modules/react-singleton-hook/es/components/SingleItemContainer.js","../node_modules/react-singleton-hook/es/components/SingletonHooksContainer.js","../node_modules/react-singleton-hook/es/singletonHook.js","../node_modules/error-polyfill/index.js","../node_modules/capability/es5.js","../node_modules/capability/lib/index.js","../node_modules/@babel/runtime/helpers/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js","../node_modules/@babel/runtime/helpers/assertThisInitialized.js","../node_modules/near-api-js/lib/key_stores/in_memory_key_store.js","../node_modules/near-api-js/lib/utils/serialize.js","../node_modules/near-api-js/lib/common-index.js","../node_modules/near-api-js/lib/providers/provider.js","../node_modules/near-api-js/lib/utils/index.js","../node_modules/near-api-js/lib/utils/format.js","../node_modules/js-sha256/src/sha256.js","../node_modules/near-api-js/lib/account_creator.js","../node_modules/near-api-js/lib/connection.js","../node_modules/near-api-js/lib/signer.js","../node_modules/near-api-js/lib/contract.js","../node_modules/near-api-js/lib/near.js","../node_modules/@supercharge/promise-pool/dist/promise-pool.js","../node_modules/@supercharge/promise-pool/dist/promise-pool-error.js","../node_modules/@supercharge/promise-pool/dist/stop-the-promise-pool-error.js","../node_modules/@supercharge/promise-pool/dist/index.js","../node_modules/google-palette/palette.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../../src/utils.ts","../../src/chart.tsx","../../src/typedCharts.tsx","../node_modules/react/cjs/react.production.min.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/scheduler/index.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/regenerator-runtime/runtime.js","../node_modules/error-polyfill/lib/index.js","../node_modules/capability/lib/definitions.js","../node_modules/capability/lib/CapabilityDetector.js","../node_modules/error-polyfill/lib/v8.js","../node_modules/error-polyfill/lib/non-v8/index.js","../node_modules/error-polyfill/lib/non-v8/FrameStringSource.js","../node_modules/o3/lib/index.js","../node_modules/o3/lib/Class.js","../node_modules/o3/lib/abstractMethod.js","../node_modules/u3/lib/index.js","../node_modules/u3/lib/cache.js","../node_modules/u3/lib/eachCombination.js","../node_modules/error-polyfill/lib/non-v8/FrameStringParser.js","../node_modules/error-polyfill/lib/non-v8/Frame.js","../node_modules/error-polyfill/lib/unsupported.js","../../../js/src/util/index.js","../../../js/src/dom/event-handler.js","../../../js/src/dom/data.js","../../../js/src/base-component.js","../../../js/src/util/component-functions.js","../../../js/src/alert.js","../../../js/src/button.js","../../../js/src/dom/manipulator.js","../../../js/src/dom/selector-engine.js","../../../js/src/carousel.js","../../../js/src/collapse.js","../../../node_modules/@popperjs/core/lib/enums.js","../../../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","../../../node_modules/@popperjs/core/lib/dom-utils/getWindow.js","../../../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","../../../node_modules/@popperjs/core/lib/modifiers/applyStyles.js","../../../node_modules/@popperjs/core/lib/utils/getBasePlacement.js","../../../node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","../../../node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","../../../node_modules/@popperjs/core/lib/dom-utils/contains.js","../../../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","../../../node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","../../../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","../../../node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","../../../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","../../../node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","../../../node_modules/@popperjs/core/lib/utils/math.js","../../../node_modules/@popperjs/core/lib/utils/within.js","../../../node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","../../../node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","../../../node_modules/@popperjs/core/lib/utils/expandToHashMap.js","../../../node_modules/@popperjs/core/lib/modifiers/arrow.js","../../../node_modules/@popperjs/core/lib/utils/getVariation.js","../../../node_modules/@popperjs/core/lib/modifiers/computeStyles.js","../../../node_modules/@popperjs/core/lib/modifiers/eventListeners.js","../../../node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","../../../node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","../../../node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","../../../node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","../../../node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","../../../node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","../../../node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","../../../node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","../../../node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","../../../node_modules/@popperjs/core/lib/utils/rectToClientRect.js","../../../node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","../../../node_modules/@popperjs/core/lib/utils/computeOffsets.js","../../../node_modules/@popperjs/core/lib/utils/detectOverflow.js","../../../node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","../../../node_modules/@popperjs/core/lib/modifiers/flip.js","../../../node_modules/@popperjs/core/lib/modifiers/hide.js","../../../node_modules/@popperjs/core/lib/modifiers/offset.js","../../../node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","../../../node_modules/@popperjs/core/lib/utils/getAltAxis.js","../../../node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","../../../node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","../../../node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","../../../node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","../../../node_modules/@popperjs/core/lib/utils/orderModifiers.js","../../../node_modules/@popperjs/core/lib/utils/debounce.js","../../../node_modules/@popperjs/core/lib/utils/mergeByName.js","../../../node_modules/@popperjs/core/lib/createPopper.js","../../../node_modules/@popperjs/core/lib/popper-lite.js","../../../node_modules/@popperjs/core/lib/popper.js","../../../js/src/dropdown.js","../../../js/src/util/scrollbar.js","../../../js/src/util/backdrop.js","../../../js/src/util/focustrap.js","../../../js/src/modal.js","../../../js/src/offcanvas.js","../../../js/src/util/sanitizer.js","../../../js/src/tooltip.js","../../../js/src/popover.js","../../../js/src/scrollspy.js","../../../js/src/tab.js","../../../js/src/toast.js","../../../js/index.umd.js","../node_modules/@babel/runtime/helpers/superPropBase.js","../node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/iterableToArray.js","../node_modules/@babel/runtime/helpers/nonIterableSpread.js","../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/typeof.js","../node_modules/@babel/runtime/helpers/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/nonIterableRest.js","../node_modules/chartjs-adapter-moment/dist/chartjs-adapter-moment.esm.js","../node_modules/base64-js/index.js","../node_modules/ieee754/index.js","../node_modules/isarray/index.js","../node_modules/near-api-js/lib/key_stores/browser-index.js","../node_modules/near-api-js/node_modules/tweetnacl/nacl-fast.js","../node_modules/@babel/runtime/helpers/isNativeFunction.js","../node_modules/@babel/runtime/helpers/construct.js","../node_modules/borsh/node_modules/bn.js/lib/bn.js","../node_modules/bs58/index.js","../node_modules/base-x/src/index.js","../node_modules/safe-buffer/index.js","../node_modules/text-encoding-utf-8/lib/encoding.lib.mjs","../node_modules/near-api-js/lib/key_stores/browser_local_storage_key_store.js","../node_modules/near-api-js/lib/key_stores/merge_key_store.js","../node_modules/near-api-js/lib/providers/json-rpc-provider.js","../node_modules/http-errors/index.js","../node_modules/depd/lib/browser/index.js","../node_modules/setprototypeof/index.js","../node_modules/statuses/index.js","../node_modules/inherits/inherits_browser.js","../node_modules/toidentifier/index.js","../node_modules/mustache/mustache.js","../node_modules/process/browser.js","../node_modules/webpack/buildin/amd-options.js","../node_modules/near-api-js/lib/validators.js","../node_modules/near-api-js/lib/constants.js","../node_modules/near-api-js/lib/account_multisig.js","../node_modules/near-api-js/lib/wallet-account.js","../node_modules/near-api-js/lib/browser-connect.js","../node_modules/@supercharge/promise-pool/dist/promise-pool-executor.js","../node_modules/@supercharge/promise-pool/dist/return-value.js","../node_modules/@supercharge/promise-pool/dist/stoppable.js","../node_modules/chart.js/auto/auto.esm.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js"],"names":["module","exports","require","GLOBAL","Big","MAX_DP","MAX_POWER","NAME","INVALID","INVALID_DP","DIV_BY_ZERO","P","UNDEFINED","NUMERIC","round","x","sd","rm","more","xc","c","constructor","RM","Error","length","e","unshift","pop","stringify","doExponential","isNonzero","s","join","n","charAt","slice","abs","this","cmp","y","isneg","yc","i","j","k","l","div","a","b","dp","DP","bl","bt","ri","bz","ai","al","r","rl","q","qc","qi","p","push","shift","eq","gt","gte","lt","lte","minus","sub","t","xlty","plus","xe","ye","reverse","mod","ygtx","times","add","pow","one","prec","sqrt","half","Math","toExponential","indexOf","mul","Array","toFixed","toJSON","toString","NE","PE","toNumber","Number","strict","toPrecision","valueOf","_Big_","TypeError","String","nl","test","replace","search","substring","parse","prototype","roundDown","roundHalfUp","roundHalfEven","roundUp","define","instance","Constructor","__esModule","_defineProperties","target","props","descriptor","enumerable","configurable","writable","Object","defineProperty","key","protoProps","staticProps","_toConsumableArray","arr","isArray","arrayLikeToArray","iter","Symbol","iterator","from","unsupportedIterableToArray","_assertThisInitialized","self","ReferenceError","_getPrototypeOf","o","setPrototypeOf","getPrototypeOf","__proto__","_superPropBase","object","property","hasOwnProperty","call","Reflect","get","receiver","base","desc","getOwnPropertyDescriptor","arguments","value","apply","_setPrototypeOf","_inherits","subClass","superClass","create","_typeof","obj","_possibleConstructorReturn","_createSuper","Derived","hasNativeReflectConstruct","construct","sham","Proxy","Boolean","result","Super","NewTarget","_createForOfIteratorHelper","allowArrayLike","it","F","done","_e","f","err","normalCompletion","didErr","step","next","_e2","_classCallCheck","_createClass","requestAnimFrame","window","callback","requestAnimationFrame","throttled","fn","thisArg","updateFn","updateArgs","args","ticking","rest","_toLeftRightCenter","align","_alignStartEnd","start","end","noop","uid","id","isNullOrUndef","type","substr","isObject","isNumberFinite","isFinite","finiteOrDefault","defaultValue","valueOrDefault","toDimension","dimension","endsWith","parseFloat","each","loopable","len","keys","_elementsEqual","a0","a1","ilen","v0","v1","datasetIndex","index","clone$1","source","map","klen","isValidKey","_merger","options","tval","sval","merge","sources","merger","mergeIf","_mergerIf","indexOfDotOrLength","idx","resolveObjectKey","pos","_capitalize","str","toUpperCase","defined","isFunction","setsEqual","size","item","has","PI","TAU","PITAU","INFINITY","POSITIVE_INFINITY","RAD_PER_DEG","HALF_PI","QUARTER_PI","TWO_THIRDS_PI","log10","sign","niceNum","range","roundedRange","almostEquals","niceRange","floor","fraction","isNumber","isNaN","epsilon","_setMinAndMaxByKey","array","min","max","toRadians","degrees","toDegrees","radians","_decimalPlaces","getAngleFromPoint","centrePoint","anglePoint","distanceFromXCenter","distanceFromYCenter","radialDistanceFromCenter","angle","atan2","distance","distanceBetweenPoints","pt1","pt2","_angleDiff","_normalizeAngle","_angleBetween","sameAngleIsFullCircle","angleToStart","angleToEnd","startToAngle","endToAngle","_limitValue","_isBetween","atEdge","elasticIn","sin","elasticOut","effects","linear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInSine","cos","easeOutSine","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","easeInElastic","easeOutElastic","easeInOutElastic","easeInBack","easeOutBack","easeInOutBack","easeInBounce","easeOutBounce","m","d","easeInOutBounce","A","B","C","D","E","hex","h1","h2","hexString","v","g","isShort","lim","h","p2b","n2b","b2n","n2p","RGB_RE","HUE_RE","hsl2rgbn","hsv2rgbn","hwb2rgbn","w","rgb","rgb2hsl","calln","hsl2rgb","hue","hueParse","exec","p1","p2","hwb2rgb","hsv2rgb","names$1","map$1","Z","Y","X","W","V","U","T","S","R","Q","O","N","M","L","K","G","H","I","J","names","OiceXe","antiquewEte","aqua","aquamarRe","azuY","beige","bisque","black","blanKedOmond","Xe","XeviTet","bPwn","burlywood","caMtXe","KartYuse","KocTate","cSO","cSnflowerXe","cSnsilk","crimson","cyan","xXe","xcyan","xgTMnPd","xWay","xgYF","xgYy","xkhaki","xmagFta","xTivegYF","xSange","xScEd","xYd","xsOmon","xsHgYF","xUXe","xUWay","xUgYy","xQe","xviTet","dAppRk","dApskyXe","dimWay","dimgYy","dodgerXe","fiYbrick","flSOwEte","foYstWAn","fuKsia","gaRsbSo","ghostwEte","gTd","gTMnPd","Way","gYF","gYFLw","gYy","honeyMw","hotpRk","RdianYd","Rdigo","ivSy","khaki","lavFMr","lavFMrXsh","lawngYF","NmoncEffon","ZXe","ZcSO","Zcyan","ZgTMnPdLw","ZWay","ZgYF","ZgYy","ZpRk","ZsOmon","ZsHgYF","ZskyXe","ZUWay","ZUgYy","ZstAlXe","ZLw","lime","limegYF","lRF","magFta","maPon","VaquamarRe","VXe","VScEd","VpurpN","VsHgYF","VUXe","VsprRggYF","VQe","VviTetYd","midnightXe","mRtcYam","mistyPse","moccasR","navajowEte","navy","Tdlace","Tive","TivedBb","Sange","SangeYd","ScEd","pOegTMnPd","pOegYF","pOeQe","pOeviTetYd","papayawEp","pHKpuff","peru","pRk","plum","powMrXe","purpN","YbeccapurpN","Yd","Psybrown","PyOXe","saddNbPwn","sOmon","sandybPwn","sHgYF","sHshell","siFna","silver","skyXe","UXe","UWay","UgYy","snow","sprRggYF","stAlXe","tan","teO","tEstN","tomato","Qe","viTet","JHt","wEte","wEtesmoke","Lw","LwgYF","nameParse","ok","nk","unpacked","tkeys","parseInt","unpack","transparent","toLowerCase","modHSL","ratio","tmp","clone","proto","assign","fromObject","input","functionParse","rgbParse","Color","ret","hexParse","_rgb","_valid","hslString","color","weight","me","w2","c1","c2","w1","val","deg","rotate","index_esm","isPatternOrGradient","CanvasGradient","CanvasPattern","getHoverColor","saturate","darken","overrides","descriptors","getScope$1","node","split","set","root","scope","values","defaults","_descriptors","animation","undefined","backgroundColor","borderColor","datasets","devicePixelRatio","context","chart","platform","getDevicePixelRatio","elements","events","font","family","style","lineHeight","hover","hoverBackgroundColor","ctx","hoverBorderColor","hoverColor","indexAxis","interaction","mode","intersect","maintainAspectRatio","onHover","onClick","parsing","plugins","responsive","scale","scales","showLine","drawActiveElementsOnTop","describe","name","targetScope","targetName","scopeObject","targetScopeObject","privateName","defineProperties","local","_scriptable","startsWith","_indexable","_fallback","_measureText","data","gc","longest","string","textWidth","measureText","width","_longestText","arrayOfThings","cache","garbageCollect","save","jlen","thing","nestedThing","restore","gcLen","splice","_alignPixel","pixel","currentDevicePixelRatio","halfWidth","clearCanvas","canvas","getContext","resetTransform","clearRect","height","drawPoint","xOffset","yOffset","cornerRadius","pointStyle","rotation","radius","rad","translate","drawImage","beginPath","arc","closePath","moveTo","lineTo","SQRT1_2","rect","fill","borderWidth","stroke","_isPointInArea","point","area","margin","left","right","top","bottom","clipArea","clip","unclipArea","_steppedLineTo","previous","flip","midpoint","_bezierCurveTo","bezierCurveTo","cp1x","cp2x","cp1y","cp2y","renderText","text","line","opts","lines","strokeWidth","strokeColor","setRenderOpts","strokeStyle","lineWidth","strokeText","maxWidth","fillText","decorateText","translation","fillStyle","textAlign","textBaseline","strikethrough","underline","metrics","actualBoundingBoxLeft","actualBoundingBoxRight","actualBoundingBoxAscent","actualBoundingBoxDescent","yDecoration","decorationWidth","addRoundedRectPath","topLeft","bottomLeft","bottomRight","topRight","LINE_HEIGHT","RegExp","FONT_STYLE","toLineHeight","matches","match","_readValueToProps","objProps","read","prop","toTRBL","toTRBLCorners","toPadding","toFont","fallback","console","warn","toFontString","resolve","inputs","info","cacheable","createContext","parentContext","_lookup","table","mid","hi","lo","_lookupByKey","_rlookupByKey","arrayEvents","unlistenArrayEvents","listener","stub","_chartjs","listeners","forEach","_arrayUnique","items","Set","_createResolver","scopes","prefixes","rootScopes","getTarget","_resolve","toStringTag","deleteProperty","_keys","_cached","_resolveWithPrefixes","_scopes","getKeysFromAllScopes","includes","ownKeys","storage","_storage","_attachContext","proxy","subProxy","descriptorDefaults","_cacheable","_proxy","_context","_subProxy","_stack","setContext","override","isScriptable","delete","needsSubResolver","createSubResolver","_resolveScriptable","isIndexable","filter","resolver","_resolveArray","_resolveWithContext","allKeys","scriptable","indexable","_allKeys","readKey","prefix","resolveFallback","getScope","parent","addScopes","parentScopes","parentFallback","_rootScopes","allScopes","addScopesFromKey","_getTarget","subGetTarget","resolveKeysFromAllScopes","EPSILON","getPoint","points","skip","getValueAxis","splineCurve","firstPoint","middlePoint","afterPoint","current","d01","d12","s01","s12","fa","fb","monotoneAdjust","deltaK","mK","alphaK","betaK","tauK","squaredMagnitude","pointCurrent","pointsLen","pointAfter","monotoneCompute","delta","pointBefore","valueAxis","iPixel","vPixel","capControlPoint","pt","_updateBezierControlPoints","loop","controlPoints","spanGaps","cubicInterpolationMode","slopeDelta","splineCurveMonotone","prev","tension","capBezierPoints","inArea","inAreaPrev","inAreaNext","_isDomSupported","document","_getParentNode","domNode","parentNode","host","parseMaxStyle","styleValue","parentProperty","valueInPixels","getComputedStyle","element","positions","getPositionedStyle","styles","suffix","getRelativePosition","evt","borderBox","boxSizing","paddings","borders","native","touches","offsetX","offsetY","box","shadowRoot","useOffsetPos","getBoundingClientRect","clientX","clientY","getCanvasPosition","round1","getMaximumSize","bbWidth","bbHeight","aspectRatio","margins","maxHeight","containerSize","container","containerStyle","containerBorder","containerPadding","clientWidth","clientHeight","getContainerSize","retinaScale","forceRatio","forceStyle","pixelRatio","deviceHeight","deviceWidth","setTransform","supportsEventListenerOptions","passiveSupported","passive","addEventListener","removeEventListener","readUsedSize","el","getPropertyValue","getStyle","_pointInLine","_steppedInterpolation","_bezierInterpolation","cp1","cp2","intlCache","Map","formatNumber","num","locale","cacheKey","JSON","formatter","Intl","NumberFormat","getNumberFormat","format","getRtlAdapter","rtl","rectX","setWidth","xPlus","leftForLtr","itemWidth","getRightToLeftAdapter","_itemWidth","overrideTextDirection","direction","original","getPropertyPriority","setProperty","prevTextDirection","restoreTextDirection","propertyFn","between","compare","normalize","normalizeSegment","count","_boundSegment","segment","bounds","prevValue","startBound","endBound","getSegment","inside","subStart","shouldStart","shouldStop","_boundSegments","segments","splitByStyles","segmentOptions","chartContext","_chart","baseStyle","readStyle","_datasetIndex","prevStyle","addStyle","st","dir","styleChanged","p0","p0DataIndex","p1DataIndex","doSplitByStyles","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","Animator","_request","_charts","_running","_lastDate","anims","date","callbacks","numSteps","duration","initial","currentStep","_update","_refresh","Date","now","remaining","running","draw","_active","_total","tick","_notify","charts","complete","progress","event","cb","_getAnims","reduce","acc","cur","_duration","cancel","animator","interpolators","boolean","to","factor","c0","valid","mix","number","Animation","cfg","currentValue","_fn","_easing","easing","_start","delay","_loop","_target","_prop","_from","_to","_promises","elapsed","remain","promises","Promise","res","rej","resolved","method","animationOptions","colors","properties","numbers","active","resize","show","animations","visible","hide","Animations","config","_properties","configure","animatedProps","getOwnPropertyNames","option","newOptions","$shared","$animations","resolveTargetOptions","_createAnimations","anim","wait","all","awaitAll","then","update","_animateOptions","scaleClip","allowedOverflow","getSortedDatasetIndices","filterVisible","metasets","_getSortedDatasetMetas","applyStack","stack","dsIndex","otherValue","singleMode","isStacked","meta","stacked","getOrCreateStack","stacks","stackKey","indexValue","subStack","getLastIndexInStack","vScale","positive","getMatchingVisibleMetas","updateStacks","controller","parsed","_cachedMeta","_stacks","iScale","iAxis","axis","vAxis","indexScale","valueScale","getStackKey","_top","_bottom","getFirstScaleId","clearStacks","_parsed","isDirectUpdateMode","cloneIfNotShared","cached","shared","DatasetController","_ctx","_cachedDataOpts","getMeta","_type","_parsing","_data","_objectData","_sharedOptions","_drawStart","_drawCount","enableOptionSharing","$context","_syncList","initialize","linkScales","_stacked","addElements","dataset","getDataset","chooseId","xid","xAxisID","yid","yAxisID","rid","rAxisID","iid","iAxisID","vid","vAxisID","xScale","getScaleForId","yScale","rScale","getDatasetMeta","scaleID","adata","convertObjectDataToArray","isExtensible","_dataCheck","datasetElementType","resetNewElements","stackChanged","oldStacked","_resyncElements","scopeKeys","datasetScopeKeys","getOptionScopes","createResolver","sorted","_sorted","parseArrayData","parseObjectData","parsePrimitiveData","labels","getLabels","singleScale","xAxisKey","yAxisKey","parsedValue","NaN","canStack","otherScale","_getOtherScale","hidden","createStack","NEGATIVE_INFINITY","getUserBounds","minDefined","maxDefined","otherMin","otherMax","_skip","updateRangeFromParsed","getParsed","label","getLabelForValue","_clip","disabled","toClip","defaultClip","getMaxOverflow","chartArea","resolveDatasetElementOptions","resolveDataElementOptions","dataIndex","raw","createDataContext","createDatasetContext","_resolveElementOptions","dataElementType","elementType","sharing","datasetElementScopeKeys","resolveNamedOptions","freeze","transition","datasetAnimationScopeKeys","sharedOptions","_animationsDisabled","_resolveAnimations","getSharedOptions","_setStyle","arg1","arg2","numMeta","numData","_insertElements","_removeElements","move","updateElements","removed","_dataChanges","_sync","newCount","computeMinSampleSize","curr","_cache","$bar","visibleMetas","concat","getAllParsedValues","sort","getAllScaleValues","_length","updateMinAndPrev","getPixelForValue","ticks","getPixelForTick","parseValue","entry","startValue","endValue","barStart","barEnd","_custom","parseFloatBar","parseArrayOrPrimitive","isFloatBar","custom","setBorderSkipped","edge","borderSkipped","horizontal","borderProps","enableBorderRadius","parseEdge","orig","v2","startEnd","setInflateAmount","inflateAmount","BarController","iAxisKey","vAxisKey","bars","reset","getBasePixel","isHorizontal","ruler","_getRuler","firstOpts","includeOptions","updateSharedOptions","vpixels","head","_calculateBarValuePixels","ipixels","_calculateBarIndexPixels","center","updateElement","last","grouped","_getStacks","pixels","barThickness","_startPixel","_endPixel","stackCount","_getStackCount","categoryPercentage","barPercentage","baseValue","minBarLength","actualBase","floating","getDataVisibility","barSign","halfGrid","getLineWidthForValue","skipNull","maxBarThickness","Infinity","percent","chunk","computeFlexCategoryTraits","thickness","computeFitCategoryTraits","stackIndex","_getStackIndex","rects","_index_","offset","grid","_value_","beginAtZero","BubbleController","getPixelForDecimal","tooltip","title","DoughnutController","innerRadius","outerRadius","getter","circumference","isDatasetVisible","_getRotation","_getCircumference","arcs","spacing","getMaxBorderWidth","getMaxOffset","maxSize","cutout","chartWeight","_getRingWeight","_getRotationExtents","ratioX","ratioY","startAngle","endAngle","startX","startY","endX","endY","calcMax","calcMin","maxX","maxY","minX","minY","getRatioAndOffset","maxRadius","radiusLength","_getVisibleDatasetWeightTotal","total","calculateTotal","_getRingWeightOffset","animateRotate","calculateCircumference","animationOpts","centerX","centerY","animateScale","_circumference","metaData","borderAlign","hoverBorderWidth","hoverOffset","ringWeightOffset","legend","generateLabels","legendItem","toggleDataVisibility","tooltipItem","dataLabel","formattedValue","LineController","_dataset","animationsDisabled","pointCount","getStartAndCountOfVisiblePoints","_scaleRanges","newRanges","xmin","xmax","ymin","ymax","changed","scaleRangesChanged","_decimated","animated","maxGapLength","directUpdate","prevParsed","nullData","stop","border","lastPoint","updateControlPoints","PolarAreaController","_updateRadius","minSize","cutoutPercentage","getVisibleDatasetCount","xCenter","yCenter","datasetStartAngle","getIndexAngle","defaultAngle","countVisibleElements","_computeAngle","getDistanceFromCenterForValue","angleLines","display","circular","pointLabels","PieController","RadarController","_fullLoop","pointPosition","getPointPositionForValue","ScatterController","controllers","abstract","DateAdapter","timestamp","amount","unit","weekday","members","adapters","_date","getRelativePosition$1","binarySearch","metaset","lookupMethod","_reversePixels","getRange","optimizedEvaluateItems","position","handler","getSortedVisibleDatasetMetas","getIntersectItems","useFinalPosition","_minPadding","inRange","getNearestCartesianItems","distanceMetric","useX","useY","deltaX","deltaY","getDistanceMetricForAxis","minDistance","getCenterPoint","getNearestItems","getProps","getNearestRadialItems","getAxisItems","rangeMethod","intersectsItem","evaluateAllVisibleItems","Interaction","modes","nearest","STATIC_POSITIONS","filterByPosition","filterDynamicPositionByAxis","sortByWeight","setLayoutDims","layouts","params","layout","wrap","stackWeight","placed","buildStacks","vBoxMaxWidth","hBoxMaxHeight","fullSize","availableWidth","availableHeight","getCombinedMax","maxPadding","updateMaxPadding","boxPadding","updateDims","getPadding","newWidth","outerWidth","newHeight","outerHeight","widthChanged","heightChanged","same","other","getMargins","marginForPositions","fitBoxes","boxes","refit","refitBoxes","setBoxDims","placeBoxes","userPadding","padding","autoPadding","_layers","z","layoutItem","minPadding","layoutBoxes","wrapBoxes","centerHorizontal","centerVertical","leftAndTop","rightAndBottom","vertical","buildLayoutBoxes","verticalBoxes","horizontalBoxes","beforeLayout","visibleVerticalBoxCount","updatePos","change","handleMaxPadding","BasePlatform","BasicPlatform","EVENT_TYPES","touchstart","touchmove","touchend","pointerenter","pointerdown","pointermove","pointerup","pointerleave","pointerout","isNullOrEmpty","eventListenerOptions","removeListener","nodeListContains","nodeList","contains","createAttachObserver","observer","MutationObserver","entries","trigger","addedNodes","removedNodes","observe","childList","subtree","createDetachObserver","drpListeningCharts","oldDevicePixelRatio","onWindowResize","dpr","createResizeObserver","ResizeObserver","contentRect","listenDevicePixelRatioChanges","releaseObserver","disconnect","unlistenDevicePixelRatioChanges","createProxyAndListen","fromNativeEvent","addListener","DomPlatform","renderHeight","getAttribute","renderWidth","displayWidth","displayHeight","initCanvas","removeAttribute","setAttribute","proxies","$proxies","attach","detach","isConnected","Element","final","defaultRoutes","formatters","numeric","tickValue","notation","maxTick","calculateDelta","logDelta","numDecimal","minimumFractionDigits","maximumFractionDigits","logarithmic","Ticks","autoSkip","tickOpts","ticksLimit","maxTicksLimit","tickLength","_tickSize","maxScale","maxChart","_maxLength","determineMaxTicks","majorIndices","major","enabled","getMajorIndices","numMajorIndices","first","newTicks","ceil","skipMajors","evenMajorSpacing","diff","getEvenSpacing","factors","_factorize","calculateSpacing","avgMajorSpacing","majorStart","majorEnd","grace","drawBorder","drawOnChartArea","drawTicks","tickWidth","tickColor","minRotation","maxRotation","mirror","textStrokeWidth","textStrokeColor","autoSkipPadding","labelOffset","minor","crossAlign","showLabelBackdrop","backdropColor","backdropPadding","route","offsetFromEdge","sample","numItems","increment","getPixelForGridLine","offsetGridLines","validIndex","lineValue","getTickMarkLength","getTitleHeight","titleAlign","reverseAlign","Scale","_margins","paddingTop","paddingBottom","paddingLeft","paddingRight","labelRotation","_range","_gridLineItems","_labelItems","_labelSizes","_longestTextCache","_userMax","_userMin","_suggestedMax","_suggestedMin","_ticksLength","_borderValue","_dataLimitsCached","suggestedMin","suggestedMax","metas","getMinMax","xLabels","yLabels","beforeUpdate","sampleSize","beforeSetDimensions","setDimensions","afterSetDimensions","beforeDataLimits","determineDataLimits","afterDataLimits","minmax","keepZero","_addGrace","beforeBuildTicks","buildTicks","afterBuildTicks","samplingEnabled","_convertTicksToLabels","beforeCalculateLabelRotation","calculateLabelRotation","afterCalculateLabelRotation","beforeFit","fit","afterFit","afterUpdate","startPixel","endPixel","reversePixels","_alignToPixels","alignToPixels","notifyPlugins","_callHooks","beforeTickToLabelConversion","afterTickToLabelConversion","maxLabelDiagonal","numTicks","_isVisible","labelSizes","_getLabelSizes","maxLabelWidth","widest","maxLabelHeight","highest","asin","titleOpts","gridOpts","titleHeight","tickPadding","angleRadians","labelHeight","labelWidth","_calculatePadding","_handleMargins","isRotated","labelsBelowTicks","offsetLeft","offsetRight","generateTickLabels","_computeLabelSizes","tickFont","fontString","nestedLabel","caches","widths","heights","widestLabelSize","highestLabelSize","_resolveTickFontOptions","valueAt","decimal","getBaseValue","createTickContext","optionTicks","rot","borderValue","alignedLineValue","tx1","ty1","tx2","ty2","x1","y1","x2","y2","ticksLength","tl","borderOpts","axisWidth","axisHalfWidth","alignBorderValue","positionAxisID","limit","optsAtIndex","lineColor","tickBorderDash","tickBorderDashOffset","lineCount","textOffset","tickAndPadding","hTickAndPadding","_getXAxisLabelAlignment","_getYAxisLabelAlignment","halfCount","backdrop","labelPadding","fillRect","findIndex","_computeGridLineItems","drawLine","setLineDash","lineDashOffset","lastLineWidth","_computeLabelArea","_computeLabelItems","titleX","titleY","titleArgs","drawBackground","drawGrid","drawTitle","drawLabels","tz","gz","axisID","fontSize","TypedRegistry","isPrototypeOf","parentScope","isIChartComponent","register","itemDefaults","routes","propertyParts","sourceName","sourceScope","parts","routeDefaults","registerDefaults","Registry","_typedRegistries","_each","_get","typedRegistry","arg","reg","_getRegistryForType","isForType","_exec","itemReg","registry","component","camelMethod","PluginService","_init","hook","_createDescriptors","plugin","cancelable","_oldCache","_notifyStateChanges","getPlugin","allPlugins","getOpts","pluginOpts","createDescriptors","previousDescriptors","some","pluginScopeKeys","getIndexAxis","datasetDefaults","determineAxis","scaleOptions","initOptions","chartDefaults","configScales","chartIndexAxis","firstIDs","scaleConf","error","defaultId","getDefaultScaleIDFromAxis","defaultScaleOptions","defaultID","getAxisFromDefaultScaleID","mergeScaleConfig","initData","keyCache","keysCached","cachedKeys","generate","addIfFound","Config","_config","initConfig","_scopeCache","_resolverCache","clearCache","clear","datasetType","additionalOptionScopes","mainScope","resetCache","keyLists","_cachedScopes","getResolver","subPrefixes","needContext","subResolver","resolverCache","hasFunction","KNOWN_POSITIONS","positionIsHorizontal","compare2Level","l1","l2","onAnimationsComplete","onComplete","onAnimationProgress","onProgress","getCanvas","getElementById","instances","getChart","moveNumericKeys","intKey","Chart","userConfig","initialCanvas","existingChart","chartOptionScopes","OffscreenCanvas","_detectPlatform","updateConfig","acquireContext","_options","_aspectRatio","_metasets","_lastEvent","_listeners","_responsiveListeners","_sortedMetasets","_plugins","_hiddenIndices","attached","_doResize","timeout","clearTimeout","setTimeout","debounce","resizeDelay","listen","_initialize","bindEvents","_resizeBeforeDraw","_resize","newSize","newRatio","onResize","render","axisOptions","scaleOpts","updated","isRadial","dposition","dtype","scaleType","getScale","init","hasUpdated","_destroyDatasetMeta","newControllers","_removeUnreferencedMetasets","order","updateIndex","ControllerClass","getController","getElement","_updateMetasets","_resetElements","animsDisabled","_updateScales","_checkEventBindings","_updateHiddenIndices","invalidate","buildOrUpdateControllers","buildOrUpdateElements","_updateLayout","_updateDatasets","_eventHandler","_updateHoverStyles","ensureScalesHaveIDs","buildOrUpdateScales","existingEvents","newEvents","unbindEvents","_getUniformDataChanges","datasetCount","makeSet","changeSet","noArea","_idx","_updateDataset","layers","_drawDatasets","_drawDataset","useClip","setDatasetVisibility","_updateVisibility","_destroy","remove","_stop","releaseContext","toDataURL","bindUserEvents","bindResponsiveEvents","_add","detached","_remove","isAttached","activeElements","lastActive","notify","replay","hoverOptions","deactivated","activated","updateHoverStyle","inChartArea","eventFilter","_handleEvent","_getActiveElements","isClick","_isClickEvent","lastEvent","determineLastEvent","getElementsAtEventForMode","invalidatePlugins","clipArc","pixelMargin","angleMargin","parseBorderRadius$1","angleDelta","borderRadius","halfThickness","innerLimit","computeOuterLimit","outerArcLimit","outerStart","outerEnd","innerStart","innerEnd","rThetaToXY","theta","pathArc","innerR","spacingOffset","alpha","avNogSpacingRadius","angleOffset","outerStartAdjustedRadius","outerEndAdjustedRadius","outerStartAdjustedAngle","outerEndAdjustedAngle","innerStartAdjustedRadius","innerEndAdjustedRadius","innerStartAdjustedAngle","innerEndAdjustedAngle","pCenter","p4","p8","inner","lineJoin","fullCircles","drawFullCircleBorders","version","unregister","ArcElement","chartX","chartY","rAdjust","betweenAngles","withinRadius","halfAngle","halfRadius","radiusOffset","drawArc","setStyle","lineCap","pathVars","paramsStart","paramsEnd","segmentStart","segmentEnd","outside","pathSegment","lineMethod","stepped","getLineMethod","fastPathSegment","prevX","lastY","avgX","countX","pointIndex","drawX","truncX","_getSegmentMethod","usePath2D","Path2D","path","_path","strokePathWithCache","segmentMethod","strokePathDirect","LineElement","_points","_segments","_pointsUpdated","findStartAndEnd","solidSegments","_computeSegments","_interpolate","_getInterpolationMethod","interpolated","inRange$1","hitRadius","PointElement","mouseX","mouseY","hoverRadius","getBarBounds","bar","skipOrLimit","boundingRects","maxW","maxH","parseBorderWidth","maxR","enableBorder","parseBorderRadius","outer","skipX","skipY","addNormalRectPath","inflateRect","refRect","BarElement","addRectPath","cleanDecimatedDataset","cleanDecimatedData","plugin_decimation","algorithm","beforeElementsUpdate","xAxis","getStartAndCountOfVisiblePointsSimplified","threshold","decimated","samples","maxAreaPoint","maxArea","nextA","bucketWidth","sampledIndex","endIndex","avgY","avgRangeStart","avgRangeEnd","avgRangeLength","rangeOffs","rangeTo","pointAx","pointAy","lttbDecimation","minIndex","maxIndex","startIndex","xMin","dx","lastIndex","intermediateIndex1","intermediateIndex2","minMaxDecimation","destroy","decodeFill","fillOption","parseFillOption","simpleArc","computeBoundary","computeCircularBoundary","computeLinearBoundary","findSegmentEnd","addPointsBelow","sourcePoint","linesBelow","postponed","findPoint","interpolate","pointValue","linePoints","firstValue","lastValue","getLineByIndex","sourcePoints","below","getLinesBelow","createBoundaryLine","buildStackLine","boundary","pointsFromSegments","resolveTarget","propagate","visited","clipY","lineLoop","getBounds","_getEdge","clipBounds","interpolatedLineTo","interpolatedPoint","_fill","tpoints","tgt","subBounds","fillSource","src","notShape","targetLoop","drawfill","lineOpts","above","doFill","plugin_filler","afterDatasetsUpdate","_args","$filler","beforeDraw","drawTime","beforeDatasetsDraw","beforeDatasetDraw","getBoxSize","labelOpts","boxHeight","boxWidth","usePointStyle","itemHeight","Legend","_added","legendHitBoxes","_hoveredItem","doughnutMode","legendItems","columnSizes","lineWidths","buildLabels","labelFont","_computeTitleHeight","_fitRows","_fitCols","hitboxes","totalHeight","row","heightLimit","totalWidth","currentColWidth","currentColHeight","col","rtlHelper","hitbox","_draw","cursor","defaultColor","fontColor","halfFontSize","textDirection","lineDash","drawOptions","SQRT2","yBoxTop","xBoxLeft","drawLegendBox","_textX","titleFont","titlePadding","topPaddingPlusHalfFontSize","hitBox","lh","onLeave","isListened","hoveredItem","_getLegendItemAt","sameItem","plugin_legend","_element","adjustHitBoxes","afterEvent","handleEvent","ci","Title","_padding","textSize","fontOpts","_drawArgs","plugin_title","titleBlock","createTitle","WeakMap","plugin_subtitle","positioners","average","hasValue","tooltipPosition","eventPosition","nearestElement","tp","pushOrConcat","toPush","splitNewlines","createTooltipItem","getLabelAndValue","getTooltipSize","body","footer","bodyFont","footerFont","titleLineCount","footerLineCount","bodyLineItemCount","combinedBodyLength","bodyItem","before","after","beforeBody","afterBody","titleSpacing","titleMarginBottom","displayColors","bodySpacing","footerMarginTop","footerSpacing","widthPadding","maxLineWidth","determineXAlign","yAlign","chartWidth","xAlign","caret","caretSize","caretPadding","doesNotFitWithAlign","determineAlignment","determineYAlign","getBackgroundPoint","alignment","paddingAndSize","alignX","alignY","getAlignedX","getBeforeAfterBodyLines","overrideCallbacks","Tooltip","opacity","_eventPosition","_size","_cachedAnimations","_tooltipItems","dataPoints","caretX","caretY","labelColors","labelPointStyles","labelTextColors","tooltipItems","beforeTitle","afterTitle","bodyItems","scoped","beforeLabel","afterLabel","beforeFooter","afterFooter","itemSort","labelColor","labelPointStyle","labelTextColor","_createItems","getTitle","getBeforeBody","getBody","getAfterBody","getFooter","positionAndSize","backgroundPoint","external","tooltipPoint","caretPosition","getCaretPosition","x3","y3","ptX","ptY","titleColor","colorX","rtlColorX","yOffSet","colorY","multiKeyBackground","outerX","innerX","strokeRect","textColor","bodyAlign","bodyLineHeight","xLinePadding","fillLineOfText","bodyAlignForCalculation","bodyColor","_drawColorBox","footerAlign","footerColor","tooltipSize","drawCaret","quadraticCurveTo","animX","animY","_updateAnimationTarget","hasTooltipContent","globalAlpha","drawBody","drawFooter","positionChanged","_positionChanged","_ignoreReplayEvents","plugin_tooltip","afterInit","afterDraw","labelCount","Decimation","Filler","SubTitle","findOrAddLabel","addedLabels","addIfString","lastIndexOf","CategoryScale","_startValue","_valueRange","_addedLabels","added","getDecimalForPixel","generateTicks$1","generationOptions","dataRange","niceMin","niceMax","numSpaces","precision","maxTicks","maxDigits","includeBounds","maxSpaces","rmin","rmax","countDefined","minSpacing","rounded","almostWhole","decimalPlaces","relativeLabelSize","LinearScaleBase","_endValue","setMin","setMax","minSign","maxSign","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","stepSize","computeTickLimit","getTickLimit","_maxDigits","LinearScale","handleTickRangeOptions","isMajor","tickVal","LogarithmicScale","_zero","exp","endExp","endSignificand","significand","lastTick","generateTicks","getTickBackdropHeight","determineLimits","fitWithPointLabels","limits","valueCount","_pointLabels","pointLabelOpts","additionalAngle","centerPointLabels","getPointLabelContext","getPointPosition","drawingArea","plFont","updateLimits","setCenterPoint","_pointLabelItems","extra","outerDistance","pointLabelPosition","yForAngle","getTextAlignForAngle","leftForTextAlign","buildPointLabelItems","hLimits","vLimits","pathRadiusLine","RadialLinearScale","leftMovement","rightMovement","topMovement","bottomMovement","scalingFactor","scaledDistance","pointLabel","createPointLabelContext","distanceFromCenter","drawPointLabels","gridLineOpts","drawRadiusLine","animate","INTERVALS","millisecond","common","steps","second","minute","hour","day","week","month","quarter","year","UNITS","sorter","adapter","_adapter","_parseOpts","parser","isoWeekday","startOf","determineUnitForAutoTicks","minUnit","capacity","interval","addTick","time","timestamps","ticksFromTimestamps","majorUnit","setMajorTicks","TimeScale","_unit","_majorUnit","_offsets","_normalized","displayFormats","formats","normalized","_applyBounds","_getLabelBounds","endOf","getLabelTimestamps","timeOpts","_generate","_filterBetween","_getLabelCapacity","determineUnitForFormatting","determineMajorUnit","initOffsets","getDecimalForValue","hasWeekday","getDataTimestamps","tooltipFormat","datetime","minorFormat","majorFormat","_tickFormatFunction","offsets","ticksOpts","tickLabelWidth","cosRotation","sinRotation","tickFontSize","exampleTime","exampleLabel","_getLabelSize","prevSource","nextSource","prevTarget","nextTarget","span","TimeSeriesScale","_table","_minPos","_tableRange","_getTimestampsForTable","buildLookupTable","registerables","asyncGeneratorStep","gen","reject","_next","_throw","_defineProperty","isNativeReflectConstruct","possibleConstructorReturn","_asyncToGenerator","_slicedToArray","_i","_s","_arr","_n","_d","hookCallback","hooks","setHookCallback","hasOwnProp","isObjectEmpty","isUndefined","isDate","arrLen","extend","createUTC","createLocalOrUTC","utc","defaultParsingFlags","empty","unusedTokens","unusedInput","overflow","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","era","meridiem","rfc2822","weekdayMismatch","getParsingFlags","_pf","isValid","_isValid","flags","parsedParts","isNowValid","getTime","invalidWeekday","_strict","bigHour","isFrozen","createInvalid","fun","momentProperties","updateInProgress","copyConfig","momentPropertiesLen","_isAMomentObject","_f","_l","_tzm","_isUTC","_offset","_locale","Moment","updateOffset","isMoment","msg","suppressDeprecationWarnings","deprecate","firstTime","deprecationHandler","argLen","deprecations","deprecateSimple","Function","_dayOfMonthOrdinalParseLenient","_dayOfMonthOrdinalParse","_ordinalParse","mergeConfigs","parentConfig","childConfig","Locale","defaultCalendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","calendar","mom","output","_calendar","zeroFill","targetLength","forceSign","absNumber","zerosToFill","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","token","padded","ordinal","func","localeData","removeFormattingTokens","makeFormatFunction","formatMoment","expandFormat","invalidDate","replaceLongDateFormatTokens","longDateFormat","defaultLongDateFormat","LTS","LT","LL","LLL","LLLL","_longDateFormat","formatUpper","tok","defaultInvalidDate","_invalidDate","defaultOrdinal","defaultDayOfMonthOrdinalParse","_ordinal","defaultRelativeTime","future","past","ss","mm","hh","dd","ww","MM","yy","relativeTime","withoutSuffix","isFuture","_relativeTime","pastFuture","aliases","addUnitAlias","shorthand","lowerCase","normalizeUnits","units","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","priorities","addUnitPriority","priority","getPrioritizedUnits","unitsObj","u","isLeapYear","absFloor","toInt","argumentForCoercion","coercedNumber","makeGetSet","keepTime","set$1","daysInMonth","stringGet","stringSet","prioritized","prioritizedLen","regexes","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchTimestamp","matchWord","addRegexToken","regex","strictRegex","isStrict","getParseRegexForToken","unescapeFormat","regexEscape","matched","p3","tokens","addParseToken","tokenLen","addWeekParseToken","_w","addTimeToArrayFromToken","_a","YEAR","MONTH","DATE","HOUR","MINUTE","SECOND","MILLISECOND","WEEK","WEEKDAY","modMonth","monthsShort","months","monthsShortRegex","monthsRegex","monthsParse","defaultLocaleMonths","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","localeMonths","_months","isFormat","localeMonthsShort","_monthsShort","handleStrictParse","monthName","ii","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","localeMonthsParse","_monthsParseExact","setMonth","dayOfMonth","getSetMonth","getDaysInMonth","computeMonthsParse","_monthsShortStrictRegex","_monthsShortRegex","_monthsStrictRegex","_monthsRegex","cmpLenRev","shortPieces","longPieces","mixedPieces","daysInYear","parseTwoDigitYear","getSetYear","getIsLeapYear","createDate","ms","getFullYear","setFullYear","createUTCDate","UTC","getUTCFullYear","setUTCFullYear","firstWeekOffset","dow","doy","fwd","getUTCDay","dayOfYearFromWeeks","resYear","resDayOfYear","dayOfYear","weekOfYear","resWeek","weekOffset","weeksInYear","weekOffsetNext","localeWeek","_week","defaultLocaleWeek","localeFirstDayOfWeek","localeFirstDayOfYear","getSetWeek","getSetISOWeek","parseWeekday","weekdaysParse","parseIsoWeekday","shiftWeekdays","ws","weekdaysMin","weekdaysShort","weekdays","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","localeWeekdays","_weekdays","localeWeekdaysShort","_weekdaysShort","localeWeekdaysMin","_weekdaysMin","handleStrictParse$1","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","localeWeekdaysParse","_weekdaysParseExact","_fullWeekdaysParse","getSetDayOfWeek","getDay","getSetLocaleDayOfWeek","getSetISODayOfWeek","computeWeekdaysParse","_weekdaysStrictRegex","_weekdaysRegex","_weekdaysShortStrictRegex","_weekdaysShortRegex","_weekdaysMinStrictRegex","_weekdaysMinRegex","minp","shortp","longp","minPieces","hFormat","hours","kFormat","lowercase","minutes","matchMeridiem","_meridiemParse","localeIsPM","seconds","kInput","_isPm","isPM","_meridiem","pos1","pos2","defaultLocaleMeridiemParse","getSetHour","localeMeridiem","isLower","globalLocale","baseConfig","dayOfMonthOrdinalParse","meridiemParse","locales","localeFamilies","commonPrefix","arr1","arr2","minl","normalizeLocale","chooseLocale","loadLocale","isLocaleNameSane","oldLocale","_abbr","aliasedRequire","getSetGlobalLocale","getLocale","defineLocale","abbr","parentLocale","updateLocale","tmpLocale","listLocales","checkOverflow","_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","isoDatesLen","isoTimesLen","configFromStringAndFormat","extractFromRFC2822Strings","yearStr","monthStr","dayStr","hourStr","minuteStr","secondStr","untruncateYear","preprocessRFC2822","checkWeekday","weekdayStr","parsedInput","calculateOffset","obsOffset","militaryOffset","numOffset","hm","configFromRFC2822","parsedArray","setUTCMinutes","getUTCMinutes","configFromString","createFromInputFallback","currentDateArray","nowValue","_useUTC","getUTCMonth","getUTCDate","getMonth","getDate","configFromArray","currentDate","expectedWeekday","yearToUse","dayOfYearFromWeekInfo","_dayOfYear","_nextDay","weekYear","temp","weekdayOverflow","curWeek","GG","createLocal","gg","ISO_8601","RFC_2822","skipped","stringLength","totalParsedInputLength","meridiemFixWrap","erasConvertYear","isPm","meridiemHour","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","configfLen","score","configFromObject","dayOrDate","createFromConfig","prepareConfig","preparse","configFromInput","isUTC","prototypeMin","prototypeMax","pickBy","moments","ordering","isDurationValid","unitHasDecimal","orderLen","isValid$1","createInvalid$1","createDuration","Duration","years","quarters","weeks","isoWeek","days","milliseconds","_milliseconds","_days","_bubble","isDuration","absRound","compareArrays","array1","array2","dontConvert","lengthDiff","diffs","separator","utcOffset","offsetFromString","chunkOffset","matcher","cloneWithOffset","model","setTime","getDateOffset","getTimezoneOffset","getSetOffset","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","addSubtract","getSetZone","setOffsetToUTC","setOffsetToLocal","subtract","setOffsetToParsedOffset","tZone","hasAlignedHourOffset","isDaylightSavingTime","isDaylightSavingTimeShifted","_isDSTShifted","toArray","isLocal","isUtcOffset","isUtc","aspNetRegex","isoRegex","diffRes","parseIso","momentsDifference","inp","positiveMomentsDifference","isAfter","isBefore","createAdder","period","isAdding","invalid","isString","isMomentInput","isNumberOrStringArray","isMomentInputObject","objectTest","propertyTest","propertyLen","arrayTest","dataTypeTest","isCalendarSpec","getCalendarFormat","myMoment","calendar$1","sod","calendarFormat","localInput","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","asFloat","that","zoneDelta","monthDiff","wholeMonthDiff","anchor","toISOString","keepOffset","toDate","inspect","zone","inputString","defaultFormatUtc","defaultFormat","postformat","humanize","fromNow","toNow","newLocaleData","lang","MS_PER_SECOND","MS_PER_MINUTE","MS_PER_HOUR","MS_PER_400_YEARS","mod$1","dividend","divisor","localStartOfDate","utcStartOfDate","startOfDate","unix","toObject","isValid$2","parsingFlags","invalidAt","creationData","localeEras","eras","_eras","since","until","localeErasParse","eraName","narrow","localeErasConvertYear","getEraName","getEraNarrow","getEraAbbr","getEraYear","erasNameRegex","computeErasParse","_erasNameRegex","_erasRegex","erasAbbrRegex","_erasAbbrRegex","erasNarrowRegex","_erasNarrowRegex","matchEraAbbr","matchEraName","matchEraNarrow","matchEraYearOrdinal","_eraYearOrdinalRegex","abbrPieces","namePieces","narrowPieces","addWeekYearFormatToken","getSetWeekYear","getSetWeekYearHelper","getSetISOWeekYear","getISOWeeksInYear","getISOWeeksInISOWeekYear","isoWeekYear","getWeeksInYear","weekInfo","getWeeksInWeekYear","weeksTarget","setWeekAll","dayOfYearData","getSetQuarter","erasParse","eraYearOrdinalParse","getSetDayOfMonth","getSetDayOfYear","getSetMinute","getSetMillisecond","getSetSecond","parseMs","getZoneAbbr","getZoneName","createUnix","createInZone","parseZone","preParsePostFormat","for","eraNarrow","eraAbbr","eraYear","isoWeeks","weeksInWeekYear","isoWeeksInYear","isoWeeksInISOWeekYear","isDST","zoneAbbr","zoneName","dates","isDSTShifted","proto$1","get$1","field","setter","listMonthsImpl","out","listWeekdaysImpl","localeSorted","listMonths","listMonthsShort","listWeekdays","listWeekdaysShort","listWeekdaysMin","firstDayOfYear","firstDayOfWeek","langData","mathAbs","addSubtract$1","add$1","subtract$1","absCeil","bubble","monthsFromDays","monthsToDays","daysToMonths","as","valueOf$1","makeAs","alias","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","get$2","makeGetter","thresholds","substituteTimeAgo","relativeTime$1","posNegDuration","getSetRelativeTimeRounding","roundingFunction","getSetRelativeTimeThreshold","argWithSuffix","argThresholds","withSuffix","th","abs$1","toISOString$1","totalSign","ymSign","daysSign","hmsSign","proto$2","toIsoString","relativeTimeRounding","relativeTimeThreshold","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","TIME","TIME_SECONDS","TIME_MS","factory","base64","ieee754","kMaxLength","Buffer","TYPED_ARRAY_SUPPORT","createBuffer","RangeError","Uint8Array","encodingOrOffset","allocUnsafe","ArrayBuffer","byteOffset","byteLength","fromArrayLike","fromArrayBuffer","encoding","isEncoding","actual","write","fromString","isBuffer","checked","copy","buffer","assertSize","isView","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","bidirectionalIndexOf","arrayIndexOf","indexSize","arrLength","valLength","buf","readUInt16BE","foundIndex","found","hexWrite","strLen","utf8Write","blitBuffer","asciiWrite","byteArray","charCodeAt","asciiToBytes","latin1Write","base64Write","ucs2Write","utf16leToBytes","fromByteArray","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","codePoints","MAX_ARGUMENTS_LENGTH","fromCharCode","decodeCodePointsArray","SlowBuffer","alloc","INSPECT_MAX_BYTES","global","foo","subarray","typedArraySupport","poolSize","_augment","species","allocUnsafeSlow","_isBuffer","list","swap16","swap32","swap64","equals","thisStart","thisEnd","thisCopy","targetCopy","toHex","bytes","checkOffset","ext","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","sliceLen","readUIntLE","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","code","INVALID_BASE64_RE","leadSurrogate","toByteArray","trim","stringtrim","base64clean","dst","__importDefault","KeyPairEd25519","KeyPair","PublicKey","KeyType","tweetnacl_1","serialize_1","enums_1","str_to_key_type","keyType","ED25519","key_type_to_str","base_encode","message","signature","default","verify","encodedKey","base_decode","Assignable","curve","fromRandom","secretKey","keyPair","fromSecretKey","publicKey","newKeyPair","enumerableOnly","getOwnPropertySymbols","symbols","sym","_objectSpread2","getOwnPropertyDescriptors","assert","inherits","ctor","superCtor","super_","TempCtor","BN","endian","isBN","negative","words","red","wordSize","parseHex4Bits","parseHexByte","lowerBound","parseBase","dest","_initNumber","_initArray","_parseHex","_parseBase","off","_strip","limbLen","limbPow","word","imuln","_iaddn","_move","_expand","_normSign","zeros","groupSizes","groupBases","carry","groupSize","groupBase","isZero","modrn","idivn","toBuffer","toArrayLike","smallMulTo","ncarry","rword","maxJ","ArrayType","reqLength","allocate","_toArrayLikeLE","_toArrayLikeBE","clz32","_countBits","_zeroBits","bitLength","zeroBits","toTwos","inotn","iaddn","fromTwos","testn","notn","ineg","isNeg","neg","iuor","ior","or","uor","iuand","iand","and","uand","iuxor","ixor","xor","uxor","bytesNeeded","bitsLeft","setn","bit","wbit","iadd","isub","comb10MulTo","al0","ah0","al1","ah1","a2","al2","ah2","a3","al3","ah3","a4","al4","ah4","a5","al5","ah5","a6","al6","ah6","a7","al7","ah7","a8","al8","ah8","a9","al9","ah9","b0","bl0","bh0","b1","bl1","bh1","b2","bl2","bh2","b3","bl3","bh3","b4","bl4","bh4","b5","bl5","bh5","b6","bl6","bh6","b7","bl7","bh7","b8","bl8","bh8","b9","bl9","bh9","w0","imul","w3","w4","w5","w6","w7","w8","w9","w10","w11","w12","w13","w14","w15","w16","w17","w18","bigMulTo","hncarry","jumboMulTo","FFTM","mulTo","makeRBT","revBin","rb","permute","rbt","rws","iws","rtws","itws","transform","rtwdf","itwdf","rtwdf_","itwdf_","re","ie","ro","io","rx","guessLen13b","odd","conjugate","normalize13b","convert13b","ph","mulp","_","rwst","iwst","nrws","nrwst","niwst","rmws","mulf","isNegNum","muln","sqr","isqr","toBitArray","iushln","bits","carryMask","newCarry","ishln","iushrn","hint","extended","mask","maskedWords","ishrn","shln","ushln","shrn","ushrn","imaskn","maskn","isubn","addn","subn","iabs","_ishlnsubmul","_wordDiv","bhi","qj","divmod","divn","umod","divRound","dm","r2","andln","modn","egcd","isEven","yp","xp","im","isOdd","jm","gcd","_invmp","cmpn","invm","bincn","ucmp","gtn","gten","ltn","lten","eqn","Red","toRed","convertTo","_forceRed","fromRed","convertFrom","forceRed","redAdd","redIAdd","redSub","redISub","redShl","shl","redMul","_verify2","redIMul","redSqr","_verify1","redISqr","redSqrt","redInvm","redNeg","redPow","primes","k256","p224","p192","p25519","MPrime","_tmp","K256","P224","P192","P25519","prime","_prime","Mont","imod","rinv","minv","ireduce","rlen","imulK","strip","outLen","mod3","nOne","lpow","inv","wnd","currentLen","mont","__createBinding","k2","__setModuleDefault","__importStar","__exportStar","keyStores","__decorate","decorators","decorate","deserializeUnchecked","deserialize","serialize","BinaryReader","BinaryWriter","BorshError","baseDecode","baseEncode","bn_js_1","bs58_1","textDecoder","TextDecoder","fatal","encode","decode","INITIAL_LENGTH","fieldPath","originalMessage","fieldName","maybeResize","writeBuffer","writeU32","elem","handlingRangeError","propertyKey","propertyDescriptor","originalMethod","readBuffer","readU32","capitalizeFirstLetter","serializeField","schema","fieldType","writer","writeFixedArray","writeArray","kind","writeU8","serializeStruct","addToFieldPath","borshSerialize","structSchema","fields","deserializeField","reader","readFixedArray","readArray","readU8","deserializeStruct","classType","borshDeserialize","fieldValue","Writer","Reader","wrapfunction","wrapproperty","namespace","_file","_ignored","_namespace","_traced","_warned","function","logWarning","ErrorContext","TypedError","ArgumentTypeError","PositionalArgsError","argName","argType","argValue","transactionHash","process","_unsupportedIterableToArray","minLen","arrayWithHoles","iterableToArrayLimit","nonIterableRest","getTransactionLastResult","FinalExecutionStatusBasic","JsonRpcProvider","Provider","provider_1","json_rpc_provider_1","checkDCE","__REACT_DEVTOOLS_GLOBAL_HOOK__","_arrayLikeToArray","KeyStore","isNativeFunction","_wrapNativeSuper","Class","Wrapper","fetchJson","http_errors_1","exponential_backoff_1","providers_1","errors_1","connectionInfoOrUrl","json","connectionInfo","url","fetch","headers","response","status","signTransaction","createTransaction","SCHEMA","Action","SignedTransaction","Transaction","Signature","deleteAccount","deleteKey","addKey","stake","transfer","functionCall","stringifyJsonOrBytes","deployContract","createAccount","DeleteAccount","DeleteKey","AddKey","Stake","Transfer","FunctionCall","DeployContract","CreateAccount","IAction","functionCallAccessKey","fullAccessKey","AccessKey","AccessKeyPermission","FullAccessPermission","FunctionCallPermission","js_sha256_1","borsh_1","key_pair_1","Enum","nonce","permission","fullAccess","receiverId","methodNames","allowance","methodName","gas","deposit","accessKey","beneficiaryId","signerId","actions","blockHash","signTransactionObject","transaction","signer","accountId","networkId","hash","sha256","signMessage","signedTx","getPublicKey","Account","depd_1","transaction_1","rpc_errors_1","constants_1","parseJsonFromRawResponse","bytesJsonStringify","connection","accessKeyByPublicKeyCache","provider","query","request_type","account_id","finality","contractId","results","log","receiptIds","printLogs","logs","failure","findAccessKey","accessKeyInfo","block","header","signAndSendTransactionV1","signAndSendTransactionV2","returnError","txHash","sendTransaction","flatLogs","transaction_outcome","receipts_outcome","outcome","Failure","receipt_ids","parseRpcError","printLogsAndFailures","error_message","error_type","parseResultError","cachedAccessKey","public_key","signAndSendTransaction","contractAccount","newAccountId","functionCallV1","functionCallV2","validateArgs","DEFAULT_FUNCTION_CALL_GAS","attachedDeposit","walletMeta","walletCallbackUrl","stringifyArg","serializedArgs","method_name","args_base64","blockQuery","prefix_base64","getAccessKeys","accessKeys","authorizedApps","access_key","perm","receiver_id","experimental_protocolConfig","protocolConfig","state","costPerByte","runtime_config","storage_amount_per_byte","stateStaked","storage_usage","staked","locked","totalBalance","availableBalance","available","globalObject","batch","unstable_batchedUpdates","mount","createElement","React","warning","propIsEnumerable","propertyIsEnumerable","test1","test2","test3","letter","shouldUseNative","throwable","frames","warnings","warningIndex","frameIndex","superPropBase","arrayWithoutHoles","iterableToArray","nonIterableSpread","webpackPolyfill","paths","children","enum","startWaitTime","retryNumber","waitBackoff","getResult","waitTime","sleep","millis","getErrorTypeFromErrorMessage","formatError","ServerError","mustache_1","rpc_error_schema_json_1","error_messages_json_1","common_index_1","mustacheHelpers","formatNear","utils","formatNearAmount","ServerTransactionError","errorObj","errorClassName","walkSubtype","errorData","typeName","errorTypeName","errorName","server_error","server_tx_error","errorMessage","SingleItemContainer","_ref","initValue","useHookBody","applyStateChange","lastState","useRef","useLayoutEffect","_extends","SingletonHooksContainerMounted","SingletonHooksContainerRendered","SingletonHooksContainerMountedAutomatically","mountQueue","mountIntoContainerDefault","mountIntoContainer","SingletonHooksContainer","useEffect","_useState","useState","setHooks","Fragment","singletonHook","mounted","initStateCalculated","lastKnownState","consumers","newState","stateInitializer","setState","check","detector","capability","InMemoryKeyStore","keystore_1","WalletConnection","WalletAccount","ConnectedWalletAccount","Near","Signer","InMemorySigner","Contract","Connection","multisig","validators","transactions","providers","accountCreator","account_1","connection_1","signer_1","contract_1","near_1","wallet_account_1","IdType","ExecutionStatusBasic","txResult","SuccessValue","rpc_errors","enums","web","key_pair","parseNearAmount","NEAR_NOMINATION","NEAR_NOMINATION_EXP","ROUNDING_OFFSETS","BN10","trimTrailingZeroes","formatWithCommas","pattern","balance","fracDigits","balanceBN","roundingExp","wholeStr","fractionStr","padStart","amt","wholePart","fracPart","trimLeadingZeroes","padEnd","ERROR","WINDOW","JS_SHA256_NO_WINDOW","WEB_WORKER","NODE_JS","JS_SHA256_NO_NODE_JS","versions","COMMON_JS","JS_SHA256_NO_COMMON_JS","AMD","ARRAY_BUFFER","JS_SHA256_NO_ARRAY_BUFFER","HEX_CHARS","EXTRA","SHIFT","OUTPUT_TYPES","blocks","JS_SHA256_NO_ARRAY_BUFFER_IS_VIEW","createOutputMethod","outputType","is224","Sha256","createMethod","nodeWrap","crypto","eval","nodeMethod","createHash","digest","createHmacOutputMethod","HmacSha256","createHmacMethod","sharedMemory","h0","h3","h4","h5","h6","h7","hBytes","finalized","hashed","oKeyPad","iKeyPad","notString","lastByteIndex","finalize","s0","s1","maj","t1","ab","da","cd","bc","arrayBuffer","dataView","DataView","setUint32","innerHash","sha224","hmac","UrlAccountCreator","LocalAccountCreator","AccountCreator","web_1","masterAccount","initialBalance","helperUrl","newAccountPublicKey","getProvider","keyStore","getSigner","in_memory_key_store_1","setKey","getKey","nameFunction","isUint8Array","account","viewMethods","changeMethods","viewFunction","_changeMethod","callbackUrl","validateBNLike","rawResult","argMap","account_creator_1","fromConfig","nodeUrl","deps","sender","originator","sendMoney","PromisePool","promise_pool_executor_1","concurrency","errorHandler","withConcurrency","PromisePoolExecutor","withHandler","handleError","PromisePoolError","messageFrom","captureStackTrace","StopThePromisePoolError","promise_pool_1","palette","opt_begin","opt_end","function_type","INF","scheme","opt_index","varargs","listSchemes","Scheme","opt_groups","palettes","palettes_max","palettes_min","makeGenerator","color_func","bind","_number","take_head","shrinking_takes_head","color_func_cyclic","scheme_name","groups","cbf_max","addPalette","opt_is_cbf","addPalettes","opt_max","opt_cbf_max","shrinkByTakingHead","opt_idx","setColorFunction","opt_cyclic","fromPalettes","withColorFunction","registered_schemes","opt_number","cbf","schemes","opt_start","clamp","rgbColor","linearRgbColor","hsvColor","opt_s","opt_v","ColorFunction","Palette","PalettesList","SchemeType","poly","erf","tolSequentialColor","tolDivergingColor","tolRainbowColor","YlGn","YlGnBu","GnBu","BuGn","PuBuGn","PuBu","BuPu","RdPu","PuRd","OrRd","YlOrRd","YlOrBr","Purples","Blues","Greens","Oranges","Reds","Greys","PuOr","BrBG","PRGn","PiYG","RdBu","RdGy","RdYlBu","Spectral","RdYlGn","Accent","Dark2","Paired","Pastel1","Pastel2","Set1","Set2","Set3","_objectWithoutProperties","excluded","sourceKeys","sourceSymbolKeys","defaultDatasetIdKey","reforwardRef","ref","setLabels","currentData","nextLabels","setDatasets","nextDatasets","datasetIdKey","addedDatasets","nextDataset","currentDataset","find","cloneData","nextData","ChartComponent","redraw","fallbackContent","canvasRef","chartRef","renderChart","ChartJS","destroyChart","nextOptions","role","forwardRef","createTypedChart","Line","StrictMode","Profiler","Suspense","encodeURIComponent","isMounted","enqueueForceUpdate","enqueueReplaceState","enqueueSetState","refs","updater","isReactComponent","forceUpdate","isPureReactComponent","__self","__source","defaultProps","$$typeof","_owner","escape","_status","_result","ReactCurrentDispatcher","ReactCurrentBatchConfig","ReactCurrentOwner","IsSomeRendererActing","Children","only","Component","PureComponent","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","cloneElement","_calculateChangedBits","_currentValue","_currentValue2","_threadCount","Consumer","createFactory","createRef","isValidElement","lazy","_payload","memo","useCallback","useContext","useDebugValue","useImperativeHandle","useMemo","useReducer","aa","ba","ca","ea","ha","ia","ja","ka","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","propertyName","sanitizeURL","removeEmptyString","oa","pa","qa","ma","na","la","setAttributeNS","xlinkHref","ra","sa","ta","ua","wa","xa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ma","Ka","La","Na","Oa","Pa","prepareStackTrace","displayName","Qa","tag","_render","Ra","Sa","Ta","nodeName","Va","_valueTracker","getValue","setValue","stopTracking","Ua","Wa","Xa","activeElement","Ya","defaultChecked","_wrapperState","initialChecked","Za","initialValue","controlled","$a","bb","ownerDocument","eb","db","selected","defaultSelected","gb","dangerouslySetInnerHTML","hb","ib","jb","textContent","kb","lb","mb","nb","ob","namespaceURI","innerHTML","firstChild","removeChild","appendChild","MSApp","execUnsafeLocalFunction","pb","lastChild","nodeType","nodeValue","qb","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","orphans","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","sb","tb","ub","menuitem","br","embed","hr","img","keygen","link","param","track","wbr","vb","wb","is","xb","srcElement","correspondingUseElement","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","Ob","Pb","Qb","Rb","onError","Sb","Tb","Ub","Vb","Wb","Xb","Zb","alternate","return","$b","memoizedState","dehydrated","ac","cc","child","sibling","dc","ec","fc","hc","ic","jc","kc","lc","mc","nc","oc","pc","rc","blockedOn","domEventName","eventSystemFlags","nativeEvent","targetContainers","sc","pointerId","tc","vc","wc","lanePriority","unstable_runWithPriority","hydrate","containerInfo","zc","Ac","Bc","unstable_scheduleCallback","unstable_NormalPriority","Cc","Dc","Ec","animationend","animationiteration","animationstart","transitionend","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Pc","Qc","unstable_now","Rc","Uc","pendingLanes","expiredLanes","suspendedLanes","pingedLanes","Vc","entangledLanes","entanglements","Wc","Xc","Yc","Zc","$c","eventTimes","bd","LN2","unstable_UserBlockingPriority","ed","fd","gd","hd","uc","jd","kd","ld","md","nd","od","keyCode","charCode","pd","qd","rd","_reactName","_targetInst","currentTarget","isDefaultPrevented","defaultPrevented","returnValue","isPropagationStopped","preventDefault","stopPropagation","cancelBubble","persist","isPersistent","wd","xd","yd","eventPhase","bubbles","timeStamp","isTrusted","td","ud","view","detail","vd","Ad","screenX","screenY","pageX","pageY","ctrlKey","shiftKey","altKey","metaKey","getModifierState","zd","button","buttons","relatedTarget","fromElement","toElement","movementX","movementY","Bd","Dd","dataTransfer","Fd","Hd","animationName","elapsedTime","pseudoElement","Id","clipboardData","Jd","Ld","Md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","Nd","Od","Alt","Control","Meta","Shift","Pd","Qd","location","repeat","which","Rd","Td","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Vd","targetTouches","changedTouches","Xd","wheelDeltaX","wheelDeltaY","wheelDelta","deltaZ","deltaMode","Zd","$d","ae","be","documentMode","ce","de","ee","fe","ge","he","le","email","password","tel","ne","oe","pe","qe","se","te","ue","ve","we","ze","oninput","Ae","detachEvent","Be","Ce","attachEvent","De","Ee","Fe","He","Ie","Je","Ke","Le","nextSibling","Me","compareDocumentPosition","Ne","HTMLIFrameElement","contentWindow","href","Oe","contentEditable","Pe","Re","Se","Te","Ue","selectionStart","selectionEnd","anchorNode","defaultView","getSelection","anchorOffset","focusNode","focusOffset","Ve","We","Ye","Ze","Yb","$e","af","bf","random","cf","df","capture","Nb","ef","ff","parentWindow","gf","hf","je","char","ke","jf","kf","lf","mf","autoFocus","nf","__html","of","pf","qf","rf","sf","previousSibling","tf","vf","wf","xf","yf","zf","Af","Bf","Cf","Df","Ef","contextTypes","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Ff","childContextTypes","Gf","Hf","If","getChildContext","Jf","__reactInternalMemoizedMergedChildContext","Kf","Lf","Mf","Nf","Of","Pf","unstable_cancelCallback","Qf","unstable_shouldYield","Rf","unstable_requestPaint","Sf","Tf","unstable_getCurrentPriorityLevel","Uf","unstable_ImmediatePriority","Vf","Wf","Xf","unstable_LowPriority","Yf","unstable_IdlePriority","Zf","$f","ag","bg","cg","dg","eg","fg","hg","ig","jg","kg","lg","mg","ng","og","pg","qg","rg","sg","childLanes","tg","dependencies","firstContext","lanes","ug","vg","observedBits","responders","wg","xg","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","pending","yg","zg","eventTime","lane","payload","Ag","Bg","Cg","Dg","Eg","Fg","Gg","Kg","_reactInternals","Hg","Ig","Jg","Lg","shouldComponentUpdate","Mg","contextType","Ng","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","Og","getDerivedStateFromProps","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","Pg","Qg","_stringRef","Rg","Sg","lastEffect","nextEffect","firstEffect","Tg","Ug","Vg","implementation","Wg","Xg","Yg","Zg","$g","ah","bh","ch","dh","eh","documentElement","tagName","fh","gh","ih","memoizedProps","revealOrder","jh","kh","mh","nh","oh","pendingProps","qh","rh","sh","uh","_workInProgressVersionPrimary","vh","wh","xh","yh","zh","Ah","Bh","Ch","Dh","Eh","Fh","Gh","Hh","baseQueue","queue","Ih","Jh","Kh","lastRenderedReducer","action","eagerReducer","eagerState","lastRenderedState","dispatch","Lh","Mh","_getVersion","_source","mutableReadLanes","Nh","getSnapshot","subscribe","setSnapshot","Oh","Ph","Qh","Rh","Sh","Th","Uh","Vh","Wh","Xh","Yh","Zh","$h","bi","di","readContext","useDeferredValue","useTransition","useMutableSource","useOpaqueIdentifier","unstable_isNewReconciler","uf","ei","fi","gi","ji","ki","li","mi","baseLanes","ni","oi","pi","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","getDerivedStateFromError","pendingContext","Bi","Di","Ei","si","retryLane","ti","unstable_avoidThisFallback","ui","unstable_expectedLoadTime","vi","wi","xi","yi","zi","isBackwards","rendering","renderingStartTime","tail","tailMode","Ai","Fi","Gi","wasMultiple","multiple","onclick","createElementNS","createTextNode","Hi","Ii","Ji","Ki","Li","Mi","Ni","Oi","Pi","Qi","Ri","Si","componentDidCatch","Ti","componentStack","Ui","WeakSet","Vi","Wi","Xi","__reactInternalSnapshotBeforeUpdate","Yi","Zi","$i","focus","aj","bj","onCommitFiberUnmount","componentWillUnmount","cj","dj","ej","fj","gj","hj","insertBefore","_reactRootContainer","ij","jj","kj","lj","mj","nj","oj","pj","rj","sj","tj","uj","vj","wj","ck","xj","yj","zj","Aj","Bj","Cj","Dj","Ej","Fj","Gj","Hj","Ij","Jj","Sc","Kj","Lj","Mj","callbackNode","expirationTimes","callbackPriority","Tc","Nj","Oj","Pj","Qj","Rj","Sj","Tj","finishedWork","finishedLanes","Uj","timeoutHandle","Wj","Xj","pingCache","Yj","Zj","va","ak","bk","dk","rangeCount","focusedElem","selectionRange","ek","createRange","setStart","removeAllRanges","addRange","setEnd","scrollLeft","scrollTop","onCommitFiberRoot","fk","gk","ik","pendingChildren","jk","mutableSourceEagerHydrationData","kk","lk","mk","qk","hydrationOptions","mutableSources","_internalRoot","rk","tk","hasAttribute","sk","uk","hk","unstable_observedBits","unmount","querySelectorAll","form","Vj","vk","Events","wk","findFiberByHostInstance","bundleType","rendererPackageName","xk","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","yk","isDisabled","supportsFiber","inject","createPortal","findDOMNode","flushSync","unmountComponentAtNode","unstable_createPortal","unstable_renderSubtreeIntoContainer","performance","MessageChannel","unstable_forceFrameRate","cancelAnimationFrame","port2","port1","onmessage","postMessage","sortIndex","startTime","expirationTime","priorityLevel","unstable_Profiling","unstable_continueExecution","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_wrapCallback","runtime","Op","hasOwn","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","Context","_invoke","GenStateSuspendedStart","GenStateExecuting","GenStateCompleted","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","record","tryCatch","GenStateSuspendedYield","makeInvokeMethod","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","NativeIteratorPrototype","Gp","defineIteratorMethods","AsyncIterator","PromiseImpl","invoke","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","iterable","iteratorMethod","isGeneratorFunction","genFun","mark","awrap","async","skipTempReset","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","finish","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","globalThis","polyfill","callee","caller","strictModeIsEnforced","stacktrace","CapabilityDetector","tests","getStackTrace","FrameStringSource","FrameStringParser","terminator","frameShifts","captured","getInstance","captureFrameStrings","getFrames","frameStrings","functionValues","cachedStack","getFrameStrings","nonConfigurableError","abstractMethod","eachCombination","AbstractFrameStringSource","createError","capturedFrameStrings","capturedFunctionValues","aCaller","useStrictError","stackString","getStackString","stackStringChunks","fromPosition","toPosition","hasHeader","hasFooter","FrameStringSourceCalibrator","calibrateClass","calibrateMethods","calibrateEnvelope","workingImplementation","calibratorFrameStrings","getClass","Source","buildArgs","checkOption","build","Subject","staticProperty","subject","absorb","getAncestor","newInstance","store","called","alternativesByDimension","combination","alternatives","Frame","stackParser","frameParser","locationParsers","getFrame","frameString","functionValue","getThis","getTypeName","getFunction","getFunctionName","getMethodName","getFileName","getLineNumber","getColumnNumber","getEvalOrigin","isTopLevel","isEval","isNative","isConstructor","MAX_UID","MILLISECONDS_MULTIPLIER","TRANSITION_END","toType","getUID","getSelector","selector","hrefAttr","getSelectorFromElement","getElementFromSelector","getTransitionDurationFromElement","transitionDelay","floatTransitionDuration","floatTransitionDelay","transitionDuration","triggerTransitionEnd","Event","isElement","typeCheckConfig","componentName","configTypes","expectedTypes","valueType","isVisible","Node","findShadowRoot","reflow","getjQuery","jQuery","DOMContentLoadedCallbacks","onDOMContentLoaded","isRTL","defineJQueryPlugin","$","JQUERY_NO_CONFLICT","execute","executeAfterTransition","transitionElement","durationPadding","emulatedDuration","getNextActiveElement","shouldGetNext","isCycleAllowed","listLength","namespaceRegex","stripNameRegex","stripUidRegex","eventRegistry","uidEvent","customEvents","mouseenter","mouseleave","customEventsRegex","nativeEvents","getUidEvent","EventHandler","domElements","delegationSelector","uidEventList","delegation","originalHandler","delegationFn","typeEvent","getTypeEvent","originalTypeEvent","wrapFn","normalizeParams","getEvent","handlers","previousFn","findHandler","bootstrapDelegationHandler","bootstrapHandler","storeElementEvent","handlerKey","removeHandler","on","addHandler","inNamespace","isNamespace","elementEvent","removeNamespacedHandlers","keyHandlers","nativeDispatch","jQueryEvent","CustomEvent","elementMap","instanceMap","VERSION","Data","dispose","_queueCallback","getOrCreateInstance","DATA_KEY","EVENT_KEY","enableDismissTrigger","clickEvent","closest","EVENT_CLOSE","EVENT_CLOSED","CLASS_NAME_FADE","CLASS_NAME_SHOW","close","isAnimated","classList","_destroyElement","jQueryInterface","Alert","DATA_API_KEY","CLASS_NAME_ACTIVE","SELECTOR_DATA_TOGGLE","EVENT_CLICK_DATA_API","toggle","Button","chr","Manipulator","setDataAttribute","normalizeDataKey","removeDataAttribute","getDataAttributes","attributes","pureKey","normalizeData","getDataAttribute","pageXOffset","NODE_TEXT","SelectorEngine","findOne","parents","ancestor","focusableChildren","focusables","ARROW_RIGHT_KEY","TOUCHEVENT_COMPAT_WAIT","SWIPE_THRESHOLD","Default","keyboard","slide","pause","touch","DefaultType","ORDER_NEXT","ORDER_PREV","DIRECTION_LEFT","DIRECTION_RIGHT","KEY_TO_DIRECTION","EVENT_SLIDE","EVENT_SLID","EVENT_KEYDOWN","EVENT_MOUSEENTER","EVENT_MOUSELEAVE","EVENT_TOUCHSTART","EVENT_TOUCHMOVE","EVENT_TOUCHEND","EVENT_POINTERDOWN","EVENT_POINTERUP","EVENT_DRAG_START","EVENT_LOAD_DATA_API","CLASS_NAME_CAROUSEL","CLASS_NAME_SLIDE","CLASS_NAME_END","CLASS_NAME_START","CLASS_NAME_NEXT","CLASS_NAME_PREV","CLASS_NAME_POINTER_EVENT","SELECTOR_ACTIVE","SELECTOR_ACTIVE_ITEM","SELECTOR_ITEM","SELECTOR_ITEM_IMG","SELECTOR_NEXT_PREV","SELECTOR_INDICATORS","SELECTOR_INDICATOR","SELECTOR_DATA_SLIDE","SELECTOR_DATA_RIDE","POINTER_TYPE_TOUCH","POINTER_TYPE_PEN","navigator","nextWhenVisible","clearInterval","cycle","setInterval","activeIndex","_getItemIndex","_items","_getConfig","_handleSwipe","absDeltax","_addEventListeners","_addTouchEventListeners","hasPointerPenTouch","itemImg","_keydown","_getItemByOrder","isNext","_triggerSlideEvent","targetIndex","fromIndex","_setActiveIndicatorElement","activeIndicator","indicators","_updateInterval","_activeElement","elementInterval","defaultInterval","_slide","_directionToOrder","activeElementIndex","nextElement","nextElementIndex","isCycling","directionalClassName","orderClassName","eventDirectionName","_orderToDirection","triggerSlidEvent","completeCallBack","carouselInterface","Carousel","dataApiClickHandler","slideIndex","carousels","EVENT_SHOW","EVENT_SHOWN","EVENT_HIDE","EVENT_HIDDEN","CLASS_NAME_COLLAPSE","CLASS_NAME_COLLAPSING","CLASS_NAME_COLLAPSED","CLASS_NAME_DEEPER_CHILDREN","CLASS_NAME_HORIZONTAL","WIDTH","HEIGHT","SELECTOR_ACTIVES","toggleList","filterElement","foundElem","_isTransitioning","actives","tempActiveData","activesData","Collapse","elemActive","capitalizedDimension","scrollSize","triggerArrayLength","_triggerArray","_isShown","_getDimension","_initializeChildren","_addAriaAndCollapsedClass","triggerArray","selectorElements","auto","basePlacements","clippingParents","viewport","popper","reference","variationPlacements","placement","placements","beforeRead","afterRead","beforeMain","main","afterMain","beforeWrite","afterWrite","modifierPhases","getNodeName","getWindow","isHTMLElement","HTMLElement","isShadowRoot","ShadowRoot","applyStyles","effect","_ref2","initialStyles","strategy","arrow","attribute","phase","requires","getBasePlacement","includeScale","scaleX","scaleY","getLayoutRect","clientRect","offsetWidth","offsetHeight","offsetTop","rootNode","getRootNode","isSameNode","isTableElement","getDocumentElement","getParentNode","assignedSlot","getTrueOffsetParent","offsetParent","getContainingBlock","isFirefox","userAgent","currentNode","css","perspective","contain","willChange","getOffsetParent","getMainAxisFromPlacement","within","mathMax","mathMin","getFreshSideObject","mergePaddingObject","paddingObject","expandToHashMap","hashMap","toPaddingObject","_state$modifiersData$","arrowElement","popperOffsets","modifiersData","basePlacement","arrowRect","minProp","maxProp","endDiff","startDiff","arrowOffsetParent","clientSize","centerToReference","axisProp","centerOffset","_options$element","querySelector","requiresIfExists","getVariation","unsetSides","roundOffsetsByDPR","mapToStyles","_Object$assign2","popperRect","variation","gpuAcceleration","adaptive","roundOffsets","_ref3","_ref3$x","_ref3$y","hasX","hasY","sideX","sideY","win","heightProp","widthProp","_Object$assign","commonStyles","computeStyles","_ref4","_options$gpuAccelerat","_options$adaptive","_options$roundOffsets","_options$scroll","scroll","_options$resize","scrollParents","scrollParent","getOppositePlacement","getOppositeVariationPlacement","getWindowScroll","pageYOffset","getWindowScrollBarX","getViewportRect","html","visualViewport","getDocumentRect","_element$ownerDocumen","winScroll","scrollWidth","scrollHeight","isScrollParent","_getComputedStyle","overflowX","overflowY","getScrollParent","listScrollParents","isBody","updatedList","rectToClientRect","getInnerBoundingClientRect","clientTop","clientLeft","getClientRectFromMixedType","clippingParent","getClippingParents","clipperElement","getClippingRect","rootBoundary","mainClippingParents","firstClippingParent","clippingRect","accRect","computeOffsets","commonX","commonY","mainAxis","detectOverflow","_options$placement","_options$boundary","_options$rootBoundary","_options$elementConte","elementContext","_options$altBoundary","altBoundary","_options$padding","altContext","clippingClientRect","contextElement","referenceClientRect","popperClientRect","elementClientRect","overflowOffsets","offsetData","multiply","computeAutoPlacement","flipVariations","_options$allowedAutoP","allowedAutoPlacements","allPlacements","allowedPlacements","overflows","getExpandedFallbackPlacements","oppositePlacement","_options$mainAxis","checkMainAxis","_options$altAxis","altAxis","checkAltAxis","specifiedFallbackPlacements","fallbackPlacements","_options$flipVariatio","preferredPlacement","referenceRect","checksMap","makeFallbackChecks","firstFittingPlacement","_basePlacement","isStartVariation","isVertical","mainVariationSide","altVariationSide","checks","every","fittingPlacement","getSideOffsets","preventedOffsets","isAnySideFullyClipped","side","preventOverflow","referenceOverflow","popperAltOverflow","referenceClippingOffsets","popperEscapeOffsets","isReferenceHidden","hasPopperEscaped","distanceAndSkiddingToXY","invertDistance","skidding","_options$offset","_data$state$placement","getAltAxis","_options$tether","tether","_options$tetherOffset","tetherOffset","isBasePlacement","tetherOffsetValue","mainSide","altSide","additive","maxLen","arrowPaddingObject","arrowPaddingMin","arrowPaddingMax","arrowLen","minOffset","maxOffset","clientOffset","offsetModifierValue","tetherMin","tetherMax","preventedOffset","_mainSide","_altSide","_min","_max","_preventedOffset","getHTMLElementScroll","getNodeScroll","isElementScaled","getCompositeRect","elementOrVirtualElement","isFixed","isOffsetParentAnElement","modifiers","modifier","dep","depModifier","orderModifiers","orderedModifiers","mergeByName","merged","existing","DEFAULT_OPTIONS","areValidElements","_len","_key","popperGenerator","generatorOptions","_generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","defaultOptions","effectCleanupFns","isDestroyed","setOptions","setOptionsAction","cleanupModifierEffects","runModifierEffects","_state$elements","_state$orderedModifie","_state$orderedModifie2","_ref3$options","cleanupFn","noopFn","onFirstUpdate","createPopper","eventListeners","ESCAPE_KEY","SPACE_KEY","TAB_KEY","ARROW_UP_KEY","ARROW_DOWN_KEY","RIGHT_MOUSE_BUTTON","REGEXP_KEYDOWN","EVENT_KEYDOWN_DATA_API","EVENT_KEYUP_DATA_API","CLASS_NAME_DROPUP","CLASS_NAME_DROPEND","CLASS_NAME_DROPSTART","CLASS_NAME_NAVBAR","SELECTOR_MENU","SELECTOR_NAVBAR_NAV","SELECTOR_VISIBLE_ITEMS","PLACEMENT_TOP","PLACEMENT_TOPEND","PLACEMENT_BOTTOM","PLACEMENT_BOTTOMEND","PLACEMENT_RIGHT","PLACEMENT_LEFT","popperConfig","autoClose","Dropdown","_completeHide","_createPopper","Popper","referenceElement","isDisplayStatic","_getMenuElement","_getPlacement","parentDropdown","isEnd","_detectNavbar","_getOffset","popperData","_getPopperConfig","defaultBsPopperConfig","_selectMenuItem","clearMenus","toggles","composedPath","isMenuTarget","getParentFromElement","dataApiKeydownHandler","isActive","getToggleButton","SELECTOR_FIXED_CONTENT","SELECTOR_STICKY_CONTENT","getWidth","documentWidth","calculatedValue","_disableOverFlow","_setElementAttributes","scrollbarWidth","manipulationCallBack","_saveInitialAttribute","actualValue","_resetElementAttributes","_applyManipulationCallback","callBack","isOverflowing","className","rootElement","clickCallback","EVENT_MOUSEDOWN","_getElement","_append","_emulateAnimation","trapElement","autofocus","EVENT_FOCUSIN","EVENT_KEYDOWN_TAB","TAB_NAV_FORWARD","TAB_NAV_BACKWARD","activate","deactivate","_handleFocusin","_lastTabNavDirection","_handleKeydown","EVENT_HIDE_PREVENTED","EVENT_RESIZE","EVENT_CLICK_DISMISS","EVENT_KEYDOWN_DISMISS","EVENT_MOUSEUP_DISMISS","EVENT_MOUSEDOWN_DISMISS","CLASS_NAME_OPEN","CLASS_NAME_STATIC","OPEN_SELECTOR","SELECTOR_DIALOG","SELECTOR_MODAL_BODY","htmlElement","handleUpdate","_initializeBackDrop","Backdrop","_isAnimated","_initializeFocusTrap","FocusTrap","_showElement","modalBody","transitionComplete","_setEscapeEvent","_setResizeEvent","_hideModal","_showBackdrop","_triggerBackdropTransition","isModalOverflowing","_adjustDialog","_scrollBar","isBodyOverflowing","_resetAdjustments","Modal","showEvent","allReadyOpen","CLASS_NAME_BACKDROP","completeCallback","Offcanvas","uriAttributes","SAFE_URL_PATTERN","DATA_URL_PATTERN","allowedAttribute","allowedAttributeList","regExp","attributeRegex","DefaultAllowlist","em","ol","pre","small","sup","strong","ul","unsafeHtml","sanitizeFn","createdDocument","domParser","elementName","attributeList","allowedAttributes","allowList","CLASS_PREFIX","DISALLOWED_ATTRIBUTES","template","customClass","sanitize","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","HIDE","HIDDEN","SHOW","SHOWN","INSERTED","CLICK","FOCUSIN","FOCUSOUT","MOUSEENTER","MOUSELEAVE","HOVER_STATE_SHOW","HOVER_STATE_OUT","SELECTOR_TOOLTIP_INNER","SELECTOR_MODAL","EVENT_MODAL_HIDE","TRIGGER_HOVER","TRIGGER_FOCUS","TRIGGER_CLICK","TRIGGER_MANUAL","enable","disable","toggleEnabled","_initializeOnDelegatedTarget","getTipElement","isWithContent","isInTheDom","tip","tipId","attachment","_getAttachment","_resolvePossibleFunction","prevHoverState","_popper","setContent","_sanitizeAndSetContent","templateElement","content","setElementContent","sanitizeHtml","updateAttachment","_addAttachmentClass","_getBasicClassPrefix","_setListeners","triggers","eventIn","eventOut","_fixTitle","originalTitleType","_enter","_leave","_isWithActiveTrigger","_activeTrigger","dataAttributes","dataAttr","_getDelegateConfig","_cleanTipClass","basicClassPrefixRegex","tabClass","tClass","_handlePopperPlacementChange","_disposePopper","SELECTOR_TITLE","SELECTOR_CONTENT","_getContent","Popover","EVENT_ACTIVATE","EVENT_SCROLL","CLASS_NAME_DROPDOWN_ITEM","SELECTOR_DATA_SPY","SELECTOR_NAV_LIST_GROUP","SELECTOR_NAV_LINKS","SELECTOR_NAV_ITEMS","SELECTOR_LIST_ITEMS","SELECTOR_LINK_ITEMS","SELECTOR_DROPDOWN","SELECTOR_DROPDOWN_TOGGLE","METHOD_OFFSET","METHOD_POSITION","refresh","autoMethod","_scrollElement","offsetMethod","offsetBase","targets","targetSelector","targetBCR","_getScrollTop","_getScrollHeight","_getOffsetHeight","_process","maxScroll","_scrollHeight","_targets","_activeTarget","_activate","queries","listGroup","navItem","_clear","ScrollSpy","spy","CLASS_NAME_DROPDOWN_MENU","SELECTOR_ACTIVE_UL","SELECTOR_DROPDOWN_ACTIVE_CHILD","listElement","itemSelector","hideEvent","isTransitioning","_transitionComplete","dropdownChild","dropdownElement","dropdown","Tab","EVENT_MOUSEOVER","EVENT_MOUSEOUT","EVENT_FOCUSOUT","CLASS_NAME_HIDE","CLASS_NAME_SHOWING","autohide","_maybeScheduleHide","_hasMouseInteraction","_onInteraction","_clearTimeout","Toast","assertThisInitialized","FORMATS","_adapters","moment","_id","trunc","b64","lens","getLens","validLen","placeHoldersLen","Arr","_byteLength","curByte","revLookup","uint8","extraBytes","maxChunkLength","len2","encodeChunk","lookup","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","rt","MergeKeyStore","BrowserLocalStorageKeyStore","browser_local_storage_key_store_1","merge_key_store_1","nacl","Float64Array","randombytes","_0","_9","gf0","gf1","_121665","D2","ts64","vn","crypto_verify_16","crypto_verify_32","crypto_core_salsa20","j0","j1","j2","j3","j4","j5","j6","j7","j8","j9","j10","j11","j12","j13","j14","j15","x0","x4","x5","x6","x7","x8","x9","x10","x11","x12","x13","x14","x15","core_salsa20","crypto_core_hsalsa20","core_hsalsa20","sigma","crypto_stream_salsa20_xor","cpos","mpos","crypto_stream_salsa20","crypto_stream","sn","crypto_stream_xor","poly1305","t0","t2","t3","t4","t5","t6","t7","Uint16Array","pad","leftover","fin","crypto_onetimeauth","outpos","crypto_onetimeauth_verify","hpos","crypto_secretbox","crypto_secretbox_open","set25519","car25519","sel25519","pack25519","neq25519","par25519","unpack25519","t8","t9","t10","t11","t12","t13","t14","t15","t16","t17","t18","t19","t20","t21","t22","t23","t24","t25","t26","t27","t28","t29","t30","b10","b11","b12","b13","b14","b15","inv25519","pow2523","crypto_scalarmult","x32","x16","crypto_scalarmult_base","crypto_box_keypair","crypto_box_beforenm","d0","d1","d2","d3","d4","d5","d6","d7","d8","d9","hibit","h8","h9","r0","r1","r3","r4","r5","r6","r7","r8","r9","mac","macpos","want","crypto_box_afternm","crypto_box_open_afternm","crypto_hashblocks_hl","hl","Int32Array","wl","crypto_hash","cswap","pack","tx","ty","scalarmult","scalarbase","crypto_sign_keypair","pk","seeded","modL","crypto_sign","sm","smlen","crypto_sign_open","chk","den","den2","den4","den6","unpackneg","crypto_secretbox_BOXZEROBYTES","crypto_sign_BYTES","crypto_sign_PUBLICKEYBYTES","crypto_sign_SECRETKEYBYTES","checkLengths","checkArrayTypes","cleanup","lowlevel","crypto_box","crypto_box_open","crypto_secretbox_KEYBYTES","crypto_secretbox_NONCEBYTES","crypto_secretbox_ZEROBYTES","crypto_scalarmult_BYTES","crypto_scalarmult_SCALARBYTES","crypto_box_PUBLICKEYBYTES","crypto_box_SECRETKEYBYTES","crypto_box_BEFORENMBYTES","crypto_box_NONCEBYTES","crypto_box_ZEROBYTES","crypto_box_BOXZEROBYTES","crypto_sign_SEEDBYTES","crypto_hash_BYTES","randomBytes","secretbox","open","keyLength","nonceLength","overheadLength","scalarMult","scalarLength","groupElementLength","checkBoxLengths","publicKeyLength","secretKeyLength","sharedKeyLength","signedMsg","mlen","sig","fromSeed","seed","seedLength","signatureLength","hashLength","setPRNG","msCrypto","getRandomValues","_construct","Parent","basex","_Buffer","ALPHABET","BASE_MAP","BASE","LEADER","FACTOR","iFACTOR","decodeUnsafe","psz","zeroes","b256","it3","it4","vch","pbegin","pend","b58","it1","it2","copyProps","SafeBuffer","ToDictionary","Stream","endOfStream","prepend","finished","decoderError","opt_code_point","DEFAULT_ENCODING","_streaming","_BOMseen","_decoder","_fatal","_ignoreBOM","TextEncoder","_encoder","UTF8Decoder","utf8_code_point","utf8_bytes_seen","utf8_bytes_needed","utf8_lower_boundary","utf8_upper_boundary","stream","bite","code_point","UTF8Encoder","input_stream","code_points","cp","codePointsToString","opt_string","stringToCodePoints","LOCAL_STORAGE_KEY_PREFIX","localStorage","setItem","storageKeyForSecretKey","getItem","removeItem","storageKeys","writeKeyStoreIndex","removeKey","getNetworks","network","getAccounts","_nextId","sendJsonRpc","signedTransaction","txStatusString","txStatusUint8Array","blockId","block_id","chunkId","sync_checkpoint","blockReference","request","lightClientProof","accountIdArray","changes_type","account_ids","accessKeyArray","keyPrefix","key_prefix_base64","jsonrpc","HttpError","statuses","toIdentifier","codeClass","nameFunc","toClassName","statusCode","expose","createHttpErrorConstructor","isHttpError","codes","CodeError","ClientError","createClientErrorConstructor","createServerErrorConstructor","ImATeapot","populateConstructorExports","STATUS_CODES","populateStatusesMap","redirect","retry","objectToString","typeStr","escapeRegExp","hasProperty","propName","primitiveHasOwnProperty","primitive","regExpTest","testRegExp","nonSpaceRe","isWhitespace","entityMap","escapeHtml","whiteRe","spaceRe","equalsRe","curlyRe","tagRe","parseTemplate","tags","openingTagRe","closingTagRe","closingCurlyRe","lineHasNonSpace","sections","spaces","hasTag","nonSpace","indentation","tagIndex","stripSpace","compileTags","tagsToCompile","mustache","openSection","scanner","Scanner","eos","scanUntil","valueLength","scan","nestTokens","squashTokens","lastToken","squashedTokens","numTokens","nestedTokens","collector","templateCache","intermediateValue","lookupHit","isCacheEnabled","partials","getConfigTags","renderTokens","originalTemplate","symbol","renderSection","renderInverted","renderPartial","unescapedValue","escapedValue","rawValue","subRender","indentPartial","partial","filteredIndentation","partialByNl","indentedValue","getConfigEscape","defaultWriter","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","currentQueue","draining","queueIndex","cleanUpNextTick","drainQueue","run","marker","runClearTimeout","Item","nextTick","browser","env","argv","once","removeAllListeners","emit","prependListener","prependOnceListener","binding","cwd","chdir","umask","__webpack_amd_options__","diffEpochValidators","findSeatPrice","maxNumberOfSeats","minimumStakeRatio","protocolVersion","numSeats","stakes","stakesSum","currentSum","findSeatPriceForProtocolBefore49","findSeatPriceForProtocolAfter49","currentValidators","nextValidators","validatorsMap","nextValidatorsSet","newValidators","removedValidators","changedValidators","Account2FA","AccountMultisig","MULTISIG_CONFIRM_METHODS","MULTISIG_CHANGE_METHODS","MULTISIG_DEPOSIT","MULTISIG_GAS","MULTISIG_ALLOWANCE","MULTISIG_STORAGE_KEY","format_1","storageFallback","onAddRequestResult","_signAndSendTransaction","convertActions","deleteUnconfirmedRequests","setRequest","requestId","getRequestIds","request_ids","getRequest","requestIdToDelete","request_id","sendCode","sendCodeDefault","getCode","getCodeDefault","verifyCode","verifyCodeDefault","onConfirmResult","__signAndSendTransaction","promptAndVerify","contractBytes","getRecoveryMethods","seedOrLedgerKey","fak2lak","toPK","postSignedJson","confirmOnlyKey","newArgs","code_hash","lak2fak","method_names","get2faMethod","securityCode","blockNumber","signed","blockNumberSignature","signatureFor","utils_1","borsh_2","LOGIN_WALLET_URL_SUFFIX","PENDING_ACCESS_KEY_PREFIX","near","appKeyPrefix","_near","authDataKey","authData","_networkId","_walletBaseUrl","walletUrl","contractName","_keyStore","_authData","_authDataKey","isSignedIn","_completeSignInWithAccessKey","contractIdOrOptions","successUrl","failureUrl","currentUrl","URL","newUrl","searchParams","append","_requestSignTransactions","serialized","_moveKeyFromTempToPermanent","history","replaceState","_connectedAccount","walletConnection","localKey","accessKeyForTransaction","requestSignTransactions","allowedReceiverId","allowedMethods","accessKeyMatchesTransaction","walletKeys","connect","promise_pool_error_1","stop_the_promise_pool_error_1","tasks","errors","stopped","activeTasks","markAsStopped","validateInputs","isStopped","hasReachedConcurrencyLimit","waitForTaskToFinish","startProcessing","drained","race","task","createTaskFor","removeActive","catch","handleErrorFor","isStoppingThePool","hasErrorHandler","runErrorHandlerFor","saveErrorFor","processingError","rethrowIfNotStoppingThePool","createFrom","drainActiveTasks","jsx","jsxs"],"mappings":"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","file":"static/js/2.4a3060f8.chunk.js","sourcesContent":["module.exports = require(\"regenerator-runtime\");\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.min.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","/*\r\n * big.js v6.1.1\r\n * A small, fast, easy-to-use library for arbitrary-precision decimal arithmetic.\r\n * Copyright (c) 2021 Michael Mclaughlin\r\n * https://github.com/MikeMcl/big.js/LICENCE.md\r\n */\r\n;(function (GLOBAL) {\r\n 'use strict';\r\n var Big,\r\n\r\n\r\n/************************************** EDITABLE DEFAULTS *****************************************/\r\n\r\n\r\n // The default values below must be integers within the stated ranges.\r\n\r\n /*\r\n * The maximum number of decimal places (DP) of the results of operations involving division:\r\n * div and sqrt, and pow with negative exponents.\r\n */\r\n DP = 20, // 0 to MAX_DP\r\n\r\n /*\r\n * The rounding mode (RM) used when rounding to the above decimal places.\r\n *\r\n * 0 Towards zero (i.e. truncate, no rounding). (ROUND_DOWN)\r\n * 1 To nearest neighbour. If equidistant, round up. (ROUND_HALF_UP)\r\n * 2 To nearest neighbour. If equidistant, to even. (ROUND_HALF_EVEN)\r\n * 3 Away from zero. (ROUND_UP)\r\n */\r\n RM = 1, // 0, 1, 2 or 3\r\n\r\n // The maximum value of DP and Big.DP.\r\n MAX_DP = 1E6, // 0 to 1000000\r\n\r\n // The maximum magnitude of the exponent argument to the pow method.\r\n MAX_POWER = 1E6, // 1 to 1000000\r\n\r\n /*\r\n * The negative exponent (NE) at and beneath which toString returns exponential notation.\r\n * (JavaScript numbers: -7)\r\n * -1000000 is the minimum recommended exponent value of a Big.\r\n */\r\n NE = -7, // 0 to -1000000\r\n\r\n /*\r\n * The positive exponent (PE) at and above which toString returns exponential notation.\r\n * (JavaScript numbers: 21)\r\n * 1000000 is the maximum recommended exponent value of a Big, but this limit is not enforced.\r\n */\r\n PE = 21, // 0 to 1000000\r\n\r\n /*\r\n * When true, an error will be thrown if a primitive number is passed to the Big constructor,\r\n * or if valueOf is called, or if toNumber is called on a Big which cannot be converted to a\r\n * primitive number without a loss of precision.\r\n */\r\n STRICT = false, // true or false\r\n\r\n\r\n/**************************************************************************************************/\r\n\r\n\r\n // Error messages.\r\n NAME = '[big.js] ',\r\n INVALID = NAME + 'Invalid ',\r\n INVALID_DP = INVALID + 'decimal places',\r\n INVALID_RM = INVALID + 'rounding mode',\r\n DIV_BY_ZERO = NAME + 'Division by zero',\r\n\r\n // The shared prototype object.\r\n P = {},\r\n UNDEFINED = void 0,\r\n NUMERIC = /^-?(\\d+(\\.\\d*)?|\\.\\d+)(e[+-]?\\d+)?$/i;\r\n\r\n\r\n /*\r\n * Create and return a Big constructor.\r\n */\r\n function _Big_() {\r\n\r\n /*\r\n * The Big constructor and exported function.\r\n * Create and return a new instance of a Big number object.\r\n *\r\n * n {number|string|Big} A numeric value.\r\n */\r\n function Big(n) {\r\n var x = this;\r\n\r\n // Enable constructor usage without new.\r\n if (!(x instanceof Big)) return n === UNDEFINED ? _Big_() : new Big(n);\r\n\r\n // Duplicate.\r\n if (n instanceof Big) {\r\n x.s = n.s;\r\n x.e = n.e;\r\n x.c = n.c.slice();\r\n } else {\r\n if (typeof n !== 'string') {\r\n if (Big.strict === true) {\r\n throw TypeError(INVALID + 'number');\r\n }\r\n\r\n // Minus zero?\r\n n = n === 0 && 1 / n < 0 ? '-0' : String(n);\r\n }\r\n\r\n parse(x, n);\r\n }\r\n\r\n // Retain a reference to this Big constructor.\r\n // Shadow Big.prototype.constructor which points to Object.\r\n x.constructor = Big;\r\n }\r\n\r\n Big.prototype = P;\r\n Big.DP = DP;\r\n Big.RM = RM;\r\n Big.NE = NE;\r\n Big.PE = PE;\r\n Big.strict = STRICT;\r\n Big.roundDown = 0;\r\n Big.roundHalfUp = 1;\r\n Big.roundHalfEven = 2;\r\n Big.roundUp = 3;\r\n\r\n return Big;\r\n }\r\n\r\n\r\n /*\r\n * Parse the number or string value passed to a Big constructor.\r\n *\r\n * x {Big} A Big number instance.\r\n * n {number|string} A numeric value.\r\n */\r\n function parse(x, n) {\r\n var e, i, nl;\r\n\r\n if (!NUMERIC.test(n)) {\r\n throw Error(INVALID + 'number');\r\n }\r\n\r\n // Determine sign.\r\n x.s = n.charAt(0) == '-' ? (n = n.slice(1), -1) : 1;\r\n\r\n // Decimal point?\r\n if ((e = n.indexOf('.')) > -1) n = n.replace('.', '');\r\n\r\n // Exponential form?\r\n if ((i = n.search(/e/i)) > 0) {\r\n\r\n // Determine exponent.\r\n if (e < 0) e = i;\r\n e += +n.slice(i + 1);\r\n n = n.substring(0, i);\r\n } else if (e < 0) {\r\n\r\n // Integer.\r\n e = n.length;\r\n }\r\n\r\n nl = n.length;\r\n\r\n // Determine leading zeros.\r\n for (i = 0; i < nl && n.charAt(i) == '0';) ++i;\r\n\r\n if (i == nl) {\r\n\r\n // Zero.\r\n x.c = [x.e = 0];\r\n } else {\r\n\r\n // Determine trailing zeros.\r\n for (; nl > 0 && n.charAt(--nl) == '0';);\r\n x.e = e - i - 1;\r\n x.c = [];\r\n\r\n // Convert string to array of digits without leading/trailing zeros.\r\n for (e = 0; i <= nl;) x.c[e++] = +n.charAt(i++);\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n /*\r\n * Round Big x to a maximum of sd significant digits using rounding mode rm.\r\n *\r\n * x {Big} The Big to round.\r\n * sd {number} Significant digits: integer, 0 to MAX_DP inclusive.\r\n * rm {number} Rounding mode: 0 (down), 1 (half-up), 2 (half-even) or 3 (up).\r\n * [more] {boolean} Whether the result of division was truncated.\r\n */\r\n function round(x, sd, rm, more) {\r\n var xc = x.c;\r\n\r\n if (rm === UNDEFINED) rm = x.constructor.RM;\r\n if (rm !== 0 && rm !== 1 && rm !== 2 && rm !== 3) {\r\n throw Error(INVALID_RM);\r\n }\r\n\r\n if (sd < 1) {\r\n more =\r\n rm === 3 && (more || !!xc[0]) || sd === 0 && (\r\n rm === 1 && xc[0] >= 5 ||\r\n rm === 2 && (xc[0] > 5 || xc[0] === 5 && (more || xc[1] !== UNDEFINED))\r\n );\r\n\r\n xc.length = 1;\r\n\r\n if (more) {\r\n\r\n // 1, 0.1, 0.01, 0.001, 0.0001 etc.\r\n x.e = x.e - sd + 1;\r\n xc[0] = 1;\r\n } else {\r\n\r\n // Zero.\r\n xc[0] = x.e = 0;\r\n }\r\n } else if (sd < xc.length) {\r\n\r\n // xc[sd] is the digit after the digit that may be rounded up.\r\n more =\r\n rm === 1 && xc[sd] >= 5 ||\r\n rm === 2 && (xc[sd] > 5 || xc[sd] === 5 &&\r\n (more || xc[sd + 1] !== UNDEFINED || xc[sd - 1] & 1)) ||\r\n rm === 3 && (more || !!xc[0]);\r\n\r\n // Remove any digits after the required precision.\r\n xc.length = sd--;\r\n\r\n // Round up?\r\n if (more) {\r\n\r\n // Rounding up may mean the previous digit has to be rounded up.\r\n for (; ++xc[sd] > 9;) {\r\n xc[sd] = 0;\r\n if (!sd--) {\r\n ++x.e;\r\n xc.unshift(1);\r\n }\r\n }\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (sd = xc.length; !xc[--sd];) xc.pop();\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n /*\r\n * Return a string representing the value of Big x in normal or exponential notation.\r\n * Handles P.toExponential, P.toFixed, P.toJSON, P.toPrecision, P.toString and P.valueOf.\r\n */\r\n function stringify(x, doExponential, isNonzero) {\r\n var e = x.e,\r\n s = x.c.join(''),\r\n n = s.length;\r\n\r\n // Exponential notation?\r\n if (doExponential) {\r\n s = s.charAt(0) + (n > 1 ? '.' + s.slice(1) : '') + (e < 0 ? 'e' : 'e+') + e;\r\n\r\n // Normal notation.\r\n } else if (e < 0) {\r\n for (; ++e;) s = '0' + s;\r\n s = '0.' + s;\r\n } else if (e > 0) {\r\n if (++e > n) {\r\n for (e -= n; e--;) s += '0';\r\n } else if (e < n) {\r\n s = s.slice(0, e) + '.' + s.slice(e);\r\n }\r\n } else if (n > 1) {\r\n s = s.charAt(0) + '.' + s.slice(1);\r\n }\r\n\r\n return x.s < 0 && isNonzero ? '-' + s : s;\r\n }\r\n\r\n\r\n // Prototype/instance methods\r\n\r\n\r\n /*\r\n * Return a new Big whose value is the absolute value of this Big.\r\n */\r\n P.abs = function () {\r\n var x = new this.constructor(this);\r\n x.s = 1;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * Return 1 if the value of this Big is greater than the value of Big y,\r\n * -1 if the value of this Big is less than the value of Big y, or\r\n * 0 if they have the same value.\r\n */\r\n P.cmp = function (y) {\r\n var isneg,\r\n x = this,\r\n xc = x.c,\r\n yc = (y = new x.constructor(y)).c,\r\n i = x.s,\r\n j = y.s,\r\n k = x.e,\r\n l = y.e;\r\n\r\n // Either zero?\r\n if (!xc[0] || !yc[0]) return !xc[0] ? !yc[0] ? 0 : -j : i;\r\n\r\n // Signs differ?\r\n if (i != j) return i;\r\n\r\n isneg = i < 0;\r\n\r\n // Compare exponents.\r\n if (k != l) return k > l ^ isneg ? 1 : -1;\r\n\r\n j = (k = xc.length) < (l = yc.length) ? k : l;\r\n\r\n // Compare digit by digit.\r\n for (i = -1; ++i < j;) {\r\n if (xc[i] != yc[i]) return xc[i] > yc[i] ^ isneg ? 1 : -1;\r\n }\r\n\r\n // Compare lengths.\r\n return k == l ? 0 : k > l ^ isneg ? 1 : -1;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Big whose value is the value of this Big divided by the value of Big y, rounded,\r\n * if necessary, to a maximum of Big.DP decimal places using rounding mode Big.RM.\r\n */\r\n P.div = function (y) {\r\n var x = this,\r\n Big = x.constructor,\r\n a = x.c, // dividend\r\n b = (y = new Big(y)).c, // divisor\r\n k = x.s == y.s ? 1 : -1,\r\n dp = Big.DP;\r\n\r\n if (dp !== ~~dp || dp < 0 || dp > MAX_DP) {\r\n throw Error(INVALID_DP);\r\n }\r\n\r\n // Divisor is zero?\r\n if (!b[0]) {\r\n throw Error(DIV_BY_ZERO);\r\n }\r\n\r\n // Dividend is 0? Return +-0.\r\n if (!a[0]) {\r\n y.s = k;\r\n y.c = [y.e = 0];\r\n return y;\r\n }\r\n\r\n var bl, bt, n, cmp, ri,\r\n bz = b.slice(),\r\n ai = bl = b.length,\r\n al = a.length,\r\n r = a.slice(0, bl), // remainder\r\n rl = r.length,\r\n q = y, // quotient\r\n qc = q.c = [],\r\n qi = 0,\r\n p = dp + (q.e = x.e - y.e) + 1; // precision of the result\r\n\r\n q.s = k;\r\n k = p < 0 ? 0 : p;\r\n\r\n // Create version of divisor with leading zero.\r\n bz.unshift(0);\r\n\r\n // Add zeros to make remainder as long as divisor.\r\n for (; rl++ < bl;) r.push(0);\r\n\r\n do {\r\n\r\n // n is how many times the divisor goes into current remainder.\r\n for (n = 0; n < 10; n++) {\r\n\r\n // Compare divisor and remainder.\r\n if (bl != (rl = r.length)) {\r\n cmp = bl > rl ? 1 : -1;\r\n } else {\r\n for (ri = -1, cmp = 0; ++ri < bl;) {\r\n if (b[ri] != r[ri]) {\r\n cmp = b[ri] > r[ri] ? 1 : -1;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // If divisor < remainder, subtract divisor from remainder.\r\n if (cmp < 0) {\r\n\r\n // Remainder can't be more than 1 digit longer than divisor.\r\n // Equalise lengths using divisor with extra leading zero?\r\n for (bt = rl == bl ? b : bz; rl;) {\r\n if (r[--rl] < bt[rl]) {\r\n ri = rl;\r\n for (; ri && !r[--ri];) r[ri] = 9;\r\n --r[ri];\r\n r[rl] += 10;\r\n }\r\n r[rl] -= bt[rl];\r\n }\r\n\r\n for (; !r[0];) r.shift();\r\n } else {\r\n break;\r\n }\r\n }\r\n\r\n // Add the digit n to the result array.\r\n qc[qi++] = cmp ? n : ++n;\r\n\r\n // Update the remainder.\r\n if (r[0] && cmp) r[rl] = a[ai] || 0;\r\n else r = [a[ai]];\r\n\r\n } while ((ai++ < al || r[0] !== UNDEFINED) && k--);\r\n\r\n // Leading zero? Do not remove if result is simply zero (qi == 1).\r\n if (!qc[0] && qi != 1) {\r\n\r\n // There can't be more than one zero.\r\n qc.shift();\r\n q.e--;\r\n p--;\r\n }\r\n\r\n // Round?\r\n if (qi > p) round(q, p, Big.RM, r[0] !== UNDEFINED);\r\n\r\n return q;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Big is equal to the value of Big y, otherwise return false.\r\n */\r\n P.eq = function (y) {\r\n return this.cmp(y) === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Big is greater than the value of Big y, otherwise return\r\n * false.\r\n */\r\n P.gt = function (y) {\r\n return this.cmp(y) > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Big is greater than or equal to the value of Big y, otherwise\r\n * return false.\r\n */\r\n P.gte = function (y) {\r\n return this.cmp(y) > -1;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Big is less than the value of Big y, otherwise return false.\r\n */\r\n P.lt = function (y) {\r\n return this.cmp(y) < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Big is less than or equal to the value of Big y, otherwise\r\n * return false.\r\n */\r\n P.lte = function (y) {\r\n return this.cmp(y) < 1;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Big whose value is the value of this Big minus the value of Big y.\r\n */\r\n P.minus = P.sub = function (y) {\r\n var i, j, t, xlty,\r\n x = this,\r\n Big = x.constructor,\r\n a = x.s,\r\n b = (y = new Big(y)).s;\r\n\r\n // Signs differ?\r\n if (a != b) {\r\n y.s = -b;\r\n return x.plus(y);\r\n }\r\n\r\n var xc = x.c.slice(),\r\n xe = x.e,\r\n yc = y.c,\r\n ye = y.e;\r\n\r\n // Either zero?\r\n if (!xc[0] || !yc[0]) {\r\n if (yc[0]) {\r\n y.s = -b;\r\n } else if (xc[0]) {\r\n y = new Big(x);\r\n } else {\r\n y.s = 1;\r\n }\r\n return y;\r\n }\r\n\r\n // Determine which is the bigger number. Prepend zeros to equalise exponents.\r\n if (a = xe - ye) {\r\n\r\n if (xlty = a < 0) {\r\n a = -a;\r\n t = xc;\r\n } else {\r\n ye = xe;\r\n t = yc;\r\n }\r\n\r\n t.reverse();\r\n for (b = a; b--;) t.push(0);\r\n t.reverse();\r\n } else {\r\n\r\n // Exponents equal. Check digit by digit.\r\n j = ((xlty = xc.length < yc.length) ? xc : yc).length;\r\n\r\n for (a = b = 0; b < j; b++) {\r\n if (xc[b] != yc[b]) {\r\n xlty = xc[b] < yc[b];\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // x < y? Point xc to the array of the bigger number.\r\n if (xlty) {\r\n t = xc;\r\n xc = yc;\r\n yc = t;\r\n y.s = -y.s;\r\n }\r\n\r\n /*\r\n * Append zeros to xc if shorter. No need to add zeros to yc if shorter as subtraction only\r\n * needs to start at yc.length.\r\n */\r\n if ((b = (j = yc.length) - (i = xc.length)) > 0) for (; b--;) xc[i++] = 0;\r\n\r\n // Subtract yc from xc.\r\n for (b = i; j > a;) {\r\n if (xc[--j] < yc[j]) {\r\n for (i = j; i && !xc[--i];) xc[i] = 9;\r\n --xc[i];\r\n xc[j] += 10;\r\n }\r\n\r\n xc[j] -= yc[j];\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (; xc[--b] === 0;) xc.pop();\r\n\r\n // Remove leading zeros and adjust exponent accordingly.\r\n for (; xc[0] === 0;) {\r\n xc.shift();\r\n --ye;\r\n }\r\n\r\n if (!xc[0]) {\r\n\r\n // n - n = +0\r\n y.s = 1;\r\n\r\n // Result must be zero.\r\n xc = [ye = 0];\r\n }\r\n\r\n y.c = xc;\r\n y.e = ye;\r\n\r\n return y;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Big whose value is the value of this Big modulo the value of Big y.\r\n */\r\n P.mod = function (y) {\r\n var ygtx,\r\n x = this,\r\n Big = x.constructor,\r\n a = x.s,\r\n b = (y = new Big(y)).s;\r\n\r\n if (!y.c[0]) {\r\n throw Error(DIV_BY_ZERO);\r\n }\r\n\r\n x.s = y.s = 1;\r\n ygtx = y.cmp(x) == 1;\r\n x.s = a;\r\n y.s = b;\r\n\r\n if (ygtx) return new Big(x);\r\n\r\n a = Big.DP;\r\n b = Big.RM;\r\n Big.DP = Big.RM = 0;\r\n x = x.div(y);\r\n Big.DP = a;\r\n Big.RM = b;\r\n\r\n return this.minus(x.times(y));\r\n };\r\n\r\n\r\n /*\r\n * Return a new Big whose value is the value of this Big plus the value of Big y.\r\n */\r\n P.plus = P.add = function (y) {\r\n var e, k, t,\r\n x = this,\r\n Big = x.constructor;\r\n\r\n y = new Big(y);\r\n\r\n // Signs differ?\r\n if (x.s != y.s) {\r\n y.s = -y.s;\r\n return x.minus(y);\r\n }\r\n\r\n var xe = x.e,\r\n xc = x.c,\r\n ye = y.e,\r\n yc = y.c;\r\n\r\n // Either zero?\r\n if (!xc[0] || !yc[0]) {\r\n if (!yc[0]) {\r\n if (xc[0]) {\r\n y = new Big(x);\r\n } else {\r\n y.s = x.s;\r\n }\r\n }\r\n return y;\r\n }\r\n\r\n xc = xc.slice();\r\n\r\n // Prepend zeros to equalise exponents.\r\n // Note: reverse faster than unshifts.\r\n if (e = xe - ye) {\r\n if (e > 0) {\r\n ye = xe;\r\n t = yc;\r\n } else {\r\n e = -e;\r\n t = xc;\r\n }\r\n\r\n t.reverse();\r\n for (; e--;) t.push(0);\r\n t.reverse();\r\n }\r\n\r\n // Point xc to the longer array.\r\n if (xc.length - yc.length < 0) {\r\n t = yc;\r\n yc = xc;\r\n xc = t;\r\n }\r\n\r\n e = yc.length;\r\n\r\n // Only start adding at yc.length - 1 as the further digits of xc can be left as they are.\r\n for (k = 0; e; xc[e] %= 10) k = (xc[--e] = xc[e] + yc[e] + k) / 10 | 0;\r\n\r\n // No need to check for zero, as +x + +y != 0 && -x + -y != 0\r\n\r\n if (k) {\r\n xc.unshift(k);\r\n ++ye;\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (e = xc.length; xc[--e] === 0;) xc.pop();\r\n\r\n y.c = xc;\r\n y.e = ye;\r\n\r\n return y;\r\n };\r\n\r\n\r\n /*\r\n * Return a Big whose value is the value of this Big raised to the power n.\r\n * If n is negative, round to a maximum of Big.DP decimal places using rounding\r\n * mode Big.RM.\r\n *\r\n * n {number} Integer, -MAX_POWER to MAX_POWER inclusive.\r\n */\r\n P.pow = function (n) {\r\n var x = this,\r\n one = new x.constructor('1'),\r\n y = one,\r\n isneg = n < 0;\r\n\r\n if (n !== ~~n || n < -MAX_POWER || n > MAX_POWER) {\r\n throw Error(INVALID + 'exponent');\r\n }\r\n\r\n if (isneg) n = -n;\r\n\r\n for (;;) {\r\n if (n & 1) y = y.times(x);\r\n n >>= 1;\r\n if (!n) break;\r\n x = x.times(x);\r\n }\r\n\r\n return isneg ? one.div(y) : y;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Big whose value is the value of this Big rounded to a maximum precision of sd\r\n * significant digits using rounding mode rm, or Big.RM if rm is not specified.\r\n *\r\n * sd {number} Significant digits: integer, 1 to MAX_DP inclusive.\r\n * rm? {number} Rounding mode: 0 (down), 1 (half-up), 2 (half-even) or 3 (up).\r\n */\r\n P.prec = function (sd, rm) {\r\n if (sd !== ~~sd || sd < 1 || sd > MAX_DP) {\r\n throw Error(INVALID + 'precision');\r\n }\r\n return round(new this.constructor(this), sd, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Big whose value is the value of this Big rounded to a maximum of dp decimal places\r\n * using rounding mode rm, or Big.RM if rm is not specified.\r\n * If dp is negative, round to an integer which is a multiple of 10**-dp.\r\n * If dp is not specified, round to 0 decimal places.\r\n *\r\n * dp? {number} Integer, -MAX_DP to MAX_DP inclusive.\r\n * rm? {number} Rounding mode: 0 (down), 1 (half-up), 2 (half-even) or 3 (up).\r\n */\r\n P.round = function (dp, rm) {\r\n if (dp === UNDEFINED) dp = 0;\r\n else if (dp !== ~~dp || dp < -MAX_DP || dp > MAX_DP) {\r\n throw Error(INVALID_DP);\r\n }\r\n return round(new this.constructor(this), dp + this.e + 1, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Big whose value is the square root of the value of this Big, rounded, if\r\n * necessary, to a maximum of Big.DP decimal places using rounding mode Big.RM.\r\n */\r\n P.sqrt = function () {\r\n var r, c, t,\r\n x = this,\r\n Big = x.constructor,\r\n s = x.s,\r\n e = x.e,\r\n half = new Big('0.5');\r\n\r\n // Zero?\r\n if (!x.c[0]) return new Big(x);\r\n\r\n // Negative?\r\n if (s < 0) {\r\n throw Error(NAME + 'No square root');\r\n }\r\n\r\n // Estimate.\r\n s = Math.sqrt(x + '');\r\n\r\n // Math.sqrt underflow/overflow?\r\n // Re-estimate: pass x coefficient to Math.sqrt as integer, then adjust the result exponent.\r\n if (s === 0 || s === 1 / 0) {\r\n c = x.c.join('');\r\n if (!(c.length + e & 1)) c += '0';\r\n s = Math.sqrt(c);\r\n e = ((e + 1) / 2 | 0) - (e < 0 || e & 1);\r\n r = new Big((s == 1 / 0 ? '5e' : (s = s.toExponential()).slice(0, s.indexOf('e') + 1)) + e);\r\n } else {\r\n r = new Big(s + '');\r\n }\r\n\r\n e = r.e + (Big.DP += 4);\r\n\r\n // Newton-Raphson iteration.\r\n do {\r\n t = r;\r\n r = half.times(t.plus(x.div(t)));\r\n } while (t.c.slice(0, e).join('') !== r.c.slice(0, e).join(''));\r\n\r\n return round(r, (Big.DP -= 4) + r.e + 1, Big.RM);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Big whose value is the value of this Big times the value of Big y.\r\n */\r\n P.times = P.mul = function (y) {\r\n var c,\r\n x = this,\r\n Big = x.constructor,\r\n xc = x.c,\r\n yc = (y = new Big(y)).c,\r\n a = xc.length,\r\n b = yc.length,\r\n i = x.e,\r\n j = y.e;\r\n\r\n // Determine sign of result.\r\n y.s = x.s == y.s ? 1 : -1;\r\n\r\n // Return signed 0 if either 0.\r\n if (!xc[0] || !yc[0]) {\r\n y.c = [y.e = 0];\r\n return y;\r\n }\r\n\r\n // Initialise exponent of result as x.e + y.e.\r\n y.e = i + j;\r\n\r\n // If array xc has fewer digits than yc, swap xc and yc, and lengths.\r\n if (a < b) {\r\n c = xc;\r\n xc = yc;\r\n yc = c;\r\n j = a;\r\n a = b;\r\n b = j;\r\n }\r\n\r\n // Initialise coefficient array of result with zeros.\r\n for (c = new Array(j = a + b); j--;) c[j] = 0;\r\n\r\n // Multiply.\r\n\r\n // i is initially xc.length.\r\n for (i = b; i--;) {\r\n b = 0;\r\n\r\n // a is yc.length.\r\n for (j = a + i; j > i;) {\r\n\r\n // Current sum of products at this digit position, plus carry.\r\n b = c[j] + yc[i] * xc[j - i - 1] + b;\r\n c[j--] = b % 10;\r\n\r\n // carry\r\n b = b / 10 | 0;\r\n }\r\n\r\n c[j] = b;\r\n }\r\n\r\n // Increment result exponent if there is a final carry, otherwise remove leading zero.\r\n if (b) ++y.e;\r\n else c.shift();\r\n\r\n // Remove trailing zeros.\r\n for (i = c.length; !c[--i];) c.pop();\r\n y.c = c;\r\n\r\n return y;\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Big in exponential notation rounded to dp fixed\r\n * decimal places using rounding mode rm, or Big.RM if rm is not specified.\r\n *\r\n * dp? {number} Decimal places: integer, 0 to MAX_DP inclusive.\r\n * rm? {number} Rounding mode: 0 (down), 1 (half-up), 2 (half-even) or 3 (up).\r\n */\r\n P.toExponential = function (dp, rm) {\r\n var x = this,\r\n n = x.c[0];\r\n\r\n if (dp !== UNDEFINED) {\r\n if (dp !== ~~dp || dp < 0 || dp > MAX_DP) {\r\n throw Error(INVALID_DP);\r\n }\r\n x = round(new x.constructor(x), ++dp, rm);\r\n for (; x.c.length < dp;) x.c.push(0);\r\n }\r\n\r\n return stringify(x, true, !!n);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Big in normal notation rounded to dp fixed\r\n * decimal places using rounding mode rm, or Big.RM if rm is not specified.\r\n *\r\n * dp? {number} Decimal places: integer, 0 to MAX_DP inclusive.\r\n * rm? {number} Rounding mode: 0 (down), 1 (half-up), 2 (half-even) or 3 (up).\r\n *\r\n * (-0).toFixed(0) is '0', but (-0.1).toFixed(0) is '-0'.\r\n * (-0).toFixed(1) is '0.0', but (-0.01).toFixed(1) is '-0.0'.\r\n */\r\n P.toFixed = function (dp, rm) {\r\n var x = this,\r\n n = x.c[0];\r\n\r\n if (dp !== UNDEFINED) {\r\n if (dp !== ~~dp || dp < 0 || dp > MAX_DP) {\r\n throw Error(INVALID_DP);\r\n }\r\n x = round(new x.constructor(x), dp + x.e + 1, rm);\r\n\r\n // x.e may have changed if the value is rounded up.\r\n for (dp = dp + x.e + 1; x.c.length < dp;) x.c.push(0);\r\n }\r\n\r\n return stringify(x, false, !!n);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Big.\r\n * Return exponential notation if this Big has a positive exponent equal to or greater than\r\n * Big.PE, or a negative exponent equal to or less than Big.NE.\r\n * Omit the sign for negative zero.\r\n */\r\n P.toJSON = P.toString = function () {\r\n var x = this,\r\n Big = x.constructor;\r\n return stringify(x, x.e <= Big.NE || x.e >= Big.PE, !!x.c[0]);\r\n };\r\n\r\n\r\n /*\r\n * Return the value of this Big as a primitve number.\r\n */\r\n P.toNumber = function () {\r\n var n = Number(stringify(this, true, true));\r\n if (this.constructor.strict === true && !this.eq(n.toString())) {\r\n throw Error(NAME + 'Imprecise conversion');\r\n }\r\n return n;\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Big rounded to sd significant digits using\r\n * rounding mode rm, or Big.RM if rm is not specified.\r\n * Use exponential notation if sd is less than the number of digits necessary to represent\r\n * the integer part of the value in normal notation.\r\n *\r\n * sd {number} Significant digits: integer, 1 to MAX_DP inclusive.\r\n * rm? {number} Rounding mode: 0 (down), 1 (half-up), 2 (half-even) or 3 (up).\r\n */\r\n P.toPrecision = function (sd, rm) {\r\n var x = this,\r\n Big = x.constructor,\r\n n = x.c[0];\r\n\r\n if (sd !== UNDEFINED) {\r\n if (sd !== ~~sd || sd < 1 || sd > MAX_DP) {\r\n throw Error(INVALID + 'precision');\r\n }\r\n x = round(new Big(x), sd, rm);\r\n for (; x.c.length < sd;) x.c.push(0);\r\n }\r\n\r\n return stringify(x, sd <= x.e || x.e <= Big.NE || x.e >= Big.PE, !!n);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Big.\r\n * Return exponential notation if this Big has a positive exponent equal to or greater than\r\n * Big.PE, or a negative exponent equal to or less than Big.NE.\r\n * Include the sign for negative zero.\r\n */\r\n P.valueOf = function () {\r\n var x = this,\r\n Big = x.constructor;\r\n if (Big.strict === true) {\r\n throw Error(NAME + 'valueOf disallowed');\r\n }\r\n return stringify(x, x.e <= Big.NE || x.e >= Big.PE, true);\r\n };\r\n\r\n\r\n // Export\r\n\r\n\r\n Big = _Big_();\r\n\r\n Big['default'] = Big.Big = Big;\r\n\r\n //AMD.\r\n if (typeof define === 'function' && define.amd) {\r\n define(function () { return Big; });\r\n\r\n // Node and other CommonJS-like environments that support module.exports.\r\n } else if (typeof module !== 'undefined' && module.exports) {\r\n module.exports = Big;\r\n\r\n //Browser.\r\n } else {\r\n GLOBAL.Big = Big;\r\n }\r\n})(this);\r\n","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","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\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\n\nmodule.exports = _createClass, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nexport default function _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = getPrototypeOf(object);\n if (object === null) break;\n }\n\n return object;\n}","import superPropBase from \"./superPropBase.js\";\nexport default function _get() {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n _get = Reflect.get;\n } else {\n _get = function _get(target, property, receiver) {\n var base = superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.get) {\n return desc.get.call(arguments.length < 3 ? target : receiver);\n }\n\n return desc.value;\n };\n }\n\n return _get.apply(this, arguments);\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return assertThisInitialized(self);\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nimport possibleConstructorReturn from \"./possibleConstructorReturn.js\";\nexport default function _createSuper(Derived) {\n var hasNativeReflectConstruct = isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return possibleConstructorReturn(this, result);\n };\n}","export default function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}","import unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nexport default function _createForOfIteratorHelper(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n\n if (!it) {\n if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n\n var F = function F() {};\n\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = it.call(o);\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\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\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}","/*!\n * Chart.js v3.7.1\n * https://www.chartjs.org\n * (c) 2022 Chart.js Contributors\n * Released under the MIT License\n */\nfunction fontString(pixelSize, fontStyle, fontFamily) {\n return fontStyle + ' ' + pixelSize + 'px ' + fontFamily;\n}\nconst requestAnimFrame = (function() {\n if (typeof window === 'undefined') {\n return function(callback) {\n return callback();\n };\n }\n return window.requestAnimationFrame;\n}());\nfunction throttled(fn, thisArg, updateFn) {\n const updateArgs = updateFn || ((args) => Array.prototype.slice.call(args));\n let ticking = false;\n let args = [];\n return function(...rest) {\n args = updateArgs(rest);\n if (!ticking) {\n ticking = true;\n requestAnimFrame.call(window, () => {\n ticking = false;\n fn.apply(thisArg, args);\n });\n }\n };\n}\nfunction debounce(fn, delay) {\n let timeout;\n return function(...args) {\n if (delay) {\n clearTimeout(timeout);\n timeout = setTimeout(fn, delay, args);\n } else {\n fn.apply(this, args);\n }\n return delay;\n };\n}\nconst _toLeftRightCenter = (align) => align === 'start' ? 'left' : align === 'end' ? 'right' : 'center';\nconst _alignStartEnd = (align, start, end) => align === 'start' ? start : align === 'end' ? end : (start + end) / 2;\nconst _textX = (align, left, right, rtl) => {\n const check = rtl ? 'left' : 'right';\n return align === check ? right : align === 'center' ? (left + right) / 2 : left;\n};\n\nfunction noop() {}\nconst uid = (function() {\n let id = 0;\n return function() {\n return id++;\n };\n}());\nfunction isNullOrUndef(value) {\n return value === null || typeof value === 'undefined';\n}\nfunction isArray(value) {\n if (Array.isArray && Array.isArray(value)) {\n return true;\n }\n const type = Object.prototype.toString.call(value);\n if (type.substr(0, 7) === '[object' && type.substr(-6) === 'Array]') {\n return true;\n }\n return false;\n}\nfunction isObject(value) {\n return value !== null && Object.prototype.toString.call(value) === '[object Object]';\n}\nconst isNumberFinite = (value) => (typeof value === 'number' || value instanceof Number) && isFinite(+value);\nfunction finiteOrDefault(value, defaultValue) {\n return isNumberFinite(value) ? value : defaultValue;\n}\nfunction valueOrDefault(value, defaultValue) {\n return typeof value === 'undefined' ? defaultValue : value;\n}\nconst toPercentage = (value, dimension) =>\n typeof value === 'string' && value.endsWith('%') ?\n parseFloat(value) / 100\n : value / dimension;\nconst toDimension = (value, dimension) =>\n typeof value === 'string' && value.endsWith('%') ?\n parseFloat(value) / 100 * dimension\n : +value;\nfunction callback(fn, args, thisArg) {\n if (fn && typeof fn.call === 'function') {\n return fn.apply(thisArg, args);\n }\n}\nfunction each(loopable, fn, thisArg, reverse) {\n let i, len, keys;\n if (isArray(loopable)) {\n len = loopable.length;\n if (reverse) {\n for (i = len - 1; i >= 0; i--) {\n fn.call(thisArg, loopable[i], i);\n }\n } else {\n for (i = 0; i < len; i++) {\n fn.call(thisArg, loopable[i], i);\n }\n }\n } else if (isObject(loopable)) {\n keys = Object.keys(loopable);\n len = keys.length;\n for (i = 0; i < len; i++) {\n fn.call(thisArg, loopable[keys[i]], keys[i]);\n }\n }\n}\nfunction _elementsEqual(a0, a1) {\n let i, ilen, v0, v1;\n if (!a0 || !a1 || a0.length !== a1.length) {\n return false;\n }\n for (i = 0, ilen = a0.length; i < ilen; ++i) {\n v0 = a0[i];\n v1 = a1[i];\n if (v0.datasetIndex !== v1.datasetIndex || v0.index !== v1.index) {\n return false;\n }\n }\n return true;\n}\nfunction clone$1(source) {\n if (isArray(source)) {\n return source.map(clone$1);\n }\n if (isObject(source)) {\n const target = Object.create(null);\n const keys = Object.keys(source);\n const klen = keys.length;\n let k = 0;\n for (; k < klen; ++k) {\n target[keys[k]] = clone$1(source[keys[k]]);\n }\n return target;\n }\n return source;\n}\nfunction isValidKey(key) {\n return ['__proto__', 'prototype', 'constructor'].indexOf(key) === -1;\n}\nfunction _merger(key, target, source, options) {\n if (!isValidKey(key)) {\n return;\n }\n const tval = target[key];\n const sval = source[key];\n if (isObject(tval) && isObject(sval)) {\n merge(tval, sval, options);\n } else {\n target[key] = clone$1(sval);\n }\n}\nfunction merge(target, source, options) {\n const sources = isArray(source) ? source : [source];\n const ilen = sources.length;\n if (!isObject(target)) {\n return target;\n }\n options = options || {};\n const merger = options.merger || _merger;\n for (let i = 0; i < ilen; ++i) {\n source = sources[i];\n if (!isObject(source)) {\n continue;\n }\n const keys = Object.keys(source);\n for (let k = 0, klen = keys.length; k < klen; ++k) {\n merger(keys[k], target, source, options);\n }\n }\n return target;\n}\nfunction mergeIf(target, source) {\n return merge(target, source, {merger: _mergerIf});\n}\nfunction _mergerIf(key, target, source) {\n if (!isValidKey(key)) {\n return;\n }\n const tval = target[key];\n const sval = source[key];\n if (isObject(tval) && isObject(sval)) {\n mergeIf(tval, sval);\n } else if (!Object.prototype.hasOwnProperty.call(target, key)) {\n target[key] = clone$1(sval);\n }\n}\nfunction _deprecated(scope, value, previous, current) {\n if (value !== undefined) {\n console.warn(scope + ': \"' + previous +\n\t\t\t'\" is deprecated. Please use \"' + current + '\" instead');\n }\n}\nconst emptyString = '';\nconst dot = '.';\nfunction indexOfDotOrLength(key, start) {\n const idx = key.indexOf(dot, start);\n return idx === -1 ? key.length : idx;\n}\nfunction resolveObjectKey(obj, key) {\n if (key === emptyString) {\n return obj;\n }\n let pos = 0;\n let idx = indexOfDotOrLength(key, pos);\n while (obj && idx > pos) {\n obj = obj[key.substr(pos, idx - pos)];\n pos = idx + 1;\n idx = indexOfDotOrLength(key, pos);\n }\n return obj;\n}\nfunction _capitalize(str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\nconst defined = (value) => typeof value !== 'undefined';\nconst isFunction = (value) => typeof value === 'function';\nconst setsEqual = (a, b) => {\n if (a.size !== b.size) {\n return false;\n }\n for (const item of a) {\n if (!b.has(item)) {\n return false;\n }\n }\n return true;\n};\nfunction _isClickEvent(e) {\n return e.type === 'mouseup' || e.type === 'click' || e.type === 'contextmenu';\n}\n\nconst PI = Math.PI;\nconst TAU = 2 * PI;\nconst PITAU = TAU + PI;\nconst INFINITY = Number.POSITIVE_INFINITY;\nconst RAD_PER_DEG = PI / 180;\nconst HALF_PI = PI / 2;\nconst QUARTER_PI = PI / 4;\nconst TWO_THIRDS_PI = PI * 2 / 3;\nconst log10 = Math.log10;\nconst sign = Math.sign;\nfunction niceNum(range) {\n const roundedRange = Math.round(range);\n range = almostEquals(range, roundedRange, range / 1000) ? roundedRange : range;\n const niceRange = Math.pow(10, Math.floor(log10(range)));\n const fraction = range / niceRange;\n const niceFraction = fraction <= 1 ? 1 : fraction <= 2 ? 2 : fraction <= 5 ? 5 : 10;\n return niceFraction * niceRange;\n}\nfunction _factorize(value) {\n const result = [];\n const sqrt = Math.sqrt(value);\n let i;\n for (i = 1; i < sqrt; i++) {\n if (value % i === 0) {\n result.push(i);\n result.push(value / i);\n }\n }\n if (sqrt === (sqrt | 0)) {\n result.push(sqrt);\n }\n result.sort((a, b) => a - b).pop();\n return result;\n}\nfunction isNumber(n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n}\nfunction almostEquals(x, y, epsilon) {\n return Math.abs(x - y) < epsilon;\n}\nfunction almostWhole(x, epsilon) {\n const rounded = Math.round(x);\n return ((rounded - epsilon) <= x) && ((rounded + epsilon) >= x);\n}\nfunction _setMinAndMaxByKey(array, target, property) {\n let i, ilen, value;\n for (i = 0, ilen = array.length; i < ilen; i++) {\n value = array[i][property];\n if (!isNaN(value)) {\n target.min = Math.min(target.min, value);\n target.max = Math.max(target.max, value);\n }\n }\n}\nfunction toRadians(degrees) {\n return degrees * (PI / 180);\n}\nfunction toDegrees(radians) {\n return radians * (180 / PI);\n}\nfunction _decimalPlaces(x) {\n if (!isNumberFinite(x)) {\n return;\n }\n let e = 1;\n let p = 0;\n while (Math.round(x * e) / e !== x) {\n e *= 10;\n p++;\n }\n return p;\n}\nfunction getAngleFromPoint(centrePoint, anglePoint) {\n const distanceFromXCenter = anglePoint.x - centrePoint.x;\n const distanceFromYCenter = anglePoint.y - centrePoint.y;\n const radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter);\n let angle = Math.atan2(distanceFromYCenter, distanceFromXCenter);\n if (angle < (-0.5 * PI)) {\n angle += TAU;\n }\n return {\n angle,\n distance: radialDistanceFromCenter\n };\n}\nfunction distanceBetweenPoints(pt1, pt2) {\n return Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2));\n}\nfunction _angleDiff(a, b) {\n return (a - b + PITAU) % TAU - PI;\n}\nfunction _normalizeAngle(a) {\n return (a % TAU + TAU) % TAU;\n}\nfunction _angleBetween(angle, start, end, sameAngleIsFullCircle) {\n const a = _normalizeAngle(angle);\n const s = _normalizeAngle(start);\n const e = _normalizeAngle(end);\n const angleToStart = _normalizeAngle(s - a);\n const angleToEnd = _normalizeAngle(e - a);\n const startToAngle = _normalizeAngle(a - s);\n const endToAngle = _normalizeAngle(a - e);\n return a === s || a === e || (sameAngleIsFullCircle && s === e)\n || (angleToStart > angleToEnd && startToAngle < endToAngle);\n}\nfunction _limitValue(value, min, max) {\n return Math.max(min, Math.min(max, value));\n}\nfunction _int16Range(value) {\n return _limitValue(value, -32768, 32767);\n}\nfunction _isBetween(value, start, end, epsilon = 1e-6) {\n return value >= Math.min(start, end) - epsilon && value <= Math.max(start, end) + epsilon;\n}\n\nconst atEdge = (t) => t === 0 || t === 1;\nconst elasticIn = (t, s, p) => -(Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * TAU / p));\nconst elasticOut = (t, s, p) => Math.pow(2, -10 * t) * Math.sin((t - s) * TAU / p) + 1;\nconst effects = {\n linear: t => t,\n easeInQuad: t => t * t,\n easeOutQuad: t => -t * (t - 2),\n easeInOutQuad: t => ((t /= 0.5) < 1)\n ? 0.5 * t * t\n : -0.5 * ((--t) * (t - 2) - 1),\n easeInCubic: t => t * t * t,\n easeOutCubic: t => (t -= 1) * t * t + 1,\n easeInOutCubic: t => ((t /= 0.5) < 1)\n ? 0.5 * t * t * t\n : 0.5 * ((t -= 2) * t * t + 2),\n easeInQuart: t => t * t * t * t,\n easeOutQuart: t => -((t -= 1) * t * t * t - 1),\n easeInOutQuart: t => ((t /= 0.5) < 1)\n ? 0.5 * t * t * t * t\n : -0.5 * ((t -= 2) * t * t * t - 2),\n easeInQuint: t => t * t * t * t * t,\n easeOutQuint: t => (t -= 1) * t * t * t * t + 1,\n easeInOutQuint: t => ((t /= 0.5) < 1)\n ? 0.5 * t * t * t * t * t\n : 0.5 * ((t -= 2) * t * t * t * t + 2),\n easeInSine: t => -Math.cos(t * HALF_PI) + 1,\n easeOutSine: t => Math.sin(t * HALF_PI),\n easeInOutSine: t => -0.5 * (Math.cos(PI * t) - 1),\n easeInExpo: t => (t === 0) ? 0 : Math.pow(2, 10 * (t - 1)),\n easeOutExpo: t => (t === 1) ? 1 : -Math.pow(2, -10 * t) + 1,\n easeInOutExpo: t => atEdge(t) ? t : t < 0.5\n ? 0.5 * Math.pow(2, 10 * (t * 2 - 1))\n : 0.5 * (-Math.pow(2, -10 * (t * 2 - 1)) + 2),\n easeInCirc: t => (t >= 1) ? t : -(Math.sqrt(1 - t * t) - 1),\n easeOutCirc: t => Math.sqrt(1 - (t -= 1) * t),\n easeInOutCirc: t => ((t /= 0.5) < 1)\n ? -0.5 * (Math.sqrt(1 - t * t) - 1)\n : 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1),\n easeInElastic: t => atEdge(t) ? t : elasticIn(t, 0.075, 0.3),\n easeOutElastic: t => atEdge(t) ? t : elasticOut(t, 0.075, 0.3),\n easeInOutElastic(t) {\n const s = 0.1125;\n const p = 0.45;\n return atEdge(t) ? t :\n t < 0.5\n ? 0.5 * elasticIn(t * 2, s, p)\n : 0.5 + 0.5 * elasticOut(t * 2 - 1, s, p);\n },\n easeInBack(t) {\n const s = 1.70158;\n return t * t * ((s + 1) * t - s);\n },\n easeOutBack(t) {\n const s = 1.70158;\n return (t -= 1) * t * ((s + 1) * t + s) + 1;\n },\n easeInOutBack(t) {\n let s = 1.70158;\n if ((t /= 0.5) < 1) {\n return 0.5 * (t * t * (((s *= (1.525)) + 1) * t - s));\n }\n return 0.5 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2);\n },\n easeInBounce: t => 1 - effects.easeOutBounce(1 - t),\n easeOutBounce(t) {\n const m = 7.5625;\n const d = 2.75;\n if (t < (1 / d)) {\n return m * t * t;\n }\n if (t < (2 / d)) {\n return m * (t -= (1.5 / d)) * t + 0.75;\n }\n if (t < (2.5 / d)) {\n return m * (t -= (2.25 / d)) * t + 0.9375;\n }\n return m * (t -= (2.625 / d)) * t + 0.984375;\n },\n easeInOutBounce: t => (t < 0.5)\n ? effects.easeInBounce(t * 2) * 0.5\n : effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5,\n};\n\n/*!\n * @kurkle/color v0.1.9\n * https://github.com/kurkle/color#readme\n * (c) 2020 Jukka Kurkela\n * Released under the MIT License\n */\nconst map = {0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, A: 10, B: 11, C: 12, D: 13, E: 14, F: 15, a: 10, b: 11, c: 12, d: 13, e: 14, f: 15};\nconst hex = '0123456789ABCDEF';\nconst h1 = (b) => hex[b & 0xF];\nconst h2 = (b) => hex[(b & 0xF0) >> 4] + hex[b & 0xF];\nconst eq = (b) => (((b & 0xF0) >> 4) === (b & 0xF));\nfunction isShort(v) {\n\treturn eq(v.r) && eq(v.g) && eq(v.b) && eq(v.a);\n}\nfunction hexParse(str) {\n\tvar len = str.length;\n\tvar ret;\n\tif (str[0] === '#') {\n\t\tif (len === 4 || len === 5) {\n\t\t\tret = {\n\t\t\t\tr: 255 & map[str[1]] * 17,\n\t\t\t\tg: 255 & map[str[2]] * 17,\n\t\t\t\tb: 255 & map[str[3]] * 17,\n\t\t\t\ta: len === 5 ? map[str[4]] * 17 : 255\n\t\t\t};\n\t\t} else if (len === 7 || len === 9) {\n\t\t\tret = {\n\t\t\t\tr: map[str[1]] << 4 | map[str[2]],\n\t\t\t\tg: map[str[3]] << 4 | map[str[4]],\n\t\t\t\tb: map[str[5]] << 4 | map[str[6]],\n\t\t\t\ta: len === 9 ? (map[str[7]] << 4 | map[str[8]]) : 255\n\t\t\t};\n\t\t}\n\t}\n\treturn ret;\n}\nfunction hexString(v) {\n\tvar f = isShort(v) ? h1 : h2;\n\treturn v\n\t\t? '#' + f(v.r) + f(v.g) + f(v.b) + (v.a < 255 ? f(v.a) : '')\n\t\t: v;\n}\nfunction round(v) {\n\treturn v + 0.5 | 0;\n}\nconst lim = (v, l, h) => Math.max(Math.min(v, h), l);\nfunction p2b(v) {\n\treturn lim(round(v * 2.55), 0, 255);\n}\nfunction n2b(v) {\n\treturn lim(round(v * 255), 0, 255);\n}\nfunction b2n(v) {\n\treturn lim(round(v / 2.55) / 100, 0, 1);\n}\nfunction n2p(v) {\n\treturn lim(round(v * 100), 0, 100);\n}\nconst RGB_RE = /^rgba?\\(\\s*([-+.\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?(?:[\\s,/]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction rgbParse(str) {\n\tconst m = RGB_RE.exec(str);\n\tlet a = 255;\n\tlet r, g, b;\n\tif (!m) {\n\t\treturn;\n\t}\n\tif (m[7] !== r) {\n\t\tconst v = +m[7];\n\t\ta = 255 & (m[8] ? p2b(v) : v * 255);\n\t}\n\tr = +m[1];\n\tg = +m[3];\n\tb = +m[5];\n\tr = 255 & (m[2] ? p2b(r) : r);\n\tg = 255 & (m[4] ? p2b(g) : g);\n\tb = 255 & (m[6] ? p2b(b) : b);\n\treturn {\n\t\tr: r,\n\t\tg: g,\n\t\tb: b,\n\t\ta: a\n\t};\n}\nfunction rgbString(v) {\n\treturn v && (\n\t\tv.a < 255\n\t\t\t? `rgba(${v.r}, ${v.g}, ${v.b}, ${b2n(v.a)})`\n\t\t\t: `rgb(${v.r}, ${v.g}, ${v.b})`\n\t);\n}\nconst HUE_RE = /^(hsla?|hwb|hsv)\\(\\s*([-+.e\\d]+)(?:deg)?[\\s,]+([-+.e\\d]+)%[\\s,]+([-+.e\\d]+)%(?:[\\s,]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction hsl2rgbn(h, s, l) {\n\tconst a = s * Math.min(l, 1 - l);\n\tconst f = (n, k = (n + h / 30) % 12) => l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n\treturn [f(0), f(8), f(4)];\n}\nfunction hsv2rgbn(h, s, v) {\n\tconst f = (n, k = (n + h / 60) % 6) => v - v * s * Math.max(Math.min(k, 4 - k, 1), 0);\n\treturn [f(5), f(3), f(1)];\n}\nfunction hwb2rgbn(h, w, b) {\n\tconst rgb = hsl2rgbn(h, 1, 0.5);\n\tlet i;\n\tif (w + b > 1) {\n\t\ti = 1 / (w + b);\n\t\tw *= i;\n\t\tb *= i;\n\t}\n\tfor (i = 0; i < 3; i++) {\n\t\trgb[i] *= 1 - w - b;\n\t\trgb[i] += w;\n\t}\n\treturn rgb;\n}\nfunction rgb2hsl(v) {\n\tconst range = 255;\n\tconst r = v.r / range;\n\tconst g = v.g / range;\n\tconst b = v.b / range;\n\tconst max = Math.max(r, g, b);\n\tconst min = Math.min(r, g, b);\n\tconst l = (max + min) / 2;\n\tlet h, s, d;\n\tif (max !== min) {\n\t\td = max - min;\n\t\ts = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n\t\th = max === r\n\t\t\t? ((g - b) / d) + (g < b ? 6 : 0)\n\t\t\t: max === g\n\t\t\t\t? (b - r) / d + 2\n\t\t\t\t: (r - g) / d + 4;\n\t\th = h * 60 + 0.5;\n\t}\n\treturn [h | 0, s || 0, l];\n}\nfunction calln(f, a, b, c) {\n\treturn (\n\t\tArray.isArray(a)\n\t\t\t? f(a[0], a[1], a[2])\n\t\t\t: f(a, b, c)\n\t).map(n2b);\n}\nfunction hsl2rgb(h, s, l) {\n\treturn calln(hsl2rgbn, h, s, l);\n}\nfunction hwb2rgb(h, w, b) {\n\treturn calln(hwb2rgbn, h, w, b);\n}\nfunction hsv2rgb(h, s, v) {\n\treturn calln(hsv2rgbn, h, s, v);\n}\nfunction hue(h) {\n\treturn (h % 360 + 360) % 360;\n}\nfunction hueParse(str) {\n\tconst m = HUE_RE.exec(str);\n\tlet a = 255;\n\tlet v;\n\tif (!m) {\n\t\treturn;\n\t}\n\tif (m[5] !== v) {\n\t\ta = m[6] ? p2b(+m[5]) : n2b(+m[5]);\n\t}\n\tconst h = hue(+m[2]);\n\tconst p1 = +m[3] / 100;\n\tconst p2 = +m[4] / 100;\n\tif (m[1] === 'hwb') {\n\t\tv = hwb2rgb(h, p1, p2);\n\t} else if (m[1] === 'hsv') {\n\t\tv = hsv2rgb(h, p1, p2);\n\t} else {\n\t\tv = hsl2rgb(h, p1, p2);\n\t}\n\treturn {\n\t\tr: v[0],\n\t\tg: v[1],\n\t\tb: v[2],\n\t\ta: a\n\t};\n}\nfunction rotate(v, deg) {\n\tvar h = rgb2hsl(v);\n\th[0] = hue(h[0] + deg);\n\th = hsl2rgb(h);\n\tv.r = h[0];\n\tv.g = h[1];\n\tv.b = h[2];\n}\nfunction hslString(v) {\n\tif (!v) {\n\t\treturn;\n\t}\n\tconst a = rgb2hsl(v);\n\tconst h = a[0];\n\tconst s = n2p(a[1]);\n\tconst l = n2p(a[2]);\n\treturn v.a < 255\n\t\t? `hsla(${h}, ${s}%, ${l}%, ${b2n(v.a)})`\n\t\t: `hsl(${h}, ${s}%, ${l}%)`;\n}\nconst map$1 = {\n\tx: 'dark',\n\tZ: 'light',\n\tY: 're',\n\tX: 'blu',\n\tW: 'gr',\n\tV: 'medium',\n\tU: 'slate',\n\tA: 'ee',\n\tT: 'ol',\n\tS: 'or',\n\tB: 'ra',\n\tC: 'lateg',\n\tD: 'ights',\n\tR: 'in',\n\tQ: 'turquois',\n\tE: 'hi',\n\tP: 'ro',\n\tO: 'al',\n\tN: 'le',\n\tM: 'de',\n\tL: 'yello',\n\tF: 'en',\n\tK: 'ch',\n\tG: 'arks',\n\tH: 'ea',\n\tI: 'ightg',\n\tJ: 'wh'\n};\nconst names = {\n\tOiceXe: 'f0f8ff',\n\tantiquewEte: 'faebd7',\n\taqua: 'ffff',\n\taquamarRe: '7fffd4',\n\tazuY: 'f0ffff',\n\tbeige: 'f5f5dc',\n\tbisque: 'ffe4c4',\n\tblack: '0',\n\tblanKedOmond: 'ffebcd',\n\tXe: 'ff',\n\tXeviTet: '8a2be2',\n\tbPwn: 'a52a2a',\n\tburlywood: 'deb887',\n\tcaMtXe: '5f9ea0',\n\tKartYuse: '7fff00',\n\tKocTate: 'd2691e',\n\tcSO: 'ff7f50',\n\tcSnflowerXe: '6495ed',\n\tcSnsilk: 'fff8dc',\n\tcrimson: 'dc143c',\n\tcyan: 'ffff',\n\txXe: '8b',\n\txcyan: '8b8b',\n\txgTMnPd: 'b8860b',\n\txWay: 'a9a9a9',\n\txgYF: '6400',\n\txgYy: 'a9a9a9',\n\txkhaki: 'bdb76b',\n\txmagFta: '8b008b',\n\txTivegYF: '556b2f',\n\txSange: 'ff8c00',\n\txScEd: '9932cc',\n\txYd: '8b0000',\n\txsOmon: 'e9967a',\n\txsHgYF: '8fbc8f',\n\txUXe: '483d8b',\n\txUWay: '2f4f4f',\n\txUgYy: '2f4f4f',\n\txQe: 'ced1',\n\txviTet: '9400d3',\n\tdAppRk: 'ff1493',\n\tdApskyXe: 'bfff',\n\tdimWay: '696969',\n\tdimgYy: '696969',\n\tdodgerXe: '1e90ff',\n\tfiYbrick: 'b22222',\n\tflSOwEte: 'fffaf0',\n\tfoYstWAn: '228b22',\n\tfuKsia: 'ff00ff',\n\tgaRsbSo: 'dcdcdc',\n\tghostwEte: 'f8f8ff',\n\tgTd: 'ffd700',\n\tgTMnPd: 'daa520',\n\tWay: '808080',\n\tgYF: '8000',\n\tgYFLw: 'adff2f',\n\tgYy: '808080',\n\thoneyMw: 'f0fff0',\n\thotpRk: 'ff69b4',\n\tRdianYd: 'cd5c5c',\n\tRdigo: '4b0082',\n\tivSy: 'fffff0',\n\tkhaki: 'f0e68c',\n\tlavFMr: 'e6e6fa',\n\tlavFMrXsh: 'fff0f5',\n\tlawngYF: '7cfc00',\n\tNmoncEffon: 'fffacd',\n\tZXe: 'add8e6',\n\tZcSO: 'f08080',\n\tZcyan: 'e0ffff',\n\tZgTMnPdLw: 'fafad2',\n\tZWay: 'd3d3d3',\n\tZgYF: '90ee90',\n\tZgYy: 'd3d3d3',\n\tZpRk: 'ffb6c1',\n\tZsOmon: 'ffa07a',\n\tZsHgYF: '20b2aa',\n\tZskyXe: '87cefa',\n\tZUWay: '778899',\n\tZUgYy: '778899',\n\tZstAlXe: 'b0c4de',\n\tZLw: 'ffffe0',\n\tlime: 'ff00',\n\tlimegYF: '32cd32',\n\tlRF: 'faf0e6',\n\tmagFta: 'ff00ff',\n\tmaPon: '800000',\n\tVaquamarRe: '66cdaa',\n\tVXe: 'cd',\n\tVScEd: 'ba55d3',\n\tVpurpN: '9370db',\n\tVsHgYF: '3cb371',\n\tVUXe: '7b68ee',\n\tVsprRggYF: 'fa9a',\n\tVQe: '48d1cc',\n\tVviTetYd: 'c71585',\n\tmidnightXe: '191970',\n\tmRtcYam: 'f5fffa',\n\tmistyPse: 'ffe4e1',\n\tmoccasR: 'ffe4b5',\n\tnavajowEte: 'ffdead',\n\tnavy: '80',\n\tTdlace: 'fdf5e6',\n\tTive: '808000',\n\tTivedBb: '6b8e23',\n\tSange: 'ffa500',\n\tSangeYd: 'ff4500',\n\tScEd: 'da70d6',\n\tpOegTMnPd: 'eee8aa',\n\tpOegYF: '98fb98',\n\tpOeQe: 'afeeee',\n\tpOeviTetYd: 'db7093',\n\tpapayawEp: 'ffefd5',\n\tpHKpuff: 'ffdab9',\n\tperu: 'cd853f',\n\tpRk: 'ffc0cb',\n\tplum: 'dda0dd',\n\tpowMrXe: 'b0e0e6',\n\tpurpN: '800080',\n\tYbeccapurpN: '663399',\n\tYd: 'ff0000',\n\tPsybrown: 'bc8f8f',\n\tPyOXe: '4169e1',\n\tsaddNbPwn: '8b4513',\n\tsOmon: 'fa8072',\n\tsandybPwn: 'f4a460',\n\tsHgYF: '2e8b57',\n\tsHshell: 'fff5ee',\n\tsiFna: 'a0522d',\n\tsilver: 'c0c0c0',\n\tskyXe: '87ceeb',\n\tUXe: '6a5acd',\n\tUWay: '708090',\n\tUgYy: '708090',\n\tsnow: 'fffafa',\n\tsprRggYF: 'ff7f',\n\tstAlXe: '4682b4',\n\ttan: 'd2b48c',\n\tteO: '8080',\n\ttEstN: 'd8bfd8',\n\ttomato: 'ff6347',\n\tQe: '40e0d0',\n\tviTet: 'ee82ee',\n\tJHt: 'f5deb3',\n\twEte: 'ffffff',\n\twEtesmoke: 'f5f5f5',\n\tLw: 'ffff00',\n\tLwgYF: '9acd32'\n};\nfunction unpack() {\n\tconst unpacked = {};\n\tconst keys = Object.keys(names);\n\tconst tkeys = Object.keys(map$1);\n\tlet i, j, k, ok, nk;\n\tfor (i = 0; i < keys.length; i++) {\n\t\tok = nk = keys[i];\n\t\tfor (j = 0; j < tkeys.length; j++) {\n\t\t\tk = tkeys[j];\n\t\t\tnk = nk.replace(k, map$1[k]);\n\t\t}\n\t\tk = parseInt(names[ok], 16);\n\t\tunpacked[nk] = [k >> 16 & 0xFF, k >> 8 & 0xFF, k & 0xFF];\n\t}\n\treturn unpacked;\n}\nlet names$1;\nfunction nameParse(str) {\n\tif (!names$1) {\n\t\tnames$1 = unpack();\n\t\tnames$1.transparent = [0, 0, 0, 0];\n\t}\n\tconst a = names$1[str.toLowerCase()];\n\treturn a && {\n\t\tr: a[0],\n\t\tg: a[1],\n\t\tb: a[2],\n\t\ta: a.length === 4 ? a[3] : 255\n\t};\n}\nfunction modHSL(v, i, ratio) {\n\tif (v) {\n\t\tlet tmp = rgb2hsl(v);\n\t\ttmp[i] = Math.max(0, Math.min(tmp[i] + tmp[i] * ratio, i === 0 ? 360 : 1));\n\t\ttmp = hsl2rgb(tmp);\n\t\tv.r = tmp[0];\n\t\tv.g = tmp[1];\n\t\tv.b = tmp[2];\n\t}\n}\nfunction clone(v, proto) {\n\treturn v ? Object.assign(proto || {}, v) : v;\n}\nfunction fromObject(input) {\n\tvar v = {r: 0, g: 0, b: 0, a: 255};\n\tif (Array.isArray(input)) {\n\t\tif (input.length >= 3) {\n\t\t\tv = {r: input[0], g: input[1], b: input[2], a: 255};\n\t\t\tif (input.length > 3) {\n\t\t\t\tv.a = n2b(input[3]);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tv = clone(input, {r: 0, g: 0, b: 0, a: 1});\n\t\tv.a = n2b(v.a);\n\t}\n\treturn v;\n}\nfunction functionParse(str) {\n\tif (str.charAt(0) === 'r') {\n\t\treturn rgbParse(str);\n\t}\n\treturn hueParse(str);\n}\nclass Color {\n\tconstructor(input) {\n\t\tif (input instanceof Color) {\n\t\t\treturn input;\n\t\t}\n\t\tconst type = typeof input;\n\t\tlet v;\n\t\tif (type === 'object') {\n\t\t\tv = fromObject(input);\n\t\t} else if (type === 'string') {\n\t\t\tv = hexParse(input) || nameParse(input) || functionParse(input);\n\t\t}\n\t\tthis._rgb = v;\n\t\tthis._valid = !!v;\n\t}\n\tget valid() {\n\t\treturn this._valid;\n\t}\n\tget rgb() {\n\t\tvar v = clone(this._rgb);\n\t\tif (v) {\n\t\t\tv.a = b2n(v.a);\n\t\t}\n\t\treturn v;\n\t}\n\tset rgb(obj) {\n\t\tthis._rgb = fromObject(obj);\n\t}\n\trgbString() {\n\t\treturn this._valid ? rgbString(this._rgb) : this._rgb;\n\t}\n\thexString() {\n\t\treturn this._valid ? hexString(this._rgb) : this._rgb;\n\t}\n\thslString() {\n\t\treturn this._valid ? hslString(this._rgb) : this._rgb;\n\t}\n\tmix(color, weight) {\n\t\tconst me = this;\n\t\tif (color) {\n\t\t\tconst c1 = me.rgb;\n\t\t\tconst c2 = color.rgb;\n\t\t\tlet w2;\n\t\t\tconst p = weight === w2 ? 0.5 : weight;\n\t\t\tconst w = 2 * p - 1;\n\t\t\tconst a = c1.a - c2.a;\n\t\t\tconst w1 = ((w * a === -1 ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n\t\t\tw2 = 1 - w1;\n\t\t\tc1.r = 0xFF & w1 * c1.r + w2 * c2.r + 0.5;\n\t\t\tc1.g = 0xFF & w1 * c1.g + w2 * c2.g + 0.5;\n\t\t\tc1.b = 0xFF & w1 * c1.b + w2 * c2.b + 0.5;\n\t\t\tc1.a = p * c1.a + (1 - p) * c2.a;\n\t\t\tme.rgb = c1;\n\t\t}\n\t\treturn me;\n\t}\n\tclone() {\n\t\treturn new Color(this.rgb);\n\t}\n\talpha(a) {\n\t\tthis._rgb.a = n2b(a);\n\t\treturn this;\n\t}\n\tclearer(ratio) {\n\t\tconst rgb = this._rgb;\n\t\trgb.a *= 1 - ratio;\n\t\treturn this;\n\t}\n\tgreyscale() {\n\t\tconst rgb = this._rgb;\n\t\tconst val = round(rgb.r * 0.3 + rgb.g * 0.59 + rgb.b * 0.11);\n\t\trgb.r = rgb.g = rgb.b = val;\n\t\treturn this;\n\t}\n\topaquer(ratio) {\n\t\tconst rgb = this._rgb;\n\t\trgb.a *= 1 + ratio;\n\t\treturn this;\n\t}\n\tnegate() {\n\t\tconst v = this._rgb;\n\t\tv.r = 255 - v.r;\n\t\tv.g = 255 - v.g;\n\t\tv.b = 255 - v.b;\n\t\treturn this;\n\t}\n\tlighten(ratio) {\n\t\tmodHSL(this._rgb, 2, ratio);\n\t\treturn this;\n\t}\n\tdarken(ratio) {\n\t\tmodHSL(this._rgb, 2, -ratio);\n\t\treturn this;\n\t}\n\tsaturate(ratio) {\n\t\tmodHSL(this._rgb, 1, ratio);\n\t\treturn this;\n\t}\n\tdesaturate(ratio) {\n\t\tmodHSL(this._rgb, 1, -ratio);\n\t\treturn this;\n\t}\n\trotate(deg) {\n\t\trotate(this._rgb, deg);\n\t\treturn this;\n\t}\n}\nfunction index_esm(input) {\n\treturn new Color(input);\n}\n\nconst isPatternOrGradient = (value) => value instanceof CanvasGradient || value instanceof CanvasPattern;\nfunction color(value) {\n return isPatternOrGradient(value) ? value : index_esm(value);\n}\nfunction getHoverColor(value) {\n return isPatternOrGradient(value)\n ? value\n : index_esm(value).saturate(0.5).darken(0.1).hexString();\n}\n\nconst overrides = Object.create(null);\nconst descriptors = Object.create(null);\nfunction getScope$1(node, key) {\n if (!key) {\n return node;\n }\n const keys = key.split('.');\n for (let i = 0, n = keys.length; i < n; ++i) {\n const k = keys[i];\n node = node[k] || (node[k] = Object.create(null));\n }\n return node;\n}\nfunction set(root, scope, values) {\n if (typeof scope === 'string') {\n return merge(getScope$1(root, scope), values);\n }\n return merge(getScope$1(root, ''), scope);\n}\nclass Defaults {\n constructor(_descriptors) {\n this.animation = undefined;\n this.backgroundColor = 'rgba(0,0,0,0.1)';\n this.borderColor = 'rgba(0,0,0,0.1)';\n this.color = '#666';\n this.datasets = {};\n this.devicePixelRatio = (context) => context.chart.platform.getDevicePixelRatio();\n this.elements = {};\n this.events = [\n 'mousemove',\n 'mouseout',\n 'click',\n 'touchstart',\n 'touchmove'\n ];\n this.font = {\n family: \"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif\",\n size: 12,\n style: 'normal',\n lineHeight: 1.2,\n weight: null\n };\n this.hover = {};\n this.hoverBackgroundColor = (ctx, options) => getHoverColor(options.backgroundColor);\n this.hoverBorderColor = (ctx, options) => getHoverColor(options.borderColor);\n this.hoverColor = (ctx, options) => getHoverColor(options.color);\n this.indexAxis = 'x';\n this.interaction = {\n mode: 'nearest',\n intersect: true\n };\n this.maintainAspectRatio = true;\n this.onHover = null;\n this.onClick = null;\n this.parsing = true;\n this.plugins = {};\n this.responsive = true;\n this.scale = undefined;\n this.scales = {};\n this.showLine = true;\n this.drawActiveElementsOnTop = true;\n this.describe(_descriptors);\n }\n set(scope, values) {\n return set(this, scope, values);\n }\n get(scope) {\n return getScope$1(this, scope);\n }\n describe(scope, values) {\n return set(descriptors, scope, values);\n }\n override(scope, values) {\n return set(overrides, scope, values);\n }\n route(scope, name, targetScope, targetName) {\n const scopeObject = getScope$1(this, scope);\n const targetScopeObject = getScope$1(this, targetScope);\n const privateName = '_' + name;\n Object.defineProperties(scopeObject, {\n [privateName]: {\n value: scopeObject[name],\n writable: true\n },\n [name]: {\n enumerable: true,\n get() {\n const local = this[privateName];\n const target = targetScopeObject[targetName];\n if (isObject(local)) {\n return Object.assign({}, target, local);\n }\n return valueOrDefault(local, target);\n },\n set(value) {\n this[privateName] = value;\n }\n }\n });\n }\n}\nvar defaults = new Defaults({\n _scriptable: (name) => !name.startsWith('on'),\n _indexable: (name) => name !== 'events',\n hover: {\n _fallback: 'interaction'\n },\n interaction: {\n _scriptable: false,\n _indexable: false,\n }\n});\n\nfunction toFontString(font) {\n if (!font || isNullOrUndef(font.size) || isNullOrUndef(font.family)) {\n return null;\n }\n return (font.style ? font.style + ' ' : '')\n\t\t+ (font.weight ? font.weight + ' ' : '')\n\t\t+ font.size + 'px '\n\t\t+ font.family;\n}\nfunction _measureText(ctx, data, gc, longest, string) {\n let textWidth = data[string];\n if (!textWidth) {\n textWidth = data[string] = ctx.measureText(string).width;\n gc.push(string);\n }\n if (textWidth > longest) {\n longest = textWidth;\n }\n return longest;\n}\nfunction _longestText(ctx, font, arrayOfThings, cache) {\n cache = cache || {};\n let data = cache.data = cache.data || {};\n let gc = cache.garbageCollect = cache.garbageCollect || [];\n if (cache.font !== font) {\n data = cache.data = {};\n gc = cache.garbageCollect = [];\n cache.font = font;\n }\n ctx.save();\n ctx.font = font;\n let longest = 0;\n const ilen = arrayOfThings.length;\n let i, j, jlen, thing, nestedThing;\n for (i = 0; i < ilen; i++) {\n thing = arrayOfThings[i];\n if (thing !== undefined && thing !== null && isArray(thing) !== true) {\n longest = _measureText(ctx, data, gc, longest, thing);\n } else if (isArray(thing)) {\n for (j = 0, jlen = thing.length; j < jlen; j++) {\n nestedThing = thing[j];\n if (nestedThing !== undefined && nestedThing !== null && !isArray(nestedThing)) {\n longest = _measureText(ctx, data, gc, longest, nestedThing);\n }\n }\n }\n }\n ctx.restore();\n const gcLen = gc.length / 2;\n if (gcLen > arrayOfThings.length) {\n for (i = 0; i < gcLen; i++) {\n delete data[gc[i]];\n }\n gc.splice(0, gcLen);\n }\n return longest;\n}\nfunction _alignPixel(chart, pixel, width) {\n const devicePixelRatio = chart.currentDevicePixelRatio;\n const halfWidth = width !== 0 ? Math.max(width / 2, 0.5) : 0;\n return Math.round((pixel - halfWidth) * devicePixelRatio) / devicePixelRatio + halfWidth;\n}\nfunction clearCanvas(canvas, ctx) {\n ctx = ctx || canvas.getContext('2d');\n ctx.save();\n ctx.resetTransform();\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n ctx.restore();\n}\nfunction drawPoint(ctx, options, x, y) {\n let type, xOffset, yOffset, size, cornerRadius;\n const style = options.pointStyle;\n const rotation = options.rotation;\n const radius = options.radius;\n let rad = (rotation || 0) * RAD_PER_DEG;\n if (style && typeof style === 'object') {\n type = style.toString();\n if (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') {\n ctx.save();\n ctx.translate(x, y);\n ctx.rotate(rad);\n ctx.drawImage(style, -style.width / 2, -style.height / 2, style.width, style.height);\n ctx.restore();\n return;\n }\n }\n if (isNaN(radius) || radius <= 0) {\n return;\n }\n ctx.beginPath();\n switch (style) {\n default:\n ctx.arc(x, y, radius, 0, TAU);\n ctx.closePath();\n break;\n case 'triangle':\n ctx.moveTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n ctx.closePath();\n break;\n case 'rectRounded':\n cornerRadius = radius * 0.516;\n size = radius - cornerRadius;\n xOffset = Math.cos(rad + QUARTER_PI) * size;\n yOffset = Math.sin(rad + QUARTER_PI) * size;\n ctx.arc(x - xOffset, y - yOffset, cornerRadius, rad - PI, rad - HALF_PI);\n ctx.arc(x + yOffset, y - xOffset, cornerRadius, rad - HALF_PI, rad);\n ctx.arc(x + xOffset, y + yOffset, cornerRadius, rad, rad + HALF_PI);\n ctx.arc(x - yOffset, y + xOffset, cornerRadius, rad + HALF_PI, rad + PI);\n ctx.closePath();\n break;\n case 'rect':\n if (!rotation) {\n size = Math.SQRT1_2 * radius;\n ctx.rect(x - size, y - size, 2 * size, 2 * size);\n break;\n }\n rad += QUARTER_PI;\n case 'rectRot':\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + yOffset, y - xOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n ctx.closePath();\n break;\n case 'crossRot':\n rad += QUARTER_PI;\n case 'cross':\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.moveTo(x + yOffset, y - xOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n break;\n case 'star':\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.moveTo(x + yOffset, y - xOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n rad += QUARTER_PI;\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.moveTo(x + yOffset, y - xOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n break;\n case 'line':\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n break;\n case 'dash':\n ctx.moveTo(x, y);\n ctx.lineTo(x + Math.cos(rad) * radius, y + Math.sin(rad) * radius);\n break;\n }\n ctx.fill();\n if (options.borderWidth > 0) {\n ctx.stroke();\n }\n}\nfunction _isPointInArea(point, area, margin) {\n margin = margin || 0.5;\n return !area || (point && point.x > area.left - margin && point.x < area.right + margin &&\n\t\tpoint.y > area.top - margin && point.y < area.bottom + margin);\n}\nfunction clipArea(ctx, area) {\n ctx.save();\n ctx.beginPath();\n ctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top);\n ctx.clip();\n}\nfunction unclipArea(ctx) {\n ctx.restore();\n}\nfunction _steppedLineTo(ctx, previous, target, flip, mode) {\n if (!previous) {\n return ctx.lineTo(target.x, target.y);\n }\n if (mode === 'middle') {\n const midpoint = (previous.x + target.x) / 2.0;\n ctx.lineTo(midpoint, previous.y);\n ctx.lineTo(midpoint, target.y);\n } else if (mode === 'after' !== !!flip) {\n ctx.lineTo(previous.x, target.y);\n } else {\n ctx.lineTo(target.x, previous.y);\n }\n ctx.lineTo(target.x, target.y);\n}\nfunction _bezierCurveTo(ctx, previous, target, flip) {\n if (!previous) {\n return ctx.lineTo(target.x, target.y);\n }\n ctx.bezierCurveTo(\n flip ? previous.cp1x : previous.cp2x,\n flip ? previous.cp1y : previous.cp2y,\n flip ? target.cp2x : target.cp1x,\n flip ? target.cp2y : target.cp1y,\n target.x,\n target.y);\n}\nfunction renderText(ctx, text, x, y, font, opts = {}) {\n const lines = isArray(text) ? text : [text];\n const stroke = opts.strokeWidth > 0 && opts.strokeColor !== '';\n let i, line;\n ctx.save();\n ctx.font = font.string;\n setRenderOpts(ctx, opts);\n for (i = 0; i < lines.length; ++i) {\n line = lines[i];\n if (stroke) {\n if (opts.strokeColor) {\n ctx.strokeStyle = opts.strokeColor;\n }\n if (!isNullOrUndef(opts.strokeWidth)) {\n ctx.lineWidth = opts.strokeWidth;\n }\n ctx.strokeText(line, x, y, opts.maxWidth);\n }\n ctx.fillText(line, x, y, opts.maxWidth);\n decorateText(ctx, x, y, line, opts);\n y += font.lineHeight;\n }\n ctx.restore();\n}\nfunction setRenderOpts(ctx, opts) {\n if (opts.translation) {\n ctx.translate(opts.translation[0], opts.translation[1]);\n }\n if (!isNullOrUndef(opts.rotation)) {\n ctx.rotate(opts.rotation);\n }\n if (opts.color) {\n ctx.fillStyle = opts.color;\n }\n if (opts.textAlign) {\n ctx.textAlign = opts.textAlign;\n }\n if (opts.textBaseline) {\n ctx.textBaseline = opts.textBaseline;\n }\n}\nfunction decorateText(ctx, x, y, line, opts) {\n if (opts.strikethrough || opts.underline) {\n const metrics = ctx.measureText(line);\n const left = x - metrics.actualBoundingBoxLeft;\n const right = x + metrics.actualBoundingBoxRight;\n const top = y - metrics.actualBoundingBoxAscent;\n const bottom = y + metrics.actualBoundingBoxDescent;\n const yDecoration = opts.strikethrough ? (top + bottom) / 2 : bottom;\n ctx.strokeStyle = ctx.fillStyle;\n ctx.beginPath();\n ctx.lineWidth = opts.decorationWidth || 2;\n ctx.moveTo(left, yDecoration);\n ctx.lineTo(right, yDecoration);\n ctx.stroke();\n }\n}\nfunction addRoundedRectPath(ctx, rect) {\n const {x, y, w, h, radius} = rect;\n ctx.arc(x + radius.topLeft, y + radius.topLeft, radius.topLeft, -HALF_PI, PI, true);\n ctx.lineTo(x, y + h - radius.bottomLeft);\n ctx.arc(x + radius.bottomLeft, y + h - radius.bottomLeft, radius.bottomLeft, PI, HALF_PI, true);\n ctx.lineTo(x + w - radius.bottomRight, y + h);\n ctx.arc(x + w - radius.bottomRight, y + h - radius.bottomRight, radius.bottomRight, HALF_PI, 0, true);\n ctx.lineTo(x + w, y + radius.topRight);\n ctx.arc(x + w - radius.topRight, y + radius.topRight, radius.topRight, 0, -HALF_PI, true);\n ctx.lineTo(x + radius.topLeft, y);\n}\n\nconst LINE_HEIGHT = new RegExp(/^(normal|(\\d+(?:\\.\\d+)?)(px|em|%)?)$/);\nconst FONT_STYLE = new RegExp(/^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$/);\nfunction toLineHeight(value, size) {\n const matches = ('' + value).match(LINE_HEIGHT);\n if (!matches || matches[1] === 'normal') {\n return size * 1.2;\n }\n value = +matches[2];\n switch (matches[3]) {\n case 'px':\n return value;\n case '%':\n value /= 100;\n break;\n }\n return size * value;\n}\nconst numberOrZero = v => +v || 0;\nfunction _readValueToProps(value, props) {\n const ret = {};\n const objProps = isObject(props);\n const keys = objProps ? Object.keys(props) : props;\n const read = isObject(value)\n ? objProps\n ? prop => valueOrDefault(value[prop], value[props[prop]])\n : prop => value[prop]\n : () => value;\n for (const prop of keys) {\n ret[prop] = numberOrZero(read(prop));\n }\n return ret;\n}\nfunction toTRBL(value) {\n return _readValueToProps(value, {top: 'y', right: 'x', bottom: 'y', left: 'x'});\n}\nfunction toTRBLCorners(value) {\n return _readValueToProps(value, ['topLeft', 'topRight', 'bottomLeft', 'bottomRight']);\n}\nfunction toPadding(value) {\n const obj = toTRBL(value);\n obj.width = obj.left + obj.right;\n obj.height = obj.top + obj.bottom;\n return obj;\n}\nfunction toFont(options, fallback) {\n options = options || {};\n fallback = fallback || defaults.font;\n let size = valueOrDefault(options.size, fallback.size);\n if (typeof size === 'string') {\n size = parseInt(size, 10);\n }\n let style = valueOrDefault(options.style, fallback.style);\n if (style && !('' + style).match(FONT_STYLE)) {\n console.warn('Invalid font style specified: \"' + style + '\"');\n style = '';\n }\n const font = {\n family: valueOrDefault(options.family, fallback.family),\n lineHeight: toLineHeight(valueOrDefault(options.lineHeight, fallback.lineHeight), size),\n size,\n style,\n weight: valueOrDefault(options.weight, fallback.weight),\n string: ''\n };\n font.string = toFontString(font);\n return font;\n}\nfunction resolve(inputs, context, index, info) {\n let cacheable = true;\n let i, ilen, value;\n for (i = 0, ilen = inputs.length; i < ilen; ++i) {\n value = inputs[i];\n if (value === undefined) {\n continue;\n }\n if (context !== undefined && typeof value === 'function') {\n value = value(context);\n cacheable = false;\n }\n if (index !== undefined && isArray(value)) {\n value = value[index % value.length];\n cacheable = false;\n }\n if (value !== undefined) {\n if (info && !cacheable) {\n info.cacheable = false;\n }\n return value;\n }\n }\n}\nfunction _addGrace(minmax, grace, beginAtZero) {\n const {min, max} = minmax;\n const change = toDimension(grace, (max - min) / 2);\n const keepZero = (value, add) => beginAtZero && value === 0 ? 0 : value + add;\n return {\n min: keepZero(min, -Math.abs(change)),\n max: keepZero(max, change)\n };\n}\nfunction createContext(parentContext, context) {\n return Object.assign(Object.create(parentContext), context);\n}\n\nfunction _lookup(table, value, cmp) {\n cmp = cmp || ((index) => table[index] < value);\n let hi = table.length - 1;\n let lo = 0;\n let mid;\n while (hi - lo > 1) {\n mid = (lo + hi) >> 1;\n if (cmp(mid)) {\n lo = mid;\n } else {\n hi = mid;\n }\n }\n return {lo, hi};\n}\nconst _lookupByKey = (table, key, value) =>\n _lookup(table, value, index => table[index][key] < value);\nconst _rlookupByKey = (table, key, value) =>\n _lookup(table, value, index => table[index][key] >= value);\nfunction _filterBetween(values, min, max) {\n let start = 0;\n let end = values.length;\n while (start < end && values[start] < min) {\n start++;\n }\n while (end > start && values[end - 1] > max) {\n end--;\n }\n return start > 0 || end < values.length\n ? values.slice(start, end)\n : values;\n}\nconst arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift'];\nfunction listenArrayEvents(array, listener) {\n if (array._chartjs) {\n array._chartjs.listeners.push(listener);\n return;\n }\n Object.defineProperty(array, '_chartjs', {\n configurable: true,\n enumerable: false,\n value: {\n listeners: [listener]\n }\n });\n arrayEvents.forEach((key) => {\n const method = '_onData' + _capitalize(key);\n const base = array[key];\n Object.defineProperty(array, key, {\n configurable: true,\n enumerable: false,\n value(...args) {\n const res = base.apply(this, args);\n array._chartjs.listeners.forEach((object) => {\n if (typeof object[method] === 'function') {\n object[method](...args);\n }\n });\n return res;\n }\n });\n });\n}\nfunction unlistenArrayEvents(array, listener) {\n const stub = array._chartjs;\n if (!stub) {\n return;\n }\n const listeners = stub.listeners;\n const index = listeners.indexOf(listener);\n if (index !== -1) {\n listeners.splice(index, 1);\n }\n if (listeners.length > 0) {\n return;\n }\n arrayEvents.forEach((key) => {\n delete array[key];\n });\n delete array._chartjs;\n}\nfunction _arrayUnique(items) {\n const set = new Set();\n let i, ilen;\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n set.add(items[i]);\n }\n if (set.size === ilen) {\n return items;\n }\n return Array.from(set);\n}\n\nfunction _createResolver(scopes, prefixes = [''], rootScopes = scopes, fallback, getTarget = () => scopes[0]) {\n if (!defined(fallback)) {\n fallback = _resolve('_fallback', scopes);\n }\n const cache = {\n [Symbol.toStringTag]: 'Object',\n _cacheable: true,\n _scopes: scopes,\n _rootScopes: rootScopes,\n _fallback: fallback,\n _getTarget: getTarget,\n override: (scope) => _createResolver([scope, ...scopes], prefixes, rootScopes, fallback),\n };\n return new Proxy(cache, {\n deleteProperty(target, prop) {\n delete target[prop];\n delete target._keys;\n delete scopes[0][prop];\n return true;\n },\n get(target, prop) {\n return _cached(target, prop,\n () => _resolveWithPrefixes(prop, prefixes, scopes, target));\n },\n getOwnPropertyDescriptor(target, prop) {\n return Reflect.getOwnPropertyDescriptor(target._scopes[0], prop);\n },\n getPrototypeOf() {\n return Reflect.getPrototypeOf(scopes[0]);\n },\n has(target, prop) {\n return getKeysFromAllScopes(target).includes(prop);\n },\n ownKeys(target) {\n return getKeysFromAllScopes(target);\n },\n set(target, prop, value) {\n const storage = target._storage || (target._storage = getTarget());\n target[prop] = storage[prop] = value;\n delete target._keys;\n return true;\n }\n });\n}\nfunction _attachContext(proxy, context, subProxy, descriptorDefaults) {\n const cache = {\n _cacheable: false,\n _proxy: proxy,\n _context: context,\n _subProxy: subProxy,\n _stack: new Set(),\n _descriptors: _descriptors(proxy, descriptorDefaults),\n setContext: (ctx) => _attachContext(proxy, ctx, subProxy, descriptorDefaults),\n override: (scope) => _attachContext(proxy.override(scope), context, subProxy, descriptorDefaults)\n };\n return new Proxy(cache, {\n deleteProperty(target, prop) {\n delete target[prop];\n delete proxy[prop];\n return true;\n },\n get(target, prop, receiver) {\n return _cached(target, prop,\n () => _resolveWithContext(target, prop, receiver));\n },\n getOwnPropertyDescriptor(target, prop) {\n return target._descriptors.allKeys\n ? Reflect.has(proxy, prop) ? {enumerable: true, configurable: true} : undefined\n : Reflect.getOwnPropertyDescriptor(proxy, prop);\n },\n getPrototypeOf() {\n return Reflect.getPrototypeOf(proxy);\n },\n has(target, prop) {\n return Reflect.has(proxy, prop);\n },\n ownKeys() {\n return Reflect.ownKeys(proxy);\n },\n set(target, prop, value) {\n proxy[prop] = value;\n delete target[prop];\n return true;\n }\n });\n}\nfunction _descriptors(proxy, defaults = {scriptable: true, indexable: true}) {\n const {_scriptable = defaults.scriptable, _indexable = defaults.indexable, _allKeys = defaults.allKeys} = proxy;\n return {\n allKeys: _allKeys,\n scriptable: _scriptable,\n indexable: _indexable,\n isScriptable: isFunction(_scriptable) ? _scriptable : () => _scriptable,\n isIndexable: isFunction(_indexable) ? _indexable : () => _indexable\n };\n}\nconst readKey = (prefix, name) => prefix ? prefix + _capitalize(name) : name;\nconst needsSubResolver = (prop, value) => isObject(value) && prop !== 'adapters' &&\n (Object.getPrototypeOf(value) === null || value.constructor === Object);\nfunction _cached(target, prop, resolve) {\n if (Object.prototype.hasOwnProperty.call(target, prop)) {\n return target[prop];\n }\n const value = resolve();\n target[prop] = value;\n return value;\n}\nfunction _resolveWithContext(target, prop, receiver) {\n const {_proxy, _context, _subProxy, _descriptors: descriptors} = target;\n let value = _proxy[prop];\n if (isFunction(value) && descriptors.isScriptable(prop)) {\n value = _resolveScriptable(prop, value, target, receiver);\n }\n if (isArray(value) && value.length) {\n value = _resolveArray(prop, value, target, descriptors.isIndexable);\n }\n if (needsSubResolver(prop, value)) {\n value = _attachContext(value, _context, _subProxy && _subProxy[prop], descriptors);\n }\n return value;\n}\nfunction _resolveScriptable(prop, value, target, receiver) {\n const {_proxy, _context, _subProxy, _stack} = target;\n if (_stack.has(prop)) {\n throw new Error('Recursion detected: ' + Array.from(_stack).join('->') + '->' + prop);\n }\n _stack.add(prop);\n value = value(_context, _subProxy || receiver);\n _stack.delete(prop);\n if (needsSubResolver(prop, value)) {\n value = createSubResolver(_proxy._scopes, _proxy, prop, value);\n }\n return value;\n}\nfunction _resolveArray(prop, value, target, isIndexable) {\n const {_proxy, _context, _subProxy, _descriptors: descriptors} = target;\n if (defined(_context.index) && isIndexable(prop)) {\n value = value[_context.index % value.length];\n } else if (isObject(value[0])) {\n const arr = value;\n const scopes = _proxy._scopes.filter(s => s !== arr);\n value = [];\n for (const item of arr) {\n const resolver = createSubResolver(scopes, _proxy, prop, item);\n value.push(_attachContext(resolver, _context, _subProxy && _subProxy[prop], descriptors));\n }\n }\n return value;\n}\nfunction resolveFallback(fallback, prop, value) {\n return isFunction(fallback) ? fallback(prop, value) : fallback;\n}\nconst getScope = (key, parent) => key === true ? parent\n : typeof key === 'string' ? resolveObjectKey(parent, key) : undefined;\nfunction addScopes(set, parentScopes, key, parentFallback, value) {\n for (const parent of parentScopes) {\n const scope = getScope(key, parent);\n if (scope) {\n set.add(scope);\n const fallback = resolveFallback(scope._fallback, key, value);\n if (defined(fallback) && fallback !== key && fallback !== parentFallback) {\n return fallback;\n }\n } else if (scope === false && defined(parentFallback) && key !== parentFallback) {\n return null;\n }\n }\n return false;\n}\nfunction createSubResolver(parentScopes, resolver, prop, value) {\n const rootScopes = resolver._rootScopes;\n const fallback = resolveFallback(resolver._fallback, prop, value);\n const allScopes = [...parentScopes, ...rootScopes];\n const set = new Set();\n set.add(value);\n let key = addScopesFromKey(set, allScopes, prop, fallback || prop, value);\n if (key === null) {\n return false;\n }\n if (defined(fallback) && fallback !== prop) {\n key = addScopesFromKey(set, allScopes, fallback, key, value);\n if (key === null) {\n return false;\n }\n }\n return _createResolver(Array.from(set), [''], rootScopes, fallback,\n () => subGetTarget(resolver, prop, value));\n}\nfunction addScopesFromKey(set, allScopes, key, fallback, item) {\n while (key) {\n key = addScopes(set, allScopes, key, fallback, item);\n }\n return key;\n}\nfunction subGetTarget(resolver, prop, value) {\n const parent = resolver._getTarget();\n if (!(prop in parent)) {\n parent[prop] = {};\n }\n const target = parent[prop];\n if (isArray(target) && isObject(value)) {\n return value;\n }\n return target;\n}\nfunction _resolveWithPrefixes(prop, prefixes, scopes, proxy) {\n let value;\n for (const prefix of prefixes) {\n value = _resolve(readKey(prefix, prop), scopes);\n if (defined(value)) {\n return needsSubResolver(prop, value)\n ? createSubResolver(scopes, proxy, prop, value)\n : value;\n }\n }\n}\nfunction _resolve(key, scopes) {\n for (const scope of scopes) {\n if (!scope) {\n continue;\n }\n const value = scope[key];\n if (defined(value)) {\n return value;\n }\n }\n}\nfunction getKeysFromAllScopes(target) {\n let keys = target._keys;\n if (!keys) {\n keys = target._keys = resolveKeysFromAllScopes(target._scopes);\n }\n return keys;\n}\nfunction resolveKeysFromAllScopes(scopes) {\n const set = new Set();\n for (const scope of scopes) {\n for (const key of Object.keys(scope).filter(k => !k.startsWith('_'))) {\n set.add(key);\n }\n }\n return Array.from(set);\n}\n\nconst EPSILON = Number.EPSILON || 1e-14;\nconst getPoint = (points, i) => i < points.length && !points[i].skip && points[i];\nconst getValueAxis = (indexAxis) => indexAxis === 'x' ? 'y' : 'x';\nfunction splineCurve(firstPoint, middlePoint, afterPoint, t) {\n const previous = firstPoint.skip ? middlePoint : firstPoint;\n const current = middlePoint;\n const next = afterPoint.skip ? middlePoint : afterPoint;\n const d01 = distanceBetweenPoints(current, previous);\n const d12 = distanceBetweenPoints(next, current);\n let s01 = d01 / (d01 + d12);\n let s12 = d12 / (d01 + d12);\n s01 = isNaN(s01) ? 0 : s01;\n s12 = isNaN(s12) ? 0 : s12;\n const fa = t * s01;\n const fb = t * s12;\n return {\n previous: {\n x: current.x - fa * (next.x - previous.x),\n y: current.y - fa * (next.y - previous.y)\n },\n next: {\n x: current.x + fb * (next.x - previous.x),\n y: current.y + fb * (next.y - previous.y)\n }\n };\n}\nfunction monotoneAdjust(points, deltaK, mK) {\n const pointsLen = points.length;\n let alphaK, betaK, tauK, squaredMagnitude, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for (let i = 0; i < pointsLen - 1; ++i) {\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent || !pointAfter) {\n continue;\n }\n if (almostEquals(deltaK[i], 0, EPSILON)) {\n mK[i] = mK[i + 1] = 0;\n continue;\n }\n alphaK = mK[i] / deltaK[i];\n betaK = mK[i + 1] / deltaK[i];\n squaredMagnitude = Math.pow(alphaK, 2) + Math.pow(betaK, 2);\n if (squaredMagnitude <= 9) {\n continue;\n }\n tauK = 3 / Math.sqrt(squaredMagnitude);\n mK[i] = alphaK * tauK * deltaK[i];\n mK[i + 1] = betaK * tauK * deltaK[i];\n }\n}\nfunction monotoneCompute(points, mK, indexAxis = 'x') {\n const valueAxis = getValueAxis(indexAxis);\n const pointsLen = points.length;\n let delta, pointBefore, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for (let i = 0; i < pointsLen; ++i) {\n pointBefore = pointCurrent;\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent) {\n continue;\n }\n const iPixel = pointCurrent[indexAxis];\n const vPixel = pointCurrent[valueAxis];\n if (pointBefore) {\n delta = (iPixel - pointBefore[indexAxis]) / 3;\n pointCurrent[`cp1${indexAxis}`] = iPixel - delta;\n pointCurrent[`cp1${valueAxis}`] = vPixel - delta * mK[i];\n }\n if (pointAfter) {\n delta = (pointAfter[indexAxis] - iPixel) / 3;\n pointCurrent[`cp2${indexAxis}`] = iPixel + delta;\n pointCurrent[`cp2${valueAxis}`] = vPixel + delta * mK[i];\n }\n }\n}\nfunction splineCurveMonotone(points, indexAxis = 'x') {\n const valueAxis = getValueAxis(indexAxis);\n const pointsLen = points.length;\n const deltaK = Array(pointsLen).fill(0);\n const mK = Array(pointsLen);\n let i, pointBefore, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for (i = 0; i < pointsLen; ++i) {\n pointBefore = pointCurrent;\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent) {\n continue;\n }\n if (pointAfter) {\n const slopeDelta = pointAfter[indexAxis] - pointCurrent[indexAxis];\n deltaK[i] = slopeDelta !== 0 ? (pointAfter[valueAxis] - pointCurrent[valueAxis]) / slopeDelta : 0;\n }\n mK[i] = !pointBefore ? deltaK[i]\n : !pointAfter ? deltaK[i - 1]\n : (sign(deltaK[i - 1]) !== sign(deltaK[i])) ? 0\n : (deltaK[i - 1] + deltaK[i]) / 2;\n }\n monotoneAdjust(points, deltaK, mK);\n monotoneCompute(points, mK, indexAxis);\n}\nfunction capControlPoint(pt, min, max) {\n return Math.max(Math.min(pt, max), min);\n}\nfunction capBezierPoints(points, area) {\n let i, ilen, point, inArea, inAreaPrev;\n let inAreaNext = _isPointInArea(points[0], area);\n for (i = 0, ilen = points.length; i < ilen; ++i) {\n inAreaPrev = inArea;\n inArea = inAreaNext;\n inAreaNext = i < ilen - 1 && _isPointInArea(points[i + 1], area);\n if (!inArea) {\n continue;\n }\n point = points[i];\n if (inAreaPrev) {\n point.cp1x = capControlPoint(point.cp1x, area.left, area.right);\n point.cp1y = capControlPoint(point.cp1y, area.top, area.bottom);\n }\n if (inAreaNext) {\n point.cp2x = capControlPoint(point.cp2x, area.left, area.right);\n point.cp2y = capControlPoint(point.cp2y, area.top, area.bottom);\n }\n }\n}\nfunction _updateBezierControlPoints(points, options, area, loop, indexAxis) {\n let i, ilen, point, controlPoints;\n if (options.spanGaps) {\n points = points.filter((pt) => !pt.skip);\n }\n if (options.cubicInterpolationMode === 'monotone') {\n splineCurveMonotone(points, indexAxis);\n } else {\n let prev = loop ? points[points.length - 1] : points[0];\n for (i = 0, ilen = points.length; i < ilen; ++i) {\n point = points[i];\n controlPoints = splineCurve(\n prev,\n point,\n points[Math.min(i + 1, ilen - (loop ? 0 : 1)) % ilen],\n options.tension\n );\n point.cp1x = controlPoints.previous.x;\n point.cp1y = controlPoints.previous.y;\n point.cp2x = controlPoints.next.x;\n point.cp2y = controlPoints.next.y;\n prev = point;\n }\n }\n if (options.capBezierPoints) {\n capBezierPoints(points, area);\n }\n}\n\nfunction _isDomSupported() {\n return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\nfunction _getParentNode(domNode) {\n let parent = domNode.parentNode;\n if (parent && parent.toString() === '[object ShadowRoot]') {\n parent = parent.host;\n }\n return parent;\n}\nfunction parseMaxStyle(styleValue, node, parentProperty) {\n let valueInPixels;\n if (typeof styleValue === 'string') {\n valueInPixels = parseInt(styleValue, 10);\n if (styleValue.indexOf('%') !== -1) {\n valueInPixels = valueInPixels / 100 * node.parentNode[parentProperty];\n }\n } else {\n valueInPixels = styleValue;\n }\n return valueInPixels;\n}\nconst getComputedStyle = (element) => window.getComputedStyle(element, null);\nfunction getStyle(el, property) {\n return getComputedStyle(el).getPropertyValue(property);\n}\nconst positions = ['top', 'right', 'bottom', 'left'];\nfunction getPositionedStyle(styles, style, suffix) {\n const result = {};\n suffix = suffix ? '-' + suffix : '';\n for (let i = 0; i < 4; i++) {\n const pos = positions[i];\n result[pos] = parseFloat(styles[style + '-' + pos + suffix]) || 0;\n }\n result.width = result.left + result.right;\n result.height = result.top + result.bottom;\n return result;\n}\nconst useOffsetPos = (x, y, target) => (x > 0 || y > 0) && (!target || !target.shadowRoot);\nfunction getCanvasPosition(evt, canvas) {\n const e = evt.native || evt;\n const touches = e.touches;\n const source = touches && touches.length ? touches[0] : e;\n const {offsetX, offsetY} = source;\n let box = false;\n let x, y;\n if (useOffsetPos(offsetX, offsetY, e.target)) {\n x = offsetX;\n y = offsetY;\n } else {\n const rect = canvas.getBoundingClientRect();\n x = source.clientX - rect.left;\n y = source.clientY - rect.top;\n box = true;\n }\n return {x, y, box};\n}\nfunction getRelativePosition(evt, chart) {\n const {canvas, currentDevicePixelRatio} = chart;\n const style = getComputedStyle(canvas);\n const borderBox = style.boxSizing === 'border-box';\n const paddings = getPositionedStyle(style, 'padding');\n const borders = getPositionedStyle(style, 'border', 'width');\n const {x, y, box} = getCanvasPosition(evt, canvas);\n const xOffset = paddings.left + (box && borders.left);\n const yOffset = paddings.top + (box && borders.top);\n let {width, height} = chart;\n if (borderBox) {\n width -= paddings.width + borders.width;\n height -= paddings.height + borders.height;\n }\n return {\n x: Math.round((x - xOffset) / width * canvas.width / currentDevicePixelRatio),\n y: Math.round((y - yOffset) / height * canvas.height / currentDevicePixelRatio)\n };\n}\nfunction getContainerSize(canvas, width, height) {\n let maxWidth, maxHeight;\n if (width === undefined || height === undefined) {\n const container = _getParentNode(canvas);\n if (!container) {\n width = canvas.clientWidth;\n height = canvas.clientHeight;\n } else {\n const rect = container.getBoundingClientRect();\n const containerStyle = getComputedStyle(container);\n const containerBorder = getPositionedStyle(containerStyle, 'border', 'width');\n const containerPadding = getPositionedStyle(containerStyle, 'padding');\n width = rect.width - containerPadding.width - containerBorder.width;\n height = rect.height - containerPadding.height - containerBorder.height;\n maxWidth = parseMaxStyle(containerStyle.maxWidth, container, 'clientWidth');\n maxHeight = parseMaxStyle(containerStyle.maxHeight, container, 'clientHeight');\n }\n }\n return {\n width,\n height,\n maxWidth: maxWidth || INFINITY,\n maxHeight: maxHeight || INFINITY\n };\n}\nconst round1 = v => Math.round(v * 10) / 10;\nfunction getMaximumSize(canvas, bbWidth, bbHeight, aspectRatio) {\n const style = getComputedStyle(canvas);\n const margins = getPositionedStyle(style, 'margin');\n const maxWidth = parseMaxStyle(style.maxWidth, canvas, 'clientWidth') || INFINITY;\n const maxHeight = parseMaxStyle(style.maxHeight, canvas, 'clientHeight') || INFINITY;\n const containerSize = getContainerSize(canvas, bbWidth, bbHeight);\n let {width, height} = containerSize;\n if (style.boxSizing === 'content-box') {\n const borders = getPositionedStyle(style, 'border', 'width');\n const paddings = getPositionedStyle(style, 'padding');\n width -= paddings.width + borders.width;\n height -= paddings.height + borders.height;\n }\n width = Math.max(0, width - margins.width);\n height = Math.max(0, aspectRatio ? Math.floor(width / aspectRatio) : height - margins.height);\n width = round1(Math.min(width, maxWidth, containerSize.maxWidth));\n height = round1(Math.min(height, maxHeight, containerSize.maxHeight));\n if (width && !height) {\n height = round1(width / 2);\n }\n return {\n width,\n height\n };\n}\nfunction retinaScale(chart, forceRatio, forceStyle) {\n const pixelRatio = forceRatio || 1;\n const deviceHeight = Math.floor(chart.height * pixelRatio);\n const deviceWidth = Math.floor(chart.width * pixelRatio);\n chart.height = deviceHeight / pixelRatio;\n chart.width = deviceWidth / pixelRatio;\n const canvas = chart.canvas;\n if (canvas.style && (forceStyle || (!canvas.style.height && !canvas.style.width))) {\n canvas.style.height = `${chart.height}px`;\n canvas.style.width = `${chart.width}px`;\n }\n if (chart.currentDevicePixelRatio !== pixelRatio\n || canvas.height !== deviceHeight\n || canvas.width !== deviceWidth) {\n chart.currentDevicePixelRatio = pixelRatio;\n canvas.height = deviceHeight;\n canvas.width = deviceWidth;\n chart.ctx.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\n return true;\n }\n return false;\n}\nconst supportsEventListenerOptions = (function() {\n let passiveSupported = false;\n try {\n const options = {\n get passive() {\n passiveSupported = true;\n return false;\n }\n };\n window.addEventListener('test', null, options);\n window.removeEventListener('test', null, options);\n } catch (e) {\n }\n return passiveSupported;\n}());\nfunction readUsedSize(element, property) {\n const value = getStyle(element, property);\n const matches = value && value.match(/^(\\d+)(\\.\\d+)?px$/);\n return matches ? +matches[1] : undefined;\n}\n\nfunction _pointInLine(p1, p2, t, mode) {\n return {\n x: p1.x + t * (p2.x - p1.x),\n y: p1.y + t * (p2.y - p1.y)\n };\n}\nfunction _steppedInterpolation(p1, p2, t, mode) {\n return {\n x: p1.x + t * (p2.x - p1.x),\n y: mode === 'middle' ? t < 0.5 ? p1.y : p2.y\n : mode === 'after' ? t < 1 ? p1.y : p2.y\n : t > 0 ? p2.y : p1.y\n };\n}\nfunction _bezierInterpolation(p1, p2, t, mode) {\n const cp1 = {x: p1.cp2x, y: p1.cp2y};\n const cp2 = {x: p2.cp1x, y: p2.cp1y};\n const a = _pointInLine(p1, cp1, t);\n const b = _pointInLine(cp1, cp2, t);\n const c = _pointInLine(cp2, p2, t);\n const d = _pointInLine(a, b, t);\n const e = _pointInLine(b, c, t);\n return _pointInLine(d, e, t);\n}\n\nconst intlCache = new Map();\nfunction getNumberFormat(locale, options) {\n options = options || {};\n const cacheKey = locale + JSON.stringify(options);\n let formatter = intlCache.get(cacheKey);\n if (!formatter) {\n formatter = new Intl.NumberFormat(locale, options);\n intlCache.set(cacheKey, formatter);\n }\n return formatter;\n}\nfunction formatNumber(num, locale, options) {\n return getNumberFormat(locale, options).format(num);\n}\n\nconst getRightToLeftAdapter = function(rectX, width) {\n return {\n x(x) {\n return rectX + rectX + width - x;\n },\n setWidth(w) {\n width = w;\n },\n textAlign(align) {\n if (align === 'center') {\n return align;\n }\n return align === 'right' ? 'left' : 'right';\n },\n xPlus(x, value) {\n return x - value;\n },\n leftForLtr(x, itemWidth) {\n return x - itemWidth;\n },\n };\n};\nconst getLeftToRightAdapter = function() {\n return {\n x(x) {\n return x;\n },\n setWidth(w) {\n },\n textAlign(align) {\n return align;\n },\n xPlus(x, value) {\n return x + value;\n },\n leftForLtr(x, _itemWidth) {\n return x;\n },\n };\n};\nfunction getRtlAdapter(rtl, rectX, width) {\n return rtl ? getRightToLeftAdapter(rectX, width) : getLeftToRightAdapter();\n}\nfunction overrideTextDirection(ctx, direction) {\n let style, original;\n if (direction === 'ltr' || direction === 'rtl') {\n style = ctx.canvas.style;\n original = [\n style.getPropertyValue('direction'),\n style.getPropertyPriority('direction'),\n ];\n style.setProperty('direction', direction, 'important');\n ctx.prevTextDirection = original;\n }\n}\nfunction restoreTextDirection(ctx, original) {\n if (original !== undefined) {\n delete ctx.prevTextDirection;\n ctx.canvas.style.setProperty('direction', original[0], original[1]);\n }\n}\n\nfunction propertyFn(property) {\n if (property === 'angle') {\n return {\n between: _angleBetween,\n compare: _angleDiff,\n normalize: _normalizeAngle,\n };\n }\n return {\n between: _isBetween,\n compare: (a, b) => a - b,\n normalize: x => x\n };\n}\nfunction normalizeSegment({start, end, count, loop, style}) {\n return {\n start: start % count,\n end: end % count,\n loop: loop && (end - start + 1) % count === 0,\n style\n };\n}\nfunction getSegment(segment, points, bounds) {\n const {property, start: startBound, end: endBound} = bounds;\n const {between, normalize} = propertyFn(property);\n const count = points.length;\n let {start, end, loop} = segment;\n let i, ilen;\n if (loop) {\n start += count;\n end += count;\n for (i = 0, ilen = count; i < ilen; ++i) {\n if (!between(normalize(points[start % count][property]), startBound, endBound)) {\n break;\n }\n start--;\n end--;\n }\n start %= count;\n end %= count;\n }\n if (end < start) {\n end += count;\n }\n return {start, end, loop, style: segment.style};\n}\nfunction _boundSegment(segment, points, bounds) {\n if (!bounds) {\n return [segment];\n }\n const {property, start: startBound, end: endBound} = bounds;\n const count = points.length;\n const {compare, between, normalize} = propertyFn(property);\n const {start, end, loop, style} = getSegment(segment, points, bounds);\n const result = [];\n let inside = false;\n let subStart = null;\n let value, point, prevValue;\n const startIsBefore = () => between(startBound, prevValue, value) && compare(startBound, prevValue) !== 0;\n const endIsBefore = () => compare(endBound, value) === 0 || between(endBound, prevValue, value);\n const shouldStart = () => inside || startIsBefore();\n const shouldStop = () => !inside || endIsBefore();\n for (let i = start, prev = start; i <= end; ++i) {\n point = points[i % count];\n if (point.skip) {\n continue;\n }\n value = normalize(point[property]);\n if (value === prevValue) {\n continue;\n }\n inside = between(value, startBound, endBound);\n if (subStart === null && shouldStart()) {\n subStart = compare(value, startBound) === 0 ? i : prev;\n }\n if (subStart !== null && shouldStop()) {\n result.push(normalizeSegment({start: subStart, end: i, loop, count, style}));\n subStart = null;\n }\n prev = i;\n prevValue = value;\n }\n if (subStart !== null) {\n result.push(normalizeSegment({start: subStart, end, loop, count, style}));\n }\n return result;\n}\nfunction _boundSegments(line, bounds) {\n const result = [];\n const segments = line.segments;\n for (let i = 0; i < segments.length; i++) {\n const sub = _boundSegment(segments[i], line.points, bounds);\n if (sub.length) {\n result.push(...sub);\n }\n }\n return result;\n}\nfunction findStartAndEnd(points, count, loop, spanGaps) {\n let start = 0;\n let end = count - 1;\n if (loop && !spanGaps) {\n while (start < count && !points[start].skip) {\n start++;\n }\n }\n while (start < count && points[start].skip) {\n start++;\n }\n start %= count;\n if (loop) {\n end += start;\n }\n while (end > start && points[end % count].skip) {\n end--;\n }\n end %= count;\n return {start, end};\n}\nfunction solidSegments(points, start, max, loop) {\n const count = points.length;\n const result = [];\n let last = start;\n let prev = points[start];\n let end;\n for (end = start + 1; end <= max; ++end) {\n const cur = points[end % count];\n if (cur.skip || cur.stop) {\n if (!prev.skip) {\n loop = false;\n result.push({start: start % count, end: (end - 1) % count, loop});\n start = last = cur.stop ? end : null;\n }\n } else {\n last = end;\n if (prev.skip) {\n start = end;\n }\n }\n prev = cur;\n }\n if (last !== null) {\n result.push({start: start % count, end: last % count, loop});\n }\n return result;\n}\nfunction _computeSegments(line, segmentOptions) {\n const points = line.points;\n const spanGaps = line.options.spanGaps;\n const count = points.length;\n if (!count) {\n return [];\n }\n const loop = !!line._loop;\n const {start, end} = findStartAndEnd(points, count, loop, spanGaps);\n if (spanGaps === true) {\n return splitByStyles(line, [{start, end, loop}], points, segmentOptions);\n }\n const max = end < start ? end + count : end;\n const completeLoop = !!line._fullLoop && start === 0 && end === count - 1;\n return splitByStyles(line, solidSegments(points, start, max, completeLoop), points, segmentOptions);\n}\nfunction splitByStyles(line, segments, points, segmentOptions) {\n if (!segmentOptions || !segmentOptions.setContext || !points) {\n return segments;\n }\n return doSplitByStyles(line, segments, points, segmentOptions);\n}\nfunction doSplitByStyles(line, segments, points, segmentOptions) {\n const chartContext = line._chart.getContext();\n const baseStyle = readStyle(line.options);\n const {_datasetIndex: datasetIndex, options: {spanGaps}} = line;\n const count = points.length;\n const result = [];\n let prevStyle = baseStyle;\n let start = segments[0].start;\n let i = start;\n function addStyle(s, e, l, st) {\n const dir = spanGaps ? -1 : 1;\n if (s === e) {\n return;\n }\n s += count;\n while (points[s % count].skip) {\n s -= dir;\n }\n while (points[e % count].skip) {\n e += dir;\n }\n if (s % count !== e % count) {\n result.push({start: s % count, end: e % count, loop: l, style: st});\n prevStyle = st;\n start = e % count;\n }\n }\n for (const segment of segments) {\n start = spanGaps ? start : segment.start;\n let prev = points[start % count];\n let style;\n for (i = start + 1; i <= segment.end; i++) {\n const pt = points[i % count];\n style = readStyle(segmentOptions.setContext(createContext(chartContext, {\n type: 'segment',\n p0: prev,\n p1: pt,\n p0DataIndex: (i - 1) % count,\n p1DataIndex: i % count,\n datasetIndex\n })));\n if (styleChanged(style, prevStyle)) {\n addStyle(start, i - 1, segment.loop, prevStyle);\n }\n prev = pt;\n prevStyle = style;\n }\n if (start < i - 1) {\n addStyle(start, i - 1, segment.loop, prevStyle);\n }\n }\n return result;\n}\nfunction readStyle(options) {\n return {\n backgroundColor: options.backgroundColor,\n borderCapStyle: options.borderCapStyle,\n borderDash: options.borderDash,\n borderDashOffset: options.borderDashOffset,\n borderJoinStyle: options.borderJoinStyle,\n borderWidth: options.borderWidth,\n borderColor: options.borderColor\n };\n}\nfunction styleChanged(style, prevStyle) {\n return prevStyle && JSON.stringify(style) !== JSON.stringify(prevStyle);\n}\n\nexport { _toLeftRightCenter as $, _rlookupByKey as A, getAngleFromPoint as B, toPadding as C, each as D, getMaximumSize as E, _getParentNode as F, readUsedSize as G, HALF_PI as H, throttled as I, supportsEventListenerOptions as J, _isDomSupported as K, log10 as L, _factorize as M, finiteOrDefault as N, callback as O, PI as P, _addGrace as Q, toDegrees as R, _measureText as S, TAU as T, _int16Range as U, _alignPixel as V, clipArea as W, renderText as X, unclipArea as Y, toFont as Z, _arrayUnique as _, resolve as a, _angleDiff as a$, _alignStartEnd as a0, overrides as a1, merge as a2, _capitalize as a3, descriptors as a4, isFunction as a5, _attachContext as a6, _createResolver as a7, _descriptors as a8, mergeIf as a9, restoreTextDirection as aA, noop as aB, distanceBetweenPoints as aC, _setMinAndMaxByKey as aD, niceNum as aE, almostWhole as aF, almostEquals as aG, _decimalPlaces as aH, _longestText as aI, _filterBetween as aJ, _lookup as aK, getHoverColor as aL, clone$1 as aM, _merger as aN, _mergerIf as aO, _deprecated as aP, toFontString as aQ, splineCurve as aR, splineCurveMonotone as aS, getStyle as aT, fontString as aU, toLineHeight as aV, PITAU as aW, INFINITY as aX, RAD_PER_DEG as aY, QUARTER_PI as aZ, TWO_THIRDS_PI as a_, uid as aa, debounce as ab, retinaScale as ac, clearCanvas as ad, setsEqual as ae, _elementsEqual as af, _isClickEvent as ag, _isBetween as ah, _readValueToProps as ai, _updateBezierControlPoints as aj, _computeSegments as ak, _boundSegments as al, _steppedInterpolation as am, _bezierInterpolation as an, _pointInLine as ao, _steppedLineTo as ap, _bezierCurveTo as aq, drawPoint as ar, addRoundedRectPath as as, toTRBL as at, toTRBLCorners as au, _boundSegment as av, _normalizeAngle as aw, getRtlAdapter as ax, overrideTextDirection as ay, _textX as az, isArray as b, color as c, defaults as d, effects as e, resolveObjectKey as f, isNumberFinite as g, createContext as h, isObject as i, defined as j, isNullOrUndef as k, listenArrayEvents as l, toPercentage as m, toDimension as n, formatNumber as o, _angleBetween as p, isNumber as q, requestAnimFrame as r, sign as s, toRadians as t, unlistenArrayEvents as u, valueOrDefault as v, _limitValue as w, _lookupByKey as x, getRelativePosition as y, _isPointInArea as z };\n","/*!\n * Chart.js v3.7.1\n * https://www.chartjs.org\n * (c) 2022 Chart.js Contributors\n * Released under the MIT License\n */\nimport { r as requestAnimFrame, a as resolve, e as effects, c as color, d as defaults, i as isObject, b as isArray, v as valueOrDefault, u as unlistenArrayEvents, l as listenArrayEvents, f as resolveObjectKey, g as isNumberFinite, h as createContext, j as defined, s as sign, k as isNullOrUndef, _ as _arrayUnique, t as toRadians, m as toPercentage, n as toDimension, T as TAU, o as formatNumber, p as _angleBetween, H as HALF_PI, P as PI, q as isNumber, w as _limitValue, x as _lookupByKey, y as getRelativePosition$1, z as _isPointInArea, A as _rlookupByKey, B as getAngleFromPoint, C as toPadding, D as each, E as getMaximumSize, F as _getParentNode, G as readUsedSize, I as throttled, J as supportsEventListenerOptions, K as _isDomSupported, L as log10, M as _factorize, N as finiteOrDefault, O as callback, Q as _addGrace, R as toDegrees, S as _measureText, U as _int16Range, V as _alignPixel, W as clipArea, X as renderText, Y as unclipArea, Z as toFont, $ as _toLeftRightCenter, a0 as _alignStartEnd, a1 as overrides, a2 as merge, a3 as _capitalize, a4 as descriptors, a5 as isFunction, a6 as _attachContext, a7 as _createResolver, a8 as _descriptors, a9 as mergeIf, aa as uid, ab as debounce, ac as retinaScale, ad as clearCanvas, ae as setsEqual, af as _elementsEqual, ag as _isClickEvent, ah as _isBetween, ai as _readValueToProps, aj as _updateBezierControlPoints, ak as _computeSegments, al as _boundSegments, am as _steppedInterpolation, an as _bezierInterpolation, ao as _pointInLine, ap as _steppedLineTo, aq as _bezierCurveTo, ar as drawPoint, as as addRoundedRectPath, at as toTRBL, au as toTRBLCorners, av as _boundSegment, aw as _normalizeAngle, ax as getRtlAdapter, ay as overrideTextDirection, az as _textX, aA as restoreTextDirection, aB as noop, aC as distanceBetweenPoints, aD as _setMinAndMaxByKey, aE as niceNum, aF as almostWhole, aG as almostEquals, aH as _decimalPlaces, aI as _longestText, aJ as _filterBetween, aK as _lookup } from './chunks/helpers.segment.js';\nexport { d as defaults } from './chunks/helpers.segment.js';\n\nclass Animator {\n constructor() {\n this._request = null;\n this._charts = new Map();\n this._running = false;\n this._lastDate = undefined;\n }\n _notify(chart, anims, date, type) {\n const callbacks = anims.listeners[type];\n const numSteps = anims.duration;\n callbacks.forEach(fn => fn({\n chart,\n initial: anims.initial,\n numSteps,\n currentStep: Math.min(date - anims.start, numSteps)\n }));\n }\n _refresh() {\n if (this._request) {\n return;\n }\n this._running = true;\n this._request = requestAnimFrame.call(window, () => {\n this._update();\n this._request = null;\n if (this._running) {\n this._refresh();\n }\n });\n }\n _update(date = Date.now()) {\n let remaining = 0;\n this._charts.forEach((anims, chart) => {\n if (!anims.running || !anims.items.length) {\n return;\n }\n const items = anims.items;\n let i = items.length - 1;\n let draw = false;\n let item;\n for (; i >= 0; --i) {\n item = items[i];\n if (item._active) {\n if (item._total > anims.duration) {\n anims.duration = item._total;\n }\n item.tick(date);\n draw = true;\n } else {\n items[i] = items[items.length - 1];\n items.pop();\n }\n }\n if (draw) {\n chart.draw();\n this._notify(chart, anims, date, 'progress');\n }\n if (!items.length) {\n anims.running = false;\n this._notify(chart, anims, date, 'complete');\n anims.initial = false;\n }\n remaining += items.length;\n });\n this._lastDate = date;\n if (remaining === 0) {\n this._running = false;\n }\n }\n _getAnims(chart) {\n const charts = this._charts;\n let anims = charts.get(chart);\n if (!anims) {\n anims = {\n running: false,\n initial: true,\n items: [],\n listeners: {\n complete: [],\n progress: []\n }\n };\n charts.set(chart, anims);\n }\n return anims;\n }\n listen(chart, event, cb) {\n this._getAnims(chart).listeners[event].push(cb);\n }\n add(chart, items) {\n if (!items || !items.length) {\n return;\n }\n this._getAnims(chart).items.push(...items);\n }\n has(chart) {\n return this._getAnims(chart).items.length > 0;\n }\n start(chart) {\n const anims = this._charts.get(chart);\n if (!anims) {\n return;\n }\n anims.running = true;\n anims.start = Date.now();\n anims.duration = anims.items.reduce((acc, cur) => Math.max(acc, cur._duration), 0);\n this._refresh();\n }\n running(chart) {\n if (!this._running) {\n return false;\n }\n const anims = this._charts.get(chart);\n if (!anims || !anims.running || !anims.items.length) {\n return false;\n }\n return true;\n }\n stop(chart) {\n const anims = this._charts.get(chart);\n if (!anims || !anims.items.length) {\n return;\n }\n const items = anims.items;\n let i = items.length - 1;\n for (; i >= 0; --i) {\n items[i].cancel();\n }\n anims.items = [];\n this._notify(chart, anims, Date.now(), 'complete');\n }\n remove(chart) {\n return this._charts.delete(chart);\n }\n}\nvar animator = new Animator();\n\nconst transparent = 'transparent';\nconst interpolators = {\n boolean(from, to, factor) {\n return factor > 0.5 ? to : from;\n },\n color(from, to, factor) {\n const c0 = color(from || transparent);\n const c1 = c0.valid && color(to || transparent);\n return c1 && c1.valid\n ? c1.mix(c0, factor).hexString()\n : to;\n },\n number(from, to, factor) {\n return from + (to - from) * factor;\n }\n};\nclass Animation {\n constructor(cfg, target, prop, to) {\n const currentValue = target[prop];\n to = resolve([cfg.to, to, currentValue, cfg.from]);\n const from = resolve([cfg.from, currentValue, to]);\n this._active = true;\n this._fn = cfg.fn || interpolators[cfg.type || typeof from];\n this._easing = effects[cfg.easing] || effects.linear;\n this._start = Math.floor(Date.now() + (cfg.delay || 0));\n this._duration = this._total = Math.floor(cfg.duration);\n this._loop = !!cfg.loop;\n this._target = target;\n this._prop = prop;\n this._from = from;\n this._to = to;\n this._promises = undefined;\n }\n active() {\n return this._active;\n }\n update(cfg, to, date) {\n if (this._active) {\n this._notify(false);\n const currentValue = this._target[this._prop];\n const elapsed = date - this._start;\n const remain = this._duration - elapsed;\n this._start = date;\n this._duration = Math.floor(Math.max(remain, cfg.duration));\n this._total += elapsed;\n this._loop = !!cfg.loop;\n this._to = resolve([cfg.to, to, currentValue, cfg.from]);\n this._from = resolve([cfg.from, currentValue, to]);\n }\n }\n cancel() {\n if (this._active) {\n this.tick(Date.now());\n this._active = false;\n this._notify(false);\n }\n }\n tick(date) {\n const elapsed = date - this._start;\n const duration = this._duration;\n const prop = this._prop;\n const from = this._from;\n const loop = this._loop;\n const to = this._to;\n let factor;\n this._active = from !== to && (loop || (elapsed < duration));\n if (!this._active) {\n this._target[prop] = to;\n this._notify(true);\n return;\n }\n if (elapsed < 0) {\n this._target[prop] = from;\n return;\n }\n factor = (elapsed / duration) % 2;\n factor = loop && factor > 1 ? 2 - factor : factor;\n factor = this._easing(Math.min(1, Math.max(0, factor)));\n this._target[prop] = this._fn(from, to, factor);\n }\n wait() {\n const promises = this._promises || (this._promises = []);\n return new Promise((res, rej) => {\n promises.push({res, rej});\n });\n }\n _notify(resolved) {\n const method = resolved ? 'res' : 'rej';\n const promises = this._promises || [];\n for (let i = 0; i < promises.length; i++) {\n promises[i][method]();\n }\n }\n}\n\nconst numbers = ['x', 'y', 'borderWidth', 'radius', 'tension'];\nconst colors = ['color', 'borderColor', 'backgroundColor'];\ndefaults.set('animation', {\n delay: undefined,\n duration: 1000,\n easing: 'easeOutQuart',\n fn: undefined,\n from: undefined,\n loop: undefined,\n to: undefined,\n type: undefined,\n});\nconst animationOptions = Object.keys(defaults.animation);\ndefaults.describe('animation', {\n _fallback: false,\n _indexable: false,\n _scriptable: (name) => name !== 'onProgress' && name !== 'onComplete' && name !== 'fn',\n});\ndefaults.set('animations', {\n colors: {\n type: 'color',\n properties: colors\n },\n numbers: {\n type: 'number',\n properties: numbers\n },\n});\ndefaults.describe('animations', {\n _fallback: 'animation',\n});\ndefaults.set('transitions', {\n active: {\n animation: {\n duration: 400\n }\n },\n resize: {\n animation: {\n duration: 0\n }\n },\n show: {\n animations: {\n colors: {\n from: 'transparent'\n },\n visible: {\n type: 'boolean',\n duration: 0\n },\n }\n },\n hide: {\n animations: {\n colors: {\n to: 'transparent'\n },\n visible: {\n type: 'boolean',\n easing: 'linear',\n fn: v => v | 0\n },\n }\n }\n});\nclass Animations {\n constructor(chart, config) {\n this._chart = chart;\n this._properties = new Map();\n this.configure(config);\n }\n configure(config) {\n if (!isObject(config)) {\n return;\n }\n const animatedProps = this._properties;\n Object.getOwnPropertyNames(config).forEach(key => {\n const cfg = config[key];\n if (!isObject(cfg)) {\n return;\n }\n const resolved = {};\n for (const option of animationOptions) {\n resolved[option] = cfg[option];\n }\n (isArray(cfg.properties) && cfg.properties || [key]).forEach((prop) => {\n if (prop === key || !animatedProps.has(prop)) {\n animatedProps.set(prop, resolved);\n }\n });\n });\n }\n _animateOptions(target, values) {\n const newOptions = values.options;\n const options = resolveTargetOptions(target, newOptions);\n if (!options) {\n return [];\n }\n const animations = this._createAnimations(options, newOptions);\n if (newOptions.$shared) {\n awaitAll(target.options.$animations, newOptions).then(() => {\n target.options = newOptions;\n }, () => {\n });\n }\n return animations;\n }\n _createAnimations(target, values) {\n const animatedProps = this._properties;\n const animations = [];\n const running = target.$animations || (target.$animations = {});\n const props = Object.keys(values);\n const date = Date.now();\n let i;\n for (i = props.length - 1; i >= 0; --i) {\n const prop = props[i];\n if (prop.charAt(0) === '$') {\n continue;\n }\n if (prop === 'options') {\n animations.push(...this._animateOptions(target, values));\n continue;\n }\n const value = values[prop];\n let animation = running[prop];\n const cfg = animatedProps.get(prop);\n if (animation) {\n if (cfg && animation.active()) {\n animation.update(cfg, value, date);\n continue;\n } else {\n animation.cancel();\n }\n }\n if (!cfg || !cfg.duration) {\n target[prop] = value;\n continue;\n }\n running[prop] = animation = new Animation(cfg, target, prop, value);\n animations.push(animation);\n }\n return animations;\n }\n update(target, values) {\n if (this._properties.size === 0) {\n Object.assign(target, values);\n return;\n }\n const animations = this._createAnimations(target, values);\n if (animations.length) {\n animator.add(this._chart, animations);\n return true;\n }\n }\n}\nfunction awaitAll(animations, properties) {\n const running = [];\n const keys = Object.keys(properties);\n for (let i = 0; i < keys.length; i++) {\n const anim = animations[keys[i]];\n if (anim && anim.active()) {\n running.push(anim.wait());\n }\n }\n return Promise.all(running);\n}\nfunction resolveTargetOptions(target, newOptions) {\n if (!newOptions) {\n return;\n }\n let options = target.options;\n if (!options) {\n target.options = newOptions;\n return;\n }\n if (options.$shared) {\n target.options = options = Object.assign({}, options, {$shared: false, $animations: {}});\n }\n return options;\n}\n\nfunction scaleClip(scale, allowedOverflow) {\n const opts = scale && scale.options || {};\n const reverse = opts.reverse;\n const min = opts.min === undefined ? allowedOverflow : 0;\n const max = opts.max === undefined ? allowedOverflow : 0;\n return {\n start: reverse ? max : min,\n end: reverse ? min : max\n };\n}\nfunction defaultClip(xScale, yScale, allowedOverflow) {\n if (allowedOverflow === false) {\n return false;\n }\n const x = scaleClip(xScale, allowedOverflow);\n const y = scaleClip(yScale, allowedOverflow);\n return {\n top: y.end,\n right: x.end,\n bottom: y.start,\n left: x.start\n };\n}\nfunction toClip(value) {\n let t, r, b, l;\n if (isObject(value)) {\n t = value.top;\n r = value.right;\n b = value.bottom;\n l = value.left;\n } else {\n t = r = b = l = value;\n }\n return {\n top: t,\n right: r,\n bottom: b,\n left: l,\n disabled: value === false\n };\n}\nfunction getSortedDatasetIndices(chart, filterVisible) {\n const keys = [];\n const metasets = chart._getSortedDatasetMetas(filterVisible);\n let i, ilen;\n for (i = 0, ilen = metasets.length; i < ilen; ++i) {\n keys.push(metasets[i].index);\n }\n return keys;\n}\nfunction applyStack(stack, value, dsIndex, options = {}) {\n const keys = stack.keys;\n const singleMode = options.mode === 'single';\n let i, ilen, datasetIndex, otherValue;\n if (value === null) {\n return;\n }\n for (i = 0, ilen = keys.length; i < ilen; ++i) {\n datasetIndex = +keys[i];\n if (datasetIndex === dsIndex) {\n if (options.all) {\n continue;\n }\n break;\n }\n otherValue = stack.values[datasetIndex];\n if (isNumberFinite(otherValue) && (singleMode || (value === 0 || sign(value) === sign(otherValue)))) {\n value += otherValue;\n }\n }\n return value;\n}\nfunction convertObjectDataToArray(data) {\n const keys = Object.keys(data);\n const adata = new Array(keys.length);\n let i, ilen, key;\n for (i = 0, ilen = keys.length; i < ilen; ++i) {\n key = keys[i];\n adata[i] = {\n x: key,\n y: data[key]\n };\n }\n return adata;\n}\nfunction isStacked(scale, meta) {\n const stacked = scale && scale.options.stacked;\n return stacked || (stacked === undefined && meta.stack !== undefined);\n}\nfunction getStackKey(indexScale, valueScale, meta) {\n return `${indexScale.id}.${valueScale.id}.${meta.stack || meta.type}`;\n}\nfunction getUserBounds(scale) {\n const {min, max, minDefined, maxDefined} = scale.getUserBounds();\n return {\n min: minDefined ? min : Number.NEGATIVE_INFINITY,\n max: maxDefined ? max : Number.POSITIVE_INFINITY\n };\n}\nfunction getOrCreateStack(stacks, stackKey, indexValue) {\n const subStack = stacks[stackKey] || (stacks[stackKey] = {});\n return subStack[indexValue] || (subStack[indexValue] = {});\n}\nfunction getLastIndexInStack(stack, vScale, positive, type) {\n for (const meta of vScale.getMatchingVisibleMetas(type).reverse()) {\n const value = stack[meta.index];\n if ((positive && value > 0) || (!positive && value < 0)) {\n return meta.index;\n }\n }\n return null;\n}\nfunction updateStacks(controller, parsed) {\n const {chart, _cachedMeta: meta} = controller;\n const stacks = chart._stacks || (chart._stacks = {});\n const {iScale, vScale, index: datasetIndex} = meta;\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const key = getStackKey(iScale, vScale, meta);\n const ilen = parsed.length;\n let stack;\n for (let i = 0; i < ilen; ++i) {\n const item = parsed[i];\n const {[iAxis]: index, [vAxis]: value} = item;\n const itemStacks = item._stacks || (item._stacks = {});\n stack = itemStacks[vAxis] = getOrCreateStack(stacks, key, index);\n stack[datasetIndex] = value;\n stack._top = getLastIndexInStack(stack, vScale, true, meta.type);\n stack._bottom = getLastIndexInStack(stack, vScale, false, meta.type);\n }\n}\nfunction getFirstScaleId(chart, axis) {\n const scales = chart.scales;\n return Object.keys(scales).filter(key => scales[key].axis === axis).shift();\n}\nfunction createDatasetContext(parent, index) {\n return createContext(parent,\n {\n active: false,\n dataset: undefined,\n datasetIndex: index,\n index,\n mode: 'default',\n type: 'dataset'\n }\n );\n}\nfunction createDataContext(parent, index, element) {\n return createContext(parent, {\n active: false,\n dataIndex: index,\n parsed: undefined,\n raw: undefined,\n element,\n index,\n mode: 'default',\n type: 'data'\n });\n}\nfunction clearStacks(meta, items) {\n const datasetIndex = meta.controller.index;\n const axis = meta.vScale && meta.vScale.axis;\n if (!axis) {\n return;\n }\n items = items || meta._parsed;\n for (const parsed of items) {\n const stacks = parsed._stacks;\n if (!stacks || stacks[axis] === undefined || stacks[axis][datasetIndex] === undefined) {\n return;\n }\n delete stacks[axis][datasetIndex];\n }\n}\nconst isDirectUpdateMode = (mode) => mode === 'reset' || mode === 'none';\nconst cloneIfNotShared = (cached, shared) => shared ? cached : Object.assign({}, cached);\nconst createStack = (canStack, meta, chart) => canStack && !meta.hidden && meta._stacked\n && {keys: getSortedDatasetIndices(chart, true), values: null};\nclass DatasetController {\n constructor(chart, datasetIndex) {\n this.chart = chart;\n this._ctx = chart.ctx;\n this.index = datasetIndex;\n this._cachedDataOpts = {};\n this._cachedMeta = this.getMeta();\n this._type = this._cachedMeta.type;\n this.options = undefined;\n this._parsing = false;\n this._data = undefined;\n this._objectData = undefined;\n this._sharedOptions = undefined;\n this._drawStart = undefined;\n this._drawCount = undefined;\n this.enableOptionSharing = false;\n this.$context = undefined;\n this._syncList = [];\n this.initialize();\n }\n initialize() {\n const meta = this._cachedMeta;\n this.configure();\n this.linkScales();\n meta._stacked = isStacked(meta.vScale, meta);\n this.addElements();\n }\n updateIndex(datasetIndex) {\n if (this.index !== datasetIndex) {\n clearStacks(this._cachedMeta);\n }\n this.index = datasetIndex;\n }\n linkScales() {\n const chart = this.chart;\n const meta = this._cachedMeta;\n const dataset = this.getDataset();\n const chooseId = (axis, x, y, r) => axis === 'x' ? x : axis === 'r' ? r : y;\n const xid = meta.xAxisID = valueOrDefault(dataset.xAxisID, getFirstScaleId(chart, 'x'));\n const yid = meta.yAxisID = valueOrDefault(dataset.yAxisID, getFirstScaleId(chart, 'y'));\n const rid = meta.rAxisID = valueOrDefault(dataset.rAxisID, getFirstScaleId(chart, 'r'));\n const indexAxis = meta.indexAxis;\n const iid = meta.iAxisID = chooseId(indexAxis, xid, yid, rid);\n const vid = meta.vAxisID = chooseId(indexAxis, yid, xid, rid);\n meta.xScale = this.getScaleForId(xid);\n meta.yScale = this.getScaleForId(yid);\n meta.rScale = this.getScaleForId(rid);\n meta.iScale = this.getScaleForId(iid);\n meta.vScale = this.getScaleForId(vid);\n }\n getDataset() {\n return this.chart.data.datasets[this.index];\n }\n getMeta() {\n return this.chart.getDatasetMeta(this.index);\n }\n getScaleForId(scaleID) {\n return this.chart.scales[scaleID];\n }\n _getOtherScale(scale) {\n const meta = this._cachedMeta;\n return scale === meta.iScale\n ? meta.vScale\n : meta.iScale;\n }\n reset() {\n this._update('reset');\n }\n _destroy() {\n const meta = this._cachedMeta;\n if (this._data) {\n unlistenArrayEvents(this._data, this);\n }\n if (meta._stacked) {\n clearStacks(meta);\n }\n }\n _dataCheck() {\n const dataset = this.getDataset();\n const data = dataset.data || (dataset.data = []);\n const _data = this._data;\n if (isObject(data)) {\n this._data = convertObjectDataToArray(data);\n } else if (_data !== data) {\n if (_data) {\n unlistenArrayEvents(_data, this);\n const meta = this._cachedMeta;\n clearStacks(meta);\n meta._parsed = [];\n }\n if (data && Object.isExtensible(data)) {\n listenArrayEvents(data, this);\n }\n this._syncList = [];\n this._data = data;\n }\n }\n addElements() {\n const meta = this._cachedMeta;\n this._dataCheck();\n if (this.datasetElementType) {\n meta.dataset = new this.datasetElementType();\n }\n }\n buildOrUpdateElements(resetNewElements) {\n const meta = this._cachedMeta;\n const dataset = this.getDataset();\n let stackChanged = false;\n this._dataCheck();\n const oldStacked = meta._stacked;\n meta._stacked = isStacked(meta.vScale, meta);\n if (meta.stack !== dataset.stack) {\n stackChanged = true;\n clearStacks(meta);\n meta.stack = dataset.stack;\n }\n this._resyncElements(resetNewElements);\n if (stackChanged || oldStacked !== meta._stacked) {\n updateStacks(this, meta._parsed);\n }\n }\n configure() {\n const config = this.chart.config;\n const scopeKeys = config.datasetScopeKeys(this._type);\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys, true);\n this.options = config.createResolver(scopes, this.getContext());\n this._parsing = this.options.parsing;\n this._cachedDataOpts = {};\n }\n parse(start, count) {\n const {_cachedMeta: meta, _data: data} = this;\n const {iScale, _stacked} = meta;\n const iAxis = iScale.axis;\n let sorted = start === 0 && count === data.length ? true : meta._sorted;\n let prev = start > 0 && meta._parsed[start - 1];\n let i, cur, parsed;\n if (this._parsing === false) {\n meta._parsed = data;\n meta._sorted = true;\n parsed = data;\n } else {\n if (isArray(data[start])) {\n parsed = this.parseArrayData(meta, data, start, count);\n } else if (isObject(data[start])) {\n parsed = this.parseObjectData(meta, data, start, count);\n } else {\n parsed = this.parsePrimitiveData(meta, data, start, count);\n }\n const isNotInOrderComparedToPrev = () => cur[iAxis] === null || (prev && cur[iAxis] < prev[iAxis]);\n for (i = 0; i < count; ++i) {\n meta._parsed[i + start] = cur = parsed[i];\n if (sorted) {\n if (isNotInOrderComparedToPrev()) {\n sorted = false;\n }\n prev = cur;\n }\n }\n meta._sorted = sorted;\n }\n if (_stacked) {\n updateStacks(this, parsed);\n }\n }\n parsePrimitiveData(meta, data, start, count) {\n const {iScale, vScale} = meta;\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const labels = iScale.getLabels();\n const singleScale = iScale === vScale;\n const parsed = new Array(count);\n let i, ilen, index;\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n parsed[i] = {\n [iAxis]: singleScale || iScale.parse(labels[index], index),\n [vAxis]: vScale.parse(data[index], index)\n };\n }\n return parsed;\n }\n parseArrayData(meta, data, start, count) {\n const {xScale, yScale} = meta;\n const parsed = new Array(count);\n let i, ilen, index, item;\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n x: xScale.parse(item[0], index),\n y: yScale.parse(item[1], index)\n };\n }\n return parsed;\n }\n parseObjectData(meta, data, start, count) {\n const {xScale, yScale} = meta;\n const {xAxisKey = 'x', yAxisKey = 'y'} = this._parsing;\n const parsed = new Array(count);\n let i, ilen, index, item;\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n x: xScale.parse(resolveObjectKey(item, xAxisKey), index),\n y: yScale.parse(resolveObjectKey(item, yAxisKey), index)\n };\n }\n return parsed;\n }\n getParsed(index) {\n return this._cachedMeta._parsed[index];\n }\n getDataElement(index) {\n return this._cachedMeta.data[index];\n }\n applyStack(scale, parsed, mode) {\n const chart = this.chart;\n const meta = this._cachedMeta;\n const value = parsed[scale.axis];\n const stack = {\n keys: getSortedDatasetIndices(chart, true),\n values: parsed._stacks[scale.axis]\n };\n return applyStack(stack, value, meta.index, {mode});\n }\n updateRangeFromParsed(range, scale, parsed, stack) {\n const parsedValue = parsed[scale.axis];\n let value = parsedValue === null ? NaN : parsedValue;\n const values = stack && parsed._stacks[scale.axis];\n if (stack && values) {\n stack.values = values;\n value = applyStack(stack, parsedValue, this._cachedMeta.index);\n }\n range.min = Math.min(range.min, value);\n range.max = Math.max(range.max, value);\n }\n getMinMax(scale, canStack) {\n const meta = this._cachedMeta;\n const _parsed = meta._parsed;\n const sorted = meta._sorted && scale === meta.iScale;\n const ilen = _parsed.length;\n const otherScale = this._getOtherScale(scale);\n const stack = createStack(canStack, meta, this.chart);\n const range = {min: Number.POSITIVE_INFINITY, max: Number.NEGATIVE_INFINITY};\n const {min: otherMin, max: otherMax} = getUserBounds(otherScale);\n let i, parsed;\n function _skip() {\n parsed = _parsed[i];\n const otherValue = parsed[otherScale.axis];\n return !isNumberFinite(parsed[scale.axis]) || otherMin > otherValue || otherMax < otherValue;\n }\n for (i = 0; i < ilen; ++i) {\n if (_skip()) {\n continue;\n }\n this.updateRangeFromParsed(range, scale, parsed, stack);\n if (sorted) {\n break;\n }\n }\n if (sorted) {\n for (i = ilen - 1; i >= 0; --i) {\n if (_skip()) {\n continue;\n }\n this.updateRangeFromParsed(range, scale, parsed, stack);\n break;\n }\n }\n return range;\n }\n getAllParsedValues(scale) {\n const parsed = this._cachedMeta._parsed;\n const values = [];\n let i, ilen, value;\n for (i = 0, ilen = parsed.length; i < ilen; ++i) {\n value = parsed[i][scale.axis];\n if (isNumberFinite(value)) {\n values.push(value);\n }\n }\n return values;\n }\n getMaxOverflow() {\n return false;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const iScale = meta.iScale;\n const vScale = meta.vScale;\n const parsed = this.getParsed(index);\n return {\n label: iScale ? '' + iScale.getLabelForValue(parsed[iScale.axis]) : '',\n value: vScale ? '' + vScale.getLabelForValue(parsed[vScale.axis]) : ''\n };\n }\n _update(mode) {\n const meta = this._cachedMeta;\n this.update(mode || 'default');\n meta._clip = toClip(valueOrDefault(this.options.clip, defaultClip(meta.xScale, meta.yScale, this.getMaxOverflow())));\n }\n update(mode) {}\n draw() {\n const ctx = this._ctx;\n const chart = this.chart;\n const meta = this._cachedMeta;\n const elements = meta.data || [];\n const area = chart.chartArea;\n const active = [];\n const start = this._drawStart || 0;\n const count = this._drawCount || (elements.length - start);\n const drawActiveElementsOnTop = this.options.drawActiveElementsOnTop;\n let i;\n if (meta.dataset) {\n meta.dataset.draw(ctx, area, start, count);\n }\n for (i = start; i < start + count; ++i) {\n const element = elements[i];\n if (element.hidden) {\n continue;\n }\n if (element.active && drawActiveElementsOnTop) {\n active.push(element);\n } else {\n element.draw(ctx, area);\n }\n }\n for (i = 0; i < active.length; ++i) {\n active[i].draw(ctx, area);\n }\n }\n getStyle(index, active) {\n const mode = active ? 'active' : 'default';\n return index === undefined && this._cachedMeta.dataset\n ? this.resolveDatasetElementOptions(mode)\n : this.resolveDataElementOptions(index || 0, mode);\n }\n getContext(index, active, mode) {\n const dataset = this.getDataset();\n let context;\n if (index >= 0 && index < this._cachedMeta.data.length) {\n const element = this._cachedMeta.data[index];\n context = element.$context ||\n (element.$context = createDataContext(this.getContext(), index, element));\n context.parsed = this.getParsed(index);\n context.raw = dataset.data[index];\n context.index = context.dataIndex = index;\n } else {\n context = this.$context ||\n (this.$context = createDatasetContext(this.chart.getContext(), this.index));\n context.dataset = dataset;\n context.index = context.datasetIndex = this.index;\n }\n context.active = !!active;\n context.mode = mode;\n return context;\n }\n resolveDatasetElementOptions(mode) {\n return this._resolveElementOptions(this.datasetElementType.id, mode);\n }\n resolveDataElementOptions(index, mode) {\n return this._resolveElementOptions(this.dataElementType.id, mode, index);\n }\n _resolveElementOptions(elementType, mode = 'default', index) {\n const active = mode === 'active';\n const cache = this._cachedDataOpts;\n const cacheKey = elementType + '-' + mode;\n const cached = cache[cacheKey];\n const sharing = this.enableOptionSharing && defined(index);\n if (cached) {\n return cloneIfNotShared(cached, sharing);\n }\n const config = this.chart.config;\n const scopeKeys = config.datasetElementScopeKeys(this._type, elementType);\n const prefixes = active ? [`${elementType}Hover`, 'hover', elementType, ''] : [elementType, ''];\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n const names = Object.keys(defaults.elements[elementType]);\n const context = () => this.getContext(index, active);\n const values = config.resolveNamedOptions(scopes, names, context, prefixes);\n if (values.$shared) {\n values.$shared = sharing;\n cache[cacheKey] = Object.freeze(cloneIfNotShared(values, sharing));\n }\n return values;\n }\n _resolveAnimations(index, transition, active) {\n const chart = this.chart;\n const cache = this._cachedDataOpts;\n const cacheKey = `animation-${transition}`;\n const cached = cache[cacheKey];\n if (cached) {\n return cached;\n }\n let options;\n if (chart.options.animation !== false) {\n const config = this.chart.config;\n const scopeKeys = config.datasetAnimationScopeKeys(this._type, transition);\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n options = config.createResolver(scopes, this.getContext(index, active, transition));\n }\n const animations = new Animations(chart, options && options.animations);\n if (options && options._cacheable) {\n cache[cacheKey] = Object.freeze(animations);\n }\n return animations;\n }\n getSharedOptions(options) {\n if (!options.$shared) {\n return;\n }\n return this._sharedOptions || (this._sharedOptions = Object.assign({}, options));\n }\n includeOptions(mode, sharedOptions) {\n return !sharedOptions || isDirectUpdateMode(mode) || this.chart._animationsDisabled;\n }\n updateElement(element, index, properties, mode) {\n if (isDirectUpdateMode(mode)) {\n Object.assign(element, properties);\n } else {\n this._resolveAnimations(index, mode).update(element, properties);\n }\n }\n updateSharedOptions(sharedOptions, mode, newOptions) {\n if (sharedOptions && !isDirectUpdateMode(mode)) {\n this._resolveAnimations(undefined, mode).update(sharedOptions, newOptions);\n }\n }\n _setStyle(element, index, mode, active) {\n element.active = active;\n const options = this.getStyle(index, active);\n this._resolveAnimations(index, mode, active).update(element, {\n options: (!active && this.getSharedOptions(options)) || options\n });\n }\n removeHoverStyle(element, datasetIndex, index) {\n this._setStyle(element, index, 'active', false);\n }\n setHoverStyle(element, datasetIndex, index) {\n this._setStyle(element, index, 'active', true);\n }\n _removeDatasetHoverStyle() {\n const element = this._cachedMeta.dataset;\n if (element) {\n this._setStyle(element, undefined, 'active', false);\n }\n }\n _setDatasetHoverStyle() {\n const element = this._cachedMeta.dataset;\n if (element) {\n this._setStyle(element, undefined, 'active', true);\n }\n }\n _resyncElements(resetNewElements) {\n const data = this._data;\n const elements = this._cachedMeta.data;\n for (const [method, arg1, arg2] of this._syncList) {\n this[method](arg1, arg2);\n }\n this._syncList = [];\n const numMeta = elements.length;\n const numData = data.length;\n const count = Math.min(numData, numMeta);\n if (count) {\n this.parse(0, count);\n }\n if (numData > numMeta) {\n this._insertElements(numMeta, numData - numMeta, resetNewElements);\n } else if (numData < numMeta) {\n this._removeElements(numData, numMeta - numData);\n }\n }\n _insertElements(start, count, resetNewElements = true) {\n const meta = this._cachedMeta;\n const data = meta.data;\n const end = start + count;\n let i;\n const move = (arr) => {\n arr.length += count;\n for (i = arr.length - 1; i >= end; i--) {\n arr[i] = arr[i - count];\n }\n };\n move(data);\n for (i = start; i < end; ++i) {\n data[i] = new this.dataElementType();\n }\n if (this._parsing) {\n move(meta._parsed);\n }\n this.parse(start, count);\n if (resetNewElements) {\n this.updateElements(data, start, count, 'reset');\n }\n }\n updateElements(element, start, count, mode) {}\n _removeElements(start, count) {\n const meta = this._cachedMeta;\n if (this._parsing) {\n const removed = meta._parsed.splice(start, count);\n if (meta._stacked) {\n clearStacks(meta, removed);\n }\n }\n meta.data.splice(start, count);\n }\n _sync(args) {\n if (this._parsing) {\n this._syncList.push(args);\n } else {\n const [method, arg1, arg2] = args;\n this[method](arg1, arg2);\n }\n this.chart._dataChanges.push([this.index, ...args]);\n }\n _onDataPush() {\n const count = arguments.length;\n this._sync(['_insertElements', this.getDataset().data.length - count, count]);\n }\n _onDataPop() {\n this._sync(['_removeElements', this._cachedMeta.data.length - 1, 1]);\n }\n _onDataShift() {\n this._sync(['_removeElements', 0, 1]);\n }\n _onDataSplice(start, count) {\n if (count) {\n this._sync(['_removeElements', start, count]);\n }\n const newCount = arguments.length - 2;\n if (newCount) {\n this._sync(['_insertElements', start, newCount]);\n }\n }\n _onDataUnshift() {\n this._sync(['_insertElements', 0, arguments.length]);\n }\n}\nDatasetController.defaults = {};\nDatasetController.prototype.datasetElementType = null;\nDatasetController.prototype.dataElementType = null;\n\nfunction getAllScaleValues(scale, type) {\n if (!scale._cache.$bar) {\n const visibleMetas = scale.getMatchingVisibleMetas(type);\n let values = [];\n for (let i = 0, ilen = visibleMetas.length; i < ilen; i++) {\n values = values.concat(visibleMetas[i].controller.getAllParsedValues(scale));\n }\n scale._cache.$bar = _arrayUnique(values.sort((a, b) => a - b));\n }\n return scale._cache.$bar;\n}\nfunction computeMinSampleSize(meta) {\n const scale = meta.iScale;\n const values = getAllScaleValues(scale, meta.type);\n let min = scale._length;\n let i, ilen, curr, prev;\n const updateMinAndPrev = () => {\n if (curr === 32767 || curr === -32768) {\n return;\n }\n if (defined(prev)) {\n min = Math.min(min, Math.abs(curr - prev) || min);\n }\n prev = curr;\n };\n for (i = 0, ilen = values.length; i < ilen; ++i) {\n curr = scale.getPixelForValue(values[i]);\n updateMinAndPrev();\n }\n prev = undefined;\n for (i = 0, ilen = scale.ticks.length; i < ilen; ++i) {\n curr = scale.getPixelForTick(i);\n updateMinAndPrev();\n }\n return min;\n}\nfunction computeFitCategoryTraits(index, ruler, options, stackCount) {\n const thickness = options.barThickness;\n let size, ratio;\n if (isNullOrUndef(thickness)) {\n size = ruler.min * options.categoryPercentage;\n ratio = options.barPercentage;\n } else {\n size = thickness * stackCount;\n ratio = 1;\n }\n return {\n chunk: size / stackCount,\n ratio,\n start: ruler.pixels[index] - (size / 2)\n };\n}\nfunction computeFlexCategoryTraits(index, ruler, options, stackCount) {\n const pixels = ruler.pixels;\n const curr = pixels[index];\n let prev = index > 0 ? pixels[index - 1] : null;\n let next = index < pixels.length - 1 ? pixels[index + 1] : null;\n const percent = options.categoryPercentage;\n if (prev === null) {\n prev = curr - (next === null ? ruler.end - ruler.start : next - curr);\n }\n if (next === null) {\n next = curr + curr - prev;\n }\n const start = curr - (curr - Math.min(prev, next)) / 2 * percent;\n const size = Math.abs(next - prev) / 2 * percent;\n return {\n chunk: size / stackCount,\n ratio: options.barPercentage,\n start\n };\n}\nfunction parseFloatBar(entry, item, vScale, i) {\n const startValue = vScale.parse(entry[0], i);\n const endValue = vScale.parse(entry[1], i);\n const min = Math.min(startValue, endValue);\n const max = Math.max(startValue, endValue);\n let barStart = min;\n let barEnd = max;\n if (Math.abs(min) > Math.abs(max)) {\n barStart = max;\n barEnd = min;\n }\n item[vScale.axis] = barEnd;\n item._custom = {\n barStart,\n barEnd,\n start: startValue,\n end: endValue,\n min,\n max\n };\n}\nfunction parseValue(entry, item, vScale, i) {\n if (isArray(entry)) {\n parseFloatBar(entry, item, vScale, i);\n } else {\n item[vScale.axis] = vScale.parse(entry, i);\n }\n return item;\n}\nfunction parseArrayOrPrimitive(meta, data, start, count) {\n const iScale = meta.iScale;\n const vScale = meta.vScale;\n const labels = iScale.getLabels();\n const singleScale = iScale === vScale;\n const parsed = [];\n let i, ilen, item, entry;\n for (i = start, ilen = start + count; i < ilen; ++i) {\n entry = data[i];\n item = {};\n item[iScale.axis] = singleScale || iScale.parse(labels[i], i);\n parsed.push(parseValue(entry, item, vScale, i));\n }\n return parsed;\n}\nfunction isFloatBar(custom) {\n return custom && custom.barStart !== undefined && custom.barEnd !== undefined;\n}\nfunction barSign(size, vScale, actualBase) {\n if (size !== 0) {\n return sign(size);\n }\n return (vScale.isHorizontal() ? 1 : -1) * (vScale.min >= actualBase ? 1 : -1);\n}\nfunction borderProps(properties) {\n let reverse, start, end, top, bottom;\n if (properties.horizontal) {\n reverse = properties.base > properties.x;\n start = 'left';\n end = 'right';\n } else {\n reverse = properties.base < properties.y;\n start = 'bottom';\n end = 'top';\n }\n if (reverse) {\n top = 'end';\n bottom = 'start';\n } else {\n top = 'start';\n bottom = 'end';\n }\n return {start, end, reverse, top, bottom};\n}\nfunction setBorderSkipped(properties, options, stack, index) {\n let edge = options.borderSkipped;\n const res = {};\n if (!edge) {\n properties.borderSkipped = res;\n return;\n }\n const {start, end, reverse, top, bottom} = borderProps(properties);\n if (edge === 'middle' && stack) {\n properties.enableBorderRadius = true;\n if ((stack._top || 0) === index) {\n edge = top;\n } else if ((stack._bottom || 0) === index) {\n edge = bottom;\n } else {\n res[parseEdge(bottom, start, end, reverse)] = true;\n edge = top;\n }\n }\n res[parseEdge(edge, start, end, reverse)] = true;\n properties.borderSkipped = res;\n}\nfunction parseEdge(edge, a, b, reverse) {\n if (reverse) {\n edge = swap(edge, a, b);\n edge = startEnd(edge, b, a);\n } else {\n edge = startEnd(edge, a, b);\n }\n return edge;\n}\nfunction swap(orig, v1, v2) {\n return orig === v1 ? v2 : orig === v2 ? v1 : orig;\n}\nfunction startEnd(v, start, end) {\n return v === 'start' ? start : v === 'end' ? end : v;\n}\nfunction setInflateAmount(properties, {inflateAmount}, ratio) {\n properties.inflateAmount = inflateAmount === 'auto'\n ? ratio === 1 ? 0.33 : 0\n : inflateAmount;\n}\nclass BarController extends DatasetController {\n parsePrimitiveData(meta, data, start, count) {\n return parseArrayOrPrimitive(meta, data, start, count);\n }\n parseArrayData(meta, data, start, count) {\n return parseArrayOrPrimitive(meta, data, start, count);\n }\n parseObjectData(meta, data, start, count) {\n const {iScale, vScale} = meta;\n const {xAxisKey = 'x', yAxisKey = 'y'} = this._parsing;\n const iAxisKey = iScale.axis === 'x' ? xAxisKey : yAxisKey;\n const vAxisKey = vScale.axis === 'x' ? xAxisKey : yAxisKey;\n const parsed = [];\n let i, ilen, item, obj;\n for (i = start, ilen = start + count; i < ilen; ++i) {\n obj = data[i];\n item = {};\n item[iScale.axis] = iScale.parse(resolveObjectKey(obj, iAxisKey), i);\n parsed.push(parseValue(resolveObjectKey(obj, vAxisKey), item, vScale, i));\n }\n return parsed;\n }\n updateRangeFromParsed(range, scale, parsed, stack) {\n super.updateRangeFromParsed(range, scale, parsed, stack);\n const custom = parsed._custom;\n if (custom && scale === this._cachedMeta.vScale) {\n range.min = Math.min(range.min, custom.min);\n range.max = Math.max(range.max, custom.max);\n }\n }\n getMaxOverflow() {\n return 0;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const {iScale, vScale} = meta;\n const parsed = this.getParsed(index);\n const custom = parsed._custom;\n const value = isFloatBar(custom)\n ? '[' + custom.start + ', ' + custom.end + ']'\n : '' + vScale.getLabelForValue(parsed[vScale.axis]);\n return {\n label: '' + iScale.getLabelForValue(parsed[iScale.axis]),\n value\n };\n }\n initialize() {\n this.enableOptionSharing = true;\n super.initialize();\n const meta = this._cachedMeta;\n meta.stack = this.getDataset().stack;\n }\n update(mode) {\n const meta = this._cachedMeta;\n this.updateElements(meta.data, 0, meta.data.length, mode);\n }\n updateElements(bars, start, count, mode) {\n const reset = mode === 'reset';\n const {index, _cachedMeta: {vScale}} = this;\n const base = vScale.getBasePixel();\n const horizontal = vScale.isHorizontal();\n const ruler = this._getRuler();\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions);\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n for (let i = start; i < start + count; i++) {\n const parsed = this.getParsed(i);\n const vpixels = reset || isNullOrUndef(parsed[vScale.axis]) ? {base, head: base} : this._calculateBarValuePixels(i);\n const ipixels = this._calculateBarIndexPixels(i, ruler);\n const stack = (parsed._stacks || {})[vScale.axis];\n const properties = {\n horizontal,\n base: vpixels.base,\n enableBorderRadius: !stack || isFloatBar(parsed._custom) || (index === stack._top || index === stack._bottom),\n x: horizontal ? vpixels.head : ipixels.center,\n y: horizontal ? ipixels.center : vpixels.head,\n height: horizontal ? ipixels.size : Math.abs(vpixels.size),\n width: horizontal ? Math.abs(vpixels.size) : ipixels.size\n };\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, bars[i].active ? 'active' : mode);\n }\n const options = properties.options || bars[i].options;\n setBorderSkipped(properties, options, stack, index);\n setInflateAmount(properties, options, ruler.ratio);\n this.updateElement(bars[i], i, properties, mode);\n }\n }\n _getStacks(last, dataIndex) {\n const meta = this._cachedMeta;\n const iScale = meta.iScale;\n const metasets = iScale.getMatchingVisibleMetas(this._type);\n const stacked = iScale.options.stacked;\n const ilen = metasets.length;\n const stacks = [];\n let i, item;\n for (i = 0; i < ilen; ++i) {\n item = metasets[i];\n if (!item.controller.options.grouped) {\n continue;\n }\n if (typeof dataIndex !== 'undefined') {\n const val = item.controller.getParsed(dataIndex)[\n item.controller._cachedMeta.vScale.axis\n ];\n if (isNullOrUndef(val) || isNaN(val)) {\n continue;\n }\n }\n if (stacked === false || stacks.indexOf(item.stack) === -1 ||\n\t\t\t\t(stacked === undefined && item.stack === undefined)) {\n stacks.push(item.stack);\n }\n if (item.index === last) {\n break;\n }\n }\n if (!stacks.length) {\n stacks.push(undefined);\n }\n return stacks;\n }\n _getStackCount(index) {\n return this._getStacks(undefined, index).length;\n }\n _getStackIndex(datasetIndex, name, dataIndex) {\n const stacks = this._getStacks(datasetIndex, dataIndex);\n const index = (name !== undefined)\n ? stacks.indexOf(name)\n : -1;\n return (index === -1)\n ? stacks.length - 1\n : index;\n }\n _getRuler() {\n const opts = this.options;\n const meta = this._cachedMeta;\n const iScale = meta.iScale;\n const pixels = [];\n let i, ilen;\n for (i = 0, ilen = meta.data.length; i < ilen; ++i) {\n pixels.push(iScale.getPixelForValue(this.getParsed(i)[iScale.axis], i));\n }\n const barThickness = opts.barThickness;\n const min = barThickness || computeMinSampleSize(meta);\n return {\n min,\n pixels,\n start: iScale._startPixel,\n end: iScale._endPixel,\n stackCount: this._getStackCount(),\n scale: iScale,\n grouped: opts.grouped,\n ratio: barThickness ? 1 : opts.categoryPercentage * opts.barPercentage\n };\n }\n _calculateBarValuePixels(index) {\n const {_cachedMeta: {vScale, _stacked}, options: {base: baseValue, minBarLength}} = this;\n const actualBase = baseValue || 0;\n const parsed = this.getParsed(index);\n const custom = parsed._custom;\n const floating = isFloatBar(custom);\n let value = parsed[vScale.axis];\n let start = 0;\n let length = _stacked ? this.applyStack(vScale, parsed, _stacked) : value;\n let head, size;\n if (length !== value) {\n start = length - value;\n length = value;\n }\n if (floating) {\n value = custom.barStart;\n length = custom.barEnd - custom.barStart;\n if (value !== 0 && sign(value) !== sign(custom.barEnd)) {\n start = 0;\n }\n start += value;\n }\n const startValue = !isNullOrUndef(baseValue) && !floating ? baseValue : start;\n let base = vScale.getPixelForValue(startValue);\n if (this.chart.getDataVisibility(index)) {\n head = vScale.getPixelForValue(start + length);\n } else {\n head = base;\n }\n size = head - base;\n if (Math.abs(size) < minBarLength) {\n size = barSign(size, vScale, actualBase) * minBarLength;\n if (value === actualBase) {\n base -= size / 2;\n }\n head = base + size;\n }\n if (base === vScale.getPixelForValue(actualBase)) {\n const halfGrid = sign(size) * vScale.getLineWidthForValue(actualBase) / 2;\n base += halfGrid;\n size -= halfGrid;\n }\n return {\n size,\n base,\n head,\n center: head + size / 2\n };\n }\n _calculateBarIndexPixels(index, ruler) {\n const scale = ruler.scale;\n const options = this.options;\n const skipNull = options.skipNull;\n const maxBarThickness = valueOrDefault(options.maxBarThickness, Infinity);\n let center, size;\n if (ruler.grouped) {\n const stackCount = skipNull ? this._getStackCount(index) : ruler.stackCount;\n const range = options.barThickness === 'flex'\n ? computeFlexCategoryTraits(index, ruler, options, stackCount)\n : computeFitCategoryTraits(index, ruler, options, stackCount);\n const stackIndex = this._getStackIndex(this.index, this._cachedMeta.stack, skipNull ? index : undefined);\n center = range.start + (range.chunk * stackIndex) + (range.chunk / 2);\n size = Math.min(maxBarThickness, range.chunk * range.ratio);\n } else {\n center = scale.getPixelForValue(this.getParsed(index)[scale.axis], index);\n size = Math.min(maxBarThickness, ruler.min * ruler.ratio);\n }\n return {\n base: center - size / 2,\n head: center + size / 2,\n center,\n size\n };\n }\n draw() {\n const meta = this._cachedMeta;\n const vScale = meta.vScale;\n const rects = meta.data;\n const ilen = rects.length;\n let i = 0;\n for (; i < ilen; ++i) {\n if (this.getParsed(i)[vScale.axis] !== null) {\n rects[i].draw(this._ctx);\n }\n }\n }\n}\nBarController.id = 'bar';\nBarController.defaults = {\n datasetElementType: false,\n dataElementType: 'bar',\n categoryPercentage: 0.8,\n barPercentage: 0.9,\n grouped: true,\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'base', 'width', 'height']\n }\n }\n};\nBarController.overrides = {\n scales: {\n _index_: {\n type: 'category',\n offset: true,\n grid: {\n offset: true\n }\n },\n _value_: {\n type: 'linear',\n beginAtZero: true,\n }\n }\n};\n\nclass BubbleController extends DatasetController {\n initialize() {\n this.enableOptionSharing = true;\n super.initialize();\n }\n parsePrimitiveData(meta, data, start, count) {\n const parsed = super.parsePrimitiveData(meta, data, start, count);\n for (let i = 0; i < parsed.length; i++) {\n parsed[i]._custom = this.resolveDataElementOptions(i + start).radius;\n }\n return parsed;\n }\n parseArrayData(meta, data, start, count) {\n const parsed = super.parseArrayData(meta, data, start, count);\n for (let i = 0; i < parsed.length; i++) {\n const item = data[start + i];\n parsed[i]._custom = valueOrDefault(item[2], this.resolveDataElementOptions(i + start).radius);\n }\n return parsed;\n }\n parseObjectData(meta, data, start, count) {\n const parsed = super.parseObjectData(meta, data, start, count);\n for (let i = 0; i < parsed.length; i++) {\n const item = data[start + i];\n parsed[i]._custom = valueOrDefault(item && item.r && +item.r, this.resolveDataElementOptions(i + start).radius);\n }\n return parsed;\n }\n getMaxOverflow() {\n const data = this._cachedMeta.data;\n let max = 0;\n for (let i = data.length - 1; i >= 0; --i) {\n max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2);\n }\n return max > 0 && max;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const {xScale, yScale} = meta;\n const parsed = this.getParsed(index);\n const x = xScale.getLabelForValue(parsed.x);\n const y = yScale.getLabelForValue(parsed.y);\n const r = parsed._custom;\n return {\n label: meta.label,\n value: '(' + x + ', ' + y + (r ? ', ' + r : '') + ')'\n };\n }\n update(mode) {\n const points = this._cachedMeta.data;\n this.updateElements(points, 0, points.length, mode);\n }\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const {iScale, vScale} = this._cachedMeta;\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n for (let i = start; i < start + count; i++) {\n const point = points[i];\n const parsed = !reset && this.getParsed(i);\n const properties = {};\n const iPixel = properties[iAxis] = reset ? iScale.getPixelForDecimal(0.5) : iScale.getPixelForValue(parsed[iAxis]);\n const vPixel = properties[vAxis] = reset ? vScale.getBasePixel() : vScale.getPixelForValue(parsed[vAxis]);\n properties.skip = isNaN(iPixel) || isNaN(vPixel);\n if (includeOptions) {\n properties.options = this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n if (reset) {\n properties.options.radius = 0;\n }\n }\n this.updateElement(point, i, properties, mode);\n }\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n }\n resolveDataElementOptions(index, mode) {\n const parsed = this.getParsed(index);\n let values = super.resolveDataElementOptions(index, mode);\n if (values.$shared) {\n values = Object.assign({}, values, {$shared: false});\n }\n const radius = values.radius;\n if (mode !== 'active') {\n values.radius = 0;\n }\n values.radius += valueOrDefault(parsed && parsed._custom, radius);\n return values;\n }\n}\nBubbleController.id = 'bubble';\nBubbleController.defaults = {\n datasetElementType: false,\n dataElementType: 'point',\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'borderWidth', 'radius']\n }\n }\n};\nBubbleController.overrides = {\n scales: {\n x: {\n type: 'linear'\n },\n y: {\n type: 'linear'\n }\n },\n plugins: {\n tooltip: {\n callbacks: {\n title() {\n return '';\n }\n }\n }\n }\n};\n\nfunction getRatioAndOffset(rotation, circumference, cutout) {\n let ratioX = 1;\n let ratioY = 1;\n let offsetX = 0;\n let offsetY = 0;\n if (circumference < TAU) {\n const startAngle = rotation;\n const endAngle = startAngle + circumference;\n const startX = Math.cos(startAngle);\n const startY = Math.sin(startAngle);\n const endX = Math.cos(endAngle);\n const endY = Math.sin(endAngle);\n const calcMax = (angle, a, b) => _angleBetween(angle, startAngle, endAngle, true) ? 1 : Math.max(a, a * cutout, b, b * cutout);\n const calcMin = (angle, a, b) => _angleBetween(angle, startAngle, endAngle, true) ? -1 : Math.min(a, a * cutout, b, b * cutout);\n const maxX = calcMax(0, startX, endX);\n const maxY = calcMax(HALF_PI, startY, endY);\n const minX = calcMin(PI, startX, endX);\n const minY = calcMin(PI + HALF_PI, startY, endY);\n ratioX = (maxX - minX) / 2;\n ratioY = (maxY - minY) / 2;\n offsetX = -(maxX + minX) / 2;\n offsetY = -(maxY + minY) / 2;\n }\n return {ratioX, ratioY, offsetX, offsetY};\n}\nclass DoughnutController extends DatasetController {\n constructor(chart, datasetIndex) {\n super(chart, datasetIndex);\n this.enableOptionSharing = true;\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n this.offsetX = undefined;\n this.offsetY = undefined;\n }\n linkScales() {}\n parse(start, count) {\n const data = this.getDataset().data;\n const meta = this._cachedMeta;\n if (this._parsing === false) {\n meta._parsed = data;\n } else {\n let getter = (i) => +data[i];\n if (isObject(data[start])) {\n const {key = 'value'} = this._parsing;\n getter = (i) => +resolveObjectKey(data[i], key);\n }\n let i, ilen;\n for (i = start, ilen = start + count; i < ilen; ++i) {\n meta._parsed[i] = getter(i);\n }\n }\n }\n _getRotation() {\n return toRadians(this.options.rotation - 90);\n }\n _getCircumference() {\n return toRadians(this.options.circumference);\n }\n _getRotationExtents() {\n let min = TAU;\n let max = -TAU;\n for (let i = 0; i < this.chart.data.datasets.length; ++i) {\n if (this.chart.isDatasetVisible(i)) {\n const controller = this.chart.getDatasetMeta(i).controller;\n const rotation = controller._getRotation();\n const circumference = controller._getCircumference();\n min = Math.min(min, rotation);\n max = Math.max(max, rotation + circumference);\n }\n }\n return {\n rotation: min,\n circumference: max - min,\n };\n }\n update(mode) {\n const chart = this.chart;\n const {chartArea} = chart;\n const meta = this._cachedMeta;\n const arcs = meta.data;\n const spacing = this.getMaxBorderWidth() + this.getMaxOffset(arcs) + this.options.spacing;\n const maxSize = Math.max((Math.min(chartArea.width, chartArea.height) - spacing) / 2, 0);\n const cutout = Math.min(toPercentage(this.options.cutout, maxSize), 1);\n const chartWeight = this._getRingWeight(this.index);\n const {circumference, rotation} = this._getRotationExtents();\n const {ratioX, ratioY, offsetX, offsetY} = getRatioAndOffset(rotation, circumference, cutout);\n const maxWidth = (chartArea.width - spacing) / ratioX;\n const maxHeight = (chartArea.height - spacing) / ratioY;\n const maxRadius = Math.max(Math.min(maxWidth, maxHeight) / 2, 0);\n const outerRadius = toDimension(this.options.radius, maxRadius);\n const innerRadius = Math.max(outerRadius * cutout, 0);\n const radiusLength = (outerRadius - innerRadius) / this._getVisibleDatasetWeightTotal();\n this.offsetX = offsetX * outerRadius;\n this.offsetY = offsetY * outerRadius;\n meta.total = this.calculateTotal();\n this.outerRadius = outerRadius - radiusLength * this._getRingWeightOffset(this.index);\n this.innerRadius = Math.max(this.outerRadius - radiusLength * chartWeight, 0);\n this.updateElements(arcs, 0, arcs.length, mode);\n }\n _circumference(i, reset) {\n const opts = this.options;\n const meta = this._cachedMeta;\n const circumference = this._getCircumference();\n if ((reset && opts.animation.animateRotate) || !this.chart.getDataVisibility(i) || meta._parsed[i] === null || meta.data[i].hidden) {\n return 0;\n }\n return this.calculateCircumference(meta._parsed[i] * circumference / TAU);\n }\n updateElements(arcs, start, count, mode) {\n const reset = mode === 'reset';\n const chart = this.chart;\n const chartArea = chart.chartArea;\n const opts = chart.options;\n const animationOpts = opts.animation;\n const centerX = (chartArea.left + chartArea.right) / 2;\n const centerY = (chartArea.top + chartArea.bottom) / 2;\n const animateScale = reset && animationOpts.animateScale;\n const innerRadius = animateScale ? 0 : this.innerRadius;\n const outerRadius = animateScale ? 0 : this.outerRadius;\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions);\n let startAngle = this._getRotation();\n let i;\n for (i = 0; i < start; ++i) {\n startAngle += this._circumference(i, reset);\n }\n for (i = start; i < start + count; ++i) {\n const circumference = this._circumference(i, reset);\n const arc = arcs[i];\n const properties = {\n x: centerX + this.offsetX,\n y: centerY + this.offsetY,\n startAngle,\n endAngle: startAngle + circumference,\n circumference,\n outerRadius,\n innerRadius\n };\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, arc.active ? 'active' : mode);\n }\n startAngle += circumference;\n this.updateElement(arc, i, properties, mode);\n }\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n }\n calculateTotal() {\n const meta = this._cachedMeta;\n const metaData = meta.data;\n let total = 0;\n let i;\n for (i = 0; i < metaData.length; i++) {\n const value = meta._parsed[i];\n if (value !== null && !isNaN(value) && this.chart.getDataVisibility(i) && !metaData[i].hidden) {\n total += Math.abs(value);\n }\n }\n return total;\n }\n calculateCircumference(value) {\n const total = this._cachedMeta.total;\n if (total > 0 && !isNaN(value)) {\n return TAU * (Math.abs(value) / total);\n }\n return 0;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const chart = this.chart;\n const labels = chart.data.labels || [];\n const value = formatNumber(meta._parsed[index], chart.options.locale);\n return {\n label: labels[index] || '',\n value,\n };\n }\n getMaxBorderWidth(arcs) {\n let max = 0;\n const chart = this.chart;\n let i, ilen, meta, controller, options;\n if (!arcs) {\n for (i = 0, ilen = chart.data.datasets.length; i < ilen; ++i) {\n if (chart.isDatasetVisible(i)) {\n meta = chart.getDatasetMeta(i);\n arcs = meta.data;\n controller = meta.controller;\n break;\n }\n }\n }\n if (!arcs) {\n return 0;\n }\n for (i = 0, ilen = arcs.length; i < ilen; ++i) {\n options = controller.resolveDataElementOptions(i);\n if (options.borderAlign !== 'inner') {\n max = Math.max(max, options.borderWidth || 0, options.hoverBorderWidth || 0);\n }\n }\n return max;\n }\n getMaxOffset(arcs) {\n let max = 0;\n for (let i = 0, ilen = arcs.length; i < ilen; ++i) {\n const options = this.resolveDataElementOptions(i);\n max = Math.max(max, options.offset || 0, options.hoverOffset || 0);\n }\n return max;\n }\n _getRingWeightOffset(datasetIndex) {\n let ringWeightOffset = 0;\n for (let i = 0; i < datasetIndex; ++i) {\n if (this.chart.isDatasetVisible(i)) {\n ringWeightOffset += this._getRingWeight(i);\n }\n }\n return ringWeightOffset;\n }\n _getRingWeight(datasetIndex) {\n return Math.max(valueOrDefault(this.chart.data.datasets[datasetIndex].weight, 1), 0);\n }\n _getVisibleDatasetWeightTotal() {\n return this._getRingWeightOffset(this.chart.data.datasets.length) || 1;\n }\n}\nDoughnutController.id = 'doughnut';\nDoughnutController.defaults = {\n datasetElementType: false,\n dataElementType: 'arc',\n animation: {\n animateRotate: true,\n animateScale: false\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['circumference', 'endAngle', 'innerRadius', 'outerRadius', 'startAngle', 'x', 'y', 'offset', 'borderWidth', 'spacing']\n },\n },\n cutout: '50%',\n rotation: 0,\n circumference: 360,\n radius: '100%',\n spacing: 0,\n indexAxis: 'r',\n};\nDoughnutController.descriptors = {\n _scriptable: (name) => name !== 'spacing',\n _indexable: (name) => name !== 'spacing',\n};\nDoughnutController.overrides = {\n aspectRatio: 1,\n plugins: {\n legend: {\n labels: {\n generateLabels(chart) {\n const data = chart.data;\n if (data.labels.length && data.datasets.length) {\n const {labels: {pointStyle}} = chart.legend.options;\n return data.labels.map((label, i) => {\n const meta = chart.getDatasetMeta(0);\n const style = meta.controller.getStyle(i);\n return {\n text: label,\n fillStyle: style.backgroundColor,\n strokeStyle: style.borderColor,\n lineWidth: style.borderWidth,\n pointStyle: pointStyle,\n hidden: !chart.getDataVisibility(i),\n index: i\n };\n });\n }\n return [];\n }\n },\n onClick(e, legendItem, legend) {\n legend.chart.toggleDataVisibility(legendItem.index);\n legend.chart.update();\n }\n },\n tooltip: {\n callbacks: {\n title() {\n return '';\n },\n label(tooltipItem) {\n let dataLabel = tooltipItem.label;\n const value = ': ' + tooltipItem.formattedValue;\n if (isArray(dataLabel)) {\n dataLabel = dataLabel.slice();\n dataLabel[0] += value;\n } else {\n dataLabel += value;\n }\n return dataLabel;\n }\n }\n }\n }\n};\n\nclass LineController extends DatasetController {\n initialize() {\n this.enableOptionSharing = true;\n super.initialize();\n }\n update(mode) {\n const meta = this._cachedMeta;\n const {dataset: line, data: points = [], _dataset} = meta;\n const animationsDisabled = this.chart._animationsDisabled;\n let {start, count} = getStartAndCountOfVisiblePoints(meta, points, animationsDisabled);\n this._drawStart = start;\n this._drawCount = count;\n if (scaleRangesChanged(meta)) {\n start = 0;\n count = points.length;\n }\n line._chart = this.chart;\n line._datasetIndex = this.index;\n line._decimated = !!_dataset._decimated;\n line.points = points;\n const options = this.resolveDatasetElementOptions(mode);\n if (!this.options.showLine) {\n options.borderWidth = 0;\n }\n options.segment = this.options.segment;\n this.updateElement(line, undefined, {\n animated: !animationsDisabled,\n options\n }, mode);\n this.updateElements(points, start, count, mode);\n }\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const {iScale, vScale, _stacked, _dataset} = this._cachedMeta;\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const {spanGaps, segment} = this.options;\n const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY;\n const directUpdate = this.chart._animationsDisabled || reset || mode === 'none';\n let prevParsed = start > 0 && this.getParsed(start - 1);\n for (let i = start; i < start + count; ++i) {\n const point = points[i];\n const parsed = this.getParsed(i);\n const properties = directUpdate ? point : {};\n const nullData = isNullOrUndef(parsed[vAxis]);\n const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i);\n const vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i);\n properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData;\n properties.stop = i > 0 && (parsed[iAxis] - prevParsed[iAxis]) > maxGapLength;\n if (segment) {\n properties.parsed = parsed;\n properties.raw = _dataset.data[i];\n }\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n }\n if (!directUpdate) {\n this.updateElement(point, i, properties, mode);\n }\n prevParsed = parsed;\n }\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n }\n getMaxOverflow() {\n const meta = this._cachedMeta;\n const dataset = meta.dataset;\n const border = dataset.options && dataset.options.borderWidth || 0;\n const data = meta.data || [];\n if (!data.length) {\n return border;\n }\n const firstPoint = data[0].size(this.resolveDataElementOptions(0));\n const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1));\n return Math.max(border, firstPoint, lastPoint) / 2;\n }\n draw() {\n const meta = this._cachedMeta;\n meta.dataset.updateControlPoints(this.chart.chartArea, meta.iScale.axis);\n super.draw();\n }\n}\nLineController.id = 'line';\nLineController.defaults = {\n datasetElementType: 'line',\n dataElementType: 'point',\n showLine: true,\n spanGaps: false,\n};\nLineController.overrides = {\n scales: {\n _index_: {\n type: 'category',\n },\n _value_: {\n type: 'linear',\n },\n }\n};\nfunction getStartAndCountOfVisiblePoints(meta, points, animationsDisabled) {\n const pointCount = points.length;\n let start = 0;\n let count = pointCount;\n if (meta._sorted) {\n const {iScale, _parsed} = meta;\n const axis = iScale.axis;\n const {min, max, minDefined, maxDefined} = iScale.getUserBounds();\n if (minDefined) {\n start = _limitValue(Math.min(\n _lookupByKey(_parsed, iScale.axis, min).lo,\n animationsDisabled ? pointCount : _lookupByKey(points, axis, iScale.getPixelForValue(min)).lo),\n 0, pointCount - 1);\n }\n if (maxDefined) {\n count = _limitValue(Math.max(\n _lookupByKey(_parsed, iScale.axis, max).hi + 1,\n animationsDisabled ? 0 : _lookupByKey(points, axis, iScale.getPixelForValue(max)).hi + 1),\n start, pointCount) - start;\n } else {\n count = pointCount - start;\n }\n }\n return {start, count};\n}\nfunction scaleRangesChanged(meta) {\n const {xScale, yScale, _scaleRanges} = meta;\n const newRanges = {\n xmin: xScale.min,\n xmax: xScale.max,\n ymin: yScale.min,\n ymax: yScale.max\n };\n if (!_scaleRanges) {\n meta._scaleRanges = newRanges;\n return true;\n }\n const changed = _scaleRanges.xmin !== xScale.min\n\t\t|| _scaleRanges.xmax !== xScale.max\n\t\t|| _scaleRanges.ymin !== yScale.min\n\t\t|| _scaleRanges.ymax !== yScale.max;\n Object.assign(_scaleRanges, newRanges);\n return changed;\n}\n\nclass PolarAreaController extends DatasetController {\n constructor(chart, datasetIndex) {\n super(chart, datasetIndex);\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const chart = this.chart;\n const labels = chart.data.labels || [];\n const value = formatNumber(meta._parsed[index].r, chart.options.locale);\n return {\n label: labels[index] || '',\n value,\n };\n }\n update(mode) {\n const arcs = this._cachedMeta.data;\n this._updateRadius();\n this.updateElements(arcs, 0, arcs.length, mode);\n }\n _updateRadius() {\n const chart = this.chart;\n const chartArea = chart.chartArea;\n const opts = chart.options;\n const minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);\n const outerRadius = Math.max(minSize / 2, 0);\n const innerRadius = Math.max(opts.cutoutPercentage ? (outerRadius / 100) * (opts.cutoutPercentage) : 1, 0);\n const radiusLength = (outerRadius - innerRadius) / chart.getVisibleDatasetCount();\n this.outerRadius = outerRadius - (radiusLength * this.index);\n this.innerRadius = this.outerRadius - radiusLength;\n }\n updateElements(arcs, start, count, mode) {\n const reset = mode === 'reset';\n const chart = this.chart;\n const dataset = this.getDataset();\n const opts = chart.options;\n const animationOpts = opts.animation;\n const scale = this._cachedMeta.rScale;\n const centerX = scale.xCenter;\n const centerY = scale.yCenter;\n const datasetStartAngle = scale.getIndexAngle(0) - 0.5 * PI;\n let angle = datasetStartAngle;\n let i;\n const defaultAngle = 360 / this.countVisibleElements();\n for (i = 0; i < start; ++i) {\n angle += this._computeAngle(i, mode, defaultAngle);\n }\n for (i = start; i < start + count; i++) {\n const arc = arcs[i];\n let startAngle = angle;\n let endAngle = angle + this._computeAngle(i, mode, defaultAngle);\n let outerRadius = chart.getDataVisibility(i) ? scale.getDistanceFromCenterForValue(dataset.data[i]) : 0;\n angle = endAngle;\n if (reset) {\n if (animationOpts.animateScale) {\n outerRadius = 0;\n }\n if (animationOpts.animateRotate) {\n startAngle = endAngle = datasetStartAngle;\n }\n }\n const properties = {\n x: centerX,\n y: centerY,\n innerRadius: 0,\n outerRadius,\n startAngle,\n endAngle,\n options: this.resolveDataElementOptions(i, arc.active ? 'active' : mode)\n };\n this.updateElement(arc, i, properties, mode);\n }\n }\n countVisibleElements() {\n const dataset = this.getDataset();\n const meta = this._cachedMeta;\n let count = 0;\n meta.data.forEach((element, index) => {\n if (!isNaN(dataset.data[index]) && this.chart.getDataVisibility(index)) {\n count++;\n }\n });\n return count;\n }\n _computeAngle(index, mode, defaultAngle) {\n return this.chart.getDataVisibility(index)\n ? toRadians(this.resolveDataElementOptions(index, mode).angle || defaultAngle)\n : 0;\n }\n}\nPolarAreaController.id = 'polarArea';\nPolarAreaController.defaults = {\n dataElementType: 'arc',\n animation: {\n animateRotate: true,\n animateScale: true\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'startAngle', 'endAngle', 'innerRadius', 'outerRadius']\n },\n },\n indexAxis: 'r',\n startAngle: 0,\n};\nPolarAreaController.overrides = {\n aspectRatio: 1,\n plugins: {\n legend: {\n labels: {\n generateLabels(chart) {\n const data = chart.data;\n if (data.labels.length && data.datasets.length) {\n const {labels: {pointStyle}} = chart.legend.options;\n return data.labels.map((label, i) => {\n const meta = chart.getDatasetMeta(0);\n const style = meta.controller.getStyle(i);\n return {\n text: label,\n fillStyle: style.backgroundColor,\n strokeStyle: style.borderColor,\n lineWidth: style.borderWidth,\n pointStyle: pointStyle,\n hidden: !chart.getDataVisibility(i),\n index: i\n };\n });\n }\n return [];\n }\n },\n onClick(e, legendItem, legend) {\n legend.chart.toggleDataVisibility(legendItem.index);\n legend.chart.update();\n }\n },\n tooltip: {\n callbacks: {\n title() {\n return '';\n },\n label(context) {\n return context.chart.data.labels[context.dataIndex] + ': ' + context.formattedValue;\n }\n }\n }\n },\n scales: {\n r: {\n type: 'radialLinear',\n angleLines: {\n display: false\n },\n beginAtZero: true,\n grid: {\n circular: true\n },\n pointLabels: {\n display: false\n },\n startAngle: 0\n }\n }\n};\n\nclass PieController extends DoughnutController {\n}\nPieController.id = 'pie';\nPieController.defaults = {\n cutout: 0,\n rotation: 0,\n circumference: 360,\n radius: '100%'\n};\n\nclass RadarController extends DatasetController {\n getLabelAndValue(index) {\n const vScale = this._cachedMeta.vScale;\n const parsed = this.getParsed(index);\n return {\n label: vScale.getLabels()[index],\n value: '' + vScale.getLabelForValue(parsed[vScale.axis])\n };\n }\n update(mode) {\n const meta = this._cachedMeta;\n const line = meta.dataset;\n const points = meta.data || [];\n const labels = meta.iScale.getLabels();\n line.points = points;\n if (mode !== 'resize') {\n const options = this.resolveDatasetElementOptions(mode);\n if (!this.options.showLine) {\n options.borderWidth = 0;\n }\n const properties = {\n _loop: true,\n _fullLoop: labels.length === points.length,\n options\n };\n this.updateElement(line, undefined, properties, mode);\n }\n this.updateElements(points, 0, points.length, mode);\n }\n updateElements(points, start, count, mode) {\n const dataset = this.getDataset();\n const scale = this._cachedMeta.rScale;\n const reset = mode === 'reset';\n for (let i = start; i < start + count; i++) {\n const point = points[i];\n const options = this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n const pointPosition = scale.getPointPositionForValue(i, dataset.data[i]);\n const x = reset ? scale.xCenter : pointPosition.x;\n const y = reset ? scale.yCenter : pointPosition.y;\n const properties = {\n x,\n y,\n angle: pointPosition.angle,\n skip: isNaN(x) || isNaN(y),\n options\n };\n this.updateElement(point, i, properties, mode);\n }\n }\n}\nRadarController.id = 'radar';\nRadarController.defaults = {\n datasetElementType: 'line',\n dataElementType: 'point',\n indexAxis: 'r',\n showLine: true,\n elements: {\n line: {\n fill: 'start'\n }\n },\n};\nRadarController.overrides = {\n aspectRatio: 1,\n scales: {\n r: {\n type: 'radialLinear',\n }\n }\n};\n\nclass ScatterController extends LineController {\n}\nScatterController.id = 'scatter';\nScatterController.defaults = {\n showLine: false,\n fill: false\n};\nScatterController.overrides = {\n interaction: {\n mode: 'point'\n },\n plugins: {\n tooltip: {\n callbacks: {\n title() {\n return '';\n },\n label(item) {\n return '(' + item.label + ', ' + item.formattedValue + ')';\n }\n }\n }\n },\n scales: {\n x: {\n type: 'linear'\n },\n y: {\n type: 'linear'\n }\n }\n};\n\nvar controllers = /*#__PURE__*/Object.freeze({\n__proto__: null,\nBarController: BarController,\nBubbleController: BubbleController,\nDoughnutController: DoughnutController,\nLineController: LineController,\nPolarAreaController: PolarAreaController,\nPieController: PieController,\nRadarController: RadarController,\nScatterController: ScatterController\n});\n\nfunction abstract() {\n throw new Error('This method is not implemented: Check that a complete date adapter is provided.');\n}\nclass DateAdapter {\n constructor(options) {\n this.options = options || {};\n }\n formats() {\n return abstract();\n }\n parse(value, format) {\n return abstract();\n }\n format(timestamp, format) {\n return abstract();\n }\n add(timestamp, amount, unit) {\n return abstract();\n }\n diff(a, b, unit) {\n return abstract();\n }\n startOf(timestamp, unit, weekday) {\n return abstract();\n }\n endOf(timestamp, unit) {\n return abstract();\n }\n}\nDateAdapter.override = function(members) {\n Object.assign(DateAdapter.prototype, members);\n};\nvar adapters = {\n _date: DateAdapter\n};\n\nfunction getRelativePosition(e, chart) {\n if ('native' in e) {\n return {\n x: e.x,\n y: e.y\n };\n }\n return getRelativePosition$1(e, chart);\n}\nfunction evaluateAllVisibleItems(chart, handler) {\n const metasets = chart.getSortedVisibleDatasetMetas();\n let index, data, element;\n for (let i = 0, ilen = metasets.length; i < ilen; ++i) {\n ({index, data} = metasets[i]);\n for (let j = 0, jlen = data.length; j < jlen; ++j) {\n element = data[j];\n if (!element.skip) {\n handler(element, index, j);\n }\n }\n }\n}\nfunction binarySearch(metaset, axis, value, intersect) {\n const {controller, data, _sorted} = metaset;\n const iScale = controller._cachedMeta.iScale;\n if (iScale && axis === iScale.axis && axis !== 'r' && _sorted && data.length) {\n const lookupMethod = iScale._reversePixels ? _rlookupByKey : _lookupByKey;\n if (!intersect) {\n return lookupMethod(data, axis, value);\n } else if (controller._sharedOptions) {\n const el = data[0];\n const range = typeof el.getRange === 'function' && el.getRange(axis);\n if (range) {\n const start = lookupMethod(data, axis, value - range);\n const end = lookupMethod(data, axis, value + range);\n return {lo: start.lo, hi: end.hi};\n }\n }\n }\n return {lo: 0, hi: data.length - 1};\n}\nfunction optimizedEvaluateItems(chart, axis, position, handler, intersect) {\n const metasets = chart.getSortedVisibleDatasetMetas();\n const value = position[axis];\n for (let i = 0, ilen = metasets.length; i < ilen; ++i) {\n const {index, data} = metasets[i];\n const {lo, hi} = binarySearch(metasets[i], axis, value, intersect);\n for (let j = lo; j <= hi; ++j) {\n const element = data[j];\n if (!element.skip) {\n handler(element, index, j);\n }\n }\n }\n}\nfunction getDistanceMetricForAxis(axis) {\n const useX = axis.indexOf('x') !== -1;\n const useY = axis.indexOf('y') !== -1;\n return function(pt1, pt2) {\n const deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0;\n const deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0;\n return Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2));\n };\n}\nfunction getIntersectItems(chart, position, axis, useFinalPosition) {\n const items = [];\n if (!_isPointInArea(position, chart.chartArea, chart._minPadding)) {\n return items;\n }\n const evaluationFunc = function(element, datasetIndex, index) {\n if (element.inRange(position.x, position.y, useFinalPosition)) {\n items.push({element, datasetIndex, index});\n }\n };\n optimizedEvaluateItems(chart, axis, position, evaluationFunc, true);\n return items;\n}\nfunction getNearestRadialItems(chart, position, axis, useFinalPosition) {\n let items = [];\n function evaluationFunc(element, datasetIndex, index) {\n const {startAngle, endAngle} = element.getProps(['startAngle', 'endAngle'], useFinalPosition);\n const {angle} = getAngleFromPoint(element, {x: position.x, y: position.y});\n if (_angleBetween(angle, startAngle, endAngle)) {\n items.push({element, datasetIndex, index});\n }\n }\n optimizedEvaluateItems(chart, axis, position, evaluationFunc);\n return items;\n}\nfunction getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition) {\n let items = [];\n const distanceMetric = getDistanceMetricForAxis(axis);\n let minDistance = Number.POSITIVE_INFINITY;\n function evaluationFunc(element, datasetIndex, index) {\n const inRange = element.inRange(position.x, position.y, useFinalPosition);\n if (intersect && !inRange) {\n return;\n }\n const center = element.getCenterPoint(useFinalPosition);\n const pointInArea = _isPointInArea(center, chart.chartArea, chart._minPadding);\n if (!pointInArea && !inRange) {\n return;\n }\n const distance = distanceMetric(position, center);\n if (distance < minDistance) {\n items = [{element, datasetIndex, index}];\n minDistance = distance;\n } else if (distance === minDistance) {\n items.push({element, datasetIndex, index});\n }\n }\n optimizedEvaluateItems(chart, axis, position, evaluationFunc);\n return items;\n}\nfunction getNearestItems(chart, position, axis, intersect, useFinalPosition) {\n if (!_isPointInArea(position, chart.chartArea, chart._minPadding)) {\n return [];\n }\n return axis === 'r' && !intersect\n ? getNearestRadialItems(chart, position, axis, useFinalPosition)\n : getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition);\n}\nfunction getAxisItems(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const items = [];\n const axis = options.axis;\n const rangeMethod = axis === 'x' ? 'inXRange' : 'inYRange';\n let intersectsItem = false;\n evaluateAllVisibleItems(chart, (element, datasetIndex, index) => {\n if (element[rangeMethod](position[axis], useFinalPosition)) {\n items.push({element, datasetIndex, index});\n }\n if (element.inRange(position.x, position.y, useFinalPosition)) {\n intersectsItem = true;\n }\n });\n if (options.intersect && !intersectsItem) {\n return [];\n }\n return items;\n}\nvar Interaction = {\n modes: {\n index(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'x';\n const items = options.intersect\n ? getIntersectItems(chart, position, axis, useFinalPosition)\n : getNearestItems(chart, position, axis, false, useFinalPosition);\n const elements = [];\n if (!items.length) {\n return [];\n }\n chart.getSortedVisibleDatasetMetas().forEach((meta) => {\n const index = items[0].index;\n const element = meta.data[index];\n if (element && !element.skip) {\n elements.push({element, datasetIndex: meta.index, index});\n }\n });\n return elements;\n },\n dataset(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n let items = options.intersect\n ? getIntersectItems(chart, position, axis, useFinalPosition) :\n getNearestItems(chart, position, axis, false, useFinalPosition);\n if (items.length > 0) {\n const datasetIndex = items[0].datasetIndex;\n const data = chart.getDatasetMeta(datasetIndex).data;\n items = [];\n for (let i = 0; i < data.length; ++i) {\n items.push({element: data[i], datasetIndex, index: i});\n }\n }\n return items;\n },\n point(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n return getIntersectItems(chart, position, axis, useFinalPosition);\n },\n nearest(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n return getNearestItems(chart, position, axis, options.intersect, useFinalPosition);\n },\n x(chart, e, options, useFinalPosition) {\n return getAxisItems(chart, e, {axis: 'x', intersect: options.intersect}, useFinalPosition);\n },\n y(chart, e, options, useFinalPosition) {\n return getAxisItems(chart, e, {axis: 'y', intersect: options.intersect}, useFinalPosition);\n }\n }\n};\n\nconst STATIC_POSITIONS = ['left', 'top', 'right', 'bottom'];\nfunction filterByPosition(array, position) {\n return array.filter(v => v.pos === position);\n}\nfunction filterDynamicPositionByAxis(array, axis) {\n return array.filter(v => STATIC_POSITIONS.indexOf(v.pos) === -1 && v.box.axis === axis);\n}\nfunction sortByWeight(array, reverse) {\n return array.sort((a, b) => {\n const v0 = reverse ? b : a;\n const v1 = reverse ? a : b;\n return v0.weight === v1.weight ?\n v0.index - v1.index :\n v0.weight - v1.weight;\n });\n}\nfunction wrapBoxes(boxes) {\n const layoutBoxes = [];\n let i, ilen, box, pos, stack, stackWeight;\n for (i = 0, ilen = (boxes || []).length; i < ilen; ++i) {\n box = boxes[i];\n ({position: pos, options: {stack, stackWeight = 1}} = box);\n layoutBoxes.push({\n index: i,\n box,\n pos,\n horizontal: box.isHorizontal(),\n weight: box.weight,\n stack: stack && (pos + stack),\n stackWeight\n });\n }\n return layoutBoxes;\n}\nfunction buildStacks(layouts) {\n const stacks = {};\n for (const wrap of layouts) {\n const {stack, pos, stackWeight} = wrap;\n if (!stack || !STATIC_POSITIONS.includes(pos)) {\n continue;\n }\n const _stack = stacks[stack] || (stacks[stack] = {count: 0, placed: 0, weight: 0, size: 0});\n _stack.count++;\n _stack.weight += stackWeight;\n }\n return stacks;\n}\nfunction setLayoutDims(layouts, params) {\n const stacks = buildStacks(layouts);\n const {vBoxMaxWidth, hBoxMaxHeight} = params;\n let i, ilen, layout;\n for (i = 0, ilen = layouts.length; i < ilen; ++i) {\n layout = layouts[i];\n const {fullSize} = layout.box;\n const stack = stacks[layout.stack];\n const factor = stack && layout.stackWeight / stack.weight;\n if (layout.horizontal) {\n layout.width = factor ? factor * vBoxMaxWidth : fullSize && params.availableWidth;\n layout.height = hBoxMaxHeight;\n } else {\n layout.width = vBoxMaxWidth;\n layout.height = factor ? factor * hBoxMaxHeight : fullSize && params.availableHeight;\n }\n }\n return stacks;\n}\nfunction buildLayoutBoxes(boxes) {\n const layoutBoxes = wrapBoxes(boxes);\n const fullSize = sortByWeight(layoutBoxes.filter(wrap => wrap.box.fullSize), true);\n const left = sortByWeight(filterByPosition(layoutBoxes, 'left'), true);\n const right = sortByWeight(filterByPosition(layoutBoxes, 'right'));\n const top = sortByWeight(filterByPosition(layoutBoxes, 'top'), true);\n const bottom = sortByWeight(filterByPosition(layoutBoxes, 'bottom'));\n const centerHorizontal = filterDynamicPositionByAxis(layoutBoxes, 'x');\n const centerVertical = filterDynamicPositionByAxis(layoutBoxes, 'y');\n return {\n fullSize,\n leftAndTop: left.concat(top),\n rightAndBottom: right.concat(centerVertical).concat(bottom).concat(centerHorizontal),\n chartArea: filterByPosition(layoutBoxes, 'chartArea'),\n vertical: left.concat(right).concat(centerVertical),\n horizontal: top.concat(bottom).concat(centerHorizontal)\n };\n}\nfunction getCombinedMax(maxPadding, chartArea, a, b) {\n return Math.max(maxPadding[a], chartArea[a]) + Math.max(maxPadding[b], chartArea[b]);\n}\nfunction updateMaxPadding(maxPadding, boxPadding) {\n maxPadding.top = Math.max(maxPadding.top, boxPadding.top);\n maxPadding.left = Math.max(maxPadding.left, boxPadding.left);\n maxPadding.bottom = Math.max(maxPadding.bottom, boxPadding.bottom);\n maxPadding.right = Math.max(maxPadding.right, boxPadding.right);\n}\nfunction updateDims(chartArea, params, layout, stacks) {\n const {pos, box} = layout;\n const maxPadding = chartArea.maxPadding;\n if (!isObject(pos)) {\n if (layout.size) {\n chartArea[pos] -= layout.size;\n }\n const stack = stacks[layout.stack] || {size: 0, count: 1};\n stack.size = Math.max(stack.size, layout.horizontal ? box.height : box.width);\n layout.size = stack.size / stack.count;\n chartArea[pos] += layout.size;\n }\n if (box.getPadding) {\n updateMaxPadding(maxPadding, box.getPadding());\n }\n const newWidth = Math.max(0, params.outerWidth - getCombinedMax(maxPadding, chartArea, 'left', 'right'));\n const newHeight = Math.max(0, params.outerHeight - getCombinedMax(maxPadding, chartArea, 'top', 'bottom'));\n const widthChanged = newWidth !== chartArea.w;\n const heightChanged = newHeight !== chartArea.h;\n chartArea.w = newWidth;\n chartArea.h = newHeight;\n return layout.horizontal\n ? {same: widthChanged, other: heightChanged}\n : {same: heightChanged, other: widthChanged};\n}\nfunction handleMaxPadding(chartArea) {\n const maxPadding = chartArea.maxPadding;\n function updatePos(pos) {\n const change = Math.max(maxPadding[pos] - chartArea[pos], 0);\n chartArea[pos] += change;\n return change;\n }\n chartArea.y += updatePos('top');\n chartArea.x += updatePos('left');\n updatePos('right');\n updatePos('bottom');\n}\nfunction getMargins(horizontal, chartArea) {\n const maxPadding = chartArea.maxPadding;\n function marginForPositions(positions) {\n const margin = {left: 0, top: 0, right: 0, bottom: 0};\n positions.forEach((pos) => {\n margin[pos] = Math.max(chartArea[pos], maxPadding[pos]);\n });\n return margin;\n }\n return horizontal\n ? marginForPositions(['left', 'right'])\n : marginForPositions(['top', 'bottom']);\n}\nfunction fitBoxes(boxes, chartArea, params, stacks) {\n const refitBoxes = [];\n let i, ilen, layout, box, refit, changed;\n for (i = 0, ilen = boxes.length, refit = 0; i < ilen; ++i) {\n layout = boxes[i];\n box = layout.box;\n box.update(\n layout.width || chartArea.w,\n layout.height || chartArea.h,\n getMargins(layout.horizontal, chartArea)\n );\n const {same, other} = updateDims(chartArea, params, layout, stacks);\n refit |= same && refitBoxes.length;\n changed = changed || other;\n if (!box.fullSize) {\n refitBoxes.push(layout);\n }\n }\n return refit && fitBoxes(refitBoxes, chartArea, params, stacks) || changed;\n}\nfunction setBoxDims(box, left, top, width, height) {\n box.top = top;\n box.left = left;\n box.right = left + width;\n box.bottom = top + height;\n box.width = width;\n box.height = height;\n}\nfunction placeBoxes(boxes, chartArea, params, stacks) {\n const userPadding = params.padding;\n let {x, y} = chartArea;\n for (const layout of boxes) {\n const box = layout.box;\n const stack = stacks[layout.stack] || {count: 1, placed: 0, weight: 1};\n const weight = (layout.stackWeight / stack.weight) || 1;\n if (layout.horizontal) {\n const width = chartArea.w * weight;\n const height = stack.size || box.height;\n if (defined(stack.start)) {\n y = stack.start;\n }\n if (box.fullSize) {\n setBoxDims(box, userPadding.left, y, params.outerWidth - userPadding.right - userPadding.left, height);\n } else {\n setBoxDims(box, chartArea.left + stack.placed, y, width, height);\n }\n stack.start = y;\n stack.placed += width;\n y = box.bottom;\n } else {\n const height = chartArea.h * weight;\n const width = stack.size || box.width;\n if (defined(stack.start)) {\n x = stack.start;\n }\n if (box.fullSize) {\n setBoxDims(box, x, userPadding.top, width, params.outerHeight - userPadding.bottom - userPadding.top);\n } else {\n setBoxDims(box, x, chartArea.top + stack.placed, width, height);\n }\n stack.start = x;\n stack.placed += height;\n x = box.right;\n }\n }\n chartArea.x = x;\n chartArea.y = y;\n}\ndefaults.set('layout', {\n autoPadding: true,\n padding: {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n }\n});\nvar layouts = {\n addBox(chart, item) {\n if (!chart.boxes) {\n chart.boxes = [];\n }\n item.fullSize = item.fullSize || false;\n item.position = item.position || 'top';\n item.weight = item.weight || 0;\n item._layers = item._layers || function() {\n return [{\n z: 0,\n draw(chartArea) {\n item.draw(chartArea);\n }\n }];\n };\n chart.boxes.push(item);\n },\n removeBox(chart, layoutItem) {\n const index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1;\n if (index !== -1) {\n chart.boxes.splice(index, 1);\n }\n },\n configure(chart, item, options) {\n item.fullSize = options.fullSize;\n item.position = options.position;\n item.weight = options.weight;\n },\n update(chart, width, height, minPadding) {\n if (!chart) {\n return;\n }\n const padding = toPadding(chart.options.layout.padding);\n const availableWidth = Math.max(width - padding.width, 0);\n const availableHeight = Math.max(height - padding.height, 0);\n const boxes = buildLayoutBoxes(chart.boxes);\n const verticalBoxes = boxes.vertical;\n const horizontalBoxes = boxes.horizontal;\n each(chart.boxes, box => {\n if (typeof box.beforeLayout === 'function') {\n box.beforeLayout();\n }\n });\n const visibleVerticalBoxCount = verticalBoxes.reduce((total, wrap) =>\n wrap.box.options && wrap.box.options.display === false ? total : total + 1, 0) || 1;\n const params = Object.freeze({\n outerWidth: width,\n outerHeight: height,\n padding,\n availableWidth,\n availableHeight,\n vBoxMaxWidth: availableWidth / 2 / visibleVerticalBoxCount,\n hBoxMaxHeight: availableHeight / 2\n });\n const maxPadding = Object.assign({}, padding);\n updateMaxPadding(maxPadding, toPadding(minPadding));\n const chartArea = Object.assign({\n maxPadding,\n w: availableWidth,\n h: availableHeight,\n x: padding.left,\n y: padding.top\n }, padding);\n const stacks = setLayoutDims(verticalBoxes.concat(horizontalBoxes), params);\n fitBoxes(boxes.fullSize, chartArea, params, stacks);\n fitBoxes(verticalBoxes, chartArea, params, stacks);\n if (fitBoxes(horizontalBoxes, chartArea, params, stacks)) {\n fitBoxes(verticalBoxes, chartArea, params, stacks);\n }\n handleMaxPadding(chartArea);\n placeBoxes(boxes.leftAndTop, chartArea, params, stacks);\n chartArea.x += chartArea.w;\n chartArea.y += chartArea.h;\n placeBoxes(boxes.rightAndBottom, chartArea, params, stacks);\n chart.chartArea = {\n left: chartArea.left,\n top: chartArea.top,\n right: chartArea.left + chartArea.w,\n bottom: chartArea.top + chartArea.h,\n height: chartArea.h,\n width: chartArea.w,\n };\n each(boxes.chartArea, (layout) => {\n const box = layout.box;\n Object.assign(box, chart.chartArea);\n box.update(chartArea.w, chartArea.h, {left: 0, top: 0, right: 0, bottom: 0});\n });\n }\n};\n\nclass BasePlatform {\n acquireContext(canvas, aspectRatio) {}\n releaseContext(context) {\n return false;\n }\n addEventListener(chart, type, listener) {}\n removeEventListener(chart, type, listener) {}\n getDevicePixelRatio() {\n return 1;\n }\n getMaximumSize(element, width, height, aspectRatio) {\n width = Math.max(0, width || element.width);\n height = height || element.height;\n return {\n width,\n height: Math.max(0, aspectRatio ? Math.floor(width / aspectRatio) : height)\n };\n }\n isAttached(canvas) {\n return true;\n }\n updateConfig(config) {\n }\n}\n\nclass BasicPlatform extends BasePlatform {\n acquireContext(item) {\n return item && item.getContext && item.getContext('2d') || null;\n }\n updateConfig(config) {\n config.options.animation = false;\n }\n}\n\nconst EXPANDO_KEY = '$chartjs';\nconst EVENT_TYPES = {\n touchstart: 'mousedown',\n touchmove: 'mousemove',\n touchend: 'mouseup',\n pointerenter: 'mouseenter',\n pointerdown: 'mousedown',\n pointermove: 'mousemove',\n pointerup: 'mouseup',\n pointerleave: 'mouseout',\n pointerout: 'mouseout'\n};\nconst isNullOrEmpty = value => value === null || value === '';\nfunction initCanvas(canvas, aspectRatio) {\n const style = canvas.style;\n const renderHeight = canvas.getAttribute('height');\n const renderWidth = canvas.getAttribute('width');\n canvas[EXPANDO_KEY] = {\n initial: {\n height: renderHeight,\n width: renderWidth,\n style: {\n display: style.display,\n height: style.height,\n width: style.width\n }\n }\n };\n style.display = style.display || 'block';\n style.boxSizing = style.boxSizing || 'border-box';\n if (isNullOrEmpty(renderWidth)) {\n const displayWidth = readUsedSize(canvas, 'width');\n if (displayWidth !== undefined) {\n canvas.width = displayWidth;\n }\n }\n if (isNullOrEmpty(renderHeight)) {\n if (canvas.style.height === '') {\n canvas.height = canvas.width / (aspectRatio || 2);\n } else {\n const displayHeight = readUsedSize(canvas, 'height');\n if (displayHeight !== undefined) {\n canvas.height = displayHeight;\n }\n }\n }\n return canvas;\n}\nconst eventListenerOptions = supportsEventListenerOptions ? {passive: true} : false;\nfunction addListener(node, type, listener) {\n node.addEventListener(type, listener, eventListenerOptions);\n}\nfunction removeListener(chart, type, listener) {\n chart.canvas.removeEventListener(type, listener, eventListenerOptions);\n}\nfunction fromNativeEvent(event, chart) {\n const type = EVENT_TYPES[event.type] || event.type;\n const {x, y} = getRelativePosition$1(event, chart);\n return {\n type,\n chart,\n native: event,\n x: x !== undefined ? x : null,\n y: y !== undefined ? y : null,\n };\n}\nfunction nodeListContains(nodeList, canvas) {\n for (const node of nodeList) {\n if (node === canvas || node.contains(canvas)) {\n return true;\n }\n }\n}\nfunction createAttachObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const observer = new MutationObserver(entries => {\n let trigger = false;\n for (const entry of entries) {\n trigger = trigger || nodeListContains(entry.addedNodes, canvas);\n trigger = trigger && !nodeListContains(entry.removedNodes, canvas);\n }\n if (trigger) {\n listener();\n }\n });\n observer.observe(document, {childList: true, subtree: true});\n return observer;\n}\nfunction createDetachObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const observer = new MutationObserver(entries => {\n let trigger = false;\n for (const entry of entries) {\n trigger = trigger || nodeListContains(entry.removedNodes, canvas);\n trigger = trigger && !nodeListContains(entry.addedNodes, canvas);\n }\n if (trigger) {\n listener();\n }\n });\n observer.observe(document, {childList: true, subtree: true});\n return observer;\n}\nconst drpListeningCharts = new Map();\nlet oldDevicePixelRatio = 0;\nfunction onWindowResize() {\n const dpr = window.devicePixelRatio;\n if (dpr === oldDevicePixelRatio) {\n return;\n }\n oldDevicePixelRatio = dpr;\n drpListeningCharts.forEach((resize, chart) => {\n if (chart.currentDevicePixelRatio !== dpr) {\n resize();\n }\n });\n}\nfunction listenDevicePixelRatioChanges(chart, resize) {\n if (!drpListeningCharts.size) {\n window.addEventListener('resize', onWindowResize);\n }\n drpListeningCharts.set(chart, resize);\n}\nfunction unlistenDevicePixelRatioChanges(chart) {\n drpListeningCharts.delete(chart);\n if (!drpListeningCharts.size) {\n window.removeEventListener('resize', onWindowResize);\n }\n}\nfunction createResizeObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const container = canvas && _getParentNode(canvas);\n if (!container) {\n return;\n }\n const resize = throttled((width, height) => {\n const w = container.clientWidth;\n listener(width, height);\n if (w < container.clientWidth) {\n listener();\n }\n }, window);\n const observer = new ResizeObserver(entries => {\n const entry = entries[0];\n const width = entry.contentRect.width;\n const height = entry.contentRect.height;\n if (width === 0 && height === 0) {\n return;\n }\n resize(width, height);\n });\n observer.observe(container);\n listenDevicePixelRatioChanges(chart, resize);\n return observer;\n}\nfunction releaseObserver(chart, type, observer) {\n if (observer) {\n observer.disconnect();\n }\n if (type === 'resize') {\n unlistenDevicePixelRatioChanges(chart);\n }\n}\nfunction createProxyAndListen(chart, type, listener) {\n const canvas = chart.canvas;\n const proxy = throttled((event) => {\n if (chart.ctx !== null) {\n listener(fromNativeEvent(event, chart));\n }\n }, chart, (args) => {\n const event = args[0];\n return [event, event.offsetX, event.offsetY];\n });\n addListener(canvas, type, proxy);\n return proxy;\n}\nclass DomPlatform extends BasePlatform {\n acquireContext(canvas, aspectRatio) {\n const context = canvas && canvas.getContext && canvas.getContext('2d');\n if (context && context.canvas === canvas) {\n initCanvas(canvas, aspectRatio);\n return context;\n }\n return null;\n }\n releaseContext(context) {\n const canvas = context.canvas;\n if (!canvas[EXPANDO_KEY]) {\n return false;\n }\n const initial = canvas[EXPANDO_KEY].initial;\n ['height', 'width'].forEach((prop) => {\n const value = initial[prop];\n if (isNullOrUndef(value)) {\n canvas.removeAttribute(prop);\n } else {\n canvas.setAttribute(prop, value);\n }\n });\n const style = initial.style || {};\n Object.keys(style).forEach((key) => {\n canvas.style[key] = style[key];\n });\n canvas.width = canvas.width;\n delete canvas[EXPANDO_KEY];\n return true;\n }\n addEventListener(chart, type, listener) {\n this.removeEventListener(chart, type);\n const proxies = chart.$proxies || (chart.$proxies = {});\n const handlers = {\n attach: createAttachObserver,\n detach: createDetachObserver,\n resize: createResizeObserver\n };\n const handler = handlers[type] || createProxyAndListen;\n proxies[type] = handler(chart, type, listener);\n }\n removeEventListener(chart, type) {\n const proxies = chart.$proxies || (chart.$proxies = {});\n const proxy = proxies[type];\n if (!proxy) {\n return;\n }\n const handlers = {\n attach: releaseObserver,\n detach: releaseObserver,\n resize: releaseObserver\n };\n const handler = handlers[type] || removeListener;\n handler(chart, type, proxy);\n proxies[type] = undefined;\n }\n getDevicePixelRatio() {\n return window.devicePixelRatio;\n }\n getMaximumSize(canvas, width, height, aspectRatio) {\n return getMaximumSize(canvas, width, height, aspectRatio);\n }\n isAttached(canvas) {\n const container = _getParentNode(canvas);\n return !!(container && container.isConnected);\n }\n}\n\nfunction _detectPlatform(canvas) {\n if (!_isDomSupported() || (typeof OffscreenCanvas !== 'undefined' && canvas instanceof OffscreenCanvas)) {\n return BasicPlatform;\n }\n return DomPlatform;\n}\n\nclass Element {\n constructor() {\n this.x = undefined;\n this.y = undefined;\n this.active = false;\n this.options = undefined;\n this.$animations = undefined;\n }\n tooltipPosition(useFinalPosition) {\n const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n return {x, y};\n }\n hasValue() {\n return isNumber(this.x) && isNumber(this.y);\n }\n getProps(props, final) {\n const anims = this.$animations;\n if (!final || !anims) {\n return this;\n }\n const ret = {};\n props.forEach(prop => {\n ret[prop] = anims[prop] && anims[prop].active() ? anims[prop]._to : this[prop];\n });\n return ret;\n }\n}\nElement.defaults = {};\nElement.defaultRoutes = undefined;\n\nconst formatters = {\n values(value) {\n return isArray(value) ? value : '' + value;\n },\n numeric(tickValue, index, ticks) {\n if (tickValue === 0) {\n return '0';\n }\n const locale = this.chart.options.locale;\n let notation;\n let delta = tickValue;\n if (ticks.length > 1) {\n const maxTick = Math.max(Math.abs(ticks[0].value), Math.abs(ticks[ticks.length - 1].value));\n if (maxTick < 1e-4 || maxTick > 1e+15) {\n notation = 'scientific';\n }\n delta = calculateDelta(tickValue, ticks);\n }\n const logDelta = log10(Math.abs(delta));\n const numDecimal = Math.max(Math.min(-1 * Math.floor(logDelta), 20), 0);\n const options = {notation, minimumFractionDigits: numDecimal, maximumFractionDigits: numDecimal};\n Object.assign(options, this.options.ticks.format);\n return formatNumber(tickValue, locale, options);\n },\n logarithmic(tickValue, index, ticks) {\n if (tickValue === 0) {\n return '0';\n }\n const remain = tickValue / (Math.pow(10, Math.floor(log10(tickValue))));\n if (remain === 1 || remain === 2 || remain === 5) {\n return formatters.numeric.call(this, tickValue, index, ticks);\n }\n return '';\n }\n};\nfunction calculateDelta(tickValue, ticks) {\n let delta = ticks.length > 3 ? ticks[2].value - ticks[1].value : ticks[1].value - ticks[0].value;\n if (Math.abs(delta) >= 1 && tickValue !== Math.floor(tickValue)) {\n delta = tickValue - Math.floor(tickValue);\n }\n return delta;\n}\nvar Ticks = {formatters};\n\ndefaults.set('scale', {\n display: true,\n offset: false,\n reverse: false,\n beginAtZero: false,\n bounds: 'ticks',\n grace: 0,\n grid: {\n display: true,\n lineWidth: 1,\n drawBorder: true,\n drawOnChartArea: true,\n drawTicks: true,\n tickLength: 8,\n tickWidth: (_ctx, options) => options.lineWidth,\n tickColor: (_ctx, options) => options.color,\n offset: false,\n borderDash: [],\n borderDashOffset: 0.0,\n borderWidth: 1\n },\n title: {\n display: false,\n text: '',\n padding: {\n top: 4,\n bottom: 4\n }\n },\n ticks: {\n minRotation: 0,\n maxRotation: 50,\n mirror: false,\n textStrokeWidth: 0,\n textStrokeColor: '',\n padding: 3,\n display: true,\n autoSkip: true,\n autoSkipPadding: 3,\n labelOffset: 0,\n callback: Ticks.formatters.values,\n minor: {},\n major: {},\n align: 'center',\n crossAlign: 'near',\n showLabelBackdrop: false,\n backdropColor: 'rgba(255, 255, 255, 0.75)',\n backdropPadding: 2,\n }\n});\ndefaults.route('scale.ticks', 'color', '', 'color');\ndefaults.route('scale.grid', 'color', '', 'borderColor');\ndefaults.route('scale.grid', 'borderColor', '', 'borderColor');\ndefaults.route('scale.title', 'color', '', 'color');\ndefaults.describe('scale', {\n _fallback: false,\n _scriptable: (name) => !name.startsWith('before') && !name.startsWith('after') && name !== 'callback' && name !== 'parser',\n _indexable: (name) => name !== 'borderDash' && name !== 'tickBorderDash',\n});\ndefaults.describe('scales', {\n _fallback: 'scale',\n});\ndefaults.describe('scale.ticks', {\n _scriptable: (name) => name !== 'backdropPadding' && name !== 'callback',\n _indexable: (name) => name !== 'backdropPadding',\n});\n\nfunction autoSkip(scale, ticks) {\n const tickOpts = scale.options.ticks;\n const ticksLimit = tickOpts.maxTicksLimit || determineMaxTicks(scale);\n const majorIndices = tickOpts.major.enabled ? getMajorIndices(ticks) : [];\n const numMajorIndices = majorIndices.length;\n const first = majorIndices[0];\n const last = majorIndices[numMajorIndices - 1];\n const newTicks = [];\n if (numMajorIndices > ticksLimit) {\n skipMajors(ticks, newTicks, majorIndices, numMajorIndices / ticksLimit);\n return newTicks;\n }\n const spacing = calculateSpacing(majorIndices, ticks, ticksLimit);\n if (numMajorIndices > 0) {\n let i, ilen;\n const avgMajorSpacing = numMajorIndices > 1 ? Math.round((last - first) / (numMajorIndices - 1)) : null;\n skip(ticks, newTicks, spacing, isNullOrUndef(avgMajorSpacing) ? 0 : first - avgMajorSpacing, first);\n for (i = 0, ilen = numMajorIndices - 1; i < ilen; i++) {\n skip(ticks, newTicks, spacing, majorIndices[i], majorIndices[i + 1]);\n }\n skip(ticks, newTicks, spacing, last, isNullOrUndef(avgMajorSpacing) ? ticks.length : last + avgMajorSpacing);\n return newTicks;\n }\n skip(ticks, newTicks, spacing);\n return newTicks;\n}\nfunction determineMaxTicks(scale) {\n const offset = scale.options.offset;\n const tickLength = scale._tickSize();\n const maxScale = scale._length / tickLength + (offset ? 0 : 1);\n const maxChart = scale._maxLength / tickLength;\n return Math.floor(Math.min(maxScale, maxChart));\n}\nfunction calculateSpacing(majorIndices, ticks, ticksLimit) {\n const evenMajorSpacing = getEvenSpacing(majorIndices);\n const spacing = ticks.length / ticksLimit;\n if (!evenMajorSpacing) {\n return Math.max(spacing, 1);\n }\n const factors = _factorize(evenMajorSpacing);\n for (let i = 0, ilen = factors.length - 1; i < ilen; i++) {\n const factor = factors[i];\n if (factor > spacing) {\n return factor;\n }\n }\n return Math.max(spacing, 1);\n}\nfunction getMajorIndices(ticks) {\n const result = [];\n let i, ilen;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n if (ticks[i].major) {\n result.push(i);\n }\n }\n return result;\n}\nfunction skipMajors(ticks, newTicks, majorIndices, spacing) {\n let count = 0;\n let next = majorIndices[0];\n let i;\n spacing = Math.ceil(spacing);\n for (i = 0; i < ticks.length; i++) {\n if (i === next) {\n newTicks.push(ticks[i]);\n count++;\n next = majorIndices[count * spacing];\n }\n }\n}\nfunction skip(ticks, newTicks, spacing, majorStart, majorEnd) {\n const start = valueOrDefault(majorStart, 0);\n const end = Math.min(valueOrDefault(majorEnd, ticks.length), ticks.length);\n let count = 0;\n let length, i, next;\n spacing = Math.ceil(spacing);\n if (majorEnd) {\n length = majorEnd - majorStart;\n spacing = length / Math.floor(length / spacing);\n }\n next = start;\n while (next < 0) {\n count++;\n next = Math.round(start + count * spacing);\n }\n for (i = Math.max(start, 0); i < end; i++) {\n if (i === next) {\n newTicks.push(ticks[i]);\n count++;\n next = Math.round(start + count * spacing);\n }\n }\n}\nfunction getEvenSpacing(arr) {\n const len = arr.length;\n let i, diff;\n if (len < 2) {\n return false;\n }\n for (diff = arr[0], i = 1; i < len; ++i) {\n if (arr[i] - arr[i - 1] !== diff) {\n return false;\n }\n }\n return diff;\n}\n\nconst reverseAlign = (align) => align === 'left' ? 'right' : align === 'right' ? 'left' : align;\nconst offsetFromEdge = (scale, edge, offset) => edge === 'top' || edge === 'left' ? scale[edge] + offset : scale[edge] - offset;\nfunction sample(arr, numItems) {\n const result = [];\n const increment = arr.length / numItems;\n const len = arr.length;\n let i = 0;\n for (; i < len; i += increment) {\n result.push(arr[Math.floor(i)]);\n }\n return result;\n}\nfunction getPixelForGridLine(scale, index, offsetGridLines) {\n const length = scale.ticks.length;\n const validIndex = Math.min(index, length - 1);\n const start = scale._startPixel;\n const end = scale._endPixel;\n const epsilon = 1e-6;\n let lineValue = scale.getPixelForTick(validIndex);\n let offset;\n if (offsetGridLines) {\n if (length === 1) {\n offset = Math.max(lineValue - start, end - lineValue);\n } else if (index === 0) {\n offset = (scale.getPixelForTick(1) - lineValue) / 2;\n } else {\n offset = (lineValue - scale.getPixelForTick(validIndex - 1)) / 2;\n }\n lineValue += validIndex < index ? offset : -offset;\n if (lineValue < start - epsilon || lineValue > end + epsilon) {\n return;\n }\n }\n return lineValue;\n}\nfunction garbageCollect(caches, length) {\n each(caches, (cache) => {\n const gc = cache.gc;\n const gcLen = gc.length / 2;\n let i;\n if (gcLen > length) {\n for (i = 0; i < gcLen; ++i) {\n delete cache.data[gc[i]];\n }\n gc.splice(0, gcLen);\n }\n });\n}\nfunction getTickMarkLength(options) {\n return options.drawTicks ? options.tickLength : 0;\n}\nfunction getTitleHeight(options, fallback) {\n if (!options.display) {\n return 0;\n }\n const font = toFont(options.font, fallback);\n const padding = toPadding(options.padding);\n const lines = isArray(options.text) ? options.text.length : 1;\n return (lines * font.lineHeight) + padding.height;\n}\nfunction createScaleContext(parent, scale) {\n return createContext(parent, {\n scale,\n type: 'scale'\n });\n}\nfunction createTickContext(parent, index, tick) {\n return createContext(parent, {\n tick,\n index,\n type: 'tick'\n });\n}\nfunction titleAlign(align, position, reverse) {\n let ret = _toLeftRightCenter(align);\n if ((reverse && position !== 'right') || (!reverse && position === 'right')) {\n ret = reverseAlign(ret);\n }\n return ret;\n}\nfunction titleArgs(scale, offset, position, align) {\n const {top, left, bottom, right, chart} = scale;\n const {chartArea, scales} = chart;\n let rotation = 0;\n let maxWidth, titleX, titleY;\n const height = bottom - top;\n const width = right - left;\n if (scale.isHorizontal()) {\n titleX = _alignStartEnd(align, left, right);\n if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n titleY = scales[positionAxisID].getPixelForValue(value) + height - offset;\n } else if (position === 'center') {\n titleY = (chartArea.bottom + chartArea.top) / 2 + height - offset;\n } else {\n titleY = offsetFromEdge(scale, position, offset);\n }\n maxWidth = right - left;\n } else {\n if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n titleX = scales[positionAxisID].getPixelForValue(value) - width + offset;\n } else if (position === 'center') {\n titleX = (chartArea.left + chartArea.right) / 2 - width + offset;\n } else {\n titleX = offsetFromEdge(scale, position, offset);\n }\n titleY = _alignStartEnd(align, bottom, top);\n rotation = position === 'left' ? -HALF_PI : HALF_PI;\n }\n return {titleX, titleY, maxWidth, rotation};\n}\nclass Scale extends Element {\n constructor(cfg) {\n super();\n this.id = cfg.id;\n this.type = cfg.type;\n this.options = undefined;\n this.ctx = cfg.ctx;\n this.chart = cfg.chart;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.width = undefined;\n this.height = undefined;\n this._margins = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n };\n this.maxWidth = undefined;\n this.maxHeight = undefined;\n this.paddingTop = undefined;\n this.paddingBottom = undefined;\n this.paddingLeft = undefined;\n this.paddingRight = undefined;\n this.axis = undefined;\n this.labelRotation = undefined;\n this.min = undefined;\n this.max = undefined;\n this._range = undefined;\n this.ticks = [];\n this._gridLineItems = null;\n this._labelItems = null;\n this._labelSizes = null;\n this._length = 0;\n this._maxLength = 0;\n this._longestTextCache = {};\n this._startPixel = undefined;\n this._endPixel = undefined;\n this._reversePixels = false;\n this._userMax = undefined;\n this._userMin = undefined;\n this._suggestedMax = undefined;\n this._suggestedMin = undefined;\n this._ticksLength = 0;\n this._borderValue = 0;\n this._cache = {};\n this._dataLimitsCached = false;\n this.$context = undefined;\n }\n init(options) {\n this.options = options.setContext(this.getContext());\n this.axis = options.axis;\n this._userMin = this.parse(options.min);\n this._userMax = this.parse(options.max);\n this._suggestedMin = this.parse(options.suggestedMin);\n this._suggestedMax = this.parse(options.suggestedMax);\n }\n parse(raw, index) {\n return raw;\n }\n getUserBounds() {\n let {_userMin, _userMax, _suggestedMin, _suggestedMax} = this;\n _userMin = finiteOrDefault(_userMin, Number.POSITIVE_INFINITY);\n _userMax = finiteOrDefault(_userMax, Number.NEGATIVE_INFINITY);\n _suggestedMin = finiteOrDefault(_suggestedMin, Number.POSITIVE_INFINITY);\n _suggestedMax = finiteOrDefault(_suggestedMax, Number.NEGATIVE_INFINITY);\n return {\n min: finiteOrDefault(_userMin, _suggestedMin),\n max: finiteOrDefault(_userMax, _suggestedMax),\n minDefined: isNumberFinite(_userMin),\n maxDefined: isNumberFinite(_userMax)\n };\n }\n getMinMax(canStack) {\n let {min, max, minDefined, maxDefined} = this.getUserBounds();\n let range;\n if (minDefined && maxDefined) {\n return {min, max};\n }\n const metas = this.getMatchingVisibleMetas();\n for (let i = 0, ilen = metas.length; i < ilen; ++i) {\n range = metas[i].controller.getMinMax(this, canStack);\n if (!minDefined) {\n min = Math.min(min, range.min);\n }\n if (!maxDefined) {\n max = Math.max(max, range.max);\n }\n }\n min = maxDefined && min > max ? max : min;\n max = minDefined && min > max ? min : max;\n return {\n min: finiteOrDefault(min, finiteOrDefault(max, min)),\n max: finiteOrDefault(max, finiteOrDefault(min, max))\n };\n }\n getPadding() {\n return {\n left: this.paddingLeft || 0,\n top: this.paddingTop || 0,\n right: this.paddingRight || 0,\n bottom: this.paddingBottom || 0\n };\n }\n getTicks() {\n return this.ticks;\n }\n getLabels() {\n const data = this.chart.data;\n return this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels || [];\n }\n beforeLayout() {\n this._cache = {};\n this._dataLimitsCached = false;\n }\n beforeUpdate() {\n callback(this.options.beforeUpdate, [this]);\n }\n update(maxWidth, maxHeight, margins) {\n const {beginAtZero, grace, ticks: tickOpts} = this.options;\n const sampleSize = tickOpts.sampleSize;\n this.beforeUpdate();\n this.maxWidth = maxWidth;\n this.maxHeight = maxHeight;\n this._margins = margins = Object.assign({\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n }, margins);\n this.ticks = null;\n this._labelSizes = null;\n this._gridLineItems = null;\n this._labelItems = null;\n this.beforeSetDimensions();\n this.setDimensions();\n this.afterSetDimensions();\n this._maxLength = this.isHorizontal()\n ? this.width + margins.left + margins.right\n : this.height + margins.top + margins.bottom;\n if (!this._dataLimitsCached) {\n this.beforeDataLimits();\n this.determineDataLimits();\n this.afterDataLimits();\n this._range = _addGrace(this, grace, beginAtZero);\n this._dataLimitsCached = true;\n }\n this.beforeBuildTicks();\n this.ticks = this.buildTicks() || [];\n this.afterBuildTicks();\n const samplingEnabled = sampleSize < this.ticks.length;\n this._convertTicksToLabels(samplingEnabled ? sample(this.ticks, sampleSize) : this.ticks);\n this.configure();\n this.beforeCalculateLabelRotation();\n this.calculateLabelRotation();\n this.afterCalculateLabelRotation();\n if (tickOpts.display && (tickOpts.autoSkip || tickOpts.source === 'auto')) {\n this.ticks = autoSkip(this, this.ticks);\n this._labelSizes = null;\n }\n if (samplingEnabled) {\n this._convertTicksToLabels(this.ticks);\n }\n this.beforeFit();\n this.fit();\n this.afterFit();\n this.afterUpdate();\n }\n configure() {\n let reversePixels = this.options.reverse;\n let startPixel, endPixel;\n if (this.isHorizontal()) {\n startPixel = this.left;\n endPixel = this.right;\n } else {\n startPixel = this.top;\n endPixel = this.bottom;\n reversePixels = !reversePixels;\n }\n this._startPixel = startPixel;\n this._endPixel = endPixel;\n this._reversePixels = reversePixels;\n this._length = endPixel - startPixel;\n this._alignToPixels = this.options.alignToPixels;\n }\n afterUpdate() {\n callback(this.options.afterUpdate, [this]);\n }\n beforeSetDimensions() {\n callback(this.options.beforeSetDimensions, [this]);\n }\n setDimensions() {\n if (this.isHorizontal()) {\n this.width = this.maxWidth;\n this.left = 0;\n this.right = this.width;\n } else {\n this.height = this.maxHeight;\n this.top = 0;\n this.bottom = this.height;\n }\n this.paddingLeft = 0;\n this.paddingTop = 0;\n this.paddingRight = 0;\n this.paddingBottom = 0;\n }\n afterSetDimensions() {\n callback(this.options.afterSetDimensions, [this]);\n }\n _callHooks(name) {\n this.chart.notifyPlugins(name, this.getContext());\n callback(this.options[name], [this]);\n }\n beforeDataLimits() {\n this._callHooks('beforeDataLimits');\n }\n determineDataLimits() {}\n afterDataLimits() {\n this._callHooks('afterDataLimits');\n }\n beforeBuildTicks() {\n this._callHooks('beforeBuildTicks');\n }\n buildTicks() {\n return [];\n }\n afterBuildTicks() {\n this._callHooks('afterBuildTicks');\n }\n beforeTickToLabelConversion() {\n callback(this.options.beforeTickToLabelConversion, [this]);\n }\n generateTickLabels(ticks) {\n const tickOpts = this.options.ticks;\n let i, ilen, tick;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n tick = ticks[i];\n tick.label = callback(tickOpts.callback, [tick.value, i, ticks], this);\n }\n }\n afterTickToLabelConversion() {\n callback(this.options.afterTickToLabelConversion, [this]);\n }\n beforeCalculateLabelRotation() {\n callback(this.options.beforeCalculateLabelRotation, [this]);\n }\n calculateLabelRotation() {\n const options = this.options;\n const tickOpts = options.ticks;\n const numTicks = this.ticks.length;\n const minRotation = tickOpts.minRotation || 0;\n const maxRotation = tickOpts.maxRotation;\n let labelRotation = minRotation;\n let tickWidth, maxHeight, maxLabelDiagonal;\n if (!this._isVisible() || !tickOpts.display || minRotation >= maxRotation || numTicks <= 1 || !this.isHorizontal()) {\n this.labelRotation = minRotation;\n return;\n }\n const labelSizes = this._getLabelSizes();\n const maxLabelWidth = labelSizes.widest.width;\n const maxLabelHeight = labelSizes.highest.height;\n const maxWidth = _limitValue(this.chart.width - maxLabelWidth, 0, this.maxWidth);\n tickWidth = options.offset ? this.maxWidth / numTicks : maxWidth / (numTicks - 1);\n if (maxLabelWidth + 6 > tickWidth) {\n tickWidth = maxWidth / (numTicks - (options.offset ? 0.5 : 1));\n maxHeight = this.maxHeight - getTickMarkLength(options.grid)\n\t\t\t\t- tickOpts.padding - getTitleHeight(options.title, this.chart.options.font);\n maxLabelDiagonal = Math.sqrt(maxLabelWidth * maxLabelWidth + maxLabelHeight * maxLabelHeight);\n labelRotation = toDegrees(Math.min(\n Math.asin(_limitValue((labelSizes.highest.height + 6) / tickWidth, -1, 1)),\n Math.asin(_limitValue(maxHeight / maxLabelDiagonal, -1, 1)) - Math.asin(_limitValue(maxLabelHeight / maxLabelDiagonal, -1, 1))\n ));\n labelRotation = Math.max(minRotation, Math.min(maxRotation, labelRotation));\n }\n this.labelRotation = labelRotation;\n }\n afterCalculateLabelRotation() {\n callback(this.options.afterCalculateLabelRotation, [this]);\n }\n beforeFit() {\n callback(this.options.beforeFit, [this]);\n }\n fit() {\n const minSize = {\n width: 0,\n height: 0\n };\n const {chart, options: {ticks: tickOpts, title: titleOpts, grid: gridOpts}} = this;\n const display = this._isVisible();\n const isHorizontal = this.isHorizontal();\n if (display) {\n const titleHeight = getTitleHeight(titleOpts, chart.options.font);\n if (isHorizontal) {\n minSize.width = this.maxWidth;\n minSize.height = getTickMarkLength(gridOpts) + titleHeight;\n } else {\n minSize.height = this.maxHeight;\n minSize.width = getTickMarkLength(gridOpts) + titleHeight;\n }\n if (tickOpts.display && this.ticks.length) {\n const {first, last, widest, highest} = this._getLabelSizes();\n const tickPadding = tickOpts.padding * 2;\n const angleRadians = toRadians(this.labelRotation);\n const cos = Math.cos(angleRadians);\n const sin = Math.sin(angleRadians);\n if (isHorizontal) {\n const labelHeight = tickOpts.mirror ? 0 : sin * widest.width + cos * highest.height;\n minSize.height = Math.min(this.maxHeight, minSize.height + labelHeight + tickPadding);\n } else {\n const labelWidth = tickOpts.mirror ? 0 : cos * widest.width + sin * highest.height;\n minSize.width = Math.min(this.maxWidth, minSize.width + labelWidth + tickPadding);\n }\n this._calculatePadding(first, last, sin, cos);\n }\n }\n this._handleMargins();\n if (isHorizontal) {\n this.width = this._length = chart.width - this._margins.left - this._margins.right;\n this.height = minSize.height;\n } else {\n this.width = minSize.width;\n this.height = this._length = chart.height - this._margins.top - this._margins.bottom;\n }\n }\n _calculatePadding(first, last, sin, cos) {\n const {ticks: {align, padding}, position} = this.options;\n const isRotated = this.labelRotation !== 0;\n const labelsBelowTicks = position !== 'top' && this.axis === 'x';\n if (this.isHorizontal()) {\n const offsetLeft = this.getPixelForTick(0) - this.left;\n const offsetRight = this.right - this.getPixelForTick(this.ticks.length - 1);\n let paddingLeft = 0;\n let paddingRight = 0;\n if (isRotated) {\n if (labelsBelowTicks) {\n paddingLeft = cos * first.width;\n paddingRight = sin * last.height;\n } else {\n paddingLeft = sin * first.height;\n paddingRight = cos * last.width;\n }\n } else if (align === 'start') {\n paddingRight = last.width;\n } else if (align === 'end') {\n paddingLeft = first.width;\n } else {\n paddingLeft = first.width / 2;\n paddingRight = last.width / 2;\n }\n this.paddingLeft = Math.max((paddingLeft - offsetLeft + padding) * this.width / (this.width - offsetLeft), 0);\n this.paddingRight = Math.max((paddingRight - offsetRight + padding) * this.width / (this.width - offsetRight), 0);\n } else {\n let paddingTop = last.height / 2;\n let paddingBottom = first.height / 2;\n if (align === 'start') {\n paddingTop = 0;\n paddingBottom = first.height;\n } else if (align === 'end') {\n paddingTop = last.height;\n paddingBottom = 0;\n }\n this.paddingTop = paddingTop + padding;\n this.paddingBottom = paddingBottom + padding;\n }\n }\n _handleMargins() {\n if (this._margins) {\n this._margins.left = Math.max(this.paddingLeft, this._margins.left);\n this._margins.top = Math.max(this.paddingTop, this._margins.top);\n this._margins.right = Math.max(this.paddingRight, this._margins.right);\n this._margins.bottom = Math.max(this.paddingBottom, this._margins.bottom);\n }\n }\n afterFit() {\n callback(this.options.afterFit, [this]);\n }\n isHorizontal() {\n const {axis, position} = this.options;\n return position === 'top' || position === 'bottom' || axis === 'x';\n }\n isFullSize() {\n return this.options.fullSize;\n }\n _convertTicksToLabels(ticks) {\n this.beforeTickToLabelConversion();\n this.generateTickLabels(ticks);\n let i, ilen;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n if (isNullOrUndef(ticks[i].label)) {\n ticks.splice(i, 1);\n ilen--;\n i--;\n }\n }\n this.afterTickToLabelConversion();\n }\n _getLabelSizes() {\n let labelSizes = this._labelSizes;\n if (!labelSizes) {\n const sampleSize = this.options.ticks.sampleSize;\n let ticks = this.ticks;\n if (sampleSize < ticks.length) {\n ticks = sample(ticks, sampleSize);\n }\n this._labelSizes = labelSizes = this._computeLabelSizes(ticks, ticks.length);\n }\n return labelSizes;\n }\n _computeLabelSizes(ticks, length) {\n const {ctx, _longestTextCache: caches} = this;\n const widths = [];\n const heights = [];\n let widestLabelSize = 0;\n let highestLabelSize = 0;\n let i, j, jlen, label, tickFont, fontString, cache, lineHeight, width, height, nestedLabel;\n for (i = 0; i < length; ++i) {\n label = ticks[i].label;\n tickFont = this._resolveTickFontOptions(i);\n ctx.font = fontString = tickFont.string;\n cache = caches[fontString] = caches[fontString] || {data: {}, gc: []};\n lineHeight = tickFont.lineHeight;\n width = height = 0;\n if (!isNullOrUndef(label) && !isArray(label)) {\n width = _measureText(ctx, cache.data, cache.gc, width, label);\n height = lineHeight;\n } else if (isArray(label)) {\n for (j = 0, jlen = label.length; j < jlen; ++j) {\n nestedLabel = label[j];\n if (!isNullOrUndef(nestedLabel) && !isArray(nestedLabel)) {\n width = _measureText(ctx, cache.data, cache.gc, width, nestedLabel);\n height += lineHeight;\n }\n }\n }\n widths.push(width);\n heights.push(height);\n widestLabelSize = Math.max(width, widestLabelSize);\n highestLabelSize = Math.max(height, highestLabelSize);\n }\n garbageCollect(caches, length);\n const widest = widths.indexOf(widestLabelSize);\n const highest = heights.indexOf(highestLabelSize);\n const valueAt = (idx) => ({width: widths[idx] || 0, height: heights[idx] || 0});\n return {\n first: valueAt(0),\n last: valueAt(length - 1),\n widest: valueAt(widest),\n highest: valueAt(highest),\n widths,\n heights,\n };\n }\n getLabelForValue(value) {\n return value;\n }\n getPixelForValue(value, index) {\n return NaN;\n }\n getValueForPixel(pixel) {}\n getPixelForTick(index) {\n const ticks = this.ticks;\n if (index < 0 || index > ticks.length - 1) {\n return null;\n }\n return this.getPixelForValue(ticks[index].value);\n }\n getPixelForDecimal(decimal) {\n if (this._reversePixels) {\n decimal = 1 - decimal;\n }\n const pixel = this._startPixel + decimal * this._length;\n return _int16Range(this._alignToPixels ? _alignPixel(this.chart, pixel, 0) : pixel);\n }\n getDecimalForPixel(pixel) {\n const decimal = (pixel - this._startPixel) / this._length;\n return this._reversePixels ? 1 - decimal : decimal;\n }\n getBasePixel() {\n return this.getPixelForValue(this.getBaseValue());\n }\n getBaseValue() {\n const {min, max} = this;\n return min < 0 && max < 0 ? max :\n min > 0 && max > 0 ? min :\n 0;\n }\n getContext(index) {\n const ticks = this.ticks || [];\n if (index >= 0 && index < ticks.length) {\n const tick = ticks[index];\n return tick.$context ||\n\t\t\t\t(tick.$context = createTickContext(this.getContext(), index, tick));\n }\n return this.$context ||\n\t\t\t(this.$context = createScaleContext(this.chart.getContext(), this));\n }\n _tickSize() {\n const optionTicks = this.options.ticks;\n const rot = toRadians(this.labelRotation);\n const cos = Math.abs(Math.cos(rot));\n const sin = Math.abs(Math.sin(rot));\n const labelSizes = this._getLabelSizes();\n const padding = optionTicks.autoSkipPadding || 0;\n const w = labelSizes ? labelSizes.widest.width + padding : 0;\n const h = labelSizes ? labelSizes.highest.height + padding : 0;\n return this.isHorizontal()\n ? h * cos > w * sin ? w / cos : h / sin\n : h * sin < w * cos ? h / cos : w / sin;\n }\n _isVisible() {\n const display = this.options.display;\n if (display !== 'auto') {\n return !!display;\n }\n return this.getMatchingVisibleMetas().length > 0;\n }\n _computeGridLineItems(chartArea) {\n const axis = this.axis;\n const chart = this.chart;\n const options = this.options;\n const {grid, position} = options;\n const offset = grid.offset;\n const isHorizontal = this.isHorizontal();\n const ticks = this.ticks;\n const ticksLength = ticks.length + (offset ? 1 : 0);\n const tl = getTickMarkLength(grid);\n const items = [];\n const borderOpts = grid.setContext(this.getContext());\n const axisWidth = borderOpts.drawBorder ? borderOpts.borderWidth : 0;\n const axisHalfWidth = axisWidth / 2;\n const alignBorderValue = function(pixel) {\n return _alignPixel(chart, pixel, axisWidth);\n };\n let borderValue, i, lineValue, alignedLineValue;\n let tx1, ty1, tx2, ty2, x1, y1, x2, y2;\n if (position === 'top') {\n borderValue = alignBorderValue(this.bottom);\n ty1 = this.bottom - tl;\n ty2 = borderValue - axisHalfWidth;\n y1 = alignBorderValue(chartArea.top) + axisHalfWidth;\n y2 = chartArea.bottom;\n } else if (position === 'bottom') {\n borderValue = alignBorderValue(this.top);\n y1 = chartArea.top;\n y2 = alignBorderValue(chartArea.bottom) - axisHalfWidth;\n ty1 = borderValue + axisHalfWidth;\n ty2 = this.top + tl;\n } else if (position === 'left') {\n borderValue = alignBorderValue(this.right);\n tx1 = this.right - tl;\n tx2 = borderValue - axisHalfWidth;\n x1 = alignBorderValue(chartArea.left) + axisHalfWidth;\n x2 = chartArea.right;\n } else if (position === 'right') {\n borderValue = alignBorderValue(this.left);\n x1 = chartArea.left;\n x2 = alignBorderValue(chartArea.right) - axisHalfWidth;\n tx1 = borderValue + axisHalfWidth;\n tx2 = this.left + tl;\n } else if (axis === 'x') {\n if (position === 'center') {\n borderValue = alignBorderValue((chartArea.top + chartArea.bottom) / 2 + 0.5);\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n }\n y1 = chartArea.top;\n y2 = chartArea.bottom;\n ty1 = borderValue + axisHalfWidth;\n ty2 = ty1 + tl;\n } else if (axis === 'y') {\n if (position === 'center') {\n borderValue = alignBorderValue((chartArea.left + chartArea.right) / 2);\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n }\n tx1 = borderValue - axisHalfWidth;\n tx2 = tx1 - tl;\n x1 = chartArea.left;\n x2 = chartArea.right;\n }\n const limit = valueOrDefault(options.ticks.maxTicksLimit, ticksLength);\n const step = Math.max(1, Math.ceil(ticksLength / limit));\n for (i = 0; i < ticksLength; i += step) {\n const optsAtIndex = grid.setContext(this.getContext(i));\n const lineWidth = optsAtIndex.lineWidth;\n const lineColor = optsAtIndex.color;\n const borderDash = grid.borderDash || [];\n const borderDashOffset = optsAtIndex.borderDashOffset;\n const tickWidth = optsAtIndex.tickWidth;\n const tickColor = optsAtIndex.tickColor;\n const tickBorderDash = optsAtIndex.tickBorderDash || [];\n const tickBorderDashOffset = optsAtIndex.tickBorderDashOffset;\n lineValue = getPixelForGridLine(this, i, offset);\n if (lineValue === undefined) {\n continue;\n }\n alignedLineValue = _alignPixel(chart, lineValue, lineWidth);\n if (isHorizontal) {\n tx1 = tx2 = x1 = x2 = alignedLineValue;\n } else {\n ty1 = ty2 = y1 = y2 = alignedLineValue;\n }\n items.push({\n tx1,\n ty1,\n tx2,\n ty2,\n x1,\n y1,\n x2,\n y2,\n width: lineWidth,\n color: lineColor,\n borderDash,\n borderDashOffset,\n tickWidth,\n tickColor,\n tickBorderDash,\n tickBorderDashOffset,\n });\n }\n this._ticksLength = ticksLength;\n this._borderValue = borderValue;\n return items;\n }\n _computeLabelItems(chartArea) {\n const axis = this.axis;\n const options = this.options;\n const {position, ticks: optionTicks} = options;\n const isHorizontal = this.isHorizontal();\n const ticks = this.ticks;\n const {align, crossAlign, padding, mirror} = optionTicks;\n const tl = getTickMarkLength(options.grid);\n const tickAndPadding = tl + padding;\n const hTickAndPadding = mirror ? -padding : tickAndPadding;\n const rotation = -toRadians(this.labelRotation);\n const items = [];\n let i, ilen, tick, label, x, y, textAlign, pixel, font, lineHeight, lineCount, textOffset;\n let textBaseline = 'middle';\n if (position === 'top') {\n y = this.bottom - hTickAndPadding;\n textAlign = this._getXAxisLabelAlignment();\n } else if (position === 'bottom') {\n y = this.top + hTickAndPadding;\n textAlign = this._getXAxisLabelAlignment();\n } else if (position === 'left') {\n const ret = this._getYAxisLabelAlignment(tl);\n textAlign = ret.textAlign;\n x = ret.x;\n } else if (position === 'right') {\n const ret = this._getYAxisLabelAlignment(tl);\n textAlign = ret.textAlign;\n x = ret.x;\n } else if (axis === 'x') {\n if (position === 'center') {\n y = ((chartArea.top + chartArea.bottom) / 2) + tickAndPadding;\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n y = this.chart.scales[positionAxisID].getPixelForValue(value) + tickAndPadding;\n }\n textAlign = this._getXAxisLabelAlignment();\n } else if (axis === 'y') {\n if (position === 'center') {\n x = ((chartArea.left + chartArea.right) / 2) - tickAndPadding;\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n x = this.chart.scales[positionAxisID].getPixelForValue(value);\n }\n textAlign = this._getYAxisLabelAlignment(tl).textAlign;\n }\n if (axis === 'y') {\n if (align === 'start') {\n textBaseline = 'top';\n } else if (align === 'end') {\n textBaseline = 'bottom';\n }\n }\n const labelSizes = this._getLabelSizes();\n for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n tick = ticks[i];\n label = tick.label;\n const optsAtIndex = optionTicks.setContext(this.getContext(i));\n pixel = this.getPixelForTick(i) + optionTicks.labelOffset;\n font = this._resolveTickFontOptions(i);\n lineHeight = font.lineHeight;\n lineCount = isArray(label) ? label.length : 1;\n const halfCount = lineCount / 2;\n const color = optsAtIndex.color;\n const strokeColor = optsAtIndex.textStrokeColor;\n const strokeWidth = optsAtIndex.textStrokeWidth;\n if (isHorizontal) {\n x = pixel;\n if (position === 'top') {\n if (crossAlign === 'near' || rotation !== 0) {\n textOffset = -lineCount * lineHeight + lineHeight / 2;\n } else if (crossAlign === 'center') {\n textOffset = -labelSizes.highest.height / 2 - halfCount * lineHeight + lineHeight;\n } else {\n textOffset = -labelSizes.highest.height + lineHeight / 2;\n }\n } else {\n if (crossAlign === 'near' || rotation !== 0) {\n textOffset = lineHeight / 2;\n } else if (crossAlign === 'center') {\n textOffset = labelSizes.highest.height / 2 - halfCount * lineHeight;\n } else {\n textOffset = labelSizes.highest.height - lineCount * lineHeight;\n }\n }\n if (mirror) {\n textOffset *= -1;\n }\n } else {\n y = pixel;\n textOffset = (1 - lineCount) * lineHeight / 2;\n }\n let backdrop;\n if (optsAtIndex.showLabelBackdrop) {\n const labelPadding = toPadding(optsAtIndex.backdropPadding);\n const height = labelSizes.heights[i];\n const width = labelSizes.widths[i];\n let top = y + textOffset - labelPadding.top;\n let left = x - labelPadding.left;\n switch (textBaseline) {\n case 'middle':\n top -= height / 2;\n break;\n case 'bottom':\n top -= height;\n break;\n }\n switch (textAlign) {\n case 'center':\n left -= width / 2;\n break;\n case 'right':\n left -= width;\n break;\n }\n backdrop = {\n left,\n top,\n width: width + labelPadding.width,\n height: height + labelPadding.height,\n color: optsAtIndex.backdropColor,\n };\n }\n items.push({\n rotation,\n label,\n font,\n color,\n strokeColor,\n strokeWidth,\n textOffset,\n textAlign,\n textBaseline,\n translation: [x, y],\n backdrop,\n });\n }\n return items;\n }\n _getXAxisLabelAlignment() {\n const {position, ticks} = this.options;\n const rotation = -toRadians(this.labelRotation);\n if (rotation) {\n return position === 'top' ? 'left' : 'right';\n }\n let align = 'center';\n if (ticks.align === 'start') {\n align = 'left';\n } else if (ticks.align === 'end') {\n align = 'right';\n }\n return align;\n }\n _getYAxisLabelAlignment(tl) {\n const {position, ticks: {crossAlign, mirror, padding}} = this.options;\n const labelSizes = this._getLabelSizes();\n const tickAndPadding = tl + padding;\n const widest = labelSizes.widest.width;\n let textAlign;\n let x;\n if (position === 'left') {\n if (mirror) {\n x = this.right + padding;\n if (crossAlign === 'near') {\n textAlign = 'left';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x += (widest / 2);\n } else {\n textAlign = 'right';\n x += widest;\n }\n } else {\n x = this.right - tickAndPadding;\n if (crossAlign === 'near') {\n textAlign = 'right';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x -= (widest / 2);\n } else {\n textAlign = 'left';\n x = this.left;\n }\n }\n } else if (position === 'right') {\n if (mirror) {\n x = this.left + padding;\n if (crossAlign === 'near') {\n textAlign = 'right';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x -= (widest / 2);\n } else {\n textAlign = 'left';\n x -= widest;\n }\n } else {\n x = this.left + tickAndPadding;\n if (crossAlign === 'near') {\n textAlign = 'left';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x += widest / 2;\n } else {\n textAlign = 'right';\n x = this.right;\n }\n }\n } else {\n textAlign = 'right';\n }\n return {textAlign, x};\n }\n _computeLabelArea() {\n if (this.options.ticks.mirror) {\n return;\n }\n const chart = this.chart;\n const position = this.options.position;\n if (position === 'left' || position === 'right') {\n return {top: 0, left: this.left, bottom: chart.height, right: this.right};\n } if (position === 'top' || position === 'bottom') {\n return {top: this.top, left: 0, bottom: this.bottom, right: chart.width};\n }\n }\n drawBackground() {\n const {ctx, options: {backgroundColor}, left, top, width, height} = this;\n if (backgroundColor) {\n ctx.save();\n ctx.fillStyle = backgroundColor;\n ctx.fillRect(left, top, width, height);\n ctx.restore();\n }\n }\n getLineWidthForValue(value) {\n const grid = this.options.grid;\n if (!this._isVisible() || !grid.display) {\n return 0;\n }\n const ticks = this.ticks;\n const index = ticks.findIndex(t => t.value === value);\n if (index >= 0) {\n const opts = grid.setContext(this.getContext(index));\n return opts.lineWidth;\n }\n return 0;\n }\n drawGrid(chartArea) {\n const grid = this.options.grid;\n const ctx = this.ctx;\n const items = this._gridLineItems || (this._gridLineItems = this._computeGridLineItems(chartArea));\n let i, ilen;\n const drawLine = (p1, p2, style) => {\n if (!style.width || !style.color) {\n return;\n }\n ctx.save();\n ctx.lineWidth = style.width;\n ctx.strokeStyle = style.color;\n ctx.setLineDash(style.borderDash || []);\n ctx.lineDashOffset = style.borderDashOffset;\n ctx.beginPath();\n ctx.moveTo(p1.x, p1.y);\n ctx.lineTo(p2.x, p2.y);\n ctx.stroke();\n ctx.restore();\n };\n if (grid.display) {\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n const item = items[i];\n if (grid.drawOnChartArea) {\n drawLine(\n {x: item.x1, y: item.y1},\n {x: item.x2, y: item.y2},\n item\n );\n }\n if (grid.drawTicks) {\n drawLine(\n {x: item.tx1, y: item.ty1},\n {x: item.tx2, y: item.ty2},\n {\n color: item.tickColor,\n width: item.tickWidth,\n borderDash: item.tickBorderDash,\n borderDashOffset: item.tickBorderDashOffset\n }\n );\n }\n }\n }\n }\n drawBorder() {\n const {chart, ctx, options: {grid}} = this;\n const borderOpts = grid.setContext(this.getContext());\n const axisWidth = grid.drawBorder ? borderOpts.borderWidth : 0;\n if (!axisWidth) {\n return;\n }\n const lastLineWidth = grid.setContext(this.getContext(0)).lineWidth;\n const borderValue = this._borderValue;\n let x1, x2, y1, y2;\n if (this.isHorizontal()) {\n x1 = _alignPixel(chart, this.left, axisWidth) - axisWidth / 2;\n x2 = _alignPixel(chart, this.right, lastLineWidth) + lastLineWidth / 2;\n y1 = y2 = borderValue;\n } else {\n y1 = _alignPixel(chart, this.top, axisWidth) - axisWidth / 2;\n y2 = _alignPixel(chart, this.bottom, lastLineWidth) + lastLineWidth / 2;\n x1 = x2 = borderValue;\n }\n ctx.save();\n ctx.lineWidth = borderOpts.borderWidth;\n ctx.strokeStyle = borderOpts.borderColor;\n ctx.beginPath();\n ctx.moveTo(x1, y1);\n ctx.lineTo(x2, y2);\n ctx.stroke();\n ctx.restore();\n }\n drawLabels(chartArea) {\n const optionTicks = this.options.ticks;\n if (!optionTicks.display) {\n return;\n }\n const ctx = this.ctx;\n const area = this._computeLabelArea();\n if (area) {\n clipArea(ctx, area);\n }\n const items = this._labelItems || (this._labelItems = this._computeLabelItems(chartArea));\n let i, ilen;\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n const item = items[i];\n const tickFont = item.font;\n const label = item.label;\n if (item.backdrop) {\n ctx.fillStyle = item.backdrop.color;\n ctx.fillRect(item.backdrop.left, item.backdrop.top, item.backdrop.width, item.backdrop.height);\n }\n let y = item.textOffset;\n renderText(ctx, label, 0, y, tickFont, item);\n }\n if (area) {\n unclipArea(ctx);\n }\n }\n drawTitle() {\n const {ctx, options: {position, title, reverse}} = this;\n if (!title.display) {\n return;\n }\n const font = toFont(title.font);\n const padding = toPadding(title.padding);\n const align = title.align;\n let offset = font.lineHeight / 2;\n if (position === 'bottom' || position === 'center' || isObject(position)) {\n offset += padding.bottom;\n if (isArray(title.text)) {\n offset += font.lineHeight * (title.text.length - 1);\n }\n } else {\n offset += padding.top;\n }\n const {titleX, titleY, maxWidth, rotation} = titleArgs(this, offset, position, align);\n renderText(ctx, title.text, 0, 0, font, {\n color: title.color,\n maxWidth,\n rotation,\n textAlign: titleAlign(align, position, reverse),\n textBaseline: 'middle',\n translation: [titleX, titleY],\n });\n }\n draw(chartArea) {\n if (!this._isVisible()) {\n return;\n }\n this.drawBackground();\n this.drawGrid(chartArea);\n this.drawBorder();\n this.drawTitle();\n this.drawLabels(chartArea);\n }\n _layers() {\n const opts = this.options;\n const tz = opts.ticks && opts.ticks.z || 0;\n const gz = valueOrDefault(opts.grid && opts.grid.z, -1);\n if (!this._isVisible() || this.draw !== Scale.prototype.draw) {\n return [{\n z: tz,\n draw: (chartArea) => {\n this.draw(chartArea);\n }\n }];\n }\n return [{\n z: gz,\n draw: (chartArea) => {\n this.drawBackground();\n this.drawGrid(chartArea);\n this.drawTitle();\n }\n }, {\n z: gz + 1,\n draw: () => {\n this.drawBorder();\n }\n }, {\n z: tz,\n draw: (chartArea) => {\n this.drawLabels(chartArea);\n }\n }];\n }\n getMatchingVisibleMetas(type) {\n const metas = this.chart.getSortedVisibleDatasetMetas();\n const axisID = this.axis + 'AxisID';\n const result = [];\n let i, ilen;\n for (i = 0, ilen = metas.length; i < ilen; ++i) {\n const meta = metas[i];\n if (meta[axisID] === this.id && (!type || meta.type === type)) {\n result.push(meta);\n }\n }\n return result;\n }\n _resolveTickFontOptions(index) {\n const opts = this.options.ticks.setContext(this.getContext(index));\n return toFont(opts.font);\n }\n _maxDigits() {\n const fontSize = this._resolveTickFontOptions(0).lineHeight;\n return (this.isHorizontal() ? this.width : this.height) / fontSize;\n }\n}\n\nclass TypedRegistry {\n constructor(type, scope, override) {\n this.type = type;\n this.scope = scope;\n this.override = override;\n this.items = Object.create(null);\n }\n isForType(type) {\n return Object.prototype.isPrototypeOf.call(this.type.prototype, type.prototype);\n }\n register(item) {\n const proto = Object.getPrototypeOf(item);\n let parentScope;\n if (isIChartComponent(proto)) {\n parentScope = this.register(proto);\n }\n const items = this.items;\n const id = item.id;\n const scope = this.scope + '.' + id;\n if (!id) {\n throw new Error('class does not have id: ' + item);\n }\n if (id in items) {\n return scope;\n }\n items[id] = item;\n registerDefaults(item, scope, parentScope);\n if (this.override) {\n defaults.override(item.id, item.overrides);\n }\n return scope;\n }\n get(id) {\n return this.items[id];\n }\n unregister(item) {\n const items = this.items;\n const id = item.id;\n const scope = this.scope;\n if (id in items) {\n delete items[id];\n }\n if (scope && id in defaults[scope]) {\n delete defaults[scope][id];\n if (this.override) {\n delete overrides[id];\n }\n }\n }\n}\nfunction registerDefaults(item, scope, parentScope) {\n const itemDefaults = merge(Object.create(null), [\n parentScope ? defaults.get(parentScope) : {},\n defaults.get(scope),\n item.defaults\n ]);\n defaults.set(scope, itemDefaults);\n if (item.defaultRoutes) {\n routeDefaults(scope, item.defaultRoutes);\n }\n if (item.descriptors) {\n defaults.describe(scope, item.descriptors);\n }\n}\nfunction routeDefaults(scope, routes) {\n Object.keys(routes).forEach(property => {\n const propertyParts = property.split('.');\n const sourceName = propertyParts.pop();\n const sourceScope = [scope].concat(propertyParts).join('.');\n const parts = routes[property].split('.');\n const targetName = parts.pop();\n const targetScope = parts.join('.');\n defaults.route(sourceScope, sourceName, targetScope, targetName);\n });\n}\nfunction isIChartComponent(proto) {\n return 'id' in proto && 'defaults' in proto;\n}\n\nclass Registry {\n constructor() {\n this.controllers = new TypedRegistry(DatasetController, 'datasets', true);\n this.elements = new TypedRegistry(Element, 'elements');\n this.plugins = new TypedRegistry(Object, 'plugins');\n this.scales = new TypedRegistry(Scale, 'scales');\n this._typedRegistries = [this.controllers, this.scales, this.elements];\n }\n add(...args) {\n this._each('register', args);\n }\n remove(...args) {\n this._each('unregister', args);\n }\n addControllers(...args) {\n this._each('register', args, this.controllers);\n }\n addElements(...args) {\n this._each('register', args, this.elements);\n }\n addPlugins(...args) {\n this._each('register', args, this.plugins);\n }\n addScales(...args) {\n this._each('register', args, this.scales);\n }\n getController(id) {\n return this._get(id, this.controllers, 'controller');\n }\n getElement(id) {\n return this._get(id, this.elements, 'element');\n }\n getPlugin(id) {\n return this._get(id, this.plugins, 'plugin');\n }\n getScale(id) {\n return this._get(id, this.scales, 'scale');\n }\n removeControllers(...args) {\n this._each('unregister', args, this.controllers);\n }\n removeElements(...args) {\n this._each('unregister', args, this.elements);\n }\n removePlugins(...args) {\n this._each('unregister', args, this.plugins);\n }\n removeScales(...args) {\n this._each('unregister', args, this.scales);\n }\n _each(method, args, typedRegistry) {\n [...args].forEach(arg => {\n const reg = typedRegistry || this._getRegistryForType(arg);\n if (typedRegistry || reg.isForType(arg) || (reg === this.plugins && arg.id)) {\n this._exec(method, reg, arg);\n } else {\n each(arg, item => {\n const itemReg = typedRegistry || this._getRegistryForType(item);\n this._exec(method, itemReg, item);\n });\n }\n });\n }\n _exec(method, registry, component) {\n const camelMethod = _capitalize(method);\n callback(component['before' + camelMethod], [], component);\n registry[method](component);\n callback(component['after' + camelMethod], [], component);\n }\n _getRegistryForType(type) {\n for (let i = 0; i < this._typedRegistries.length; i++) {\n const reg = this._typedRegistries[i];\n if (reg.isForType(type)) {\n return reg;\n }\n }\n return this.plugins;\n }\n _get(id, typedRegistry, type) {\n const item = typedRegistry.get(id);\n if (item === undefined) {\n throw new Error('\"' + id + '\" is not a registered ' + type + '.');\n }\n return item;\n }\n}\nvar registry = new Registry();\n\nclass PluginService {\n constructor() {\n this._init = [];\n }\n notify(chart, hook, args, filter) {\n if (hook === 'beforeInit') {\n this._init = this._createDescriptors(chart, true);\n this._notify(this._init, chart, 'install');\n }\n const descriptors = filter ? this._descriptors(chart).filter(filter) : this._descriptors(chart);\n const result = this._notify(descriptors, chart, hook, args);\n if (hook === 'afterDestroy') {\n this._notify(descriptors, chart, 'stop');\n this._notify(this._init, chart, 'uninstall');\n }\n return result;\n }\n _notify(descriptors, chart, hook, args) {\n args = args || {};\n for (const descriptor of descriptors) {\n const plugin = descriptor.plugin;\n const method = plugin[hook];\n const params = [chart, args, descriptor.options];\n if (callback(method, params, plugin) === false && args.cancelable) {\n return false;\n }\n }\n return true;\n }\n invalidate() {\n if (!isNullOrUndef(this._cache)) {\n this._oldCache = this._cache;\n this._cache = undefined;\n }\n }\n _descriptors(chart) {\n if (this._cache) {\n return this._cache;\n }\n const descriptors = this._cache = this._createDescriptors(chart);\n this._notifyStateChanges(chart);\n return descriptors;\n }\n _createDescriptors(chart, all) {\n const config = chart && chart.config;\n const options = valueOrDefault(config.options && config.options.plugins, {});\n const plugins = allPlugins(config);\n return options === false && !all ? [] : createDescriptors(chart, plugins, options, all);\n }\n _notifyStateChanges(chart) {\n const previousDescriptors = this._oldCache || [];\n const descriptors = this._cache;\n const diff = (a, b) => a.filter(x => !b.some(y => x.plugin.id === y.plugin.id));\n this._notify(diff(previousDescriptors, descriptors), chart, 'stop');\n this._notify(diff(descriptors, previousDescriptors), chart, 'start');\n }\n}\nfunction allPlugins(config) {\n const plugins = [];\n const keys = Object.keys(registry.plugins.items);\n for (let i = 0; i < keys.length; i++) {\n plugins.push(registry.getPlugin(keys[i]));\n }\n const local = config.plugins || [];\n for (let i = 0; i < local.length; i++) {\n const plugin = local[i];\n if (plugins.indexOf(plugin) === -1) {\n plugins.push(plugin);\n }\n }\n return plugins;\n}\nfunction getOpts(options, all) {\n if (!all && options === false) {\n return null;\n }\n if (options === true) {\n return {};\n }\n return options;\n}\nfunction createDescriptors(chart, plugins, options, all) {\n const result = [];\n const context = chart.getContext();\n for (let i = 0; i < plugins.length; i++) {\n const plugin = plugins[i];\n const id = plugin.id;\n const opts = getOpts(options[id], all);\n if (opts === null) {\n continue;\n }\n result.push({\n plugin,\n options: pluginOpts(chart.config, plugin, opts, context)\n });\n }\n return result;\n}\nfunction pluginOpts(config, plugin, opts, context) {\n const keys = config.pluginScopeKeys(plugin);\n const scopes = config.getOptionScopes(opts, keys);\n return config.createResolver(scopes, context, [''], {scriptable: false, indexable: false, allKeys: true});\n}\n\nfunction getIndexAxis(type, options) {\n const datasetDefaults = defaults.datasets[type] || {};\n const datasetOptions = (options.datasets || {})[type] || {};\n return datasetOptions.indexAxis || options.indexAxis || datasetDefaults.indexAxis || 'x';\n}\nfunction getAxisFromDefaultScaleID(id, indexAxis) {\n let axis = id;\n if (id === '_index_') {\n axis = indexAxis;\n } else if (id === '_value_') {\n axis = indexAxis === 'x' ? 'y' : 'x';\n }\n return axis;\n}\nfunction getDefaultScaleIDFromAxis(axis, indexAxis) {\n return axis === indexAxis ? '_index_' : '_value_';\n}\nfunction axisFromPosition(position) {\n if (position === 'top' || position === 'bottom') {\n return 'x';\n }\n if (position === 'left' || position === 'right') {\n return 'y';\n }\n}\nfunction determineAxis(id, scaleOptions) {\n if (id === 'x' || id === 'y') {\n return id;\n }\n return scaleOptions.axis || axisFromPosition(scaleOptions.position) || id.charAt(0).toLowerCase();\n}\nfunction mergeScaleConfig(config, options) {\n const chartDefaults = overrides[config.type] || {scales: {}};\n const configScales = options.scales || {};\n const chartIndexAxis = getIndexAxis(config.type, options);\n const firstIDs = Object.create(null);\n const scales = Object.create(null);\n Object.keys(configScales).forEach(id => {\n const scaleConf = configScales[id];\n if (!isObject(scaleConf)) {\n return console.error(`Invalid scale configuration for scale: ${id}`);\n }\n if (scaleConf._proxy) {\n return console.warn(`Ignoring resolver passed as options for scale: ${id}`);\n }\n const axis = determineAxis(id, scaleConf);\n const defaultId = getDefaultScaleIDFromAxis(axis, chartIndexAxis);\n const defaultScaleOptions = chartDefaults.scales || {};\n firstIDs[axis] = firstIDs[axis] || id;\n scales[id] = mergeIf(Object.create(null), [{axis}, scaleConf, defaultScaleOptions[axis], defaultScaleOptions[defaultId]]);\n });\n config.data.datasets.forEach(dataset => {\n const type = dataset.type || config.type;\n const indexAxis = dataset.indexAxis || getIndexAxis(type, options);\n const datasetDefaults = overrides[type] || {};\n const defaultScaleOptions = datasetDefaults.scales || {};\n Object.keys(defaultScaleOptions).forEach(defaultID => {\n const axis = getAxisFromDefaultScaleID(defaultID, indexAxis);\n const id = dataset[axis + 'AxisID'] || firstIDs[axis] || axis;\n scales[id] = scales[id] || Object.create(null);\n mergeIf(scales[id], [{axis}, configScales[id], defaultScaleOptions[defaultID]]);\n });\n });\n Object.keys(scales).forEach(key => {\n const scale = scales[key];\n mergeIf(scale, [defaults.scales[scale.type], defaults.scale]);\n });\n return scales;\n}\nfunction initOptions(config) {\n const options = config.options || (config.options = {});\n options.plugins = valueOrDefault(options.plugins, {});\n options.scales = mergeScaleConfig(config, options);\n}\nfunction initData(data) {\n data = data || {};\n data.datasets = data.datasets || [];\n data.labels = data.labels || [];\n return data;\n}\nfunction initConfig(config) {\n config = config || {};\n config.data = initData(config.data);\n initOptions(config);\n return config;\n}\nconst keyCache = new Map();\nconst keysCached = new Set();\nfunction cachedKeys(cacheKey, generate) {\n let keys = keyCache.get(cacheKey);\n if (!keys) {\n keys = generate();\n keyCache.set(cacheKey, keys);\n keysCached.add(keys);\n }\n return keys;\n}\nconst addIfFound = (set, obj, key) => {\n const opts = resolveObjectKey(obj, key);\n if (opts !== undefined) {\n set.add(opts);\n }\n};\nclass Config {\n constructor(config) {\n this._config = initConfig(config);\n this._scopeCache = new Map();\n this._resolverCache = new Map();\n }\n get platform() {\n return this._config.platform;\n }\n get type() {\n return this._config.type;\n }\n set type(type) {\n this._config.type = type;\n }\n get data() {\n return this._config.data;\n }\n set data(data) {\n this._config.data = initData(data);\n }\n get options() {\n return this._config.options;\n }\n set options(options) {\n this._config.options = options;\n }\n get plugins() {\n return this._config.plugins;\n }\n update() {\n const config = this._config;\n this.clearCache();\n initOptions(config);\n }\n clearCache() {\n this._scopeCache.clear();\n this._resolverCache.clear();\n }\n datasetScopeKeys(datasetType) {\n return cachedKeys(datasetType,\n () => [[\n `datasets.${datasetType}`,\n ''\n ]]);\n }\n datasetAnimationScopeKeys(datasetType, transition) {\n return cachedKeys(`${datasetType}.transition.${transition}`,\n () => [\n [\n `datasets.${datasetType}.transitions.${transition}`,\n `transitions.${transition}`,\n ],\n [\n `datasets.${datasetType}`,\n ''\n ]\n ]);\n }\n datasetElementScopeKeys(datasetType, elementType) {\n return cachedKeys(`${datasetType}-${elementType}`,\n () => [[\n `datasets.${datasetType}.elements.${elementType}`,\n `datasets.${datasetType}`,\n `elements.${elementType}`,\n ''\n ]]);\n }\n pluginScopeKeys(plugin) {\n const id = plugin.id;\n const type = this.type;\n return cachedKeys(`${type}-plugin-${id}`,\n () => [[\n `plugins.${id}`,\n ...plugin.additionalOptionScopes || [],\n ]]);\n }\n _cachedScopes(mainScope, resetCache) {\n const _scopeCache = this._scopeCache;\n let cache = _scopeCache.get(mainScope);\n if (!cache || resetCache) {\n cache = new Map();\n _scopeCache.set(mainScope, cache);\n }\n return cache;\n }\n getOptionScopes(mainScope, keyLists, resetCache) {\n const {options, type} = this;\n const cache = this._cachedScopes(mainScope, resetCache);\n const cached = cache.get(keyLists);\n if (cached) {\n return cached;\n }\n const scopes = new Set();\n keyLists.forEach(keys => {\n if (mainScope) {\n scopes.add(mainScope);\n keys.forEach(key => addIfFound(scopes, mainScope, key));\n }\n keys.forEach(key => addIfFound(scopes, options, key));\n keys.forEach(key => addIfFound(scopes, overrides[type] || {}, key));\n keys.forEach(key => addIfFound(scopes, defaults, key));\n keys.forEach(key => addIfFound(scopes, descriptors, key));\n });\n const array = Array.from(scopes);\n if (array.length === 0) {\n array.push(Object.create(null));\n }\n if (keysCached.has(keyLists)) {\n cache.set(keyLists, array);\n }\n return array;\n }\n chartOptionScopes() {\n const {options, type} = this;\n return [\n options,\n overrides[type] || {},\n defaults.datasets[type] || {},\n {type},\n defaults,\n descriptors\n ];\n }\n resolveNamedOptions(scopes, names, context, prefixes = ['']) {\n const result = {$shared: true};\n const {resolver, subPrefixes} = getResolver(this._resolverCache, scopes, prefixes);\n let options = resolver;\n if (needContext(resolver, names)) {\n result.$shared = false;\n context = isFunction(context) ? context() : context;\n const subResolver = this.createResolver(scopes, context, subPrefixes);\n options = _attachContext(resolver, context, subResolver);\n }\n for (const prop of names) {\n result[prop] = options[prop];\n }\n return result;\n }\n createResolver(scopes, context, prefixes = [''], descriptorDefaults) {\n const {resolver} = getResolver(this._resolverCache, scopes, prefixes);\n return isObject(context)\n ? _attachContext(resolver, context, undefined, descriptorDefaults)\n : resolver;\n }\n}\nfunction getResolver(resolverCache, scopes, prefixes) {\n let cache = resolverCache.get(scopes);\n if (!cache) {\n cache = new Map();\n resolverCache.set(scopes, cache);\n }\n const cacheKey = prefixes.join();\n let cached = cache.get(cacheKey);\n if (!cached) {\n const resolver = _createResolver(scopes, prefixes);\n cached = {\n resolver,\n subPrefixes: prefixes.filter(p => !p.toLowerCase().includes('hover'))\n };\n cache.set(cacheKey, cached);\n }\n return cached;\n}\nconst hasFunction = value => isObject(value)\n && Object.getOwnPropertyNames(value).reduce((acc, key) => acc || isFunction(value[key]), false);\nfunction needContext(proxy, names) {\n const {isScriptable, isIndexable} = _descriptors(proxy);\n for (const prop of names) {\n const scriptable = isScriptable(prop);\n const indexable = isIndexable(prop);\n const value = (indexable || scriptable) && proxy[prop];\n if ((scriptable && (isFunction(value) || hasFunction(value)))\n || (indexable && isArray(value))) {\n return true;\n }\n }\n return false;\n}\n\nvar version = \"3.7.1\";\n\nconst KNOWN_POSITIONS = ['top', 'bottom', 'left', 'right', 'chartArea'];\nfunction positionIsHorizontal(position, axis) {\n return position === 'top' || position === 'bottom' || (KNOWN_POSITIONS.indexOf(position) === -1 && axis === 'x');\n}\nfunction compare2Level(l1, l2) {\n return function(a, b) {\n return a[l1] === b[l1]\n ? a[l2] - b[l2]\n : a[l1] - b[l1];\n };\n}\nfunction onAnimationsComplete(context) {\n const chart = context.chart;\n const animationOptions = chart.options.animation;\n chart.notifyPlugins('afterRender');\n callback(animationOptions && animationOptions.onComplete, [context], chart);\n}\nfunction onAnimationProgress(context) {\n const chart = context.chart;\n const animationOptions = chart.options.animation;\n callback(animationOptions && animationOptions.onProgress, [context], chart);\n}\nfunction getCanvas(item) {\n if (_isDomSupported() && typeof item === 'string') {\n item = document.getElementById(item);\n } else if (item && item.length) {\n item = item[0];\n }\n if (item && item.canvas) {\n item = item.canvas;\n }\n return item;\n}\nconst instances = {};\nconst getChart = (key) => {\n const canvas = getCanvas(key);\n return Object.values(instances).filter((c) => c.canvas === canvas).pop();\n};\nfunction moveNumericKeys(obj, start, move) {\n const keys = Object.keys(obj);\n for (const key of keys) {\n const intKey = +key;\n if (intKey >= start) {\n const value = obj[key];\n delete obj[key];\n if (move > 0 || intKey > start) {\n obj[intKey + move] = value;\n }\n }\n }\n}\nfunction determineLastEvent(e, lastEvent, inChartArea, isClick) {\n if (!inChartArea || e.type === 'mouseout') {\n return null;\n }\n if (isClick) {\n return lastEvent;\n }\n return e;\n}\nclass Chart {\n constructor(item, userConfig) {\n const config = this.config = new Config(userConfig);\n const initialCanvas = getCanvas(item);\n const existingChart = getChart(initialCanvas);\n if (existingChart) {\n throw new Error(\n 'Canvas is already in use. Chart with ID \\'' + existingChart.id + '\\'' +\n\t\t\t\t' must be destroyed before the canvas can be reused.'\n );\n }\n const options = config.createResolver(config.chartOptionScopes(), this.getContext());\n this.platform = new (config.platform || _detectPlatform(initialCanvas))();\n this.platform.updateConfig(config);\n const context = this.platform.acquireContext(initialCanvas, options.aspectRatio);\n const canvas = context && context.canvas;\n const height = canvas && canvas.height;\n const width = canvas && canvas.width;\n this.id = uid();\n this.ctx = context;\n this.canvas = canvas;\n this.width = width;\n this.height = height;\n this._options = options;\n this._aspectRatio = this.aspectRatio;\n this._layers = [];\n this._metasets = [];\n this._stacks = undefined;\n this.boxes = [];\n this.currentDevicePixelRatio = undefined;\n this.chartArea = undefined;\n this._active = [];\n this._lastEvent = undefined;\n this._listeners = {};\n this._responsiveListeners = undefined;\n this._sortedMetasets = [];\n this.scales = {};\n this._plugins = new PluginService();\n this.$proxies = {};\n this._hiddenIndices = {};\n this.attached = false;\n this._animationsDisabled = undefined;\n this.$context = undefined;\n this._doResize = debounce(mode => this.update(mode), options.resizeDelay || 0);\n this._dataChanges = [];\n instances[this.id] = this;\n if (!context || !canvas) {\n console.error(\"Failed to create chart: can't acquire context from the given item\");\n return;\n }\n animator.listen(this, 'complete', onAnimationsComplete);\n animator.listen(this, 'progress', onAnimationProgress);\n this._initialize();\n if (this.attached) {\n this.update();\n }\n }\n get aspectRatio() {\n const {options: {aspectRatio, maintainAspectRatio}, width, height, _aspectRatio} = this;\n if (!isNullOrUndef(aspectRatio)) {\n return aspectRatio;\n }\n if (maintainAspectRatio && _aspectRatio) {\n return _aspectRatio;\n }\n return height ? width / height : null;\n }\n get data() {\n return this.config.data;\n }\n set data(data) {\n this.config.data = data;\n }\n get options() {\n return this._options;\n }\n set options(options) {\n this.config.options = options;\n }\n _initialize() {\n this.notifyPlugins('beforeInit');\n if (this.options.responsive) {\n this.resize();\n } else {\n retinaScale(this, this.options.devicePixelRatio);\n }\n this.bindEvents();\n this.notifyPlugins('afterInit');\n return this;\n }\n clear() {\n clearCanvas(this.canvas, this.ctx);\n return this;\n }\n stop() {\n animator.stop(this);\n return this;\n }\n resize(width, height) {\n if (!animator.running(this)) {\n this._resize(width, height);\n } else {\n this._resizeBeforeDraw = {width, height};\n }\n }\n _resize(width, height) {\n const options = this.options;\n const canvas = this.canvas;\n const aspectRatio = options.maintainAspectRatio && this.aspectRatio;\n const newSize = this.platform.getMaximumSize(canvas, width, height, aspectRatio);\n const newRatio = options.devicePixelRatio || this.platform.getDevicePixelRatio();\n const mode = this.width ? 'resize' : 'attach';\n this.width = newSize.width;\n this.height = newSize.height;\n this._aspectRatio = this.aspectRatio;\n if (!retinaScale(this, newRatio, true)) {\n return;\n }\n this.notifyPlugins('resize', {size: newSize});\n callback(options.onResize, [this, newSize], this);\n if (this.attached) {\n if (this._doResize(mode)) {\n this.render();\n }\n }\n }\n ensureScalesHaveIDs() {\n const options = this.options;\n const scalesOptions = options.scales || {};\n each(scalesOptions, (axisOptions, axisID) => {\n axisOptions.id = axisID;\n });\n }\n buildOrUpdateScales() {\n const options = this.options;\n const scaleOpts = options.scales;\n const scales = this.scales;\n const updated = Object.keys(scales).reduce((obj, id) => {\n obj[id] = false;\n return obj;\n }, {});\n let items = [];\n if (scaleOpts) {\n items = items.concat(\n Object.keys(scaleOpts).map((id) => {\n const scaleOptions = scaleOpts[id];\n const axis = determineAxis(id, scaleOptions);\n const isRadial = axis === 'r';\n const isHorizontal = axis === 'x';\n return {\n options: scaleOptions,\n dposition: isRadial ? 'chartArea' : isHorizontal ? 'bottom' : 'left',\n dtype: isRadial ? 'radialLinear' : isHorizontal ? 'category' : 'linear'\n };\n })\n );\n }\n each(items, (item) => {\n const scaleOptions = item.options;\n const id = scaleOptions.id;\n const axis = determineAxis(id, scaleOptions);\n const scaleType = valueOrDefault(scaleOptions.type, item.dtype);\n if (scaleOptions.position === undefined || positionIsHorizontal(scaleOptions.position, axis) !== positionIsHorizontal(item.dposition)) {\n scaleOptions.position = item.dposition;\n }\n updated[id] = true;\n let scale = null;\n if (id in scales && scales[id].type === scaleType) {\n scale = scales[id];\n } else {\n const scaleClass = registry.getScale(scaleType);\n scale = new scaleClass({\n id,\n type: scaleType,\n ctx: this.ctx,\n chart: this\n });\n scales[scale.id] = scale;\n }\n scale.init(scaleOptions, options);\n });\n each(updated, (hasUpdated, id) => {\n if (!hasUpdated) {\n delete scales[id];\n }\n });\n each(scales, (scale) => {\n layouts.configure(this, scale, scale.options);\n layouts.addBox(this, scale);\n });\n }\n _updateMetasets() {\n const metasets = this._metasets;\n const numData = this.data.datasets.length;\n const numMeta = metasets.length;\n metasets.sort((a, b) => a.index - b.index);\n if (numMeta > numData) {\n for (let i = numData; i < numMeta; ++i) {\n this._destroyDatasetMeta(i);\n }\n metasets.splice(numData, numMeta - numData);\n }\n this._sortedMetasets = metasets.slice(0).sort(compare2Level('order', 'index'));\n }\n _removeUnreferencedMetasets() {\n const {_metasets: metasets, data: {datasets}} = this;\n if (metasets.length > datasets.length) {\n delete this._stacks;\n }\n metasets.forEach((meta, index) => {\n if (datasets.filter(x => x === meta._dataset).length === 0) {\n this._destroyDatasetMeta(index);\n }\n });\n }\n buildOrUpdateControllers() {\n const newControllers = [];\n const datasets = this.data.datasets;\n let i, ilen;\n this._removeUnreferencedMetasets();\n for (i = 0, ilen = datasets.length; i < ilen; i++) {\n const dataset = datasets[i];\n let meta = this.getDatasetMeta(i);\n const type = dataset.type || this.config.type;\n if (meta.type && meta.type !== type) {\n this._destroyDatasetMeta(i);\n meta = this.getDatasetMeta(i);\n }\n meta.type = type;\n meta.indexAxis = dataset.indexAxis || getIndexAxis(type, this.options);\n meta.order = dataset.order || 0;\n meta.index = i;\n meta.label = '' + dataset.label;\n meta.visible = this.isDatasetVisible(i);\n if (meta.controller) {\n meta.controller.updateIndex(i);\n meta.controller.linkScales();\n } else {\n const ControllerClass = registry.getController(type);\n const {datasetElementType, dataElementType} = defaults.datasets[type];\n Object.assign(ControllerClass.prototype, {\n dataElementType: registry.getElement(dataElementType),\n datasetElementType: datasetElementType && registry.getElement(datasetElementType)\n });\n meta.controller = new ControllerClass(this, i);\n newControllers.push(meta.controller);\n }\n }\n this._updateMetasets();\n return newControllers;\n }\n _resetElements() {\n each(this.data.datasets, (dataset, datasetIndex) => {\n this.getDatasetMeta(datasetIndex).controller.reset();\n }, this);\n }\n reset() {\n this._resetElements();\n this.notifyPlugins('reset');\n }\n update(mode) {\n const config = this.config;\n config.update();\n const options = this._options = config.createResolver(config.chartOptionScopes(), this.getContext());\n const animsDisabled = this._animationsDisabled = !options.animation;\n this._updateScales();\n this._checkEventBindings();\n this._updateHiddenIndices();\n this._plugins.invalidate();\n if (this.notifyPlugins('beforeUpdate', {mode, cancelable: true}) === false) {\n return;\n }\n const newControllers = this.buildOrUpdateControllers();\n this.notifyPlugins('beforeElementsUpdate');\n let minPadding = 0;\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; i++) {\n const {controller} = this.getDatasetMeta(i);\n const reset = !animsDisabled && newControllers.indexOf(controller) === -1;\n controller.buildOrUpdateElements(reset);\n minPadding = Math.max(+controller.getMaxOverflow(), minPadding);\n }\n minPadding = this._minPadding = options.layout.autoPadding ? minPadding : 0;\n this._updateLayout(minPadding);\n if (!animsDisabled) {\n each(newControllers, (controller) => {\n controller.reset();\n });\n }\n this._updateDatasets(mode);\n this.notifyPlugins('afterUpdate', {mode});\n this._layers.sort(compare2Level('z', '_idx'));\n const {_active, _lastEvent} = this;\n if (_lastEvent) {\n this._eventHandler(_lastEvent, true);\n } else if (_active.length) {\n this._updateHoverStyles(_active, _active, true);\n }\n this.render();\n }\n _updateScales() {\n each(this.scales, (scale) => {\n layouts.removeBox(this, scale);\n });\n this.ensureScalesHaveIDs();\n this.buildOrUpdateScales();\n }\n _checkEventBindings() {\n const options = this.options;\n const existingEvents = new Set(Object.keys(this._listeners));\n const newEvents = new Set(options.events);\n if (!setsEqual(existingEvents, newEvents) || !!this._responsiveListeners !== options.responsive) {\n this.unbindEvents();\n this.bindEvents();\n }\n }\n _updateHiddenIndices() {\n const {_hiddenIndices} = this;\n const changes = this._getUniformDataChanges() || [];\n for (const {method, start, count} of changes) {\n const move = method === '_removeElements' ? -count : count;\n moveNumericKeys(_hiddenIndices, start, move);\n }\n }\n _getUniformDataChanges() {\n const _dataChanges = this._dataChanges;\n if (!_dataChanges || !_dataChanges.length) {\n return;\n }\n this._dataChanges = [];\n const datasetCount = this.data.datasets.length;\n const makeSet = (idx) => new Set(\n _dataChanges\n .filter(c => c[0] === idx)\n .map((c, i) => i + ',' + c.splice(1).join(','))\n );\n const changeSet = makeSet(0);\n for (let i = 1; i < datasetCount; i++) {\n if (!setsEqual(changeSet, makeSet(i))) {\n return;\n }\n }\n return Array.from(changeSet)\n .map(c => c.split(','))\n .map(a => ({method: a[1], start: +a[2], count: +a[3]}));\n }\n _updateLayout(minPadding) {\n if (this.notifyPlugins('beforeLayout', {cancelable: true}) === false) {\n return;\n }\n layouts.update(this, this.width, this.height, minPadding);\n const area = this.chartArea;\n const noArea = area.width <= 0 || area.height <= 0;\n this._layers = [];\n each(this.boxes, (box) => {\n if (noArea && box.position === 'chartArea') {\n return;\n }\n if (box.configure) {\n box.configure();\n }\n this._layers.push(...box._layers());\n }, this);\n this._layers.forEach((item, index) => {\n item._idx = index;\n });\n this.notifyPlugins('afterLayout');\n }\n _updateDatasets(mode) {\n if (this.notifyPlugins('beforeDatasetsUpdate', {mode, cancelable: true}) === false) {\n return;\n }\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this.getDatasetMeta(i).controller.configure();\n }\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this._updateDataset(i, isFunction(mode) ? mode({datasetIndex: i}) : mode);\n }\n this.notifyPlugins('afterDatasetsUpdate', {mode});\n }\n _updateDataset(index, mode) {\n const meta = this.getDatasetMeta(index);\n const args = {meta, index, mode, cancelable: true};\n if (this.notifyPlugins('beforeDatasetUpdate', args) === false) {\n return;\n }\n meta.controller._update(mode);\n args.cancelable = false;\n this.notifyPlugins('afterDatasetUpdate', args);\n }\n render() {\n if (this.notifyPlugins('beforeRender', {cancelable: true}) === false) {\n return;\n }\n if (animator.has(this)) {\n if (this.attached && !animator.running(this)) {\n animator.start(this);\n }\n } else {\n this.draw();\n onAnimationsComplete({chart: this});\n }\n }\n draw() {\n let i;\n if (this._resizeBeforeDraw) {\n const {width, height} = this._resizeBeforeDraw;\n this._resize(width, height);\n this._resizeBeforeDraw = null;\n }\n this.clear();\n if (this.width <= 0 || this.height <= 0) {\n return;\n }\n if (this.notifyPlugins('beforeDraw', {cancelable: true}) === false) {\n return;\n }\n const layers = this._layers;\n for (i = 0; i < layers.length && layers[i].z <= 0; ++i) {\n layers[i].draw(this.chartArea);\n }\n this._drawDatasets();\n for (; i < layers.length; ++i) {\n layers[i].draw(this.chartArea);\n }\n this.notifyPlugins('afterDraw');\n }\n _getSortedDatasetMetas(filterVisible) {\n const metasets = this._sortedMetasets;\n const result = [];\n let i, ilen;\n for (i = 0, ilen = metasets.length; i < ilen; ++i) {\n const meta = metasets[i];\n if (!filterVisible || meta.visible) {\n result.push(meta);\n }\n }\n return result;\n }\n getSortedVisibleDatasetMetas() {\n return this._getSortedDatasetMetas(true);\n }\n _drawDatasets() {\n if (this.notifyPlugins('beforeDatasetsDraw', {cancelable: true}) === false) {\n return;\n }\n const metasets = this.getSortedVisibleDatasetMetas();\n for (let i = metasets.length - 1; i >= 0; --i) {\n this._drawDataset(metasets[i]);\n }\n this.notifyPlugins('afterDatasetsDraw');\n }\n _drawDataset(meta) {\n const ctx = this.ctx;\n const clip = meta._clip;\n const useClip = !clip.disabled;\n const area = this.chartArea;\n const args = {\n meta,\n index: meta.index,\n cancelable: true\n };\n if (this.notifyPlugins('beforeDatasetDraw', args) === false) {\n return;\n }\n if (useClip) {\n clipArea(ctx, {\n left: clip.left === false ? 0 : area.left - clip.left,\n right: clip.right === false ? this.width : area.right + clip.right,\n top: clip.top === false ? 0 : area.top - clip.top,\n bottom: clip.bottom === false ? this.height : area.bottom + clip.bottom\n });\n }\n meta.controller.draw();\n if (useClip) {\n unclipArea(ctx);\n }\n args.cancelable = false;\n this.notifyPlugins('afterDatasetDraw', args);\n }\n getElementsAtEventForMode(e, mode, options, useFinalPosition) {\n const method = Interaction.modes[mode];\n if (typeof method === 'function') {\n return method(this, e, options, useFinalPosition);\n }\n return [];\n }\n getDatasetMeta(datasetIndex) {\n const dataset = this.data.datasets[datasetIndex];\n const metasets = this._metasets;\n let meta = metasets.filter(x => x && x._dataset === dataset).pop();\n if (!meta) {\n meta = {\n type: null,\n data: [],\n dataset: null,\n controller: null,\n hidden: null,\n xAxisID: null,\n yAxisID: null,\n order: dataset && dataset.order || 0,\n index: datasetIndex,\n _dataset: dataset,\n _parsed: [],\n _sorted: false\n };\n metasets.push(meta);\n }\n return meta;\n }\n getContext() {\n return this.$context || (this.$context = createContext(null, {chart: this, type: 'chart'}));\n }\n getVisibleDatasetCount() {\n return this.getSortedVisibleDatasetMetas().length;\n }\n isDatasetVisible(datasetIndex) {\n const dataset = this.data.datasets[datasetIndex];\n if (!dataset) {\n return false;\n }\n const meta = this.getDatasetMeta(datasetIndex);\n return typeof meta.hidden === 'boolean' ? !meta.hidden : !dataset.hidden;\n }\n setDatasetVisibility(datasetIndex, visible) {\n const meta = this.getDatasetMeta(datasetIndex);\n meta.hidden = !visible;\n }\n toggleDataVisibility(index) {\n this._hiddenIndices[index] = !this._hiddenIndices[index];\n }\n getDataVisibility(index) {\n return !this._hiddenIndices[index];\n }\n _updateVisibility(datasetIndex, dataIndex, visible) {\n const mode = visible ? 'show' : 'hide';\n const meta = this.getDatasetMeta(datasetIndex);\n const anims = meta.controller._resolveAnimations(undefined, mode);\n if (defined(dataIndex)) {\n meta.data[dataIndex].hidden = !visible;\n this.update();\n } else {\n this.setDatasetVisibility(datasetIndex, visible);\n anims.update(meta, {visible});\n this.update((ctx) => ctx.datasetIndex === datasetIndex ? mode : undefined);\n }\n }\n hide(datasetIndex, dataIndex) {\n this._updateVisibility(datasetIndex, dataIndex, false);\n }\n show(datasetIndex, dataIndex) {\n this._updateVisibility(datasetIndex, dataIndex, true);\n }\n _destroyDatasetMeta(datasetIndex) {\n const meta = this._metasets[datasetIndex];\n if (meta && meta.controller) {\n meta.controller._destroy();\n }\n delete this._metasets[datasetIndex];\n }\n _stop() {\n let i, ilen;\n this.stop();\n animator.remove(this);\n for (i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this._destroyDatasetMeta(i);\n }\n }\n destroy() {\n this.notifyPlugins('beforeDestroy');\n const {canvas, ctx} = this;\n this._stop();\n this.config.clearCache();\n if (canvas) {\n this.unbindEvents();\n clearCanvas(canvas, ctx);\n this.platform.releaseContext(ctx);\n this.canvas = null;\n this.ctx = null;\n }\n this.notifyPlugins('destroy');\n delete instances[this.id];\n this.notifyPlugins('afterDestroy');\n }\n toBase64Image(...args) {\n return this.canvas.toDataURL(...args);\n }\n bindEvents() {\n this.bindUserEvents();\n if (this.options.responsive) {\n this.bindResponsiveEvents();\n } else {\n this.attached = true;\n }\n }\n bindUserEvents() {\n const listeners = this._listeners;\n const platform = this.platform;\n const _add = (type, listener) => {\n platform.addEventListener(this, type, listener);\n listeners[type] = listener;\n };\n const listener = (e, x, y) => {\n e.offsetX = x;\n e.offsetY = y;\n this._eventHandler(e);\n };\n each(this.options.events, (type) => _add(type, listener));\n }\n bindResponsiveEvents() {\n if (!this._responsiveListeners) {\n this._responsiveListeners = {};\n }\n const listeners = this._responsiveListeners;\n const platform = this.platform;\n const _add = (type, listener) => {\n platform.addEventListener(this, type, listener);\n listeners[type] = listener;\n };\n const _remove = (type, listener) => {\n if (listeners[type]) {\n platform.removeEventListener(this, type, listener);\n delete listeners[type];\n }\n };\n const listener = (width, height) => {\n if (this.canvas) {\n this.resize(width, height);\n }\n };\n let detached;\n const attached = () => {\n _remove('attach', attached);\n this.attached = true;\n this.resize();\n _add('resize', listener);\n _add('detach', detached);\n };\n detached = () => {\n this.attached = false;\n _remove('resize', listener);\n this._stop();\n this._resize(0, 0);\n _add('attach', attached);\n };\n if (platform.isAttached(this.canvas)) {\n attached();\n } else {\n detached();\n }\n }\n unbindEvents() {\n each(this._listeners, (listener, type) => {\n this.platform.removeEventListener(this, type, listener);\n });\n this._listeners = {};\n each(this._responsiveListeners, (listener, type) => {\n this.platform.removeEventListener(this, type, listener);\n });\n this._responsiveListeners = undefined;\n }\n updateHoverStyle(items, mode, enabled) {\n const prefix = enabled ? 'set' : 'remove';\n let meta, item, i, ilen;\n if (mode === 'dataset') {\n meta = this.getDatasetMeta(items[0].datasetIndex);\n meta.controller['_' + prefix + 'DatasetHoverStyle']();\n }\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n item = items[i];\n const controller = item && this.getDatasetMeta(item.datasetIndex).controller;\n if (controller) {\n controller[prefix + 'HoverStyle'](item.element, item.datasetIndex, item.index);\n }\n }\n }\n getActiveElements() {\n return this._active || [];\n }\n setActiveElements(activeElements) {\n const lastActive = this._active || [];\n const active = activeElements.map(({datasetIndex, index}) => {\n const meta = this.getDatasetMeta(datasetIndex);\n if (!meta) {\n throw new Error('No dataset found at index ' + datasetIndex);\n }\n return {\n datasetIndex,\n element: meta.data[index],\n index,\n };\n });\n const changed = !_elementsEqual(active, lastActive);\n if (changed) {\n this._active = active;\n this._lastEvent = null;\n this._updateHoverStyles(active, lastActive);\n }\n }\n notifyPlugins(hook, args, filter) {\n return this._plugins.notify(this, hook, args, filter);\n }\n _updateHoverStyles(active, lastActive, replay) {\n const hoverOptions = this.options.hover;\n const diff = (a, b) => a.filter(x => !b.some(y => x.datasetIndex === y.datasetIndex && x.index === y.index));\n const deactivated = diff(lastActive, active);\n const activated = replay ? active : diff(active, lastActive);\n if (deactivated.length) {\n this.updateHoverStyle(deactivated, hoverOptions.mode, false);\n }\n if (activated.length && hoverOptions.mode) {\n this.updateHoverStyle(activated, hoverOptions.mode, true);\n }\n }\n _eventHandler(e, replay) {\n const args = {\n event: e,\n replay,\n cancelable: true,\n inChartArea: _isPointInArea(e, this.chartArea, this._minPadding)\n };\n const eventFilter = (plugin) => (plugin.options.events || this.options.events).includes(e.native.type);\n if (this.notifyPlugins('beforeEvent', args, eventFilter) === false) {\n return;\n }\n const changed = this._handleEvent(e, replay, args.inChartArea);\n args.cancelable = false;\n this.notifyPlugins('afterEvent', args, eventFilter);\n if (changed || args.changed) {\n this.render();\n }\n return this;\n }\n _handleEvent(e, replay, inChartArea) {\n const {_active: lastActive = [], options} = this;\n const useFinalPosition = replay;\n const active = this._getActiveElements(e, lastActive, inChartArea, useFinalPosition);\n const isClick = _isClickEvent(e);\n const lastEvent = determineLastEvent(e, this._lastEvent, inChartArea, isClick);\n if (inChartArea) {\n this._lastEvent = null;\n callback(options.onHover, [e, active, this], this);\n if (isClick) {\n callback(options.onClick, [e, active, this], this);\n }\n }\n const changed = !_elementsEqual(active, lastActive);\n if (changed || replay) {\n this._active = active;\n this._updateHoverStyles(active, lastActive, replay);\n }\n this._lastEvent = lastEvent;\n return changed;\n }\n _getActiveElements(e, lastActive, inChartArea, useFinalPosition) {\n if (e.type === 'mouseout') {\n return [];\n }\n if (!inChartArea) {\n return lastActive;\n }\n const hoverOptions = this.options.hover;\n return this.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions, useFinalPosition);\n }\n}\nconst invalidatePlugins = () => each(Chart.instances, (chart) => chart._plugins.invalidate());\nconst enumerable = true;\nObject.defineProperties(Chart, {\n defaults: {\n enumerable,\n value: defaults\n },\n instances: {\n enumerable,\n value: instances\n },\n overrides: {\n enumerable,\n value: overrides\n },\n registry: {\n enumerable,\n value: registry\n },\n version: {\n enumerable,\n value: version\n },\n getChart: {\n enumerable,\n value: getChart\n },\n register: {\n enumerable,\n value: (...items) => {\n registry.add(...items);\n invalidatePlugins();\n }\n },\n unregister: {\n enumerable,\n value: (...items) => {\n registry.remove(...items);\n invalidatePlugins();\n }\n }\n});\n\nfunction clipArc(ctx, element, endAngle) {\n const {startAngle, pixelMargin, x, y, outerRadius, innerRadius} = element;\n let angleMargin = pixelMargin / outerRadius;\n ctx.beginPath();\n ctx.arc(x, y, outerRadius, startAngle - angleMargin, endAngle + angleMargin);\n if (innerRadius > pixelMargin) {\n angleMargin = pixelMargin / innerRadius;\n ctx.arc(x, y, innerRadius, endAngle + angleMargin, startAngle - angleMargin, true);\n } else {\n ctx.arc(x, y, pixelMargin, endAngle + HALF_PI, startAngle - HALF_PI);\n }\n ctx.closePath();\n ctx.clip();\n}\nfunction toRadiusCorners(value) {\n return _readValueToProps(value, ['outerStart', 'outerEnd', 'innerStart', 'innerEnd']);\n}\nfunction parseBorderRadius$1(arc, innerRadius, outerRadius, angleDelta) {\n const o = toRadiusCorners(arc.options.borderRadius);\n const halfThickness = (outerRadius - innerRadius) / 2;\n const innerLimit = Math.min(halfThickness, angleDelta * innerRadius / 2);\n const computeOuterLimit = (val) => {\n const outerArcLimit = (outerRadius - Math.min(halfThickness, val)) * angleDelta / 2;\n return _limitValue(val, 0, Math.min(halfThickness, outerArcLimit));\n };\n return {\n outerStart: computeOuterLimit(o.outerStart),\n outerEnd: computeOuterLimit(o.outerEnd),\n innerStart: _limitValue(o.innerStart, 0, innerLimit),\n innerEnd: _limitValue(o.innerEnd, 0, innerLimit),\n };\n}\nfunction rThetaToXY(r, theta, x, y) {\n return {\n x: x + r * Math.cos(theta),\n y: y + r * Math.sin(theta),\n };\n}\nfunction pathArc(ctx, element, offset, spacing, end) {\n const {x, y, startAngle: start, pixelMargin, innerRadius: innerR} = element;\n const outerRadius = Math.max(element.outerRadius + spacing + offset - pixelMargin, 0);\n const innerRadius = innerR > 0 ? innerR + spacing + offset + pixelMargin : 0;\n let spacingOffset = 0;\n const alpha = end - start;\n if (spacing) {\n const noSpacingInnerRadius = innerR > 0 ? innerR - spacing : 0;\n const noSpacingOuterRadius = outerRadius > 0 ? outerRadius - spacing : 0;\n const avNogSpacingRadius = (noSpacingInnerRadius + noSpacingOuterRadius) / 2;\n const adjustedAngle = avNogSpacingRadius !== 0 ? (alpha * avNogSpacingRadius) / (avNogSpacingRadius + spacing) : alpha;\n spacingOffset = (alpha - adjustedAngle) / 2;\n }\n const beta = Math.max(0.001, alpha * outerRadius - offset / PI) / outerRadius;\n const angleOffset = (alpha - beta) / 2;\n const startAngle = start + angleOffset + spacingOffset;\n const endAngle = end - angleOffset - spacingOffset;\n const {outerStart, outerEnd, innerStart, innerEnd} = parseBorderRadius$1(element, innerRadius, outerRadius, endAngle - startAngle);\n const outerStartAdjustedRadius = outerRadius - outerStart;\n const outerEndAdjustedRadius = outerRadius - outerEnd;\n const outerStartAdjustedAngle = startAngle + outerStart / outerStartAdjustedRadius;\n const outerEndAdjustedAngle = endAngle - outerEnd / outerEndAdjustedRadius;\n const innerStartAdjustedRadius = innerRadius + innerStart;\n const innerEndAdjustedRadius = innerRadius + innerEnd;\n const innerStartAdjustedAngle = startAngle + innerStart / innerStartAdjustedRadius;\n const innerEndAdjustedAngle = endAngle - innerEnd / innerEndAdjustedRadius;\n ctx.beginPath();\n ctx.arc(x, y, outerRadius, outerStartAdjustedAngle, outerEndAdjustedAngle);\n if (outerEnd > 0) {\n const pCenter = rThetaToXY(outerEndAdjustedRadius, outerEndAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, outerEnd, outerEndAdjustedAngle, endAngle + HALF_PI);\n }\n const p4 = rThetaToXY(innerEndAdjustedRadius, endAngle, x, y);\n ctx.lineTo(p4.x, p4.y);\n if (innerEnd > 0) {\n const pCenter = rThetaToXY(innerEndAdjustedRadius, innerEndAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, innerEnd, endAngle + HALF_PI, innerEndAdjustedAngle + Math.PI);\n }\n ctx.arc(x, y, innerRadius, endAngle - (innerEnd / innerRadius), startAngle + (innerStart / innerRadius), true);\n if (innerStart > 0) {\n const pCenter = rThetaToXY(innerStartAdjustedRadius, innerStartAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, innerStart, innerStartAdjustedAngle + Math.PI, startAngle - HALF_PI);\n }\n const p8 = rThetaToXY(outerStartAdjustedRadius, startAngle, x, y);\n ctx.lineTo(p8.x, p8.y);\n if (outerStart > 0) {\n const pCenter = rThetaToXY(outerStartAdjustedRadius, outerStartAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, outerStart, startAngle - HALF_PI, outerStartAdjustedAngle);\n }\n ctx.closePath();\n}\nfunction drawArc(ctx, element, offset, spacing) {\n const {fullCircles, startAngle, circumference} = element;\n let endAngle = element.endAngle;\n if (fullCircles) {\n pathArc(ctx, element, offset, spacing, startAngle + TAU);\n for (let i = 0; i < fullCircles; ++i) {\n ctx.fill();\n }\n if (!isNaN(circumference)) {\n endAngle = startAngle + circumference % TAU;\n if (circumference % TAU === 0) {\n endAngle += TAU;\n }\n }\n }\n pathArc(ctx, element, offset, spacing, endAngle);\n ctx.fill();\n return endAngle;\n}\nfunction drawFullCircleBorders(ctx, element, inner) {\n const {x, y, startAngle, pixelMargin, fullCircles} = element;\n const outerRadius = Math.max(element.outerRadius - pixelMargin, 0);\n const innerRadius = element.innerRadius + pixelMargin;\n let i;\n if (inner) {\n clipArc(ctx, element, startAngle + TAU);\n }\n ctx.beginPath();\n ctx.arc(x, y, innerRadius, startAngle + TAU, startAngle, true);\n for (i = 0; i < fullCircles; ++i) {\n ctx.stroke();\n }\n ctx.beginPath();\n ctx.arc(x, y, outerRadius, startAngle, startAngle + TAU);\n for (i = 0; i < fullCircles; ++i) {\n ctx.stroke();\n }\n}\nfunction drawBorder(ctx, element, offset, spacing, endAngle) {\n const {options} = element;\n const {borderWidth, borderJoinStyle} = options;\n const inner = options.borderAlign === 'inner';\n if (!borderWidth) {\n return;\n }\n if (inner) {\n ctx.lineWidth = borderWidth * 2;\n ctx.lineJoin = borderJoinStyle || 'round';\n } else {\n ctx.lineWidth = borderWidth;\n ctx.lineJoin = borderJoinStyle || 'bevel';\n }\n if (element.fullCircles) {\n drawFullCircleBorders(ctx, element, inner);\n }\n if (inner) {\n clipArc(ctx, element, endAngle);\n }\n pathArc(ctx, element, offset, spacing, endAngle);\n ctx.stroke();\n}\nclass ArcElement extends Element {\n constructor(cfg) {\n super();\n this.options = undefined;\n this.circumference = undefined;\n this.startAngle = undefined;\n this.endAngle = undefined;\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n this.pixelMargin = 0;\n this.fullCircles = 0;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n inRange(chartX, chartY, useFinalPosition) {\n const point = this.getProps(['x', 'y'], useFinalPosition);\n const {angle, distance} = getAngleFromPoint(point, {x: chartX, y: chartY});\n const {startAngle, endAngle, innerRadius, outerRadius, circumference} = this.getProps([\n 'startAngle',\n 'endAngle',\n 'innerRadius',\n 'outerRadius',\n 'circumference'\n ], useFinalPosition);\n const rAdjust = this.options.spacing / 2;\n const _circumference = valueOrDefault(circumference, endAngle - startAngle);\n const betweenAngles = _circumference >= TAU || _angleBetween(angle, startAngle, endAngle);\n const withinRadius = _isBetween(distance, innerRadius + rAdjust, outerRadius + rAdjust);\n return (betweenAngles && withinRadius);\n }\n getCenterPoint(useFinalPosition) {\n const {x, y, startAngle, endAngle, innerRadius, outerRadius} = this.getProps([\n 'x',\n 'y',\n 'startAngle',\n 'endAngle',\n 'innerRadius',\n 'outerRadius',\n 'circumference',\n ], useFinalPosition);\n const {offset, spacing} = this.options;\n const halfAngle = (startAngle + endAngle) / 2;\n const halfRadius = (innerRadius + outerRadius + spacing + offset) / 2;\n return {\n x: x + Math.cos(halfAngle) * halfRadius,\n y: y + Math.sin(halfAngle) * halfRadius\n };\n }\n tooltipPosition(useFinalPosition) {\n return this.getCenterPoint(useFinalPosition);\n }\n draw(ctx) {\n const {options, circumference} = this;\n const offset = (options.offset || 0) / 2;\n const spacing = (options.spacing || 0) / 2;\n this.pixelMargin = (options.borderAlign === 'inner') ? 0.33 : 0;\n this.fullCircles = circumference > TAU ? Math.floor(circumference / TAU) : 0;\n if (circumference === 0 || this.innerRadius < 0 || this.outerRadius < 0) {\n return;\n }\n ctx.save();\n let radiusOffset = 0;\n if (offset) {\n radiusOffset = offset / 2;\n const halfAngle = (this.startAngle + this.endAngle) / 2;\n ctx.translate(Math.cos(halfAngle) * radiusOffset, Math.sin(halfAngle) * radiusOffset);\n if (this.circumference >= PI) {\n radiusOffset = offset;\n }\n }\n ctx.fillStyle = options.backgroundColor;\n ctx.strokeStyle = options.borderColor;\n const endAngle = drawArc(ctx, this, radiusOffset, spacing);\n drawBorder(ctx, this, radiusOffset, spacing, endAngle);\n ctx.restore();\n }\n}\nArcElement.id = 'arc';\nArcElement.defaults = {\n borderAlign: 'center',\n borderColor: '#fff',\n borderJoinStyle: undefined,\n borderRadius: 0,\n borderWidth: 2,\n offset: 0,\n spacing: 0,\n angle: undefined,\n};\nArcElement.defaultRoutes = {\n backgroundColor: 'backgroundColor'\n};\n\nfunction setStyle(ctx, options, style = options) {\n ctx.lineCap = valueOrDefault(style.borderCapStyle, options.borderCapStyle);\n ctx.setLineDash(valueOrDefault(style.borderDash, options.borderDash));\n ctx.lineDashOffset = valueOrDefault(style.borderDashOffset, options.borderDashOffset);\n ctx.lineJoin = valueOrDefault(style.borderJoinStyle, options.borderJoinStyle);\n ctx.lineWidth = valueOrDefault(style.borderWidth, options.borderWidth);\n ctx.strokeStyle = valueOrDefault(style.borderColor, options.borderColor);\n}\nfunction lineTo(ctx, previous, target) {\n ctx.lineTo(target.x, target.y);\n}\nfunction getLineMethod(options) {\n if (options.stepped) {\n return _steppedLineTo;\n }\n if (options.tension || options.cubicInterpolationMode === 'monotone') {\n return _bezierCurveTo;\n }\n return lineTo;\n}\nfunction pathVars(points, segment, params = {}) {\n const count = points.length;\n const {start: paramsStart = 0, end: paramsEnd = count - 1} = params;\n const {start: segmentStart, end: segmentEnd} = segment;\n const start = Math.max(paramsStart, segmentStart);\n const end = Math.min(paramsEnd, segmentEnd);\n const outside = paramsStart < segmentStart && paramsEnd < segmentStart || paramsStart > segmentEnd && paramsEnd > segmentEnd;\n return {\n count,\n start,\n loop: segment.loop,\n ilen: end < start && !outside ? count + end - start : end - start\n };\n}\nfunction pathSegment(ctx, line, segment, params) {\n const {points, options} = line;\n const {count, start, loop, ilen} = pathVars(points, segment, params);\n const lineMethod = getLineMethod(options);\n let {move = true, reverse} = params || {};\n let i, point, prev;\n for (i = 0; i <= ilen; ++i) {\n point = points[(start + (reverse ? ilen - i : i)) % count];\n if (point.skip) {\n continue;\n } else if (move) {\n ctx.moveTo(point.x, point.y);\n move = false;\n } else {\n lineMethod(ctx, prev, point, reverse, options.stepped);\n }\n prev = point;\n }\n if (loop) {\n point = points[(start + (reverse ? ilen : 0)) % count];\n lineMethod(ctx, prev, point, reverse, options.stepped);\n }\n return !!loop;\n}\nfunction fastPathSegment(ctx, line, segment, params) {\n const points = line.points;\n const {count, start, ilen} = pathVars(points, segment, params);\n const {move = true, reverse} = params || {};\n let avgX = 0;\n let countX = 0;\n let i, point, prevX, minY, maxY, lastY;\n const pointIndex = (index) => (start + (reverse ? ilen - index : index)) % count;\n const drawX = () => {\n if (minY !== maxY) {\n ctx.lineTo(avgX, maxY);\n ctx.lineTo(avgX, minY);\n ctx.lineTo(avgX, lastY);\n }\n };\n if (move) {\n point = points[pointIndex(0)];\n ctx.moveTo(point.x, point.y);\n }\n for (i = 0; i <= ilen; ++i) {\n point = points[pointIndex(i)];\n if (point.skip) {\n continue;\n }\n const x = point.x;\n const y = point.y;\n const truncX = x | 0;\n if (truncX === prevX) {\n if (y < minY) {\n minY = y;\n } else if (y > maxY) {\n maxY = y;\n }\n avgX = (countX * avgX + x) / ++countX;\n } else {\n drawX();\n ctx.lineTo(x, y);\n prevX = truncX;\n countX = 0;\n minY = maxY = y;\n }\n lastY = y;\n }\n drawX();\n}\nfunction _getSegmentMethod(line) {\n const opts = line.options;\n const borderDash = opts.borderDash && opts.borderDash.length;\n const useFastPath = !line._decimated && !line._loop && !opts.tension && opts.cubicInterpolationMode !== 'monotone' && !opts.stepped && !borderDash;\n return useFastPath ? fastPathSegment : pathSegment;\n}\nfunction _getInterpolationMethod(options) {\n if (options.stepped) {\n return _steppedInterpolation;\n }\n if (options.tension || options.cubicInterpolationMode === 'monotone') {\n return _bezierInterpolation;\n }\n return _pointInLine;\n}\nfunction strokePathWithCache(ctx, line, start, count) {\n let path = line._path;\n if (!path) {\n path = line._path = new Path2D();\n if (line.path(path, start, count)) {\n path.closePath();\n }\n }\n setStyle(ctx, line.options);\n ctx.stroke(path);\n}\nfunction strokePathDirect(ctx, line, start, count) {\n const {segments, options} = line;\n const segmentMethod = _getSegmentMethod(line);\n for (const segment of segments) {\n setStyle(ctx, options, segment.style);\n ctx.beginPath();\n if (segmentMethod(ctx, line, segment, {start, end: start + count - 1})) {\n ctx.closePath();\n }\n ctx.stroke();\n }\n}\nconst usePath2D = typeof Path2D === 'function';\nfunction draw(ctx, line, start, count) {\n if (usePath2D && !line.options.segment) {\n strokePathWithCache(ctx, line, start, count);\n } else {\n strokePathDirect(ctx, line, start, count);\n }\n}\nclass LineElement extends Element {\n constructor(cfg) {\n super();\n this.animated = true;\n this.options = undefined;\n this._chart = undefined;\n this._loop = undefined;\n this._fullLoop = undefined;\n this._path = undefined;\n this._points = undefined;\n this._segments = undefined;\n this._decimated = false;\n this._pointsUpdated = false;\n this._datasetIndex = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n updateControlPoints(chartArea, indexAxis) {\n const options = this.options;\n if ((options.tension || options.cubicInterpolationMode === 'monotone') && !options.stepped && !this._pointsUpdated) {\n const loop = options.spanGaps ? this._loop : this._fullLoop;\n _updateBezierControlPoints(this._points, options, chartArea, loop, indexAxis);\n this._pointsUpdated = true;\n }\n }\n set points(points) {\n this._points = points;\n delete this._segments;\n delete this._path;\n this._pointsUpdated = false;\n }\n get points() {\n return this._points;\n }\n get segments() {\n return this._segments || (this._segments = _computeSegments(this, this.options.segment));\n }\n first() {\n const segments = this.segments;\n const points = this.points;\n return segments.length && points[segments[0].start];\n }\n last() {\n const segments = this.segments;\n const points = this.points;\n const count = segments.length;\n return count && points[segments[count - 1].end];\n }\n interpolate(point, property) {\n const options = this.options;\n const value = point[property];\n const points = this.points;\n const segments = _boundSegments(this, {property, start: value, end: value});\n if (!segments.length) {\n return;\n }\n const result = [];\n const _interpolate = _getInterpolationMethod(options);\n let i, ilen;\n for (i = 0, ilen = segments.length; i < ilen; ++i) {\n const {start, end} = segments[i];\n const p1 = points[start];\n const p2 = points[end];\n if (p1 === p2) {\n result.push(p1);\n continue;\n }\n const t = Math.abs((value - p1[property]) / (p2[property] - p1[property]));\n const interpolated = _interpolate(p1, p2, t, options.stepped);\n interpolated[property] = point[property];\n result.push(interpolated);\n }\n return result.length === 1 ? result[0] : result;\n }\n pathSegment(ctx, segment, params) {\n const segmentMethod = _getSegmentMethod(this);\n return segmentMethod(ctx, this, segment, params);\n }\n path(ctx, start, count) {\n const segments = this.segments;\n const segmentMethod = _getSegmentMethod(this);\n let loop = this._loop;\n start = start || 0;\n count = count || (this.points.length - start);\n for (const segment of segments) {\n loop &= segmentMethod(ctx, this, segment, {start, end: start + count - 1});\n }\n return !!loop;\n }\n draw(ctx, chartArea, start, count) {\n const options = this.options || {};\n const points = this.points || [];\n if (points.length && options.borderWidth) {\n ctx.save();\n draw(ctx, this, start, count);\n ctx.restore();\n }\n if (this.animated) {\n this._pointsUpdated = false;\n this._path = undefined;\n }\n }\n}\nLineElement.id = 'line';\nLineElement.defaults = {\n borderCapStyle: 'butt',\n borderDash: [],\n borderDashOffset: 0,\n borderJoinStyle: 'miter',\n borderWidth: 3,\n capBezierPoints: true,\n cubicInterpolationMode: 'default',\n fill: false,\n spanGaps: false,\n stepped: false,\n tension: 0,\n};\nLineElement.defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n};\nLineElement.descriptors = {\n _scriptable: true,\n _indexable: (name) => name !== 'borderDash' && name !== 'fill',\n};\n\nfunction inRange$1(el, pos, axis, useFinalPosition) {\n const options = el.options;\n const {[axis]: value} = el.getProps([axis], useFinalPosition);\n return (Math.abs(pos - value) < options.radius + options.hitRadius);\n}\nclass PointElement extends Element {\n constructor(cfg) {\n super();\n this.options = undefined;\n this.parsed = undefined;\n this.skip = undefined;\n this.stop = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n inRange(mouseX, mouseY, useFinalPosition) {\n const options = this.options;\n const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n return ((Math.pow(mouseX - x, 2) + Math.pow(mouseY - y, 2)) < Math.pow(options.hitRadius + options.radius, 2));\n }\n inXRange(mouseX, useFinalPosition) {\n return inRange$1(this, mouseX, 'x', useFinalPosition);\n }\n inYRange(mouseY, useFinalPosition) {\n return inRange$1(this, mouseY, 'y', useFinalPosition);\n }\n getCenterPoint(useFinalPosition) {\n const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n return {x, y};\n }\n size(options) {\n options = options || this.options || {};\n let radius = options.radius || 0;\n radius = Math.max(radius, radius && options.hoverRadius || 0);\n const borderWidth = radius && options.borderWidth || 0;\n return (radius + borderWidth) * 2;\n }\n draw(ctx, area) {\n const options = this.options;\n if (this.skip || options.radius < 0.1 || !_isPointInArea(this, area, this.size(options) / 2)) {\n return;\n }\n ctx.strokeStyle = options.borderColor;\n ctx.lineWidth = options.borderWidth;\n ctx.fillStyle = options.backgroundColor;\n drawPoint(ctx, options, this.x, this.y);\n }\n getRange() {\n const options = this.options || {};\n return options.radius + options.hitRadius;\n }\n}\nPointElement.id = 'point';\nPointElement.defaults = {\n borderWidth: 1,\n hitRadius: 1,\n hoverBorderWidth: 1,\n hoverRadius: 4,\n pointStyle: 'circle',\n radius: 3,\n rotation: 0\n};\nPointElement.defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n};\n\nfunction getBarBounds(bar, useFinalPosition) {\n const {x, y, base, width, height} = bar.getProps(['x', 'y', 'base', 'width', 'height'], useFinalPosition);\n let left, right, top, bottom, half;\n if (bar.horizontal) {\n half = height / 2;\n left = Math.min(x, base);\n right = Math.max(x, base);\n top = y - half;\n bottom = y + half;\n } else {\n half = width / 2;\n left = x - half;\n right = x + half;\n top = Math.min(y, base);\n bottom = Math.max(y, base);\n }\n return {left, top, right, bottom};\n}\nfunction skipOrLimit(skip, value, min, max) {\n return skip ? 0 : _limitValue(value, min, max);\n}\nfunction parseBorderWidth(bar, maxW, maxH) {\n const value = bar.options.borderWidth;\n const skip = bar.borderSkipped;\n const o = toTRBL(value);\n return {\n t: skipOrLimit(skip.top, o.top, 0, maxH),\n r: skipOrLimit(skip.right, o.right, 0, maxW),\n b: skipOrLimit(skip.bottom, o.bottom, 0, maxH),\n l: skipOrLimit(skip.left, o.left, 0, maxW)\n };\n}\nfunction parseBorderRadius(bar, maxW, maxH) {\n const {enableBorderRadius} = bar.getProps(['enableBorderRadius']);\n const value = bar.options.borderRadius;\n const o = toTRBLCorners(value);\n const maxR = Math.min(maxW, maxH);\n const skip = bar.borderSkipped;\n const enableBorder = enableBorderRadius || isObject(value);\n return {\n topLeft: skipOrLimit(!enableBorder || skip.top || skip.left, o.topLeft, 0, maxR),\n topRight: skipOrLimit(!enableBorder || skip.top || skip.right, o.topRight, 0, maxR),\n bottomLeft: skipOrLimit(!enableBorder || skip.bottom || skip.left, o.bottomLeft, 0, maxR),\n bottomRight: skipOrLimit(!enableBorder || skip.bottom || skip.right, o.bottomRight, 0, maxR)\n };\n}\nfunction boundingRects(bar) {\n const bounds = getBarBounds(bar);\n const width = bounds.right - bounds.left;\n const height = bounds.bottom - bounds.top;\n const border = parseBorderWidth(bar, width / 2, height / 2);\n const radius = parseBorderRadius(bar, width / 2, height / 2);\n return {\n outer: {\n x: bounds.left,\n y: bounds.top,\n w: width,\n h: height,\n radius\n },\n inner: {\n x: bounds.left + border.l,\n y: bounds.top + border.t,\n w: width - border.l - border.r,\n h: height - border.t - border.b,\n radius: {\n topLeft: Math.max(0, radius.topLeft - Math.max(border.t, border.l)),\n topRight: Math.max(0, radius.topRight - Math.max(border.t, border.r)),\n bottomLeft: Math.max(0, radius.bottomLeft - Math.max(border.b, border.l)),\n bottomRight: Math.max(0, radius.bottomRight - Math.max(border.b, border.r)),\n }\n }\n };\n}\nfunction inRange(bar, x, y, useFinalPosition) {\n const skipX = x === null;\n const skipY = y === null;\n const skipBoth = skipX && skipY;\n const bounds = bar && !skipBoth && getBarBounds(bar, useFinalPosition);\n return bounds\n\t\t&& (skipX || _isBetween(x, bounds.left, bounds.right))\n\t\t&& (skipY || _isBetween(y, bounds.top, bounds.bottom));\n}\nfunction hasRadius(radius) {\n return radius.topLeft || radius.topRight || radius.bottomLeft || radius.bottomRight;\n}\nfunction addNormalRectPath(ctx, rect) {\n ctx.rect(rect.x, rect.y, rect.w, rect.h);\n}\nfunction inflateRect(rect, amount, refRect = {}) {\n const x = rect.x !== refRect.x ? -amount : 0;\n const y = rect.y !== refRect.y ? -amount : 0;\n const w = (rect.x + rect.w !== refRect.x + refRect.w ? amount : 0) - x;\n const h = (rect.y + rect.h !== refRect.y + refRect.h ? amount : 0) - y;\n return {\n x: rect.x + x,\n y: rect.y + y,\n w: rect.w + w,\n h: rect.h + h,\n radius: rect.radius\n };\n}\nclass BarElement extends Element {\n constructor(cfg) {\n super();\n this.options = undefined;\n this.horizontal = undefined;\n this.base = undefined;\n this.width = undefined;\n this.height = undefined;\n this.inflateAmount = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n draw(ctx) {\n const {inflateAmount, options: {borderColor, backgroundColor}} = this;\n const {inner, outer} = boundingRects(this);\n const addRectPath = hasRadius(outer.radius) ? addRoundedRectPath : addNormalRectPath;\n ctx.save();\n if (outer.w !== inner.w || outer.h !== inner.h) {\n ctx.beginPath();\n addRectPath(ctx, inflateRect(outer, inflateAmount, inner));\n ctx.clip();\n addRectPath(ctx, inflateRect(inner, -inflateAmount, outer));\n ctx.fillStyle = borderColor;\n ctx.fill('evenodd');\n }\n ctx.beginPath();\n addRectPath(ctx, inflateRect(inner, inflateAmount));\n ctx.fillStyle = backgroundColor;\n ctx.fill();\n ctx.restore();\n }\n inRange(mouseX, mouseY, useFinalPosition) {\n return inRange(this, mouseX, mouseY, useFinalPosition);\n }\n inXRange(mouseX, useFinalPosition) {\n return inRange(this, mouseX, null, useFinalPosition);\n }\n inYRange(mouseY, useFinalPosition) {\n return inRange(this, null, mouseY, useFinalPosition);\n }\n getCenterPoint(useFinalPosition) {\n const {x, y, base, horizontal} = this.getProps(['x', 'y', 'base', 'horizontal'], useFinalPosition);\n return {\n x: horizontal ? (x + base) / 2 : x,\n y: horizontal ? y : (y + base) / 2\n };\n }\n getRange(axis) {\n return axis === 'x' ? this.width / 2 : this.height / 2;\n }\n}\nBarElement.id = 'bar';\nBarElement.defaults = {\n borderSkipped: 'start',\n borderWidth: 0,\n borderRadius: 0,\n inflateAmount: 'auto',\n pointStyle: undefined\n};\nBarElement.defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n};\n\nvar elements = /*#__PURE__*/Object.freeze({\n__proto__: null,\nArcElement: ArcElement,\nLineElement: LineElement,\nPointElement: PointElement,\nBarElement: BarElement\n});\n\nfunction lttbDecimation(data, start, count, availableWidth, options) {\n const samples = options.samples || availableWidth;\n if (samples >= count) {\n return data.slice(start, start + count);\n }\n const decimated = [];\n const bucketWidth = (count - 2) / (samples - 2);\n let sampledIndex = 0;\n const endIndex = start + count - 1;\n let a = start;\n let i, maxAreaPoint, maxArea, area, nextA;\n decimated[sampledIndex++] = data[a];\n for (i = 0; i < samples - 2; i++) {\n let avgX = 0;\n let avgY = 0;\n let j;\n const avgRangeStart = Math.floor((i + 1) * bucketWidth) + 1 + start;\n const avgRangeEnd = Math.min(Math.floor((i + 2) * bucketWidth) + 1, count) + start;\n const avgRangeLength = avgRangeEnd - avgRangeStart;\n for (j = avgRangeStart; j < avgRangeEnd; j++) {\n avgX += data[j].x;\n avgY += data[j].y;\n }\n avgX /= avgRangeLength;\n avgY /= avgRangeLength;\n const rangeOffs = Math.floor(i * bucketWidth) + 1 + start;\n const rangeTo = Math.min(Math.floor((i + 1) * bucketWidth) + 1, count) + start;\n const {x: pointAx, y: pointAy} = data[a];\n maxArea = area = -1;\n for (j = rangeOffs; j < rangeTo; j++) {\n area = 0.5 * Math.abs(\n (pointAx - avgX) * (data[j].y - pointAy) -\n (pointAx - data[j].x) * (avgY - pointAy)\n );\n if (area > maxArea) {\n maxArea = area;\n maxAreaPoint = data[j];\n nextA = j;\n }\n }\n decimated[sampledIndex++] = maxAreaPoint;\n a = nextA;\n }\n decimated[sampledIndex++] = data[endIndex];\n return decimated;\n}\nfunction minMaxDecimation(data, start, count, availableWidth) {\n let avgX = 0;\n let countX = 0;\n let i, point, x, y, prevX, minIndex, maxIndex, startIndex, minY, maxY;\n const decimated = [];\n const endIndex = start + count - 1;\n const xMin = data[start].x;\n const xMax = data[endIndex].x;\n const dx = xMax - xMin;\n for (i = start; i < start + count; ++i) {\n point = data[i];\n x = (point.x - xMin) / dx * availableWidth;\n y = point.y;\n const truncX = x | 0;\n if (truncX === prevX) {\n if (y < minY) {\n minY = y;\n minIndex = i;\n } else if (y > maxY) {\n maxY = y;\n maxIndex = i;\n }\n avgX = (countX * avgX + point.x) / ++countX;\n } else {\n const lastIndex = i - 1;\n if (!isNullOrUndef(minIndex) && !isNullOrUndef(maxIndex)) {\n const intermediateIndex1 = Math.min(minIndex, maxIndex);\n const intermediateIndex2 = Math.max(minIndex, maxIndex);\n if (intermediateIndex1 !== startIndex && intermediateIndex1 !== lastIndex) {\n decimated.push({\n ...data[intermediateIndex1],\n x: avgX,\n });\n }\n if (intermediateIndex2 !== startIndex && intermediateIndex2 !== lastIndex) {\n decimated.push({\n ...data[intermediateIndex2],\n x: avgX\n });\n }\n }\n if (i > 0 && lastIndex !== startIndex) {\n decimated.push(data[lastIndex]);\n }\n decimated.push(point);\n prevX = truncX;\n countX = 0;\n minY = maxY = y;\n minIndex = maxIndex = startIndex = i;\n }\n }\n return decimated;\n}\nfunction cleanDecimatedDataset(dataset) {\n if (dataset._decimated) {\n const data = dataset._data;\n delete dataset._decimated;\n delete dataset._data;\n Object.defineProperty(dataset, 'data', {value: data});\n }\n}\nfunction cleanDecimatedData(chart) {\n chart.data.datasets.forEach((dataset) => {\n cleanDecimatedDataset(dataset);\n });\n}\nfunction getStartAndCountOfVisiblePointsSimplified(meta, points) {\n const pointCount = points.length;\n let start = 0;\n let count;\n const {iScale} = meta;\n const {min, max, minDefined, maxDefined} = iScale.getUserBounds();\n if (minDefined) {\n start = _limitValue(_lookupByKey(points, iScale.axis, min).lo, 0, pointCount - 1);\n }\n if (maxDefined) {\n count = _limitValue(_lookupByKey(points, iScale.axis, max).hi + 1, start, pointCount) - start;\n } else {\n count = pointCount - start;\n }\n return {start, count};\n}\nvar plugin_decimation = {\n id: 'decimation',\n defaults: {\n algorithm: 'min-max',\n enabled: false,\n },\n beforeElementsUpdate: (chart, args, options) => {\n if (!options.enabled) {\n cleanDecimatedData(chart);\n return;\n }\n const availableWidth = chart.width;\n chart.data.datasets.forEach((dataset, datasetIndex) => {\n const {_data, indexAxis} = dataset;\n const meta = chart.getDatasetMeta(datasetIndex);\n const data = _data || dataset.data;\n if (resolve([indexAxis, chart.options.indexAxis]) === 'y') {\n return;\n }\n if (meta.type !== 'line') {\n return;\n }\n const xAxis = chart.scales[meta.xAxisID];\n if (xAxis.type !== 'linear' && xAxis.type !== 'time') {\n return;\n }\n if (chart.options.parsing) {\n return;\n }\n let {start, count} = getStartAndCountOfVisiblePointsSimplified(meta, data);\n const threshold = options.threshold || 4 * availableWidth;\n if (count <= threshold) {\n cleanDecimatedDataset(dataset);\n return;\n }\n if (isNullOrUndef(_data)) {\n dataset._data = data;\n delete dataset.data;\n Object.defineProperty(dataset, 'data', {\n configurable: true,\n enumerable: true,\n get: function() {\n return this._decimated;\n },\n set: function(d) {\n this._data = d;\n }\n });\n }\n let decimated;\n switch (options.algorithm) {\n case 'lttb':\n decimated = lttbDecimation(data, start, count, availableWidth, options);\n break;\n case 'min-max':\n decimated = minMaxDecimation(data, start, count, availableWidth);\n break;\n default:\n throw new Error(`Unsupported decimation algorithm '${options.algorithm}'`);\n }\n dataset._decimated = decimated;\n });\n },\n destroy(chart) {\n cleanDecimatedData(chart);\n }\n};\n\nfunction getLineByIndex(chart, index) {\n const meta = chart.getDatasetMeta(index);\n const visible = meta && chart.isDatasetVisible(index);\n return visible ? meta.dataset : null;\n}\nfunction parseFillOption(line) {\n const options = line.options;\n const fillOption = options.fill;\n let fill = valueOrDefault(fillOption && fillOption.target, fillOption);\n if (fill === undefined) {\n fill = !!options.backgroundColor;\n }\n if (fill === false || fill === null) {\n return false;\n }\n if (fill === true) {\n return 'origin';\n }\n return fill;\n}\nfunction decodeFill(line, index, count) {\n const fill = parseFillOption(line);\n if (isObject(fill)) {\n return isNaN(fill.value) ? false : fill;\n }\n let target = parseFloat(fill);\n if (isNumberFinite(target) && Math.floor(target) === target) {\n if (fill[0] === '-' || fill[0] === '+') {\n target = index + target;\n }\n if (target === index || target < 0 || target >= count) {\n return false;\n }\n return target;\n }\n return ['origin', 'start', 'end', 'stack', 'shape'].indexOf(fill) >= 0 && fill;\n}\nfunction computeLinearBoundary(source) {\n const {scale = {}, fill} = source;\n let target = null;\n let horizontal;\n if (fill === 'start') {\n target = scale.bottom;\n } else if (fill === 'end') {\n target = scale.top;\n } else if (isObject(fill)) {\n target = scale.getPixelForValue(fill.value);\n } else if (scale.getBasePixel) {\n target = scale.getBasePixel();\n }\n if (isNumberFinite(target)) {\n horizontal = scale.isHorizontal();\n return {\n x: horizontal ? target : null,\n y: horizontal ? null : target\n };\n }\n return null;\n}\nclass simpleArc {\n constructor(opts) {\n this.x = opts.x;\n this.y = opts.y;\n this.radius = opts.radius;\n }\n pathSegment(ctx, bounds, opts) {\n const {x, y, radius} = this;\n bounds = bounds || {start: 0, end: TAU};\n ctx.arc(x, y, radius, bounds.end, bounds.start, true);\n return !opts.bounds;\n }\n interpolate(point) {\n const {x, y, radius} = this;\n const angle = point.angle;\n return {\n x: x + Math.cos(angle) * radius,\n y: y + Math.sin(angle) * radius,\n angle\n };\n }\n}\nfunction computeCircularBoundary(source) {\n const {scale, fill} = source;\n const options = scale.options;\n const length = scale.getLabels().length;\n const target = [];\n const start = options.reverse ? scale.max : scale.min;\n const end = options.reverse ? scale.min : scale.max;\n let i, center, value;\n if (fill === 'start') {\n value = start;\n } else if (fill === 'end') {\n value = end;\n } else if (isObject(fill)) {\n value = fill.value;\n } else {\n value = scale.getBaseValue();\n }\n if (options.grid.circular) {\n center = scale.getPointPositionForValue(0, start);\n return new simpleArc({\n x: center.x,\n y: center.y,\n radius: scale.getDistanceFromCenterForValue(value)\n });\n }\n for (i = 0; i < length; ++i) {\n target.push(scale.getPointPositionForValue(i, value));\n }\n return target;\n}\nfunction computeBoundary(source) {\n const scale = source.scale || {};\n if (scale.getPointPositionForValue) {\n return computeCircularBoundary(source);\n }\n return computeLinearBoundary(source);\n}\nfunction findSegmentEnd(start, end, points) {\n for (;end > start; end--) {\n const point = points[end];\n if (!isNaN(point.x) && !isNaN(point.y)) {\n break;\n }\n }\n return end;\n}\nfunction pointsFromSegments(boundary, line) {\n const {x = null, y = null} = boundary || {};\n const linePoints = line.points;\n const points = [];\n line.segments.forEach(({start, end}) => {\n end = findSegmentEnd(start, end, linePoints);\n const first = linePoints[start];\n const last = linePoints[end];\n if (y !== null) {\n points.push({x: first.x, y});\n points.push({x: last.x, y});\n } else if (x !== null) {\n points.push({x, y: first.y});\n points.push({x, y: last.y});\n }\n });\n return points;\n}\nfunction buildStackLine(source) {\n const {scale, index, line} = source;\n const points = [];\n const segments = line.segments;\n const sourcePoints = line.points;\n const linesBelow = getLinesBelow(scale, index);\n linesBelow.push(createBoundaryLine({x: null, y: scale.bottom}, line));\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n for (let j = segment.start; j <= segment.end; j++) {\n addPointsBelow(points, sourcePoints[j], linesBelow);\n }\n }\n return new LineElement({points, options: {}});\n}\nfunction getLinesBelow(scale, index) {\n const below = [];\n const metas = scale.getMatchingVisibleMetas('line');\n for (let i = 0; i < metas.length; i++) {\n const meta = metas[i];\n if (meta.index === index) {\n break;\n }\n if (!meta.hidden) {\n below.unshift(meta.dataset);\n }\n }\n return below;\n}\nfunction addPointsBelow(points, sourcePoint, linesBelow) {\n const postponed = [];\n for (let j = 0; j < linesBelow.length; j++) {\n const line = linesBelow[j];\n const {first, last, point} = findPoint(line, sourcePoint, 'x');\n if (!point || (first && last)) {\n continue;\n }\n if (first) {\n postponed.unshift(point);\n } else {\n points.push(point);\n if (!last) {\n break;\n }\n }\n }\n points.push(...postponed);\n}\nfunction findPoint(line, sourcePoint, property) {\n const point = line.interpolate(sourcePoint, property);\n if (!point) {\n return {};\n }\n const pointValue = point[property];\n const segments = line.segments;\n const linePoints = line.points;\n let first = false;\n let last = false;\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n const firstValue = linePoints[segment.start][property];\n const lastValue = linePoints[segment.end][property];\n if (_isBetween(pointValue, firstValue, lastValue)) {\n first = pointValue === firstValue;\n last = pointValue === lastValue;\n break;\n }\n }\n return {first, last, point};\n}\nfunction getTarget(source) {\n const {chart, fill, line} = source;\n if (isNumberFinite(fill)) {\n return getLineByIndex(chart, fill);\n }\n if (fill === 'stack') {\n return buildStackLine(source);\n }\n if (fill === 'shape') {\n return true;\n }\n const boundary = computeBoundary(source);\n if (boundary instanceof simpleArc) {\n return boundary;\n }\n return createBoundaryLine(boundary, line);\n}\nfunction createBoundaryLine(boundary, line) {\n let points = [];\n let _loop = false;\n if (isArray(boundary)) {\n _loop = true;\n points = boundary;\n } else {\n points = pointsFromSegments(boundary, line);\n }\n return points.length ? new LineElement({\n points,\n options: {tension: 0},\n _loop,\n _fullLoop: _loop\n }) : null;\n}\nfunction resolveTarget(sources, index, propagate) {\n const source = sources[index];\n let fill = source.fill;\n const visited = [index];\n let target;\n if (!propagate) {\n return fill;\n }\n while (fill !== false && visited.indexOf(fill) === -1) {\n if (!isNumberFinite(fill)) {\n return fill;\n }\n target = sources[fill];\n if (!target) {\n return false;\n }\n if (target.visible) {\n return fill;\n }\n visited.push(fill);\n fill = target.fill;\n }\n return false;\n}\nfunction _clip(ctx, target, clipY) {\n const {segments, points} = target;\n let first = true;\n let lineLoop = false;\n ctx.beginPath();\n for (const segment of segments) {\n const {start, end} = segment;\n const firstPoint = points[start];\n const lastPoint = points[findSegmentEnd(start, end, points)];\n if (first) {\n ctx.moveTo(firstPoint.x, firstPoint.y);\n first = false;\n } else {\n ctx.lineTo(firstPoint.x, clipY);\n ctx.lineTo(firstPoint.x, firstPoint.y);\n }\n lineLoop = !!target.pathSegment(ctx, segment, {move: lineLoop});\n if (lineLoop) {\n ctx.closePath();\n } else {\n ctx.lineTo(lastPoint.x, clipY);\n }\n }\n ctx.lineTo(target.first().x, clipY);\n ctx.closePath();\n ctx.clip();\n}\nfunction getBounds(property, first, last, loop) {\n if (loop) {\n return;\n }\n let start = first[property];\n let end = last[property];\n if (property === 'angle') {\n start = _normalizeAngle(start);\n end = _normalizeAngle(end);\n }\n return {property, start, end};\n}\nfunction _getEdge(a, b, prop, fn) {\n if (a && b) {\n return fn(a[prop], b[prop]);\n }\n return a ? a[prop] : b ? b[prop] : 0;\n}\nfunction _segments(line, target, property) {\n const segments = line.segments;\n const points = line.points;\n const tpoints = target.points;\n const parts = [];\n for (const segment of segments) {\n let {start, end} = segment;\n end = findSegmentEnd(start, end, points);\n const bounds = getBounds(property, points[start], points[end], segment.loop);\n if (!target.segments) {\n parts.push({\n source: segment,\n target: bounds,\n start: points[start],\n end: points[end]\n });\n continue;\n }\n const targetSegments = _boundSegments(target, bounds);\n for (const tgt of targetSegments) {\n const subBounds = getBounds(property, tpoints[tgt.start], tpoints[tgt.end], tgt.loop);\n const fillSources = _boundSegment(segment, points, subBounds);\n for (const fillSource of fillSources) {\n parts.push({\n source: fillSource,\n target: tgt,\n start: {\n [property]: _getEdge(bounds, subBounds, 'start', Math.max)\n },\n end: {\n [property]: _getEdge(bounds, subBounds, 'end', Math.min)\n }\n });\n }\n }\n }\n return parts;\n}\nfunction clipBounds(ctx, scale, bounds) {\n const {top, bottom} = scale.chart.chartArea;\n const {property, start, end} = bounds || {};\n if (property === 'x') {\n ctx.beginPath();\n ctx.rect(start, top, end - start, bottom - top);\n ctx.clip();\n }\n}\nfunction interpolatedLineTo(ctx, target, point, property) {\n const interpolatedPoint = target.interpolate(point, property);\n if (interpolatedPoint) {\n ctx.lineTo(interpolatedPoint.x, interpolatedPoint.y);\n }\n}\nfunction _fill(ctx, cfg) {\n const {line, target, property, color, scale} = cfg;\n const segments = _segments(line, target, property);\n for (const {source: src, target: tgt, start, end} of segments) {\n const {style: {backgroundColor = color} = {}} = src;\n const notShape = target !== true;\n ctx.save();\n ctx.fillStyle = backgroundColor;\n clipBounds(ctx, scale, notShape && getBounds(property, start, end));\n ctx.beginPath();\n const lineLoop = !!line.pathSegment(ctx, src);\n let loop;\n if (notShape) {\n if (lineLoop) {\n ctx.closePath();\n } else {\n interpolatedLineTo(ctx, target, end, property);\n }\n const targetLoop = !!target.pathSegment(ctx, tgt, {move: lineLoop, reverse: true});\n loop = lineLoop && targetLoop;\n if (!loop) {\n interpolatedLineTo(ctx, target, start, property);\n }\n }\n ctx.closePath();\n ctx.fill(loop ? 'evenodd' : 'nonzero');\n ctx.restore();\n }\n}\nfunction doFill(ctx, cfg) {\n const {line, target, above, below, area, scale} = cfg;\n const property = line._loop ? 'angle' : cfg.axis;\n ctx.save();\n if (property === 'x' && below !== above) {\n _clip(ctx, target, area.top);\n _fill(ctx, {line, target, color: above, scale, property});\n ctx.restore();\n ctx.save();\n _clip(ctx, target, area.bottom);\n }\n _fill(ctx, {line, target, color: below, scale, property});\n ctx.restore();\n}\nfunction drawfill(ctx, source, area) {\n const target = getTarget(source);\n const {line, scale, axis} = source;\n const lineOpts = line.options;\n const fillOption = lineOpts.fill;\n const color = lineOpts.backgroundColor;\n const {above = color, below = color} = fillOption || {};\n if (target && line.points.length) {\n clipArea(ctx, area);\n doFill(ctx, {line, target, above, below, area, scale, axis});\n unclipArea(ctx);\n }\n}\nvar plugin_filler = {\n id: 'filler',\n afterDatasetsUpdate(chart, _args, options) {\n const count = (chart.data.datasets || []).length;\n const sources = [];\n let meta, i, line, source;\n for (i = 0; i < count; ++i) {\n meta = chart.getDatasetMeta(i);\n line = meta.dataset;\n source = null;\n if (line && line.options && line instanceof LineElement) {\n source = {\n visible: chart.isDatasetVisible(i),\n index: i,\n fill: decodeFill(line, i, count),\n chart,\n axis: meta.controller.options.indexAxis,\n scale: meta.vScale,\n line,\n };\n }\n meta.$filler = source;\n sources.push(source);\n }\n for (i = 0; i < count; ++i) {\n source = sources[i];\n if (!source || source.fill === false) {\n continue;\n }\n source.fill = resolveTarget(sources, i, options.propagate);\n }\n },\n beforeDraw(chart, _args, options) {\n const draw = options.drawTime === 'beforeDraw';\n const metasets = chart.getSortedVisibleDatasetMetas();\n const area = chart.chartArea;\n for (let i = metasets.length - 1; i >= 0; --i) {\n const source = metasets[i].$filler;\n if (!source) {\n continue;\n }\n source.line.updateControlPoints(area, source.axis);\n if (draw) {\n drawfill(chart.ctx, source, area);\n }\n }\n },\n beforeDatasetsDraw(chart, _args, options) {\n if (options.drawTime !== 'beforeDatasetsDraw') {\n return;\n }\n const metasets = chart.getSortedVisibleDatasetMetas();\n for (let i = metasets.length - 1; i >= 0; --i) {\n const source = metasets[i].$filler;\n if (source) {\n drawfill(chart.ctx, source, chart.chartArea);\n }\n }\n },\n beforeDatasetDraw(chart, args, options) {\n const source = args.meta.$filler;\n if (!source || source.fill === false || options.drawTime !== 'beforeDatasetDraw') {\n return;\n }\n drawfill(chart.ctx, source, chart.chartArea);\n },\n defaults: {\n propagate: true,\n drawTime: 'beforeDatasetDraw'\n }\n};\n\nconst getBoxSize = (labelOpts, fontSize) => {\n let {boxHeight = fontSize, boxWidth = fontSize} = labelOpts;\n if (labelOpts.usePointStyle) {\n boxHeight = Math.min(boxHeight, fontSize);\n boxWidth = Math.min(boxWidth, fontSize);\n }\n return {\n boxWidth,\n boxHeight,\n itemHeight: Math.max(fontSize, boxHeight)\n };\n};\nconst itemsEqual = (a, b) => a !== null && b !== null && a.datasetIndex === b.datasetIndex && a.index === b.index;\nclass Legend extends Element {\n constructor(config) {\n super();\n this._added = false;\n this.legendHitBoxes = [];\n this._hoveredItem = null;\n this.doughnutMode = false;\n this.chart = config.chart;\n this.options = config.options;\n this.ctx = config.ctx;\n this.legendItems = undefined;\n this.columnSizes = undefined;\n this.lineWidths = undefined;\n this.maxHeight = undefined;\n this.maxWidth = undefined;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.height = undefined;\n this.width = undefined;\n this._margins = undefined;\n this.position = undefined;\n this.weight = undefined;\n this.fullSize = undefined;\n }\n update(maxWidth, maxHeight, margins) {\n this.maxWidth = maxWidth;\n this.maxHeight = maxHeight;\n this._margins = margins;\n this.setDimensions();\n this.buildLabels();\n this.fit();\n }\n setDimensions() {\n if (this.isHorizontal()) {\n this.width = this.maxWidth;\n this.left = this._margins.left;\n this.right = this.width;\n } else {\n this.height = this.maxHeight;\n this.top = this._margins.top;\n this.bottom = this.height;\n }\n }\n buildLabels() {\n const labelOpts = this.options.labels || {};\n let legendItems = callback(labelOpts.generateLabels, [this.chart], this) || [];\n if (labelOpts.filter) {\n legendItems = legendItems.filter((item) => labelOpts.filter(item, this.chart.data));\n }\n if (labelOpts.sort) {\n legendItems = legendItems.sort((a, b) => labelOpts.sort(a, b, this.chart.data));\n }\n if (this.options.reverse) {\n legendItems.reverse();\n }\n this.legendItems = legendItems;\n }\n fit() {\n const {options, ctx} = this;\n if (!options.display) {\n this.width = this.height = 0;\n return;\n }\n const labelOpts = options.labels;\n const labelFont = toFont(labelOpts.font);\n const fontSize = labelFont.size;\n const titleHeight = this._computeTitleHeight();\n const {boxWidth, itemHeight} = getBoxSize(labelOpts, fontSize);\n let width, height;\n ctx.font = labelFont.string;\n if (this.isHorizontal()) {\n width = this.maxWidth;\n height = this._fitRows(titleHeight, fontSize, boxWidth, itemHeight) + 10;\n } else {\n height = this.maxHeight;\n width = this._fitCols(titleHeight, fontSize, boxWidth, itemHeight) + 10;\n }\n this.width = Math.min(width, options.maxWidth || this.maxWidth);\n this.height = Math.min(height, options.maxHeight || this.maxHeight);\n }\n _fitRows(titleHeight, fontSize, boxWidth, itemHeight) {\n const {ctx, maxWidth, options: {labels: {padding}}} = this;\n const hitboxes = this.legendHitBoxes = [];\n const lineWidths = this.lineWidths = [0];\n const lineHeight = itemHeight + padding;\n let totalHeight = titleHeight;\n ctx.textAlign = 'left';\n ctx.textBaseline = 'middle';\n let row = -1;\n let top = -lineHeight;\n this.legendItems.forEach((legendItem, i) => {\n const itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\n if (i === 0 || lineWidths[lineWidths.length - 1] + itemWidth + 2 * padding > maxWidth) {\n totalHeight += lineHeight;\n lineWidths[lineWidths.length - (i > 0 ? 0 : 1)] = 0;\n top += lineHeight;\n row++;\n }\n hitboxes[i] = {left: 0, top, row, width: itemWidth, height: itemHeight};\n lineWidths[lineWidths.length - 1] += itemWidth + padding;\n });\n return totalHeight;\n }\n _fitCols(titleHeight, fontSize, boxWidth, itemHeight) {\n const {ctx, maxHeight, options: {labels: {padding}}} = this;\n const hitboxes = this.legendHitBoxes = [];\n const columnSizes = this.columnSizes = [];\n const heightLimit = maxHeight - titleHeight;\n let totalWidth = padding;\n let currentColWidth = 0;\n let currentColHeight = 0;\n let left = 0;\n let col = 0;\n this.legendItems.forEach((legendItem, i) => {\n const itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\n if (i > 0 && currentColHeight + itemHeight + 2 * padding > heightLimit) {\n totalWidth += currentColWidth + padding;\n columnSizes.push({width: currentColWidth, height: currentColHeight});\n left += currentColWidth + padding;\n col++;\n currentColWidth = currentColHeight = 0;\n }\n hitboxes[i] = {left, top: currentColHeight, col, width: itemWidth, height: itemHeight};\n currentColWidth = Math.max(currentColWidth, itemWidth);\n currentColHeight += itemHeight + padding;\n });\n totalWidth += currentColWidth;\n columnSizes.push({width: currentColWidth, height: currentColHeight});\n return totalWidth;\n }\n adjustHitBoxes() {\n if (!this.options.display) {\n return;\n }\n const titleHeight = this._computeTitleHeight();\n const {legendHitBoxes: hitboxes, options: {align, labels: {padding}, rtl}} = this;\n const rtlHelper = getRtlAdapter(rtl, this.left, this.width);\n if (this.isHorizontal()) {\n let row = 0;\n let left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n for (const hitbox of hitboxes) {\n if (row !== hitbox.row) {\n row = hitbox.row;\n left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n }\n hitbox.top += this.top + titleHeight + padding;\n hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(left), hitbox.width);\n left += hitbox.width + padding;\n }\n } else {\n let col = 0;\n let top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n for (const hitbox of hitboxes) {\n if (hitbox.col !== col) {\n col = hitbox.col;\n top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n }\n hitbox.top = top;\n hitbox.left += this.left + padding;\n hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(hitbox.left), hitbox.width);\n top += hitbox.height + padding;\n }\n }\n }\n isHorizontal() {\n return this.options.position === 'top' || this.options.position === 'bottom';\n }\n draw() {\n if (this.options.display) {\n const ctx = this.ctx;\n clipArea(ctx, this);\n this._draw();\n unclipArea(ctx);\n }\n }\n _draw() {\n const {options: opts, columnSizes, lineWidths, ctx} = this;\n const {align, labels: labelOpts} = opts;\n const defaultColor = defaults.color;\n const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n const labelFont = toFont(labelOpts.font);\n const {color: fontColor, padding} = labelOpts;\n const fontSize = labelFont.size;\n const halfFontSize = fontSize / 2;\n let cursor;\n this.drawTitle();\n ctx.textAlign = rtlHelper.textAlign('left');\n ctx.textBaseline = 'middle';\n ctx.lineWidth = 0.5;\n ctx.font = labelFont.string;\n const {boxWidth, boxHeight, itemHeight} = getBoxSize(labelOpts, fontSize);\n const drawLegendBox = function(x, y, legendItem) {\n if (isNaN(boxWidth) || boxWidth <= 0 || isNaN(boxHeight) || boxHeight < 0) {\n return;\n }\n ctx.save();\n const lineWidth = valueOrDefault(legendItem.lineWidth, 1);\n ctx.fillStyle = valueOrDefault(legendItem.fillStyle, defaultColor);\n ctx.lineCap = valueOrDefault(legendItem.lineCap, 'butt');\n ctx.lineDashOffset = valueOrDefault(legendItem.lineDashOffset, 0);\n ctx.lineJoin = valueOrDefault(legendItem.lineJoin, 'miter');\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = valueOrDefault(legendItem.strokeStyle, defaultColor);\n ctx.setLineDash(valueOrDefault(legendItem.lineDash, []));\n if (labelOpts.usePointStyle) {\n const drawOptions = {\n radius: boxWidth * Math.SQRT2 / 2,\n pointStyle: legendItem.pointStyle,\n rotation: legendItem.rotation,\n borderWidth: lineWidth\n };\n const centerX = rtlHelper.xPlus(x, boxWidth / 2);\n const centerY = y + halfFontSize;\n drawPoint(ctx, drawOptions, centerX, centerY);\n } else {\n const yBoxTop = y + Math.max((fontSize - boxHeight) / 2, 0);\n const xBoxLeft = rtlHelper.leftForLtr(x, boxWidth);\n const borderRadius = toTRBLCorners(legendItem.borderRadius);\n ctx.beginPath();\n if (Object.values(borderRadius).some(v => v !== 0)) {\n addRoundedRectPath(ctx, {\n x: xBoxLeft,\n y: yBoxTop,\n w: boxWidth,\n h: boxHeight,\n radius: borderRadius,\n });\n } else {\n ctx.rect(xBoxLeft, yBoxTop, boxWidth, boxHeight);\n }\n ctx.fill();\n if (lineWidth !== 0) {\n ctx.stroke();\n }\n }\n ctx.restore();\n };\n const fillText = function(x, y, legendItem) {\n renderText(ctx, legendItem.text, x, y + (itemHeight / 2), labelFont, {\n strikethrough: legendItem.hidden,\n textAlign: rtlHelper.textAlign(legendItem.textAlign)\n });\n };\n const isHorizontal = this.isHorizontal();\n const titleHeight = this._computeTitleHeight();\n if (isHorizontal) {\n cursor = {\n x: _alignStartEnd(align, this.left + padding, this.right - lineWidths[0]),\n y: this.top + padding + titleHeight,\n line: 0\n };\n } else {\n cursor = {\n x: this.left + padding,\n y: _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[0].height),\n line: 0\n };\n }\n overrideTextDirection(this.ctx, opts.textDirection);\n const lineHeight = itemHeight + padding;\n this.legendItems.forEach((legendItem, i) => {\n ctx.strokeStyle = legendItem.fontColor || fontColor;\n ctx.fillStyle = legendItem.fontColor || fontColor;\n const textWidth = ctx.measureText(legendItem.text).width;\n const textAlign = rtlHelper.textAlign(legendItem.textAlign || (legendItem.textAlign = labelOpts.textAlign));\n const width = boxWidth + halfFontSize + textWidth;\n let x = cursor.x;\n let y = cursor.y;\n rtlHelper.setWidth(this.width);\n if (isHorizontal) {\n if (i > 0 && x + width + padding > this.right) {\n y = cursor.y += lineHeight;\n cursor.line++;\n x = cursor.x = _alignStartEnd(align, this.left + padding, this.right - lineWidths[cursor.line]);\n }\n } else if (i > 0 && y + lineHeight > this.bottom) {\n x = cursor.x = x + columnSizes[cursor.line].width + padding;\n cursor.line++;\n y = cursor.y = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[cursor.line].height);\n }\n const realX = rtlHelper.x(x);\n drawLegendBox(realX, y, legendItem);\n x = _textX(textAlign, x + boxWidth + halfFontSize, isHorizontal ? x + width : this.right, opts.rtl);\n fillText(rtlHelper.x(x), y, legendItem);\n if (isHorizontal) {\n cursor.x += width + padding;\n } else {\n cursor.y += lineHeight;\n }\n });\n restoreTextDirection(this.ctx, opts.textDirection);\n }\n drawTitle() {\n const opts = this.options;\n const titleOpts = opts.title;\n const titleFont = toFont(titleOpts.font);\n const titlePadding = toPadding(titleOpts.padding);\n if (!titleOpts.display) {\n return;\n }\n const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n const ctx = this.ctx;\n const position = titleOpts.position;\n const halfFontSize = titleFont.size / 2;\n const topPaddingPlusHalfFontSize = titlePadding.top + halfFontSize;\n let y;\n let left = this.left;\n let maxWidth = this.width;\n if (this.isHorizontal()) {\n maxWidth = Math.max(...this.lineWidths);\n y = this.top + topPaddingPlusHalfFontSize;\n left = _alignStartEnd(opts.align, left, this.right - maxWidth);\n } else {\n const maxHeight = this.columnSizes.reduce((acc, size) => Math.max(acc, size.height), 0);\n y = topPaddingPlusHalfFontSize + _alignStartEnd(opts.align, this.top, this.bottom - maxHeight - opts.labels.padding - this._computeTitleHeight());\n }\n const x = _alignStartEnd(position, left, left + maxWidth);\n ctx.textAlign = rtlHelper.textAlign(_toLeftRightCenter(position));\n ctx.textBaseline = 'middle';\n ctx.strokeStyle = titleOpts.color;\n ctx.fillStyle = titleOpts.color;\n ctx.font = titleFont.string;\n renderText(ctx, titleOpts.text, x, y, titleFont);\n }\n _computeTitleHeight() {\n const titleOpts = this.options.title;\n const titleFont = toFont(titleOpts.font);\n const titlePadding = toPadding(titleOpts.padding);\n return titleOpts.display ? titleFont.lineHeight + titlePadding.height : 0;\n }\n _getLegendItemAt(x, y) {\n let i, hitBox, lh;\n if (_isBetween(x, this.left, this.right)\n && _isBetween(y, this.top, this.bottom)) {\n lh = this.legendHitBoxes;\n for (i = 0; i < lh.length; ++i) {\n hitBox = lh[i];\n if (_isBetween(x, hitBox.left, hitBox.left + hitBox.width)\n && _isBetween(y, hitBox.top, hitBox.top + hitBox.height)) {\n return this.legendItems[i];\n }\n }\n }\n return null;\n }\n handleEvent(e) {\n const opts = this.options;\n if (!isListened(e.type, opts)) {\n return;\n }\n const hoveredItem = this._getLegendItemAt(e.x, e.y);\n if (e.type === 'mousemove') {\n const previous = this._hoveredItem;\n const sameItem = itemsEqual(previous, hoveredItem);\n if (previous && !sameItem) {\n callback(opts.onLeave, [e, previous, this], this);\n }\n this._hoveredItem = hoveredItem;\n if (hoveredItem && !sameItem) {\n callback(opts.onHover, [e, hoveredItem, this], this);\n }\n } else if (hoveredItem) {\n callback(opts.onClick, [e, hoveredItem, this], this);\n }\n }\n}\nfunction isListened(type, opts) {\n if (type === 'mousemove' && (opts.onHover || opts.onLeave)) {\n return true;\n }\n if (opts.onClick && (type === 'click' || type === 'mouseup')) {\n return true;\n }\n return false;\n}\nvar plugin_legend = {\n id: 'legend',\n _element: Legend,\n start(chart, _args, options) {\n const legend = chart.legend = new Legend({ctx: chart.ctx, options, chart});\n layouts.configure(chart, legend, options);\n layouts.addBox(chart, legend);\n },\n stop(chart) {\n layouts.removeBox(chart, chart.legend);\n delete chart.legend;\n },\n beforeUpdate(chart, _args, options) {\n const legend = chart.legend;\n layouts.configure(chart, legend, options);\n legend.options = options;\n },\n afterUpdate(chart) {\n const legend = chart.legend;\n legend.buildLabels();\n legend.adjustHitBoxes();\n },\n afterEvent(chart, args) {\n if (!args.replay) {\n chart.legend.handleEvent(args.event);\n }\n },\n defaults: {\n display: true,\n position: 'top',\n align: 'center',\n fullSize: true,\n reverse: false,\n weight: 1000,\n onClick(e, legendItem, legend) {\n const index = legendItem.datasetIndex;\n const ci = legend.chart;\n if (ci.isDatasetVisible(index)) {\n ci.hide(index);\n legendItem.hidden = true;\n } else {\n ci.show(index);\n legendItem.hidden = false;\n }\n },\n onHover: null,\n onLeave: null,\n labels: {\n color: (ctx) => ctx.chart.options.color,\n boxWidth: 40,\n padding: 10,\n generateLabels(chart) {\n const datasets = chart.data.datasets;\n const {labels: {usePointStyle, pointStyle, textAlign, color}} = chart.legend.options;\n return chart._getSortedDatasetMetas().map((meta) => {\n const style = meta.controller.getStyle(usePointStyle ? 0 : undefined);\n const borderWidth = toPadding(style.borderWidth);\n return {\n text: datasets[meta.index].label,\n fillStyle: style.backgroundColor,\n fontColor: color,\n hidden: !meta.visible,\n lineCap: style.borderCapStyle,\n lineDash: style.borderDash,\n lineDashOffset: style.borderDashOffset,\n lineJoin: style.borderJoinStyle,\n lineWidth: (borderWidth.width + borderWidth.height) / 4,\n strokeStyle: style.borderColor,\n pointStyle: pointStyle || style.pointStyle,\n rotation: style.rotation,\n textAlign: textAlign || style.textAlign,\n borderRadius: 0,\n datasetIndex: meta.index\n };\n }, this);\n }\n },\n title: {\n color: (ctx) => ctx.chart.options.color,\n display: false,\n position: 'center',\n text: '',\n }\n },\n descriptors: {\n _scriptable: (name) => !name.startsWith('on'),\n labels: {\n _scriptable: (name) => !['generateLabels', 'filter', 'sort'].includes(name),\n }\n },\n};\n\nclass Title extends Element {\n constructor(config) {\n super();\n this.chart = config.chart;\n this.options = config.options;\n this.ctx = config.ctx;\n this._padding = undefined;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.width = undefined;\n this.height = undefined;\n this.position = undefined;\n this.weight = undefined;\n this.fullSize = undefined;\n }\n update(maxWidth, maxHeight) {\n const opts = this.options;\n this.left = 0;\n this.top = 0;\n if (!opts.display) {\n this.width = this.height = this.right = this.bottom = 0;\n return;\n }\n this.width = this.right = maxWidth;\n this.height = this.bottom = maxHeight;\n const lineCount = isArray(opts.text) ? opts.text.length : 1;\n this._padding = toPadding(opts.padding);\n const textSize = lineCount * toFont(opts.font).lineHeight + this._padding.height;\n if (this.isHorizontal()) {\n this.height = textSize;\n } else {\n this.width = textSize;\n }\n }\n isHorizontal() {\n const pos = this.options.position;\n return pos === 'top' || pos === 'bottom';\n }\n _drawArgs(offset) {\n const {top, left, bottom, right, options} = this;\n const align = options.align;\n let rotation = 0;\n let maxWidth, titleX, titleY;\n if (this.isHorizontal()) {\n titleX = _alignStartEnd(align, left, right);\n titleY = top + offset;\n maxWidth = right - left;\n } else {\n if (options.position === 'left') {\n titleX = left + offset;\n titleY = _alignStartEnd(align, bottom, top);\n rotation = PI * -0.5;\n } else {\n titleX = right - offset;\n titleY = _alignStartEnd(align, top, bottom);\n rotation = PI * 0.5;\n }\n maxWidth = bottom - top;\n }\n return {titleX, titleY, maxWidth, rotation};\n }\n draw() {\n const ctx = this.ctx;\n const opts = this.options;\n if (!opts.display) {\n return;\n }\n const fontOpts = toFont(opts.font);\n const lineHeight = fontOpts.lineHeight;\n const offset = lineHeight / 2 + this._padding.top;\n const {titleX, titleY, maxWidth, rotation} = this._drawArgs(offset);\n renderText(ctx, opts.text, 0, 0, fontOpts, {\n color: opts.color,\n maxWidth,\n rotation,\n textAlign: _toLeftRightCenter(opts.align),\n textBaseline: 'middle',\n translation: [titleX, titleY],\n });\n }\n}\nfunction createTitle(chart, titleOpts) {\n const title = new Title({\n ctx: chart.ctx,\n options: titleOpts,\n chart\n });\n layouts.configure(chart, title, titleOpts);\n layouts.addBox(chart, title);\n chart.titleBlock = title;\n}\nvar plugin_title = {\n id: 'title',\n _element: Title,\n start(chart, _args, options) {\n createTitle(chart, options);\n },\n stop(chart) {\n const titleBlock = chart.titleBlock;\n layouts.removeBox(chart, titleBlock);\n delete chart.titleBlock;\n },\n beforeUpdate(chart, _args, options) {\n const title = chart.titleBlock;\n layouts.configure(chart, title, options);\n title.options = options;\n },\n defaults: {\n align: 'center',\n display: false,\n font: {\n weight: 'bold',\n },\n fullSize: true,\n padding: 10,\n position: 'top',\n text: '',\n weight: 2000\n },\n defaultRoutes: {\n color: 'color'\n },\n descriptors: {\n _scriptable: true,\n _indexable: false,\n },\n};\n\nconst map = new WeakMap();\nvar plugin_subtitle = {\n id: 'subtitle',\n start(chart, _args, options) {\n const title = new Title({\n ctx: chart.ctx,\n options,\n chart\n });\n layouts.configure(chart, title, options);\n layouts.addBox(chart, title);\n map.set(chart, title);\n },\n stop(chart) {\n layouts.removeBox(chart, map.get(chart));\n map.delete(chart);\n },\n beforeUpdate(chart, _args, options) {\n const title = map.get(chart);\n layouts.configure(chart, title, options);\n title.options = options;\n },\n defaults: {\n align: 'center',\n display: false,\n font: {\n weight: 'normal',\n },\n fullSize: true,\n padding: 0,\n position: 'top',\n text: '',\n weight: 1500\n },\n defaultRoutes: {\n color: 'color'\n },\n descriptors: {\n _scriptable: true,\n _indexable: false,\n },\n};\n\nconst positioners = {\n average(items) {\n if (!items.length) {\n return false;\n }\n let i, len;\n let x = 0;\n let y = 0;\n let count = 0;\n for (i = 0, len = items.length; i < len; ++i) {\n const el = items[i].element;\n if (el && el.hasValue()) {\n const pos = el.tooltipPosition();\n x += pos.x;\n y += pos.y;\n ++count;\n }\n }\n return {\n x: x / count,\n y: y / count\n };\n },\n nearest(items, eventPosition) {\n if (!items.length) {\n return false;\n }\n let x = eventPosition.x;\n let y = eventPosition.y;\n let minDistance = Number.POSITIVE_INFINITY;\n let i, len, nearestElement;\n for (i = 0, len = items.length; i < len; ++i) {\n const el = items[i].element;\n if (el && el.hasValue()) {\n const center = el.getCenterPoint();\n const d = distanceBetweenPoints(eventPosition, center);\n if (d < minDistance) {\n minDistance = d;\n nearestElement = el;\n }\n }\n }\n if (nearestElement) {\n const tp = nearestElement.tooltipPosition();\n x = tp.x;\n y = tp.y;\n }\n return {\n x,\n y\n };\n }\n};\nfunction pushOrConcat(base, toPush) {\n if (toPush) {\n if (isArray(toPush)) {\n Array.prototype.push.apply(base, toPush);\n } else {\n base.push(toPush);\n }\n }\n return base;\n}\nfunction splitNewlines(str) {\n if ((typeof str === 'string' || str instanceof String) && str.indexOf('\\n') > -1) {\n return str.split('\\n');\n }\n return str;\n}\nfunction createTooltipItem(chart, item) {\n const {element, datasetIndex, index} = item;\n const controller = chart.getDatasetMeta(datasetIndex).controller;\n const {label, value} = controller.getLabelAndValue(index);\n return {\n chart,\n label,\n parsed: controller.getParsed(index),\n raw: chart.data.datasets[datasetIndex].data[index],\n formattedValue: value,\n dataset: controller.getDataset(),\n dataIndex: index,\n datasetIndex,\n element\n };\n}\nfunction getTooltipSize(tooltip, options) {\n const ctx = tooltip.chart.ctx;\n const {body, footer, title} = tooltip;\n const {boxWidth, boxHeight} = options;\n const bodyFont = toFont(options.bodyFont);\n const titleFont = toFont(options.titleFont);\n const footerFont = toFont(options.footerFont);\n const titleLineCount = title.length;\n const footerLineCount = footer.length;\n const bodyLineItemCount = body.length;\n const padding = toPadding(options.padding);\n let height = padding.height;\n let width = 0;\n let combinedBodyLength = body.reduce((count, bodyItem) => count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length, 0);\n combinedBodyLength += tooltip.beforeBody.length + tooltip.afterBody.length;\n if (titleLineCount) {\n height += titleLineCount * titleFont.lineHeight\n\t\t\t+ (titleLineCount - 1) * options.titleSpacing\n\t\t\t+ options.titleMarginBottom;\n }\n if (combinedBodyLength) {\n const bodyLineHeight = options.displayColors ? Math.max(boxHeight, bodyFont.lineHeight) : bodyFont.lineHeight;\n height += bodyLineItemCount * bodyLineHeight\n\t\t\t+ (combinedBodyLength - bodyLineItemCount) * bodyFont.lineHeight\n\t\t\t+ (combinedBodyLength - 1) * options.bodySpacing;\n }\n if (footerLineCount) {\n height += options.footerMarginTop\n\t\t\t+ footerLineCount * footerFont.lineHeight\n\t\t\t+ (footerLineCount - 1) * options.footerSpacing;\n }\n let widthPadding = 0;\n const maxLineWidth = function(line) {\n width = Math.max(width, ctx.measureText(line).width + widthPadding);\n };\n ctx.save();\n ctx.font = titleFont.string;\n each(tooltip.title, maxLineWidth);\n ctx.font = bodyFont.string;\n each(tooltip.beforeBody.concat(tooltip.afterBody), maxLineWidth);\n widthPadding = options.displayColors ? (boxWidth + 2 + options.boxPadding) : 0;\n each(body, (bodyItem) => {\n each(bodyItem.before, maxLineWidth);\n each(bodyItem.lines, maxLineWidth);\n each(bodyItem.after, maxLineWidth);\n });\n widthPadding = 0;\n ctx.font = footerFont.string;\n each(tooltip.footer, maxLineWidth);\n ctx.restore();\n width += padding.width;\n return {width, height};\n}\nfunction determineYAlign(chart, size) {\n const {y, height} = size;\n if (y < height / 2) {\n return 'top';\n } else if (y > (chart.height - height / 2)) {\n return 'bottom';\n }\n return 'center';\n}\nfunction doesNotFitWithAlign(xAlign, chart, options, size) {\n const {x, width} = size;\n const caret = options.caretSize + options.caretPadding;\n if (xAlign === 'left' && x + width + caret > chart.width) {\n return true;\n }\n if (xAlign === 'right' && x - width - caret < 0) {\n return true;\n }\n}\nfunction determineXAlign(chart, options, size, yAlign) {\n const {x, width} = size;\n const {width: chartWidth, chartArea: {left, right}} = chart;\n let xAlign = 'center';\n if (yAlign === 'center') {\n xAlign = x <= (left + right) / 2 ? 'left' : 'right';\n } else if (x <= width / 2) {\n xAlign = 'left';\n } else if (x >= chartWidth - width / 2) {\n xAlign = 'right';\n }\n if (doesNotFitWithAlign(xAlign, chart, options, size)) {\n xAlign = 'center';\n }\n return xAlign;\n}\nfunction determineAlignment(chart, options, size) {\n const yAlign = size.yAlign || options.yAlign || determineYAlign(chart, size);\n return {\n xAlign: size.xAlign || options.xAlign || determineXAlign(chart, options, size, yAlign),\n yAlign\n };\n}\nfunction alignX(size, xAlign) {\n let {x, width} = size;\n if (xAlign === 'right') {\n x -= width;\n } else if (xAlign === 'center') {\n x -= (width / 2);\n }\n return x;\n}\nfunction alignY(size, yAlign, paddingAndSize) {\n let {y, height} = size;\n if (yAlign === 'top') {\n y += paddingAndSize;\n } else if (yAlign === 'bottom') {\n y -= height + paddingAndSize;\n } else {\n y -= (height / 2);\n }\n return y;\n}\nfunction getBackgroundPoint(options, size, alignment, chart) {\n const {caretSize, caretPadding, cornerRadius} = options;\n const {xAlign, yAlign} = alignment;\n const paddingAndSize = caretSize + caretPadding;\n const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(cornerRadius);\n let x = alignX(size, xAlign);\n const y = alignY(size, yAlign, paddingAndSize);\n if (yAlign === 'center') {\n if (xAlign === 'left') {\n x += paddingAndSize;\n } else if (xAlign === 'right') {\n x -= paddingAndSize;\n }\n } else if (xAlign === 'left') {\n x -= Math.max(topLeft, bottomLeft) + caretSize;\n } else if (xAlign === 'right') {\n x += Math.max(topRight, bottomRight) + caretSize;\n }\n return {\n x: _limitValue(x, 0, chart.width - size.width),\n y: _limitValue(y, 0, chart.height - size.height)\n };\n}\nfunction getAlignedX(tooltip, align, options) {\n const padding = toPadding(options.padding);\n return align === 'center'\n ? tooltip.x + tooltip.width / 2\n : align === 'right'\n ? tooltip.x + tooltip.width - padding.right\n : tooltip.x + padding.left;\n}\nfunction getBeforeAfterBodyLines(callback) {\n return pushOrConcat([], splitNewlines(callback));\n}\nfunction createTooltipContext(parent, tooltip, tooltipItems) {\n return createContext(parent, {\n tooltip,\n tooltipItems,\n type: 'tooltip'\n });\n}\nfunction overrideCallbacks(callbacks, context) {\n const override = context && context.dataset && context.dataset.tooltip && context.dataset.tooltip.callbacks;\n return override ? callbacks.override(override) : callbacks;\n}\nclass Tooltip extends Element {\n constructor(config) {\n super();\n this.opacity = 0;\n this._active = [];\n this._eventPosition = undefined;\n this._size = undefined;\n this._cachedAnimations = undefined;\n this._tooltipItems = [];\n this.$animations = undefined;\n this.$context = undefined;\n this.chart = config.chart || config._chart;\n this._chart = this.chart;\n this.options = config.options;\n this.dataPoints = undefined;\n this.title = undefined;\n this.beforeBody = undefined;\n this.body = undefined;\n this.afterBody = undefined;\n this.footer = undefined;\n this.xAlign = undefined;\n this.yAlign = undefined;\n this.x = undefined;\n this.y = undefined;\n this.height = undefined;\n this.width = undefined;\n this.caretX = undefined;\n this.caretY = undefined;\n this.labelColors = undefined;\n this.labelPointStyles = undefined;\n this.labelTextColors = undefined;\n }\n initialize(options) {\n this.options = options;\n this._cachedAnimations = undefined;\n this.$context = undefined;\n }\n _resolveAnimations() {\n const cached = this._cachedAnimations;\n if (cached) {\n return cached;\n }\n const chart = this.chart;\n const options = this.options.setContext(this.getContext());\n const opts = options.enabled && chart.options.animation && options.animations;\n const animations = new Animations(this.chart, opts);\n if (opts._cacheable) {\n this._cachedAnimations = Object.freeze(animations);\n }\n return animations;\n }\n getContext() {\n return this.$context ||\n\t\t\t(this.$context = createTooltipContext(this.chart.getContext(), this, this._tooltipItems));\n }\n getTitle(context, options) {\n const {callbacks} = options;\n const beforeTitle = callbacks.beforeTitle.apply(this, [context]);\n const title = callbacks.title.apply(this, [context]);\n const afterTitle = callbacks.afterTitle.apply(this, [context]);\n let lines = [];\n lines = pushOrConcat(lines, splitNewlines(beforeTitle));\n lines = pushOrConcat(lines, splitNewlines(title));\n lines = pushOrConcat(lines, splitNewlines(afterTitle));\n return lines;\n }\n getBeforeBody(tooltipItems, options) {\n return getBeforeAfterBodyLines(options.callbacks.beforeBody.apply(this, [tooltipItems]));\n }\n getBody(tooltipItems, options) {\n const {callbacks} = options;\n const bodyItems = [];\n each(tooltipItems, (context) => {\n const bodyItem = {\n before: [],\n lines: [],\n after: []\n };\n const scoped = overrideCallbacks(callbacks, context);\n pushOrConcat(bodyItem.before, splitNewlines(scoped.beforeLabel.call(this, context)));\n pushOrConcat(bodyItem.lines, scoped.label.call(this, context));\n pushOrConcat(bodyItem.after, splitNewlines(scoped.afterLabel.call(this, context)));\n bodyItems.push(bodyItem);\n });\n return bodyItems;\n }\n getAfterBody(tooltipItems, options) {\n return getBeforeAfterBodyLines(options.callbacks.afterBody.apply(this, [tooltipItems]));\n }\n getFooter(tooltipItems, options) {\n const {callbacks} = options;\n const beforeFooter = callbacks.beforeFooter.apply(this, [tooltipItems]);\n const footer = callbacks.footer.apply(this, [tooltipItems]);\n const afterFooter = callbacks.afterFooter.apply(this, [tooltipItems]);\n let lines = [];\n lines = pushOrConcat(lines, splitNewlines(beforeFooter));\n lines = pushOrConcat(lines, splitNewlines(footer));\n lines = pushOrConcat(lines, splitNewlines(afterFooter));\n return lines;\n }\n _createItems(options) {\n const active = this._active;\n const data = this.chart.data;\n const labelColors = [];\n const labelPointStyles = [];\n const labelTextColors = [];\n let tooltipItems = [];\n let i, len;\n for (i = 0, len = active.length; i < len; ++i) {\n tooltipItems.push(createTooltipItem(this.chart, active[i]));\n }\n if (options.filter) {\n tooltipItems = tooltipItems.filter((element, index, array) => options.filter(element, index, array, data));\n }\n if (options.itemSort) {\n tooltipItems = tooltipItems.sort((a, b) => options.itemSort(a, b, data));\n }\n each(tooltipItems, (context) => {\n const scoped = overrideCallbacks(options.callbacks, context);\n labelColors.push(scoped.labelColor.call(this, context));\n labelPointStyles.push(scoped.labelPointStyle.call(this, context));\n labelTextColors.push(scoped.labelTextColor.call(this, context));\n });\n this.labelColors = labelColors;\n this.labelPointStyles = labelPointStyles;\n this.labelTextColors = labelTextColors;\n this.dataPoints = tooltipItems;\n return tooltipItems;\n }\n update(changed, replay) {\n const options = this.options.setContext(this.getContext());\n const active = this._active;\n let properties;\n let tooltipItems = [];\n if (!active.length) {\n if (this.opacity !== 0) {\n properties = {\n opacity: 0\n };\n }\n } else {\n const position = positioners[options.position].call(this, active, this._eventPosition);\n tooltipItems = this._createItems(options);\n this.title = this.getTitle(tooltipItems, options);\n this.beforeBody = this.getBeforeBody(tooltipItems, options);\n this.body = this.getBody(tooltipItems, options);\n this.afterBody = this.getAfterBody(tooltipItems, options);\n this.footer = this.getFooter(tooltipItems, options);\n const size = this._size = getTooltipSize(this, options);\n const positionAndSize = Object.assign({}, position, size);\n const alignment = determineAlignment(this.chart, options, positionAndSize);\n const backgroundPoint = getBackgroundPoint(options, positionAndSize, alignment, this.chart);\n this.xAlign = alignment.xAlign;\n this.yAlign = alignment.yAlign;\n properties = {\n opacity: 1,\n x: backgroundPoint.x,\n y: backgroundPoint.y,\n width: size.width,\n height: size.height,\n caretX: position.x,\n caretY: position.y\n };\n }\n this._tooltipItems = tooltipItems;\n this.$context = undefined;\n if (properties) {\n this._resolveAnimations().update(this, properties);\n }\n if (changed && options.external) {\n options.external.call(this, {chart: this.chart, tooltip: this, replay});\n }\n }\n drawCaret(tooltipPoint, ctx, size, options) {\n const caretPosition = this.getCaretPosition(tooltipPoint, size, options);\n ctx.lineTo(caretPosition.x1, caretPosition.y1);\n ctx.lineTo(caretPosition.x2, caretPosition.y2);\n ctx.lineTo(caretPosition.x3, caretPosition.y3);\n }\n getCaretPosition(tooltipPoint, size, options) {\n const {xAlign, yAlign} = this;\n const {caretSize, cornerRadius} = options;\n const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(cornerRadius);\n const {x: ptX, y: ptY} = tooltipPoint;\n const {width, height} = size;\n let x1, x2, x3, y1, y2, y3;\n if (yAlign === 'center') {\n y2 = ptY + (height / 2);\n if (xAlign === 'left') {\n x1 = ptX;\n x2 = x1 - caretSize;\n y1 = y2 + caretSize;\n y3 = y2 - caretSize;\n } else {\n x1 = ptX + width;\n x2 = x1 + caretSize;\n y1 = y2 - caretSize;\n y3 = y2 + caretSize;\n }\n x3 = x1;\n } else {\n if (xAlign === 'left') {\n x2 = ptX + Math.max(topLeft, bottomLeft) + (caretSize);\n } else if (xAlign === 'right') {\n x2 = ptX + width - Math.max(topRight, bottomRight) - caretSize;\n } else {\n x2 = this.caretX;\n }\n if (yAlign === 'top') {\n y1 = ptY;\n y2 = y1 - caretSize;\n x1 = x2 - caretSize;\n x3 = x2 + caretSize;\n } else {\n y1 = ptY + height;\n y2 = y1 + caretSize;\n x1 = x2 + caretSize;\n x3 = x2 - caretSize;\n }\n y3 = y1;\n }\n return {x1, x2, x3, y1, y2, y3};\n }\n drawTitle(pt, ctx, options) {\n const title = this.title;\n const length = title.length;\n let titleFont, titleSpacing, i;\n if (length) {\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n pt.x = getAlignedX(this, options.titleAlign, options);\n ctx.textAlign = rtlHelper.textAlign(options.titleAlign);\n ctx.textBaseline = 'middle';\n titleFont = toFont(options.titleFont);\n titleSpacing = options.titleSpacing;\n ctx.fillStyle = options.titleColor;\n ctx.font = titleFont.string;\n for (i = 0; i < length; ++i) {\n ctx.fillText(title[i], rtlHelper.x(pt.x), pt.y + titleFont.lineHeight / 2);\n pt.y += titleFont.lineHeight + titleSpacing;\n if (i + 1 === length) {\n pt.y += options.titleMarginBottom - titleSpacing;\n }\n }\n }\n }\n _drawColorBox(ctx, pt, i, rtlHelper, options) {\n const labelColors = this.labelColors[i];\n const labelPointStyle = this.labelPointStyles[i];\n const {boxHeight, boxWidth, boxPadding} = options;\n const bodyFont = toFont(options.bodyFont);\n const colorX = getAlignedX(this, 'left', options);\n const rtlColorX = rtlHelper.x(colorX);\n const yOffSet = boxHeight < bodyFont.lineHeight ? (bodyFont.lineHeight - boxHeight) / 2 : 0;\n const colorY = pt.y + yOffSet;\n if (options.usePointStyle) {\n const drawOptions = {\n radius: Math.min(boxWidth, boxHeight) / 2,\n pointStyle: labelPointStyle.pointStyle,\n rotation: labelPointStyle.rotation,\n borderWidth: 1\n };\n const centerX = rtlHelper.leftForLtr(rtlColorX, boxWidth) + boxWidth / 2;\n const centerY = colorY + boxHeight / 2;\n ctx.strokeStyle = options.multiKeyBackground;\n ctx.fillStyle = options.multiKeyBackground;\n drawPoint(ctx, drawOptions, centerX, centerY);\n ctx.strokeStyle = labelColors.borderColor;\n ctx.fillStyle = labelColors.backgroundColor;\n drawPoint(ctx, drawOptions, centerX, centerY);\n } else {\n ctx.lineWidth = labelColors.borderWidth || 1;\n ctx.strokeStyle = labelColors.borderColor;\n ctx.setLineDash(labelColors.borderDash || []);\n ctx.lineDashOffset = labelColors.borderDashOffset || 0;\n const outerX = rtlHelper.leftForLtr(rtlColorX, boxWidth - boxPadding);\n const innerX = rtlHelper.leftForLtr(rtlHelper.xPlus(rtlColorX, 1), boxWidth - boxPadding - 2);\n const borderRadius = toTRBLCorners(labelColors.borderRadius);\n if (Object.values(borderRadius).some(v => v !== 0)) {\n ctx.beginPath();\n ctx.fillStyle = options.multiKeyBackground;\n addRoundedRectPath(ctx, {\n x: outerX,\n y: colorY,\n w: boxWidth,\n h: boxHeight,\n radius: borderRadius,\n });\n ctx.fill();\n ctx.stroke();\n ctx.fillStyle = labelColors.backgroundColor;\n ctx.beginPath();\n addRoundedRectPath(ctx, {\n x: innerX,\n y: colorY + 1,\n w: boxWidth - 2,\n h: boxHeight - 2,\n radius: borderRadius,\n });\n ctx.fill();\n } else {\n ctx.fillStyle = options.multiKeyBackground;\n ctx.fillRect(outerX, colorY, boxWidth, boxHeight);\n ctx.strokeRect(outerX, colorY, boxWidth, boxHeight);\n ctx.fillStyle = labelColors.backgroundColor;\n ctx.fillRect(innerX, colorY + 1, boxWidth - 2, boxHeight - 2);\n }\n }\n ctx.fillStyle = this.labelTextColors[i];\n }\n drawBody(pt, ctx, options) {\n const {body} = this;\n const {bodySpacing, bodyAlign, displayColors, boxHeight, boxWidth, boxPadding} = options;\n const bodyFont = toFont(options.bodyFont);\n let bodyLineHeight = bodyFont.lineHeight;\n let xLinePadding = 0;\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n const fillLineOfText = function(line) {\n ctx.fillText(line, rtlHelper.x(pt.x + xLinePadding), pt.y + bodyLineHeight / 2);\n pt.y += bodyLineHeight + bodySpacing;\n };\n const bodyAlignForCalculation = rtlHelper.textAlign(bodyAlign);\n let bodyItem, textColor, lines, i, j, ilen, jlen;\n ctx.textAlign = bodyAlign;\n ctx.textBaseline = 'middle';\n ctx.font = bodyFont.string;\n pt.x = getAlignedX(this, bodyAlignForCalculation, options);\n ctx.fillStyle = options.bodyColor;\n each(this.beforeBody, fillLineOfText);\n xLinePadding = displayColors && bodyAlignForCalculation !== 'right'\n ? bodyAlign === 'center' ? (boxWidth / 2 + boxPadding) : (boxWidth + 2 + boxPadding)\n : 0;\n for (i = 0, ilen = body.length; i < ilen; ++i) {\n bodyItem = body[i];\n textColor = this.labelTextColors[i];\n ctx.fillStyle = textColor;\n each(bodyItem.before, fillLineOfText);\n lines = bodyItem.lines;\n if (displayColors && lines.length) {\n this._drawColorBox(ctx, pt, i, rtlHelper, options);\n bodyLineHeight = Math.max(bodyFont.lineHeight, boxHeight);\n }\n for (j = 0, jlen = lines.length; j < jlen; ++j) {\n fillLineOfText(lines[j]);\n bodyLineHeight = bodyFont.lineHeight;\n }\n each(bodyItem.after, fillLineOfText);\n }\n xLinePadding = 0;\n bodyLineHeight = bodyFont.lineHeight;\n each(this.afterBody, fillLineOfText);\n pt.y -= bodySpacing;\n }\n drawFooter(pt, ctx, options) {\n const footer = this.footer;\n const length = footer.length;\n let footerFont, i;\n if (length) {\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n pt.x = getAlignedX(this, options.footerAlign, options);\n pt.y += options.footerMarginTop;\n ctx.textAlign = rtlHelper.textAlign(options.footerAlign);\n ctx.textBaseline = 'middle';\n footerFont = toFont(options.footerFont);\n ctx.fillStyle = options.footerColor;\n ctx.font = footerFont.string;\n for (i = 0; i < length; ++i) {\n ctx.fillText(footer[i], rtlHelper.x(pt.x), pt.y + footerFont.lineHeight / 2);\n pt.y += footerFont.lineHeight + options.footerSpacing;\n }\n }\n }\n drawBackground(pt, ctx, tooltipSize, options) {\n const {xAlign, yAlign} = this;\n const {x, y} = pt;\n const {width, height} = tooltipSize;\n const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(options.cornerRadius);\n ctx.fillStyle = options.backgroundColor;\n ctx.strokeStyle = options.borderColor;\n ctx.lineWidth = options.borderWidth;\n ctx.beginPath();\n ctx.moveTo(x + topLeft, y);\n if (yAlign === 'top') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + width - topRight, y);\n ctx.quadraticCurveTo(x + width, y, x + width, y + topRight);\n if (yAlign === 'center' && xAlign === 'right') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + width, y + height - bottomRight);\n ctx.quadraticCurveTo(x + width, y + height, x + width - bottomRight, y + height);\n if (yAlign === 'bottom') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + bottomLeft, y + height);\n ctx.quadraticCurveTo(x, y + height, x, y + height - bottomLeft);\n if (yAlign === 'center' && xAlign === 'left') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x, y + topLeft);\n ctx.quadraticCurveTo(x, y, x + topLeft, y);\n ctx.closePath();\n ctx.fill();\n if (options.borderWidth > 0) {\n ctx.stroke();\n }\n }\n _updateAnimationTarget(options) {\n const chart = this.chart;\n const anims = this.$animations;\n const animX = anims && anims.x;\n const animY = anims && anims.y;\n if (animX || animY) {\n const position = positioners[options.position].call(this, this._active, this._eventPosition);\n if (!position) {\n return;\n }\n const size = this._size = getTooltipSize(this, options);\n const positionAndSize = Object.assign({}, position, this._size);\n const alignment = determineAlignment(chart, options, positionAndSize);\n const point = getBackgroundPoint(options, positionAndSize, alignment, chart);\n if (animX._to !== point.x || animY._to !== point.y) {\n this.xAlign = alignment.xAlign;\n this.yAlign = alignment.yAlign;\n this.width = size.width;\n this.height = size.height;\n this.caretX = position.x;\n this.caretY = position.y;\n this._resolveAnimations().update(this, point);\n }\n }\n }\n draw(ctx) {\n const options = this.options.setContext(this.getContext());\n let opacity = this.opacity;\n if (!opacity) {\n return;\n }\n this._updateAnimationTarget(options);\n const tooltipSize = {\n width: this.width,\n height: this.height\n };\n const pt = {\n x: this.x,\n y: this.y\n };\n opacity = Math.abs(opacity) < 1e-3 ? 0 : opacity;\n const padding = toPadding(options.padding);\n const hasTooltipContent = this.title.length || this.beforeBody.length || this.body.length || this.afterBody.length || this.footer.length;\n if (options.enabled && hasTooltipContent) {\n ctx.save();\n ctx.globalAlpha = opacity;\n this.drawBackground(pt, ctx, tooltipSize, options);\n overrideTextDirection(ctx, options.textDirection);\n pt.y += padding.top;\n this.drawTitle(pt, ctx, options);\n this.drawBody(pt, ctx, options);\n this.drawFooter(pt, ctx, options);\n restoreTextDirection(ctx, options.textDirection);\n ctx.restore();\n }\n }\n getActiveElements() {\n return this._active || [];\n }\n setActiveElements(activeElements, eventPosition) {\n const lastActive = this._active;\n const active = activeElements.map(({datasetIndex, index}) => {\n const meta = this.chart.getDatasetMeta(datasetIndex);\n if (!meta) {\n throw new Error('Cannot find a dataset at index ' + datasetIndex);\n }\n return {\n datasetIndex,\n element: meta.data[index],\n index,\n };\n });\n const changed = !_elementsEqual(lastActive, active);\n const positionChanged = this._positionChanged(active, eventPosition);\n if (changed || positionChanged) {\n this._active = active;\n this._eventPosition = eventPosition;\n this._ignoreReplayEvents = true;\n this.update(true);\n }\n }\n handleEvent(e, replay, inChartArea = true) {\n if (replay && this._ignoreReplayEvents) {\n return false;\n }\n this._ignoreReplayEvents = false;\n const options = this.options;\n const lastActive = this._active || [];\n const active = this._getActiveElements(e, lastActive, replay, inChartArea);\n const positionChanged = this._positionChanged(active, e);\n const changed = replay || !_elementsEqual(active, lastActive) || positionChanged;\n if (changed) {\n this._active = active;\n if (options.enabled || options.external) {\n this._eventPosition = {\n x: e.x,\n y: e.y\n };\n this.update(true, replay);\n }\n }\n return changed;\n }\n _getActiveElements(e, lastActive, replay, inChartArea) {\n const options = this.options;\n if (e.type === 'mouseout') {\n return [];\n }\n if (!inChartArea) {\n return lastActive;\n }\n const active = this.chart.getElementsAtEventForMode(e, options.mode, options, replay);\n if (options.reverse) {\n active.reverse();\n }\n return active;\n }\n _positionChanged(active, e) {\n const {caretX, caretY, options} = this;\n const position = positioners[options.position].call(this, active, e);\n return position !== false && (caretX !== position.x || caretY !== position.y);\n }\n}\nTooltip.positioners = positioners;\nvar plugin_tooltip = {\n id: 'tooltip',\n _element: Tooltip,\n positioners,\n afterInit(chart, _args, options) {\n if (options) {\n chart.tooltip = new Tooltip({chart, options});\n }\n },\n beforeUpdate(chart, _args, options) {\n if (chart.tooltip) {\n chart.tooltip.initialize(options);\n }\n },\n reset(chart, _args, options) {\n if (chart.tooltip) {\n chart.tooltip.initialize(options);\n }\n },\n afterDraw(chart) {\n const tooltip = chart.tooltip;\n const args = {\n tooltip\n };\n if (chart.notifyPlugins('beforeTooltipDraw', args) === false) {\n return;\n }\n if (tooltip) {\n tooltip.draw(chart.ctx);\n }\n chart.notifyPlugins('afterTooltipDraw', args);\n },\n afterEvent(chart, args) {\n if (chart.tooltip) {\n const useFinalPosition = args.replay;\n if (chart.tooltip.handleEvent(args.event, useFinalPosition, args.inChartArea)) {\n args.changed = true;\n }\n }\n },\n defaults: {\n enabled: true,\n external: null,\n position: 'average',\n backgroundColor: 'rgba(0,0,0,0.8)',\n titleColor: '#fff',\n titleFont: {\n weight: 'bold',\n },\n titleSpacing: 2,\n titleMarginBottom: 6,\n titleAlign: 'left',\n bodyColor: '#fff',\n bodySpacing: 2,\n bodyFont: {\n },\n bodyAlign: 'left',\n footerColor: '#fff',\n footerSpacing: 2,\n footerMarginTop: 6,\n footerFont: {\n weight: 'bold',\n },\n footerAlign: 'left',\n padding: 6,\n caretPadding: 2,\n caretSize: 5,\n cornerRadius: 6,\n boxHeight: (ctx, opts) => opts.bodyFont.size,\n boxWidth: (ctx, opts) => opts.bodyFont.size,\n multiKeyBackground: '#fff',\n displayColors: true,\n boxPadding: 0,\n borderColor: 'rgba(0,0,0,0)',\n borderWidth: 0,\n animation: {\n duration: 400,\n easing: 'easeOutQuart',\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'width', 'height', 'caretX', 'caretY'],\n },\n opacity: {\n easing: 'linear',\n duration: 200\n }\n },\n callbacks: {\n beforeTitle: noop,\n title(tooltipItems) {\n if (tooltipItems.length > 0) {\n const item = tooltipItems[0];\n const labels = item.chart.data.labels;\n const labelCount = labels ? labels.length : 0;\n if (this && this.options && this.options.mode === 'dataset') {\n return item.dataset.label || '';\n } else if (item.label) {\n return item.label;\n } else if (labelCount > 0 && item.dataIndex < labelCount) {\n return labels[item.dataIndex];\n }\n }\n return '';\n },\n afterTitle: noop,\n beforeBody: noop,\n beforeLabel: noop,\n label(tooltipItem) {\n if (this && this.options && this.options.mode === 'dataset') {\n return tooltipItem.label + ': ' + tooltipItem.formattedValue || tooltipItem.formattedValue;\n }\n let label = tooltipItem.dataset.label || '';\n if (label) {\n label += ': ';\n }\n const value = tooltipItem.formattedValue;\n if (!isNullOrUndef(value)) {\n label += value;\n }\n return label;\n },\n labelColor(tooltipItem) {\n const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n const options = meta.controller.getStyle(tooltipItem.dataIndex);\n return {\n borderColor: options.borderColor,\n backgroundColor: options.backgroundColor,\n borderWidth: options.borderWidth,\n borderDash: options.borderDash,\n borderDashOffset: options.borderDashOffset,\n borderRadius: 0,\n };\n },\n labelTextColor() {\n return this.options.bodyColor;\n },\n labelPointStyle(tooltipItem) {\n const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n const options = meta.controller.getStyle(tooltipItem.dataIndex);\n return {\n pointStyle: options.pointStyle,\n rotation: options.rotation,\n };\n },\n afterLabel: noop,\n afterBody: noop,\n beforeFooter: noop,\n footer: noop,\n afterFooter: noop\n }\n },\n defaultRoutes: {\n bodyFont: 'font',\n footerFont: 'font',\n titleFont: 'font'\n },\n descriptors: {\n _scriptable: (name) => name !== 'filter' && name !== 'itemSort' && name !== 'external',\n _indexable: false,\n callbacks: {\n _scriptable: false,\n _indexable: false,\n },\n animation: {\n _fallback: false\n },\n animations: {\n _fallback: 'animation'\n }\n },\n additionalOptionScopes: ['interaction']\n};\n\nvar plugins = /*#__PURE__*/Object.freeze({\n__proto__: null,\nDecimation: plugin_decimation,\nFiller: plugin_filler,\nLegend: plugin_legend,\nSubTitle: plugin_subtitle,\nTitle: plugin_title,\nTooltip: plugin_tooltip\n});\n\nconst addIfString = (labels, raw, index, addedLabels) => {\n if (typeof raw === 'string') {\n index = labels.push(raw) - 1;\n addedLabels.unshift({index, label: raw});\n } else if (isNaN(raw)) {\n index = null;\n }\n return index;\n};\nfunction findOrAddLabel(labels, raw, index, addedLabels) {\n const first = labels.indexOf(raw);\n if (first === -1) {\n return addIfString(labels, raw, index, addedLabels);\n }\n const last = labels.lastIndexOf(raw);\n return first !== last ? index : first;\n}\nconst validIndex = (index, max) => index === null ? null : _limitValue(Math.round(index), 0, max);\nclass CategoryScale extends Scale {\n constructor(cfg) {\n super(cfg);\n this._startValue = undefined;\n this._valueRange = 0;\n this._addedLabels = [];\n }\n init(scaleOptions) {\n const added = this._addedLabels;\n if (added.length) {\n const labels = this.getLabels();\n for (const {index, label} of added) {\n if (labels[index] === label) {\n labels.splice(index, 1);\n }\n }\n this._addedLabels = [];\n }\n super.init(scaleOptions);\n }\n parse(raw, index) {\n if (isNullOrUndef(raw)) {\n return null;\n }\n const labels = this.getLabels();\n index = isFinite(index) && labels[index] === raw ? index\n : findOrAddLabel(labels, raw, valueOrDefault(index, raw), this._addedLabels);\n return validIndex(index, labels.length - 1);\n }\n determineDataLimits() {\n const {minDefined, maxDefined} = this.getUserBounds();\n let {min, max} = this.getMinMax(true);\n if (this.options.bounds === 'ticks') {\n if (!minDefined) {\n min = 0;\n }\n if (!maxDefined) {\n max = this.getLabels().length - 1;\n }\n }\n this.min = min;\n this.max = max;\n }\n buildTicks() {\n const min = this.min;\n const max = this.max;\n const offset = this.options.offset;\n const ticks = [];\n let labels = this.getLabels();\n labels = (min === 0 && max === labels.length - 1) ? labels : labels.slice(min, max + 1);\n this._valueRange = Math.max(labels.length - (offset ? 0 : 1), 1);\n this._startValue = this.min - (offset ? 0.5 : 0);\n for (let value = min; value <= max; value++) {\n ticks.push({value});\n }\n return ticks;\n }\n getLabelForValue(value) {\n const labels = this.getLabels();\n if (value >= 0 && value < labels.length) {\n return labels[value];\n }\n return value;\n }\n configure() {\n super.configure();\n if (!this.isHorizontal()) {\n this._reversePixels = !this._reversePixels;\n }\n }\n getPixelForValue(value) {\n if (typeof value !== 'number') {\n value = this.parse(value);\n }\n return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n }\n getPixelForTick(index) {\n const ticks = this.ticks;\n if (index < 0 || index > ticks.length - 1) {\n return null;\n }\n return this.getPixelForValue(ticks[index].value);\n }\n getValueForPixel(pixel) {\n return Math.round(this._startValue + this.getDecimalForPixel(pixel) * this._valueRange);\n }\n getBasePixel() {\n return this.bottom;\n }\n}\nCategoryScale.id = 'category';\nCategoryScale.defaults = {\n ticks: {\n callback: CategoryScale.prototype.getLabelForValue\n }\n};\n\nfunction generateTicks$1(generationOptions, dataRange) {\n const ticks = [];\n const MIN_SPACING = 1e-14;\n const {bounds, step, min, max, precision, count, maxTicks, maxDigits, includeBounds} = generationOptions;\n const unit = step || 1;\n const maxSpaces = maxTicks - 1;\n const {min: rmin, max: rmax} = dataRange;\n const minDefined = !isNullOrUndef(min);\n const maxDefined = !isNullOrUndef(max);\n const countDefined = !isNullOrUndef(count);\n const minSpacing = (rmax - rmin) / (maxDigits + 1);\n let spacing = niceNum((rmax - rmin) / maxSpaces / unit) * unit;\n let factor, niceMin, niceMax, numSpaces;\n if (spacing < MIN_SPACING && !minDefined && !maxDefined) {\n return [{value: rmin}, {value: rmax}];\n }\n numSpaces = Math.ceil(rmax / spacing) - Math.floor(rmin / spacing);\n if (numSpaces > maxSpaces) {\n spacing = niceNum(numSpaces * spacing / maxSpaces / unit) * unit;\n }\n if (!isNullOrUndef(precision)) {\n factor = Math.pow(10, precision);\n spacing = Math.ceil(spacing * factor) / factor;\n }\n if (bounds === 'ticks') {\n niceMin = Math.floor(rmin / spacing) * spacing;\n niceMax = Math.ceil(rmax / spacing) * spacing;\n } else {\n niceMin = rmin;\n niceMax = rmax;\n }\n if (minDefined && maxDefined && step && almostWhole((max - min) / step, spacing / 1000)) {\n numSpaces = Math.round(Math.min((max - min) / spacing, maxTicks));\n spacing = (max - min) / numSpaces;\n niceMin = min;\n niceMax = max;\n } else if (countDefined) {\n niceMin = minDefined ? min : niceMin;\n niceMax = maxDefined ? max : niceMax;\n numSpaces = count - 1;\n spacing = (niceMax - niceMin) / numSpaces;\n } else {\n numSpaces = (niceMax - niceMin) / spacing;\n if (almostEquals(numSpaces, Math.round(numSpaces), spacing / 1000)) {\n numSpaces = Math.round(numSpaces);\n } else {\n numSpaces = Math.ceil(numSpaces);\n }\n }\n const decimalPlaces = Math.max(\n _decimalPlaces(spacing),\n _decimalPlaces(niceMin)\n );\n factor = Math.pow(10, isNullOrUndef(precision) ? decimalPlaces : precision);\n niceMin = Math.round(niceMin * factor) / factor;\n niceMax = Math.round(niceMax * factor) / factor;\n let j = 0;\n if (minDefined) {\n if (includeBounds && niceMin !== min) {\n ticks.push({value: min});\n if (niceMin < min) {\n j++;\n }\n if (almostEquals(Math.round((niceMin + j * spacing) * factor) / factor, min, relativeLabelSize(min, minSpacing, generationOptions))) {\n j++;\n }\n } else if (niceMin < min) {\n j++;\n }\n }\n for (; j < numSpaces; ++j) {\n ticks.push({value: Math.round((niceMin + j * spacing) * factor) / factor});\n }\n if (maxDefined && includeBounds && niceMax !== max) {\n if (ticks.length && almostEquals(ticks[ticks.length - 1].value, max, relativeLabelSize(max, minSpacing, generationOptions))) {\n ticks[ticks.length - 1].value = max;\n } else {\n ticks.push({value: max});\n }\n } else if (!maxDefined || niceMax === max) {\n ticks.push({value: niceMax});\n }\n return ticks;\n}\nfunction relativeLabelSize(value, minSpacing, {horizontal, minRotation}) {\n const rad = toRadians(minRotation);\n const ratio = (horizontal ? Math.sin(rad) : Math.cos(rad)) || 0.001;\n const length = 0.75 * minSpacing * ('' + value).length;\n return Math.min(minSpacing / ratio, length);\n}\nclass LinearScaleBase extends Scale {\n constructor(cfg) {\n super(cfg);\n this.start = undefined;\n this.end = undefined;\n this._startValue = undefined;\n this._endValue = undefined;\n this._valueRange = 0;\n }\n parse(raw, index) {\n if (isNullOrUndef(raw)) {\n return null;\n }\n if ((typeof raw === 'number' || raw instanceof Number) && !isFinite(+raw)) {\n return null;\n }\n return +raw;\n }\n handleTickRangeOptions() {\n const {beginAtZero} = this.options;\n const {minDefined, maxDefined} = this.getUserBounds();\n let {min, max} = this;\n const setMin = v => (min = minDefined ? min : v);\n const setMax = v => (max = maxDefined ? max : v);\n if (beginAtZero) {\n const minSign = sign(min);\n const maxSign = sign(max);\n if (minSign < 0 && maxSign < 0) {\n setMax(0);\n } else if (minSign > 0 && maxSign > 0) {\n setMin(0);\n }\n }\n if (min === max) {\n let offset = 1;\n if (max >= Number.MAX_SAFE_INTEGER || min <= Number.MIN_SAFE_INTEGER) {\n offset = Math.abs(max * 0.05);\n }\n setMax(max + offset);\n if (!beginAtZero) {\n setMin(min - offset);\n }\n }\n this.min = min;\n this.max = max;\n }\n getTickLimit() {\n const tickOpts = this.options.ticks;\n let {maxTicksLimit, stepSize} = tickOpts;\n let maxTicks;\n if (stepSize) {\n maxTicks = Math.ceil(this.max / stepSize) - Math.floor(this.min / stepSize) + 1;\n if (maxTicks > 1000) {\n console.warn(`scales.${this.id}.ticks.stepSize: ${stepSize} would result generating up to ${maxTicks} ticks. Limiting to 1000.`);\n maxTicks = 1000;\n }\n } else {\n maxTicks = this.computeTickLimit();\n maxTicksLimit = maxTicksLimit || 11;\n }\n if (maxTicksLimit) {\n maxTicks = Math.min(maxTicksLimit, maxTicks);\n }\n return maxTicks;\n }\n computeTickLimit() {\n return Number.POSITIVE_INFINITY;\n }\n buildTicks() {\n const opts = this.options;\n const tickOpts = opts.ticks;\n let maxTicks = this.getTickLimit();\n maxTicks = Math.max(2, maxTicks);\n const numericGeneratorOptions = {\n maxTicks,\n bounds: opts.bounds,\n min: opts.min,\n max: opts.max,\n precision: tickOpts.precision,\n step: tickOpts.stepSize,\n count: tickOpts.count,\n maxDigits: this._maxDigits(),\n horizontal: this.isHorizontal(),\n minRotation: tickOpts.minRotation || 0,\n includeBounds: tickOpts.includeBounds !== false\n };\n const dataRange = this._range || this;\n const ticks = generateTicks$1(numericGeneratorOptions, dataRange);\n if (opts.bounds === 'ticks') {\n _setMinAndMaxByKey(ticks, this, 'value');\n }\n if (opts.reverse) {\n ticks.reverse();\n this.start = this.max;\n this.end = this.min;\n } else {\n this.start = this.min;\n this.end = this.max;\n }\n return ticks;\n }\n configure() {\n const ticks = this.ticks;\n let start = this.min;\n let end = this.max;\n super.configure();\n if (this.options.offset && ticks.length) {\n const offset = (end - start) / Math.max(ticks.length - 1, 1) / 2;\n start -= offset;\n end += offset;\n }\n this._startValue = start;\n this._endValue = end;\n this._valueRange = end - start;\n }\n getLabelForValue(value) {\n return formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n }\n}\n\nclass LinearScale extends LinearScaleBase {\n determineDataLimits() {\n const {min, max} = this.getMinMax(true);\n this.min = isNumberFinite(min) ? min : 0;\n this.max = isNumberFinite(max) ? max : 1;\n this.handleTickRangeOptions();\n }\n computeTickLimit() {\n const horizontal = this.isHorizontal();\n const length = horizontal ? this.width : this.height;\n const minRotation = toRadians(this.options.ticks.minRotation);\n const ratio = (horizontal ? Math.sin(minRotation) : Math.cos(minRotation)) || 0.001;\n const tickFont = this._resolveTickFontOptions(0);\n return Math.ceil(length / Math.min(40, tickFont.lineHeight / ratio));\n }\n getPixelForValue(value) {\n return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n }\n getValueForPixel(pixel) {\n return this._startValue + this.getDecimalForPixel(pixel) * this._valueRange;\n }\n}\nLinearScale.id = 'linear';\nLinearScale.defaults = {\n ticks: {\n callback: Ticks.formatters.numeric\n }\n};\n\nfunction isMajor(tickVal) {\n const remain = tickVal / (Math.pow(10, Math.floor(log10(tickVal))));\n return remain === 1;\n}\nfunction generateTicks(generationOptions, dataRange) {\n const endExp = Math.floor(log10(dataRange.max));\n const endSignificand = Math.ceil(dataRange.max / Math.pow(10, endExp));\n const ticks = [];\n let tickVal = finiteOrDefault(generationOptions.min, Math.pow(10, Math.floor(log10(dataRange.min))));\n let exp = Math.floor(log10(tickVal));\n let significand = Math.floor(tickVal / Math.pow(10, exp));\n let precision = exp < 0 ? Math.pow(10, Math.abs(exp)) : 1;\n do {\n ticks.push({value: tickVal, major: isMajor(tickVal)});\n ++significand;\n if (significand === 10) {\n significand = 1;\n ++exp;\n precision = exp >= 0 ? 1 : precision;\n }\n tickVal = Math.round(significand * Math.pow(10, exp) * precision) / precision;\n } while (exp < endExp || (exp === endExp && significand < endSignificand));\n const lastTick = finiteOrDefault(generationOptions.max, tickVal);\n ticks.push({value: lastTick, major: isMajor(tickVal)});\n return ticks;\n}\nclass LogarithmicScale extends Scale {\n constructor(cfg) {\n super(cfg);\n this.start = undefined;\n this.end = undefined;\n this._startValue = undefined;\n this._valueRange = 0;\n }\n parse(raw, index) {\n const value = LinearScaleBase.prototype.parse.apply(this, [raw, index]);\n if (value === 0) {\n this._zero = true;\n return undefined;\n }\n return isNumberFinite(value) && value > 0 ? value : null;\n }\n determineDataLimits() {\n const {min, max} = this.getMinMax(true);\n this.min = isNumberFinite(min) ? Math.max(0, min) : null;\n this.max = isNumberFinite(max) ? Math.max(0, max) : null;\n if (this.options.beginAtZero) {\n this._zero = true;\n }\n this.handleTickRangeOptions();\n }\n handleTickRangeOptions() {\n const {minDefined, maxDefined} = this.getUserBounds();\n let min = this.min;\n let max = this.max;\n const setMin = v => (min = minDefined ? min : v);\n const setMax = v => (max = maxDefined ? max : v);\n const exp = (v, m) => Math.pow(10, Math.floor(log10(v)) + m);\n if (min === max) {\n if (min <= 0) {\n setMin(1);\n setMax(10);\n } else {\n setMin(exp(min, -1));\n setMax(exp(max, +1));\n }\n }\n if (min <= 0) {\n setMin(exp(max, -1));\n }\n if (max <= 0) {\n setMax(exp(min, +1));\n }\n if (this._zero && this.min !== this._suggestedMin && min === exp(this.min, 0)) {\n setMin(exp(min, -1));\n }\n this.min = min;\n this.max = max;\n }\n buildTicks() {\n const opts = this.options;\n const generationOptions = {\n min: this._userMin,\n max: this._userMax\n };\n const ticks = generateTicks(generationOptions, this);\n if (opts.bounds === 'ticks') {\n _setMinAndMaxByKey(ticks, this, 'value');\n }\n if (opts.reverse) {\n ticks.reverse();\n this.start = this.max;\n this.end = this.min;\n } else {\n this.start = this.min;\n this.end = this.max;\n }\n return ticks;\n }\n getLabelForValue(value) {\n return value === undefined\n ? '0'\n : formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n }\n configure() {\n const start = this.min;\n super.configure();\n this._startValue = log10(start);\n this._valueRange = log10(this.max) - log10(start);\n }\n getPixelForValue(value) {\n if (value === undefined || value === 0) {\n value = this.min;\n }\n if (value === null || isNaN(value)) {\n return NaN;\n }\n return this.getPixelForDecimal(value === this.min\n ? 0\n : (log10(value) - this._startValue) / this._valueRange);\n }\n getValueForPixel(pixel) {\n const decimal = this.getDecimalForPixel(pixel);\n return Math.pow(10, this._startValue + decimal * this._valueRange);\n }\n}\nLogarithmicScale.id = 'logarithmic';\nLogarithmicScale.defaults = {\n ticks: {\n callback: Ticks.formatters.logarithmic,\n major: {\n enabled: true\n }\n }\n};\n\nfunction getTickBackdropHeight(opts) {\n const tickOpts = opts.ticks;\n if (tickOpts.display && opts.display) {\n const padding = toPadding(tickOpts.backdropPadding);\n return valueOrDefault(tickOpts.font && tickOpts.font.size, defaults.font.size) + padding.height;\n }\n return 0;\n}\nfunction measureLabelSize(ctx, font, label) {\n label = isArray(label) ? label : [label];\n return {\n w: _longestText(ctx, font.string, label),\n h: label.length * font.lineHeight\n };\n}\nfunction determineLimits(angle, pos, size, min, max) {\n if (angle === min || angle === max) {\n return {\n start: pos - (size / 2),\n end: pos + (size / 2)\n };\n } else if (angle < min || angle > max) {\n return {\n start: pos - size,\n end: pos\n };\n }\n return {\n start: pos,\n end: pos + size\n };\n}\nfunction fitWithPointLabels(scale) {\n const orig = {\n l: scale.left + scale._padding.left,\n r: scale.right - scale._padding.right,\n t: scale.top + scale._padding.top,\n b: scale.bottom - scale._padding.bottom\n };\n const limits = Object.assign({}, orig);\n const labelSizes = [];\n const padding = [];\n const valueCount = scale._pointLabels.length;\n const pointLabelOpts = scale.options.pointLabels;\n const additionalAngle = pointLabelOpts.centerPointLabels ? PI / valueCount : 0;\n for (let i = 0; i < valueCount; i++) {\n const opts = pointLabelOpts.setContext(scale.getPointLabelContext(i));\n padding[i] = opts.padding;\n const pointPosition = scale.getPointPosition(i, scale.drawingArea + padding[i], additionalAngle);\n const plFont = toFont(opts.font);\n const textSize = measureLabelSize(scale.ctx, plFont, scale._pointLabels[i]);\n labelSizes[i] = textSize;\n const angleRadians = _normalizeAngle(scale.getIndexAngle(i) + additionalAngle);\n const angle = Math.round(toDegrees(angleRadians));\n const hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180);\n const vLimits = determineLimits(angle, pointPosition.y, textSize.h, 90, 270);\n updateLimits(limits, orig, angleRadians, hLimits, vLimits);\n }\n scale.setCenterPoint(\n orig.l - limits.l,\n limits.r - orig.r,\n orig.t - limits.t,\n limits.b - orig.b\n );\n scale._pointLabelItems = buildPointLabelItems(scale, labelSizes, padding);\n}\nfunction updateLimits(limits, orig, angle, hLimits, vLimits) {\n const sin = Math.abs(Math.sin(angle));\n const cos = Math.abs(Math.cos(angle));\n let x = 0;\n let y = 0;\n if (hLimits.start < orig.l) {\n x = (orig.l - hLimits.start) / sin;\n limits.l = Math.min(limits.l, orig.l - x);\n } else if (hLimits.end > orig.r) {\n x = (hLimits.end - orig.r) / sin;\n limits.r = Math.max(limits.r, orig.r + x);\n }\n if (vLimits.start < orig.t) {\n y = (orig.t - vLimits.start) / cos;\n limits.t = Math.min(limits.t, orig.t - y);\n } else if (vLimits.end > orig.b) {\n y = (vLimits.end - orig.b) / cos;\n limits.b = Math.max(limits.b, orig.b + y);\n }\n}\nfunction buildPointLabelItems(scale, labelSizes, padding) {\n const items = [];\n const valueCount = scale._pointLabels.length;\n const opts = scale.options;\n const extra = getTickBackdropHeight(opts) / 2;\n const outerDistance = scale.drawingArea;\n const additionalAngle = opts.pointLabels.centerPointLabels ? PI / valueCount : 0;\n for (let i = 0; i < valueCount; i++) {\n const pointLabelPosition = scale.getPointPosition(i, outerDistance + extra + padding[i], additionalAngle);\n const angle = Math.round(toDegrees(_normalizeAngle(pointLabelPosition.angle + HALF_PI)));\n const size = labelSizes[i];\n const y = yForAngle(pointLabelPosition.y, size.h, angle);\n const textAlign = getTextAlignForAngle(angle);\n const left = leftForTextAlign(pointLabelPosition.x, size.w, textAlign);\n items.push({\n x: pointLabelPosition.x,\n y,\n textAlign,\n left,\n top: y,\n right: left + size.w,\n bottom: y + size.h\n });\n }\n return items;\n}\nfunction getTextAlignForAngle(angle) {\n if (angle === 0 || angle === 180) {\n return 'center';\n } else if (angle < 180) {\n return 'left';\n }\n return 'right';\n}\nfunction leftForTextAlign(x, w, align) {\n if (align === 'right') {\n x -= w;\n } else if (align === 'center') {\n x -= (w / 2);\n }\n return x;\n}\nfunction yForAngle(y, h, angle) {\n if (angle === 90 || angle === 270) {\n y -= (h / 2);\n } else if (angle > 270 || angle < 90) {\n y -= h;\n }\n return y;\n}\nfunction drawPointLabels(scale, labelCount) {\n const {ctx, options: {pointLabels}} = scale;\n for (let i = labelCount - 1; i >= 0; i--) {\n const optsAtIndex = pointLabels.setContext(scale.getPointLabelContext(i));\n const plFont = toFont(optsAtIndex.font);\n const {x, y, textAlign, left, top, right, bottom} = scale._pointLabelItems[i];\n const {backdropColor} = optsAtIndex;\n if (!isNullOrUndef(backdropColor)) {\n const padding = toPadding(optsAtIndex.backdropPadding);\n ctx.fillStyle = backdropColor;\n ctx.fillRect(left - padding.left, top - padding.top, right - left + padding.width, bottom - top + padding.height);\n }\n renderText(\n ctx,\n scale._pointLabels[i],\n x,\n y + (plFont.lineHeight / 2),\n plFont,\n {\n color: optsAtIndex.color,\n textAlign: textAlign,\n textBaseline: 'middle'\n }\n );\n }\n}\nfunction pathRadiusLine(scale, radius, circular, labelCount) {\n const {ctx} = scale;\n if (circular) {\n ctx.arc(scale.xCenter, scale.yCenter, radius, 0, TAU);\n } else {\n let pointPosition = scale.getPointPosition(0, radius);\n ctx.moveTo(pointPosition.x, pointPosition.y);\n for (let i = 1; i < labelCount; i++) {\n pointPosition = scale.getPointPosition(i, radius);\n ctx.lineTo(pointPosition.x, pointPosition.y);\n }\n }\n}\nfunction drawRadiusLine(scale, gridLineOpts, radius, labelCount) {\n const ctx = scale.ctx;\n const circular = gridLineOpts.circular;\n const {color, lineWidth} = gridLineOpts;\n if ((!circular && !labelCount) || !color || !lineWidth || radius < 0) {\n return;\n }\n ctx.save();\n ctx.strokeStyle = color;\n ctx.lineWidth = lineWidth;\n ctx.setLineDash(gridLineOpts.borderDash);\n ctx.lineDashOffset = gridLineOpts.borderDashOffset;\n ctx.beginPath();\n pathRadiusLine(scale, radius, circular, labelCount);\n ctx.closePath();\n ctx.stroke();\n ctx.restore();\n}\nfunction createPointLabelContext(parent, index, label) {\n return createContext(parent, {\n label,\n index,\n type: 'pointLabel'\n });\n}\nclass RadialLinearScale extends LinearScaleBase {\n constructor(cfg) {\n super(cfg);\n this.xCenter = undefined;\n this.yCenter = undefined;\n this.drawingArea = undefined;\n this._pointLabels = [];\n this._pointLabelItems = [];\n }\n setDimensions() {\n const padding = this._padding = toPadding(getTickBackdropHeight(this.options) / 2);\n const w = this.width = this.maxWidth - padding.width;\n const h = this.height = this.maxHeight - padding.height;\n this.xCenter = Math.floor(this.left + w / 2 + padding.left);\n this.yCenter = Math.floor(this.top + h / 2 + padding.top);\n this.drawingArea = Math.floor(Math.min(w, h) / 2);\n }\n determineDataLimits() {\n const {min, max} = this.getMinMax(false);\n this.min = isNumberFinite(min) && !isNaN(min) ? min : 0;\n this.max = isNumberFinite(max) && !isNaN(max) ? max : 0;\n this.handleTickRangeOptions();\n }\n computeTickLimit() {\n return Math.ceil(this.drawingArea / getTickBackdropHeight(this.options));\n }\n generateTickLabels(ticks) {\n LinearScaleBase.prototype.generateTickLabels.call(this, ticks);\n this._pointLabels = this.getLabels()\n .map((value, index) => {\n const label = callback(this.options.pointLabels.callback, [value, index], this);\n return label || label === 0 ? label : '';\n })\n .filter((v, i) => this.chart.getDataVisibility(i));\n }\n fit() {\n const opts = this.options;\n if (opts.display && opts.pointLabels.display) {\n fitWithPointLabels(this);\n } else {\n this.setCenterPoint(0, 0, 0, 0);\n }\n }\n setCenterPoint(leftMovement, rightMovement, topMovement, bottomMovement) {\n this.xCenter += Math.floor((leftMovement - rightMovement) / 2);\n this.yCenter += Math.floor((topMovement - bottomMovement) / 2);\n this.drawingArea -= Math.min(this.drawingArea / 2, Math.max(leftMovement, rightMovement, topMovement, bottomMovement));\n }\n getIndexAngle(index) {\n const angleMultiplier = TAU / (this._pointLabels.length || 1);\n const startAngle = this.options.startAngle || 0;\n return _normalizeAngle(index * angleMultiplier + toRadians(startAngle));\n }\n getDistanceFromCenterForValue(value) {\n if (isNullOrUndef(value)) {\n return NaN;\n }\n const scalingFactor = this.drawingArea / (this.max - this.min);\n if (this.options.reverse) {\n return (this.max - value) * scalingFactor;\n }\n return (value - this.min) * scalingFactor;\n }\n getValueForDistanceFromCenter(distance) {\n if (isNullOrUndef(distance)) {\n return NaN;\n }\n const scaledDistance = distance / (this.drawingArea / (this.max - this.min));\n return this.options.reverse ? this.max - scaledDistance : this.min + scaledDistance;\n }\n getPointLabelContext(index) {\n const pointLabels = this._pointLabels || [];\n if (index >= 0 && index < pointLabels.length) {\n const pointLabel = pointLabels[index];\n return createPointLabelContext(this.getContext(), index, pointLabel);\n }\n }\n getPointPosition(index, distanceFromCenter, additionalAngle = 0) {\n const angle = this.getIndexAngle(index) - HALF_PI + additionalAngle;\n return {\n x: Math.cos(angle) * distanceFromCenter + this.xCenter,\n y: Math.sin(angle) * distanceFromCenter + this.yCenter,\n angle\n };\n }\n getPointPositionForValue(index, value) {\n return this.getPointPosition(index, this.getDistanceFromCenterForValue(value));\n }\n getBasePosition(index) {\n return this.getPointPositionForValue(index || 0, this.getBaseValue());\n }\n getPointLabelPosition(index) {\n const {left, top, right, bottom} = this._pointLabelItems[index];\n return {\n left,\n top,\n right,\n bottom,\n };\n }\n drawBackground() {\n const {backgroundColor, grid: {circular}} = this.options;\n if (backgroundColor) {\n const ctx = this.ctx;\n ctx.save();\n ctx.beginPath();\n pathRadiusLine(this, this.getDistanceFromCenterForValue(this._endValue), circular, this._pointLabels.length);\n ctx.closePath();\n ctx.fillStyle = backgroundColor;\n ctx.fill();\n ctx.restore();\n }\n }\n drawGrid() {\n const ctx = this.ctx;\n const opts = this.options;\n const {angleLines, grid} = opts;\n const labelCount = this._pointLabels.length;\n let i, offset, position;\n if (opts.pointLabels.display) {\n drawPointLabels(this, labelCount);\n }\n if (grid.display) {\n this.ticks.forEach((tick, index) => {\n if (index !== 0) {\n offset = this.getDistanceFromCenterForValue(tick.value);\n const optsAtIndex = grid.setContext(this.getContext(index - 1));\n drawRadiusLine(this, optsAtIndex, offset, labelCount);\n }\n });\n }\n if (angleLines.display) {\n ctx.save();\n for (i = labelCount - 1; i >= 0; i--) {\n const optsAtIndex = angleLines.setContext(this.getPointLabelContext(i));\n const {color, lineWidth} = optsAtIndex;\n if (!lineWidth || !color) {\n continue;\n }\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = color;\n ctx.setLineDash(optsAtIndex.borderDash);\n ctx.lineDashOffset = optsAtIndex.borderDashOffset;\n offset = this.getDistanceFromCenterForValue(opts.ticks.reverse ? this.min : this.max);\n position = this.getPointPosition(i, offset);\n ctx.beginPath();\n ctx.moveTo(this.xCenter, this.yCenter);\n ctx.lineTo(position.x, position.y);\n ctx.stroke();\n }\n ctx.restore();\n }\n }\n drawBorder() {}\n drawLabels() {\n const ctx = this.ctx;\n const opts = this.options;\n const tickOpts = opts.ticks;\n if (!tickOpts.display) {\n return;\n }\n const startAngle = this.getIndexAngle(0);\n let offset, width;\n ctx.save();\n ctx.translate(this.xCenter, this.yCenter);\n ctx.rotate(startAngle);\n ctx.textAlign = 'center';\n ctx.textBaseline = 'middle';\n this.ticks.forEach((tick, index) => {\n if (index === 0 && !opts.reverse) {\n return;\n }\n const optsAtIndex = tickOpts.setContext(this.getContext(index));\n const tickFont = toFont(optsAtIndex.font);\n offset = this.getDistanceFromCenterForValue(this.ticks[index].value);\n if (optsAtIndex.showLabelBackdrop) {\n ctx.font = tickFont.string;\n width = ctx.measureText(tick.label).width;\n ctx.fillStyle = optsAtIndex.backdropColor;\n const padding = toPadding(optsAtIndex.backdropPadding);\n ctx.fillRect(\n -width / 2 - padding.left,\n -offset - tickFont.size / 2 - padding.top,\n width + padding.width,\n tickFont.size + padding.height\n );\n }\n renderText(ctx, tick.label, 0, -offset, tickFont, {\n color: optsAtIndex.color,\n });\n });\n ctx.restore();\n }\n drawTitle() {}\n}\nRadialLinearScale.id = 'radialLinear';\nRadialLinearScale.defaults = {\n display: true,\n animate: true,\n position: 'chartArea',\n angleLines: {\n display: true,\n lineWidth: 1,\n borderDash: [],\n borderDashOffset: 0.0\n },\n grid: {\n circular: false\n },\n startAngle: 0,\n ticks: {\n showLabelBackdrop: true,\n callback: Ticks.formatters.numeric\n },\n pointLabels: {\n backdropColor: undefined,\n backdropPadding: 2,\n display: true,\n font: {\n size: 10\n },\n callback(label) {\n return label;\n },\n padding: 5,\n centerPointLabels: false\n }\n};\nRadialLinearScale.defaultRoutes = {\n 'angleLines.color': 'borderColor',\n 'pointLabels.color': 'color',\n 'ticks.color': 'color'\n};\nRadialLinearScale.descriptors = {\n angleLines: {\n _fallback: 'grid'\n }\n};\n\nconst INTERVALS = {\n millisecond: {common: true, size: 1, steps: 1000},\n second: {common: true, size: 1000, steps: 60},\n minute: {common: true, size: 60000, steps: 60},\n hour: {common: true, size: 3600000, steps: 24},\n day: {common: true, size: 86400000, steps: 30},\n week: {common: false, size: 604800000, steps: 4},\n month: {common: true, size: 2.628e9, steps: 12},\n quarter: {common: false, size: 7.884e9, steps: 4},\n year: {common: true, size: 3.154e10}\n};\nconst UNITS = (Object.keys(INTERVALS));\nfunction sorter(a, b) {\n return a - b;\n}\nfunction parse(scale, input) {\n if (isNullOrUndef(input)) {\n return null;\n }\n const adapter = scale._adapter;\n const {parser, round, isoWeekday} = scale._parseOpts;\n let value = input;\n if (typeof parser === 'function') {\n value = parser(value);\n }\n if (!isNumberFinite(value)) {\n value = typeof parser === 'string'\n ? adapter.parse(value, parser)\n : adapter.parse(value);\n }\n if (value === null) {\n return null;\n }\n if (round) {\n value = round === 'week' && (isNumber(isoWeekday) || isoWeekday === true)\n ? adapter.startOf(value, 'isoWeek', isoWeekday)\n : adapter.startOf(value, round);\n }\n return +value;\n}\nfunction determineUnitForAutoTicks(minUnit, min, max, capacity) {\n const ilen = UNITS.length;\n for (let i = UNITS.indexOf(minUnit); i < ilen - 1; ++i) {\n const interval = INTERVALS[UNITS[i]];\n const factor = interval.steps ? interval.steps : Number.MAX_SAFE_INTEGER;\n if (interval.common && Math.ceil((max - min) / (factor * interval.size)) <= capacity) {\n return UNITS[i];\n }\n }\n return UNITS[ilen - 1];\n}\nfunction determineUnitForFormatting(scale, numTicks, minUnit, min, max) {\n for (let i = UNITS.length - 1; i >= UNITS.indexOf(minUnit); i--) {\n const unit = UNITS[i];\n if (INTERVALS[unit].common && scale._adapter.diff(max, min, unit) >= numTicks - 1) {\n return unit;\n }\n }\n return UNITS[minUnit ? UNITS.indexOf(minUnit) : 0];\n}\nfunction determineMajorUnit(unit) {\n for (let i = UNITS.indexOf(unit) + 1, ilen = UNITS.length; i < ilen; ++i) {\n if (INTERVALS[UNITS[i]].common) {\n return UNITS[i];\n }\n }\n}\nfunction addTick(ticks, time, timestamps) {\n if (!timestamps) {\n ticks[time] = true;\n } else if (timestamps.length) {\n const {lo, hi} = _lookup(timestamps, time);\n const timestamp = timestamps[lo] >= time ? timestamps[lo] : timestamps[hi];\n ticks[timestamp] = true;\n }\n}\nfunction setMajorTicks(scale, ticks, map, majorUnit) {\n const adapter = scale._adapter;\n const first = +adapter.startOf(ticks[0].value, majorUnit);\n const last = ticks[ticks.length - 1].value;\n let major, index;\n for (major = first; major <= last; major = +adapter.add(major, 1, majorUnit)) {\n index = map[major];\n if (index >= 0) {\n ticks[index].major = true;\n }\n }\n return ticks;\n}\nfunction ticksFromTimestamps(scale, values, majorUnit) {\n const ticks = [];\n const map = {};\n const ilen = values.length;\n let i, value;\n for (i = 0; i < ilen; ++i) {\n value = values[i];\n map[value] = i;\n ticks.push({\n value,\n major: false\n });\n }\n return (ilen === 0 || !majorUnit) ? ticks : setMajorTicks(scale, ticks, map, majorUnit);\n}\nclass TimeScale extends Scale {\n constructor(props) {\n super(props);\n this._cache = {\n data: [],\n labels: [],\n all: []\n };\n this._unit = 'day';\n this._majorUnit = undefined;\n this._offsets = {};\n this._normalized = false;\n this._parseOpts = undefined;\n }\n init(scaleOpts, opts) {\n const time = scaleOpts.time || (scaleOpts.time = {});\n const adapter = this._adapter = new adapters._date(scaleOpts.adapters.date);\n mergeIf(time.displayFormats, adapter.formats());\n this._parseOpts = {\n parser: time.parser,\n round: time.round,\n isoWeekday: time.isoWeekday\n };\n super.init(scaleOpts);\n this._normalized = opts.normalized;\n }\n parse(raw, index) {\n if (raw === undefined) {\n return null;\n }\n return parse(this, raw);\n }\n beforeLayout() {\n super.beforeLayout();\n this._cache = {\n data: [],\n labels: [],\n all: []\n };\n }\n determineDataLimits() {\n const options = this.options;\n const adapter = this._adapter;\n const unit = options.time.unit || 'day';\n let {min, max, minDefined, maxDefined} = this.getUserBounds();\n function _applyBounds(bounds) {\n if (!minDefined && !isNaN(bounds.min)) {\n min = Math.min(min, bounds.min);\n }\n if (!maxDefined && !isNaN(bounds.max)) {\n max = Math.max(max, bounds.max);\n }\n }\n if (!minDefined || !maxDefined) {\n _applyBounds(this._getLabelBounds());\n if (options.bounds !== 'ticks' || options.ticks.source !== 'labels') {\n _applyBounds(this.getMinMax(false));\n }\n }\n min = isNumberFinite(min) && !isNaN(min) ? min : +adapter.startOf(Date.now(), unit);\n max = isNumberFinite(max) && !isNaN(max) ? max : +adapter.endOf(Date.now(), unit) + 1;\n this.min = Math.min(min, max - 1);\n this.max = Math.max(min + 1, max);\n }\n _getLabelBounds() {\n const arr = this.getLabelTimestamps();\n let min = Number.POSITIVE_INFINITY;\n let max = Number.NEGATIVE_INFINITY;\n if (arr.length) {\n min = arr[0];\n max = arr[arr.length - 1];\n }\n return {min, max};\n }\n buildTicks() {\n const options = this.options;\n const timeOpts = options.time;\n const tickOpts = options.ticks;\n const timestamps = tickOpts.source === 'labels' ? this.getLabelTimestamps() : this._generate();\n if (options.bounds === 'ticks' && timestamps.length) {\n this.min = this._userMin || timestamps[0];\n this.max = this._userMax || timestamps[timestamps.length - 1];\n }\n const min = this.min;\n const max = this.max;\n const ticks = _filterBetween(timestamps, min, max);\n this._unit = timeOpts.unit || (tickOpts.autoSkip\n ? determineUnitForAutoTicks(timeOpts.minUnit, this.min, this.max, this._getLabelCapacity(min))\n : determineUnitForFormatting(this, ticks.length, timeOpts.minUnit, this.min, this.max));\n this._majorUnit = !tickOpts.major.enabled || this._unit === 'year' ? undefined\n : determineMajorUnit(this._unit);\n this.initOffsets(timestamps);\n if (options.reverse) {\n ticks.reverse();\n }\n return ticksFromTimestamps(this, ticks, this._majorUnit);\n }\n initOffsets(timestamps) {\n let start = 0;\n let end = 0;\n let first, last;\n if (this.options.offset && timestamps.length) {\n first = this.getDecimalForValue(timestamps[0]);\n if (timestamps.length === 1) {\n start = 1 - first;\n } else {\n start = (this.getDecimalForValue(timestamps[1]) - first) / 2;\n }\n last = this.getDecimalForValue(timestamps[timestamps.length - 1]);\n if (timestamps.length === 1) {\n end = last;\n } else {\n end = (last - this.getDecimalForValue(timestamps[timestamps.length - 2])) / 2;\n }\n }\n const limit = timestamps.length < 3 ? 0.5 : 0.25;\n start = _limitValue(start, 0, limit);\n end = _limitValue(end, 0, limit);\n this._offsets = {start, end, factor: 1 / (start + 1 + end)};\n }\n _generate() {\n const adapter = this._adapter;\n const min = this.min;\n const max = this.max;\n const options = this.options;\n const timeOpts = options.time;\n const minor = timeOpts.unit || determineUnitForAutoTicks(timeOpts.minUnit, min, max, this._getLabelCapacity(min));\n const stepSize = valueOrDefault(timeOpts.stepSize, 1);\n const weekday = minor === 'week' ? timeOpts.isoWeekday : false;\n const hasWeekday = isNumber(weekday) || weekday === true;\n const ticks = {};\n let first = min;\n let time, count;\n if (hasWeekday) {\n first = +adapter.startOf(first, 'isoWeek', weekday);\n }\n first = +adapter.startOf(first, hasWeekday ? 'day' : minor);\n if (adapter.diff(max, min, minor) > 100000 * stepSize) {\n throw new Error(min + ' and ' + max + ' are too far apart with stepSize of ' + stepSize + ' ' + minor);\n }\n const timestamps = options.ticks.source === 'data' && this.getDataTimestamps();\n for (time = first, count = 0; time < max; time = +adapter.add(time, stepSize, minor), count++) {\n addTick(ticks, time, timestamps);\n }\n if (time === max || options.bounds === 'ticks' || count === 1) {\n addTick(ticks, time, timestamps);\n }\n return Object.keys(ticks).sort((a, b) => a - b).map(x => +x);\n }\n getLabelForValue(value) {\n const adapter = this._adapter;\n const timeOpts = this.options.time;\n if (timeOpts.tooltipFormat) {\n return adapter.format(value, timeOpts.tooltipFormat);\n }\n return adapter.format(value, timeOpts.displayFormats.datetime);\n }\n _tickFormatFunction(time, index, ticks, format) {\n const options = this.options;\n const formats = options.time.displayFormats;\n const unit = this._unit;\n const majorUnit = this._majorUnit;\n const minorFormat = unit && formats[unit];\n const majorFormat = majorUnit && formats[majorUnit];\n const tick = ticks[index];\n const major = majorUnit && majorFormat && tick && tick.major;\n const label = this._adapter.format(time, format || (major ? majorFormat : minorFormat));\n const formatter = options.ticks.callback;\n return formatter ? callback(formatter, [label, index, ticks], this) : label;\n }\n generateTickLabels(ticks) {\n let i, ilen, tick;\n for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n tick = ticks[i];\n tick.label = this._tickFormatFunction(tick.value, i, ticks);\n }\n }\n getDecimalForValue(value) {\n return value === null ? NaN : (value - this.min) / (this.max - this.min);\n }\n getPixelForValue(value) {\n const offsets = this._offsets;\n const pos = this.getDecimalForValue(value);\n return this.getPixelForDecimal((offsets.start + pos) * offsets.factor);\n }\n getValueForPixel(pixel) {\n const offsets = this._offsets;\n const pos = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n return this.min + pos * (this.max - this.min);\n }\n _getLabelSize(label) {\n const ticksOpts = this.options.ticks;\n const tickLabelWidth = this.ctx.measureText(label).width;\n const angle = toRadians(this.isHorizontal() ? ticksOpts.maxRotation : ticksOpts.minRotation);\n const cosRotation = Math.cos(angle);\n const sinRotation = Math.sin(angle);\n const tickFontSize = this._resolveTickFontOptions(0).size;\n return {\n w: (tickLabelWidth * cosRotation) + (tickFontSize * sinRotation),\n h: (tickLabelWidth * sinRotation) + (tickFontSize * cosRotation)\n };\n }\n _getLabelCapacity(exampleTime) {\n const timeOpts = this.options.time;\n const displayFormats = timeOpts.displayFormats;\n const format = displayFormats[timeOpts.unit] || displayFormats.millisecond;\n const exampleLabel = this._tickFormatFunction(exampleTime, 0, ticksFromTimestamps(this, [exampleTime], this._majorUnit), format);\n const size = this._getLabelSize(exampleLabel);\n const capacity = Math.floor(this.isHorizontal() ? this.width / size.w : this.height / size.h) - 1;\n return capacity > 0 ? capacity : 1;\n }\n getDataTimestamps() {\n let timestamps = this._cache.data || [];\n let i, ilen;\n if (timestamps.length) {\n return timestamps;\n }\n const metas = this.getMatchingVisibleMetas();\n if (this._normalized && metas.length) {\n return (this._cache.data = metas[0].controller.getAllParsedValues(this));\n }\n for (i = 0, ilen = metas.length; i < ilen; ++i) {\n timestamps = timestamps.concat(metas[i].controller.getAllParsedValues(this));\n }\n return (this._cache.data = this.normalize(timestamps));\n }\n getLabelTimestamps() {\n const timestamps = this._cache.labels || [];\n let i, ilen;\n if (timestamps.length) {\n return timestamps;\n }\n const labels = this.getLabels();\n for (i = 0, ilen = labels.length; i < ilen; ++i) {\n timestamps.push(parse(this, labels[i]));\n }\n return (this._cache.labels = this._normalized ? timestamps : this.normalize(timestamps));\n }\n normalize(values) {\n return _arrayUnique(values.sort(sorter));\n }\n}\nTimeScale.id = 'time';\nTimeScale.defaults = {\n bounds: 'data',\n adapters: {},\n time: {\n parser: false,\n unit: false,\n round: false,\n isoWeekday: false,\n minUnit: 'millisecond',\n displayFormats: {}\n },\n ticks: {\n source: 'auto',\n major: {\n enabled: false\n }\n }\n};\n\nfunction interpolate(table, val, reverse) {\n let lo = 0;\n let hi = table.length - 1;\n let prevSource, nextSource, prevTarget, nextTarget;\n if (reverse) {\n if (val >= table[lo].pos && val <= table[hi].pos) {\n ({lo, hi} = _lookupByKey(table, 'pos', val));\n }\n ({pos: prevSource, time: prevTarget} = table[lo]);\n ({pos: nextSource, time: nextTarget} = table[hi]);\n } else {\n if (val >= table[lo].time && val <= table[hi].time) {\n ({lo, hi} = _lookupByKey(table, 'time', val));\n }\n ({time: prevSource, pos: prevTarget} = table[lo]);\n ({time: nextSource, pos: nextTarget} = table[hi]);\n }\n const span = nextSource - prevSource;\n return span ? prevTarget + (nextTarget - prevTarget) * (val - prevSource) / span : prevTarget;\n}\nclass TimeSeriesScale extends TimeScale {\n constructor(props) {\n super(props);\n this._table = [];\n this._minPos = undefined;\n this._tableRange = undefined;\n }\n initOffsets() {\n const timestamps = this._getTimestampsForTable();\n const table = this._table = this.buildLookupTable(timestamps);\n this._minPos = interpolate(table, this.min);\n this._tableRange = interpolate(table, this.max) - this._minPos;\n super.initOffsets(timestamps);\n }\n buildLookupTable(timestamps) {\n const {min, max} = this;\n const items = [];\n const table = [];\n let i, ilen, prev, curr, next;\n for (i = 0, ilen = timestamps.length; i < ilen; ++i) {\n curr = timestamps[i];\n if (curr >= min && curr <= max) {\n items.push(curr);\n }\n }\n if (items.length < 2) {\n return [\n {time: min, pos: 0},\n {time: max, pos: 1}\n ];\n }\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n next = items[i + 1];\n prev = items[i - 1];\n curr = items[i];\n if (Math.round((next + prev) / 2) !== curr) {\n table.push({time: curr, pos: i / (ilen - 1)});\n }\n }\n return table;\n }\n _getTimestampsForTable() {\n let timestamps = this._cache.all || [];\n if (timestamps.length) {\n return timestamps;\n }\n const data = this.getDataTimestamps();\n const label = this.getLabelTimestamps();\n if (data.length && label.length) {\n timestamps = this.normalize(data.concat(label));\n } else {\n timestamps = data.length ? data : label;\n }\n timestamps = this._cache.all = timestamps;\n return timestamps;\n }\n getDecimalForValue(value) {\n return (interpolate(this._table, value) - this._minPos) / this._tableRange;\n }\n getValueForPixel(pixel) {\n const offsets = this._offsets;\n const decimal = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n return interpolate(this._table, decimal * this._tableRange + this._minPos, true);\n }\n}\nTimeSeriesScale.id = 'timeseries';\nTimeSeriesScale.defaults = TimeScale.defaults;\n\nvar scales = /*#__PURE__*/Object.freeze({\n__proto__: null,\nCategoryScale: CategoryScale,\nLinearScale: LinearScale,\nLogarithmicScale: LogarithmicScale,\nRadialLinearScale: RadialLinearScale,\nTimeScale: TimeScale,\nTimeSeriesScale: TimeSeriesScale\n});\n\nconst registerables = [\n controllers,\n elements,\n plugins,\n scales,\n];\n\nexport { Animation, Animations, ArcElement, BarController, BarElement, BasePlatform, BasicPlatform, BubbleController, CategoryScale, Chart, DatasetController, plugin_decimation as Decimation, DomPlatform, DoughnutController, Element, plugin_filler as Filler, Interaction, plugin_legend as Legend, LineController, LineElement, LinearScale, LogarithmicScale, PieController, PointElement, PolarAreaController, RadarController, RadialLinearScale, Scale, ScatterController, plugin_subtitle as SubTitle, Ticks, TimeScale, TimeSeriesScale, plugin_title as Title, plugin_tooltip as Tooltip, adapters as _adapters, _detectPlatform, animator, controllers, elements, layouts, plugins, registerables, registry, scales };\n","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nfunction _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}\n\nmodule.exports = _asyncToGenerator, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","export default function _defineProperty(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}","var setPrototypeOf = require(\"./setPrototypeOf.js\");\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inherits, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var getPrototypeOf = require(\"./getPrototypeOf.js\");\n\nvar isNativeReflectConstruct = require(\"./isNativeReflectConstruct.js\");\n\nvar possibleConstructorReturn = require(\"./possibleConstructorReturn.js\");\n\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return possibleConstructorReturn(this, result);\n };\n}\n\nmodule.exports = _createSuper, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","//! moment.js\n//! version : 2.29.2\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 arrLen = arr.length;\n for (i = 0; i < arrLen; ++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,\n prop,\n val,\n momentPropertiesLen = momentProperties.length;\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 (momentPropertiesLen > 0) {\n for (i = 0; i < momentPropertiesLen; 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 argLen = arguments.length;\n for (i = 0; i < argLen; 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 =\n /(\\[[^\\[]*\\])|(\\\\)?([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 prioritizedLen = prioritized.length;\n for (i = 0; i < prioritizedLen; 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 =\n /[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(\n /\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g,\n function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }\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 tokenLen;\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 tokenLen = token.length;\n for (i = 0; i < tokenLen; 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 =\n 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n defaultLocaleMonthsShort =\n 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\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(\n ['w', 'ww', 'W', 'WW'],\n function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n }\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 =\n 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\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 isLocaleNameSane(name) {\n // Prevent names that look like filesystem paths, i.e contain '/' or '\\'\n return name.match('^[^/\\\\\\\\]*$') != null;\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 isLocaleNameSane(name)\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 =\n /^\\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 =\n /^\\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 =\n /^(?:(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 isoDatesLen = isoDates.length,\n isoTimesLen = isoTimes.length;\n\n if (match) {\n getParsingFlags(config).iso = true;\n for (i = 0, l = isoDatesLen; 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 = isoTimesLen; 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 tokenLen;\n\n tokens =\n expandFormat(config._f, config._locale).match(formattingTokens) || [];\n tokenLen = tokens.length;\n for (i = 0; i < tokenLen; 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 configfLen = config._f.length;\n\n if (configfLen === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < configfLen; 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 orderLen = ordering.length;\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 < orderLen; ++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 =\n /^(-|\\+)?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 propertyLen = properties.length;\n\n for (i = 0; i < propertyLen; 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 ['N', 'NN', 'NNN', 'NNNN', 'NNNNN'],\n function (input, array, config, token) {\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\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(\n ['gggg', 'ggggg', 'GGGG', 'GGGGG'],\n function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n }\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.2';\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', // \n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // \n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // \n DATE: 'YYYY-MM-DD', // \n TIME: 'HH:mm', // \n TIME_SECONDS: 'HH:mm:ss', // \n TIME_MS: 'HH:mm:ss.SSS', // \n WEEK: 'GGGG-[W]WW', // \n MONTH: 'YYYY-MM', // \n };\n\n return hooks;\n\n})));\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return ''\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.KeyPairEd25519 = exports.KeyPair = exports.PublicKey = exports.KeyType = void 0;\nconst tweetnacl_1 = __importDefault(require(\"tweetnacl\"));\nconst serialize_1 = require(\"./serialize\");\nconst enums_1 = require(\"./enums\");\n/** All supported key types */\nvar KeyType;\n(function (KeyType) {\n KeyType[KeyType[\"ED25519\"] = 0] = \"ED25519\";\n})(KeyType = exports.KeyType || (exports.KeyType = {}));\nfunction key_type_to_str(keyType) {\n switch (keyType) {\n case KeyType.ED25519: return 'ed25519';\n default: throw new Error(`Unknown key type ${keyType}`);\n }\n}\nfunction str_to_key_type(keyType) {\n switch (keyType.toLowerCase()) {\n case 'ed25519': return KeyType.ED25519;\n default: throw new Error(`Unknown key type ${keyType}`);\n }\n}\n/**\n * PublicKey representation that has type and bytes of the key.\n */\nclass PublicKey extends enums_1.Assignable {\n static from(value) {\n if (typeof value === 'string') {\n return PublicKey.fromString(value);\n }\n return value;\n }\n static fromString(encodedKey) {\n const parts = encodedKey.split(':');\n if (parts.length === 1) {\n return new PublicKey({ keyType: KeyType.ED25519, data: serialize_1.base_decode(parts[0]) });\n }\n else if (parts.length === 2) {\n return new PublicKey({ keyType: str_to_key_type(parts[0]), data: serialize_1.base_decode(parts[1]) });\n }\n else {\n throw new Error('Invalid encoded key format, must be :');\n }\n }\n toString() {\n return `${key_type_to_str(this.keyType)}:${serialize_1.base_encode(this.data)}`;\n }\n verify(message, signature) {\n switch (this.keyType) {\n case KeyType.ED25519: return tweetnacl_1.default.sign.detached.verify(message, signature, this.data);\n default: throw new Error(`Unknown key type ${this.keyType}`);\n }\n }\n}\nexports.PublicKey = PublicKey;\nclass KeyPair {\n /**\n * @param curve Name of elliptical curve, case-insensitive\n * @returns Random KeyPair based on the curve\n */\n static fromRandom(curve) {\n switch (curve.toUpperCase()) {\n case 'ED25519': return KeyPairEd25519.fromRandom();\n default: throw new Error(`Unknown curve ${curve}`);\n }\n }\n static fromString(encodedKey) {\n const parts = encodedKey.split(':');\n if (parts.length === 1) {\n return new KeyPairEd25519(parts[0]);\n }\n else if (parts.length === 2) {\n switch (parts[0].toUpperCase()) {\n case 'ED25519': return new KeyPairEd25519(parts[1]);\n default: throw new Error(`Unknown curve: ${parts[0]}`);\n }\n }\n else {\n throw new Error('Invalid encoded key format, must be :');\n }\n }\n}\nexports.KeyPair = KeyPair;\n/**\n * This class provides key pair functionality for Ed25519 curve:\n * generating key pairs, encoding key pairs, signing and verifying.\n */\nclass KeyPairEd25519 extends KeyPair {\n /**\n * Construct an instance of key pair given a secret key.\n * It's generally assumed that these are encoded in base58.\n * @param {string} secretKey\n */\n constructor(secretKey) {\n super();\n const keyPair = tweetnacl_1.default.sign.keyPair.fromSecretKey(serialize_1.base_decode(secretKey));\n this.publicKey = new PublicKey({ keyType: KeyType.ED25519, data: keyPair.publicKey });\n this.secretKey = secretKey;\n }\n /**\n * Generate a new random keypair.\n * @example\n * const keyRandom = KeyPair.fromRandom();\n * keyRandom.publicKey\n * // returns [PUBLIC_KEY]\n *\n * keyRandom.secretKey\n * // returns [SECRET_KEY]\n */\n static fromRandom() {\n const newKeyPair = tweetnacl_1.default.sign.keyPair();\n return new KeyPairEd25519(serialize_1.base_encode(newKeyPair.secretKey));\n }\n sign(message) {\n const signature = tweetnacl_1.default.sign.detached(message, serialize_1.base_decode(this.secretKey));\n return { signature, publicKey: this.publicKey };\n }\n verify(message, signature) {\n return this.publicKey.verify(message, signature);\n }\n toString() {\n return `ed25519:${this.secretKey}`;\n }\n getPublicKey() {\n return this.publicKey;\n }\n}\nexports.KeyPairEd25519 = KeyPairEd25519;\n","import defineProperty from \"./defineProperty.js\";\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nexport default function _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n\n return target;\n}","var defineProperty = require(\"./defineProperty.js\");\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n\n return target;\n}\n\nmodule.exports = _objectSpread2, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n\n if (!it) {\n if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n\n var F = function F() {};\n\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = it.call(o);\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}\n\nmodule.exports = _createForOfIteratorHelper, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this._strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] >>> wbit) & 0x01;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this._strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this._strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo (self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/** @hidden @module */\nexports.keyStores = __importStar(require(\"./key_stores/browser-index\"));\n__exportStar(require(\"./common-index\"), exports);\n__exportStar(require(\"./browser-connect\"), exports);\nrequire(\"error-polyfill\");\n","function _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.deserializeUnchecked = exports.deserialize = exports.serialize = exports.BinaryReader = exports.BinaryWriter = exports.BorshError = exports.baseDecode = exports.baseEncode = void 0;\nconst bn_js_1 = __importDefault(require(\"bn.js\"));\nconst bs58_1 = __importDefault(require(\"bs58\"));\n// TODO: Make sure this polyfill not included when not required\nconst encoding = __importStar(require(\"text-encoding-utf-8\"));\nconst TextDecoder = (typeof global.TextDecoder !== 'function') ? encoding.TextDecoder : global.TextDecoder;\nconst textDecoder = new TextDecoder('utf-8', { fatal: true });\nfunction baseEncode(value) {\n if (typeof (value) === 'string') {\n value = Buffer.from(value, 'utf8');\n }\n return bs58_1.default.encode(Buffer.from(value));\n}\nexports.baseEncode = baseEncode;\nfunction baseDecode(value) {\n return Buffer.from(bs58_1.default.decode(value));\n}\nexports.baseDecode = baseDecode;\nconst INITIAL_LENGTH = 1024;\nclass BorshError extends Error {\n constructor(message) {\n super(message);\n this.fieldPath = [];\n this.originalMessage = message;\n }\n addToFieldPath(fieldName) {\n this.fieldPath.splice(0, 0, fieldName);\n // NOTE: Modifying message directly as jest doesn't use .toString()\n this.message = this.originalMessage + ': ' + this.fieldPath.join('.');\n }\n}\nexports.BorshError = BorshError;\n/// Binary encoder.\nclass BinaryWriter {\n constructor() {\n this.buf = Buffer.alloc(INITIAL_LENGTH);\n this.length = 0;\n }\n maybeResize() {\n if (this.buf.length < 16 + this.length) {\n this.buf = Buffer.concat([this.buf, Buffer.alloc(INITIAL_LENGTH)]);\n }\n }\n writeU8(value) {\n this.maybeResize();\n this.buf.writeUInt8(value, this.length);\n this.length += 1;\n }\n writeU16(value) {\n this.maybeResize();\n this.buf.writeUInt16LE(value, this.length);\n this.length += 2;\n }\n writeU32(value) {\n this.maybeResize();\n this.buf.writeUInt32LE(value, this.length);\n this.length += 4;\n }\n writeU64(value) {\n this.maybeResize();\n this.writeBuffer(Buffer.from(new bn_js_1.default(value).toArray('le', 8)));\n }\n writeU128(value) {\n this.maybeResize();\n this.writeBuffer(Buffer.from(new bn_js_1.default(value).toArray('le', 16)));\n }\n writeU256(value) {\n this.maybeResize();\n this.writeBuffer(Buffer.from(new bn_js_1.default(value).toArray('le', 32)));\n }\n writeU512(value) {\n this.maybeResize();\n this.writeBuffer(Buffer.from(new bn_js_1.default(value).toArray('le', 64)));\n }\n writeBuffer(buffer) {\n // Buffer.from is needed as this.buf.subarray can return plain Uint8Array in browser\n this.buf = Buffer.concat([Buffer.from(this.buf.subarray(0, this.length)), buffer, Buffer.alloc(INITIAL_LENGTH)]);\n this.length += buffer.length;\n }\n writeString(str) {\n this.maybeResize();\n const b = Buffer.from(str, 'utf8');\n this.writeU32(b.length);\n this.writeBuffer(b);\n }\n writeFixedArray(array) {\n this.writeBuffer(Buffer.from(array));\n }\n writeArray(array, fn) {\n this.maybeResize();\n this.writeU32(array.length);\n for (const elem of array) {\n this.maybeResize();\n fn(elem);\n }\n }\n toArray() {\n return this.buf.subarray(0, this.length);\n }\n}\nexports.BinaryWriter = BinaryWriter;\nfunction handlingRangeError(target, propertyKey, propertyDescriptor) {\n const originalMethod = propertyDescriptor.value;\n propertyDescriptor.value = function (...args) {\n try {\n return originalMethod.apply(this, args);\n }\n catch (e) {\n if (e instanceof RangeError) {\n const code = e.code;\n if (['ERR_BUFFER_OUT_OF_BOUNDS', 'ERR_OUT_OF_RANGE'].indexOf(code) >= 0) {\n throw new BorshError('Reached the end of buffer when deserializing');\n }\n }\n throw e;\n }\n };\n}\nclass BinaryReader {\n constructor(buf) {\n this.buf = buf;\n this.offset = 0;\n }\n readU8() {\n const value = this.buf.readUInt8(this.offset);\n this.offset += 1;\n return value;\n }\n readU16() {\n const value = this.buf.readUInt16LE(this.offset);\n this.offset += 2;\n return value;\n }\n readU32() {\n const value = this.buf.readUInt32LE(this.offset);\n this.offset += 4;\n return value;\n }\n readU64() {\n const buf = this.readBuffer(8);\n return new bn_js_1.default(buf, 'le');\n }\n readU128() {\n const buf = this.readBuffer(16);\n return new bn_js_1.default(buf, 'le');\n }\n readU256() {\n const buf = this.readBuffer(32);\n return new bn_js_1.default(buf, 'le');\n }\n readU512() {\n const buf = this.readBuffer(64);\n return new bn_js_1.default(buf, 'le');\n }\n readBuffer(len) {\n if ((this.offset + len) > this.buf.length) {\n throw new BorshError(`Expected buffer length ${len} isn't within bounds`);\n }\n const result = this.buf.slice(this.offset, this.offset + len);\n this.offset += len;\n return result;\n }\n readString() {\n const len = this.readU32();\n const buf = this.readBuffer(len);\n try {\n // NOTE: Using TextDecoder to fail on invalid UTF-8\n return textDecoder.decode(buf);\n }\n catch (e) {\n throw new BorshError(`Error decoding UTF-8 string: ${e}`);\n }\n }\n readFixedArray(len) {\n return new Uint8Array(this.readBuffer(len));\n }\n readArray(fn) {\n const len = this.readU32();\n const result = Array();\n for (let i = 0; i < len; ++i) {\n result.push(fn());\n }\n return result;\n }\n}\n__decorate([\n handlingRangeError\n], BinaryReader.prototype, \"readU8\", null);\n__decorate([\n handlingRangeError\n], BinaryReader.prototype, \"readU16\", null);\n__decorate([\n handlingRangeError\n], BinaryReader.prototype, \"readU32\", null);\n__decorate([\n handlingRangeError\n], BinaryReader.prototype, \"readU64\", null);\n__decorate([\n handlingRangeError\n], BinaryReader.prototype, \"readU128\", null);\n__decorate([\n handlingRangeError\n], BinaryReader.prototype, \"readU256\", null);\n__decorate([\n handlingRangeError\n], BinaryReader.prototype, \"readU512\", null);\n__decorate([\n handlingRangeError\n], BinaryReader.prototype, \"readString\", null);\n__decorate([\n handlingRangeError\n], BinaryReader.prototype, \"readFixedArray\", null);\n__decorate([\n handlingRangeError\n], BinaryReader.prototype, \"readArray\", null);\nexports.BinaryReader = BinaryReader;\nfunction capitalizeFirstLetter(string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\nfunction serializeField(schema, fieldName, value, fieldType, writer) {\n try {\n // TODO: Handle missing values properly (make sure they never result in just skipped write)\n if (typeof fieldType === 'string') {\n writer[`write${capitalizeFirstLetter(fieldType)}`](value);\n }\n else if (fieldType instanceof Array) {\n if (typeof fieldType[0] === 'number') {\n if (value.length !== fieldType[0]) {\n throw new BorshError(`Expecting byte array of length ${fieldType[0]}, but got ${value.length} bytes`);\n }\n writer.writeFixedArray(value);\n }\n else if (fieldType.length === 2 && typeof fieldType[1] === 'number') {\n if (value.length !== fieldType[1]) {\n throw new BorshError(`Expecting byte array of length ${fieldType[1]}, but got ${value.length} bytes`);\n }\n for (let i = 0; i < fieldType[1]; i++) {\n serializeField(schema, null, value[i], fieldType[0], writer);\n }\n }\n else {\n writer.writeArray(value, (item) => { serializeField(schema, fieldName, item, fieldType[0], writer); });\n }\n }\n else if (fieldType.kind !== undefined) {\n switch (fieldType.kind) {\n case 'option': {\n if (value === null || value === undefined) {\n writer.writeU8(0);\n }\n else {\n writer.writeU8(1);\n serializeField(schema, fieldName, value, fieldType.type, writer);\n }\n break;\n }\n default: throw new BorshError(`FieldType ${fieldType} unrecognized`);\n }\n }\n else {\n serializeStruct(schema, value, writer);\n }\n }\n catch (error) {\n if (error instanceof BorshError) {\n error.addToFieldPath(fieldName);\n }\n throw error;\n }\n}\nfunction serializeStruct(schema, obj, writer) {\n if (typeof obj.borshSerialize === 'function') {\n obj.borshSerialize(writer);\n return;\n }\n const structSchema = schema.get(obj.constructor);\n if (!structSchema) {\n throw new BorshError(`Class ${obj.constructor.name} is missing in schema`);\n }\n if (structSchema.kind === 'struct') {\n structSchema.fields.map(([fieldName, fieldType]) => {\n serializeField(schema, fieldName, obj[fieldName], fieldType, writer);\n });\n }\n else if (structSchema.kind === 'enum') {\n const name = obj[structSchema.field];\n for (let idx = 0; idx < structSchema.values.length; ++idx) {\n const [fieldName, fieldType] = structSchema.values[idx];\n if (fieldName === name) {\n writer.writeU8(idx);\n serializeField(schema, fieldName, obj[fieldName], fieldType, writer);\n break;\n }\n }\n }\n else {\n throw new BorshError(`Unexpected schema kind: ${structSchema.kind} for ${obj.constructor.name}`);\n }\n}\n/// Serialize given object using schema of the form:\n/// { class_name -> [ [field_name, field_type], .. ], .. }\nfunction serialize(schema, obj, Writer = BinaryWriter) {\n const writer = new Writer();\n serializeStruct(schema, obj, writer);\n return writer.toArray();\n}\nexports.serialize = serialize;\nfunction deserializeField(schema, fieldName, fieldType, reader) {\n try {\n if (typeof fieldType === 'string') {\n return reader[`read${capitalizeFirstLetter(fieldType)}`]();\n }\n if (fieldType instanceof Array) {\n if (typeof fieldType[0] === 'number') {\n return reader.readFixedArray(fieldType[0]);\n }\n else if (typeof fieldType[1] === 'number') {\n const arr = [];\n for (let i = 0; i < fieldType[1]; i++) {\n arr.push(deserializeField(schema, null, fieldType[0], reader));\n }\n return arr;\n }\n else {\n return reader.readArray(() => deserializeField(schema, fieldName, fieldType[0], reader));\n }\n }\n if (fieldType.kind === 'option') {\n const option = reader.readU8();\n if (option) {\n return deserializeField(schema, fieldName, fieldType.type, reader);\n }\n return undefined;\n }\n return deserializeStruct(schema, fieldType, reader);\n }\n catch (error) {\n if (error instanceof BorshError) {\n error.addToFieldPath(fieldName);\n }\n throw error;\n }\n}\nfunction deserializeStruct(schema, classType, reader) {\n if (typeof classType.borshDeserialize === 'function') {\n return classType.borshDeserialize(reader);\n }\n const structSchema = schema.get(classType);\n if (!structSchema) {\n throw new BorshError(`Class ${classType.name} is missing in schema`);\n }\n if (structSchema.kind === 'struct') {\n const result = {};\n for (const [fieldName, fieldType] of schema.get(classType).fields) {\n result[fieldName] = deserializeField(schema, fieldName, fieldType, reader);\n }\n return new classType(result);\n }\n if (structSchema.kind === 'enum') {\n const idx = reader.readU8();\n if (idx >= structSchema.values.length) {\n throw new BorshError(`Enum index: ${idx} is out of range`);\n }\n const [fieldName, fieldType] = structSchema.values[idx];\n const fieldValue = deserializeField(schema, fieldName, fieldType, reader);\n return new classType({ [fieldName]: fieldValue });\n }\n throw new BorshError(`Unexpected schema kind: ${structSchema.kind} for ${classType.constructor.name}`);\n}\n/// Deserializes object from bytes using schema.\nfunction deserialize(schema, classType, buffer, Reader = BinaryReader) {\n const reader = new Reader(buffer);\n const result = deserializeStruct(schema, classType, reader);\n if (reader.offset < buffer.length) {\n throw new BorshError(`Unexpected ${buffer.length - reader.offset} bytes after deserialized data`);\n }\n return result;\n}\nexports.deserialize = deserialize;\n/// Deserializes object from bytes using schema, without checking the length read\nfunction deserializeUnchecked(schema, classType, buffer, Reader = BinaryReader) {\n const reader = new Reader(buffer);\n return deserializeStruct(schema, classType, reader);\n}\nexports.deserializeUnchecked = deserializeUnchecked;\n","/*!\n * depd\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = depd\n\n/**\n * Create deprecate for namespace in caller.\n */\n\nfunction depd (namespace) {\n if (!namespace) {\n throw new TypeError('argument namespace is required')\n }\n\n function deprecate (message) {\n // no-op in browser\n }\n\n deprecate._file = undefined\n deprecate._ignored = true\n deprecate._namespace = namespace\n deprecate._traced = false\n deprecate._warned = Object.create(null)\n\n deprecate.function = wrapfunction\n deprecate.property = wrapproperty\n\n return deprecate\n}\n\n/**\n * Return a wrapped function in a deprecation message.\n *\n * This is a no-op version of the wrapper, which does nothing but call\n * validation.\n */\n\nfunction wrapfunction (fn, message) {\n if (typeof fn !== 'function') {\n throw new TypeError('argument fn must be a function')\n }\n\n return fn\n}\n\n/**\n * Wrap property in a deprecation message.\n *\n * This is a no-op version of the wrapper, which does nothing but call\n * validation.\n */\n\nfunction wrapproperty (obj, prop, message) {\n if (!obj || (typeof obj !== 'object' && typeof obj !== 'function')) {\n throw new TypeError('argument obj must be object')\n }\n\n var descriptor = Object.getOwnPropertyDescriptor(obj, prop)\n\n if (!descriptor) {\n throw new TypeError('must call property on owner object')\n }\n\n if (!descriptor.configurable) {\n throw new TypeError('property must be configurable')\n }\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.logWarning = exports.ErrorContext = exports.TypedError = exports.ArgumentTypeError = exports.PositionalArgsError = void 0;\nclass PositionalArgsError extends Error {\n constructor() {\n super('Contract method calls expect named arguments wrapped in object, e.g. { argName1: argValue1, argName2: argValue2 }');\n }\n}\nexports.PositionalArgsError = PositionalArgsError;\nclass ArgumentTypeError extends Error {\n constructor(argName, argType, argValue) {\n super(`Expected ${argType} for '${argName}' argument, but got '${JSON.stringify(argValue)}'`);\n }\n}\nexports.ArgumentTypeError = ArgumentTypeError;\nclass TypedError extends Error {\n constructor(message, type, context) {\n super(message);\n this.type = type || 'UntypedError';\n this.context = context;\n }\n}\nexports.TypedError = TypedError;\nclass ErrorContext {\n constructor(transactionHash) {\n this.transactionHash = transactionHash;\n }\n}\nexports.ErrorContext = ErrorContext;\nfunction logWarning(...args) {\n if (!process.env['NEAR_NO_LOGS']) {\n console.warn(...args);\n }\n}\nexports.logWarning = logWarning;\n","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","require(\"capability/es5\");\r\n\r\nmodule.exports = require(\"./lib\");","module.exports = require(\"./lib\");","function _defineProperty(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\nmodule.exports = _defineProperty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayWithHoles = require(\"./arrayWithHoles.js\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit.js\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\n\nvar nonIterableRest = require(\"./nonIterableRest.js\");\n\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","\"use strict\";\n/** @hidden @module */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ErrorContext = exports.TypedError = exports.getTransactionLastResult = exports.FinalExecutionStatusBasic = exports.JsonRpcProvider = exports.Provider = void 0;\nconst provider_1 = require(\"./provider\");\nObject.defineProperty(exports, \"Provider\", { enumerable: true, get: function () { return provider_1.Provider; } });\nObject.defineProperty(exports, \"getTransactionLastResult\", { enumerable: true, get: function () { return provider_1.getTransactionLastResult; } });\nObject.defineProperty(exports, \"FinalExecutionStatusBasic\", { enumerable: true, get: function () { return provider_1.FinalExecutionStatusBasic; } });\nconst json_rpc_provider_1 = require(\"./json-rpc-provider\");\nObject.defineProperty(exports, \"JsonRpcProvider\", { enumerable: true, get: function () { return json_rpc_provider_1.JsonRpcProvider; } });\nObject.defineProperty(exports, \"TypedError\", { enumerable: true, get: function () { return json_rpc_provider_1.TypedError; } });\nObject.defineProperty(exports, \"ErrorContext\", { enumerable: true, get: function () { return json_rpc_provider_1.ErrorContext; } });\n","'use strict';\n\nfunction checkDCE() {\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n if (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n ) {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n // This branch is unreachable because this function is only called\n // in production, but the condition is true only in development.\n // Therefore if the branch is still here, dead code elimination wasn't\n // properly applied.\n // Don't change the message. React DevTools relies on it. Also make sure\n // this message doesn't occur elsewhere in this function, or it will cause\n // a false positive.\n throw new Error('^_^');\n }\n try {\n // Verify that the code above has been dead code eliminated (DCE'd).\n __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n } catch (err) {\n // DevTools shouldn't crash React, no matter what.\n // We should still report in case we break this code.\n console.error(err);\n }\n}\n\nif (process.env.NODE_ENV === 'production') {\n // DCE check should happen before ReactDOM bundle executes so that\n // DevTools can report bad minification during injection.\n checkDCE();\n module.exports = require('./cjs/react-dom.production.min.js');\n} else {\n module.exports = require('./cjs/react-dom.development.js');\n}\n","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\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","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.KeyStore = void 0;\n/**\n * KeyStores are passed to {@link Near} via {@link NearConfig}\n * and are used by the {@link InMemorySigner} to sign transactions.\n *\n * @example {@link connect}\n */\nclass KeyStore {\n}\nexports.KeyStore = KeyStore;\n","var getPrototypeOf = require(\"./getPrototypeOf.js\");\n\nvar setPrototypeOf = require(\"./setPrototypeOf.js\");\n\nvar isNativeFunction = require(\"./isNativeFunction.js\");\n\nvar construct = require(\"./construct.js\");\n\nfunction _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n\n module.exports = _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !isNativeFunction(Class)) return Class;\n\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return construct(Class, arguments, getPrototypeOf(this).constructor);\n }\n\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return setPrototypeOf(Wrapper, Class);\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _wrapNativeSuper(Class);\n}\n\nmodule.exports = _wrapNativeSuper, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fetchJson = void 0;\nconst http_errors_1 = __importDefault(require(\"http-errors\"));\nconst exponential_backoff_1 = __importDefault(require(\"./exponential-backoff\"));\nconst providers_1 = require(\"../providers\");\nconst errors_1 = require(\"./errors\");\nconst START_WAIT_TIME_MS = 1000;\nconst BACKOFF_MULTIPLIER = 1.5;\nconst RETRY_NUMBER = 10;\nasync function fetchJson(connectionInfoOrUrl, json) {\n let connectionInfo = { url: null };\n if (typeof (connectionInfoOrUrl) === 'string') {\n connectionInfo.url = connectionInfoOrUrl;\n }\n else {\n connectionInfo = connectionInfoOrUrl;\n }\n const response = await exponential_backoff_1.default(START_WAIT_TIME_MS, RETRY_NUMBER, BACKOFF_MULTIPLIER, async () => {\n try {\n const response = await fetch(connectionInfo.url, {\n method: json ? 'POST' : 'GET',\n body: json ? json : undefined,\n headers: { ...connectionInfo.headers, 'Content-Type': 'application/json' }\n });\n if (!response.ok) {\n if (response.status === 503) {\n errors_1.logWarning(`Retrying HTTP request for ${connectionInfo.url} as it's not available now`);\n return null;\n }\n throw http_errors_1.default(response.status, await response.text());\n }\n return response;\n }\n catch (error) {\n if (error.toString().includes('FetchError') || error.toString().includes('Failed to fetch')) {\n errors_1.logWarning(`Retrying HTTP request for ${connectionInfo.url} because of error: ${error}`);\n return null;\n }\n throw error;\n }\n });\n if (!response) {\n throw new providers_1.TypedError(`Exceeded ${RETRY_NUMBER} attempts for ${connectionInfo.url}.`, 'RetriesExceeded');\n }\n return await response.json();\n}\nexports.fetchJson = fetchJson;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.signTransaction = exports.createTransaction = exports.SCHEMA = exports.Action = exports.SignedTransaction = exports.Transaction = exports.Signature = exports.deleteAccount = exports.deleteKey = exports.addKey = exports.stake = exports.transfer = exports.functionCall = exports.stringifyJsonOrBytes = exports.deployContract = exports.createAccount = exports.DeleteAccount = exports.DeleteKey = exports.AddKey = exports.Stake = exports.Transfer = exports.FunctionCall = exports.DeployContract = exports.CreateAccount = exports.IAction = exports.functionCallAccessKey = exports.fullAccessKey = exports.AccessKey = exports.AccessKeyPermission = exports.FullAccessPermission = exports.FunctionCallPermission = void 0;\nconst js_sha256_1 = __importDefault(require(\"js-sha256\"));\nconst enums_1 = require(\"./utils/enums\");\nconst borsh_1 = require(\"borsh\");\nconst key_pair_1 = require(\"./utils/key_pair\");\nclass FunctionCallPermission extends enums_1.Assignable {\n}\nexports.FunctionCallPermission = FunctionCallPermission;\nclass FullAccessPermission extends enums_1.Assignable {\n}\nexports.FullAccessPermission = FullAccessPermission;\nclass AccessKeyPermission extends enums_1.Enum {\n}\nexports.AccessKeyPermission = AccessKeyPermission;\nclass AccessKey extends enums_1.Assignable {\n}\nexports.AccessKey = AccessKey;\nfunction fullAccessKey() {\n return new AccessKey({ nonce: 0, permission: new AccessKeyPermission({ fullAccess: new FullAccessPermission({}) }) });\n}\nexports.fullAccessKey = fullAccessKey;\nfunction functionCallAccessKey(receiverId, methodNames, allowance) {\n return new AccessKey({ nonce: 0, permission: new AccessKeyPermission({ functionCall: new FunctionCallPermission({ receiverId, allowance, methodNames }) }) });\n}\nexports.functionCallAccessKey = functionCallAccessKey;\nclass IAction extends enums_1.Assignable {\n}\nexports.IAction = IAction;\nclass CreateAccount extends IAction {\n}\nexports.CreateAccount = CreateAccount;\nclass DeployContract extends IAction {\n}\nexports.DeployContract = DeployContract;\nclass FunctionCall extends IAction {\n}\nexports.FunctionCall = FunctionCall;\nclass Transfer extends IAction {\n}\nexports.Transfer = Transfer;\nclass Stake extends IAction {\n}\nexports.Stake = Stake;\nclass AddKey extends IAction {\n}\nexports.AddKey = AddKey;\nclass DeleteKey extends IAction {\n}\nexports.DeleteKey = DeleteKey;\nclass DeleteAccount extends IAction {\n}\nexports.DeleteAccount = DeleteAccount;\nfunction createAccount() {\n return new Action({ createAccount: new CreateAccount({}) });\n}\nexports.createAccount = createAccount;\nfunction deployContract(code) {\n return new Action({ deployContract: new DeployContract({ code }) });\n}\nexports.deployContract = deployContract;\nfunction stringifyJsonOrBytes(args) {\n const isUint8Array = args.byteLength !== undefined && args.byteLength === args.length;\n const serializedArgs = isUint8Array ? args : Buffer.from(JSON.stringify(args));\n return serializedArgs;\n}\nexports.stringifyJsonOrBytes = stringifyJsonOrBytes;\n/**\n * Constructs {@link Action} instance representing contract method call.\n *\n * @param methodName the name of the method to call\n * @param args arguments to pass to method. Can be either plain JS object which gets serialized as JSON automatically\n * or `Uint8Array` instance which represents bytes passed as is.\n * @param gas max amount of gas that method call can use\n * @param deposit amount of NEAR (in yoctoNEAR) to send together with the call\n * @param stringify Convert input arguments into bytes array.\n */\nfunction functionCall(methodName, args, gas, deposit, stringify = stringifyJsonOrBytes) {\n return new Action({ functionCall: new FunctionCall({ methodName, args: stringify(args), gas, deposit }) });\n}\nexports.functionCall = functionCall;\nfunction transfer(deposit) {\n return new Action({ transfer: new Transfer({ deposit }) });\n}\nexports.transfer = transfer;\nfunction stake(stake, publicKey) {\n return new Action({ stake: new Stake({ stake, publicKey }) });\n}\nexports.stake = stake;\nfunction addKey(publicKey, accessKey) {\n return new Action({ addKey: new AddKey({ publicKey, accessKey }) });\n}\nexports.addKey = addKey;\nfunction deleteKey(publicKey) {\n return new Action({ deleteKey: new DeleteKey({ publicKey }) });\n}\nexports.deleteKey = deleteKey;\nfunction deleteAccount(beneficiaryId) {\n return new Action({ deleteAccount: new DeleteAccount({ beneficiaryId }) });\n}\nexports.deleteAccount = deleteAccount;\nclass Signature extends enums_1.Assignable {\n}\nexports.Signature = Signature;\nclass Transaction extends enums_1.Assignable {\n encode() {\n return borsh_1.serialize(exports.SCHEMA, this);\n }\n static decode(bytes) {\n return borsh_1.deserialize(exports.SCHEMA, Transaction, bytes);\n }\n}\nexports.Transaction = Transaction;\nclass SignedTransaction extends enums_1.Assignable {\n encode() {\n return borsh_1.serialize(exports.SCHEMA, this);\n }\n static decode(bytes) {\n return borsh_1.deserialize(exports.SCHEMA, SignedTransaction, bytes);\n }\n}\nexports.SignedTransaction = SignedTransaction;\n/**\n * Contains a list of the valid transaction Actions available with this API\n * @see {@link https://nomicon.io/RuntimeSpec/Actions.html | Actions Spec}\n */\nclass Action extends enums_1.Enum {\n}\nexports.Action = Action;\nexports.SCHEMA = new Map([\n [Signature, { kind: 'struct', fields: [\n ['keyType', 'u8'],\n ['data', [64]]\n ] }],\n [SignedTransaction, { kind: 'struct', fields: [\n ['transaction', Transaction],\n ['signature', Signature]\n ] }],\n [Transaction, { kind: 'struct', fields: [\n ['signerId', 'string'],\n ['publicKey', key_pair_1.PublicKey],\n ['nonce', 'u64'],\n ['receiverId', 'string'],\n ['blockHash', [32]],\n ['actions', [Action]]\n ] }],\n [key_pair_1.PublicKey, { kind: 'struct', fields: [\n ['keyType', 'u8'],\n ['data', [32]]\n ] }],\n [AccessKey, { kind: 'struct', fields: [\n ['nonce', 'u64'],\n ['permission', AccessKeyPermission],\n ] }],\n [AccessKeyPermission, { kind: 'enum', field: 'enum', values: [\n ['functionCall', FunctionCallPermission],\n ['fullAccess', FullAccessPermission],\n ] }],\n [FunctionCallPermission, { kind: 'struct', fields: [\n ['allowance', { kind: 'option', type: 'u128' }],\n ['receiverId', 'string'],\n ['methodNames', ['string']],\n ] }],\n [FullAccessPermission, { kind: 'struct', fields: [] }],\n [Action, { kind: 'enum', field: 'enum', values: [\n ['createAccount', CreateAccount],\n ['deployContract', DeployContract],\n ['functionCall', FunctionCall],\n ['transfer', Transfer],\n ['stake', Stake],\n ['addKey', AddKey],\n ['deleteKey', DeleteKey],\n ['deleteAccount', DeleteAccount],\n ] }],\n [CreateAccount, { kind: 'struct', fields: [] }],\n [DeployContract, { kind: 'struct', fields: [\n ['code', ['u8']]\n ] }],\n [FunctionCall, { kind: 'struct', fields: [\n ['methodName', 'string'],\n ['args', ['u8']],\n ['gas', 'u64'],\n ['deposit', 'u128']\n ] }],\n [Transfer, { kind: 'struct', fields: [\n ['deposit', 'u128']\n ] }],\n [Stake, { kind: 'struct', fields: [\n ['stake', 'u128'],\n ['publicKey', key_pair_1.PublicKey]\n ] }],\n [AddKey, { kind: 'struct', fields: [\n ['publicKey', key_pair_1.PublicKey],\n ['accessKey', AccessKey]\n ] }],\n [DeleteKey, { kind: 'struct', fields: [\n ['publicKey', key_pair_1.PublicKey]\n ] }],\n [DeleteAccount, { kind: 'struct', fields: [\n ['beneficiaryId', 'string']\n ] }],\n]);\nfunction createTransaction(signerId, publicKey, receiverId, nonce, actions, blockHash) {\n return new Transaction({ signerId, publicKey, nonce, receiverId, actions, blockHash });\n}\nexports.createTransaction = createTransaction;\n/**\n * Signs a given transaction from an account with given keys, applied to the given network\n * @param transaction The Transaction object to sign\n * @param signer The {Signer} object that assists with signing keys\n * @param accountId The human-readable NEAR account name\n * @param networkId The targeted network. (ex. default, betanet, etc…)\n */\nasync function signTransactionObject(transaction, signer, accountId, networkId) {\n const message = borsh_1.serialize(exports.SCHEMA, transaction);\n const hash = new Uint8Array(js_sha256_1.default.sha256.array(message));\n const signature = await signer.signMessage(message, accountId, networkId);\n const signedTx = new SignedTransaction({\n transaction,\n signature: new Signature({ keyType: transaction.publicKey.keyType, data: signature.signature })\n });\n return [hash, signedTx];\n}\nasync function signTransaction(...args) {\n if (args[0].constructor === Transaction) {\n const [transaction, signer, accountId, networkId] = args;\n return signTransactionObject(transaction, signer, accountId, networkId);\n }\n else {\n const [receiverId, nonce, actions, blockHash, signer, accountId, networkId] = args;\n const publicKey = await signer.getPublicKey(accountId, networkId);\n const transaction = createTransaction(accountId, publicKey, receiverId, nonce, actions, blockHash);\n return signTransactionObject(transaction, signer, accountId, networkId);\n }\n}\nexports.signTransaction = signTransaction;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Account = void 0;\nconst bn_js_1 = __importDefault(require(\"bn.js\"));\nconst depd_1 = __importDefault(require(\"depd\"));\nconst transaction_1 = require(\"./transaction\");\nconst providers_1 = require(\"./providers\");\nconst borsh_1 = require(\"borsh\");\nconst key_pair_1 = require(\"./utils/key_pair\");\nconst errors_1 = require(\"./utils/errors\");\nconst rpc_errors_1 = require(\"./utils/rpc_errors\");\nconst constants_1 = require(\"./constants\");\nconst exponential_backoff_1 = __importDefault(require(\"./utils/exponential-backoff\"));\n// Default number of retries with different nonce before giving up on a transaction.\nconst TX_NONCE_RETRY_NUMBER = 12;\n// Default wait until next retry in millis.\nconst TX_NONCE_RETRY_WAIT = 500;\n// Exponential back off for waiting to retry.\nconst TX_NONCE_RETRY_WAIT_BACKOFF = 1.5;\nfunction parseJsonFromRawResponse(response) {\n return JSON.parse(Buffer.from(response).toString());\n}\nfunction bytesJsonStringify(input) {\n return Buffer.from(JSON.stringify(input));\n}\n/**\n * This class provides common account related RPC calls including signing transactions with a {@link KeyPair}.\n *\n * @example {@link https://docs.near.org/docs/develop/front-end/naj-quick-reference#account}\n * @hint Use {@link WalletConnection} in the browser to redirect to {@link https://docs.near.org/docs/tools/near-wallet | NEAR Wallet} for Account/key management using the {@link BrowserLocalStorageKeyStore}.\n * @see {@link https://nomicon.io/DataStructures/Account.html | Account Spec}\n */\nclass Account {\n constructor(connection, accountId) {\n /** @hidden */\n this.accessKeyByPublicKeyCache = {};\n this.connection = connection;\n this.accountId = accountId;\n }\n /** @hidden */\n get ready() {\n const deprecate = depd_1.default('Account.ready()');\n deprecate('not needed anymore, always ready');\n return Promise.resolve();\n }\n async fetchState() {\n const deprecate = depd_1.default('Account.fetchState()');\n deprecate('use `Account.state()` instead');\n }\n /**\n * Returns basic NEAR account information via the `view_account` RPC query method\n * @see {@link https://docs.near.org/docs/develop/front-end/rpc#view-account}\n */\n async state() {\n return this.connection.provider.query({\n request_type: 'view_account',\n account_id: this.accountId,\n finality: 'optimistic'\n });\n }\n /** @hidden */\n printLogsAndFailures(contractId, results) {\n if (!process.env[\"NEAR_NO_LOGS\"]) {\n for (const result of results) {\n console.log(`Receipt${result.receiptIds.length > 1 ? 's' : ''}: ${result.receiptIds.join(', ')}`);\n this.printLogs(contractId, result.logs, '\\t');\n if (result.failure) {\n console.warn(`\\tFailure [${contractId}]: ${result.failure}`);\n }\n }\n }\n }\n /** @hidden */\n printLogs(contractId, logs, prefix = '') {\n if (!process.env[\"NEAR_NO_LOGS\"]) {\n for (const log of logs) {\n console.log(`${prefix}Log [${contractId}]: ${log}`);\n }\n }\n }\n /**\n * Create a signed transaction which can be broadcast to the network\n * @param receiverId NEAR account receiving the transaction\n * @param actions list of actions to perform as part of the transaction\n * @see {@link JsonRpcProvider.sendTransaction}\n */\n async signTransaction(receiverId, actions) {\n const accessKeyInfo = await this.findAccessKey(receiverId, actions);\n if (!accessKeyInfo) {\n throw new providers_1.TypedError(`Can not sign transactions for account ${this.accountId} on network ${this.connection.networkId}, no matching key pair found in ${this.connection.signer}.`, 'KeyNotFound');\n }\n const { accessKey } = accessKeyInfo;\n const block = await this.connection.provider.block({ finality: 'final' });\n const blockHash = block.header.hash;\n const nonce = ++accessKey.nonce;\n return await transaction_1.signTransaction(receiverId, nonce, actions, borsh_1.baseDecode(blockHash), this.connection.signer, this.accountId, this.connection.networkId);\n }\n signAndSendTransaction(...args) {\n if (typeof args[0] === 'string') {\n return this.signAndSendTransactionV1(args[0], args[1]);\n }\n else {\n return this.signAndSendTransactionV2(args[0]);\n }\n }\n signAndSendTransactionV1(receiverId, actions) {\n const deprecate = depd_1.default('Account.signAndSendTransaction(receiverId, actions');\n deprecate('use `Account.signAndSendTransaction(SignAndSendTransactionOptions)` instead');\n return this.signAndSendTransactionV2({ receiverId, actions });\n }\n async signAndSendTransactionV2({ receiverId, actions, returnError }) {\n let txHash, signedTx;\n // TODO: TX_NONCE (different constants for different uses of exponentialBackoff?)\n const result = await exponential_backoff_1.default(TX_NONCE_RETRY_WAIT, TX_NONCE_RETRY_NUMBER, TX_NONCE_RETRY_WAIT_BACKOFF, async () => {\n [txHash, signedTx] = await this.signTransaction(receiverId, actions);\n const publicKey = signedTx.transaction.publicKey;\n try {\n return await this.connection.provider.sendTransaction(signedTx);\n }\n catch (error) {\n if (error.type === 'InvalidNonce') {\n errors_1.logWarning(`Retrying transaction ${receiverId}:${borsh_1.baseEncode(txHash)} with new nonce.`);\n delete this.accessKeyByPublicKeyCache[publicKey.toString()];\n return null;\n }\n if (error.type === 'Expired') {\n errors_1.logWarning(`Retrying transaction ${receiverId}:${borsh_1.baseEncode(txHash)} due to expired block hash`);\n return null;\n }\n error.context = new providers_1.ErrorContext(borsh_1.baseEncode(txHash));\n throw error;\n }\n });\n if (!result) {\n // TODO: This should have different code actually, as means \"transaction not submitted for sure\"\n throw new providers_1.TypedError('nonce retries exceeded for transaction. This usually means there are too many parallel requests with the same access key.', 'RetriesExceeded');\n }\n const flatLogs = [result.transaction_outcome, ...result.receipts_outcome].reduce((acc, it) => {\n if (it.outcome.logs.length ||\n (typeof it.outcome.status === 'object' && typeof it.outcome.status.Failure === 'object')) {\n return acc.concat({\n 'receiptIds': it.outcome.receipt_ids,\n 'logs': it.outcome.logs,\n 'failure': typeof it.outcome.status.Failure != 'undefined' ? rpc_errors_1.parseRpcError(it.outcome.status.Failure) : null\n });\n }\n else\n return acc;\n }, []);\n this.printLogsAndFailures(signedTx.transaction.receiverId, flatLogs);\n if (!returnError && typeof result.status === 'object' && typeof result.status.Failure === 'object') {\n // if error data has error_message and error_type properties, we consider that node returned an error in the old format\n if (result.status.Failure.error_message && result.status.Failure.error_type) {\n throw new providers_1.TypedError(`Transaction ${result.transaction_outcome.id} failed. ${result.status.Failure.error_message}`, result.status.Failure.error_type);\n }\n else {\n throw rpc_errors_1.parseResultError(result);\n }\n }\n // TODO: if Tx is Unknown or Started.\n return result;\n }\n /**\n * Finds the {@link AccessKeyView} associated with the accounts {@link PublicKey} stored in the {@link KeyStore}.\n *\n * @todo Find matching access key based on transaction (i.e. receiverId and actions)\n *\n * @param receiverId currently unused (see todo)\n * @param actions currently unused (see todo)\n * @returns `{ publicKey PublicKey; accessKey: AccessKeyView }`\n */\n async findAccessKey(receiverId, actions) {\n // TODO: Find matching access key based on transaction (i.e. receiverId and actions)\n const publicKey = await this.connection.signer.getPublicKey(this.accountId, this.connection.networkId);\n if (!publicKey) {\n return null;\n }\n const cachedAccessKey = this.accessKeyByPublicKeyCache[publicKey.toString()];\n if (cachedAccessKey !== undefined) {\n return { publicKey, accessKey: cachedAccessKey };\n }\n try {\n const accessKey = await this.connection.provider.query({\n request_type: 'view_access_key',\n account_id: this.accountId,\n public_key: publicKey.toString(),\n finality: 'optimistic'\n });\n // this function can be called multiple times and retrieve the same access key\n // this checks to see if the access key was already retrieved and cached while\n // the above network call was in flight. To keep nonce values in line, we return\n // the cached access key.\n if (this.accessKeyByPublicKeyCache[publicKey.toString()]) {\n return { publicKey, accessKey: this.accessKeyByPublicKeyCache[publicKey.toString()] };\n }\n this.accessKeyByPublicKeyCache[publicKey.toString()] = accessKey;\n return { publicKey, accessKey };\n }\n catch (e) {\n if (e.type == 'AccessKeyDoesNotExist') {\n return null;\n }\n throw e;\n }\n }\n /**\n * Create a new account and deploy a contract to it\n *\n * @param contractId NEAR account where the contract is deployed\n * @param publicKey The public key to add to the created contract account\n * @param data The compiled contract code\n * @param amount of NEAR to transfer to the created contract account. Transfer enough to pay for storage https://docs.near.org/docs/concepts/storage-staking\n */\n async createAndDeployContract(contractId, publicKey, data, amount) {\n const accessKey = transaction_1.fullAccessKey();\n await this.signAndSendTransaction({\n receiverId: contractId,\n actions: [transaction_1.createAccount(), transaction_1.transfer(amount), transaction_1.addKey(key_pair_1.PublicKey.from(publicKey), accessKey), transaction_1.deployContract(data)]\n });\n const contractAccount = new Account(this.connection, contractId);\n return contractAccount;\n }\n /**\n * @param receiverId NEAR account receiving Ⓝ\n * @param amount Amount to send in yoctoⓃ\n */\n async sendMoney(receiverId, amount) {\n return this.signAndSendTransaction({\n receiverId,\n actions: [transaction_1.transfer(amount)]\n });\n }\n /**\n * @param newAccountId NEAR account name to be created\n * @param publicKey A public key created from the masterAccount\n */\n async createAccount(newAccountId, publicKey, amount) {\n const accessKey = transaction_1.fullAccessKey();\n return this.signAndSendTransaction({\n receiverId: newAccountId,\n actions: [transaction_1.createAccount(), transaction_1.transfer(amount), transaction_1.addKey(key_pair_1.PublicKey.from(publicKey), accessKey)]\n });\n }\n /**\n * @param beneficiaryId The NEAR account that will receive the remaining Ⓝ balance from the account being deleted\n */\n async deleteAccount(beneficiaryId) {\n return this.signAndSendTransaction({\n receiverId: this.accountId,\n actions: [transaction_1.deleteAccount(beneficiaryId)]\n });\n }\n /**\n * @param data The compiled contract code\n */\n async deployContract(data) {\n return this.signAndSendTransaction({\n receiverId: this.accountId,\n actions: [transaction_1.deployContract(data)]\n });\n }\n async functionCall(...args) {\n if (typeof args[0] === 'string') {\n return this.functionCallV1(args[0], args[1], args[2], args[3], args[4]);\n }\n else {\n return this.functionCallV2(args[0]);\n }\n }\n functionCallV1(contractId, methodName, args, gas, amount) {\n const deprecate = depd_1.default('Account.functionCall(contractId, methodName, args, gas, amount)');\n deprecate('use `Account.functionCall(FunctionCallOptions)` instead');\n args = args || {};\n this.validateArgs(args);\n return this.signAndSendTransaction({\n receiverId: contractId,\n actions: [transaction_1.functionCall(methodName, args, gas || constants_1.DEFAULT_FUNCTION_CALL_GAS, amount)]\n });\n }\n functionCallV2({ contractId, methodName, args = {}, gas = constants_1.DEFAULT_FUNCTION_CALL_GAS, attachedDeposit, walletMeta, walletCallbackUrl, stringify }) {\n this.validateArgs(args);\n const stringifyArg = stringify === undefined ? transaction_1.stringifyJsonOrBytes : stringify;\n return this.signAndSendTransaction({\n receiverId: contractId,\n actions: [transaction_1.functionCall(methodName, args, gas, attachedDeposit, stringifyArg)],\n walletMeta,\n walletCallbackUrl\n });\n }\n /**\n * @see {@link https://docs.near.org/docs/concepts/account#access-keys}\n * @todo expand this API to support more options.\n * @param publicKey A public key to be associated with the contract\n * @param contractId NEAR account where the contract is deployed\n * @param methodNames The method names on the contract that should be allowed to be called. Pass null for no method names and '' or [] for any method names.\n * @param amount Payment in yoctoⓃ that is sent to the contract during this function call\n */\n async addKey(publicKey, contractId, methodNames, amount) {\n if (!methodNames) {\n methodNames = [];\n }\n if (!Array.isArray(methodNames)) {\n methodNames = [methodNames];\n }\n let accessKey;\n if (!contractId) {\n accessKey = transaction_1.fullAccessKey();\n }\n else {\n accessKey = transaction_1.functionCallAccessKey(contractId, methodNames, amount);\n }\n return this.signAndSendTransaction({\n receiverId: this.accountId,\n actions: [transaction_1.addKey(key_pair_1.PublicKey.from(publicKey), accessKey)]\n });\n }\n /**\n * @param publicKey The public key to be deleted\n * @returns {Promise}\n */\n async deleteKey(publicKey) {\n return this.signAndSendTransaction({\n receiverId: this.accountId,\n actions: [transaction_1.deleteKey(key_pair_1.PublicKey.from(publicKey))]\n });\n }\n /**\n * @see {@link https://docs.near.org/docs/validator/staking-overview}\n *\n * @param publicKey The public key for the account that's staking\n * @param amount The account to stake in yoctoⓃ\n */\n async stake(publicKey, amount) {\n return this.signAndSendTransaction({\n receiverId: this.accountId,\n actions: [transaction_1.stake(amount, key_pair_1.PublicKey.from(publicKey))]\n });\n }\n /** @hidden */\n validateArgs(args) {\n const isUint8Array = args.byteLength !== undefined && args.byteLength === args.length;\n if (isUint8Array) {\n return;\n }\n if (Array.isArray(args) || typeof args !== 'object') {\n throw new errors_1.PositionalArgsError();\n }\n }\n /**\n * Invoke a contract view function using the RPC API.\n * @see {@link https://docs.near.org/docs/develop/front-end/rpc#call-a-contract-function}\n *\n * @param contractId NEAR account where the contract is deployed\n * @param methodName The view-only method (no state mutations) name on the contract as it is written in the contract code\n * @param args Any arguments to the view contract method, wrapped in JSON\n * @param options.parse Parse the result of the call. Receives a Buffer (bytes array) and converts it to any object. By default result will be treated as json.\n * @param options.stringify Convert input arguments into a bytes array. By default the input is treated as a JSON.\n * @returns {Promise}\n */\n async viewFunction(contractId, methodName, args = {}, { parse = parseJsonFromRawResponse, stringify = bytesJsonStringify } = {}) {\n this.validateArgs(args);\n const serializedArgs = stringify(args).toString('base64');\n const result = await this.connection.provider.query({\n request_type: 'call_function',\n account_id: contractId,\n method_name: methodName,\n args_base64: serializedArgs,\n finality: 'optimistic'\n });\n if (result.logs) {\n this.printLogs(contractId, result.logs);\n }\n return result.result && result.result.length > 0 && parse(Buffer.from(result.result));\n }\n /**\n * Returns the state (key value pairs) of this account's contract based on the key prefix.\n * Pass an empty string for prefix if you would like to return the entire state.\n * @see {@link https://docs.near.org/docs/develop/front-end/rpc#view-contract-state}\n *\n * @param prefix allows to filter which keys should be returned. Empty prefix means all keys. String prefix is utf-8 encoded.\n * @param blockQuery specifies which block to query state at. By default returns last \"optimistic\" block (i.e. not necessarily finalized).\n */\n async viewState(prefix, blockQuery = { finality: 'optimistic' }) {\n const { values } = await this.connection.provider.query({\n request_type: 'view_state',\n ...blockQuery,\n account_id: this.accountId,\n prefix_base64: Buffer.from(prefix).toString('base64')\n });\n return values.map(({ key, value }) => ({\n key: Buffer.from(key, 'base64'),\n value: Buffer.from(value, 'base64')\n }));\n }\n /**\n * Get all access keys for the account\n * @see {@link https://docs.near.org/docs/develop/front-end/rpc#view-access-key-list}\n */\n async getAccessKeys() {\n const response = await this.connection.provider.query({\n request_type: 'view_access_key_list',\n account_id: this.accountId,\n finality: 'optimistic'\n });\n // A breaking API change introduced extra information into the\n // response, so it now returns an object with a `keys` field instead\n // of an array: https://github.com/nearprotocol/nearcore/pull/1789\n if (Array.isArray(response)) {\n return response;\n }\n return response.keys;\n }\n /**\n * Returns a list of authorized apps\n * @todo update the response value to return all the different keys, not just app keys.\n */\n async getAccountDetails() {\n // TODO: update the response value to return all the different keys, not just app keys.\n // Also if we need this function, or getAccessKeys is good enough.\n const accessKeys = await this.getAccessKeys();\n const authorizedApps = accessKeys\n .filter(item => item.access_key.permission !== 'FullAccess')\n .map(item => {\n const perm = item.access_key.permission;\n return {\n contractId: perm.FunctionCall.receiver_id,\n amount: perm.FunctionCall.allowance,\n publicKey: item.public_key,\n };\n });\n return { authorizedApps };\n }\n /**\n * Returns calculated account balance\n */\n async getAccountBalance() {\n const protocolConfig = await this.connection.provider.experimental_protocolConfig({ finality: 'final' });\n const state = await this.state();\n const costPerByte = new bn_js_1.default(protocolConfig.runtime_config.storage_amount_per_byte);\n const stateStaked = new bn_js_1.default(state.storage_usage).mul(costPerByte);\n const staked = new bn_js_1.default(state.locked);\n const totalBalance = new bn_js_1.default(state.amount).add(staked);\n const availableBalance = totalBalance.sub(bn_js_1.default.max(staked, stateStaked));\n return {\n total: totalBalance.toString(),\n stateStaked: stateStaked.toString(),\n staked: staked.toString(),\n available: availableBalance.toString()\n };\n }\n}\nexports.Account = Account;\n","import React from 'react';\n/* eslint-disable import/no-unresolved */\n\nimport { unstable_batchedUpdates, render } from 'react-dom';\nimport { warning } from './warning'; // from https://github.com/purposeindustries/window-or-global/blob/master/lib/index.js\n// avoid direct usage of 'window' because `window is not defined` error might happen in babel-node\n\nvar globalObject = typeof self === 'object' && self.self === self && self || typeof global === 'object' && global.global === global && global || this;\nexport var batch = function batch(cb) {\n return unstable_batchedUpdates(cb);\n};\nexport var mount = function mount(C) {\n if (globalObject.document && globalObject.document.createElement) {\n render( /*#__PURE__*/React.createElement(C, null), globalObject.document.createElement('div'));\n } else {\n warning('Can not mount SingletonHooksContainer on server side. ' + 'Did you manage to run useEffect on server? ' + 'Please mount SingletonHooksContainer into your components tree manually.');\n }\n};","export var warning = function warning(message) {\n if (console && console.warn) {\n console.warn(message);\n }\n};","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","require(\"./lib/definitions\");\r\nmodule.exports = require(\"./lib\");\r\n","var prepareStackTrace = function (throwable, frames, warnings) {\r\n var string = \"\";\r\n string += throwable.name || \"Error\";\r\n string += \": \" + (throwable.message || \"\");\r\n if (warnings instanceof Array)\r\n for (var warningIndex in warnings) {\r\n var warning = warnings[warningIndex];\r\n string += \"\\n # \" + warning;\r\n }\r\n for (var frameIndex in frames) {\r\n var frame = frames[frameIndex];\r\n string += \"\\n at \" + frame.toString();\r\n }\r\n return string;\r\n};\r\n\r\nmodule.exports = prepareStackTrace;","var superPropBase = require(\"./superPropBase.js\");\n\nfunction _get() {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n module.exports = _get = Reflect.get, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n } else {\n module.exports = _get = function _get(target, property, receiver) {\n var base = superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.get) {\n return desc.get.call(arguments.length < 3 ? target : receiver);\n }\n\n return desc.value;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n }\n\n return _get.apply(this, arguments);\n}\n\nmodule.exports = _get, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayWithoutHoles = require(\"./arrayWithoutHoles.js\");\n\nvar iterableToArray = require(\"./iterableToArray.js\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread.js\");\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\n\nmodule.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","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","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Assignable = exports.Enum = void 0;\n/** @hidden @module */\nclass Enum {\n constructor(properties) {\n if (Object.keys(properties).length !== 1) {\n throw new Error('Enum can only take single value');\n }\n Object.keys(properties).map((key) => {\n this[key] = properties[key];\n this.enum = key;\n });\n }\n}\nexports.Enum = Enum;\nclass Assignable {\n constructor(properties) {\n Object.keys(properties).map((key) => {\n this[key] = properties[key];\n });\n }\n}\nexports.Assignable = Assignable;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nasync function exponentialBackoff(startWaitTime, retryNumber, waitBackoff, getResult) {\n // TODO: jitter?\n let waitTime = startWaitTime;\n for (let i = 0; i < retryNumber; i++) {\n const result = await getResult();\n if (result) {\n return result;\n }\n await sleep(waitTime);\n waitTime *= waitBackoff;\n }\n return null;\n}\nexports.default = exponentialBackoff;\n// Sleep given number of millis.\nfunction sleep(millis) {\n return new Promise(resolve => setTimeout(resolve, millis));\n}\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getErrorTypeFromErrorMessage = exports.formatError = exports.parseResultError = exports.parseRpcError = exports.ServerError = void 0;\nconst mustache_1 = __importDefault(require(\"mustache\"));\nconst rpc_error_schema_json_1 = __importDefault(require(\"../generated/rpc_error_schema.json\"));\nconst error_messages_json_1 = __importDefault(require(\"../res/error_messages.json\"));\nconst common_index_1 = require(\"../common-index\");\nconst errors_1 = require(\"../utils/errors\");\nconst mustacheHelpers = {\n formatNear: () => (n, render) => common_index_1.utils.format.formatNearAmount(render(n))\n};\nclass ServerError extends errors_1.TypedError {\n}\nexports.ServerError = ServerError;\nclass ServerTransactionError extends ServerError {\n}\nfunction parseRpcError(errorObj) {\n const result = {};\n const errorClassName = walkSubtype(errorObj, rpc_error_schema_json_1.default.schema, result, '');\n // NOTE: This assumes that all errors extend TypedError\n const error = new ServerError(formatError(errorClassName, result), errorClassName);\n Object.assign(error, result);\n return error;\n}\nexports.parseRpcError = parseRpcError;\nfunction parseResultError(result) {\n const server_error = parseRpcError(result.status.Failure);\n const server_tx_error = new ServerTransactionError();\n Object.assign(server_tx_error, server_error);\n server_tx_error.type = server_error.type;\n server_tx_error.message = server_error.message;\n server_tx_error.transaction_outcome = result.transaction_outcome;\n return server_tx_error;\n}\nexports.parseResultError = parseResultError;\nfunction formatError(errorClassName, errorData) {\n if (typeof error_messages_json_1.default[errorClassName] === 'string') {\n return mustache_1.default.render(error_messages_json_1.default[errorClassName], {\n ...errorData,\n ...mustacheHelpers\n });\n }\n return JSON.stringify(errorData);\n}\nexports.formatError = formatError;\n/**\n * Walks through defined schema returning error(s) recursively\n * @param errorObj The error to be parsed\n * @param schema A defined schema in JSON mapping to the RPC errors\n * @param result An object used in recursion or called directly\n * @param typeName The human-readable error type name as defined in the JSON mapping\n */\nfunction walkSubtype(errorObj, schema, result, typeName) {\n let error;\n let type;\n let errorTypeName;\n for (const errorName in schema) {\n if (isString(errorObj[errorName])) {\n // Return early if error type is in a schema\n return errorObj[errorName];\n }\n if (isObject(errorObj[errorName])) {\n error = errorObj[errorName];\n type = schema[errorName];\n errorTypeName = errorName;\n }\n else if (isObject(errorObj.kind) && isObject(errorObj.kind[errorName])) {\n error = errorObj.kind[errorName];\n type = schema[errorName];\n errorTypeName = errorName;\n }\n else {\n continue;\n }\n }\n if (error && type) {\n for (const prop of Object.keys(type.props)) {\n result[prop] = error[prop];\n }\n return walkSubtype(error, schema, result, errorTypeName);\n }\n else {\n // TODO: is this the right thing to do?\n result.kind = errorObj;\n return typeName;\n }\n}\nfunction getErrorTypeFromErrorMessage(errorMessage) {\n // This function should be removed when JSON RPC starts returning typed errors.\n switch (true) {\n case /^account .*? does not exist while viewing$/.test(errorMessage):\n return 'AccountDoesNotExist';\n case /^Account .*? doesn't exist$/.test(errorMessage):\n return 'AccountDoesNotExist';\n case /^access key .*? does not exist while viewing$/.test(errorMessage):\n return 'AccessKeyDoesNotExist';\n case /wasm execution failed with error: FunctionCallError\\(CompilationError\\(CodeDoesNotExist/.test(errorMessage):\n return 'CodeDoesNotExist';\n case /Transaction nonce \\d+ must be larger than nonce of the used access key \\d+/.test(errorMessage):\n return 'InvalidNonce';\n default:\n return 'UntypedError';\n }\n}\nexports.getErrorTypeFromErrorMessage = getErrorTypeFromErrorMessage;\n/**\n * Helper function determining if the argument is an object\n * @param n Value to check\n */\nfunction isObject(n) {\n return Object.prototype.toString.call(n) === '[object Object]';\n}\n/**\n * Helper function determining if the argument is a string\n * @param n Value to check\n */\nfunction isString(n) {\n return Object.prototype.toString.call(n) === '[object String]';\n}\n","import { useLayoutEffect, useRef } from 'react';\nexport var SingleItemContainer = function SingleItemContainer(_ref) {\n var initValue = _ref.initValue,\n useHookBody = _ref.useHookBody,\n applyStateChange = _ref.applyStateChange;\n var lastState = useRef(initValue);\n\n if (typeof useHookBody !== 'function') {\n throw new Error(\"function expected as hook body parameter. got \" + typeof useHookBody);\n }\n\n var val = useHookBody(); //useLayoutEffect is safe from SSR perspective because SingleItemContainer should never be rendered on server\n\n useLayoutEffect(function () {\n if (lastState.current !== val) {\n lastState.current = val;\n applyStateChange(val);\n }\n }, [applyStateChange, val]);\n return null;\n};","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React, { useState, useEffect } from 'react';\nimport { SingleItemContainer } from './SingleItemContainer';\nimport { mount } from '../utils/env';\nimport { warning } from '../utils/warning';\nvar SingletonHooksContainerMounted = false;\nvar SingletonHooksContainerRendered = false;\nvar SingletonHooksContainerMountedAutomatically = false;\nvar mountQueue = [];\n\nvar mountIntoContainerDefault = function mountIntoContainerDefault(item) {\n mountQueue.push(item);\n};\n\nvar mountIntoContainer = mountIntoContainerDefault;\nexport var SingletonHooksContainer = function SingletonHooksContainer() {\n SingletonHooksContainerRendered = true;\n useEffect(function () {\n if (SingletonHooksContainerMounted) {\n warning('SingletonHooksContainer is mounted second time. ' + 'You should mount SingletonHooksContainer before any other component and never unmount it.' + 'Alternatively, dont use SingletonHooksContainer it at all, we will handle that for you.');\n }\n\n SingletonHooksContainerMounted = true;\n }, []);\n\n var _useState = useState([]),\n hooks = _useState[0],\n setHooks = _useState[1];\n\n useEffect(function () {\n mountIntoContainer = function mountIntoContainer(item) {\n return setHooks(function (hooks) {\n return [].concat(hooks, [item]);\n });\n };\n\n setHooks(mountQueue);\n }, []);\n return /*#__PURE__*/React.createElement(React.Fragment, null, hooks.map(function (h, i) {\n return /*#__PURE__*/React.createElement(SingleItemContainer, _extends({}, h, {\n key: i\n }));\n }));\n};\nexport var addHook = function addHook(hook) {\n if (!SingletonHooksContainerRendered && !SingletonHooksContainerMountedAutomatically) {\n SingletonHooksContainerMountedAutomatically = true;\n mount(SingletonHooksContainer);\n }\n\n mountIntoContainer(hook);\n};\nexport var resetLocalStateForTests = function resetLocalStateForTests() {\n SingletonHooksContainerMounted = false;\n SingletonHooksContainerRendered = false;\n SingletonHooksContainerMountedAutomatically = false;\n mountQueue = [];\n mountIntoContainer = mountIntoContainerDefault;\n};","import { useEffect, useState } from 'react';\nimport { addHook } from './components/SingletonHooksContainer';\nimport { batch } from './utils/env';\nexport var singletonHook = function singletonHook(initValue, useHookBody) {\n var mounted = false;\n var initStateCalculated = false;\n var lastKnownState = undefined;\n var consumers = [];\n\n var applyStateChange = function applyStateChange(newState) {\n lastKnownState = newState;\n batch(function () {\n return consumers.forEach(function (c) {\n return c(newState);\n });\n });\n };\n\n var stateInitializer = function stateInitializer() {\n if (!initStateCalculated) {\n lastKnownState = typeof initValue === 'function' ? initValue() : initValue;\n initStateCalculated = true;\n }\n\n return lastKnownState;\n };\n\n return function () {\n var _useState = useState(stateInitializer),\n state = _useState[0],\n setState = _useState[1];\n\n useEffect(function () {\n if (!mounted) {\n mounted = true;\n addHook({\n initValue: initValue,\n useHookBody: useHookBody,\n applyStateChange: applyStateChange\n });\n }\n\n consumers.push(setState);\n\n if (lastKnownState !== state) {\n setState(lastKnownState);\n }\n\n return function () {\n consumers.splice(consumers.indexOf(setState), 1);\n }; // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n return state;\n };\n};","module.exports = require(\"./lib\");","require(\".\").check(\"es5\");","var CapabilityDetector = require(\"./CapabilityDetector\");\r\n\r\nvar detector = new CapabilityDetector();\r\n\r\nvar capability = function (name) {\r\n return detector.test(name);\r\n};\r\ncapability.define = function (name, test) {\r\n detector.define(name, test);\r\n};\r\ncapability.check = function (name) {\r\n detector.check(name);\r\n};\r\ncapability.test = capability;\r\n\r\nmodule.exports = capability;","function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nmodule.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nmodule.exports = _isNativeReflectConstruct, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nmodule.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.InMemoryKeyStore = void 0;\nconst keystore_1 = require(\"./keystore\");\nconst key_pair_1 = require(\"../utils/key_pair\");\n/**\n * Simple in-memory keystore for mainly for testing purposes.\n *\n * @example {@link https://docs.near.org/docs/develop/front-end/naj-quick-reference#key-store}\n * @example\n * ```js\n * import { connect, keyStores, utils } from 'near-api-js';\n *\n * const privateKey = '.......';\n * const keyPair = utils.KeyPair.fromString(privateKey);\n *\n * const keyStore = new keyStores.InMemoryKeyStore();\n * keyStore.setKey('testnet', 'example-account.testnet', keyPair);\n *\n * const config = {\n * keyStore, // instance of InMemoryKeyStore\n * networkId: 'testnet',\n * nodeUrl: 'https://rpc.testnet.near.org',\n * walletUrl: 'https://wallet.testnet.near.org',\n * helperUrl: 'https://helper.testnet.near.org',\n * explorerUrl: 'https://explorer.testnet.near.org'\n * };\n *\n * // inside an async function\n * const near = await connect(config)\n * ```\n */\nclass InMemoryKeyStore extends keystore_1.KeyStore {\n constructor() {\n super();\n this.keys = {};\n }\n /**\n * Stores a {@KeyPair} in in-memory storage item\n * @param networkId The targeted network. (ex. default, betanet, etc…)\n * @param accountId The NEAR account tied to the key pair\n * @param keyPair The key pair to store in local storage\n */\n async setKey(networkId, accountId, keyPair) {\n this.keys[`${accountId}:${networkId}`] = keyPair.toString();\n }\n /**\n * Gets a {@link KeyPair} from in-memory storage\n * @param networkId The targeted network. (ex. default, betanet, etc…)\n * @param accountId The NEAR account tied to the key pair\n * @returns {Promise}\n */\n async getKey(networkId, accountId) {\n const value = this.keys[`${accountId}:${networkId}`];\n if (!value) {\n return null;\n }\n return key_pair_1.KeyPair.fromString(value);\n }\n /**\n * Removes a {@link KeyPair} from in-memory storage\n * @param networkId The targeted network. (ex. default, betanet, etc…)\n * @param accountId The NEAR account tied to the key pair\n */\n async removeKey(networkId, accountId) {\n delete this.keys[`${accountId}:${networkId}`];\n }\n /**\n * Removes all {@link KeyPairs} from in-memory storage\n */\n async clear() {\n this.keys = {};\n }\n /**\n * Get the network(s) from in-memory storage\n * @returns {Promise}\n */\n async getNetworks() {\n const result = new Set();\n Object.keys(this.keys).forEach((key) => {\n const parts = key.split(':');\n result.add(parts[1]);\n });\n return Array.from(result.values());\n }\n /**\n * Gets the account(s) from in-memory storage\n * @param networkId The targeted network. (ex. default, betanet, etc…)\n * @returns{Promise}\n */\n async getAccounts(networkId) {\n const result = new Array();\n Object.keys(this.keys).forEach((key) => {\n const parts = key.split(':');\n if (parts[parts.length - 1] === networkId) {\n result.push(parts.slice(0, parts.length - 1).join(':'));\n }\n });\n return result;\n }\n /** @hidden */\n toString() {\n return 'InMemoryKeyStore';\n }\n}\nexports.InMemoryKeyStore = InMemoryKeyStore;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar borsh_1 = require(\"borsh\");\nObject.defineProperty(exports, \"base_encode\", { enumerable: true, get: function () { return borsh_1.baseEncode; } });\nObject.defineProperty(exports, \"base_decode\", { enumerable: true, get: function () { return borsh_1.baseDecode; } });\nObject.defineProperty(exports, \"serialize\", { enumerable: true, get: function () { return borsh_1.serialize; } });\nObject.defineProperty(exports, \"deserialize\", { enumerable: true, get: function () { return borsh_1.deserialize; } });\nObject.defineProperty(exports, \"BorshError\", { enumerable: true, get: function () { return borsh_1.BorshError; } });\nObject.defineProperty(exports, \"BinaryWriter\", { enumerable: true, get: function () { return borsh_1.BinaryWriter; } });\nObject.defineProperty(exports, \"BinaryReader\", { enumerable: true, get: function () { return borsh_1.BinaryReader; } });\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WalletConnection = exports.WalletAccount = exports.ConnectedWalletAccount = exports.Near = exports.KeyPair = exports.Signer = exports.InMemorySigner = exports.Contract = exports.Connection = exports.Account = exports.multisig = exports.validators = exports.transactions = exports.utils = exports.providers = exports.accountCreator = void 0;\n/** @hidden @module */\nconst providers = __importStar(require(\"./providers\"));\nexports.providers = providers;\nconst utils = __importStar(require(\"./utils\"));\nexports.utils = utils;\nconst transactions = __importStar(require(\"./transaction\"));\nexports.transactions = transactions;\nconst validators = __importStar(require(\"./validators\"));\nexports.validators = validators;\nconst account_1 = require(\"./account\");\nObject.defineProperty(exports, \"Account\", { enumerable: true, get: function () { return account_1.Account; } });\nconst multisig = __importStar(require(\"./account_multisig\"));\nexports.multisig = multisig;\nconst accountCreator = __importStar(require(\"./account_creator\"));\nexports.accountCreator = accountCreator;\nconst connection_1 = require(\"./connection\");\nObject.defineProperty(exports, \"Connection\", { enumerable: true, get: function () { return connection_1.Connection; } });\nconst signer_1 = require(\"./signer\");\nObject.defineProperty(exports, \"Signer\", { enumerable: true, get: function () { return signer_1.Signer; } });\nObject.defineProperty(exports, \"InMemorySigner\", { enumerable: true, get: function () { return signer_1.InMemorySigner; } });\nconst contract_1 = require(\"./contract\");\nObject.defineProperty(exports, \"Contract\", { enumerable: true, get: function () { return contract_1.Contract; } });\nconst key_pair_1 = require(\"./utils/key_pair\");\nObject.defineProperty(exports, \"KeyPair\", { enumerable: true, get: function () { return key_pair_1.KeyPair; } });\nconst near_1 = require(\"./near\");\nObject.defineProperty(exports, \"Near\", { enumerable: true, get: function () { return near_1.Near; } });\n// TODO: Deprecate and remove WalletAccount\nconst wallet_account_1 = require(\"./wallet-account\");\nObject.defineProperty(exports, \"ConnectedWalletAccount\", { enumerable: true, get: function () { return wallet_account_1.ConnectedWalletAccount; } });\nObject.defineProperty(exports, \"WalletAccount\", { enumerable: true, get: function () { return wallet_account_1.WalletAccount; } });\nObject.defineProperty(exports, \"WalletConnection\", { enumerable: true, get: function () { return wallet_account_1.WalletConnection; } });\n","\"use strict\";\n/**\n * NEAR RPC API request types and responses\n * @module\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getTransactionLastResult = exports.Provider = exports.IdType = exports.FinalExecutionStatusBasic = exports.ExecutionStatusBasic = void 0;\nvar ExecutionStatusBasic;\n(function (ExecutionStatusBasic) {\n ExecutionStatusBasic[\"Unknown\"] = \"Unknown\";\n ExecutionStatusBasic[\"Pending\"] = \"Pending\";\n ExecutionStatusBasic[\"Failure\"] = \"Failure\";\n})(ExecutionStatusBasic = exports.ExecutionStatusBasic || (exports.ExecutionStatusBasic = {}));\nvar FinalExecutionStatusBasic;\n(function (FinalExecutionStatusBasic) {\n FinalExecutionStatusBasic[\"NotStarted\"] = \"NotStarted\";\n FinalExecutionStatusBasic[\"Started\"] = \"Started\";\n FinalExecutionStatusBasic[\"Failure\"] = \"Failure\";\n})(FinalExecutionStatusBasic = exports.FinalExecutionStatusBasic || (exports.FinalExecutionStatusBasic = {}));\nvar IdType;\n(function (IdType) {\n IdType[\"Transaction\"] = \"transaction\";\n IdType[\"Receipt\"] = \"receipt\";\n})(IdType = exports.IdType || (exports.IdType = {}));\n/** @hidden */\nclass Provider {\n}\nexports.Provider = Provider;\n/** @hidden */\nfunction getTransactionLastResult(txResult) {\n if (typeof txResult.status === 'object' && typeof txResult.status.SuccessValue === 'string') {\n const value = Buffer.from(txResult.status.SuccessValue, 'base64').toString();\n try {\n return JSON.parse(value);\n }\n catch (e) {\n return value;\n }\n }\n return null;\n}\nexports.getTransactionLastResult = getTransactionLastResult;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.logWarning = exports.rpc_errors = exports.KeyPairEd25519 = exports.KeyPair = exports.PublicKey = exports.format = exports.enums = exports.web = exports.serialize = exports.key_pair = void 0;\nconst key_pair = __importStar(require(\"./key_pair\"));\nexports.key_pair = key_pair;\nconst serialize = __importStar(require(\"./serialize\"));\nexports.serialize = serialize;\nconst web = __importStar(require(\"./web\"));\nexports.web = web;\nconst enums = __importStar(require(\"./enums\"));\nexports.enums = enums;\nconst format = __importStar(require(\"./format\"));\nexports.format = format;\nconst rpc_errors = __importStar(require(\"./rpc_errors\"));\nexports.rpc_errors = rpc_errors;\nconst key_pair_1 = require(\"./key_pair\");\nObject.defineProperty(exports, \"PublicKey\", { enumerable: true, get: function () { return key_pair_1.PublicKey; } });\nObject.defineProperty(exports, \"KeyPair\", { enumerable: true, get: function () { return key_pair_1.KeyPair; } });\nObject.defineProperty(exports, \"KeyPairEd25519\", { enumerable: true, get: function () { return key_pair_1.KeyPairEd25519; } });\nconst errors_1 = require(\"./errors\");\nObject.defineProperty(exports, \"logWarning\", { enumerable: true, get: function () { return errors_1.logWarning; } });\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.parseNearAmount = exports.formatNearAmount = exports.NEAR_NOMINATION = exports.NEAR_NOMINATION_EXP = void 0;\nconst bn_js_1 = __importDefault(require(\"bn.js\"));\n/**\n * Exponent for calculating how many indivisible units are there in one NEAR. See {@link NEAR_NOMINATION}.\n */\nexports.NEAR_NOMINATION_EXP = 24;\n/**\n * Number of indivisible units in one NEAR. Derived from {@link NEAR_NOMINATION_EXP}.\n */\nexports.NEAR_NOMINATION = new bn_js_1.default('10', 10).pow(new bn_js_1.default(exports.NEAR_NOMINATION_EXP, 10));\n// Pre-calculate offests used for rounding to different number of digits\nconst ROUNDING_OFFSETS = [];\nconst BN10 = new bn_js_1.default(10);\nfor (let i = 0, offset = new bn_js_1.default(5); i < exports.NEAR_NOMINATION_EXP; i++, offset = offset.mul(BN10)) {\n ROUNDING_OFFSETS[i] = offset;\n}\n/**\n * Convert account balance value from internal indivisible units to NEAR. 1 NEAR is defined by {@link NEAR_NOMINATION}.\n * Effectively this divides given amount by {@link NEAR_NOMINATION}.\n *\n * @param balance decimal string representing balance in smallest non-divisible NEAR units (as specified by {@link NEAR_NOMINATION})\n * @param fracDigits number of fractional digits to preserve in formatted string. Balance is rounded to match given number of digits.\n * @returns Value in Ⓝ\n */\nfunction formatNearAmount(balance, fracDigits = exports.NEAR_NOMINATION_EXP) {\n const balanceBN = new bn_js_1.default(balance, 10);\n if (fracDigits !== exports.NEAR_NOMINATION_EXP) {\n // Adjust balance for rounding at given number of digits\n const roundingExp = exports.NEAR_NOMINATION_EXP - fracDigits - 1;\n if (roundingExp > 0) {\n balanceBN.iadd(ROUNDING_OFFSETS[roundingExp]);\n }\n }\n balance = balanceBN.toString();\n const wholeStr = balance.substring(0, balance.length - exports.NEAR_NOMINATION_EXP) || '0';\n const fractionStr = balance.substring(balance.length - exports.NEAR_NOMINATION_EXP)\n .padStart(exports.NEAR_NOMINATION_EXP, '0').substring(0, fracDigits);\n return trimTrailingZeroes(`${formatWithCommas(wholeStr)}.${fractionStr}`);\n}\nexports.formatNearAmount = formatNearAmount;\n/**\n * Convert human readable NEAR amount to internal indivisible units.\n * Effectively this multiplies given amount by {@link NEAR_NOMINATION}.\n *\n * @param amt decimal string (potentially fractional) denominated in NEAR.\n * @returns The parsed yoctoⓃ amount or null if no amount was passed in\n */\nfunction parseNearAmount(amt) {\n if (!amt) {\n return null;\n }\n amt = cleanupAmount(amt);\n const split = amt.split('.');\n const wholePart = split[0];\n const fracPart = split[1] || '';\n if (split.length > 2 || fracPart.length > exports.NEAR_NOMINATION_EXP) {\n throw new Error(`Cannot parse '${amt}' as NEAR amount`);\n }\n return trimLeadingZeroes(wholePart + fracPart.padEnd(exports.NEAR_NOMINATION_EXP, '0'));\n}\nexports.parseNearAmount = parseNearAmount;\n/**\n * Removes commas from the input\n * @param amount A value or amount that may contain commas\n * @returns string The cleaned value\n */\nfunction cleanupAmount(amount) {\n return amount.replace(/,/g, '').trim();\n}\n/**\n * Removes .000… from an input\n * @param value A value that may contain trailing zeroes in the decimals place\n * @returns string The value without the trailing zeros\n */\nfunction trimTrailingZeroes(value) {\n return value.replace(/\\.?0*$/, '');\n}\n/**\n * Removes leading zeroes from an input\n * @param value A value that may contain leading zeroes\n * @returns string The value without the leading zeroes\n */\nfunction trimLeadingZeroes(value) {\n value = value.replace(/^0+/, '');\n if (value === '') {\n return '0';\n }\n return value;\n}\n/**\n * Returns a human-readable value with commas\n * @param value A value that may not contain commas\n * @returns string A value with commas\n */\nfunction formatWithCommas(value) {\n const pattern = /(-?\\d+)(\\d{3})/;\n while (pattern.test(value)) {\n value = value.replace(pattern, '$1,$2');\n }\n return value;\n}\n","/**\n * [js-sha256]{@link https://github.com/emn178/js-sha256}\n *\n * @version 0.9.0\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2014-2017\n * @license MIT\n */\n/*jslint bitwise: true */\n(function () {\n 'use strict';\n\n var ERROR = 'input is invalid type';\n var WINDOW = typeof window === 'object';\n var root = WINDOW ? window : {};\n if (root.JS_SHA256_NO_WINDOW) {\n WINDOW = false;\n }\n var WEB_WORKER = !WINDOW && typeof self === 'object';\n var NODE_JS = !root.JS_SHA256_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\n if (NODE_JS) {\n root = global;\n } else if (WEB_WORKER) {\n root = self;\n }\n var COMMON_JS = !root.JS_SHA256_NO_COMMON_JS && typeof module === 'object' && module.exports;\n var AMD = typeof define === 'function' && define.amd;\n var ARRAY_BUFFER = !root.JS_SHA256_NO_ARRAY_BUFFER && typeof ArrayBuffer !== 'undefined';\n var HEX_CHARS = '0123456789abcdef'.split('');\n var EXTRA = [-2147483648, 8388608, 32768, 128];\n var SHIFT = [24, 16, 8, 0];\n var K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n ];\n var OUTPUT_TYPES = ['hex', 'array', 'digest', 'arrayBuffer'];\n\n var blocks = [];\n\n if (root.JS_SHA256_NO_NODE_JS || !Array.isArray) {\n Array.isArray = function (obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n };\n }\n\n if (ARRAY_BUFFER && (root.JS_SHA256_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)) {\n ArrayBuffer.isView = function (obj) {\n return typeof obj === 'object' && obj.buffer && obj.buffer.constructor === ArrayBuffer;\n };\n }\n\n var createOutputMethod = function (outputType, is224) {\n return function (message) {\n return new Sha256(is224, true).update(message)[outputType]();\n };\n };\n\n var createMethod = function (is224) {\n var method = createOutputMethod('hex', is224);\n if (NODE_JS) {\n method = nodeWrap(method, is224);\n }\n method.create = function () {\n return new Sha256(is224);\n };\n method.update = function (message) {\n return method.create().update(message);\n };\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createOutputMethod(type, is224);\n }\n return method;\n };\n\n var nodeWrap = function (method, is224) {\n var crypto = eval(\"require('crypto')\");\n var Buffer = eval(\"require('buffer').Buffer\");\n var algorithm = is224 ? 'sha224' : 'sha256';\n var nodeMethod = function (message) {\n if (typeof message === 'string') {\n return crypto.createHash(algorithm).update(message, 'utf8').digest('hex');\n } else {\n if (message === null || message === undefined) {\n throw new Error(ERROR);\n } else if (message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n }\n }\n if (Array.isArray(message) || ArrayBuffer.isView(message) ||\n message.constructor === Buffer) {\n return crypto.createHash(algorithm).update(new Buffer(message)).digest('hex');\n } else {\n return method(message);\n }\n };\n return nodeMethod;\n };\n\n var createHmacOutputMethod = function (outputType, is224) {\n return function (key, message) {\n return new HmacSha256(key, is224, true).update(message)[outputType]();\n };\n };\n\n var createHmacMethod = function (is224) {\n var method = createHmacOutputMethod('hex', is224);\n method.create = function (key) {\n return new HmacSha256(key, is224);\n };\n method.update = function (key, message) {\n return method.create(key).update(message);\n };\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createHmacOutputMethod(type, is224);\n }\n return method;\n };\n\n function Sha256(is224, sharedMemory) {\n if (sharedMemory) {\n blocks[0] = blocks[16] = blocks[1] = blocks[2] = blocks[3] =\n blocks[4] = blocks[5] = blocks[6] = blocks[7] =\n blocks[8] = blocks[9] = blocks[10] = blocks[11] =\n blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n this.blocks = blocks;\n } else {\n this.blocks = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n }\n\n if (is224) {\n this.h0 = 0xc1059ed8;\n this.h1 = 0x367cd507;\n this.h2 = 0x3070dd17;\n this.h3 = 0xf70e5939;\n this.h4 = 0xffc00b31;\n this.h5 = 0x68581511;\n this.h6 = 0x64f98fa7;\n this.h7 = 0xbefa4fa4;\n } else { // 256\n this.h0 = 0x6a09e667;\n this.h1 = 0xbb67ae85;\n this.h2 = 0x3c6ef372;\n this.h3 = 0xa54ff53a;\n this.h4 = 0x510e527f;\n this.h5 = 0x9b05688c;\n this.h6 = 0x1f83d9ab;\n this.h7 = 0x5be0cd19;\n }\n\n this.block = this.start = this.bytes = this.hBytes = 0;\n this.finalized = this.hashed = false;\n this.first = true;\n this.is224 = is224;\n }\n\n Sha256.prototype.update = function (message) {\n if (this.finalized) {\n return;\n }\n var notString, type = typeof message;\n if (type !== 'string') {\n if (type === 'object') {\n if (message === null) {\n throw new Error(ERROR);\n } else if (ARRAY_BUFFER && message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n } else if (!Array.isArray(message)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(message)) {\n throw new Error(ERROR);\n }\n }\n } else {\n throw new Error(ERROR);\n }\n notString = true;\n }\n var code, index = 0, i, length = message.length, blocks = this.blocks;\n\n while (index < length) {\n if (this.hashed) {\n this.hashed = false;\n blocks[0] = this.block;\n blocks[16] = blocks[1] = blocks[2] = blocks[3] =\n blocks[4] = blocks[5] = blocks[6] = blocks[7] =\n blocks[8] = blocks[9] = blocks[10] = blocks[11] =\n blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n }\n\n if (notString) {\n for (i = this.start; index < length && i < 64; ++index) {\n blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\n }\n } else {\n for (i = this.start; index < length && i < 64; ++index) {\n code = message.charCodeAt(index);\n if (code < 0x80) {\n blocks[i >> 2] |= code << SHIFT[i++ & 3];\n } else if (code < 0x800) {\n blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else if (code < 0xd800 || code >= 0xe000) {\n blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\n blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n }\n }\n }\n\n this.lastByteIndex = i;\n this.bytes += i - this.start;\n if (i >= 64) {\n this.block = blocks[16];\n this.start = i - 64;\n this.hash();\n this.hashed = true;\n } else {\n this.start = i;\n }\n }\n if (this.bytes > 4294967295) {\n this.hBytes += this.bytes / 4294967296 << 0;\n this.bytes = this.bytes % 4294967296;\n }\n return this;\n };\n\n Sha256.prototype.finalize = function () {\n if (this.finalized) {\n return;\n }\n this.finalized = true;\n var blocks = this.blocks, i = this.lastByteIndex;\n blocks[16] = this.block;\n blocks[i >> 2] |= EXTRA[i & 3];\n this.block = blocks[16];\n if (i >= 56) {\n if (!this.hashed) {\n this.hash();\n }\n blocks[0] = this.block;\n blocks[16] = blocks[1] = blocks[2] = blocks[3] =\n blocks[4] = blocks[5] = blocks[6] = blocks[7] =\n blocks[8] = blocks[9] = blocks[10] = blocks[11] =\n blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n }\n blocks[14] = this.hBytes << 3 | this.bytes >>> 29;\n blocks[15] = this.bytes << 3;\n this.hash();\n };\n\n Sha256.prototype.hash = function () {\n var a = this.h0, b = this.h1, c = this.h2, d = this.h3, e = this.h4, f = this.h5, g = this.h6,\n h = this.h7, blocks = this.blocks, j, s0, s1, maj, t1, t2, ch, ab, da, cd, bc;\n\n for (j = 16; j < 64; ++j) {\n // rightrotate\n t1 = blocks[j - 15];\n s0 = ((t1 >>> 7) | (t1 << 25)) ^ ((t1 >>> 18) | (t1 << 14)) ^ (t1 >>> 3);\n t1 = blocks[j - 2];\n s1 = ((t1 >>> 17) | (t1 << 15)) ^ ((t1 >>> 19) | (t1 << 13)) ^ (t1 >>> 10);\n blocks[j] = blocks[j - 16] + s0 + blocks[j - 7] + s1 << 0;\n }\n\n bc = b & c;\n for (j = 0; j < 64; j += 4) {\n if (this.first) {\n if (this.is224) {\n ab = 300032;\n t1 = blocks[0] - 1413257819;\n h = t1 - 150054599 << 0;\n d = t1 + 24177077 << 0;\n } else {\n ab = 704751109;\n t1 = blocks[0] - 210244248;\n h = t1 - 1521486534 << 0;\n d = t1 + 143694565 << 0;\n }\n this.first = false;\n } else {\n s0 = ((a >>> 2) | (a << 30)) ^ ((a >>> 13) | (a << 19)) ^ ((a >>> 22) | (a << 10));\n s1 = ((e >>> 6) | (e << 26)) ^ ((e >>> 11) | (e << 21)) ^ ((e >>> 25) | (e << 7));\n ab = a & b;\n maj = ab ^ (a & c) ^ bc;\n ch = (e & f) ^ (~e & g);\n t1 = h + s1 + ch + K[j] + blocks[j];\n t2 = s0 + maj;\n h = d + t1 << 0;\n d = t1 + t2 << 0;\n }\n s0 = ((d >>> 2) | (d << 30)) ^ ((d >>> 13) | (d << 19)) ^ ((d >>> 22) | (d << 10));\n s1 = ((h >>> 6) | (h << 26)) ^ ((h >>> 11) | (h << 21)) ^ ((h >>> 25) | (h << 7));\n da = d & a;\n maj = da ^ (d & b) ^ ab;\n ch = (h & e) ^ (~h & f);\n t1 = g + s1 + ch + K[j + 1] + blocks[j + 1];\n t2 = s0 + maj;\n g = c + t1 << 0;\n c = t1 + t2 << 0;\n s0 = ((c >>> 2) | (c << 30)) ^ ((c >>> 13) | (c << 19)) ^ ((c >>> 22) | (c << 10));\n s1 = ((g >>> 6) | (g << 26)) ^ ((g >>> 11) | (g << 21)) ^ ((g >>> 25) | (g << 7));\n cd = c & d;\n maj = cd ^ (c & a) ^ da;\n ch = (g & h) ^ (~g & e);\n t1 = f + s1 + ch + K[j + 2] + blocks[j + 2];\n t2 = s0 + maj;\n f = b + t1 << 0;\n b = t1 + t2 << 0;\n s0 = ((b >>> 2) | (b << 30)) ^ ((b >>> 13) | (b << 19)) ^ ((b >>> 22) | (b << 10));\n s1 = ((f >>> 6) | (f << 26)) ^ ((f >>> 11) | (f << 21)) ^ ((f >>> 25) | (f << 7));\n bc = b & c;\n maj = bc ^ (b & d) ^ cd;\n ch = (f & g) ^ (~f & h);\n t1 = e + s1 + ch + K[j + 3] + blocks[j + 3];\n t2 = s0 + maj;\n e = a + t1 << 0;\n a = t1 + t2 << 0;\n }\n\n this.h0 = this.h0 + a << 0;\n this.h1 = this.h1 + b << 0;\n this.h2 = this.h2 + c << 0;\n this.h3 = this.h3 + d << 0;\n this.h4 = this.h4 + e << 0;\n this.h5 = this.h5 + f << 0;\n this.h6 = this.h6 + g << 0;\n this.h7 = this.h7 + h << 0;\n };\n\n Sha256.prototype.hex = function () {\n this.finalize();\n\n var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3, h4 = this.h4, h5 = this.h5,\n h6 = this.h6, h7 = this.h7;\n\n var hex = HEX_CHARS[(h0 >> 28) & 0x0F] + HEX_CHARS[(h0 >> 24) & 0x0F] +\n HEX_CHARS[(h0 >> 20) & 0x0F] + HEX_CHARS[(h0 >> 16) & 0x0F] +\n HEX_CHARS[(h0 >> 12) & 0x0F] + HEX_CHARS[(h0 >> 8) & 0x0F] +\n HEX_CHARS[(h0 >> 4) & 0x0F] + HEX_CHARS[h0 & 0x0F] +\n HEX_CHARS[(h1 >> 28) & 0x0F] + HEX_CHARS[(h1 >> 24) & 0x0F] +\n HEX_CHARS[(h1 >> 20) & 0x0F] + HEX_CHARS[(h1 >> 16) & 0x0F] +\n HEX_CHARS[(h1 >> 12) & 0x0F] + HEX_CHARS[(h1 >> 8) & 0x0F] +\n HEX_CHARS[(h1 >> 4) & 0x0F] + HEX_CHARS[h1 & 0x0F] +\n HEX_CHARS[(h2 >> 28) & 0x0F] + HEX_CHARS[(h2 >> 24) & 0x0F] +\n HEX_CHARS[(h2 >> 20) & 0x0F] + HEX_CHARS[(h2 >> 16) & 0x0F] +\n HEX_CHARS[(h2 >> 12) & 0x0F] + HEX_CHARS[(h2 >> 8) & 0x0F] +\n HEX_CHARS[(h2 >> 4) & 0x0F] + HEX_CHARS[h2 & 0x0F] +\n HEX_CHARS[(h3 >> 28) & 0x0F] + HEX_CHARS[(h3 >> 24) & 0x0F] +\n HEX_CHARS[(h3 >> 20) & 0x0F] + HEX_CHARS[(h3 >> 16) & 0x0F] +\n HEX_CHARS[(h3 >> 12) & 0x0F] + HEX_CHARS[(h3 >> 8) & 0x0F] +\n HEX_CHARS[(h3 >> 4) & 0x0F] + HEX_CHARS[h3 & 0x0F] +\n HEX_CHARS[(h4 >> 28) & 0x0F] + HEX_CHARS[(h4 >> 24) & 0x0F] +\n HEX_CHARS[(h4 >> 20) & 0x0F] + HEX_CHARS[(h4 >> 16) & 0x0F] +\n HEX_CHARS[(h4 >> 12) & 0x0F] + HEX_CHARS[(h4 >> 8) & 0x0F] +\n HEX_CHARS[(h4 >> 4) & 0x0F] + HEX_CHARS[h4 & 0x0F] +\n HEX_CHARS[(h5 >> 28) & 0x0F] + HEX_CHARS[(h5 >> 24) & 0x0F] +\n HEX_CHARS[(h5 >> 20) & 0x0F] + HEX_CHARS[(h5 >> 16) & 0x0F] +\n HEX_CHARS[(h5 >> 12) & 0x0F] + HEX_CHARS[(h5 >> 8) & 0x0F] +\n HEX_CHARS[(h5 >> 4) & 0x0F] + HEX_CHARS[h5 & 0x0F] +\n HEX_CHARS[(h6 >> 28) & 0x0F] + HEX_CHARS[(h6 >> 24) & 0x0F] +\n HEX_CHARS[(h6 >> 20) & 0x0F] + HEX_CHARS[(h6 >> 16) & 0x0F] +\n HEX_CHARS[(h6 >> 12) & 0x0F] + HEX_CHARS[(h6 >> 8) & 0x0F] +\n HEX_CHARS[(h6 >> 4) & 0x0F] + HEX_CHARS[h6 & 0x0F];\n if (!this.is224) {\n hex += HEX_CHARS[(h7 >> 28) & 0x0F] + HEX_CHARS[(h7 >> 24) & 0x0F] +\n HEX_CHARS[(h7 >> 20) & 0x0F] + HEX_CHARS[(h7 >> 16) & 0x0F] +\n HEX_CHARS[(h7 >> 12) & 0x0F] + HEX_CHARS[(h7 >> 8) & 0x0F] +\n HEX_CHARS[(h7 >> 4) & 0x0F] + HEX_CHARS[h7 & 0x0F];\n }\n return hex;\n };\n\n Sha256.prototype.toString = Sha256.prototype.hex;\n\n Sha256.prototype.digest = function () {\n this.finalize();\n\n var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3, h4 = this.h4, h5 = this.h5,\n h6 = this.h6, h7 = this.h7;\n\n var arr = [\n (h0 >> 24) & 0xFF, (h0 >> 16) & 0xFF, (h0 >> 8) & 0xFF, h0 & 0xFF,\n (h1 >> 24) & 0xFF, (h1 >> 16) & 0xFF, (h1 >> 8) & 0xFF, h1 & 0xFF,\n (h2 >> 24) & 0xFF, (h2 >> 16) & 0xFF, (h2 >> 8) & 0xFF, h2 & 0xFF,\n (h3 >> 24) & 0xFF, (h3 >> 16) & 0xFF, (h3 >> 8) & 0xFF, h3 & 0xFF,\n (h4 >> 24) & 0xFF, (h4 >> 16) & 0xFF, (h4 >> 8) & 0xFF, h4 & 0xFF,\n (h5 >> 24) & 0xFF, (h5 >> 16) & 0xFF, (h5 >> 8) & 0xFF, h5 & 0xFF,\n (h6 >> 24) & 0xFF, (h6 >> 16) & 0xFF, (h6 >> 8) & 0xFF, h6 & 0xFF\n ];\n if (!this.is224) {\n arr.push((h7 >> 24) & 0xFF, (h7 >> 16) & 0xFF, (h7 >> 8) & 0xFF, h7 & 0xFF);\n }\n return arr;\n };\n\n Sha256.prototype.array = Sha256.prototype.digest;\n\n Sha256.prototype.arrayBuffer = function () {\n this.finalize();\n\n var buffer = new ArrayBuffer(this.is224 ? 28 : 32);\n var dataView = new DataView(buffer);\n dataView.setUint32(0, this.h0);\n dataView.setUint32(4, this.h1);\n dataView.setUint32(8, this.h2);\n dataView.setUint32(12, this.h3);\n dataView.setUint32(16, this.h4);\n dataView.setUint32(20, this.h5);\n dataView.setUint32(24, this.h6);\n if (!this.is224) {\n dataView.setUint32(28, this.h7);\n }\n return buffer;\n };\n\n function HmacSha256(key, is224, sharedMemory) {\n var i, type = typeof key;\n if (type === 'string') {\n var bytes = [], length = key.length, index = 0, code;\n for (i = 0; i < length; ++i) {\n code = key.charCodeAt(i);\n if (code < 0x80) {\n bytes[index++] = code;\n } else if (code < 0x800) {\n bytes[index++] = (0xc0 | (code >> 6));\n bytes[index++] = (0x80 | (code & 0x3f));\n } else if (code < 0xd800 || code >= 0xe000) {\n bytes[index++] = (0xe0 | (code >> 12));\n bytes[index++] = (0x80 | ((code >> 6) & 0x3f));\n bytes[index++] = (0x80 | (code & 0x3f));\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (key.charCodeAt(++i) & 0x3ff));\n bytes[index++] = (0xf0 | (code >> 18));\n bytes[index++] = (0x80 | ((code >> 12) & 0x3f));\n bytes[index++] = (0x80 | ((code >> 6) & 0x3f));\n bytes[index++] = (0x80 | (code & 0x3f));\n }\n }\n key = bytes;\n } else {\n if (type === 'object') {\n if (key === null) {\n throw new Error(ERROR);\n } else if (ARRAY_BUFFER && key.constructor === ArrayBuffer) {\n key = new Uint8Array(key);\n } else if (!Array.isArray(key)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(key)) {\n throw new Error(ERROR);\n }\n }\n } else {\n throw new Error(ERROR);\n }\n }\n\n if (key.length > 64) {\n key = (new Sha256(is224, true)).update(key).array();\n }\n\n var oKeyPad = [], iKeyPad = [];\n for (i = 0; i < 64; ++i) {\n var b = key[i] || 0;\n oKeyPad[i] = 0x5c ^ b;\n iKeyPad[i] = 0x36 ^ b;\n }\n\n Sha256.call(this, is224, sharedMemory);\n\n this.update(iKeyPad);\n this.oKeyPad = oKeyPad;\n this.inner = true;\n this.sharedMemory = sharedMemory;\n }\n HmacSha256.prototype = new Sha256();\n\n HmacSha256.prototype.finalize = function () {\n Sha256.prototype.finalize.call(this);\n if (this.inner) {\n this.inner = false;\n var innerHash = this.array();\n Sha256.call(this, this.is224, this.sharedMemory);\n this.update(this.oKeyPad);\n this.update(innerHash);\n Sha256.prototype.finalize.call(this);\n }\n };\n\n var exports = createMethod();\n exports.sha256 = exports;\n exports.sha224 = createMethod(true);\n exports.sha256.hmac = createHmacMethod();\n exports.sha224.hmac = createHmacMethod(true);\n\n if (COMMON_JS) {\n module.exports = exports;\n } else {\n root.sha256 = exports.sha256;\n root.sha224 = exports.sha224;\n if (AMD) {\n define(function () {\n return exports;\n });\n }\n }\n})();\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.UrlAccountCreator = exports.LocalAccountCreator = exports.AccountCreator = void 0;\nconst web_1 = require(\"./utils/web\");\n/**\n * Account creator provides an interface for implementations to actually create accounts\n */\nclass AccountCreator {\n}\nexports.AccountCreator = AccountCreator;\nclass LocalAccountCreator extends AccountCreator {\n constructor(masterAccount, initialBalance) {\n super();\n this.masterAccount = masterAccount;\n this.initialBalance = initialBalance;\n }\n /**\n * Creates an account using a masterAccount, meaning the new account is created from an existing account\n * @param newAccountId The name of the NEAR account to be created\n * @param publicKey The public key from the masterAccount used to create this account\n * @returns {Promise}\n */\n async createAccount(newAccountId, publicKey) {\n await this.masterAccount.createAccount(newAccountId, publicKey, this.initialBalance);\n }\n}\nexports.LocalAccountCreator = LocalAccountCreator;\nclass UrlAccountCreator extends AccountCreator {\n constructor(connection, helperUrl) {\n super();\n this.connection = connection;\n this.helperUrl = helperUrl;\n }\n /**\n * Creates an account using a helperUrl\n * This is [hosted here](https://helper.nearprotocol.com) or set up locally with the [near-contract-helper](https://github.com/nearprotocol/near-contract-helper) repository\n * @param newAccountId The name of the NEAR account to be created\n * @param publicKey The public key from the masterAccount used to create this account\n * @returns {Promise}\n */\n async createAccount(newAccountId, publicKey) {\n await web_1.fetchJson(`${this.helperUrl}/account`, JSON.stringify({ newAccountId, newAccountPublicKey: publicKey.toString() }));\n }\n}\nexports.UrlAccountCreator = UrlAccountCreator;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Connection = void 0;\nconst providers_1 = require(\"./providers\");\nconst signer_1 = require(\"./signer\");\n/**\n * @param config Contains connection info details\n * @returns {Provider}\n */\nfunction getProvider(config) {\n switch (config.type) {\n case undefined:\n return config;\n case 'JsonRpcProvider': return new providers_1.JsonRpcProvider({ ...config.args });\n default: throw new Error(`Unknown provider type ${config.type}`);\n }\n}\n/**\n * @param config Contains connection info details\n * @returns {Signer}\n */\nfunction getSigner(config) {\n switch (config.type) {\n case undefined:\n return config;\n case 'InMemorySigner': {\n return new signer_1.InMemorySigner(config.keyStore);\n }\n default: throw new Error(`Unknown signer type ${config.type}`);\n }\n}\n/**\n * Connects an account to a given network via a given provider\n */\nclass Connection {\n constructor(networkId, provider, signer) {\n this.networkId = networkId;\n this.provider = provider;\n this.signer = signer;\n }\n /**\n * @param config Contains connection info details\n */\n static fromConfig(config) {\n const provider = getProvider(config.provider);\n const signer = getSigner(config.signer);\n return new Connection(config.networkId, provider, signer);\n }\n}\nexports.Connection = Connection;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.InMemorySigner = exports.Signer = void 0;\nconst js_sha256_1 = __importDefault(require(\"js-sha256\"));\nconst key_pair_1 = require(\"./utils/key_pair\");\nconst in_memory_key_store_1 = require(\"./key_stores/in_memory_key_store\");\n/**\n * General signing interface, can be used for in memory signing, RPC singing, external wallet, HSM, etc.\n */\nclass Signer {\n}\nexports.Signer = Signer;\n/**\n * Signs using in memory key store.\n */\nclass InMemorySigner extends Signer {\n constructor(keyStore) {\n super();\n this.keyStore = keyStore;\n }\n /**\n * Creates a single account Signer instance with account, network and keyPair provided.\n *\n * Intended to be useful for temporary keys (e.g. claiming a Linkdrop).\n *\n * @param networkId The targeted network. (ex. default, betanet, etc…)\n * @param accountId The NEAR account to assign the key pair to\n * @param keyPair The keyPair to use for signing\n */\n static async fromKeyPair(networkId, accountId, keyPair) {\n const keyStore = new in_memory_key_store_1.InMemoryKeyStore();\n await keyStore.setKey(networkId, accountId, keyPair);\n return new InMemorySigner(keyStore);\n }\n /**\n * Creates a public key for the account given\n * @param accountId The NEAR account to assign a public key to\n * @param networkId The targeted network. (ex. default, betanet, etc…)\n * @returns {Promise}\n */\n async createKey(accountId, networkId) {\n const keyPair = key_pair_1.KeyPair.fromRandom('ed25519');\n await this.keyStore.setKey(networkId, accountId, keyPair);\n return keyPair.getPublicKey();\n }\n /**\n * Gets the existing public key for a given account\n * @param accountId The NEAR account to assign a public key to\n * @param networkId The targeted network. (ex. default, betanet, etc…)\n * @returns {Promise} Returns the public key or null if not found\n */\n async getPublicKey(accountId, networkId) {\n const keyPair = await this.keyStore.getKey(networkId, accountId);\n if (keyPair === null) {\n return null;\n }\n return keyPair.getPublicKey();\n }\n /**\n * @param message A message to be signed, typically a serialized transaction\n * @param accountId the NEAR account signing the message\n * @param networkId The targeted network. (ex. default, betanet, etc…)\n * @returns {Promise}\n */\n async signMessage(message, accountId, networkId) {\n const hash = new Uint8Array(js_sha256_1.default.sha256.array(message));\n if (!accountId) {\n throw new Error('InMemorySigner requires provided account id');\n }\n const keyPair = await this.keyStore.getKey(networkId, accountId);\n if (keyPair === null) {\n throw new Error(`Key for ${accountId} not found in ${networkId}`);\n }\n return keyPair.sign(hash);\n }\n toString() {\n return `InMemorySigner(${this.keyStore})`;\n }\n}\nexports.InMemorySigner = InMemorySigner;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Contract = void 0;\nconst bn_js_1 = __importDefault(require(\"bn.js\"));\nconst depd_1 = __importDefault(require(\"depd\"));\nconst providers_1 = require(\"./providers\");\nconst errors_1 = require(\"./utils/errors\");\n// Makes `function.name` return given name\nfunction nameFunction(name, body) {\n return {\n [name](...args) {\n return body(...args);\n }\n }[name];\n}\nconst isUint8Array = (x) => x && x.byteLength !== undefined && x.byteLength === x.length;\nconst isObject = (x) => Object.prototype.toString.call(x) === '[object Object]';\n/**\n * Defines a smart contract on NEAR including the change (mutable) and view (non-mutable) methods\n *\n * @example {@link https://docs.near.org/docs/develop/front-end/naj-quick-reference#contract}\n * @example\n * ```js\n * import { Contract } from 'near-api-js';\n *\n * async function contractExample() {\n * const methodOptions = {\n * viewMethods: ['getMessageByAccountId'],\n * changeMethods: ['addMessage']\n * };\n * const contract = new Contract(\n * wallet.account(),\n * 'contract-id.testnet',\n * methodOptions\n * );\n *\n * // use a contract view method\n * const messages = await contract.getMessages({\n * accountId: 'example-account.testnet'\n * });\n *\n * // use a contract change method\n * await contract.addMessage({\n * meta: 'some info',\n * callbackUrl: 'https://example.com/callback',\n * args: { text: 'my message' },\n * amount: 1\n * })\n * }\n * ```\n */\nclass Contract {\n /**\n * @param account NEAR account to sign change method transactions\n * @param contractId NEAR account id where the contract is deployed\n * @param options NEAR smart contract methods that your application will use. These will be available as `contract.methodName`\n */\n constructor(account, contractId, options) {\n this.account = account;\n this.contractId = contractId;\n const { viewMethods = [], changeMethods = [] } = options;\n viewMethods.forEach((methodName) => {\n Object.defineProperty(this, methodName, {\n writable: false,\n enumerable: true,\n value: nameFunction(methodName, async (args = {}, options = {}, ...ignored) => {\n if (ignored.length || !(isObject(args) || isUint8Array(args)) || !isObject(options)) {\n throw new errors_1.PositionalArgsError();\n }\n return this.account.viewFunction(this.contractId, methodName, args, options);\n })\n });\n });\n changeMethods.forEach((methodName) => {\n Object.defineProperty(this, methodName, {\n writable: false,\n enumerable: true,\n value: nameFunction(methodName, async (...args) => {\n if (args.length && (args.length > 3 || !(isObject(args[0]) || isUint8Array(args[0])))) {\n throw new errors_1.PositionalArgsError();\n }\n if (args.length > 1 || !(args[0] && args[0].args)) {\n const deprecate = depd_1.default('contract.methodName(args, gas, amount)');\n deprecate('use `contract.methodName({ args, gas?, amount?, callbackUrl?, meta? })` instead');\n return this._changeMethod({\n methodName,\n args: args[0],\n gas: args[1],\n amount: args[2]\n });\n }\n return this._changeMethod({ methodName, ...args[0] });\n })\n });\n });\n }\n async _changeMethod({ args, methodName, gas, amount, meta, callbackUrl }) {\n validateBNLike({ gas, amount });\n const rawResult = await this.account.functionCall({\n contractId: this.contractId,\n methodName,\n args,\n gas,\n attachedDeposit: amount,\n walletMeta: meta,\n walletCallbackUrl: callbackUrl\n });\n return providers_1.getTransactionLastResult(rawResult);\n }\n}\nexports.Contract = Contract;\n/**\n * Validation on arguments being a big number from bn.js\n * Throws if an argument is not in BN format or otherwise invalid\n * @param argMap\n */\nfunction validateBNLike(argMap) {\n const bnLike = 'number, decimal string or BN';\n for (const argName of Object.keys(argMap)) {\n const argValue = argMap[argName];\n if (argValue && !bn_js_1.default.isBN(argValue) && isNaN(argValue)) {\n throw new errors_1.ArgumentTypeError(argName, bnLike, argValue);\n }\n }\n}\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Near = void 0;\n/**\n * This module contains the main class developers will use to interact with NEAR.\n * The {@link Near} class is used to interact with {@link Account | Accounts} through the {@link JsonRpcProvider.JsonRpcProvider | JsonRpcProvider}.\n * It is configured via the {@link NearConfig}.\n *\n * @example {@link https://docs.near.org/docs/develop/front-end/naj-quick-reference#account}\n *\n * @module near\n */\nconst bn_js_1 = __importDefault(require(\"bn.js\"));\nconst account_1 = require(\"./account\");\nconst connection_1 = require(\"./connection\");\nconst contract_1 = require(\"./contract\");\nconst account_creator_1 = require(\"./account_creator\");\n/**\n * This is the main class developers should use to interact with NEAR.\n * @example\n * ```js\n * const near = new Near(config);\n * ```\n */\nclass Near {\n constructor(config) {\n this.config = config;\n this.connection = connection_1.Connection.fromConfig({\n networkId: config.networkId,\n provider: { type: 'JsonRpcProvider', args: { url: config.nodeUrl, headers: config.headers } },\n signer: config.signer || { type: 'InMemorySigner', keyStore: config.keyStore || config.deps.keyStore }\n });\n if (config.masterAccount) {\n // TODO: figure out better way of specifiying initial balance.\n // Hardcoded number below must be enough to pay the gas cost to dev-deploy with near-shell for multiple times\n const initialBalance = config.initialBalance ? new bn_js_1.default(config.initialBalance) : new bn_js_1.default('500000000000000000000000000');\n this.accountCreator = new account_creator_1.LocalAccountCreator(new account_1.Account(this.connection, config.masterAccount), initialBalance);\n }\n else if (config.helperUrl) {\n this.accountCreator = new account_creator_1.UrlAccountCreator(this.connection, config.helperUrl);\n }\n else {\n this.accountCreator = null;\n }\n }\n /**\n * @param accountId near accountId used to interact with the network.\n */\n async account(accountId) {\n const account = new account_1.Account(this.connection, accountId);\n return account;\n }\n /**\n * Create an account using the {@link AccountCreator}. Either:\n * * using a masterAccount with {@link LocalAccountCreator}\n * * using the helperUrl with {@link UrlAccountCreator}\n * @see {@link NearConfig.masterAccount} and {@link NearConfig.helperUrl}-\n *\n * @param accountId\n * @param publicKey\n */\n async createAccount(accountId, publicKey) {\n if (!this.accountCreator) {\n throw new Error('Must specify account creator, either via masterAccount or helperUrl configuration settings.');\n }\n await this.accountCreator.createAccount(accountId, publicKey);\n return new account_1.Account(this.connection, accountId);\n }\n /**\n * @deprecated Use {@link Contract} instead.\n * @param contractId\n * @param options\n */\n async loadContract(contractId, options) {\n const account = new account_1.Account(this.connection, options.sender);\n return new contract_1.Contract(account, contractId, options);\n }\n /**\n * @deprecated Use {@link Account.sendMoney} instead.\n * @param amount\n * @param originator\n * @param receiver\n */\n async sendTokens(amount, originator, receiver) {\n console.warn('near.sendTokens is deprecated. Use `yourAccount.sendMoney` instead.');\n const account = new account_1.Account(this.connection, originator);\n const result = await account.sendMoney(receiver, amount);\n return result.transaction_outcome.id;\n }\n}\nexports.Near = Near;\n","'use strict';\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PromisePool = void 0;\nconst promise_pool_executor_1 = require(\"./promise-pool-executor\");\nclass PromisePool {\n /**\n * Instantiates a new promise pool with a default `concurrency: 10` and `items: []`.\n *\n * @param {Object} options\n */\n constructor(items) {\n this.concurrency = 10;\n this.items = items !== null && items !== void 0 ? items : [];\n this.errorHandler = undefined;\n }\n /**\n * Set the number of tasks to process concurrently in the promise pool.\n *\n * @param {Integer} concurrency\n *\n * @returns {PromisePool}\n */\n withConcurrency(concurrency) {\n this.concurrency = concurrency;\n return this;\n }\n /**\n * Set the number of tasks to process concurrently in the promise pool.\n *\n * @param {Number} concurrency\n *\n * @returns {PromisePool}\n */\n static withConcurrency(concurrency) {\n return new this().withConcurrency(concurrency);\n }\n /**\n * Set the items to be processed in the promise pool.\n *\n * @param {Array} items\n *\n * @returns {PromisePool}\n */\n for(items) {\n return new PromisePool(items).withConcurrency(this.concurrency);\n }\n /**\n * Set the items to be processed in the promise pool.\n *\n * @param {Array} items\n *\n * @returns {PromisePool}\n */\n static for(items) {\n return new this().for(items);\n }\n /**\n * Set the error handler function to execute when an error occurs.\n *\n * @param {Function} handler\n *\n * @returns {PromisePool}\n */\n handleError(handler) {\n this.errorHandler = handler;\n return this;\n }\n /**\n * Starts processing the promise pool by iterating over the items\n * and running each item through the async `callback` function.\n *\n * @param {Function} The async processing function receiving each item from the `items` array.\n *\n * @returns Promise<{ results, errors }>\n */\n async process(callback) {\n return new promise_pool_executor_1.PromisePoolExecutor()\n .withConcurrency(this.concurrency)\n .withHandler(callback)\n .handleError(this.errorHandler)\n .for(this.items)\n .start();\n }\n}\nexports.PromisePool = PromisePool;\n","'use strict';\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PromisePoolError = void 0;\nclass PromisePoolError extends Error {\n /**\n * Create a new instance for the given `message` and `item`.\n *\n * @param error The original error\n * @param item The item causing the error\n */\n constructor(error, item) {\n super();\n this.raw = error;\n this.item = item;\n this.name = this.constructor.name;\n this.message = this.messageFrom(error);\n Error.captureStackTrace(this, this.constructor);\n }\n /**\n * Returns a new promise pool error instance wrapping the `error` and `item`.\n *\n * @param {*} error\n * @param {*} item\n *\n * @returns {PromisePoolError}\n */\n static createFrom(error, item) {\n return new this(error, item);\n }\n /**\n * Returns the error message from the given `error`.\n *\n * @param {*} error\n *\n * @returns {String}\n */\n messageFrom(error) {\n if (error instanceof Error) {\n return error.message;\n }\n if (typeof error === 'object') {\n return error.message;\n }\n if (typeof error === 'string' || typeof error === 'number') {\n return error.toString();\n }\n return '';\n }\n}\nexports.PromisePoolError = PromisePoolError;\n","'use strict';\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StopThePromisePoolError = void 0;\nclass StopThePromisePoolError extends Error {\n}\nexports.StopThePromisePoolError = StopThePromisePoolError;\n","'use strict';\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst promise_pool_1 = require(\"./promise-pool\");\nexports.default = promise_pool_1.PromisePool;\n__exportStar(require(\"./promise-pool\"), exports);\n__exportStar(require(\"./promise-pool-error\"), exports);\n__exportStar(require(\"./return-value\"), exports);\n__exportStar(require(\"./stoppable\"), exports);\n__exportStar(require(\"./stop-the-promise-pool-error\"), exports);\n","/** @license\n *\n * Colour Palette Generator script.\n * Copyright (c) 2014 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may\n * not use this file except in compliance with the License. You may\n * obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n * implied. See the License for the specific language governing\n * permissions and limitations under the License.\n *\n * Furthermore, ColorBrewer colour schemes are covered by the following:\n *\n * Copyright (c) 2002 Cynthia Brewer, Mark Harrower, and\n * The Pennsylvania State University.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may\n * not use this file except in compliance with the License. You may obtain\n * a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n * implied. See the License for the specific language governing\n * permissions and limitations under the License.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are\n * met:\n *\n * 1. Redistributions as source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n *\n * 2. The end-user documentation included with the redistribution, if any,\n * must include the following acknowledgment: \"This product includes color\n * specifications and designs developed by Cynthia Brewer\n * (http://colorbrewer.org/).\" Alternately, this acknowledgment may appear\n * in the software itself, if and wherever such third-party\n * acknowledgments normally appear.\n *\n * 4. The name \"ColorBrewer\" must not be used to endorse or promote products\n * derived from this software without prior written permission. For written\n * permission, please contact Cynthia Brewer at cbrewer@psu.edu.\n *\n * 5. Products derived from this software may not be called \"ColorBrewer\",\n * nor may \"ColorBrewer\" appear in their name, without prior written\n * permission of Cynthia Brewer.\n *\n * Furthermore, Solarized colour schemes are covered by the following:\n *\n * Copyright (c) 2011 Ethan Schoonover\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n\n'use strict';\n\nvar palette = (function() {\n\n var proto = Array.prototype;\n var slice = function(arr, opt_begin, opt_end) {\n return proto.slice.apply(arr, proto.slice.call(arguments, 1));\n };\n\n var extend = function(arr, arr2) {\n return proto.push.apply(arr, arr2);\n };\n\n var function_type = typeof function() {};\n\n var INF = 1000000000; // As far as we're concerned, that's infinity. ;)\n\n\n /**\n * Generate a colour palette from given scheme.\n *\n * If scheme argument is not a function it is passed to palettes.listSchemes\n * function (along with the number argument). This may result in an array\n * of more than one available scheme. If that is the case, scheme at\n * opt_index position is taken.\n *\n * This allows using different palettes for different data without having to\n * name the schemes specifically, for example:\n *\n * palette_for_foo = palette('sequential', 10, 0);\n * palette_for_bar = palette('sequential', 10, 1);\n * palette_for_baz = palette('sequential', 10, 2);\n *\n * @param {!palette.SchemeType|string|palette.Palette} scheme Scheme to\n * generate palette for. Either a function constructed with\n * palette.Scheme object, or anything that palette.listSchemes accepts\n * as name argument.\n * @param {number} number Number of colours to return. If negative, absolute\n * value is taken and colours will be returned in reverse order.\n * @param {number=} opt_index If scheme is a name of a group or an array and\n * results in more than one scheme, index of the scheme to use. The\n * index wraps around.\n * @param {...*} varargs Additional arguments to pass to palette or colour\n * generator (if the chosen scheme uses those).\n * @return {Array} Array of abs(number) 'RRGGBB' strings or null if\n * no matching scheme was found.\n */\n var palette = function(scheme, number, opt_index, varargs) {\n number |= 0;\n if (number == 0) {\n return [];\n }\n\n if (typeof scheme !== function_type) {\n var arr = palette.listSchemes(\n /** @type {string|palette.Palette} */ (scheme), number);\n if (!arr.length) {\n return null;\n }\n scheme = arr[(opt_index || 0) % arr.length];\n }\n\n var args = slice(arguments, 2);\n args[0] = number;\n return scheme.apply(scheme, args);\n };\n\n\n /**\n * Returns a callable colour scheme object.\n *\n * Just after being created, the scheme has no colour palettes and no way of\n * generating any, thus generate method will return null. To turn scheme\n * into a useful object, addPalette, addPalettes or setColorFunction methods\n * need to be used.\n *\n * To generate a colour palette with given number colours using function\n * returned by this method, just call it with desired number of colours.\n *\n * Since this function *returns* a callable object, it must *not* be used\n * with the new operator.\n *\n * @param {string} name Name of the scheme.\n * @param {string|!Array=} opt_groups A group name or list of\n * groups the scheme should be categorised under. Three typical groups\n * to use are 'qualitative', 'sequential' and 'diverging', but any\n * groups may be created.\n * @return {!palette.SchemeType} A colour palette generator function, which\n * in addition has methods and properties like a regular object. Think\n * of it as a callable object.\n */\n palette.Scheme = function(name, opt_groups) {\n /**\n * A map from a number to a colour palettes with given number of colours.\n * @type {!Object}\n */\n var palettes = {};\n\n /**\n * The biggest palette in palettes map.\n * @type {number}\n */\n var palettes_max = 0;\n\n /**\n * The smallest palette in palettes map.\n * @type {number}\n */\n var palettes_min = INF;\n\n var makeGenerator = function() {\n if (arguments.length <= 1) {\n return self.color_func.bind(self);\n } else {\n var args = slice(arguments);\n return function(x) {\n args[0] = x;\n return self.color_func.apply(self, args);\n };\n }\n };\n\n /**\n * Generate a colour palette from the scheme.\n *\n * If there was a palette added with addPalette (or addPalettes) with\n * enough colours, that palette will be used. Otherwise, if colour\n * function has been set using setColorFunction method, that function will\n * be used to generate the palette. Otherwise null is returned.\n *\n * @param {number} number Number of colours to return. If negative,\n * absolute value is taken and colours will be returned in reverse\n * order.\n * @param {...*} varargs Additional arguments to pass to palette or colour\n * generator (if the chosen scheme uses those).\n */\n var self = function(number, varargs) {\n number |= 0;\n if (!number) {\n return [];\n }\n\n var _number = number;\n number = Math.abs(number);\n\n if (number <= palettes_max) {\n for (var i = Math.max(number, palettes_min); !(i in palettes); ++i) {\n /* nop */\n }\n var colors = palettes[i];\n if (i > number) {\n var take_head =\n 'shrinking_takes_head' in colors ?\n colors.shrinking_takes_head : self.shrinking_takes_head;\n if (take_head) {\n colors = colors.slice(0, number);\n i = number;\n } else {\n return palette.generate(\n function(x) { return colors[Math.round(x)]; },\n _number, 0, colors.length - 1);\n }\n }\n colors = colors.slice();\n if (_number < 0) {\n colors.reverse();\n }\n return colors;\n\n } else if (self.color_func) {\n return palette.generate(makeGenerator.apply(self, arguments),\n _number, 0, 1, self.color_func_cyclic);\n\n } else {\n return null;\n }\n };\n\n /**\n * The name of the palette.\n * @type {string}\n */\n self.scheme_name = name;\n\n /**\n * A list of groups the palette belongs to.\n * @type {!Array}\n */\n self.groups = opt_groups ?\n typeof opt_groups === 'string' ? [opt_groups] : opt_groups : [];\n\n /**\n * The biggest palette this scheme can generate.\n * @type {number}\n */\n self.max = 0;\n\n /**\n * The biggest palette this scheme can generate that is colour-blind\n * friendly.\n * @type {number}\n */\n self.cbf_max = INF;\n\n\n /**\n * Adds a colour palette to the colour scheme.\n *\n * @param {palette.Palette} palette An array of 'RRGGBB' strings\n * representing the palette to add.\n * @param {boolean=} opt_is_cbf Whether the palette is colourblind friendly.\n */\n self.addPalette = function(palette, opt_is_cbf) {\n var len = palette.length;\n if (len) {\n palettes[len] = palette;\n palettes_min = Math.min(palettes_min, len);\n palettes_max = Math.max(palettes_max, len);\n self.max = Math.max(self.max, len);\n if (!opt_is_cbf && len != 1) {\n self.cbf_max = Math.min(self.cbf_max, len - 1);\n }\n }\n };\n\n /**\n * Adds number of colour palettes to the colour scheme.\n *\n * @param {palette.PalettesList} palettes A map or an array of colour\n * palettes to add. If map, i.e. object, is used, properties should\n * use integer property names.\n * @param {number=} opt_max Size of the biggest palette in palettes set.\n * If not set, palettes must have a length property which will be used.\n * @param {number=} opt_cbf_max Size of the biggest palette which is still\n * colourblind friendly. 1 by default.\n */\n self.addPalettes = function(palettes, opt_max, opt_cbf_max) {\n opt_max = opt_max || palettes.length;\n for (var i = 0; i < opt_max; ++i) {\n if (i in palettes) {\n self.addPalette(palettes[i], true);\n }\n }\n self.cbf_max = Math.min(self.cbf_max, opt_cbf_max || 1);\n };\n\n /**\n * Enable shrinking palettes taking head of the list of colours.\n *\n * When user requests n-colour palette but the smallest palette added with\n * addPalette (or addPalettes) is m-colour one (where n < m), n colours\n * across the palette will be returned. For example:\n * var ex = palette.Scheme('ex');\n * ex.addPalette(['000000', 'bcbcbc', 'ffffff']);\n * var pal = ex(2);\n * // pal == ['000000', 'ffffff']\n *\n * This works for palettes where the distance between colours is\n * correlated to distance in the palette array, which is true in gradients\n * such as the one above.\n *\n * To turn this feature off shrinkByTakingHead can be set to true either\n * for all palettes in the scheme (if opt_idx is not given) or for palette\n * with given number of colours only. In general, setting the option for\n * given palette overwrites whatever has been set for the scheme. The\n * default, as described above, is false.\n *\n * Alternatively, the feature can be enabled by setting shrinking_takes_head\n * property for the palette Array or the scheme object.\n *\n * For example, all of the below give equivalent results:\n * var pal = ['ff0000', '00ff00', '0000ff'];\n *\n * var ex = palette.Scheme('ex');\n * ex.addPalette(pal); // ex(2) == ['ff0000', '0000ff']\n * ex.shrinkByTakingHead(true); // ex(2) == ['ff0000', '00ff00']\n *\n * ex = palette.Scheme('ex');\n * ex.addPalette(pal); // ex(2) == ['ff0000', '0000ff']\n * ex.shrinkByTakingHead(true, 3); // ex(2) == ['ff0000', '00ff00']\n *\n * ex = palette.Scheme('ex');\n * ex.addPalette(pal);\n * ex.addPalette(pal); // ex(2) == ['ff0000', '0000ff']\n * pal.shrinking_takes_head = true; // ex(2) == ['ff0000', '00ff00']\n *\n * @param {boolean} enabled Whether to enable or disable the “shrinking\n * takes head” feature. It is disabled by default.\n * @param {number=} opt_idx If given, the “shrinking takes head” option\n * for palette with given number of colours is set. If such palette\n * does not exist, nothing happens.\n */\n self.shrinkByTakingHead = function(enabled, opt_idx) {\n if (opt_idx !== void(0)) {\n if (opt_idx in palettes) {\n palettes[opt_idx].shrinking_takes_head = !!enabled;\n }\n } else {\n self.shrinking_takes_head = !!enabled;\n }\n };\n\n /**\n * Sets a colour generation function of the colour scheme.\n *\n * The function must accept a singe number argument whose value can be from\n * 0.0 to 1.0, and return a colour as an 'RRGGBB' string. This function\n * will be used when generating palettes, i.e. if 11-colour palette is\n * requested, this function will be called with arguments 0.0, 0.1, …, 1.0.\n *\n * If the palette generated by the function is colourblind friendly,\n * opt_is_cbf should be set to true.\n *\n * In some cases, it is not desirable to reach 1.0 when generating\n * a palette. This happens for hue-rainbows where the 0–1 range corresponds\n * to a 0°–360° range in hues, and since hue at 0° is the same as at 360°,\n * it's desired to stop short the end of the range when generating\n * a palette. To accomplish this, opt_cyclic should be set to true.\n *\n * @param {palette.ColorFunction} func A colour generator function.\n * @param {boolean=} opt_is_cbf Whether palette generate with the function\n * is colour-blind friendly.\n * @param {boolean=} opt_cyclic Whether colour at 0.0 is the same as the\n * one at 1.0.\n */\n self.setColorFunction = function(func, opt_is_cbf, opt_cyclic) {\n self.color_func = func;\n self.color_func_cyclic = !!opt_cyclic;\n self.max = INF;\n if (!opt_is_cbf && self.cbf_max === INF) {\n self.cbf_max = 1;\n }\n };\n\n self.color = function(x, varargs) {\n if (self.color_func) {\n return self.color_func.apply(this, arguments);\n } else {\n return null;\n }\n };\n\n return self;\n };\n\n\n /**\n * Creates a new palette.Scheme and initialises it by calling addPalettes\n * method with the rest of the arguments.\n *\n * @param {string} name Name of the scheme.\n * @param {string|!Array} groups A group name or list of group\n * names the scheme belongs to.\n * @param {!Object|!Array}\n * palettes A map or an array of colour palettes to add. If map, i.e.\n * object, is used, properties should use integer property names.\n * @param {number=} opt_max Size of the biggest palette in palettes set.\n * If not set, palettes must have a length property which will be used.\n * @param {number=} opt_cbf_max Size of the biggest palette which is still\n * colourblind friendly. 1 by default.\n * @return {!palette.SchemeType} A colour palette generator function, which\n * in addition has methods and properties like a regular object. Think\n * of it as a callable object.\n */\n palette.Scheme.fromPalettes = function(name, groups,\n palettes, opt_max, opt_cbf_max) {\n var scheme = palette.Scheme(name, groups);\n scheme.addPalettes.apply(scheme, slice(arguments, 2));\n return scheme;\n };\n\n\n /**\n * Creates a new palette.Scheme and initialises it by calling\n * setColorFunction method with the rest of the arguments.\n *\n * @param {string} name Name of the scheme.\n * @param {string|!Array} groups A group name or list of group\n * names the scheme belongs to.\n * @param {palette.ColorFunction} func A colour generator function.\n * @param {boolean=} opt_is_cbf Whether palette generate with the function\n * is colour-blind friendly.\n * @param {boolean=} opt_cyclic Whether colour at 0.0 is the same as the\n * one at 1.0.\n * @return {!palette.SchemeType} A colour palette generator function, which\n * in addition has methods and properties like a regular object. Think\n * of it as a callable object.\n */\n palette.Scheme.withColorFunction = function(name, groups,\n func, opt_is_cbf, opt_cyclic) {\n var scheme = palette.Scheme(name, groups);\n scheme.setColorFunction.apply(scheme, slice(arguments, 2));\n return scheme;\n };\n\n\n /**\n * A map of registered schemes. Maps a scheme or group name to a list of\n * scheme objects. Property name is either 'n-' for single scheme\n * names or 'g-' for scheme group names.\n *\n * @type {!Object>}\n */\n var registered_schemes = {};\n\n\n /**\n * Registers a new colour scheme.\n *\n * @param {!palette.SchemeType} scheme The scheme to add.\n */\n palette.register = function(scheme) {\n registered_schemes['n-' + scheme.scheme_name] = [scheme];\n scheme.groups.forEach(function(g) {\n (registered_schemes['g-' + g] =\n registered_schemes['g-' + g] || []).push(scheme);\n });\n (registered_schemes['g-all'] =\n registered_schemes['g-all'] || []).push(scheme);\n };\n\n\n /**\n * List all schemes that match given name and number of colours.\n *\n * name argument can be either a string or an array of strings. In the\n * former case, the function acts as if the argument was an array with name\n * as a single argument (i.e. “palette.listSchemes('foo')” is exactly the same\n * as “palette.listSchemes(['foo'])”).\n *\n * Each name can be either name of a palette (e.g. 'tol-sq' for Paul Tol's\n * sequential palette), or a name of a group (e.g. 'sequential' for all\n * sequential palettes). Name can therefore map to a single scheme or\n * several schemes.\n *\n * Furthermore, name can be suffixed with '-cbf' to indicate that only\n * schemes that are colourblind friendly should be returned. For example,\n * 'rainbow' returns a HSV rainbow scheme, but because it is not colourblind\n * friendly, 'rainbow-cbf' returns no schemes.\n *\n * Some schemes may produce colourblind friendly palettes for some number of\n * colours. For example ColorBrewer's Dark2 scheme is colourblind friendly\n * if no more than 3 colours are generated. If opt_number is not specified,\n * 'qualitative-cbf' will include 'cb-Dark2' but if opt_number is given as,\n * say, 5 it won't.\n *\n * Name can also be 'all' which will return all registered schemes.\n * Naturally, 'all-cbf' will return all colourblind friendly schemes.\n *\n * Schemes are added to the library using palette.register. Schemes are\n * created using palette.Scheme function. By default, the following schemes\n * are available:\n *\n * Name Description\n * -------------- -----------------------------------------------------\n * tol Paul Tol's qualitative scheme, cbf, max 12 colours.\n * tol-dv Paul Tol's diverging scheme, cbf.\n * tol-sq Paul Tol's sequential scheme, cbf.\n * tol-rainbow Paul Tol's qualitative scheme, cbf.\n *\n * rainbow A rainbow palette.\n *\n * cb-YlGn ColorBrewer sequential schemes.\n * cb-YlGnBu\n * cb-GnBu\n * cb-BuGn\n * cb-PuBuGn\n * cb-PuBu\n * cb-BuPu\n * cb-RdPu\n * cb-PuRd\n * cb-OrRd\n * cb-YlOrRd\n * cb-YlOrBr\n * cb-Purples\n * cb-Blues\n * cb-Greens\n * cb-Oranges\n * cb-Reds\n * cb-Greys\n *\n * cb-PuOr ColorBrewer diverging schemes.\n * cb-BrBG\n * cb-PRGn\n * cb-PiYG\n * cb-RdBu\n * cb-RdGy\n * cb-RdYlBu\n * cb-Spectral\n * cb-RdYlGn\n *\n * cb-Accent ColorBrewer qualitative schemes.\n * cb-Dark2\n * cb-Paired\n * cb-Pastel1\n * cb-Pastel2\n * cb-Set1\n * cb-Set2\n * cb-Set3\n *\n * sol-base Solarized base colours.\n * sol-accent Solarized accent colours.\n *\n * The following groups are also available by default:\n *\n * Name Description\n * -------------- -----------------------------------------------------\n * all All registered schemes.\n * sequential All sequential schemes.\n * diverging All diverging schemes.\n * qualitative All qualitative schemes.\n * cb-sequential All ColorBrewer sequential schemes.\n * cb-diverging All ColorBrewer diverging schemes.\n * cb-qualitative All ColorBrewer qualitative schemes.\n *\n * You can read more about Paul Tol's palettes at http://www.sron.nl/~pault/.\n * You can read more about ColorBrewer at http://colorbrewer2.org.\n *\n * @param {string|!Array} name A name of a colour scheme, of\n * a group of colour schemes, or an array of any of those.\n * @param {number=} opt_number When requesting only colourblind friendly\n * schemes, number of colours the scheme must provide generating such\n * that the palette is still colourblind friendly. 2 by default.\n * @return {!Array} An array of colour scheme objects\n * matching the criteria. Sorted by scheme name.\n */\n palette.listSchemes = function(name, opt_number) {\n if (!opt_number) {\n opt_number = 2;\n } else if (opt_number < 0) {\n opt_number = -opt_number;\n }\n\n var ret = [];\n (typeof name === 'string' ? [name] : name).forEach(function(n) {\n var cbf = n.substring(n.length - 4) === '-cbf';\n if (cbf) {\n n = n.substring(0, n.length - 4);\n }\n var schemes =\n registered_schemes['g-' + n] ||\n registered_schemes['n-' + n] ||\n [];\n for (var i = 0, scheme; (scheme = schemes[i]); ++i) {\n if ((cbf ? scheme.cbf : scheme.max) >= opt_number) {\n ret.push(scheme);\n }\n }\n });\n\n ret.sort(function(a, b) {\n return a.scheme_name >= b.scheme_name ?\n a.scheme_name > b.scheme_name ? 1 : 0 : -1;\n });\n return ret;\n };\n\n\n /**\n * Generates a palette using given colour generating function.\n *\n * The color_func callback must accept a singe number argument whose value\n * can vary from 0.0 to 1.0 (or in general from opt_start to opt_end), and\n * return a colour as an 'RRGGBB' string. This function will be used when\n * generating palettes, i.e. if 11-colour palette is requested, this\n * function will be called with arguments 0.0, 0.1, …, 1.0.\n *\n * In some cases, it is not desirable to reach 1.0 when generating\n * a palette. This happens for hue-rainbows where the 0–1 range corresponds\n * to a 0°–360° range in hues, and since hue at 0° is the same as at 360°,\n * it's desired to stop short the end of the range when generating\n * a palette. To accomplish this, opt_cyclic should be set to true.\n *\n * opt_start and opt_end may be used to change the range the colour\n * generation function is called with. opt_end may be less than opt_start\n * which will case to traverse the range in reverse. Another way to reverse\n * the palette is requesting negative number of colours. The two methods do\n * not always lead to the same results (especially if opt_cyclic is set).\n *\n * @param {palette.ColorFunction} color_func A colours generating callback\n * function.\n * @param {number} number Number of colours to generate in the palette. If\n * number is negative, colours in the palette will be reversed. If only\n * one colour is requested, colour at opt_start will be returned.\n * @param {number=} opt_start Optional starting point for the palette\n * generation function. Zero by default.\n * @param {number=} opt_end Optional ending point for the palette generation\n * function. One by default.\n * @param {boolean=} opt_cyclic If true, function will assume colour at\n * point opt_start is the same as one at opt_end.\n * @return {palette.Palette} An array of 'RRGGBB' colours.\n */\n palette.generate = function(color_func, number, opt_start, opt_end,\n opt_cyclic) {\n if (Math.abs(number) < 1) {\n return [];\n }\n\n opt_start = opt_start === void(0) ? 0 : opt_start;\n opt_end = opt_end === void(0) ? 1 : opt_end;\n\n if (Math.abs(number) < 2) {\n return [color_func(opt_start)];\n }\n\n var i = Math.abs(number);\n var x = opt_start;\n var ret = [];\n var step = (opt_end - opt_start) / (opt_cyclic ? i : (i - 1));\n\n for (; --i >= 0; x += step) {\n ret.push(color_func(x));\n }\n if (number < 0) {\n ret.reverse();\n }\n return ret;\n };\n\n\n /**\n * Clamps value to [0, 1] range.\n * @param {number} v Number to limit value of.\n * @return {number} If v is inside of [0, 1] range returns v, otherwise\n * returns 0 or 1 depending which side of the range v is closer to.\n */\n var clamp = function(v) {\n return v > 0 ? (v < 1 ? v : 1) : 0;\n };\n\n /**\n * Converts r, g, b triple into RRGGBB hex representation.\n * @param {number} r Red value of the colour in the range [0, 1].\n * @param {number} g Green value of the colour in the range [0, 1].\n * @param {number} b Blue value of the colour in the range [0, 1].\n * @return {string} A lower-case RRGGBB representation of the colour.\n */\n palette.rgbColor = function(r, g, b) {\n return [r, g, b].map(function(v) {\n v = Number(Math.round(clamp(v) * 255)).toString(16);\n return v.length == 1 ? '0' + v : v;\n }).join('');\n };\n\n /**\n * Converts a linear r, g, b triple into RRGGBB hex representation.\n * @param {number} r Linear red value of the colour in the range [0, 1].\n * @param {number} g Linear green value of the colour in the range [0, 1].\n * @param {number} b Linear blue value of the colour in the range [0, 1].\n * @return {string} A lower-case RRGGBB representation of the colour.\n */\n palette.linearRgbColor = function(r, g, b) {\n // http://www.brucelindbloom.com/index.html?Eqn_XYZ_to_RGB.html\n return [r, g, b].map(function(v) {\n v = clamp(v);\n if (v <= 0.0031308) {\n v = 12.92 * v;\n } else {\n v = 1.055 * Math.pow(v, 1 / 2.4) - 0.055;\n }\n v = Number(Math.round(v * 255)).toString(16);\n return v.length == 1 ? '0' + v : v;\n }).join('');\n };\n\n /**\n * Converts an HSV colours to RRGGBB hex representation.\n * @param {number} h Hue in the range [0, 1].\n * @param {number=} opt_s Saturation in the range [0, 1]. One by default.\n * @param {number=} opt_v Value in the range [0, 1]. One by default.\n * @return {string} An RRGGBB representation of the colour.\n */\n palette.hsvColor = function(h, opt_s, opt_v) {\n h *= 6;\n var s = opt_s === void(0) ? 1 : clamp(opt_s);\n var v = opt_v === void(0) ? 1 : clamp(opt_v);\n var x = v * (1 - s * Math.abs(h % 2 - 1));\n var m = v * (1 - s);\n switch (Math.floor(h) % 6) {\n case 0: return palette.rgbColor(v, x, m);\n case 1: return palette.rgbColor(x, v, m);\n case 2: return palette.rgbColor(m, v, x);\n case 3: return palette.rgbColor(m, x, v);\n case 4: return palette.rgbColor(x, m, v);\n default: return palette.rgbColor(v, m, x);\n }\n };\n\n palette.register(palette.Scheme.withColorFunction(\n 'rainbow', 'qualitative', palette.hsvColor, false, true));\n\n return palette;\n})();\n\n\n/** @typedef {function(number): string} */\npalette.ColorFunction;\n\n/** @typedef {!Array} */\npalette.Palette;\n\n/** @typedef {!Object|!Array} */\npalette.PalettesList;\n\n/**\n * @typedef {\n * function(number, ...?): Array|\n * {\n * scheme_name: string,\n * groups: !Array,\n * max: number,\n * cbf_max: number,\n * addPalette: function(!Array, boolean=),\n * addPalettes: function(palette.PalettesList, number=, number=),\n * shrinkByTakingHead: function(boolean, number=),\n * setColorFunction: function(palette.ColorFunction, boolean=, boolean=),\n * color: function(number, ...?): ?string}}\n */\npalette.SchemeType;\n\n\n/* mpn65 palette start here. ************************************************/\n\n/* The ‘mpn65’ palette is designed for systems which show many graphs which\n don’t have custom colour palettes chosen by humans or if number of necessary\n colours isn’t know a priori. */\n\n(function() {\n var scheme = palette.Scheme.fromPalettes('mpn65', 'qualitative', [[\n 'ff0029', '377eb8', '66a61e', '984ea3', '00d2d5', 'ff7f00', 'af8d00',\n '7f80cd', 'b3e900', 'c42e60', 'a65628', 'f781bf', '8dd3c7', 'bebada',\n 'fb8072', '80b1d3', 'fdb462', 'fccde5', 'bc80bd', 'ffed6f', 'c4eaff',\n 'cf8c00', '1b9e77', 'd95f02', 'e7298a', 'e6ab02', 'a6761d', '0097ff',\n '00d067', '000000', '252525', '525252', '737373', '969696', 'bdbdbd',\n 'f43600', '4ba93b', '5779bb', '927acc', '97ee3f', 'bf3947', '9f5b00',\n 'f48758', '8caed6', 'f2b94f', 'eff26e', 'e43872', 'd9b100', '9d7a00',\n '698cff', 'd9d9d9', '00d27e', 'd06800', '009f82', 'c49200', 'cbe8ff',\n 'fecddf', 'c27eb6', '8cd2ce', 'c4b8d9', 'f883b0', 'a49100', 'f48800',\n '27d0df', 'a04a9b'\n ]]);\n scheme.shrinkByTakingHead(true);\n palette.register(scheme);\n})();\n\n/* Paul Tol's schemes start here. *******************************************/\n/* See http://www.sron.nl/~pault/ */\n\n(function() {\n var rgb = palette.rgbColor;\n\n /**\n * Calculates value of a polynomial at given point.\n * For example, poly(x, 1, 2, 3) calculates value of “1 + 2*x + 3*X²”.\n * @param {number} x Value to calculate polynomial for.\n * @param {...number} varargs Coefficients of the polynomial specified in\n * the order of rising powers of x including constant as the first\n * variable argument.\n */\n var poly = function(x, varargs) {\n var i = arguments.length - 1, n = arguments[i];\n while (i > 1) {\n n = n * x + arguments[--i];\n }\n return n;\n };\n\n /**\n * Calculate approximate value of error function with maximum error of 0.0005.\n * See .\n * @param {number} x Argument of the error function.\n * @return {number} Value of error function for x.\n */\n var erf = function(x) {\n // https://en.wikipedia.org/wiki/Error_function#Approximation_with_elementary_functions\n // This produces a maximum error of 0.0005 which is more then we need. In\n // the worst case, that error is multiplied by four and then divided by two\n // before being multiplied by 255, so in the end, the error is multiplied by\n // 510 which produces 0.255 which is less than a single colour step.\n var y = poly(Math.abs(x), 1, 0.278393, 0.230389, 0.000972, 0.078108);\n y *= y; // y^2\n y *= y; // y^4\n y = 1 - 1 / y;\n return x < 0 ? -y : y;\n };\n\n palette.register(palette.Scheme.fromPalettes('tol', 'qualitative', [\n ['4477aa'],\n ['4477aa', 'cc6677'],\n ['4477aa', 'ddcc77', 'cc6677'],\n ['4477aa', '117733', 'ddcc77', 'cc6677'],\n ['332288', '88ccee', '117733', 'ddcc77', 'cc6677'],\n ['332288', '88ccee', '117733', 'ddcc77', 'cc6677', 'aa4499'],\n ['332288', '88ccee', '44aa99', '117733', 'ddcc77', 'cc6677', 'aa4499'],\n ['332288', '88ccee', '44aa99', '117733', '999933', 'ddcc77', 'cc6677',\n 'aa4499'],\n ['332288', '88ccee', '44aa99', '117733', '999933', 'ddcc77', 'cc6677',\n '882255', 'aa4499'],\n ['332288', '88ccee', '44aa99', '117733', '999933', 'ddcc77', '661100',\n 'cc6677', '882255', 'aa4499'],\n ['332288', '6699cc', '88ccee', '44aa99', '117733', '999933', 'ddcc77',\n '661100', 'cc6677', '882255', 'aa4499'],\n ['332288', '6699cc', '88ccee', '44aa99', '117733', '999933', 'ddcc77',\n '661100', 'cc6677', 'aa4466', '882255', 'aa4499']\n ], 12, 12));\n\n /**\n * Calculates a colour along Paul Tol's sequential colours axis.\n * See figure 7 and equation 1.\n * @param {number} x Position of the colour on the axis in the [0, 1] range.\n * @return {string} An RRGGBB representation of the colour.\n */\n palette.tolSequentialColor = function(x) {\n return rgb(1 - 0.392 * (1 + erf((x - 0.869) / 0.255)),\n 1.021 - 0.456 * (1 + erf((x - 0.527) / 0.376)),\n 1 - 0.493 * (1 + erf((x - 0.272) / 0.309)));\n };\n\n palette.register(palette.Scheme.withColorFunction(\n 'tol-sq', 'sequential', palette.tolSequentialColor, true));\n\n /**\n * Calculates a colour along Paul Tol's diverging colours axis.\n * See figure 8 and equation 2.\n * @param {number} x Position of the colour on the axis in the [0, 1] range.\n * @return {string} An RRGGBB representation of the colour.\n */\n palette.tolDivergingColor = function(x) {\n var g = poly(x, 0.572, 1.524, -1.811) / poly(x, 1, -0.291, 0.1574);\n return rgb(poly(x, 0.235, -2.13, 26.92, -65.5, 63.5, -22.36),\n g * g,\n 1 / poly(x, 1.579, -4.03, 12.92, -31.4, 48.6, -23.36));\n };\n\n palette.register(palette.Scheme.withColorFunction(\n 'tol-dv', 'diverging', palette.tolDivergingColor, true));\n\n /**\n * Calculates a colour along Paul Tol's rainbow colours axis.\n * See figure 13 and equation 3.\n * @param {number} x Position of the colour on the axis in the [0, 1] range.\n * @return {string} An RRGGBB representation of the colour.\n */\n palette.tolRainbowColor = function(x) {\n return rgb(poly(x, 0.472, -0.567, 4.05) / poly(x, 1, 8.72, -19.17, 14.1),\n poly(x, 0.108932, -1.22635, 27.284, -98.577, 163.3, -131.395,\n 40.634),\n 1 / poly(x, 1.97, 3.54, -68.5, 243, -297, 125));\n };\n\n palette.register(palette.Scheme.withColorFunction(\n 'tol-rainbow', 'qualitative', palette.tolRainbowColor, true));\n})();\n\n\n/* Solarized colour schemes start here. *************************************/\n/* See http://ethanschoonover.com/solarized */\n\n(function() {\n /*\n * Those are not really designed to be used in graphs, but we're keeping\n * them here in case someone cares.\n */\n palette.register(palette.Scheme.fromPalettes('sol-base', 'sequential', [\n ['002b36', '073642', '586e75', '657b83', '839496', '93a1a1', 'eee8d5',\n 'fdf6e3']\n ], 1, 8));\n palette.register(palette.Scheme.fromPalettes('sol-accent', 'qualitative', [\n ['b58900', 'cb4b16', 'dc322f', 'd33682', '6c71c4', '268bd2', '2aa198',\n '859900']\n ]));\n})();\n\n\n/* ColorBrewer colour schemes start here. ***********************************/\n/* See http://colorbrewer2.org/ */\n\n(function() {\n var schemes = {\n YlGn: {\n type: 'sequential',\n cbf: 42,\n 3: ['f7fcb9', 'addd8e', '31a354'],\n 4: ['ffffcc', 'c2e699', '78c679', '238443'],\n 5: ['ffffcc', 'c2e699', '78c679', '31a354', '006837'],\n 6: ['ffffcc', 'd9f0a3', 'addd8e', '78c679', '31a354', '006837'],\n 7: ['ffffcc', 'd9f0a3', 'addd8e', '78c679', '41ab5d', '238443',\n '005a32'],\n 8: ['ffffe5', 'f7fcb9', 'd9f0a3', 'addd8e', '78c679', '41ab5d',\n '238443', '005a32'],\n 9: ['ffffe5', 'f7fcb9', 'd9f0a3', 'addd8e', '78c679', '41ab5d',\n '238443', '006837', '004529']\n },\n YlGnBu: {\n type: 'sequential',\n cbf: 42,\n 3: ['edf8b1', '7fcdbb', '2c7fb8'],\n 4: ['ffffcc', 'a1dab4', '41b6c4', '225ea8'],\n 5: ['ffffcc', 'a1dab4', '41b6c4', '2c7fb8', '253494'],\n 6: ['ffffcc', 'c7e9b4', '7fcdbb', '41b6c4', '2c7fb8', '253494'],\n 7: ['ffffcc', 'c7e9b4', '7fcdbb', '41b6c4', '1d91c0', '225ea8',\n '0c2c84'],\n 8: ['ffffd9', 'edf8b1', 'c7e9b4', '7fcdbb', '41b6c4', '1d91c0',\n '225ea8', '0c2c84'],\n 9: ['ffffd9', 'edf8b1', 'c7e9b4', '7fcdbb', '41b6c4', '1d91c0',\n '225ea8', '253494', '081d58']\n },\n GnBu: {\n type: 'sequential',\n cbf: 42,\n 3: ['e0f3db', 'a8ddb5', '43a2ca'],\n 4: ['f0f9e8', 'bae4bc', '7bccc4', '2b8cbe'],\n 5: ['f0f9e8', 'bae4bc', '7bccc4', '43a2ca', '0868ac'],\n 6: ['f0f9e8', 'ccebc5', 'a8ddb5', '7bccc4', '43a2ca', '0868ac'],\n 7: ['f0f9e8', 'ccebc5', 'a8ddb5', '7bccc4', '4eb3d3', '2b8cbe',\n '08589e'],\n 8: ['f7fcf0', 'e0f3db', 'ccebc5', 'a8ddb5', '7bccc4', '4eb3d3',\n '2b8cbe', '08589e'],\n 9: ['f7fcf0', 'e0f3db', 'ccebc5', 'a8ddb5', '7bccc4', '4eb3d3',\n '2b8cbe', '0868ac', '084081']\n },\n BuGn: {\n type: 'sequential',\n cbf: 42,\n 3: ['e5f5f9', '99d8c9', '2ca25f'],\n 4: ['edf8fb', 'b2e2e2', '66c2a4', '238b45'],\n 5: ['edf8fb', 'b2e2e2', '66c2a4', '2ca25f', '006d2c'],\n 6: ['edf8fb', 'ccece6', '99d8c9', '66c2a4', '2ca25f', '006d2c'],\n 7: ['edf8fb', 'ccece6', '99d8c9', '66c2a4', '41ae76', '238b45',\n '005824'],\n 8: ['f7fcfd', 'e5f5f9', 'ccece6', '99d8c9', '66c2a4', '41ae76',\n '238b45', '005824'],\n 9: ['f7fcfd', 'e5f5f9', 'ccece6', '99d8c9', '66c2a4', '41ae76',\n '238b45', '006d2c', '00441b']\n },\n PuBuGn: {\n type: 'sequential',\n cbf: 42,\n 3: ['ece2f0', 'a6bddb', '1c9099'],\n 4: ['f6eff7', 'bdc9e1', '67a9cf', '02818a'],\n 5: ['f6eff7', 'bdc9e1', '67a9cf', '1c9099', '016c59'],\n 6: ['f6eff7', 'd0d1e6', 'a6bddb', '67a9cf', '1c9099', '016c59'],\n 7: ['f6eff7', 'd0d1e6', 'a6bddb', '67a9cf', '3690c0', '02818a',\n '016450'],\n 8: ['fff7fb', 'ece2f0', 'd0d1e6', 'a6bddb', '67a9cf', '3690c0',\n '02818a', '016450'],\n 9: ['fff7fb', 'ece2f0', 'd0d1e6', 'a6bddb', '67a9cf', '3690c0',\n '02818a', '016c59', '014636']\n },\n PuBu: {\n type: 'sequential',\n cbf: 42,\n 3: ['ece7f2', 'a6bddb', '2b8cbe'],\n 4: ['f1eef6', 'bdc9e1', '74a9cf', '0570b0'],\n 5: ['f1eef6', 'bdc9e1', '74a9cf', '2b8cbe', '045a8d'],\n 6: ['f1eef6', 'd0d1e6', 'a6bddb', '74a9cf', '2b8cbe', '045a8d'],\n 7: ['f1eef6', 'd0d1e6', 'a6bddb', '74a9cf', '3690c0', '0570b0',\n '034e7b'],\n 8: ['fff7fb', 'ece7f2', 'd0d1e6', 'a6bddb', '74a9cf', '3690c0',\n '0570b0', '034e7b'],\n 9: ['fff7fb', 'ece7f2', 'd0d1e6', 'a6bddb', '74a9cf', '3690c0',\n '0570b0', '045a8d', '023858']\n },\n BuPu: {\n type: 'sequential',\n cbf: 42,\n 3: ['e0ecf4', '9ebcda', '8856a7'],\n 4: ['edf8fb', 'b3cde3', '8c96c6', '88419d'],\n 5: ['edf8fb', 'b3cde3', '8c96c6', '8856a7', '810f7c'],\n 6: ['edf8fb', 'bfd3e6', '9ebcda', '8c96c6', '8856a7', '810f7c'],\n 7: ['edf8fb', 'bfd3e6', '9ebcda', '8c96c6', '8c6bb1', '88419d',\n '6e016b'],\n 8: ['f7fcfd', 'e0ecf4', 'bfd3e6', '9ebcda', '8c96c6', '8c6bb1',\n '88419d', '6e016b'],\n 9: ['f7fcfd', 'e0ecf4', 'bfd3e6', '9ebcda', '8c96c6', '8c6bb1',\n '88419d', '810f7c', '4d004b']\n },\n RdPu: {\n type: 'sequential',\n cbf: 42,\n 3: ['fde0dd', 'fa9fb5', 'c51b8a'],\n 4: ['feebe2', 'fbb4b9', 'f768a1', 'ae017e'],\n 5: ['feebe2', 'fbb4b9', 'f768a1', 'c51b8a', '7a0177'],\n 6: ['feebe2', 'fcc5c0', 'fa9fb5', 'f768a1', 'c51b8a', '7a0177'],\n 7: ['feebe2', 'fcc5c0', 'fa9fb5', 'f768a1', 'dd3497', 'ae017e',\n '7a0177'],\n 8: ['fff7f3', 'fde0dd', 'fcc5c0', 'fa9fb5', 'f768a1', 'dd3497',\n 'ae017e', '7a0177'],\n 9: ['fff7f3', 'fde0dd', 'fcc5c0', 'fa9fb5', 'f768a1', 'dd3497',\n 'ae017e', '7a0177', '49006a']\n },\n PuRd: {\n type: 'sequential',\n cbf: 42,\n 3: ['e7e1ef', 'c994c7', 'dd1c77'],\n 4: ['f1eef6', 'd7b5d8', 'df65b0', 'ce1256'],\n 5: ['f1eef6', 'd7b5d8', 'df65b0', 'dd1c77', '980043'],\n 6: ['f1eef6', 'd4b9da', 'c994c7', 'df65b0', 'dd1c77', '980043'],\n 7: ['f1eef6', 'd4b9da', 'c994c7', 'df65b0', 'e7298a', 'ce1256',\n '91003f'],\n 8: ['f7f4f9', 'e7e1ef', 'd4b9da', 'c994c7', 'df65b0', 'e7298a',\n 'ce1256', '91003f'],\n 9: ['f7f4f9', 'e7e1ef', 'd4b9da', 'c994c7', 'df65b0', 'e7298a',\n 'ce1256', '980043', '67001f']\n },\n OrRd: {\n type: 'sequential',\n cbf: 42,\n 3: ['fee8c8', 'fdbb84', 'e34a33'],\n 4: ['fef0d9', 'fdcc8a', 'fc8d59', 'd7301f'],\n 5: ['fef0d9', 'fdcc8a', 'fc8d59', 'e34a33', 'b30000'],\n 6: ['fef0d9', 'fdd49e', 'fdbb84', 'fc8d59', 'e34a33', 'b30000'],\n 7: ['fef0d9', 'fdd49e', 'fdbb84', 'fc8d59', 'ef6548', 'd7301f',\n '990000'],\n 8: ['fff7ec', 'fee8c8', 'fdd49e', 'fdbb84', 'fc8d59', 'ef6548',\n 'd7301f', '990000'],\n 9: ['fff7ec', 'fee8c8', 'fdd49e', 'fdbb84', 'fc8d59', 'ef6548',\n 'd7301f', 'b30000', '7f0000']\n },\n YlOrRd: {\n type: 'sequential',\n cbf: 42,\n 3: ['ffeda0', 'feb24c', 'f03b20'],\n 4: ['ffffb2', 'fecc5c', 'fd8d3c', 'e31a1c'],\n 5: ['ffffb2', 'fecc5c', 'fd8d3c', 'f03b20', 'bd0026'],\n 6: ['ffffb2', 'fed976', 'feb24c', 'fd8d3c', 'f03b20', 'bd0026'],\n 7: ['ffffb2', 'fed976', 'feb24c', 'fd8d3c', 'fc4e2a', 'e31a1c',\n 'b10026'],\n 8: ['ffffcc', 'ffeda0', 'fed976', 'feb24c', 'fd8d3c', 'fc4e2a',\n 'e31a1c', 'b10026'],\n 9: ['ffffcc', 'ffeda0', 'fed976', 'feb24c', 'fd8d3c', 'fc4e2a',\n 'e31a1c', 'bd0026', '800026']\n },\n YlOrBr: {\n type: 'sequential',\n cbf: 42,\n 3: ['fff7bc', 'fec44f', 'd95f0e'],\n 4: ['ffffd4', 'fed98e', 'fe9929', 'cc4c02'],\n 5: ['ffffd4', 'fed98e', 'fe9929', 'd95f0e', '993404'],\n 6: ['ffffd4', 'fee391', 'fec44f', 'fe9929', 'd95f0e', '993404'],\n 7: ['ffffd4', 'fee391', 'fec44f', 'fe9929', 'ec7014', 'cc4c02',\n '8c2d04'],\n 8: ['ffffe5', 'fff7bc', 'fee391', 'fec44f', 'fe9929', 'ec7014',\n 'cc4c02', '8c2d04'],\n 9: ['ffffe5', 'fff7bc', 'fee391', 'fec44f', 'fe9929', 'ec7014',\n 'cc4c02', '993404', '662506']\n },\n Purples: {\n type: 'sequential',\n cbf: 42,\n 3: ['efedf5', 'bcbddc', '756bb1'],\n 4: ['f2f0f7', 'cbc9e2', '9e9ac8', '6a51a3'],\n 5: ['f2f0f7', 'cbc9e2', '9e9ac8', '756bb1', '54278f'],\n 6: ['f2f0f7', 'dadaeb', 'bcbddc', '9e9ac8', '756bb1', '54278f'],\n 7: ['f2f0f7', 'dadaeb', 'bcbddc', '9e9ac8', '807dba', '6a51a3',\n '4a1486'],\n 8: ['fcfbfd', 'efedf5', 'dadaeb', 'bcbddc', '9e9ac8', '807dba',\n '6a51a3', '4a1486'],\n 9: ['fcfbfd', 'efedf5', 'dadaeb', 'bcbddc', '9e9ac8', '807dba',\n '6a51a3', '54278f', '3f007d']\n },\n Blues: {\n type: 'sequential',\n cbf: 42,\n 3: ['deebf7', '9ecae1', '3182bd'],\n 4: ['eff3ff', 'bdd7e7', '6baed6', '2171b5'],\n 5: ['eff3ff', 'bdd7e7', '6baed6', '3182bd', '08519c'],\n 6: ['eff3ff', 'c6dbef', '9ecae1', '6baed6', '3182bd', '08519c'],\n 7: ['eff3ff', 'c6dbef', '9ecae1', '6baed6', '4292c6', '2171b5',\n '084594'],\n 8: ['f7fbff', 'deebf7', 'c6dbef', '9ecae1', '6baed6', '4292c6',\n '2171b5', '084594'],\n 9: ['f7fbff', 'deebf7', 'c6dbef', '9ecae1', '6baed6', '4292c6',\n '2171b5', '08519c', '08306b']\n },\n Greens: {\n type: 'sequential',\n cbf: 42,\n 3: ['e5f5e0', 'a1d99b', '31a354'],\n 4: ['edf8e9', 'bae4b3', '74c476', '238b45'],\n 5: ['edf8e9', 'bae4b3', '74c476', '31a354', '006d2c'],\n 6: ['edf8e9', 'c7e9c0', 'a1d99b', '74c476', '31a354', '006d2c'],\n 7: ['edf8e9', 'c7e9c0', 'a1d99b', '74c476', '41ab5d', '238b45',\n '005a32'],\n 8: ['f7fcf5', 'e5f5e0', 'c7e9c0', 'a1d99b', '74c476', '41ab5d',\n '238b45', '005a32'],\n 9: ['f7fcf5', 'e5f5e0', 'c7e9c0', 'a1d99b', '74c476', '41ab5d',\n '238b45', '006d2c', '00441b']\n },\n Oranges: {\n type: 'sequential',\n cbf: 42,\n 3: ['fee6ce', 'fdae6b', 'e6550d'],\n 4: ['feedde', 'fdbe85', 'fd8d3c', 'd94701'],\n 5: ['feedde', 'fdbe85', 'fd8d3c', 'e6550d', 'a63603'],\n 6: ['feedde', 'fdd0a2', 'fdae6b', 'fd8d3c', 'e6550d', 'a63603'],\n 7: ['feedde', 'fdd0a2', 'fdae6b', 'fd8d3c', 'f16913', 'd94801',\n '8c2d04'],\n 8: ['fff5eb', 'fee6ce', 'fdd0a2', 'fdae6b', 'fd8d3c', 'f16913',\n 'd94801', '8c2d04'],\n 9: ['fff5eb', 'fee6ce', 'fdd0a2', 'fdae6b', 'fd8d3c', 'f16913',\n 'd94801', 'a63603', '7f2704']\n },\n Reds: {\n type: 'sequential',\n cbf: 42,\n 3: ['fee0d2', 'fc9272', 'de2d26'],\n 4: ['fee5d9', 'fcae91', 'fb6a4a', 'cb181d'],\n 5: ['fee5d9', 'fcae91', 'fb6a4a', 'de2d26', 'a50f15'],\n 6: ['fee5d9', 'fcbba1', 'fc9272', 'fb6a4a', 'de2d26', 'a50f15'],\n 7: ['fee5d9', 'fcbba1', 'fc9272', 'fb6a4a', 'ef3b2c', 'cb181d',\n '99000d'],\n 8: ['fff5f0', 'fee0d2', 'fcbba1', 'fc9272', 'fb6a4a', 'ef3b2c',\n 'cb181d', '99000d'],\n 9: ['fff5f0', 'fee0d2', 'fcbba1', 'fc9272', 'fb6a4a', 'ef3b2c',\n 'cb181d', 'a50f15', '67000d']\n },\n Greys: {\n type: 'sequential',\n cbf: 42,\n 3: ['f0f0f0', 'bdbdbd', '636363'],\n 4: ['f7f7f7', 'cccccc', '969696', '525252'],\n 5: ['f7f7f7', 'cccccc', '969696', '636363', '252525'],\n 6: ['f7f7f7', 'd9d9d9', 'bdbdbd', '969696', '636363', '252525'],\n 7: ['f7f7f7', 'd9d9d9', 'bdbdbd', '969696', '737373', '525252',\n '252525'],\n 8: ['ffffff', 'f0f0f0', 'd9d9d9', 'bdbdbd', '969696', '737373',\n '525252', '252525'],\n 9: ['ffffff', 'f0f0f0', 'd9d9d9', 'bdbdbd', '969696', '737373',\n '525252', '252525', '000000']\n },\n PuOr: {\n type: 'diverging',\n cbf: 42,\n 3: ['f1a340', 'f7f7f7', '998ec3'],\n 4: ['e66101', 'fdb863', 'b2abd2', '5e3c99'],\n 5: ['e66101', 'fdb863', 'f7f7f7', 'b2abd2', '5e3c99'],\n 6: ['b35806', 'f1a340', 'fee0b6', 'd8daeb', '998ec3', '542788'],\n 7: ['b35806', 'f1a340', 'fee0b6', 'f7f7f7', 'd8daeb', '998ec3',\n '542788'],\n 8: ['b35806', 'e08214', 'fdb863', 'fee0b6', 'd8daeb', 'b2abd2',\n '8073ac', '542788'],\n 9: ['b35806', 'e08214', 'fdb863', 'fee0b6', 'f7f7f7', 'd8daeb',\n 'b2abd2', '8073ac', '542788'],\n 10: ['7f3b08', 'b35806', 'e08214', 'fdb863', 'fee0b6', 'd8daeb',\n 'b2abd2', '8073ac', '542788', '2d004b'],\n 11: ['7f3b08', 'b35806', 'e08214', 'fdb863', 'fee0b6', 'f7f7f7',\n 'd8daeb', 'b2abd2', '8073ac', '542788', '2d004b']\n },\n BrBG: {\n type: 'diverging',\n cbf: 42,\n 3: ['d8b365', 'f5f5f5', '5ab4ac'],\n 4: ['a6611a', 'dfc27d', '80cdc1', '018571'],\n 5: ['a6611a', 'dfc27d', 'f5f5f5', '80cdc1', '018571'],\n 6: ['8c510a', 'd8b365', 'f6e8c3', 'c7eae5', '5ab4ac', '01665e'],\n 7: ['8c510a', 'd8b365', 'f6e8c3', 'f5f5f5', 'c7eae5', '5ab4ac',\n '01665e'],\n 8: ['8c510a', 'bf812d', 'dfc27d', 'f6e8c3', 'c7eae5', '80cdc1',\n '35978f', '01665e'],\n 9: ['8c510a', 'bf812d', 'dfc27d', 'f6e8c3', 'f5f5f5', 'c7eae5',\n '80cdc1', '35978f', '01665e'],\n 10: ['543005', '8c510a', 'bf812d', 'dfc27d', 'f6e8c3', 'c7eae5',\n '80cdc1', '35978f', '01665e', '003c30'],\n 11: ['543005', '8c510a', 'bf812d', 'dfc27d', 'f6e8c3', 'f5f5f5',\n 'c7eae5', '80cdc1', '35978f', '01665e', '003c30']\n },\n PRGn: {\n type: 'diverging',\n cbf: 42,\n 3: ['af8dc3', 'f7f7f7', '7fbf7b'],\n 4: ['7b3294', 'c2a5cf', 'a6dba0', '008837'],\n 5: ['7b3294', 'c2a5cf', 'f7f7f7', 'a6dba0', '008837'],\n 6: ['762a83', 'af8dc3', 'e7d4e8', 'd9f0d3', '7fbf7b', '1b7837'],\n 7: ['762a83', 'af8dc3', 'e7d4e8', 'f7f7f7', 'd9f0d3', '7fbf7b',\n '1b7837'],\n 8: ['762a83', '9970ab', 'c2a5cf', 'e7d4e8', 'd9f0d3', 'a6dba0',\n '5aae61', '1b7837'],\n 9: ['762a83', '9970ab', 'c2a5cf', 'e7d4e8', 'f7f7f7', 'd9f0d3',\n 'a6dba0', '5aae61', '1b7837'],\n 10: ['40004b', '762a83', '9970ab', 'c2a5cf', 'e7d4e8', 'd9f0d3',\n 'a6dba0', '5aae61', '1b7837', '00441b'],\n 11: ['40004b', '762a83', '9970ab', 'c2a5cf', 'e7d4e8', 'f7f7f7',\n 'd9f0d3', 'a6dba0', '5aae61', '1b7837', '00441b']\n },\n PiYG: {\n type: 'diverging',\n cbf: 42,\n 3: ['e9a3c9', 'f7f7f7', 'a1d76a'],\n 4: ['d01c8b', 'f1b6da', 'b8e186', '4dac26'],\n 5: ['d01c8b', 'f1b6da', 'f7f7f7', 'b8e186', '4dac26'],\n 6: ['c51b7d', 'e9a3c9', 'fde0ef', 'e6f5d0', 'a1d76a', '4d9221'],\n 7: ['c51b7d', 'e9a3c9', 'fde0ef', 'f7f7f7', 'e6f5d0', 'a1d76a',\n '4d9221'],\n 8: ['c51b7d', 'de77ae', 'f1b6da', 'fde0ef', 'e6f5d0', 'b8e186',\n '7fbc41', '4d9221'],\n 9: ['c51b7d', 'de77ae', 'f1b6da', 'fde0ef', 'f7f7f7', 'e6f5d0',\n 'b8e186', '7fbc41', '4d9221'],\n 10: ['8e0152', 'c51b7d', 'de77ae', 'f1b6da', 'fde0ef', 'e6f5d0',\n 'b8e186', '7fbc41', '4d9221', '276419'],\n 11: ['8e0152', 'c51b7d', 'de77ae', 'f1b6da', 'fde0ef', 'f7f7f7',\n 'e6f5d0', 'b8e186', '7fbc41', '4d9221', '276419']\n },\n RdBu: {\n type: 'diverging',\n cbf: 42,\n 3: ['ef8a62', 'f7f7f7', '67a9cf'],\n 4: ['ca0020', 'f4a582', '92c5de', '0571b0'],\n 5: ['ca0020', 'f4a582', 'f7f7f7', '92c5de', '0571b0'],\n 6: ['b2182b', 'ef8a62', 'fddbc7', 'd1e5f0', '67a9cf', '2166ac'],\n 7: ['b2182b', 'ef8a62', 'fddbc7', 'f7f7f7', 'd1e5f0', '67a9cf',\n '2166ac'],\n 8: ['b2182b', 'd6604d', 'f4a582', 'fddbc7', 'd1e5f0', '92c5de',\n '4393c3', '2166ac'],\n 9: ['b2182b', 'd6604d', 'f4a582', 'fddbc7', 'f7f7f7', 'd1e5f0',\n '92c5de', '4393c3', '2166ac'],\n 10: ['67001f', 'b2182b', 'd6604d', 'f4a582', 'fddbc7', 'd1e5f0',\n '92c5de', '4393c3', '2166ac', '053061'],\n 11: ['67001f', 'b2182b', 'd6604d', 'f4a582', 'fddbc7', 'f7f7f7',\n 'd1e5f0', '92c5de', '4393c3', '2166ac', '053061']\n },\n RdGy: {\n type: 'diverging',\n cbf: 42,\n 3: ['ef8a62', 'ffffff', '999999'],\n 4: ['ca0020', 'f4a582', 'bababa', '404040'],\n 5: ['ca0020', 'f4a582', 'ffffff', 'bababa', '404040'],\n 6: ['b2182b', 'ef8a62', 'fddbc7', 'e0e0e0', '999999', '4d4d4d'],\n 7: ['b2182b', 'ef8a62', 'fddbc7', 'ffffff', 'e0e0e0', '999999',\n '4d4d4d'],\n 8: ['b2182b', 'd6604d', 'f4a582', 'fddbc7', 'e0e0e0', 'bababa',\n '878787', '4d4d4d'],\n 9: ['b2182b', 'd6604d', 'f4a582', 'fddbc7', 'ffffff', 'e0e0e0',\n 'bababa', '878787', '4d4d4d'],\n 10: ['67001f', 'b2182b', 'd6604d', 'f4a582', 'fddbc7', 'e0e0e0',\n 'bababa', '878787', '4d4d4d', '1a1a1a'],\n 11: ['67001f', 'b2182b', 'd6604d', 'f4a582', 'fddbc7', 'ffffff',\n 'e0e0e0', 'bababa', '878787', '4d4d4d', '1a1a1a']\n },\n RdYlBu: {\n type: 'diverging',\n cbf: 42,\n 3: ['fc8d59', 'ffffbf', '91bfdb'],\n 4: ['d7191c', 'fdae61', 'abd9e9', '2c7bb6'],\n 5: ['d7191c', 'fdae61', 'ffffbf', 'abd9e9', '2c7bb6'],\n 6: ['d73027', 'fc8d59', 'fee090', 'e0f3f8', '91bfdb', '4575b4'],\n 7: ['d73027', 'fc8d59', 'fee090', 'ffffbf', 'e0f3f8', '91bfdb',\n '4575b4'],\n 8: ['d73027', 'f46d43', 'fdae61', 'fee090', 'e0f3f8', 'abd9e9',\n '74add1', '4575b4'],\n 9: ['d73027', 'f46d43', 'fdae61', 'fee090', 'ffffbf', 'e0f3f8',\n 'abd9e9', '74add1', '4575b4'],\n 10: ['a50026', 'd73027', 'f46d43', 'fdae61', 'fee090', 'e0f3f8',\n 'abd9e9', '74add1', '4575b4', '313695'],\n 11: ['a50026', 'd73027', 'f46d43', 'fdae61', 'fee090', 'ffffbf',\n 'e0f3f8', 'abd9e9', '74add1', '4575b4', '313695']\n },\n Spectral: {\n type: 'diverging',\n cbf: 0,\n 3: ['fc8d59', 'ffffbf', '99d594'],\n 4: ['d7191c', 'fdae61', 'abdda4', '2b83ba'],\n 5: ['d7191c', 'fdae61', 'ffffbf', 'abdda4', '2b83ba'],\n 6: ['d53e4f', 'fc8d59', 'fee08b', 'e6f598', '99d594', '3288bd'],\n 7: ['d53e4f', 'fc8d59', 'fee08b', 'ffffbf', 'e6f598', '99d594',\n '3288bd'],\n 8: ['d53e4f', 'f46d43', 'fdae61', 'fee08b', 'e6f598', 'abdda4',\n '66c2a5', '3288bd'],\n 9: ['d53e4f', 'f46d43', 'fdae61', 'fee08b', 'ffffbf', 'e6f598',\n 'abdda4', '66c2a5', '3288bd'],\n 10: ['9e0142', 'd53e4f', 'f46d43', 'fdae61', 'fee08b', 'e6f598',\n 'abdda4', '66c2a5', '3288bd', '5e4fa2'],\n 11: ['9e0142', 'd53e4f', 'f46d43', 'fdae61', 'fee08b', 'ffffbf',\n 'e6f598', 'abdda4', '66c2a5', '3288bd', '5e4fa2']\n },\n RdYlGn: {\n type: 'diverging',\n cbf: 0,\n 3: ['fc8d59', 'ffffbf', '91cf60'],\n 4: ['d7191c', 'fdae61', 'a6d96a', '1a9641'],\n 5: ['d7191c', 'fdae61', 'ffffbf', 'a6d96a', '1a9641'],\n 6: ['d73027', 'fc8d59', 'fee08b', 'd9ef8b', '91cf60', '1a9850'],\n 7: ['d73027', 'fc8d59', 'fee08b', 'ffffbf', 'd9ef8b', '91cf60',\n '1a9850'],\n 8: ['d73027', 'f46d43', 'fdae61', 'fee08b', 'd9ef8b', 'a6d96a',\n '66bd63', '1a9850'],\n 9: ['d73027', 'f46d43', 'fdae61', 'fee08b', 'ffffbf', 'd9ef8b',\n 'a6d96a', '66bd63', '1a9850'],\n 10: ['a50026', 'd73027', 'f46d43', 'fdae61', 'fee08b', 'd9ef8b',\n 'a6d96a', '66bd63', '1a9850', '006837'],\n 11: ['a50026', 'd73027', 'f46d43', 'fdae61', 'fee08b', 'ffffbf',\n 'd9ef8b', 'a6d96a', '66bd63', '1a9850', '006837']\n },\n Accent: {\n type: 'qualitative',\n cbf: 0,\n 3: ['7fc97f', 'beaed4', 'fdc086'],\n 4: ['7fc97f', 'beaed4', 'fdc086', 'ffff99'],\n 5: ['7fc97f', 'beaed4', 'fdc086', 'ffff99', '386cb0'],\n 6: ['7fc97f', 'beaed4', 'fdc086', 'ffff99', '386cb0', 'f0027f'],\n 7: ['7fc97f', 'beaed4', 'fdc086', 'ffff99', '386cb0', 'f0027f',\n 'bf5b17'],\n 8: ['7fc97f', 'beaed4', 'fdc086', 'ffff99', '386cb0', 'f0027f',\n 'bf5b17', '666666']\n },\n Dark2: {\n type: 'qualitative',\n cbf: 3,\n 3: ['1b9e77', 'd95f02', '7570b3'],\n 4: ['1b9e77', 'd95f02', '7570b3', 'e7298a'],\n 5: ['1b9e77', 'd95f02', '7570b3', 'e7298a', '66a61e'],\n 6: ['1b9e77', 'd95f02', '7570b3', 'e7298a', '66a61e', 'e6ab02'],\n 7: ['1b9e77', 'd95f02', '7570b3', 'e7298a', '66a61e', 'e6ab02',\n 'a6761d'],\n 8: ['1b9e77', 'd95f02', '7570b3', 'e7298a', '66a61e', 'e6ab02',\n 'a6761d', '666666']\n },\n Paired: {\n type: 'qualitative',\n cbf: 4,\n 3: ['a6cee3', '1f78b4', 'b2df8a'],\n 4: ['a6cee3', '1f78b4', 'b2df8a', '33a02c'],\n 5: ['a6cee3', '1f78b4', 'b2df8a', '33a02c', 'fb9a99'],\n 6: ['a6cee3', '1f78b4', 'b2df8a', '33a02c', 'fb9a99', 'e31a1c'],\n 7: ['a6cee3', '1f78b4', 'b2df8a', '33a02c', 'fb9a99', 'e31a1c',\n 'fdbf6f'],\n 8: ['a6cee3', '1f78b4', 'b2df8a', '33a02c', 'fb9a99', 'e31a1c',\n 'fdbf6f', 'ff7f00'],\n 9: ['a6cee3', '1f78b4', 'b2df8a', '33a02c', 'fb9a99', 'e31a1c',\n 'fdbf6f', 'ff7f00', 'cab2d6'],\n 10: ['a6cee3', '1f78b4', 'b2df8a', '33a02c', 'fb9a99', 'e31a1c',\n 'fdbf6f', 'ff7f00', 'cab2d6', '6a3d9a'],\n 11: ['a6cee3', '1f78b4', 'b2df8a', '33a02c', 'fb9a99', 'e31a1c',\n 'fdbf6f', 'ff7f00', 'cab2d6', '6a3d9a', 'ffff99'],\n 12: ['a6cee3', '1f78b4', 'b2df8a', '33a02c', 'fb9a99', 'e31a1c',\n 'fdbf6f', 'ff7f00', 'cab2d6', '6a3d9a', 'ffff99', 'b15928']\n },\n Pastel1: {\n type: 'qualitative',\n cbf: 0,\n 3: ['fbb4ae', 'b3cde3', 'ccebc5'],\n 4: ['fbb4ae', 'b3cde3', 'ccebc5', 'decbe4'],\n 5: ['fbb4ae', 'b3cde3', 'ccebc5', 'decbe4', 'fed9a6'],\n 6: ['fbb4ae', 'b3cde3', 'ccebc5', 'decbe4', 'fed9a6', 'ffffcc'],\n 7: ['fbb4ae', 'b3cde3', 'ccebc5', 'decbe4', 'fed9a6', 'ffffcc',\n 'e5d8bd'],\n 8: ['fbb4ae', 'b3cde3', 'ccebc5', 'decbe4', 'fed9a6', 'ffffcc',\n 'e5d8bd', 'fddaec'],\n 9: ['fbb4ae', 'b3cde3', 'ccebc5', 'decbe4', 'fed9a6', 'ffffcc',\n 'e5d8bd', 'fddaec', 'f2f2f2']\n },\n Pastel2: {\n type: 'qualitative',\n cbf: 0,\n 3: ['b3e2cd', 'fdcdac', 'cbd5e8'],\n 4: ['b3e2cd', 'fdcdac', 'cbd5e8', 'f4cae4'],\n 5: ['b3e2cd', 'fdcdac', 'cbd5e8', 'f4cae4', 'e6f5c9'],\n 6: ['b3e2cd', 'fdcdac', 'cbd5e8', 'f4cae4', 'e6f5c9', 'fff2ae'],\n 7: ['b3e2cd', 'fdcdac', 'cbd5e8', 'f4cae4', 'e6f5c9', 'fff2ae',\n 'f1e2cc'],\n 8: ['b3e2cd', 'fdcdac', 'cbd5e8', 'f4cae4', 'e6f5c9', 'fff2ae',\n 'f1e2cc', 'cccccc']\n },\n Set1: {\n type: 'qualitative',\n cbf: 0,\n 3: ['e41a1c', '377eb8', '4daf4a'],\n 4: ['e41a1c', '377eb8', '4daf4a', '984ea3'],\n 5: ['e41a1c', '377eb8', '4daf4a', '984ea3', 'ff7f00'],\n 6: ['e41a1c', '377eb8', '4daf4a', '984ea3', 'ff7f00', 'ffff33'],\n 7: ['e41a1c', '377eb8', '4daf4a', '984ea3', 'ff7f00', 'ffff33',\n 'a65628'],\n 8: ['e41a1c', '377eb8', '4daf4a', '984ea3', 'ff7f00', 'ffff33',\n 'a65628', 'f781bf'],\n 9: ['e41a1c', '377eb8', '4daf4a', '984ea3', 'ff7f00', 'ffff33',\n 'a65628', 'f781bf', '999999']\n },\n Set2: {\n type: 'qualitative',\n cbf: 3,\n 3: ['66c2a5', 'fc8d62', '8da0cb'],\n 4: ['66c2a5', 'fc8d62', '8da0cb', 'e78ac3'],\n 5: ['66c2a5', 'fc8d62', '8da0cb', 'e78ac3', 'a6d854'],\n 6: ['66c2a5', 'fc8d62', '8da0cb', 'e78ac3', 'a6d854', 'ffd92f'],\n 7: ['66c2a5', 'fc8d62', '8da0cb', 'e78ac3', 'a6d854', 'ffd92f',\n 'e5c494'],\n 8: ['66c2a5', 'fc8d62', '8da0cb', 'e78ac3', 'a6d854', 'ffd92f',\n 'e5c494', 'b3b3b3']\n },\n Set3: {\n type: 'qualitative',\n cbf: 0,\n 3: ['8dd3c7', 'ffffb3', 'bebada'],\n 4: ['8dd3c7', 'ffffb3', 'bebada', 'fb8072'],\n 5: ['8dd3c7', 'ffffb3', 'bebada', 'fb8072', '80b1d3'],\n 6: ['8dd3c7', 'ffffb3', 'bebada', 'fb8072', '80b1d3', 'fdb462'],\n 7: ['8dd3c7', 'ffffb3', 'bebada', 'fb8072', '80b1d3', 'fdb462',\n 'b3de69'],\n 8: ['8dd3c7', 'ffffb3', 'bebada', 'fb8072', '80b1d3', 'fdb462',\n 'b3de69', 'fccde5'],\n 9: ['8dd3c7', 'ffffb3', 'bebada', 'fb8072', '80b1d3', 'fdb462',\n 'b3de69', 'fccde5', 'd9d9d9'],\n 10: ['8dd3c7', 'ffffb3', 'bebada', 'fb8072', '80b1d3', 'fdb462',\n 'b3de69', 'fccde5', 'd9d9d9', 'bc80bd'],\n 11: ['8dd3c7', 'ffffb3', 'bebada', 'fb8072', '80b1d3', 'fdb462',\n 'b3de69', 'fccde5', 'd9d9d9', 'bc80bd', 'ccebc5'],\n 12: ['8dd3c7', 'ffffb3', 'bebada', 'fb8072', '80b1d3', 'fdb462',\n 'b3de69', 'fccde5', 'd9d9d9', 'bc80bd', 'ccebc5', 'ffed6f']\n }\n };\n\n for (var name in schemes) {\n var scheme = schemes[name];\n scheme = palette.Scheme.fromPalettes(\n 'cb-' + name, [scheme.type, 'cb-' + scheme.type], scheme, 12, scheme.cbf);\n palette.register(scheme);\n }\n})();\n\nif(typeof module === \"object\" && module.exports) {\n module.exports = palette\n}\n","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\nexport default function _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","import type { MouseEvent } from 'react';\nimport type {\n ChartType,\n ChartData,\n DefaultDataPoint,\n ChartDataset,\n ChartOptions,\n Chart,\n} from 'chart.js';\n\nimport type { ForwardedRef } from './types';\n\nconst defaultDatasetIdKey = 'label';\n\nexport function reforwardRef(ref: ForwardedRef, value: T) {\n if (typeof ref === 'function') {\n ref(value);\n } else if (ref) {\n ref.current = value;\n }\n}\n\nexport function setOptions<\n TType extends ChartType = ChartType,\n TData = DefaultDataPoint,\n TLabel = unknown\n>(chart: Chart, nextOptions: ChartOptions) {\n chart.options = { ...nextOptions };\n}\n\nexport function setLabels<\n TType extends ChartType = ChartType,\n TData = DefaultDataPoint,\n TLabel = unknown\n>(\n currentData: ChartData,\n nextLabels: TLabel[] | undefined\n) {\n currentData.labels = nextLabels;\n}\n\nexport function setDatasets<\n TType extends ChartType = ChartType,\n TData = DefaultDataPoint,\n TLabel = unknown\n>(\n currentData: ChartData,\n nextDatasets: ChartDataset[],\n datasetIdKey = defaultDatasetIdKey\n) {\n const addedDatasets: ChartDataset[] = [];\n\n currentData.datasets = nextDatasets.map(\n (nextDataset: Record) => {\n // given the new set, find it's current match\n const currentDataset = currentData.datasets.find(\n (dataset: Record) =>\n dataset[datasetIdKey] === nextDataset[datasetIdKey]\n );\n\n // There is no original to update, so simply add new one\n if (\n !currentDataset ||\n !nextDataset.data ||\n addedDatasets.includes(currentDataset)\n ) {\n return { ...nextDataset } as ChartDataset;\n }\n\n addedDatasets.push(currentDataset);\n\n Object.assign(currentDataset, nextDataset);\n\n return currentDataset;\n }\n );\n}\n\nexport function cloneData<\n TType extends ChartType = ChartType,\n TData = DefaultDataPoint,\n TLabel = unknown\n>(data: ChartData, datasetIdKey = defaultDatasetIdKey) {\n const nextData: ChartData = {\n labels: [],\n datasets: [],\n };\n\n setLabels(nextData, data.labels);\n setDatasets(nextData, data.datasets, datasetIdKey);\n\n return nextData;\n}\n\n/**\n * Get dataset from mouse click event\n * @param chart - Chart.js instance\n * @param event - Mouse click event\n * @returns Dataset\n */\nexport function getDatasetAtEvent(\n chart: Chart,\n event: MouseEvent\n) {\n return chart.getElementsAtEventForMode(\n event.nativeEvent,\n 'dataset',\n { intersect: true },\n false\n );\n}\n\n/**\n * Get single dataset element from mouse click event\n * @param chart - Chart.js instance\n * @param event - Mouse click event\n * @returns Dataset\n */\nexport function getElementAtEvent(\n chart: Chart,\n event: MouseEvent\n) {\n return chart.getElementsAtEventForMode(\n event.nativeEvent,\n 'nearest',\n { intersect: true },\n false\n );\n}\n\n/**\n * Get all dataset elements from mouse click event\n * @param chart - Chart.js instance\n * @param event - Mouse click event\n * @returns Dataset\n */\nexport function getElementsAtEvent(\n chart: Chart,\n event: MouseEvent\n) {\n return chart.getElementsAtEventForMode(\n event.nativeEvent,\n 'index',\n { intersect: true },\n false\n );\n}\n","import React, { useEffect, useRef, forwardRef } from 'react';\nimport { Chart as ChartJS } from 'chart.js';\nimport type { ChartType, DefaultDataPoint } from 'chart.js';\n\nimport type { ForwardedRef, ChartProps, TypedChartComponent } from './types';\nimport {\n reforwardRef,\n cloneData,\n setOptions,\n setLabels,\n setDatasets,\n} from './utils';\n\nfunction ChartComponent<\n TType extends ChartType = ChartType,\n TData = DefaultDataPoint,\n TLabel = unknown\n>(\n {\n height = 150,\n width = 300,\n redraw = false,\n datasetIdKey,\n type,\n data,\n options,\n plugins = [],\n fallbackContent,\n ...props\n }: ChartProps,\n ref: ForwardedRef>\n) {\n type TypedChartJS = ChartJS;\n\n const canvasRef = useRef(null);\n const chartRef = useRef();\n\n const renderChart = () => {\n if (!canvasRef.current) return;\n\n chartRef.current = new ChartJS(canvasRef.current, {\n type,\n data: cloneData(data, datasetIdKey),\n options,\n plugins,\n });\n\n reforwardRef(ref, chartRef.current);\n };\n\n const destroyChart = () => {\n reforwardRef(ref, null);\n\n if (chartRef.current) {\n chartRef.current.destroy();\n chartRef.current = null;\n }\n };\n\n useEffect(() => {\n if (!redraw && chartRef.current && options) {\n setOptions(chartRef.current, options);\n }\n }, [redraw, options]);\n\n useEffect(() => {\n if (!redraw && chartRef.current) {\n setLabels(chartRef.current.config.data, data.labels);\n }\n }, [redraw, data.labels]);\n\n useEffect(() => {\n if (!redraw && chartRef.current && data.datasets) {\n setDatasets(chartRef.current.config.data, data.datasets, datasetIdKey);\n }\n }, [redraw, data.datasets]);\n\n useEffect(() => {\n if (!chartRef.current) return;\n\n if (redraw) {\n destroyChart();\n setTimeout(renderChart);\n } else {\n chartRef.current.update();\n }\n }, [redraw, options, data.labels, data.datasets]);\n\n useEffect(() => {\n renderChart();\n\n return () => destroyChart();\n }, []);\n\n return (\n \n {fallbackContent}\n \n );\n}\n\nexport const Chart = forwardRef(ChartComponent) as TypedChartComponent;\n","import React, { forwardRef } from 'react';\nimport {\n Chart as ChartJS,\n LineController,\n BarController,\n RadarController,\n DoughnutController,\n PolarAreaController,\n BubbleController,\n PieController,\n ScatterController,\n} from 'chart.js';\nimport type { ChartType, ChartComponentLike } from 'chart.js';\n\nimport type {\n ChartProps,\n ChartJSOrUndefined,\n TypedChartComponent,\n} from './types';\nimport { Chart } from './chart';\n\nfunction createTypedChart(\n type: T,\n registerables: ChartComponentLike\n) {\n ChartJS.register(registerables);\n\n return forwardRef, Omit, 'type'>>(\n (props, ref) => \n ) as TypedChartComponent;\n}\n\nexport const Line = /* #__PURE__ */ createTypedChart('line', LineController);\n\nexport const Bar = /* #__PURE__ */ createTypedChart('bar', BarController);\n\nexport const Radar = /* #__PURE__ */ createTypedChart('radar', RadarController);\n\nexport const Doughnut = /* #__PURE__ */ createTypedChart(\n 'doughnut',\n DoughnutController\n);\n\nexport const PolarArea = /* #__PURE__ */ createTypedChart(\n 'polarArea',\n PolarAreaController\n);\n\nexport const Bubble = /* #__PURE__ */ createTypedChart(\n 'bubble',\n BubbleController\n);\n\nexport const Pie = /* #__PURE__ */ createTypedChart('pie', PieController);\n\nexport const Scatter = /* #__PURE__ */ createTypedChart(\n 'scatter',\n ScatterController\n);\n","/** @license React v17.0.2\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=require(\"object-assign\"),n=60103,p=60106;exports.Fragment=60107;exports.StrictMode=60108;exports.Profiler=60114;var q=60109,r=60110,t=60112;exports.Suspense=60113;var u=60115,v=60116;\nif(\"function\"===typeof Symbol&&Symbol.for){var w=Symbol.for;n=w(\"react.element\");p=w(\"react.portal\");exports.Fragment=w(\"react.fragment\");exports.StrictMode=w(\"react.strict_mode\");exports.Profiler=w(\"react.profiler\");q=w(\"react.provider\");r=w(\"react.context\");t=w(\"react.forward_ref\");exports.Suspense=w(\"react.suspense\");u=w(\"react.memo\");v=w(\"react.lazy\")}var x=\"function\"===typeof Symbol&&Symbol.iterator;\nfunction y(a){if(null===a||\"object\"!==typeof a)return null;a=x&&a[x]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}function z(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function B(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var D={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){D[a]=new B(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];D[b]=new B(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){D[a]=new B(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){D[a]=new B(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){D[a]=new B(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){D[a]=new B(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){D[a]=new B(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){D[a]=new B(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){D[a]=new B(a,5,!1,a.toLowerCase(),null,!1,!1)});var oa=/[\\-:]([a-z])/g;function pa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(oa,\npa);D[b]=new B(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(oa,pa);D[b]=new B(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(oa,pa);D[b]=new B(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){D[a]=new B(a,1,!1,a.toLowerCase(),null,!1,!1)});\nD.xlinkHref=new B(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){D[a]=new B(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction qa(a,b,c,d){var e=D.hasOwnProperty(b)?D[b]:null;var f=null!==e?0===e.type:d?!1:!(2h||e[g]!==f[h])return\"\\n\"+e[g].replace(\" at new \",\" at \");while(1<=g&&0<=h)}break}}}finally{Oa=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Na(a):\"\"}\nfunction Qa(a){switch(a.tag){case 5:return Na(a.type);case 16:return Na(\"Lazy\");case 13:return Na(\"Suspense\");case 19:return Na(\"SuspenseList\");case 0:case 2:case 15:return a=Pa(a.type,!1),a;case 11:return a=Pa(a.type.render,!1),a;case 22:return a=Pa(a.type._render,!1),a;case 1:return a=Pa(a.type,!0),a;default:return\"\"}}\nfunction Ra(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ua:return\"Fragment\";case ta:return\"Portal\";case xa:return\"Profiler\";case wa:return\"StrictMode\";case Ba:return\"Suspense\";case Ca:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case za:return(a.displayName||\"Context\")+\".Consumer\";case ya:return(a._context.displayName||\"Context\")+\".Provider\";case Aa:var b=a.render;b=b.displayName||b.name||\"\";\nreturn a.displayName||(\"\"!==b?\"ForwardRef(\"+b+\")\":\"ForwardRef\");case Da:return Ra(a.type);case Fa:return Ra(a._render);case Ea:b=a._payload;a=a._init;try{return Ra(a(b))}catch(c){}}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"object\":case \"string\":case \"undefined\":return a;default:return\"\"}}function Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return m({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function $a(a,b){b=b.checked;null!=b&&qa(a,\"checked\",b,!1)}\nfunction ab(a,b){$a(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?bb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&bb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction cb(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction bb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}function db(a){var b=\"\";aa.Children.forEach(a,function(a){null!=a&&(b+=a)});return b}function eb(a,b){a=m({children:void 0},b);if(b=db(b.children))a.children=b;return a}\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e=c.length))throw Error(y(93));c=c[0]}b=c}null==b&&(b=\"\");c=b}a._wrapperState={initialValue:Sa(c)}}\nfunction ib(a,b){var c=Sa(b.value),d=Sa(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function jb(a){var b=a.textContent;b===a._wrapperState.initialValue&&\"\"!==b&&null!==b&&(a.value=b)}var kb={html:\"http://www.w3.org/1999/xhtml\",mathml:\"http://www.w3.org/1998/Math/MathML\",svg:\"http://www.w3.org/2000/svg\"};\nfunction lb(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}function mb(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?lb(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar nb,ob=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(a.namespaceURI!==kb.svg||\"innerHTML\"in a)a.innerHTML=b;else{nb=nb||document.createElement(\"div\");nb.innerHTML=\"\"+b.valueOf().toString()+\"\";for(b=nb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction pb(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar qb={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,\nfloodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},rb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(qb).forEach(function(a){rb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);qb[b]=qb[a]})});function sb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||qb.hasOwnProperty(a)&&qb[a]?(\"\"+b).trim():b+\"px\"}\nfunction tb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=sb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var ub=m({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction vb(a,b){if(b){if(ub[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(y(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(y(60));if(!(\"object\"===typeof b.dangerouslySetInnerHTML&&\"__html\"in b.dangerouslySetInnerHTML))throw Error(y(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(y(62));}}\nfunction wb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(y(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;ad?0:1<c;c++)b.push(a);return b}\nfunction $c(a,b,c){a.pendingLanes|=b;var d=b-1;a.suspendedLanes&=d;a.pingedLanes&=d;a=a.eventTimes;b=31-Vc(b);a[b]=c}var Vc=Math.clz32?Math.clz32:ad,bd=Math.log,cd=Math.LN2;function ad(a){return 0===a?32:31-(bd(a)/cd|0)|0}var dd=r.unstable_UserBlockingPriority,ed=r.unstable_runWithPriority,fd=!0;function gd(a,b,c,d){Kb||Ib();var e=hd,f=Kb;Kb=!0;try{Hb(e,a,b,c,d)}finally{(Kb=f)||Mb()}}function id(a,b,c,d){ed(dd,hd.bind(null,a,b,c,d))}\nfunction hd(a,b,c,d){if(fd){var e;if((e=0===(b&4))&&0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Ke(c)}}function Me(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Me(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Ne(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Oe(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nvar Pe=fa&&\"documentMode\"in document&&11>=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Oe(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Je(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Af||(a.current=zf[Af],zf[Af]=null,Af--)}function I(a,b){Af++;zf[Af]=a.current;a.current=b}var Cf={},M=Bf(Cf),N=Bf(!1),Df=Cf;\nfunction Ef(a,b){var c=a.type.contextTypes;if(!c)return Cf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}function Ff(a){a=a.childContextTypes;return null!==a&&void 0!==a}function Gf(){H(N);H(M)}function Hf(a,b,c){if(M.current!==Cf)throw Error(y(168));I(M,b);I(N,c)}\nfunction If(a,b,c){var d=a.stateNode;a=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in a))throw Error(y(108,Ra(b)||\"Unknown\",e));return m({},c,d)}function Jf(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Cf;Df=M.current;I(M,a);I(N,N.current);return!0}function Kf(a,b,c){var d=a.stateNode;if(!d)throw Error(y(169));c?(a=If(a,b,Df),d.__reactInternalMemoizedMergedChildContext=a,H(N),H(M),I(M,a)):H(N);I(N,c)}\nvar Lf=null,Mf=null,Nf=r.unstable_runWithPriority,Of=r.unstable_scheduleCallback,Pf=r.unstable_cancelCallback,Qf=r.unstable_shouldYield,Rf=r.unstable_requestPaint,Sf=r.unstable_now,Tf=r.unstable_getCurrentPriorityLevel,Uf=r.unstable_ImmediatePriority,Vf=r.unstable_UserBlockingPriority,Wf=r.unstable_NormalPriority,Xf=r.unstable_LowPriority,Yf=r.unstable_IdlePriority,Zf={},$f=void 0!==Rf?Rf:function(){},ag=null,bg=null,cg=!1,dg=Sf(),O=1E4>dg?Sf:function(){return Sf()-dg};\nfunction eg(){switch(Tf()){case Uf:return 99;case Vf:return 98;case Wf:return 97;case Xf:return 96;case Yf:return 95;default:throw Error(y(332));}}function fg(a){switch(a){case 99:return Uf;case 98:return Vf;case 97:return Wf;case 96:return Xf;case 95:return Yf;default:throw Error(y(332));}}function gg(a,b){a=fg(a);return Nf(a,b)}function hg(a,b,c){a=fg(a);return Of(a,b,c)}function ig(){if(null!==bg){var a=bg;bg=null;Pf(a)}jg()}\nfunction jg(){if(!cg&&null!==ag){cg=!0;var a=0;try{var b=ag;gg(99,function(){for(;az?(q=u,u=null):q=u.sibling;var n=p(e,u,h[z],k);if(null===n){null===u&&(u=q);break}a&&u&&null===\nn.alternate&&b(e,u);g=f(n,g,z);null===t?l=n:t.sibling=n;t=n;u=q}if(z===h.length)return c(e,u),l;if(null===u){for(;zz?(q=u,u=null):q=u.sibling;var w=p(e,u,n.value,k);if(null===w){null===u&&(u=q);break}a&&u&&null===w.alternate&&b(e,u);g=f(w,g,z);null===t?l=w:t.sibling=w;t=w;u=q}if(n.done)return c(e,u),l;if(null===u){for(;!n.done;z++,n=h.next())n=A(e,n.value,k),null!==n&&(g=f(n,g,z),null===t?l=n:t.sibling=n,t=n);return l}for(u=d(e,u);!n.done;z++,n=h.next())n=C(u,e,z,n.value,k),null!==n&&(a&&null!==n.alternate&&\nu.delete(null===n.key?z:n.key),g=f(n,g,z),null===t?l=n:t.sibling=n,t=n);a&&u.forEach(function(a){return b(e,a)});return l}return function(a,d,f,h){var k=\"object\"===typeof f&&null!==f&&f.type===ua&&null===f.key;k&&(f=f.props.children);var l=\"object\"===typeof f&&null!==f;if(l)switch(f.$$typeof){case sa:a:{l=f.key;for(k=d;null!==k;){if(k.key===l){switch(k.tag){case 7:if(f.type===ua){c(a,k.sibling);d=e(k,f.props.children);d.return=a;a=d;break a}break;default:if(k.elementType===f.type){c(a,k.sibling);\nd=e(k,f.props);d.ref=Qg(a,k,f);d.return=a;a=d;break a}}c(a,k);break}else b(a,k);k=k.sibling}f.type===ua?(d=Xg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Vg(f.type,f.key,f.props,null,a.mode,h),h.ref=Qg(a,d,f),h.return=a,a=h)}return g(a);case ta:a:{for(k=f.key;null!==d;){if(d.key===k)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=\nWg(f,a.mode,h);d.return=a;a=d}return g(a)}if(\"string\"===typeof f||\"number\"===typeof f)return f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):(c(a,d),d=Ug(f,a.mode,h),d.return=a,a=d),g(a);if(Pg(f))return x(a,d,f,h);if(La(f))return w(a,d,f,h);l&&Rg(a,f);if(\"undefined\"===typeof f&&!k)switch(a.tag){case 1:case 22:case 0:case 11:case 15:throw Error(y(152,Ra(a.type)||\"Component\"));}return c(a,d)}}var Yg=Sg(!0),Zg=Sg(!1),$g={},ah=Bf($g),bh=Bf($g),ch=Bf($g);\nfunction dh(a){if(a===$g)throw Error(y(174));return a}function eh(a,b){I(ch,b);I(bh,a);I(ah,$g);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:mb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=mb(b,a)}H(ah);I(ah,b)}function fh(){H(ah);H(bh);H(ch)}function gh(a){dh(ch.current);var b=dh(ah.current);var c=mb(b,a.type);b!==c&&(I(bh,a),I(ah,c))}function hh(a){bh.current===a&&(H(ah),H(bh))}var P=Bf(0);\nfunction ih(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&64))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var jh=null,kh=null,lh=!1;\nfunction mh(a,b){var c=nh(5,null,null,0);c.elementType=\"DELETED\";c.type=\"DELETED\";c.stateNode=b;c.return=a;c.flags=8;null!==a.lastEffect?(a.lastEffect.nextEffect=c,a.lastEffect=c):a.firstEffect=a.lastEffect=c}function oh(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,!0):!1;case 13:return!1;default:return!1}}\nfunction ph(a){if(lh){var b=kh;if(b){var c=b;if(!oh(a,b)){b=rf(c.nextSibling);if(!b||!oh(a,b)){a.flags=a.flags&-1025|2;lh=!1;jh=a;return}mh(jh,c)}jh=a;kh=rf(b.firstChild)}else a.flags=a.flags&-1025|2,lh=!1,jh=a}}function qh(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;jh=a}\nfunction rh(a){if(a!==jh)return!1;if(!lh)return qh(a),lh=!0,!1;var b=a.type;if(5!==a.tag||\"head\"!==b&&\"body\"!==b&&!nf(b,a.memoizedProps))for(b=kh;b;)mh(a,b),b=rf(b.nextSibling);qh(a);if(13===a.tag){a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(y(317));a:{a=a.nextSibling;for(b=0;a;){if(8===a.nodeType){var c=a.data;if(\"/$\"===c){if(0===b){kh=rf(a.nextSibling);break a}b--}else\"$\"!==c&&\"$!\"!==c&&\"$?\"!==c||b++}a=a.nextSibling}kh=null}}else kh=jh?rf(a.stateNode.nextSibling):null;return!0}\nfunction sh(){kh=jh=null;lh=!1}var th=[];function uh(){for(var a=0;af))throw Error(y(301));f+=1;T=S=null;b.updateQueue=null;vh.current=Fh;a=c(d,e)}while(zh)}vh.current=Gh;b=null!==S&&null!==S.next;xh=0;T=S=R=null;yh=!1;if(b)throw Error(y(300));return a}function Hh(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===T?R.memoizedState=T=a:T=T.next=a;return T}\nfunction Ih(){if(null===S){var a=R.alternate;a=null!==a?a.memoizedState:null}else a=S.next;var b=null===T?R.memoizedState:T.next;if(null!==b)T=b,S=a;else{if(null===a)throw Error(y(310));S=a;a={memoizedState:S.memoizedState,baseState:S.baseState,baseQueue:S.baseQueue,queue:S.queue,next:null};null===T?R.memoizedState=T=a:T=T.next=a}return T}function Jh(a,b){return\"function\"===typeof b?b(a):b}\nfunction Kh(a){var b=Ih(),c=b.queue;if(null===c)throw Error(y(311));c.lastRenderedReducer=a;var d=S,e=d.baseQueue,f=c.pending;if(null!==f){if(null!==e){var g=e.next;e.next=f.next;f.next=g}d.baseQueue=e=f;c.pending=null}if(null!==e){e=e.next;d=d.baseState;var h=g=f=null,k=e;do{var l=k.lane;if((xh&l)===l)null!==h&&(h=h.next={lane:0,action:k.action,eagerReducer:k.eagerReducer,eagerState:k.eagerState,next:null}),d=k.eagerReducer===a?k.eagerState:a(d,k.action);else{var n={lane:l,action:k.action,eagerReducer:k.eagerReducer,\neagerState:k.eagerState,next:null};null===h?(g=h=n,f=d):h=h.next=n;R.lanes|=l;Dg|=l}k=k.next}while(null!==k&&k!==e);null===h?f=d:h.next=g;He(d,b.memoizedState)||(ug=!0);b.memoizedState=d;b.baseState=f;b.baseQueue=h;c.lastRenderedState=d}return[b.memoizedState,c.dispatch]}\nfunction Lh(a){var b=Ih(),c=b.queue;if(null===c)throw Error(y(311));c.lastRenderedReducer=a;var d=c.dispatch,e=c.pending,f=b.memoizedState;if(null!==e){c.pending=null;var g=e=e.next;do f=a(f,g.action),g=g.next;while(g!==e);He(f,b.memoizedState)||(ug=!0);b.memoizedState=f;null===b.baseQueue&&(b.baseState=f);c.lastRenderedState=f}return[f,d]}\nfunction Mh(a,b,c){var d=b._getVersion;d=d(b._source);var e=b._workInProgressVersionPrimary;if(null!==e)a=e===d;else if(a=a.mutableReadLanes,a=(xh&a)===a)b._workInProgressVersionPrimary=d,th.push(b);if(a)return c(b._source);th.push(b);throw Error(y(350));}\nfunction Nh(a,b,c,d){var e=U;if(null===e)throw Error(y(349));var f=b._getVersion,g=f(b._source),h=vh.current,k=h.useState(function(){return Mh(e,b,c)}),l=k[1],n=k[0];k=T;var A=a.memoizedState,p=A.refs,C=p.getSnapshot,x=A.source;A=A.subscribe;var w=R;a.memoizedState={refs:p,source:b,subscribe:d};h.useEffect(function(){p.getSnapshot=c;p.setSnapshot=l;var a=f(b._source);if(!He(g,a)){a=c(b._source);He(n,a)||(l(a),a=Ig(w),e.mutableReadLanes|=a&e.pendingLanes);a=e.mutableReadLanes;e.entangledLanes|=a;for(var d=\ne.entanglements,h=a;0c?98:c,function(){a(!0)});gg(97\\x3c/script>\",a=a.removeChild(a.firstChild)):\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[wf]=b;a[xf]=d;Bi(a,b,!1,!1);b.stateNode=a;g=wb(c,d);switch(c){case \"dialog\":G(\"cancel\",a);G(\"close\",a);\ne=d;break;case \"iframe\":case \"object\":case \"embed\":G(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eJi&&(b.flags|=64,f=!0,Fi(d,!1),b.lanes=33554432)}else{if(!f)if(a=ih(g),null!==a){if(b.flags|=64,f=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Fi(d,!0),null===d.tail&&\"hidden\"===d.tailMode&&!g.alternate&&!lh)return b=b.lastEffect=d.lastEffect,null!==b&&(b.nextEffect=null),null}else 2*O()-d.renderingStartTime>Ji&&1073741824!==c&&(b.flags|=\n64,f=!0,Fi(d,!1),b.lanes=33554432);d.isBackwards?(g.sibling=b.child,b.child=g):(c=d.last,null!==c?c.sibling=g:b.child=g,d.last=g)}return null!==d.tail?(c=d.tail,d.rendering=c,d.tail=c.sibling,d.lastEffect=b.lastEffect,d.renderingStartTime=O(),c.sibling=null,b=P.current,I(P,f?b&1|2:b&1),c):null;case 23:case 24:return Ki(),null!==a&&null!==a.memoizedState!==(null!==b.memoizedState)&&\"unstable-defer-without-hiding\"!==d.mode&&(b.flags|=4),null}throw Error(y(156,b.tag));}\nfunction Li(a){switch(a.tag){case 1:Ff(a.type)&&Gf();var b=a.flags;return b&4096?(a.flags=b&-4097|64,a):null;case 3:fh();H(N);H(M);uh();b=a.flags;if(0!==(b&64))throw Error(y(285));a.flags=b&-4097|64;return a;case 5:return hh(a),null;case 13:return H(P),b=a.flags,b&4096?(a.flags=b&-4097|64,a):null;case 19:return H(P),null;case 4:return fh(),null;case 10:return rg(a),null;case 23:case 24:return Ki(),null;default:return null}}\nfunction Mi(a,b){try{var c=\"\",d=b;do c+=Qa(d),d=d.return;while(d);var e=c}catch(f){e=\"\\nError generating stack: \"+f.message+\"\\n\"+f.stack}return{value:a,source:b,stack:e}}function Ni(a,b){try{console.error(b.value)}catch(c){setTimeout(function(){throw c;})}}var Oi=\"function\"===typeof WeakMap?WeakMap:Map;function Pi(a,b,c){c=zg(-1,c);c.tag=3;c.payload={element:null};var d=b.value;c.callback=function(){Qi||(Qi=!0,Ri=d);Ni(a,b)};return c}\nfunction Si(a,b,c){c=zg(-1,c);c.tag=3;var d=a.type.getDerivedStateFromError;if(\"function\"===typeof d){var e=b.value;c.payload=function(){Ni(a,b);return d(e)}}var f=a.stateNode;null!==f&&\"function\"===typeof f.componentDidCatch&&(c.callback=function(){\"function\"!==typeof d&&(null===Ti?Ti=new Set([this]):Ti.add(this),Ni(a,b));var c=b.stack;this.componentDidCatch(b.value,{componentStack:null!==c?c:\"\"})});return c}var Ui=\"function\"===typeof WeakSet?WeakSet:Set;\nfunction Vi(a){var b=a.ref;if(null!==b)if(\"function\"===typeof b)try{b(null)}catch(c){Wi(a,c)}else b.current=null}function Xi(a,b){switch(b.tag){case 0:case 11:case 15:case 22:return;case 1:if(b.flags&256&&null!==a){var c=a.memoizedProps,d=a.memoizedState;a=b.stateNode;b=a.getSnapshotBeforeUpdate(b.elementType===b.type?c:lg(b.type,c),d);a.__reactInternalSnapshotBeforeUpdate=b}return;case 3:b.flags&256&&qf(b.stateNode.containerInfo);return;case 5:case 6:case 4:case 17:return}throw Error(y(163));}\nfunction Yi(a,b,c){switch(c.tag){case 0:case 11:case 15:case 22:b=c.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){a=b=b.next;do{if(3===(a.tag&3)){var d=a.create;a.destroy=d()}a=a.next}while(a!==b)}b=c.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){a=b=b.next;do{var e=a;d=e.next;e=e.tag;0!==(e&4)&&0!==(e&1)&&(Zi(c,a),$i(c,a));a=d}while(a!==b)}return;case 1:a=c.stateNode;c.flags&4&&(null===b?a.componentDidMount():(d=c.elementType===c.type?b.memoizedProps:lg(c.type,b.memoizedProps),a.componentDidUpdate(d,\nb.memoizedState,a.__reactInternalSnapshotBeforeUpdate)));b=c.updateQueue;null!==b&&Eg(c,b,a);return;case 3:b=c.updateQueue;if(null!==b){a=null;if(null!==c.child)switch(c.child.tag){case 5:a=c.child.stateNode;break;case 1:a=c.child.stateNode}Eg(c,b,a)}return;case 5:a=c.stateNode;null===b&&c.flags&4&&mf(c.type,c.memoizedProps)&&a.focus();return;case 6:return;case 4:return;case 12:return;case 13:null===c.memoizedState&&(c=c.alternate,null!==c&&(c=c.memoizedState,null!==c&&(c=c.dehydrated,null!==c&&Cc(c))));\nreturn;case 19:case 17:case 20:case 21:case 23:case 24:return}throw Error(y(163));}\nfunction aj(a,b){for(var c=a;;){if(5===c.tag){var d=c.stateNode;if(b)d=d.style,\"function\"===typeof d.setProperty?d.setProperty(\"display\",\"none\",\"important\"):d.display=\"none\";else{d=c.stateNode;var e=c.memoizedProps.style;e=void 0!==e&&null!==e&&e.hasOwnProperty(\"display\")?e.display:null;d.style.display=sb(\"display\",e)}}else if(6===c.tag)c.stateNode.nodeValue=b?\"\":c.memoizedProps;else if((23!==c.tag&&24!==c.tag||null===c.memoizedState||c===a)&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===\na)break;for(;null===c.sibling;){if(null===c.return||c.return===a)return;c=c.return}c.sibling.return=c.return;c=c.sibling}}\nfunction bj(a,b){if(Mf&&\"function\"===typeof Mf.onCommitFiberUnmount)try{Mf.onCommitFiberUnmount(Lf,b)}catch(f){}switch(b.tag){case 0:case 11:case 14:case 15:case 22:a=b.updateQueue;if(null!==a&&(a=a.lastEffect,null!==a)){var c=a=a.next;do{var d=c,e=d.destroy;d=d.tag;if(void 0!==e)if(0!==(d&4))Zi(b,c);else{d=b;try{e()}catch(f){Wi(d,f)}}c=c.next}while(c!==a)}break;case 1:Vi(b);a=b.stateNode;if(\"function\"===typeof a.componentWillUnmount)try{a.props=b.memoizedProps,a.state=b.memoizedState,a.componentWillUnmount()}catch(f){Wi(b,\nf)}break;case 5:Vi(b);break;case 4:cj(a,b)}}function dj(a){a.alternate=null;a.child=null;a.dependencies=null;a.firstEffect=null;a.lastEffect=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.return=null;a.updateQueue=null}function ej(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction fj(a){a:{for(var b=a.return;null!==b;){if(ej(b))break a;b=b.return}throw Error(y(160));}var c=b;b=c.stateNode;switch(c.tag){case 5:var d=!1;break;case 3:b=b.containerInfo;d=!0;break;case 4:b=b.containerInfo;d=!0;break;default:throw Error(y(161));}c.flags&16&&(pb(b,\"\"),c.flags&=-17);a:b:for(c=a;;){for(;null===c.sibling;){if(null===c.return||ej(c.return)){c=null;break a}c=c.return}c.sibling.return=c.return;for(c=c.sibling;5!==c.tag&&6!==c.tag&&18!==c.tag;){if(c.flags&2)continue b;if(null===\nc.child||4===c.tag)continue b;else c.child.return=c,c=c.child}if(!(c.flags&2)){c=c.stateNode;break a}}d?gj(a,c,b):hj(a,c,b)}\nfunction gj(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=jf));else if(4!==d&&(a=a.child,null!==a))for(gj(a,b,c),a=a.sibling;null!==a;)gj(a,b,c),a=a.sibling}\nfunction hj(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(hj(a,b,c),a=a.sibling;null!==a;)hj(a,b,c),a=a.sibling}\nfunction cj(a,b){for(var c=b,d=!1,e,f;;){if(!d){d=c.return;a:for(;;){if(null===d)throw Error(y(160));e=d.stateNode;switch(d.tag){case 5:f=!1;break a;case 3:e=e.containerInfo;f=!0;break a;case 4:e=e.containerInfo;f=!0;break a}d=d.return}d=!0}if(5===c.tag||6===c.tag){a:for(var g=a,h=c,k=h;;)if(bj(g,k),null!==k.child&&4!==k.tag)k.child.return=k,k=k.child;else{if(k===h)break a;for(;null===k.sibling;){if(null===k.return||k.return===h)break a;k=k.return}k.sibling.return=k.return;k=k.sibling}f?(g=e,h=c.stateNode,\n8===g.nodeType?g.parentNode.removeChild(h):g.removeChild(h)):e.removeChild(c.stateNode)}else if(4===c.tag){if(null!==c.child){e=c.stateNode.containerInfo;f=!0;c.child.return=c;c=c.child;continue}}else if(bj(a,c),null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return;4===c.tag&&(d=!1)}c.sibling.return=c.return;c=c.sibling}}\nfunction ij(a,b){switch(b.tag){case 0:case 11:case 14:case 15:case 22:var c=b.updateQueue;c=null!==c?c.lastEffect:null;if(null!==c){var d=c=c.next;do 3===(d.tag&3)&&(a=d.destroy,d.destroy=void 0,void 0!==a&&a()),d=d.next;while(d!==c)}return;case 1:return;case 5:c=b.stateNode;if(null!=c){d=b.memoizedProps;var e=null!==a?a.memoizedProps:d;a=b.type;var f=b.updateQueue;b.updateQueue=null;if(null!==f){c[xf]=d;\"input\"===a&&\"radio\"===d.type&&null!=d.name&&$a(c,d);wb(a,e);b=wb(a,d);for(e=0;ee&&(e=g);c&=~f}c=e;c=O()-c;c=(120>c?120:480>c?480:1080>c?1080:1920>c?1920:3E3>c?3E3:4320>\nc?4320:1960*nj(c/1960))-c;if(10 component higher in the tree to provide a loading indicator or placeholder to display.\")}5!==V&&(V=2);k=Mi(k,h);p=\ng;do{switch(p.tag){case 3:f=k;p.flags|=4096;b&=-b;p.lanes|=b;var J=Pi(p,f,b);Bg(p,J);break a;case 1:f=k;var K=p.type,Q=p.stateNode;if(0===(p.flags&64)&&(\"function\"===typeof K.getDerivedStateFromError||null!==Q&&\"function\"===typeof Q.componentDidCatch&&(null===Ti||!Ti.has(Q)))){p.flags|=4096;b&=-b;p.lanes|=b;var L=Si(p,f,b);Bg(p,L);break a}}p=p.return}while(null!==p)}Zj(c)}catch(va){b=va;Y===c&&null!==c&&(Y=c=c.return);continue}break}while(1)}\nfunction Pj(){var a=oj.current;oj.current=Gh;return null===a?Gh:a}function Tj(a,b){var c=X;X|=16;var d=Pj();U===a&&W===b||Qj(a,b);do try{ak();break}catch(e){Sj(a,e)}while(1);qg();X=c;oj.current=d;if(null!==Y)throw Error(y(261));U=null;W=0;return V}function ak(){for(;null!==Y;)bk(Y)}function Rj(){for(;null!==Y&&!Qf();)bk(Y)}function bk(a){var b=ck(a.alternate,a,qj);a.memoizedProps=a.pendingProps;null===b?Zj(a):Y=b;pj.current=null}\nfunction Zj(a){var b=a;do{var c=b.alternate;a=b.return;if(0===(b.flags&2048)){c=Gi(c,b,qj);if(null!==c){Y=c;return}c=b;if(24!==c.tag&&23!==c.tag||null===c.memoizedState||0!==(qj&1073741824)||0===(c.mode&4)){for(var d=0,e=c.child;null!==e;)d|=e.lanes|e.childLanes,e=e.sibling;c.childLanes=d}null!==a&&0===(a.flags&2048)&&(null===a.firstEffect&&(a.firstEffect=b.firstEffect),null!==b.lastEffect&&(null!==a.lastEffect&&(a.lastEffect.nextEffect=b.firstEffect),a.lastEffect=b.lastEffect),1g&&(h=g,g=J,J=h),h=Le(t,J),f=Le(t,g),h&&f&&(1!==v.rangeCount||v.anchorNode!==h.node||v.anchorOffset!==h.offset||v.focusNode!==f.node||v.focusOffset!==f.offset)&&(q=q.createRange(),q.setStart(h.node,h.offset),v.removeAllRanges(),J>g?(v.addRange(q),v.extend(f.node,f.offset)):(q.setEnd(f.node,f.offset),v.addRange(q))))));q=[];for(v=t;v=v.parentNode;)1===v.nodeType&&q.push({element:v,left:v.scrollLeft,top:v.scrollTop});\"function\"===typeof t.focus&&t.focus();for(t=\n0;tO()-jj?Qj(a,0):uj|=c);Mj(a,b)}function lj(a,b){var c=a.stateNode;null!==c&&c.delete(b);b=0;0===b&&(b=a.mode,0===(b&2)?b=1:0===(b&4)?b=99===eg()?1:2:(0===Gj&&(Gj=tj),b=Yc(62914560&~Gj),0===b&&(b=4194304)));c=Hg();a=Kj(a,b);null!==a&&($c(a,b,c),Mj(a,c))}var ck;\nck=function(a,b,c){var d=b.lanes;if(null!==a)if(a.memoizedProps!==b.pendingProps||N.current)ug=!0;else if(0!==(c&d))ug=0!==(a.flags&16384)?!0:!1;else{ug=!1;switch(b.tag){case 3:ri(b);sh();break;case 5:gh(b);break;case 1:Ff(b.type)&&Jf(b);break;case 4:eh(b,b.stateNode.containerInfo);break;case 10:d=b.memoizedProps.value;var e=b.type._context;I(mg,e._currentValue);e._currentValue=d;break;case 13:if(null!==b.memoizedState){if(0!==(c&b.child.childLanes))return ti(a,b,c);I(P,P.current&1);b=hi(a,b,c);return null!==\nb?b.sibling:null}I(P,P.current&1);break;case 19:d=0!==(c&b.childLanes);if(0!==(a.flags&64)){if(d)return Ai(a,b,c);b.flags|=64}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null,e.lastEffect=null);I(P,P.current);if(d)break;else return null;case 23:case 24:return b.lanes=0,mi(a,b,c)}return hi(a,b,c)}else ug=!1;b.lanes=0;switch(b.tag){case 2:d=b.type;null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);a=b.pendingProps;e=Ef(b,M.current);tg(b,c);e=Ch(null,b,d,a,e,c);b.flags|=1;if(\"object\"===\ntypeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof){b.tag=1;b.memoizedState=null;b.updateQueue=null;if(Ff(d)){var f=!0;Jf(b)}else f=!1;b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null;xg(b);var g=d.getDerivedStateFromProps;\"function\"===typeof g&&Gg(b,d,g,a);e.updater=Kg;b.stateNode=e;e._reactInternals=b;Og(b,d,a,c);b=qi(null,b,d,!0,f,c)}else b.tag=0,fi(null,b,e,c),b=b.child;return b;case 16:e=b.elementType;a:{null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);\na=b.pendingProps;f=e._init;e=f(e._payload);b.type=e;f=b.tag=hk(e);a=lg(e,a);switch(f){case 0:b=li(null,b,e,a,c);break a;case 1:b=pi(null,b,e,a,c);break a;case 11:b=gi(null,b,e,a,c);break a;case 14:b=ii(null,b,e,lg(e.type,a),d,c);break a}throw Error(y(306,e,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),li(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),pi(a,b,d,e,c);case 3:ri(b);d=b.updateQueue;if(null===a||null===d)throw Error(y(282));\nd=b.pendingProps;e=b.memoizedState;e=null!==e?e.element:null;yg(a,b);Cg(b,d,null,c);d=b.memoizedState.element;if(d===e)sh(),b=hi(a,b,c);else{e=b.stateNode;if(f=e.hydrate)kh=rf(b.stateNode.containerInfo.firstChild),jh=b,f=lh=!0;if(f){a=e.mutableSourceEagerHydrationData;if(null!=a)for(e=0;e=\nE};k=function(){};exports.unstable_forceFrameRate=function(a){0>a||125>>1,e=a[d];if(void 0!==e&&0I(n,c))void 0!==r&&0>I(r,n)?(a[d]=r,a[v]=c,d=v):(a[d]=n,a[m]=c,d=m);else if(void 0!==r&&0>I(r,c))a[d]=r,a[v]=c,d=v;else break a}}return b}return null}function I(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}var L=[],M=[],N=1,O=null,P=3,Q=!1,R=!1,S=!1;\nfunction T(a){for(var b=J(M);null!==b;){if(null===b.callback)K(M);else if(b.startTime<=a)K(M),b.sortIndex=b.expirationTime,H(L,b);else break;b=J(M)}}function U(a){S=!1;T(a);if(!R)if(null!==J(L))R=!0,f(V);else{var b=J(M);null!==b&&g(U,b.startTime-a)}}\nfunction V(a,b){R=!1;S&&(S=!1,h());Q=!0;var c=P;try{T(b);for(O=J(L);null!==O&&(!(O.expirationTime>b)||a&&!exports.unstable_shouldYield());){var d=O.callback;if(\"function\"===typeof d){O.callback=null;P=O.priorityLevel;var e=d(O.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?O.callback=e:O===J(L)&&K(L);T(b)}else K(L);O=J(L)}if(null!==O)var m=!0;else{var n=J(M);null!==n&&g(U,n.startTime-b);m=!1}return m}finally{O=null,P=c,Q=!1}}var W=k;exports.unstable_IdlePriority=5;\nexports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){R||Q||(R=!0,f(V))};exports.unstable_getCurrentPriorityLevel=function(){return P};exports.unstable_getFirstCallbackNode=function(){return J(L)};\nexports.unstable_next=function(a){switch(P){case 1:case 2:case 3:var b=3;break;default:b=P}var c=P;P=b;try{return a()}finally{P=c}};exports.unstable_pauseExecution=function(){};exports.unstable_requestPaint=W;exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=P;P=a;try{return b()}finally{P=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();\"object\"===typeof c&&null!==c?(c=c.delay,c=\"number\"===typeof c&&0d?(a.sortIndex=c,H(M,a),null===J(L)&&a===J(M)&&(S?h():S=!0,g(U,c-d))):(a.sortIndex=e,H(L,a),R||Q||(R=!0,f(V)));return a};\nexports.unstable_wrapCallback=function(a){var b=P;return function(){var c=P;P=b;try{return a.apply(this,arguments)}finally{P=c}}};\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = GeneratorFunctionPrototype;\n define(Gp, \"constructor\", GeneratorFunctionPrototype);\n define(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction);\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n });\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n define(Gp, iteratorSymbol, function() {\n return this;\n });\n\n define(Gp, \"toString\", function() {\n return \"[object Generator]\";\n });\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, in modern engines\n // we can explicitly access globalThis. In older engines we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","require(\"capability/es5\");\r\n\r\nvar capability = require(\"capability\");\r\n\r\nvar polyfill;\r\nif (capability(\"Error.captureStackTrace\"))\r\n polyfill = require(\"./v8\");\r\nelse if (capability(\"Error.prototype.stack\"))\r\n polyfill = require(\"./non-v8/index\");\r\nelse\r\n polyfill = require(\"./unsupported\");\r\n\r\nmodule.exports = polyfill();","var capability = require(\".\"),\r\n define = capability.define,\r\n test = capability.test;\r\n\r\ndefine(\"strict mode\", function () {\r\n return (this === undefined);\r\n});\r\n\r\ndefine(\"arguments.callee.caller\", function () {\r\n try {\r\n return (function () {\r\n return arguments.callee.caller;\r\n })() === arguments.callee;\r\n } catch (strictModeIsEnforced) {\r\n return false;\r\n }\r\n});\r\n\r\ndefine(\"es5\", function () {\r\n return test(\"Array.prototype.forEach\") &&\r\n test(\"Array.prototype.map\") &&\r\n test(\"Function.prototype.bind\") &&\r\n test(\"Object.create\") &&\r\n test(\"Object.defineProperties\") &&\r\n test(\"Object.defineProperty\") &&\r\n test(\"Object.prototype.hasOwnProperty\");\r\n});\r\n\r\ndefine(\"Array.prototype.forEach\", function () {\r\n return Array.prototype.forEach;\r\n});\r\n\r\ndefine(\"Array.prototype.map\", function () {\r\n return Array.prototype.map;\r\n});\r\n\r\ndefine(\"Function.prototype.bind\", function () {\r\n return Function.prototype.bind;\r\n});\r\n\r\ndefine(\"Object.create\", function () {\r\n return Object.create;\r\n});\r\n\r\ndefine(\"Object.defineProperties\", function () {\r\n return Object.defineProperties;\r\n});\r\n\r\ndefine(\"Object.defineProperty\", function () {\r\n return Object.defineProperty;\r\n});\r\n\r\ndefine(\"Object.prototype.hasOwnProperty\", function () {\r\n return Object.prototype.hasOwnProperty;\r\n});\r\n\r\ndefine(\"Error.captureStackTrace\", function () {\r\n return Error.captureStackTrace;\r\n});\r\n\r\ndefine(\"Error.prototype.stack\", function () {\r\n try {\r\n throw new Error();\r\n }\r\n catch (e) {\r\n return e.stack || e.stacktrace;\r\n }\r\n});","var CapabilityDetector = function () {\r\n this.tests = {};\r\n this.cache = {};\r\n};\r\nCapabilityDetector.prototype = {\r\n constructor: CapabilityDetector,\r\n define: function (name, test) {\r\n if (typeof (name) != \"string\" || !(test instanceof Function))\r\n throw new Error(\"Invalid capability definition.\");\r\n if (this.tests[name])\r\n throw new Error('Duplicated capability definition by \"' + name + '\".');\r\n this.tests[name] = test;\r\n },\r\n check: function (name) {\r\n if (!this.test(name))\r\n throw new Error('The current environment does not support \"' + name + '\", therefore we cannot continue.');\r\n },\r\n test: function (name) {\r\n if (this.cache[name] !== undefined)\r\n return this.cache[name];\r\n if (!this.tests[name])\r\n throw new Error('Unknown capability with name \"' + name + '\".');\r\n var test = this.tests[name];\r\n this.cache[name] = !!test();\r\n return this.cache[name];\r\n }\r\n};\r\n\r\nmodule.exports = CapabilityDetector;","var prepareStackTrace = require(\"./prepareStackTrace\");\r\n\r\nmodule.exports = function () {\r\n Error.getStackTrace = function (throwable) {\r\n return throwable.stack;\r\n };\r\n\r\n return {\r\n prepareStackTrace: prepareStackTrace\r\n };\r\n};","var FrameStringSource = require(\"./FrameStringSource\"),\r\n FrameStringParser = require(\"./FrameStringParser\"),\r\n cache = require(\"u3\").cache,\r\n prepareStackTrace = require(\"../prepareStackTrace\");\r\n\r\nmodule.exports = function () {\r\n\r\n Error.captureStackTrace = function captureStackTrace(throwable, terminator) {\r\n var warnings;\r\n var frameShifts = [\r\n captureStackTrace\r\n ];\r\n if (terminator) {\r\n // additional frames can come here if arguments.callee.caller is supported\r\n // otherwise it is hard to identify the terminator\r\n frameShifts.push(terminator);\r\n }\r\n var captured = FrameStringSource.getInstance().captureFrameStrings(frameShifts);\r\n Object.defineProperties(throwable, {\r\n stack: {\r\n configurable: true,\r\n get: cache(function () {\r\n var frames = FrameStringParser.getInstance().getFrames(captured.frameStrings, captured.functionValues);\r\n return (Error.prepareStackTrace || prepareStackTrace)(throwable, frames, warnings);\r\n })\r\n },\r\n cachedStack: {\r\n configurable: true,\r\n writable: true,\r\n enumerable: false,\r\n value: true\r\n }\r\n });\r\n };\r\n\r\n Error.getStackTrace = function (throwable) {\r\n if (throwable.cachedStack)\r\n return throwable.stack;\r\n var frameStrings = FrameStringSource.getInstance().getFrameStrings(throwable),\r\n frames = [],\r\n warnings;\r\n if (frameStrings)\r\n frames = FrameStringParser.getInstance().getFrames(frameStrings, []);\r\n else\r\n warnings = [\r\n \"The stack is not readable by unthrown errors in this environment.\"\r\n ];\r\n var stack = (Error.prepareStackTrace || prepareStackTrace)(throwable, frames, warnings);\r\n if (frameStrings)\r\n try {\r\n Object.defineProperties(throwable, {\r\n stack: {\r\n configurable: true,\r\n writable: true,\r\n enumerable: false,\r\n value: stack\r\n },\r\n cachedStack: {\r\n configurable: true,\r\n writable: true,\r\n enumerable: false,\r\n value: true\r\n }\r\n });\r\n } catch (nonConfigurableError) {\r\n }\r\n return stack;\r\n };\r\n\r\n return {\r\n prepareStackTrace: prepareStackTrace\r\n };\r\n};","var Class = require(\"o3\").Class,\r\n abstractMethod = require(\"o3\").abstractMethod,\r\n eachCombination = require(\"u3\").eachCombination,\r\n cache = require(\"u3\").cache,\r\n capability = require(\"capability\");\r\n\r\nvar AbstractFrameStringSource = Class(Object, {\r\n prototype: {\r\n captureFrameStrings: function (frameShifts) {\r\n var error = this.createError();\r\n frameShifts.unshift(this.captureFrameStrings);\r\n frameShifts.unshift(this.createError);\r\n var capturedFrameStrings = this.getFrameStrings(error);\r\n\r\n var frameStrings = capturedFrameStrings.slice(frameShifts.length),\r\n functionValues = [];\r\n\r\n if (capability(\"arguments.callee.caller\")) {\r\n var capturedFunctionValues = [\r\n this.createError,\r\n this.captureFrameStrings\r\n ];\r\n try {\r\n var aCaller = arguments.callee;\r\n while (aCaller = aCaller.caller)\r\n capturedFunctionValues.push(aCaller);\r\n }\r\n catch (useStrictError) {\r\n }\r\n functionValues = capturedFunctionValues.slice(frameShifts.length);\r\n }\r\n return {\r\n frameStrings: frameStrings,\r\n functionValues: functionValues\r\n };\r\n },\r\n getFrameStrings: function (error) {\r\n var message = error.message || \"\";\r\n var name = error.name || \"\";\r\n var stackString = this.getStackString(error);\r\n if (stackString === undefined)\r\n return;\r\n var stackStringChunks = stackString.split(\"\\n\");\r\n var fromPosition = 0;\r\n var toPosition = stackStringChunks.length;\r\n if (this.hasHeader)\r\n fromPosition += name.split(\"\\n\").length + message.split(\"\\n\").length - 1;\r\n if (this.hasFooter)\r\n toPosition -= 1;\r\n return stackStringChunks.slice(fromPosition, toPosition);\r\n },\r\n createError: abstractMethod,\r\n getStackString: abstractMethod,\r\n hasHeader: undefined,\r\n hasFooter: undefined\r\n }\r\n});\r\n\r\nvar FrameStringSourceCalibrator = Class(Object, {\r\n prototype: {\r\n calibrateClass: function (FrameStringSource) {\r\n return this.calibrateMethods(FrameStringSource) && this.calibrateEnvelope(FrameStringSource);\r\n },\r\n calibrateMethods: function (FrameStringSource) {\r\n try {\r\n eachCombination([[\r\n function (message) {\r\n return new Error(message);\r\n },\r\n function (message) {\r\n try {\r\n throw new Error(message);\r\n }\r\n catch (error) {\r\n return error;\r\n }\r\n }\r\n ], [\r\n function (error) {\r\n return error.stack;\r\n },\r\n function (error) {\r\n return error.stacktrace;\r\n }\r\n ]], function (createError, getStackString) {\r\n if (getStackString(createError()))\r\n throw {\r\n getStackString: getStackString,\r\n createError: createError\r\n };\r\n });\r\n } catch (workingImplementation) {\r\n Class.merge.call(FrameStringSource, {\r\n prototype: workingImplementation\r\n });\r\n return true;\r\n }\r\n return false;\r\n },\r\n calibrateEnvelope: function (FrameStringSource) {\r\n var getStackString = FrameStringSource.prototype.getStackString;\r\n var createError = FrameStringSource.prototype.createError;\r\n var calibratorStackString = getStackString(createError(\"marker\"));\r\n var calibratorFrameStrings = calibratorStackString.split(\"\\n\");\r\n Class.merge.call(FrameStringSource, {\r\n prototype: {\r\n hasHeader: /marker/.test(calibratorFrameStrings[0]),\r\n hasFooter: calibratorFrameStrings[calibratorFrameStrings.length - 1] === \"\"\r\n }\r\n });\r\n return true;\r\n }\r\n }\r\n});\r\n\r\n\r\nmodule.exports = {\r\n getClass: cache(function () {\r\n var FrameStringSource;\r\n if (FrameStringSource)\r\n return FrameStringSource;\r\n FrameStringSource = Class(AbstractFrameStringSource, {});\r\n var calibrator = new FrameStringSourceCalibrator();\r\n if (!calibrator.calibrateClass(FrameStringSource))\r\n throw new Error(\"Cannot read Error.prototype.stack in this environment.\");\r\n return FrameStringSource;\r\n }),\r\n getInstance: cache(function () {\r\n var FrameStringSource = this.getClass();\r\n var instance = new FrameStringSource();\r\n return instance;\r\n })\r\n};","module.exports = {\r\n Class: require(\"./Class\"),\r\n abstractMethod: require(\"./abstractMethod\")\r\n};","var Class = function () {\r\n var options = Object.create({\r\n Source: Object,\r\n config: {},\r\n buildArgs: []\r\n });\r\n\r\n function checkOption(option) {\r\n var key = \"config\";\r\n if (option instanceof Function)\r\n key = \"Source\";\r\n else if (option instanceof Array)\r\n key = \"buildArgs\";\r\n else if (option instanceof Object)\r\n key = \"config\";\r\n else\r\n throw new Error(\"Invalid configuration option.\");\r\n if (options.hasOwnProperty(key))\r\n throw new Error(\"Duplicated configuration option: \" + key + \".\");\r\n options[key] = option;\r\n }\r\n\r\n for (var index = 0, length = arguments.length; index < length; ++index)\r\n checkOption(arguments[index]);\r\n\r\n var Source = options.Source,\r\n config = options.config,\r\n buildArgs = options.buildArgs;\r\n\r\n return (Source.extend || Class.extend).call(Source, config, buildArgs);\r\n};\r\n\r\nClass.factory = function () {\r\n var Source = this;\r\n return function () {\r\n var instance = this;\r\n if (instance.build instanceof Function)\r\n instance.build.apply(instance, arguments);\r\n if (instance.init instanceof Function)\r\n instance.init.apply(instance, arguments);\r\n };\r\n};\r\n\r\nClass.extend = function (config, buildArgs) {\r\n var Source = this;\r\n if (!config)\r\n config = {};\r\n var Subject;\r\n if ((config.prototype instanceof Object) && config.prototype.constructor !== Object)\r\n Subject = config.prototype.constructor;\r\n else if (config.factory instanceof Function)\r\n Subject = config.factory.call(Source);\r\n Subject = (Source.clone || Class.clone).call(Source, Subject, buildArgs);\r\n (Subject.merge || Class.merge).call(Subject, config);\r\n return Subject;\r\n};\r\n\r\nClass.prototype.extend = function (config, buildArgs) {\r\n var subject = this;\r\n var instance = (subject.clone || Class.prototype.clone).apply(subject, buildArgs);\r\n (instance.merge || Class.prototype.merge).call(instance, config);\r\n return instance;\r\n};\r\n\r\nClass.clone = function (Subject, buildArgs) {\r\n var Source = this;\r\n if (!(Subject instanceof Function))\r\n Subject = (Source.factory || Class.factory).call(Source);\r\n Subject.prototype = (Source.prototype.clone || Class.prototype.clone).apply(Source.prototype, buildArgs || []);\r\n Subject.prototype.constructor = Subject;\r\n for (var staticProperty in Source)\r\n if (staticProperty !== \"prototype\")\r\n Subject[staticProperty] = Source[staticProperty];\r\n return Subject;\r\n};\r\n\r\nClass.prototype.clone = function () {\r\n var subject = this;\r\n var instance = Object.create(subject);\r\n if (instance.build instanceof Function)\r\n instance.build.apply(instance, arguments);\r\n return instance;\r\n};\r\n\r\nClass.merge = function (config) {\r\n var Subject = this;\r\n for (var staticProperty in config)\r\n if (staticProperty !== \"prototype\")\r\n Subject[staticProperty] = config[staticProperty];\r\n if (config.prototype instanceof Object)\r\n (Subject.prototype.merge || Class.prototype.merge).call(Subject.prototype, config.prototype);\r\n return Subject;\r\n};\r\n\r\nClass.prototype.merge = function (config) {\r\n var subject = this;\r\n for (var property in config)\r\n if (property !== \"constructor\")\r\n subject[property] = config[property];\r\n return subject;\r\n};\r\n\r\nClass.absorb = function (config) {\r\n var Subject = this;\r\n for (var staticProperty in config)\r\n if (staticProperty !== \"prototype\" && (Subject[staticProperty] === undefined || Subject[staticProperty] === Function.prototype[staticProperty]))\r\n Subject[staticProperty] = config[staticProperty];\r\n if (config.prototype instanceof Object)\r\n (Subject.prototype.absorb || Class.prototype.absorb).call(Subject.prototype, config.prototype);\r\n return Subject;\r\n};\r\n\r\nClass.prototype.absorb = function (config) {\r\n var subject = this;\r\n for (var property in config)\r\n if (property !== \"constructor\" && (subject[property] === undefined || subject[property] === Object.prototype[property]))\r\n subject[property] = config[property];\r\n return subject;\r\n};\r\n\r\nClass.getAncestor = function () {\r\n var Source = this;\r\n if (Source !== Source.prototype.constructor)\r\n return Source.prototype.constructor;\r\n};\r\n\r\nClass.newInstance = function () {\r\n var Subject = this;\r\n var instance = Object.create(this.prototype);\r\n Subject.apply(instance, arguments);\r\n return instance;\r\n};\r\n\r\nmodule.exports = Class;","module.exports = function () {\r\n throw new Error(\"Not implemented.\");\r\n};","module.exports = {\r\n cache: require(\"./cache\"),\r\n eachCombination: require(\"./eachCombination\")\r\n};","var cache = function (fn) {\r\n var called = false,\r\n store;\r\n\r\n if (!(fn instanceof Function)) {\r\n called = true;\r\n store = fn;\r\n fn = null;\r\n }\r\n\r\n return function () {\r\n if (!called) {\r\n called = true;\r\n store = fn.apply(this, arguments);\r\n fn = null;\r\n }\r\n return store;\r\n };\r\n};\r\n\r\nmodule.exports = cache;","module.exports = function eachCombination(alternativesByDimension, callback, combination) {\r\n if (!combination)\r\n combination = [];\r\n if (combination.length < alternativesByDimension.length) {\r\n var alternatives = alternativesByDimension[combination.length];\r\n for (var index in alternatives) {\r\n combination[combination.length] = alternatives[index];\r\n eachCombination(alternativesByDimension, callback, combination);\r\n --combination.length;\r\n }\r\n }\r\n else\r\n callback.apply(null, combination);\r\n};","var Class = require(\"o3\").Class,\r\n Frame = require(\"./Frame\"),\r\n cache = require(\"u3\").cache;\r\n\r\nvar FrameStringParser = Class(Object, {\r\n prototype: {\r\n stackParser: null,\r\n frameParser: null,\r\n locationParsers: null,\r\n constructor: function (options) {\r\n Class.prototype.merge.call(this, options);\r\n },\r\n getFrames: function (frameStrings, functionValues) {\r\n var frames = [];\r\n for (var index = 0, length = frameStrings.length; index < length; ++index)\r\n frames[index] = this.getFrame(frameStrings[index], functionValues[index]);\r\n return frames;\r\n },\r\n getFrame: function (frameString, functionValue) {\r\n var config = {\r\n frameString: frameString,\r\n functionValue: functionValue\r\n };\r\n return new Frame(config);\r\n }\r\n }\r\n});\r\n\r\nmodule.exports = {\r\n getClass: cache(function () {\r\n return FrameStringParser;\r\n }),\r\n getInstance: cache(function () {\r\n var FrameStringParser = this.getClass();\r\n var instance = new FrameStringParser();\r\n return instance;\r\n })\r\n};","var Class = require(\"o3\").Class,\r\n abstractMethod = require(\"o3\").abstractMethod;\r\n\r\nvar Frame = Class(Object, {\r\n prototype: {\r\n init: Class.prototype.merge,\r\n frameString: undefined,\r\n toString: function () {\r\n return this.frameString;\r\n },\r\n functionValue: undefined,\r\n getThis: abstractMethod,\r\n getTypeName: abstractMethod,\r\n getFunction: function () {\r\n return this.functionValue;\r\n },\r\n getFunctionName: abstractMethod,\r\n getMethodName: abstractMethod,\r\n getFileName: abstractMethod,\r\n getLineNumber: abstractMethod,\r\n getColumnNumber: abstractMethod,\r\n getEvalOrigin: abstractMethod,\r\n isTopLevel: abstractMethod,\r\n isEval: abstractMethod,\r\n isNative: abstractMethod,\r\n isConstructor: abstractMethod\r\n }\r\n});\r\n\r\nmodule.exports = Frame;","var cache = require(\"u3\").cache,\r\n prepareStackTrace = require(\"./prepareStackTrace\");\r\n\r\nmodule.exports = function () {\r\n\r\n Error.captureStackTrace = function (throwable, terminator) {\r\n Object.defineProperties(throwable, {\r\n stack: {\r\n configurable: true,\r\n get: cache(function () {\r\n return (Error.prepareStackTrace || prepareStackTrace)(throwable, []);\r\n })\r\n },\r\n cachedStack: {\r\n configurable: true,\r\n writable: true,\r\n enumerable: false,\r\n value: true\r\n }\r\n });\r\n };\r\n\r\n Error.getStackTrace = function (throwable) {\r\n if (throwable.cachedStack)\r\n return throwable.stack;\r\n var stack = (Error.prepareStackTrace || prepareStackTrace)(throwable, []);\r\n try {\r\n Object.defineProperties(throwable, {\r\n stack: {\r\n configurable: true,\r\n writable: true,\r\n enumerable: false,\r\n value: stack\r\n },\r\n cachedStack: {\r\n configurable: true,\r\n writable: true,\r\n enumerable: false,\r\n value: true\r\n }\r\n });\r\n } catch (nonConfigurableError) {\r\n }\r\n return stack;\r\n };\r\n\r\n return {\r\n prepareStackTrace: prepareStackTrace\r\n };\r\n};","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst MAX_UID = 1000000\nconst MILLISECONDS_MULTIPLIER = 1000\nconst TRANSITION_END = 'transitionend'\n\n// Shoutout AngusCroll (https://goo.gl/pxwQGp)\nconst toType = obj => {\n if (obj === null || obj === undefined) {\n return `${obj}`\n }\n\n return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase()\n}\n\n/**\n * --------------------------------------------------------------------------\n * Public Util Api\n * --------------------------------------------------------------------------\n */\n\nconst getUID = prefix => {\n do {\n prefix += Math.floor(Math.random() * MAX_UID)\n } while (document.getElementById(prefix))\n\n return prefix\n}\n\nconst getSelector = element => {\n let selector = element.getAttribute('data-bs-target')\n\n if (!selector || selector === '#') {\n let hrefAttr = element.getAttribute('href')\n\n // The only valid content that could double as a selector are IDs or classes,\n // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n // `document.querySelector` will rightfully complain it is invalid.\n // See https://github.com/twbs/bootstrap/issues/32273\n if (!hrefAttr || (!hrefAttr.includes('#') && !hrefAttr.startsWith('.'))) {\n return null\n }\n\n // Just in case some CMS puts out a full URL with the anchor appended\n if (hrefAttr.includes('#') && !hrefAttr.startsWith('#')) {\n hrefAttr = `#${hrefAttr.split('#')[1]}`\n }\n\n selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : null\n }\n\n return selector\n}\n\nconst getSelectorFromElement = element => {\n const selector = getSelector(element)\n\n if (selector) {\n return document.querySelector(selector) ? selector : null\n }\n\n return null\n}\n\nconst getElementFromSelector = element => {\n const selector = getSelector(element)\n\n return selector ? document.querySelector(selector) : null\n}\n\nconst getTransitionDurationFromElement = element => {\n if (!element) {\n return 0\n }\n\n // Get transition-duration of the element\n let { transitionDuration, transitionDelay } = window.getComputedStyle(element)\n\n const floatTransitionDuration = Number.parseFloat(transitionDuration)\n const floatTransitionDelay = Number.parseFloat(transitionDelay)\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0]\n transitionDelay = transitionDelay.split(',')[0]\n\n return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n}\n\nconst triggerTransitionEnd = element => {\n element.dispatchEvent(new Event(TRANSITION_END))\n}\n\nconst isElement = obj => {\n if (!obj || typeof obj !== 'object') {\n return false\n }\n\n if (typeof obj.jquery !== 'undefined') {\n obj = obj[0]\n }\n\n return typeof obj.nodeType !== 'undefined'\n}\n\nconst getElement = obj => {\n if (isElement(obj)) { // it's a jQuery object or a node element\n return obj.jquery ? obj[0] : obj\n }\n\n if (typeof obj === 'string' && obj.length > 0) {\n return document.querySelector(obj)\n }\n\n return null\n}\n\nconst typeCheckConfig = (componentName, config, configTypes) => {\n Object.keys(configTypes).forEach(property => {\n const expectedTypes = configTypes[property]\n const value = config[property]\n const valueType = value && isElement(value) ? 'element' : toType(value)\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new TypeError(\n `${componentName.toUpperCase()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`\n )\n }\n })\n}\n\nconst isVisible = element => {\n if (!isElement(element) || element.getClientRects().length === 0) {\n return false\n }\n\n return getComputedStyle(element).getPropertyValue('visibility') === 'visible'\n}\n\nconst isDisabled = element => {\n if (!element || element.nodeType !== Node.ELEMENT_NODE) {\n return true\n }\n\n if (element.classList.contains('disabled')) {\n return true\n }\n\n if (typeof element.disabled !== 'undefined') {\n return element.disabled\n }\n\n return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false'\n}\n\nconst findShadowRoot = element => {\n if (!document.documentElement.attachShadow) {\n return null\n }\n\n // Can find the shadow root otherwise it'll return the document\n if (typeof element.getRootNode === 'function') {\n const root = element.getRootNode()\n return root instanceof ShadowRoot ? root : null\n }\n\n if (element instanceof ShadowRoot) {\n return element\n }\n\n // when we don't find a shadow root\n if (!element.parentNode) {\n return null\n }\n\n return findShadowRoot(element.parentNode)\n}\n\nconst noop = () => {}\n\n/**\n * Trick to restart an element's animation\n *\n * @param {HTMLElement} element\n * @return void\n *\n * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n */\nconst reflow = element => {\n // eslint-disable-next-line no-unused-expressions\n element.offsetHeight\n}\n\nconst getjQuery = () => {\n const { jQuery } = window\n\n if (jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {\n return jQuery\n }\n\n return null\n}\n\nconst DOMContentLoadedCallbacks = []\n\nconst onDOMContentLoaded = callback => {\n if (document.readyState === 'loading') {\n // add listener on the first call when the document is in loading state\n if (!DOMContentLoadedCallbacks.length) {\n document.addEventListener('DOMContentLoaded', () => {\n DOMContentLoadedCallbacks.forEach(callback => callback())\n })\n }\n\n DOMContentLoadedCallbacks.push(callback)\n } else {\n callback()\n }\n}\n\nconst isRTL = () => document.documentElement.dir === 'rtl'\n\nconst defineJQueryPlugin = plugin => {\n onDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const name = plugin.NAME\n const JQUERY_NO_CONFLICT = $.fn[name]\n $.fn[name] = plugin.jQueryInterface\n $.fn[name].Constructor = plugin\n $.fn[name].noConflict = () => {\n $.fn[name] = JQUERY_NO_CONFLICT\n return plugin.jQueryInterface\n }\n }\n })\n}\n\nconst execute = callback => {\n if (typeof callback === 'function') {\n callback()\n }\n}\n\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n if (!waitForTransition) {\n execute(callback)\n return\n }\n\n const durationPadding = 5\n const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding\n\n let called = false\n\n const handler = ({ target }) => {\n if (target !== transitionElement) {\n return\n }\n\n called = true\n transitionElement.removeEventListener(TRANSITION_END, handler)\n execute(callback)\n }\n\n transitionElement.addEventListener(TRANSITION_END, handler)\n setTimeout(() => {\n if (!called) {\n triggerTransitionEnd(transitionElement)\n }\n }, emulatedDuration)\n}\n\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list The list of elements\n * @param activeElement The active element\n * @param shouldGetNext Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n let index = list.indexOf(activeElement)\n\n // if the element does not exist in the list return an element depending on the direction and if cycle is allowed\n if (index === -1) {\n return list[!shouldGetNext && isCycleAllowed ? list.length - 1 : 0]\n }\n\n const listLength = list.length\n\n index += shouldGetNext ? 1 : -1\n\n if (isCycleAllowed) {\n index = (index + listLength) % listLength\n }\n\n return list[Math.max(0, Math.min(index, listLength - 1))]\n}\n\nexport {\n getElement,\n getUID,\n getSelectorFromElement,\n getElementFromSelector,\n getTransitionDurationFromElement,\n triggerTransitionEnd,\n isElement,\n typeCheckConfig,\n isVisible,\n isDisabled,\n findShadowRoot,\n noop,\n getNextActiveElement,\n reflow,\n getjQuery,\n onDOMContentLoaded,\n isRTL,\n defineJQueryPlugin,\n execute,\n executeAfterTransition\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { getjQuery } from '../util/index'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/\nconst stripNameRegex = /\\..*/\nconst stripUidRegex = /::\\d+$/\nconst eventRegistry = {} // Events storage\nlet uidEvent = 1\nconst customEvents = {\n mouseenter: 'mouseover',\n mouseleave: 'mouseout'\n}\nconst customEventsRegex = /^(mouseenter|mouseleave)/i\nconst nativeEvents = new Set([\n 'click',\n 'dblclick',\n 'mouseup',\n 'mousedown',\n 'contextmenu',\n 'mousewheel',\n 'DOMMouseScroll',\n 'mouseover',\n 'mouseout',\n 'mousemove',\n 'selectstart',\n 'selectend',\n 'keydown',\n 'keypress',\n 'keyup',\n 'orientationchange',\n 'touchstart',\n 'touchmove',\n 'touchend',\n 'touchcancel',\n 'pointerdown',\n 'pointermove',\n 'pointerup',\n 'pointerleave',\n 'pointercancel',\n 'gesturestart',\n 'gesturechange',\n 'gestureend',\n 'focus',\n 'blur',\n 'change',\n 'reset',\n 'select',\n 'submit',\n 'focusin',\n 'focusout',\n 'load',\n 'unload',\n 'beforeunload',\n 'resize',\n 'move',\n 'DOMContentLoaded',\n 'readystatechange',\n 'error',\n 'abort',\n 'scroll'\n])\n\n/**\n * ------------------------------------------------------------------------\n * Private methods\n * ------------------------------------------------------------------------\n */\n\nfunction getUidEvent(element, uid) {\n return (uid && `${uid}::${uidEvent++}`) || element.uidEvent || uidEvent++\n}\n\nfunction getEvent(element) {\n const uid = getUidEvent(element)\n\n element.uidEvent = uid\n eventRegistry[uid] = eventRegistry[uid] || {}\n\n return eventRegistry[uid]\n}\n\nfunction bootstrapHandler(element, fn) {\n return function handler(event) {\n event.delegateTarget = element\n\n if (handler.oneOff) {\n EventHandler.off(element, event.type, fn)\n }\n\n return fn.apply(element, [event])\n }\n}\n\nfunction bootstrapDelegationHandler(element, selector, fn) {\n return function handler(event) {\n const domElements = element.querySelectorAll(selector)\n\n for (let { target } = event; target && target !== this; target = target.parentNode) {\n for (let i = domElements.length; i--;) {\n if (domElements[i] === target) {\n event.delegateTarget = target\n\n if (handler.oneOff) {\n EventHandler.off(element, event.type, selector, fn)\n }\n\n return fn.apply(target, [event])\n }\n }\n }\n\n // To please ESLint\n return null\n }\n}\n\nfunction findHandler(events, handler, delegationSelector = null) {\n const uidEventList = Object.keys(events)\n\n for (let i = 0, len = uidEventList.length; i < len; i++) {\n const event = events[uidEventList[i]]\n\n if (event.originalHandler === handler && event.delegationSelector === delegationSelector) {\n return event\n }\n }\n\n return null\n}\n\nfunction normalizeParams(originalTypeEvent, handler, delegationFn) {\n const delegation = typeof handler === 'string'\n const originalHandler = delegation ? delegationFn : handler\n\n let typeEvent = getTypeEvent(originalTypeEvent)\n const isNative = nativeEvents.has(typeEvent)\n\n if (!isNative) {\n typeEvent = originalTypeEvent\n }\n\n return [delegation, originalHandler, typeEvent]\n}\n\nfunction addHandler(element, originalTypeEvent, handler, delegationFn, oneOff) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return\n }\n\n if (!handler) {\n handler = delegationFn\n delegationFn = null\n }\n\n // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\n // this prevents the handler from being dispatched the same way as mouseover or mouseout does\n if (customEventsRegex.test(originalTypeEvent)) {\n const wrapFn = fn => {\n return function (event) {\n if (!event.relatedTarget || (event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget))) {\n return fn.call(this, event)\n }\n }\n }\n\n if (delegationFn) {\n delegationFn = wrapFn(delegationFn)\n } else {\n handler = wrapFn(handler)\n }\n }\n\n const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn)\n const events = getEvent(element)\n const handlers = events[typeEvent] || (events[typeEvent] = {})\n const previousFn = findHandler(handlers, originalHandler, delegation ? handler : null)\n\n if (previousFn) {\n previousFn.oneOff = previousFn.oneOff && oneOff\n\n return\n }\n\n const uid = getUidEvent(originalHandler, originalTypeEvent.replace(namespaceRegex, ''))\n const fn = delegation ?\n bootstrapDelegationHandler(element, handler, delegationFn) :\n bootstrapHandler(element, handler)\n\n fn.delegationSelector = delegation ? handler : null\n fn.originalHandler = originalHandler\n fn.oneOff = oneOff\n fn.uidEvent = uid\n handlers[uid] = fn\n\n element.addEventListener(typeEvent, fn, delegation)\n}\n\nfunction removeHandler(element, events, typeEvent, handler, delegationSelector) {\n const fn = findHandler(events[typeEvent], handler, delegationSelector)\n\n if (!fn) {\n return\n }\n\n element.removeEventListener(typeEvent, fn, Boolean(delegationSelector))\n delete events[typeEvent][fn.uidEvent]\n}\n\nfunction removeNamespacedHandlers(element, events, typeEvent, namespace) {\n const storeElementEvent = events[typeEvent] || {}\n\n Object.keys(storeElementEvent).forEach(handlerKey => {\n if (handlerKey.includes(namespace)) {\n const event = storeElementEvent[handlerKey]\n\n removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector)\n }\n })\n}\n\nfunction getTypeEvent(event) {\n // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n event = event.replace(stripNameRegex, '')\n return customEvents[event] || event\n}\n\nconst EventHandler = {\n on(element, event, handler, delegationFn) {\n addHandler(element, event, handler, delegationFn, false)\n },\n\n one(element, event, handler, delegationFn) {\n addHandler(element, event, handler, delegationFn, true)\n },\n\n off(element, originalTypeEvent, handler, delegationFn) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return\n }\n\n const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn)\n const inNamespace = typeEvent !== originalTypeEvent\n const events = getEvent(element)\n const isNamespace = originalTypeEvent.startsWith('.')\n\n if (typeof originalHandler !== 'undefined') {\n // Simplest case: handler is passed, remove that listener ONLY.\n if (!events || !events[typeEvent]) {\n return\n }\n\n removeHandler(element, events, typeEvent, originalHandler, delegation ? handler : null)\n return\n }\n\n if (isNamespace) {\n Object.keys(events).forEach(elementEvent => {\n removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1))\n })\n }\n\n const storeElementEvent = events[typeEvent] || {}\n Object.keys(storeElementEvent).forEach(keyHandlers => {\n const handlerKey = keyHandlers.replace(stripUidRegex, '')\n\n if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n const event = storeElementEvent[keyHandlers]\n\n removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector)\n }\n })\n },\n\n trigger(element, event, args) {\n if (typeof event !== 'string' || !element) {\n return null\n }\n\n const $ = getjQuery()\n const typeEvent = getTypeEvent(event)\n const inNamespace = event !== typeEvent\n const isNative = nativeEvents.has(typeEvent)\n\n let jQueryEvent\n let bubbles = true\n let nativeDispatch = true\n let defaultPrevented = false\n let evt = null\n\n if (inNamespace && $) {\n jQueryEvent = $.Event(event, args)\n\n $(element).trigger(jQueryEvent)\n bubbles = !jQueryEvent.isPropagationStopped()\n nativeDispatch = !jQueryEvent.isImmediatePropagationStopped()\n defaultPrevented = jQueryEvent.isDefaultPrevented()\n }\n\n if (isNative) {\n evt = document.createEvent('HTMLEvents')\n evt.initEvent(typeEvent, bubbles, true)\n } else {\n evt = new CustomEvent(event, {\n bubbles,\n cancelable: true\n })\n }\n\n // merge custom information in our event\n if (typeof args !== 'undefined') {\n Object.keys(args).forEach(key => {\n Object.defineProperty(evt, key, {\n get() {\n return args[key]\n }\n })\n })\n }\n\n if (defaultPrevented) {\n evt.preventDefault()\n }\n\n if (nativeDispatch) {\n element.dispatchEvent(evt)\n }\n\n if (evt.defaultPrevented && typeof jQueryEvent !== 'undefined') {\n jQueryEvent.preventDefault()\n }\n\n return evt\n }\n}\n\nexport default EventHandler\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst elementMap = new Map()\n\nexport default {\n set(element, key, instance) {\n if (!elementMap.has(element)) {\n elementMap.set(element, new Map())\n }\n\n const instanceMap = elementMap.get(element)\n\n // make it clear we only want one instance per element\n // can be removed later when multiple key/instances are fine to be used\n if (!instanceMap.has(key) && instanceMap.size !== 0) {\n // eslint-disable-next-line no-console\n console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`)\n return\n }\n\n instanceMap.set(key, instance)\n },\n\n get(element, key) {\n if (elementMap.has(element)) {\n return elementMap.get(element).get(key) || null\n }\n\n return null\n },\n\n remove(element, key) {\n if (!elementMap.has(element)) {\n return\n }\n\n const instanceMap = elementMap.get(element)\n\n instanceMap.delete(key)\n\n // free up element references if there are no instances left for an element\n if (instanceMap.size === 0) {\n elementMap.delete(element)\n }\n }\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Data from './dom/data'\nimport {\n executeAfterTransition,\n getElement\n} from './util/index'\nimport EventHandler from './dom/event-handler'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst VERSION = '5.1.3'\n\nclass BaseComponent {\n constructor(element) {\n element = getElement(element)\n\n if (!element) {\n return\n }\n\n this._element = element\n Data.set(this._element, this.constructor.DATA_KEY, this)\n }\n\n dispose() {\n Data.remove(this._element, this.constructor.DATA_KEY)\n EventHandler.off(this._element, this.constructor.EVENT_KEY)\n\n Object.getOwnPropertyNames(this).forEach(propertyName => {\n this[propertyName] = null\n })\n }\n\n _queueCallback(callback, element, isAnimated = true) {\n executeAfterTransition(callback, element, isAnimated)\n }\n\n /** Static */\n\n static getInstance(element) {\n return Data.get(getElement(element), this.DATA_KEY)\n }\n\n static getOrCreateInstance(element, config = {}) {\n return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null)\n }\n\n static get VERSION() {\n return VERSION\n }\n\n static get NAME() {\n throw new Error('You have to implement the static method \"NAME\", for each component!')\n }\n\n static get DATA_KEY() {\n return `bs.${this.NAME}`\n }\n\n static get EVENT_KEY() {\n return `.${this.DATA_KEY}`\n }\n}\n\nexport default BaseComponent\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): util/component-functions.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler'\nimport { getElementFromSelector, isDisabled } from './index'\n\nconst enableDismissTrigger = (component, method = 'hide') => {\n const clickEvent = `click.dismiss${component.EVENT_KEY}`\n const name = component.NAME\n\n EventHandler.on(document, clickEvent, `[data-bs-dismiss=\"${name}\"]`, function (event) {\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault()\n }\n\n if (isDisabled(this)) {\n return\n }\n\n const target = getElementFromSelector(this) || this.closest(`.${name}`)\n const instance = component.getOrCreateInstance(target)\n\n // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method\n instance[method]()\n })\n}\n\nexport {\n enableDismissTrigger\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin } from './util/index'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\nimport { enableDismissTrigger } from './util/component-functions'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'alert'\nconst DATA_KEY = 'bs.alert'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_CLOSE = `close${EVENT_KEY}`\nconst EVENT_CLOSED = `closed${EVENT_KEY}`\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Alert extends BaseComponent {\n // Getters\n\n static get NAME() {\n return NAME\n }\n\n // Public\n\n close() {\n const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE)\n\n if (closeEvent.defaultPrevented) {\n return\n }\n\n this._element.classList.remove(CLASS_NAME_SHOW)\n\n const isAnimated = this._element.classList.contains(CLASS_NAME_FADE)\n this._queueCallback(() => this._destroyElement(), this._element, isAnimated)\n }\n\n // Private\n _destroyElement() {\n this._element.remove()\n EventHandler.trigger(this._element, EVENT_CLOSED)\n this.dispose()\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Alert.getOrCreateInstance(this)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](this)\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nenableDismissTrigger(Alert, 'close')\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Alert to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Alert)\n\nexport default Alert\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin } from './util/index'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'button'\nconst DATA_KEY = 'bs.button'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"button\"]'\n\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Button extends BaseComponent {\n // Getters\n\n static get NAME() {\n return NAME\n }\n\n // Public\n\n toggle() {\n // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method\n this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE))\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Button.getOrCreateInstance(this)\n\n if (config === 'toggle') {\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, event => {\n event.preventDefault()\n\n const button = event.target.closest(SELECTOR_DATA_TOGGLE)\n const data = Button.getOrCreateInstance(button)\n\n data.toggle()\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Button to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Button)\n\nexport default Button\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nfunction normalizeData(val) {\n if (val === 'true') {\n return true\n }\n\n if (val === 'false') {\n return false\n }\n\n if (val === Number(val).toString()) {\n return Number(val)\n }\n\n if (val === '' || val === 'null') {\n return null\n }\n\n return val\n}\n\nfunction normalizeDataKey(key) {\n return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`)\n}\n\nconst Manipulator = {\n setDataAttribute(element, key, value) {\n element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value)\n },\n\n removeDataAttribute(element, key) {\n element.removeAttribute(`data-bs-${normalizeDataKey(key)}`)\n },\n\n getDataAttributes(element) {\n if (!element) {\n return {}\n }\n\n const attributes = {}\n\n Object.keys(element.dataset)\n .filter(key => key.startsWith('bs'))\n .forEach(key => {\n let pureKey = key.replace(/^bs/, '')\n pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length)\n attributes[pureKey] = normalizeData(element.dataset[key])\n })\n\n return attributes\n },\n\n getDataAttribute(element, key) {\n return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`))\n },\n\n offset(element) {\n const rect = element.getBoundingClientRect()\n\n return {\n top: rect.top + window.pageYOffset,\n left: rect.left + window.pageXOffset\n }\n },\n\n position(element) {\n return {\n top: element.offsetTop,\n left: element.offsetLeft\n }\n }\n}\n\nexport default Manipulator\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nimport { isDisabled, isVisible } from '../util/index'\n\nconst NODE_TEXT = 3\n\nconst SelectorEngine = {\n find(selector, element = document.documentElement) {\n return [].concat(...Element.prototype.querySelectorAll.call(element, selector))\n },\n\n findOne(selector, element = document.documentElement) {\n return Element.prototype.querySelector.call(element, selector)\n },\n\n children(element, selector) {\n return [].concat(...element.children)\n .filter(child => child.matches(selector))\n },\n\n parents(element, selector) {\n const parents = []\n\n let ancestor = element.parentNode\n\n while (ancestor && ancestor.nodeType === Node.ELEMENT_NODE && ancestor.nodeType !== NODE_TEXT) {\n if (ancestor.matches(selector)) {\n parents.push(ancestor)\n }\n\n ancestor = ancestor.parentNode\n }\n\n return parents\n },\n\n prev(element, selector) {\n let previous = element.previousElementSibling\n\n while (previous) {\n if (previous.matches(selector)) {\n return [previous]\n }\n\n previous = previous.previousElementSibling\n }\n\n return []\n },\n\n next(element, selector) {\n let next = element.nextElementSibling\n\n while (next) {\n if (next.matches(selector)) {\n return [next]\n }\n\n next = next.nextElementSibling\n }\n\n return []\n },\n\n focusableChildren(element) {\n const focusables = [\n 'a',\n 'button',\n 'input',\n 'textarea',\n 'select',\n 'details',\n '[tabindex]',\n '[contenteditable=\"true\"]'\n ].map(selector => `${selector}:not([tabindex^=\"-\"])`).join(', ')\n\n return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el))\n }\n}\n\nexport default SelectorEngine\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n getElementFromSelector,\n isRTL,\n isVisible,\n getNextActiveElement,\n reflow,\n triggerTransitionEnd,\n typeCheckConfig\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'carousel'\nconst DATA_KEY = 'bs.carousel'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst TOUCHEVENT_COMPAT_WAIT = 500 // Time for mouse compat events to fire after touch\nconst SWIPE_THRESHOLD = 40\n\nconst Default = {\n interval: 5000,\n keyboard: true,\n slide: false,\n pause: 'hover',\n wrap: true,\n touch: true\n}\n\nconst DefaultType = {\n interval: '(number|boolean)',\n keyboard: 'boolean',\n slide: '(boolean|string)',\n pause: '(string|boolean)',\n wrap: 'boolean',\n touch: 'boolean'\n}\n\nconst ORDER_NEXT = 'next'\nconst ORDER_PREV = 'prev'\nconst DIRECTION_LEFT = 'left'\nconst DIRECTION_RIGHT = 'right'\n\nconst KEY_TO_DIRECTION = {\n [ARROW_LEFT_KEY]: DIRECTION_RIGHT,\n [ARROW_RIGHT_KEY]: DIRECTION_LEFT\n}\n\nconst EVENT_SLIDE = `slide${EVENT_KEY}`\nconst EVENT_SLID = `slid${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_MOUSEENTER = `mouseenter${EVENT_KEY}`\nconst EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY}`\nconst EVENT_TOUCHSTART = `touchstart${EVENT_KEY}`\nconst EVENT_TOUCHMOVE = `touchmove${EVENT_KEY}`\nconst EVENT_TOUCHEND = `touchend${EVENT_KEY}`\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY}`\nconst EVENT_POINTERUP = `pointerup${EVENT_KEY}`\nconst EVENT_DRAG_START = `dragstart${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_CAROUSEL = 'carousel'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_SLIDE = 'slide'\nconst CLASS_NAME_END = 'carousel-item-end'\nconst CLASS_NAME_START = 'carousel-item-start'\nconst CLASS_NAME_NEXT = 'carousel-item-next'\nconst CLASS_NAME_PREV = 'carousel-item-prev'\nconst CLASS_NAME_POINTER_EVENT = 'pointer-event'\n\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_ACTIVE_ITEM = '.active.carousel-item'\nconst SELECTOR_ITEM = '.carousel-item'\nconst SELECTOR_ITEM_IMG = '.carousel-item img'\nconst SELECTOR_NEXT_PREV = '.carousel-item-next, .carousel-item-prev'\nconst SELECTOR_INDICATORS = '.carousel-indicators'\nconst SELECTOR_INDICATOR = '[data-bs-target]'\nconst SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]'\nconst SELECTOR_DATA_RIDE = '[data-bs-ride=\"carousel\"]'\n\nconst POINTER_TYPE_TOUCH = 'touch'\nconst POINTER_TYPE_PEN = 'pen'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\nclass Carousel extends BaseComponent {\n constructor(element, config) {\n super(element)\n\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\n this._config = this._getConfig(config)\n this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element)\n this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0\n this._pointerEvent = Boolean(window.PointerEvent)\n\n this._addEventListeners()\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n\n next() {\n this._slide(ORDER_NEXT)\n }\n\n nextWhenVisible() {\n // Don't call next when the page isn't visible\n // or the carousel or its parent isn't visible\n if (!document.hidden && isVisible(this._element)) {\n this.next()\n }\n }\n\n prev() {\n this._slide(ORDER_PREV)\n }\n\n pause(event) {\n if (!event) {\n this._isPaused = true\n }\n\n if (SelectorEngine.findOne(SELECTOR_NEXT_PREV, this._element)) {\n triggerTransitionEnd(this._element)\n this.cycle(true)\n }\n\n clearInterval(this._interval)\n this._interval = null\n }\n\n 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 && this._config.interval && !this._isPaused) {\n this._updateInterval()\n\n this._interval = setInterval(\n (document.visibilityState ? this.nextWhenVisible : this.next).bind(this),\n this._config.interval\n )\n }\n }\n\n to(index) {\n this._activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n const activeIndex = this._getItemIndex(this._activeElement)\n\n if (index > this._items.length - 1 || index < 0) {\n return\n }\n\n if (this._isSliding) {\n EventHandler.one(this._element, EVENT_SLID, () => this.to(index))\n return\n }\n\n if (activeIndex === index) {\n this.pause()\n this.cycle()\n return\n }\n\n const order = index > activeIndex ?\n ORDER_NEXT :\n ORDER_PREV\n\n this._slide(order, this._items[index])\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...Manipulator.getDataAttributes(this._element),\n ...(typeof config === 'object' ? config : {})\n }\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _handleSwipe() {\n const absDeltax = Math.abs(this.touchDeltaX)\n\n if (absDeltax <= SWIPE_THRESHOLD) {\n return\n }\n\n const direction = absDeltax / this.touchDeltaX\n\n this.touchDeltaX = 0\n\n if (!direction) {\n return\n }\n\n this._slide(direction > 0 ? DIRECTION_RIGHT : DIRECTION_LEFT)\n }\n\n _addEventListeners() {\n if (this._config.keyboard) {\n EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\n }\n\n if (this._config.pause === 'hover') {\n EventHandler.on(this._element, EVENT_MOUSEENTER, event => this.pause(event))\n EventHandler.on(this._element, EVENT_MOUSELEAVE, event => this.cycle(event))\n }\n\n if (this._config.touch && this._touchSupported) {\n this._addTouchEventListeners()\n }\n }\n\n _addTouchEventListeners() {\n const hasPointerPenTouch = event => {\n return this._pointerEvent &&\n (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)\n }\n\n const start = event => {\n if (hasPointerPenTouch(event)) {\n this.touchStartX = event.clientX\n } else if (!this._pointerEvent) {\n this.touchStartX = event.touches[0].clientX\n }\n }\n\n const move = event => {\n // ensure swiping with one touch and not pinching\n this.touchDeltaX = event.touches && event.touches.length > 1 ?\n 0 :\n event.touches[0].clientX - this.touchStartX\n }\n\n const end = event => {\n if (hasPointerPenTouch(event)) {\n this.touchDeltaX = event.clientX - this.touchStartX\n }\n\n this._handleSwipe()\n if (this._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\n this.pause()\n if (this.touchTimeout) {\n clearTimeout(this.touchTimeout)\n }\n\n this.touchTimeout = setTimeout(event => this.cycle(event), TOUCHEVENT_COMPAT_WAIT + this._config.interval)\n }\n }\n\n SelectorEngine.find(SELECTOR_ITEM_IMG, this._element).forEach(itemImg => {\n EventHandler.on(itemImg, EVENT_DRAG_START, event => event.preventDefault())\n })\n\n if (this._pointerEvent) {\n EventHandler.on(this._element, EVENT_POINTERDOWN, event => start(event))\n EventHandler.on(this._element, EVENT_POINTERUP, event => end(event))\n\n this._element.classList.add(CLASS_NAME_POINTER_EVENT)\n } else {\n EventHandler.on(this._element, EVENT_TOUCHSTART, event => start(event))\n EventHandler.on(this._element, EVENT_TOUCHMOVE, event => move(event))\n EventHandler.on(this._element, EVENT_TOUCHEND, event => end(event))\n }\n }\n\n _keydown(event) {\n if (/input|textarea/i.test(event.target.tagName)) {\n return\n }\n\n const direction = KEY_TO_DIRECTION[event.key]\n if (direction) {\n event.preventDefault()\n this._slide(direction)\n }\n }\n\n _getItemIndex(element) {\n this._items = element && element.parentNode ?\n SelectorEngine.find(SELECTOR_ITEM, element.parentNode) :\n []\n\n return this._items.indexOf(element)\n }\n\n _getItemByOrder(order, activeElement) {\n const isNext = order === ORDER_NEXT\n return getNextActiveElement(this._items, activeElement, isNext, this._config.wrap)\n }\n\n _triggerSlideEvent(relatedTarget, eventDirectionName) {\n const targetIndex = this._getItemIndex(relatedTarget)\n const fromIndex = this._getItemIndex(SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element))\n\n return EventHandler.trigger(this._element, EVENT_SLIDE, {\n relatedTarget,\n direction: eventDirectionName,\n from: fromIndex,\n to: targetIndex\n })\n }\n\n _setActiveIndicatorElement(element) {\n if (this._indicatorsElement) {\n const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement)\n\n activeIndicator.classList.remove(CLASS_NAME_ACTIVE)\n activeIndicator.removeAttribute('aria-current')\n\n const indicators = SelectorEngine.find(SELECTOR_INDICATOR, this._indicatorsElement)\n\n for (let i = 0; i < indicators.length; i++) {\n if (Number.parseInt(indicators[i].getAttribute('data-bs-slide-to'), 10) === this._getItemIndex(element)) {\n indicators[i].classList.add(CLASS_NAME_ACTIVE)\n indicators[i].setAttribute('aria-current', 'true')\n break\n }\n }\n }\n }\n\n _updateInterval() {\n const element = this._activeElement || SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n\n if (!element) {\n return\n }\n\n const elementInterval = Number.parseInt(element.getAttribute('data-bs-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 _slide(directionOrOrder, element) {\n const order = this._directionToOrder(directionOrOrder)\n const activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n const activeElementIndex = this._getItemIndex(activeElement)\n const nextElement = element || this._getItemByOrder(order, activeElement)\n\n const nextElementIndex = this._getItemIndex(nextElement)\n const isCycling = Boolean(this._interval)\n\n const isNext = order === ORDER_NEXT\n const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END\n const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV\n const eventDirectionName = this._orderToDirection(order)\n\n if (nextElement && nextElement.classList.contains(CLASS_NAME_ACTIVE)) {\n this._isSliding = false\n return\n }\n\n if (this._isSliding) {\n return\n }\n\n const slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName)\n if (slideEvent.defaultPrevented) {\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 this._activeElement = nextElement\n\n const triggerSlidEvent = () => {\n EventHandler.trigger(this._element, EVENT_SLID, {\n relatedTarget: nextElement,\n direction: eventDirectionName,\n from: activeElementIndex,\n to: nextElementIndex\n })\n }\n\n if (this._element.classList.contains(CLASS_NAME_SLIDE)) {\n nextElement.classList.add(orderClassName)\n\n reflow(nextElement)\n\n activeElement.classList.add(directionalClassName)\n nextElement.classList.add(directionalClassName)\n\n const completeCallBack = () => {\n nextElement.classList.remove(directionalClassName, orderClassName)\n nextElement.classList.add(CLASS_NAME_ACTIVE)\n\n activeElement.classList.remove(CLASS_NAME_ACTIVE, orderClassName, directionalClassName)\n\n this._isSliding = false\n\n setTimeout(triggerSlidEvent, 0)\n }\n\n this._queueCallback(completeCallBack, activeElement, true)\n } else {\n activeElement.classList.remove(CLASS_NAME_ACTIVE)\n nextElement.classList.add(CLASS_NAME_ACTIVE)\n\n this._isSliding = false\n triggerSlidEvent()\n }\n\n if (isCycling) {\n this.cycle()\n }\n }\n\n _directionToOrder(direction) {\n if (![DIRECTION_RIGHT, DIRECTION_LEFT].includes(direction)) {\n return direction\n }\n\n if (isRTL()) {\n return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT\n }\n\n return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV\n }\n\n _orderToDirection(order) {\n if (![ORDER_NEXT, ORDER_PREV].includes(order)) {\n return order\n }\n\n if (isRTL()) {\n return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT\n }\n\n return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT\n }\n\n // Static\n\n static carouselInterface(element, config) {\n const data = Carousel.getOrCreateInstance(element, config)\n\n let { _config } = data\n if (typeof config === 'object') {\n _config = {\n ..._config,\n ...config\n }\n }\n\n const action = typeof config === 'string' ? config : _config.slide\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 static jQueryInterface(config) {\n return this.each(function () {\n Carousel.carouselInterface(this, config)\n })\n }\n\n static dataApiClickHandler(event) {\n const target = getElementFromSelector(this)\n\n if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n return\n }\n\n const config = {\n ...Manipulator.getDataAttributes(target),\n ...Manipulator.getDataAttributes(this)\n }\n const slideIndex = this.getAttribute('data-bs-slide-to')\n\n if (slideIndex) {\n config.interval = false\n }\n\n Carousel.carouselInterface(target, config)\n\n if (slideIndex) {\n Carousel.getInstance(target).to(slideIndex)\n }\n\n event.preventDefault()\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, Carousel.dataApiClickHandler)\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE)\n\n for (let i = 0, len = carousels.length; i < len; i++) {\n Carousel.carouselInterface(carousels[i], Carousel.getInstance(carousels[i]))\n }\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Carousel to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Carousel)\n\nexport default Carousel\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n getElement,\n getSelectorFromElement,\n getElementFromSelector,\n reflow,\n typeCheckConfig\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'collapse'\nconst DATA_KEY = 'bs.collapse'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst Default = {\n toggle: true,\n parent: null\n}\n\nconst DefaultType = {\n toggle: 'boolean',\n parent: '(null|element)'\n}\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_COLLAPSE = 'collapse'\nconst CLASS_NAME_COLLAPSING = 'collapsing'\nconst CLASS_NAME_COLLAPSED = 'collapsed'\nconst CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`\nconst CLASS_NAME_HORIZONTAL = 'collapse-horizontal'\n\nconst WIDTH = 'width'\nconst HEIGHT = 'height'\n\nconst SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"collapse\"]'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Collapse extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._isTransitioning = false\n this._config = this._getConfig(config)\n this._triggerArray = []\n\n const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n for (let i = 0, len = toggleList.length; i < len; i++) {\n const elem = toggleList[i]\n const selector = getSelectorFromElement(elem)\n const filterElement = SelectorEngine.find(selector)\n .filter(foundElem => foundElem === this._element)\n\n if (selector !== null && filterElement.length) {\n this._selector = selector\n this._triggerArray.push(elem)\n }\n }\n\n this._initializeChildren()\n\n if (!this._config.parent) {\n this._addAriaAndCollapsedClass(this._triggerArray, this._isShown())\n }\n\n if (this._config.toggle) {\n this.toggle()\n }\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n\n toggle() {\n if (this._isShown()) {\n this.hide()\n } else {\n this.show()\n }\n }\n\n show() {\n if (this._isTransitioning || this._isShown()) {\n return\n }\n\n let actives = []\n let activesData\n\n if (this._config.parent) {\n const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent)\n actives = SelectorEngine.find(SELECTOR_ACTIVES, this._config.parent).filter(elem => !children.includes(elem)) // remove children if greater depth\n }\n\n const container = SelectorEngine.findOne(this._selector)\n if (actives.length) {\n const tempActiveData = actives.find(elem => container !== elem)\n activesData = tempActiveData ? Collapse.getInstance(tempActiveData) : null\n\n if (activesData && activesData._isTransitioning) {\n return\n }\n }\n\n const startEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n if (startEvent.defaultPrevented) {\n return\n }\n\n actives.forEach(elemActive => {\n if (container !== elemActive) {\n Collapse.getOrCreateInstance(elemActive, { toggle: false }).hide()\n }\n\n if (!activesData) {\n Data.set(elemActive, DATA_KEY, null)\n }\n })\n\n const dimension = this._getDimension()\n\n this._element.classList.remove(CLASS_NAME_COLLAPSE)\n this._element.classList.add(CLASS_NAME_COLLAPSING)\n\n this._element.style[dimension] = 0\n\n this._addAriaAndCollapsedClass(this._triggerArray, true)\n this._isTransitioning = true\n\n const complete = () => {\n this._isTransitioning = false\n\n this._element.classList.remove(CLASS_NAME_COLLAPSING)\n this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n this._element.style[dimension] = ''\n\n EventHandler.trigger(this._element, EVENT_SHOWN)\n }\n\n const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1)\n const scrollSize = `scroll${capitalizedDimension}`\n\n this._queueCallback(complete, this._element, true)\n this._element.style[dimension] = `${this._element[scrollSize]}px`\n }\n\n hide() {\n if (this._isTransitioning || !this._isShown()) {\n return\n }\n\n const startEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n if (startEvent.defaultPrevented) {\n return\n }\n\n const dimension = this._getDimension()\n\n this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`\n\n reflow(this._element)\n\n this._element.classList.add(CLASS_NAME_COLLAPSING)\n this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n const triggerArrayLength = this._triggerArray.length\n for (let i = 0; i < triggerArrayLength; i++) {\n const trigger = this._triggerArray[i]\n const elem = getElementFromSelector(trigger)\n\n if (elem && !this._isShown(elem)) {\n this._addAriaAndCollapsedClass([trigger], false)\n }\n }\n\n this._isTransitioning = true\n\n const complete = () => {\n this._isTransitioning = false\n this._element.classList.remove(CLASS_NAME_COLLAPSING)\n this._element.classList.add(CLASS_NAME_COLLAPSE)\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n }\n\n this._element.style[dimension] = ''\n\n this._queueCallback(complete, this._element, true)\n }\n\n _isShown(element = this._element) {\n return element.classList.contains(CLASS_NAME_SHOW)\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...Manipulator.getDataAttributes(this._element),\n ...config\n }\n config.toggle = Boolean(config.toggle) // Coerce string values\n config.parent = getElement(config.parent)\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _getDimension() {\n return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT\n }\n\n _initializeChildren() {\n if (!this._config.parent) {\n return\n }\n\n const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent)\n SelectorEngine.find(SELECTOR_DATA_TOGGLE, this._config.parent).filter(elem => !children.includes(elem))\n .forEach(element => {\n const selected = getElementFromSelector(element)\n\n if (selected) {\n this._addAriaAndCollapsedClass([element], this._isShown(selected))\n }\n })\n }\n\n _addAriaAndCollapsedClass(triggerArray, isOpen) {\n if (!triggerArray.length) {\n return\n }\n\n triggerArray.forEach(elem => {\n if (isOpen) {\n elem.classList.remove(CLASS_NAME_COLLAPSED)\n } else {\n elem.classList.add(CLASS_NAME_COLLAPSED)\n }\n\n elem.setAttribute('aria-expanded', isOpen)\n })\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n const _config = {}\n if (typeof config === 'string' && /show|hide/.test(config)) {\n _config.toggle = false\n }\n\n const data = Collapse.getOrCreateInstance(this, _config)\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\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n // preventDefault only for elements (which change the URL) not inside the collapsible element\n if (event.target.tagName === 'A' || (event.delegateTarget && event.delegateTarget.tagName === 'A')) {\n event.preventDefault()\n }\n\n const selector = getSelectorFromElement(this)\n const selectorElements = SelectorEngine.find(selector)\n\n selectorElements.forEach(element => {\n Collapse.getOrCreateInstance(element, { toggle: false }).toggle()\n })\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Collapse to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Collapse)\n\nexport default Collapse\n","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","export default function getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}","export default function getWindow(node) {\n if (node == null) {\n return window;\n }\n\n if (node.toString() !== '[object Window]') {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n\n return node;\n}","import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n var OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n var OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n // IE 11 has no ShadowRoot\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n\n var OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n var state = _ref.state;\n Object.keys(state.elements).forEach(function (name) {\n var style = state.styles[name] || {};\n var attributes = state.attributes[name] || {};\n var element = state.elements[name]; // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe[cannot-write]\n\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (name) {\n var value = attributes[name];\n\n if (value === false) {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, value === true ? '' : value);\n }\n });\n });\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n state.styles = initialStyles;\n\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n }\n\n return function () {\n Object.keys(state.elements).forEach(function (name) {\n var element = state.elements[name];\n var attributes = state.attributes[name] || {};\n var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n var style = styleProperties.reduce(function (style, property) {\n style[property] = '';\n return style;\n }, {}); // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n }\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (attribute) {\n element.removeAttribute(attribute);\n });\n });\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'applyStyles',\n enabled: true,\n phase: 'write',\n fn: applyStyles,\n effect: effect,\n requires: ['computeStyles']\n};","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n return placement.split('-')[0];\n}","// import { isHTMLElement } from './instanceOf';\nexport default function getBoundingClientRect(element, // eslint-disable-next-line unused-imports/no-unused-vars\nincludeScale) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n\n var rect = element.getBoundingClientRect();\n var scaleX = 1;\n var scaleY = 1; // FIXME:\n // `offsetWidth` returns an integer while `getBoundingClientRect`\n // returns a float. This results in `scaleX` or `scaleY` being\n // non-1 when it should be for elements that aren't a full pixel in\n // width or height.\n // if (isHTMLElement(element) && includeScale) {\n // const offsetHeight = element.offsetHeight;\n // const offsetWidth = element.offsetWidth;\n // // Do not attempt to divide by 0, otherwise we get `Infinity` as scale\n // // Fallback to 1 in case both values are `0`\n // if (offsetWidth > 0) {\n // scaleX = rect.width / offsetWidth || 1;\n // }\n // if (offsetHeight > 0) {\n // scaleY = rect.height / offsetHeight || 1;\n // }\n // }\n\n return {\n width: rect.width / scaleX,\n height: rect.height / scaleY,\n top: rect.top / scaleY,\n right: rect.right / scaleX,\n bottom: rect.bottom / scaleY,\n left: rect.left / scaleX,\n x: rect.left / scaleX,\n y: rect.top / scaleY\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n if (Math.abs(clientRect.width - width) <= 1) {\n width = clientRect.width;\n }\n\n if (Math.abs(clientRect.height - height) <= 1) {\n height = clientRect.height;\n }\n\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: width,\n height: height\n };\n}","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n if (parent.contains(child)) {\n return true;\n } // then fallback to custom implementation with Shadow DOM support\n else if (rootNode && isShadowRoot(rootNode)) {\n var next = child;\n\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n next = next.parentNode || next.host;\n } while (next);\n } // Give up, the result is false\n\n\n return false;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n element.document) || window.document).documentElement;\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n if (getNodeName(element) === 'html') {\n return element;\n }\n\n return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n // $FlowFixMe[incompatible-return]\n // $FlowFixMe[prop-missing]\n element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n element.parentNode || ( // DOM Element detected\n isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n getDocumentElement(element) // fallback\n\n );\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n getComputedStyle(element).position === 'fixed') {\n return null;\n }\n\n return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n var isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') !== -1;\n var isIE = navigator.userAgent.indexOf('Trident') !== -1;\n\n if (isIE && isHTMLElement(element)) {\n // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n var elementCss = getComputedStyle(element);\n\n if (elementCss.position === 'fixed') {\n return null;\n }\n }\n\n var currentNode = getParentNode(element);\n\n while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n var window = getWindow(element);\n var offsetParent = getTrueOffsetParent(element);\n\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}","export default function getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;","import { max as mathMax, min as mathMin } from \"./math.js\";\nexport default function within(min, value, max) {\n return mathMax(min, mathMin(value, max));\n}","export default function getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n return Object.assign({}, getFreshSideObject(), paddingObject);\n}","export default function expandToHashMap(value, keys) {\n return keys.reduce(function (hashMap, key) {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport within from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n placement: state.placement\n })) : padding;\n return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n var _state$modifiersData$;\n\n var state = _ref.state,\n name = _ref.name,\n options = _ref.options;\n var arrowElement = state.elements.arrow;\n var popperOffsets = state.modifiersData.popperOffsets;\n var basePlacement = getBasePlacement(state.placement);\n var axis = getMainAxisFromPlacement(basePlacement);\n var isVertical = [left, right].indexOf(basePlacement) >= 0;\n var len = isVertical ? 'height' : 'width';\n\n if (!arrowElement || !popperOffsets) {\n return;\n }\n\n var paddingObject = toPaddingObject(options.padding, state);\n var arrowRect = getLayoutRect(arrowElement);\n var minProp = axis === 'y' ? top : left;\n var maxProp = axis === 'y' ? bottom : right;\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n var arrowOffsetParent = getOffsetParent(arrowElement);\n var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n // outside of the popper bounds\n\n var min = paddingObject[minProp];\n var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state,\n options = _ref2.options;\n var _options$element = options.element,\n arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n if (arrowElement == null) {\n return;\n } // CSS selector\n\n\n if (typeof arrowElement === 'string') {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n\n if (!arrowElement) {\n return;\n }\n }\n\n if (process.env.NODE_ENV !== \"production\") {\n if (!isHTMLElement(arrowElement)) {\n console.error(['Popper: \"arrow\" element must be an HTMLElement (not an SVGElement).', 'To use an SVG arrow, wrap it in an HTMLElement that will be used as', 'the arrow.'].join(' '));\n }\n }\n\n if (!contains(state.elements.popper, arrowElement)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(['Popper: \"arrow\" modifier\\'s `element` must be a child of the popper', 'element.'].join(' '));\n }\n\n return;\n }\n\n state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'arrow',\n enabled: true,\n phase: 'main',\n fn: arrow,\n effect: effect,\n requires: ['popperOffsets'],\n requiresIfExists: ['preventOverflow']\n};","export default function getVariation(placement) {\n return placement.split('-')[1];\n}","import { top, left, right, bottom, end } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref) {\n var x = _ref.x,\n y = _ref.y;\n var win = window;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: round(round(x * dpr) / dpr) || 0,\n y: round(round(y * dpr) / dpr) || 0\n };\n}\n\nexport function mapToStyles(_ref2) {\n var _Object$assign2;\n\n var popper = _ref2.popper,\n popperRect = _ref2.popperRect,\n placement = _ref2.placement,\n variation = _ref2.variation,\n offsets = _ref2.offsets,\n position = _ref2.position,\n gpuAcceleration = _ref2.gpuAcceleration,\n adaptive = _ref2.adaptive,\n roundOffsets = _ref2.roundOffsets;\n\n var _ref3 = roundOffsets === true ? roundOffsetsByDPR(offsets) : typeof roundOffsets === 'function' ? roundOffsets(offsets) : offsets,\n _ref3$x = _ref3.x,\n x = _ref3$x === void 0 ? 0 : _ref3$x,\n _ref3$y = _ref3.y,\n y = _ref3$y === void 0 ? 0 : _ref3$y;\n\n var hasX = offsets.hasOwnProperty('x');\n var hasY = offsets.hasOwnProperty('y');\n var sideX = left;\n var sideY = top;\n var win = window;\n\n if (adaptive) {\n var offsetParent = getOffsetParent(popper);\n var heightProp = 'clientHeight';\n var widthProp = 'clientWidth';\n\n if (offsetParent === getWindow(popper)) {\n offsetParent = getDocumentElement(popper);\n\n if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') {\n heightProp = 'scrollHeight';\n widthProp = 'scrollWidth';\n }\n } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n offsetParent = offsetParent;\n\n if (placement === top || (placement === left || placement === right) && variation === end) {\n sideY = bottom; // $FlowFixMe[prop-missing]\n\n y -= offsetParent[heightProp] - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n\n if (placement === left || (placement === top || placement === bottom) && variation === end) {\n sideX = right; // $FlowFixMe[prop-missing]\n\n x -= offsetParent[widthProp] - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n\n var commonStyles = Object.assign({\n position: position\n }, adaptive && unsetSides);\n\n if (gpuAcceleration) {\n var _Object$assign;\n\n return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n }\n\n return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref4) {\n var state = _ref4.state,\n options = _ref4.options;\n var _options$gpuAccelerat = options.gpuAcceleration,\n gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n _options$adaptive = options.adaptive,\n adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n _options$roundOffsets = options.roundOffsets,\n roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n\n if (process.env.NODE_ENV !== \"production\") {\n var transitionProperty = getComputedStyle(state.elements.popper).transitionProperty || '';\n\n if (adaptive && ['transform', 'top', 'right', 'bottom', 'left'].some(function (property) {\n return transitionProperty.indexOf(property) >= 0;\n })) {\n console.warn(['Popper: Detected CSS transitions on at least one of the following', 'CSS properties: \"transform\", \"top\", \"right\", \"bottom\", \"left\".', '\\n\\n', 'Disable the \"computeStyles\" modifier\\'s `adaptive` option to allow', 'for smooth transitions, or remove these properties from the CSS', 'transition declaration on the popper element if only transitioning', 'opacity or background-color for example.', '\\n\\n', 'We recommend using the popper element as a wrapper around an inner', 'element that can have any CSS property transitioned for animations.'].join(' '));\n }\n }\n\n var commonStyles = {\n placement: getBasePlacement(state.placement),\n variation: getVariation(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration\n };\n\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive,\n roundOffsets: roundOffsets\n })));\n }\n\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false,\n roundOffsets: roundOffsets\n })));\n }\n\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-placement': state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {}\n};","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n passive: true\n};\n\nfunction effect(_ref) {\n var state = _ref.state,\n instance = _ref.instance,\n options = _ref.options;\n var _options$scroll = options.scroll,\n scroll = _options$scroll === void 0 ? true : _options$scroll,\n _options$resize = options.resize,\n resize = _options$resize === void 0 ? true : _options$resize;\n var window = getWindow(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n\n return function () {\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: function fn() {},\n effect: effect,\n data: {}\n};","var hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}","var hash = {\n start: 'end',\n end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function (matched) {\n return hash[matched];\n });\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n var win = getWindow(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n // If has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on \n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nexport default function getViewportRect(element) {\n var win = getWindow(element);\n var html = getDocumentElement(element);\n var visualViewport = win.visualViewport;\n var width = html.clientWidth;\n var height = html.clientHeight;\n var x = 0;\n var y = 0; // NB: This isn't supported on iOS <= 12. If the keyboard is open, the popper\n // can be obscured underneath it.\n // Also, `html.clientHeight` adds the bottom bar height in Safari iOS, even\n // if it isn't open, so if this isn't available, the popper will be detected\n // to overflow the bottom of the screen too early.\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height; // Uses Layout Viewport (like Chrome; Safari does not currently)\n // In Chrome, it returns a value very close to 0 (+/-) but contains rounding\n // errors due to floating point numbers, so we need to check precision.\n // Safari returns a number <= 0, usually < -1 when pinch-zoomed\n // Feature detection fails in mobile emulation mode in Chrome.\n // Math.abs(win.innerWidth / visualViewport.scale - visualViewport.width) <\n // 0.001\n // Fallback here: \"Not Safari\" userAgent\n\n if (!/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width: width,\n height: height,\n x: x + getWindowScrollBarX(element),\n y: y\n };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `` and `` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n var _element$ownerDocumen;\n\n var html = getDocumentElement(element);\n var winScroll = getWindowScroll(element);\n var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n var y = -winScroll.scrollTop;\n\n if (getComputedStyle(body || html).direction === 'rtl') {\n x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n\n return {\n width: width,\n height: height,\n x: x,\n y: y\n };\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n var _getComputedStyle = getComputedStyle(element),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n\n return getScrollParent(getParentNode(node));\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n var _element$ownerDocumen;\n\n if (list === void 0) {\n list = [];\n }\n\n var scrollParent = getScrollParent(element);\n var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n var win = getWindow(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents(getParentNode(target)));\n}","export default function rectToClientRect(rect) {\n return Object.assign({}, rect, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element) {\n var rect = getBoundingClientRect(element);\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent) {\n return clippingParent === viewport ? rectToClientRect(getViewportRect(element)) : isHTMLElement(clippingParent) ? getInnerBoundingClientRect(clippingParent) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n var clippingParents = listScrollParents(getParentNode(element));\n var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n if (!isElement(clipperElement)) {\n return [];\n } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n return clippingParents.filter(function (clippingParent) {\n return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary) {\n var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents[0];\n var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n var reference = _ref.reference,\n element = _ref.element,\n placement = _ref.placement;\n var basePlacement = placement ? getBasePlacement(placement) : null;\n var variation = placement ? getVariation(placement) : null;\n var commonX = reference.x + reference.width / 2 - element.width / 2;\n var commonY = reference.y + reference.height / 2 - element.height / 2;\n var offsets;\n\n switch (basePlacement) {\n case top:\n offsets = {\n x: commonX,\n y: reference.y - element.height\n };\n break;\n\n case bottom:\n offsets = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case right:\n offsets = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case left:\n offsets = {\n x: reference.x - element.width,\n y: commonY\n };\n break;\n\n default:\n offsets = {\n x: reference.x,\n y: reference.y\n };\n }\n\n var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n if (mainAxis != null) {\n var len = mainAxis === 'y' ? 'height' : 'width';\n\n switch (variation) {\n case start:\n offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n break;\n\n case end:\n offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n break;\n\n default:\n }\n }\n\n return offsets;\n}","import getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$placement = _options.placement,\n placement = _options$placement === void 0 ? state.placement : _options$placement,\n _options$boundary = _options.boundary,\n boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n _options$rootBoundary = _options.rootBoundary,\n rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n _options$elementConte = _options.elementContext,\n elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n _options$altBoundary = _options.altBoundary,\n altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n _options$padding = _options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n var altContext = elementContext === popper ? reference : popper;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary);\n var referenceClientRect = getBoundingClientRect(state.elements.reference);\n var popperOffsets = computeOffsets({\n reference: referenceClientRect,\n element: popperRect,\n strategy: 'absolute',\n placement: placement\n });\n var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n if (elementContext === popper && offsetData) {\n var offset = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function (key) {\n var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n\n return overflowOffsets;\n}","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n placement = _options.placement,\n boundary = _options.boundary,\n rootBoundary = _options.rootBoundary,\n padding = _options.padding,\n flipVariations = _options.flipVariations,\n _options$allowedAutoP = _options.allowedAutoPlacements,\n allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n var variation = getVariation(placement);\n var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n return getVariation(placement) === variation;\n }) : basePlacements;\n var allowedPlacements = placements.filter(function (placement) {\n return allowedAutoPlacements.indexOf(placement) >= 0;\n });\n\n if (allowedPlacements.length === 0) {\n allowedPlacements = placements;\n\n if (process.env.NODE_ENV !== \"production\") {\n console.error(['Popper: The `allowedAutoPlacements` option did not allow any', 'placements. Ensure the `placement` option matches the variation', 'of the allowed placements.', 'For example, \"auto\" cannot be used to allow \"bottom-start\".', 'Use \"auto-start\" instead.'].join(' '));\n }\n } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n var overflows = allowedPlacements.reduce(function (acc, placement) {\n acc[placement] = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding\n })[getBasePlacement(placement)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function (a, b) {\n return overflows[a] - overflows[b];\n });\n}","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n if (getBasePlacement(placement) === auto) {\n return [];\n }\n\n var oppositePlacement = getOppositePlacement(placement);\n return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n\n if (state.modifiersData[name]._skip) {\n return;\n }\n\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n specifiedFallbackPlacements = options.fallbackPlacements,\n padding = options.padding,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n _options$flipVariatio = options.flipVariations,\n flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n allowedAutoPlacements = options.allowedAutoPlacements;\n var preferredPlacement = state.options.placement;\n var basePlacement = getBasePlacement(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n flipVariations: flipVariations,\n allowedAutoPlacements: allowedAutoPlacements\n }) : placement);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements[0];\n\n for (var i = 0; i < placements.length; i++) {\n var placement = placements[i];\n\n var _basePlacement = getBasePlacement(placement);\n\n var isStartVariation = getVariation(placement) === start;\n var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n var len = isVertical ? 'width' : 'height';\n var overflow = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n altBoundary: altBoundary,\n padding: padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = getOppositePlacement(mainVariationSide);\n }\n\n var altVariationSide = getOppositePlacement(mainVariationSide);\n var checks = [];\n\n if (checkMainAxis) {\n checks.push(overflow[_basePlacement] <= 0);\n }\n\n if (checkAltAxis) {\n checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n }\n\n if (checks.every(function (check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n\n checksMap.set(placement, checks);\n }\n\n if (makeFallbackChecks) {\n // `2` may be desired in some cases – research later\n var numberOfChecks = flipVariations ? 3 : 1;\n\n var _loop = function _loop(_i) {\n var fittingPlacement = placements.find(function (placement) {\n var checks = checksMap.get(placement);\n\n if (checks) {\n return checks.slice(0, _i).every(function (check) {\n return check;\n });\n }\n });\n\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return \"break\";\n }\n };\n\n for (var _i = numberOfChecks; _i > 0; _i--) {\n var _ret = _loop(_i);\n\n if (_ret === \"break\") break;\n }\n }\n\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'flip',\n enabled: true,\n phase: 'main',\n fn: flip,\n requiresIfExists: ['offset'],\n data: {\n _skip: false\n }\n};","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n if (preventedOffsets === void 0) {\n preventedOffsets = {\n x: 0,\n y: 0\n };\n }\n\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x\n };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n return [top, right, bottom, left].some(function (side) {\n return overflow[side] >= 0;\n });\n}\n\nfunction hide(_ref) {\n var state = _ref.state,\n name = _ref.name;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var preventedOffsets = state.modifiersData.preventOverflow;\n var referenceOverflow = detectOverflow(state, {\n elementContext: 'reference'\n });\n var popperAltOverflow = detectOverflow(state, {\n altBoundary: true\n });\n var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n state.modifiersData[name] = {\n referenceClippingOffsets: referenceClippingOffsets,\n popperEscapeOffsets: popperEscapeOffsets,\n isReferenceHidden: isReferenceHidden,\n hasPopperEscaped: hasPopperEscaped\n };\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-reference-hidden': isReferenceHidden,\n 'data-popper-escaped': hasPopperEscaped\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'hide',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['preventOverflow'],\n fn: hide\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\";\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n var basePlacement = getBasePlacement(placement);\n var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n placement: placement\n })) : offset,\n skidding = _ref[0],\n distance = _ref[1];\n\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [left, right].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n}\n\nfunction offset(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$offset = options.offset,\n offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n var data = placements.reduce(function (acc, placement) {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement],\n x = _data$state$placement.x,\n y = _data$state$placement.y;\n\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset\n};","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n var state = _ref.state,\n name = _ref.name;\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {}\n};","export default function getAltAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport within from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { max as mathMax, min as mathMin } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n padding = options.padding,\n _options$tether = options.tether,\n tether = _options$tether === void 0 ? true : _options$tether,\n _options$tetherOffset = options.tetherOffset,\n tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n var overflow = detectOverflow(state, {\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n altBoundary: altBoundary\n });\n var basePlacement = getBasePlacement(state.placement);\n var variation = getVariation(state.placement);\n var isBasePlacement = !variation;\n var mainAxis = getMainAxisFromPlacement(basePlacement);\n var altAxis = getAltAxis(mainAxis);\n var popperOffsets = state.modifiersData.popperOffsets;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n placement: state.placement\n })) : tetherOffset;\n var data = {\n x: 0,\n y: 0\n };\n\n if (!popperOffsets) {\n return;\n }\n\n if (checkMainAxis || checkAltAxis) {\n var mainSide = mainAxis === 'y' ? top : left;\n var altSide = mainAxis === 'y' ? bottom : right;\n var len = mainAxis === 'y' ? 'height' : 'width';\n var offset = popperOffsets[mainAxis];\n var min = popperOffsets[mainAxis] + overflow[mainSide];\n var max = popperOffsets[mainAxis] - overflow[altSide];\n var additive = tether ? -popperRect[len] / 2 : 0;\n var minLen = variation === start ? referenceRect[len] : popperRect[len];\n var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n // outside the reference bounds\n\n var arrowElement = state.elements.arrow;\n var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n width: 0,\n height: 0\n };\n var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n var arrowPaddingMin = arrowPaddingObject[mainSide];\n var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n // to include its full size in the calculation. If the reference is small\n // and near the edge of a boundary, the popper can overflow even if the\n // reference is not overflowing as well (e.g. virtual elements with no\n // width or height)\n\n var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - tetherOffsetValue : minLen - arrowLen - arrowPaddingMin - tetherOffsetValue;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + tetherOffsetValue : maxLen + arrowLen + arrowPaddingMax + tetherOffsetValue;\n var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n var offsetModifierValue = state.modifiersData.offset ? state.modifiersData.offset[state.placement][mainAxis] : 0;\n var tetherMin = popperOffsets[mainAxis] + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = popperOffsets[mainAxis] + maxOffset - offsetModifierValue;\n\n if (checkMainAxis) {\n var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n popperOffsets[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset;\n }\n\n if (checkAltAxis) {\n var _mainSide = mainAxis === 'x' ? top : left;\n\n var _altSide = mainAxis === 'x' ? bottom : right;\n\n var _offset = popperOffsets[altAxis];\n\n var _min = _offset + overflow[_mainSide];\n\n var _max = _offset - overflow[_altSide];\n\n var _preventedOffset = within(tether ? mathMin(_min, tetherMin) : _min, _offset, tether ? mathMax(_max, tetherMax) : _max);\n\n popperOffsets[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'preventOverflow',\n enabled: true,\n phase: 'main',\n fn: preventOverflow,\n requiresIfExists: ['offset']\n};","export default function getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n if (node === getWindow(node) || !isHTMLElement(node)) {\n return getWindowScroll(node);\n } else {\n return getHTMLElementScroll(node);\n }\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n\nfunction isElementScaled(element) {\n var rect = element.getBoundingClientRect();\n var scaleX = rect.width / element.offsetWidth || 1;\n var scaleY = rect.height / element.offsetHeight || 1;\n return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n\n var isOffsetParentAnElement = isHTMLElement(offsetParent);\n var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n var documentElement = getDocumentElement(offsetParent);\n var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n isScrollParent(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent, true);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function (modifier) {\n map.set(modifier.name, modifier);\n }); // On visiting object, check for its dependencies and visit them recursively\n\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function (dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n\n modifiers.forEach(function (modifier) {\n if (!visited.has(modifier.name)) {\n // check for visited object\n sort(modifier);\n }\n });\n return result;\n}\n\nexport default function orderModifiers(modifiers) {\n // order based on dependencies\n var orderedModifiers = order(modifiers); // order based on phase\n\n return modifierPhases.reduce(function (acc, phase) {\n return acc.concat(orderedModifiers.filter(function (modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}","export default function debounce(fn) {\n var pending;\n return function () {\n if (!pending) {\n pending = new Promise(function (resolve) {\n Promise.resolve().then(function () {\n pending = undefined;\n resolve(fn());\n });\n });\n }\n\n return pending;\n };\n}","export default function mergeByName(modifiers) {\n var merged = modifiers.reduce(function (merged, current) {\n var existing = merged[current.name];\n merged[current.name] = existing ? Object.assign({}, existing, current, {\n options: Object.assign({}, existing.options, current.options),\n data: Object.assign({}, existing.data, current.data)\n }) : current;\n return merged;\n }, {}); // IE11 does not support Object.values\n\n return Object.keys(merged).map(function (key) {\n return merged[key];\n });\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport getComputedStyle from \"./dom-utils/getComputedStyle.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport validateModifiers from \"./utils/validateModifiers.js\";\nimport uniqueBy from \"./utils/uniqueBy.js\";\nimport getBasePlacement from \"./utils/getBasePlacement.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nimport { auto } from \"./enums.js\";\nvar INVALID_ELEMENT_ERROR = 'Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.';\nvar INFINITE_LOOP_ERROR = 'Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.';\nvar DEFAULT_OPTIONS = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute'\n};\n\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return !args.some(function (element) {\n return !(element && typeof element.getBoundingClientRect === 'function');\n });\n}\n\nexport function popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n\n var _generatorOptions = generatorOptions,\n _generatorOptions$def = _generatorOptions.defaultModifiers,\n defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n _generatorOptions$def2 = _generatorOptions.defaultOptions,\n defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n var state = {\n placement: 'bottom',\n orderedModifiers: [],\n options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(setOptionsAction) {\n var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n cleanupModifierEffects();\n state.options = Object.assign({}, defaultOptions, state.options, options);\n state.scrollParents = {\n reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n popper: listScrollParents(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n\n var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n state.orderedModifiers = orderedModifiers.filter(function (m) {\n return m.enabled;\n }); // Validate the provided modifiers so that the consumer will get warned\n // if one of the modifiers is invalid for any reason\n\n if (process.env.NODE_ENV !== \"production\") {\n var modifiers = uniqueBy([].concat(orderedModifiers, state.options.modifiers), function (_ref) {\n var name = _ref.name;\n return name;\n });\n validateModifiers(modifiers);\n\n if (getBasePlacement(state.options.placement) === auto) {\n var flipModifier = state.orderedModifiers.find(function (_ref2) {\n var name = _ref2.name;\n return name === 'flip';\n });\n\n if (!flipModifier) {\n console.error(['Popper: \"auto\" placements require the \"flip\" modifier be', 'present and enabled to work.'].join(' '));\n }\n }\n\n var _getComputedStyle = getComputedStyle(popper),\n marginTop = _getComputedStyle.marginTop,\n marginRight = _getComputedStyle.marginRight,\n marginBottom = _getComputedStyle.marginBottom,\n marginLeft = _getComputedStyle.marginLeft; // We no longer take into account `margins` on the popper, and it can\n // cause bugs with positioning, so we'll warn the consumer\n\n\n if ([marginTop, marginRight, marginBottom, marginLeft].some(function (margin) {\n return parseFloat(margin);\n })) {\n console.warn(['Popper: CSS \"margin\" styles cannot be used to apply padding', 'between the popper and its reference element or boundary.', 'To replicate margin, use the `offset` modifier, as well as', 'the `padding` option in the `preventOverflow` and `flip`', 'modifiers.'].join(' '));\n }\n }\n\n runModifierEffects();\n return instance.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n\n if (!areValidElements(reference, popper)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(INVALID_ELEMENT_ERROR);\n }\n\n return;\n } // Store the reference and popper rects to be read by modifiers\n\n\n state.rects = {\n reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n popper: getLayoutRect(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n\n state.orderedModifiers.forEach(function (modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n var __debug_loops__ = 0;\n\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (process.env.NODE_ENV !== \"production\") {\n __debug_loops__ += 1;\n\n if (__debug_loops__ > 100) {\n console.error(INFINITE_LOOP_ERROR);\n break;\n }\n }\n\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n\n var _state$orderedModifie = state.orderedModifiers[index],\n fn = _state$orderedModifie.fn,\n _state$orderedModifie2 = _state$orderedModifie.options,\n _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n name = _state$orderedModifie.name;\n\n if (typeof fn === 'function') {\n state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce(function () {\n return new Promise(function (resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n\n if (!areValidElements(reference, popper)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(INVALID_ELEMENT_ERROR);\n }\n\n return instance;\n }\n\n instance.setOptions(options).then(function (state) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n\n function runModifierEffects() {\n state.orderedModifiers.forEach(function (_ref3) {\n var name = _ref3.name,\n _ref3$options = _ref3.options,\n options = _ref3$options === void 0 ? {} : _ref3$options,\n effect = _ref3.effect;\n\n if (typeof effect === 'function') {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n\n var noopFn = function noopFn() {};\n\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function (fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n\n return instance;\n };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow };","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\n\nimport {\n defineJQueryPlugin,\n getElement,\n getElementFromSelector,\n getNextActiveElement,\n isDisabled,\n isElement,\n isRTL,\n isVisible,\n noop,\n typeCheckConfig\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'dropdown'\nconst DATA_KEY = 'bs.dropdown'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ESCAPE_KEY = 'Escape'\nconst SPACE_KEY = 'Space'\nconst TAB_KEY = 'Tab'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst RIGHT_MOUSE_BUTTON = 2 // MouseEvent.button value for the secondary button, usually the right button\n\nconst REGEXP_KEYDOWN = new RegExp(`${ARROW_UP_KEY}|${ARROW_DOWN_KEY}|${ESCAPE_KEY}`)\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_DROPUP = 'dropup'\nconst CLASS_NAME_DROPEND = 'dropend'\nconst CLASS_NAME_DROPSTART = 'dropstart'\nconst CLASS_NAME_NAVBAR = 'navbar'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"dropdown\"]'\nconst SELECTOR_MENU = '.dropdown-menu'\nconst SELECTOR_NAVBAR_NAV = '.navbar-nav'\nconst SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'\n\nconst PLACEMENT_TOP = isRTL() ? 'top-end' : 'top-start'\nconst PLACEMENT_TOPEND = isRTL() ? 'top-start' : 'top-end'\nconst PLACEMENT_BOTTOM = isRTL() ? 'bottom-end' : 'bottom-start'\nconst PLACEMENT_BOTTOMEND = isRTL() ? 'bottom-start' : 'bottom-end'\nconst PLACEMENT_RIGHT = isRTL() ? 'left-start' : 'right-start'\nconst PLACEMENT_LEFT = isRTL() ? 'right-start' : 'left-start'\n\nconst Default = {\n offset: [0, 2],\n boundary: 'clippingParents',\n reference: 'toggle',\n display: 'dynamic',\n popperConfig: null,\n autoClose: true\n}\n\nconst DefaultType = {\n offset: '(array|string|function)',\n boundary: '(string|element)',\n reference: '(string|element|object)',\n display: 'string',\n popperConfig: '(null|object|function)',\n autoClose: '(boolean|string)'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Dropdown extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._popper = null\n this._config = this._getConfig(config)\n this._menu = this._getMenuElement()\n this._inNavbar = this._detectNavbar()\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n\n toggle() {\n return this._isShown() ? this.hide() : this.show()\n }\n\n show() {\n if (isDisabled(this._element) || this._isShown(this._menu)) {\n return\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, relatedTarget)\n\n if (showEvent.defaultPrevented) {\n return\n }\n\n const parent = Dropdown.getParentFromElement(this._element)\n // Totally disable Popper for Dropdowns in Navbar\n if (this._inNavbar) {\n Manipulator.setDataAttribute(this._menu, 'popper', 'none')\n } else {\n this._createPopper(parent)\n }\n\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 if ('ontouchstart' in document.documentElement &&\n !parent.closest(SELECTOR_NAVBAR_NAV)) {\n [].concat(...document.body.children)\n .forEach(elem => EventHandler.on(elem, 'mouseover', noop))\n }\n\n this._element.focus()\n this._element.setAttribute('aria-expanded', true)\n\n this._menu.classList.add(CLASS_NAME_SHOW)\n this._element.classList.add(CLASS_NAME_SHOW)\n EventHandler.trigger(this._element, EVENT_SHOWN, relatedTarget)\n }\n\n hide() {\n if (isDisabled(this._element) || !this._isShown(this._menu)) {\n return\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n }\n\n this._completeHide(relatedTarget)\n }\n\n dispose() {\n if (this._popper) {\n this._popper.destroy()\n }\n\n super.dispose()\n }\n\n update() {\n this._inNavbar = this._detectNavbar()\n if (this._popper) {\n this._popper.update()\n }\n }\n\n // Private\n\n _completeHide(relatedTarget) {\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE, relatedTarget)\n if (hideEvent.defaultPrevented) {\n return\n }\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n [].concat(...document.body.children)\n .forEach(elem => EventHandler.off(elem, 'mouseover', noop))\n }\n\n if (this._popper) {\n this._popper.destroy()\n }\n\n this._menu.classList.remove(CLASS_NAME_SHOW)\n this._element.classList.remove(CLASS_NAME_SHOW)\n this._element.setAttribute('aria-expanded', 'false')\n Manipulator.removeDataAttribute(this._menu, 'popper')\n EventHandler.trigger(this._element, EVENT_HIDDEN, relatedTarget)\n }\n\n _getConfig(config) {\n config = {\n ...this.constructor.Default,\n ...Manipulator.getDataAttributes(this._element),\n ...config\n }\n\n typeCheckConfig(NAME, config, this.constructor.DefaultType)\n\n if (typeof config.reference === 'object' && !isElement(config.reference) &&\n typeof config.reference.getBoundingClientRect !== 'function'\n ) {\n // Popper virtual elements require a getBoundingClientRect method\n throw new TypeError(`${NAME.toUpperCase()}: Option \"reference\" provided type \"object\" without a required \"getBoundingClientRect\" method.`)\n }\n\n return config\n }\n\n _createPopper(parent) {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s dropdowns require Popper (https://popper.js.org)')\n }\n\n let referenceElement = this._element\n\n if (this._config.reference === 'parent') {\n referenceElement = parent\n } else if (isElement(this._config.reference)) {\n referenceElement = getElement(this._config.reference)\n } else if (typeof this._config.reference === 'object') {\n referenceElement = this._config.reference\n }\n\n const popperConfig = this._getPopperConfig()\n const isDisplayStatic = popperConfig.modifiers.find(modifier => modifier.name === 'applyStyles' && modifier.enabled === false)\n\n this._popper = Popper.createPopper(referenceElement, this._menu, popperConfig)\n\n if (isDisplayStatic) {\n Manipulator.setDataAttribute(this._menu, 'popper', 'static')\n }\n }\n\n _isShown(element = this._element) {\n return element.classList.contains(CLASS_NAME_SHOW)\n }\n\n _getMenuElement() {\n return SelectorEngine.next(this._element, SELECTOR_MENU)[0]\n }\n\n _getPlacement() {\n const parentDropdown = this._element.parentNode\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) {\n return PLACEMENT_RIGHT\n }\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) {\n return PLACEMENT_LEFT\n }\n\n // We need to trim the value because custom properties can also include spaces\n const isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end'\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {\n return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP\n }\n\n return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM\n }\n\n _detectNavbar() {\n return this._element.closest(`.${CLASS_NAME_NAVBAR}`) !== null\n }\n\n _getOffset() {\n const { offset } = this._config\n\n if (typeof offset === 'string') {\n return offset.split(',').map(val => Number.parseInt(val, 10))\n }\n\n if (typeof offset === 'function') {\n return popperData => offset(popperData, this._element)\n }\n\n return offset\n }\n\n _getPopperConfig() {\n const defaultBsPopperConfig = {\n placement: this._getPlacement(),\n modifiers: [{\n name: 'preventOverflow',\n options: {\n boundary: this._config.boundary\n }\n },\n {\n name: 'offset',\n options: {\n offset: this._getOffset()\n }\n }]\n }\n\n // Disable Popper if we have a static display\n if (this._config.display === 'static') {\n defaultBsPopperConfig.modifiers = [{\n name: 'applyStyles',\n enabled: false\n }]\n }\n\n return {\n ...defaultBsPopperConfig,\n ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig)\n }\n }\n\n _selectMenuItem({ key, target }) {\n const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(isVisible)\n\n if (!items.length) {\n return\n }\n\n // if target isn't included in items (e.g. when expanding the dropdown)\n // allow cycling to get the last item in case key equals ARROW_UP_KEY\n getNextActiveElement(items, target, key === ARROW_DOWN_KEY, !items.includes(target)).focus()\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Dropdown.getOrCreateInstance(this, config)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n })\n }\n\n static clearMenus(event) {\n if (event && (event.button === RIGHT_MOUSE_BUTTON || (event.type === 'keyup' && event.key !== TAB_KEY))) {\n return\n }\n\n const toggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n for (let i = 0, len = toggles.length; i < len; i++) {\n const context = Dropdown.getInstance(toggles[i])\n if (!context || context._config.autoClose === false) {\n continue\n }\n\n if (!context._isShown()) {\n continue\n }\n\n const relatedTarget = {\n relatedTarget: context._element\n }\n\n if (event) {\n const composedPath = event.composedPath()\n const isMenuTarget = composedPath.includes(context._menu)\n if (\n composedPath.includes(context._element) ||\n (context._config.autoClose === 'inside' && !isMenuTarget) ||\n (context._config.autoClose === 'outside' && isMenuTarget)\n ) {\n continue\n }\n\n // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu\n if (context._menu.contains(event.target) && ((event.type === 'keyup' && event.key === TAB_KEY) || /input|select|option|textarea|form/i.test(event.target.tagName))) {\n continue\n }\n\n if (event.type === 'click') {\n relatedTarget.clickEvent = event\n }\n }\n\n context._completeHide(relatedTarget)\n }\n }\n\n static getParentFromElement(element) {\n return getElementFromSelector(element) || element.parentNode\n }\n\n static 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) ?\n event.key === SPACE_KEY || (event.key !== ESCAPE_KEY &&\n ((event.key !== ARROW_DOWN_KEY && event.key !== ARROW_UP_KEY) ||\n event.target.closest(SELECTOR_MENU))) :\n !REGEXP_KEYDOWN.test(event.key)) {\n return\n }\n\n const isActive = this.classList.contains(CLASS_NAME_SHOW)\n\n if (!isActive && event.key === ESCAPE_KEY) {\n return\n }\n\n event.preventDefault()\n event.stopPropagation()\n\n if (isDisabled(this)) {\n return\n }\n\n const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE)[0]\n const instance = Dropdown.getOrCreateInstance(getToggleButton)\n\n if (event.key === ESCAPE_KEY) {\n instance.hide()\n return\n }\n\n if (event.key === ARROW_UP_KEY || event.key === ARROW_DOWN_KEY) {\n if (!isActive) {\n instance.show()\n }\n\n instance._selectMenuItem(event)\n return\n }\n\n if (!isActive || event.key === SPACE_KEY) {\n Dropdown.clearMenus()\n }\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_CLICK_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n event.preventDefault()\n Dropdown.getOrCreateInstance(this).toggle()\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Dropdown to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Dropdown)\n\nexport default Dropdown\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): util/scrollBar.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport SelectorEngine from '../dom/selector-engine'\nimport Manipulator from '../dom/manipulator'\nimport { isElement } from './index'\n\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'\nconst SELECTOR_STICKY_CONTENT = '.sticky-top'\n\nclass ScrollBarHelper {\n constructor() {\n this._element = document.body\n }\n\n getWidth() {\n // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes\n const documentWidth = document.documentElement.clientWidth\n return Math.abs(window.innerWidth - documentWidth)\n }\n\n hide() {\n const width = this.getWidth()\n this._disableOverFlow()\n // give padding to element to balance the hidden scrollbar width\n this._setElementAttributes(this._element, 'paddingRight', calculatedValue => calculatedValue + width)\n // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth\n this._setElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight', calculatedValue => calculatedValue + width)\n this._setElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight', calculatedValue => calculatedValue - width)\n }\n\n _disableOverFlow() {\n this._saveInitialAttribute(this._element, 'overflow')\n this._element.style.overflow = 'hidden'\n }\n\n _setElementAttributes(selector, styleProp, callback) {\n const scrollbarWidth = this.getWidth()\n const manipulationCallBack = element => {\n if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) {\n return\n }\n\n this._saveInitialAttribute(element, styleProp)\n const calculatedValue = window.getComputedStyle(element)[styleProp]\n element.style[styleProp] = `${callback(Number.parseFloat(calculatedValue))}px`\n }\n\n this._applyManipulationCallback(selector, manipulationCallBack)\n }\n\n reset() {\n this._resetElementAttributes(this._element, 'overflow')\n this._resetElementAttributes(this._element, 'paddingRight')\n this._resetElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight')\n this._resetElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight')\n }\n\n _saveInitialAttribute(element, styleProp) {\n const actualValue = element.style[styleProp]\n if (actualValue) {\n Manipulator.setDataAttribute(element, styleProp, actualValue)\n }\n }\n\n _resetElementAttributes(selector, styleProp) {\n const manipulationCallBack = element => {\n const value = Manipulator.getDataAttribute(element, styleProp)\n if (typeof value === 'undefined') {\n element.style.removeProperty(styleProp)\n } else {\n Manipulator.removeDataAttribute(element, styleProp)\n element.style[styleProp] = value\n }\n }\n\n this._applyManipulationCallback(selector, manipulationCallBack)\n }\n\n _applyManipulationCallback(selector, callBack) {\n if (isElement(selector)) {\n callBack(selector)\n } else {\n SelectorEngine.find(selector, this._element).forEach(callBack)\n }\n }\n\n isOverflowing() {\n return this.getWidth() > 0\n }\n}\n\nexport default ScrollBarHelper\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): util/backdrop.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler'\nimport { execute, executeAfterTransition, getElement, reflow, typeCheckConfig } from './index'\n\nconst Default = {\n className: 'modal-backdrop',\n isVisible: true, // if false, we use the backdrop helper without adding any element to the dom\n isAnimated: false,\n rootElement: 'body', // give the choice to place backdrop under different elements\n clickCallback: null\n}\n\nconst DefaultType = {\n className: 'string',\n isVisible: 'boolean',\n isAnimated: 'boolean',\n rootElement: '(element|string)',\n clickCallback: '(function|null)'\n}\nconst NAME = 'backdrop'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst EVENT_MOUSEDOWN = `mousedown.bs.${NAME}`\n\nclass Backdrop {\n constructor(config) {\n this._config = this._getConfig(config)\n this._isAppended = false\n this._element = null\n }\n\n show(callback) {\n if (!this._config.isVisible) {\n execute(callback)\n return\n }\n\n this._append()\n\n if (this._config.isAnimated) {\n reflow(this._getElement())\n }\n\n this._getElement().classList.add(CLASS_NAME_SHOW)\n\n this._emulateAnimation(() => {\n execute(callback)\n })\n }\n\n hide(callback) {\n if (!this._config.isVisible) {\n execute(callback)\n return\n }\n\n this._getElement().classList.remove(CLASS_NAME_SHOW)\n\n this._emulateAnimation(() => {\n this.dispose()\n execute(callback)\n })\n }\n\n // Private\n\n _getElement() {\n if (!this._element) {\n const backdrop = document.createElement('div')\n backdrop.className = this._config.className\n if (this._config.isAnimated) {\n backdrop.classList.add(CLASS_NAME_FADE)\n }\n\n this._element = backdrop\n }\n\n return this._element\n }\n\n _getConfig(config) {\n config = {\n ...Default,\n ...(typeof config === 'object' ? config : {})\n }\n\n // use getElement() with the default \"body\" to get a fresh Element on each instantiation\n config.rootElement = getElement(config.rootElement)\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _append() {\n if (this._isAppended) {\n return\n }\n\n this._config.rootElement.append(this._getElement())\n\n EventHandler.on(this._getElement(), EVENT_MOUSEDOWN, () => {\n execute(this._config.clickCallback)\n })\n\n this._isAppended = true\n }\n\n dispose() {\n if (!this._isAppended) {\n return\n }\n\n EventHandler.off(this._element, EVENT_MOUSEDOWN)\n\n this._element.remove()\n this._isAppended = false\n }\n\n _emulateAnimation(callback) {\n executeAfterTransition(callback, this._getElement(), this._config.isAnimated)\n }\n}\n\nexport default Backdrop\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): util/focustrap.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler'\nimport SelectorEngine from '../dom/selector-engine'\nimport { typeCheckConfig } from './index'\n\nconst Default = {\n trapElement: null, // The element to trap focus inside of\n autofocus: true\n}\n\nconst DefaultType = {\n trapElement: 'element',\n autofocus: 'boolean'\n}\n\nconst NAME = 'focustrap'\nconst DATA_KEY = 'bs.focustrap'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY}`\n\nconst TAB_KEY = 'Tab'\nconst TAB_NAV_FORWARD = 'forward'\nconst TAB_NAV_BACKWARD = 'backward'\n\nclass FocusTrap {\n constructor(config) {\n this._config = this._getConfig(config)\n this._isActive = false\n this._lastTabNavDirection = null\n }\n\n activate() {\n const { trapElement, autofocus } = this._config\n\n if (this._isActive) {\n return\n }\n\n if (autofocus) {\n trapElement.focus()\n }\n\n EventHandler.off(document, EVENT_KEY) // guard against infinite focus loop\n EventHandler.on(document, EVENT_FOCUSIN, event => this._handleFocusin(event))\n EventHandler.on(document, EVENT_KEYDOWN_TAB, event => this._handleKeydown(event))\n\n this._isActive = true\n }\n\n deactivate() {\n if (!this._isActive) {\n return\n }\n\n this._isActive = false\n EventHandler.off(document, EVENT_KEY)\n }\n\n // Private\n\n _handleFocusin(event) {\n const { target } = event\n const { trapElement } = this._config\n\n if (target === document || target === trapElement || trapElement.contains(target)) {\n return\n }\n\n const elements = SelectorEngine.focusableChildren(trapElement)\n\n if (elements.length === 0) {\n trapElement.focus()\n } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) {\n elements[elements.length - 1].focus()\n } else {\n elements[0].focus()\n }\n }\n\n _handleKeydown(event) {\n if (event.key !== TAB_KEY) {\n return\n }\n\n this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD\n }\n\n _getConfig(config) {\n config = {\n ...Default,\n ...(typeof config === 'object' ? config : {})\n }\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n}\n\nexport default FocusTrap\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n getElementFromSelector,\n isRTL,\n isVisible,\n reflow,\n typeCheckConfig\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport ScrollBarHelper from './util/scrollbar'\nimport BaseComponent from './base-component'\nimport Backdrop from './util/backdrop'\nimport FocusTrap from './util/focustrap'\nimport { enableDismissTrigger } from './util/component-functions'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'modal'\nconst DATA_KEY = 'bs.modal'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst ESCAPE_KEY = 'Escape'\n\nconst Default = {\n backdrop: true,\n keyboard: true,\n focus: true\n}\n\nconst DefaultType = {\n backdrop: '(boolean|string)',\n keyboard: 'boolean',\n focus: 'boolean'\n}\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\nconst EVENT_MOUSEUP_DISMISS = `mouseup.dismiss${EVENT_KEY}`\nconst EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_OPEN = 'modal-open'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_STATIC = 'modal-static'\n\nconst OPEN_SELECTOR = '.modal.show'\nconst SELECTOR_DIALOG = '.modal-dialog'\nconst SELECTOR_MODAL_BODY = '.modal-body'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"modal\"]'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Modal extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._config = this._getConfig(config)\n this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, this._element)\n this._backdrop = this._initializeBackDrop()\n this._focustrap = this._initializeFocusTrap()\n this._isShown = false\n this._ignoreBackdropClick = false\n this._isTransitioning = false\n this._scrollBar = new ScrollBarHelper()\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget)\n }\n\n show(relatedTarget) {\n if (this._isShown || this._isTransitioning) {\n return\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, {\n relatedTarget\n })\n\n if (showEvent.defaultPrevented) {\n return\n }\n\n this._isShown = true\n\n if (this._isAnimated()) {\n this._isTransitioning = true\n }\n\n this._scrollBar.hide()\n\n document.body.classList.add(CLASS_NAME_OPEN)\n\n this._adjustDialog()\n\n this._setEscapeEvent()\n this._setResizeEvent()\n\n EventHandler.on(this._dialog, EVENT_MOUSEDOWN_DISMISS, () => {\n EventHandler.one(this._element, EVENT_MOUSEUP_DISMISS, event => {\n if (event.target === this._element) {\n this._ignoreBackdropClick = true\n }\n })\n })\n\n this._showBackdrop(() => this._showElement(relatedTarget))\n }\n\n hide() {\n if (!this._isShown || this._isTransitioning) {\n return\n }\n\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n if (hideEvent.defaultPrevented) {\n return\n }\n\n this._isShown = false\n const isAnimated = this._isAnimated()\n\n if (isAnimated) {\n this._isTransitioning = true\n }\n\n this._setEscapeEvent()\n this._setResizeEvent()\n\n this._focustrap.deactivate()\n\n this._element.classList.remove(CLASS_NAME_SHOW)\n\n EventHandler.off(this._element, EVENT_CLICK_DISMISS)\n EventHandler.off(this._dialog, EVENT_MOUSEDOWN_DISMISS)\n\n this._queueCallback(() => this._hideModal(), this._element, isAnimated)\n }\n\n dispose() {\n [window, this._dialog]\n .forEach(htmlElement => EventHandler.off(htmlElement, EVENT_KEY))\n\n this._backdrop.dispose()\n this._focustrap.deactivate()\n super.dispose()\n }\n\n handleUpdate() {\n this._adjustDialog()\n }\n\n // Private\n\n _initializeBackDrop() {\n return new Backdrop({\n isVisible: Boolean(this._config.backdrop), // 'static' option will be translated to true, and booleans will keep their value\n isAnimated: this._isAnimated()\n })\n }\n\n _initializeFocusTrap() {\n return new FocusTrap({\n trapElement: this._element\n })\n }\n\n _getConfig(config) {\n config = {\n ...Default,\n ...Manipulator.getDataAttributes(this._element),\n ...(typeof config === 'object' ? config : {})\n }\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _showElement(relatedTarget) {\n const isAnimated = this._isAnimated()\n const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog)\n\n if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {\n // Don't move modal's DOM position\n document.body.append(this._element)\n }\n\n this._element.style.display = 'block'\n this._element.removeAttribute('aria-hidden')\n this._element.setAttribute('aria-modal', true)\n this._element.setAttribute('role', 'dialog')\n this._element.scrollTop = 0\n\n if (modalBody) {\n modalBody.scrollTop = 0\n }\n\n if (isAnimated) {\n reflow(this._element)\n }\n\n this._element.classList.add(CLASS_NAME_SHOW)\n\n const transitionComplete = () => {\n if (this._config.focus) {\n this._focustrap.activate()\n }\n\n this._isTransitioning = false\n EventHandler.trigger(this._element, EVENT_SHOWN, {\n relatedTarget\n })\n }\n\n this._queueCallback(transitionComplete, this._dialog, isAnimated)\n }\n\n _setEscapeEvent() {\n if (this._isShown) {\n EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n if (this._config.keyboard && event.key === ESCAPE_KEY) {\n event.preventDefault()\n this.hide()\n } else if (!this._config.keyboard && event.key === ESCAPE_KEY) {\n this._triggerBackdropTransition()\n }\n })\n } else {\n EventHandler.off(this._element, EVENT_KEYDOWN_DISMISS)\n }\n }\n\n _setResizeEvent() {\n if (this._isShown) {\n EventHandler.on(window, EVENT_RESIZE, () => this._adjustDialog())\n } else {\n EventHandler.off(window, EVENT_RESIZE)\n }\n }\n\n _hideModal() {\n this._element.style.display = 'none'\n this._element.setAttribute('aria-hidden', true)\n this._element.removeAttribute('aria-modal')\n this._element.removeAttribute('role')\n this._isTransitioning = false\n this._backdrop.hide(() => {\n document.body.classList.remove(CLASS_NAME_OPEN)\n this._resetAdjustments()\n this._scrollBar.reset()\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n })\n }\n\n _showBackdrop(callback) {\n EventHandler.on(this._element, EVENT_CLICK_DISMISS, event => {\n if (this._ignoreBackdropClick) {\n this._ignoreBackdropClick = false\n return\n }\n\n if (event.target !== event.currentTarget) {\n return\n }\n\n if (this._config.backdrop === true) {\n this.hide()\n } else if (this._config.backdrop === 'static') {\n this._triggerBackdropTransition()\n }\n })\n\n this._backdrop.show(callback)\n }\n\n _isAnimated() {\n return this._element.classList.contains(CLASS_NAME_FADE)\n }\n\n _triggerBackdropTransition() {\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n if (hideEvent.defaultPrevented) {\n return\n }\n\n const { classList, scrollHeight, style } = this._element\n const isModalOverflowing = scrollHeight > document.documentElement.clientHeight\n\n // return if the following background transition hasn't yet completed\n if ((!isModalOverflowing && style.overflowY === 'hidden') || classList.contains(CLASS_NAME_STATIC)) {\n return\n }\n\n if (!isModalOverflowing) {\n style.overflowY = 'hidden'\n }\n\n classList.add(CLASS_NAME_STATIC)\n this._queueCallback(() => {\n classList.remove(CLASS_NAME_STATIC)\n if (!isModalOverflowing) {\n this._queueCallback(() => {\n style.overflowY = ''\n }, this._dialog)\n }\n }, this._dialog)\n\n this._element.focus()\n }\n\n // ----------------------------------------------------------------------\n // the following methods are used to handle overflowing modals\n // ----------------------------------------------------------------------\n\n _adjustDialog() {\n const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight\n const scrollbarWidth = this._scrollBar.getWidth()\n const isBodyOverflowing = scrollbarWidth > 0\n\n if ((!isBodyOverflowing && isModalOverflowing && !isRTL()) || (isBodyOverflowing && !isModalOverflowing && isRTL())) {\n this._element.style.paddingLeft = `${scrollbarWidth}px`\n }\n\n if ((isBodyOverflowing && !isModalOverflowing && !isRTL()) || (!isBodyOverflowing && isModalOverflowing && isRTL())) {\n this._element.style.paddingRight = `${scrollbarWidth}px`\n }\n }\n\n _resetAdjustments() {\n this._element.style.paddingLeft = ''\n this._element.style.paddingRight = ''\n }\n\n // Static\n\n static jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n const data = Modal.getOrCreateInstance(this, config)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](relatedTarget)\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n const target = getElementFromSelector(this)\n\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault()\n }\n\n EventHandler.one(target, EVENT_SHOW, showEvent => {\n if (showEvent.defaultPrevented) {\n // only register focus restorer if modal will actually get shown\n return\n }\n\n EventHandler.one(target, EVENT_HIDDEN, () => {\n if (isVisible(this)) {\n this.focus()\n }\n })\n })\n\n // avoid conflict when clicking moddal toggler while another one is open\n const allReadyOpen = SelectorEngine.findOne(OPEN_SELECTOR)\n if (allReadyOpen) {\n Modal.getInstance(allReadyOpen).hide()\n }\n\n const data = Modal.getOrCreateInstance(target)\n\n data.toggle(this)\n})\n\nenableDismissTrigger(Modal)\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Modal to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Modal)\n\nexport default Modal\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): offcanvas.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n getElementFromSelector,\n isDisabled,\n isVisible,\n typeCheckConfig\n} from './util/index'\nimport ScrollBarHelper from './util/scrollbar'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\nimport SelectorEngine from './dom/selector-engine'\nimport Manipulator from './dom/manipulator'\nimport Backdrop from './util/backdrop'\nimport FocusTrap from './util/focustrap'\nimport { enableDismissTrigger } from './util/component-functions'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'offcanvas'\nconst DATA_KEY = 'bs.offcanvas'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst ESCAPE_KEY = 'Escape'\n\nconst Default = {\n backdrop: true,\n keyboard: true,\n scroll: false\n}\n\nconst DefaultType = {\n backdrop: 'boolean',\n keyboard: 'boolean',\n scroll: 'boolean'\n}\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_BACKDROP = 'offcanvas-backdrop'\nconst OPEN_SELECTOR = '.offcanvas.show'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"offcanvas\"]'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Offcanvas extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._config = this._getConfig(config)\n this._isShown = false\n this._backdrop = this._initializeBackDrop()\n this._focustrap = this._initializeFocusTrap()\n this._addEventListeners()\n }\n\n // Getters\n\n static get NAME() {\n return NAME\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget)\n }\n\n show(relatedTarget) {\n if (this._isShown) {\n return\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, { relatedTarget })\n\n if (showEvent.defaultPrevented) {\n return\n }\n\n this._isShown = true\n this._element.style.visibility = 'visible'\n\n this._backdrop.show()\n\n if (!this._config.scroll) {\n new ScrollBarHelper().hide()\n }\n\n this._element.removeAttribute('aria-hidden')\n this._element.setAttribute('aria-modal', true)\n this._element.setAttribute('role', 'dialog')\n this._element.classList.add(CLASS_NAME_SHOW)\n\n const completeCallBack = () => {\n if (!this._config.scroll) {\n this._focustrap.activate()\n }\n\n EventHandler.trigger(this._element, EVENT_SHOWN, { relatedTarget })\n }\n\n this._queueCallback(completeCallBack, this._element, true)\n }\n\n hide() {\n if (!this._isShown) {\n return\n }\n\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n if (hideEvent.defaultPrevented) {\n return\n }\n\n this._focustrap.deactivate()\n this._element.blur()\n this._isShown = false\n this._element.classList.remove(CLASS_NAME_SHOW)\n this._backdrop.hide()\n\n const completeCallback = () => {\n this._element.setAttribute('aria-hidden', true)\n this._element.removeAttribute('aria-modal')\n this._element.removeAttribute('role')\n this._element.style.visibility = 'hidden'\n\n if (!this._config.scroll) {\n new ScrollBarHelper().reset()\n }\n\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n }\n\n this._queueCallback(completeCallback, this._element, true)\n }\n\n dispose() {\n this._backdrop.dispose()\n this._focustrap.deactivate()\n super.dispose()\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...Manipulator.getDataAttributes(this._element),\n ...(typeof config === 'object' ? config : {})\n }\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _initializeBackDrop() {\n return new Backdrop({\n className: CLASS_NAME_BACKDROP,\n isVisible: this._config.backdrop,\n isAnimated: true,\n rootElement: this._element.parentNode,\n clickCallback: () => this.hide()\n })\n }\n\n _initializeFocusTrap() {\n return new FocusTrap({\n trapElement: this._element\n })\n }\n\n _addEventListeners() {\n EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n if (this._config.keyboard && event.key === ESCAPE_KEY) {\n this.hide()\n }\n })\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Offcanvas.getOrCreateInstance(this, config)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](this)\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n const target = getElementFromSelector(this)\n\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault()\n }\n\n if (isDisabled(this)) {\n return\n }\n\n EventHandler.one(target, EVENT_HIDDEN, () => {\n // focus on trigger when it is closed\n if (isVisible(this)) {\n this.focus()\n }\n })\n\n // avoid conflict when clicking a toggler of an offcanvas, while another is open\n const allReadyOpen = SelectorEngine.findOne(OPEN_SELECTOR)\n if (allReadyOpen && allReadyOpen !== target) {\n Offcanvas.getInstance(allReadyOpen).hide()\n }\n\n const data = Offcanvas.getOrCreateInstance(target)\n data.toggle(this)\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () =>\n SelectorEngine.find(OPEN_SELECTOR).forEach(el => Offcanvas.getOrCreateInstance(el).show())\n)\n\nenableDismissTrigger(Offcanvas)\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\ndefineJQueryPlugin(Offcanvas)\n\nexport default Offcanvas\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): util/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst uriAttributes = new Set([\n 'background',\n 'cite',\n 'href',\n 'itemtype',\n 'longdesc',\n 'poster',\n 'src',\n 'xlink:href'\n])\n\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\n/**\n * A pattern that recognizes a commonly useful subset of URLs that are safe.\n *\n * Shoutout to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file|sms):|[^#&/:?]*(?:[#/?]|$))/i\n\n/**\n * A pattern that matches safe data URLs. Only matches image, video and audio types.\n *\n * Shoutout to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst 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\nconst allowedAttribute = (attribute, allowedAttributeList) => {\n const attributeName = attribute.nodeName.toLowerCase()\n\n if (allowedAttributeList.includes(attributeName)) {\n if (uriAttributes.has(attributeName)) {\n return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue) || DATA_URL_PATTERN.test(attribute.nodeValue))\n }\n\n return true\n }\n\n const regExp = allowedAttributeList.filter(attributeRegex => attributeRegex instanceof RegExp)\n\n // Check if a regular expression validates the attribute.\n for (let i = 0, len = regExp.length; i < len; i++) {\n if (regExp[i].test(attributeName)) {\n return true\n }\n }\n\n return false\n}\n\nexport const DefaultAllowlist = {\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\nexport function sanitizeHtml(unsafeHtml, allowList, sanitizeFn) {\n if (!unsafeHtml.length) {\n return unsafeHtml\n }\n\n if (sanitizeFn && typeof sanitizeFn === 'function') {\n return sanitizeFn(unsafeHtml)\n }\n\n const domParser = new window.DOMParser()\n const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html')\n const elements = [].concat(...createdDocument.body.querySelectorAll('*'))\n\n for (let i = 0, len = elements.length; i < len; i++) {\n const element = elements[i]\n const elementName = element.nodeName.toLowerCase()\n\n if (!Object.keys(allowList).includes(elementName)) {\n element.remove()\n\n continue\n }\n\n const attributeList = [].concat(...element.attributes)\n const allowedAttributes = [].concat(allowList['*'] || [], allowList[elementName] || [])\n\n attributeList.forEach(attribute => {\n if (!allowedAttribute(attribute, allowedAttributes)) {\n element.removeAttribute(attribute.nodeName)\n }\n })\n }\n\n return createdDocument.body.innerHTML\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\n\nimport {\n defineJQueryPlugin,\n findShadowRoot,\n getElement,\n getUID,\n isElement,\n isRTL,\n noop,\n typeCheckConfig\n} from './util/index'\nimport { DefaultAllowlist, sanitizeHtml } from './util/sanitizer'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'tooltip'\nconst DATA_KEY = 'bs.tooltip'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst CLASS_PREFIX = 'bs-tooltip'\nconst DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn'])\n\nconst DefaultType = {\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: '(array|string|function)',\n container: '(string|element|boolean)',\n fallbackPlacements: 'array',\n boundary: '(string|element)',\n customClass: '(string|function)',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n allowList: 'object',\n popperConfig: '(null|object|function)'\n}\n\nconst AttachmentMap = {\n AUTO: 'auto',\n TOP: 'top',\n RIGHT: isRTL() ? 'left' : 'right',\n BOTTOM: 'bottom',\n LEFT: isRTL() ? 'right' : 'left'\n}\n\nconst Default = {\n animation: true,\n template: '
' +\n '
' +\n '
' +\n '
',\n trigger: 'hover focus',\n title: '',\n delay: 0,\n html: false,\n selector: false,\n placement: 'top',\n offset: [0, 0],\n container: false,\n fallbackPlacements: ['top', 'right', 'bottom', 'left'],\n boundary: 'clippingParents',\n customClass: '',\n sanitize: true,\n sanitizeFn: null,\n allowList: DefaultAllowlist,\n popperConfig: null\n}\n\nconst Event = {\n HIDE: `hide${EVENT_KEY}`,\n HIDDEN: `hidden${EVENT_KEY}`,\n SHOW: `show${EVENT_KEY}`,\n SHOWN: `shown${EVENT_KEY}`,\n INSERTED: `inserted${EVENT_KEY}`,\n CLICK: `click${EVENT_KEY}`,\n FOCUSIN: `focusin${EVENT_KEY}`,\n FOCUSOUT: `focusout${EVENT_KEY}`,\n MOUSEENTER: `mouseenter${EVENT_KEY}`,\n MOUSELEAVE: `mouseleave${EVENT_KEY}`\n}\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_MODAL = 'modal'\nconst CLASS_NAME_SHOW = 'show'\n\nconst HOVER_STATE_SHOW = 'show'\nconst HOVER_STATE_OUT = 'out'\n\nconst SELECTOR_TOOLTIP_INNER = '.tooltip-inner'\nconst SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`\n\nconst EVENT_MODAL_HIDE = 'hide.bs.modal'\n\nconst TRIGGER_HOVER = 'hover'\nconst TRIGGER_FOCUS = 'focus'\nconst TRIGGER_CLICK = 'click'\nconst TRIGGER_MANUAL = 'manual'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Tooltip extends BaseComponent {\n constructor(element, config) {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s tooltips require Popper (https://popper.js.org)')\n }\n\n super(element)\n\n // private\n this._isEnabled = true\n this._timeout = 0\n this._hoverState = ''\n this._activeTrigger = {}\n this._popper = null\n\n // Protected\n this._config = this._getConfig(config)\n this.tip = null\n\n this._setListeners()\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n static get Event() {\n return Event\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Public\n\n enable() {\n this._isEnabled = true\n }\n\n disable() {\n this._isEnabled = false\n }\n\n toggleEnabled() {\n this._isEnabled = !this._isEnabled\n }\n\n toggle(event) {\n if (!this._isEnabled) {\n return\n }\n\n if (event) {\n const context = this._initializeOnDelegatedTarget(event)\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 (this.getTipElement().classList.contains(CLASS_NAME_SHOW)) {\n this._leave(null, this)\n return\n }\n\n this._enter(null, this)\n }\n }\n\n dispose() {\n clearTimeout(this._timeout)\n\n EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler)\n\n if (this.tip) {\n this.tip.remove()\n }\n\n this._disposePopper()\n super.dispose()\n }\n\n show() {\n if (this._element.style.display === 'none') {\n throw new Error('Please use show on visible elements')\n }\n\n if (!(this.isWithContent() && this._isEnabled)) {\n return\n }\n\n const showEvent = EventHandler.trigger(this._element, this.constructor.Event.SHOW)\n const shadowRoot = findShadowRoot(this._element)\n const isInTheDom = shadowRoot === null ?\n this._element.ownerDocument.documentElement.contains(this._element) :\n shadowRoot.contains(this._element)\n\n if (showEvent.defaultPrevented || !isInTheDom) {\n return\n }\n\n // A trick to recreate a tooltip in case a new title is given by using the NOT documented `data-bs-original-title`\n // This will be removed later in favor of a `setContent` method\n if (this.constructor.NAME === 'tooltip' && this.tip && this.getTitle() !== this.tip.querySelector(SELECTOR_TOOLTIP_INNER).innerHTML) {\n this._disposePopper()\n this.tip.remove()\n this.tip = null\n }\n\n const tip = this.getTipElement()\n const tipId = getUID(this.constructor.NAME)\n\n tip.setAttribute('id', tipId)\n this._element.setAttribute('aria-describedby', tipId)\n\n if (this._config.animation) {\n tip.classList.add(CLASS_NAME_FADE)\n }\n\n const placement = typeof this._config.placement === 'function' ?\n this._config.placement.call(this, tip, this._element) :\n this._config.placement\n\n const attachment = this._getAttachment(placement)\n this._addAttachmentClass(attachment)\n\n const { container } = this._config\n Data.set(tip, this.constructor.DATA_KEY, this)\n\n if (!this._element.ownerDocument.documentElement.contains(this.tip)) {\n container.append(tip)\n EventHandler.trigger(this._element, this.constructor.Event.INSERTED)\n }\n\n if (this._popper) {\n this._popper.update()\n } else {\n this._popper = Popper.createPopper(this._element, tip, this._getPopperConfig(attachment))\n }\n\n tip.classList.add(CLASS_NAME_SHOW)\n\n const customClass = this._resolvePossibleFunction(this._config.customClass)\n if (customClass) {\n tip.classList.add(...customClass.split(' '))\n }\n\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 if ('ontouchstart' in document.documentElement) {\n [].concat(...document.body.children).forEach(element => {\n EventHandler.on(element, 'mouseover', noop)\n })\n }\n\n const complete = () => {\n const prevHoverState = this._hoverState\n\n this._hoverState = null\n EventHandler.trigger(this._element, this.constructor.Event.SHOWN)\n\n if (prevHoverState === HOVER_STATE_OUT) {\n this._leave(null, this)\n }\n }\n\n const isAnimated = this.tip.classList.contains(CLASS_NAME_FADE)\n this._queueCallback(complete, this.tip, isAnimated)\n }\n\n hide() {\n if (!this._popper) {\n return\n }\n\n const tip = this.getTipElement()\n const complete = () => {\n if (this._isWithActiveTrigger()) {\n return\n }\n\n if (this._hoverState !== HOVER_STATE_SHOW) {\n tip.remove()\n }\n\n this._cleanTipClass()\n this._element.removeAttribute('aria-describedby')\n EventHandler.trigger(this._element, this.constructor.Event.HIDDEN)\n\n this._disposePopper()\n }\n\n const hideEvent = EventHandler.trigger(this._element, this.constructor.Event.HIDE)\n if (hideEvent.defaultPrevented) {\n return\n }\n\n tip.classList.remove(CLASS_NAME_SHOW)\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n [].concat(...document.body.children)\n .forEach(element => EventHandler.off(element, 'mouseover', noop))\n }\n\n this._activeTrigger[TRIGGER_CLICK] = false\n this._activeTrigger[TRIGGER_FOCUS] = false\n this._activeTrigger[TRIGGER_HOVER] = false\n\n const isAnimated = this.tip.classList.contains(CLASS_NAME_FADE)\n this._queueCallback(complete, this.tip, isAnimated)\n this._hoverState = ''\n }\n\n update() {\n if (this._popper !== null) {\n this._popper.update()\n }\n }\n\n // Protected\n\n isWithContent() {\n return Boolean(this.getTitle())\n }\n\n getTipElement() {\n if (this.tip) {\n return this.tip\n }\n\n const element = document.createElement('div')\n element.innerHTML = this._config.template\n\n const tip = element.children[0]\n this.setContent(tip)\n tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW)\n\n this.tip = tip\n return this.tip\n }\n\n setContent(tip) {\n this._sanitizeAndSetContent(tip, this.getTitle(), SELECTOR_TOOLTIP_INNER)\n }\n\n _sanitizeAndSetContent(template, content, selector) {\n const templateElement = SelectorEngine.findOne(selector, template)\n\n if (!content && templateElement) {\n templateElement.remove()\n return\n }\n\n // we use append for html objects to maintain js events\n this.setElementContent(templateElement, content)\n }\n\n setElementContent(element, content) {\n if (element === null) {\n return\n }\n\n if (isElement(content)) {\n content = getElement(content)\n\n // content is a DOM node or a jQuery\n if (this._config.html) {\n if (content.parentNode !== element) {\n element.innerHTML = ''\n element.append(content)\n }\n } else {\n element.textContent = content.textContent\n }\n\n return\n }\n\n if (this._config.html) {\n if (this._config.sanitize) {\n content = sanitizeHtml(content, this._config.allowList, this._config.sanitizeFn)\n }\n\n element.innerHTML = content\n } else {\n element.textContent = content\n }\n }\n\n getTitle() {\n const title = this._element.getAttribute('data-bs-original-title') || this._config.title\n\n return this._resolvePossibleFunction(title)\n }\n\n updateAttachment(attachment) {\n if (attachment === 'right') {\n return 'end'\n }\n\n if (attachment === 'left') {\n return 'start'\n }\n\n return attachment\n }\n\n // Private\n\n _initializeOnDelegatedTarget(event, context) {\n return context || this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig())\n }\n\n _getOffset() {\n const { offset } = this._config\n\n if (typeof offset === 'string') {\n return offset.split(',').map(val => Number.parseInt(val, 10))\n }\n\n if (typeof offset === 'function') {\n return popperData => offset(popperData, this._element)\n }\n\n return offset\n }\n\n _resolvePossibleFunction(content) {\n return typeof content === 'function' ? content.call(this._element) : content\n }\n\n _getPopperConfig(attachment) {\n const defaultBsPopperConfig = {\n placement: attachment,\n modifiers: [\n {\n name: 'flip',\n options: {\n fallbackPlacements: this._config.fallbackPlacements\n }\n },\n {\n name: 'offset',\n options: {\n offset: this._getOffset()\n }\n },\n {\n name: 'preventOverflow',\n options: {\n boundary: this._config.boundary\n }\n },\n {\n name: 'arrow',\n options: {\n element: `.${this.constructor.NAME}-arrow`\n }\n },\n {\n name: 'onChange',\n enabled: true,\n phase: 'afterWrite',\n fn: data => this._handlePopperPlacementChange(data)\n }\n ],\n onFirstUpdate: data => {\n if (data.options.placement !== data.placement) {\n this._handlePopperPlacementChange(data)\n }\n }\n }\n\n return {\n ...defaultBsPopperConfig,\n ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig)\n }\n }\n\n _addAttachmentClass(attachment) {\n this.getTipElement().classList.add(`${this._getBasicClassPrefix()}-${this.updateAttachment(attachment)}`)\n }\n\n _getAttachment(placement) {\n return AttachmentMap[placement.toUpperCase()]\n }\n\n _setListeners() {\n const triggers = this._config.trigger.split(' ')\n\n triggers.forEach(trigger => {\n if (trigger === 'click') {\n EventHandler.on(this._element, this.constructor.Event.CLICK, this._config.selector, event => this.toggle(event))\n } else if (trigger !== TRIGGER_MANUAL) {\n const eventIn = trigger === TRIGGER_HOVER ?\n this.constructor.Event.MOUSEENTER :\n this.constructor.Event.FOCUSIN\n const eventOut = trigger === TRIGGER_HOVER ?\n this.constructor.Event.MOUSELEAVE :\n this.constructor.Event.FOCUSOUT\n\n EventHandler.on(this._element, eventIn, this._config.selector, event => this._enter(event))\n EventHandler.on(this._element, eventOut, this._config.selector, event => this._leave(event))\n }\n })\n\n this._hideModalHandler = () => {\n if (this._element) {\n this.hide()\n }\n }\n\n EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler)\n\n if (this._config.selector) {\n this._config = {\n ...this._config,\n trigger: 'manual',\n selector: ''\n }\n } else {\n this._fixTitle()\n }\n }\n\n _fixTitle() {\n const title = this._element.getAttribute('title')\n const originalTitleType = typeof this._element.getAttribute('data-bs-original-title')\n\n if (title || originalTitleType !== 'string') {\n this._element.setAttribute('data-bs-original-title', title || '')\n if (title && !this._element.getAttribute('aria-label') && !this._element.textContent) {\n this._element.setAttribute('aria-label', title)\n }\n\n this._element.setAttribute('title', '')\n }\n }\n\n _enter(event, context) {\n context = this._initializeOnDelegatedTarget(event, context)\n\n if (event) {\n context._activeTrigger[\n event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER\n ] = true\n }\n\n if (context.getTipElement().classList.contains(CLASS_NAME_SHOW) || context._hoverState === HOVER_STATE_SHOW) {\n context._hoverState = HOVER_STATE_SHOW\n return\n }\n\n clearTimeout(context._timeout)\n\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(() => {\n if (context._hoverState === HOVER_STATE_SHOW) {\n context.show()\n }\n }, context._config.delay.show)\n }\n\n _leave(event, context) {\n context = this._initializeOnDelegatedTarget(event, context)\n\n if (event) {\n context._activeTrigger[\n event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER\n ] = context._element.contains(event.relatedTarget)\n }\n\n if (context._isWithActiveTrigger()) {\n return\n }\n\n clearTimeout(context._timeout)\n\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(() => {\n if (context._hoverState === HOVER_STATE_OUT) {\n context.hide()\n }\n }, context._config.delay.hide)\n }\n\n _isWithActiveTrigger() {\n for (const trigger in this._activeTrigger) {\n if (this._activeTrigger[trigger]) {\n return true\n }\n }\n\n return false\n }\n\n _getConfig(config) {\n const dataAttributes = Manipulator.getDataAttributes(this._element)\n\n Object.keys(dataAttributes).forEach(dataAttr => {\n if (DISALLOWED_ATTRIBUTES.has(dataAttr)) {\n delete dataAttributes[dataAttr]\n }\n })\n\n config = {\n ...this.constructor.Default,\n ...dataAttributes,\n ...(typeof config === 'object' && config ? config : {})\n }\n\n config.container = config.container === false ? document.body : getElement(config.container)\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 typeCheckConfig(NAME, config, this.constructor.DefaultType)\n\n if (config.sanitize) {\n config.template = sanitizeHtml(config.template, config.allowList, config.sanitizeFn)\n }\n\n return config\n }\n\n _getDelegateConfig() {\n const config = {}\n\n for (const key in this._config) {\n if (this.constructor.Default[key] !== this._config[key]) {\n config[key] = this._config[key]\n }\n }\n\n // In the future can be replaced with:\n // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]])\n // `Object.fromEntries(keysWithDifferentValues)`\n return config\n }\n\n _cleanTipClass() {\n const tip = this.getTipElement()\n const basicClassPrefixRegex = new RegExp(`(^|\\\\s)${this._getBasicClassPrefix()}\\\\S+`, 'g')\n const tabClass = tip.getAttribute('class').match(basicClassPrefixRegex)\n if (tabClass !== null && tabClass.length > 0) {\n tabClass.map(token => token.trim())\n .forEach(tClass => tip.classList.remove(tClass))\n }\n }\n\n _getBasicClassPrefix() {\n return CLASS_PREFIX\n }\n\n _handlePopperPlacementChange(popperData) {\n const { state } = popperData\n\n if (!state) {\n return\n }\n\n this.tip = state.elements.popper\n this._cleanTipClass()\n this._addAttachmentClass(this._getAttachment(state.placement))\n }\n\n _disposePopper() {\n if (this._popper) {\n this._popper.destroy()\n this._popper = null\n }\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Tooltip.getOrCreateInstance(this, config)\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\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Tooltip to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Tooltip)\n\nexport default Tooltip\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin } from './util/index'\nimport Tooltip from './tooltip'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'popover'\nconst DATA_KEY = 'bs.popover'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst CLASS_PREFIX = 'bs-popover'\n\nconst Default = {\n ...Tooltip.Default,\n placement: 'right',\n offset: [0, 8],\n trigger: 'click',\n content: '',\n template: '
' +\n '
' +\n '

' +\n '
' +\n '
'\n}\n\nconst DefaultType = {\n ...Tooltip.DefaultType,\n content: '(string|element|function)'\n}\n\nconst Event = {\n HIDE: `hide${EVENT_KEY}`,\n HIDDEN: `hidden${EVENT_KEY}`,\n SHOW: `show${EVENT_KEY}`,\n SHOWN: `shown${EVENT_KEY}`,\n INSERTED: `inserted${EVENT_KEY}`,\n CLICK: `click${EVENT_KEY}`,\n FOCUSIN: `focusin${EVENT_KEY}`,\n FOCUSOUT: `focusout${EVENT_KEY}`,\n MOUSEENTER: `mouseenter${EVENT_KEY}`,\n MOUSELEAVE: `mouseleave${EVENT_KEY}`\n}\n\nconst SELECTOR_TITLE = '.popover-header'\nconst SELECTOR_CONTENT = '.popover-body'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Popover extends Tooltip {\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n static get Event() {\n return Event\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Overrides\n\n isWithContent() {\n return this.getTitle() || this._getContent()\n }\n\n setContent(tip) {\n this._sanitizeAndSetContent(tip, this.getTitle(), SELECTOR_TITLE)\n this._sanitizeAndSetContent(tip, this._getContent(), SELECTOR_CONTENT)\n }\n\n // Private\n\n _getContent() {\n return this._resolvePossibleFunction(this._config.content)\n }\n\n _getBasicClassPrefix() {\n return CLASS_PREFIX\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Popover.getOrCreateInstance(this, config)\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\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Popover to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Popover)\n\nexport default Popover\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n getElement,\n getSelectorFromElement,\n typeCheckConfig\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'scrollspy'\nconst DATA_KEY = 'bs.scrollspy'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst Default = {\n offset: 10,\n method: 'auto',\n target: ''\n}\n\nconst DefaultType = {\n offset: 'number',\n method: 'string',\n target: '(string|element)'\n}\n\nconst EVENT_ACTIVATE = `activate${EVENT_KEY}`\nconst EVENT_SCROLL = `scroll${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item'\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_SPY = '[data-bs-spy=\"scroll\"]'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_NAV_LINKS = '.nav-link'\nconst SELECTOR_NAV_ITEMS = '.nav-item'\nconst SELECTOR_LIST_ITEMS = '.list-group-item'\nconst SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}, .${CLASS_NAME_DROPDOWN_ITEM}`\nconst SELECTOR_DROPDOWN = '.dropdown'\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\n\nconst METHOD_OFFSET = 'offset'\nconst METHOD_POSITION = 'position'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass ScrollSpy extends BaseComponent {\n constructor(element, config) {\n super(element)\n this._scrollElement = this._element.tagName === 'BODY' ? window : this._element\n this._config = this._getConfig(config)\n this._offsets = []\n this._targets = []\n this._activeTarget = null\n this._scrollHeight = 0\n\n EventHandler.on(this._scrollElement, EVENT_SCROLL, () => this._process())\n\n this.refresh()\n this._process()\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n\n refresh() {\n const autoMethod = this._scrollElement === this._scrollElement.window ?\n METHOD_OFFSET :\n METHOD_POSITION\n\n const offsetMethod = this._config.method === 'auto' ?\n autoMethod :\n this._config.method\n\n const offsetBase = offsetMethod === METHOD_POSITION ?\n this._getScrollTop() :\n 0\n\n this._offsets = []\n this._targets = []\n this._scrollHeight = this._getScrollHeight()\n\n const targets = SelectorEngine.find(SELECTOR_LINK_ITEMS, this._config.target)\n\n targets.map(element => {\n const targetSelector = getSelectorFromElement(element)\n const target = targetSelector ? SelectorEngine.findOne(targetSelector) : null\n\n if (target) {\n const targetBCR = target.getBoundingClientRect()\n if (targetBCR.width || targetBCR.height) {\n return [\n Manipulator[offsetMethod](target).top + offsetBase,\n targetSelector\n ]\n }\n }\n\n return null\n })\n .filter(item => item)\n .sort((a, b) => a[0] - b[0])\n .forEach(item => {\n this._offsets.push(item[0])\n this._targets.push(item[1])\n })\n }\n\n dispose() {\n EventHandler.off(this._scrollElement, EVENT_KEY)\n super.dispose()\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...Manipulator.getDataAttributes(this._element),\n ...(typeof config === 'object' && config ? config : {})\n }\n\n config.target = getElement(config.target) || document.documentElement\n\n typeCheckConfig(NAME, config, DefaultType)\n\n return config\n }\n\n _getScrollTop() {\n return this._scrollElement === window ?\n this._scrollElement.pageYOffset :\n this._scrollElement.scrollTop\n }\n\n _getScrollHeight() {\n return this._scrollElement.scrollHeight || Math.max(\n document.body.scrollHeight,\n document.documentElement.scrollHeight\n )\n }\n\n _getOffsetHeight() {\n return this._scrollElement === window ?\n window.innerHeight :\n this._scrollElement.getBoundingClientRect().height\n }\n\n _process() {\n const scrollTop = this._getScrollTop() + this._config.offset\n const scrollHeight = this._getScrollHeight()\n const maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight()\n\n if (this._scrollHeight !== scrollHeight) {\n this.refresh()\n }\n\n if (scrollTop >= maxScroll) {\n const 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 this._clear()\n return\n }\n\n for (let i = this._offsets.length; i--;) {\n const isActiveTarget = this._activeTarget !== this._targets[i] &&\n scrollTop >= this._offsets[i] &&\n (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 _activate(target) {\n this._activeTarget = target\n\n this._clear()\n\n const queries = SELECTOR_LINK_ITEMS.split(',')\n .map(selector => `${selector}[data-bs-target=\"${target}\"],${selector}[href=\"${target}\"]`)\n\n const link = SelectorEngine.findOne(queries.join(','), this._config.target)\n\n link.classList.add(CLASS_NAME_ACTIVE)\n if (link.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {\n SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE, link.closest(SELECTOR_DROPDOWN))\n .classList.add(CLASS_NAME_ACTIVE)\n } else {\n SelectorEngine.parents(link, SELECTOR_NAV_LIST_GROUP)\n .forEach(listGroup => {\n // Set triggered links parents as active\n // With both
    and