{"version":3,"sources":["webpack:///./src/constants/dialog/PromiseDialogEvent.js","webpack:///./src/components/disputes/dispute-resolution-confirmation-dialog.vue?7f34","webpack:///src/components/disputes/dispute-resolution-confirmation-dialog.vue","webpack:///./src/components/disputes/dispute-resolution-confirmation-dialog.vue?2562","webpack:///./src/components/disputes/dispute-resolution-confirmation-dialog.vue","webpack:///./src/components/disputes/disputes-dialog/disputes-dialog-content.vue?c3df","webpack:///./src/components/disputes/disputes-dialog/dispute-dialog-booking-details.vue?4661","webpack:///./src/utils/format-time.js","webpack:///src/components/disputes/disputes-dialog/dispute-dialog-booking-details.vue","webpack:///./src/components/disputes/disputes-dialog/dispute-dialog-booking-details.vue?d1d3","webpack:///./src/components/disputes/disputes-dialog/dispute-dialog-booking-details.vue","webpack:///./src/components/disputes/disputes-dialog/dispute-dialog-client-info-card.vue?d238","webpack:///src/components/disputes/disputes-dialog/dispute-dialog-client-info-card.vue","webpack:///./src/components/disputes/disputes-dialog/dispute-dialog-client-info-card.vue?928e","webpack:///./src/components/disputes/disputes-dialog/dispute-dialog-client-info-card.vue","webpack:///./src/components/disputes/disputes-dialog/dispute-dialog-candidate-info-card.vue?5d24","webpack:///./src/components/candidate/candidate-info-card.vue?0fd7","webpack:///src/components/candidate/candidate-info-card.vue","webpack:///./src/components/candidate/candidate-info-card.vue?eda3","webpack:///./src/components/candidate/candidate-info-card.vue","webpack:///src/components/disputes/disputes-dialog/dispute-dialog-candidate-info-card.vue","webpack:///./src/components/disputes/disputes-dialog/dispute-dialog-candidate-info-card.vue?6c97","webpack:///./src/components/disputes/disputes-dialog/dispute-dialog-candidate-info-card.vue","webpack:///./src/components/disputes/disputes-dialog/dispute-dialog-booking-history.vue?3dd3","webpack:///./src/components/disputes/disputes-dialog/dispute-dialog-booking-history-submission-alert.vue?ab78","webpack:///src/components/disputes/disputes-dialog/dispute-dialog-booking-history-submission-alert.vue","webpack:///./src/components/disputes/disputes-dialog/dispute-dialog-booking-history-submission-alert.vue?3ed1","webpack:///./src/components/disputes/disputes-dialog/dispute-dialog-booking-history-submission-alert.vue","webpack:///src/components/disputes/disputes-dialog/dispute-dialog-booking-history.vue","webpack:///./src/components/disputes/disputes-dialog/dispute-dialog-booking-history.vue?d72f","webpack:///./src/components/disputes/disputes-dialog/dispute-dialog-booking-history.vue","webpack:///src/components/disputes/disputes-dialog/disputes-dialog-content.vue","webpack:///./src/components/disputes/disputes-dialog/disputes-dialog-content.vue?d1ca","webpack:///./src/components/disputes/disputes-dialog/disputes-dialog-content.vue","webpack:///./src/components/general/client-details-list-item.vue?2629","webpack:///src/components/general/client-details-list-item.vue","webpack:///./src/components/general/client-details-list-item.vue?ba77","webpack:///./src/components/general/client-details-list-item.vue","webpack:///../../../src/components/VToolbar/index.ts","webpack:///./src/components/disputes/disputes-table-submitted-indicator.vue?a8b2","webpack:///src/components/disputes/disputes-table-submitted-indicator.vue","webpack:///./src/components/disputes/disputes-table-submitted-indicator.vue?b805","webpack:///./src/components/disputes/disputes-table-submitted-indicator.vue","webpack:///./src/components/general/spinner.vue?f9af","webpack:///src/components/general/spinner.vue","webpack:///./src/components/general/spinner.vue?2e4e","webpack:///./src/components/general/spinner.vue","webpack:///../../../src/components/VForm/VForm.ts","webpack:///./src/components/general/info-label.vue?e8a9","webpack:///./src/utils/format-date.js","webpack:///./src/components/general/side-drawer-dialog.vue?1d87","webpack:///./src/utils/markdown-to-html-converter.js","webpack:///./src/components/layout/styled-dialog-header.vue?9b89","webpack:///src/components/layout/styled-dialog-header.vue","webpack:///./src/components/layout/styled-dialog-header.vue?995f","webpack:///./src/components/layout/styled-dialog-header.vue","webpack:///src/components/general/side-drawer-dialog.vue","webpack:///./src/components/general/side-drawer-dialog.vue?24ef","webpack:///./src/components/general/side-drawer-dialog.vue","webpack:///./src/components/disputes/disputes-dialog/dispute-dialog-client-info-card.vue?7314","webpack:///./src/components/general/info-label.vue?a8bc","webpack:///src/components/general/info-label.vue","webpack:///./src/components/general/info-label.vue?4bb5","webpack:///./src/components/general/info-label.vue","webpack:///./node_modules/marked/lib/marked.umd.js","webpack:///./src/components/general/promise-dialog.vue?0c9c","webpack:///src/components/general/promise-dialog.vue","webpack:///./src/components/general/promise-dialog.vue?a662","webpack:///./src/components/general/promise-dialog.vue","webpack:///./src/components/layout/styled-dialog-header.vue?4e5b","webpack:///./src/constants/disputes/TimesheetChangeType.js","webpack:///./src/components/disputes/disputes-table-overview-stats-breakdown-card.vue?86b7","webpack:///./src/components/general/organisation-tree-selector.vue?392a","webpack:///./src/models/admin/simpleOrgTreeNode.js","webpack:///./src/helpers/string-helpers.js","webpack:///./src/components/general/filter/manage-presets-table.vue?6e4e","webpack:///./src/components/general/truncated-chip-tooltip.vue?0b47","webpack:///./src/components/general/truncated-chip-list.vue?9ca9","webpack:///src/components/general/truncated-chip-list.vue","webpack:///./src/components/general/truncated-chip-list.vue?054d","webpack:///./src/components/general/truncated-chip-list.vue","webpack:///src/components/general/truncated-chip-tooltip.vue","webpack:///./src/components/general/truncated-chip-tooltip.vue?73a1","webpack:///./src/components/general/truncated-chip-tooltip.vue","webpack:///src/components/general/filter/manage-presets-table.vue","webpack:///./src/components/general/filter/manage-presets-table.vue?935b","webpack:///./src/components/general/filter/manage-presets-table.vue","webpack:///./src/components/general/filter/preset-saved-success-view.vue?eb5f","webpack:///src/components/general/filter/preset-saved-success-view.vue","webpack:///./src/components/general/filter/preset-saved-success-view.vue?0528","webpack:///./src/components/general/filter/preset-saved-success-view.vue","webpack:///./src/components/general/filter/delete-preset-confirmation-view.vue?8677","webpack:///src/components/general/filter/delete-preset-confirmation-view.vue","webpack:///./src/components/general/filter/delete-preset-confirmation-view.vue?c4e9","webpack:///./src/components/general/filter/delete-preset-confirmation-view.vue","webpack:///./src/components/general/empty-search-results-block.vue?09ac","webpack:///src/components/general/empty-search-results-block.vue","webpack:///./src/components/general/empty-search-results-block.vue?0b2a","webpack:///./src/components/general/empty-search-results-block.vue","webpack:///./src/components/general/filter/save-preset-form.vue?dbe1","webpack:///src/components/general/filter/save-preset-form.vue","webpack:///./src/components/general/filter/save-preset-form.vue?2288","webpack:///./src/components/general/filter/save-preset-form.vue","webpack:///src/components/general/organisation-tree-selector.vue","webpack:///./src/components/general/organisation-tree-selector.vue?2016","webpack:///./src/components/general/organisation-tree-selector.vue","webpack:///src/components/disputes/disputes-table-overview-stats-breakdown-card.vue","webpack:///./src/components/disputes/disputes-table-overview-stats-breakdown-card.vue?7144","webpack:///./src/components/disputes/disputes-table-overview-stats-breakdown-card.vue","webpack:///./src/constants/form/FormInputType.js","webpack:///./src/mixins/formMixin.js","webpack:///./src/constants/disputes/DisputePerspective.js","webpack:///./src/components/general/statistics-breakdown-card.vue?8245","webpack:///./src/constants/disputes/DisputeType.js","webpack:///./src/components/general/organisation-tree-selector.vue?bc1f","webpack:///../../../src/components/VCheckbox/VCheckbox.ts","webpack:///../../../src/components/VItemGroup/VItem.ts","webpack:///./src/components/general/statistics-breakdown-card.vue?7141","webpack:///./src/components/general/donut-graph.vue?1fe6","webpack:///./node_modules/chart.js/dist/chunks/helpers.segment.js","webpack:///./node_modules/chart.js/dist/chart.esm.js","webpack:///./node_modules/chart.js/auto/auto.esm.js","webpack:///src/components/general/donut-graph.vue","webpack:///./src/components/general/donut-graph.vue?0270","webpack:///./src/components/general/donut-graph.vue","webpack:///./src/components/general/statistics-breakdown-summary-data-point.vue?80d8","webpack:///src/components/general/statistics-breakdown-summary-data-point.vue","webpack:///./src/components/general/statistics-breakdown-summary-data-point.vue?72fd","webpack:///./src/components/general/statistics-breakdown-summary-data-point.vue","webpack:///src/components/general/statistics-breakdown-card.vue","webpack:///./src/components/general/statistics-breakdown-card.vue?fd7f","webpack:///./src/components/general/statistics-breakdown-card.vue","webpack:///./src/components/general/client-details-list-item.vue?b6d0","webpack:///./src/components/disputes/disputes-dialog/invoice-bulk-action-dialog-content.vue?f7f2","webpack:///./src/components/general/empty-state-block.vue?4aa2","webpack:///src/components/general/empty-state-block.vue","webpack:///./src/components/general/empty-state-block.vue?2975","webpack:///./src/components/general/empty-state-block.vue","webpack:///./src/models/general/dataPoint.js","webpack:///./src/components/disputes/dispute-table-invoice-center-stats-breakdown-card.vue?24a0","webpack:///src/components/disputes/dispute-table-invoice-center-stats-breakdown-card.vue","webpack:///./src/components/disputes/dispute-table-invoice-center-stats-breakdown-card.vue?7c07","webpack:///./src/components/disputes/dispute-table-invoice-center-stats-breakdown-card.vue","webpack:///./src/components/general/info-label.vue?c6f2","webpack:///../../../src/components/VTreeview/VTreeviewNode.ts","webpack:///../../../../src/components/VTreeview/util/filterTreeItems.ts","webpack:///../../../src/components/VTreeview/VTreeview.ts","webpack:///./src/components/disputes/disputes-dialog/invoice-bulk-action-dialog-content.vue?c872","webpack:///src/components/disputes/disputes-dialog/invoice-bulk-action-dialog-content.vue","webpack:///./src/components/disputes/disputes-dialog/invoice-bulk-action-dialog-content.vue?b5cb","webpack:///./src/components/disputes/disputes-dialog/invoice-bulk-action-dialog-content.vue","webpack:///./src/models/dialog/promiseDialogDto.js","webpack:///./src/models/dialog/promiseDialogActionsDto.js","webpack:///./src/components/general/donut-graph.vue?4ab6"],"names":["Object","freeze","OK","Cancel","render","_vm","this","_h","$createElement","_c","_self","ref","scopedSlots","_u","key","fn","VCard","staticClass","_v","VDivider","proxy","_s","compSelectionText","_l","change","index","staticRenderFns","name","components","PromiseDialog","mixins","baseMixin","timesheetMixin","computed","isAccept","isAcceptOperation","resolveStatus","isCancel","isCancelOperation","isModified","isModifiedOperation","compModifiedTimesheetPayload","retrieveModifiedTimesheetPayload","ResolveOperations","CANDIDATE","$t","activeTimesheet","candidate","CLIENT","clientTimesheet","details","contactName","ORIGINAL","compChangesList","modifiedText","isPositiveDifference","differenceInMins","changes","differenceInMinutes","Math","abs","type","TimesheetChangeType","delta","push","shift","unpaidBreaks","watch","val","oldVal","confirmDisputeResolution","methods","dialogConfig","PromiseDialogDto","actions","PromiseDialogActionsDto","text","$i18n","t","event","PromiseDialogEvent","attributes","depressed","class","color","VuetifyColourClass","grey","isDarkMode","primary","persistent","result","$refs","disputeConfirmationDialog","show","submitResolution","resetResolveStatus","submitActiveTimesheet","$emit","$store","dispatch","component","loading","attrs","VRow","VCol","VAlert","staticStyle","bookingDate","startTime","endTime","returnBookingUrl","timesheet","bookingId","isLargeOrHigher","VBtn","style","hasSelectedMostRecentTimesheetSubmission","background","on","selectMostRecentTimesheet","VIcon","_e","compButtonText","compMostRecentText","compChangesText","formatTime","timeString","hours","minutes","split","period","parseInt","formattedHours","mapGetters","_this$timesheet","startDate","formatDate","candidateTimesheet","_this$timesheet2","_this$timesheet3","hasCandidateSubmittedTimesheet","candidateHasSubmitted","hasClientSubmittedTimesheet","clientHasSubmitted","mostRecentTimesheetSubmission","determineMostRecentTimesheetSubmissionOrder","clientName","compModifiedText","commit","value","returnClientUrl","client","id","payType","owner","InfoLabel","isLastIndex","compileInfoList","length","email","compPhoneNumberList","returnCandidateUrl","phoneNumber","_t","UserAvatar","props","Number","String","required","default","phoneNumbers","Array","hasPhoneNumbers","CandidateInfoCard","_this$timesheet$candi","_this$timesheet$candi2","_this$timesheet$candi3","phone1","trim","phone2","phone3","filter","compBookingHistoryComments","compAlertText","showAlert","CommentList","DisputeDialogBookingHistorySubmissionAlert","comments","submissionOrderList","submissionType","generateCandidateCommentModel","generateClientCommentModel","generateOriginalBookingCommentModel","comment","CommentModel","addedBy","dateCreated","dayjs","submittedDateUtc","commentText","JSON","stringify","DisputeTimesheetDetailsCandidateCommentModel","isTeachStart","shouldShowRestBreaksQuestion","CommentType","CustomDisputeResolutionHistoryCandidate","DisputeTimesheetDetailsClient","CustomDisputeResolutionHistoryClient","DisputeHistoryOriginalBookingTimesCommentModel","breakMinutes","CustomDisputeResolutionHistoryOriginal","Spinner","DisputeDialogBookingDetails","DisputeDialogClientInfoCard","DisputeDialogCandidateInfoCard","DisputeDialogBookingHistory","Boolean","$event","stopPropagation","getHref","VChip","VAvatar","getClassType","getTitle","clientId","locationId","groupId","data","title","Name","getClient","getLocation","getGroup","location","getClientIdFromLocation","_this$location","values","ClientID","getClass","additionalClass","mounted","refreshContent","updated","returnClassType","pokeClient","then","response","pokeLocation","pokeGroup","returnClientGroupUrl","returnLocationUrl","mapActions","VToolbarTitle","createSimpleFunctional","VToolbarItems","VToolbar","VTooltip","_g","_b","compTooltipText","locale","format","DateFormatToken","LLLL","VProgressCircular","colour","size","BindsAttrs","RegistrableProvide","extend","provide","form","inheritAttrs","disabled","lazyValidation","readonly","inputs","watchers","errorBag","handler","errors","includes","deep","immediate","watchInput","input","watcher","$watch","$set","_uid","valid","shouldValidate","hasOwnProperty","validate","reset","forEach","resetErrorBag","setTimeout","resetValidation","register","unregister","found","find","i","unwatch","$delete","h","novalidate","attrs$","submit","e","getSlot","module","exports","date","$date","VDialog","compTransition","close","compOverlayColumns","compDialogColumns","compDescription","noGutters","hideActions","VSpacer","isMediumOrLower","VOverlay","markdownToHtmlConverter","markdownString","DOMPurify","sanitize","marked","parse","USE_PROFILES","html","hasDescription","compTitleClass","isSmallOrLower","directives","rawName","expression","description","StyledDialogHeader","model","prop","dialogOnClose","xl","validator","lg","md","sm","xs","closeDialog","dialog","$style","infoLabelStyling","label","injectStyles","context","locals","global","factory","_defineProperties","target","descriptor","enumerable","configurable","writable","defineProperty","_toPropertyKey","_createClass","Constructor","protoProps","staticProps","prototype","_extends","assign","bind","arguments","source","call","apply","_unsupportedIterableToArray","o","minLen","_arrayLikeToArray","n","toString","slice","constructor","from","test","arr","len","arr2","_createForOfIteratorHelperLoose","allowArrayLike","it","Symbol","iterator","next","isArray","done","TypeError","_toPrimitive","hint","prim","toPrimitive","undefined","res","arg","getDefaults","async","baseUrl","breaks","extensions","gfm","headerIds","headerPrefix","highlight","hooks","langPrefix","mangle","pedantic","renderer","sanitizer","silent","smartypants","tokenizer","walkTokens","xhtml","changeDefaults","newDefaults","defaults","escapeTest","escapeReplace","RegExp","escapeTestNoEncode","escapeReplaceNoEncode","escapeReplacements","getEscapeReplacement","ch","escape","encode","replace","unescapeTest","unescape","_","toLowerCase","charAt","fromCharCode","substring","caret","edit","regex","opt","obj","getRegex","nonWordAndColonTest","originIndependentUrl","cleanUrl","base","href","prot","decodeURIComponent","indexOf","resolveUrl","encodeURI","baseUrls","justDomain","protocol","domain","rtrim","relativeBase","noopTest","exec","splitCells","tableRow","count","row","match","offset","str","escaped","curr","cells","pop","splice","c","invert","l","suffLen","currChar","findClosingBracket","b","level","checkSanitizeDeprecation","console","warn","repeatString","pattern","outputLink","cap","link","raw","lexer","state","inLink","token","tokens","inlineTokens","indentCodeCompensation","matchIndentToCode","indentToCode","map","node","matchIndentInNode","indentInNode","join","Tokenizer","options","_proto","space","src","rules","block","newline","code","codeBlockStyle","fences","lang","inline","_escapes","heading","trimmed","depth","hr","blockquote","top","blockTokens","list","istask","ischecked","indent","blankLine","endsWithBlankLine","line","nextLine","rawLine","itemContents","endEarly","bull","isordered","ordered","start","loose","items","itemRegex","repeat","trimLeft","search","nextBulletRegex","min","hrRegex","fencesBeginRegex","headingBeginRegex","task","checked","trimRight","spacers","hasMultipleLineBreaks","some","pre","def","tag","table","item","header","align","rows","j","k","lheading","paragraph","inRawBlock","trimmedUrl","rtrimSlash","lastParenIndex","linkLen","reflink","links","nolink","emStrong","maskedSrc","prevChar","lDelim","nextChar","punctuation","rDelim","rLength","lLength","delimTotal","midDelimTotal","endReg","rDelimAst","rDelimUnd","lastIndex","_text","codespan","hasNonSpaceChars","hasSpaceCharsOnBothEnds","br","del","autolink","url","prevCapZero","_backpedal","inlineText","_paragraph","_label","_title","bullet","listItemStart","_tag","_comment","normal","reflinkSearch","out","charCodeAt","random","_punctuation","blockSkip","escapedEmSt","_scheme","_email","_attribute","_href","strong","middle","endAst","endUnd","em","_extended_email","Lexer","create","inlineQueue","lex","lexInline","lastToken","cutSrc","lastParagraphClipped","_this","leading","tabs","extTokenizer","startBlock","startIndex","Infinity","tempSrc","tempStart","getStartIndex","errMsg","error","Error","_this2","keepPrevChar","keys","lastIndexOf","startInline","get","Renderer","_code","infostring","quote","_html","slugger","slug","body","startatt","listitem","checkbox","tablerow","content","tablecell","flags","image","TextRenderer","Slugger","seen","serialize","getNextSafeSlug","originalSlug","isDryRun","occurenceAccumulator","dryrun","Parser","textRenderer","parser","parseInline","l2","l3","cell","itemBody","ret","renderers","unshift","Hooks","preprocess","markdown","postprocess","onError","callback","message","msg","Promise","resolve","reject","parseMarkdown","origOpt","throwError","err","pending","all","_tokens","passThroughHooks","Set","setOptions","use","childTokens","_len","args","_key","pack","opts","ext","prevRenderer","_len2","_key2","_loop","_len3","_key3","_loop2","prevTokenizer","_len4","_key4","_loop3","prevHook","has","_len5","_key5","_walkTokens","concat","_step","_loop4","_step2","_iterator2","_step3","_iterator3","_step4","_iterator4","_cell","_iterator","width","isPersistent","$$v","showDialog","hasColor","icon","action","resolveEvent","hasOptions","_this$options","hasIcon","_this$options2","_this$options3","hasActions","_this$options4","isNullOrEmptyArray","graphData","compGraphOptions","handleFilterChange","filterUpdated","VBtnToggle","dense","handleActionButtonToggle","actionBtn","tooltip","onTooltip","isActionBtnActive","isLoading","selectActionFilterByLevel","_f","VMenu","onMenu","levelMenuState","VList","VSubheader","VListItem","VTextField","levelSearch","searchNodesByLevel","getDivisionTitleFromTeamId","filteredSavedSelectionList","showActionBtn","treeLevel","savedTreeSelection","compTreeSelectionPreviewBtnText","isDialogShowing","handleSearch","showSavePresetForm","toggleSelectionView","filteredCurrentlySelectedList","showChipSelectionView","openManagePresetsView","openSavePresetMenu","openDeletePresetConfirmation","selectedPreset","cancelDeletePreset","deleteSelectedPreset","presetForm","returnToTreeView","applyPresetSelection","updateFormState","hasSelection","hasSearchableSelection","searchableSelection","closeChip","expanded","toggleTreeview","VTreeview","multiple","selectionType","processedOrgTree","updateSelection","currentlySelected","compDialogActionButtons","SimpleOrgTreeNode","params","adjectives","names","generateRandomName","sample","VDataTable","tableHeaders","presets","handleSelection","removeDuplicateAdminsSelection","selection","favourite","togglePresetFavouriteState","humanReadableDate","createdDate","formatPresetCreatedDate","editPreset","deletePreset","limit","compChipColor","closeable","$attrs","$listeners","expandable","hasColorAttr","compSummaryChipColor","toggleExpand","compSummaryChipText","compSummaryChipTooltip","limitVal","shouldItemsBeTruncated","truncatedList","_this$$attrs","TruncatedChipList","TruncatedChipTooltip","getUserNameById","sortable","to","filterDuplicateAdminNodes","EmptyStateBlock","preset","compHeader","VForm","isPresetFormValid","updateForm","formData","VCheckbox","closePresetChip","formMixin","getPresetByKey","isEditingPreset","_this$formData","_this$search","trimmedSearchTerm","cloneDeep","selectedItem","MINE_LEVEL","TREE_LEVEL","ViewKeys","ChipSelection","SavePreset","PresetSaveSuccess","ManagePresets","DeletePreset","initViewControls","viewControls","EmptySearchResultsBlock","ManagePresetsTable","PresetSavedSuccessView","DeletePresetConfirmationView","SavePresetForm","validOptions","searchable","actionsList","validActions","OrganisationLevel","Team","Division","Country","every","orderActions","order","validOrderOptions","topLevel","Admin","lowestLevel","preselect","preselectVal","viewKeys","selectedActionIds","lastEmit","loadingOrgTree","organisationTree","orderAsc","compActionButtons","actionButtons","reverse","determineButtonTextBasedOnSelectedId","determineButtonTooltipBasedOnSelectedId","determineIfMultipleLevelsExist","_this$search2","_this$savedTreeSelect","getPrimaryTeam","_this$getNodesByLevel","getNodesByLevel","team","isPrimary","isTeamFilterEnabled","orgTree","foundStartNode","searchTree","pruneChildrenNodesAtLevel","showPresetSaveSuccessView","showManagePresetsView","showDeletePresetConfirmation","showTreeView","viewKey","_this$presetForm","backBtn","closePresetMenu","applySelectedPreset","closeSavePresetForm","savePreset","resetSelection","saveSelection","loadOrganisationTree","isSuccess","initSelectedTeamId","initSelectedDivsionId","initSelectedCountryId","initFilterPreselection","destroyed","returnDivisionTreeItemByKey","upsertPreset","findNodesByList","emitFilterUpdate","payload","isEqual","targetLevel","tree","getNodesByLevelFunc","searchNodesByLevelFunc","initSelectedLevel","selectedTeam","selectedCountry","_this$getPrimaryTeam","toggleView","nodes","_teamNodes$","teamNodes","orgTreeview","updateAll","isNaN","foundPreset","nanoid","returnAfterApply","toasts","success","formState","searchVal","teamId","_searchTree","teamDivisionSplitIds","DIVISION_ID_INDEX","divisionId","StatisticsBreakdownCard","OrganisationTreeSelector","disputes","adminIds","filterModel","graphWidth","isLoadingBookingDisputes","currentUser","staffByAdminIds","allowedToViewAdminIds","autocompleteStaff","staff","a","autocompleteSelectedModel","set","dataPoints","getDefaultGraphDataObj","notSubmittedSummaryIndex","modifiedSummaryIndex","otherSummaryIndex","reduce","accumulator","bookingStatus","ShortTermStatus","BOOKING_NOT_APPROVED","ECH_BOOKING_NOT_APPROVED","CANDIDATE_SUBMITTED_TIMESHEET_MODIFIED","CLIENT_SUBMITTED_TIMESHEET_MODIFIED","CLIENT_SUBMITTED_TIMESHEET_DID_NOT_HAPPEN","CANDIDATE_SUBMITTED_TIMESHEET_DID_NOT_HAPPEN","TIMESHEET_DISPUTE_OR_MISMATCH","CANDIDATE_SUBMITTED_TIMESHEET_NO_CHANGES","CLIENT_SUBMITTED_TIMESHEET_NO_CHANGES","cutOut","layout","padding","left","debounce","newValue","oldValue","updateSelectedFilter","DataPoint","showSummary","showOnGraph","ids","selectedNode","FormInputType","DATE","TEXT","TEXTAREA","SELECT","RADIO","passwordRegexString","config","passwordMinChars","created","initRules","formInputType","requiredRule","emailRule","passwordMinCharacters","passwordMinRule","uppercase","uppercaseRule","lowercase","lowercaseRule","number","numberRule","passwordsMatch","passwordMatchRule","special","specialCharacterRule","validPercent","validPercentRule","integer","integerRule","positiveNumber","positiveNumberRule","validInt32","validInt32Rule","v","trimmedString","toUpperCase","newPass","allowedCharsRegex","passwordCriteriaMet","password","isInteger","MIN_INT32","MAX_INT32","DisputePerspective","isValidPerspective","DisputeTypeStrings","MISSING","CONFLICT","Selectable","indeterminate","indeterminateIcon","offIcon","onIcon","inputIndeterminate","classes","VInput","computedIcon","isActive","validationState","isDisabled","hasError","hasSuccess","computedColor","$nextTick","genCheckbox","checkboxAttrs","setTextColor","dark","light","genInput","genRipple","rippleState","genDefaultSlot","genLabel","BaseItem","Vue","activeClass","toggle","$scopedSlots","consoleWarn","element","active","tabindex","GroupableFactory","isFlat","backgroundColor","transparent","VItemGroup","dataPoint","orderedDataPoints","listOfSummaryDataPoints","graphLabels","compSegmentColors","graphOptions","handleChartClicked","requestAnimFrame","window","requestAnimationFrame","throttled","thisArg","updateFn","updateArgs","ticking","rest","delay","timeout","clearTimeout","_toLeftRightCenter","_alignStartEnd","end","_textX","right","rtl","check","noop","uid","isNullOrUndef","isObject","isNumberFinite","isFinite","finiteOrDefault","defaultValue","valueOrDefault","toPercentage","dimension","endsWith","parseFloat","toDimension","each","loopable","_elementsEqual","a0","a1","ilen","v0","v1","datasetIndex","clone$1","klen","isValidKey","_merger","tval","sval","merge","sources","merger","mergeIf","_mergerIf","emptyString","dot","indexOfDotOrLength","idx","resolveObjectKey","pos","_capitalize","defined","isFunction","setsEqual","_isClickEvent","PI","TAU","PITAU","INFINITY","POSITIVE_INFINITY","RAD_PER_DEG","HALF_PI","QUARTER_PI","TWO_THIRDS_PI","log10","sign","niceNum","range","roundedRange","round","almostEquals","niceRange","pow","floor","fraction","niceFraction","_factorize","sqrt","sort","isNumber","x","y","epsilon","almostWhole","rounded","_setMinAndMaxByKey","array","property","max","toRadians","degrees","toDegrees","radians","_decimalPlaces","p","getAngleFromPoint","centrePoint","anglePoint","distanceFromXCenter","distanceFromYCenter","radialDistanceFromCenter","angle","atan2","distance","distanceBetweenPoints","pt1","pt2","_angleDiff","_normalizeAngle","_angleBetween","sameAngleIsFullCircle","s","angleToStart","angleToEnd","startToAngle","endToAngle","_limitValue","_int16Range","_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","easeInBounce","easeOutBounce","m","d","easeInOutBounce","lim","p2b","n2b","b2n","n2p","map$1","0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","f","hex","h1","h2","eq","isShort","r","g","hexParse","hexString","HUE_RE","hsl2rgbn","hsv2rgbn","hwb2rgbn","w","rgb","hueValue","rgb2hsl","calln","hsl2rgb","hwb2rgb","hsv2rgb","hue","hueParse","p1","p2","rotate","deg","hslString","Z","Y","X","W","V","U","T","S","R","Q","P","O","N","M","L","K","G","H","I","J","names$1","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","unpack","unpacked","tkeys","ok","nk","nameParse","RGB_RE","rgbParse","rgbString","interpolate","rgb1","rgb2","modHSL","ratio","tmp","clone","proto","fromObject","functionParse","Color","_rgb","_valid","weight","c1","c2","w2","w1","index_esm","isPatternOrGradient","getHoverColor","saturate","darken","overrides","getScope$1","root","scope","Defaults","_descriptors","animation","borderColor","datasets","devicePixelRatio","chart","platform","getDevicePixelRatio","elements","events","font","family","lineHeight","hover","hoverBackgroundColor","ctx","hoverBorderColor","hoverColor","indexAxis","interaction","mode","intersect","includeInvisible","maintainAspectRatio","onHover","onClick","parsing","plugins","responsive","scale","scales","showLine","drawActiveElementsOnTop","describe","targetScope","targetName","scopeObject","targetScopeObject","privateName","defineProperties","local","_scriptable","startsWith","_indexable","_fallback","toFontString","_measureText","gc","longest","string","textWidth","measureText","_longestText","arrayOfThings","cache","garbageCollect","save","jlen","thing","nestedThing","restore","gcLen","_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","bottom","clipArea","clip","unclipArea","_steppedLineTo","previous","flip","midpoint","_bezierCurveTo","bezierCurveTo","cp1x","cp2x","cp1y","cp2y","renderText","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","FONT_STYLE","toLineHeight","matches","numberOrZero","_readValueToProps","objProps","read","toTRBL","toTRBLCorners","toPadding","toFont","fallback","info","cacheable","_addGrace","minmax","grace","beginAtZero","keepZero","add","createContext","parentContext","_lookup","cmp","mid","hi","lo","_lookupByKey","_rlookupByKey","_filterBetween","arrayEvents","listenArrayEvents","listener","_chartjs","listeners","method","object","unlistenArrayEvents","stub","_arrayUnique","_createResolver","scopes","prefixes","rootScopes","getTarget","_resolve","toStringTag","_cacheable","_scopes","_rootScopes","_getTarget","override","Proxy","_keys","_cached","_resolveWithPrefixes","Reflect","getOwnPropertyDescriptor","getPrototypeOf","getKeysFromAllScopes","storage","_storage","_attachContext","subProxy","descriptorDefaults","_proxy","_context","_subProxy","_stack","setContext","receiver","_resolveWithContext","allKeys","ownKeys","scriptable","indexable","_allKeys","isScriptable","isIndexable","readKey","prefix","needsSubResolver","descriptors","_resolveScriptable","_resolveArray","delete","createSubResolver","resolver","resolveFallback","getScope","parent","addScopes","parentScopes","parentFallback","allScopes","addScopesFromKey","subGetTarget","resolveKeysFromAllScopes","_parseObjectDataRadialScale","meta","iScale","_parsing","parsed","EPSILON","getPoint","points","skip","getValueAxis","splineCurve","firstPoint","middlePoint","afterPoint","current","d01","d12","s01","s12","fa","fb","monotoneAdjust","deltaK","mK","pointsLen","alphaK","betaK","tauK","squaredMagnitude","pointCurrent","pointAfter","monotoneCompute","valueAxis","pointBefore","iPixel","vPixel","splineCurveMonotone","slopeDelta","capControlPoint","pt","capBezierPoints","inArea","inAreaPrev","inAreaNext","_updateBezierControlPoints","loop","controlPoints","spanGaps","cubicInterpolationMode","prev","tension","_isDomSupported","document","_getParentNode","domNode","parentNode","host","parseMaxStyle","styleValue","parentProperty","valueInPixels","getComputedStyle","getStyle","el","getPropertyValue","positions","getPositionedStyle","styles","suffix","useOffsetPos","shadowRoot","getCanvasPosition","touches","offsetX","offsetY","box","getBoundingClientRect","clientX","clientY","getRelativePosition","evt","borderBox","boxSizing","paddings","borders","getContainerSize","maxHeight","container","containerStyle","containerBorder","containerPadding","clientWidth","clientHeight","round1","getMaximumSize","bbWidth","bbHeight","aspectRatio","margins","containerSize","retinaScale","forceRatio","forceStyle","pixelRatio","deviceHeight","deviceWidth","setTransform","supportsEventListenerOptions","passiveSupported","addEventListener","removeEventListener","readUsedSize","_pointInLine","_steppedInterpolation","_bezierInterpolation","cp1","cp2","intlCache","Map","getNumberFormat","cacheKey","formatter","Intl","NumberFormat","formatNumber","num","getRightToLeftAdapter","rectX","itemWidth","getLeftToRightAdapter","_itemWidth","getRtlAdapter","overrideTextDirection","direction","original","getPropertyPriority","setProperty","prevTextDirection","restoreTextDirection","propertyFn","between","compare","normalize","normalizeSegment","getSegment","segment","bounds","startBound","endBound","_boundSegment","prevValue","inside","subStart","startIsBefore","endIsBefore","shouldStart","shouldStop","_boundSegments","segments","sub","findStartAndEnd","solidSegments","last","cur","stop","_computeSegments","segmentOptions","splitByStyles","completeLoop","_fullLoop","doSplitByStyles","chartContext","_chart","baseStyle","readStyle","_datasetIndex","prevStyle","addStyle","st","dir","p0","p0DataIndex","p1DataIndex","styleChanged","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","_request","_charts","_running","_lastDate","anims","callbacks","numSteps","duration","initial","currentStep","_update","_refresh","Date","now","remaining","running","draw","_active","_total","tick","_notify","charts","complete","progress","cb","_getAnims","acc","_duration","cancel","animator","interpolators","factor","c0","mix","cfg","currentValue","_fn","_easing","easing","_start","_target","_prop","_from","_to","_promises","elapsed","remain","promises","rej","resolved","numbers","colors","properties","resize","animations","visible","hide","_properties","configure","animatedProps","getOwnPropertyNames","option","newOptions","resolveTargetOptions","_createAnimations","$shared","awaitAll","$animations","_animateOptions","update","anim","wait","scaleClip","allowedOverflow","defaultClip","xScale","yScale","toClip","getSortedDatasetIndices","filterVisible","metasets","_getSortedDatasetMetas","applyStack","stack","dsIndex","singleMode","otherValue","convertObjectDataToArray","adata","isStacked","stacked","getStackKey","indexScale","valueScale","getUserBounds","minDefined","maxDefined","NEGATIVE_INFINITY","getOrCreateStack","stacks","stackKey","indexValue","subStack","getLastIndexInStack","vScale","positive","getMatchingVisibleMetas","updateStacks","controller","_cachedMeta","_stacks","iAxis","axis","vAxis","itemStacks","_top","_bottom","getFirstScaleId","createDatasetContext","dataset","createDataContext","dataIndex","clearStacks","_parsed","isDirectUpdateMode","cloneIfNotShared","cached","shared","createStack","canStack","hidden","_stacked","_ctx","_cachedDataOpts","getMeta","_type","_data","_objectData","_sharedOptions","_drawStart","_drawCount","enableOptionSharing","supportsDecimation","$context","_syncList","initialize","linkScales","addElements","getDataset","chooseId","xid","xAxisID","yid","yAxisID","rid","rAxisID","iid","iAxisID","vid","vAxisID","getScaleForId","rScale","getDatasetMeta","scaleID","isExtensible","_dataCheck","datasetElementType","resetNewElements","stackChanged","oldStacked","_resyncElements","scopeKeys","datasetScopeKeys","getOptionScopes","createResolver","sorted","_sorted","parseArrayData","parseObjectData","parsePrimitiveData","isNotInOrderComparedToPrev","labels","getLabels","singleScale","xAxisKey","yAxisKey","parsedValue","NaN","otherScale","_getOtherScale","otherMin","otherMax","_skip","updateRangeFromParsed","getParsed","getLabelForValue","_clip","getMaxOverflow","chartArea","resolveDatasetElementOptions","resolveDataElementOptions","_resolveElementOptions","dataElementType","elementType","sharing","datasetElementScopeKeys","resolveNamedOptions","transition","datasetAnimationScopeKeys","sharedOptions","_animationsDisabled","_resolveAnimations","getSharedOptions","_setStyle","arg1","arg2","numMeta","numData","_insertElements","_removeElements","move","updateElements","removed","_dataChanges","_sync","newCount","getAllScaleValues","_cache","$bar","visibleMetas","getAllParsedValues","computeMinSampleSize","_length","updateMinAndPrev","getPixelForValue","ticks","getPixelForTick","computeFitCategoryTraits","ruler","stackCount","thickness","barThickness","categoryPercentage","barPercentage","chunk","pixels","computeFlexCategoryTraits","percent","parseFloatBar","entry","startValue","endValue","barStart","barEnd","_custom","parseValue","parseArrayOrPrimitive","isFloatBar","custom","barSign","actualBase","isHorizontal","borderProps","horizontal","setBorderSkipped","edge","borderSkipped","enableBorderRadius","parseEdge","swap","startEnd","orig","v2","setInflateAmount","inflateAmount","iAxisKey","vAxisKey","super","bars","getBasePixel","_getRuler","firstOpts","includeOptions","updateSharedOptions","vpixels","head","_calculateBarValuePixels","ipixels","_calculateBarIndexPixels","center","updateElement","grouped","_getStacks","_startPixel","_endPixel","_getStackCount","baseValue","minBarLength","floating","getDataVisibility","startPixel","getPixelForDecimal","endPixel","halfGrid","getLineWidthForValue","skipNull","maxBarThickness","stackIndex","_getStackIndex","rects","_index_","grid","_value_","getRatioAndOffset","circumference","cutout","ratioX","ratioY","startAngle","endAngle","startX","startY","endX","endY","calcMax","calcMin","maxX","maxY","minX","minY","innerRadius","outerRadius","getter","isDatasetVisible","_getRotation","_getCircumference","arcs","spacing","getMaxBorderWidth","getMaxOffset","maxSize","chartWeight","_getRingWeight","_getRotationExtents","maxRadius","radiusLength","_getVisibleDatasetWeightTotal","total","calculateTotal","_getRingWeightOffset","animateRotate","calculateCircumference","animationOpts","centerX","centerY","animateScale","_circumference","metaData","borderAlign","hoverBorderWidth","hoverOffset","ringWeightOffset","legend","legendItem","toggleDataVisibility","tooltipItem","dataLabel","formattedValue","_dataset","animationsDisabled","getStartAndCountOfVisiblePoints","scaleRangesChanged","_decimated","animated","maxGapLength","directUpdate","prevParsed","nullData","border","lastPoint","updateControlPoints","pointCount","_scaleRanges","newRanges","xmin","xmax","ymin","ymax","changed","_updateRadius","minSize","cutoutPercentage","getVisibleDatasetCount","xCenter","yCenter","datasetStartAngle","getIndexAngle","defaultAngle","countVisibleElements","_computeAngle","getDistanceFromCenterForValue","angleLines","display","circular","pointLabels","PieController","pointPosition","getPointPositionForValue","ScatterController","controllers","__proto__","BarController","BubbleController","DoughnutController","LineController","PolarAreaController","RadarController","DateAdapter","timestamp","amount","unit","weekday","members","adapters","_date","binarySearch","metaset","lookupMethod","_reversePixels","getRange","evaluateInteractionItems","position","getSortedVisibleDatasetMetas","getDistanceMetricForAxis","useX","useY","deltaX","deltaY","getIntersectItems","useFinalPosition","isPointInArea","evaluationFunc","inRange","getNearestRadialItems","getProps","getNearestCartesianItems","distanceMetric","minDistance","getCenterPoint","pointInArea","getNearestItems","getAxisItems","rangeMethod","intersectsItem","Interaction","modes","STATIC_POSITIONS","filterByPosition","filterDynamicPositionByAxis","sortByWeight","wrapBoxes","boxes","layoutBoxes","stackWeight","buildStacks","layouts","wrap","placed","setLayoutDims","vBoxMaxWidth","hBoxMaxHeight","fullSize","availableWidth","availableHeight","buildLayoutBoxes","centerHorizontal","centerVertical","leftAndTop","rightAndBottom","vertical","getCombinedMax","maxPadding","updateMaxPadding","boxPadding","updateDims","getPadding","newWidth","outerWidth","newHeight","outerHeight","widthChanged","heightChanged","same","other","handleMaxPadding","updatePos","getMargins","marginForPositions","fitBoxes","refitBoxes","refit","setBoxDims","placeBoxes","userPadding","autoPadding","_layers","z","layoutItem","minPadding","verticalBoxes","horizontalBoxes","beforeLayout","visibleVerticalBoxCount","BasePlatform","BasicPlatform","EXPANDO_KEY","EVENT_TYPES","touchstart","touchmove","touchend","pointerenter","pointerdown","pointermove","pointerup","pointerleave","pointerout","isNullOrEmpty","initCanvas","renderHeight","getAttribute","renderWidth","displayWidth","displayHeight","eventListenerOptions","passive","addListener","removeListener","fromNativeEvent","native","nodeListContains","nodeList","contains","createAttachObserver","observer","MutationObserver","entries","trigger","addedNodes","removedNodes","observe","childList","subtree","createDetachObserver","drpListeningCharts","oldDevicePixelRatio","onWindowResize","dpr","listenDevicePixelRatioChanges","unlistenDevicePixelRatioChanges","createResizeObserver","ResizeObserver","contentRect","releaseObserver","disconnect","createProxyAndListen","removeAttribute","setAttribute","proxies","$proxies","handlers","attach","detach","isConnected","_detectPlatform","OffscreenCanvas","final","defaultRoutes","formatters","tickValue","notation","maxTick","calculateDelta","logDelta","numDecimal","minimumFractionDigits","maximumFractionDigits","numeric","Ticks","autoSkip","tickOpts","ticksLimit","maxTicksLimit","determineMaxTicks","majorIndices","major","enabled","getMajorIndices","numMajorIndices","first","newTicks","skipMajors","calculateSpacing","avgMajorSpacing","tickLength","_tickSize","maxScale","maxChart","_maxLength","evenMajorSpacing","getEvenSpacing","factors","ceil","majorStart","majorEnd","diff","drawBorder","drawOnChartArea","drawTicks","tickWidth","tickColor","minRotation","maxRotation","mirror","textStrokeWidth","textStrokeColor","autoSkipPadding","labelOffset","minor","crossAlign","showLabelBackdrop","backdropColor","backdropPadding","route","reverseAlign","offsetFromEdge","numItems","increment","getPixelForGridLine","offsetGridLines","validIndex","lineValue","caches","getTickMarkLength","getTitleHeight","createScaleContext","createTickContext","titleAlign","titleArgs","titleX","titleY","positionAxisID","_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","beforeBuildTicks","buildTicks","afterBuildTicks","samplingEnabled","_convertTicksToLabels","beforeCalculateLabelRotation","calculateLabelRotation","afterCalculateLabelRotation","afterAutoSkip","beforeFit","fit","afterFit","afterUpdate","reversePixels","_alignToPixels","alignToPixels","notifyPlugins","_callHooks","beforeTickToLabelConversion","afterTickToLabelConversion","numTicks","maxLabelDiagonal","_isVisible","labelSizes","_getLabelSizes","maxLabelWidth","widest","maxLabelHeight","highest","asin","titleOpts","gridOpts","titleHeight","tickPadding","angleRadians","labelHeight","labelWidth","_calculatePadding","_handleMargins","isRotated","labelsBelowTicks","offsetLeft","offsetRight","generateTickLabels","_computeLabelSizes","widths","heights","tickFont","fontString","nestedLabel","widestLabelSize","highestLabelSize","_resolveTickFontOptions","valueAt","decimal","getBaseValue","optionTicks","rot","ticksLength","tl","borderOpts","axisWidth","axisHalfWidth","alignBorderValue","borderValue","alignedLineValue","tx1","ty1","tx2","ty2","x1","y1","x2","y2","step","optsAtIndex","lineColor","tickBorderDash","tickBorderDashOffset","tickAndPadding","hTickAndPadding","lineCount","textOffset","_getXAxisLabelAlignment","_getYAxisLabelAlignment","halfCount","backdrop","tickTextAlign","labelPadding","fillRect","findIndex","_computeGridLineItems","drawLine","setLineDash","lineDashOffset","lastLineWidth","_computeLabelArea","_computeLabelItems","drawBackground","drawGrid","drawTitle","drawLabels","tz","gz","axisID","fontSize","isPrototypeOf","parentScope","isIChartComponent","registerDefaults","itemDefaults","routeDefaults","routes","propertyParts","sourceName","sourceScope","parts","_typedRegistries","_each","_get","typedRegistry","reg","_getRegistryForType","isForType","_exec","itemReg","registry","camelMethod","_init","hook","_createDescriptors","plugin","cancelable","_oldCache","_notifyStateChanges","allPlugins","createDescriptors","previousDescriptors","getPlugin","getOpts","pluginOpts","pluginScopeKeys","getIndexAxis","datasetDefaults","datasetOptions","getAxisFromDefaultScaleID","getDefaultScaleIDFromAxis","axisFromPosition","determineAxis","scaleOptions","mergeScaleConfig","chartDefaults","configScales","chartIndexAxis","firstIDs","scaleConf","defaultId","defaultScaleOptions","defaultID","initOptions","initData","initConfig","keyCache","keysCached","cachedKeys","generate","addIfFound","_config","_scopeCache","_resolverCache","clearCache","clear","datasetType","additionalOptionScopes","mainScope","resetCache","keyLists","_cachedScopes","subPrefixes","getResolver","needContext","subResolver","resolverCache","hasFunction","version","KNOWN_POSITIONS","positionIsHorizontal","compare2Level","l1","onAnimationsComplete","animationOptions","onComplete","onAnimationProgress","onProgress","getCanvas","getElementById","instances","getChart","moveNumericKeys","intKey","determineLastEvent","lastEvent","inChartArea","isClick","userConfig","initialCanvas","existingChart","chartOptionScopes","updateConfig","acquireContext","_options","_aspectRatio","_metasets","_lastEvent","_listeners","_responsiveListeners","_sortedMetasets","_plugins","_hiddenIndices","attached","_doResize","resizeDelay","listen","_initialize","bindEvents","_resizeBeforeDraw","_resize","newSize","newRatio","onResize","scalesOptions","axisOptions","scaleOpts","isRadial","dposition","dtype","scaleType","scaleClass","getScale","init","hasUpdated","addBox","_destroyDatasetMeta","newControllers","_removeUnreferencedMetasets","updateIndex","ControllerClass","getController","getElement","_updateMetasets","_resetElements","animsDisabled","_updateScales","_checkEventBindings","_updateHiddenIndices","invalidate","buildOrUpdateControllers","buildOrUpdateElements","_minPadding","_updateLayout","_updateDatasets","_eventHandler","_updateHoverStyles","removeBox","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","_remove","detached","isAttached","activeElements","lastActive","notify","replay","hoverOptions","deactivated","activated","updateHoverStyle","eventFilter","_handleEvent","_getActiveElements","getElementsAtEventForMode","invalidatePlugins","clipArc","pixelMargin","angleMargin","toRadiusCorners","parseBorderRadius$1","angleDelta","borderRadius","halfThickness","innerLimit","computeOuterLimit","outerArcLimit","outerStart","outerEnd","innerStart","innerEnd","rThetaToXY","theta","pathArc","innerR","spacingOffset","alpha","noSpacingInnerRadius","noSpacingOuterRadius","avNogSpacingRadius","adjustedAngle","beta","angleOffset","outerStartAdjustedRadius","outerEndAdjustedRadius","outerStartAdjustedAngle","outerEndAdjustedAngle","innerStartAdjustedRadius","innerEndAdjustedRadius","innerStartAdjustedAngle","innerEndAdjustedAngle","pCenter","p4","p8","drawArc","fullCircles","drawFullCircleBorders","inner","lineJoin","chartX","chartY","rAdjust","betweenAngles","withinRadius","halfAngle","halfRadius","radiusOffset","setStyle","lineCap","getLineMethod","stepped","pathVars","paramsStart","paramsEnd","segmentStart","segmentEnd","outside","pathSegment","lineMethod","fastPathSegment","prevX","lastY","avgX","countX","pointIndex","drawX","truncX","_getSegmentMethod","useFastPath","_getInterpolationMethod","strokePathWithCache","path","_path","Path2D","strokePathDirect","segmentMethod","usePath2D","_points","_segments","_pointsUpdated","_interpolate","interpolated","inRange$1","hitRadius","mouseX","mouseY","hoverRadius","getBarBounds","bar","half","skipOrLimit","parseBorderWidth","maxW","maxH","parseBorderRadius","maxR","enableBorder","boundingRects","outer","skipX","skipY","skipBoth","hasRadius","addNormalRectPath","inflateRect","refRect","addRectPath","ArcElement","LineElement","PointElement","BarElement","lttbDecimation","samples","decimated","bucketWidth","sampledIndex","endIndex","maxAreaPoint","maxArea","nextA","avgY","avgRangeStart","avgRangeEnd","avgRangeLength","rangeOffs","rangeTo","pointAx","pointAy","minMaxDecimation","minIndex","maxIndex","xMin","xMax","dx","intermediateIndex1","intermediateIndex2","cleanDecimatedDataset","cleanDecimatedData","getStartAndCountOfVisiblePointsSimplified","plugin_decimation","algorithm","beforeElementsUpdate","xAxis","threshold","tpoints","_findSegmentEnd","_getBounds","targetSegments","tgt","subBounds","fillSources","fillSource","_getEdge","_pointsFromSegments","boundary","linePoints","_createBoundaryLine","_resolveTarget","propagate","visited","_decodeFill","parseFillOption","decodeTargetIndex","firstCh","_getTargetPixel","_getTargetValue","fillOption","_buildStackLine","sourcePoints","linesBelow","getLinesBelow","addPointsBelow","below","sourcePoint","postponed","findPoint","pointValue","firstValue","lastValue","getLineByIndex","computeBoundary","computeCircularBoundary","computeLinearBoundary","_drawfill","lineOpts","above","doFill","clipVertical","clipY","lineLoop","notShape","clipBounds","interpolatedLineTo","targetLoop","interpolatedPoint","_args","$filler","drawTime","getBoxSize","labelOpts","boxHeight","boxWidth","usePointStyle","itemHeight","itemsEqual","_added","legendHitBoxes","_hoveredItem","doughnutMode","legendItems","columnSizes","lineWidths","buildLabels","generateLabels","labelFont","_computeTitleHeight","_fitRows","_fitCols","hitboxes","totalHeight","heightLimit","totalWidth","currentColWidth","currentColHeight","col","rtlHelper","hitbox","leftForLtr","_draw","defaultColor","fontColor","halfFontSize","cursor","drawLegendBox","lineDash","drawOptions","SQRT2","xPlus","yBoxTop","xBoxLeft","textDirection","setWidth","realX","titleFont","titlePadding","topPaddingPlusHalfFontSize","hitBox","lh","isListened","hoveredItem","_getLegendItemAt","sameItem","onLeave","plugin_legend","_element","adjustHitBoxes","handleEvent","ci","_padding","textSize","fontOpts","_drawArgs","createTitle","titleBlock","plugin_title","WeakMap","plugin_subtitle","positioners","hasValue","tooltipPosition","eventPosition","nearestElement","tp","pushOrConcat","toPush","splitNewlines","createTooltipItem","getLabelAndValue","getTooltipSize","footer","bodyFont","footerFont","titleLineCount","footerLineCount","bodyLineItemCount","combinedBodyLength","bodyItem","before","after","beforeBody","afterBody","titleSpacing","titleMarginBottom","bodyLineHeight","displayColors","bodySpacing","footerMarginTop","footerSpacing","widthPadding","maxLineWidth","determineYAlign","doesNotFitWithAlign","xAlign","caretSize","caretPadding","determineXAlign","yAlign","chartWidth","determineAlignment","alignX","alignY","paddingAndSize","getBackgroundPoint","alignment","getAlignedX","getBeforeAfterBodyLines","createTooltipContext","tooltipItems","overrideCallbacks","opacity","_eventPosition","_size","_cachedAnimations","_tooltipItems","caretX","caretY","labelColors","labelPointStyles","labelTextColors","beforeTitle","afterTitle","bodyItems","scoped","beforeLabel","afterLabel","beforeFooter","afterFooter","itemSort","labelColor","labelPointStyle","labelTextColor","_createItems","getBeforeBody","getBody","getAfterBody","getFooter","positionAndSize","backgroundPoint","external","tooltipPoint","caretPosition","getCaretPosition","x3","y3","ptX","ptY","titleColor","colorX","rtlColorX","yOffSet","colorY","multiKeyBackground","outerX","innerX","strokeRect","bodyAlign","xLinePadding","fillLineOfText","bodyAlignForCalculation","textColor","bodyColor","_drawColorBox","footerAlign","footerColor","tooltipSize","drawCaret","quadraticCurveTo","animX","animY","_updateAnimationTarget","hasTooltipContent","globalAlpha","drawBody","drawFooter","positionChanged","_positionChanged","_ignoreReplayEvents","plugin_tooltip","_willRender","labelCount","Decimation","Filler","Legend","SubTitle","Title","Tooltip","addIfString","addedLabels","findOrAddLabel","_startValue","_valueRange","_addedLabels","added","getDecimalForPixel","generateTicks$1","generationOptions","dataRange","MIN_SPACING","precision","maxTicks","maxDigits","includeBounds","maxSpaces","rmin","rmax","countDefined","minSpacing","niceMin","niceMax","numSpaces","decimalPlaces","relativeLabelSize","_endValue","setMin","setMax","minSign","maxSign","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","stepSize","computeTickLimit","getTickLimit","numericGeneratorOptions","_maxDigits","handleTickRangeOptions","isMajor","tickVal","generateTicks","endExp","endSignificand","exp","significand","lastTick","_zero","getTickBackdropHeight","measureLabelSize","determineLimits","fitWithPointLabels","limits","valueCount","_pointLabels","pointLabelOpts","additionalAngle","centerPointLabels","getPointLabelContext","getPointPosition","drawingArea","plFont","hLimits","vLimits","updateLimits","setCenterPoint","_pointLabelItems","buildPointLabelItems","extra","outerDistance","pointLabelPosition","yForAngle","getTextAlignForAngle","leftForTextAlign","drawPointLabels","backdropLeft","backdropTop","backdropWidth","backdropHeight","pathRadiusLine","drawRadiusLine","gridLineOpts","createPointLabelContext","logarithmic","leftMovement","rightMovement","topMovement","bottomMovement","angleMultiplier","scalingFactor","scaledDistance","pointLabel","distanceFromCenter","animate","INTERVALS","millisecond","common","steps","second","minute","hour","day","week","month","quarter","year","UNITS","sorter","adapter","_adapter","isoWeekday","_parseOpts","startOf","determineUnitForAutoTicks","minUnit","capacity","interval","determineUnitForFormatting","determineMajorUnit","addTick","time","timestamps","setMajorTicks","majorUnit","ticksFromTimestamps","_unit","_majorUnit","_offsets","_normalized","displayFormats","formats","normalized","_applyBounds","_getLabelBounds","endOf","getLabelTimestamps","timeOpts","_generate","_getLabelCapacity","initOffsets","offsetAfterAutoskip","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","CategoryScale","LinearScale","LogarithmicScale","RadialLinearScale","TimeScale","registerables","segmentColors","chartContainerStyle","newData","oldData","newLabels","oldLabels","renderChart","destroy","handleChartSegmentClick","clickEventPositionDataList","clickEventPositionData","segmentIndex","donutChart","Chart","VBadge","StatisticsBreakdownSummaryDataPoint","DonutGraph","orderBy","listOfGraphDataPoints","hasGraphData","flat","toggleSelectionBasedOnChartSegmentClicked","_this$orderedDataPoin","selectionKey","alreadySelected","button","_params$key","_params$order","getSummaryText","getGraphValue","invoiceCenterGraphData","VAutocomplete","invoiceCenters","loadInvoiceCenterDetails","invoiceCenterId","maxDate","datePickerInput","isGraphLoading","hasSelectedInvoiceCenter","invoiceCenter","_data$pendingCount","_data$candidateCount","_data$clientCount","pendingCount","candidateCount","clientCount","getLastFridaysDate","today","getDate","getDay","lastFriday","setDate","YYYYMMDD","getInvoiceCenterDetails","dateUntil","baseMixins","Colorable","RegistrableInject","VTreeviewNodeProps","activatable","disablePerNode","expandIcon","itemChildren","itemDisabled","itemKey","itemText","loadChildren","Function","loadingIcon","openOnClick","selectable","selectedColor","shaped","VTreeviewNode","inject","treeview","parentIsDisabled","hasLoaded","isIndeterminate","isOpen","isSelected","getObjectValueByPath","children","child","isExcluded","scopedProps","leaf","selected","open","hasChildren","beforeDestroy","checkChildren","updateOpen","emitOpen","slot","genPrependSlot","prepend","genAppendSlot","append","genContent","genToggle","click","updateSelected","emitSelected","genLevel","createRange","genNode","updateActive","emitActive","genChild","genChildrenWrapper","genTransition","VExpandTransition","filterTreeItem","textKey","toLocaleLowerCase","filterTreeItems","idKey","childrenKey","excluded","Themeable","hoverable","multipleActive","openAll","returnObject","activeCache","openCache","selectedCache","excludedItems","oldKeys","newKeys","getKeys","arrayDiff","oldSelectedCache","buildTree","deepEqual","handleNodeCacheWatcher","getValue","$slots","_a","oldNode","vnode","calculateState","updateVnodeState","counts","emitNodeCache","emitFn","old","getDescendants","descendants","getParents","parents","isParent","isForced","descendant","calculated","themeClasses","compDateUntil","operation","actionProcessed","loadingBookingIds","submitBulkAction","mapState","flyout","invoiceCenterDateUntil","ddddDDMMMMYYYY","bulkActions","resetInvoiceCenterCounterAfterInsert","loadingOp"],"mappings":"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","file":"js/chunk-152054f9.a5124b77.js","sourcesContent":["/**\n * Describes different types of events fired from the promise dialog\n */\nexport default Object.freeze({\n /**\n * A confirmation or submit response\n */\n OK: 'ok',\n /**\n * Indicating that the dialog should be closed\n */\n Cancel: 'cancel',\n})\n","import { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\n\nvar render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('PromiseDialog',{ref:\"disputeConfirmationDialog\",scopedSlots:_vm._u([{key:\"title\",fn:function(){return [_c(VCardTitle,{staticClass:\"font-weight-medium\"},[_vm._v(\" Confirm Resolution \")]),_c(VDivider)]},proxy:true},{key:\"text\",fn:function(){return [_c(VCardText,{staticClass:\"text-left mt-4 ws-pre-wrap\"},[_c('p',{staticClass:\"mb-0 text-subtitle-1 font-weight-medium\"},[_vm._v(_vm._s(_vm.compSelectionText))]),_c('ul',_vm._l((_vm.compChangesList),function(change,index){return _c('li',{key:index},[_vm._v(\" \"+_vm._s(change)+\" \")])}),0)])]},proxy:true}])})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./dispute-resolution-confirmation-dialog.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./dispute-resolution-confirmation-dialog.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./dispute-resolution-confirmation-dialog.vue?vue&type=template&id=318dabee\"\nimport script from \"./dispute-resolution-confirmation-dialog.vue?vue&type=script&lang=js\"\nexport * from \"./dispute-resolution-confirmation-dialog.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { VCol } from 'vuetify/lib/components/VGrid';\nimport { VRow } from 'vuetify/lib/components/VGrid';\n\nvar render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('div',[_c('DisputeDialogBookingDetails'),_c(VRow,{staticClass:\"mb-4\"},[_c(VCol,{attrs:{\"cols\":\"12\",\"md\":\"6\"}},[_c('DisputeDialogClientInfoCard')],1),_c(VCol,{attrs:{\"cols\":\"12\",\"md\":\"6\"}},[_c('DisputeDialogCandidateInfoCard')],1)],1),_c('DisputeDialogBookingHistory')],1):_c('Spinner',{staticClass:\"mt-10\",attrs:{\"size\":\"60\"}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { VAlert } from 'vuetify/lib/components/VAlert';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VRow } from 'vuetify/lib/components/VGrid';\n\nvar render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c(VAlert,{class:['rounded-lg mt-2 grey', _vm.isDarkMode ? 'darken-5' : 'lighten-5']},[_c(VRow,{class:['align-center py-2', _vm.isDarkMode ? '' : 'black--text']},[_c(VCol,{attrs:{\"cols\":\"12\",\"md\":\"4\",\"sm\":\"12\"}},[_c('h3',{staticClass:\"font-weight-medium\",staticStyle:{\"position\":\"relative\",\"top\":\"6px\",\"margin-bottom\":\"20px\"}},[_vm._v(_vm._s(_vm.bookingDate))]),_c('p',{staticClass:\"mb-0\"},[_vm._v(_vm._s(_vm.startTime)+\" - \"+_vm._s(_vm.endTime))]),_c('BaseLink',{staticClass:\"text-body-2\",attrs:{\"href\":_vm.returnBookingUrl(_vm.timesheet.bookingId),\"color\":\"primary\",\"title\":_vm.$t('general.link.viewBookingTooltip'),\"allow-insecure\":\"\"}},[_vm._v(\"#\"+_vm._s(_vm.timesheet.bookingId))])],1),_c(VCol,{class:[_vm.isLargeOrHigher ? 'text-right' : ''],attrs:{\"cols\":\"12\",\"md\":\"8\",\"sm\":\"12\"}},[_c(VBtn,{staticClass:\"px-12\",style:(_vm.hasSelectedMostRecentTimesheetSubmission\n ? { background: _vm.isDarkMode ? '' : 'white' }\n : null),attrs:{\"depressed\":\"\",\"outlined\":_vm.hasSelectedMostRecentTimesheetSubmission,\"color\":\"primary\"},on:{\"click\":_vm.selectMostRecentTimesheet}},[(_vm.hasSelectedMostRecentTimesheetSubmission)?_c(VIcon,{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-check\")]):_vm._e(),_vm._v(\" \"+_vm._s(_vm.compButtonText)+\" \")],1),_c('p',{staticClass:\"mt-2 mb-0\",attrs:{\"data-testid\":\"dispute-dialog-booking-details-latest-submission\"}},[_vm._v(\" \"+_vm._s(_vm.compMostRecentText)+\" \")]),_c('p',{staticClass:\"mb-0 text-body-2\"},[_vm._v(\" \"+_vm._s(_vm.compChangesText)+\" \")])],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export default function formatTime(timeString) {\n const [hours, minutes] = timeString.split(':')\n const period = parseInt(hours, 10) < 12 ? 'am' : 'pm'\n let formattedHours = parseInt(hours, 10) % 12\n\n formattedHours = formattedHours === 0 ? 12 : formattedHours\n\n return `${formattedHours}:${minutes} ${period}`\n}\n","\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./dispute-dialog-booking-details.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./dispute-dialog-booking-details.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./dispute-dialog-booking-details.vue?vue&type=template&id=70d96160\"\nimport script from \"./dispute-dialog-booking-details.vue?vue&type=script&lang=js\"\nexport * from \"./dispute-dialog-booking-details.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\n\nvar render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c(VCard,{staticClass:\"rounded-lg\",attrs:{\"elevation\":\"0\"}},[_c(VCardText,[_c('InfoLabel',{staticClass:\"info-label__client-name\",scopedSlots:_vm._u([{key:\"label\",fn:function(){return [_c('p',{staticClass:\"mb-0 font-weight-medium\"},[_c('BaseLink',{class:_vm.isDarkMode ? 'white--text' : 'black--text',attrs:{\"href\":_vm.returnClientUrl(_vm.timesheet.client.id),\"title\":_vm.$t('general.link.viewClientTooltip'),\"allow-insecure\":\"\"}},[_vm._v(_vm._s(_vm.timesheet.client.name))])],1)]},proxy:true}])},[_c('p',{staticClass:\"mb-0 font-weight-medium opacity-5\"},[_vm._v(_vm._s(_vm.timesheet.client.payType))])]),_c('InfoLabel',{staticClass:\"my-4\",attrs:{\"label\":_vm.$t('dispute.clientInfo.clientOwnerLabel')}},[_c('p',{staticClass:\"mb-0 font-weight-medium\"},[_vm._v(_vm._s(_vm.timesheet.client.owner.name))])]),_c('InfoLabel',{attrs:{\"label\":_vm.$t('dispute.clientInfo.clientTypeLabel')}},[_c('p',{staticClass:\"mb-0 font-weight-medium\"},[_vm._v(_vm._s(_vm.timesheet.client.type.name))])])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./dispute-dialog-client-info-card.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./dispute-dialog-client-info-card.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./dispute-dialog-client-info-card.vue?vue&type=template&id=4db8995d&scoped=true\"\nimport script from \"./dispute-dialog-client-info-card.vue?vue&type=script&lang=js\"\nexport * from \"./dispute-dialog-client-info-card.vue?vue&type=script&lang=js\"\nimport style0 from \"./dispute-dialog-client-info-card.vue?vue&type=style&index=0&id=4db8995d&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4db8995d\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('CandidateInfoCard',{attrs:{\"id\":_vm.timesheet.candidate.id,\"name\":_vm.timesheet.candidate.name,\"email\":_vm.timesheet.candidate.email,\"phone-numbers\":_vm.compPhoneNumberList}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\n\nvar render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c(VCard,{staticClass:\"elevation-0 rounded-lg\",attrs:{\"outlined\":\"\"}},[_c(VCardTitle,{staticClass:\"d-flex align-center\"},[_c('UserAvatar',{attrs:{\"name\":_vm.name}}),_c('p',{staticClass:\"mb-0 ml-4 text-subtitle-2 font-weight-medium\"},[_c('BaseLink',{class:_vm.isDarkMode ? 'white--text' : 'black--text',attrs:{\"href\":_vm.returnCandidateUrl(_vm.id),\"title\":_vm.$t('general.link.viewCandidateTooltip'),\"allow-insecure\":\"\"}},[_vm._v(_vm._s(_vm.name))])],1)],1),_c(VCardText,[(_vm.email)?_c('InfoLabel',{staticClass:\"mb-4 mt-4\",attrs:{\"label\":_vm.$t('forms.labels.email')}},[_c('BaseLink',{attrs:{\"href\":(\"mailto:\" + _vm.email),\"target\":\"_self\",\"hide-external-icon\":\"\"}},[_vm._v(_vm._s(_vm.email))])],1):_vm._e(),(_vm.hasPhoneNumbers)?_c('InfoLabel',{attrs:{\"label\":_vm.$t('forms.labels.contactNumbers')}},_vm._l((_vm.phoneNumbers),function(phoneNumber,index){return _c('BaseLink',{key:phoneNumber + index,attrs:{\"href\":(\"tel:\" + phoneNumber),\"target\":\"_self\",\"hide-external-icon\":\"\"}},[_vm._v(_vm._s(phoneNumber))])}),1):_vm._e()],1),_vm._t(\"actions\")],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./candidate-info-card.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./candidate-info-card.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./candidate-info-card.vue?vue&type=template&id=35c6775f\"\nimport script from \"./candidate-info-card.vue?vue&type=script&lang=js\"\nexport * from \"./candidate-info-card.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./dispute-dialog-candidate-info-card.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./dispute-dialog-candidate-info-card.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./dispute-dialog-candidate-info-card.vue?vue&type=template&id=74d33c12\"\nimport script from \"./dispute-dialog-candidate-info-card.vue?vue&type=script&lang=js\"\nexport * from \"./dispute-dialog-candidate-info-card.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('CommentList',{attrs:{\"title\":_vm.$t('dispute.history.title'),\"comments\":_vm.compBookingHistoryComments},scopedSlots:_vm._u([{key:\"prepend\",fn:function(){return [_c('DisputeDialogBookingHistorySubmissionAlert')]},proxy:true}])})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { VAlert } from 'vuetify/lib/components/VAlert';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\n\nvar render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.showAlert)?_c(VAlert,{staticClass:\"mt-4 rounded-lg text-body-2\",attrs:{\"dense\":\"\",\"color\":\"grey lighten-2\",\"outlined\":\"\",\"text\":\"\"}},[_c(VIcon,{attrs:{\"left\":\"\",\"size\":\"20\"}},[_vm._v(\"mdi-alert-circle-outline\")]),_c('span',{class:[_vm.isDarkMode ? 'white--text' : 'black--text'],attrs:{\"data-testid\":\"booking-history-submission-alert-text\"}},[_vm._v(\" \"+_vm._s(_vm.compAlertText))])],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./dispute-dialog-booking-history-submission-alert.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./dispute-dialog-booking-history-submission-alert.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./dispute-dialog-booking-history-submission-alert.vue?vue&type=template&id=5fe05f26\"\nimport script from \"./dispute-dialog-booking-history-submission-alert.vue?vue&type=script&lang=js\"\nexport * from \"./dispute-dialog-booking-history-submission-alert.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./dispute-dialog-booking-history.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./dispute-dialog-booking-history.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./dispute-dialog-booking-history.vue?vue&type=template&id=2f030738\"\nimport script from \"./dispute-dialog-booking-history.vue?vue&type=script&lang=js\"\nexport * from \"./dispute-dialog-booking-history.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./disputes-dialog-content.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./disputes-dialog-content.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./disputes-dialog-content.vue?vue&type=template&id=e3527cbe\"\nimport script from \"./disputes-dialog-content.vue?vue&type=script&lang=js\"\nexport * from \"./disputes-dialog-content.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { VAvatar } from 'vuetify/lib/components/VAvatar';\nimport { VChip } from 'vuetify/lib/components/VChip';\n\nvar render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{on:{\"click\":function($event){$event.stopPropagation();}}},[_c('a',{staticClass:\"clientInfoLink\",attrs:{\"href\":_vm.getHref(),\"target\":\"_blank\"}},[_c(VChip,{staticClass:\"my-2 mr-2 max-width-chip client-chip\",attrs:{\"color\":_vm.isDarkMode ? 'grey lighten-1' : 'white',\"text-color\":_vm.isDarkMode ? '' : 'grey darken-4'}},[_c(VAvatar,{class:[_vm.isDarkMode ? 'grey darken-1' : 'grey lighten-5'],attrs:{\"left\":\"\"}},[_c('div',{staticStyle:{\"font-size\":\"0.75em\"}},[_vm._v(_vm._s(_vm.getClassType[0]))])]),_vm._v(\" \"+_vm._s(_vm.getTitle)+\" \")],1)],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./client-details-list-item.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./client-details-list-item.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./client-details-list-item.vue?vue&type=template&id=8796c83c&scoped=true\"\nimport script from \"./client-details-list-item.vue?vue&type=script&lang=js\"\nexport * from \"./client-details-list-item.vue?vue&type=script&lang=js\"\nimport style0 from \"./client-details-list-item.vue?vue&type=style&index=0&id=8796c83c&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"8796c83c\",\n null\n \n)\n\nexport default component.exports","// Components\nimport VToolbar from './VToolbar'\n\n// Utilities\nimport { createSimpleFunctional } from '../../util/helpers'\n\nconst VToolbarTitle = createSimpleFunctional('v-toolbar__title')\nconst VToolbarItems = createSimpleFunctional('v-toolbar__items')\n\nexport {\n VToolbar,\n VToolbarItems,\n VToolbarTitle,\n}\n\nexport default {\n $_vuetify_subcomponents: {\n VToolbar,\n VToolbarItems,\n VToolbarTitle,\n },\n}\n","import { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\n\nvar render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"cursor-help\"},[_c(VTooltip,{attrs:{\"top\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c(VIcon,_vm._g(_vm._b({},'v-icon',attrs,false),on),[_vm._v(\"mdi-check\")])]}}])},[_c('span',{staticClass:\"ws-pre-wrap\"},[_vm._v(_vm._s(_vm.compTooltipText))])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./disputes-table-submitted-indicator.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./disputes-table-submitted-indicator.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./disputes-table-submitted-indicator.vue?vue&type=template&id=1e0ab3c1\"\nimport script from \"./disputes-table-submitted-indicator.vue?vue&type=script&lang=js\"\nexport * from \"./disputes-table-submitted-indicator.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { VProgressCircular } from 'vuetify/lib/components/VProgressCircular';\n\nvar render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"w-full d-flex justify-center items-center\"},[_c(VProgressCircular,{attrs:{\"indeterminate\":\"\",\"color\":_vm.colour,\"size\":_vm.size}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./spinner.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./spinner.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./spinner.vue?vue&type=template&id=cd27bca4\"\nimport script from \"./spinner.vue?vue&type=script&lang=js\"\nexport * from \"./spinner.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","// Components\nimport VInput from '../VInput/VInput'\n\n// Mixins\nimport mixins from '../../util/mixins'\nimport BindsAttrs from '../../mixins/binds-attrs'\nimport { provide as RegistrableProvide } from '../../mixins/registrable'\n\n// Helpers\nimport { VNode } from 'vue'\nimport { getSlot } from '../../util/helpers'\n\ntype ErrorBag = Record\ntype VInputInstance = InstanceType\ntype Watchers = {\n _uid: number\n valid: () => void\n shouldValidate: () => void\n}\n\n/* @vue/component */\nexport default mixins(\n BindsAttrs,\n RegistrableProvide('form')\n /* @vue/component */\n).extend({\n name: 'v-form',\n\n provide (): object {\n return { form: this }\n },\n\n inheritAttrs: false,\n\n props: {\n disabled: Boolean,\n lazyValidation: Boolean,\n readonly: Boolean,\n value: Boolean,\n },\n\n data: () => ({\n inputs: [] as VInputInstance[],\n watchers: [] as Watchers[],\n errorBag: {} as ErrorBag,\n }),\n\n watch: {\n errorBag: {\n handler (val) {\n const errors = Object.values(val).includes(true)\n\n this.$emit('input', !errors)\n },\n deep: true,\n immediate: true,\n },\n },\n\n methods: {\n watchInput (input: any): Watchers {\n const watcher = (input: any): (() => void) => {\n return input.$watch('hasError', (val: boolean) => {\n this.$set(this.errorBag, input._uid, val)\n }, { immediate: true })\n }\n\n const watchers: Watchers = {\n _uid: input._uid,\n valid: () => {},\n shouldValidate: () => {},\n }\n\n if (this.lazyValidation) {\n // Only start watching inputs if we need to\n watchers.shouldValidate = input.$watch('shouldValidate', (val: boolean) => {\n if (!val) return\n\n // Only watch if we're not already doing it\n if (this.errorBag.hasOwnProperty(input._uid)) return\n\n watchers.valid = watcher(input)\n })\n } else {\n watchers.valid = watcher(input)\n }\n\n return watchers\n },\n /** @public */\n validate (): boolean {\n return this.inputs.filter(input => !input.validate(true)).length === 0\n },\n /** @public */\n reset (): void {\n this.inputs.forEach(input => input.reset())\n this.resetErrorBag()\n },\n resetErrorBag () {\n if (this.lazyValidation) {\n // Account for timeout in validatable\n setTimeout(() => {\n this.errorBag = {}\n }, 0)\n }\n },\n /** @public */\n resetValidation () {\n this.inputs.forEach(input => input.resetValidation())\n this.resetErrorBag()\n },\n register (input: VInputInstance) {\n this.inputs.push(input)\n this.watchers.push(this.watchInput(input))\n },\n unregister (input: VInputInstance) {\n const found = this.inputs.find(i => i._uid === input._uid)\n\n if (!found) return\n\n const unwatch = this.watchers.find(i => i._uid === found._uid)\n if (unwatch) {\n unwatch.valid()\n unwatch.shouldValidate()\n }\n\n this.watchers = this.watchers.filter(i => i._uid !== found._uid)\n this.inputs = this.inputs.filter(i => i._uid !== found._uid)\n this.$delete(this.errorBag, found._uid)\n },\n },\n\n render (h): VNode {\n return h('form', {\n staticClass: 'v-form',\n attrs: {\n novalidate: true,\n ...this.attrs$,\n },\n on: {\n submit: (e: Event) => this.$emit('submit', e),\n },\n }, getSlot(this))\n },\n})\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"infoLabelStyling\":\"info-label_infoLabelStyling_1MbzD\"};","import $date from '@/services/date'\n\nexport default function formatDate(date, format = 'll') {\n return $date(date).format(format)\n}\n","import { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VOverlay } from 'vuetify/lib/components/VOverlay';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\n\nvar render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c(VDialog,{attrs:{\"data-testid\":\"side-drawer-dialog\",\"value\":_vm.show,\"transition\":_vm.compTransition,\"fullscreen\":\"\",\"hide-overlay\":\"\",\"persistent\":\"\",\"no-click-animation\":\"\",\"scrollable\":\"\"}},[_c(VRow,{staticClass:\"fill-height\",attrs:{\"no-gutters\":\"\"}},[_c(VCol,_vm._b({attrs:{\"cols\":\"0\",\"data-testid\":\"side-drawer-dialog-overlay\"},on:{\"click\":function($event){!_vm.persistent ? _vm.close() : null}}},'v-col',_vm.compOverlayColumns,false)),_c(VCol,_vm._b({staticClass:\"fill-height\",attrs:{\"cols\":\"12\"}},'v-col',_vm.compDialogColumns,false),[_c(VCard,{staticClass:\"fill-height d-flex flex-column\",attrs:{\"tile\":\"\"}},[_vm._t(\"header\",[_c('StyledDialogHeader',{attrs:{\"description\":_vm.compDescription,\"loading\":_vm.loading,\"title\":_vm.title},on:{\"close\":_vm.close}})],{\"close\":_vm.close}),_c(VCardText,{class:[\n 'flex-grow-1 fill-height overflow-auto',\n _vm.noGutters ? 'pa-0' : 'px-sm-8 px-xs-0 pt-4' ]},[_vm._t(\"default\")],2),(!_vm.hideActions)?_c(VCardActions,{staticClass:\"px-sm-8 pb-sm-4 px-xs-4 pb-xs-4\"},[_vm._t(\"actions\",[_c(VSpacer),_c(VBtn,{attrs:{\"data-testid\":\"side-drawer-dialog-close-btn\",\"large\":!_vm.isMediumOrLower,\"text\":\"\"},on:{\"click\":_vm.close}},[_vm._v(\" \"+_vm._s(_vm.$t('general.close'))+\" \")])],{\"close\":_vm.close})],2):_vm._e()],2)],1)],1)],1),_c(VOverlay,{attrs:{\"value\":_vm.show,\"z-index\":\"10\"}}),_c('PromiseDialog',{ref:\"dialog\"})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import DOMPurify from 'dompurify'\nimport { marked } from 'marked'\n\nexport default function markdownToHtmlConverter(markdownString) {\n return DOMPurify.sanitize(marked.parse(markdownString), {\n USE_PROFILES: { html: true },\n })\n}\n","import { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VToolbar } from 'vuetify/lib/components/VToolbar';\nimport { VToolbarTitle } from 'vuetify/lib/components/VToolbar';\n\nvar render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:[\n 'styled-dialog-header__header pa-sm-4',\n _vm.hasDescription ? '' : 'overflow-hidden' ],staticStyle:{\"position\":\"relative\"}},[_c(VToolbar,{staticClass:\"transparent mb-0 styled-dialog-header__toolbar\",attrs:{\"flat\":\"\",\"dark\":\"\"}},[_c(VToolbarTitle,{class:_vm.compTitleClass,attrs:{\"title\":_vm.title}},[(!_vm.loading)?_c('span',[_vm._v(_vm._s(_vm.title))]):_vm._e()]),_c(VSpacer),_c(VBtn,{attrs:{\"title\":_vm.$t('general.close'),\"icon\":\"\",\"small\":_vm.isSmallOrLower,\"data-testid\":\"styled-dialog-header-icon-close-btn\"},on:{\"click\":function($event){return _vm.$emit('close')}}},[_c(VIcon,[_vm._v(\"mdi-close\")])],1)],1),(_vm.hasDescription)?_c('p',{directives:[{name:\"sanitized-html\",rawName:\"v-sanitized-html\",value:(_vm.description),expression:\"description\"}],staticClass:\"mb-0 px-4 white--text styled-dialog-header__description\",attrs:{\"data-testid\":\"styled-dialog-header-description\"}}):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./styled-dialog-header.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./styled-dialog-header.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./styled-dialog-header.vue?vue&type=template&id=20c5c1a7&scoped=true\"\nimport script from \"./styled-dialog-header.vue?vue&type=script&lang=js\"\nexport * from \"./styled-dialog-header.vue?vue&type=script&lang=js\"\nimport style0 from \"./styled-dialog-header.vue?vue&type=style&index=0&id=20c5c1a7&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"20c5c1a7\",\n null\n \n)\n\nexport default component.exports","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./side-drawer-dialog.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./side-drawer-dialog.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./side-drawer-dialog.vue?vue&type=template&id=e109b03c\"\nimport script from \"./side-drawer-dialog.vue?vue&type=script&lang=js\"\nexport * from \"./side-drawer-dialog.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./dispute-dialog-client-info-card.vue?vue&type=style&index=0&id=4db8995d&prod&lang=scss&scoped=true\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"d-flex flex-column\"},[_vm._t(\"label\",[_c('label',{class:[_vm.$style.infoLabelStyling, 'opacity-8 font-weight-medium']},[_vm._v(\" \"+_vm._s(_vm.label)+\" \")])],{\"label\":_vm.label}),_vm._t(\"default\")],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./info-label.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./info-label.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./info-label.vue?vue&type=template&id=358a642e\"\nimport script from \"./info-label.vue?vue&type=script&lang=js\"\nexport * from \"./info-label.vue?vue&type=script&lang=js\"\nimport style0 from \"./info-label.vue?vue&type=style&index=0&id=358a642e&prod&lang=scss&module=true\"\n\n\n\n\nfunction injectStyles (context) {\n \n this[\"$style\"] = (style0.locals || style0)\n\n}\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n injectStyles,\n null,\n null\n \n)\n\nexport default component.exports","/**\n * marked v4.3.0 - a markdown parser\n * Copyright (c) 2011-2023, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/markedjs/marked\n */\n\n/**\n * DO NOT EDIT THIS FILE\n * The code in this file is generated from files in ./src/\n */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n typeof define === 'function' && define.amd ? define(['exports'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.marked = {}));\n})(this, (function (exports) { 'use strict';\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, _toPropertyKey(descriptor.key), descriptor);\n }\n }\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n }\n function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n }\n 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 }\n function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n }\n function _createForOfIteratorHelperLoose(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (it) return (it = it.call(o)).next.bind(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 return function () {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\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 function _toPrimitive(input, hint) {\n if (typeof input !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (typeof res !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n }\n function _toPropertyKey(arg) {\n var key = _toPrimitive(arg, \"string\");\n return typeof key === \"symbol\" ? key : String(key);\n }\n\n function getDefaults() {\n return {\n async: false,\n baseUrl: null,\n breaks: false,\n extensions: null,\n gfm: true,\n headerIds: true,\n headerPrefix: '',\n highlight: null,\n hooks: null,\n langPrefix: 'language-',\n mangle: true,\n pedantic: false,\n renderer: null,\n sanitize: false,\n sanitizer: null,\n silent: false,\n smartypants: false,\n tokenizer: null,\n walkTokens: null,\n xhtml: false\n };\n }\n exports.defaults = getDefaults();\n function changeDefaults(newDefaults) {\n exports.defaults = newDefaults;\n }\n\n /**\n * Helpers\n */\n var escapeTest = /[&<>\"']/;\n var escapeReplace = new RegExp(escapeTest.source, 'g');\n var escapeTestNoEncode = /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/;\n var escapeReplaceNoEncode = new RegExp(escapeTestNoEncode.source, 'g');\n var escapeReplacements = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n };\n var getEscapeReplacement = function getEscapeReplacement(ch) {\n return escapeReplacements[ch];\n };\n function escape(html, encode) {\n if (encode) {\n if (escapeTest.test(html)) {\n return html.replace(escapeReplace, getEscapeReplacement);\n }\n } else {\n if (escapeTestNoEncode.test(html)) {\n return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n return html;\n }\n var unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\n\n /**\n * @param {string} html\n */\n function unescape(html) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(unescapeTest, function (_, n) {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x' ? String.fromCharCode(parseInt(n.substring(2), 16)) : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n }\n var caret = /(^|[^\\[])\\^/g;\n\n /**\n * @param {string | RegExp} regex\n * @param {string} opt\n */\n function edit(regex, opt) {\n regex = typeof regex === 'string' ? regex : regex.source;\n opt = opt || '';\n var obj = {\n replace: function replace(name, val) {\n val = val.source || val;\n val = val.replace(caret, '$1');\n regex = regex.replace(name, val);\n return obj;\n },\n getRegex: function getRegex() {\n return new RegExp(regex, opt);\n }\n };\n return obj;\n }\n var nonWordAndColonTest = /[^\\w:]/g;\n var originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;\n\n /**\n * @param {boolean} sanitize\n * @param {string} base\n * @param {string} href\n */\n function cleanUrl(sanitize, base, href) {\n if (sanitize) {\n var prot;\n try {\n prot = decodeURIComponent(unescape(href)).replace(nonWordAndColonTest, '').toLowerCase();\n } catch (e) {\n return null;\n }\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) {\n return null;\n }\n }\n if (base && !originIndependentUrl.test(href)) {\n href = resolveUrl(base, href);\n }\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n } catch (e) {\n return null;\n }\n return href;\n }\n var baseUrls = {};\n var justDomain = /^[^:]+:\\/*[^/]*$/;\n var protocol = /^([^:]+:)[\\s\\S]*$/;\n var domain = /^([^:]+:\\/*[^/]*)[\\s\\S]*$/;\n\n /**\n * @param {string} base\n * @param {string} href\n */\n function resolveUrl(base, href) {\n if (!baseUrls[' ' + base]) {\n // we can ignore everything in base after the last slash of its path component,\n // but we might need to add _that_\n // https://tools.ietf.org/html/rfc3986#section-3\n if (justDomain.test(base)) {\n baseUrls[' ' + base] = base + '/';\n } else {\n baseUrls[' ' + base] = rtrim(base, '/', true);\n }\n }\n base = baseUrls[' ' + base];\n var relativeBase = base.indexOf(':') === -1;\n if (href.substring(0, 2) === '//') {\n if (relativeBase) {\n return href;\n }\n return base.replace(protocol, '$1') + href;\n } else if (href.charAt(0) === '/') {\n if (relativeBase) {\n return href;\n }\n return base.replace(domain, '$1') + href;\n } else {\n return base + href;\n }\n }\n var noopTest = {\n exec: function noopTest() {}\n };\n function splitCells(tableRow, count) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n var row = tableRow.replace(/\\|/g, function (match, offset, str) {\n var escaped = false,\n curr = offset;\n while (--curr >= 0 && str[curr] === '\\\\') {\n escaped = !escaped;\n }\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n } else {\n // add space before unescaped |\n return ' |';\n }\n }),\n cells = row.split(/ \\|/);\n var i = 0;\n\n // First/last cell in a row cannot be empty if it has no leading/trailing pipe\n if (!cells[0].trim()) {\n cells.shift();\n }\n if (cells.length > 0 && !cells[cells.length - 1].trim()) {\n cells.pop();\n }\n if (cells.length > count) {\n cells.splice(count);\n } else {\n while (cells.length < count) {\n cells.push('');\n }\n }\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n return cells;\n }\n\n /**\n * Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n * /c*$/ is vulnerable to REDOS.\n *\n * @param {string} str\n * @param {string} c\n * @param {boolean} invert Remove suffix of non-c chars instead. Default falsey.\n */\n function rtrim(str, c, invert) {\n var l = str.length;\n if (l === 0) {\n return '';\n }\n\n // Length of suffix matching the invert condition.\n var suffLen = 0;\n\n // Step left until we fail to match the invert condition.\n while (suffLen < l) {\n var currChar = str.charAt(l - suffLen - 1);\n if (currChar === c && !invert) {\n suffLen++;\n } else if (currChar !== c && invert) {\n suffLen++;\n } else {\n break;\n }\n }\n return str.slice(0, l - suffLen);\n }\n function findClosingBracket(str, b) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n var l = str.length;\n var level = 0,\n i = 0;\n for (; i < l; i++) {\n if (str[i] === '\\\\') {\n i++;\n } else if (str[i] === b[0]) {\n level++;\n } else if (str[i] === b[1]) {\n level--;\n if (level < 0) {\n return i;\n }\n }\n }\n return -1;\n }\n function checkSanitizeDeprecation(opt) {\n if (opt && opt.sanitize && !opt.silent) {\n console.warn('marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options');\n }\n }\n\n // copied from https://stackoverflow.com/a/5450113/806777\n /**\n * @param {string} pattern\n * @param {number} count\n */\n function repeatString(pattern, count) {\n if (count < 1) {\n return '';\n }\n var result = '';\n while (count > 1) {\n if (count & 1) {\n result += pattern;\n }\n count >>= 1;\n pattern += pattern;\n }\n return result + pattern;\n }\n\n function outputLink(cap, link, raw, lexer) {\n var href = link.href;\n var title = link.title ? escape(link.title) : null;\n var text = cap[1].replace(/\\\\([\\[\\]])/g, '$1');\n if (cap[0].charAt(0) !== '!') {\n lexer.state.inLink = true;\n var token = {\n type: 'link',\n raw: raw,\n href: href,\n title: title,\n text: text,\n tokens: lexer.inlineTokens(text)\n };\n lexer.state.inLink = false;\n return token;\n }\n return {\n type: 'image',\n raw: raw,\n href: href,\n title: title,\n text: escape(text)\n };\n }\n function indentCodeCompensation(raw, text) {\n var matchIndentToCode = raw.match(/^(\\s+)(?:```)/);\n if (matchIndentToCode === null) {\n return text;\n }\n var indentToCode = matchIndentToCode[1];\n return text.split('\\n').map(function (node) {\n var matchIndentInNode = node.match(/^\\s+/);\n if (matchIndentInNode === null) {\n return node;\n }\n var indentInNode = matchIndentInNode[0];\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n return node;\n }).join('\\n');\n }\n\n /**\n * Tokenizer\n */\n var Tokenizer = /*#__PURE__*/function () {\n function Tokenizer(options) {\n this.options = options || exports.defaults;\n }\n var _proto = Tokenizer.prototype;\n _proto.space = function space(src) {\n var cap = this.rules.block.newline.exec(src);\n if (cap && cap[0].length > 0) {\n return {\n type: 'space',\n raw: cap[0]\n };\n }\n };\n _proto.code = function code(src) {\n var cap = this.rules.block.code.exec(src);\n if (cap) {\n var text = cap[0].replace(/^ {1,4}/gm, '');\n return {\n type: 'code',\n raw: cap[0],\n codeBlockStyle: 'indented',\n text: !this.options.pedantic ? rtrim(text, '\\n') : text\n };\n }\n };\n _proto.fences = function fences(src) {\n var cap = this.rules.block.fences.exec(src);\n if (cap) {\n var raw = cap[0];\n var text = indentCodeCompensation(raw, cap[3] || '');\n return {\n type: 'code',\n raw: raw,\n lang: cap[2] ? cap[2].trim().replace(this.rules.inline._escapes, '$1') : cap[2],\n text: text\n };\n }\n };\n _proto.heading = function heading(src) {\n var cap = this.rules.block.heading.exec(src);\n if (cap) {\n var text = cap[2].trim();\n\n // remove trailing #s\n if (/#$/.test(text)) {\n var trimmed = rtrim(text, '#');\n if (this.options.pedantic) {\n text = trimmed.trim();\n } else if (!trimmed || / $/.test(trimmed)) {\n // CommonMark requires space before trailing #s\n text = trimmed.trim();\n }\n }\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[1].length,\n text: text,\n tokens: this.lexer.inline(text)\n };\n }\n };\n _proto.hr = function hr(src) {\n var cap = this.rules.block.hr.exec(src);\n if (cap) {\n return {\n type: 'hr',\n raw: cap[0]\n };\n }\n };\n _proto.blockquote = function blockquote(src) {\n var cap = this.rules.block.blockquote.exec(src);\n if (cap) {\n var text = cap[0].replace(/^ *>[ \\t]?/gm, '');\n var top = this.lexer.state.top;\n this.lexer.state.top = true;\n var tokens = this.lexer.blockTokens(text);\n this.lexer.state.top = top;\n return {\n type: 'blockquote',\n raw: cap[0],\n tokens: tokens,\n text: text\n };\n }\n };\n _proto.list = function list(src) {\n var cap = this.rules.block.list.exec(src);\n if (cap) {\n var raw, istask, ischecked, indent, i, blankLine, endsWithBlankLine, line, nextLine, rawLine, itemContents, endEarly;\n var bull = cap[1].trim();\n var isordered = bull.length > 1;\n var list = {\n type: 'list',\n raw: '',\n ordered: isordered,\n start: isordered ? +bull.slice(0, -1) : '',\n loose: false,\n items: []\n };\n bull = isordered ? \"\\\\d{1,9}\\\\\" + bull.slice(-1) : \"\\\\\" + bull;\n if (this.options.pedantic) {\n bull = isordered ? bull : '[*+-]';\n }\n\n // Get next list item\n var itemRegex = new RegExp(\"^( {0,3}\" + bull + \")((?:[\\t ][^\\\\n]*)?(?:\\\\n|$))\");\n\n // Check if current bullet point can start a new List Item\n while (src) {\n endEarly = false;\n if (!(cap = itemRegex.exec(src))) {\n break;\n }\n if (this.rules.block.hr.test(src)) {\n // End list if bullet was actually HR (possibly move into itemRegex?)\n break;\n }\n raw = cap[0];\n src = src.substring(raw.length);\n line = cap[2].split('\\n', 1)[0].replace(/^\\t+/, function (t) {\n return ' '.repeat(3 * t.length);\n });\n nextLine = src.split('\\n', 1)[0];\n if (this.options.pedantic) {\n indent = 2;\n itemContents = line.trimLeft();\n } else {\n indent = cap[2].search(/[^ ]/); // Find first non-space char\n indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent\n itemContents = line.slice(indent);\n indent += cap[1].length;\n }\n blankLine = false;\n if (!line && /^ *$/.test(nextLine)) {\n // Items begin with at most one blank line\n raw += nextLine + '\\n';\n src = src.substring(nextLine.length + 1);\n endEarly = true;\n }\n if (!endEarly) {\n var nextBulletRegex = new RegExp(\"^ {0,\" + Math.min(3, indent - 1) + \"}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \\t][^\\\\n]*)?(?:\\\\n|$))\");\n var hrRegex = new RegExp(\"^ {0,\" + Math.min(3, indent - 1) + \"}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)\");\n var fencesBeginRegex = new RegExp(\"^ {0,\" + Math.min(3, indent - 1) + \"}(?:```|~~~)\");\n var headingBeginRegex = new RegExp(\"^ {0,\" + Math.min(3, indent - 1) + \"}#\");\n\n // Check if following lines should be included in List Item\n while (src) {\n rawLine = src.split('\\n', 1)[0];\n nextLine = rawLine;\n\n // Re-align to follow commonmark nesting rules\n if (this.options.pedantic) {\n nextLine = nextLine.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' ');\n }\n\n // End list item if found code fences\n if (fencesBeginRegex.test(nextLine)) {\n break;\n }\n\n // End list item if found start of new heading\n if (headingBeginRegex.test(nextLine)) {\n break;\n }\n\n // End list item if found start of new bullet\n if (nextBulletRegex.test(nextLine)) {\n break;\n }\n\n // Horizontal rule found\n if (hrRegex.test(src)) {\n break;\n }\n if (nextLine.search(/[^ ]/) >= indent || !nextLine.trim()) {\n // Dedent if possible\n itemContents += '\\n' + nextLine.slice(indent);\n } else {\n // not enough indentation\n if (blankLine) {\n break;\n }\n\n // paragraph continuation unless last line was a different block level element\n if (line.search(/[^ ]/) >= 4) {\n // indented code block\n break;\n }\n if (fencesBeginRegex.test(line)) {\n break;\n }\n if (headingBeginRegex.test(line)) {\n break;\n }\n if (hrRegex.test(line)) {\n break;\n }\n itemContents += '\\n' + nextLine;\n }\n if (!blankLine && !nextLine.trim()) {\n // Check if current line is blank\n blankLine = true;\n }\n raw += rawLine + '\\n';\n src = src.substring(rawLine.length + 1);\n line = nextLine.slice(indent);\n }\n }\n if (!list.loose) {\n // If the previous item ended with a blank line, the list is loose\n if (endsWithBlankLine) {\n list.loose = true;\n } else if (/\\n *\\n *$/.test(raw)) {\n endsWithBlankLine = true;\n }\n }\n\n // Check for task list items\n if (this.options.gfm) {\n istask = /^\\[[ xX]\\] /.exec(itemContents);\n if (istask) {\n ischecked = istask[0] !== '[ ] ';\n itemContents = itemContents.replace(/^\\[[ xX]\\] +/, '');\n }\n }\n list.items.push({\n type: 'list_item',\n raw: raw,\n task: !!istask,\n checked: ischecked,\n loose: false,\n text: itemContents\n });\n list.raw += raw;\n }\n\n // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic\n list.items[list.items.length - 1].raw = raw.trimRight();\n list.items[list.items.length - 1].text = itemContents.trimRight();\n list.raw = list.raw.trimRight();\n var l = list.items.length;\n\n // Item child tokens handled here at end because we needed to have the final item to trim it first\n for (i = 0; i < l; i++) {\n this.lexer.state.top = false;\n list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);\n if (!list.loose) {\n // Check if list should be loose\n var spacers = list.items[i].tokens.filter(function (t) {\n return t.type === 'space';\n });\n var hasMultipleLineBreaks = spacers.length > 0 && spacers.some(function (t) {\n return /\\n.*\\n/.test(t.raw);\n });\n list.loose = hasMultipleLineBreaks;\n }\n }\n\n // Set all items to loose if list is loose\n if (list.loose) {\n for (i = 0; i < l; i++) {\n list.items[i].loose = true;\n }\n }\n return list;\n }\n };\n _proto.html = function html(src) {\n var cap = this.rules.block.html.exec(src);\n if (cap) {\n var token = {\n type: 'html',\n raw: cap[0],\n pre: !this.options.sanitizer && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: cap[0]\n };\n if (this.options.sanitize) {\n var text = this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0]);\n token.type = 'paragraph';\n token.text = text;\n token.tokens = this.lexer.inline(text);\n }\n return token;\n }\n };\n _proto.def = function def(src) {\n var cap = this.rules.block.def.exec(src);\n if (cap) {\n var tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n var href = cap[2] ? cap[2].replace(/^<(.*)>$/, '$1').replace(this.rules.inline._escapes, '$1') : '';\n var title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline._escapes, '$1') : cap[3];\n return {\n type: 'def',\n tag: tag,\n raw: cap[0],\n href: href,\n title: title\n };\n }\n };\n _proto.table = function table(src) {\n var cap = this.rules.block.table.exec(src);\n if (cap) {\n var item = {\n type: 'table',\n header: splitCells(cap[1]).map(function (c) {\n return {\n text: c\n };\n }),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n rows: cap[3] && cap[3].trim() ? cap[3].replace(/\\n[ \\t]*$/, '').split('\\n') : []\n };\n if (item.header.length === item.align.length) {\n item.raw = cap[0];\n var l = item.align.length;\n var i, j, k, row;\n for (i = 0; i < l; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n l = item.rows.length;\n for (i = 0; i < l; i++) {\n item.rows[i] = splitCells(item.rows[i], item.header.length).map(function (c) {\n return {\n text: c\n };\n });\n }\n\n // parse child tokens inside headers and cells\n\n // header child tokens\n l = item.header.length;\n for (j = 0; j < l; j++) {\n item.header[j].tokens = this.lexer.inline(item.header[j].text);\n }\n\n // cell child tokens\n l = item.rows.length;\n for (j = 0; j < l; j++) {\n row = item.rows[j];\n for (k = 0; k < row.length; k++) {\n row[k].tokens = this.lexer.inline(row[k].text);\n }\n }\n return item;\n }\n }\n };\n _proto.lheading = function lheading(src) {\n var cap = this.rules.block.lheading.exec(src);\n if (cap) {\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1],\n tokens: this.lexer.inline(cap[1])\n };\n }\n };\n _proto.paragraph = function paragraph(src) {\n var cap = this.rules.block.paragraph.exec(src);\n if (cap) {\n var text = cap[1].charAt(cap[1].length - 1) === '\\n' ? cap[1].slice(0, -1) : cap[1];\n return {\n type: 'paragraph',\n raw: cap[0],\n text: text,\n tokens: this.lexer.inline(text)\n };\n }\n };\n _proto.text = function text(src) {\n var cap = this.rules.block.text.exec(src);\n if (cap) {\n return {\n type: 'text',\n raw: cap[0],\n text: cap[0],\n tokens: this.lexer.inline(cap[0])\n };\n }\n };\n _proto.escape = function escape$1(src) {\n var cap = this.rules.inline.escape.exec(src);\n if (cap) {\n return {\n type: 'escape',\n raw: cap[0],\n text: escape(cap[1])\n };\n }\n };\n _proto.tag = function tag(src) {\n var cap = this.rules.inline.tag.exec(src);\n if (cap) {\n if (!this.lexer.state.inLink && /^/i.test(cap[0])) {\n this.lexer.state.inLink = false;\n }\n if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = true;\n } else if (this.lexer.state.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = false;\n }\n return {\n type: this.options.sanitize ? 'text' : 'html',\n raw: cap[0],\n inLink: this.lexer.state.inLink,\n inRawBlock: this.lexer.state.inRawBlock,\n text: this.options.sanitize ? this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0]) : cap[0]\n };\n }\n };\n _proto.link = function link(src) {\n var cap = this.rules.inline.link.exec(src);\n if (cap) {\n var trimmedUrl = cap[2].trim();\n if (!this.options.pedantic && /^$/.test(trimmedUrl)) {\n return;\n }\n\n // ending angle bracket cannot be escaped\n var rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n return;\n }\n } else {\n // find closing parenthesis\n var lastParenIndex = findClosingBracket(cap[2], '()');\n if (lastParenIndex > -1) {\n var start = cap[0].indexOf('!') === 0 ? 5 : 4;\n var linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n }\n var href = cap[2];\n var title = '';\n if (this.options.pedantic) {\n // split pedantic href and title\n var link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n if (link) {\n href = link[1];\n title = link[3];\n }\n } else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n href = href.trim();\n if (/^$/.test(trimmedUrl)) {\n // pedantic allows starting angle bracket without ending angle bracket\n href = href.slice(1);\n } else {\n href = href.slice(1, -1);\n }\n }\n return outputLink(cap, {\n href: href ? href.replace(this.rules.inline._escapes, '$1') : href,\n title: title ? title.replace(this.rules.inline._escapes, '$1') : title\n }, cap[0], this.lexer);\n }\n };\n _proto.reflink = function reflink(src, links) {\n var cap;\n if ((cap = this.rules.inline.reflink.exec(src)) || (cap = this.rules.inline.nolink.exec(src))) {\n var link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = links[link.toLowerCase()];\n if (!link) {\n var text = cap[0].charAt(0);\n return {\n type: 'text',\n raw: text,\n text: text\n };\n }\n return outputLink(cap, link, cap[0], this.lexer);\n }\n };\n _proto.emStrong = function emStrong(src, maskedSrc, prevChar) {\n if (prevChar === void 0) {\n prevChar = '';\n }\n var match = this.rules.inline.emStrong.lDelim.exec(src);\n if (!match) return;\n\n // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n if (match[3] && prevChar.match(/(?:[0-9A-Za-z\\xAA\\xB2\\xB3\\xB5\\xB9\\xBA\\xBC-\\xBE\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05D0-\\u05EA\\u05EF-\\u05F2\\u0620-\\u064A\\u0660-\\u0669\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07C0-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086A\\u0870-\\u0887\\u0889-\\u088E\\u08A0-\\u08C9\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0966-\\u096F\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09E6-\\u09F1\\u09F4-\\u09F9\\u09FC\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A6F\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AE6-\\u0AEF\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B66-\\u0B6F\\u0B71-\\u0B77\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0BE6-\\u0BF2\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C5D\\u0C60\\u0C61\\u0C66-\\u0C6F\\u0C78-\\u0C7E\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDD\\u0CDE\\u0CE0\\u0CE1\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D04-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D54-\\u0D56\\u0D58-\\u0D61\\u0D66-\\u0D78\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DE6-\\u0DEF\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E86-\\u0E8A\\u0E8C-\\u0EA3\\u0EA5\\u0EA7-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F20-\\u0F33\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F-\\u1049\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u1090-\\u1099\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1369-\\u137C\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u1711\\u171F-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u17E0-\\u17E9\\u17F0-\\u17F9\\u1810-\\u1819\\u1820-\\u1878\\u1880-\\u1884\\u1887-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19DA\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4C\\u1B50-\\u1B59\\u1B83-\\u1BA0\\u1BAE-\\u1BE5\\u1C00-\\u1C23\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1C80-\\u1C88\\u1C90-\\u1CBA\\u1CBD-\\u1CBF\\u1CE9-\\u1CEC\\u1CEE-\\u1CF3\\u1CF5\\u1CF6\\u1CFA\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2070\\u2071\\u2074-\\u2079\\u207F-\\u2089\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2150-\\u2189\\u2460-\\u249B\\u24EA-\\u24FF\\u2776-\\u2793\\u2C00-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2CFD\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312F\\u3131-\\u318E\\u3192-\\u3195\\u31A0-\\u31BF\\u31F0-\\u31FF\\u3220-\\u3229\\u3248-\\u324F\\u3251-\\u325F\\u3280-\\u3289\\u32B1-\\u32BF\\u3400-\\u4DBF\\u4E00-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7CA\\uA7D0\\uA7D1\\uA7D3\\uA7D5-\\uA7D9\\uA7F2-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA830-\\uA835\\uA840-\\uA873\\uA882-\\uA8B3\\uA8D0-\\uA8D9\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA8FE\\uA900-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF-\\uA9D9\\uA9E0-\\uA9E4\\uA9E6-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB69\\uAB70-\\uABE2\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD07-\\uDD33\\uDD40-\\uDD78\\uDD8A\\uDD8B\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDEE1-\\uDEFB\\uDF00-\\uDF23\\uDF2D-\\uDF4A\\uDF50-\\uDF75\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDCA0-\\uDCA9\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDD70-\\uDD7A\\uDD7C-\\uDD8A\\uDD8C-\\uDD92\\uDD94\\uDD95\\uDD97-\\uDDA1\\uDDA3-\\uDDB1\\uDDB3-\\uDDB9\\uDDBB\\uDDBC\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67\\uDF80-\\uDF85\\uDF87-\\uDFB0\\uDFB2-\\uDFBA]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC58-\\uDC76\\uDC79-\\uDC9E\\uDCA7-\\uDCAF\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDCFB-\\uDD1B\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBC-\\uDDCF\\uDDD2-\\uDE00\\uDE10-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE35\\uDE40-\\uDE48\\uDE60-\\uDE7E\\uDE80-\\uDE9F\\uDEC0-\\uDEC7\\uDEC9-\\uDEE4\\uDEEB-\\uDEEF\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF58-\\uDF72\\uDF78-\\uDF91\\uDFA9-\\uDFAF]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2\\uDCFA-\\uDD23\\uDD30-\\uDD39\\uDE60-\\uDE7E\\uDE80-\\uDEA9\\uDEB0\\uDEB1\\uDF00-\\uDF27\\uDF30-\\uDF45\\uDF51-\\uDF54\\uDF70-\\uDF81\\uDFB0-\\uDFCB\\uDFE0-\\uDFF6]|\\uD804[\\uDC03-\\uDC37\\uDC52-\\uDC6F\\uDC71\\uDC72\\uDC75\\uDC83-\\uDCAF\\uDCD0-\\uDCE8\\uDCF0-\\uDCF9\\uDD03-\\uDD26\\uDD36-\\uDD3F\\uDD44\\uDD47\\uDD50-\\uDD72\\uDD76\\uDD83-\\uDDB2\\uDDC1-\\uDDC4\\uDDD0-\\uDDDA\\uDDDC\\uDDE1-\\uDDF4\\uDE00-\\uDE11\\uDE13-\\uDE2B\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEDE\\uDEF0-\\uDEF9\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D\\uDF50\\uDF5D-\\uDF61]|\\uD805[\\uDC00-\\uDC34\\uDC47-\\uDC4A\\uDC50-\\uDC59\\uDC5F-\\uDC61\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDCD0-\\uDCD9\\uDD80-\\uDDAE\\uDDD8-\\uDDDB\\uDE00-\\uDE2F\\uDE44\\uDE50-\\uDE59\\uDE80-\\uDEAA\\uDEB8\\uDEC0-\\uDEC9\\uDF00-\\uDF1A\\uDF30-\\uDF3B\\uDF40-\\uDF46]|\\uD806[\\uDC00-\\uDC2B\\uDCA0-\\uDCF2\\uDCFF-\\uDD06\\uDD09\\uDD0C-\\uDD13\\uDD15\\uDD16\\uDD18-\\uDD2F\\uDD3F\\uDD41\\uDD50-\\uDD59\\uDDA0-\\uDDA7\\uDDAA-\\uDDD0\\uDDE1\\uDDE3\\uDE00\\uDE0B-\\uDE32\\uDE3A\\uDE50\\uDE5C-\\uDE89\\uDE9D\\uDEB0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC2E\\uDC40\\uDC50-\\uDC6C\\uDC72-\\uDC8F\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD30\\uDD46\\uDD50-\\uDD59\\uDD60-\\uDD65\\uDD67\\uDD68\\uDD6A-\\uDD89\\uDD98\\uDDA0-\\uDDA9\\uDEE0-\\uDEF2\\uDFB0\\uDFC0-\\uDFD4]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|\\uD80B[\\uDF90-\\uDFF0]|[\\uD80C\\uD81C-\\uD820\\uD822\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879\\uD880-\\uD883][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE60-\\uDE69\\uDE70-\\uDEBE\\uDEC0-\\uDEC9\\uDED0-\\uDEED\\uDF00-\\uDF2F\\uDF40-\\uDF43\\uDF50-\\uDF59\\uDF5B-\\uDF61\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDE40-\\uDE96\\uDF00-\\uDF4A\\uDF50\\uDF93-\\uDF9F\\uDFE0\\uDFE1\\uDFE3]|\\uD821[\\uDC00-\\uDFF7]|\\uD823[\\uDC00-\\uDCD5\\uDD00-\\uDD08]|\\uD82B[\\uDFF0-\\uDFF3\\uDFF5-\\uDFFB\\uDFFD\\uDFFE]|\\uD82C[\\uDC00-\\uDD22\\uDD50-\\uDD52\\uDD64-\\uDD67\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99]|\\uD834[\\uDEE0-\\uDEF3\\uDF60-\\uDF78]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB\\uDFCE-\\uDFFF]|\\uD837[\\uDF00-\\uDF1E]|\\uD838[\\uDD00-\\uDD2C\\uDD37-\\uDD3D\\uDD40-\\uDD49\\uDD4E\\uDE90-\\uDEAD\\uDEC0-\\uDEEB\\uDEF0-\\uDEF9]|\\uD839[\\uDFE0-\\uDFE6\\uDFE8-\\uDFEB\\uDFED\\uDFEE\\uDFF0-\\uDFFE]|\\uD83A[\\uDC00-\\uDCC4\\uDCC7-\\uDCCF\\uDD00-\\uDD43\\uDD4B\\uDD50-\\uDD59]|\\uD83B[\\uDC71-\\uDCAB\\uDCAD-\\uDCAF\\uDCB1-\\uDCB4\\uDD01-\\uDD2D\\uDD2F-\\uDD3D\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD83C[\\uDD00-\\uDD0C]|\\uD83E[\\uDFF0-\\uDFF9]|\\uD869[\\uDC00-\\uDEDF\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF38\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]|\\uD884[\\uDC00-\\uDF4A])/)) return;\n var nextChar = match[1] || match[2] || '';\n if (!nextChar || nextChar && (prevChar === '' || this.rules.inline.punctuation.exec(prevChar))) {\n var lLength = match[0].length - 1;\n var rDelim,\n rLength,\n delimTotal = lLength,\n midDelimTotal = 0;\n var endReg = match[0][0] === '*' ? this.rules.inline.emStrong.rDelimAst : this.rules.inline.emStrong.rDelimUnd;\n endReg.lastIndex = 0;\n\n // Clip maskedSrc to same section of string as src (move to lexer?)\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n while ((match = endReg.exec(maskedSrc)) != null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n if (!rDelim) continue; // skip single * in __abc*abc__\n\n rLength = rDelim.length;\n if (match[3] || match[4]) {\n // found another Left Delim\n delimTotal += rLength;\n continue;\n } else if (match[5] || match[6]) {\n // either Left or Right Delim\n if (lLength % 3 && !((lLength + rLength) % 3)) {\n midDelimTotal += rLength;\n continue; // CommonMark Emphasis Rules 9-10\n }\n }\n\n delimTotal -= rLength;\n if (delimTotal > 0) continue; // Haven't found enough closing delimiters\n\n // Remove extra characters. *a*** -> *a*\n rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);\n var raw = src.slice(0, lLength + match.index + (match[0].length - rDelim.length) + rLength);\n\n // Create `em` if smallest delimiter has odd char count. *a***\n if (Math.min(lLength, rLength) % 2) {\n var _text = raw.slice(1, -1);\n return {\n type: 'em',\n raw: raw,\n text: _text,\n tokens: this.lexer.inlineTokens(_text)\n };\n }\n\n // Create 'strong' if smallest delimiter has even char count. **a***\n var text = raw.slice(2, -2);\n return {\n type: 'strong',\n raw: raw,\n text: text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n }\n };\n _proto.codespan = function codespan(src) {\n var cap = this.rules.inline.code.exec(src);\n if (cap) {\n var text = cap[2].replace(/\\n/g, ' ');\n var hasNonSpaceChars = /[^ ]/.test(text);\n var hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);\n if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n text = text.substring(1, text.length - 1);\n }\n text = escape(text, true);\n return {\n type: 'codespan',\n raw: cap[0],\n text: text\n };\n }\n };\n _proto.br = function br(src) {\n var cap = this.rules.inline.br.exec(src);\n if (cap) {\n return {\n type: 'br',\n raw: cap[0]\n };\n }\n };\n _proto.del = function del(src) {\n var cap = this.rules.inline.del.exec(src);\n if (cap) {\n return {\n type: 'del',\n raw: cap[0],\n text: cap[2],\n tokens: this.lexer.inlineTokens(cap[2])\n };\n }\n };\n _proto.autolink = function autolink(src, mangle) {\n var cap = this.rules.inline.autolink.exec(src);\n if (cap) {\n var text, href;\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[1]) : cap[1]);\n href = 'mailto:' + text;\n } else {\n text = escape(cap[1]);\n href = text;\n }\n return {\n type: 'link',\n raw: cap[0],\n text: text,\n href: href,\n tokens: [{\n type: 'text',\n raw: text,\n text: text\n }]\n };\n }\n };\n _proto.url = function url(src, mangle) {\n var cap;\n if (cap = this.rules.inline.url.exec(src)) {\n var text, href;\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[0]) : cap[0]);\n href = 'mailto:' + text;\n } else {\n // do extended autolink path validation\n var prevCapZero;\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])[0];\n } while (prevCapZero !== cap[0]);\n text = escape(cap[0]);\n if (cap[1] === 'www.') {\n href = 'http://' + cap[0];\n } else {\n href = cap[0];\n }\n }\n return {\n type: 'link',\n raw: cap[0],\n text: text,\n href: href,\n tokens: [{\n type: 'text',\n raw: text,\n text: text\n }]\n };\n }\n };\n _proto.inlineText = function inlineText(src, smartypants) {\n var cap = this.rules.inline.text.exec(src);\n if (cap) {\n var text;\n if (this.lexer.state.inRawBlock) {\n text = this.options.sanitize ? this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0]) : cap[0];\n } else {\n text = escape(this.options.smartypants ? smartypants(cap[0]) : cap[0]);\n }\n return {\n type: 'text',\n raw: cap[0],\n text: text\n };\n }\n };\n return Tokenizer;\n }();\n\n /**\n * Block-Level Grammar\n */\n var block = {\n newline: /^(?: *(?:\\n|$))+/,\n code: /^( {4}[^\\n]+(?:\\n(?: *(?:\\n|$))*)?)+/,\n fences: /^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/,\n hr: /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/,\n heading: /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/,\n blockquote: /^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/,\n list: /^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/,\n html: '^ {0,3}(?:' // optional indentation\n + '<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:[^\\\\n]*\\\\n+|$)' // (1)\n + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n + '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n + '|\\\\n*|$)' // (4)\n + '|\\\\n*|$)' // (5)\n + '|)[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (6)\n + '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) open tag\n + '|(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) closing tag\n + ')',\n def: /^ {0,3}\\[(label)\\]: *(?:\\n *)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n *)?| *\\n *)(title))? *(?:\\n+|$)/,\n table: noopTest,\n lheading: /^((?:.|\\n(?!\\n))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n // regex template, placeholders will be replaced according to different paragraph\n // interruption rules of commonmark and the original markdown spec:\n _paragraph: /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/,\n text: /^[^\\n]+/\n };\n block._label = /(?!\\s*\\])(?:\\\\.|[^\\[\\]\\\\])+/;\n block._title = /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/;\n block.def = edit(block.def).replace('label', block._label).replace('title', block._title).getRegex();\n block.bullet = /(?:[*+-]|\\d{1,9}[.)])/;\n block.listItemStart = edit(/^( *)(bull) */).replace('bull', block.bullet).getRegex();\n block.list = edit(block.list).replace(/bull/g, block.bullet).replace('hr', '\\\\n+(?=\\\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$))').replace('def', '\\\\n+(?=' + block.def.source + ')').getRegex();\n block._tag = 'address|article|aside|base|basefont|blockquote|body|caption' + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption' + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe' + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option' + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr' + '|track|ul';\n block._comment = /|$)/;\n block.html = edit(block.html, 'i').replace('comment', block._comment).replace('tag', block._tag).replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/).getRegex();\n block.paragraph = edit(block._paragraph).replace('hr', block.hr).replace('heading', ' {0,3}#{1,6} ').replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('|table', '').replace('blockquote', ' {0,3}>').replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n').replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)').replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n block.blockquote = edit(block.blockquote).replace('paragraph', block.paragraph).getRegex();\n\n /**\n * Normal Block Grammar\n */\n\n block.normal = _extends({}, block);\n\n /**\n * GFM Block Grammar\n */\n\n block.gfm = _extends({}, block.normal, {\n table: '^ *([^\\\\n ].*\\\\|.*)\\\\n' // Header\n + ' {0,3}(?:\\\\| *)?(:?-+:? *(?:\\\\| *:?-+:? *)*)(?:\\\\| *)?' // Align\n + '(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)' // Cells\n });\n\n block.gfm.table = edit(block.gfm.table).replace('hr', block.hr).replace('heading', ' {0,3}#{1,6} ').replace('blockquote', ' {0,3}>').replace('code', ' {4}[^\\\\n]').replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n').replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)').replace('tag', block._tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\n block.gfm.paragraph = edit(block._paragraph).replace('hr', block.hr).replace('heading', ' {0,3}#{1,6} ').replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('table', block.gfm.table) // interrupt paragraphs with table\n .replace('blockquote', ' {0,3}>').replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n').replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)').replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n /**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\n\n block.pedantic = _extends({}, block.normal, {\n html: edit('^ *(?:comment *(?:\\\\n|\\\\s*$)' + '|<(tag)[\\\\s\\\\S]+? *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))').replace('comment', block._comment).replace(/tag/g, '(?!(?:' + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub' + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)' + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b').getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n fences: noopTest,\n // fences not supported\n lheading: /^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n paragraph: edit(block.normal._paragraph).replace('hr', block.hr).replace('heading', ' *#{1,6} *[^\\n]').replace('lheading', block.lheading).replace('blockquote', ' {0,3}>').replace('|fences', '').replace('|list', '').replace('|html', '').getRegex()\n });\n\n /**\n * Inline-Level Grammar\n */\n var inline = {\n escape: /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,\n autolink: /^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/,\n url: noopTest,\n tag: '^comment' + '|^' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. \n + '|^' // declaration, e.g. \n + '|^',\n // CDATA section\n link: /^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/,\n reflink: /^!?\\[(label)\\]\\[(ref)\\]/,\n nolink: /^!?\\[(ref)\\](?:\\[\\])?/,\n reflinkSearch: 'reflink|nolink(?!\\\\()',\n emStrong: {\n lDelim: /^(?:\\*+(?:([punct_])|[^\\s*]))|^_+(?:([punct*])|([^\\s_]))/,\n // (1) and (2) can only be a Right Delimiter. (3) and (4) can only be Left. (5) and (6) can be either Left or Right.\n // () Skip orphan inside strong () Consume to delim (1) #*** (2) a***#, a*** (3) #***a, ***a (4) ***# (5) #***# (6) a***a\n rDelimAst: /^(?:[^_*\\\\]|\\\\.)*?\\_\\_(?:[^_*\\\\]|\\\\.)*?\\*(?:[^_*\\\\]|\\\\.)*?(?=\\_\\_)|(?:[^*\\\\]|\\\\.)+(?=[^*])|[punct_](\\*+)(?=[\\s]|$)|(?:[^punct*_\\s\\\\]|\\\\.)(\\*+)(?=[punct_\\s]|$)|[punct_\\s](\\*+)(?=[^punct*_\\s])|[\\s](\\*+)(?=[punct_])|[punct_](\\*+)(?=[punct_])|(?:[^punct*_\\s\\\\]|\\\\.)(\\*+)(?=[^punct*_\\s])/,\n rDelimUnd: /^(?:[^_*\\\\]|\\\\.)*?\\*\\*(?:[^_*\\\\]|\\\\.)*?\\_(?:[^_*\\\\]|\\\\.)*?(?=\\*\\*)|(?:[^_\\\\]|\\\\.)+(?=[^_])|[punct*](\\_+)(?=[\\s]|$)|(?:[^punct*_\\s\\\\]|\\\\.)(\\_+)(?=[punct*\\s]|$)|[punct*\\s](\\_+)(?=[^punct*_\\s])|[\\s](\\_+)(?=[punct*])|[punct*](\\_+)(?=[punct*])/ // ^- Not allowed for _\n },\n\n code: /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,\n br: /^( {2,}|\\\\)\\n(?!\\s*$)/,\n del: noopTest,\n text: /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\?@\\\\[\\\\]`^{|}~';\n inline.punctuation = edit(inline.punctuation).replace(/punctuation/g, inline._punctuation).getRegex();\n\n // sequences em should skip over [title](link), `code`, \n inline.blockSkip = /\\[[^\\]]*?\\]\\([^\\)]*?\\)|`[^`]*?`|<[^>]*?>/g;\n // lookbehind is not available on Safari as of version 16\n // inline.escapedEmSt = /(?<=(?:^|[^\\\\)(?:\\\\[^])*)\\\\[*_]/g;\n inline.escapedEmSt = /(?:^|[^\\\\])(?:\\\\\\\\)*\\\\[*_]/g;\n inline._comment = edit(block._comment).replace('(?:-->|$)', '-->').getRegex();\n inline.emStrong.lDelim = edit(inline.emStrong.lDelim).replace(/punct/g, inline._punctuation).getRegex();\n inline.emStrong.rDelimAst = edit(inline.emStrong.rDelimAst, 'g').replace(/punct/g, inline._punctuation).getRegex();\n inline.emStrong.rDelimUnd = edit(inline.emStrong.rDelimUnd, 'g').replace(/punct/g, inline._punctuation).getRegex();\n inline._escapes = /\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/g;\n inline._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;\n inline._email = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;\n inline.autolink = edit(inline.autolink).replace('scheme', inline._scheme).replace('email', inline._email).getRegex();\n inline._attribute = /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/;\n inline.tag = edit(inline.tag).replace('comment', inline._comment).replace('attribute', inline._attribute).getRegex();\n inline._label = /(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\n inline._href = /<(?:\\\\.|[^\\n<>\\\\])+>|[^\\s\\x00-\\x1f]*/;\n inline._title = /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/;\n inline.link = edit(inline.link).replace('label', inline._label).replace('href', inline._href).replace('title', inline._title).getRegex();\n inline.reflink = edit(inline.reflink).replace('label', inline._label).replace('ref', block._label).getRegex();\n inline.nolink = edit(inline.nolink).replace('ref', block._label).getRegex();\n inline.reflinkSearch = edit(inline.reflinkSearch, 'g').replace('reflink', inline.reflink).replace('nolink', inline.nolink).getRegex();\n\n /**\n * Normal Inline Grammar\n */\n\n inline.normal = _extends({}, inline);\n\n /**\n * Pedantic Inline Grammar\n */\n\n inline.pedantic = _extends({}, inline.normal, {\n strong: {\n start: /^__|\\*\\*/,\n middle: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n endAst: /\\*\\*(?!\\*)/g,\n endUnd: /__(?!_)/g\n },\n em: {\n start: /^_|\\*/,\n middle: /^()\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)|^_(?=\\S)([\\s\\S]*?\\S)_(?!_)/,\n endAst: /\\*(?!\\*)/g,\n endUnd: /_(?!_)/g\n },\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/).replace('label', inline._label).getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/).replace('label', inline._label).getRegex()\n });\n\n /**\n * GFM Inline Grammar\n */\n\n inline.gfm = _extends({}, inline.normal, {\n escape: edit(inline.escape).replace('])', '~|])').getRegex(),\n _extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,\n url: /^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/,\n _backpedal: /(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,\n del: /^(~~?)(?=[^\\s~])([\\s\\S]*?[^\\s~])\\1(?=[^~]|$)/,\n text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\ 0.5) {\n ch = 'x' + ch.toString(16);\n }\n out += '&#' + ch + ';';\n }\n return out;\n }\n\n /**\n * Block Lexer\n */\n var Lexer = /*#__PURE__*/function () {\n function Lexer(options) {\n this.tokens = [];\n this.tokens.links = Object.create(null);\n this.options = options || exports.defaults;\n this.options.tokenizer = this.options.tokenizer || new Tokenizer();\n this.tokenizer = this.options.tokenizer;\n this.tokenizer.options = this.options;\n this.tokenizer.lexer = this;\n this.inlineQueue = [];\n this.state = {\n inLink: false,\n inRawBlock: false,\n top: true\n };\n var rules = {\n block: block.normal,\n inline: inline.normal\n };\n if (this.options.pedantic) {\n rules.block = block.pedantic;\n rules.inline = inline.pedantic;\n } else if (this.options.gfm) {\n rules.block = block.gfm;\n if (this.options.breaks) {\n rules.inline = inline.breaks;\n } else {\n rules.inline = inline.gfm;\n }\n }\n this.tokenizer.rules = rules;\n }\n\n /**\n * Expose Rules\n */\n /**\n * Static Lex Method\n */\n Lexer.lex = function lex(src, options) {\n var lexer = new Lexer(options);\n return lexer.lex(src);\n }\n\n /**\n * Static Lex Inline Method\n */;\n Lexer.lexInline = function lexInline(src, options) {\n var lexer = new Lexer(options);\n return lexer.inlineTokens(src);\n }\n\n /**\n * Preprocessing\n */;\n var _proto = Lexer.prototype;\n _proto.lex = function lex(src) {\n src = src.replace(/\\r\\n|\\r/g, '\\n');\n this.blockTokens(src, this.tokens);\n var next;\n while (next = this.inlineQueue.shift()) {\n this.inlineTokens(next.src, next.tokens);\n }\n return this.tokens;\n }\n\n /**\n * Lexing\n */;\n _proto.blockTokens = function blockTokens(src, tokens) {\n var _this = this;\n if (tokens === void 0) {\n tokens = [];\n }\n if (this.options.pedantic) {\n src = src.replace(/\\t/g, ' ').replace(/^ +$/gm, '');\n } else {\n src = src.replace(/^( *)(\\t+)/gm, function (_, leading, tabs) {\n return leading + ' '.repeat(tabs.length);\n });\n }\n var token, lastToken, cutSrc, lastParagraphClipped;\n while (src) {\n if (this.options.extensions && this.options.extensions.block && this.options.extensions.block.some(function (extTokenizer) {\n if (token = extTokenizer.call({\n lexer: _this\n }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n\n // newline\n if (token = this.tokenizer.space(src)) {\n src = src.substring(token.raw.length);\n if (token.raw.length === 1 && tokens.length > 0) {\n // if there's a single \\n as a spacer, it's terminating the last line,\n // so move it there so that we don't get unecessary paragraph tags\n tokens[tokens.length - 1].raw += '\\n';\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // code\n if (token = this.tokenizer.code(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n // An indented code block cannot interrupt a paragraph.\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // fences\n if (token = this.tokenizer.fences(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // heading\n if (token = this.tokenizer.heading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // hr\n if (token = this.tokenizer.hr(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // blockquote\n if (token = this.tokenizer.blockquote(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // list\n if (token = this.tokenizer.list(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // html\n if (token = this.tokenizer.html(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // def\n if (token = this.tokenizer.def(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.raw;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else if (!this.tokens.links[token.tag]) {\n this.tokens.links[token.tag] = {\n href: token.href,\n title: token.title\n };\n }\n continue;\n }\n\n // table (gfm)\n if (token = this.tokenizer.table(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // lheading\n if (token = this.tokenizer.lheading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // top-level paragraph\n // prevent paragraph consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startBlock) {\n (function () {\n var startIndex = Infinity;\n var tempSrc = src.slice(1);\n var tempStart = void 0;\n _this.options.extensions.startBlock.forEach(function (getStartIndex) {\n tempStart = getStartIndex.call({\n lexer: this\n }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n })();\n }\n if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n lastToken = tokens[tokens.length - 1];\n if (lastParagraphClipped && lastToken.type === 'paragraph') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n lastParagraphClipped = cutSrc.length !== src.length;\n src = src.substring(token.raw.length);\n continue;\n }\n\n // text\n if (token = this.tokenizer.text(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n if (src) {\n var errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n this.state.top = true;\n return tokens;\n };\n _proto.inline = function inline(src, tokens) {\n if (tokens === void 0) {\n tokens = [];\n }\n this.inlineQueue.push({\n src: src,\n tokens: tokens\n });\n return tokens;\n }\n\n /**\n * Lexing/Compiling\n */;\n _proto.inlineTokens = function inlineTokens(src, tokens) {\n var _this2 = this;\n if (tokens === void 0) {\n tokens = [];\n }\n var token, lastToken, cutSrc;\n\n // String with links masked to avoid interference with em and strong\n var maskedSrc = src;\n var match;\n var keepPrevChar, prevChar;\n\n // Mask out reflinks\n if (this.tokens.links) {\n var links = Object.keys(this.tokens.links);\n if (links.length > 0) {\n while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + repeatString('a', match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n }\n }\n }\n }\n // Mask out other blocks\n while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + repeatString('a', match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n }\n\n // Mask out escaped em & strong delimiters\n while ((match = this.tokenizer.rules.inline.escapedEmSt.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index + match[0].length - 2) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.escapedEmSt.lastIndex);\n this.tokenizer.rules.inline.escapedEmSt.lastIndex--;\n }\n while (src) {\n if (!keepPrevChar) {\n prevChar = '';\n }\n keepPrevChar = false;\n\n // extensions\n if (this.options.extensions && this.options.extensions.inline && this.options.extensions.inline.some(function (extTokenizer) {\n if (token = extTokenizer.call({\n lexer: _this2\n }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n\n // escape\n if (token = this.tokenizer.escape(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // tag\n if (token = this.tokenizer.tag(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // link\n if (token = this.tokenizer.link(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // reflink, nolink\n if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // em & strong\n if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // code\n if (token = this.tokenizer.codespan(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // br\n if (token = this.tokenizer.br(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // del (gfm)\n if (token = this.tokenizer.del(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // autolink\n if (token = this.tokenizer.autolink(src, mangle)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // url (gfm)\n if (!this.state.inLink && (token = this.tokenizer.url(src, mangle))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // text\n // prevent inlineText consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startInline) {\n (function () {\n var startIndex = Infinity;\n var tempSrc = src.slice(1);\n var tempStart = void 0;\n _this2.options.extensions.startInline.forEach(function (getStartIndex) {\n tempStart = getStartIndex.call({\n lexer: this\n }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n })();\n }\n if (token = this.tokenizer.inlineText(cutSrc, smartypants)) {\n src = src.substring(token.raw.length);\n if (token.raw.slice(-1) !== '_') {\n // Track prevChar before string of ____ started\n prevChar = token.raw.slice(-1);\n }\n keepPrevChar = true;\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n if (src) {\n var errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n return tokens;\n };\n _createClass(Lexer, null, [{\n key: \"rules\",\n get: function get() {\n return {\n block: block,\n inline: inline\n };\n }\n }]);\n return Lexer;\n }();\n\n /**\n * Renderer\n */\n var Renderer = /*#__PURE__*/function () {\n function Renderer(options) {\n this.options = options || exports.defaults;\n }\n var _proto = Renderer.prototype;\n _proto.code = function code(_code, infostring, escaped) {\n var lang = (infostring || '').match(/\\S*/)[0];\n if (this.options.highlight) {\n var out = this.options.highlight(_code, lang);\n if (out != null && out !== _code) {\n escaped = true;\n _code = out;\n }\n }\n _code = _code.replace(/\\n$/, '') + '\\n';\n if (!lang) {\n return '
' + (escaped ? _code : escape(_code, true)) + '
\\n';\n }\n return '
' + (escaped ? _code : escape(_code, true)) + '
\\n';\n }\n\n /**\n * @param {string} quote\n */;\n _proto.blockquote = function blockquote(quote) {\n return \"
\\n\" + quote + \"
\\n\";\n };\n _proto.html = function html(_html) {\n return _html;\n }\n\n /**\n * @param {string} text\n * @param {string} level\n * @param {string} raw\n * @param {any} slugger\n */;\n _proto.heading = function heading(text, level, raw, slugger) {\n if (this.options.headerIds) {\n var id = this.options.headerPrefix + slugger.slug(raw);\n return \"\" + text + \"\\n\";\n }\n\n // ignore IDs\n return \"\" + text + \"\\n\";\n };\n _proto.hr = function hr() {\n return this.options.xhtml ? '
\\n' : '
\\n';\n };\n _proto.list = function list(body, ordered, start) {\n var type = ordered ? 'ol' : 'ul',\n startatt = ordered && start !== 1 ? ' start=\"' + start + '\"' : '';\n return '<' + type + startatt + '>\\n' + body + '\\n';\n }\n\n /**\n * @param {string} text\n */;\n _proto.listitem = function listitem(text) {\n return \"
  • \" + text + \"
  • \\n\";\n };\n _proto.checkbox = function checkbox(checked) {\n return ' ';\n }\n\n /**\n * @param {string} text\n */;\n _proto.paragraph = function paragraph(text) {\n return \"

    \" + text + \"

    \\n\";\n }\n\n /**\n * @param {string} header\n * @param {string} body\n */;\n _proto.table = function table(header, body) {\n if (body) body = \"\" + body + \"\";\n return '\\n' + '\\n' + header + '\\n' + body + '
    \\n';\n }\n\n /**\n * @param {string} content\n */;\n _proto.tablerow = function tablerow(content) {\n return \"\\n\" + content + \"\\n\";\n };\n _proto.tablecell = function tablecell(content, flags) {\n var type = flags.header ? 'th' : 'td';\n var tag = flags.align ? \"<\" + type + \" align=\\\"\" + flags.align + \"\\\">\" : \"<\" + type + \">\";\n return tag + content + (\"\\n\");\n }\n\n /**\n * span level renderer\n * @param {string} text\n */;\n _proto.strong = function strong(text) {\n return \"\" + text + \"\";\n }\n\n /**\n * @param {string} text\n */;\n _proto.em = function em(text) {\n return \"\" + text + \"\";\n }\n\n /**\n * @param {string} text\n */;\n _proto.codespan = function codespan(text) {\n return \"\" + text + \"\";\n };\n _proto.br = function br() {\n return this.options.xhtml ? '
    ' : '
    ';\n }\n\n /**\n * @param {string} text\n */;\n _proto.del = function del(text) {\n return \"\" + text + \"\";\n }\n\n /**\n * @param {string} href\n * @param {string} title\n * @param {string} text\n */;\n _proto.link = function link(href, title, text) {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);\n if (href === null) {\n return text;\n }\n var out = '
    ';\n return out;\n }\n\n /**\n * @param {string} href\n * @param {string} title\n * @param {string} text\n */;\n _proto.image = function image(href, title, text) {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);\n if (href === null) {\n return text;\n }\n var out = \"\\\"\"' : '>';\n return out;\n };\n _proto.text = function text(_text) {\n return _text;\n };\n return Renderer;\n }();\n\n /**\n * TextRenderer\n * returns only the textual part of the token\n */\n var TextRenderer = /*#__PURE__*/function () {\n function TextRenderer() {}\n var _proto = TextRenderer.prototype;\n // no need for block level renderers\n _proto.strong = function strong(text) {\n return text;\n };\n _proto.em = function em(text) {\n return text;\n };\n _proto.codespan = function codespan(text) {\n return text;\n };\n _proto.del = function del(text) {\n return text;\n };\n _proto.html = function html(text) {\n return text;\n };\n _proto.text = function text(_text) {\n return _text;\n };\n _proto.link = function link(href, title, text) {\n return '' + text;\n };\n _proto.image = function image(href, title, text) {\n return '' + text;\n };\n _proto.br = function br() {\n return '';\n };\n return TextRenderer;\n }();\n\n /**\n * Slugger generates header id\n */\n var Slugger = /*#__PURE__*/function () {\n function Slugger() {\n this.seen = {};\n }\n\n /**\n * @param {string} value\n */\n var _proto = Slugger.prototype;\n _proto.serialize = function serialize(value) {\n return value.toLowerCase().trim()\n // remove html tags\n .replace(/<[!\\/a-z].*?>/ig, '')\n // remove unwanted chars\n .replace(/[\\u2000-\\u206F\\u2E00-\\u2E7F\\\\'!\"#$%&()*+,./:;<=>?@[\\]^`{|}~]/g, '').replace(/\\s/g, '-');\n }\n\n /**\n * Finds the next safe (unique) slug to use\n * @param {string} originalSlug\n * @param {boolean} isDryRun\n */;\n _proto.getNextSafeSlug = function getNextSafeSlug(originalSlug, isDryRun) {\n var slug = originalSlug;\n var occurenceAccumulator = 0;\n if (this.seen.hasOwnProperty(slug)) {\n occurenceAccumulator = this.seen[originalSlug];\n do {\n occurenceAccumulator++;\n slug = originalSlug + '-' + occurenceAccumulator;\n } while (this.seen.hasOwnProperty(slug));\n }\n if (!isDryRun) {\n this.seen[originalSlug] = occurenceAccumulator;\n this.seen[slug] = 0;\n }\n return slug;\n }\n\n /**\n * Convert string to unique id\n * @param {object} [options]\n * @param {boolean} [options.dryrun] Generates the next unique slug without\n * updating the internal accumulator.\n */;\n _proto.slug = function slug(value, options) {\n if (options === void 0) {\n options = {};\n }\n var slug = this.serialize(value);\n return this.getNextSafeSlug(slug, options.dryrun);\n };\n return Slugger;\n }();\n\n /**\n * Parsing & Compiling\n */\n var Parser = /*#__PURE__*/function () {\n function Parser(options) {\n this.options = options || exports.defaults;\n this.options.renderer = this.options.renderer || new Renderer();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n this.textRenderer = new TextRenderer();\n this.slugger = new Slugger();\n }\n\n /**\n * Static Parse Method\n */\n Parser.parse = function parse(tokens, options) {\n var parser = new Parser(options);\n return parser.parse(tokens);\n }\n\n /**\n * Static Parse Inline Method\n */;\n Parser.parseInline = function parseInline(tokens, options) {\n var parser = new Parser(options);\n return parser.parseInline(tokens);\n }\n\n /**\n * Parse Loop\n */;\n var _proto = Parser.prototype;\n _proto.parse = function parse(tokens, top) {\n if (top === void 0) {\n top = true;\n }\n var out = '',\n i,\n j,\n k,\n l2,\n l3,\n row,\n cell,\n header,\n body,\n token,\n ordered,\n start,\n loose,\n itemBody,\n item,\n checked,\n task,\n checkbox,\n ret;\n var l = tokens.length;\n for (i = 0; i < l; i++) {\n token = tokens[i];\n\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n ret = this.options.extensions.renderers[token.type].call({\n parser: this\n }, token);\n if (ret !== false || !['space', 'hr', 'heading', 'code', 'table', 'blockquote', 'list', 'html', 'paragraph', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n switch (token.type) {\n case 'space':\n {\n continue;\n }\n case 'hr':\n {\n out += this.renderer.hr();\n continue;\n }\n case 'heading':\n {\n out += this.renderer.heading(this.parseInline(token.tokens), token.depth, unescape(this.parseInline(token.tokens, this.textRenderer)), this.slugger);\n continue;\n }\n case 'code':\n {\n out += this.renderer.code(token.text, token.lang, token.escaped);\n continue;\n }\n case 'table':\n {\n header = '';\n\n // header\n cell = '';\n l2 = token.header.length;\n for (j = 0; j < l2; j++) {\n cell += this.renderer.tablecell(this.parseInline(token.header[j].tokens), {\n header: true,\n align: token.align[j]\n });\n }\n header += this.renderer.tablerow(cell);\n body = '';\n l2 = token.rows.length;\n for (j = 0; j < l2; j++) {\n row = token.rows[j];\n cell = '';\n l3 = row.length;\n for (k = 0; k < l3; k++) {\n cell += this.renderer.tablecell(this.parseInline(row[k].tokens), {\n header: false,\n align: token.align[k]\n });\n }\n body += this.renderer.tablerow(cell);\n }\n out += this.renderer.table(header, body);\n continue;\n }\n case 'blockquote':\n {\n body = this.parse(token.tokens);\n out += this.renderer.blockquote(body);\n continue;\n }\n case 'list':\n {\n ordered = token.ordered;\n start = token.start;\n loose = token.loose;\n l2 = token.items.length;\n body = '';\n for (j = 0; j < l2; j++) {\n item = token.items[j];\n checked = item.checked;\n task = item.task;\n itemBody = '';\n if (item.task) {\n checkbox = this.renderer.checkbox(checked);\n if (loose) {\n if (item.tokens.length > 0 && item.tokens[0].type === 'paragraph') {\n item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;\n }\n } else {\n item.tokens.unshift({\n type: 'text',\n text: checkbox\n });\n }\n } else {\n itemBody += checkbox;\n }\n }\n itemBody += this.parse(item.tokens, loose);\n body += this.renderer.listitem(itemBody, task, checked);\n }\n out += this.renderer.list(body, ordered, start);\n continue;\n }\n case 'html':\n {\n // TODO parse inline content if parameter markdown=1\n out += this.renderer.html(token.text);\n continue;\n }\n case 'paragraph':\n {\n out += this.renderer.paragraph(this.parseInline(token.tokens));\n continue;\n }\n case 'text':\n {\n body = token.tokens ? this.parseInline(token.tokens) : token.text;\n while (i + 1 < l && tokens[i + 1].type === 'text') {\n token = tokens[++i];\n body += '\\n' + (token.tokens ? this.parseInline(token.tokens) : token.text);\n }\n out += top ? this.renderer.paragraph(body) : body;\n continue;\n }\n default:\n {\n var errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n\n /**\n * Parse Inline Tokens\n */;\n _proto.parseInline = function parseInline(tokens, renderer) {\n renderer = renderer || this.renderer;\n var out = '',\n i,\n token,\n ret;\n var l = tokens.length;\n for (i = 0; i < l; i++) {\n token = tokens[i];\n\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n ret = this.options.extensions.renderers[token.type].call({\n parser: this\n }, token);\n if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n switch (token.type) {\n case 'escape':\n {\n out += renderer.text(token.text);\n break;\n }\n case 'html':\n {\n out += renderer.html(token.text);\n break;\n }\n case 'link':\n {\n out += renderer.link(token.href, token.title, this.parseInline(token.tokens, renderer));\n break;\n }\n case 'image':\n {\n out += renderer.image(token.href, token.title, token.text);\n break;\n }\n case 'strong':\n {\n out += renderer.strong(this.parseInline(token.tokens, renderer));\n break;\n }\n case 'em':\n {\n out += renderer.em(this.parseInline(token.tokens, renderer));\n break;\n }\n case 'codespan':\n {\n out += renderer.codespan(token.text);\n break;\n }\n case 'br':\n {\n out += renderer.br();\n break;\n }\n case 'del':\n {\n out += renderer.del(this.parseInline(token.tokens, renderer));\n break;\n }\n case 'text':\n {\n out += renderer.text(token.text);\n break;\n }\n default:\n {\n var errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n };\n return Parser;\n }();\n\n var Hooks = /*#__PURE__*/function () {\n function Hooks(options) {\n this.options = options || exports.defaults;\n }\n var _proto = Hooks.prototype;\n /**\n * Process markdown before marked\n */\n _proto.preprocess = function preprocess(markdown) {\n return markdown;\n }\n\n /**\n * Process HTML after marked is finished\n */;\n _proto.postprocess = function postprocess(html) {\n return html;\n };\n return Hooks;\n }();\n Hooks.passThroughHooks = new Set(['preprocess', 'postprocess']);\n\n function onError(silent, async, callback) {\n return function (e) {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n if (silent) {\n var msg = '

    An error occurred:

    ' + escape(e.message + '', true) + '
    ';\n if (async) {\n return Promise.resolve(msg);\n }\n if (callback) {\n callback(null, msg);\n return;\n }\n return msg;\n }\n if (async) {\n return Promise.reject(e);\n }\n if (callback) {\n callback(e);\n return;\n }\n throw e;\n };\n }\n function parseMarkdown(lexer, parser) {\n return function (src, opt, callback) {\n if (typeof opt === 'function') {\n callback = opt;\n opt = null;\n }\n var origOpt = _extends({}, opt);\n opt = _extends({}, marked.defaults, origOpt);\n var throwError = onError(opt.silent, opt.async, callback);\n\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n return throwError(new Error('marked(): input parameter is undefined or null'));\n }\n if (typeof src !== 'string') {\n return throwError(new Error('marked(): input parameter is of type ' + Object.prototype.toString.call(src) + ', string expected'));\n }\n checkSanitizeDeprecation(opt);\n if (opt.hooks) {\n opt.hooks.options = opt;\n }\n if (callback) {\n var highlight = opt.highlight;\n var tokens;\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src);\n }\n tokens = lexer(src, opt);\n } catch (e) {\n return throwError(e);\n }\n var done = function done(err) {\n var out;\n if (!err) {\n try {\n if (opt.walkTokens) {\n marked.walkTokens(tokens, opt.walkTokens);\n }\n out = parser(tokens, opt);\n if (opt.hooks) {\n out = opt.hooks.postprocess(out);\n }\n } catch (e) {\n err = e;\n }\n }\n opt.highlight = highlight;\n return err ? throwError(err) : callback(null, out);\n };\n if (!highlight || highlight.length < 3) {\n return done();\n }\n delete opt.highlight;\n if (!tokens.length) return done();\n var pending = 0;\n marked.walkTokens(tokens, function (token) {\n if (token.type === 'code') {\n pending++;\n setTimeout(function () {\n highlight(token.text, token.lang, function (err, code) {\n if (err) {\n return done(err);\n }\n if (code != null && code !== token.text) {\n token.text = code;\n token.escaped = true;\n }\n pending--;\n if (pending === 0) {\n done();\n }\n });\n }, 0);\n }\n });\n if (pending === 0) {\n done();\n }\n return;\n }\n if (opt.async) {\n return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src).then(function (src) {\n return lexer(src, opt);\n }).then(function (tokens) {\n return opt.walkTokens ? Promise.all(marked.walkTokens(tokens, opt.walkTokens)).then(function () {\n return tokens;\n }) : tokens;\n }).then(function (tokens) {\n return parser(tokens, opt);\n }).then(function (html) {\n return opt.hooks ? opt.hooks.postprocess(html) : html;\n })[\"catch\"](throwError);\n }\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src);\n }\n var _tokens = lexer(src, opt);\n if (opt.walkTokens) {\n marked.walkTokens(_tokens, opt.walkTokens);\n }\n var html = parser(_tokens, opt);\n if (opt.hooks) {\n html = opt.hooks.postprocess(html);\n }\n return html;\n } catch (e) {\n return throwError(e);\n }\n };\n }\n\n /**\n * Marked\n */\n function marked(src, opt, callback) {\n return parseMarkdown(Lexer.lex, Parser.parse)(src, opt, callback);\n }\n\n /**\n * Options\n */\n\n marked.options = marked.setOptions = function (opt) {\n marked.defaults = _extends({}, marked.defaults, opt);\n changeDefaults(marked.defaults);\n return marked;\n };\n marked.getDefaults = getDefaults;\n marked.defaults = exports.defaults;\n\n /**\n * Use Extension\n */\n\n marked.use = function () {\n var extensions = marked.defaults.extensions || {\n renderers: {},\n childTokens: {}\n };\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n args.forEach(function (pack) {\n // copy options to new object\n var opts = _extends({}, pack);\n\n // set async to true if it was set to true before\n opts.async = marked.defaults.async || opts.async || false;\n\n // ==-- Parse \"addon\" extensions --== //\n if (pack.extensions) {\n pack.extensions.forEach(function (ext) {\n if (!ext.name) {\n throw new Error('extension name required');\n }\n if (ext.renderer) {\n // Renderer extensions\n var prevRenderer = extensions.renderers[ext.name];\n if (prevRenderer) {\n // Replace extension with func to run new extension but fall back if false\n extensions.renderers[ext.name] = function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n var ret = ext.renderer.apply(this, args);\n if (ret === false) {\n ret = prevRenderer.apply(this, args);\n }\n return ret;\n };\n } else {\n extensions.renderers[ext.name] = ext.renderer;\n }\n }\n if (ext.tokenizer) {\n // Tokenizer Extensions\n if (!ext.level || ext.level !== 'block' && ext.level !== 'inline') {\n throw new Error(\"extension level must be 'block' or 'inline'\");\n }\n if (extensions[ext.level]) {\n extensions[ext.level].unshift(ext.tokenizer);\n } else {\n extensions[ext.level] = [ext.tokenizer];\n }\n if (ext.start) {\n // Function to check for start of token\n if (ext.level === 'block') {\n if (extensions.startBlock) {\n extensions.startBlock.push(ext.start);\n } else {\n extensions.startBlock = [ext.start];\n }\n } else if (ext.level === 'inline') {\n if (extensions.startInline) {\n extensions.startInline.push(ext.start);\n } else {\n extensions.startInline = [ext.start];\n }\n }\n }\n }\n if (ext.childTokens) {\n // Child tokens to be visited by walkTokens\n extensions.childTokens[ext.name] = ext.childTokens;\n }\n });\n opts.extensions = extensions;\n }\n\n // ==-- Parse \"overwrite\" extensions --== //\n if (pack.renderer) {\n (function () {\n var renderer = marked.defaults.renderer || new Renderer();\n var _loop = function _loop(prop) {\n var prevRenderer = renderer[prop];\n // Replace renderer with func to run extension, but fall back if false\n renderer[prop] = function () {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n var ret = pack.renderer[prop].apply(renderer, args);\n if (ret === false) {\n ret = prevRenderer.apply(renderer, args);\n }\n return ret;\n };\n };\n for (var prop in pack.renderer) {\n _loop(prop);\n }\n opts.renderer = renderer;\n })();\n }\n if (pack.tokenizer) {\n (function () {\n var tokenizer = marked.defaults.tokenizer || new Tokenizer();\n var _loop2 = function _loop2(prop) {\n var prevTokenizer = tokenizer[prop];\n // Replace tokenizer with func to run extension, but fall back if false\n tokenizer[prop] = function () {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n var ret = pack.tokenizer[prop].apply(tokenizer, args);\n if (ret === false) {\n ret = prevTokenizer.apply(tokenizer, args);\n }\n return ret;\n };\n };\n for (var prop in pack.tokenizer) {\n _loop2(prop);\n }\n opts.tokenizer = tokenizer;\n })();\n }\n\n // ==-- Parse Hooks extensions --== //\n if (pack.hooks) {\n (function () {\n var hooks = marked.defaults.hooks || new Hooks();\n var _loop3 = function _loop3(prop) {\n var prevHook = hooks[prop];\n if (Hooks.passThroughHooks.has(prop)) {\n hooks[prop] = function (arg) {\n if (marked.defaults.async) {\n return Promise.resolve(pack.hooks[prop].call(hooks, arg)).then(function (ret) {\n return prevHook.call(hooks, ret);\n });\n }\n var ret = pack.hooks[prop].call(hooks, arg);\n return prevHook.call(hooks, ret);\n };\n } else {\n hooks[prop] = function () {\n for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n args[_key5] = arguments[_key5];\n }\n var ret = pack.hooks[prop].apply(hooks, args);\n if (ret === false) {\n ret = prevHook.apply(hooks, args);\n }\n return ret;\n };\n }\n };\n for (var prop in pack.hooks) {\n _loop3(prop);\n }\n opts.hooks = hooks;\n })();\n }\n\n // ==-- Parse WalkTokens extensions --== //\n if (pack.walkTokens) {\n var _walkTokens = marked.defaults.walkTokens;\n opts.walkTokens = function (token) {\n var values = [];\n values.push(pack.walkTokens.call(this, token));\n if (_walkTokens) {\n values = values.concat(_walkTokens.call(this, token));\n }\n return values;\n };\n }\n marked.setOptions(opts);\n });\n };\n\n /**\n * Run callback for every token\n */\n\n marked.walkTokens = function (tokens, callback) {\n var values = [];\n var _loop4 = function _loop4() {\n var token = _step.value;\n values = values.concat(callback.call(marked, token));\n switch (token.type) {\n case 'table':\n {\n for (var _iterator2 = _createForOfIteratorHelperLoose(token.header), _step2; !(_step2 = _iterator2()).done;) {\n var cell = _step2.value;\n values = values.concat(marked.walkTokens(cell.tokens, callback));\n }\n for (var _iterator3 = _createForOfIteratorHelperLoose(token.rows), _step3; !(_step3 = _iterator3()).done;) {\n var row = _step3.value;\n for (var _iterator4 = _createForOfIteratorHelperLoose(row), _step4; !(_step4 = _iterator4()).done;) {\n var _cell = _step4.value;\n values = values.concat(marked.walkTokens(_cell.tokens, callback));\n }\n }\n break;\n }\n case 'list':\n {\n values = values.concat(marked.walkTokens(token.items, callback));\n break;\n }\n default:\n {\n if (marked.defaults.extensions && marked.defaults.extensions.childTokens && marked.defaults.extensions.childTokens[token.type]) {\n // Walk any extensions\n marked.defaults.extensions.childTokens[token.type].forEach(function (childTokens) {\n values = values.concat(marked.walkTokens(token[childTokens], callback));\n });\n } else if (token.tokens) {\n values = values.concat(marked.walkTokens(token.tokens, callback));\n }\n }\n }\n };\n for (var _iterator = _createForOfIteratorHelperLoose(tokens), _step; !(_step = _iterator()).done;) {\n _loop4();\n }\n return values;\n };\n\n /**\n * Parse Inline\n * @param {string} src\n */\n marked.parseInline = parseMarkdown(Lexer.lexInline, Parser.parseInline);\n\n /**\n * Expose\n */\n marked.Parser = Parser;\n marked.parser = Parser.parse;\n marked.Renderer = Renderer;\n marked.TextRenderer = TextRenderer;\n marked.Lexer = Lexer;\n marked.lexer = Lexer.lex;\n marked.Tokenizer = Tokenizer;\n marked.Slugger = Slugger;\n marked.Hooks = Hooks;\n marked.parse = marked;\n var options = marked.options;\n var setOptions = marked.setOptions;\n var use = marked.use;\n var walkTokens = marked.walkTokens;\n var parseInline = marked.parseInline;\n var parse = marked;\n var parser = Parser.parse;\n var lexer = Lexer.lex;\n\n exports.Hooks = Hooks;\n exports.Lexer = Lexer;\n exports.Parser = Parser;\n exports.Renderer = Renderer;\n exports.Slugger = Slugger;\n exports.TextRenderer = TextRenderer;\n exports.Tokenizer = Tokenizer;\n exports.getDefaults = getDefaults;\n exports.lexer = lexer;\n exports.marked = marked;\n exports.options = options;\n exports.parse = parse;\n exports.parseInline = parseInline;\n exports.parser = parser;\n exports.setOptions = setOptions;\n exports.use = use;\n exports.walkTokens = walkTokens;\n\n}));\n","import { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\n\nvar render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c(VDialog,{attrs:{\"width\":_vm.width,\"persistent\":_vm.isPersistent,\"data-testid\":\"promise-dialog\"},model:{value:(_vm.showDialog),callback:function ($$v) {_vm.showDialog=$$v},expression:\"showDialog\"}},[(_vm.hasOptions)?_c(VCard,{staticClass:\"rounded-xl\"},[_vm._t(\"icon\",[(_vm.hasIcon)?_c('div',{staticClass:\"pt-6 pb-4\"},[_c(VIcon,{attrs:{\"color\":_vm.hasColor ? _vm.options.color : '',\"large\":\"\"}},[_vm._v(\" \"+_vm._s(_vm.options.icon)+\" \")])],1):_vm._e()]),_vm._t(\"title\",[_c(VCardText,{staticClass:\"text-subtitle-1 text-center mb-0 pb-0 text--dark font-weight-medium\"},[_vm._v(\" \"+_vm._s(_vm.options.title)+\" \")])]),_vm._t(\"text\",[_c(VCardText,{staticClass:\"mt-0\"},[_vm._v(\" \"+_vm._s(_vm.options.text)+\" \")])]),_c(VDivider),(_vm.hasActions)?_c(VCardActions,[_c(VSpacer),_vm._l((_vm.options.actions),function(action){return _c(VBtn,_vm._b({key:action.key,on:{\"click\":function($event){return _vm.resolveEvent(action.event)}}},'v-btn',action.attributes,false),[(action.icon)?_c(VIcon,{attrs:{\"left\":\"\"}},[_vm._v(\" \"+_vm._s(action.icon)+\" \")]):_vm._e(),_vm._v(\" \"+_vm._s(action.text)+\" \")],1)})],2):_vm._e()],2):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./promise-dialog.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./promise-dialog.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./promise-dialog.vue?vue&type=template&id=5cfdc32e\"\nimport script from \"./promise-dialog.vue?vue&type=script&lang=js\"\nexport * from \"./promise-dialog.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./styled-dialog-header.vue?vue&type=style&index=0&id=20c5c1a7&prod&lang=scss&scoped=true\"","export const TimesheetChangeType = Object.freeze({\n /**\n * Describes a change to either the start or end time of a booking from the original time.\n * e.g. Original booking: 09:30 - 15:30. Candidate changes: 09:00 - 15:30. The delta would be +30 mins.\n */\n delta: 'delta',\n /**\n * Describes a change to the start and end time of a booking that shifts the time frame of the booking forward or backwards.\n * e.g. Original booking: 09:30 - 15:30. Candidate changes: 10:30 - 16:30. The shift would be 1 hr.\n */\n shift: 'shift',\n /**\n * Describes a change to the unpaid breaks.\n */\n unpaidBreaks: 'unpaidBreaks',\n})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.graphData)?_c('StatisticsBreakdownCard',{staticClass:\"h-100 w-100\",attrs:{\"data-points\":_vm.graphData,\"graph-options\":_vm.compGraphOptions,\"filter\":\"\"},on:{\"filterChanged\":_vm.handleFilterChange},scopedSlots:_vm._u([{key:\"header\",fn:function(){return [_c('OrganisationTreeSelector',{attrs:{\"multiple\":\"\",\"searchable\":\"\",\"dense\":\"\",\"order-actions\":\"desc\",\"preselect\":\"Mine\"},on:{\"update\":_vm.filterUpdated}})]},proxy:true}],null,false,1465756807)}):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VBtnToggle } from 'vuetify/lib/components/VBtnToggle';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\nimport { VMenu } from 'vuetify/lib/components/VMenu';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VSubheader } from 'vuetify/lib/components/VSubheader';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\nimport { VTreeview } from 'vuetify/lib/components/VTreeview';\n\nvar render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:['org-tree-selector', _vm.isSmallOrLower ? 'w-100' : '']},[_c(VBtnToggle,{class:[_vm.isSmallOrLower ? 'v-btn-toggle--column w-100' : ''],attrs:{\"mandatory\":\"\",\"active-class\":\"no-active\",\"dense\":_vm.dense},on:{\"change\":_vm.handleActionButtonToggle}},[_vm._l((_vm.compActionButtons),function(actionBtn){return _c(VTooltip,{key:actionBtn.key,attrs:{\"disabled\":!actionBtn.tooltip,\"top\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar onTooltip = ref.on;\nreturn [(actionBtn.type === 'action')?_c(VBtn,_vm._g({class:[\n 'text-caption font-weight-medium',\n _vm.isActionBtnActive(actionBtn.key)\n ? 'custom-active grey lighten-2 opacity-1'\n : 'no-active' ],attrs:{\"disabled\":_vm.disabled || _vm.isLoading,\"value\":actionBtn.key,\"block\":_vm.isSmallOrLower},on:{\"click\":function($event){return _vm.selectActionFilterByLevel(actionBtn.level)}}},onTooltip),[_vm._v(\" \"+_vm._s(_vm._f(\"truncateText\")(actionBtn.title,15))+\" \")]):(actionBtn.type === 'menu')?_c(VMenu,{attrs:{\"offset-y\":\"\",\"rounded\":\"lg\",\"close-on-content-click\":false},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\n var onMenu = ref.on;\nreturn [_c(VBtn,_vm._g({class:['py-2 grey', _vm.isDarkMode ? '' : 'lighten-4'],attrs:{\"disabled\":_vm.disabled || _vm.isLoading,\"icon\":\"\",\"block\":_vm.isSmallOrLower,\"height\":_vm.dense ? '36px' : '48px',\"small\":\"\"}},Object.assign({}, onTooltip, onMenu)),[_c(VIcon,{attrs:{\"small\":\"\"}},[_vm._v(\"mdi-chevron-down\")])],1)]}}],null,true),model:{value:(_vm.levelMenuState[actionBtn.level]),callback:function ($$v) {_vm.$set(_vm.levelMenuState, actionBtn.level, $$v)},expression:\"levelMenuState[actionBtn.level]\"}},[_c(VCard,{attrs:{\"max-height\":\"300px\",\"scrollable\":\"\"}},[_c(VList,{attrs:{\"dense\":\"\"}},[_c(VSubheader,{staticClass:\"ml-2\"},[_vm._v(_vm._s(_vm.$t('general.orgFilter.actionBtn.dropdown.menuSubtitle', [ actionBtn.level.toLowerCase() ])))]),_c(VListItem,[(_vm.searchable)?_c(VTextField,{staticClass:\"mb-2\",attrs:{\"label\":_vm.$t('treeSelector.searchLabel'),\"clearable\":\"\",\"hide-details\":\"\",\"solo-inverted\":\"\",\"flat\":\"\",\"dense\":\"\",\"prepend-inner-icon\":\"mdi-magnify\",\"clear-icon\":\"mdi-close-circle\"},model:{value:(_vm.levelSearch),callback:function ($$v) {_vm.levelSearch=$$v},expression:\"levelSearch\"}}):_vm._e()],1),_vm._l((_vm.searchNodesByLevel(\n actionBtn.level,\n _vm.levelSearch\n )),function(item,index){return _c(VListItem,{key:index,on:{\"click\":function($event){return _vm.selectActionFilterByLevel(actionBtn.level, item.id)}}},[_c(VListItemTitle,[_vm._v(_vm._s(item.title)+\" \"+_vm._s(_vm.getDivisionTitleFromTeamId(item.id)))])],1)})],2)],1)],1):_vm._e()]}}],null,true)},[_vm._v(\" \"+_vm._s(actionBtn.tooltip)+\" \")])}),_c('TruncatedChipTooltip',{attrs:{\"items\":_vm.filteredSavedSelectionList},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\n var onTooltip = ref.onTooltip;\nreturn [_c(VBtn,_vm._g({directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showActionBtn(_vm.treeLevel) && _vm.savedTreeSelection.length),expression:\"showActionBtn(treeLevel) && savedTreeSelection.length\"}],class:[\n 'text-caption font-weight-medium',\n _vm.isActionBtnActive('action-btn-tree')\n ? 'custom-active grey lighten-2 opacity-1'\n : 'no-active' ],attrs:{\"disabled\":_vm.disabled || _vm.isLoading,\"variant\":\"tonal\",\"block\":_vm.isSmallOrLower,\"value\":\"action-btn-tree\"},on:{\"click\":function($event){_vm.savedTreeSelection.length === 0\n ? null\n : _vm.selectActionFilterByLevel(_vm.treeLevel)}}},onTooltip),[_vm._v(\" \"+_vm._s(_vm._f(\"truncateText\")(_vm.compTreeSelectionPreviewBtnText,15))+\" \")])]}}])}),(_vm.showActionBtn(_vm.treeLevel))?_c(VBtn,{attrs:{\"icon\":\"\",\"active-class\":\"no-active\",\"loading\":_vm.isLoading,\"disabled\":_vm.disabled,\"block\":_vm.isSmallOrLower},on:{\"click\":function($event){_vm.isDialogShowing = true}}},[_c(VIcon,{attrs:{\"small\":\"\"}},[_vm._v(\"mdi-dots-vertical\")])],1):_vm._e()],2),_c(VDialog,{attrs:{\"scrollable\":\"\",\"max-width\":\"800\"},on:{\"click:outside\":_vm.close},model:{value:(_vm.isDialogShowing),callback:function ($$v) {_vm.isDialogShowing=$$v},expression:\"isDialogShowing\"}},[_c(VCard,{attrs:{\"height\":\"740\",\"loading\":_vm.isLoading}},[_c('div',{staticClass:\"text-h6 blue pa-5\"},[_c('div',{staticClass:\"d-flex justify-space-between\"},[_c('p',{staticClass:\"mb-0 white--text\"},[_vm._v(_vm._s(_vm.$t('general.orgFilter.dialog.header.title')))]),_c(VSpacer),_c(VBtn,{staticClass:\"rounded-lg\",staticStyle:{\"width\":\"42px\",\"height\":\"42px\"},attrs:{\"icon\":\"\",\"dark\":\"\"},on:{\"click\":_vm.close}},[_c(VIcon,[_vm._v(\"mdi-close\")])],1)],1),_c('div',{staticClass:\"d-flex align-center justify-space-between mt-4\"},[(_vm.searchable)?_c(VTextField,{attrs:{\"dark\":\"\",\"label\":_vm.$t('treeSelector.searchLabel'),\"color\":\"white\",\"clearable\":\"\",\"hide-details\":\"\",\"outlined\":\"\",\"dense\":\"\",\"prepend-inner-icon\":\"mdi-magnify\",\"clear-icon\":\"mdi-close-circle\"},on:{\"input\":_vm.handleSearch},model:{value:(_vm.search),callback:function ($$v) {_vm.search=$$v},expression:\"search\"}}):_vm._e(),(_vm.multiple)?_c(VBtn,{staticClass:\"ml-2 d-flex justify-center\",staticStyle:{\"height\":\"42px\",\"padding-top\":\"2px\"},attrs:{\"disabled\":_vm.showSavePresetForm,\"outlined\":\"\",\"text\":\"\",\"dark\":\"\"},on:{\"click\":_vm.toggleSelectionView}},[_vm._v(\" \"+_vm._s(_vm.$t('general.orgFilter.dialog.currentlySelectedBtn', [ _vm.filteredCurrentlySelectedList.length ]))+\" \"),_c(VIcon,{attrs:{\"right\":\"\"}},[_vm._v(_vm._s(_vm.showChipSelectionView ? 'mdi-chevron-up' : 'mdi-chevron-down'))])],1):_vm._e(),(_vm.multiple)?_c(VTooltip,{attrs:{\"top\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\n var onTooltip = ref.on;\nreturn [(_vm.multiple)?_c(VBtn,_vm._g({staticClass:\"rounded-lg ml-2\",staticStyle:{\"width\":\"42px\",\"height\":\"42px\",\"padding-top\":\"2px\"},attrs:{\"icon\":\"\",\"dark\":\"\",\"text\":\"\",\"outlined\":\"\"},on:{\"click\":_vm.openManagePresetsView}},onTooltip),[_c(VIcon,{attrs:{\"small\":\"\"}},[_vm._v(\"mdi-folder-multiple\")])],1):_vm._e()]}}],null,false,1470954969)},[_vm._v(\" \"+_vm._s(_vm.$t('general.orgFilter.dialog.header.managePresetsTooltip'))+\" \")]):_vm._e()],1)]),(_vm.showManagePresetsView)?_c(VCardText,{staticClass:\"px-5 pt-3\"},[_c('ManagePresetsTable',{attrs:{\"search\":_vm.search},on:{\"edit\":_vm.openSavePresetMenu,\"delete\":_vm.openDeletePresetConfirmation},model:{value:(_vm.selectedPreset),callback:function ($$v) {_vm.selectedPreset=$$v},expression:\"selectedPreset\"}})],1):_vm._e(),(_vm.showDeletePresetConfirmation)?_c(VCardText,{staticClass:\"px-5 d-flex justify-center align-center\"},[_c('DeletePresetConfirmationView',{attrs:{\"preset\":_vm.selectedPreset[0]},on:{\"cancel\":_vm.cancelDeletePreset,\"delete\":_vm.deleteSelectedPreset}})],1):_vm._e(),(_vm.showPresetSaveSuccessView)?_c(VCardText,{staticClass:\"px-5 d-flex justify-center align-center\"},[_c('PresetSavedSuccessView',{attrs:{\"preset-form\":_vm.presetForm},on:{\"back\":_vm.returnToTreeView,\"apply\":function($event){return _vm.applyPresetSelection(_vm.presetForm.key, true)}}})],1):_vm._e(),(_vm.showSavePresetForm)?_c(VCardText,{staticClass:\"px-5 pt-3\"},[_c('SavePresetForm',{attrs:{\"search\":_vm.search},on:{\"validate\":_vm.updateFormState},model:{value:(_vm.presetForm),callback:function ($$v) {_vm.presetForm=$$v},expression:\"presetForm\"}})],1):_vm._e(),(_vm.showChipSelectionView)?_c(VCardText,[(!_vm.hasSelection)?_c('EmptyStateBlock',{attrs:{\"title\":_vm.$t('general.orgFilter.chipSelection.empty.title'),\"description\":_vm.$t('general.orgFilter.chipSelection.empty.description')},scopedSlots:_vm._u([{key:\"button\",fn:function(){return [_c(VBtn,{attrs:{\"text\":\"\",\"outlined\":\"\"},on:{\"click\":_vm.toggleSelectionView}},[_c(VIcon,{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-arrow-left\")]),_vm._v(\" Go back \")],1)]},proxy:true}],null,false,2008312014)}):(!_vm.hasSearchableSelection)?_c('EmptySearchResultsBlock',{attrs:{\"search\":_vm.search},on:{\"clear\":function($event){_vm.search = ''}}}):_c('div',{staticClass:\"mt-2\"},[_c('TruncatedChipList',{attrs:{\"items\":_vm.searchableSelection,\"closeable\":\"\"},on:{\"closeChip\":_vm.closeChip}})],1)],1):_vm._e(),(_vm.showTreeView)?_c('div',[_c(VCardText,{class:[\n 'py-1 px-5 d-flex grey',\n _vm.isDarkMode ? 'lighten-1' : 'lighten-5' ]},[_c(VSpacer),_c(VBtn,{attrs:{\"text\":\"\",\"title\":_vm.expanded\n ? _vm.$t('general.orgFilter.treeview.collapseAllTooltip')\n : _vm.$t('general.orgFilter.treeview.expandAllTooltip'),\"icon\":\"\",\"x-small\":\"\"},on:{\"click\":_vm.toggleTreeview}},[_c(VIcon,[_vm._v(_vm._s(_vm.expanded ? 'mdi-minus-box-multiple' : 'mdi-plus-box-multiple'))])],1)],1),_c(VDivider)],1):_vm._e(),(_vm.showTreeView)?_c(VCardText,{staticClass:\"px-3\"},[_c(VTreeview,{ref:\"orgTreeview\",attrs:{\"activatable\":!_vm.multiple,\"rounded\":\"\",\"color\":\"primary\",\"selection-type\":_vm.selectionType,\"search\":_vm.search,\"selectable\":_vm.multiple,\"items\":_vm.processedOrgTree,\"open-all\":_vm.expanded,\"item-key\":\"key\",\"item-text\":\"title\",\"return-object\":\"\",\"expand-icon\":\"mdi-chevron-down\"},on:{\"update:active\":_vm.updateSelection},model:{value:(_vm.currentlySelected),callback:function ($$v) {_vm.currentlySelected=$$v},expression:\"currentlySelected\"}})],1):_vm._e(),(_vm.compDialogActionButtons.length > 0)?_c(VDivider):_vm._e(),(_vm.compDialogActionButtons.length > 0)?_c(VCardActions,{staticClass:\"px-5\"},[_c(VSpacer),_vm._l((_vm.compDialogActionButtons),function(action){return _c(VBtn,{key:action.key,attrs:{\"color\":action.color,\"disabled\":action.disabled,\"text\":action.text},on:{\"click\":action.event}},[_vm._v(\" \"+_vm._s(action.title)+\" \")])})],2):_vm._e()],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/* eslint-disable no-unused-vars */\n/**\n * @typedef {Object} SimpleOrgTreeNodeType\n * @property {string} id - Time the break started\n * @property {string} level - Time the break ended\n */\n\n/**\n * @class\n */\nexport default class SimpleOrgTreeNode {\n /**\n * Create a new SimpleOrgTreeNode.\n * @param {SimpleOrgTreeNodeType} params\n */\n constructor(params) {\n this.id = params.id\n this.level = params.level\n }\n}\n","import { sample } from 'lodash'\n\nconst adjectives = [\n 'Big',\n 'Colossal',\n 'Gigantic',\n 'Great',\n 'Huge',\n 'Little',\n 'Delightful',\n 'Large',\n 'Miniature',\n 'Scrawny',\n 'Tall',\n 'Teeny',\n 'Happy',\n 'Gorgeous',\n 'Plain',\n 'Wonderful',\n 'Happy',\n 'Candy',\n 'Jolly',\n 'Stoney',\n 'Pebble',\n 'Cobble',\n 'Massive',\n 'Tiny',\n 'Enormous',\n 'Petite',\n 'Vast',\n 'Mighty',\n 'Charming',\n 'Elegant',\n 'Radiant',\n 'Dull',\n 'Splendid',\n 'Joyful',\n 'Cheerful',\n 'Rocky',\n 'Smooth',\n 'Bumpy',\n 'Shiny',\n 'Gleaming',\n 'Sparkling',\n 'Dainty',\n 'Sturdy',\n 'Robust',\n 'Fragile',\n]\n\nconst names = [\n 'Statue',\n 'Island',\n 'Tower',\n 'Road',\n 'Block',\n 'Bridge',\n 'Court',\n 'House',\n 'Rock',\n 'Bend',\n 'Mountain',\n 'Hill',\n 'Fountain',\n 'Palace',\n 'Mansion',\n 'River',\n 'Park',\n 'Garden',\n 'Lake',\n 'Forest',\n 'Beach',\n 'Cave',\n 'Tunnel',\n 'Path',\n 'Trail',\n 'Cliff',\n 'Valley',\n 'Pond',\n 'Stream',\n 'Waterfall',\n 'Village',\n 'City',\n 'Temple',\n 'Castle',\n 'Fortress',\n 'Harbor',\n]\n\nconst generateRandomName = () => `${sample(adjectives)} ${sample(names)}`\nexport { generateRandomName }\n","import { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VChip } from 'vuetify/lib/components/VChip';\nimport { VDataTable } from 'vuetify/lib/components/VDataTable';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\n\nvar render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('header',[_c('h6',{staticClass:\"text-subtitle-1 font-weight-medium\"},[_vm._v(_vm._s(_vm.$t('general.orgFilter.dialog.managePresets.title')))]),_c('p',{staticClass:\"text-caption\"},[_vm._v(_vm._s(_vm.$t('general.orgFilter.dialog.managePresets.subtitle')))])]),_c(VDataTable,{class:['overflow-y-auto'],attrs:{\"value\":_vm.selectedPreset,\"headers\":_vm.tableHeaders,\"items\":_vm.presets,\"item-key\":\"key\",\"search\":_vm.search,\"show-select\":\"\",\"dense\":\"\",\"single-select\":\"\",\"selectable-key\":\"key\",\"sort-desc\":['favourite'],\"sort-by\":['favourite', 'title']},on:{\"input\":_vm.handleSelection},scopedSlots:_vm._u([{key:\"item.selection\",fn:function(ref){\nvar item = ref.item;\nreturn [_c('div',{staticClass:\"d-flex justify-center align-center\"},[_c('TruncatedChipTooltip',{attrs:{\"items\":_vm.removeDuplicateAdminsSelection(item.selection)},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar onTooltip = ref.onTooltip;\nreturn [_c(VChip,_vm._g({attrs:{\"small\":\"\"}},onTooltip),[_vm._v(_vm._s(_vm.removeDuplicateAdminsSelection(item.selection).length))])]}}],null,true)})],1)]}},{key:\"item.favourite\",fn:function(ref){\nvar item = ref.item;\nreturn [_c('div',{staticClass:\"d-flex justify-center align-center\"},[_c(VBtn,{attrs:{\"icon\":\"\",\"text\":\"\",\"color\":item.favourite ? 'warning' : null},on:{\"click\":function($event){return _vm.togglePresetFavouriteState(item.key)}}},[_c(VIcon,[_vm._v(_vm._s(item.favourite ? 'mdi-star' : 'mdi-star-outline'))])],1)],1)]}},{key:\"item.createdDate\",fn:function(ref){\nvar item = ref.item;\nreturn [_c(VTooltip,{attrs:{\"top\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar onTooltip = ref.on;\nreturn [_c('div',_vm._g({staticClass:\"d-flex align-center\"},onTooltip),[_vm._v(\" \"+_vm._s(_vm.humanReadableDate(item.createdDate))+\" \")])]}}],null,true)},[_vm._v(\" \"+_vm._s((\"Created on \" + (_vm.formatPresetCreatedDate(item.createdDate))))+\" \")])]}},{key:\"item.actions\",fn:function(ref){\nvar item = ref.item;\nreturn [_c('div',{staticClass:\"d-flex justify-end align-center\"},[_c(VBtn,{staticClass:\"mr-2\",attrs:{\"icon\":\"\",\"x-small\":\"\"},on:{\"click\":function($event){return _vm.editPreset(item.key)}}},[_c(VIcon,[_vm._v(\"mdi-pencil\")])],1),_c(VBtn,{attrs:{\"icon\":\"\",\"x-small\":\"\"},on:{\"click\":function($event){return _vm.deletePreset(item.key)}}},[_c(VIcon,[_vm._v(\"mdi-delete\")])],1)],1)]}}])})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { VTooltip } from 'vuetify/lib/components/VTooltip';\n\nvar render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c(VTooltip,{attrs:{\"disabled\":_vm.items.length === 0,\"top\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar onTooltip = ref.on;\nreturn [_vm._t(\"default\",null,{\"onTooltip\":onTooltip})]}}],null,true)},[_c('div',{staticStyle:{\"max-width\":\"400px\"}},[_c('TruncatedChipList',{attrs:{\"items\":_vm.items,\"limit\":_vm.limit,\"small\":true,\"color\":_vm.isDarkMode ? 'grey darken-1' : 'grey darken-4'}})],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { VAvatar } from 'vuetify/lib/components/VAvatar';\nimport { VChip } from 'vuetify/lib/components/VChip';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VScrollXTransition } from 'vuetify/lib/components/transitions';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\n\nvar render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c(VScrollXTransition,{attrs:{\"group\":\"\",\"hide-on-leave\":\"\"}},_vm._l((_vm.truncatedList),function(item,i){return _c(VChip,_vm._g(_vm._b({key:i,staticClass:\"ma-1\",attrs:{\"color\":_vm.compChipColor,\"dark\":\"\",\"close\":_vm.closeable},on:{\"click:close\":function($event){return _vm.closeChip(item)}}},'v-chip',_vm.$attrs,false),_vm.$listeners),[_vm._v(\" \"+_vm._s(item.title)+\" \")])}),1),_c(VTooltip,{attrs:{\"disabled\":!_vm.expandable || _vm.expanded,\"top\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar onTooltip = ref.on;\nreturn [_c(VChip,_vm._g(_vm._b({directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.shouldItemsBeTruncated),expression:\"shouldItemsBeTruncated\"}],class:['ma-1', _vm.hasColorAttr ? '' : 'blue--text'],attrs:{\"dark\":\"\",\"color\":_vm.compSummaryChipColor},on:{\"click\":_vm.toggleExpand}},'v-chip',_vm.$attrs,false),onTooltip),[(_vm.expanded)?_c(VAvatar,{attrs:{\"left\":\"\"}},[_c(VIcon,{attrs:{\"small\":\"\"}},[_vm._v(\"mdi-eye-off\")])],1):_vm._e(),_vm._v(\" \"+_vm._s(_vm.compSummaryChipText)+\" \")],1)]}}])},[_vm._v(\" \"+_vm._s(_vm.compSummaryChipTooltip)+\" \")])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./truncated-chip-list.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./truncated-chip-list.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./truncated-chip-list.vue?vue&type=template&id=6d8d70e0\"\nimport script from \"./truncated-chip-list.vue?vue&type=script&lang=js\"\nexport * from \"./truncated-chip-list.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./truncated-chip-tooltip.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./truncated-chip-tooltip.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./truncated-chip-tooltip.vue?vue&type=template&id=62c2a3af\"\nimport script from \"./truncated-chip-tooltip.vue?vue&type=script&lang=js\"\nexport * from \"./truncated-chip-tooltip.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./manage-presets-table.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./manage-presets-table.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./manage-presets-table.vue?vue&type=template&id=21390f26\"\nimport script from \"./manage-presets-table.vue?vue&type=script&lang=js\"\nexport * from \"./manage-presets-table.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\n\nvar render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('EmptyStateBlock',{attrs:{\"icon\":\"mdi-check-circle\",\"title\":_vm.$t('general.orgFilter.dialog.saveSuccess.title', [_vm.presetForm.title]),\"description\":_vm.$t('general.orgFilter.dialog.saveSuccess.description')},scopedSlots:_vm._u([{key:\"button\",fn:function(){return [_c('div',[_c(VBtn,{staticClass:\"mr-2\",attrs:{\"text\":\"\",\"outlined\":\"\"},on:{\"click\":function($event){return _vm.$emit('back')}}},[_c(VIcon,{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-arrow-left\")]),_vm._v(\" \"+_vm._s(_vm.$t('general.back'))+\" \")],1),_c(VBtn,{attrs:{\"text\":\"\",\"outlined\":\"\",\"color\":\"primary\"},on:{\"click\":function($event){return _vm.$emit('apply')}}},[_vm._v(\" \"+_vm._s(_vm.$t('general.orgFilter.dialog.saveSuccess.usePresetBtn'))+\" \")])],1)]},proxy:true}])})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./preset-saved-success-view.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./preset-saved-success-view.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./preset-saved-success-view.vue?vue&type=template&id=a6cd9398\"\nimport script from \"./preset-saved-success-view.vue?vue&type=script&lang=js\"\nexport * from \"./preset-saved-success-view.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { VBtn } from 'vuetify/lib/components/VBtn';\n\nvar render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('EmptyStateBlock',{attrs:{\"icon\":\"mdi-delete\",\"title\":_vm.$t('general.orgFilter.dialog.deleteConfirm.title', [_vm.preset.title]),\"description\":_vm.$t('general.orgFilter.dialog.deleteConfirm.description')},scopedSlots:_vm._u([{key:\"button\",fn:function(){return [_c('div',[_c(VBtn,{staticClass:\"mr-2\",attrs:{\"text\":\"\",\"outlined\":\"\"},on:{\"click\":function($event){return _vm.$emit('cancel')}}},[_vm._v(\" \"+_vm._s(_vm.$t('general.cancel'))+\" \")]),_c(VBtn,{attrs:{\"text\":\"\",\"outlined\":\"\",\"color\":\"error\"},on:{\"click\":function($event){return _vm.$emit('delete')}}},[_vm._v(\" \"+_vm._s(_vm.$t('general.orgFilter.dialog.deleteConfirm.confirmBtn'))+\" \")])],1)]},proxy:true}])})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./delete-preset-confirmation-view.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./delete-preset-confirmation-view.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./delete-preset-confirmation-view.vue?vue&type=template&id=77593bf8\"\nimport script from \"./delete-preset-confirmation-view.vue?vue&type=script&lang=js\"\nexport * from \"./delete-preset-confirmation-view.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\n\nvar render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('EmptyStateBlock',{attrs:{\"title\":_vm.$t('general.orgFilter.dialog.search.emptyState.title', [_vm.search]),\"description\":_vm.$t('general.orgFilter.dialog.search.emptyState.description')},scopedSlots:_vm._u([{key:\"button\",fn:function(){return [_c(VBtn,{attrs:{\"text\":\"\",\"outlined\":\"\"},on:{\"click\":function($event){return _vm.$emit('clear')}}},[_c(VIcon,{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-close\")]),_vm._v(\" \"+_vm._s(_vm.$t('general.orgFilter.dialog.search.emptyState.clearBtn'))+\" \")],1)]},proxy:true}])})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./empty-search-results-block.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./empty-search-results-block.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./empty-search-results-block.vue?vue&type=template&id=9e3a1050\"\nimport script from \"./empty-search-results-block.vue?vue&type=script&lang=js\"\nexport * from \"./empty-search-results-block.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { VCheckbox } from 'vuetify/lib/components/VCheckbox';\nimport { VForm } from 'vuetify/lib/components/VForm';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\n\nvar render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('header',[_c('h6',{staticClass:\"text-subtitle-1 font-weight-medium\"},[_vm._v(_vm._s(_vm.compHeader.title))]),_c('p',{staticClass:\"text-caption opacity-6\"},[_vm._v(_vm._s(_vm.compHeader.description))])]),_c(VForm,{staticClass:\"mt-4\",attrs:{\"lazy-validation\":\"\"},on:{\"input\":function($event){return _vm.$emit('validate', _vm.isPresetFormValid)}},model:{value:(_vm.isPresetFormValid),callback:function ($$v) {_vm.isPresetFormValid=$$v},expression:\"isPresetFormValid\"}},[_c(VTextField,{attrs:{\"label\":_vm.$t('forms.labels.name'),\"required\":\"\",\"rules\":[_vm.rules.required]},on:{\"input\":_vm.updateForm},model:{value:(_vm.formData.title),callback:function ($$v) {_vm.$set(_vm.formData, \"title\", $$v)},expression:\"formData.title\"}}),_c(VCheckbox,{staticClass:\"mt-0 w-fit-content\",attrs:{\"dense\":\"\",\"label\":_vm.$t('general.orgFilter.dialog.savePreset.favouriteLabel')},on:{\"change\":_vm.updateForm},model:{value:(_vm.formData.favourite),callback:function ($$v) {_vm.$set(_vm.formData, \"favourite\", $$v)},expression:\"formData.favourite\"}}),_c('p',[_vm._v(\"Selection (\"+_vm._s(_vm.filteredCurrentlySelectedList.length)+\")\")]),_c('TruncatedChipList',{attrs:{\"limit\":4,\"items\":_vm.searchableSelection,\"closeable\":\"\",\"expandable\":\"\"},on:{\"closeChip\":_vm.closePresetChip}})],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./save-preset-form.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./save-preset-form.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./save-preset-form.vue?vue&type=template&id=0b7137e4\"\nimport script from \"./save-preset-form.vue?vue&type=script&lang=js\"\nexport * from \"./save-preset-form.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./organisation-tree-selector.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./organisation-tree-selector.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./organisation-tree-selector.vue?vue&type=template&id=1e73a3eb&scoped=true\"\nimport script from \"./organisation-tree-selector.vue?vue&type=script&lang=js\"\nexport * from \"./organisation-tree-selector.vue?vue&type=script&lang=js\"\nimport style0 from \"./organisation-tree-selector.vue?vue&type=style&index=0&id=1e73a3eb&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1e73a3eb\",\n null\n \n)\n\nexport default component.exports","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./disputes-table-overview-stats-breakdown-card.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./disputes-table-overview-stats-breakdown-card.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./disputes-table-overview-stats-breakdown-card.vue?vue&type=template&id=55376d40\"\nimport script from \"./disputes-table-overview-stats-breakdown-card.vue?vue&type=script&lang=js\"\nexport * from \"./disputes-table-overview-stats-breakdown-card.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","export const FormInputType = Object.freeze({\n DATE: 'date',\n TEXT: 'text',\n TEXTAREA: 'textarea',\n SELECT: 'select',\n RADIO: 'radio',\n})\n","import { FormInputType } from '@/constants/form/FormInputType.js'\nimport config from '@/common/config'\n\nexport default {\n data() {\n return {\n rules: {},\n passwordRegexString: config.get('app.password.allowedCharsRegex'),\n passwordMinChars: config.get('app.password.minChars'),\n }\n },\n created() {\n this.initRules()\n },\n computed: {\n formInputType() {\n return FormInputType\n },\n },\n methods: {\n initRules() {\n this.rules = {\n required: this.requiredRule,\n email: this.emailRule,\n passwordMinCharacters: this.passwordMinRule,\n uppercase: this.uppercaseRule,\n lowercase: this.lowercaseRule,\n number: this.numberRule,\n passwordsMatch: this.passwordMatchRule,\n special: this.specialCharacterRule,\n validPercent: this.validPercentRule,\n integer: this.integerRule,\n positiveNumber: this.positiveNumberRule,\n validInt32: this.validInt32Rule,\n }\n },\n requiredRule(v) {\n if (typeof v === 'string') {\n const trimmedString = v.replace(/^\\s+|\\s+$/gm, '')\n return !!trimmedString || this.$t('input.inputRequiredValidationText')\n }\n return !!v || this.$t('input.inputRequiredValidationText')\n },\n emailRule(v) {\n return /.+@.+/.test(v) || this.$t('input.emailRequiredValidationText')\n },\n passwordMinRule(v) {\n return (\n (!!v && v.length >= this.passwordMinChars) ||\n this.$t('input.passwordRuleMinCharacters', {\n min: this.passwordMinChars,\n })\n )\n },\n uppercaseRule(v) {\n return (\n (!!v && v.toLowerCase() !== v) || this.$t('input.passwordRuleUpperCase')\n )\n },\n lowercaseRule(v) {\n return (\n (!!v && v.toUpperCase() !== v) || this.$t('input.passwordRuleLowerCase')\n )\n },\n numberRule(v) {\n return (!!v && /\\d/.test(v)) || this.$t('input.passwordRuleNumber')\n },\n passwordMatchRule(v) {\n return (\n (!!v && v === this.newPass) || this.$t('input.passwordRuleMustMatch')\n )\n },\n specialCharacterRule(v) {\n const allowedCharsRegex = new RegExp(this.passwordRegexString, 'g')\n\n return (\n (!!v && allowedCharsRegex.test(v)) ||\n this.$t('input.passwordRuleSpecialCharacter')\n )\n },\n passwordCriteriaMet(password) {\n return (\n this.requiredRule(password) === true &&\n this.uppercaseRule(password) === true &&\n this.lowercaseRule(password) === true &&\n this.numberRule(password) === true &&\n this.specialCharacterRule(password) === true &&\n this.passwordMinRule(password) === true\n )\n },\n integerRule(v) {\n return (\n (!isNaN(v) && Number.isInteger(Number(v))) ||\n this.$t('input.integerValidationText')\n )\n },\n validInt32Rule(v) {\n const MIN_INT32 = -2147483648\n const MAX_INT32 = 2147483647\n\n return (\n (!isNaN(v) &&\n Number.isInteger(Number(v)) &&\n v >= MIN_INT32 &&\n v <= MAX_INT32) ||\n this.$t('input.int32ValidationText')\n )\n },\n validPercentRule(v) {\n return (\n (!isNaN(v) && Number(v) > 0 && Number(v) <= 100) ||\n this.$t('input.percentValidationText')\n )\n },\n positiveNumberRule(v) {\n return (\n (!isNaN(v) && v > 0) || this.$t('input.positiveNumberValidationText')\n )\n },\n },\n}\n","export const DisputePerspective = Object.freeze({\n CANDIDATE: 'candidate',\n CLIENT: 'client',\n\n isValidPerspective(value) {\n return [this.CANDIDATE, this.CLIENT].includes(value)\n },\n})\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./statistics-breakdown-card.vue?vue&type=style&index=0&id=a9a68756&prod&lang=scss&scoped=true\"","export const DisputeTypeStrings = Object.freeze({\n MISSING: 'Missing',\n CONFLICT: 'Conflict',\n})\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./organisation-tree-selector.vue?vue&type=style&index=0&id=1e73a3eb&prod&scoped=true&lang=scss\"","// Styles\nimport './VCheckbox.sass'\nimport '../../styles/components/_selection-controls.sass'\n\n// Components\nimport VIcon from '../VIcon'\nimport VInput from '../VInput'\n\n// Mixins\nimport Selectable from '../../mixins/selectable'\n\n/* @vue/component */\nexport default Selectable.extend({\n name: 'v-checkbox',\n\n props: {\n indeterminate: Boolean,\n indeterminateIcon: {\n type: String,\n default: '$checkboxIndeterminate',\n },\n offIcon: {\n type: String,\n default: '$checkboxOff',\n },\n onIcon: {\n type: String,\n default: '$checkboxOn',\n },\n },\n\n data () {\n return {\n inputIndeterminate: this.indeterminate,\n }\n },\n\n computed: {\n classes (): object {\n return {\n ...VInput.options.computed.classes.call(this),\n 'v-input--selection-controls': true,\n 'v-input--checkbox': true,\n 'v-input--indeterminate': this.inputIndeterminate,\n }\n },\n computedIcon (): string {\n if (this.inputIndeterminate) {\n return this.indeterminateIcon\n } else if (this.isActive) {\n return this.onIcon\n } else {\n return this.offIcon\n }\n },\n // Do not return undefined if disabled,\n // according to spec, should still show\n // a color when disabled and active\n validationState (): string | undefined {\n if (this.isDisabled && !this.inputIndeterminate) return undefined\n if (this.hasError && this.shouldValidate) return 'error'\n if (this.hasSuccess) return 'success'\n if (this.hasColor !== null) return this.computedColor\n return undefined\n },\n },\n\n watch: {\n indeterminate (val) {\n // https://github.com/vuetifyjs/vuetify/issues/8270\n this.$nextTick(() => (this.inputIndeterminate = val))\n },\n inputIndeterminate (val) {\n this.$emit('update:indeterminate', val)\n },\n isActive () {\n if (!this.indeterminate) return\n this.inputIndeterminate = false\n },\n },\n\n methods: {\n genCheckbox () {\n const { title, ...checkboxAttrs } = this.attrs$\n return this.$createElement('div', {\n staticClass: 'v-input--selection-controls__input',\n }, [\n this.$createElement(VIcon, this.setTextColor(this.validationState, {\n props: {\n dense: this.dense,\n dark: this.dark,\n light: this.light,\n },\n }), this.computedIcon),\n this.genInput('checkbox', {\n ...checkboxAttrs,\n 'aria-checked': this.inputIndeterminate\n ? 'mixed'\n : this.isActive.toString(),\n }),\n this.genRipple(this.setTextColor(this.rippleState)),\n ])\n },\n genDefaultSlot () {\n return [\n this.genCheckbox(),\n this.genLabel(),\n ]\n },\n },\n})\n","// Styles\nimport './VItem.sass'\n\n// Mixins\nimport { factory as GroupableFactory } from '../../mixins/groupable'\n\n// Utilities\nimport mixins from '../../util/mixins'\nimport { consoleWarn } from '../../util/console'\n\n// Types\nimport Vue from 'vue'\nimport { VNode, ScopedSlotChildren } from 'vue/types/vnode'\n\n/* @vue/component */\nexport const BaseItem = Vue.extend({\n props: {\n activeClass: String,\n value: {\n required: false,\n },\n disabled: Boolean,\n },\n\n data: () => ({\n isActive: false,\n }),\n\n methods: {\n toggle () {\n this.isActive = !this.isActive\n },\n },\n\n render (): VNode {\n if (!this.$scopedSlots.default) {\n consoleWarn('v-item is missing a default scopedSlot', this)\n\n return null as any\n }\n\n let element: VNode | ScopedSlotChildren\n\n /* istanbul ignore else */\n if (this.$scopedSlots.default) {\n element = this.$scopedSlots.default({\n active: this.isActive,\n toggle: this.toggle,\n })\n }\n\n if (Array.isArray(element) && element.length === 1) {\n element = element[0]\n }\n\n if (!element || Array.isArray(element) || !element.tag) {\n consoleWarn('v-item should only contain a single element', this)\n\n return element as any\n }\n\n element.data = this._b(element.data || {}, element.tag!, {\n class: {\n [this.activeClass]: this.isActive,\n 'v-item--disabled': this.disabled,\n },\n })\n\n if (this.disabled) {\n element.data.attrs = { ...element.data.attrs, tabindex: -1 }\n }\n\n return element\n },\n})\n\nexport default mixins(\n BaseItem,\n GroupableFactory('itemGroup', 'v-item', 'v-item-group')\n).extend({\n name: 'v-item',\n})\n","import { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VItem } from 'vuetify/lib/components/VItemGroup';\nimport { VItemGroup } from 'vuetify/lib/components/VItemGroup';\nimport { VRow } from 'vuetify/lib/components/VGrid';\n\nvar render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c(VCard,_vm._b({class:['rounded-xl h-100 pb-2', _vm.isFlat ? '' : 'custom-elevation'],style:({ backgroundColor: _vm.transparent ? '#00000000' : '' }),attrs:{\"loading\":_vm.loading}},'v-card',_vm.$attrs,false),[_c(VCardTitle,[_vm._t(\"header\")],2),_c(VCardText,[_c(VRow,{staticClass:\"d-flex align-center\"},[_c(VCol,{attrs:{\"cols\":\"12\",\"md\":\"9\"}},[_vm._t(\"summary\",[_c(VItemGroup,{attrs:{\"multiple\":\"\"},model:{value:(_vm.selection),callback:function ($$v) {_vm.selection=$$v},expression:\"selection\"}},[_c(VRow,_vm._l((_vm.listOfSummaryDataPoints),function(dataPoint){return _c(VCol,{key:dataPoint.key,attrs:{\"cols\":\"12\",\"md\":\"4\"}},[_c(VItem,{attrs:{\"value\":dataPoint.key,\"disabled\":!_vm.filter},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar active = ref.active;\nvar toggle = ref.toggle;\nreturn [_c(VCard,{class:[\n !_vm.filter ? 'cursor-default' : 'stat-filter-card',\n active ? 'stat-filter-card--selected blue--text' : '',\n 'pa-0 ma-0 transparent' ],attrs:{\"flat\":\"\",\"tile\":\"\"},on:{\"click\":toggle}},[_c('StatisticsBreakdownSummaryDataPoint',{attrs:{\"data-point\":dataPoint,\"filter\":_vm.filter}})],1)]}}],null,true)})],1)}),1)],1)],{\"dataPoints\":_vm.orderedDataPoints,\"listOfSummaryDataPoints\":_vm.listOfSummaryDataPoints})],2),_c(VCol,{attrs:{\"cols\":\"12\",\"md\":\"3\"}},[_vm._t(\"graph\",[_c('div',{staticClass:\"d-flex justify-end\"},[_c('DonutGraph',{attrs:{\"data\":_vm.graphData,\"labels\":_vm.graphLabels,\"segment-colors\":_vm.compSegmentColors,\"height\":70,\"width\":160,\"options\":_vm.graphOptions},on:{\"onChartClick\":_vm.handleChartClicked}})],1)])],2)],1)],1),_c(VCardActions,{staticClass:\"py-0\"},[_vm._t(\"footer\")],2)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"d-flex justify-end align-right w-100\"},[_c('div',{staticClass:\"chart-container d-flex justify-end\",style:(_vm.chartContainerStyle)},[_c('canvas',{ref:\"donutChart\",staticClass:\"chart\"})])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/*!\n * Chart.js v3.8.0\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.slice(0, 7) === '[object' && type.slice(-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.slice(pos, idx)];\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.2.1\n * https://github.com/kurkle/color#readme\n * (c) 2022 Jukka Kurkela\n * Released under the MIT License\n */\nfunction round(v) {\n return v + 0.5 | 0;\n}\nconst lim = (v, l, h) => Math.max(Math.min(v, h), l);\nfunction p2b(v) {\n return lim(round(v * 2.55), 0, 255);\n}\nfunction n2b(v) {\n return lim(round(v * 255), 0, 255);\n}\nfunction b2n(v) {\n return lim(round(v / 2.55) / 100, 0, 1);\n}\nfunction n2p(v) {\n return lim(round(v * 100), 0, 100);\n}\nconst map$1 = {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);\nconst isShort = v => eq(v.r) && eq(v.g) && eq(v.b) && eq(v.a);\nfunction hexParse(str) {\n var len = str.length;\n var ret;\n if (str[0] === '#') {\n if (len === 4 || len === 5) {\n ret = {\n r: 255 & map$1[str[1]] * 17,\n g: 255 & map$1[str[2]] * 17,\n b: 255 & map$1[str[3]] * 17,\n a: len === 5 ? map$1[str[4]] * 17 : 255\n };\n } else if (len === 7 || len === 9) {\n ret = {\n r: map$1[str[1]] << 4 | map$1[str[2]],\n g: map$1[str[3]] << 4 | map$1[str[4]],\n b: map$1[str[5]] << 4 | map$1[str[6]],\n a: len === 9 ? (map$1[str[7]] << 4 | map$1[str[8]]) : 255\n };\n }\n }\n return ret;\n}\nconst alpha = (a, f) => a < 255 ? f(a) : '';\nfunction hexString(v) {\n var f = isShort(v) ? h1 : h2;\n return v\n ? '#' + f(v.r) + f(v.g) + f(v.b) + alpha(v.a, f)\n : undefined;\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 const a = s * Math.min(l, 1 - l);\n const f = (n, k = (n + h / 30) % 12) => l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n return [f(0), f(8), f(4)];\n}\nfunction hsv2rgbn(h, s, v) {\n const f = (n, k = (n + h / 60) % 6) => v - v * s * Math.max(Math.min(k, 4 - k, 1), 0);\n return [f(5), f(3), f(1)];\n}\nfunction hwb2rgbn(h, w, b) {\n const rgb = hsl2rgbn(h, 1, 0.5);\n let i;\n if (w + b > 1) {\n i = 1 / (w + b);\n w *= i;\n b *= i;\n }\n for (i = 0; i < 3; i++) {\n rgb[i] *= 1 - w - b;\n rgb[i] += w;\n }\n return rgb;\n}\nfunction hueValue(r, g, b, d, max) {\n if (r === max) {\n return ((g - b) / d) + (g < b ? 6 : 0);\n }\n if (g === max) {\n return (b - r) / d + 2;\n }\n return (r - g) / d + 4;\n}\nfunction rgb2hsl(v) {\n const range = 255;\n const r = v.r / range;\n const g = v.g / range;\n const b = v.b / range;\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const l = (max + min) / 2;\n let h, s, d;\n if (max !== min) {\n d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n h = hueValue(r, g, b, d, max);\n h = h * 60 + 0.5;\n }\n return [h | 0, s || 0, l];\n}\nfunction calln(f, a, b, c) {\n return (\n Array.isArray(a)\n ? f(a[0], a[1], a[2])\n : f(a, b, c)\n ).map(n2b);\n}\nfunction hsl2rgb(h, s, l) {\n return calln(hsl2rgbn, h, s, l);\n}\nfunction hwb2rgb(h, w, b) {\n return calln(hwb2rgbn, h, w, b);\n}\nfunction hsv2rgb(h, s, v) {\n return calln(hsv2rgbn, h, s, v);\n}\nfunction hue(h) {\n return (h % 360 + 360) % 360;\n}\nfunction hueParse(str) {\n const m = HUE_RE.exec(str);\n let a = 255;\n let v;\n if (!m) {\n return;\n }\n if (m[5] !== v) {\n a = m[6] ? p2b(+m[5]) : n2b(+m[5]);\n }\n const h = hue(+m[2]);\n const p1 = +m[3] / 100;\n const p2 = +m[4] / 100;\n if (m[1] === 'hwb') {\n v = hwb2rgb(h, p1, p2);\n } else if (m[1] === 'hsv') {\n v = hsv2rgb(h, p1, p2);\n } else {\n v = hsl2rgb(h, p1, p2);\n }\n return {\n r: v[0],\n g: v[1],\n b: v[2],\n a: a\n };\n}\nfunction rotate(v, deg) {\n var h = rgb2hsl(v);\n h[0] = hue(h[0] + deg);\n h = hsl2rgb(h);\n v.r = h[0];\n v.g = h[1];\n v.b = h[2];\n}\nfunction hslString(v) {\n if (!v) {\n return;\n }\n const a = rgb2hsl(v);\n const h = a[0];\n const s = n2p(a[1]);\n const l = n2p(a[2]);\n return v.a < 255\n ? `hsla(${h}, ${s}%, ${l}%, ${b2n(v.a)})`\n : `hsl(${h}, ${s}%, ${l}%)`;\n}\nconst map = {\n x: 'dark',\n Z: 'light',\n Y: 're',\n X: 'blu',\n W: 'gr',\n V: 'medium',\n U: 'slate',\n A: 'ee',\n T: 'ol',\n S: 'or',\n B: 'ra',\n C: 'lateg',\n D: 'ights',\n R: 'in',\n Q: 'turquois',\n E: 'hi',\n P: 'ro',\n O: 'al',\n N: 'le',\n M: 'de',\n L: 'yello',\n F: 'en',\n K: 'ch',\n G: 'arks',\n H: 'ea',\n I: 'ightg',\n J: 'wh'\n};\nconst names$1 = {\n OiceXe: 'f0f8ff',\n antiquewEte: 'faebd7',\n aqua: 'ffff',\n aquamarRe: '7fffd4',\n azuY: 'f0ffff',\n beige: 'f5f5dc',\n bisque: 'ffe4c4',\n black: '0',\n blanKedOmond: 'ffebcd',\n Xe: 'ff',\n XeviTet: '8a2be2',\n bPwn: 'a52a2a',\n burlywood: 'deb887',\n caMtXe: '5f9ea0',\n KartYuse: '7fff00',\n KocTate: 'd2691e',\n cSO: 'ff7f50',\n cSnflowerXe: '6495ed',\n cSnsilk: 'fff8dc',\n crimson: 'dc143c',\n cyan: 'ffff',\n xXe: '8b',\n xcyan: '8b8b',\n xgTMnPd: 'b8860b',\n xWay: 'a9a9a9',\n xgYF: '6400',\n xgYy: 'a9a9a9',\n xkhaki: 'bdb76b',\n xmagFta: '8b008b',\n xTivegYF: '556b2f',\n xSange: 'ff8c00',\n xScEd: '9932cc',\n xYd: '8b0000',\n xsOmon: 'e9967a',\n xsHgYF: '8fbc8f',\n xUXe: '483d8b',\n xUWay: '2f4f4f',\n xUgYy: '2f4f4f',\n xQe: 'ced1',\n xviTet: '9400d3',\n dAppRk: 'ff1493',\n dApskyXe: 'bfff',\n dimWay: '696969',\n dimgYy: '696969',\n dodgerXe: '1e90ff',\n fiYbrick: 'b22222',\n flSOwEte: 'fffaf0',\n foYstWAn: '228b22',\n fuKsia: 'ff00ff',\n gaRsbSo: 'dcdcdc',\n ghostwEte: 'f8f8ff',\n gTd: 'ffd700',\n gTMnPd: 'daa520',\n Way: '808080',\n gYF: '8000',\n gYFLw: 'adff2f',\n gYy: '808080',\n honeyMw: 'f0fff0',\n hotpRk: 'ff69b4',\n RdianYd: 'cd5c5c',\n Rdigo: '4b0082',\n ivSy: 'fffff0',\n khaki: 'f0e68c',\n lavFMr: 'e6e6fa',\n lavFMrXsh: 'fff0f5',\n lawngYF: '7cfc00',\n NmoncEffon: 'fffacd',\n ZXe: 'add8e6',\n ZcSO: 'f08080',\n Zcyan: 'e0ffff',\n ZgTMnPdLw: 'fafad2',\n ZWay: 'd3d3d3',\n ZgYF: '90ee90',\n ZgYy: 'd3d3d3',\n ZpRk: 'ffb6c1',\n ZsOmon: 'ffa07a',\n ZsHgYF: '20b2aa',\n ZskyXe: '87cefa',\n ZUWay: '778899',\n ZUgYy: '778899',\n ZstAlXe: 'b0c4de',\n ZLw: 'ffffe0',\n lime: 'ff00',\n limegYF: '32cd32',\n lRF: 'faf0e6',\n magFta: 'ff00ff',\n maPon: '800000',\n VaquamarRe: '66cdaa',\n VXe: 'cd',\n VScEd: 'ba55d3',\n VpurpN: '9370db',\n VsHgYF: '3cb371',\n VUXe: '7b68ee',\n VsprRggYF: 'fa9a',\n VQe: '48d1cc',\n VviTetYd: 'c71585',\n midnightXe: '191970',\n mRtcYam: 'f5fffa',\n mistyPse: 'ffe4e1',\n moccasR: 'ffe4b5',\n navajowEte: 'ffdead',\n navy: '80',\n Tdlace: 'fdf5e6',\n Tive: '808000',\n TivedBb: '6b8e23',\n Sange: 'ffa500',\n SangeYd: 'ff4500',\n ScEd: 'da70d6',\n pOegTMnPd: 'eee8aa',\n pOegYF: '98fb98',\n pOeQe: 'afeeee',\n pOeviTetYd: 'db7093',\n papayawEp: 'ffefd5',\n pHKpuff: 'ffdab9',\n peru: 'cd853f',\n pRk: 'ffc0cb',\n plum: 'dda0dd',\n powMrXe: 'b0e0e6',\n purpN: '800080',\n YbeccapurpN: '663399',\n Yd: 'ff0000',\n Psybrown: 'bc8f8f',\n PyOXe: '4169e1',\n saddNbPwn: '8b4513',\n sOmon: 'fa8072',\n sandybPwn: 'f4a460',\n sHgYF: '2e8b57',\n sHshell: 'fff5ee',\n siFna: 'a0522d',\n silver: 'c0c0c0',\n skyXe: '87ceeb',\n UXe: '6a5acd',\n UWay: '708090',\n UgYy: '708090',\n snow: 'fffafa',\n sprRggYF: 'ff7f',\n stAlXe: '4682b4',\n tan: 'd2b48c',\n teO: '8080',\n tEstN: 'd8bfd8',\n tomato: 'ff6347',\n Qe: '40e0d0',\n viTet: 'ee82ee',\n JHt: 'f5deb3',\n wEte: 'ffffff',\n wEtesmoke: 'f5f5f5',\n Lw: 'ffff00',\n LwgYF: '9acd32'\n};\nfunction unpack() {\n const unpacked = {};\n const keys = Object.keys(names$1);\n const tkeys = Object.keys(map);\n let i, j, k, ok, nk;\n for (i = 0; i < keys.length; i++) {\n ok = nk = keys[i];\n for (j = 0; j < tkeys.length; j++) {\n k = tkeys[j];\n nk = nk.replace(k, map[k]);\n }\n k = parseInt(names$1[ok], 16);\n unpacked[nk] = [k >> 16 & 0xFF, k >> 8 & 0xFF, k & 0xFF];\n }\n return unpacked;\n}\nlet names;\nfunction nameParse(str) {\n if (!names) {\n names = unpack();\n names.transparent = [0, 0, 0, 0];\n }\n const a = names[str.toLowerCase()];\n return a && {\n r: a[0],\n g: a[1],\n b: a[2],\n a: a.length === 4 ? a[3] : 255\n };\n}\nconst RGB_RE = /^rgba?\\(\\s*([-+.\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?(?:[\\s,/]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction rgbParse(str) {\n const m = RGB_RE.exec(str);\n let a = 255;\n let r, g, b;\n if (!m) {\n return;\n }\n if (m[7] !== r) {\n const v = +m[7];\n a = m[8] ? p2b(v) : lim(v * 255, 0, 255);\n }\n r = +m[1];\n g = +m[3];\n b = +m[5];\n r = 255 & (m[2] ? p2b(r) : lim(r, 0, 255));\n g = 255 & (m[4] ? p2b(g) : lim(g, 0, 255));\n b = 255 & (m[6] ? p2b(b) : lim(b, 0, 255));\n return {\n r: r,\n g: g,\n b: b,\n a: a\n };\n}\nfunction rgbString(v) {\n return v && (\n v.a < 255\n ? `rgba(${v.r}, ${v.g}, ${v.b}, ${b2n(v.a)})`\n : `rgb(${v.r}, ${v.g}, ${v.b})`\n );\n}\nconst to = v => v <= 0.0031308 ? v * 12.92 : Math.pow(v, 1.0 / 2.4) * 1.055 - 0.055;\nconst from = v => v <= 0.04045 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4);\nfunction interpolate(rgb1, rgb2, t) {\n const r = from(b2n(rgb1.r));\n const g = from(b2n(rgb1.g));\n const b = from(b2n(rgb1.b));\n return {\n r: n2b(to(r + t * (from(b2n(rgb2.r)) - r))),\n g: n2b(to(g + t * (from(b2n(rgb2.g)) - g))),\n b: n2b(to(b + t * (from(b2n(rgb2.b)) - b))),\n a: rgb1.a + t * (rgb2.a - rgb1.a)\n };\n}\nfunction modHSL(v, i, ratio) {\n if (v) {\n let tmp = rgb2hsl(v);\n tmp[i] = Math.max(0, Math.min(tmp[i] + tmp[i] * ratio, i === 0 ? 360 : 1));\n tmp = hsl2rgb(tmp);\n v.r = tmp[0];\n v.g = tmp[1];\n v.b = tmp[2];\n }\n}\nfunction clone(v, proto) {\n return v ? Object.assign(proto || {}, v) : v;\n}\nfunction fromObject(input) {\n var v = {r: 0, g: 0, b: 0, a: 255};\n if (Array.isArray(input)) {\n if (input.length >= 3) {\n v = {r: input[0], g: input[1], b: input[2], a: 255};\n if (input.length > 3) {\n v.a = n2b(input[3]);\n }\n }\n } else {\n v = clone(input, {r: 0, g: 0, b: 0, a: 1});\n v.a = n2b(v.a);\n }\n return v;\n}\nfunction functionParse(str) {\n if (str.charAt(0) === 'r') {\n return rgbParse(str);\n }\n return hueParse(str);\n}\nclass Color {\n constructor(input) {\n if (input instanceof Color) {\n return input;\n }\n const type = typeof input;\n let v;\n if (type === 'object') {\n v = fromObject(input);\n } else if (type === 'string') {\n v = hexParse(input) || nameParse(input) || functionParse(input);\n }\n this._rgb = v;\n this._valid = !!v;\n }\n get valid() {\n return this._valid;\n }\n get rgb() {\n var v = clone(this._rgb);\n if (v) {\n v.a = b2n(v.a);\n }\n return v;\n }\n set rgb(obj) {\n this._rgb = fromObject(obj);\n }\n rgbString() {\n return this._valid ? rgbString(this._rgb) : undefined;\n }\n hexString() {\n return this._valid ? hexString(this._rgb) : undefined;\n }\n hslString() {\n return this._valid ? hslString(this._rgb) : undefined;\n }\n mix(color, weight) {\n if (color) {\n const c1 = this.rgb;\n const c2 = color.rgb;\n let w2;\n const p = weight === w2 ? 0.5 : weight;\n const w = 2 * p - 1;\n const a = c1.a - c2.a;\n const w1 = ((w * a === -1 ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n w2 = 1 - w1;\n c1.r = 0xFF & w1 * c1.r + w2 * c2.r + 0.5;\n c1.g = 0xFF & w1 * c1.g + w2 * c2.g + 0.5;\n c1.b = 0xFF & w1 * c1.b + w2 * c2.b + 0.5;\n c1.a = p * c1.a + (1 - p) * c2.a;\n this.rgb = c1;\n }\n return this;\n }\n interpolate(color, t) {\n if (color) {\n this._rgb = interpolate(this._rgb, color._rgb, t);\n }\n return this;\n }\n clone() {\n return new Color(this.rgb);\n }\n alpha(a) {\n this._rgb.a = n2b(a);\n return this;\n }\n clearer(ratio) {\n const rgb = this._rgb;\n rgb.a *= 1 - ratio;\n return this;\n }\n greyscale() {\n const rgb = this._rgb;\n const val = round(rgb.r * 0.3 + rgb.g * 0.59 + rgb.b * 0.11);\n rgb.r = rgb.g = rgb.b = val;\n return this;\n }\n opaquer(ratio) {\n const rgb = this._rgb;\n rgb.a *= 1 + ratio;\n return this;\n }\n negate() {\n const v = this._rgb;\n v.r = 255 - v.r;\n v.g = 255 - v.g;\n v.b = 255 - v.b;\n return this;\n }\n lighten(ratio) {\n modHSL(this._rgb, 2, ratio);\n return this;\n }\n darken(ratio) {\n modHSL(this._rgb, 2, -ratio);\n return this;\n }\n saturate(ratio) {\n modHSL(this._rgb, 1, ratio);\n return this;\n }\n desaturate(ratio) {\n modHSL(this._rgb, 1, -ratio);\n return this;\n }\n rotate(deg) {\n rotate(this._rgb, deg);\n return this;\n }\n}\nfunction index_esm(input) {\n return new Color(input);\n}\n\nfunction isPatternOrGradient(value) {\n if (value && typeof value === 'object') {\n const type = value.toString();\n return type === '[object CanvasPattern]' || type === '[object CanvasGradient]';\n }\n return false;\n}\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 includeInvisible: false\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}\nfunction _parseObjectDataRadialScale(meta, data, start, count) {\n const {iScale} = meta;\n const {key = 'r'} = 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 r: iScale.parse(resolveObjectKey(item, key), index)\n };\n }\n return parsed;\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(e, canvas) {\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 if ('native' in evt) {\n return evt;\n }\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 { toFont as $, _rlookupByKey as A, _isPointInArea as B, getAngleFromPoint as C, toPadding as D, each as E, getMaximumSize as F, _getParentNode as G, HALF_PI as H, readUsedSize as I, throttled as J, supportsEventListenerOptions as K, _isDomSupported as L, log10 as M, _factorize as N, finiteOrDefault as O, PI as P, callback as Q, _addGrace as R, toDegrees as S, TAU as T, _measureText as U, _int16Range as V, _alignPixel as W, clipArea as X, renderText as Y, unclipArea as Z, _arrayUnique as _, resolve as a, QUARTER_PI as a$, _toLeftRightCenter as a0, _alignStartEnd as a1, overrides as a2, merge as a3, _capitalize as a4, descriptors as a5, isFunction as a6, _attachContext as a7, _createResolver as a8, _descriptors as a9, _textX as aA, restoreTextDirection as aB, noop as aC, distanceBetweenPoints as aD, _setMinAndMaxByKey as aE, niceNum as aF, almostWhole as aG, almostEquals as aH, _decimalPlaces as aI, _longestText as aJ, _filterBetween as aK, _lookup as aL, isPatternOrGradient as aM, getHoverColor as aN, clone$1 as aO, _merger as aP, _mergerIf as aQ, _deprecated as aR, toFontString as aS, splineCurve as aT, splineCurveMonotone as aU, getStyle as aV, fontString as aW, toLineHeight as aX, PITAU as aY, INFINITY as aZ, RAD_PER_DEG as a_, mergeIf as aa, uid as ab, debounce as ac, retinaScale as ad, clearCanvas as ae, setsEqual as af, _elementsEqual as ag, _isClickEvent as ah, _isBetween as ai, _readValueToProps as aj, _updateBezierControlPoints as ak, _computeSegments as al, _boundSegments as am, _steppedInterpolation as an, _bezierInterpolation as ao, _pointInLine as ap, _steppedLineTo as aq, _bezierCurveTo as ar, drawPoint as as, addRoundedRectPath as at, toTRBL as au, toTRBLCorners as av, _boundSegment as aw, _normalizeAngle as ax, getRtlAdapter as ay, overrideTextDirection as az, isArray as b, TWO_THIRDS_PI as b0, _angleDiff as b1, 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, _parseObjectDataRadialScale as y, getRelativePosition as z };\n","/*!\n * Chart.js v3.8.0\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 _parseObjectDataRadialScale, z as getRelativePosition, A as _rlookupByKey, B as _isPointInArea, C as getAngleFromPoint, D as toPadding, E as each, F as getMaximumSize, G as _getParentNode, I as readUsedSize, J as throttled, K as supportsEventListenerOptions, L as _isDomSupported, M as log10, N as _factorize, O as finiteOrDefault, Q as callback, R as _addGrace, S as toDegrees, U as _measureText, V as _int16Range, W as _alignPixel, X as clipArea, Y as renderText, Z as unclipArea, $ as toFont, a0 as _toLeftRightCenter, a1 as _alignStartEnd, a2 as overrides, a3 as merge, a4 as _capitalize, a5 as descriptors, a6 as isFunction, a7 as _attachContext, a8 as _createResolver, a9 as _descriptors, aa as mergeIf, ab as uid, ac as debounce, ad as retinaScale, ae as clearCanvas, af as setsEqual, ag as _elementsEqual, ah as _isClickEvent, ai as _isBetween, aj as _readValueToProps, ak as _updateBezierControlPoints, al as _computeSegments, am as _boundSegments, an as _steppedInterpolation, ao as _bezierInterpolation, ap as _pointInLine, aq as _steppedLineTo, ar as _bezierCurveTo, as as drawPoint, at as addRoundedRectPath, au as toTRBL, av as toTRBLCorners, aw as _boundSegment, ax as _normalizeAngle, ay as getRtlAdapter, az as overrideTextDirection, aA as _textX, aB as restoreTextDirection, aC as noop, aD as distanceBetweenPoints, aE as _setMinAndMaxByKey, aF as niceNum, aG as almostWhole, aH as almostEquals, aI as _decimalPlaces, aJ as _longestText, aK as _filterBetween, aL 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.supportsDecimation = 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 const startPixel = vScale.getPixelForDecimal(0);\n const endPixel = vScale.getPixelForDecimal(1);\n const min = Math.min(startPixel, endPixel);\n const max = Math.max(startPixel, endPixel);\n base = Math.max(Math.min(base, max), min);\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 this.supportsDecimation = 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 && (Math.abs(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 parseObjectData(meta, data, start, count) {\n return _parseObjectDataRadialScale.bind(this)(meta, data, start, count);\n }\n update(mode) {\n const arcs = this._cachedMeta.data;\n this._updateRadius();\n this.updateElements(arcs, 0, arcs.length, mode);\n }\n getMinMax() {\n const meta = this._cachedMeta;\n const range = {min: Number.POSITIVE_INFINITY, max: Number.NEGATIVE_INFINITY};\n meta.data.forEach((element, index) => {\n const parsed = this.getParsed(index).r;\n if (!isNaN(parsed) && this.chart.getDataVisibility(index)) {\n if (parsed < range.min) {\n range.min = parsed;\n }\n if (parsed > range.max) {\n range.max = parsed;\n }\n }\n });\n return range;\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 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(this.getParsed(i).r) : 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 meta = this._cachedMeta;\n let count = 0;\n meta.data.forEach((element, index) => {\n if (!isNaN(this.getParsed(index).r) && 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 parseObjectData(meta, data, start, count) {\n return _parseObjectDataRadialScale.bind(this)(meta, data, start, count);\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 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, this.getParsed(i).r);\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 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 evaluateInteractionItems(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, includeInvisible) {\n const items = [];\n if (!includeInvisible && !chart.isPointInArea(position)) {\n return items;\n }\n const evaluationFunc = function(element, datasetIndex, index) {\n if (!includeInvisible && !_isPointInArea(element, chart.chartArea, 0)) {\n return;\n }\n if (element.inRange(position.x, position.y, useFinalPosition)) {\n items.push({element, datasetIndex, index});\n }\n };\n evaluateInteractionItems(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 evaluateInteractionItems(chart, axis, position, evaluationFunc);\n return items;\n}\nfunction getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\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 = !!includeInvisible || chart.isPointInArea(center);\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 evaluateInteractionItems(chart, axis, position, evaluationFunc);\n return items;\n}\nfunction getNearestItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\n if (!includeInvisible && !chart.isPointInArea(position)) {\n return [];\n }\n return axis === 'r' && !intersect\n ? getNearestRadialItems(chart, position, axis, useFinalPosition)\n : getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible);\n}\nfunction getAxisItems(chart, position, axis, intersect, useFinalPosition) {\n const items = [];\n const rangeMethod = axis === 'x' ? 'inXRange' : 'inYRange';\n let intersectsItem = false;\n evaluateInteractionItems(chart, axis, position, (element, datasetIndex, index) => {\n if (element[rangeMethod](position[axis], useFinalPosition)) {\n items.push({element, datasetIndex, index});\n intersectsItem = intersectsItem || element.inRange(position.x, position.y, useFinalPosition);\n }\n });\n if (intersect && !intersectsItem) {\n return [];\n }\n return items;\n}\nvar Interaction = {\n evaluateInteractionItems,\n modes: {\n index(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'x';\n const includeInvisible = options.includeInvisible || false;\n const items = options.intersect\n ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible)\n : getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible);\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 const includeInvisible = options.includeInvisible || false;\n let items = options.intersect\n ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) :\n getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible);\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 const includeInvisible = options.includeInvisible || false;\n return getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible);\n },\n nearest(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n return getNearestItems(chart, position, axis, options.intersect, useFinalPosition, includeInvisible);\n },\n x(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n return getAxisItems(chart, position, 'x', options.intersect, useFinalPosition);\n },\n y(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n return getAxisItems(chart, position, 'y', 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(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 this.afterAutoSkip();\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 afterAutoSkip() {}\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 if (align !== 'inner') {\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 let tickTextAlign = textAlign;\n if (isHorizontal) {\n x = pixel;\n if (textAlign === 'inner') {\n if (i === ilen - 1) {\n tickTextAlign = !this.options.reverse ? 'right' : 'left';\n } else if (i === 0) {\n tickTextAlign = !this.options.reverse ? 'left' : 'right';\n } else {\n tickTextAlign = 'center';\n }\n }\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: tickTextAlign,\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 } else if (ticks.align === 'inner') {\n align = 'inner';\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.8.0\";\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 isPointInArea(point) {\n return _isPointInArea(point, this.chartArea, this._minPadding);\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: this.isPointInArea(e)\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.controller.supportsDecimation) {\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 _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 _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 _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 _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 _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}\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}\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 _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 return decodeTargetIndex(fill[0], index, target, count);\n }\n return ['origin', 'start', 'end', 'stack', 'shape'].indexOf(fill) >= 0 && fill;\n}\nfunction decodeTargetIndex(firstCh, index, target, count) {\n if (firstCh === '-' || firstCh === '+') {\n target = index + target;\n }\n if (target === index || target < 0 || target >= count) {\n return false;\n }\n return target;\n}\nfunction _getTargetPixel(fill, scale) {\n let pixel = null;\n if (fill === 'start') {\n pixel = scale.bottom;\n } else if (fill === 'end') {\n pixel = scale.top;\n } else if (isObject(fill)) {\n pixel = scale.getPixelForValue(fill.value);\n } else if (scale.getBasePixel) {\n pixel = scale.getBasePixel();\n }\n return pixel;\n}\nfunction _getTargetValue(fill, scale, startValue) {\n let value;\n if (fill === 'start') {\n value = startValue;\n } else if (fill === 'end') {\n value = scale.options.reverse ? scale.min : scale.max;\n } else if (isObject(fill)) {\n value = fill.value;\n } else {\n value = scale.getBaseValue();\n }\n return value;\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}\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}\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}\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 getLineByIndex(chart, index) {\n const meta = chart.getDatasetMeta(index);\n const visible = meta && chart.isDatasetVisible(index);\n return visible ? meta.dataset : null;\n}\nfunction computeBoundary(source) {\n const scale = source.scale || {};\n if (scale.getPointPositionForValue) {\n return computeCircularBoundary(source);\n }\n return computeLinearBoundary(source);\n}\nfunction computeLinearBoundary(source) {\n const {scale = {}, fill} = source;\n const pixel = _getTargetPixel(fill, scale);\n if (isNumberFinite(pixel)) {\n const horizontal = scale.isHorizontal();\n return {\n x: horizontal ? pixel : null,\n y: horizontal ? null : pixel\n };\n }\n return null;\n}\nfunction computeCircularBoundary(source) {\n const {scale, fill} = source;\n const options = scale.options;\n const length = scale.getLabels().length;\n const start = options.reverse ? scale.max : scale.min;\n const value = _getTargetValue(fill, scale, start);\n const target = [];\n if (options.grid.circular) {\n const 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 (let i = 0; i < length; ++i) {\n target.push(scale.getPointPositionForValue(i, value));\n }\n return target;\n}\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}\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 clipVertical(ctx, target, area.top);\n fill(ctx, {line, target, color: above, scale, property});\n ctx.restore();\n ctx.save();\n clipVertical(ctx, target, area.bottom);\n }\n fill(ctx, {line, target, color: below, scale, property});\n ctx.restore();\n}\nfunction clipVertical(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 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 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}\n\nvar index = {\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' || e.type === 'mouseout') {\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' || type === 'mouseout') && (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 _willRender() {\n return !!this.opacity;\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 if (tooltip && tooltip._willRender()) {\n const args = {\n tooltip\n };\n if (chart.notifyPlugins('beforeTooltipDraw', args) === false) {\n return;\n }\n tooltip.draw(chart.ctx);\n chart.notifyPlugins('afterTooltipDraw', args);\n }\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: index,\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 borderRadius = toTRBLCorners(optsAtIndex.borderRadius);\n const padding = toPadding(optsAtIndex.backdropPadding);\n ctx.fillStyle = backdropColor;\n const backdropLeft = left - padding.left;\n const backdropTop = top - padding.top;\n const backdropWidth = right - left + padding.width;\n const backdropHeight = bottom - top + padding.height;\n if (Object.values(borderRadius).some(v => v !== 0)) {\n ctx.beginPath();\n addRoundedRectPath(ctx, {\n x: backdropLeft,\n y: backdropTop,\n w: backdropWidth,\n h: backdropHeight,\n radius: borderRadius,\n });\n ctx.fill();\n } else {\n ctx.fillRect(backdropLeft, backdropTop, backdropWidth, backdropHeight);\n }\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 afterAutoSkip() {\n if (this.options.offsetAfterAutoskip) {\n this.initOffsets(this.ticks.map(tick => +tick.value));\n }\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, index 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","import {Chart, registerables} from '../dist/chart.esm.js';\n\nChart.register(...registerables);\n\nexport default Chart;\n","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./donut-graph.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./donut-graph.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./donut-graph.vue?vue&type=template&id=06c97bbb&scoped=true\"\nimport script from \"./donut-graph.vue?vue&type=script&lang=js\"\nexport * from \"./donut-graph.vue?vue&type=script&lang=js\"\nimport style0 from \"./donut-graph.vue?vue&type=style&index=0&id=06c97bbb&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"06c97bbb\",\n null\n \n)\n\nexport default component.exports","import { VBadge } from 'vuetify/lib/components/VBadge';\n\nvar render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('data',{staticClass:\"text-h6 font-weight-bold\",attrs:{\"data-testid\":\"statistics-breakdown-summary-data-point-value\",\"value\":_vm.dataPoint.value}},[_vm._v(_vm._s(_vm.dataPoint.value))]),_c('p',{staticClass:\"text-caption mb-0\",attrs:{\"data-testid\":\"statistics-breakdown-summary-data-point-title\"}},[_c(VBadge,{attrs:{\"value\":_vm.filter,\"color\":_vm.dataPoint.color,\"inline\":\"\",\"dot\":\"\",\"tile\":\"\"}},[_c('span',{staticClass:\"pr-2\"},[_vm._v(_vm._s(_vm.dataPoint.title))])])],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./statistics-breakdown-summary-data-point.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./statistics-breakdown-summary-data-point.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./statistics-breakdown-summary-data-point.vue?vue&type=template&id=c25f6eec\"\nimport script from \"./statistics-breakdown-summary-data-point.vue?vue&type=script&lang=js\"\nexport * from \"./statistics-breakdown-summary-data-point.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./statistics-breakdown-card.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./statistics-breakdown-card.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./statistics-breakdown-card.vue?vue&type=template&id=a9a68756&scoped=true\"\nimport script from \"./statistics-breakdown-card.vue?vue&type=script&lang=js\"\nexport * from \"./statistics-breakdown-card.vue?vue&type=script&lang=js\"\nimport style0 from \"./statistics-breakdown-card.vue?vue&type=style&index=0&id=a9a68756&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"a9a68756\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./client-details-list-item.vue?vue&type=style&index=0&id=8796c83c&prod&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./invoice-bulk-action-dialog-content.vue?vue&type=style&index=0&id=7c06c454&prod&scoped=true&lang=css\"","import { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\n\nvar render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',{class:[\n 'd-flex flex-column justify-center align-center text-center h-100 pa-8',\n _vm.border ? 'border' : '' ]},[_vm._t(\"icon\",[_c(VIcon,{staticClass:\"mb-5\",attrs:{\"color\":\"indigo\",\"x-large\":\"\"}},[_vm._v(\" \"+_vm._s(_vm.icon)+\" \")])]),_vm._t(\"title\",[_c('h3',{class:[_vm.description || _vm.button ? 'mb-2' : '']},[_vm._v(_vm._s(_vm.title))])]),_vm._t(\"description\",[_c('p',[_vm._v(_vm._s(_vm.description))])]),_vm._t(\"button\",[(_vm.button)?_c(VBtn,{staticClass:\"rounded-lg mt-6\",attrs:{\"id\":_vm.button.id,\"dark\":\"\",\"to\":_vm.button.to,\"color\":_vm.button.color,\"outlined\":\"\",\"depressed\":\"\"}},[(_vm.button.icon)?_c(VIcon,{attrs:{\"left\":\"\"}},[_vm._v(\" \"+_vm._s(_vm.button.icon)+\" \")]):_vm._e(),_vm._v(\" \"+_vm._s(_vm.button.text)+\" \")],1):_vm._e()])],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./empty-state-block.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./empty-state-block.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./empty-state-block.vue?vue&type=template&id=0d60bd93\"\nimport script from \"./empty-state-block.vue?vue&type=script&lang=js\"\nexport * from \"./empty-state-block.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","/**\n * @typedef {Object} DataPointType\n * @property {string} key - Unique identifier\n * @property {string} title - The title of the data point.\n * @property {number} value - The integer value associated with the data point.\n * @property {boolean} showSummary - Whether to display the value as summary text.\n * @property {boolean} showOnGraph - Whether to include the value in a graph.\n * @property {number} order - Value to indicate which order the data should be displayed\n * @property {string} color - A CSS color that will be used to display the data on a chart\n */\n\nimport { nanoid } from 'nanoid'\n\n/**\n * Represents a data point with a title, value, and display options.\n * @class\n */\nexport default class DataPoint {\n /**\n * Create a new DataPoint.\n * @param {DataPointType} params\n */\n constructor(params) {\n this.key = params.key ?? nanoid()\n this.title = params.title\n this.value = params.value\n this.showSummary = params.showSummary\n this.showOnGraph = params.showOnGraph\n this.order = params.order ?? 0\n this.color = params.color\n }\n\n /**\n * Get the formatted summary text.\n * @returns {string} - The summary text.\n */\n getSummaryText() {\n if (this.showSummary) {\n return `${this.title}: ${this.value}`\n } else {\n return ''\n }\n }\n\n /**\n * Get the data point value for the graph.\n * @returns {number} - The value for the graph.\n */\n getGraphValue() {\n if (this.showOnGraph) {\n return this.value\n } else {\n return 0\n }\n }\n}\n","import { VAutocomplete } from 'vuetify/lib/components/VAutocomplete';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\n\nvar render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('StatisticsBreakdownCard',{staticClass:\"h-100\",attrs:{\"flat\":true,\"transparent\":\"\",\"outlined\":\"\",\"data-points\":_vm.invoiceCenterGraphData,\"graph-options\":_vm.compGraphOptions},scopedSlots:_vm._u([{key:\"header\",fn:function(){return [_c(VAutocomplete,{attrs:{\"items\":_vm.invoiceCenters,\"item-text\":\"name\",\"dense\":\"\",\"solo\":\"\",\"flat\":\"\",\"clearable\":\"\",\"background-color\":\"#00000000\",\"item-value\":\"id\",\"prepend-icon\":\"mdi-bank\",\"label\":\"Filter by invoice center\",\"hide-details\":\"\"},on:{\"change\":_vm.loadInvoiceCenterDetails},model:{value:(_vm.invoiceCenterId),callback:function ($$v) {_vm.invoiceCenterId=$$v},expression:\"invoiceCenterId\"}}),_c(VTextField,{attrs:{\"prefix\":\"Date until:\",\"dense\":\"\",\"hide-details\":\"\",\"solo\":\"\",\"flat\":\"\",\"background-color\":\"#00000000\",\"value\":_vm.date,\"max\":_vm.maxDate,\"type\":\"date\"},on:{\"input\":_vm.datePickerInput}})]},proxy:true},{key:\"footer\",fn:function(){return [_c(VBtn,{staticClass:\"py-2\",attrs:{\"color\":\"primary\",\"small\":\"\",\"text\":\"\",\"loading\":_vm.isGraphLoading,\"disabled\":!_vm.hasSelectedInvoiceCenter},on:{\"click\":function($event){return _vm.$emit('openInvoiceCenterFlyout', { invoiceCenterId: _vm.invoiceCenterId, date: _vm.date })}}},[_vm._v(\"Bulk Actions\")])]},proxy:true}])})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./dispute-table-invoice-center-stats-breakdown-card.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./dispute-table-invoice-center-stats-breakdown-card.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./dispute-table-invoice-center-stats-breakdown-card.vue?vue&type=template&id=2ceb1b66\"\nimport script from \"./dispute-table-invoice-center-stats-breakdown-card.vue?vue&type=script&lang=js\"\nexport * from \"./dispute-table-invoice-center-stats-breakdown-card.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","export { default } from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-0-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-0-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-0-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-0-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./info-label.vue?vue&type=style&index=0&id=358a642e&prod&lang=scss&module=true\"; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-0-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-0-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-0-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-0-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./info-label.vue?vue&type=style&index=0&id=358a642e&prod&lang=scss&module=true\"","// Components\nimport { VExpandTransition } from '../transitions'\nimport { VIcon } from '../VIcon'\nimport VTreeview from './VTreeview'\n\n// Mixins\nimport { inject as RegistrableInject } from '../../mixins/registrable'\nimport Colorable from '../../mixins/colorable'\n\n// Utils\nimport mixins, { ExtractVue } from '../../util/mixins'\nimport { getObjectValueByPath, createRange } from '../../util/helpers'\n\n// Types\nimport { VNode, VNodeChildren, PropType } from 'vue'\nimport { PropValidator } from 'vue/types/options'\n\ntype VTreeViewInstance = InstanceType\n\nconst baseMixins = mixins(\n Colorable,\n RegistrableInject('treeview')\n)\n\ninterface options extends ExtractVue {\n treeview: VTreeViewInstance\n}\n\nexport const VTreeviewNodeProps = {\n activatable: Boolean,\n activeClass: {\n type: String,\n default: 'v-treeview-node--active',\n },\n color: {\n type: String,\n default: 'primary',\n },\n disablePerNode: Boolean,\n expandIcon: {\n type: String,\n default: '$subgroup',\n },\n indeterminateIcon: {\n type: String,\n default: '$checkboxIndeterminate',\n },\n itemChildren: {\n type: String,\n default: 'children',\n },\n itemDisabled: {\n type: String,\n default: 'disabled',\n },\n itemKey: {\n type: String,\n default: 'id',\n },\n itemText: {\n type: String,\n default: 'name',\n },\n loadChildren: Function as PropType<(item: any) => Promise>,\n loadingIcon: {\n type: String,\n default: '$loading',\n },\n offIcon: {\n type: String,\n default: '$checkboxOff',\n },\n onIcon: {\n type: String,\n default: '$checkboxOn',\n },\n openOnClick: Boolean,\n rounded: Boolean,\n selectable: Boolean,\n selectedColor: {\n type: String,\n default: 'accent',\n },\n shaped: Boolean,\n transition: Boolean,\n selectionType: {\n type: String as PropType<'leaf' | 'independent'>,\n default: 'leaf',\n validator: (v: string) => ['leaf', 'independent'].includes(v),\n },\n}\n\n/* @vue/component */\nconst VTreeviewNode = baseMixins.extend().extend({\n name: 'v-treeview-node',\n\n inject: {\n treeview: {\n default: null,\n },\n },\n\n props: {\n level: Number,\n item: {\n type: Object,\n default: () => null,\n } as PropValidator | null>,\n parentIsDisabled: Boolean,\n ...VTreeviewNodeProps,\n },\n\n data: () => ({\n hasLoaded: false,\n isActive: false, // Node is selected (row)\n isIndeterminate: false, // Node has at least one selected child\n isLoading: false,\n isOpen: false, // Node is open/expanded\n isSelected: false, // Node is selected (checkbox)\n }),\n\n computed: {\n disabled (): boolean {\n return (\n getObjectValueByPath(this.item, this.itemDisabled) ||\n (!this.disablePerNode && (this.parentIsDisabled && this.selectionType === 'leaf'))\n )\n },\n key (): string {\n return getObjectValueByPath(this.item, this.itemKey)\n },\n children (): any[] | null {\n const children = getObjectValueByPath(this.item, this.itemChildren)\n return children && children.filter((child: any) => !this.treeview.isExcluded(getObjectValueByPath(child, this.itemKey)))\n },\n text (): string {\n return getObjectValueByPath(this.item, this.itemText)\n },\n scopedProps (): object {\n return {\n item: this.item,\n leaf: !this.children,\n selected: this.isSelected,\n indeterminate: this.isIndeterminate,\n active: this.isActive,\n open: this.isOpen,\n }\n },\n computedIcon (): string {\n if (this.isIndeterminate) return this.indeterminateIcon\n else if (this.isSelected) return this.onIcon\n else return this.offIcon\n },\n hasChildren (): boolean {\n return !!this.children && (!!this.children.length || !!this.loadChildren)\n },\n },\n\n created () {\n this.treeview.register(this)\n },\n\n beforeDestroy () {\n this.treeview.unregister(this)\n },\n\n methods: {\n checkChildren (): Promise {\n return new Promise(resolve => {\n // TODO: Potential issue with always trying\n // to load children if response is empty?\n if (!this.children || this.children.length || !this.loadChildren || this.hasLoaded) return resolve()\n\n this.isLoading = true\n resolve(this.loadChildren(this.item))\n }).then(() => {\n this.isLoading = false\n this.hasLoaded = true\n })\n },\n open () {\n this.isOpen = !this.isOpen\n this.treeview.updateOpen(this.key, this.isOpen)\n this.treeview.emitOpen()\n },\n genLabel () {\n const children = []\n\n if (this.$scopedSlots.label) children.push(this.$scopedSlots.label(this.scopedProps))\n else children.push(this.text)\n\n return this.$createElement('div', {\n slot: 'label',\n staticClass: 'v-treeview-node__label',\n }, children)\n },\n genPrependSlot () {\n if (!this.$scopedSlots.prepend) return null\n\n return this.$createElement('div', {\n staticClass: 'v-treeview-node__prepend',\n }, this.$scopedSlots.prepend(this.scopedProps))\n },\n genAppendSlot () {\n if (!this.$scopedSlots.append) return null\n\n return this.$createElement('div', {\n staticClass: 'v-treeview-node__append',\n }, this.$scopedSlots.append(this.scopedProps))\n },\n genContent () {\n const children = [\n this.genPrependSlot(),\n this.genLabel(),\n this.genAppendSlot(),\n ]\n\n return this.$createElement('div', {\n staticClass: 'v-treeview-node__content',\n }, children)\n },\n genToggle () {\n return this.$createElement(VIcon, {\n staticClass: 'v-treeview-node__toggle',\n class: {\n 'v-treeview-node__toggle--open': this.isOpen,\n 'v-treeview-node__toggle--loading': this.isLoading,\n },\n slot: 'prepend',\n on: {\n click: (e: MouseEvent) => {\n e.stopPropagation()\n\n if (this.isLoading) return\n\n this.checkChildren().then(() => this.open())\n },\n },\n }, [this.isLoading ? this.loadingIcon : this.expandIcon])\n },\n genCheckbox () {\n return this.$createElement(VIcon, {\n staticClass: 'v-treeview-node__checkbox',\n props: {\n color: this.isSelected || this.isIndeterminate ? this.selectedColor : undefined,\n disabled: this.disabled,\n },\n on: {\n click: (e: MouseEvent) => {\n e.stopPropagation()\n\n if (this.isLoading) return\n\n this.checkChildren().then(() => {\n // We nextTick here so that items watch in VTreeview has a chance to run first\n this.$nextTick(() => {\n this.isSelected = !this.isSelected\n this.isIndeterminate = false\n\n this.treeview.updateSelected(this.key, this.isSelected)\n this.treeview.emitSelected()\n })\n })\n },\n },\n }, [this.computedIcon])\n },\n genLevel (level: number) {\n return createRange(level).map(() => this.$createElement('div', {\n staticClass: 'v-treeview-node__level',\n }))\n },\n genNode () {\n const children = [this.genContent()]\n\n if (this.selectable) children.unshift(this.genCheckbox())\n\n if (this.hasChildren) {\n children.unshift(this.genToggle())\n } else {\n children.unshift(...this.genLevel(1))\n }\n\n children.unshift(...this.genLevel(this.level))\n\n return this.$createElement('div', this.setTextColor(this.isActive && this.color, {\n staticClass: 'v-treeview-node__root',\n class: {\n [this.activeClass]: this.isActive,\n },\n on: {\n click: () => {\n if (this.openOnClick && this.hasChildren) {\n this.checkChildren().then(this.open)\n } else if (this.activatable && !this.disabled) {\n this.isActive = !this.isActive\n this.treeview.updateActive(this.key, this.isActive)\n this.treeview.emitActive()\n }\n },\n },\n }), children)\n },\n genChild (item: any, parentIsDisabled: boolean) {\n return this.$createElement(VTreeviewNode, {\n key: getObjectValueByPath(item, this.itemKey),\n props: {\n activatable: this.activatable,\n activeClass: this.activeClass,\n item,\n selectable: this.selectable,\n selectedColor: this.selectedColor,\n color: this.color,\n disablePerNode: this.disablePerNode,\n expandIcon: this.expandIcon,\n indeterminateIcon: this.indeterminateIcon,\n offIcon: this.offIcon,\n onIcon: this.onIcon,\n loadingIcon: this.loadingIcon,\n itemKey: this.itemKey,\n itemText: this.itemText,\n itemDisabled: this.itemDisabled,\n itemChildren: this.itemChildren,\n loadChildren: this.loadChildren,\n transition: this.transition,\n openOnClick: this.openOnClick,\n rounded: this.rounded,\n shaped: this.shaped,\n level: this.level + 1,\n selectionType: this.selectionType,\n parentIsDisabled,\n },\n scopedSlots: this.$scopedSlots,\n })\n },\n genChildrenWrapper () {\n if (!this.isOpen || !this.children) return null\n\n const children = [this.children.map(c => this.genChild(c, this.disabled))]\n\n return this.$createElement('div', {\n staticClass: 'v-treeview-node__children',\n }, children)\n },\n genTransition () {\n return this.$createElement(VExpandTransition, [this.genChildrenWrapper()])\n },\n },\n\n render (h): VNode {\n const children: VNodeChildren = [this.genNode()]\n\n if (this.transition) children.push(this.genTransition())\n else children.push(this.genChildrenWrapper())\n\n return h('div', {\n staticClass: 'v-treeview-node',\n class: {\n 'v-treeview-node--leaf': !this.hasChildren,\n 'v-treeview-node--click': this.openOnClick,\n 'v-treeview-node--disabled': this.disabled,\n 'v-treeview-node--rounded': this.rounded,\n 'v-treeview-node--shaped': this.shaped,\n 'v-treeview-node--selected': this.isSelected,\n },\n attrs: {\n 'aria-expanded': String(this.isOpen),\n },\n }, children)\n },\n})\n\nexport default VTreeviewNode\n","import { getObjectValueByPath } from '../../../util/helpers'\nimport { TreeviewItemFunction } from 'vuetify/types'\n\nexport function filterTreeItem (item: object, search: string, textKey: string): boolean {\n const text = getObjectValueByPath(item, textKey)\n\n return text.toLocaleLowerCase().indexOf(search.toLocaleLowerCase()) > -1\n}\n\nexport function filterTreeItems (\n filter: TreeviewItemFunction,\n item: any,\n search: string,\n idKey: string,\n textKey: string,\n childrenKey: string,\n excluded: Set\n): boolean {\n if (filter(item, search, textKey)) {\n return true\n }\n\n const children = getObjectValueByPath(item, childrenKey)\n\n if (children) {\n let match = false\n for (let i = 0; i < children.length; i++) {\n if (filterTreeItems(filter, children[i], search, idKey, textKey, childrenKey, excluded)) {\n match = true\n }\n }\n\n if (match) return true\n }\n\n excluded.add(getObjectValueByPath(item, idKey))\n\n return false\n}\n","// Styles\nimport './VTreeview.sass'\n\n// Types\nimport { VNode, VNodeChildrenArrayContents, PropType } from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport { TreeviewItemFunction } from 'vuetify/types'\n\n// Components\nimport VTreeviewNode, { VTreeviewNodeProps } from './VTreeviewNode'\n\n// Mixins\nimport Themeable from '../../mixins/themeable'\nimport { provide as RegistrableProvide } from '../../mixins/registrable'\n\n// Utils\nimport {\n arrayDiff,\n deepEqual,\n getObjectValueByPath,\n} from '../../util/helpers'\nimport mixins from '../../util/mixins'\nimport { consoleWarn } from '../../util/console'\nimport {\n filterTreeItems,\n filterTreeItem,\n} from './util/filterTreeItems'\n\ntype VTreeviewNodeInstance = InstanceType\n\ntype NodeCache = Set\ntype NodeArray = (string | number)[]\n\ntype NodeState = {\n parent: number | string | null\n children: (number | string)[]\n vnode: VTreeviewNodeInstance | null\n isActive: boolean\n isSelected: boolean\n isIndeterminate: boolean\n isOpen: boolean\n item: any\n}\n\nexport default mixins(\n RegistrableProvide('treeview'),\n Themeable\n /* @vue/component */\n).extend({\n name: 'v-treeview',\n\n provide (): object {\n return { treeview: this }\n },\n\n props: {\n active: {\n type: Array,\n default: () => ([]),\n } as PropValidator,\n dense: Boolean,\n disabled: Boolean,\n filter: Function as PropType,\n hoverable: Boolean,\n items: {\n type: Array,\n default: () => ([]),\n } as PropValidator,\n multipleActive: Boolean,\n open: {\n type: Array,\n default: () => ([]),\n } as PropValidator,\n openAll: Boolean,\n returnObject: {\n type: Boolean,\n default: false, // TODO: Should be true in next major\n },\n search: String,\n value: {\n type: Array,\n default: () => ([]),\n } as PropValidator,\n ...VTreeviewNodeProps,\n },\n\n data: () => ({\n level: -1,\n activeCache: new Set() as NodeCache,\n nodes: {} as Record,\n openCache: new Set() as NodeCache,\n selectedCache: new Set() as NodeCache,\n }),\n\n computed: {\n excludedItems (): Set {\n const excluded = new Set()\n\n if (!this.search) return excluded\n\n for (let i = 0; i < this.items.length; i++) {\n filterTreeItems(\n this.filter || filterTreeItem,\n this.items[i],\n this.search,\n this.itemKey,\n this.itemText,\n this.itemChildren,\n excluded\n )\n }\n\n return excluded\n },\n },\n\n watch: {\n items: {\n handler () {\n const oldKeys = Object.keys(this.nodes).map(k => getObjectValueByPath(this.nodes[k].item, this.itemKey))\n const newKeys = this.getKeys(this.items)\n const diff = arrayDiff(newKeys, oldKeys)\n\n // We only want to do stuff if items have changed\n if (!diff.length && newKeys.length < oldKeys.length) return\n\n // If nodes are removed we need to clear them from this.nodes\n diff.forEach(k => delete this.nodes[k])\n\n const oldSelectedCache = [...this.selectedCache]\n this.selectedCache = new Set()\n this.activeCache = new Set()\n this.openCache = new Set()\n this.buildTree(this.items)\n\n // Only emit selected if selection has changed\n // as a result of items changing. This fixes a\n // potential double emit when selecting a node\n // with dynamic children\n if (!deepEqual(oldSelectedCache, [...this.selectedCache])) this.emitSelected()\n },\n deep: true,\n },\n active (value: (string | number | any)[]) {\n this.handleNodeCacheWatcher(value, this.activeCache, this.updateActive, this.emitActive)\n },\n value (value: (string | number | any)[]) {\n this.handleNodeCacheWatcher(value, this.selectedCache, this.updateSelected, this.emitSelected)\n },\n open (value: (string | number | any)[]) {\n this.handleNodeCacheWatcher(value, this.openCache, this.updateOpen, this.emitOpen)\n },\n },\n\n created () {\n const getValue = (key: string | number) => this.returnObject ? getObjectValueByPath(key, this.itemKey) : key\n\n this.buildTree(this.items)\n\n for (const value of this.value.map(getValue)) {\n this.updateSelected(value, true, true)\n }\n\n for (const active of this.active.map(getValue)) {\n this.updateActive(active, true)\n }\n },\n\n mounted () {\n // Save the developer from themselves\n if (this.$slots.prepend || this.$slots.append) {\n consoleWarn('The prepend and append slots require a slot-scope attribute', this)\n }\n\n if (this.openAll) {\n this.updateAll(true)\n } else {\n this.open.forEach(key => this.updateOpen(this.returnObject ? getObjectValueByPath(key, this.itemKey) : key, true))\n this.emitOpen()\n }\n },\n\n methods: {\n /** @public */\n updateAll (value: boolean) {\n Object.keys(this.nodes).forEach(key => this.updateOpen(getObjectValueByPath(this.nodes[key].item, this.itemKey), value))\n this.emitOpen()\n },\n getKeys (items: any[], keys: any[] = []) {\n for (let i = 0; i < items.length; i++) {\n const key = getObjectValueByPath(items[i], this.itemKey)\n keys.push(key)\n const children = getObjectValueByPath(items[i], this.itemChildren)\n if (children) {\n keys.push(...this.getKeys(children))\n }\n }\n\n return keys\n },\n buildTree (items: any[], parent: (string | number | null) = null) {\n for (let i = 0; i < items.length; i++) {\n const item = items[i]\n const key = getObjectValueByPath(item, this.itemKey)\n const children = getObjectValueByPath(item, this.itemChildren) ?? []\n const oldNode = this.nodes.hasOwnProperty(key) ? this.nodes[key] : {\n isSelected: false, isIndeterminate: false, isActive: false, isOpen: false, vnode: null,\n } as NodeState\n\n const node: any = {\n vnode: oldNode.vnode,\n parent,\n children: children.map((c: any) => getObjectValueByPath(c, this.itemKey)),\n item,\n }\n\n this.buildTree(children, key)\n\n // This fixed bug with dynamic children resetting selected parent state\n if (\n this.selectionType !== 'independent' &&\n parent !== null &&\n !this.nodes.hasOwnProperty(key) &&\n this.nodes.hasOwnProperty(parent)\n ) {\n node.isSelected = this.nodes[parent].isSelected\n } else {\n node.isSelected = oldNode.isSelected\n node.isIndeterminate = oldNode.isIndeterminate\n }\n\n node.isActive = oldNode.isActive\n node.isOpen = oldNode.isOpen\n\n this.nodes[key] = node\n\n if (children.length && this.selectionType !== 'independent') {\n const { isSelected, isIndeterminate } = this.calculateState(key, this.nodes)\n\n node.isSelected = isSelected\n node.isIndeterminate = isIndeterminate\n }\n\n // Don't forget to rebuild cache\n if (this.nodes[key].isSelected && (this.selectionType === 'independent' || node.children.length === 0)) this.selectedCache.add(key)\n if (this.nodes[key].isActive) this.activeCache.add(key)\n if (this.nodes[key].isOpen) this.openCache.add(key)\n\n this.updateVnodeState(key)\n }\n },\n calculateState (node: string | number, state: Record) {\n const children = state[node].children\n const counts = children.reduce((counts: number[], child: string | number) => {\n counts[0] += +Boolean(state[child].isSelected)\n counts[1] += +Boolean(state[child].isIndeterminate)\n\n return counts\n }, [0, 0])\n\n const isSelected = !!children.length && counts[0] === children.length\n const isIndeterminate = !isSelected && (counts[0] > 0 || counts[1] > 0)\n\n return {\n isSelected,\n isIndeterminate,\n }\n },\n emitOpen () {\n this.emitNodeCache('update:open', this.openCache)\n },\n emitSelected () {\n this.emitNodeCache('input', this.selectedCache)\n },\n emitActive () {\n this.emitNodeCache('update:active', this.activeCache)\n },\n emitNodeCache (event: string, cache: NodeCache) {\n this.$emit(event, this.returnObject ? [...cache].map(key => this.nodes[key].item) : [...cache])\n },\n handleNodeCacheWatcher (value: any[], cache: NodeCache, updateFn: Function, emitFn: Function) {\n value = this.returnObject ? value.map(v => getObjectValueByPath(v, this.itemKey)) : value\n const old = [...cache]\n if (deepEqual(old, value)) return\n\n old.forEach(key => updateFn(key, false))\n value.forEach(key => updateFn(key, true))\n\n emitFn()\n },\n getDescendants (key: string | number, descendants: NodeArray = []) {\n const children = this.nodes[key].children\n\n descendants.push(...children)\n\n for (let i = 0; i < children.length; i++) {\n descendants = this.getDescendants(children[i], descendants)\n }\n\n return descendants\n },\n getParents (key: string | number) {\n let parent = this.nodes[key].parent\n\n const parents = []\n while (parent !== null) {\n parents.push(parent)\n parent = this.nodes[parent].parent\n }\n\n return parents\n },\n register (node: VTreeviewNodeInstance) {\n const key = getObjectValueByPath(node.item, this.itemKey)\n this.nodes[key].vnode = node\n\n this.updateVnodeState(key)\n },\n unregister (node: VTreeviewNodeInstance) {\n const key = getObjectValueByPath(node.item, this.itemKey)\n if (this.nodes[key]) this.nodes[key].vnode = null\n },\n isParent (key: string | number) {\n return this.nodes[key].children && this.nodes[key].children.length\n },\n updateActive (key: string | number, isActive: boolean) {\n if (!this.nodes.hasOwnProperty(key)) return\n\n if (!this.multipleActive) {\n this.activeCache.forEach(active => {\n this.nodes[active].isActive = false\n this.updateVnodeState(active)\n this.activeCache.delete(active)\n })\n }\n\n const node = this.nodes[key]\n if (!node) return\n\n if (isActive) this.activeCache.add(key)\n else this.activeCache.delete(key)\n\n node.isActive = isActive\n\n this.updateVnodeState(key)\n },\n updateSelected (key: string | number, isSelected: boolean, isForced = false) {\n if (!this.nodes.hasOwnProperty(key)) return\n\n const changed = new Map()\n\n if (this.selectionType !== 'independent') {\n for (const descendant of this.getDescendants(key)) {\n if (!getObjectValueByPath(this.nodes[descendant].item, this.itemDisabled) || isForced) {\n this.nodes[descendant].isSelected = isSelected\n this.nodes[descendant].isIndeterminate = false\n changed.set(descendant, isSelected)\n }\n }\n\n const calculated = this.calculateState(key, this.nodes)\n this.nodes[key].isSelected = isSelected\n this.nodes[key].isIndeterminate = calculated.isIndeterminate\n changed.set(key, isSelected)\n\n for (const parent of this.getParents(key)) {\n const calculated = this.calculateState(parent, this.nodes)\n this.nodes[parent].isSelected = calculated.isSelected\n this.nodes[parent].isIndeterminate = calculated.isIndeterminate\n changed.set(parent, calculated.isSelected)\n }\n } else {\n this.nodes[key].isSelected = isSelected\n this.nodes[key].isIndeterminate = false\n changed.set(key, isSelected)\n }\n\n for (const [key, value] of changed.entries()) {\n this.updateVnodeState(key)\n\n if (this.selectionType === 'leaf' && this.isParent(key)) continue\n\n value === true ? this.selectedCache.add(key) : this.selectedCache.delete(key)\n }\n },\n updateOpen (key: string | number, isOpen: boolean) {\n if (!this.nodes.hasOwnProperty(key)) return\n\n const node = this.nodes[key]\n const children = getObjectValueByPath(node.item, this.itemChildren)\n\n if (children && !children.length && node.vnode && !node.vnode.hasLoaded) {\n node.vnode.checkChildren().then(() => this.updateOpen(key, isOpen))\n } else if (children && children.length) {\n node.isOpen = isOpen\n\n node.isOpen ? this.openCache.add(key) : this.openCache.delete(key)\n\n this.updateVnodeState(key)\n }\n },\n updateVnodeState (key: string | number) {\n const node = this.nodes[key]\n\n if (node && node.vnode) {\n node.vnode.isSelected = node.isSelected\n node.vnode.isIndeterminate = node.isIndeterminate\n node.vnode.isActive = node.isActive\n node.vnode.isOpen = node.isOpen\n }\n },\n isExcluded (key: string | number) {\n return !!this.search && this.excludedItems.has(key)\n },\n },\n\n render (h): VNode {\n const children: VNodeChildrenArrayContents = this.items.length\n ? this.items.filter(item => {\n return !this.isExcluded(getObjectValueByPath(item, this.itemKey))\n }).map(item => {\n const genChild = VTreeviewNode.options.methods.genChild.bind(this)\n\n return genChild(item, this.disabled || getObjectValueByPath(item, this.itemDisabled))\n })\n /* istanbul ignore next */\n : this.$slots.default! // TODO: remove type annotation with TS 3.2\n\n return h('div', {\n staticClass: 'v-treeview',\n class: {\n 'v-treeview--hoverable': this.hoverable,\n 'v-treeview--dense': this.dense,\n ...this.themeClasses,\n },\n }, children)\n },\n})\n","import { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\n\nvar render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('div',[_c('h1',[_vm._v(_vm._s(_vm.invoiceCenter.name))]),_c('h4',[_vm._v(\"Showing bookings up to \"+_vm._s(_vm.compDateUntil))]),_c('div',{staticClass:\"d-flex\"},_vm._l((_vm.bulkActions),function(ref,index){\nvar count = ref.count;\nvar text = ref.text;\nvar icon = ref.icon;\nvar operation = ref.operation;\nreturn _c('div',{key:index,staticClass:\"bulk-action-card p-relative mt-10 mx-2 w-full border rounded pa-6\"},[_c('transition',{attrs:{\"name\":\"fade-in\"}},[(_vm.actionProcessed.includes(operation))?_c('div',{staticClass:\"saved-overlay rounded d-flex justify-center align-center\"},[_c(VIcon,{attrs:{\"color\":\"white\",\"size\":\"100\"}},[_vm._v(\"mdi-check-circle-outline\")])],1):_vm._e()]),(!_vm.loadingBookingIds.includes(operation))?_c('div',{staticClass:\"d-flex flex-column justify-space-between h-full\"},[_c(VIcon,{staticClass:\"mb-4\",attrs:{\"size\":\"60\"}},[_vm._v(_vm._s(icon))]),_c('p',{staticClass:\"font-weight-medium text-center text-body-1 px-6\"},[_vm._v(\"Submit \"),_c('span',{staticClass:\"warning--text font-weight-bold\"},[_vm._v(_vm._s(count))]),_vm._v(\" Bookings \"+_vm._s(text)+\" as \"),_c('span',{staticClass:\"success--text\"},[_vm._v(\"Ready to Invoice\")])]),_c(VBtn,{staticClass:\"py-6 px-8\",attrs:{\"color\":\"primary\",\"depressed\":\"\",\"disabled\":_vm.actionProcessed.includes(operation)},on:{\"click\":function($event){return _vm.submitBulkAction(operation)}}},[_vm._v(\"Submit\")])],1):_c('Spinner',{staticClass:\"mt-10\",attrs:{\"size\":\"60\"}})],1)}),0)]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./invoice-bulk-action-dialog-content.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./invoice-bulk-action-dialog-content.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./invoice-bulk-action-dialog-content.vue?vue&type=template&id=7c06c454&scoped=true\"\nimport script from \"./invoice-bulk-action-dialog-content.vue?vue&type=script&lang=js\"\nexport * from \"./invoice-bulk-action-dialog-content.vue?vue&type=script&lang=js\"\nimport style0 from \"./invoice-bulk-action-dialog-content.vue?vue&type=style&index=0&id=7c06c454&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7c06c454\",\n null\n \n)\n\nexport default component.exports","/* eslint-disable no-unused-vars */\nimport { isNullOrEmptyArray } from '@/helpers/array-helpers'\nimport VuetifyColourClass from '@/constants/core/VuetifyColourClass'\nimport PromiseDialogActionsDto from './promiseDialogActionsDto'\n\n/**\n * @class\n * @public\n */\nexport default class PromiseDialogDto {\n /**\n * @constructor\n */\n constructor({\n title = '',\n text = '',\n actions = [],\n color = VuetifyColourClass.primary,\n icon,\n persistent = false,\n } = {}) {\n /**\n * Dialog title text\n * @type {String}\n */\n this.title = title\n\n /**\n * Description text displayed under the title\n * @type {String}\n */\n this.text = text\n\n /**\n * List of objects that configure the action buttons on the dialog.\n * Each object will generate a button. Actions will be generated in LIFO\n * order.\n * @type {Array}\n */\n this.actions = isNullOrEmptyArray(actions)\n ? []\n : actions.map((action) => new PromiseDialogActionsDto(action))\n\n /**\n * Vuetify color class that will style the icon\n * @type {String}\n * @see {VuetifyColourClass} for valid range of values.\n */\n this.color = color\n\n /**\n * Icon displayed above the title, center aligned. MDI icon string.\n * @type {String}\n * @see https://pictogrammers.com/library/mdi for valid range of values. Needs to be prefixed with `mdi-`\n */\n this.icon = icon\n\n /**\n * Disables being able to close the dialog by clicking outside the dialog\n * card\n * @type {Boolean}\n */\n this.persistent = persistent\n }\n}\n","/* eslint-disable no-unused-vars */\nimport { nanoid } from 'nanoid'\nimport PromiseDialogEvent from '@/constants/dialog/PromiseDialogEvent'\n\n/**\n * @class\n * @public\n */\nexport default class PromiseDialogActionsDto {\n /**\n * @constructor\n */\n constructor({\n text = '',\n icon,\n attributes = {},\n event = PromiseDialogEvent.OK,\n } = {}) {\n /**\n * Unique key to facilitate the v-for loop. Generated by nanoid\n * @type {String}\n */\n this.key = nanoid()\n\n /**\n * Text displayed on the action button\n * @type {String}\n */\n this.text = text\n\n /**\n * Object that configure the action buttons on the dialog\n * @type {Array}\n */\n this.actions = icon\n\n /**\n * Object containing attributes to style the action button\n * @type {Object}\n * @see https://v2.vuetifyjs.com/en/api/v-btn/ for full list of attributes\n * @example\n *\n * ```\n * {\n * id: 'confirm-btn',\n * color: VuetifyColourClass.primary,\n * text: true,\n * title: 'Click here to accept the terms',\n * 'data-testid': 'promise-dialog--confirm-btn'\n * }\n * ```\n */\n this.attributes = attributes\n\n /**\n * Event returned when action button is clicked\n * @type {String}\n * @see {PromiseDialogEvent} for valid range of values\n */\n this.event = event\n }\n}\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./donut-graph.vue?vue&type=style&index=0&id=06c97bbb&prod&lang=scss&scoped=true\""],"sourceRoot":""}