{"version":3,"sources":["webpack:///./src/views/friends/user-friend/invitationRequest.vue?d908","webpack:///./src/views/friends/friends.vue?4416","webpack:///./src/views/friends/user-friend/pendingInvitation.vue?c04b","webpack:///./src/views/friends/user-friend/all-pending/all-users-table.vue?c912","webpack:///src/views/friends/user-friend/all-pending/all-users-table.vue","webpack:///./src/views/friends/user-friend/all-pending/all-users-table.vue?fb63","webpack:///./src/views/friends/user-friend/all-pending/all-users-table.vue","webpack:///./src/views/friends/user-friend/all-pending/all-users-cards.vue?a5a6","webpack:///src/views/friends/user-friend/all-pending/all-users-cards.vue","webpack:///./src/views/friends/user-friend/all-pending/all-users-cards.vue?bd32","webpack:///./src/views/friends/user-friend/all-pending/all-users-cards.vue","webpack:///src/views/friends/user-friend/pendingInvitation.vue","webpack:///./src/views/friends/user-friend/pendingInvitation.vue?bdd3","webpack:///./src/views/friends/user-friend/pendingInvitation.vue","webpack:///./src/views/friends/user-friend/allUsers.vue?949b","webpack:///./src/views/friends/user-friend/all-users/all-users-table.vue?01f7","webpack:///src/views/friends/user-friend/all-users/all-users-table.vue","webpack:///./src/views/friends/user-friend/all-users/all-users-table.vue?709d","webpack:///./src/views/friends/user-friend/all-users/all-users-table.vue","webpack:///./src/views/friends/user-friend/all-users/all-users-cards.vue?35cf","webpack:///src/views/friends/user-friend/all-users/all-users-cards.vue","webpack:///./src/views/friends/user-friend/all-users/all-users-cards.vue?8284","webpack:///./src/views/friends/user-friend/all-users/all-users-cards.vue","webpack:///src/views/friends/user-friend/allUsers.vue","webpack:///./src/views/friends/user-friend/allUsers.vue?1a28","webpack:///./src/views/friends/user-friend/allUsers.vue","webpack:///./src/views/friends/user-friend/friends.vue?88ec","webpack:///./src/views/friends/user-friend/all-friends/all-users-table.vue?baaa","webpack:///src/views/friends/user-friend/all-friends/all-users-table.vue","webpack:///./src/views/friends/user-friend/all-friends/all-users-table.vue?9e93","webpack:///./src/views/friends/user-friend/all-friends/all-users-table.vue","webpack:///./src/views/friends/user-friend/all-friends/all-users-cards.vue?509f","webpack:///src/views/friends/user-friend/all-friends/all-users-cards.vue","webpack:///./src/views/friends/user-friend/all-friends/all-users-cards.vue?f0e5","webpack:///./src/views/friends/user-friend/all-friends/all-users-cards.vue","webpack:///src/views/friends/user-friend/friends.vue","webpack:///./src/views/friends/user-friend/friends.vue?dafb","webpack:///./src/views/friends/user-friend/friends.vue","webpack:///./src/views/friends/user-friend/invitationRequest.vue?74ec","webpack:///./src/views/friends/user-friend/all-req/all-users-table.vue?0019","webpack:///src/views/friends/user-friend/all-req/all-users-table.vue","webpack:///./src/views/friends/user-friend/all-req/all-users-table.vue?2e71","webpack:///./src/views/friends/user-friend/all-req/all-users-table.vue","webpack:///./src/views/friends/user-friend/all-req/all-users-cards.vue?b0f7","webpack:///src/views/friends/user-friend/all-req/all-users-cards.vue","webpack:///./src/views/friends/user-friend/all-req/all-users-cards.vue?5890","webpack:///./src/views/friends/user-friend/all-req/all-users-cards.vue","webpack:///src/views/friends/user-friend/invitationRequest.vue","webpack:///./src/views/friends/user-friend/invitationRequest.vue?93f8","webpack:///./src/views/friends/user-friend/invitationRequest.vue","webpack:///src/views/friends/friends.vue","webpack:///./src/views/friends/friends.vue?ccf9","webpack:///./src/views/friends/friends.vue","webpack:///./src/views/friends/user-friend/all-pending sync","webpack:///./node_modules/bootstrap-vue/esm/mixins/form-options.js","webpack:///./node_modules/bootstrap-vue/esm/components/form/form.js","webpack:///./node_modules/bootstrap-vue/esm/components/layout/container.js","webpack:///./node_modules/bootstrap-vue/esm/mixins/pagination.js","webpack:///./node_modules/bootstrap-vue/esm/components/pagination/pagination.js","webpack:///./node_modules/vue-form-wizard/dist/vue-form-wizard.js","webpack:///./src/views/friends/user-friend/all-req/all-users-cards.vue?00c0","webpack:///./src/views/friends/user-friend/all-friends/all-users-table.vue?abd5","webpack:///./src/views/friends/user-friend/allUsers.vue?c509","webpack:///./node_modules/bootstrap-vue/esm/components/nav/nav.js","webpack:///./node_modules/bootstrap-vue/esm/components/alert/alert.js","webpack:///./src/views/friends/user-friend/friends.vue?38c7","webpack:///./node_modules/bootstrap-vue/esm/components/tabs/tab.js","webpack:///./src/views/friends/user-friend/all-friends sync","webpack:///./node_modules/bootstrap-vue/esm/mixins/model.js","webpack:///./node_modules/bootstrap-vue/esm/components/form-select/helpers/mixin-options.js","webpack:///./node_modules/bootstrap-vue/esm/components/form-select/form-select-option.js","webpack:///./node_modules/bootstrap-vue/esm/components/form-select/form-select-option-group.js","webpack:///./node_modules/bootstrap-vue/esm/components/form-select/form-select.js","webpack:///./node_modules/bootstrap-vue/esm/utils/stable-sort.js","webpack:///./src/views/friends/friends.vue?1822","webpack:///./node_modules/bootstrap-vue/esm/constants/popper.js","webpack:///./node_modules/bootstrap-vue/esm/mixins/click-out.js","webpack:///./node_modules/bootstrap-vue/esm/mixins/focus-in.js","webpack:///./node_modules/bootstrap-vue/esm/mixins/dropdown.js","webpack:///./node_modules/bootstrap-vue/esm/components/dropdown/dropdown-item.js","webpack:///./node_modules/bootstrap-vue/esm/components/layout/row.js","webpack:///./node_modules/bootstrap-vue/esm/mixins/form-custom.js","webpack:///./src/views/friends/user-friend/all-users/all-users-table.vue?755c","webpack:///./src/views/friends/user-friend/all-pending/all-users-table.vue?9047","webpack:///./src/@core/components/b-card-actions/BCardActions.vue?aa10","webpack:///./src/@core/mixins/ui/transition.js","webpack:///./src/views/friends/user-friend/all-req/all-users-table.vue?fb10","webpack:///./node_modules/bootstrap-vue/esm/components/dropdown/dropdown.js","webpack:///./src/views/friends/user-friend/all-pending/all-users-cards.vue?3079","webpack:///./src/views/friends/user-friend/all-users/all-users-cards.vue?9a7e","webpack:///./src/views/friends/user-friend/all-users sync","webpack:///./node_modules/bootstrap-vue/esm/components/badge/badge.js","webpack:///./src/views/friends/user-friend/all-friends/all-users-cards.vue?060d","webpack:///./node_modules/popper.js/dist/esm/popper.js","webpack:///./src/views/friends/user-friend/pendingInvitation.vue?313e","webpack:///./node_modules/vue-good-table/dist/vue-good-table.esm.js","webpack:///./node_modules/bootstrap-vue/esm/components/tabs/tabs.js","webpack:///./src/@core/components/b-card-actions/BCardActions.vue?9a58","webpack:///./node_modules/bootstrap-vue/esm/components/spinner/spinner.js","webpack:///./node_modules/bootstrap-vue/esm/components/overlay/overlay.js","webpack:///./src/@core/components/b-card-actions/BCardActionsContainer.vue?dabb","webpack:///src/@core/components/b-card-actions/BCardActionsContainer.vue","webpack:///./src/@core/components/b-card-actions/BCardActionsContainer.vue?f390","webpack:///./src/@core/components/b-card-actions/BCardActionsContainer.vue","webpack:///src/@core/components/b-card-actions/BCardActions.vue","webpack:///./src/@core/components/b-card-actions/BCardActions.vue?907c","webpack:///./src/@core/components/b-card-actions/BCardActions.vue"],"names":["render","_vm","this","_h","$createElement","_c","_self","ref","staticClass","attrs","$t","staticRenderFns","on","$event","styleDisplay","_e","_v","_s","advanceSearch","model","value","callback","$$v","searchTerm","expression","columns","rows","direction","enabled","externalQuery","perPage","pageLength","scopedSlots","_u","key","fn","props","column","field","deleteFriend","row","_id","formattedRow","perPageChanged","currentPerPage","total","pageChanged","currentPage","proxy","components","BForm","BCol","BContainer","BRow","BButton","BModal","VBModal","Ripple","BCardActions","VueGoodTable","BAvatar","BBadge","BPagination","BFormGroup","BFormInput","BFormSelect","BDropdownItem","BDropdown","data","show","showUpdate","dir","directives","computed","statusVariant","Current","Professional","Rejected","Resigned","Applied","store","created","getdata","methods","console","log","response","forEach","error","val","component","length","_l","person","index","to","name","adresse","country","city","email","friendList","id","getImg","allUsersTable","allUsersCards","addFriend","description","userInfo","rawName","modifiers","chatStart","deleteUserFriend","from","FormWizard","TabContent","BTab","BTabs","BCard","BAlert","BLink","pendingInvitation","allUsers","friends","invitationRequest","nb","titleNumber","getNumber","webpackEmptyContext","req","e","Error","code","keys","resolve","module","exports","OPTIONS_OBJECT_DEPRECATED_MSG","disabledField","htmlField","options","textField","valueField","formOptionsMixin","extend","formOptions","normalizeOptions","normalizeOption","option","arguments","undefined","text","String","html","disabled","Boolean","_this","map","$options","inline","novalidate","validated","functional","h","_ref","children","class","_defineProperty","obj","Object","defineProperty","enumerable","configurable","writable","fluid","tag","container","concat","_watch","ownKeys","object","enumerableOnly","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","push","apply","_objectSpread","target","i","source","getOwnPropertyDescriptors","defineProperties","_makeModelMixin","type","defaultValue","validator","warn","modelMixin","mixin","modelProps","MODEL_PROP_NAME","prop","MODEL_EVENT_NAME","event","ELLIPSIS_THRESHOLD","DEFAULT_LIMIT","startNumber","numberOfPages","_","number","classes","limit","page","keyCode","immediatePropagation","currentTarget","click","align","ariaLabel","ellipsisClass","ellipsisText","firstClass","firstNumber","firstText","hideEllipsis","hideGotoEndButtons","labelFirstPage","labelLastPage","labelNextPage","labelPage","labelPrevPage","lastClass","lastNumber","lastText","nextClass","nextText","pageClass","pills","prevClass","prevText","size","paginationMixin","mixins","localNumberOfPages","localLimit","btnSize","alignment","styleClass","computedCurrentPage","paginationParams","showFirstDots","showLastDots","numberOfLinks","math","lastPageNumber","pageList","_this$paginationParam","pages","idx","_i","_i2","_i3","watch","newValue","oldValue","$emit","$nextTick","handleKeyNav","shiftKey","isNav","propagation","focusFirst","focusPrev","focusLast","focusNext","getButtons","$el","btn","focusCurrent","_this2","find","el","_this3","_this4","reverse","_this5","buttons","indexOf","_this6","_this7","pageNumbers","p","_this$paginationParam2","fill","$buttons","isActivePage","pageNumber","noCurrentPage","makeEndBtn","linkTo","btnSlot","btnText","btnClass","pageTest","isDisabled","scope","$btnContent","normalizeSlot","$inner","linkProps","role","tabindex","ariaControls","onClick","keydown","makeEllipsis","isLast","makePageButton","active","tabIndex","btnContent","makePage","content","$firstPageBtn","offset","$lastPageBtn","$pagination","DEFAULT_PER_PAGE","DEFAULT_TOTAL_ROWS","totalRows","result","pageSizeNumberOfPages","clickEvt","cancelable","vueTarget","defaultPrevented","contains","pageNum","t","self","n","a","l","call","m","c","d","o","get","__esModule","default","prototype","hasOwnProperty","s","r","u","_compiled","_scopeId","$vnode","ssrContext","parent","__VUE_SSR_CONTEXT__","_registeredComponents","add","_ssrRegister","b","beforeCreate","_injectStyles","esModule","WizardButton","WizardStep","title","subtitle","nextButtonText","backButtonText","finishButtonText","hideButtons","validateOnBack","color","errorColor","shape","layout","stepsClasses","Array","stepSize","transition","startIndex","Number","provide","addTab","removeTab","activeTabIndex","currentPercentage","maxStep","loading","tabs","slotProps","nextTab","prevTab","isLastStep","fillButtonStyle","tabCount","isVertical","displayPrevButton","stepPercentage","progressBarStyle","backgroundColor","width","progress","borderColor","emitTabChange","$slots","tabId","replace","splice","changeTab","reset","checked","navigateToTab","activateAll","beforeTabChange","afterTabChange","setValidationError","focusNextTab","focusPrevTab","setLoading","validationError","validateBeforeChange","then","executeBeforeChange","catch","beforeChange","afterChange","activateTabAndCheckStep","tryChangeRoute","$router","route","checkRouteChange","deactivateTabs","activateTab","initializeTabs","window","mounted","tab","iconActiveStyle","stepCheckedStyle","errorStyle","stepTitleStyle","isStepSquare","isTabShape","icon","Function","additionalInfo","inject","$parent","destroyed","parentNode","removeChild","install","Vue","use","_t","href","square_shape","tab_shape","style","mode","has_error","document","activeElement","findIndex","getElementById","focus","vertical","keyup","_k","button","nativeOn","computeJustifyContent","cardHeader","justified","small","BNav","_class","parseCountDown","parseShow","dismissLabel","dismissible","fade","variant","countDown","localShow","clearCountDownInterval","$_countDownTimeout","setTimeout","$_filterTimer","beforeDestroy","dismiss","clearTimeout","$alert","$dismissButton","noFade","_objectSpread2","MODEL_PROP_NAME_ACTIVE","MODEL_EVENT_NAME_ACTIVE","bvTabs","localActive","_isTab","tabClasses","card","noBody","activeTabClass","controlledBy","buttonId","safeId","computedNoFade","computedLazy","lazy","activate","deactivate","firstTab","registerTab","updated","updateButton","hasNormalizedSlot","unregisterTab","deactivateTab","$content","labelField","optionsField","optionsMixin","label","BFormSelectOption","domProps","BFormSelectOptionGroup","ariaInvalid","multiple","selectSize","localValue","computedSelectSize","plain","inputClass","stateClass","$refs","input","blur","onChange","selectedValue","array","selected","_value","required","form","computedAriaInvalid","change","stableSort","compareFn","sort","bind","PLACEMENT_TOP_START","PLACEMENT_TOP_END","PLACEMENT_BOTTOM_START","PLACEMENT_BOTTOM_END","PLACEMENT_RIGHT_START","PLACEMENT_LEFT_START","clickOutMixin","listenForClickOut","clickOutElement","clickOutEventName","_clickOutHandler","isClickOut","clickOutHandler","focusInMixin","listenForFocusIn","focusInElement","_focusInHandler","focusInHandler","ROOT_EVENT_NAME_SHOWN","ROOT_EVENT_NAME_HIDDEN","SELECTOR_FORM_CHILD","SELECTOR_ITEM","selector","join","els","boundary","dropleft","dropright","dropup","noFlip","popperOpts","right","dropdownMixin","bvDropdown","bvNavbar","visible","visibleChangePrevented","inNavbar","toggler","toggle","directionClass","boundaryClass","eventName","bvEvent","menu","relatedTarget","componentId","emitEvent","$off","focusToggler","showMenu","hideMenu","$_popper","$_hideTimeout","deactivated","whileOpenListen","destroyPopper","clearHideTimeout","emitOnRoot","split","createPopper","focusMenu","element","getPopperConfig","destroy","updatePopper","scheduleUpdate","_unused","placement","popperConfig","flip","boundariesElement","preventOverflow","isOpen","method","$root","rootCloseListener","vm","hide","refocus","$once","_event","onMousedown","onKeydown","onEsc","onSplitClick","hideHandler","up","items","getItems","focusItem","linkClass","inheritAttrs","computedAttrs","bvAttrs","closeDropdown","$props","COMMON_ALIGNMENT","computeRowColsClass","breakpoint","cols","computeRowColsBreakpoint","rowColsPropList","generateProps","rowColsProps","reduce","alignContent","alignH","alignV","noGutters","_classList$push","classList","formCustomMixin","custom","heightTransition","trHeight","trAddHeight","heightValue","substring","trTrimHeight","trSetHeight","block","menuClass","noCaret","splitButtonType","splitClass","splitHref","splitTo","splitVariant","toggleClass","toggleTag","toggleText","dropdownClasses","menuClasses","toggleClasses","commonProps","$buttonChildren","buttonContentDomProps","$split","btnProps","$toggle","mousedown","$menu","pill","link","isBrowser","navigator","timeoutDuration","longerTimeoutBrowsers","userAgent","microtaskDebounce","called","Promise","taskDebounce","scheduled","supportsMicroTasks","debounce","isFunction","functionToCheck","getType","toString","getStyleComputedProperty","property","nodeType","ownerDocument","defaultView","css","getComputedStyle","getParentNode","nodeName","host","getScrollParent","body","_getStyleComputedProp","overflow","overflowX","overflowY","test","getReferenceNode","reference","referenceNode","isIE11","MSInputMethodContext","documentMode","isIE10","isIE","version","getOffsetParent","documentElement","noOffsetParent","offsetParent","nextElementSibling","isOffsetContainer","firstElementChild","getRoot","node","findCommonOffsetParent","element1","element2","order","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","start","end","range","createRange","setStart","setEnd","commonAncestorContainer","element1root","getScroll","side","upperSide","scrollingElement","includeScroll","rect","subtract","scrollTop","scrollLeft","modifier","top","bottom","left","getBordersSize","styles","axis","sideA","sideB","parseFloat","getSize","computedStyle","Math","max","parseInt","getWindowSizes","height","classCallCheck","instance","Constructor","TypeError","createClass","descriptor","protoProps","staticProps","_extends","assign","getClientRect","offsets","getBoundingClientRect","sizes","clientWidth","clientHeight","horizScrollbar","offsetWidth","vertScrollbar","offsetHeight","getOffsetRectRelativeToArbitraryNode","fixedPosition","isHTML","childrenRect","parentRect","scrollParent","borderTopWidth","borderLeftWidth","marginTop","marginLeft","getViewportOffsetRectRelativeToArtbitraryNode","excludeScroll","relativeOffset","innerWidth","innerHeight","isFixed","getFixedPositionOffsetParent","parentElement","getBoundaries","popper","padding","boundaries","boundariesNode","_getWindowSizes","isPaddingNumber","getArea","computeAutoPlacement","refRect","rects","sortedAreas","area","filteredAreas","_ref2","computedPlacement","variation","getReferenceOffsets","state","commonOffsetParent","getOuterSizes","x","marginBottom","y","marginRight","getOppositePlacement","hash","matched","getPopperOffsets","referenceOffsets","popperRect","popperOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","arr","check","cur","match","runModifiers","ends","modifiersToRun","slice","update","isDestroyed","arrowStyles","attributes","flipped","positionFixed","originalPlacement","position","isCreated","onUpdate","onCreate","isModifierEnabled","modifierName","some","getSupportedPropertyName","prefixes","upperProp","charAt","toUpperCase","prefix","toCheck","removeAttribute","willChange","disableEventListeners","removeOnDestroy","getWindow","attachToScrollParents","scrollParents","isBody","addEventListener","passive","setupEventListeners","updateBound","scrollElement","eventsEnabled","enableEventListeners","removeEventListeners","removeEventListener","cancelAnimationFrame","isNumeric","isNaN","isFinite","setStyles","unit","setAttributes","setAttribute","applyStyle","arrowElement","applyStyleOnLoad","modifierOptions","getRoundedOffsets","shouldRound","_data$offsets","round","floor","noRound","v","referenceWidth","popperWidth","isVariation","sameWidthParity","bothOddWidth","horizontalToInteger","verticalToInteger","isFirefox","computeStyle","legacyGpuAccelerationOption","gpuAcceleration","offsetParentRect","devicePixelRatio","prefixedProperty","invertTop","invertLeft","arrow","isModifierRequired","requestingName","requestedName","requesting","isRequired","_requesting","requested","_data$offsets$arrow","querySelector","len","sideCapitalized","toLowerCase","altSide","opSide","arrowElementSize","center","popperMarginSide","popperBorderSide","sideValue","min","getOppositeVariation","placements","validPlacements","clockwise","counter","BEHAVIORS","FLIP","CLOCKWISE","COUNTERCLOCKWISE","placementOpposite","flipOrder","behavior","step","refOffsets","overlapsRef","overflowsLeft","overflowsRight","overflowsTop","overflowsBottom","overflowsBoundaries","flippedVariationByRef","flipVariations","flippedVariationByContent","flipVariationsByContent","flippedVariation","keepTogether","toValue","str","parseOffset","basePlacement","useHeight","fragments","frag","trim","divider","search","splitRegex","ops","op","mergeWithPrevious","index2","transformProp","popperStyles","transform","priority","primary","escapeWithReference","secondary","shift","shiftvariation","shiftOffsets","bound","inner","subtractLength","onLoad","Defaults","Popper","requestAnimationFrame","jquery","Utils","global","PopperUtils","_typeof","Symbol","iterator","constructor","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_nonIterableRest","_toConsumableArray","_arrayWithoutHoles","_iterableToArray","_nonIterableSpread","isArray","arr2","iter","_arr","_n","_d","next","done","err","MAX_SAFE_INTEGER","argsTag","funcTag","genTag","reIsUint","arrayEach","iteratee","baseTimes","overArg","func","arg","objectProto","objectToString","propertyIsEnumerable","nativeKeys","arrayLikeKeys","inherited","isArguments","skipIndexes","isIndex","baseEach","createBaseEach","baseForOwn","baseFor","createBaseFor","baseKeys","isPrototype","eachFunc","fromRight","collection","isArrayLike","iterable","keysFunc","Ctor","proto","identity","isArrayLikeObject","isLength","isObjectLike","isObject","lodash_foreach","MAX_SAFE_INTEGER$1","argsTag$1","funcTag$1","genTag$1","reIsUint$1","thisArg","args","baseTimes$1","overArg$1","objectProto$1","hasOwnProperty$1","objectToString$1","propertyIsEnumerable$1","nativeKeys$1","nativeMax","nonEnumShadows","arrayLikeKeys$1","isArray$1","isArguments$1","isIndex$1","assignValue","objValue","eq","baseKeys$1","isPrototype$1","baseRest","otherArgs","copyObject","customizer","createAssigner","assigner","sources","guard","isIterateeCall","isObject$1","isArrayLike$1","other","isArrayLikeObject$1","isLength$1","isFunction$1","isObjectLike$1","keys$1","lodash_assign","commonjsGlobal","globalThis","createCommonjsModule","lodash_clonedeep","LARGE_ARRAY_SIZE","HASH_UNDEFINED","arrayTag","boolTag","dateTag","errorTag","mapTag","numberTag","objectTag","promiseTag","regexpTag","setTag","stringTag","symbolTag","weakMapTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","reRegExpChar","reFlags","reIsHostCtor","cloneableTags","freeGlobal","freeSelf","root","freeExports","freeModule","moduleExports","addMapEntry","pair","set","addSetEntry","arrayPush","values","arrayReduce","accumulator","initAccum","getValue","isHostObject","mapToArray","setToArray","arrayProto","funcProto","coreJsData","maskSrcKey","uid","exec","IE_PROTO","funcToString","reIsNative","RegExp","Buffer","Uint8Array","getPrototype","getPrototypeOf","objectCreate","create","nativeGetSymbols","nativeIsBuffer","isBuffer","DataView","getNative","Map","Set","WeakMap","nativeCreate","dataViewCtorString","toSource","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","symbolValueOf","valueOf","Hash","entries","clear","entry","hashClear","__data__","hashDelete","has","hashGet","hashHas","hashSet","ListCache","listCacheClear","listCacheDelete","assocIndexOf","lastIndex","pop","listCacheGet","listCacheHas","listCacheSet","MapCache","mapCacheClear","mapCacheDelete","getMapData","mapCacheGet","mapCacheHas","mapCacheSet","Stack","stackClear","stackDelete","stackGet","stackHas","stackSet","cache","pairs","baseAssign","baseClone","isDeep","isFull","stack","isArr","initCloneArray","copyArray","getTag","isFunc","cloneBuffer","initCloneObject","copySymbols","initCloneByTag","stacked","getAllKeys","subValue","baseCreate","baseGetAllKeys","symbolsFunc","baseGetTag","baseIsNative","isMasked","pattern","buffer","copy","cloneArrayBuffer","arrayBuffer","byteLength","cloneDataView","dataView","byteOffset","cloneMap","cloneFunc","cloneRegExp","regexp","cloneSet","cloneSymbol","symbol","cloneTypedArray","typedArray","getSymbols","isKeyable","stubArray","cloneDeep","ArrayBuffer","ctorString","stubFalse","lodash_filter","FUNC_ERROR_TEXT","UNORDERED_COMPARE_FLAG","PARTIAL_COMPARE_FLAG","INFINITY","reIsDeepProp","reIsPlainProp","reLeadingDot","rePropName","reEscapeChar","typedArrayTags","freeProcess","process","nodeUtil","binding","nodeIsTypedArray","isTypedArray","arrayFilter","predicate","resIndex","arraySome","baseProperty","baseUnary","symbolToString","SetCache","setCacheAdd","setCacheHas","baseFilter","baseGet","path","isKey","castPath","toKey","baseHasIn","baseIsEqual","bitmask","baseIsEqualDeep","equalFunc","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","equalArrays","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","equalObjects","baseIsMatch","matchData","noCustomizer","srcValue","baseIsTypedArray","baseIteratee","baseMatchesProperty","baseMatches","getMatchData","matchesStrictComparable","isStrictComparable","hasIn","basePropertyDeep","baseToString","isSymbol","stringToPath","isPartial","arrLength","othLength","seen","arrValue","othValue","compared","othIndex","message","convert","objProps","objLength","othProps","skipCtor","objCtor","othCtor","hasPath","hasFunc","memoize","string","quote","resolver","memoized","Cache","lodash_isequal","COMPARE_PARTIAL_FLAG","COMPARE_UNORDERED_FLAG","asyncTag","nullTag","proxyTag","undefinedTag","cacheHas","nativeObjectToString","symToStringTag","toStringTag","isArg","isBuff","isType","getRawTag","baseIsArguments","isOwn","unmasked","isEqual","diacritics","diacriticless","searchChar","foundChar","indexChar","escapeRegExp","defaultType","format","filterPredicate","rowval","skipDiacritics","fromDropdown","rowValue","compare","cook","script","lastPage","totalRecords","ofText","pageText","pageInfo","changePage","normalizeComponent","template","scopeId","isFunctionalTemplate","moduleIdentifier","shadowMode","createInjector","createInjectorSSR","createInjectorShadow","hook","context","shadowRoot","originalRender","existing","__vue_script__","__vue_render__","stopPropagation","__vue_staticRenderFns__","__vue_inject_styles__","__vue_scope_id__","__vue_module_identifier__","__vue_is_functional_template__","__vue_component__","DEFAULT_ROWS_PER_PAGE_DROPDOWN","script$1","rtl","customRowsPerPageDropdown","paginateDropdownAllowAll","rowsPerPageText","allText","prevPage","rowsPerPageOptions","handler","handlePerPage","immediate","pagesCount","quotient","remainder","paginatedInfo","first","last","nextIsPossible","prevIsPossible","emit","nextPage","previousPage","found","unshift","__vue_script__$1","__vue_render__$1","$$selectedVal","preventDefault","__vue_staticRenderFns__$1","__vue_inject_styles__$1","__vue_scope_id__$1","__vue_module_identifier__$1","__vue_is_functional_template__$1","__vue_component__$1","script$2","globalSearchTerm","showControlBar","searchEnabled","updateValue","entered","__vue_script__$2","__vue_render__$2","globalSearchPlaceholder","__vue_staticRenderFns__$2","__vue_inject_styles__$2","__vue_scope_id__$2","__vue_module_identifier__$2","__vue_is_functional_template__$2","__vue_component__$2","script$3","populateInitialFilters","deep","columnFilters","timer","hasFilterRow","col","filterOptions","isFilterable","isDropdown","filterDropdownItems","isDropdownObjects","isDropdownArray","getPlaceholder","placeholder","updateFiltersOnEnter","updateFiltersImmediately","updateFiltersOnKeyup","trigger","updateFilters","updateSlotFilter","fieldToFilter","slotFilterField","formatValue","$set","filterValue","__vue_script__$3","__vue_render__$3","lineNumbers","selectable","hidden","__vue_staticRenderFns__$3","__vue_inject_styles__$3","__vue_scope_id__$3","__vue_module_identifier__$3","__vue_is_functional_template__$3","__vue_component__$3","DEFAULT_SORT_TYPE","getColumnFirstSortType","firstSortType","getCurrentPrimarySort","sortArray","getNextSort","currentSort","getIndex","primarySort","currentPrimarySort","secondarySort","script$4","allSelected","allSelectedIndeterminate","typedColumns","sortable","getClasses","tableRef","paginated","setColumnStyles","checkBoxThStyle","lineNumberThStyle","columnStyles","sorts","toggleSelectAll","isSortableColumn","isSortable","setInitialSort","getColumnSort","getHeaderClasses","filterRows","getWidthStyle","dom","cellStyle","colStyles","skip","cell","cells","minWidth","maxWidth","getColumnStyle","styleObject","__vue_script__$4","__vue_render__$4","__vue_staticRenderFns__$4","__vue_inject_styles__$4","__vue_scope_id__$4","__vue_module_identifier__$4","__vue_is_functional_template__$4","__vue_component__$4","script$5","headerRow","selectAllByGroup","collapsable","collectFormatted","fullColspan","groupIndex","groupChildObject","vgtSelected","columnCollapsable","currentIndex","toggleSelectGroup","__vue_script__$5","__vue_render__$5","vgtIsExpanded","__vue_staticRenderFns__$5","__vue_inject_styles__$5","__vue_scope_id__$5","__vue_module_identifier__$5","__vue_is_functional_template__$5","__vue_component__$5","toDate","argument","argStr","Date","getTime","NaN","toInteger","dirtyNumber","ceil","addMilliseconds","dirtyDate","dirtyAmount","timestamp","amount","MILLISECONDS_IN_MINUTE","getTimezoneOffsetInMilliseconds","date","baseTimezoneOffset","getTimezoneOffset","setSeconds","millisecondsPartOfTimezoneOffset","compareAsc","dirtyDateLeft","dirtyDateRight","dateLeft","dateRight","diff","isValid","formatDistanceLocale","lessThanXSeconds","one","xSeconds","halfAMinute","lessThanXMinutes","xMinutes","aboutXHours","xHours","xDays","aboutXMonths","xMonths","aboutXYears","xYears","overXYears","almostXYears","formatDistance","token","count","addSuffix","comparison","buildFormatLongFn","dirtyOptions","defaultWidth","formats","dateFormats","full","long","medium","short","timeFormats","dateTimeFormats","formatLong","time","dateTime","formatRelativeLocale","lastWeek","yesterday","today","tomorrow","nextWeek","formatRelative","_date","_baseDate","_options","buildLocalizeFn","dirtyIndex","valuesArray","formattingValues","defaultFormattingWidth","_defaultWidth","_width","argumentCallback","eraValues","narrow","abbreviated","wide","quarterValues","monthValues","dayValues","dayPeriodValues","am","pm","midnight","noon","morning","afternoon","evening","night","formattingDayPeriodValues","ordinalNumber","_dirtyOptions","rem100","localize","era","quarter","month","day","dayPeriod","buildMatchPatternFn","dirtyString","matchResult","matchPattern","matchedString","parseResult","parsePattern","valueCallback","rest","buildMatchFn","matchPatterns","defaultMatchWidth","parsePatterns","defaultParseWidth","findKey","matchOrdinalNumberPattern","parseOrdinalNumberPattern","matchEraPatterns","parseEraPatterns","any","matchQuarterPatterns","parseQuarterPatterns","matchMonthPatterns","parseMonthPatterns","matchDayPatterns","parseDayPatterns","matchDayPeriodPatterns","parseDayPeriodPatterns","locale","weekStartsOn","firstWeekContainsDate","subMilliseconds","addLeadingZeros","targetLength","sign","output","abs","formatters","signedYear","getUTCFullYear","year","M","getUTCMonth","getUTCDate","dayPeriodEnumValue","getUTCHours","H","getUTCMinutes","getUTCSeconds","S","numberOfDigits","milliseconds","getUTCMilliseconds","fractionalSeconds","pow","MILLISECONDS_IN_DAY","getUTCDayOfYear","setUTCMonth","setUTCHours","startOfYearTimestamp","difference","startOfUTCISOWeek","getUTCDay","setUTCDate","getUTCISOWeekYear","fourthOfJanuaryOfNextYear","setUTCFullYear","startOfNextYear","fourthOfJanuaryOfThisYear","startOfThisYear","startOfUTCISOWeekYear","fourthOfJanuary","MILLISECONDS_IN_WEEK","getUTCISOWeek","startOfUTCWeek","localeWeekStartsOn","defaultWeekStartsOn","RangeError","getUTCWeekYear","localeFirstWeekContainsDate","defaultFirstWeekContainsDate","firstWeekOfNextYear","firstWeekOfThisYear","startOfUTCWeekYear","firstWeek","MILLISECONDS_IN_WEEK$1","getUTCWeek","dayPeriodEnum","formatters$1","G","Y","signedWeekYear","weekYear","twoDigitYear","R","isoWeekYear","Q","q","L","w","week","I","isoWeek","D","dayOfYear","E","dayOfWeek","localDayOfWeek","isoDayOfWeek","hours","B","K","k","X","_localize","originalDate","_originalDate","timezoneOffset","formatTimezoneWithOptionalMinutes","formatTimezone","O","formatTimezoneShort","z","T","dirtyDelimiter","absOffset","minutes","delimiter","dateLongFormatter","timeLongFormatter","dateTimeLongFormatter","dateTimeFormat","datePattern","timePattern","longFormatters","P","protectedDayOfYearTokens","protectedWeekYearTokens","isProtectedDayOfYearToken","isProtectedWeekYearToken","throwProtectedError","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","unescapedLatinCharacterRegExp","dirtyFormatStr","formatStr","locale$1","utcDate","formatterOptions","firstCharacter","longFormatter","cleanEscapedString","formatter","useAdditionalWeekYearTokens","useAdditionalDayOfYearTokens","assign$1","dirtyObject","setUTCDay","dirtyDay","currentDay","dayIndex","setUTCISODay","setUTCISOWeek","dirtyISOWeek","setUTCWeek","dirtyWeek","MILLISECONDS_IN_HOUR","MILLISECONDS_IN_MINUTE$1","MILLISECONDS_IN_SECOND","numericPatterns","hour23h","hour24h","hour11h","hour12h","minute","second","singleDigit","twoDigits","threeDigits","fourDigits","anyDigitsSigned","singleDigitSigned","twoDigitsSigned","threeDigitsSigned","fourDigitsSigned","timezonePatterns","basicOptionalMinutes","basic","basicOptionalSeconds","extended","extendedOptionalSeconds","parseNumericPattern","parseTimezonePattern","seconds","parseAnyDigitsSigned","parseNDigits","parseNDigitsSigned","dayPeriodEnumToHours","enumValue","normalizeTwoDigitYear","currentYear","isCommonEra","absCurrentYear","rangeEnd","rangeEndCentury","isPreviousCentury","DAYS_IN_MONTH","DAYS_IN_MONTH_LEAP_YEAR","isLeapYearIndex","parsers","parse","flags","incompatibleTokens","isTwoDigitYear","validate","normalizedTwoDigitYear","_match","_flags","firstWeekOfYear","isLeapYear","wholeWeekDays","isPM","setUTCMinutes","setUTCSeconds","setUTCMilliseconds","timestampIsSet","_token","TIMEZONE_UNIT_PRIORITY","formattingTokensRegExp$1","longFormattingTokensRegExp$1","escapedStringRegExp$1","doubleQuoteRegExp$1","notWhitespaceRegExp","unescapedLatinCharacterRegExp$1","dirtyDateString","dirtyFormatString","dirtyBackupDate","dateString","formatString","subFnOptions","setters","dateToSystemTimezone","tokens","usedTokens","parser","incompatibleToken","usedToken","fullToken","cleanEscapedString$1","uniquePrioritySetters","setter","setterArray","convertedDate","setFullYear","setHours","isRight","dateInputFormat","dateOutputFormat","date$1","freeze","Infinity","number$1","decimal","toFixed","decimal$1","percentage","percentage$1","_boolean","_boolean$1","dataTypes","coreDataTypes","compName","script$6","isLoading","maxHeight","fixedHeader","theme","responsive","rowStyleClass","compactMode","groupOptions","rowKey","selectOptions","selectionInfoClass","selectionText","clearSelectionText","disableSelectInfo","sortOptions","initialSortBy","paginationOptions","perPageDropdown","dropdownAllowAll","searchOptions","searchFn","tableLoading","selectOnCheckboxOnly","selectAllByPage","maintainExpanded","expandedRowKeys","defaultSortBy","searchTrigger","externalSearchQuery","searchPlaceholder","searchSkipDiacritics","paginate","paginateOnTop","paginateOnBottom","paginationMode","filteredRows","forceSearch","sortChanged","initializeSelect","initializePagination","handleSearch","initializeSearch","initializeSort","selectedRows","tableStyles","tableStyleClasses","hasFooterSlot","wrapperStyles","rowKeyField","hasHeaderRowTemplate","$scopedSlots","showEmptySlot","selectedRowCount","selectedPageRowsCount","totalPageRowCount","totalRowCount","selectionInfo","selectedPageRows","processedRows","r1","r2","originalIndex","groupHeaderOnTop","headerPosition","groupHeaderOnBottom","wrapStyleClasses","globalSearchAllowed","computedRows","allRows","globalSearchDisabled","foundMatch","rowCount","vgt_header_id","newHeaderRow","cRows","xRow","yRow","sortValue","getColumnForField","xvalue","collect","yvalue","sortFn","typeDef","paginatedRows","childRows","_paginatedRows","pageStart","pageEnd","reconstructedRows","flatRow","handleExpanded","hRow","vgt_id","originalRows","nestedRows","handleGrouped","j","hasRowClickListener","$listeners","toggleExpand","expandAll","collapseAll","resetTable","emitSelectedRows","unselectAllInternal","forceAll","_this8","paginationWidget","paginationBottom","paginationTop","pageChangedEvent","pagination","perPageChangedEvent","changeSort","onCheckboxClicked","pageIndex","onRowDoubleClicked","onRowClicked","onRowAuxClicked","onCellClicked","rowIndex","onMouseenter","onMouseleave","searchTableOnEnter","searchTableOnKeyUp","dig","splitter","headerField","formatFn","isHeaderRow","_this$typedColumns$in","_this9","fromFilter","_loop","newChildren","filterFn","getCurrentIndex","getRowStyleClass","rowStyleClasses","_this10","childRow","_this11","_this$paginationOptio","nextLabel","prevLabel","rowsPerPageLabel","ofLabel","pageLabel","allLabel","setCurrentPage","_perPageDropdown","_this$searchOptions","_this$sortOptions","hasField","_this$selectOptions","__vue_script__$6","__vue_render__$6","slot","table","__vue_staticRenderFns__$6","__vue_inject_styles__$6","__vue_scope_id__$6","__vue_module_identifier__$6","__vue_is_functional_template__$6","__vue_component__$6","VueGoodTablePlugin","notDisabled","BVTabButton","controls","noKeyNav","posInSet","setSize","handleEvt","_this$tab","titleItemClass","titleLinkClass","titleLinkAttributes","$link","activeNavItemClass","navProps","contentClass","navClass","navWrapperClass","noNavStyle","currentTab","registeredTabs","localNavClass","$tab","previousTab","updateTabs","$_observer","setObserver","disconnect","childList","subtree","attributeFilter","getTabs","$tabs","$children","getButtonForTab","$btn","$button","$forceUpdate","tabEvent","focusButton","emitTabClick","clickTab","lastTab","$activeTab","$fallbackTab","_on","refInFor","$nav","$empty","cardClosed","showLoading","_g","_b","content_visible","parentID","cardAttrs","$attrs","availableActions","triggerCollapse","triggerRefresh","triggerClose","BSpinner","slots","$label","POSITION_COVER","bgColor","fixed","noCenter","noWrap","opacity","overlayTag","rounded","spinnerSmall","spinnerType","spinnerVariant","wrapTag","zIndex","BOverlay","computedRounded","computedVariant","slotScope","defaultOverlayFn","$overlay","$background","backdropFilter","appear","includes","rotate","isCollapsed","requried","BCardActionsContainer","BCardTitle","BCardSubTitle","BCardBody","BCollapse","collapsed","noActions","actionCollapse","actionRefresh","actionClose","cardStyles","showHeader","showActions","allFalse","actions","random","removeCard"],"mappings":"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","file":"js/chunk-bf18c71c.83727e63.js","sourcesContent":["export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/@vue/cli-service/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!./invitationRequest.vue?vue&type=style&index=0&lang=scss&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('form-wizard',{ref:\"wizard\",staticClass:\"vertical-steps steps-transparent mb-3 friends-tables\",attrs:{\"color\":\"#9600ff\",\"title\":null,\"subtitle\":null,\"layout\":\"vertical\",\"finish-button-text\":\"Submit\",\"back-button-text\":\"Previous\"}},[_c('tab-content',{attrs:{\"title\":_vm.$t('Friends'),\"icon\":\"feather icon-users\"}},[_c('friends',{staticClass:\"mt-2 pt-75\"})],1),_c('tab-content',{attrs:{\"title\":_vm.$t('All_Users'),\"icon\":\"feather icon-user-plus\"}},[_c('all-users',{staticClass:\"mt-2 pt-75\"})],1),_c('tab-content',{attrs:{\"title\":_vm.$t('Invitation_request'),\"icon\":\"feather icon-user-check\"}},[_c('invitation-request',{staticClass:\"mt-2 pt-75\"})],1),_c('tab-content',{attrs:{\"title\":_vm.$t('Pending_invitations'),\"icon\":\"feather icon-user-x\"}},[_c('pending-invitation',{staticClass:\"mt-2 pt-75\"})],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"custom-search d-flex justify-content-start\"},[_c('span',{staticClass:\"btn-action-table\"},[_c('b-button',{staticClass:\"btn-icon\",attrs:{\"variant\":\"gradient-success\"},on:{\"click\":function($event){_vm.styleDisplay=false}}},[_c('feather-icon',{attrs:{\"icon\":\"ListIcon\"}})],1),_c('b-button',{staticClass:\"btn-icon\",attrs:{\"variant\":\"gradient-success\"},on:{\"click\":function($event){_vm.styleDisplay=true}}},[_c('feather-icon',{attrs:{\"icon\":\"CreditCardIcon\"}})],1)],1)]),(_vm.styleDisplay==false)?_c('all-users-table'):_vm._e(),(_vm.styleDisplay==true)?_c('all-users-cards'):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"custom-search d-flex justify-content-end\"},[_c('b-form-group',[_c('div',{staticClass:\"d-flex align-items-center\"},[_c('label',{staticClass:\"mr-1\"},[_vm._v(_vm._s(_vm.$t('Search')))]),_c('b-form-input',{staticClass:\"d-inline-block\",attrs:{\"placeholder\":\"Search\",\"type\":\"text\"},on:{\"input\":_vm.advanceSearch},model:{value:(_vm.searchTerm),callback:function ($$v) {_vm.searchTerm=$$v},expression:\"searchTerm\"}})],1)])],1),_c('vue-good-table',{attrs:{\"columns\":_vm.columns,\"rows\":_vm.rows,\"rtl\":_vm.direction,\"search-options\":{\n enabled: true,\n externalQuery: _vm.searchTerm,\n },\"select-options\":{\n enabled: false,\n },\"pagination-options\":{\n enabled: true,\n perPage: _vm.pageLength,\n }},scopedSlots:_vm._u([{key:\"table-row\",fn:function(props){return [(props.column.field === 'action')?_c('span',[_c('span',{staticClass:\"btn-action-table\"},[_c('b-button',{staticClass:\"btn-icon\",attrs:{\"variant\":\"gradient-danger\"},on:{\"click\":function($event){return _vm.deleteFriend(props.row._id)}}},[_c('feather-icon',{attrs:{\"icon\":\"UserMinusIcon\"}})],1)],1)]):_c('span',[_vm._v(\" \"+_vm._s(props.formattedRow[props.column.field])+\" \")])]}},{key:\"pagination-bottom\",fn:function(props){return [_c('div',{staticClass:\"d-flex justify-content-between flex-wrap\"},[_c('div',{staticClass:\"d-flex align-items-center mb-0 mt-1\"},[_c('span',{staticClass:\"text-nowrap\"},[_vm._v(\" Showing 1 to \")]),_c('b-form-select',{staticClass:\"mx-1\",attrs:{\"options\":['3', '5', '10']},on:{\"input\":function (value) { return props.perPageChanged({ currentPerPage: value }); }},model:{value:(_vm.pageLength),callback:function ($$v) {_vm.pageLength=$$v},expression:\"pageLength\"}}),_c('span',{staticClass:\"text-nowrap\"},[_vm._v(\" of \"+_vm._s(props.total)+\" entries \")])],1),_c('div',[_c('b-pagination',{staticClass:\"mt-1 mb-0\",attrs:{\"value\":1,\"total-rows\":props.total,\"per-page\":_vm.pageLength,\"first-number\":\"\",\"last-number\":\"\",\"align\":\"right\",\"prev-class\":\"prev-item\",\"next-class\":\"next-item\"},on:{\"input\":function (value) { return props.pageChanged({ currentPage: value }); }},scopedSlots:_vm._u([{key:\"prev-text\",fn:function(){return [_c('feather-icon',{attrs:{\"icon\":\"ChevronLeftIcon\",\"size\":\"18\"}})]},proxy:true},{key:\"next-text\",fn:function(){return [_c('feather-icon',{attrs:{\"icon\":\"ChevronRightIcon\",\"size\":\"18\"}})]},proxy:true}],null,true)})],1)])]}}])})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n\n \n \n \n \n \n {{ $t('Search') }}\n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n {{ props.formattedRow[props.column.field] }}\n \n \n \n \n \n \n Showing 1 to \n props.perPageChanged({ currentPerPage: value })\n \"\n />\n of {{ props.total }} entries \n \n \n props.pageChanged({ currentPage: value })\"\n >\n \n \n \n \n \n \n \n \n \n \n \n \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/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!./all-users-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/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!./all-users-table.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./all-users-table.vue?vue&type=template&id=1142a24c&\"\nimport script from \"./all-users-table.vue?vue&type=script&lang=js&\"\nexport * from \"./all-users-table.vue?vue&type=script&lang=js&\"\nimport style0 from \"./all-users-table.vue?vue&type=style&index=0&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 null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(_vm.rows.length==0)?_c('div',[_vm._v(\" \"+_vm._s(_vm.$t('No_users'))+\" \")]):_c('div',{staticClass:\"row\"},_vm._l((_vm.rows),function(person,index){return _c('div',{key:index,staticClass:\"col-md-3 col-sm-4 user-card-design-col\"},[_c('div',{staticClass:\"user-card-design\"},[_c('b-card',{staticClass:\"card-profile\",attrs:{\"img-src\":require('@/assets/images/banner/banner-12.jpg'),\"img-alt\":\"Profile Cover Photo\",\"img-top\":\"\"}},[_c('div',{staticClass:\"profile-image-wrapper\"},[_c('div',{staticClass:\"profile-image p-0\"},[_c('b-avatar',{attrs:{\"size\":\"80\",\"variant\":\"light-primary\"}},[_c('feather-icon',{attrs:{\"icon\":\"UserIcon\",\"size\":\"32\"}})],1)],1)]),_c('h3',{staticClass:\"pt-10\"},[_vm._v(_vm._s(person.to.name))]),(person.to.adresse)?_c('h6',{staticClass:\"text-muted\"},[_vm._v(_vm._s(person.to.adresse.country)+\" , \"+_vm._s(person.to.adresse.city))]):_c('h6',{staticClass:\"text-muted\"},[_vm._v(_vm._s(_vm.$t('No_adresse')))]),_c('h6',{staticClass:\"text-muted\"},[_vm._v(_vm._s(person.to.email))]),_c('hr',{staticClass:\"mb-2\"}),_c('div',{staticClass:\"d-flex justify-content-between align-items-center\"},[_c('div',[_c('h6',{staticClass:\"text-muted font-weight-bolder\"},[_vm._v(_vm._s(_vm.$t('Friends')))]),_c('h3',{staticClass:\"mb-0\"},[_vm._v(_vm._s(person.to.friendList.length || 0))])]),_c('div',[_c('h6',{staticClass:\"text-muted font-weight-bolder\"},[_vm._v(_vm._s(_vm.$t('Delete_friend')))]),_c('span',[_c('b-button',{staticClass:\"btn-icon\",attrs:{\"variant\":\"gradient-danger\"},on:{\"click\":function($event){return _vm.deleteFriend(person._id)}}},[_c('feather-icon',{attrs:{\"icon\":\"UserMinusIcon\"}})],1)],1)])])])],1)])}),0)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n \n {{ $t('No_users') }}\n \n \n \n \n \n \n \n \n \n \n \n \n {{person.to.name}}\n {{person.to.adresse.country}} , {{person.to.adresse.city}}\n {{ $t('No_adresse') }}\n {{person.to.email}}\n \n\n \n \n \n {{ $t('Friends') }}\n {{person.to.friendList.length || 0}}\n \n \n {{ $t('Delete_friend') }}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \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/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!./all-users-cards.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/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!./all-users-cards.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./all-users-cards.vue?vue&type=template&id=77be28ca&\"\nimport script from \"./all-users-cards.vue?vue&type=script&lang=js&\"\nexport * from \"./all-users-cards.vue?vue&type=script&lang=js&\"\nimport style0 from \"./all-users-cards.vue?vue&type=style&index=0&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 null,\n null\n \n)\n\nexport default component.exports","\n \n\n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n\n \n\n \n\n \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/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!./pendingInvitation.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/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!./pendingInvitation.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./pendingInvitation.vue?vue&type=template&id=e00f47f4&\"\nimport script from \"./pendingInvitation.vue?vue&type=script&lang=js&\"\nexport * from \"./pendingInvitation.vue?vue&type=script&lang=js&\"\nimport style0 from \"./pendingInvitation.vue?vue&type=style&index=0&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 null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"custom-search d-flex justify-content-start\"},[_c('span',{staticClass:\"btn-action-table\"},[_c('b-button',{staticClass:\"btn-icon\",attrs:{\"variant\":\"gradient-success\"},on:{\"click\":function($event){_vm.styleDisplay=false}}},[_c('feather-icon',{attrs:{\"icon\":\"ListIcon\"}})],1),_c('b-button',{staticClass:\"btn-icon\",attrs:{\"variant\":\"gradient-success\"},on:{\"click\":function($event){_vm.styleDisplay=true}}},[_c('feather-icon',{attrs:{\"icon\":\"CreditCardIcon\"}})],1)],1)]),(_vm.styleDisplay==false)?_c('all-users-table'):_vm._e(),(_vm.styleDisplay==true)?_c('all-users-cards'):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"custom-search d-flex justify-content-end\"},[_c('b-form-group',[_c('div',{staticClass:\"d-flex align-items-center\"},[_c('label',{staticClass:\"mr-1\"},[_vm._v(\"Search\")]),_c('b-form-input',{staticClass:\"d-inline-block\",attrs:{\"placeholder\":\"Search\",\"type\":\"text\"},on:{\"input\":_vm.advanceSearch},model:{value:(_vm.searchTerm),callback:function ($$v) {_vm.searchTerm=$$v},expression:\"searchTerm\"}})],1)])],1),_c('vue-good-table',{attrs:{\"columns\":_vm.columns,\"rows\":_vm.rows,\"rtl\":_vm.direction,\"search-options\":{\n enabled: true,\n externalQuery: _vm.searchTerm,\n },\"select-options\":{\n enabled: false,\n },\"pagination-options\":{\n enabled: true,\n perPage: _vm.pageLength,\n }},scopedSlots:_vm._u([{key:\"table-row\",fn:function(props){return [(props.column.field === 'action')?_c('span',[_c('span',{staticClass:\"btn-action-table\"},[_c('b-button',{staticClass:\"btn-icon\",attrs:{\"variant\":\"gradient-success\"},on:{\"click\":function($event){return _vm.addFriend(props.row._id)}}},[_c('feather-icon',{attrs:{\"icon\":\"UserPlusIcon\"}})],1)],1)]):(props.column.field === 'email')?_c('span',[(props.row.email)?_c('span',{staticClass:\"btn-action-table\"},[_vm._v(\" \"+_vm._s(props.row.email[0])+_vm._s(props.row.email[1])+\"*********\"+_vm._s(props.row.email[props.row.email.length-1])+\" \")]):_vm._e()]):(props.column.field === 'description')?_c('span',[(props.row.description)?_c('span',{staticClass:\"btn-action-table\"},[_vm._v(\" \"+_vm._s(props.row.description)+\" \")]):_c('span',{staticClass:\"btn-action-table\"},[_vm._v(\" No description yet \")])]):_c('span',[_vm._v(\" \"+_vm._s(props.formattedRow[props.column.field])+\" \")])]}},{key:\"pagination-bottom\",fn:function(props){return [_c('div',{staticClass:\"d-flex justify-content-between flex-wrap\"},[_c('div',{staticClass:\"d-flex align-items-center mb-0 mt-1\"},[_c('span',{staticClass:\"text-nowrap\"},[_vm._v(\" Showing 1 to \")]),_c('b-form-select',{staticClass:\"mx-1\",attrs:{\"options\":['3', '5', '10']},on:{\"input\":function (value) { return props.perPageChanged({ currentPerPage: value }); }},model:{value:(_vm.pageLength),callback:function ($$v) {_vm.pageLength=$$v},expression:\"pageLength\"}}),_c('span',{staticClass:\"text-nowrap\"},[_vm._v(\" of \"+_vm._s(props.total)+\" entries \")])],1),_c('div',[_c('b-pagination',{staticClass:\"mt-1 mb-0\",attrs:{\"value\":1,\"total-rows\":props.total,\"per-page\":_vm.pageLength,\"first-number\":\"\",\"last-number\":\"\",\"align\":\"right\",\"prev-class\":\"prev-item\",\"next-class\":\"next-item\"},on:{\"input\":function (value) { return props.pageChanged({ currentPage: value }); }},scopedSlots:_vm._u([{key:\"prev-text\",fn:function(){return [_c('feather-icon',{attrs:{\"icon\":\"ChevronLeftIcon\",\"size\":\"18\"}})]},proxy:true},{key:\"next-text\",fn:function(){return [_c('feather-icon',{attrs:{\"icon\":\"ChevronRightIcon\",\"size\":\"18\"}})]},proxy:true}],null,true)})],1)])]}}])})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n\n\n \n \n \n Search\n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n {{props.row.email[0]}}{{props.row.email[1]}}*********{{props.row.email[props.row.email.length-1]}}\n \n \n \n \n {{props.row.description}}\n \n \n No description yet\n \n \n \n \n {{ props.formattedRow[props.column.field] }}\n \n \n \n \n \n \n Showing 1 to \n props.perPageChanged({ currentPerPage: value })\n \"\n />\n of {{ props.total }} entries \n \n \n props.pageChanged({ currentPage: value })\"\n >\n \n \n \n \n \n \n \n \n \n \n \n \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/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!./all-users-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/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!./all-users-table.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./all-users-table.vue?vue&type=template&id=5f0f19a7&\"\nimport script from \"./all-users-table.vue?vue&type=script&lang=js&\"\nexport * from \"./all-users-table.vue?vue&type=script&lang=js&\"\nimport style0 from \"./all-users-table.vue?vue&type=style&index=0&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 null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(_vm.rows.length == 0)?_c('div',[_vm._v(\" \"+_vm._s(_vm.$t('No_users')))]):_c('div',{staticClass:\"row\"},_vm._l((_vm.rows),function(person,index){return _c('div',{key:index,staticClass:\"col-md-3 col-sm-4 user-card-design-col\"},[_c('div',{staticClass:\"user-card-design\"},[_c('b-card',{staticClass:\"card-profile\",attrs:{\"img-src\":require('@/assets/images/banner/banner-12.jpg'),\"img-alt\":\"Profile Cover Photo\",\"img-top\":\"\"}},[_c('div',{staticClass:\"profile-image-wrapper\"},[_c('div',{staticClass:\"profile-image p-0\"},[_c('b-avatar',{attrs:{\"size\":\"80\",\"variant\":\"light-primary\"}},[_c('feather-icon',{attrs:{\"icon\":\"UserIcon\",\"size\":\"32\"}})],1)],1)]),_c('h3',{staticClass:\"pt-10\"},[_vm._v(_vm._s(person.name))]),(person.adresse)?_c('h6',{staticClass:\"text-muted\"},[_vm._v(\" \"+_vm._s(person.adresse.country)+\" , \"+_vm._s(person.adresse.city)+\" \")]):_c('h6',{staticClass:\"text-muted\"},[_vm._v(_vm._s(_vm.$t('No_adresse')))]),_c('hr',{staticClass:\"mb-2\"}),_c('div',{staticClass:\"d-flex justify-content-between align-items-center\"},[_c('div',[_c('h6',{staticClass:\"text-muted font-weight-bolder\"},[_vm._v(_vm._s(_vm.$t('Friends')))]),_c('h3',{staticClass:\"mb-0\"},[_vm._v(_vm._s(person.friendList.length || 0))])]),_c('div',[_c('h6',{staticClass:\"text-muted font-weight-bolder\"},[_vm._v(_vm._s(_vm.$t('Add_friend')))]),_c('b-button',{staticClass:\"btn-icon\",attrs:{\"variant\":\"gradient-success\"},on:{\"click\":function($event){return _vm.addFriend(person._id)}}},[_c('feather-icon',{attrs:{\"icon\":\"UserPlusIcon\"}})],1)],1)])])],1)])}),0)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n {{ $t('No_users') }}\n \n \n \n \n \n \n \n \n \n \n \n {{ person.name }}\n \n {{ person.adresse.country }} , {{ person.adresse.city }}\n \n {{ $t('No_adresse') }}\n \n\n \n \n \n {{ $t('Friends') }}\n {{ person.friendList.length || 0 }}\n \n \n {{ $t('Add_friend') }}\n \n \n \n \n \n \n \n \n \n \n \n \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/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!./all-users-cards.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/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!./all-users-cards.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./all-users-cards.vue?vue&type=template&id=bd8b41d2&\"\nimport script from \"./all-users-cards.vue?vue&type=script&lang=js&\"\nexport * from \"./all-users-cards.vue?vue&type=script&lang=js&\"\nimport style0 from \"./all-users-cards.vue?vue&type=style&index=0&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 null,\n null\n \n)\n\nexport default component.exports","\n \n\n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n\n \n\n \n\n \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/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!./allUsers.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/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!./allUsers.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./allUsers.vue?vue&type=template&id=6b157c1e&\"\nimport script from \"./allUsers.vue?vue&type=script&lang=js&\"\nexport * from \"./allUsers.vue?vue&type=script&lang=js&\"\nimport style0 from \"./allUsers.vue?vue&type=style&index=0&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 null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"custom-search d-flex justify-content-start\"},[_c('span',{staticClass:\"btn-action-table\"},[_c('b-button',{staticClass:\"btn-icon\",attrs:{\"variant\":\"gradient-success\"},on:{\"click\":function($event){_vm.styleDisplay=false}}},[_c('feather-icon',{attrs:{\"icon\":\"ListIcon\"}})],1),_c('b-button',{staticClass:\"btn-icon\",attrs:{\"variant\":\"gradient-success\"},on:{\"click\":function($event){_vm.styleDisplay=true}}},[_c('feather-icon',{attrs:{\"icon\":\"CreditCardIcon\"}})],1)],1)]),(_vm.styleDisplay==false)?_c('all-users-table'):_vm._e(),(_vm.styleDisplay==true)?_c('all-users-cards'):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"custom-search d-flex justify-content-end\"},[_c('b-form-group',[_c('div',{staticClass:\"d-flex align-items-center\"},[_c('label',{staticClass:\"mr-1\"},[_vm._v(_vm._s(_vm.$t('Search')))]),_c('b-form-input',{staticClass:\"d-inline-block\",attrs:{\"placeholder\":\"Search\",\"type\":\"text\"},on:{\"input\":_vm.advanceSearch},model:{value:(_vm.searchTerm),callback:function ($$v) {_vm.searchTerm=$$v},expression:\"searchTerm\"}})],1)])],1),_c('vue-good-table',{attrs:{\"columns\":_vm.columns,\"rows\":_vm.rows,\"rtl\":_vm.direction,\"search-options\":{\n enabled: true,\n externalQuery: _vm.searchTerm,\n },\"select-options\":{\n enabled: false,\n },\"pagination-options\":{\n enabled: true,\n perPage: _vm.pageLength,\n }},scopedSlots:_vm._u([{key:\"table-row\",fn:function(props){return [(props.column.field === 'action')?_c('span',[_c('span',{staticClass:\"btn-action-table\"},[_c('b-button',{directives:[{name:\"ripple\",rawName:\"v-ripple.400\",value:('rgba(255, 255, 255, 0.15)'),expression:\"'rgba(255, 255, 255, 0.15)'\",modifiers:{\"400\":true}}],staticClass:\"btn-icon\",attrs:{\"variant\":\"success\"},on:{\"click\":function($event){return _vm.chatStart(props.row._id)}}},[_c('feather-icon',{attrs:{\"icon\":\"MessageSquareIcon\"}})],1),_c('b-button',{staticClass:\"btn-icon\",attrs:{\"variant\":\"gradient-danger\"},on:{\"click\":function($event){return _vm.deleteUserFriend(props.row._id)}}},[_c('feather-icon',{attrs:{\"icon\":\"TrashIcon\"}})],1)],1)]):_c('span',[_vm._v(\" \"+_vm._s(props.formattedRow[props.column.field])+\" \")])]}},{key:\"pagination-bottom\",fn:function(props){return [_c('div',{staticClass:\"d-flex justify-content-between flex-wrap\"},[_c('div',{staticClass:\"d-flex align-items-center mb-0 mt-1\"},[_c('span',{staticClass:\"text-nowrap\"},[_vm._v(\" Showing 1 to \")]),_c('b-form-select',{staticClass:\"mx-1\",attrs:{\"options\":['3', '5', '10']},on:{\"input\":function (value) { return props.perPageChanged({ currentPerPage: value }); }},model:{value:(_vm.pageLength),callback:function ($$v) {_vm.pageLength=$$v},expression:\"pageLength\"}}),_c('span',{staticClass:\"text-nowrap\"},[_vm._v(\" of \"+_vm._s(props.total)+\" entries \")])],1),_c('div',[_c('b-pagination',{staticClass:\"mt-1 mb-0\",attrs:{\"value\":1,\"total-rows\":props.total,\"per-page\":_vm.pageLength,\"first-number\":\"\",\"last-number\":\"\",\"align\":\"right\",\"prev-class\":\"prev-item\",\"next-class\":\"next-item\"},on:{\"input\":function (value) { return props.pageChanged({ currentPage: value }); }},scopedSlots:_vm._u([{key:\"prev-text\",fn:function(){return [_c('feather-icon',{attrs:{\"icon\":\"ChevronLeftIcon\",\"size\":\"18\"}})]},proxy:true},{key:\"next-text\",fn:function(){return [_c('feather-icon',{attrs:{\"icon\":\"ChevronRightIcon\",\"size\":\"18\"}})]},proxy:true}],null,true)})],1)])]}}])})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n\n \n \n \n \n \n {{ $t('Search') }}\n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n {{ props.formattedRow[props.column.field] }}\n \n \n \n \n \n \n Showing 1 to \n props.perPageChanged({ currentPerPage: value })\n \"\n />\n of {{ props.total }} entries \n \n \n props.pageChanged({ currentPage: value })\"\n >\n \n \n \n \n \n \n \n \n \n \n \n \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/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!./all-users-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/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!./all-users-table.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./all-users-table.vue?vue&type=template&id=637f492c&\"\nimport script from \"./all-users-table.vue?vue&type=script&lang=js&\"\nexport * from \"./all-users-table.vue?vue&type=script&lang=js&\"\nimport style0 from \"./all-users-table.vue?vue&type=style&index=0&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 null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(_vm.rows.length == 0)?_c('div',[_vm._v(_vm._s(_vm.$t('No_users')))]):_c('div',{staticClass:\"row\"},_vm._l((_vm.rows),function(person,index){return _c('div',{key:index,staticClass:\"col-md-3 col-sm-4 user-card-design-col\"},[_c('div',{staticClass:\"user-card-design\"},[_c('b-card',{staticClass:\"card-profile\",attrs:{\"img-src\":require('@/assets/images/banner/banner-12.jpg'),\"img-alt\":\"Profile Cover Photo\",\"img-top\":\"\"}},[_c('div',{staticClass:\"profile-image-wrapper\"},[_c('div',{staticClass:\"profile-image p-0\"},[_c('b-avatar',{attrs:{\"size\":\"80\",\"variant\":\"light-primary\"}},[_c('feather-icon',{attrs:{\"icon\":\"UserIcon\",\"size\":\"32\"}})],1)],1)]),_c('h3',{staticClass:\"pt-10\"},[_vm._v(_vm._s(person.name))]),(person.adresse)?_c('h6',{staticClass:\"text-muted\"},[_vm._v(\" \"+_vm._s(person.adresse.country)+\", \"+_vm._s(person.adresse.city)+\" \")]):_c('h6',{staticClass:\"text-muted\"},[_vm._v(_vm._s(_vm.$t('No_adresse')))]),_c('h6',{staticClass:\"text-muted\"},[_vm._v(_vm._s(person.email))]),_c('hr',{staticClass:\"mb-2\"}),_c('div',{staticClass:\"d-flex justify-content-between align-items-center\"},[_c('div',[_c('h6',{staticClass:\"text-muted font-weight-bolder\"},[_vm._v(_vm._s(_vm.$t('Add_friend')))]),_c('b-button',{directives:[{name:\"ripple\",rawName:\"v-ripple.400\",value:('rgba(255, 255, 255, 0.15)'),expression:\"'rgba(255, 255, 255, 0.15)'\",modifiers:{\"400\":true}}],staticClass:\"btn-icon\",attrs:{\"variant\":\"success\"},on:{\"click\":function($event){return _vm.chatStart(person._id)}}},[_c('feather-icon',{attrs:{\"icon\":\"MessageSquareIcon\"}})],1)],1),_c('div',[_c('h6',{staticClass:\"text-muted font-weight-bolder\"},[_vm._v(_vm._s(_vm.$t('Delete_friend')))]),_c('b-button',{staticClass:\"btn-icon\",attrs:{\"variant\":\"gradient-danger\"},on:{\"click\":function($event){return _vm.deleteUserFriend(person._id)}}},[_c('feather-icon',{attrs:{\"icon\":\"TrashIcon\"}})],1)],1)])])],1)])}),0)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n {{ $t('No_users') }}\n\n \n \n \n \n \n \n \n \n \n \n {{ person.name }}\n \n {{ person.adresse.country }}, {{ person.adresse.city }}\n \n {{ $t('No_adresse') }}\n {{ person.email }}\n \n\n \n \n \n {{ $t('Add_friend') }}\n \n \n \n \n \n {{ $t('Delete_friend') }}\n\n \n \n\n \n \n \n \n \n \n \n \n\n\n \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/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!./all-users-cards.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/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!./all-users-cards.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./all-users-cards.vue?vue&type=template&id=65000b1a&\"\nimport script from \"./all-users-cards.vue?vue&type=script&lang=js&\"\nexport * from \"./all-users-cards.vue?vue&type=script&lang=js&\"\nimport style0 from \"./all-users-cards.vue?vue&type=style&index=0&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 null,\n null\n \n)\n\nexport default component.exports","\n \n\n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n\n \n\n \n\n \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/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!./friends.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/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!./friends.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./friends.vue?vue&type=template&id=5c7815cb&\"\nimport script from \"./friends.vue?vue&type=script&lang=js&\"\nexport * from \"./friends.vue?vue&type=script&lang=js&\"\nimport style0 from \"./friends.vue?vue&type=style&index=0&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 null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"custom-search d-flex justify-content-start\"},[_c('span',{staticClass:\"btn-action-table\"},[_c('b-button',{staticClass:\"btn-icon\",attrs:{\"variant\":\"gradient-success\"},on:{\"click\":function($event){_vm.styleDisplay=false}}},[_c('feather-icon',{attrs:{\"icon\":\"ListIcon\"}})],1),_c('b-button',{staticClass:\"btn-icon\",attrs:{\"variant\":\"gradient-success\"},on:{\"click\":function($event){_vm.styleDisplay=true}}},[_c('feather-icon',{attrs:{\"icon\":\"CreditCardIcon\"}})],1)],1)]),(_vm.styleDisplay==false)?_c('all-users-table'):_vm._e(),(_vm.styleDisplay==true)?_c('all-users-cards'):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"custom-search d-flex justify-content-end\"},[_c('b-form-group',[_c('div',{staticClass:\"d-flex align-items-center\"},[_c('label',{staticClass:\"mr-1\"},[_vm._v(_vm._s(_vm.$t('Search')))]),_c('b-form-input',{staticClass:\"d-inline-block\",attrs:{\"placeholder\":\"Search\",\"type\":\"text\"},on:{\"input\":_vm.advanceSearch},model:{value:(_vm.searchTerm),callback:function ($$v) {_vm.searchTerm=$$v},expression:\"searchTerm\"}})],1)])],1),_c('vue-good-table',{attrs:{\"columns\":_vm.columns,\"rows\":_vm.rows,\"rtl\":_vm.direction,\"search-options\":{\n enabled: true,\n externalQuery: _vm.searchTerm,\n },\"select-options\":{\n enabled: false,\n },\"pagination-options\":{\n enabled: true,\n perPage: _vm.pageLength,\n }},scopedSlots:_vm._u([{key:\"table-row\",fn:function(props){return [(props.column.field === 'action')?_c('span',[_c('span',{staticClass:\"btn-action-table\"},[_c('b-button',{staticClass:\"btn-icon\",attrs:{\"variant\":\"gradient-success\"},on:{\"click\":function($event){return _vm.addFriend(props.row)}}},[_c('feather-icon',{attrs:{\"icon\":\"UserPlusIcon\"}})],1),_c('b-button',{staticClass:\"btn-icon\",attrs:{\"variant\":\"gradient-danger\"},on:{\"click\":function($event){return _vm.deleteFriend(props.row._id)}}},[_c('feather-icon',{attrs:{\"icon\":\"UserMinusIcon\"}})],1)],1)]):_c('span',[_vm._v(\" \"+_vm._s(props.formattedRow[props.column.field])+\" \")])]}},{key:\"pagination-bottom\",fn:function(props){return [_c('div',{staticClass:\"d-flex justify-content-between flex-wrap\"},[_c('div',{staticClass:\"d-flex align-items-center mb-0 mt-1\"},[_c('span',{staticClass:\"text-nowrap\"},[_vm._v(\" Showing 1 to \")]),_c('b-form-select',{staticClass:\"mx-1\",attrs:{\"options\":['3', '5', '10']},on:{\"input\":function (value) { return props.perPageChanged({ currentPerPage: value }); }},model:{value:(_vm.pageLength),callback:function ($$v) {_vm.pageLength=$$v},expression:\"pageLength\"}}),_c('span',{staticClass:\"text-nowrap\"},[_vm._v(\" of \"+_vm._s(props.total)+\" entries \")])],1),_c('div',[_c('b-pagination',{staticClass:\"mt-1 mb-0\",attrs:{\"value\":1,\"total-rows\":props.total,\"per-page\":_vm.pageLength,\"first-number\":\"\",\"last-number\":\"\",\"align\":\"right\",\"prev-class\":\"prev-item\",\"next-class\":\"next-item\"},on:{\"input\":function (value) { return props.pageChanged({ currentPage: value }); }},scopedSlots:_vm._u([{key:\"prev-text\",fn:function(){return [_c('feather-icon',{attrs:{\"icon\":\"ChevronLeftIcon\",\"size\":\"18\"}})]},proxy:true},{key:\"next-text\",fn:function(){return [_c('feather-icon',{attrs:{\"icon\":\"ChevronRightIcon\",\"size\":\"18\"}})]},proxy:true}],null,true)})],1)])]}}])})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n\n \n \n \n \n \n {{ $t('Search') }}\n \n \n \n \n\n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n {{ props.formattedRow[props.column.field] }}\n \n \n \n \n \n \n Showing 1 to \n props.perPageChanged({ currentPerPage: value })\n \"\n />\n of {{ props.total }} entries \n \n \n props.pageChanged({ currentPage: value })\"\n >\n \n \n \n \n \n \n \n \n \n \n \n \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/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!./all-users-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/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!./all-users-table.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./all-users-table.vue?vue&type=template&id=4804ce70&\"\nimport script from \"./all-users-table.vue?vue&type=script&lang=js&\"\nexport * from \"./all-users-table.vue?vue&type=script&lang=js&\"\nimport style0 from \"./all-users-table.vue?vue&type=style&index=0&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 null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(_vm.rows.length==0)?_c('div',[_vm._v(\" \"+_vm._s(_vm.$t('No_users'))+\" \")]):_c('div',{staticClass:\"row\"},_vm._l((_vm.rows),function(person,index){return _c('div',{key:index,staticClass:\"col-md-3 col-sm-4 user-card-design-col\"},[_c('div',{staticClass:\"user-card-design\"},[_c('b-card',{staticClass:\"card-profile\",attrs:{\"img-src\":require('@/assets/images/banner/banner-12.jpg'),\"img-alt\":\"Profile Cover Photo\",\"img-top\":\"\"}},[_c('div',{staticClass:\"profile-image-wrapper\"},[_c('div',{staticClass:\"profile-image p-0\"},[_c('b-avatar',{attrs:{\"size\":\"80\",\"variant\":\"light-primary\"}},[_c('feather-icon',{attrs:{\"icon\":\"UserIcon\",\"size\":\"32\"}})],1)],1)]),_c('h3',{staticClass:\"pt-10\"},[_vm._v(_vm._s(person.from.name))]),(person.from.adresse)?_c('h6',{staticClass:\"text-muted\"},[_vm._v(_vm._s(person.from.adresse.country)+\" , \"+_vm._s(person.from.adresse.city))]):_c('h6',{staticClass:\"text-muted\"},[_vm._v(\"No adresse\")]),_c('h6',{staticClass:\"text-muted\"},[_vm._v(_vm._s(person.from.email))]),_c('hr',{staticClass:\"mb-2\"}),_c('div',{staticClass:\"d-flex justify-content-between align-items-center\"},[_c('div',[_c('h6',{staticClass:\"text-muted font-weight-bolder\"},[_vm._v(_vm._s(_vm.$t('Add_friend')))]),_c('b-button',{staticClass:\"btn-icon\",attrs:{\"variant\":\"gradient-success\"},on:{\"click\":function($event){return _vm.addFriend(person)}}},[_c('feather-icon',{attrs:{\"icon\":\"UserPlusIcon\"}})],1)],1),_c('div',[_c('h6',{staticClass:\"text-muted font-weight-bolder\"},[_vm._v(_vm._s(_vm.$t('Delete_friend')))]),_c('b-button',{staticClass:\"btn-icon\",attrs:{\"variant\":\"gradient-danger\"},on:{\"click\":function($event){return _vm.deleteFriend(person._id)}}},[_c('feather-icon',{attrs:{\"icon\":\"UserMinusIcon\"}})],1)],1)])])],1)])}),0)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n \n {{ $t('No_users') }}\n \n \n \n \n \n \n \n \n \n \n \n \n {{person.from.name}}\n {{person.from.adresse.country}} , {{person.from.adresse.city}}\n No adresse\n {{person.from.email}}\n \n\n \n \n \n {{ $t('Add_friend') }}\n \n \n \n \n\n \n \n {{ $t('Delete_friend') }}\n \n \n \n \n \n \n \n \n \n \n \n \n \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/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!./all-users-cards.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/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!./all-users-cards.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./all-users-cards.vue?vue&type=template&id=61204a5d&\"\nimport script from \"./all-users-cards.vue?vue&type=script&lang=js&\"\nexport * from \"./all-users-cards.vue?vue&type=script&lang=js&\"\nimport style0 from \"./all-users-cards.vue?vue&type=style&index=0&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 null,\n null\n \n)\n\nexport default component.exports","\n \n\n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n\n \n\n \n\n \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/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!./invitationRequest.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/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!./invitationRequest.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./invitationRequest.vue?vue&type=template&id=9a8b275c&\"\nimport script from \"./invitationRequest.vue?vue&type=script&lang=js&\"\nexport * from \"./invitationRequest.vue?vue&type=script&lang=js&\"\nimport style0 from \"./invitationRequest.vue?vue&type=style&index=0&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 null,\n null\n \n)\n\nexport default component.exports","\n\n\n \n \n \n \n \n \n\n \n \n \n \n \n \n \n\n \n \n \n \n \n\n\n \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/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!./friends.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/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!./friends.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./friends.vue?vue&type=template&id=4f94db56&\"\nimport script from \"./friends.vue?vue&type=script&lang=js&\"\nexport * from \"./friends.vue?vue&type=script&lang=js&\"\nimport style0 from \"./friends.vue?vue&type=style&index=0&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 null,\n null\n \n)\n\nexport default component.exports","function webpackEmptyContext(req) {\n\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\te.code = 'MODULE_NOT_FOUND';\n\tthrow e;\n}\nwebpackEmptyContext.keys = function() { return []; };\nwebpackEmptyContext.resolve = webpackEmptyContext;\nmodule.exports = webpackEmptyContext;\nwebpackEmptyContext.id = \"0a32\";","import { Vue } from '../vue';\nimport { PROP_TYPE_ARRAY_OBJECT, PROP_TYPE_STRING } from '../constants/props';\nimport { get } from '../utils/get';\nimport { stripTags } from '../utils/html';\nimport { isArray, isPlainObject, isUndefined } from '../utils/inspect';\nimport { keys } from '../utils/object';\nimport { makeProp, makePropsConfigurable } from '../utils/props';\nimport { warn } from '../utils/warn'; // --- Constants ---\n\nvar OPTIONS_OBJECT_DEPRECATED_MSG = 'Setting prop \"options\" to an object is deprecated. Use the array format instead.'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n disabledField: makeProp(PROP_TYPE_STRING, 'disabled'),\n htmlField: makeProp(PROP_TYPE_STRING, 'html'),\n options: makeProp(PROP_TYPE_ARRAY_OBJECT, []),\n textField: makeProp(PROP_TYPE_STRING, 'text'),\n valueField: makeProp(PROP_TYPE_STRING, 'value')\n}, 'formOptionControls'); // --- Mixin ---\n// @vue/component\n\nexport var formOptionsMixin = Vue.extend({\n props: props,\n computed: {\n formOptions: function formOptions() {\n return this.normalizeOptions(this.options);\n }\n },\n methods: {\n normalizeOption: function normalizeOption(option) {\n var key = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n // When the option is an object, normalize it\n if (isPlainObject(option)) {\n var value = get(option, this.valueField);\n var text = get(option, this.textField);\n return {\n value: isUndefined(value) ? key || text : value,\n text: stripTags(String(isUndefined(text) ? key : text)),\n html: get(option, this.htmlField),\n disabled: Boolean(get(option, this.disabledField))\n };\n } // Otherwise create an `` object from the given value\n\n\n return {\n value: key || option,\n text: stripTags(String(option)),\n disabled: false\n };\n },\n normalizeOptions: function normalizeOptions(options) {\n var _this = this;\n\n // Normalize the given options array\n if (isArray(options)) {\n return options.map(function (option) {\n return _this.normalizeOption(option);\n });\n } else if (isPlainObject(options)) {\n // Deprecate the object options format\n warn(OPTIONS_OBJECT_DEPRECATED_MSG, this.$options.name); // Normalize a `options` object to an array of options\n\n return keys(options).map(function (key) {\n return _this.normalizeOption(options[key] || {}, key);\n });\n } // If not an array or object, return an empty array\n\n /* istanbul ignore next */\n\n\n return [];\n }\n }\n});","import { Vue, mergeData } from '../../vue';\nimport { NAME_FORM } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n id: makeProp(PROP_TYPE_STRING),\n inline: makeProp(PROP_TYPE_BOOLEAN, false),\n novalidate: makeProp(PROP_TYPE_BOOLEAN, false),\n validated: makeProp(PROP_TYPE_BOOLEAN, false)\n}, NAME_FORM); // --- Main component ---\n// @vue/component\n\nexport var BForm = /*#__PURE__*/Vue.extend({\n name: NAME_FORM,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n return h('form', mergeData(data, {\n class: {\n 'form-inline': props.inline,\n 'was-validated': props.validated\n },\n attrs: {\n id: props.id,\n novalidate: props.novalidate\n }\n }), children);\n }\n});","function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue, mergeData } from '../../vue';\nimport { NAME_CONTAINER } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n // String breakpoint name new in Bootstrap v4.4.x\n fluid: makeProp(PROP_TYPE_BOOLEAN_STRING, false),\n tag: makeProp(PROP_TYPE_STRING, 'div')\n}, NAME_CONTAINER); // --- Main component ---\n// @vue/component\n\nexport var BContainer = /*#__PURE__*/Vue.extend({\n name: NAME_CONTAINER,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var fluid = props.fluid;\n return h(props.tag, mergeData(data, {\n class: _defineProperty({\n container: !(fluid || fluid === ''),\n 'container-fluid': fluid === true || fluid === ''\n }, \"container-\".concat(fluid), fluid && fluid !== true)\n }), children);\n }\n});","var _watch;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../vue';\nimport { NAME_PAGINATION } from '../constants/components';\nimport { CODE_DOWN, CODE_LEFT, CODE_RIGHT, CODE_SPACE, CODE_UP } from '../constants/key-codes';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_BOOLEAN, PROP_TYPE_BOOLEAN_NUMBER_STRING, PROP_TYPE_FUNCTION_STRING, PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING } from '../constants/props';\nimport { SLOT_NAME_ELLIPSIS_TEXT, SLOT_NAME_FIRST_TEXT, SLOT_NAME_LAST_TEXT, SLOT_NAME_NEXT_TEXT, SLOT_NAME_PAGE, SLOT_NAME_PREV_TEXT } from '../constants/slots';\nimport { createArray } from '../utils/array';\nimport { attemptFocus, getActiveElement, getAttr, isDisabled, isVisible, selectAll } from '../utils/dom';\nimport { stopEvent } from '../utils/events';\nimport { isFunction, isNull } from '../utils/inspect';\nimport { mathFloor, mathMax, mathMin } from '../utils/math';\nimport { makeModelMixin } from '../utils/model';\nimport { toInteger } from '../utils/number';\nimport { sortKeys } from '../utils/object';\nimport { hasPropFunction, makeProp, makePropsConfigurable } from '../utils/props';\nimport { toString } from '../utils/string';\nimport { warn } from '../utils/warn';\nimport { normalizeSlotMixin } from '../mixins/normalize-slot';\nimport { BLink } from '../components/link/link'; // Common props, computed, data, render function, and methods\n// for `` and ``\n// --- Constants ---\n\nvar _makeModelMixin = makeModelMixin('value', {\n type: PROP_TYPE_BOOLEAN_NUMBER_STRING,\n defaultValue: null,\n\n /* istanbul ignore next */\n validator: function validator(value) {\n if (!isNull(value) && toInteger(value, 0) < 1) {\n warn('\"v-model\" value must be a number greater than \"0\"', NAME_PAGINATION);\n return false;\n }\n\n return true;\n }\n}),\n modelMixin = _makeModelMixin.mixin,\n modelProps = _makeModelMixin.props,\n MODEL_PROP_NAME = _makeModelMixin.prop,\n MODEL_EVENT_NAME = _makeModelMixin.event;\n\nexport { MODEL_PROP_NAME, MODEL_EVENT_NAME }; // Threshold of limit size when we start/stop showing ellipsis\n\nvar ELLIPSIS_THRESHOLD = 3; // Default # of buttons limit\n\nvar DEFAULT_LIMIT = 5; // --- Helper methods ---\n// Make an array of N to N+X\n\nvar makePageArray = function makePageArray(startNumber, numberOfPages) {\n return createArray(numberOfPages, function (_, i) {\n return {\n number: startNumber + i,\n classes: null\n };\n });\n}; // Sanitize the provided limit value (converting to a number)\n\n\nvar sanitizeLimit = function sanitizeLimit(value) {\n var limit = toInteger(value) || 1;\n return limit < 1 ? DEFAULT_LIMIT : limit;\n}; // Sanitize the provided current page number (converting to a number)\n\n\nvar sanitizeCurrentPage = function sanitizeCurrentPage(val, numberOfPages) {\n var page = toInteger(val) || 1;\n return page > numberOfPages ? numberOfPages : page < 1 ? 1 : page;\n}; // Links don't normally respond to SPACE, so we add that\n// functionality via this handler\n\n\nvar onSpaceKey = function onSpaceKey(event) {\n if (event.keyCode === CODE_SPACE) {\n // Stop page from scrolling\n stopEvent(event, {\n immediatePropagation: true\n }); // Trigger the click event on the link\n\n event.currentTarget.click();\n return false;\n }\n}; // --- Props ---\n\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, modelProps), {}, {\n align: makeProp(PROP_TYPE_STRING, 'left'),\n ariaLabel: makeProp(PROP_TYPE_STRING, 'Pagination'),\n disabled: makeProp(PROP_TYPE_BOOLEAN, false),\n ellipsisClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n ellipsisText: makeProp(PROP_TYPE_STRING, \"\\u2026\"),\n // '…'\n firstClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n firstNumber: makeProp(PROP_TYPE_BOOLEAN, false),\n firstText: makeProp(PROP_TYPE_STRING, \"\\xAB\"),\n // '«'\n hideEllipsis: makeProp(PROP_TYPE_BOOLEAN, false),\n hideGotoEndButtons: makeProp(PROP_TYPE_BOOLEAN, false),\n labelFirstPage: makeProp(PROP_TYPE_STRING, 'Go to first page'),\n labelLastPage: makeProp(PROP_TYPE_STRING, 'Go to last page'),\n labelNextPage: makeProp(PROP_TYPE_STRING, 'Go to next page'),\n labelPage: makeProp(PROP_TYPE_FUNCTION_STRING, 'Go to page'),\n labelPrevPage: makeProp(PROP_TYPE_STRING, 'Go to previous page'),\n lastClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n lastNumber: makeProp(PROP_TYPE_BOOLEAN, false),\n lastText: makeProp(PROP_TYPE_STRING, \"\\xBB\"),\n // '»'\n limit: makeProp(PROP_TYPE_NUMBER_STRING, DEFAULT_LIMIT,\n /* istanbul ignore next */\n function (value) {\n if (toInteger(value, 0) < 1) {\n warn('Prop \"limit\" must be a number greater than \"0\"', NAME_PAGINATION);\n return false;\n }\n\n return true;\n }),\n nextClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n nextText: makeProp(PROP_TYPE_STRING, \"\\u203A\"),\n // '›'\n pageClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n pills: makeProp(PROP_TYPE_BOOLEAN, false),\n prevClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n prevText: makeProp(PROP_TYPE_STRING, \"\\u2039\"),\n // '‹'\n size: makeProp(PROP_TYPE_STRING)\n})), 'pagination'); // --- Mixin ---\n// @vue/component\n\nexport var paginationMixin = Vue.extend({\n mixins: [modelMixin, normalizeSlotMixin],\n props: props,\n data: function data() {\n // `-1` signifies no page initially selected\n var currentPage = toInteger(this[MODEL_PROP_NAME], 0);\n currentPage = currentPage > 0 ? currentPage : -1;\n return {\n currentPage: currentPage,\n localNumberOfPages: 1,\n localLimit: DEFAULT_LIMIT\n };\n },\n computed: {\n btnSize: function btnSize() {\n var size = this.size;\n return size ? \"pagination-\".concat(size) : '';\n },\n alignment: function alignment() {\n var align = this.align;\n\n if (align === 'center') {\n return 'justify-content-center';\n } else if (align === 'end' || align === 'right') {\n return 'justify-content-end';\n } else if (align === 'fill') {\n // The page-items will also have 'flex-fill' added\n // We add text centering to make the button appearance better in fill mode\n return 'text-center';\n }\n\n return '';\n },\n styleClass: function styleClass() {\n return this.pills ? 'b-pagination-pills' : '';\n },\n computedCurrentPage: function computedCurrentPage() {\n return sanitizeCurrentPage(this.currentPage, this.localNumberOfPages);\n },\n paginationParams: function paginationParams() {\n // Determine if we should show the the ellipsis\n var limit = this.localLimit,\n numberOfPages = this.localNumberOfPages,\n currentPage = this.computedCurrentPage,\n hideEllipsis = this.hideEllipsis,\n firstNumber = this.firstNumber,\n lastNumber = this.lastNumber;\n var showFirstDots = false;\n var showLastDots = false;\n var numberOfLinks = limit;\n var startNumber = 1;\n\n if (numberOfPages <= limit) {\n // Special case: Less pages available than the limit of displayed pages\n numberOfLinks = numberOfPages;\n } else if (currentPage < limit - 1 && limit > ELLIPSIS_THRESHOLD) {\n if (!hideEllipsis || lastNumber) {\n showLastDots = true;\n numberOfLinks = limit - (firstNumber ? 0 : 1);\n }\n\n numberOfLinks = mathMin(numberOfLinks, limit);\n } else if (numberOfPages - currentPage + 2 < limit && limit > ELLIPSIS_THRESHOLD) {\n if (!hideEllipsis || firstNumber) {\n showFirstDots = true;\n numberOfLinks = limit - (lastNumber ? 0 : 1);\n }\n\n startNumber = numberOfPages - numberOfLinks + 1;\n } else {\n // We are somewhere in the middle of the page list\n if (limit > ELLIPSIS_THRESHOLD) {\n numberOfLinks = limit - (hideEllipsis ? 0 : 2);\n showFirstDots = !!(!hideEllipsis || firstNumber);\n showLastDots = !!(!hideEllipsis || lastNumber);\n }\n\n startNumber = currentPage - mathFloor(numberOfLinks / 2);\n } // Sanity checks\n\n /* istanbul ignore if */\n\n\n if (startNumber < 1) {\n startNumber = 1;\n showFirstDots = false;\n } else if (startNumber > numberOfPages - numberOfLinks) {\n startNumber = numberOfPages - numberOfLinks + 1;\n showLastDots = false;\n }\n\n if (showFirstDots && firstNumber && startNumber < 4) {\n numberOfLinks = numberOfLinks + 2;\n startNumber = 1;\n showFirstDots = false;\n }\n\n var lastPageNumber = startNumber + numberOfLinks - 1;\n\n if (showLastDots && lastNumber && lastPageNumber > numberOfPages - 3) {\n numberOfLinks = numberOfLinks + (lastPageNumber === numberOfPages - 2 ? 2 : 3);\n showLastDots = false;\n } // Special handling for lower limits (where ellipsis are never shown)\n\n\n if (limit <= ELLIPSIS_THRESHOLD) {\n if (firstNumber && startNumber === 1) {\n numberOfLinks = mathMin(numberOfLinks + 1, numberOfPages, limit + 1);\n } else if (lastNumber && numberOfPages === startNumber + numberOfLinks - 1) {\n startNumber = mathMax(startNumber - 1, 1);\n numberOfLinks = mathMin(numberOfPages - startNumber + 1, numberOfPages, limit + 1);\n }\n }\n\n numberOfLinks = mathMin(numberOfLinks, numberOfPages - startNumber + 1);\n return {\n showFirstDots: showFirstDots,\n showLastDots: showLastDots,\n numberOfLinks: numberOfLinks,\n startNumber: startNumber\n };\n },\n pageList: function pageList() {\n // Generates the pageList array\n var _this$paginationParam = this.paginationParams,\n numberOfLinks = _this$paginationParam.numberOfLinks,\n startNumber = _this$paginationParam.startNumber;\n var currentPage = this.computedCurrentPage; // Generate list of page numbers\n\n var pages = makePageArray(startNumber, numberOfLinks); // We limit to a total of 3 page buttons on XS screens\n // So add classes to page links to hide them for XS breakpoint\n // Note: Ellipsis will also be hidden on XS screens\n // TODO: Make this visual limit configurable based on breakpoint(s)\n\n if (pages.length > 3) {\n var idx = currentPage - startNumber; // THe following is a bootstrap-vue custom utility class\n\n var classes = 'bv-d-xs-down-none';\n\n if (idx === 0) {\n // Keep leftmost 3 buttons visible when current page is first page\n for (var i = 3; i < pages.length; i++) {\n pages[i].classes = classes;\n }\n } else if (idx === pages.length - 1) {\n // Keep rightmost 3 buttons visible when current page is last page\n for (var _i = 0; _i < pages.length - 3; _i++) {\n pages[_i].classes = classes;\n }\n } else {\n // Hide all except current page, current page - 1 and current page + 1\n for (var _i2 = 0; _i2 < idx - 1; _i2++) {\n // hide some left button(s)\n pages[_i2].classes = classes;\n }\n\n for (var _i3 = pages.length - 1; _i3 > idx + 1; _i3--) {\n // hide some right button(s)\n pages[_i3].classes = classes;\n }\n }\n }\n\n return pages;\n }\n },\n watch: (_watch = {}, _defineProperty(_watch, MODEL_PROP_NAME, function (newValue, oldValue) {\n if (newValue !== oldValue) {\n this.currentPage = sanitizeCurrentPage(newValue, this.localNumberOfPages);\n }\n }), _defineProperty(_watch, \"currentPage\", function currentPage(newValue, oldValue) {\n if (newValue !== oldValue) {\n // Emit `null` if no page selected\n this.$emit(MODEL_EVENT_NAME, newValue > 0 ? newValue : null);\n }\n }), _defineProperty(_watch, \"limit\", function limit(newValue, oldValue) {\n if (newValue !== oldValue) {\n this.localLimit = sanitizeLimit(newValue);\n }\n }), _watch),\n created: function created() {\n var _this = this;\n\n // Set our default values in data\n this.localLimit = sanitizeLimit(this.limit);\n this.$nextTick(function () {\n // Sanity check\n _this.currentPage = _this.currentPage > _this.localNumberOfPages ? _this.localNumberOfPages : _this.currentPage;\n });\n },\n methods: {\n handleKeyNav: function handleKeyNav(event) {\n var keyCode = event.keyCode,\n shiftKey = event.shiftKey;\n /* istanbul ignore if */\n\n if (this.isNav) {\n // We disable left/right keyboard navigation in ``\n return;\n }\n\n if (keyCode === CODE_LEFT || keyCode === CODE_UP) {\n stopEvent(event, {\n propagation: false\n });\n shiftKey ? this.focusFirst() : this.focusPrev();\n } else if (keyCode === CODE_RIGHT || keyCode === CODE_DOWN) {\n stopEvent(event, {\n propagation: false\n });\n shiftKey ? this.focusLast() : this.focusNext();\n }\n },\n getButtons: function getButtons() {\n // Return only buttons that are visible\n return selectAll('button.page-link, a.page-link', this.$el).filter(function (btn) {\n return isVisible(btn);\n });\n },\n focusCurrent: function focusCurrent() {\n var _this2 = this;\n\n // We do this in `$nextTick()` to ensure buttons have finished rendering\n this.$nextTick(function () {\n var btn = _this2.getButtons().find(function (el) {\n return toInteger(getAttr(el, 'aria-posinset'), 0) === _this2.computedCurrentPage;\n });\n\n if (!attemptFocus(btn)) {\n // Fallback if current page is not in button list\n _this2.focusFirst();\n }\n });\n },\n focusFirst: function focusFirst() {\n var _this3 = this;\n\n // We do this in `$nextTick()` to ensure buttons have finished rendering\n this.$nextTick(function () {\n var btn = _this3.getButtons().find(function (el) {\n return !isDisabled(el);\n });\n\n attemptFocus(btn);\n });\n },\n focusLast: function focusLast() {\n var _this4 = this;\n\n // We do this in `$nextTick()` to ensure buttons have finished rendering\n this.$nextTick(function () {\n var btn = _this4.getButtons().reverse().find(function (el) {\n return !isDisabled(el);\n });\n\n attemptFocus(btn);\n });\n },\n focusPrev: function focusPrev() {\n var _this5 = this;\n\n // We do this in `$nextTick()` to ensure buttons have finished rendering\n this.$nextTick(function () {\n var buttons = _this5.getButtons();\n\n var index = buttons.indexOf(getActiveElement());\n\n if (index > 0 && !isDisabled(buttons[index - 1])) {\n attemptFocus(buttons[index - 1]);\n }\n });\n },\n focusNext: function focusNext() {\n var _this6 = this;\n\n // We do this in `$nextTick()` to ensure buttons have finished rendering\n this.$nextTick(function () {\n var buttons = _this6.getButtons();\n\n var index = buttons.indexOf(getActiveElement());\n\n if (index < buttons.length - 1 && !isDisabled(buttons[index + 1])) {\n attemptFocus(buttons[index + 1]);\n }\n });\n }\n },\n render: function render(h) {\n var _this7 = this;\n\n var disabled = this.disabled,\n labelPage = this.labelPage,\n ariaLabel = this.ariaLabel,\n isNav = this.isNav,\n numberOfPages = this.localNumberOfPages,\n currentPage = this.computedCurrentPage;\n var pageNumbers = this.pageList.map(function (p) {\n return p.number;\n });\n var _this$paginationParam2 = this.paginationParams,\n showFirstDots = _this$paginationParam2.showFirstDots,\n showLastDots = _this$paginationParam2.showLastDots;\n var fill = this.align === 'fill';\n var $buttons = []; // Helper function and flag\n\n var isActivePage = function isActivePage(pageNumber) {\n return pageNumber === currentPage;\n };\n\n var noCurrentPage = this.currentPage < 1; // Factory function for prev/next/first/last buttons\n\n var makeEndBtn = function makeEndBtn(linkTo, ariaLabel, btnSlot, btnText, btnClass, pageTest, key) {\n var isDisabled = disabled || isActivePage(pageTest) || noCurrentPage || linkTo < 1 || linkTo > numberOfPages;\n var pageNumber = linkTo < 1 ? 1 : linkTo > numberOfPages ? numberOfPages : linkTo;\n var scope = {\n disabled: isDisabled,\n page: pageNumber,\n index: pageNumber - 1\n };\n var $btnContent = _this7.normalizeSlot(btnSlot, scope) || toString(btnText) || h();\n var $inner = h(isDisabled ? 'span' : isNav ? BLink : 'button', {\n staticClass: 'page-link',\n class: {\n 'flex-grow-1': !isNav && !isDisabled && fill\n },\n props: isDisabled || !isNav ? {} : _this7.linkProps(linkTo),\n attrs: {\n role: isNav ? null : 'menuitem',\n type: isNav || isDisabled ? null : 'button',\n tabindex: isDisabled || isNav ? null : '-1',\n 'aria-label': ariaLabel,\n 'aria-controls': _this7.ariaControls || null,\n 'aria-disabled': isDisabled ? 'true' : null\n },\n on: isDisabled ? {} : {\n '!click': function click(event) {\n _this7.onClick(event, linkTo);\n },\n keydown: onSpaceKey\n }\n }, [$btnContent]);\n return h('li', {\n key: key,\n staticClass: 'page-item',\n class: [{\n disabled: isDisabled,\n 'flex-fill': fill,\n 'd-flex': fill && !isNav && !isDisabled\n }, btnClass],\n attrs: {\n role: isNav ? null : 'presentation',\n 'aria-hidden': isDisabled ? 'true' : null\n }\n }, [$inner]);\n }; // Ellipsis factory\n\n\n var makeEllipsis = function makeEllipsis(isLast) {\n return h('li', {\n staticClass: 'page-item',\n class: ['disabled', 'bv-d-xs-down-none', fill ? 'flex-fill' : '', _this7.ellipsisClass],\n attrs: {\n role: 'separator'\n },\n key: \"ellipsis-\".concat(isLast ? 'last' : 'first')\n }, [h('span', {\n staticClass: 'page-link'\n }, [_this7.normalizeSlot(SLOT_NAME_ELLIPSIS_TEXT) || toString(_this7.ellipsisText) || h()])]);\n }; // Page button factory\n\n\n var makePageButton = function makePageButton(page, idx) {\n var pageNumber = page.number;\n var active = isActivePage(pageNumber) && !noCurrentPage; // Active page will have tabindex of 0, or if no current page and first page button\n\n var tabIndex = disabled ? null : active || noCurrentPage && idx === 0 ? '0' : '-1';\n var attrs = {\n role: isNav ? null : 'menuitemradio',\n type: isNav || disabled ? null : 'button',\n 'aria-disabled': disabled ? 'true' : null,\n 'aria-controls': _this7.ariaControls || null,\n 'aria-label': hasPropFunction(labelPage) ?\n /* istanbul ignore next */\n labelPage(pageNumber) : \"\".concat(isFunction(labelPage) ? labelPage() : labelPage, \" \").concat(pageNumber),\n 'aria-checked': isNav ? null : active ? 'true' : 'false',\n 'aria-current': isNav && active ? 'page' : null,\n 'aria-posinset': isNav ? null : pageNumber,\n 'aria-setsize': isNav ? null : numberOfPages,\n // ARIA \"roving tabindex\" method (except in `isNav` mode)\n tabindex: isNav ? null : tabIndex\n };\n var btnContent = toString(_this7.makePage(pageNumber));\n var scope = {\n page: pageNumber,\n index: pageNumber - 1,\n content: btnContent,\n active: active,\n disabled: disabled\n };\n var $inner = h(disabled ? 'span' : isNav ? BLink : 'button', {\n props: disabled || !isNav ? {} : _this7.linkProps(pageNumber),\n staticClass: 'page-link',\n class: {\n 'flex-grow-1': !isNav && !disabled && fill\n },\n attrs: attrs,\n on: disabled ? {} : {\n '!click': function click(event) {\n _this7.onClick(event, pageNumber);\n },\n keydown: onSpaceKey\n }\n }, [_this7.normalizeSlot(SLOT_NAME_PAGE, scope) || btnContent]);\n return h('li', {\n staticClass: 'page-item',\n class: [{\n disabled: disabled,\n active: active,\n 'flex-fill': fill,\n 'd-flex': fill && !isNav && !disabled\n }, page.classes, _this7.pageClass],\n attrs: {\n role: isNav ? null : 'presentation'\n },\n key: \"page-\".concat(pageNumber)\n }, [$inner]);\n }; // Goto first page button\n // Don't render button when `hideGotoEndButtons` or `firstNumber` is set\n\n\n var $firstPageBtn = h();\n\n if (!this.firstNumber && !this.hideGotoEndButtons) {\n $firstPageBtn = makeEndBtn(1, this.labelFirstPage, SLOT_NAME_FIRST_TEXT, this.firstText, this.firstClass, 1, 'pagination-goto-first');\n }\n\n $buttons.push($firstPageBtn); // Goto previous page button\n\n $buttons.push(makeEndBtn(currentPage - 1, this.labelPrevPage, SLOT_NAME_PREV_TEXT, this.prevText, this.prevClass, 1, 'pagination-goto-prev')); // Show first (1) button?\n\n $buttons.push(this.firstNumber && pageNumbers[0] !== 1 ? makePageButton({\n number: 1\n }, 0) : h()); // First ellipsis\n\n $buttons.push(showFirstDots ? makeEllipsis(false) : h()); // Individual page links\n\n this.pageList.forEach(function (page, idx) {\n var offset = showFirstDots && _this7.firstNumber && pageNumbers[0] !== 1 ? 1 : 0;\n $buttons.push(makePageButton(page, idx + offset));\n }); // Last ellipsis\n\n $buttons.push(showLastDots ? makeEllipsis(true) : h()); // Show last page button?\n\n $buttons.push(this.lastNumber && pageNumbers[pageNumbers.length - 1] !== numberOfPages ? makePageButton({\n number: numberOfPages\n }, -1) : h()); // Goto next page button\n\n $buttons.push(makeEndBtn(currentPage + 1, this.labelNextPage, SLOT_NAME_NEXT_TEXT, this.nextText, this.nextClass, numberOfPages, 'pagination-goto-next')); // Goto last page button\n // Don't render button when `hideGotoEndButtons` or `lastNumber` is set\n\n var $lastPageBtn = h();\n\n if (!this.lastNumber && !this.hideGotoEndButtons) {\n $lastPageBtn = makeEndBtn(numberOfPages, this.labelLastPage, SLOT_NAME_LAST_TEXT, this.lastText, this.lastClass, numberOfPages, 'pagination-goto-last');\n }\n\n $buttons.push($lastPageBtn); // Assemble the pagination buttons\n\n var $pagination = h('ul', {\n staticClass: 'pagination',\n class: ['b-pagination', this.btnSize, this.alignment, this.styleClass],\n attrs: {\n role: isNav ? null : 'menubar',\n 'aria-disabled': disabled ? 'true' : 'false',\n 'aria-label': isNav ? null : ariaLabel || null\n },\n // We disable keyboard left/right nav when ``\n on: isNav ? {} : {\n keydown: this.handleKeyNav\n },\n ref: 'ul'\n }, $buttons); // If we are ``, wrap in `` wrapper\n\n if (isNav) {\n return h('nav', {\n attrs: {\n 'aria-disabled': disabled ? 'true' : null,\n 'aria-hidden': disabled ? 'true' : 'false',\n 'aria-label': isNav ? ariaLabel || null : null\n }\n }, [$pagination]);\n }\n\n return $pagination;\n }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../../vue';\nimport { NAME_PAGINATION } from '../../constants/components';\nimport { EVENT_NAME_CHANGE, EVENT_NAME_PAGE_CLICK } from '../../constants/events';\nimport { PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { BvEvent } from '../../utils/bv-event.class';\nimport { attemptFocus, isVisible } from '../../utils/dom';\nimport { isUndefinedOrNull } from '../../utils/inspect';\nimport { mathCeil, mathMax } from '../../utils/math';\nimport { toInteger } from '../../utils/number';\nimport { sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { MODEL_PROP_NAME, paginationMixin, props as paginationProps } from '../../mixins/pagination'; // --- Constants ---\n\nvar DEFAULT_PER_PAGE = 20;\nvar DEFAULT_TOTAL_ROWS = 0; // --- Helper methods ---\n// Sanitize the provided per page number (converting to a number)\n\nvar sanitizePerPage = function sanitizePerPage(value) {\n return mathMax(toInteger(value) || DEFAULT_PER_PAGE, 1);\n}; // Sanitize the provided total rows number (converting to a number)\n\n\nvar sanitizeTotalRows = function sanitizeTotalRows(value) {\n return mathMax(toInteger(value) || DEFAULT_TOTAL_ROWS, 0);\n}; // --- Props ---\n\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, paginationProps), {}, {\n ariaControls: makeProp(PROP_TYPE_STRING),\n perPage: makeProp(PROP_TYPE_NUMBER_STRING, DEFAULT_PER_PAGE),\n totalRows: makeProp(PROP_TYPE_NUMBER_STRING, DEFAULT_TOTAL_ROWS)\n})), NAME_PAGINATION); // --- Main component ---\n// @vue/component\n\nexport var BPagination = /*#__PURE__*/Vue.extend({\n name: NAME_PAGINATION,\n // The render function is brought in via the `paginationMixin`\n mixins: [paginationMixin],\n props: props,\n computed: {\n numberOfPages: function numberOfPages() {\n var result = mathCeil(sanitizeTotalRows(this.totalRows) / sanitizePerPage(this.perPage));\n return result < 1 ? 1 : result;\n },\n // Used for watching changes to `perPage` and `numberOfPages`\n pageSizeNumberOfPages: function pageSizeNumberOfPages() {\n return {\n perPage: sanitizePerPage(this.perPage),\n totalRows: sanitizeTotalRows(this.totalRows),\n numberOfPages: this.numberOfPages\n };\n }\n },\n watch: {\n pageSizeNumberOfPages: function pageSizeNumberOfPages(newValue, oldValue) {\n if (!isUndefinedOrNull(oldValue)) {\n if (newValue.perPage !== oldValue.perPage && newValue.totalRows === oldValue.totalRows) {\n // If the page size changes, reset to page 1\n this.currentPage = 1;\n } else if (newValue.numberOfPages !== oldValue.numberOfPages && this.currentPage > newValue.numberOfPages) {\n // If `numberOfPages` changes and is less than\n // the `currentPage` number, reset to page 1\n this.currentPage = 1;\n }\n }\n\n this.localNumberOfPages = newValue.numberOfPages;\n }\n },\n created: function created() {\n var _this = this;\n\n // Set the initial page count\n this.localNumberOfPages = this.numberOfPages; // Set the initial page value\n\n var currentPage = toInteger(this[MODEL_PROP_NAME], 0);\n\n if (currentPage > 0) {\n this.currentPage = currentPage;\n } else {\n this.$nextTick(function () {\n // If this value parses to `NaN` or a value less than `1`\n // trigger an initial emit of `null` if no page specified\n _this.currentPage = 0;\n });\n }\n },\n methods: {\n // These methods are used by the render function\n onClick: function onClick(event, pageNumber) {\n var _this2 = this;\n\n // Dont do anything if clicking the current active page\n if (pageNumber === this.currentPage) {\n return;\n }\n\n var target = event.target; // Emit a user-cancelable `page-click` event\n\n var clickEvt = new BvEvent(EVENT_NAME_PAGE_CLICK, {\n cancelable: true,\n vueTarget: this,\n target: target\n });\n this.$emit(clickEvt.type, clickEvt, pageNumber);\n\n if (clickEvt.defaultPrevented) {\n return;\n } // Update the `v-model`\n\n\n this.currentPage = pageNumber; // Emit event triggered by user interaction\n\n this.$emit(EVENT_NAME_CHANGE, this.currentPage); // Keep the current button focused if possible\n\n this.$nextTick(function () {\n if (isVisible(target) && _this2.$el.contains(target)) {\n attemptFocus(target);\n } else {\n _this2.focusCurrent();\n }\n });\n },\n makePage: function makePage(pageNum) {\n return pageNum;\n },\n\n /* istanbul ignore next */\n linkProps: function linkProps() {\n // No props, since we render a plain button\n return {};\n }\n }\n});","!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define([],e):\"object\"==typeof exports?exports.VueFormWizard=e():t.VueFormWizard=e()}(\"undefined\"!=typeof self?self:this,function(){return function(t){function e(n){if(a[n])return a[n].exports;var i=a[n]={i:n,l:!1,exports:{}};return t[n].call(i.exports,i,i.exports,e),i.l=!0,i.exports}var a={};return e.m=t,e.c=a,e.d=function(t,a,n){e.o(t,a)||Object.defineProperty(t,a,{configurable:!1,enumerable:!0,get:n})},e.n=function(t){var a=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(a,\"a\",a),a},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p=\"\",e(e.s=7)}([function(t,e){t.exports=function(t,e,a,n,i,r){var s,o=t=t||{},c=typeof t.default;\"object\"!==c&&\"function\"!==c||(s=t,o=t.default);var u=\"function\"==typeof o?o.options:o;e&&(u.render=e.render,u.staticRenderFns=e.staticRenderFns,u._compiled=!0),a&&(u.functional=!0),i&&(u._scopeId=i);var l;if(r?(l=function(t){t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext,t||\"undefined\"==typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),n&&n.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(r)},u._ssrRegister=l):n&&(l=n),l){var d=u.functional,b=d?u.render:u.beforeCreate;d?(u._injectStyles=l,u.render=function(t,e){return l.call(e),b(t,e)}):u.beforeCreate=b?[].concat(b,l):[l]}return{esModule:s,exports:o,options:u}}},function(t,e,a){\"use strict\";var n=a(2),i=a(4),r=a(14);e.a={name:\"form-wizard\",components:{WizardButton:n.a,WizardStep:i.a},props:{title:{type:String,default:\"Awesome Wizard\"},subtitle:{type:String,default:\"Split a complicated flow in multiple steps\"},nextButtonText:{type:String,default:\"Next\"},backButtonText:{type:String,default:\"Back\"},finishButtonText:{type:String,default:\"Finish\"},hideButtons:{type:Boolean,default:!1},validateOnBack:Boolean,color:{type:String,default:\"#e74c3c\"},errorColor:{type:String,default:\"#8b0000\"},shape:{type:String,default:\"circle\"},layout:{type:String,default:\"horizontal\"},stepsClasses:{type:[String,Array],default:\"\"},stepSize:{type:String,default:\"md\",validator:function(t){return-1!==[\"xs\",\"sm\",\"md\",\"lg\"].indexOf(t)}},transition:{type:String,default:\"\"},startIndex:{type:Number,default:0,validator:function(t){return t>=0}}},provide:function(){return{addTab:this.addTab,removeTab:this.removeTab}},data:function(){return{activeTabIndex:0,currentPercentage:0,maxStep:0,loading:!1,tabs:[]}},computed:{slotProps:function(){return{nextTab:this.nextTab,prevTab:this.prevTab,activeTabIndex:this.activeTabIndex,isLastStep:this.isLastStep,fillButtonStyle:this.fillButtonStyle}},tabCount:function(){return this.tabs.length},isLastStep:function(){return this.activeTabIndex===this.tabCount-1},isVertical:function(){return\"vertical\"===this.layout},displayPrevButton:function(){return 0!==this.activeTabIndex},stepPercentage:function(){return 1/(2*this.tabCount)*100},progressBarStyle:function(){return{backgroundColor:this.color,width:this.progress+\"%\",color:this.color}},fillButtonStyle:function(){return{backgroundColor:this.color,borderColor:this.color,color:\"white\"}},progress:function(){return this.activeTabIndex>0?this.stepPercentage*(2*this.activeTabIndex+1):this.stepPercentage}},methods:{emitTabChange:function(t,e){this.$emit(\"on-change\",t,e),this.$emit(\"update:startIndex\",e)},addTab:function(t){var e=this.$slots.default.indexOf(t.$vnode);t.tabId=\"\"+t.title.replace(/ /g,\"\")+e,this.tabs.splice(e,0,t),e-1&&(a===this.activeTabIndex&&(this.maxStep=this.activeTabIndex-1,this.changeTab(this.activeTabIndex,this.activeTabIndex-1)),athis.activeTabIndex;if(t<=this.maxStep){var n=function n(){a&&t-e.activeTabIndex>1?(e.changeTab(e.activeTabIndex,e.activeTabIndex+1),e.beforeTabChange(e.activeTabIndex,n)):(e.changeTab(e.activeTabIndex,t),e.afterTabChange(e.activeTabIndex))};a?this.beforeTabChange(this.activeTabIndex,n):(this.setValidationError(null),n())}return t<=this.maxStep},nextTab:function(){var t=this,e=function(){t.activeTabIndex0&&(t.setValidationError(null),t.changeTab(t.activeTabIndex,t.activeTabIndex-1))};this.validateOnBack?this.beforeTabChange(this.activeTabIndex,e):e()},focusNextTab:function(){var t=Object(r.b)(this.tabs);if(-1!==t&&t0){var e=this.tabs[t-1].tabId;Object(r.a)(e)}},setLoading:function(t){this.loading=t,this.$emit(\"on-loading\",t)},setValidationError:function(t){this.tabs[this.activeTabIndex].validationError=t,this.$emit(\"on-error\",t)},validateBeforeChange:function(t,e){var a=this;if(this.setValidationError(null),Object(r.c)(t))this.setLoading(!0),t.then(function(t){a.setLoading(!1);var n=!0===t;a.executeBeforeChange(n,e)}).catch(function(t){a.setLoading(!1),a.setValidationError(t)});else{var n=!0===t;this.executeBeforeChange(n,e)}},executeBeforeChange:function(t,e){this.$emit(\"on-validate\",t,this.activeTabIndex),t?e():this.tabs[this.activeTabIndex].validationError=\"error\"},beforeTabChange:function(t,e){if(!this.loading){var a=this.tabs[t];if(a&&void 0!==a.beforeChange){var n=a.beforeChange();this.validateBeforeChange(n,e)}else e()}},afterTabChange:function(t){if(!this.loading){var e=this.tabs[t];e&&void 0!==e.afterChange&&e.afterChange()}},changeTab:function(t,e){var a=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],n=this.tabs[t],i=this.tabs[e];return n&&(n.active=!1),i&&(i.active=!0),a&&this.activeTabIndex!==e&&this.emitTabChange(t,e),this.activeTabIndex=e,this.activateTabAndCheckStep(this.activeTabIndex),!0},tryChangeRoute:function(t){this.$router&&t.route&&this.$router.push(t.route)},checkRouteChange:function(t){var e=-1,a=this.tabs.find(function(a,n){var i=a.route===t;return i&&(e=n),i});if(a&&!a.active){var n=e>this.activeTabIndex;this.navigateToTab(e,n)}},deactivateTabs:function(){this.tabs.forEach(function(t){t.active=!1})},activateTab:function(t){this.deactivateTabs();var e=this.tabs[t];e&&(e.active=!0,e.checked=!0,this.tryChangeRoute(e))},activateTabAndCheckStep:function(t){this.activateTab(t),t>this.maxStep&&(this.maxStep=t),this.activeTabIndex=t},initializeTabs:function(){this.tabs.length>0&&0===this.startIndex&&this.activateTab(this.activeTabIndex),this.startIndex0&&void 0!==arguments[0]?arguments[0]:[],e=n();return t.findIndex(function(t){return t.tabId===e})}function r(t){document.getElementById(t).focus()}function s(t){return t.then&&\"function\"==typeof t.then}e.b=i,e.a=r,e.c=s},function(t,e,a){\"use strict\";var n=function(){var t=this,e=t.$createElement,a=t._self._c||e;return a(\"div\",{staticClass:\"vue-form-wizard\",class:[t.stepSize,{vertical:t.isVertical}],on:{keyup:[function(e){return\"button\"in e||!t._k(e.keyCode,\"right\",39,e.key)?\"button\"in e&&2!==e.button?null:void t.focusNextTab(e):null},function(e){return\"button\"in e||!t._k(e.keyCode,\"left\",37,e.key)?\"button\"in e&&0!==e.button?null:void t.focusPrevTab(e):null}]}},[a(\"div\",{staticClass:\"wizard-header\"},[t._t(\"title\",[a(\"h4\",{staticClass:\"wizard-title\"},[t._v(t._s(t.title))]),t._v(\" \"),a(\"p\",{staticClass:\"category\"},[t._v(t._s(t.subtitle))])])],2),t._v(\" \"),a(\"div\",{staticClass:\"wizard-navigation\"},[t.isVertical?t._e():a(\"div\",{staticClass:\"wizard-progress-with-circle\"},[a(\"div\",{staticClass:\"wizard-progress-bar\",style:t.progressBarStyle})]),t._v(\" \"),a(\"ul\",{staticClass:\"wizard-nav wizard-nav-pills\",class:t.stepsClasses,attrs:{role:\"tablist\"}},[t._l(t.tabs,function(e,n){return t._t(\"step\",[a(\"wizard-step\",{attrs:{tab:e,\"step-size\":t.stepSize,transition:t.transition,index:n},nativeOn:{click:function(e){t.navigateToTab(n)},keyup:function(e){if(!(\"button\"in e)&&t._k(e.keyCode,\"enter\",13,e.key))return null;t.navigateToTab(n)}}})],{tab:e,index:n,navigateToTab:t.navigateToTab,stepSize:t.stepSize,transition:t.transition})})],2),t._v(\" \"),a(\"div\",{staticClass:\"wizard-tab-content\"},[t._t(\"default\",null,null,t.slotProps)],2)]),t._v(\" \"),t.hideButtons?t._e():a(\"div\",{staticClass:\"wizard-card-footer clearfix\"},[t._t(\"footer\",[a(\"div\",{staticClass:\"wizard-footer-left\"},[t.displayPrevButton?a(\"span\",{attrs:{role:\"button\",tabindex:\"0\"},on:{click:t.prevTab,keyup:function(e){if(!(\"button\"in e)&&t._k(e.keyCode,\"enter\",13,e.key))return null;t.prevTab(e)}}},[t._t(\"prev\",[a(\"wizard-button\",{style:t.fillButtonStyle,attrs:{disabled:t.loading}},[t._v(\"\\n \"+t._s(t.backButtonText)+\"\\n \")])],null,t.slotProps)],2):t._e(),t._v(\" \"),t._t(\"custom-buttons-left\",null,null,t.slotProps)],2),t._v(\" \"),a(\"div\",{staticClass:\"wizard-footer-right\"},[t._t(\"custom-buttons-right\",null,null,t.slotProps),t._v(\" \"),t.isLastStep?a(\"span\",{attrs:{role:\"button\",tabindex:\"0\"},on:{click:t.nextTab,keyup:function(e){if(!(\"button\"in e)&&t._k(e.keyCode,\"enter\",13,e.key))return null;t.nextTab(e)}}},[t._t(\"finish\",[a(\"wizard-button\",{style:t.fillButtonStyle},[t._v(\"\\n \"+t._s(t.finishButtonText)+\"\\n \")])],null,t.slotProps)],2):a(\"span\",{attrs:{role:\"button\",tabindex:\"0\"},on:{click:t.nextTab,keyup:function(e){if(!(\"button\"in e)&&t._k(e.keyCode,\"enter\",13,e.key))return null;t.nextTab(e)}}},[t._t(\"next\",[a(\"wizard-button\",{style:t.fillButtonStyle,attrs:{disabled:t.loading}},[t._v(\"\\n \"+t._s(t.nextButtonText)+\"\\n \")])],null,t.slotProps)],2)],2)],null,t.slotProps)],2)])},i=[],r={render:n,staticRenderFns:i};e.a=r},function(t,e,a){\"use strict\";var n=a(6),i=a(17),r=a(0),s=r(n.a,i.a,!1,null,null,null);e.a=s.exports},function(t,e,a){\"use strict\";var n=function(){var t=this,e=t.$createElement;return(t._self._c||e)(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:t.active,expression:\"active\"}],staticClass:\"wizard-tab-container\",attrs:{role:\"tabpanel\",id:t.tabId,\"aria-hidden\":!t.active,\"aria-labelledby\":\"step-\"+t.tabId}},[t._t(\"default\",null,{active:t.active})],2)},i=[],r={render:n,staticRenderFns:i};e.a=r}])});","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/@vue/cli-service/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!./all-users-cards.vue?vue&type=style&index=0&lang=scss&\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/@vue/cli-service/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!./all-users-table.vue?vue&type=style&index=0&lang=scss&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/@vue/cli-service/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!./allUsers.vue?vue&type=style&index=0&lang=scss&\"","function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue, mergeData } from '../../vue';\nimport { NAME_NAV } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props'; // --- Helper methods ---\n\nvar computeJustifyContent = function computeJustifyContent(value) {\n value = value === 'left' ? 'start' : value === 'right' ? 'end' : value;\n return \"justify-content-\".concat(value);\n}; // --- Props ---\n\n\nexport var props = makePropsConfigurable({\n align: makeProp(PROP_TYPE_STRING),\n // Set to `true` if placing in a card header\n cardHeader: makeProp(PROP_TYPE_BOOLEAN, false),\n fill: makeProp(PROP_TYPE_BOOLEAN, false),\n justified: makeProp(PROP_TYPE_BOOLEAN, false),\n pills: makeProp(PROP_TYPE_BOOLEAN, false),\n small: makeProp(PROP_TYPE_BOOLEAN, false),\n tabs: makeProp(PROP_TYPE_BOOLEAN, false),\n tag: makeProp(PROP_TYPE_STRING, 'ul'),\n vertical: makeProp(PROP_TYPE_BOOLEAN, false)\n}, NAME_NAV); // --- Main component ---\n// @vue/component\n\nexport var BNav = /*#__PURE__*/Vue.extend({\n name: NAME_NAV,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var _class;\n\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var tabs = props.tabs,\n pills = props.pills,\n vertical = props.vertical,\n align = props.align,\n cardHeader = props.cardHeader;\n return h(props.tag, mergeData(data, {\n staticClass: 'nav',\n class: (_class = {\n 'nav-tabs': tabs,\n 'nav-pills': pills && !tabs,\n 'card-header-tabs': !vertical && cardHeader && tabs,\n 'card-header-pills': !vertical && cardHeader && pills && !tabs,\n 'flex-column': vertical,\n 'nav-fill': !vertical && props.fill,\n 'nav-justified': !vertical && props.justified\n }, _defineProperty(_class, computeJustifyContent(align), !vertical && align), _defineProperty(_class, \"small\", props.small), _class)\n }), children);\n }\n});","var _watch;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { COMPONENT_UID_KEY, Vue } from '../../vue';\nimport { NAME_ALERT } from '../../constants/components';\nimport { EVENT_NAME_DISMISSED, EVENT_NAME_DISMISS_COUNT_DOWN } from '../../constants/events';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_BOOLEAN_NUMBER_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_DISMISS } from '../../constants/slots';\nimport { requestAF } from '../../utils/dom';\nimport { isBoolean, isNumeric } from '../../utils/inspect';\nimport { makeModelMixin } from '../../utils/model';\nimport { toInteger } from '../../utils/number';\nimport { sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { BButtonClose } from '../button/button-close';\nimport { BVTransition } from '../transition/bv-transition'; // --- Constants ---\n\nvar _makeModelMixin = makeModelMixin('show', {\n type: PROP_TYPE_BOOLEAN_NUMBER_STRING,\n defaultValue: false\n}),\n modelMixin = _makeModelMixin.mixin,\n modelProps = _makeModelMixin.props,\n MODEL_PROP_NAME = _makeModelMixin.prop,\n MODEL_EVENT_NAME = _makeModelMixin.event; // --- Helper methods ---\n// Convert `show` value to a number\n\n\nvar parseCountDown = function parseCountDown(show) {\n if (show === '' || isBoolean(show)) {\n return 0;\n }\n\n show = toInteger(show, 0);\n return show > 0 ? show : 0;\n}; // Convert `show` value to a boolean\n\n\nvar parseShow = function parseShow(show) {\n if (show === '' || show === true) {\n return true;\n }\n\n if (toInteger(show, 0) < 1) {\n // Boolean will always return false for the above comparison\n return false;\n }\n\n return !!show;\n}; // --- Props ---\n\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, modelProps), {}, {\n dismissLabel: makeProp(PROP_TYPE_STRING, 'Close'),\n dismissible: makeProp(PROP_TYPE_BOOLEAN, false),\n fade: makeProp(PROP_TYPE_BOOLEAN, false),\n variant: makeProp(PROP_TYPE_STRING, 'info')\n})), NAME_ALERT); // --- Main component ---\n// @vue/component\n\nexport var BAlert = /*#__PURE__*/Vue.extend({\n name: NAME_ALERT,\n mixins: [modelMixin, normalizeSlotMixin],\n props: props,\n data: function data() {\n return {\n countDown: 0,\n // If initially shown, we need to set these for SSR\n localShow: parseShow(this[MODEL_PROP_NAME])\n };\n },\n watch: (_watch = {}, _defineProperty(_watch, MODEL_PROP_NAME, function (newValue) {\n this.countDown = parseCountDown(newValue);\n this.localShow = parseShow(newValue);\n }), _defineProperty(_watch, \"countDown\", function countDown(newValue) {\n var _this = this;\n\n this.clearCountDownInterval();\n var show = this[MODEL_PROP_NAME]; // Ignore if `show` transitions to a boolean value\n\n if (isNumeric(show)) {\n this.$emit(EVENT_NAME_DISMISS_COUNT_DOWN, newValue); // Update the v-model if needed\n\n if (show !== newValue) {\n this.$emit(MODEL_EVENT_NAME, newValue);\n }\n\n if (newValue > 0) {\n this.localShow = true;\n this.$_countDownTimeout = setTimeout(function () {\n _this.countDown--;\n }, 1000);\n } else {\n // Slightly delay the hide to allow any UI updates\n this.$nextTick(function () {\n requestAF(function () {\n _this.localShow = false;\n });\n });\n }\n }\n }), _defineProperty(_watch, \"localShow\", function localShow(newValue) {\n var show = this[MODEL_PROP_NAME]; // Only emit dismissed events for dismissible or auto-dismissing alerts\n\n if (!newValue && (this.dismissible || isNumeric(show))) {\n this.$emit(EVENT_NAME_DISMISSED);\n } // Only emit booleans if we weren't passed a number via v-model\n\n\n if (!isNumeric(show) && show !== newValue) {\n this.$emit(MODEL_EVENT_NAME, newValue);\n }\n }), _watch),\n created: function created() {\n // Create private non-reactive props\n this.$_filterTimer = null;\n var show = this[MODEL_PROP_NAME];\n this.countDown = parseCountDown(show);\n this.localShow = parseShow(show);\n },\n beforeDestroy: function beforeDestroy() {\n this.clearCountDownInterval();\n },\n methods: {\n dismiss: function dismiss() {\n this.clearCountDownInterval();\n this.countDown = 0;\n this.localShow = false;\n },\n clearCountDownInterval: function clearCountDownInterval() {\n clearTimeout(this.$_countDownTimeout);\n this.$_countDownTimeout = null;\n }\n },\n render: function render(h) {\n var $alert = h();\n\n if (this.localShow) {\n var dismissible = this.dismissible,\n variant = this.variant;\n var $dismissButton = h();\n\n if (dismissible) {\n // Add dismiss button\n $dismissButton = h(BButtonClose, {\n attrs: {\n 'aria-label': this.dismissLabel\n },\n on: {\n click: this.dismiss\n }\n }, [this.normalizeSlot(SLOT_NAME_DISMISS)]);\n }\n\n $alert = h('div', {\n staticClass: 'alert',\n class: _defineProperty({\n 'alert-dismissible': dismissible\n }, \"alert-\".concat(variant), variant),\n attrs: {\n role: 'alert',\n 'aria-live': 'polite',\n 'aria-atomic': true\n },\n key: this[COMPONENT_UID_KEY]\n }, [$dismissButton, this.normalizeSlot()]);\n }\n\n return h(BVTransition, {\n props: {\n noFade: !this.fade\n }\n }, [$alert]);\n }\n});","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/@vue/cli-service/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!./friends.vue?vue&type=style&index=0&lang=scss&\"","var _objectSpread2, _watch;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../../vue';\nimport { NAME_TAB } from '../../constants/components';\nimport { MODEL_EVENT_NAME_PREFIX } from '../../constants/events';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_BOOLEAN, PROP_TYPE_OBJECT, PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_TITLE } from '../../constants/slots';\nimport { sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { idMixin, props as idProps } from '../../mixins/id';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { BVTransition } from '../transition/bv-transition'; // --- Constants ---\n\nvar MODEL_PROP_NAME_ACTIVE = 'active';\nvar MODEL_EVENT_NAME_ACTIVE = MODEL_EVENT_NAME_PREFIX + MODEL_PROP_NAME_ACTIVE; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, idProps), {}, (_objectSpread2 = {}, _defineProperty(_objectSpread2, MODEL_PROP_NAME_ACTIVE, makeProp(PROP_TYPE_BOOLEAN, false)), _defineProperty(_objectSpread2, \"buttonId\", makeProp(PROP_TYPE_STRING)), _defineProperty(_objectSpread2, \"disabled\", makeProp(PROP_TYPE_BOOLEAN, false)), _defineProperty(_objectSpread2, \"lazy\", makeProp(PROP_TYPE_BOOLEAN, false)), _defineProperty(_objectSpread2, \"noBody\", makeProp(PROP_TYPE_BOOLEAN, false)), _defineProperty(_objectSpread2, \"tag\", makeProp(PROP_TYPE_STRING, 'div')), _defineProperty(_objectSpread2, \"title\", makeProp(PROP_TYPE_STRING)), _defineProperty(_objectSpread2, \"titleItemClass\", makeProp(PROP_TYPE_ARRAY_OBJECT_STRING)), _defineProperty(_objectSpread2, \"titleLinkAttributes\", makeProp(PROP_TYPE_OBJECT)), _defineProperty(_objectSpread2, \"titleLinkClass\", makeProp(PROP_TYPE_ARRAY_OBJECT_STRING)), _objectSpread2))), NAME_TAB); // --- Main component ---\n// @vue/component\n\nexport var BTab = /*#__PURE__*/Vue.extend({\n name: NAME_TAB,\n mixins: [idMixin, normalizeSlotMixin],\n inject: {\n bvTabs: {\n default: function _default() {\n return {};\n }\n }\n },\n props: props,\n data: function data() {\n return {\n localActive: this[MODEL_PROP_NAME_ACTIVE] && !this.disabled\n };\n },\n computed: {\n // For parent sniffing of child\n _isTab: function _isTab() {\n return true;\n },\n tabClasses: function tabClasses() {\n var active = this.localActive,\n disabled = this.disabled;\n return [{\n active: active,\n disabled: disabled,\n 'card-body': this.bvTabs.card && !this.noBody\n }, // Apply `activeTabClass` styles when this tab is active\n active ? this.bvTabs.activeTabClass : null];\n },\n controlledBy: function controlledBy() {\n return this.buttonId || this.safeId('__BV_tab_button__');\n },\n computedNoFade: function computedNoFade() {\n return !(this.bvTabs.fade || false);\n },\n computedLazy: function computedLazy() {\n return this.bvTabs.lazy || this.lazy;\n }\n },\n watch: (_watch = {}, _defineProperty(_watch, MODEL_PROP_NAME_ACTIVE, function (newValue, oldValue) {\n if (newValue !== oldValue) {\n if (newValue) {\n // If activated post mount\n this.activate();\n } else {\n /* istanbul ignore next */\n if (!this.deactivate()) {\n // Tab couldn't be deactivated, so we reset the synced active prop\n // Deactivation will fail if no other tabs to activate\n this.$emit(MODEL_EVENT_NAME_ACTIVE, this.localActive);\n }\n }\n }\n }), _defineProperty(_watch, \"disabled\", function disabled(newValue, oldValue) {\n if (newValue !== oldValue) {\n var firstTab = this.bvTabs.firstTab;\n\n if (newValue && this.localActive && firstTab) {\n this.localActive = false;\n firstTab();\n }\n }\n }), _defineProperty(_watch, \"localActive\", function localActive(newValue) {\n // Make `active` prop work with `.sync` modifier\n this.$emit(MODEL_EVENT_NAME_ACTIVE, newValue);\n }), _watch),\n mounted: function mounted() {\n // Inform `` of our presence\n this.registerTab();\n },\n updated: function updated() {\n // Force the tab button content to update (since slots are not reactive)\n // Only done if we have a title slot, as the title prop is reactive\n var updateButton = this.bvTabs.updateButton;\n\n if (updateButton && this.hasNormalizedSlot(SLOT_NAME_TITLE)) {\n updateButton(this);\n }\n },\n beforeDestroy: function beforeDestroy() {\n // Inform `` of our departure\n this.unregisterTab();\n },\n methods: {\n // Private methods\n registerTab: function registerTab() {\n // Inform `` of our presence\n var registerTab = this.bvTabs.registerTab;\n\n if (registerTab) {\n registerTab(this);\n }\n },\n unregisterTab: function unregisterTab() {\n // Inform `` of our departure\n var unregisterTab = this.bvTabs.unregisterTab;\n\n if (unregisterTab) {\n unregisterTab(this);\n }\n },\n // Public methods\n activate: function activate() {\n // Not inside a `` component or tab is disabled\n var activateTab = this.bvTabs.activateTab;\n return activateTab && !this.disabled ? activateTab(this) : false;\n },\n deactivate: function deactivate() {\n // Not inside a `` component or not active to begin with\n var deactivateTab = this.bvTabs.deactivateTab;\n return deactivateTab && this.localActive ? deactivateTab(this) : false;\n }\n },\n render: function render(h) {\n var localActive = this.localActive;\n var $content = h(this.tag, {\n staticClass: 'tab-pane',\n class: this.tabClasses,\n directives: [{\n name: 'show',\n value: localActive\n }],\n attrs: {\n role: 'tabpanel',\n id: this.safeId(),\n 'aria-hidden': localActive ? 'false' : 'true',\n 'aria-labelledby': this.controlledBy || null\n },\n ref: 'panel'\n }, // Render content lazily if requested\n [localActive || !this.computedLazy ? this.normalizeSlot() : h()]);\n return h(BVTransition, {\n props: {\n mode: 'out-in',\n noFade: this.computedNoFade\n }\n }, [$content]);\n }\n});","function webpackEmptyContext(req) {\n\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\te.code = 'MODULE_NOT_FOUND';\n\tthrow e;\n}\nwebpackEmptyContext.keys = function() { return []; };\nwebpackEmptyContext.resolve = webpackEmptyContext;\nmodule.exports = webpackEmptyContext;\nwebpackEmptyContext.id = \"67d8\";","import { makeModelMixin } from '../utils/model';\n\nvar _makeModelMixin = makeModelMixin('value'),\n mixin = _makeModelMixin.mixin,\n props = _makeModelMixin.props,\n prop = _makeModelMixin.prop,\n event = _makeModelMixin.event;\n\nexport { mixin as modelMixin, props, prop as MODEL_PROP_NAME, event as MODEL_EVENT_NAME };","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../../../vue';\nimport { PROP_TYPE_STRING } from '../../../constants/props';\nimport { get } from '../../../utils/get';\nimport { isNull, isPlainObject, isUndefined } from '../../../utils/inspect';\nimport { sortKeys } from '../../../utils/object';\nimport { makeProp, makePropsConfigurable } from '../../../utils/props';\nimport { formOptionsMixin, props as formOptionsProps } from '../../../mixins/form-options'; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, formOptionsProps), {}, {\n labelField: makeProp(PROP_TYPE_STRING, 'label'),\n optionsField: makeProp(PROP_TYPE_STRING, 'options')\n})), 'formOptions'); // --- Mixin ---\n// @vue/component\n\nexport var optionsMixin = Vue.extend({\n mixins: [formOptionsMixin],\n props: props,\n methods: {\n normalizeOption: function normalizeOption(option) {\n var key = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n // When the option is an object, normalize it\n if (isPlainObject(option)) {\n var value = get(option, this.valueField);\n var text = get(option, this.textField);\n var options = get(option, this.optionsField, null); // When it has options, create an `` object\n\n if (!isNull(options)) {\n return {\n label: String(get(option, this.labelField) || text),\n options: this.normalizeOptions(options)\n };\n } // Otherwise create an `` object\n\n\n return {\n value: isUndefined(value) ? key || text : value,\n text: String(isUndefined(text) ? key : text),\n html: get(option, this.htmlField),\n disabled: Boolean(get(option, this.disabledField))\n };\n } // Otherwise create an `` object from the given value\n\n\n return {\n value: key || option,\n text: String(option),\n disabled: false\n };\n }\n }\n});","import { Vue, mergeData } from '../../vue';\nimport { NAME_FORM_SELECT_OPTION } from '../../constants/components';\nimport { PROP_TYPE_ANY, PROP_TYPE_BOOLEAN } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n disabled: makeProp(PROP_TYPE_BOOLEAN, false),\n value: makeProp(PROP_TYPE_ANY, undefined, true) // Required\n\n}, NAME_FORM_SELECT_OPTION); // --- Main component ---\n// @vue/component\n\nexport var BFormSelectOption = /*#__PURE__*/Vue.extend({\n name: NAME_FORM_SELECT_OPTION,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var value = props.value,\n disabled = props.disabled;\n return h('option', mergeData(data, {\n attrs: {\n disabled: disabled\n },\n domProps: {\n value: value\n }\n }), children);\n }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../../vue';\nimport { NAME_FORM_SELECT_OPTION_GROUP } from '../../constants/components';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_FIRST } from '../../constants/slots';\nimport { htmlOrText } from '../../utils/html';\nimport { sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { formOptionsMixin, props as formOptionsProps } from '../../mixins/form-options';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { BFormSelectOption } from './form-select-option'; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, formOptionsProps), {}, {\n label: makeProp(PROP_TYPE_STRING, undefined, true) // Required\n\n})), NAME_FORM_SELECT_OPTION_GROUP); // --- Main component ---\n// @vue/component\n\nexport var BFormSelectOptionGroup = /*#__PURE__*/Vue.extend({\n name: NAME_FORM_SELECT_OPTION_GROUP,\n mixins: [normalizeSlotMixin, formOptionsMixin],\n props: props,\n render: function render(h) {\n var label = this.label;\n var $options = this.formOptions.map(function (option, index) {\n var value = option.value,\n text = option.text,\n html = option.html,\n disabled = option.disabled;\n return h(BFormSelectOption, {\n attrs: {\n value: value,\n disabled: disabled\n },\n domProps: htmlOrText(html, text),\n key: \"option_\".concat(index)\n });\n });\n return h('optgroup', {\n attrs: {\n label: label\n }\n }, [this.normalizeSlot(SLOT_NAME_FIRST), $options, this.normalizeSlot()]);\n }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../../vue';\nimport { NAME_FORM_SELECT } from '../../constants/components';\nimport { EVENT_NAME_CHANGE } from '../../constants/events';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_BOOLEAN_STRING, PROP_TYPE_NUMBER } from '../../constants/props';\nimport { SLOT_NAME_FIRST } from '../../constants/slots';\nimport { from as arrayFrom } from '../../utils/array';\nimport { attemptBlur, attemptFocus } from '../../utils/dom';\nimport { htmlOrText } from '../../utils/html';\nimport { isArray } from '../../utils/inspect';\nimport { sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { formControlMixin, props as formControlProps } from '../../mixins/form-control';\nimport { formCustomMixin, props as formCustomProps } from '../../mixins/form-custom';\nimport { formSizeMixin, props as formSizeProps } from '../../mixins/form-size';\nimport { formStateMixin, props as formStateProps } from '../../mixins/form-state';\nimport { idMixin, props as idProps } from '../../mixins/id';\nimport { MODEL_EVENT_NAME, MODEL_PROP_NAME, modelMixin, props as modelProps } from '../../mixins/model';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { optionsMixin } from './helpers/mixin-options';\nimport { BFormSelectOption } from './form-select-option';\nimport { BFormSelectOptionGroup } from './form-select-option-group'; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, idProps), modelProps), formControlProps), formCustomProps), formSizeProps), formStateProps), {}, {\n ariaInvalid: makeProp(PROP_TYPE_BOOLEAN_STRING, false),\n multiple: makeProp(PROP_TYPE_BOOLEAN, false),\n // Browsers default size to `0`, which shows 4 rows in most browsers in multiple mode\n // Size of `1` can bork out Firefox\n selectSize: makeProp(PROP_TYPE_NUMBER, 0)\n})), NAME_FORM_SELECT); // --- Main component ---\n// @vue/component\n\nexport var BFormSelect = /*#__PURE__*/Vue.extend({\n name: NAME_FORM_SELECT,\n mixins: [idMixin, modelMixin, formControlMixin, formSizeMixin, formStateMixin, formCustomMixin, optionsMixin, normalizeSlotMixin],\n props: props,\n data: function data() {\n return {\n localValue: this[MODEL_PROP_NAME]\n };\n },\n computed: {\n computedSelectSize: function computedSelectSize() {\n // Custom selects with a size of zero causes the arrows to be hidden,\n // so dont render the size attribute in this case\n return !this.plain && this.selectSize === 0 ? null : this.selectSize;\n },\n inputClass: function inputClass() {\n return [this.plain ? 'form-control' : 'custom-select', this.size && this.plain ? \"form-control-\".concat(this.size) : null, this.size && !this.plain ? \"custom-select-\".concat(this.size) : null, this.stateClass];\n }\n },\n watch: {\n value: function value(newValue) {\n this.localValue = newValue;\n },\n localValue: function localValue() {\n this.$emit(MODEL_EVENT_NAME, this.localValue);\n }\n },\n methods: {\n focus: function focus() {\n attemptFocus(this.$refs.input);\n },\n blur: function blur() {\n attemptBlur(this.$refs.input);\n },\n onChange: function onChange(event) {\n var _this = this;\n\n var target = event.target;\n var selectedValue = arrayFrom(target.options).filter(function (o) {\n return o.selected;\n }).map(function (o) {\n return '_value' in o ? o._value : o.value;\n });\n this.localValue = target.multiple ? selectedValue : selectedValue[0];\n this.$nextTick(function () {\n _this.$emit(EVENT_NAME_CHANGE, _this.localValue);\n });\n }\n },\n render: function render(h) {\n var name = this.name,\n disabled = this.disabled,\n required = this.required,\n size = this.computedSelectSize,\n value = this.localValue;\n var $options = this.formOptions.map(function (option, index) {\n var value = option.value,\n label = option.label,\n options = option.options,\n disabled = option.disabled;\n var key = \"option_\".concat(index);\n return isArray(options) ? h(BFormSelectOptionGroup, {\n props: {\n label: label,\n options: options\n },\n key: key\n }) : h(BFormSelectOption, {\n props: {\n value: value,\n disabled: disabled\n },\n domProps: htmlOrText(option.html, option.text),\n key: key\n });\n });\n return h('select', {\n class: this.inputClass,\n attrs: {\n id: this.safeId(),\n name: name,\n form: this.form || null,\n multiple: this.multiple || null,\n size: size,\n disabled: disabled,\n required: required,\n 'aria-required': required ? 'true' : null,\n 'aria-invalid': this.computedAriaInvalid\n },\n on: {\n change: this.onChange\n },\n directives: [{\n name: 'model',\n value: value\n }],\n ref: 'input'\n }, [this.normalizeSlot(SLOT_NAME_FIRST), $options, this.normalizeSlot()]);\n }\n});","/*\n * Consistent and stable sort function across JavaScript platforms\n *\n * Inconsistent sorts can cause SSR problems between client and server\n * such as in if sortBy is applied to the data on server side render.\n * Chrome and V8 native sorts are inconsistent/unstable\n *\n * This function uses native sort with fallback to index compare when the a and b\n * compare returns 0\n *\n * Algorithm based on:\n * https://stackoverflow.com/questions/1427608/fast-stable-sorting-algorithm-implementation-in-javascript/45422645#45422645\n *\n * @param {array} array to sort\n * @param {function} sort compare function\n * @return {array}\n */\nexport var stableSort = function stableSort(array, compareFn) {\n // Using `.bind(compareFn)` on the wrapped anonymous function improves\n // performance by avoiding the function call setup. We don't use an arrow\n // function here as it binds `this` to the `stableSort` context rather than\n // the `compareFn` context, which wouldn't give us the performance increase.\n return array.map(function (a, index) {\n return [index, a];\n }).sort(function (a, b) {\n return this(a[1], b[1]) || a[0] - b[0];\n }.bind(compareFn)).map(function (e) {\n return e[1];\n });\n};","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/@vue/cli-service/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!./friends.vue?vue&type=style&index=0&lang=scss&\"","export var PLACEMENT_TOP_START = 'top-start';\nexport var PLACEMENT_TOP_END = 'top-end';\nexport var PLACEMENT_BOTTOM_START = 'bottom-start';\nexport var PLACEMENT_BOTTOM_END = 'bottom-end';\nexport var PLACEMENT_RIGHT_START = 'right-start';\nexport var PLACEMENT_RIGHT_END = 'right-end';\nexport var PLACEMENT_LEFT_START = 'left-start';\nexport var PLACEMENT_LEFT_END = 'left-end';","import { Vue } from '../vue';\nimport { EVENT_OPTIONS_NO_CAPTURE } from '../constants/events';\nimport { contains } from '../utils/dom';\nimport { eventOn, eventOff } from '../utils/events'; // @vue/component\n\nexport var clickOutMixin = Vue.extend({\n data: function data() {\n return {\n listenForClickOut: false\n };\n },\n watch: {\n listenForClickOut: function listenForClickOut(newValue, oldValue) {\n if (newValue !== oldValue) {\n eventOff(this.clickOutElement, this.clickOutEventName, this._clickOutHandler, EVENT_OPTIONS_NO_CAPTURE);\n\n if (newValue) {\n eventOn(this.clickOutElement, this.clickOutEventName, this._clickOutHandler, EVENT_OPTIONS_NO_CAPTURE);\n }\n }\n }\n },\n beforeCreate: function beforeCreate() {\n // Declare non-reactive properties\n this.clickOutElement = null;\n this.clickOutEventName = null;\n },\n mounted: function mounted() {\n if (!this.clickOutElement) {\n this.clickOutElement = document;\n }\n\n if (!this.clickOutEventName) {\n this.clickOutEventName = 'click';\n }\n\n if (this.listenForClickOut) {\n eventOn(this.clickOutElement, this.clickOutEventName, this._clickOutHandler, EVENT_OPTIONS_NO_CAPTURE);\n }\n },\n beforeDestroy: function beforeDestroy() {\n eventOff(this.clickOutElement, this.clickOutEventName, this._clickOutHandler, EVENT_OPTIONS_NO_CAPTURE);\n },\n methods: {\n isClickOut: function isClickOut(event) {\n return !contains(this.$el, event.target);\n },\n _clickOutHandler: function _clickOutHandler(event) {\n if (this.clickOutHandler && this.isClickOut(event)) {\n this.clickOutHandler(event);\n }\n }\n }\n});","import { Vue } from '../vue';\nimport { EVENT_OPTIONS_NO_CAPTURE } from '../constants/events';\nimport { eventOn, eventOff } from '../utils/events'; // @vue/component\n\nexport var focusInMixin = Vue.extend({\n data: function data() {\n return {\n listenForFocusIn: false\n };\n },\n watch: {\n listenForFocusIn: function listenForFocusIn(newValue, oldValue) {\n if (newValue !== oldValue) {\n eventOff(this.focusInElement, 'focusin', this._focusInHandler, EVENT_OPTIONS_NO_CAPTURE);\n\n if (newValue) {\n eventOn(this.focusInElement, 'focusin', this._focusInHandler, EVENT_OPTIONS_NO_CAPTURE);\n }\n }\n }\n },\n beforeCreate: function beforeCreate() {\n // Declare non-reactive properties\n this.focusInElement = null;\n },\n mounted: function mounted() {\n if (!this.focusInElement) {\n this.focusInElement = document;\n }\n\n if (this.listenForFocusIn) {\n eventOn(this.focusInElement, 'focusin', this._focusInHandler, EVENT_OPTIONS_NO_CAPTURE);\n }\n },\n beforeDestroy: function beforeDestroy() {\n eventOff(this.focusInElement, 'focusin', this._focusInHandler, EVENT_OPTIONS_NO_CAPTURE);\n },\n methods: {\n _focusInHandler: function _focusInHandler(event) {\n if (this.focusInHandler) {\n this.focusInHandler(event);\n }\n }\n }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport Popper from 'popper.js';\nimport { Vue } from '../vue';\nimport { NAME_DROPDOWN } from '../constants/components';\nimport { EVENT_NAME_CLICK, EVENT_NAME_HIDDEN, EVENT_NAME_HIDE, EVENT_NAME_SHOW, EVENT_NAME_SHOWN, EVENT_NAME_TOGGLE } from '../constants/events';\nimport { CODE_DOWN, CODE_ENTER, CODE_ESC, CODE_SPACE, CODE_UP } from '../constants/key-codes';\nimport { PLACEMENT_TOP_START, PLACEMENT_TOP_END, PLACEMENT_BOTTOM_START, PLACEMENT_BOTTOM_END, PLACEMENT_RIGHT_START, PLACEMENT_LEFT_START } from '../constants/popper';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_NUMBER_STRING, PROP_TYPE_OBJECT, PROP_TYPE_STRING } from '../constants/props';\nimport { HTMLElement } from '../constants/safe-types';\nimport { BvEvent } from '../utils/bv-event.class';\nimport { attemptFocus, closest, contains, isVisible, requestAF, selectAll } from '../utils/dom';\nimport { getRootEventName, stopEvent } from '../utils/events';\nimport { isNull } from '../utils/inspect';\nimport { mergeDeep, sortKeys } from '../utils/object';\nimport { makeProp, makePropsConfigurable } from '../utils/props';\nimport { warn } from '../utils/warn';\nimport { clickOutMixin } from './click-out';\nimport { focusInMixin } from './focus-in';\nimport { idMixin, props as idProps } from './id';\nimport { listenOnRootMixin } from './listen-on-root'; // --- Constants ---\n\nvar ROOT_EVENT_NAME_SHOWN = getRootEventName(NAME_DROPDOWN, EVENT_NAME_SHOWN);\nvar ROOT_EVENT_NAME_HIDDEN = getRootEventName(NAME_DROPDOWN, EVENT_NAME_HIDDEN); // CSS selectors\n\nvar SELECTOR_FORM_CHILD = '.dropdown form';\nvar SELECTOR_ITEM = ['.dropdown-item', '.b-dropdown-form'].map(function (selector) {\n return \"\".concat(selector, \":not(.disabled):not([disabled])\");\n}).join(', '); // --- Helper methods ---\n// Return an array of visible items\n\nvar filterVisibles = function filterVisibles(els) {\n return (els || []).filter(isVisible);\n}; // --- Props ---\n\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, idProps), {}, {\n // String: `scrollParent`, `window` or `viewport`\n // HTMLElement: HTML Element reference\n boundary: makeProp([HTMLElement, PROP_TYPE_STRING], 'scrollParent'),\n disabled: makeProp(PROP_TYPE_BOOLEAN, false),\n // Place left if possible\n dropleft: makeProp(PROP_TYPE_BOOLEAN, false),\n // Place right if possible\n dropright: makeProp(PROP_TYPE_BOOLEAN, false),\n // Place on top if possible\n dropup: makeProp(PROP_TYPE_BOOLEAN, false),\n // Disable auto-flipping of menu from bottom <=> top\n noFlip: makeProp(PROP_TYPE_BOOLEAN, false),\n // Number of pixels or a CSS unit value to offset menu\n // (i.e. `1px`, `1rem`, etc.)\n offset: makeProp(PROP_TYPE_NUMBER_STRING, 0),\n popperOpts: makeProp(PROP_TYPE_OBJECT, {}),\n // Right align menu (default is left align)\n right: makeProp(PROP_TYPE_BOOLEAN, false)\n})), NAME_DROPDOWN); // --- Mixin ---\n// @vue/component\n\nexport var dropdownMixin = Vue.extend({\n mixins: [idMixin, listenOnRootMixin, clickOutMixin, focusInMixin],\n provide: function provide() {\n return {\n bvDropdown: this\n };\n },\n inject: {\n bvNavbar: {\n default: null\n }\n },\n props: props,\n data: function data() {\n return {\n visible: false,\n visibleChangePrevented: false\n };\n },\n computed: {\n inNavbar: function inNavbar() {\n return !isNull(this.bvNavbar);\n },\n toggler: function toggler() {\n var toggle = this.$refs.toggle;\n return toggle ? toggle.$el || toggle : null;\n },\n directionClass: function directionClass() {\n if (this.dropup) {\n return 'dropup';\n } else if (this.dropright) {\n return 'dropright';\n } else if (this.dropleft) {\n return 'dropleft';\n }\n\n return '';\n },\n boundaryClass: function boundaryClass() {\n // Position `static` is needed to allow menu to \"breakout\" of the `scrollParent`\n // boundaries when boundary is anything other than `scrollParent`\n // See: https://github.com/twbs/bootstrap/issues/24251#issuecomment-341413786\n return this.boundary !== 'scrollParent' && !this.inNavbar ? 'position-static' : '';\n }\n },\n watch: {\n visible: function visible(newValue, oldValue) {\n if (this.visibleChangePrevented) {\n this.visibleChangePrevented = false;\n return;\n }\n\n if (newValue !== oldValue) {\n var eventName = newValue ? EVENT_NAME_SHOW : EVENT_NAME_HIDE;\n var bvEvent = new BvEvent(eventName, {\n cancelable: true,\n vueTarget: this,\n target: this.$refs.menu,\n relatedTarget: null,\n componentId: this.safeId ? this.safeId() : this.id || null\n });\n this.emitEvent(bvEvent);\n\n if (bvEvent.defaultPrevented) {\n // Reset value and exit if canceled\n this.visibleChangePrevented = true;\n this.visible = oldValue; // Just in case a child element triggered `this.hide(true)`\n\n this.$off(EVENT_NAME_HIDDEN, this.focusToggler);\n return;\n }\n\n if (newValue) {\n this.showMenu();\n } else {\n this.hideMenu();\n }\n }\n },\n disabled: function disabled(newValue, oldValue) {\n if (newValue !== oldValue && newValue && this.visible) {\n // Hide dropdown if disabled changes to true\n this.visible = false;\n }\n }\n },\n created: function created() {\n // Create private non-reactive props\n this.$_popper = null;\n this.$_hideTimeout = null;\n },\n\n /* istanbul ignore next */\n deactivated: function deactivated() {\n // In case we are inside a ``\n this.visible = false;\n this.whileOpenListen(false);\n this.destroyPopper();\n },\n beforeDestroy: function beforeDestroy() {\n this.visible = false;\n this.whileOpenListen(false);\n this.destroyPopper();\n this.clearHideTimeout();\n },\n methods: {\n // Event emitter\n emitEvent: function emitEvent(bvEvent) {\n var type = bvEvent.type;\n this.emitOnRoot(getRootEventName(NAME_DROPDOWN, type), bvEvent);\n this.$emit(type, bvEvent);\n },\n showMenu: function showMenu() {\n var _this = this;\n\n if (this.disabled) {\n /* istanbul ignore next */\n return;\n } // Only instantiate Popper.js when dropdown is not in ``\n\n\n if (!this.inNavbar) {\n if (typeof Popper === 'undefined') {\n /* istanbul ignore next */\n warn('Popper.js not found. Falling back to CSS positioning', NAME_DROPDOWN);\n } else {\n // For dropup with alignment we use the parent element as popper container\n var el = this.dropup && this.right || this.split ? this.$el : this.$refs.toggle; // Make sure we have a reference to an element, not a component!\n\n el = el.$el || el; // Instantiate Popper.js\n\n this.createPopper(el);\n }\n } // Ensure other menus are closed\n\n\n this.emitOnRoot(ROOT_EVENT_NAME_SHOWN, this); // Enable listeners\n\n this.whileOpenListen(true); // Wrap in `$nextTick()` to ensure menu is fully rendered/shown\n\n this.$nextTick(function () {\n // Focus on the menu container on show\n _this.focusMenu(); // Emit the shown event\n\n\n _this.$emit(EVENT_NAME_SHOWN);\n });\n },\n hideMenu: function hideMenu() {\n this.whileOpenListen(false);\n this.emitOnRoot(ROOT_EVENT_NAME_HIDDEN, this);\n this.$emit(EVENT_NAME_HIDDEN);\n this.destroyPopper();\n },\n createPopper: function createPopper(element) {\n this.destroyPopper();\n this.$_popper = new Popper(element, this.$refs.menu, this.getPopperConfig());\n },\n // Ensure popper event listeners are removed cleanly\n destroyPopper: function destroyPopper() {\n this.$_popper && this.$_popper.destroy();\n this.$_popper = null;\n },\n // Instructs popper to re-computes the dropdown position\n // useful if the content changes size\n updatePopper: function updatePopper() {\n try {\n this.$_popper.scheduleUpdate();\n } catch (_unused) {}\n },\n clearHideTimeout: function clearHideTimeout() {\n clearTimeout(this.$_hideTimeout);\n this.$_hideTimeout = null;\n },\n getPopperConfig: function getPopperConfig() {\n var placement = PLACEMENT_BOTTOM_START;\n\n if (this.dropup) {\n placement = this.right ? PLACEMENT_TOP_END : PLACEMENT_TOP_START;\n } else if (this.dropright) {\n placement = PLACEMENT_RIGHT_START;\n } else if (this.dropleft) {\n placement = PLACEMENT_LEFT_START;\n } else if (this.right) {\n placement = PLACEMENT_BOTTOM_END;\n }\n\n var popperConfig = {\n placement: placement,\n modifiers: {\n offset: {\n offset: this.offset || 0\n },\n flip: {\n enabled: !this.noFlip\n }\n }\n };\n var boundariesElement = this.boundary;\n\n if (boundariesElement) {\n popperConfig.modifiers.preventOverflow = {\n boundariesElement: boundariesElement\n };\n }\n\n return mergeDeep(popperConfig, this.popperOpts || {});\n },\n // Turn listeners on/off while open\n whileOpenListen: function whileOpenListen(isOpen) {\n // Hide the dropdown when clicked outside\n this.listenForClickOut = isOpen; // Hide the dropdown when it loses focus\n\n this.listenForFocusIn = isOpen; // Hide the dropdown when another dropdown is opened\n\n var method = isOpen ? '$on' : '$off';\n this.$root[method](ROOT_EVENT_NAME_SHOWN, this.rootCloseListener);\n },\n rootCloseListener: function rootCloseListener(vm) {\n if (vm !== this) {\n this.visible = false;\n }\n },\n // Public method to show dropdown\n show: function show() {\n var _this2 = this;\n\n if (this.disabled) {\n return;\n } // Wrap in a `requestAF()` to allow any previous\n // click handling to occur first\n\n\n requestAF(function () {\n _this2.visible = true;\n });\n },\n // Public method to hide dropdown\n hide: function hide() {\n var refocus = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n /* istanbul ignore next */\n if (this.disabled) {\n return;\n }\n\n this.visible = false;\n\n if (refocus) {\n // Child element is closing the dropdown on click\n this.$once(EVENT_NAME_HIDDEN, this.focusToggler);\n }\n },\n // Called only by a button that toggles the menu\n toggle: function toggle(event) {\n event = event || {}; // Early exit when not a click event or ENTER, SPACE or DOWN were pressed\n\n var _event = event,\n type = _event.type,\n keyCode = _event.keyCode;\n\n if (type !== 'click' && !(type === 'keydown' && [CODE_ENTER, CODE_SPACE, CODE_DOWN].indexOf(keyCode) !== -1)) {\n /* istanbul ignore next */\n return;\n }\n /* istanbul ignore next */\n\n\n if (this.disabled) {\n this.visible = false;\n return;\n }\n\n this.$emit(EVENT_NAME_TOGGLE, event);\n stopEvent(event); // Toggle visibility\n\n if (this.visible) {\n this.hide(true);\n } else {\n this.show();\n }\n },\n // Mousedown handler for the toggle\n\n /* istanbul ignore next */\n onMousedown: function onMousedown(event) {\n // We prevent the 'mousedown' event for the toggle to stop the\n // 'focusin' event from being fired\n // The event would otherwise be picked up by the global 'focusin'\n // listener and there is no cross-browser solution to detect it\n // relates to the toggle click\n // The 'click' event will still be fired and we handle closing\n // other dropdowns there too\n // See https://github.com/bootstrap-vue/bootstrap-vue/issues/4328\n stopEvent(event, {\n propagation: false\n });\n },\n // Called from dropdown menu context\n onKeydown: function onKeydown(event) {\n var keyCode = event.keyCode;\n\n if (keyCode === CODE_ESC) {\n // Close on ESC\n this.onEsc(event);\n } else if (keyCode === CODE_DOWN) {\n // Down Arrow\n this.focusNext(event, false);\n } else if (keyCode === CODE_UP) {\n // Up Arrow\n this.focusNext(event, true);\n }\n },\n // If user presses ESC, close the menu\n onEsc: function onEsc(event) {\n if (this.visible) {\n this.visible = false;\n stopEvent(event); // Return focus to original trigger button\n\n this.$once(EVENT_NAME_HIDDEN, this.focusToggler);\n }\n },\n // Called only in split button mode, for the split button\n onSplitClick: function onSplitClick(event) {\n /* istanbul ignore next */\n if (this.disabled) {\n this.visible = false;\n return;\n }\n\n this.$emit(EVENT_NAME_CLICK, event);\n },\n // Shared hide handler between click-out and focus-in events\n hideHandler: function hideHandler(event) {\n var _this3 = this;\n\n var target = event.target;\n\n if (this.visible && !contains(this.$refs.menu, target) && !contains(this.toggler, target)) {\n this.clearHideTimeout();\n this.$_hideTimeout = setTimeout(function () {\n return _this3.hide();\n }, this.inNavbar ? 300 : 0);\n }\n },\n // Document click-out listener\n clickOutHandler: function clickOutHandler(event) {\n this.hideHandler(event);\n },\n // Document focus-in listener\n focusInHandler: function focusInHandler(event) {\n this.hideHandler(event);\n },\n // Keyboard nav\n focusNext: function focusNext(event, up) {\n var _this4 = this;\n\n // Ignore key up/down on form elements\n var target = event.target;\n\n if (!this.visible || event && closest(SELECTOR_FORM_CHILD, target)) {\n /* istanbul ignore next: should never happen */\n return;\n }\n\n stopEvent(event);\n this.$nextTick(function () {\n var items = _this4.getItems();\n\n if (items.length < 1) {\n /* istanbul ignore next: should never happen */\n return;\n }\n\n var index = items.indexOf(target);\n\n if (up && index > 0) {\n index--;\n } else if (!up && index < items.length - 1) {\n index++;\n }\n\n if (index < 0) {\n /* istanbul ignore next: should never happen */\n index = 0;\n }\n\n _this4.focusItem(index, items);\n });\n },\n focusItem: function focusItem(index, items) {\n var el = items.find(function (el, i) {\n return i === index;\n });\n attemptFocus(el);\n },\n getItems: function getItems() {\n // Get all items\n return filterVisibles(selectAll(SELECTOR_ITEM, this.$refs.menu));\n },\n focusMenu: function focusMenu() {\n attemptFocus(this.$refs.menu);\n },\n focusToggler: function focusToggler() {\n var _this5 = this;\n\n this.$nextTick(function () {\n attemptFocus(_this5.toggler);\n });\n }\n }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../../vue';\nimport { NAME_DROPDOWN_ITEM } from '../../constants/components';\nimport { EVENT_NAME_CLICK } from '../../constants/events';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { requestAF } from '../../utils/dom';\nimport { omit, sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { BLink, props as BLinkProps } from '../link/link'; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, omit(BLinkProps, ['event', 'routerTag'])), {}, {\n linkClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n variant: makeProp(PROP_TYPE_STRING)\n})), NAME_DROPDOWN_ITEM); // --- Main component ---\n// @vue/component\n\nexport var BDropdownItem = /*#__PURE__*/Vue.extend({\n name: NAME_DROPDOWN_ITEM,\n mixins: [attrsMixin, normalizeSlotMixin],\n inject: {\n bvDropdown: {\n default: null\n }\n },\n inheritAttrs: false,\n props: props,\n computed: {\n computedAttrs: function computedAttrs() {\n return _objectSpread(_objectSpread({}, this.bvAttrs), {}, {\n role: 'menuitem'\n });\n }\n },\n methods: {\n closeDropdown: function closeDropdown() {\n var _this = this;\n\n // Close on next animation frame to allow time to process\n requestAF(function () {\n if (_this.bvDropdown) {\n _this.bvDropdown.hide(true);\n }\n });\n },\n onClick: function onClick(event) {\n this.$emit(EVENT_NAME_CLICK, event);\n this.closeDropdown();\n }\n },\n render: function render(h) {\n var linkClass = this.linkClass,\n variant = this.variant,\n active = this.active,\n disabled = this.disabled,\n onClick = this.onClick,\n bvAttrs = this.bvAttrs;\n return h('li', {\n class: bvAttrs.class,\n style: bvAttrs.style,\n attrs: {\n role: 'presentation'\n }\n }, [h(BLink, {\n staticClass: 'dropdown-item',\n class: [linkClass, _defineProperty({}, \"text-\".concat(variant), variant && !(active || disabled))],\n props: this.$props,\n attrs: this.computedAttrs,\n on: {\n click: onClick\n },\n ref: 'item'\n }, this.normalizeSlot())]);\n }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { mergeData } from '../../vue';\nimport { NAME_ROW } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { arrayIncludes, concat } from '../../utils/array';\nimport { getBreakpointsUpCached } from '../../utils/config';\nimport { identity } from '../../utils/identity';\nimport { memoize } from '../../utils/memoize';\nimport { create, keys, sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable, suffixPropName } from '../../utils/props';\nimport { lowerCase, toString, trim } from '../../utils/string'; // --- Constants ---\n\nvar COMMON_ALIGNMENT = ['start', 'end', 'center']; // --- Helper methods ---\n// Compute a `row-cols-{breakpoint}-{cols}` class name\n// Memoized function for better performance on generating class names\n\nvar computeRowColsClass = memoize(function (breakpoint, cols) {\n cols = trim(toString(cols));\n return cols ? lowerCase(['row-cols', breakpoint, cols].filter(identity).join('-')) : null;\n}); // Get the breakpoint name from the `rowCols` prop name\n// Memoized function for better performance on extracting breakpoint names\n\nvar computeRowColsBreakpoint = memoize(function (prop) {\n return lowerCase(prop.replace('cols', ''));\n}); // Cached copy of the `row-cols` breakpoint prop names\n// Will be populated when the props are generated\n\nvar rowColsPropList = []; // --- Props ---\n// Prop generator for lazy generation of props\n\nexport var generateProps = function generateProps() {\n // i.e. 'row-cols-2', 'row-cols-md-4', 'row-cols-xl-6', ...\n var rowColsProps = getBreakpointsUpCached().reduce(function (props, breakpoint) {\n props[suffixPropName(breakpoint, 'cols')] = makeProp(PROP_TYPE_NUMBER_STRING);\n return props;\n }, create(null)); // Cache the row-cols prop names\n\n rowColsPropList = keys(rowColsProps); // Return the generated props\n\n return makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, rowColsProps), {}, {\n alignContent: makeProp(PROP_TYPE_STRING, null, function (value) {\n return arrayIncludes(concat(COMMON_ALIGNMENT, 'between', 'around', 'stretch'), value);\n }),\n alignH: makeProp(PROP_TYPE_STRING, null, function (value) {\n return arrayIncludes(concat(COMMON_ALIGNMENT, 'between', 'around'), value);\n }),\n alignV: makeProp(PROP_TYPE_STRING, null, function (value) {\n return arrayIncludes(concat(COMMON_ALIGNMENT, 'baseline', 'stretch'), value);\n }),\n noGutters: makeProp(PROP_TYPE_BOOLEAN, false),\n tag: makeProp(PROP_TYPE_STRING, 'div')\n })), NAME_ROW);\n}; // --- Main component ---\n// We do not use `Vue.extend()` here as that would evaluate the props\n// immediately, which we do not want to happen\n// @vue/component\n\nexport var BRow = {\n name: NAME_ROW,\n functional: true,\n\n get props() {\n // Allow props to be lazy evaled on first access and\n // then they become a non-getter afterwards\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/get#Smart_self-overwriting_lazy_getters\n delete this.props;\n this.props = generateProps();\n return this.props;\n },\n\n render: function render(h, _ref) {\n var _classList$push;\n\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var alignV = props.alignV,\n alignH = props.alignH,\n alignContent = props.alignContent; // Loop through row-cols breakpoint props and generate the classes\n\n var classList = [];\n rowColsPropList.forEach(function (prop) {\n var c = computeRowColsClass(computeRowColsBreakpoint(prop), props[prop]); // If a class is returned, push it onto the array\n\n if (c) {\n classList.push(c);\n }\n });\n classList.push((_classList$push = {\n 'no-gutters': props.noGutters\n }, _defineProperty(_classList$push, \"align-items-\".concat(alignV), alignV), _defineProperty(_classList$push, \"justify-content-\".concat(alignH), alignH), _defineProperty(_classList$push, \"align-content-\".concat(alignContent), alignContent), _classList$push));\n return h(props.tag, mergeData(data, {\n staticClass: 'row',\n class: classList\n }), children);\n }\n};","import { Vue } from '../vue';\nimport { PROP_TYPE_BOOLEAN } from '../constants/props';\nimport { makeProp, makePropsConfigurable } from '../utils/props'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n plain: makeProp(PROP_TYPE_BOOLEAN, false)\n}, 'formControls'); // --- Mixin ---\n// @vue/component\n\nexport var formCustomMixin = Vue.extend({\n props: props,\n computed: {\n custom: function custom() {\n return !this.plain;\n }\n }\n});","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/@vue/cli-service/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!./all-users-table.vue?vue&type=style&index=0&lang=scss&\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/@vue/cli-service/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!./all-users-table.vue?vue&type=style&index=0&lang=scss&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/@vue/cli-service/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!./BCardActions.vue?vue&type=style&index=0&id=623d1c43&lang=scss&scoped=true&\"","export const heightTransition = {\n /*\n\n HowTo:\n 1. Add dynamic style to element and set style as `trHeight`\n 2. Set transition speed using `transition: 0.35s height;` <= you can use appropriate value;\n 3. Optionally you can set `overflow: hidden;` to hide element overflow while height is animated.\n 4. Set initial height using `trSetHeight` before any operation. [mounted hook is recommended - You can use `ref` for dynamic contents]\n 5. Toggle height using height operations 🍻\n 6. Toggle usage of $nextTick for height operations is any issue occur [experimental] 🔬\n\n */\n\n data() {\n return {\n trHeight: null,\n }\n },\n methods: {\n trAddHeight(val) {\n // Add height to existing height\n // Usage: Where new element is append or more height is added (e.g. list append)\n\n /* Assumes:\n - Height is assigned and is `String`\n - Incoming value is valid number in `Number` or `String`\n */\n const heightValue = Number(this.trHeight.substring(0, this.trHeight.length - 2))\n this.trHeight = `${heightValue + Number(val)}px`\n },\n trTrimHeight(val) {\n // Remove height from existing height\n // Usage: Where new element is removed or height is remove (e.g. list pop/ele remove)\n\n /* Assumes:\n - Height is assigned and is `String`\n - Incoming value is valid number in `Number` or `String`\n */\n const heightValue = Number(this.trHeight.substring(0, this.trHeight.length - 2))\n this.trHeight = `${heightValue - Number(val)}px`\n },\n trSetHeight(val) {\n // Set height\n // Usage: Mostly for assigning initial value from mounted hook\n\n /* Assumes:\n - Height is not assigned and what to assign for add/remove operation\n - What to set height at something for odd usage\n - Incoming value is valid number in `Number` or `String`\n */\n if (val === null) this.trHeight = 'auto'\n else this.trHeight = `${Number(val)}px`\n },\n },\n}\n\n// Ignore below for now. We will remove it when we add more transition in future.\nexport const _ = null\n","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/@vue/cli-service/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!./all-users-table.vue?vue&type=style&index=0&lang=scss&\"","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../../vue';\nimport { NAME_DROPDOWN } from '../../constants/components';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_BOOLEAN, PROP_TYPE_OBJECT_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_BUTTON_CONTENT, SLOT_NAME_DEFAULT } from '../../constants/slots';\nimport { arrayIncludes } from '../../utils/array';\nimport { htmlOrText } from '../../utils/html';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { toString } from '../../utils/string';\nimport { dropdownMixin, props as dropdownProps } from '../../mixins/dropdown';\nimport { idMixin, props as idProps } from '../../mixins/id';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { BButton } from '../button/button';\nimport { sortKeys } from '../../utils/object'; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread({}, idProps), dropdownProps), {}, {\n block: makeProp(PROP_TYPE_BOOLEAN, false),\n html: makeProp(PROP_TYPE_STRING),\n // If `true`, only render menu contents when open\n lazy: makeProp(PROP_TYPE_BOOLEAN, false),\n menuClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n noCaret: makeProp(PROP_TYPE_BOOLEAN, false),\n role: makeProp(PROP_TYPE_STRING, 'menu'),\n size: makeProp(PROP_TYPE_STRING),\n split: makeProp(PROP_TYPE_BOOLEAN, false),\n splitButtonType: makeProp(PROP_TYPE_STRING, 'button', function (value) {\n return arrayIncludes(['button', 'submit', 'reset'], value);\n }),\n splitClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n splitHref: makeProp(PROP_TYPE_STRING),\n splitTo: makeProp(PROP_TYPE_OBJECT_STRING),\n splitVariant: makeProp(PROP_TYPE_STRING),\n text: makeProp(PROP_TYPE_STRING),\n toggleClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n toggleTag: makeProp(PROP_TYPE_STRING, 'button'),\n // TODO: This really should be `toggleLabel`\n toggleText: makeProp(PROP_TYPE_STRING, 'Toggle dropdown'),\n variant: makeProp(PROP_TYPE_STRING, 'secondary')\n})), NAME_DROPDOWN); // --- Main component ---\n// @vue/component\n\nexport var BDropdown = /*#__PURE__*/Vue.extend({\n name: NAME_DROPDOWN,\n mixins: [idMixin, dropdownMixin, normalizeSlotMixin],\n props: props,\n computed: {\n dropdownClasses: function dropdownClasses() {\n var block = this.block,\n split = this.split;\n return [this.directionClass, this.boundaryClass, {\n show: this.visible,\n // The 'btn-group' class is required in `split` mode for button alignment\n // It needs also to be applied when `block` is disabled to allow multiple\n // dropdowns to be aligned one line\n 'btn-group': split || !block,\n // When `block` is enabled and we are in `split` mode the 'd-flex' class\n // needs to be applied to allow the buttons to stretch to full width\n 'd-flex': block && split\n }];\n },\n menuClasses: function menuClasses() {\n return [this.menuClass, {\n 'dropdown-menu-right': this.right,\n show: this.visible\n }];\n },\n toggleClasses: function toggleClasses() {\n var split = this.split;\n return [this.toggleClass, {\n 'dropdown-toggle-split': split,\n 'dropdown-toggle-no-caret': this.noCaret && !split\n }];\n }\n },\n render: function render(h) {\n var visible = this.visible,\n variant = this.variant,\n size = this.size,\n block = this.block,\n disabled = this.disabled,\n split = this.split,\n role = this.role,\n hide = this.hide,\n toggle = this.toggle;\n var commonProps = {\n variant: variant,\n size: size,\n block: block,\n disabled: disabled\n };\n var $buttonChildren = this.normalizeSlot(SLOT_NAME_BUTTON_CONTENT);\n var buttonContentDomProps = this.hasNormalizedSlot(SLOT_NAME_BUTTON_CONTENT) ? {} : htmlOrText(this.html, this.text);\n var $split = h();\n\n if (split) {\n var splitTo = this.splitTo,\n splitHref = this.splitHref,\n splitButtonType = this.splitButtonType;\n\n var btnProps = _objectSpread(_objectSpread({}, commonProps), {}, {\n variant: this.splitVariant || variant\n }); // We add these as needed due to issues with\n // defined property with `undefined`/`null` values\n\n\n if (splitTo) {\n btnProps.to = splitTo;\n } else if (splitHref) {\n btnProps.href = splitHref;\n } else if (splitButtonType) {\n btnProps.type = splitButtonType;\n }\n\n $split = h(BButton, {\n class: this.splitClass,\n attrs: {\n id: this.safeId('_BV_button_')\n },\n props: btnProps,\n domProps: buttonContentDomProps,\n on: {\n click: this.onSplitClick\n },\n ref: 'button'\n }, $buttonChildren); // Overwrite button content for the toggle when in `split` mode\n\n $buttonChildren = [h('span', {\n class: ['sr-only']\n }, [this.toggleText])];\n buttonContentDomProps = {};\n }\n\n var $toggle = h(BButton, {\n staticClass: 'dropdown-toggle',\n class: this.toggleClasses,\n attrs: {\n id: this.safeId('_BV_toggle_'),\n 'aria-haspopup': 'true',\n 'aria-expanded': toString(visible)\n },\n props: _objectSpread(_objectSpread({}, commonProps), {}, {\n tag: this.toggleTag,\n block: block && !split\n }),\n domProps: buttonContentDomProps,\n on: {\n mousedown: this.onMousedown,\n click: toggle,\n keydown: toggle // Handle ENTER, SPACE and DOWN\n\n },\n ref: 'toggle'\n }, $buttonChildren);\n var $menu = h('ul', {\n staticClass: 'dropdown-menu',\n class: this.menuClasses,\n attrs: {\n role: role,\n tabindex: '-1',\n 'aria-labelledby': this.safeId(split ? '_BV_button_' : '_BV_toggle_')\n },\n on: {\n keydown: this.onKeydown // Handle UP, DOWN and ESC\n\n },\n ref: 'menu'\n }, [!this.lazy || visible ? this.normalizeSlot(SLOT_NAME_DEFAULT, {\n hide: hide\n }) : h()]);\n return h('div', {\n staticClass: 'dropdown b-dropdown',\n class: this.dropdownClasses,\n attrs: {\n id: this.safeId()\n }\n }, [$split, $toggle, $menu]);\n }\n});","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/@vue/cli-service/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!./all-users-cards.vue?vue&type=style&index=0&lang=scss&\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/@vue/cli-service/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!./all-users-cards.vue?vue&type=style&index=0&lang=scss&\"","function webpackEmptyContext(req) {\n\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\te.code = 'MODULE_NOT_FOUND';\n\tthrow e;\n}\nwebpackEmptyContext.keys = function() { return []; };\nwebpackEmptyContext.resolve = webpackEmptyContext;\nmodule.exports = webpackEmptyContext;\nwebpackEmptyContext.id = \"e907\";","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue, mergeData } from '../../vue';\nimport { NAME_BADGE } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../constants/props';\nimport { omit, sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable, pluckProps } from '../../utils/props';\nimport { isLink } from '../../utils/router';\nimport { BLink, props as BLinkProps } from '../link/link'; // --- Props ---\n\nvar linkProps = omit(BLinkProps, ['event', 'routerTag']);\ndelete linkProps.href.default;\ndelete linkProps.to.default;\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, linkProps), {}, {\n pill: makeProp(PROP_TYPE_BOOLEAN, false),\n tag: makeProp(PROP_TYPE_STRING, 'span'),\n variant: makeProp(PROP_TYPE_STRING, 'secondary')\n})), NAME_BADGE); // --- Main component ---\n// @vue/component\n\nexport var BBadge = /*#__PURE__*/Vue.extend({\n name: NAME_BADGE,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var active = props.active,\n disabled = props.disabled;\n var link = isLink(props);\n var tag = link ? BLink : props.tag;\n var variant = props.variant || 'secondary';\n return h(tag, mergeData(data, {\n staticClass: 'badge',\n class: [\"badge-\".concat(variant), {\n 'badge-pill': props.pill,\n active: active,\n disabled: disabled\n }],\n props: link ? pluckProps(linkProps, props) : {}\n }), children);\n }\n});","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/@vue/cli-service/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!./all-users-cards.vue?vue&type=style&index=0&lang=scss&\"","/**!\n * @fileOverview Kickass library to create and place poppers near their reference elements.\n * @version 1.16.1\n * @license\n * Copyright (c) 2016 Federico Zivolo and contributors\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && typeof navigator !== 'undefined';\n\nvar timeoutDuration = function () {\n var longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\n for (var i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n return 1;\n }\n }\n return 0;\n}();\n\nfunction microtaskDebounce(fn) {\n var called = false;\n return function () {\n if (called) {\n return;\n }\n called = true;\n window.Promise.resolve().then(function () {\n called = false;\n fn();\n });\n };\n}\n\nfunction taskDebounce(fn) {\n var scheduled = false;\n return function () {\n if (!scheduled) {\n scheduled = true;\n setTimeout(function () {\n scheduled = false;\n fn();\n }, timeoutDuration);\n }\n };\n}\n\nvar supportsMicroTasks = isBrowser && window.Promise;\n\n/**\n* Create a debounced version of a method, that's asynchronously deferred\n* but called in the minimum time possible.\n*\n* @method\n* @memberof Popper.Utils\n* @argument {Function} fn\n* @returns {Function}\n*/\nvar debounce = supportsMicroTasks ? microtaskDebounce : taskDebounce;\n\n/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\nfunction isFunction(functionToCheck) {\n var getType = {};\n return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';\n}\n\n/**\n * Get CSS computed property of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Eement} element\n * @argument {String} property\n */\nfunction getStyleComputedProperty(element, property) {\n if (element.nodeType !== 1) {\n return [];\n }\n // NOTE: 1 DOM access here\n var window = element.ownerDocument.defaultView;\n var css = window.getComputedStyle(element, null);\n return property ? css[property] : css;\n}\n\n/**\n * Returns the parentNode or the host of the element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} parent\n */\nfunction getParentNode(element) {\n if (element.nodeName === 'HTML') {\n return element;\n }\n return element.parentNode || element.host;\n}\n\n/**\n * Returns the scrolling parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} scroll parent\n */\nfunction getScrollParent(element) {\n // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n if (!element) {\n return document.body;\n }\n\n switch (element.nodeName) {\n case 'HTML':\n case 'BODY':\n return element.ownerDocument.body;\n case '#document':\n return element.body;\n }\n\n // Firefox want us to check `-x` and `-y` variations as well\n\n var _getStyleComputedProp = getStyleComputedProperty(element),\n overflow = _getStyleComputedProp.overflow,\n overflowX = _getStyleComputedProp.overflowX,\n overflowY = _getStyleComputedProp.overflowY;\n\n if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) {\n return element;\n }\n\n return getScrollParent(getParentNode(element));\n}\n\n/**\n * Returns the reference node of the reference object, or the reference object itself.\n * @method\n * @memberof Popper.Utils\n * @param {Element|Object} reference - the reference element (the popper will be relative to this)\n * @returns {Element} parent\n */\nfunction getReferenceNode(reference) {\n return reference && reference.referenceNode ? reference.referenceNode : reference;\n}\n\nvar isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode);\nvar isIE10 = isBrowser && /MSIE 10/.test(navigator.userAgent);\n\n/**\n * Determines if the browser is Internet Explorer\n * @method\n * @memberof Popper.Utils\n * @param {Number} version to check\n * @returns {Boolean} isIE\n */\nfunction isIE(version) {\n if (version === 11) {\n return isIE11;\n }\n if (version === 10) {\n return isIE10;\n }\n return isIE11 || isIE10;\n}\n\n/**\n * Returns the offset parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} offset parent\n */\nfunction getOffsetParent(element) {\n if (!element) {\n return document.documentElement;\n }\n\n var noOffsetParent = isIE(10) ? document.body : null;\n\n // NOTE: 1 DOM access here\n var offsetParent = element.offsetParent || null;\n // Skip hidden elements which don't have an offsetParent\n while (offsetParent === noOffsetParent && element.nextElementSibling) {\n offsetParent = (element = element.nextElementSibling).offsetParent;\n }\n\n var nodeName = offsetParent && offsetParent.nodeName;\n\n if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n return element ? element.ownerDocument.documentElement : document.documentElement;\n }\n\n // .offsetParent will return the closest TH, TD or TABLE in case\n // no offsetParent is present, I hate this job...\n if (['TH', 'TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 && getStyleComputedProperty(offsetParent, 'position') === 'static') {\n return getOffsetParent(offsetParent);\n }\n\n return offsetParent;\n}\n\nfunction isOffsetContainer(element) {\n var nodeName = element.nodeName;\n\n if (nodeName === 'BODY') {\n return false;\n }\n return nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element;\n}\n\n/**\n * Finds the root node (document, shadowDOM root) of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} node\n * @returns {Element} root node\n */\nfunction getRoot(node) {\n if (node.parentNode !== null) {\n return getRoot(node.parentNode);\n }\n\n return node;\n}\n\n/**\n * Finds the offset parent common to the two provided nodes\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element1\n * @argument {Element} element2\n * @returns {Element} common offset parent\n */\nfunction findCommonOffsetParent(element1, element2) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n return document.documentElement;\n }\n\n // Here we make sure to give as \"start\" the element that comes first in the DOM\n var order = element1.compareDocumentPosition(element2) & Node.DOCUMENT_POSITION_FOLLOWING;\n var start = order ? element1 : element2;\n var end = order ? element2 : element1;\n\n // Get common ancestor container\n var range = document.createRange();\n range.setStart(start, 0);\n range.setEnd(end, 0);\n var commonAncestorContainer = range.commonAncestorContainer;\n\n // Both nodes are inside #document\n\n if (element1 !== commonAncestorContainer && element2 !== commonAncestorContainer || start.contains(end)) {\n if (isOffsetContainer(commonAncestorContainer)) {\n return commonAncestorContainer;\n }\n\n return getOffsetParent(commonAncestorContainer);\n }\n\n // one of the nodes is inside shadowDOM, find which one\n var element1root = getRoot(element1);\n if (element1root.host) {\n return findCommonOffsetParent(element1root.host, element2);\n } else {\n return findCommonOffsetParent(element1, getRoot(element2).host);\n }\n}\n\n/**\n * Gets the scroll value of the given element in the given side (top and left)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {String} side `top` or `left`\n * @returns {number} amount of scrolled pixels\n */\nfunction getScroll(element) {\n var side = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'top';\n\n var upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n var nodeName = element.nodeName;\n\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n var html = element.ownerDocument.documentElement;\n var scrollingElement = element.ownerDocument.scrollingElement || html;\n return scrollingElement[upperSide];\n }\n\n return element[upperSide];\n}\n\n/*\n * Sum or subtract the element scroll values (left and top) from a given rect object\n * @method\n * @memberof Popper.Utils\n * @param {Object} rect - Rect object you want to change\n * @param {HTMLElement} element - The element from the function reads the scroll values\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n * @return {Object} rect - The modifier rect object\n */\nfunction includeScroll(rect, element) {\n var subtract = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var scrollTop = getScroll(element, 'top');\n var scrollLeft = getScroll(element, 'left');\n var modifier = subtract ? -1 : 1;\n rect.top += scrollTop * modifier;\n rect.bottom += scrollTop * modifier;\n rect.left += scrollLeft * modifier;\n rect.right += scrollLeft * modifier;\n return rect;\n}\n\n/*\n * Helper to detect borders of a given element\n * @method\n * @memberof Popper.Utils\n * @param {CSSStyleDeclaration} styles\n * Result of `getStyleComputedProperty` on the given element\n * @param {String} axis - `x` or `y`\n * @return {number} borders - The borders size of the given axis\n */\n\nfunction getBordersSize(styles, axis) {\n var sideA = axis === 'x' ? 'Left' : 'Top';\n var sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n\n return parseFloat(styles['border' + sideA + 'Width']) + parseFloat(styles['border' + sideB + 'Width']);\n}\n\nfunction getSize(axis, body, html, computedStyle) {\n return Math.max(body['offset' + axis], body['scroll' + axis], html['client' + axis], html['offset' + axis], html['scroll' + axis], isIE(10) ? parseInt(html['offset' + axis]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Top' : 'Left')]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Bottom' : 'Right')]) : 0);\n}\n\nfunction getWindowSizes(document) {\n var body = document.body;\n var html = document.documentElement;\n var computedStyle = isIE(10) && getComputedStyle(html);\n\n return {\n height: getSize('Height', body, html, computedStyle),\n width: getSize('Width', body, html, computedStyle)\n };\n}\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\n\n\n\n\nvar defineProperty = function (obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n};\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\n/**\n * Given element offsets, generate an output similar to getBoundingClientRect\n * @method\n * @memberof Popper.Utils\n * @argument {Object} offsets\n * @returns {Object} ClientRect like output\n */\nfunction getClientRect(offsets) {\n return _extends({}, offsets, {\n right: offsets.left + offsets.width,\n bottom: offsets.top + offsets.height\n });\n}\n\n/**\n * Get bounding client rect of given element\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} element\n * @return {Object} client rect\n */\nfunction getBoundingClientRect(element) {\n var rect = {};\n\n // IE10 10 FIX: Please, don't ask, the element isn't\n // considered in DOM in some circumstances...\n // This isn't reproducible in IE10 compatibility mode of IE11\n try {\n if (isIE(10)) {\n rect = element.getBoundingClientRect();\n var scrollTop = getScroll(element, 'top');\n var scrollLeft = getScroll(element, 'left');\n rect.top += scrollTop;\n rect.left += scrollLeft;\n rect.bottom += scrollTop;\n rect.right += scrollLeft;\n } else {\n rect = element.getBoundingClientRect();\n }\n } catch (e) {}\n\n var result = {\n left: rect.left,\n top: rect.top,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top\n };\n\n // subtract scrollbar size from sizes\n var sizes = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : {};\n var width = sizes.width || element.clientWidth || result.width;\n var height = sizes.height || element.clientHeight || result.height;\n\n var horizScrollbar = element.offsetWidth - width;\n var vertScrollbar = element.offsetHeight - height;\n\n // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n // we make this check conditional for performance reasons\n if (horizScrollbar || vertScrollbar) {\n var styles = getStyleComputedProperty(element);\n horizScrollbar -= getBordersSize(styles, 'x');\n vertScrollbar -= getBordersSize(styles, 'y');\n\n result.width -= horizScrollbar;\n result.height -= vertScrollbar;\n }\n\n return getClientRect(result);\n}\n\nfunction getOffsetRectRelativeToArbitraryNode(children, parent) {\n var fixedPosition = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var isIE10 = isIE(10);\n var isHTML = parent.nodeName === 'HTML';\n var childrenRect = getBoundingClientRect(children);\n var parentRect = getBoundingClientRect(parent);\n var scrollParent = getScrollParent(children);\n\n var styles = getStyleComputedProperty(parent);\n var borderTopWidth = parseFloat(styles.borderTopWidth);\n var borderLeftWidth = parseFloat(styles.borderLeftWidth);\n\n // In cases where the parent is fixed, we must ignore negative scroll in offset calc\n if (fixedPosition && isHTML) {\n parentRect.top = Math.max(parentRect.top, 0);\n parentRect.left = Math.max(parentRect.left, 0);\n }\n var offsets = getClientRect({\n top: childrenRect.top - parentRect.top - borderTopWidth,\n left: childrenRect.left - parentRect.left - borderLeftWidth,\n width: childrenRect.width,\n height: childrenRect.height\n });\n offsets.marginTop = 0;\n offsets.marginLeft = 0;\n\n // Subtract margins of documentElement in case it's being used as parent\n // we do this only on HTML because it's the only element that behaves\n // differently when margins are applied to it. The margins are included in\n // the box of the documentElement, in the other cases not.\n if (!isIE10 && isHTML) {\n var marginTop = parseFloat(styles.marginTop);\n var marginLeft = parseFloat(styles.marginLeft);\n\n offsets.top -= borderTopWidth - marginTop;\n offsets.bottom -= borderTopWidth - marginTop;\n offsets.left -= borderLeftWidth - marginLeft;\n offsets.right -= borderLeftWidth - marginLeft;\n\n // Attach marginTop and marginLeft because in some circumstances we may need them\n offsets.marginTop = marginTop;\n offsets.marginLeft = marginLeft;\n }\n\n if (isIE10 && !fixedPosition ? parent.contains(scrollParent) : parent === scrollParent && scrollParent.nodeName !== 'BODY') {\n offsets = includeScroll(offsets, parent);\n }\n\n return offsets;\n}\n\nfunction getViewportOffsetRectRelativeToArtbitraryNode(element) {\n var excludeScroll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var html = element.ownerDocument.documentElement;\n var relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n var width = Math.max(html.clientWidth, window.innerWidth || 0);\n var height = Math.max(html.clientHeight, window.innerHeight || 0);\n\n var scrollTop = !excludeScroll ? getScroll(html) : 0;\n var scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0;\n\n var offset = {\n top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n width: width,\n height: height\n };\n\n return getClientRect(offset);\n}\n\n/**\n * Check if the given element is fixed or is inside a fixed parent\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {Element} customContainer\n * @returns {Boolean} answer to \"isFixed?\"\n */\nfunction isFixed(element) {\n var nodeName = element.nodeName;\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n return false;\n }\n if (getStyleComputedProperty(element, 'position') === 'fixed') {\n return true;\n }\n var parentNode = getParentNode(element);\n if (!parentNode) {\n return false;\n }\n return isFixed(parentNode);\n}\n\n/**\n * Finds the first parent of an element that has a transformed property defined\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} first transformed parent or documentElement\n */\n\nfunction getFixedPositionOffsetParent(element) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element || !element.parentElement || isIE()) {\n return document.documentElement;\n }\n var el = element.parentElement;\n while (el && getStyleComputedProperty(el, 'transform') === 'none') {\n el = el.parentElement;\n }\n return el || document.documentElement;\n}\n\n/**\n * Computed the boundaries limits and return them\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} popper\n * @param {HTMLElement} reference\n * @param {number} padding\n * @param {HTMLElement} boundariesElement - Element used to define the boundaries\n * @param {Boolean} fixedPosition - Is in fixed position mode\n * @returns {Object} Coordinates of the boundaries\n */\nfunction getBoundaries(popper, reference, padding, boundariesElement) {\n var fixedPosition = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\n // NOTE: 1 DOM access here\n\n var boundaries = { top: 0, left: 0 };\n var offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n\n // Handle viewport case\n if (boundariesElement === 'viewport') {\n boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition);\n } else {\n // Handle other cases based on DOM element used as boundaries\n var boundariesNode = void 0;\n if (boundariesElement === 'scrollParent') {\n boundariesNode = getScrollParent(getParentNode(reference));\n if (boundariesNode.nodeName === 'BODY') {\n boundariesNode = popper.ownerDocument.documentElement;\n }\n } else if (boundariesElement === 'window') {\n boundariesNode = popper.ownerDocument.documentElement;\n } else {\n boundariesNode = boundariesElement;\n }\n\n var offsets = getOffsetRectRelativeToArbitraryNode(boundariesNode, offsetParent, fixedPosition);\n\n // In case of HTML, we need a different computation\n if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n var _getWindowSizes = getWindowSizes(popper.ownerDocument),\n height = _getWindowSizes.height,\n width = _getWindowSizes.width;\n\n boundaries.top += offsets.top - offsets.marginTop;\n boundaries.bottom = height + offsets.top;\n boundaries.left += offsets.left - offsets.marginLeft;\n boundaries.right = width + offsets.left;\n } else {\n // for all the other DOM elements, this one is good\n boundaries = offsets;\n }\n }\n\n // Add paddings\n padding = padding || 0;\n var isPaddingNumber = typeof padding === 'number';\n boundaries.left += isPaddingNumber ? padding : padding.left || 0;\n boundaries.top += isPaddingNumber ? padding : padding.top || 0;\n boundaries.right -= isPaddingNumber ? padding : padding.right || 0;\n boundaries.bottom -= isPaddingNumber ? padding : padding.bottom || 0;\n\n return boundaries;\n}\n\nfunction getArea(_ref) {\n var width = _ref.width,\n height = _ref.height;\n\n return width * height;\n}\n\n/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n * @method\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction computeAutoPlacement(placement, refRect, popper, reference, boundariesElement) {\n var padding = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;\n\n if (placement.indexOf('auto') === -1) {\n return placement;\n }\n\n var boundaries = getBoundaries(popper, reference, padding, boundariesElement);\n\n var rects = {\n top: {\n width: boundaries.width,\n height: refRect.top - boundaries.top\n },\n right: {\n width: boundaries.right - refRect.right,\n height: boundaries.height\n },\n bottom: {\n width: boundaries.width,\n height: boundaries.bottom - refRect.bottom\n },\n left: {\n width: refRect.left - boundaries.left,\n height: boundaries.height\n }\n };\n\n var sortedAreas = Object.keys(rects).map(function (key) {\n return _extends({\n key: key\n }, rects[key], {\n area: getArea(rects[key])\n });\n }).sort(function (a, b) {\n return b.area - a.area;\n });\n\n var filteredAreas = sortedAreas.filter(function (_ref2) {\n var width = _ref2.width,\n height = _ref2.height;\n return width >= popper.clientWidth && height >= popper.clientHeight;\n });\n\n var computedPlacement = filteredAreas.length > 0 ? filteredAreas[0].key : sortedAreas[0].key;\n\n var variation = placement.split('-')[1];\n\n return computedPlacement + (variation ? '-' + variation : '');\n}\n\n/**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @param {Element} fixedPosition - is in fixed position mode\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\nfunction getReferenceOffsets(state, popper, reference) {\n var fixedPosition = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n\n var commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition);\n}\n\n/**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\nfunction getOuterSizes(element) {\n var window = element.ownerDocument.defaultView;\n var styles = window.getComputedStyle(element);\n var x = parseFloat(styles.marginTop || 0) + parseFloat(styles.marginBottom || 0);\n var y = parseFloat(styles.marginLeft || 0) + parseFloat(styles.marginRight || 0);\n var result = {\n width: element.offsetWidth + y,\n height: element.offsetHeight + x\n };\n return result;\n}\n\n/**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\nfunction getOppositePlacement(placement) {\n var hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}\n\n/**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\nfunction getPopperOffsets(popper, referenceOffsets, placement) {\n placement = placement.split('-')[0];\n\n // Get popper node sizes\n var popperRect = getOuterSizes(popper);\n\n // Add position, width and height to our offsets object\n var popperOffsets = {\n width: popperRect.width,\n height: popperRect.height\n };\n\n // depending by the popper placement we have to compute its offsets slightly differently\n var isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n var mainSide = isHoriz ? 'top' : 'left';\n var secondarySide = isHoriz ? 'left' : 'top';\n var measurement = isHoriz ? 'height' : 'width';\n var secondaryMeasurement = !isHoriz ? 'height' : 'width';\n\n popperOffsets[mainSide] = referenceOffsets[mainSide] + referenceOffsets[measurement] / 2 - popperRect[measurement] / 2;\n if (placement === secondarySide) {\n popperOffsets[secondarySide] = referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n } else {\n popperOffsets[secondarySide] = referenceOffsets[getOppositePlacement(secondarySide)];\n }\n\n return popperOffsets;\n}\n\n/**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nfunction find(arr, check) {\n // use native find if supported\n if (Array.prototype.find) {\n return arr.find(check);\n }\n\n // use `filter` to obtain the same behavior of `find`\n return arr.filter(check)[0];\n}\n\n/**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nfunction findIndex(arr, prop, value) {\n // use native findIndex if supported\n if (Array.prototype.findIndex) {\n return arr.findIndex(function (cur) {\n return cur[prop] === value;\n });\n }\n\n // use `find` + `indexOf` if `findIndex` isn't supported\n var match = find(arr, function (obj) {\n return obj[prop] === value;\n });\n return arr.indexOf(match);\n}\n\n/**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\nfunction runModifiers(modifiers, data, ends) {\n var modifiersToRun = ends === undefined ? modifiers : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n\n modifiersToRun.forEach(function (modifier) {\n if (modifier['function']) {\n // eslint-disable-line dot-notation\n console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n }\n var fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n if (modifier.enabled && isFunction(fn)) {\n // Add properties to offsets to make them a complete clientRect object\n // we do this before each modifier to make sure the previous one doesn't\n // mess with these values\n data.offsets.popper = getClientRect(data.offsets.popper);\n data.offsets.reference = getClientRect(data.offsets.reference);\n\n data = fn(data, modifier);\n }\n });\n\n return data;\n}\n\n/**\n * Updates the position of the popper, computing the new offsets and applying\n * the new style.\n * Prefer `scheduleUpdate` over `update` because of performance reasons.\n * @method\n * @memberof Popper\n */\nfunction update() {\n // if popper is destroyed, don't perform any further update\n if (this.state.isDestroyed) {\n return;\n }\n\n var data = {\n instance: this,\n styles: {},\n arrowStyles: {},\n attributes: {},\n flipped: false,\n offsets: {}\n };\n\n // compute reference element offsets\n data.offsets.reference = getReferenceOffsets(this.state, this.popper, this.reference, this.options.positionFixed);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n data.placement = computeAutoPlacement(this.options.placement, data.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding);\n\n // store the computed placement inside `originalPlacement`\n data.originalPlacement = data.placement;\n\n data.positionFixed = this.options.positionFixed;\n\n // compute the popper offsets\n data.offsets.popper = getPopperOffsets(this.popper, data.offsets.reference, data.placement);\n\n data.offsets.popper.position = this.options.positionFixed ? 'fixed' : 'absolute';\n\n // run the modifiers\n data = runModifiers(this.modifiers, data);\n\n // the first `update` will call `onCreate` callback\n // the other ones will call `onUpdate` callback\n if (!this.state.isCreated) {\n this.state.isCreated = true;\n this.options.onCreate(data);\n } else {\n this.options.onUpdate(data);\n }\n}\n\n/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\nfunction isModifierEnabled(modifiers, modifierName) {\n return modifiers.some(function (_ref) {\n var name = _ref.name,\n enabled = _ref.enabled;\n return enabled && name === modifierName;\n });\n}\n\n/**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\nfunction getSupportedPropertyName(property) {\n var prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n var upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n for (var i = 0; i < prefixes.length; i++) {\n var prefix = prefixes[i];\n var toCheck = prefix ? '' + prefix + upperProp : property;\n if (typeof document.body.style[toCheck] !== 'undefined') {\n return toCheck;\n }\n }\n return null;\n}\n\n/**\n * Destroys the popper.\n * @method\n * @memberof Popper\n */\nfunction destroy() {\n this.state.isDestroyed = true;\n\n // touch DOM only if `applyStyle` modifier is enabled\n if (isModifierEnabled(this.modifiers, 'applyStyle')) {\n this.popper.removeAttribute('x-placement');\n this.popper.style.position = '';\n this.popper.style.top = '';\n this.popper.style.left = '';\n this.popper.style.right = '';\n this.popper.style.bottom = '';\n this.popper.style.willChange = '';\n this.popper.style[getSupportedPropertyName('transform')] = '';\n }\n\n this.disableEventListeners();\n\n // remove the popper if user explicitly asked for the deletion on destroy\n // do not use `remove` because IE11 doesn't support it\n if (this.options.removeOnDestroy) {\n this.popper.parentNode.removeChild(this.popper);\n }\n return this;\n}\n\n/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\nfunction getWindow(element) {\n var ownerDocument = element.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView : window;\n}\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n var isBody = scrollParent.nodeName === 'BODY';\n var target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n target.addEventListener(event, callback, { passive: true });\n\n if (!isBody) {\n attachToScrollParents(getScrollParent(target.parentNode), event, callback, scrollParents);\n }\n scrollParents.push(target);\n}\n\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction setupEventListeners(reference, options, state, updateBound) {\n // Resize event listener on window\n state.updateBound = updateBound;\n getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });\n\n // Scroll event listener on scroll parents\n var scrollElement = getScrollParent(reference);\n attachToScrollParents(scrollElement, 'scroll', state.updateBound, state.scrollParents);\n state.scrollElement = scrollElement;\n state.eventsEnabled = true;\n\n return state;\n}\n\n/**\n * It will add resize/scroll events and start recalculating\n * position of the popper element when they are triggered.\n * @method\n * @memberof Popper\n */\nfunction enableEventListeners() {\n if (!this.state.eventsEnabled) {\n this.state = setupEventListeners(this.reference, this.options, this.state, this.scheduleUpdate);\n }\n}\n\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction removeEventListeners(reference, state) {\n // Remove resize event listener on window\n getWindow(reference).removeEventListener('resize', state.updateBound);\n\n // Remove scroll event listener on scroll parents\n state.scrollParents.forEach(function (target) {\n target.removeEventListener('scroll', state.updateBound);\n });\n\n // Reset state\n state.updateBound = null;\n state.scrollParents = [];\n state.scrollElement = null;\n state.eventsEnabled = false;\n return state;\n}\n\n/**\n * It will remove resize/scroll events and won't recalculate popper position\n * when they are triggered. It also won't trigger `onUpdate` callback anymore,\n * unless you call `update` method manually.\n * @method\n * @memberof Popper\n */\nfunction disableEventListeners() {\n if (this.state.eventsEnabled) {\n cancelAnimationFrame(this.scheduleUpdate);\n this.state = removeEventListeners(this.reference, this.state);\n }\n}\n\n/**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\nfunction isNumeric(n) {\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n\n/**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nfunction setStyles(element, styles) {\n Object.keys(styles).forEach(function (prop) {\n var unit = '';\n // add unit if the value is numeric and is one of the following\n if (['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !== -1 && isNumeric(styles[prop])) {\n unit = 'px';\n }\n element.style[prop] = styles[prop] + unit;\n });\n}\n\n/**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nfunction setAttributes(element, attributes) {\n Object.keys(attributes).forEach(function (prop) {\n var value = attributes[prop];\n if (value !== false) {\n element.setAttribute(prop, attributes[prop]);\n } else {\n element.removeAttribute(prop);\n }\n });\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} data.styles - List of style properties - values to apply to popper element\n * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The same data object\n */\nfunction applyStyle(data) {\n // any property present in `data.styles` will be applied to the popper,\n // in this way we can make the 3rd party modifiers add custom styles to it\n // Be aware, modifiers could override the properties defined in the previous\n // lines of this modifier!\n setStyles(data.instance.popper, data.styles);\n\n // any property present in `data.attributes` will be applied to the popper,\n // they will be set as HTML attributes of the element\n setAttributes(data.instance.popper, data.attributes);\n\n // if arrowElement is defined and arrowStyles has some properties\n if (data.arrowElement && Object.keys(data.arrowStyles).length) {\n setStyles(data.arrowElement, data.arrowStyles);\n }\n\n return data;\n}\n\n/**\n * Set the x-placement attribute before everything else because it could be used\n * to add margins to the popper margins needs to be calculated to get the\n * correct popper offsets.\n * @method\n * @memberof Popper.modifiers\n * @param {HTMLElement} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper\n * @param {Object} options - Popper.js options\n */\nfunction applyStyleOnLoad(reference, popper, options, modifierOptions, state) {\n // compute reference element offsets\n var referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n var placement = computeAutoPlacement(options.placement, referenceOffsets, popper, reference, options.modifiers.flip.boundariesElement, options.modifiers.flip.padding);\n\n popper.setAttribute('x-placement', placement);\n\n // Apply `position` to popper before anything else because\n // without the position applied we can't guarantee correct computations\n setStyles(popper, { position: options.positionFixed ? 'fixed' : 'absolute' });\n\n return options;\n}\n\n/**\n * @function\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Boolean} shouldRound - If the offsets should be rounded at all\n * @returns {Object} The popper's position offsets rounded\n *\n * The tale of pixel-perfect positioning. It's still not 100% perfect, but as\n * good as it can be within reason.\n * Discussion here: https://github.com/FezVrasta/popper.js/pull/715\n *\n * Low DPI screens cause a popper to be blurry if not using full pixels (Safari\n * as well on High DPI screens).\n *\n * Firefox prefers no rounding for positioning and does not have blurriness on\n * high DPI screens.\n *\n * Only horizontal placement and left/right values need to be considered.\n */\nfunction getRoundedOffsets(data, shouldRound) {\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n var round = Math.round,\n floor = Math.floor;\n\n var noRound = function noRound(v) {\n return v;\n };\n\n var referenceWidth = round(reference.width);\n var popperWidth = round(popper.width);\n\n var isVertical = ['left', 'right'].indexOf(data.placement) !== -1;\n var isVariation = data.placement.indexOf('-') !== -1;\n var sameWidthParity = referenceWidth % 2 === popperWidth % 2;\n var bothOddWidth = referenceWidth % 2 === 1 && popperWidth % 2 === 1;\n\n var horizontalToInteger = !shouldRound ? noRound : isVertical || isVariation || sameWidthParity ? round : floor;\n var verticalToInteger = !shouldRound ? noRound : round;\n\n return {\n left: horizontalToInteger(bothOddWidth && !isVariation && shouldRound ? popper.left - 1 : popper.left),\n top: verticalToInteger(popper.top),\n bottom: verticalToInteger(popper.bottom),\n right: horizontalToInteger(popper.right)\n };\n}\n\nvar isFirefox = isBrowser && /Firefox/i.test(navigator.userAgent);\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction computeStyle(data, options) {\n var x = options.x,\n y = options.y;\n var popper = data.offsets.popper;\n\n // Remove this legacy support in Popper.js v2\n\n var legacyGpuAccelerationOption = find(data.instance.modifiers, function (modifier) {\n return modifier.name === 'applyStyle';\n }).gpuAcceleration;\n if (legacyGpuAccelerationOption !== undefined) {\n console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!');\n }\n var gpuAcceleration = legacyGpuAccelerationOption !== undefined ? legacyGpuAccelerationOption : options.gpuAcceleration;\n\n var offsetParent = getOffsetParent(data.instance.popper);\n var offsetParentRect = getBoundingClientRect(offsetParent);\n\n // Styles\n var styles = {\n position: popper.position\n };\n\n var offsets = getRoundedOffsets(data, window.devicePixelRatio < 2 || !isFirefox);\n\n var sideA = x === 'bottom' ? 'top' : 'bottom';\n var sideB = y === 'right' ? 'left' : 'right';\n\n // if gpuAcceleration is set to `true` and transform is supported,\n // we use `translate3d` to apply the position to the popper we\n // automatically use the supported prefixed version if needed\n var prefixedProperty = getSupportedPropertyName('transform');\n\n // now, let's make a step back and look at this code closely (wtf?)\n // If the content of the popper grows once it's been positioned, it\n // may happen that the popper gets misplaced because of the new content\n // overflowing its reference element\n // To avoid this problem, we provide two options (x and y), which allow\n // the consumer to define the offset origin.\n // If we position a popper on top of a reference element, we can set\n // `x` to `top` to make the popper grow towards its top instead of\n // its bottom.\n var left = void 0,\n top = void 0;\n if (sideA === 'bottom') {\n // when offsetParent is the positioning is relative to the bottom of the screen (excluding the scrollbar)\n // and not the bottom of the html element\n if (offsetParent.nodeName === 'HTML') {\n top = -offsetParent.clientHeight + offsets.bottom;\n } else {\n top = -offsetParentRect.height + offsets.bottom;\n }\n } else {\n top = offsets.top;\n }\n if (sideB === 'right') {\n if (offsetParent.nodeName === 'HTML') {\n left = -offsetParent.clientWidth + offsets.right;\n } else {\n left = -offsetParentRect.width + offsets.right;\n }\n } else {\n left = offsets.left;\n }\n if (gpuAcceleration && prefixedProperty) {\n styles[prefixedProperty] = 'translate3d(' + left + 'px, ' + top + 'px, 0)';\n styles[sideA] = 0;\n styles[sideB] = 0;\n styles.willChange = 'transform';\n } else {\n // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties\n var invertTop = sideA === 'bottom' ? -1 : 1;\n var invertLeft = sideB === 'right' ? -1 : 1;\n styles[sideA] = top * invertTop;\n styles[sideB] = left * invertLeft;\n styles.willChange = sideA + ', ' + sideB;\n }\n\n // Attributes\n var attributes = {\n 'x-placement': data.placement\n };\n\n // Update `data` attributes, styles and arrowStyles\n data.attributes = _extends({}, attributes, data.attributes);\n data.styles = _extends({}, styles, data.styles);\n data.arrowStyles = _extends({}, data.offsets.arrow, data.arrowStyles);\n\n return data;\n}\n\n/**\n * Helper used to know if the given modifier depends from another one.\n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\nfunction isModifierRequired(modifiers, requestingName, requestedName) {\n var requesting = find(modifiers, function (_ref) {\n var name = _ref.name;\n return name === requestingName;\n });\n\n var isRequired = !!requesting && modifiers.some(function (modifier) {\n return modifier.name === requestedName && modifier.enabled && modifier.order < requesting.order;\n });\n\n if (!isRequired) {\n var _requesting = '`' + requestingName + '`';\n var requested = '`' + requestedName + '`';\n console.warn(requested + ' modifier is required by ' + _requesting + ' modifier in order to work, be sure to include it before ' + _requesting + '!');\n }\n return isRequired;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction arrow(data, options) {\n var _data$offsets$arrow;\n\n // arrow depends on keepTogether in order to work\n if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {\n return data;\n }\n\n var arrowElement = options.element;\n\n // if arrowElement is a string, suppose it's a CSS selector\n if (typeof arrowElement === 'string') {\n arrowElement = data.instance.popper.querySelector(arrowElement);\n\n // if arrowElement is not found, don't run the modifier\n if (!arrowElement) {\n return data;\n }\n } else {\n // if the arrowElement isn't a query selector we must check that the\n // provided DOM node is child of its popper node\n if (!data.instance.popper.contains(arrowElement)) {\n console.warn('WARNING: `arrow.element` must be child of its popper element!');\n return data;\n }\n }\n\n var placement = data.placement.split('-')[0];\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var isVertical = ['left', 'right'].indexOf(placement) !== -1;\n\n var len = isVertical ? 'height' : 'width';\n var sideCapitalized = isVertical ? 'Top' : 'Left';\n var side = sideCapitalized.toLowerCase();\n var altSide = isVertical ? 'left' : 'top';\n var opSide = isVertical ? 'bottom' : 'right';\n var arrowElementSize = getOuterSizes(arrowElement)[len];\n\n //\n // extends keepTogether behavior making sure the popper and its\n // reference have enough pixels in conjunction\n //\n\n // top/left side\n if (reference[opSide] - arrowElementSize < popper[side]) {\n data.offsets.popper[side] -= popper[side] - (reference[opSide] - arrowElementSize);\n }\n // bottom/right side\n if (reference[side] + arrowElementSize > popper[opSide]) {\n data.offsets.popper[side] += reference[side] + arrowElementSize - popper[opSide];\n }\n data.offsets.popper = getClientRect(data.offsets.popper);\n\n // compute center of the popper\n var center = reference[side] + reference[len] / 2 - arrowElementSize / 2;\n\n // Compute the sideValue using the updated popper offsets\n // take popper margin in account because we don't have this info available\n var css = getStyleComputedProperty(data.instance.popper);\n var popperMarginSide = parseFloat(css['margin' + sideCapitalized]);\n var popperBorderSide = parseFloat(css['border' + sideCapitalized + 'Width']);\n var sideValue = center - data.offsets.popper[side] - popperMarginSide - popperBorderSide;\n\n // prevent arrowElement from being placed not contiguously to its popper\n sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);\n\n data.arrowElement = arrowElement;\n data.offsets.arrow = (_data$offsets$arrow = {}, defineProperty(_data$offsets$arrow, side, Math.round(sideValue)), defineProperty(_data$offsets$arrow, altSide, ''), _data$offsets$arrow);\n\n return data;\n}\n\n/**\n * Get the opposite placement variation of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement variation\n * @returns {String} flipped placement variation\n */\nfunction getOppositeVariation(variation) {\n if (variation === 'end') {\n return 'start';\n } else if (variation === 'start') {\n return 'end';\n }\n return variation;\n}\n\n/**\n * List of accepted placements to use as values of the `placement` option.\n * Valid placements are:\n * - `auto`\n * - `top`\n * - `right`\n * - `bottom`\n * - `left`\n *\n * Each placement can have a variation from this list:\n * - `-start`\n * - `-end`\n *\n * Variations are interpreted easily if you think of them as the left to right\n * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`\n * is right.\n * Vertically (`left` and `right`), `start` is top and `end` is bottom.\n *\n * Some valid examples are:\n * - `top-end` (on top of reference, right aligned)\n * - `right-start` (on right of reference, top aligned)\n * - `bottom` (on bottom, centered)\n * - `auto-end` (on the side with more space available, alignment depends by placement)\n *\n * @static\n * @type {Array}\n * @enum {String}\n * @readonly\n * @method placements\n * @memberof Popper\n */\nvar placements = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start'];\n\n// Get rid of `auto` `auto-start` and `auto-end`\nvar validPlacements = placements.slice(3);\n\n/**\n * Given an initial placement, returns all the subsequent placements\n * clockwise (or counter-clockwise).\n *\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement - A valid placement (it accepts variations)\n * @argument {Boolean} counter - Set to true to walk the placements counterclockwise\n * @returns {Array} placements including their variations\n */\nfunction clockwise(placement) {\n var counter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var index = validPlacements.indexOf(placement);\n var arr = validPlacements.slice(index + 1).concat(validPlacements.slice(0, index));\n return counter ? arr.reverse() : arr;\n}\n\nvar BEHAVIORS = {\n FLIP: 'flip',\n CLOCKWISE: 'clockwise',\n COUNTERCLOCKWISE: 'counterclockwise'\n};\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction flip(data, options) {\n // if `inner` modifier is enabled, we can't use the `flip` modifier\n if (isModifierEnabled(data.instance.modifiers, 'inner')) {\n return data;\n }\n\n if (data.flipped && data.placement === data.originalPlacement) {\n // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides\n return data;\n }\n\n var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, options.boundariesElement, data.positionFixed);\n\n var placement = data.placement.split('-')[0];\n var placementOpposite = getOppositePlacement(placement);\n var variation = data.placement.split('-')[1] || '';\n\n var flipOrder = [];\n\n switch (options.behavior) {\n case BEHAVIORS.FLIP:\n flipOrder = [placement, placementOpposite];\n break;\n case BEHAVIORS.CLOCKWISE:\n flipOrder = clockwise(placement);\n break;\n case BEHAVIORS.COUNTERCLOCKWISE:\n flipOrder = clockwise(placement, true);\n break;\n default:\n flipOrder = options.behavior;\n }\n\n flipOrder.forEach(function (step, index) {\n if (placement !== step || flipOrder.length === index + 1) {\n return data;\n }\n\n placement = data.placement.split('-')[0];\n placementOpposite = getOppositePlacement(placement);\n\n var popperOffsets = data.offsets.popper;\n var refOffsets = data.offsets.reference;\n\n // using floor because the reference offsets may contain decimals we are not going to consider here\n var floor = Math.floor;\n var overlapsRef = placement === 'left' && floor(popperOffsets.right) > floor(refOffsets.left) || placement === 'right' && floor(popperOffsets.left) < floor(refOffsets.right) || placement === 'top' && floor(popperOffsets.bottom) > floor(refOffsets.top) || placement === 'bottom' && floor(popperOffsets.top) < floor(refOffsets.bottom);\n\n var overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);\n var overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);\n var overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);\n var overflowsBottom = floor(popperOffsets.bottom) > floor(boundaries.bottom);\n\n var overflowsBoundaries = placement === 'left' && overflowsLeft || placement === 'right' && overflowsRight || placement === 'top' && overflowsTop || placement === 'bottom' && overflowsBottom;\n\n // flip the variation if required\n var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n\n // flips variation if reference element overflows boundaries\n var flippedVariationByRef = !!options.flipVariations && (isVertical && variation === 'start' && overflowsLeft || isVertical && variation === 'end' && overflowsRight || !isVertical && variation === 'start' && overflowsTop || !isVertical && variation === 'end' && overflowsBottom);\n\n // flips variation if popper content overflows boundaries\n var flippedVariationByContent = !!options.flipVariationsByContent && (isVertical && variation === 'start' && overflowsRight || isVertical && variation === 'end' && overflowsLeft || !isVertical && variation === 'start' && overflowsBottom || !isVertical && variation === 'end' && overflowsTop);\n\n var flippedVariation = flippedVariationByRef || flippedVariationByContent;\n\n if (overlapsRef || overflowsBoundaries || flippedVariation) {\n // this boolean to detect any flip loop\n data.flipped = true;\n\n if (overlapsRef || overflowsBoundaries) {\n placement = flipOrder[index + 1];\n }\n\n if (flippedVariation) {\n variation = getOppositeVariation(variation);\n }\n\n data.placement = placement + (variation ? '-' + variation : '');\n\n // this object contains `position`, we want to preserve it along with\n // any additional property we may add in the future\n data.offsets.popper = _extends({}, data.offsets.popper, getPopperOffsets(data.instance.popper, data.offsets.reference, data.placement));\n\n data = runModifiers(data.instance.modifiers, data, 'flip');\n }\n });\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction keepTogether(data) {\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var placement = data.placement.split('-')[0];\n var floor = Math.floor;\n var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n var side = isVertical ? 'right' : 'bottom';\n var opSide = isVertical ? 'left' : 'top';\n var measurement = isVertical ? 'width' : 'height';\n\n if (popper[side] < floor(reference[opSide])) {\n data.offsets.popper[opSide] = floor(reference[opSide]) - popper[measurement];\n }\n if (popper[opSide] > floor(reference[side])) {\n data.offsets.popper[opSide] = floor(reference[side]);\n }\n\n return data;\n}\n\n/**\n * Converts a string containing value + unit into a px value number\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} str - Value + unit string\n * @argument {String} measurement - `height` or `width`\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @returns {Number|String}\n * Value in pixels, or original string if no values were extracted\n */\nfunction toValue(str, measurement, popperOffsets, referenceOffsets) {\n // separate value from unit\n var split = str.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/);\n var value = +split[1];\n var unit = split[2];\n\n // If it's not a number it's an operator, I guess\n if (!value) {\n return str;\n }\n\n if (unit.indexOf('%') === 0) {\n var element = void 0;\n switch (unit) {\n case '%p':\n element = popperOffsets;\n break;\n case '%':\n case '%r':\n default:\n element = referenceOffsets;\n }\n\n var rect = getClientRect(element);\n return rect[measurement] / 100 * value;\n } else if (unit === 'vh' || unit === 'vw') {\n // if is a vh or vw, we calculate the size based on the viewport\n var size = void 0;\n if (unit === 'vh') {\n size = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n } else {\n size = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n }\n return size / 100 * value;\n } else {\n // if is an explicit pixel unit, we get rid of the unit and keep the value\n // if is an implicit unit, it's px, and we return just the value\n return value;\n }\n}\n\n/**\n * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} offset\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @argument {String} basePlacement\n * @returns {Array} a two cells array with x and y offsets in numbers\n */\nfunction parseOffset(offset, popperOffsets, referenceOffsets, basePlacement) {\n var offsets = [0, 0];\n\n // Use height if placement is left or right and index is 0 otherwise use width\n // in this way the first offset will use an axis and the second one\n // will use the other one\n var useHeight = ['right', 'left'].indexOf(basePlacement) !== -1;\n\n // Split the offset string to obtain a list of values and operands\n // The regex addresses values with the plus or minus sign in front (+10, -20, etc)\n var fragments = offset.split(/(\\+|\\-)/).map(function (frag) {\n return frag.trim();\n });\n\n // Detect if the offset string contains a pair of values or a single one\n // they could be separated by comma or space\n var divider = fragments.indexOf(find(fragments, function (frag) {\n return frag.search(/,|\\s/) !== -1;\n }));\n\n if (fragments[divider] && fragments[divider].indexOf(',') === -1) {\n console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.');\n }\n\n // If divider is found, we divide the list of values and operands to divide\n // them by ofset X and Y.\n var splitRegex = /\\s*,\\s*|\\s+/;\n var ops = divider !== -1 ? [fragments.slice(0, divider).concat([fragments[divider].split(splitRegex)[0]]), [fragments[divider].split(splitRegex)[1]].concat(fragments.slice(divider + 1))] : [fragments];\n\n // Convert the values with units to absolute pixels to allow our computations\n ops = ops.map(function (op, index) {\n // Most of the units rely on the orientation of the popper\n var measurement = (index === 1 ? !useHeight : useHeight) ? 'height' : 'width';\n var mergeWithPrevious = false;\n return op\n // This aggregates any `+` or `-` sign that aren't considered operators\n // e.g.: 10 + +5 => [10, +, +5]\n .reduce(function (a, b) {\n if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {\n a[a.length - 1] = b;\n mergeWithPrevious = true;\n return a;\n } else if (mergeWithPrevious) {\n a[a.length - 1] += b;\n mergeWithPrevious = false;\n return a;\n } else {\n return a.concat(b);\n }\n }, [])\n // Here we convert the string values into number values (in px)\n .map(function (str) {\n return toValue(str, measurement, popperOffsets, referenceOffsets);\n });\n });\n\n // Loop trough the offsets arrays and execute the operations\n ops.forEach(function (op, index) {\n op.forEach(function (frag, index2) {\n if (isNumeric(frag)) {\n offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);\n }\n });\n });\n return offsets;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @argument {Number|String} options.offset=0\n * The offset value as described in the modifier description\n * @returns {Object} The data object, properly modified\n */\nfunction offset(data, _ref) {\n var offset = _ref.offset;\n var placement = data.placement,\n _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var basePlacement = placement.split('-')[0];\n\n var offsets = void 0;\n if (isNumeric(+offset)) {\n offsets = [+offset, 0];\n } else {\n offsets = parseOffset(offset, popper, reference, basePlacement);\n }\n\n if (basePlacement === 'left') {\n popper.top += offsets[0];\n popper.left -= offsets[1];\n } else if (basePlacement === 'right') {\n popper.top += offsets[0];\n popper.left += offsets[1];\n } else if (basePlacement === 'top') {\n popper.left += offsets[0];\n popper.top -= offsets[1];\n } else if (basePlacement === 'bottom') {\n popper.left += offsets[0];\n popper.top += offsets[1];\n }\n\n data.popper = popper;\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction preventOverflow(data, options) {\n var boundariesElement = options.boundariesElement || getOffsetParent(data.instance.popper);\n\n // If offsetParent is the reference element, we really want to\n // go one step up and use the next offsetParent as reference to\n // avoid to make this modifier completely useless and look like broken\n if (data.instance.reference === boundariesElement) {\n boundariesElement = getOffsetParent(boundariesElement);\n }\n\n // NOTE: DOM access here\n // resets the popper's position so that the document size can be calculated excluding\n // the size of the popper element itself\n var transformProp = getSupportedPropertyName('transform');\n var popperStyles = data.instance.popper.style; // assignment to help minification\n var top = popperStyles.top,\n left = popperStyles.left,\n transform = popperStyles[transformProp];\n\n popperStyles.top = '';\n popperStyles.left = '';\n popperStyles[transformProp] = '';\n\n var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, boundariesElement, data.positionFixed);\n\n // NOTE: DOM access here\n // restores the original style properties after the offsets have been computed\n popperStyles.top = top;\n popperStyles.left = left;\n popperStyles[transformProp] = transform;\n\n options.boundaries = boundaries;\n\n var order = options.priority;\n var popper = data.offsets.popper;\n\n var check = {\n primary: function primary(placement) {\n var value = popper[placement];\n if (popper[placement] < boundaries[placement] && !options.escapeWithReference) {\n value = Math.max(popper[placement], boundaries[placement]);\n }\n return defineProperty({}, placement, value);\n },\n secondary: function secondary(placement) {\n var mainSide = placement === 'right' ? 'left' : 'top';\n var value = popper[mainSide];\n if (popper[placement] > boundaries[placement] && !options.escapeWithReference) {\n value = Math.min(popper[mainSide], boundaries[placement] - (placement === 'right' ? popper.width : popper.height));\n }\n return defineProperty({}, mainSide, value);\n }\n };\n\n order.forEach(function (placement) {\n var side = ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary';\n popper = _extends({}, popper, check[side](placement));\n });\n\n data.offsets.popper = popper;\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction shift(data) {\n var placement = data.placement;\n var basePlacement = placement.split('-')[0];\n var shiftvariation = placement.split('-')[1];\n\n // if shift shiftvariation is specified, run the modifier\n if (shiftvariation) {\n var _data$offsets = data.offsets,\n reference = _data$offsets.reference,\n popper = _data$offsets.popper;\n\n var isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n var side = isVertical ? 'left' : 'top';\n var measurement = isVertical ? 'width' : 'height';\n\n var shiftOffsets = {\n start: defineProperty({}, side, reference[side]),\n end: defineProperty({}, side, reference[side] + reference[measurement] - popper[measurement])\n };\n\n data.offsets.popper = _extends({}, popper, shiftOffsets[shiftvariation]);\n }\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction hide(data) {\n if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {\n return data;\n }\n\n var refRect = data.offsets.reference;\n var bound = find(data.instance.modifiers, function (modifier) {\n return modifier.name === 'preventOverflow';\n }).boundaries;\n\n if (refRect.bottom < bound.top || refRect.left > bound.right || refRect.top > bound.bottom || refRect.right < bound.left) {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === true) {\n return data;\n }\n\n data.hide = true;\n data.attributes['x-out-of-boundaries'] = '';\n } else {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === false) {\n return data;\n }\n\n data.hide = false;\n data.attributes['x-out-of-boundaries'] = false;\n }\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction inner(data) {\n var placement = data.placement;\n var basePlacement = placement.split('-')[0];\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\n\n var subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\n\n popper[isHoriz ? 'left' : 'top'] = reference[basePlacement] - (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\n\n data.placement = getOppositePlacement(placement);\n data.offsets.popper = getClientRect(popper);\n\n return data;\n}\n\n/**\n * Modifier function, each modifier can have a function of this type assigned\n * to its `fn` property.\n * These functions will be called on each update, this means that you must\n * make sure they are performant enough to avoid performance bottlenecks.\n *\n * @function ModifierFn\n * @argument {dataObject} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {dataObject} The data object, properly modified\n */\n\n/**\n * Modifiers are plugins used to alter the behavior of your poppers.\n * Popper.js uses a set of 9 modifiers to provide all the basic functionalities\n * needed by the library.\n *\n * Usually you don't want to override the `order`, `fn` and `onLoad` props.\n * All the other properties are configurations that could be tweaked.\n * @namespace modifiers\n */\nvar modifiers = {\n /**\n * Modifier used to shift the popper on the start or end of its reference\n * element.\n * It will read the variation of the `placement` property.\n * It can be one either `-end` or `-start`.\n * @memberof modifiers\n * @inner\n */\n shift: {\n /** @prop {number} order=100 - Index used to define the order of execution */\n order: 100,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: shift\n },\n\n /**\n * The `offset` modifier can shift your popper on both its axis.\n *\n * It accepts the following units:\n * - `px` or unit-less, interpreted as pixels\n * - `%` or `%r`, percentage relative to the length of the reference element\n * - `%p`, percentage relative to the length of the popper element\n * - `vw`, CSS viewport width unit\n * - `vh`, CSS viewport height unit\n *\n * For length is intended the main axis relative to the placement of the popper.\n * This means that if the placement is `top` or `bottom`, the length will be the\n * `width`. In case of `left` or `right`, it will be the `height`.\n *\n * You can provide a single value (as `Number` or `String`), or a pair of values\n * as `String` divided by a comma or one (or more) white spaces.\n * The latter is a deprecated method because it leads to confusion and will be\n * removed in v2.\n * Additionally, it accepts additions and subtractions between different units.\n * Note that multiplications and divisions aren't supported.\n *\n * Valid examples are:\n * ```\n * 10\n * '10%'\n * '10, 10'\n * '10%, 10'\n * '10 + 10%'\n * '10 - 5vh + 3%'\n * '-10px + 5vh, 5px - 6%'\n * ```\n * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap\n * > with their reference element, unfortunately, you will have to disable the `flip` modifier.\n * > You can read more on this at this [issue](https://github.com/FezVrasta/popper.js/issues/373).\n *\n * @memberof modifiers\n * @inner\n */\n offset: {\n /** @prop {number} order=200 - Index used to define the order of execution */\n order: 200,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: offset,\n /** @prop {Number|String} offset=0\n * The offset value as described in the modifier description\n */\n offset: 0\n },\n\n /**\n * Modifier used to prevent the popper from being positioned outside the boundary.\n *\n * A scenario exists where the reference itself is not within the boundaries.\n * We can say it has \"escaped the boundaries\" — or just \"escaped\".\n * In this case we need to decide whether the popper should either:\n *\n * - detach from the reference and remain \"trapped\" in the boundaries, or\n * - if it should ignore the boundary and \"escape with its reference\"\n *\n * When `escapeWithReference` is set to`true` and reference is completely\n * outside its boundaries, the popper will overflow (or completely leave)\n * the boundaries in order to remain attached to the edge of the reference.\n *\n * @memberof modifiers\n * @inner\n */\n preventOverflow: {\n /** @prop {number} order=300 - Index used to define the order of execution */\n order: 300,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: preventOverflow,\n /**\n * @prop {Array} [priority=['left','right','top','bottom']]\n * Popper will try to prevent overflow following these priorities by default,\n * then, it could overflow on the left and on top of the `boundariesElement`\n */\n priority: ['left', 'right', 'top', 'bottom'],\n /**\n * @prop {number} padding=5\n * Amount of pixel used to define a minimum distance between the boundaries\n * and the popper. This makes sure the popper always has a little padding\n * between the edges of its container\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='scrollParent'\n * Boundaries used by the modifier. Can be `scrollParent`, `window`,\n * `viewport` or any DOM element.\n */\n boundariesElement: 'scrollParent'\n },\n\n /**\n * Modifier used to make sure the reference and its popper stay near each other\n * without leaving any gap between the two. Especially useful when the arrow is\n * enabled and you want to ensure that it points to its reference element.\n * It cares only about the first axis. You can still have poppers with margin\n * between the popper and its reference element.\n * @memberof modifiers\n * @inner\n */\n keepTogether: {\n /** @prop {number} order=400 - Index used to define the order of execution */\n order: 400,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: keepTogether\n },\n\n /**\n * This modifier is used to move the `arrowElement` of the popper to make\n * sure it is positioned between the reference element and its popper element.\n * It will read the outer size of the `arrowElement` node to detect how many\n * pixels of conjunction are needed.\n *\n * It has no effect if no `arrowElement` is provided.\n * @memberof modifiers\n * @inner\n */\n arrow: {\n /** @prop {number} order=500 - Index used to define the order of execution */\n order: 500,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: arrow,\n /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */\n element: '[x-arrow]'\n },\n\n /**\n * Modifier used to flip the popper's placement when it starts to overlap its\n * reference element.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n *\n * **NOTE:** this modifier will interrupt the current update cycle and will\n * restart it if it detects the need to flip the placement.\n * @memberof modifiers\n * @inner\n */\n flip: {\n /** @prop {number} order=600 - Index used to define the order of execution */\n order: 600,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: flip,\n /**\n * @prop {String|Array} behavior='flip'\n * The behavior used to change the popper's placement. It can be one of\n * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid\n * placements (with optional variations)\n */\n behavior: 'flip',\n /**\n * @prop {number} padding=5\n * The popper will flip if it hits the edges of the `boundariesElement`\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='viewport'\n * The element which will define the boundaries of the popper position.\n * The popper will never be placed outside of the defined boundaries\n * (except if `keepTogether` is enabled)\n */\n boundariesElement: 'viewport',\n /**\n * @prop {Boolean} flipVariations=false\n * The popper will switch placement variation between `-start` and `-end` when\n * the reference element overlaps its boundaries.\n *\n * The original placement should have a set variation.\n */\n flipVariations: false,\n /**\n * @prop {Boolean} flipVariationsByContent=false\n * The popper will switch placement variation between `-start` and `-end` when\n * the popper element overlaps its reference boundaries.\n *\n * The original placement should have a set variation.\n */\n flipVariationsByContent: false\n },\n\n /**\n * Modifier used to make the popper flow toward the inner of the reference element.\n * By default, when this modifier is disabled, the popper will be placed outside\n * the reference element.\n * @memberof modifiers\n * @inner\n */\n inner: {\n /** @prop {number} order=700 - Index used to define the order of execution */\n order: 700,\n /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */\n enabled: false,\n /** @prop {ModifierFn} */\n fn: inner\n },\n\n /**\n * Modifier used to hide the popper when its reference element is outside of the\n * popper boundaries. It will set a `x-out-of-boundaries` attribute which can\n * be used to hide with a CSS selector the popper when its reference is\n * out of boundaries.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n * @memberof modifiers\n * @inner\n */\n hide: {\n /** @prop {number} order=800 - Index used to define the order of execution */\n order: 800,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: hide\n },\n\n /**\n * Computes the style that will be applied to the popper element to gets\n * properly positioned.\n *\n * Note that this modifier will not touch the DOM, it just prepares the styles\n * so that `applyStyle` modifier can apply it. This separation is useful\n * in case you need to replace `applyStyle` with a custom implementation.\n *\n * This modifier has `850` as `order` value to maintain backward compatibility\n * with previous versions of Popper.js. Expect the modifiers ordering method\n * to change in future major versions of the library.\n *\n * @memberof modifiers\n * @inner\n */\n computeStyle: {\n /** @prop {number} order=850 - Index used to define the order of execution */\n order: 850,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: computeStyle,\n /**\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: true,\n /**\n * @prop {string} [x='bottom']\n * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.\n * Change this if your popper should grow in a direction different from `bottom`\n */\n x: 'bottom',\n /**\n * @prop {string} [x='left']\n * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.\n * Change this if your popper should grow in a direction different from `right`\n */\n y: 'right'\n },\n\n /**\n * Applies the computed styles to the popper element.\n *\n * All the DOM manipulations are limited to this modifier. This is useful in case\n * you want to integrate Popper.js inside a framework or view library and you\n * want to delegate all the DOM manipulations to it.\n *\n * Note that if you disable this modifier, you must make sure the popper element\n * has its position set to `absolute` before Popper.js can do its work!\n *\n * Just disable this modifier and define your own to achieve the desired effect.\n *\n * @memberof modifiers\n * @inner\n */\n applyStyle: {\n /** @prop {number} order=900 - Index used to define the order of execution */\n order: 900,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: applyStyle,\n /** @prop {Function} */\n onLoad: applyStyleOnLoad,\n /**\n * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: undefined\n }\n};\n\n/**\n * The `dataObject` is an object containing all the information used by Popper.js.\n * This object is passed to modifiers and to the `onCreate` and `onUpdate` callbacks.\n * @name dataObject\n * @property {Object} data.instance The Popper.js instance\n * @property {String} data.placement Placement applied to popper\n * @property {String} data.originalPlacement Placement originally defined on init\n * @property {Boolean} data.flipped True if popper has been flipped by flip modifier\n * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper\n * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier\n * @property {Object} data.styles Any CSS property defined here will be applied to the popper. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.boundaries Offsets of the popper boundaries\n * @property {Object} data.offsets The measurements of popper, reference and arrow elements\n * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0\n */\n\n/**\n * Default options provided to Popper.js constructor.\n * These can be overridden using the `options` argument of Popper.js.\n * To override an option, simply pass an object with the same\n * structure of the `options` object, as the 3rd argument. For example:\n * ```\n * new Popper(ref, pop, {\n * modifiers: {\n * preventOverflow: { enabled: false }\n * }\n * })\n * ```\n * @type {Object}\n * @static\n * @memberof Popper\n */\nvar Defaults = {\n /**\n * Popper's placement.\n * @prop {Popper.placements} placement='bottom'\n */\n placement: 'bottom',\n\n /**\n * Set this to true if you want popper to position it self in 'fixed' mode\n * @prop {Boolean} positionFixed=false\n */\n positionFixed: false,\n\n /**\n * Whether events (resize, scroll) are initially enabled.\n * @prop {Boolean} eventsEnabled=true\n */\n eventsEnabled: true,\n\n /**\n * Set to true if you want to automatically remove the popper when\n * you call the `destroy` method.\n * @prop {Boolean} removeOnDestroy=false\n */\n removeOnDestroy: false,\n\n /**\n * Callback called when the popper is created.\n * By default, it is set to no-op.\n * Access Popper.js instance with `data.instance`.\n * @prop {onCreate}\n */\n onCreate: function onCreate() {},\n\n /**\n * Callback called when the popper is updated. This callback is not called\n * on the initialization/creation of the popper, but only on subsequent\n * updates.\n * By default, it is set to no-op.\n * Access Popper.js instance with `data.instance`.\n * @prop {onUpdate}\n */\n onUpdate: function onUpdate() {},\n\n /**\n * List of modifiers used to modify the offsets before they are applied to the popper.\n * They provide most of the functionalities of Popper.js.\n * @prop {modifiers}\n */\n modifiers: modifiers\n};\n\n/**\n * @callback onCreate\n * @param {dataObject} data\n */\n\n/**\n * @callback onUpdate\n * @param {dataObject} data\n */\n\n// Utils\n// Methods\nvar Popper = function () {\n /**\n * Creates a new Popper.js instance.\n * @class Popper\n * @param {Element|referenceObject} reference - The reference element used to position the popper\n * @param {Element} popper - The HTML / XML element used as the popper\n * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults)\n * @return {Object} instance - The generated Popper.js instance\n */\n function Popper(reference, popper) {\n var _this = this;\n\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n classCallCheck(this, Popper);\n\n this.scheduleUpdate = function () {\n return requestAnimationFrame(_this.update);\n };\n\n // make update() debounced, so that it only runs at most once-per-tick\n this.update = debounce(this.update.bind(this));\n\n // with {} we create a new object with the options inside it\n this.options = _extends({}, Popper.Defaults, options);\n\n // init state\n this.state = {\n isDestroyed: false,\n isCreated: false,\n scrollParents: []\n };\n\n // get reference and popper elements (allow jQuery wrappers)\n this.reference = reference && reference.jquery ? reference[0] : reference;\n this.popper = popper && popper.jquery ? popper[0] : popper;\n\n // Deep merge modifiers options\n this.options.modifiers = {};\n Object.keys(_extends({}, Popper.Defaults.modifiers, options.modifiers)).forEach(function (name) {\n _this.options.modifiers[name] = _extends({}, Popper.Defaults.modifiers[name] || {}, options.modifiers ? options.modifiers[name] : {});\n });\n\n // Refactoring modifiers' list (Object => Array)\n this.modifiers = Object.keys(this.options.modifiers).map(function (name) {\n return _extends({\n name: name\n }, _this.options.modifiers[name]);\n })\n // sort the modifiers by order\n .sort(function (a, b) {\n return a.order - b.order;\n });\n\n // modifiers have the ability to execute arbitrary code when Popper.js get inited\n // such code is executed in the same order of its modifier\n // they could add new properties to their options configuration\n // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`!\n this.modifiers.forEach(function (modifierOptions) {\n if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {\n modifierOptions.onLoad(_this.reference, _this.popper, _this.options, modifierOptions, _this.state);\n }\n });\n\n // fire the first update to position the popper in the right place\n this.update();\n\n var eventsEnabled = this.options.eventsEnabled;\n if (eventsEnabled) {\n // setup event listeners, they will take care of update the position in specific situations\n this.enableEventListeners();\n }\n\n this.state.eventsEnabled = eventsEnabled;\n }\n\n // We can't use class properties because they don't get listed in the\n // class prototype and break stuff like Sinon stubs\n\n\n createClass(Popper, [{\n key: 'update',\n value: function update$$1() {\n return update.call(this);\n }\n }, {\n key: 'destroy',\n value: function destroy$$1() {\n return destroy.call(this);\n }\n }, {\n key: 'enableEventListeners',\n value: function enableEventListeners$$1() {\n return enableEventListeners.call(this);\n }\n }, {\n key: 'disableEventListeners',\n value: function disableEventListeners$$1() {\n return disableEventListeners.call(this);\n }\n\n /**\n * Schedules an update. It will run on the next UI update available.\n * @method scheduleUpdate\n * @memberof Popper\n */\n\n\n /**\n * Collection of utilities useful when writing custom modifiers.\n * Starting from version 1.7, this method is available only if you\n * include `popper-utils.js` before `popper.js`.\n *\n * **DEPRECATION**: This way to access PopperUtils is deprecated\n * and will be removed in v2! Use the PopperUtils module directly instead.\n * Due to the high instability of the methods contained in Utils, we can't\n * guarantee them to follow semver. Use them at your own risk!\n * @static\n * @private\n * @type {Object}\n * @deprecated since version 1.8\n * @member Utils\n * @memberof Popper\n */\n\n }]);\n return Popper;\n}();\n\n/**\n * The `referenceObject` is an object that provides an interface compatible with Popper.js\n * and lets you use it as replacement of a real DOM node.\n * You can use this method to position a popper relatively to a set of coordinates\n * in case you don't have a DOM node to use as reference.\n *\n * ```\n * new Popper(referenceObject, popperNode);\n * ```\n *\n * NB: This feature isn't supported in Internet Explorer 10.\n * @name referenceObject\n * @property {Function} data.getBoundingClientRect\n * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.\n * @property {number} data.clientWidth\n * An ES6 getter that will return the width of the virtual reference element.\n * @property {number} data.clientHeight\n * An ES6 getter that will return the height of the virtual reference element.\n */\n\n\nPopper.Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;\nPopper.placements = placements;\nPopper.Defaults = Defaults;\n\nexport default Popper;\n//# sourceMappingURL=popper.js.map\n","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/@vue/cli-service/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!./pendingInvitation.vue?vue&type=style&index=0&lang=scss&\"","/**\n * vue-good-table v2.21.0\n * (c) 2018-present xaksis \n * https://github.com/xaksis/vue-good-table\n * Released under the MIT License.\n */\n\nfunction _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n }\n}\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n}\n\n/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]';\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array ? array.length : 0;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n // Safari 9 makes `arguments.length` enumerable in strict mode.\n var result = (isArray(value) || isArguments(value))\n ? baseTimes(value.length, String)\n : [];\n\n var length = result.length,\n skipIndexes = !!length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n}\n\n/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _([1, 2]).forEach(function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\nfunction forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, typeof iteratee == 'function' ? iteratee : identity);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nvar lodash_foreach = forEach;\n\n/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER$1 = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag$1 = '[object Arguments]',\n funcTag$1 = '[object Function]',\n genTag$1 = '[object GeneratorFunction]';\n\n/** Used to detect unsigned integer values. */\nvar reIsUint$1 = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes$1(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg$1(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/** Used for built-in method references. */\nvar objectProto$1 = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$1 = objectProto$1.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString$1 = objectProto$1.toString;\n\n/** Built-in value references. */\nvar propertyIsEnumerable$1 = objectProto$1.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys$1 = overArg$1(Object.keys, Object),\n nativeMax = Math.max;\n\n/** Detect if properties shadowing those on `Object.prototype` are non-enumerable. */\nvar nonEnumShadows = !propertyIsEnumerable$1.call({ 'valueOf': 1 }, 'valueOf');\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys$1(value, inherited) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n // Safari 9 makes `arguments.length` enumerable in strict mode.\n var result = (isArray$1(value) || isArguments$1(value))\n ? baseTimes$1(value.length, String)\n : [];\n\n var length = result.length,\n skipIndexes = !!length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty$1.call(value, key)) &&\n !(skipIndexes && (key == 'length' || isIndex$1(key, length)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty$1.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n object[key] = value;\n }\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys$1(object) {\n if (!isPrototype$1(object)) {\n return nativeKeys$1(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty$1.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = array;\n return apply(func, this, otherArgs);\n };\n}\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n assignValue(object, key, newValue === undefined ? source[key] : newValue);\n }\n return object;\n}\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex$1(value, length) {\n length = length == null ? MAX_SAFE_INTEGER$1 : length;\n return !!length &&\n (typeof value == 'number' || reIsUint$1.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject$1(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike$1(object) && isIndex$1(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype$1(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto$1;\n\n return value === proto;\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments$1(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject$1(value) && hasOwnProperty$1.call(value, 'callee') &&\n (!propertyIsEnumerable$1.call(value, 'callee') || objectToString$1.call(value) == argsTag$1);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray$1 = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike$1(value) {\n return value != null && isLength$1(value.length) && !isFunction$1(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject$1(value) {\n return isObjectLike$1(value) && isArrayLike$1(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction$1(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject$1(value) ? objectToString$1.call(value) : '';\n return tag == funcTag$1 || tag == genTag$1;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength$1(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER$1;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject$1(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike$1(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\nvar assign = createAssigner(function(object, source) {\n if (nonEnumShadows || isPrototype$1(source) || isArrayLike$1(source)) {\n copyObject(source, keys$1(source), object);\n return;\n }\n for (var key in source) {\n if (hasOwnProperty$1.call(source, key)) {\n assignValue(object, key, source[key]);\n }\n }\n});\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys$1(object) {\n return isArrayLike$1(object) ? arrayLikeKeys$1(object) : baseKeys$1(object);\n}\n\nvar lodash_assign = assign;\n\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\nvar lodash_clonedeep = createCommonjsModule(function (module, exports) {\n/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/**\n * Adds the key-value `pair` to `map`.\n *\n * @private\n * @param {Object} map The map to modify.\n * @param {Array} pair The key-value pair to add.\n * @returns {Object} Returns `map`.\n */\nfunction addMapEntry(map, pair) {\n // Don't return `map.set` because it's not chainable in IE 11.\n map.set(pair[0], pair[1]);\n return map;\n}\n\n/**\n * Adds `value` to `set`.\n *\n * @private\n * @param {Object} set The set to modify.\n * @param {*} value The value to add.\n * @returns {Object} Returns `set`.\n */\nfunction addSetEntry(set, value) {\n // Don't return `set.add` because it's not chainable in IE 11.\n set.add(value);\n return set;\n}\n\n/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array ? array.length : 0;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array ? array.length : 0;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n return this.has(key) && delete this.__data__[key];\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n return getMapData(this, key)['delete'](key);\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n getMapData(this, key).set(key, value);\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n this.__data__ = new ListCache(entries);\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n return this.__data__['delete'](key);\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var cache = this.__data__;\n if (cache instanceof ListCache) {\n var pairs = cache.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n return this;\n }\n cache = this.__data__ = new MapCache(pairs);\n }\n cache.set(key, value);\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n // Safari 9 makes `arguments.length` enumerable in strict mode.\n var result = (isArray(value) || isArguments(value))\n ? baseTimes(value.length, String)\n : [];\n\n var length = result.length,\n skipIndexes = !!length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n object[key] = value;\n }\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @param {boolean} [isFull] Specify a clone including symbols.\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, isDeep, isFull, customizer, key, object, stack) {\n var result;\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n if (isHostObject(value)) {\n return object ? value : {};\n }\n result = initCloneObject(isFunc ? {} : value);\n if (!isDeep) {\n return copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, baseClone, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (!isArr) {\n var props = isFull ? getAllKeys(value) : keys(value);\n }\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, isDeep, isFull, customizer, key, value, stack));\n });\n return result;\n}\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} prototype The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nfunction baseCreate(proto) {\n return isObject(proto) ? objectCreate(proto) : {};\n}\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * The base implementation of `getTag`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n return objectToString.call(value);\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var result = new buffer.constructor(buffer.length);\n buffer.copy(result);\n return result;\n}\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\n/**\n * Creates a clone of `map`.\n *\n * @private\n * @param {Object} map The map to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned map.\n */\nfunction cloneMap(map, isDeep, cloneFunc) {\n var array = isDeep ? cloneFunc(mapToArray(map), true) : mapToArray(map);\n return arrayReduce(array, addMapEntry, new map.constructor);\n}\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\n/**\n * Creates a clone of `set`.\n *\n * @private\n * @param {Object} set The set to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned set.\n */\nfunction cloneSet(set, isDeep, cloneFunc) {\n var array = isDeep ? cloneFunc(setToArray(set), true) : setToArray(set);\n return arrayReduce(array, addSetEntry, new set.constructor);\n}\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\n/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n assignValue(object, key, newValue === undefined ? source[key] : newValue);\n }\n return object;\n}\n\n/**\n * Copies own symbol properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * Creates an array of the own enumerable symbol properties of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = nativeGetSymbols ? overArg(nativeGetSymbols, Object) : stubArray;\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11,\n// for data views in Edge < 14, and promises in Node.js.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = objectToString.call(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : undefined;\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, cloneFunc, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return cloneMap(object, isDeep, cloneFunc);\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return cloneSet(object, isDeep, cloneFunc);\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n return baseClone(value, true, true);\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = cloneDeep;\n});\n\nvar lodash_filter = createCommonjsModule(function (module, exports) {\n/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to compose bitmasks for comparison styles. */\nvar UNORDERED_COMPARE_FLAG = 1,\n PARTIAL_COMPARE_FLAG = 2;\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/,\n reLeadingDot = /^\\./,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n return freeProcess && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array ? array.length : 0,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\n/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array ? array.length : 0;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n return this.has(key) && delete this.__data__[key];\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n return getMapData(this, key)['delete'](key);\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n getMapData(this, key).set(key, value);\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values ? values.length : 0;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n this.__data__ = new ListCache(entries);\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n return this.__data__['delete'](key);\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var cache = this.__data__;\n if (cache instanceof ListCache) {\n var pairs = cache.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n return this;\n }\n cache = this.__data__ = new MapCache(pairs);\n }\n cache.set(key, value);\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n // Safari 9 makes `arguments.length` enumerable in strict mode.\n var result = (isArray(value) || isArguments(value))\n ? baseTimes(value.length, String)\n : [];\n\n var length = result.length,\n skipIndexes = !!length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\n/**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n}\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = isKey(path, object) ? [path] : castPath(path);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\n/**\n * The base implementation of `getTag`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n return objectToString.call(value);\n}\n\n/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {boolean} [bitmask] The bitmask of comparison flags.\n * The bitmask may be composed of the following flags:\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, customizer, bitmask, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObject(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, baseIsEqual, customizer, bitmask, stack);\n}\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {number} [bitmask] The bitmask of comparison flags. See `baseIsEqual`\n * for more details.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, equalFunc, customizer, bitmask, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = arrayTag,\n othTag = arrayTag;\n\n if (!objIsArr) {\n objTag = getTag(object);\n objTag = objTag == argsTag ? objectTag : objTag;\n }\n if (!othIsArr) {\n othTag = getTag(other);\n othTag = othTag == argsTag ? objectTag : othTag;\n }\n var objIsObj = objTag == objectTag && !isHostObject(object),\n othIsObj = othTag == objectTag && !isHostObject(other),\n isSameTag = objTag == othTag;\n\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, equalFunc, customizer, bitmask, stack)\n : equalByTag(object, other, objTag, equalFunc, customizer, bitmask, stack);\n }\n if (!(bitmask & PARTIAL_COMPARE_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, customizer, bitmask, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, equalFunc, customizer, bitmask, stack);\n}\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, customizer, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[objectToString.call(value)];\n}\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, undefined, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG);\n };\n}\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value) {\n return isArray(value) ? value : stringToPath(value);\n}\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n}\n\n/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n * for more details.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, equalFunc, customizer, bitmask, stack) {\n var isPartial = bitmask & PARTIAL_COMPARE_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & UNORDERED_COMPARE_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!seen.has(othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, customizer, bitmask, stack))) {\n return seen.add(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, customizer, bitmask, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n * for more details.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, equalFunc, customizer, bitmask, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & PARTIAL_COMPARE_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= UNORDERED_COMPARE_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), equalFunc, customizer, bitmask, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n * for more details.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, equalFunc, customizer, bitmask, stack) {\n var isPartial = bitmask & PARTIAL_COMPARE_FLAG,\n objProps = keys(object),\n objLength = objProps.length,\n othProps = keys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, customizer, bitmask, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11,\n// for data views in Edge < 14, and promises in Node.js.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = objectToString.call(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : undefined;\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = isKey(path, object) ? [path] : castPath(path);\n\n var result,\n index = -1,\n length = path.length;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result) {\n return result;\n }\n var length = object ? object.length : 0;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\n/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoize(function(string) {\n string = toString(string);\n\n var result = [];\n if (reLeadingDot.test(string)) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, string) {\n result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity]\n * The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n */\nfunction filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, baseIteratee(predicate));\n}\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result);\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Assign cache to `_.memoize`.\nmemoize.Cache = MapCache;\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = filter;\n});\n\nvar lodash_isequal = createCommonjsModule(function (module, exports) {\n/**\n * Lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright JS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = isEqual;\n});\n\n// all diacritics\r\nvar diacritics = \r\n\t{\r\n\t\t'a' : ['a','à','á','â','ã','ä','å','æ','ā','ă','ą','ǎ','ǟ','ǡ','ǻ','ȁ','ȃ','ȧ','ɐ','ɑ','ɒ','ͣ','а','ӑ','ӓ','ᵃ','ᵄ','ᶏ','ḁ','ẚ','ạ','ả','ấ','ầ','ẩ','ẫ','ậ','ắ','ằ','ẳ','ẵ','ặ','ₐ','ⱥ','a'],\r\n\t\t'A' : ['A','À','Á','Â','Ã','Ä','Å','Ā','Ă','Ą','Ǎ','Ǟ','Ǡ','Ǻ','Ȁ','Ȃ','Ȧ','Ⱥ','А','Ӑ','Ӓ','ᴀ','ᴬ','Ḁ','Ạ','Ả','Ấ','Ầ','Ẩ','Ẫ','Ậ','Ắ','Ằ','Ẳ','Ẵ','Ặ','A'],\r\n\t\t \r\n\t\t'b' : ['b','ƀ','ƃ','ɓ','ᖯ','ᵇ','ᵬ','ᶀ','ḃ','ḅ','ḇ','b'],\r\n\t\t'B' : ['B','Ɓ','Ƃ','Ƀ','ʙ','ᛒ','ᴃ','ᴮ','ᴯ','Ḃ','Ḅ','Ḇ','B'],\r\n\t\t \r\n\t\t'c' : ['c','ç','ć','ĉ','ċ','č','ƈ','ȼ','ɕ','ͨ','ᴄ','ᶜ','ḉ','ↄ','c'],\r\n\t\t'C' : ['C','Ç','Ć','Ĉ','Ċ','Č','Ƈ','Ȼ','ʗ','Ḉ','C'],\r\n\t\t\r\n\t\t'd' : ['d','ď','đ','Ƌ','ƌ','ȡ','ɖ','ɗ','ͩ','ᵈ','ᵭ','ᶁ','ᶑ','ḋ','ḍ','ḏ','ḑ','ḓ','d'],\r\n\t\t'D' : ['D','Ď','Đ','Ɖ','Ɗ','ᴰ','Ḋ','Ḍ','Ḏ','Ḑ','Ḓ','D'],\r\n\t\t\r\n\t\t'e' : ['e','è','é','ê','ë','ē','ĕ','ė','ę','ě','ǝ','ȅ','ȇ','ȩ','ɇ','ɘ','ͤ','ᵉ','ᶒ','ḕ','ḗ','ḙ','ḛ','ḝ','ẹ','ẻ','ẽ','ế','ề','ể','ễ','ệ','ₑ','e'],\r\n\t\t'E' : ['E','È','É','Ê','Ë','Ē','Ĕ','Ė','Ę','Ě','Œ','Ǝ','Ɛ','Ȅ','Ȇ','Ȩ','Ɇ','ɛ','ɜ','ɶ','Є','Э','э','є','Ӭ','ӭ','ᴇ','ᴈ','ᴱ','ᴲ','ᵋ','ᵌ','ᶓ','ᶔ','ᶟ','Ḕ','Ḗ','Ḙ','Ḛ','Ḝ','Ẹ','Ẻ','Ẽ','Ế','Ề','Ể','Ễ','Ệ','E','𐐁','𐐩'],\r\n\t\t\r\n\t\t'f' : ['f','ƒ','ᵮ','ᶂ','ᶠ','ḟ','f'],\r\n\t\t'F' : ['F','Ƒ','Ḟ','ⅎ','F'],\r\n\t\t\r\n\t\t'g' : ['g','ĝ','ğ','ġ','ģ','ǥ','ǧ','ǵ','ɠ','ɡ','ᵍ','ᵷ','ᵹ','ᶃ','ᶢ','ḡ','g'],\r\n\t\t'G' : ['G','Ĝ','Ğ','Ġ','Ģ','Ɠ','Ǥ','Ǧ','Ǵ','ɢ','ʛ','ᴳ','Ḡ','G'],\r\n\t\t\r\n\t\t'h' : ['h','ĥ','ħ','ƕ','ȟ','ɥ','ɦ','ʮ','ʯ','ʰ','ʱ','ͪ','Һ','һ','ᑋ','ᶣ','ḣ','ḥ','ḧ','ḩ','ḫ','ⱨ','h'],\r\n\t\t'H' : ['H','Ĥ','Ħ','Ȟ','ʜ','ᕼ','ᚺ','ᚻ','ᴴ','Ḣ','Ḥ','Ḧ','Ḩ','Ḫ','Ⱨ','H'],\r\n\t\t\r\n\t\t'i' : ['i','ì','í','î','ï','ĩ','ī','ĭ','į','ǐ','ȉ','ȋ','ɨ','ͥ','ᴉ','ᵎ','ᵢ','ᶖ','ᶤ','ḭ','ḯ','ỉ','ị','i'],\r\n\t\t'I' : ['I','Ì','Í','Î','Ï','Ĩ','Ī','Ĭ','Į','İ','Ǐ','Ȉ','Ȋ','ɪ','І','ᴵ','ᵻ','ᶦ','ᶧ','Ḭ','Ḯ','Ỉ','Ị','I'],\r\n\t\t\r\n\t\t'j' : ['j','ĵ','ǰ','ɉ','ʝ','ʲ','ᶡ','ᶨ','j'],\r\n\t\t'J' : ['J','Ĵ','ᴊ','ᴶ','J'],\r\n\t\t\r\n\t\t'k' : ['k','ķ','ƙ','ǩ','ʞ','ᵏ','ᶄ','ḱ','ḳ','ḵ','ⱪ','k'],\r\n\t\t'K' : ['K','Ķ','Ƙ','Ǩ','ᴷ','Ḱ','Ḳ','Ḵ','Ⱪ','K'],\r\n\t\t\r\n\t\t'l' : ['l','ĺ','ļ','ľ','ŀ','ł','ƚ','ȴ','ɫ','ɬ','ɭ','ˡ','ᶅ','ᶩ','ᶪ','ḷ','ḹ','ḻ','ḽ','ℓ','ⱡ'],\r\n\t\t'L' : ['L','Ĺ','Ļ','Ľ','Ŀ','Ł','Ƚ','ʟ','ᴌ','ᴸ','ᶫ','Ḷ','Ḹ','Ḻ','Ḽ','Ⱡ','Ɫ'],\r\n\t\t\r\n\t\t'm' : ['m','ɯ','ɰ','ɱ','ͫ','ᴟ','ᵐ','ᵚ','ᵯ','ᶆ','ᶬ','ᶭ','ḿ','ṁ','ṃ','㎡','㎥','m'],\r\n\t\t'M' : ['M','Ɯ','ᴍ','ᴹ','Ḿ','Ṁ','Ṃ','M'],\r\n\t\t\r\n\t\t'n' : ['n','ñ','ń','ņ','ň','ʼn','ƞ','ǹ','ȵ','ɲ','ɳ','ᵰ','ᶇ','ᶮ','ᶯ','ṅ','ṇ','ṉ','ṋ','ⁿ','n'],\r\n\t\t'N' : ['N','Ñ','Ń','Ņ','Ň','Ɲ','Ǹ','Ƞ','ɴ','ᴎ','ᴺ','ᴻ','ᶰ','Ṅ','Ṇ','Ṉ','Ṋ','N'],\r\n\t\t\r\n\t\t'o' : ['o','ò','ó','ô','õ','ö','ø','ō','ŏ','ő','ơ','ǒ','ǫ','ǭ','ǿ','ȍ','ȏ','ȫ','ȭ','ȯ','ȱ','ɵ','ͦ','о','ӧ','ө','ᴏ','ᴑ','ᴓ','ᴼ','ᵒ','ᶱ','ṍ','ṏ','ṑ','ṓ','ọ','ỏ','ố','ồ','ổ','ỗ','ộ','ớ','ờ','ở','ỡ','ợ','ₒ','o','𐐬'],\r\n\t\t'O' : ['O','Ò','Ó','Ô','Õ','Ö','Ø','Ō','Ŏ','Ő','Ɵ','Ơ','Ǒ','Ǫ','Ǭ','Ǿ','Ȍ','Ȏ','Ȫ','Ȭ','Ȯ','Ȱ','О','Ӧ','Ө','Ṍ','Ṏ','Ṑ','Ṓ','Ọ','Ỏ','Ố','Ồ','Ổ','Ỗ','Ộ','Ớ','Ờ','Ở','Ỡ','Ợ','O','𐐄'],\r\n\t\t\r\n\t\t'p' : ['p','ᵖ','ᵱ','ᵽ','ᶈ','ṕ','ṗ','p'],\r\n\t\t'P' : ['P','Ƥ','ᴘ','ᴾ','Ṕ','Ṗ','Ᵽ','P'],\r\n\t\t\r\n\t\t'q' : ['q','ɋ','ʠ','ᛩ','q'],\r\n\t\t'Q' : ['Q','Ɋ','Q'],\r\n\t\t\r\n\t\t'r' : ['r','ŕ','ŗ','ř','ȑ','ȓ','ɍ','ɹ','ɻ','ʳ','ʴ','ʵ','ͬ','ᵣ','ᵲ','ᶉ','ṙ','ṛ','ṝ','ṟ'],\r\n\t\t'R' : ['R','Ŕ','Ŗ','Ř','Ʀ','Ȑ','Ȓ','Ɍ','ʀ','ʁ','ʶ','ᚱ','ᴙ','ᴚ','ᴿ','Ṙ','Ṛ','Ṝ','Ṟ','Ɽ'],\r\n\t\t\r\n\t\t's' : ['s','ś','ŝ','ş','š','ș','ʂ','ᔆ','ᶊ','ṡ','ṣ','ṥ','ṧ','ṩ','s'],\r\n\t\t'S' : ['S','Ś','Ŝ','Ş','Š','Ș','ȿ','ˢ','ᵴ','Ṡ','Ṣ','Ṥ','Ṧ','Ṩ','S'],\r\n\t\t\r\n\t\t't' : ['t','ţ','ť','ŧ','ƫ','ƭ','ț','ʇ','ͭ','ᵀ','ᵗ','ᵵ','ᶵ','ṫ','ṭ','ṯ','ṱ','ẗ','t'],\r\n\t\t'T' : ['T','Ţ','Ť','Ƭ','Ʈ','Ț','Ⱦ','ᴛ','ᵀ','Ṫ','Ṭ','Ṯ','Ṱ','T'],\r\n\t \t\r\n\t\t'u' : ['u','ù','ú','û','ü','ũ','ū','ŭ','ů','ű','ų','ư','ǔ','ǖ','ǘ','ǚ','ǜ','ȕ','ȗ','ͧ','ߎ','ᵘ','ᵤ','ṳ','ṵ','ṷ','ṹ','ṻ','ụ','ủ','ứ','ừ','ử','ữ','ự','u'],\r\n\t\t'U' : ['U','Ù','Ú','Û','Ü','Ũ','Ū','Ŭ','Ů','Ű','Ų','Ư','Ǔ','Ǖ','Ǘ','Ǚ','Ǜ','Ȕ','Ȗ','Ʉ','ᴜ','ᵁ','ᵾ','Ṳ','Ṵ','Ṷ','Ṹ','Ṻ','Ụ','Ủ','Ứ','Ừ','Ử','Ữ','Ự','U'],\r\n\t\t\r\n\t\t'v' : ['v','ʋ','ͮ','ᵛ','ᵥ','ᶹ','ṽ','ṿ','ⱱ','v','ⱴ'],\r\n\t\t'V' : ['V','Ʋ','Ʌ','ʌ','ᴠ','ᶌ','Ṽ','Ṿ','V'],\r\n\t\t\r\n\t\t'w' : ['w','ŵ','ʷ','ᵂ','ẁ','ẃ','ẅ','ẇ','ẉ','ẘ','ⱳ','w'],\r\n\t\t'W' : ['W','Ŵ','ʍ','ᴡ','Ẁ','Ẃ','Ẅ','Ẇ','Ẉ','Ⱳ','W'],\r\n\t\t\r\n\t\t'x' : ['x','̽','͓','ᶍ','ͯ','ẋ','ẍ','ₓ','x'],\r\n\t\t'X' : ['X','ˣ','ͯ','Ẋ','Ẍ','☒','✕','✖','✗','✘','X'],\r\n\t\t\r\n\t\t'y' : ['y','ý','ÿ','ŷ','ȳ','ɏ','ʸ','ẏ','ỳ','ỵ','ỷ','ỹ','y'],\r\n\t\t'Y' : ['Y','Ý','Ŷ','Ÿ','Ƴ','ƴ','Ȳ','Ɏ','ʎ','ʏ','Ẏ','Ỳ','Ỵ','Ỷ','Ỹ','Y'],\r\n\t\t\r\n\t\t'z' : ['z','ź','ż','ž','ƶ','ȥ','ɀ','ʐ','ʑ','ᙆ','ᙇ','ᶻ','ᶼ','ᶽ','ẑ','ẓ','ẕ','ⱬ','z'],\r\n\t\t'Z' : ['Z','Ź','Ż','Ž','Ƶ','Ȥ','ᴢ','ᵶ','Ẑ','Ẓ','Ẕ','Ⱬ','Z']\r\n\t};\r\n\r\n/*\r\n * Main function of the module which removes all diacritics from the received text\r\n */\r\nvar diacriticless = function (text) {\r\n var result = [];\r\n\r\n\t// iterate over all the characters of the received text\r\n for(var i=0; i 2 && arguments[2] !== undefined ? arguments[2] : false;\n var fromDropdown = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n\n // take care of nulls\n if (typeof rowval === 'undefined' || rowval === null) {\n return false;\n } // row value\n\n\n var rowValue = skipDiacritics ? String(rowval).toLowerCase() : diacriticless(escapeRegExp(String(rowval)).toLowerCase()); // search term\n\n var searchTerm = skipDiacritics ? filter.toLowerCase() : diacriticless(escapeRegExp(filter).toLowerCase()); // comparison\n\n return fromDropdown ? rowValue === searchTerm : rowValue.indexOf(searchTerm) > -1;\n },\n compare: function compare(x, y) {\n function cook(d) {\n if (typeof d === 'undefined' || d === null) return '';\n return diacriticless(d.toLowerCase());\n }\n\n x = cook(x);\n y = cook(y);\n if (x < y) return -1;\n if (x > y) return 1;\n return 0;\n }\n};\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nvar script = {\n name: 'VgtPaginationPageInfo',\n props: {\n currentPage: {\n \"default\": 1\n },\n lastPage: {\n \"default\": 1\n },\n totalRecords: {\n \"default\": 0\n },\n ofText: {\n \"default\": 'of',\n type: String\n },\n pageText: {\n \"default\": 'page',\n type: String\n }\n },\n data: function data() {\n return {};\n },\n computed: {\n pageInfo: function pageInfo() {\n return \"\".concat(this.ofText, \" \").concat(this.lastPage);\n }\n },\n methods: {\n changePage: function changePage(event) {\n var value = parseInt(event.target.value, 10); //! invalid number\n\n if (Number.isNaN(value) || value > this.lastPage || value < 1) {\n event.target.value = this.currentPage;\n return false;\n } //* valid number\n\n\n event.target.value = value;\n this.$emit('page-changed', value);\n }\n },\n mounted: function mounted() {},\n components: {}\n};\n\nfunction normalizeComponent(template, style, script, scopeId, isFunctionalTemplate, moduleIdentifier /* server only */, shadowMode, createInjector, createInjectorSSR, createInjectorShadow) {\r\n if (typeof shadowMode !== 'boolean') {\r\n createInjectorSSR = createInjector;\r\n createInjector = shadowMode;\r\n shadowMode = false;\r\n }\r\n // Vue.extend constructor export interop.\r\n const options = typeof script === 'function' ? script.options : script;\r\n // render functions\r\n if (template && template.render) {\r\n options.render = template.render;\r\n options.staticRenderFns = template.staticRenderFns;\r\n options._compiled = true;\r\n // functional template\r\n if (isFunctionalTemplate) {\r\n options.functional = true;\r\n }\r\n }\r\n // scopedId\r\n if (scopeId) {\r\n options._scopeId = scopeId;\r\n }\r\n let hook;\r\n if (moduleIdentifier) {\r\n // server build\r\n hook = function (context) {\r\n // 2.3 injection\r\n context =\r\n context || // cached call\r\n (this.$vnode && this.$vnode.ssrContext) || // stateful\r\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext); // functional\r\n // 2.2 with runInNewContext: true\r\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\r\n context = __VUE_SSR_CONTEXT__;\r\n }\r\n // inject component styles\r\n if (style) {\r\n style.call(this, createInjectorSSR(context));\r\n }\r\n // register component module identifier for async chunk inference\r\n if (context && context._registeredComponents) {\r\n context._registeredComponents.add(moduleIdentifier);\r\n }\r\n };\r\n // used by ssr in case component is cached and beforeCreate\r\n // never gets called\r\n options._ssrRegister = hook;\r\n }\r\n else if (style) {\r\n hook = shadowMode\r\n ? function (context) {\r\n style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot));\r\n }\r\n : function (context) {\r\n style.call(this, createInjector(context));\r\n };\r\n }\r\n if (hook) {\r\n if (options.functional) {\r\n // register for functional component in vue file\r\n const originalRender = options.render;\r\n options.render = function renderWithStyleInjection(h, context) {\r\n hook.call(context);\r\n return originalRender(h, context);\r\n };\r\n }\r\n else {\r\n // inject component registration as beforeCreate hook\r\n const existing = options.beforeCreate;\r\n options.beforeCreate = existing ? [].concat(existing, hook) : [hook];\r\n }\r\n }\r\n return script;\r\n}\n\n/* script */\nvar __vue_script__ = script;\n/* template */\n\nvar __vue_render__ = function __vue_render__() {\n var _vm = this;\n\n var _h = _vm.$createElement;\n\n var _c = _vm._self._c || _h;\n\n return _c('div', {\n staticClass: \"footer__navigation__page-info\"\n }, [_vm._v(\"\\n \" + _vm._s(_vm.pageText) + \" \"), _c('input', {\n staticClass: \"footer__navigation__page-info__current-entry\",\n attrs: {\n \"type\": \"text\"\n },\n domProps: {\n \"value\": _vm.currentPage\n },\n on: {\n \"keyup\": function keyup($event) {\n if (!$event.type.indexOf('key') && _vm._k($event.keyCode, \"enter\", 13, $event.key, \"Enter\")) {\n return null;\n }\n\n $event.stopPropagation();\n return _vm.changePage($event);\n }\n }\n }), _vm._v(\" \" + _vm._s(_vm.pageInfo) + \"\\n\")]);\n};\n\nvar __vue_staticRenderFns__ = [];\n/* style */\n\nvar __vue_inject_styles__ = undefined;\n/* scoped */\n\nvar __vue_scope_id__ = \"data-v-9a8cd1f4\";\n/* module identifier */\n\nvar __vue_module_identifier__ = undefined;\n/* functional template */\n\nvar __vue_is_functional_template__ = false;\n/* style inject */\n\n/* style inject SSR */\n\n/* style inject shadow dom */\n\nvar __vue_component__ =\n/*#__PURE__*/\nnormalizeComponent({\n render: __vue_render__,\n staticRenderFns: __vue_staticRenderFns__\n}, __vue_inject_styles__, __vue_script__, __vue_scope_id__, __vue_is_functional_template__, __vue_module_identifier__, false, undefined, undefined, undefined);\n\n//\nvar DEFAULT_ROWS_PER_PAGE_DROPDOWN = [10, 20, 30, 40, 50];\nvar script$1 = {\n name: 'VgtPagination',\n props: {\n styleClass: {\n \"default\": 'table table-bordered'\n },\n total: {\n \"default\": null\n },\n perPage: {},\n rtl: {\n \"default\": false\n },\n customRowsPerPageDropdown: {\n \"default\": function _default() {\n return [];\n }\n },\n paginateDropdownAllowAll: {\n \"default\": true\n },\n mode: {\n \"default\": 'records'\n },\n // text options\n nextText: {\n \"default\": 'Next'\n },\n prevText: {\n \"default\": 'Prev'\n },\n rowsPerPageText: {\n \"default\": 'Rows per page:'\n },\n ofText: {\n \"default\": 'of'\n },\n pageText: {\n \"default\": 'page'\n },\n allText: {\n \"default\": 'All'\n }\n },\n data: function data() {\n return {\n currentPage: 1,\n prevPage: 0,\n currentPerPage: 10,\n rowsPerPageOptions: []\n };\n },\n watch: {\n perPage: {\n handler: function handler(newValue, oldValue) {\n this.handlePerPage();\n this.perPageChanged(oldValue);\n },\n immediate: true\n },\n customRowsPerPageDropdown: function customRowsPerPageDropdown() {\n this.handlePerPage();\n },\n total: {\n handler: function handler(newValue, oldValue) {\n if (this.rowsPerPageOptions.indexOf(this.currentPerPage) === -1) {\n this.currentPerPage = newValue;\n }\n }\n }\n },\n computed: {\n // Number of pages\n pagesCount: function pagesCount() {\n var quotient = Math.floor(this.total / this.currentPerPage);\n var remainder = this.total % this.currentPerPage;\n return remainder === 0 ? quotient : quotient + 1;\n },\n // Current displayed items\n paginatedInfo: function paginatedInfo() {\n var first = (this.currentPage - 1) * this.currentPerPage + 1;\n var last = Math.min(this.total, this.currentPage * this.currentPerPage);\n\n if (last === 0) {\n first = 0;\n }\n\n return \"\".concat(first, \" - \").concat(last, \" \").concat(this.ofText, \" \").concat(this.total);\n },\n // Can go to next page\n nextIsPossible: function nextIsPossible() {\n return this.currentPage < this.pagesCount;\n },\n // Can go to previous page\n prevIsPossible: function prevIsPossible() {\n return this.currentPage > 1;\n }\n },\n methods: {\n // Change current page\n changePage: function changePage(pageNumber) {\n var emit = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n if (pageNumber > 0 && this.total > this.currentPerPage * (pageNumber - 1)) {\n this.prevPage = this.currentPage;\n this.currentPage = pageNumber;\n if (emit) this.pageChanged();\n }\n },\n // Go to next page\n nextPage: function nextPage() {\n if (this.nextIsPossible) {\n this.prevPage = this.currentPage;\n ++this.currentPage;\n this.pageChanged();\n }\n },\n // Go to previous page\n previousPage: function previousPage() {\n if (this.prevIsPossible) {\n this.prevPage = this.currentPage;\n --this.currentPage;\n this.pageChanged();\n }\n },\n // Indicate page changing\n pageChanged: function pageChanged() {\n this.$emit('page-changed', {\n currentPage: this.currentPage,\n prevPage: this.prevPage\n });\n },\n // Indicate per page changing\n perPageChanged: function perPageChanged(oldValue) {\n // go back to first page\n if (oldValue) {\n //* only emit if this isn't first initialization\n this.$emit('per-page-changed', {\n currentPerPage: this.currentPerPage\n });\n }\n\n this.changePage(1, false);\n },\n // Handle per page changing\n handlePerPage: function handlePerPage() {\n //* if there's a custom dropdown then we use that\n if (this.customRowsPerPageDropdown !== null && Array.isArray(this.customRowsPerPageDropdown) && this.customRowsPerPageDropdown.length !== 0) {\n this.rowsPerPageOptions = lodash_clonedeep(this.customRowsPerPageDropdown);\n } else {\n //* otherwise we use the default rows per page dropdown\n this.rowsPerPageOptions = lodash_clonedeep(DEFAULT_ROWS_PER_PAGE_DROPDOWN);\n }\n\n if (this.perPage) {\n this.currentPerPage = this.perPage; // if perPage doesn't already exist, we add it\n\n var found = false;\n\n for (var i = 0; i < this.rowsPerPageOptions.length; i++) {\n if (this.rowsPerPageOptions[i] === this.perPage) {\n found = true;\n }\n }\n\n if (!found && this.perPage !== -1) {\n this.rowsPerPageOptions.unshift(this.perPage);\n }\n } else {\n // reset to default\n this.currentPerPage = 10;\n }\n }\n },\n mounted: function mounted() {},\n components: {\n 'pagination-page-info': __vue_component__\n }\n};\n\n/* script */\nvar __vue_script__$1 = script$1;\n/* template */\n\nvar __vue_render__$1 = function __vue_render__() {\n var _vm = this;\n\n var _h = _vm.$createElement;\n\n var _c = _vm._self._c || _h;\n\n return _c('div', {\n staticClass: \"vgt-wrap__footer vgt-clearfix\"\n }, [_c('div', {\n staticClass: \"footer__row-count vgt-pull-left\"\n }, [_c('span', {\n staticClass: \"footer__row-count__label\"\n }, [_vm._v(_vm._s(_vm.rowsPerPageText))]), _vm._v(\" \"), _c('select', {\n directives: [{\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.currentPerPage,\n expression: \"currentPerPage\"\n }],\n staticClass: \"footer__row-count__select\",\n attrs: {\n \"autocomplete\": \"off\",\n \"name\": \"perPageSelect\"\n },\n on: {\n \"change\": [function ($event) {\n var $$selectedVal = Array.prototype.filter.call($event.target.options, function (o) {\n return o.selected;\n }).map(function (o) {\n var val = \"_value\" in o ? o._value : o.value;\n return val;\n });\n _vm.currentPerPage = $event.target.multiple ? $$selectedVal : $$selectedVal[0];\n }, _vm.perPageChanged]\n }\n }, [_vm._l(_vm.rowsPerPageOptions, function (option, idx) {\n return _c('option', {\n key: 'rows-dropdown-option-' + idx,\n domProps: {\n \"value\": option\n }\n }, [_vm._v(\"\\n \" + _vm._s(option) + \"\\n \")]);\n }), _vm._v(\" \"), _vm.paginateDropdownAllowAll ? _c('option', {\n domProps: {\n \"value\": _vm.total\n }\n }, [_vm._v(_vm._s(_vm.allText))]) : _vm._e()], 2)]), _vm._v(\" \"), _c('div', {\n staticClass: \"footer__navigation vgt-pull-right\"\n }, [_c('a', {\n staticClass: \"footer__navigation__page-btn\",\n \"class\": {\n disabled: !_vm.prevIsPossible\n },\n attrs: {\n \"href\": \"javascript:undefined\",\n \"tabindex\": \"0\"\n },\n on: {\n \"click\": function click($event) {\n $event.preventDefault();\n $event.stopPropagation();\n return _vm.previousPage($event);\n }\n }\n }, [_c('span', {\n staticClass: \"chevron\",\n \"class\": {\n 'left': !_vm.rtl,\n 'right': _vm.rtl\n }\n }), _vm._v(\" \"), _c('span', [_vm._v(_vm._s(_vm.prevText))])]), _vm._v(\" \"), _vm.mode === 'pages' ? _c('pagination-page-info', {\n attrs: {\n \"totalRecords\": _vm.total,\n \"lastPage\": _vm.pagesCount,\n \"currentPage\": _vm.currentPage,\n \"ofText\": _vm.ofText,\n \"pageText\": _vm.pageText\n },\n on: {\n \"page-changed\": _vm.changePage\n }\n }) : _c('div', {\n staticClass: \"footer__navigation__info\"\n }, [_vm._v(_vm._s(_vm.paginatedInfo))]), _vm._v(\" \"), _c('a', {\n staticClass: \"footer__navigation__page-btn\",\n \"class\": {\n disabled: !_vm.nextIsPossible\n },\n attrs: {\n \"href\": \"javascript:undefined\",\n \"tabindex\": \"0\"\n },\n on: {\n \"click\": function click($event) {\n $event.preventDefault();\n $event.stopPropagation();\n return _vm.nextPage($event);\n }\n }\n }, [_c('span', [_vm._v(_vm._s(_vm.nextText))]), _vm._v(\" \"), _c('span', {\n staticClass: \"chevron\",\n \"class\": {\n 'right': !_vm.rtl,\n 'left': _vm.rtl\n }\n })])], 1)]);\n};\n\nvar __vue_staticRenderFns__$1 = [];\n/* style */\n\nvar __vue_inject_styles__$1 = undefined;\n/* scoped */\n\nvar __vue_scope_id__$1 = undefined;\n/* module identifier */\n\nvar __vue_module_identifier__$1 = undefined;\n/* functional template */\n\nvar __vue_is_functional_template__$1 = false;\n/* style inject */\n\n/* style inject SSR */\n\n/* style inject shadow dom */\n\nvar __vue_component__$1 =\n/*#__PURE__*/\nnormalizeComponent({\n render: __vue_render__$1,\n staticRenderFns: __vue_staticRenderFns__$1\n}, __vue_inject_styles__$1, __vue_script__$1, __vue_scope_id__$1, __vue_is_functional_template__$1, __vue_module_identifier__$1, false, undefined, undefined, undefined);\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nvar script$2 = {\n name: 'VgtGlobalSearch',\n props: ['value', 'searchEnabled', 'globalSearchPlaceholder'],\n data: function data() {\n return {\n globalSearchTerm: null\n };\n },\n computed: {\n showControlBar: function showControlBar() {\n if (this.searchEnabled) return true;\n if (this.$slots && this.$slots['internal-table-actions']) return true;\n return false;\n }\n },\n methods: {\n updateValue: function updateValue(value) {\n this.$emit('input', value);\n this.$emit('on-keyup', value);\n },\n entered: function entered(value) {\n this.$emit('on-enter', value);\n }\n }\n};\n\n/* script */\nvar __vue_script__$2 = script$2;\n/* template */\n\nvar __vue_render__$2 = function __vue_render__() {\n var _vm = this;\n\n var _h = _vm.$createElement;\n\n var _c = _vm._self._c || _h;\n\n return _vm.showControlBar ? _c('div', {\n staticClass: \"vgt-global-search vgt-clearfix\"\n }, [_c('div', {\n staticClass: \"vgt-global-search__input vgt-pull-left\"\n }, [_vm.searchEnabled ? _c('span', {\n staticClass: \"input__icon\"\n }, [_c('div', {\n staticClass: \"magnifying-glass\"\n })]) : _vm._e(), _vm._v(\" \"), _vm.searchEnabled ? _c('input', {\n staticClass: \"vgt-input vgt-pull-left\",\n attrs: {\n \"type\": \"text\",\n \"placeholder\": _vm.globalSearchPlaceholder\n },\n domProps: {\n \"value\": _vm.value\n },\n on: {\n \"input\": function input($event) {\n return _vm.updateValue($event.target.value);\n },\n \"keyup\": function keyup($event) {\n if (!$event.type.indexOf('key') && _vm._k($event.keyCode, \"enter\", 13, $event.key, \"Enter\")) {\n return null;\n }\n\n return _vm.entered($event.target.value);\n }\n }\n }) : _vm._e()]), _vm._v(\" \"), _c('div', {\n staticClass: \"vgt-global-search__actions vgt-pull-right\"\n }, [_vm._t(\"internal-table-actions\")], 2)]) : _vm._e();\n};\n\nvar __vue_staticRenderFns__$2 = [];\n/* style */\n\nvar __vue_inject_styles__$2 = undefined;\n/* scoped */\n\nvar __vue_scope_id__$2 = undefined;\n/* module identifier */\n\nvar __vue_module_identifier__$2 = undefined;\n/* functional template */\n\nvar __vue_is_functional_template__$2 = false;\n/* style inject */\n\n/* style inject SSR */\n\n/* style inject shadow dom */\n\nvar __vue_component__$2 =\n/*#__PURE__*/\nnormalizeComponent({\n render: __vue_render__$2,\n staticRenderFns: __vue_staticRenderFns__$2\n}, __vue_inject_styles__$2, __vue_script__$2, __vue_scope_id__$2, __vue_is_functional_template__$2, __vue_module_identifier__$2, false, undefined, undefined, undefined);\n\nvar script$3 = {\n name: 'VgtFilterRow',\n props: ['lineNumbers', 'columns', 'typedColumns', 'globalSearchEnabled', 'selectable', 'mode'],\n watch: {\n columns: {\n handler: function handler(newValue, oldValue) {\n this.populateInitialFilters();\n },\n deep: true,\n immediate: true\n }\n },\n data: function data() {\n return {\n columnFilters: {},\n timer: null\n };\n },\n computed: {\n // to create a filter row, we need to\n // make sure that there is atleast 1 column\n // that requires filtering\n hasFilterRow: function hasFilterRow() {\n // if (this.mode === 'remote' || !this.globalSearchEnabled) {\n for (var i = 0; i < this.columns.length; i++) {\n var col = this.columns[i];\n\n if (col.filterOptions && col.filterOptions.enabled) {\n return true;\n }\n } // }\n\n\n return false;\n }\n },\n methods: {\n reset: function reset() {\n var emitEvent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n this.columnFilters = {};\n\n if (emitEvent) {\n this.$emit('filter-changed', this.columnFilters);\n }\n },\n isFilterable: function isFilterable(column) {\n return column.filterOptions && column.filterOptions.enabled;\n },\n isDropdown: function isDropdown(column) {\n return this.isFilterable(column) && column.filterOptions.filterDropdownItems && column.filterOptions.filterDropdownItems.length;\n },\n isDropdownObjects: function isDropdownObjects(column) {\n return this.isDropdown(column) && _typeof(column.filterOptions.filterDropdownItems[0]) === 'object';\n },\n isDropdownArray: function isDropdownArray(column) {\n return this.isDropdown(column) && _typeof(column.filterOptions.filterDropdownItems[0]) !== 'object';\n },\n // get column's defined placeholder or default one\n getPlaceholder: function getPlaceholder(column) {\n var placeholder = this.isFilterable(column) && column.filterOptions.placeholder || \"Filter \".concat(column.label);\n return placeholder;\n },\n updateFiltersOnEnter: function updateFiltersOnEnter(column, value) {\n if (this.timer) clearTimeout(this.timer);\n this.updateFiltersImmediately(column.field, value);\n },\n updateFiltersOnKeyup: function updateFiltersOnKeyup(column, value) {\n // if the trigger is enter, we don't filter on keyup\n if (column.filterOptions.trigger === 'enter') return;\n this.updateFilters(column, value);\n },\n updateSlotFilter: function updateSlotFilter(column, value) {\n var fieldToFilter = column.filterOptions.slotFilterField || column.field;\n\n if (typeof column.filterOptions.formatValue === 'function') {\n value = column.filterOptions.formatValue(value);\n }\n\n this.updateFiltersImmediately(fieldToFilter, value);\n },\n // since vue doesn't detect property addition and deletion, we\n // need to create helper function to set property etc\n updateFilters: function updateFilters(column, value) {\n var _this = this;\n\n if (this.timer) clearTimeout(this.timer);\n this.timer = setTimeout(function () {\n _this.updateFiltersImmediately(column.field, value);\n }, 400);\n },\n updateFiltersImmediately: function updateFiltersImmediately(field, value) {\n this.$set(this.columnFilters, field, value);\n this.$emit('filter-changed', this.columnFilters);\n },\n populateInitialFilters: function populateInitialFilters() {\n for (var i = 0; i < this.columns.length; i++) {\n var col = this.columns[i]; // lets see if there are initial\n // filters supplied by user\n\n if (this.isFilterable(col) && typeof col.filterOptions.filterValue !== 'undefined' && col.filterOptions.filterValue !== null) {\n this.$set(this.columnFilters, col.field, col.filterOptions.filterValue); // this.updateFilters(col, col.filterOptions.filterValue);\n // this.$set(col.filterOptions, 'filterValue', undefined);\n }\n } //* lets emit event once all filters are set\n\n\n this.$emit('filter-changed', this.columnFilters);\n }\n }\n};\n\n/* script */\nvar __vue_script__$3 = script$3;\n/* template */\n\nvar __vue_render__$3 = function __vue_render__() {\n var _vm = this;\n\n var _h = _vm.$createElement;\n\n var _c = _vm._self._c || _h;\n\n return _vm.hasFilterRow ? _c('tr', [_vm.lineNumbers ? _c('th') : _vm._e(), _vm._v(\" \"), _vm.selectable ? _c('th') : _vm._e(), _vm._v(\" \"), _vm._l(_vm.columns, function (column, index) {\n return !column.hidden ? _c('th', {\n key: index,\n staticClass: \"filter-th\"\n }, [_vm._t(\"column-filter\", [_vm.isFilterable(column) ? _c('div', [!_vm.isDropdown(column) ? _c('input', {\n staticClass: \"vgt-input\",\n attrs: {\n \"type\": \"text\",\n \"placeholder\": _vm.getPlaceholder(column)\n },\n domProps: {\n \"value\": _vm.columnFilters[column.field]\n },\n on: {\n \"keyup\": function keyup($event) {\n if (!$event.type.indexOf('key') && _vm._k($event.keyCode, \"enter\", 13, $event.key, \"Enter\")) {\n return null;\n }\n\n return _vm.updateFiltersOnEnter(column, $event.target.value);\n },\n \"input\": function input($event) {\n return _vm.updateFiltersOnKeyup(column, $event.target.value);\n }\n }\n }) : _vm._e(), _vm._v(\" \"), _vm.isDropdownArray(column) ? _c('select', {\n staticClass: \"vgt-select\",\n domProps: {\n \"value\": _vm.columnFilters[column.field]\n },\n on: {\n \"change\": function change($event) {\n return _vm.updateFilters(column, $event.target.value);\n }\n }\n }, [_c('option', {\n key: \"-1\",\n attrs: {\n \"value\": \"\"\n }\n }, [_vm._v(_vm._s(_vm.getPlaceholder(column)))]), _vm._v(\" \"), _vm._l(column.filterOptions.filterDropdownItems, function (option, i) {\n return _c('option', {\n key: i,\n domProps: {\n \"value\": option\n }\n }, [_vm._v(\"\\n \" + _vm._s(option) + \"\\n \")]);\n })], 2) : _vm._e(), _vm._v(\" \"), _vm.isDropdownObjects(column) ? _c('select', {\n staticClass: \"vgt-select\",\n domProps: {\n \"value\": _vm.columnFilters[column.field]\n },\n on: {\n \"change\": function change($event) {\n return _vm.updateFilters(column, $event.target.value, true);\n }\n }\n }, [_c('option', {\n key: \"-1\",\n attrs: {\n \"value\": \"\"\n }\n }, [_vm._v(_vm._s(_vm.getPlaceholder(column)))]), _vm._v(\" \"), _vm._l(column.filterOptions.filterDropdownItems, function (option, i) {\n return _c('option', {\n key: i,\n domProps: {\n \"value\": option.value\n }\n }, [_vm._v(_vm._s(option.text))]);\n })], 2) : _vm._e()]) : _vm._e()], {\n \"column\": column,\n \"updateFilters\": _vm.updateSlotFilter\n })], 2) : _vm._e();\n })], 2) : _vm._e();\n};\n\nvar __vue_staticRenderFns__$3 = [];\n/* style */\n\nvar __vue_inject_styles__$3 = undefined;\n/* scoped */\n\nvar __vue_scope_id__$3 = \"data-v-1c6bfd21\";\n/* module identifier */\n\nvar __vue_module_identifier__$3 = undefined;\n/* functional template */\n\nvar __vue_is_functional_template__$3 = false;\n/* style inject */\n\n/* style inject SSR */\n\n/* style inject shadow dom */\n\nvar __vue_component__$3 =\n/*#__PURE__*/\nnormalizeComponent({\n render: __vue_render__$3,\n staticRenderFns: __vue_staticRenderFns__$3\n}, __vue_inject_styles__$3, __vue_script__$3, __vue_scope_id__$3, __vue_is_functional_template__$3, __vue_module_identifier__$3, false, undefined, undefined, undefined);\n\nvar DEFAULT_SORT_TYPE = 'asc';\n\nfunction getColumnFirstSortType(column) {\n return column.firstSortType || DEFAULT_SORT_TYPE;\n}\n\nfunction getCurrentPrimarySort(sortArray, column) {\n return sortArray.length === 1 && sortArray[0].field === column.field ? sortArray[0].type : undefined;\n}\n\nfunction getNextSort(currentSort) {\n return currentSort === 'asc' ? 'desc' : DEFAULT_SORT_TYPE;\n}\n\nfunction getIndex(sortArray, column) {\n for (var i = 0; i < sortArray.length; i++) {\n if (column.field === sortArray[i].field) return i;\n }\n\n return -1;\n}\n\nvar primarySort = function (sortArray, column) {\n var currentPrimarySort = getCurrentPrimarySort(sortArray, column);\n return [{\n field: column.field,\n type: currentPrimarySort ? getNextSort(currentPrimarySort) : getColumnFirstSortType(column)\n }];\n};\n\nvar secondarySort = function (sortArray, column) {\n var index = getIndex(sortArray, column);\n\n if (index === -1) {\n sortArray.push({\n field: column.field,\n type: getColumnFirstSortType(column)\n });\n } else {\n sortArray[index].type = getNextSort(sortArray[index].type);\n }\n\n return sortArray;\n};\n\n//\nvar script$4 = {\n name: 'VgtTableHeader',\n props: {\n lineNumbers: {\n \"default\": false,\n type: Boolean\n },\n selectable: {\n \"default\": false,\n type: Boolean\n },\n allSelected: {\n \"default\": false,\n type: Boolean\n },\n allSelectedIndeterminate: {\n \"default\": false,\n type: Boolean\n },\n columns: {\n type: Array\n },\n mode: {\n type: String\n },\n typedColumns: {},\n //* Sort related\n sortable: {\n type: Boolean\n },\n // sortColumn: {\n // type: Number,\n // },\n // sortType: {\n // type: String,\n // },\n // utility functions\n // isSortableColumn: {\n // type: Function,\n // },\n getClasses: {\n type: Function\n },\n //* search related\n searchEnabled: {\n type: Boolean\n },\n tableRef: {},\n paginated: {}\n },\n watch: {\n columns: {\n handler: function handler() {\n this.setColumnStyles();\n },\n immediate: true\n },\n tableRef: {\n handler: function handler() {\n this.setColumnStyles();\n },\n immediate: true\n },\n paginated: {\n handler: function handler() {\n if (this.tableRef) {\n this.setColumnStyles();\n }\n },\n deep: true\n }\n },\n data: function data() {\n return {\n checkBoxThStyle: {},\n lineNumberThStyle: {},\n columnStyles: [],\n sorts: []\n };\n },\n computed: {},\n methods: {\n reset: function reset() {\n this.$refs['filter-row'].reset(true);\n },\n toggleSelectAll: function toggleSelectAll() {\n this.$emit('on-toggle-select-all');\n },\n isSortableColumn: function isSortableColumn(column) {\n var sortable = column.sortable;\n var isSortable = typeof sortable === 'boolean' ? sortable : this.sortable;\n return isSortable;\n },\n sort: function sort(e, column) {\n //* if column is not sortable, return right here\n if (!this.isSortableColumn(column)) return;\n\n if (e.shiftKey) {\n this.sorts = secondarySort(this.sorts, column);\n } else {\n this.sorts = primarySort(this.sorts, column);\n }\n\n this.$emit('on-sort-change', this.sorts);\n },\n setInitialSort: function setInitialSort(sorts) {\n this.sorts = sorts;\n this.$emit('on-sort-change', this.sorts);\n },\n getColumnSort: function getColumnSort(column) {\n for (var i = 0; i < this.sorts.length; i += 1) {\n if (this.sorts[i].field === column.field) {\n return this.sorts[i].type || 'asc';\n }\n }\n\n return null;\n },\n getHeaderClasses: function getHeaderClasses(column, index) {\n var classes = lodash_assign({}, this.getClasses(index, 'th'), {\n sortable: this.isSortableColumn(column),\n 'sorting sorting-desc': this.getColumnSort(column) === 'desc',\n 'sorting sorting-asc': this.getColumnSort(column) === 'asc'\n });\n return classes;\n },\n filterRows: function filterRows(columnFilters) {\n this.$emit('filter-changed', columnFilters);\n },\n getWidthStyle: function getWidthStyle(dom) {\n if (window && window.getComputedStyle && dom) {\n var cellStyle = window.getComputedStyle(dom, null);\n return {\n width: cellStyle.width\n };\n }\n\n return {\n width: 'auto'\n };\n },\n setColumnStyles: function setColumnStyles() {\n var colStyles = [];\n\n for (var i = 0; i < this.columns.length; i++) {\n if (this.tableRef) {\n var skip = 0;\n if (this.selectable) skip++;\n if (this.lineNumbers) skip++;\n var cell = this.tableRef.rows[0].cells[i + skip];\n colStyles.push(this.getWidthStyle(cell));\n } else {\n colStyles.push({\n minWidth: this.columns[i].width ? this.columns[i].width : 'auto',\n maxWidth: this.columns[i].width ? this.columns[i].width : 'auto',\n width: this.columns[i].width ? this.columns[i].width : 'auto'\n });\n }\n }\n\n this.columnStyles = colStyles;\n },\n getColumnStyle: function getColumnStyle(column, index) {\n var styleObject = {\n minWidth: column.width ? column.width : 'auto',\n maxWidth: column.width ? column.width : 'auto',\n width: column.width ? column.width : 'auto'\n }; //* if fixed header we need to get width from original table\n\n if (this.tableRef) {\n if (this.selectable) index++;\n if (this.lineNumbers) index++;\n var cell = this.tableRef.rows[0].cells[index];\n var cellStyle = window.getComputedStyle(cell, null);\n styleObject.width = cellStyle.width;\n }\n\n return styleObject;\n }\n },\n mounted: function mounted() {\n window.addEventListener('resize', this.setColumnStyles);\n },\n beforeDestroy: function beforeDestroy() {\n window.removeEventListener('resize', this.setColumnStyles);\n },\n components: {\n 'vgt-filter-row': __vue_component__$3\n }\n};\n\n/* script */\nvar __vue_script__$4 = script$4;\n/* template */\n\nvar __vue_render__$4 = function __vue_render__() {\n var _vm = this;\n\n var _h = _vm.$createElement;\n\n var _c = _vm._self._c || _h;\n\n return _c('thead', [_c('tr', [_vm.lineNumbers ? _c('th', {\n staticClass: \"line-numbers\"\n }) : _vm._e(), _vm._v(\" \"), _vm.selectable ? _c('th', {\n staticClass: \"vgt-checkbox-col\"\n }, [_c('input', {\n attrs: {\n \"type\": \"checkbox\"\n },\n domProps: {\n \"checked\": _vm.allSelected,\n \"indeterminate\": _vm.allSelectedIndeterminate\n },\n on: {\n \"change\": _vm.toggleSelectAll\n }\n })]) : _vm._e(), _vm._v(\" \"), _vm._l(_vm.columns, function (column, index) {\n return !column.hidden ? _c('th', {\n key: index,\n \"class\": _vm.getHeaderClasses(column, index),\n style: _vm.columnStyles[index],\n on: {\n \"click\": function click($event) {\n return _vm.sort($event, column);\n }\n }\n }, [_vm._t(\"table-column\", [_c('span', [_vm._v(_vm._s(column.label))])], {\n \"column\": column\n })], 2) : _vm._e();\n })], 2), _vm._v(\" \"), _c(\"vgt-filter-row\", {\n ref: \"filter-row\",\n tag: \"tr\",\n attrs: {\n \"global-search-enabled\": _vm.searchEnabled,\n \"line-numbers\": _vm.lineNumbers,\n \"selectable\": _vm.selectable,\n \"columns\": _vm.columns,\n \"mode\": _vm.mode,\n \"typed-columns\": _vm.typedColumns\n },\n on: {\n \"filter-changed\": _vm.filterRows\n },\n scopedSlots: _vm._u([{\n key: \"column-filter\",\n fn: function fn(props) {\n return [_vm._t(\"column-filter\", null, {\n \"column\": props.column,\n \"updateFilters\": props.updateFilters\n })];\n }\n }], null, true)\n })], 1);\n};\n\nvar __vue_staticRenderFns__$4 = [];\n/* style */\n\nvar __vue_inject_styles__$4 = undefined;\n/* scoped */\n\nvar __vue_scope_id__$4 = \"data-v-2d1e3c02\";\n/* module identifier */\n\nvar __vue_module_identifier__$4 = undefined;\n/* functional template */\n\nvar __vue_is_functional_template__$4 = false;\n/* style inject */\n\n/* style inject SSR */\n\n/* style inject shadow dom */\n\nvar __vue_component__$4 =\n/*#__PURE__*/\nnormalizeComponent({\n render: __vue_render__$4,\n staticRenderFns: __vue_staticRenderFns__$4\n}, __vue_inject_styles__$4, __vue_script__$4, __vue_scope_id__$4, __vue_is_functional_template__$4, __vue_module_identifier__$4, false, undefined, undefined, undefined);\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nvar script$5 = {\n name: 'VgtHeaderRow',\n props: {\n headerRow: {\n type: Object\n },\n columns: {\n type: Array\n },\n lineNumbers: {\n type: Boolean\n },\n selectable: {\n type: Boolean\n },\n selectAllByGroup: {\n type: Boolean\n },\n collapsable: {\n type: [Boolean, Number],\n \"default\": false\n },\n collectFormatted: {\n type: Function\n },\n formattedRow: {\n type: Function\n },\n getClasses: {\n type: Function\n },\n fullColspan: {\n type: Number\n },\n groupIndex: {\n type: Number\n }\n },\n data: function data() {\n return {};\n },\n computed: {\n allSelected: function allSelected() {\n var headerRow = this.headerRow,\n groupChildObject = this.groupChildObject;\n return headerRow.children.filter(function (row) {\n return row.vgtSelected;\n }).length === headerRow.children.length;\n }\n },\n methods: {\n columnCollapsable: function columnCollapsable(currentIndex) {\n if (this.collapsable === true) {\n return currentIndex === 0;\n }\n\n return currentIndex === this.collapsable;\n },\n toggleSelectGroup: function toggleSelectGroup(event) {\n this.$emit('on-select-group-change', {\n groupIndex: this.groupIndex,\n checked: event.target.checked\n });\n }\n },\n mounted: function mounted() {},\n components: {}\n};\n\n/* script */\nvar __vue_script__$5 = script$5;\n/* template */\n\nvar __vue_render__$5 = function __vue_render__() {\n var _vm = this;\n\n var _h = _vm.$createElement;\n\n var _c = _vm._self._c || _h;\n\n return _c('tr', [_vm.headerRow.mode === 'span' ? _c('th', {\n staticClass: \"vgt-left-align vgt-row-header\",\n attrs: {\n \"colspan\": _vm.fullColspan\n }\n }, [_vm.selectAllByGroup ? [_vm._t(\"table-header-group-select\", [_c('input', {\n attrs: {\n \"type\": \"checkbox\"\n },\n domProps: {\n \"checked\": _vm.allSelected\n },\n on: {\n \"change\": function change($event) {\n return _vm.toggleSelectGroup($event);\n }\n }\n })], {\n \"columns\": _vm.columns,\n \"row\": _vm.headerRow\n })] : _vm._e(), _vm._v(\" \"), _c('span', {\n on: {\n \"click\": function click($event) {\n _vm.collapsable ? _vm.$emit('vgtExpand', !_vm.headerRow.vgtIsExpanded) : function () {};\n }\n }\n }, [_vm.collapsable ? _c('span', {\n staticClass: \"triangle\",\n \"class\": {\n 'expand': _vm.headerRow.vgtIsExpanded\n }\n }) : _vm._e(), _vm._v(\" \"), _vm._t(\"table-header-row\", [_vm.headerRow.html ? _c('span', {\n domProps: {\n \"innerHTML\": _vm._s(_vm.headerRow.label)\n }\n }) : _c('span', [_vm._v(\"\\n \" + _vm._s(_vm.headerRow.label) + \"\\n \")])], {\n \"row\": _vm.headerRow\n })], 2)], 2) : _vm._e(), _vm._v(\" \"), _vm.headerRow.mode !== 'span' && _vm.lineNumbers ? _c('th', {\n staticClass: \"vgt-row-header\"\n }) : _vm._e(), _vm._v(\" \"), _vm.headerRow.mode !== 'span' && _vm.selectable ? _c('th', {\n staticClass: \"vgt-row-header\"\n }, [_vm.selectAllByGroup ? [_vm._t(\"table-header-group-select\", [_c('input', {\n attrs: {\n \"type\": \"checkbox\"\n },\n domProps: {\n \"checked\": _vm.allSelected\n },\n on: {\n \"change\": function change($event) {\n return _vm.toggleSelectGroup($event);\n }\n }\n })], {\n \"columns\": _vm.columns,\n \"row\": _vm.headerRow\n })] : _vm._e()], 2) : _vm._e(), _vm._v(\" \"), _vm._l(_vm.columns, function (column, i) {\n return _vm.headerRow.mode !== 'span' && !column.hidden ? _c('th', {\n key: i,\n staticClass: \"vgt-row-header\",\n \"class\": _vm.getClasses(i, 'td'),\n on: {\n \"click\": function click($event) {\n _vm.columnCollapsable(i) ? _vm.$emit('vgtExpand', !_vm.headerRow.vgtIsExpanded) : function () {};\n }\n }\n }, [_vm.columnCollapsable(i) ? _c('span', {\n staticClass: \"triangle\",\n \"class\": {\n 'expand': _vm.headerRow.vgtIsExpanded\n }\n }) : _vm._e(), _vm._v(\" \"), _vm._t(\"table-header-row\", [!column.html ? _c('span', [_vm._v(\"\\n \" + _vm._s(_vm.collectFormatted(_vm.headerRow, column, true)) + \"\\n \")]) : _vm._e(), _vm._v(\" \"), column.html ? _c('span', {\n domProps: {\n \"innerHTML\": _vm._s(_vm.collectFormatted(_vm.headerRow, column, true))\n }\n }) : _vm._e()], {\n \"row\": _vm.headerRow,\n \"column\": column,\n \"formattedRow\": _vm.formattedRow(_vm.headerRow, true)\n })], 2) : _vm._e();\n })], 2);\n};\n\nvar __vue_staticRenderFns__$5 = [];\n/* style */\n\nvar __vue_inject_styles__$5 = undefined;\n/* scoped */\n\nvar __vue_scope_id__$5 = undefined;\n/* module identifier */\n\nvar __vue_module_identifier__$5 = undefined;\n/* functional template */\n\nvar __vue_is_functional_template__$5 = false;\n/* style inject */\n\n/* style inject SSR */\n\n/* style inject shadow dom */\n\nvar __vue_component__$5 =\n/*#__PURE__*/\nnormalizeComponent({\n render: __vue_render__$5,\n staticRenderFns: __vue_staticRenderFns__$5\n}, __vue_inject_styles__$5, __vue_script__$5, __vue_scope_id__$5, __vue_is_functional_template__$5, __vue_module_identifier__$5, false, undefined, undefined, undefined);\n\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @param {Date|Number} argument - the value to convert\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nfunction toDate(argument) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present');\n }\n\n var argStr = Object.prototype.toString.call(argument); // Clone the date\n\n if (argument instanceof Date || typeof argument === 'object' && argStr === '[object Date]') {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new Date(argument.getTime());\n } else if (typeof argument === 'number' || argStr === '[object Number]') {\n return new Date(argument);\n } else {\n if ((typeof argument === 'string' || argStr === '[object String]') && typeof console !== 'undefined') {\n // eslint-disable-next-line no-console\n console.warn(\"Starting with v2.0.0-beta.1 date-fns doesn't accept strings as arguments. Please use `parseISO` to parse strings. See: https://git.io/fjule\"); // eslint-disable-next-line no-console\n\n console.warn(new Error().stack);\n }\n\n return new Date(NaN);\n }\n}\n\nfunction toInteger(dirtyNumber) {\n if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\n return NaN;\n }\n\n var number = Number(dirtyNumber);\n\n if (isNaN(number)) {\n return number;\n }\n\n return number < 0 ? Math.ceil(number) : Math.floor(number);\n}\n\n/**\n * @name addMilliseconds\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be added\n * @returns {Date} the new date with the milliseconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * var result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\n\nfunction addMilliseconds(dirtyDate, dirtyAmount) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present');\n }\n\n var timestamp = toDate(dirtyDate).getTime();\n var amount = toInteger(dirtyAmount);\n return new Date(timestamp + amount);\n}\n\nvar MILLISECONDS_IN_MINUTE = 60000;\n/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\n\nfunction getTimezoneOffsetInMilliseconds(dirtyDate) {\n var date = new Date(dirtyDate.getTime());\n var baseTimezoneOffset = date.getTimezoneOffset();\n date.setSeconds(0, 0);\n var millisecondsPartOfTimezoneOffset = date.getTime() % MILLISECONDS_IN_MINUTE;\n return baseTimezoneOffset * MILLISECONDS_IN_MINUTE + millisecondsPartOfTimezoneOffset;\n}\n\n/**\n * @name compareAsc\n * @category Common Helpers\n * @summary Compare the two dates and return -1, 0 or 1.\n *\n * @description\n * Compare the two dates and return 1 if the first date is after the second,\n * -1 if the first date is before the second or 0 if dates are equal.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the first date to compare\n * @param {Date|Number} dateRight - the second date to compare\n * @returns {Number} the result of the comparison\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Compare 11 February 1987 and 10 July 1989:\n * var result = compareAsc(new Date(1987, 1, 11), new Date(1989, 6, 10))\n * //=> -1\n *\n * @example\n * // Sort the array of dates:\n * var result = [\n * new Date(1995, 6, 2),\n * new Date(1987, 1, 11),\n * new Date(1989, 6, 10)\n * ].sort(compareAsc)\n * //=> [\n * // Wed Feb 11 1987 00:00:00,\n * // Mon Jul 10 1989 00:00:00,\n * // Sun Jul 02 1995 00:00:00\n * // ]\n */\n\nfunction compareAsc(dirtyDateLeft, dirtyDateRight) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present');\n }\n\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var diff = dateLeft.getTime() - dateRight.getTime();\n\n if (diff < 0) {\n return -1;\n } else if (diff > 0) {\n return 1; // Return 0 if diff is 0; return NaN if diff is NaN\n } else {\n return diff;\n }\n}\n\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - Now `isValid` doesn't throw an exception\n * if the first argument is not an instance of Date.\n * Instead, argument is converted beforehand using `toDate`.\n *\n * Examples:\n *\n * | `isValid` argument | Before v2.0.0 | v2.0.0 onward |\n * |---------------------------|---------------|---------------|\n * | `new Date()` | `true` | `true` |\n * | `new Date('2016-01-01')` | `true` | `true` |\n * | `new Date('')` | `false` | `false` |\n * | `new Date(1488370835081)` | `true` | `true` |\n * | `new Date(NaN)` | `false` | `false` |\n * | `'2016-01-01'` | `TypeError` | `true` |\n * | `''` | `TypeError` | `false` |\n * | `1488370835081` | `TypeError` | `true` |\n * | `NaN` | `TypeError` | `false` |\n *\n * We introduce this change to make *date-fns* consistent with ECMAScript behavior\n * that try to coerce arguments to the expected type\n * (which is also the case with other *date-fns* functions).\n *\n * @param {*} date - the date to check\n * @returns {Boolean} the date is valid\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // For the valid date:\n * var result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * var result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * var result = isValid(new Date(''))\n * //=> false\n */\n\nfunction isValid(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present');\n }\n\n var date = toDate(dirtyDate);\n return !isNaN(date);\n}\n\nvar formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'less than a second',\n other: 'less than {{count}} seconds'\n },\n xSeconds: {\n one: '1 second',\n other: '{{count}} seconds'\n },\n halfAMinute: 'half a minute',\n lessThanXMinutes: {\n one: 'less than a minute',\n other: 'less than {{count}} minutes'\n },\n xMinutes: {\n one: '1 minute',\n other: '{{count}} minutes'\n },\n aboutXHours: {\n one: 'about 1 hour',\n other: 'about {{count}} hours'\n },\n xHours: {\n one: '1 hour',\n other: '{{count}} hours'\n },\n xDays: {\n one: '1 day',\n other: '{{count}} days'\n },\n aboutXMonths: {\n one: 'about 1 month',\n other: 'about {{count}} months'\n },\n xMonths: {\n one: '1 month',\n other: '{{count}} months'\n },\n aboutXYears: {\n one: 'about 1 year',\n other: 'about {{count}} years'\n },\n xYears: {\n one: '1 year',\n other: '{{count}} years'\n },\n overXYears: {\n one: 'over 1 year',\n other: 'over {{count}} years'\n },\n almostXYears: {\n one: 'almost 1 year',\n other: 'almost {{count}} years'\n }\n};\nfunction formatDistance(token, count, options) {\n options = options || {};\n var result;\n\n if (typeof formatDistanceLocale[token] === 'string') {\n result = formatDistanceLocale[token];\n } else if (count === 1) {\n result = formatDistanceLocale[token].one;\n } else {\n result = formatDistanceLocale[token].other.replace('{{count}}', count);\n }\n\n if (options.addSuffix) {\n if (options.comparison > 0) {\n return 'in ' + result;\n } else {\n return result + ' ago';\n }\n }\n\n return result;\n}\n\nfunction buildFormatLongFn(args) {\n return function (dirtyOptions) {\n var options = dirtyOptions || {};\n var width = options.width ? String(options.width) : args.defaultWidth;\n var format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}\n\nvar dateFormats = {\n full: 'EEEE, MMMM do, y',\n long: 'MMMM do, y',\n medium: 'MMM d, y',\n short: 'MM/dd/yyyy'\n};\nvar timeFormats = {\n full: 'h:mm:ss a zzzz',\n long: 'h:mm:ss a z',\n medium: 'h:mm:ss a',\n short: 'h:mm a'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\n\nvar formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: 'P'\n};\nfunction formatRelative(token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n}\n\nfunction buildLocalizeFn(args) {\n return function (dirtyIndex, dirtyOptions) {\n var options = dirtyOptions || {};\n var context = options.context ? String(options.context) : 'standalone';\n var valuesArray;\n\n if (context === 'formatting' && args.formattingValues) {\n var defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n var width = options.width ? String(options.width) : defaultWidth;\n valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n var _defaultWidth = args.defaultWidth;\n\n var _width = options.width ? String(options.width) : args.defaultWidth;\n\n valuesArray = args.values[_width] || args.values[_defaultWidth];\n }\n\n var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex;\n return valuesArray[index];\n };\n}\n\nvar eraValues = {\n narrow: ['B', 'A'],\n abbreviated: ['BC', 'AD'],\n wide: ['Before Christ', 'Anno Domini']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter'] // Note: in English, the names of days of the week and months are capitalized.\n // If you are making a new locale based on this one, check if the same is true for the language you're working on.\n // Generally, formatted dates should look like they are in the middle of a sentence,\n // e.g. in Spanish language the weekdays and months should be in the lowercase.\n\n};\nvar monthValues = {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n wide: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n};\nvar dayValues = {\n narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n short: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n wide: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n }\n};\nvar formattingDayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n }\n};\n\nfunction ordinalNumber(dirtyNumber, _dirtyOptions) {\n var number = Number(dirtyNumber); // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`:\n //\n // var options = dirtyOptions || {}\n // var unit = String(options.unit)\n //\n // where `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'\n\n var rem100 = number % 100;\n\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + 'st';\n\n case 2:\n return number + 'nd';\n\n case 3:\n return number + 'rd';\n }\n }\n\n return number + 'th';\n}\n\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function (quarter) {\n return Number(quarter) - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: 'wide'\n })\n};\n\nfunction buildMatchPatternFn(args) {\n return function (dirtyString, dirtyOptions) {\n var string = String(dirtyString);\n var options = dirtyOptions || {};\n var matchResult = string.match(args.matchPattern);\n\n if (!matchResult) {\n return null;\n }\n\n var matchedString = matchResult[0];\n var parseResult = string.match(args.parsePattern);\n\n if (!parseResult) {\n return null;\n }\n\n var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];\n value = options.valueCallback ? options.valueCallback(value) : value;\n return {\n value: value,\n rest: string.slice(matchedString.length)\n };\n };\n}\n\nfunction buildMatchFn(args) {\n return function (dirtyString, dirtyOptions) {\n var string = String(dirtyString);\n var options = dirtyOptions || {};\n var width = options.width;\n var matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth];\n var matchResult = string.match(matchPattern);\n\n if (!matchResult) {\n return null;\n }\n\n var matchedString = matchResult[0];\n var parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth];\n var value;\n\n if (Object.prototype.toString.call(parsePatterns) === '[object Array]') {\n value = parsePatterns.findIndex(function (pattern) {\n return pattern.test(string);\n });\n } else {\n value = findKey(parsePatterns, function (pattern) {\n return pattern.test(string);\n });\n }\n\n value = args.valueCallback ? args.valueCallback(value) : value;\n value = options.valueCallback ? options.valueCallback(value) : value;\n return {\n value: value,\n rest: string.slice(matchedString.length)\n };\n };\n}\n\nfunction findKey(object, predicate) {\n for (var key in object) {\n if (object.hasOwnProperty(key) && predicate(object[key])) {\n return key;\n }\n }\n}\n\nvar matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i\n};\nvar parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n};\nvar parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function (value) {\n return parseInt(value, 10);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function (index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\n\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}\n * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}\n */\n\nvar locale = {\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0\n /* Sunday */\n ,\n firstWeekContainsDate: 1\n }\n};\n\n/**\n * @name subMilliseconds\n * @category Millisecond Helpers\n * @summary Subtract the specified number of milliseconds from the given date.\n *\n * @description\n * Subtract the specified number of milliseconds from the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be subtracted\n * @returns {Date} the new date with the milliseconds subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 750 milliseconds from 10 July 2014 12:45:30.000:\n * var result = subMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:29.250\n */\n\nfunction subMilliseconds(dirtyDate, dirtyAmount) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present');\n }\n\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, -amount);\n}\n\nfunction addLeadingZeros(number, targetLength) {\n var sign = number < 0 ? '-' : '';\n var output = Math.abs(number).toString();\n\n while (output.length < targetLength) {\n output = '0' + output;\n }\n\n return sign + output;\n}\n\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | |\n * | d | Day of month | D | |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | m | Minute | M | Month |\n * | s | Second | S | Fraction of second |\n * | y | Year (abs) | Y | |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\n\nvar formatters = {\n // Year\n y: function (date, token) {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n var signedYear = date.getUTCFullYear(); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return addLeadingZeros(token === 'yy' ? year % 100 : year, token.length);\n },\n // Month\n M: function (date, token) {\n var month = date.getUTCMonth();\n return token === 'M' ? String(month + 1) : addLeadingZeros(month + 1, 2);\n },\n // Day of the month\n d: function (date, token) {\n return addLeadingZeros(date.getUTCDate(), token.length);\n },\n // AM or PM\n a: function (date, token) {\n var dayPeriodEnumValue = date.getUTCHours() / 12 >= 1 ? 'pm' : 'am';\n\n switch (token) {\n case 'a':\n case 'aa':\n case 'aaa':\n return dayPeriodEnumValue.toUpperCase();\n\n case 'aaaaa':\n return dayPeriodEnumValue[0];\n\n case 'aaaa':\n default:\n return dayPeriodEnumValue === 'am' ? 'a.m.' : 'p.m.';\n }\n },\n // Hour [1-12]\n h: function (date, token) {\n return addLeadingZeros(date.getUTCHours() % 12 || 12, token.length);\n },\n // Hour [0-23]\n H: function (date, token) {\n return addLeadingZeros(date.getUTCHours(), token.length);\n },\n // Minute\n m: function (date, token) {\n return addLeadingZeros(date.getUTCMinutes(), token.length);\n },\n // Second\n s: function (date, token) {\n return addLeadingZeros(date.getUTCSeconds(), token.length);\n },\n // Fraction of second\n S: function (date, token) {\n var numberOfDigits = token.length;\n var milliseconds = date.getUTCMilliseconds();\n var fractionalSeconds = Math.floor(milliseconds * Math.pow(10, numberOfDigits - 3));\n return addLeadingZeros(fractionalSeconds, token.length);\n }\n};\n\nvar MILLISECONDS_IN_DAY = 86400000; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nfunction getUTCDayOfYear(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present');\n }\n\n var date = toDate(dirtyDate);\n var timestamp = date.getTime();\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n var startOfYearTimestamp = date.getTime();\n var difference = timestamp - startOfYearTimestamp;\n return Math.floor(difference / MILLISECONDS_IN_DAY) + 1;\n}\n\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nfunction startOfUTCISOWeek(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present');\n }\n\n var weekStartsOn = 1;\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}\n\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nfunction getUTCISOWeekYear(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present');\n }\n\n var date = toDate(dirtyDate);\n var year = date.getUTCFullYear();\n var fourthOfJanuaryOfNextYear = new Date(0);\n fourthOfJanuaryOfNextYear.setUTCFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCISOWeek(fourthOfJanuaryOfNextYear);\n var fourthOfJanuaryOfThisYear = new Date(0);\n fourthOfJanuaryOfThisYear.setUTCFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCISOWeek(fourthOfJanuaryOfThisYear);\n\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}\n\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nfunction startOfUTCISOWeekYear(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present');\n }\n\n var year = getUTCISOWeekYear(dirtyDate);\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setUTCFullYear(year, 0, 4);\n fourthOfJanuary.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCISOWeek(fourthOfJanuary);\n return date;\n}\n\nvar MILLISECONDS_IN_WEEK = 604800000; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nfunction getUTCISOWeek(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present');\n }\n\n var date = toDate(dirtyDate);\n var diff = startOfUTCISOWeek(date).getTime() - startOfUTCISOWeekYear(date).getTime(); // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}\n\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nfunction startOfUTCWeek(dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present');\n }\n\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}\n\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nfunction getUTCWeekYear(dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present');\n }\n\n var date = toDate(dirtyDate, dirtyOptions);\n var year = date.getUTCFullYear();\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeFirstWeekContainsDate = locale && locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate); // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n\n var firstWeekOfNextYear = new Date(0);\n firstWeekOfNextYear.setUTCFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCWeek(firstWeekOfNextYear, dirtyOptions);\n var firstWeekOfThisYear = new Date(0);\n firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCWeek(firstWeekOfThisYear, dirtyOptions);\n\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}\n\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nfunction startOfUTCWeekYear(dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present');\n }\n\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeFirstWeekContainsDate = locale && locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate);\n var year = getUTCWeekYear(dirtyDate, dirtyOptions);\n var firstWeek = new Date(0);\n firstWeek.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCWeek(firstWeek, dirtyOptions);\n return date;\n}\n\nvar MILLISECONDS_IN_WEEK$1 = 604800000; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nfunction getUTCWeek(dirtyDate, options) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present');\n }\n\n var date = toDate(dirtyDate);\n var diff = startOfUTCWeek(date, options).getTime() - startOfUTCWeekYear(date, options).getTime(); // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n\n return Math.round(diff / MILLISECONDS_IN_WEEK$1) + 1;\n}\n\nvar dayPeriodEnum = {\n am: 'am',\n pm: 'pm',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n /*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\n};\nvar formatters$1 = {\n // Era\n G: function (date, token, localize) {\n var era = date.getUTCFullYear() > 0 ? 1 : 0;\n\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return localize.era(era, {\n width: 'abbreviated'\n });\n // A, B\n\n case 'GGGGG':\n return localize.era(era, {\n width: 'narrow'\n });\n // Anno Domini, Before Christ\n\n case 'GGGG':\n default:\n return localize.era(era, {\n width: 'wide'\n });\n }\n },\n // Year\n y: function (date, token, localize) {\n // Ordinal number\n if (token === 'yo') {\n var signedYear = date.getUTCFullYear(); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return localize.ordinalNumber(year, {\n unit: 'year'\n });\n }\n\n return formatters.y(date, token);\n },\n // Local week-numbering year\n Y: function (date, token, localize, options) {\n var signedWeekYear = getUTCWeekYear(date, options); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n var weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear; // Two digit year\n\n if (token === 'YY') {\n var twoDigitYear = weekYear % 100;\n return addLeadingZeros(twoDigitYear, 2);\n } // Ordinal number\n\n\n if (token === 'Yo') {\n return localize.ordinalNumber(weekYear, {\n unit: 'year'\n });\n } // Padding\n\n\n return addLeadingZeros(weekYear, token.length);\n },\n // ISO week-numbering year\n R: function (date, token) {\n var isoWeekYear = getUTCISOWeekYear(date); // Padding\n\n return addLeadingZeros(isoWeekYear, token.length);\n },\n // Extended year. This is a single number designating the year of this calendar system.\n // The main difference between `y` and `u` localizers are B.C. years:\n // | Year | `y` | `u` |\n // |------|-----|-----|\n // | AC 1 | 1 | 1 |\n // | BC 1 | 1 | 0 |\n // | BC 2 | 2 | -1 |\n // Also `yy` always returns the last two digits of a year,\n // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n u: function (date, token) {\n var year = date.getUTCFullYear();\n return addLeadingZeros(year, token.length);\n },\n // Quarter\n Q: function (date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n return String(quarter);\n // 01, 02, 03, 04\n\n case 'QQ':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n\n case 'Qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n\n case 'QQQ':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\n case 'QQQQQ':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1st quarter, 2nd quarter, ...\n\n case 'QQQQ':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone quarter\n q: function (date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n return String(quarter);\n // 01, 02, 03, 04\n\n case 'qq':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n\n case 'qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n\n case 'qqq':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\n case 'qqqqq':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1st quarter, 2nd quarter, ...\n\n case 'qqqq':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Month\n M: function (date, token, localize) {\n var month = date.getUTCMonth();\n\n switch (token) {\n case 'M':\n case 'MM':\n return formatters.M(date, token);\n // 1st, 2nd, ..., 12th\n\n case 'Mo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n\n case 'MMM':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // J, F, ..., D\n\n case 'MMMMM':\n return localize.month(month, {\n width: 'narrow',\n context: 'formatting'\n });\n // January, February, ..., December\n\n case 'MMMM':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone month\n L: function (date, token, localize) {\n var month = date.getUTCMonth();\n\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return String(month + 1);\n // 01, 02, ..., 12\n\n case 'LL':\n return addLeadingZeros(month + 1, 2);\n // 1st, 2nd, ..., 12th\n\n case 'Lo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n\n case 'LLL':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // J, F, ..., D\n\n case 'LLLLL':\n return localize.month(month, {\n width: 'narrow',\n context: 'standalone'\n });\n // January, February, ..., December\n\n case 'LLLL':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Local week of year\n w: function (date, token, localize, options) {\n var week = getUTCWeek(date, options);\n\n if (token === 'wo') {\n return localize.ordinalNumber(week, {\n unit: 'week'\n });\n }\n\n return addLeadingZeros(week, token.length);\n },\n // ISO week of year\n I: function (date, token, localize) {\n var isoWeek = getUTCISOWeek(date);\n\n if (token === 'Io') {\n return localize.ordinalNumber(isoWeek, {\n unit: 'week'\n });\n }\n\n return addLeadingZeros(isoWeek, token.length);\n },\n // Day of the month\n d: function (date, token, localize) {\n if (token === 'do') {\n return localize.ordinalNumber(date.getUTCDate(), {\n unit: 'date'\n });\n }\n\n return formatters.d(date, token);\n },\n // Day of year\n D: function (date, token, localize) {\n var dayOfYear = getUTCDayOfYear(date);\n\n if (token === 'Do') {\n return localize.ordinalNumber(dayOfYear, {\n unit: 'dayOfYear'\n });\n }\n\n return addLeadingZeros(dayOfYear, token.length);\n },\n // Day of week\n E: function (date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n\n case 'EEEEE':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'EEEEEE':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n\n case 'EEEE':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Local day of week\n e: function (date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n\n switch (token) {\n // Numerical value (Nth day of week with current locale or weekStartsOn)\n case 'e':\n return String(localDayOfWeek);\n // Padded numerical value\n\n case 'ee':\n return addLeadingZeros(localDayOfWeek, 2);\n // 1st, 2nd, ..., 7th\n\n case 'eo':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n\n case 'eee':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n\n case 'eeeee':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'eeeeee':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n\n case 'eeee':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone local day of week\n c: function (date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n\n switch (token) {\n // Numerical value (same as in `e`)\n case 'c':\n return String(localDayOfWeek);\n // Padded numerical value\n\n case 'cc':\n return addLeadingZeros(localDayOfWeek, token.length);\n // 1st, 2nd, ..., 7th\n\n case 'co':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n\n case 'ccc':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // T\n\n case 'ccccc':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tu\n\n case 'cccccc':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'standalone'\n });\n // Tuesday\n\n case 'cccc':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // ISO day of week\n i: function (date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n var isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n\n switch (token) {\n // 2\n case 'i':\n return String(isoDayOfWeek);\n // 02\n\n case 'ii':\n return addLeadingZeros(isoDayOfWeek, token.length);\n // 2nd\n\n case 'io':\n return localize.ordinalNumber(isoDayOfWeek, {\n unit: 'day'\n });\n // Tue\n\n case 'iii':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n\n case 'iiiii':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'iiiiii':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n\n case 'iiii':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM or PM\n a: function (date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n\n switch (token) {\n case 'a':\n case 'aa':\n case 'aaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n\n case 'aaaaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'aaaa':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM, PM, midnight, noon\n b: function (date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n\n if (hours === 12) {\n dayPeriodEnumValue = dayPeriodEnum.noon;\n } else if (hours === 0) {\n dayPeriodEnumValue = dayPeriodEnum.midnight;\n } else {\n dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n }\n\n switch (token) {\n case 'b':\n case 'bb':\n case 'bbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n\n case 'bbbbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'bbbb':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // in the morning, in the afternoon, in the evening, at night\n B: function (date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n\n if (hours >= 17) {\n dayPeriodEnumValue = dayPeriodEnum.evening;\n } else if (hours >= 12) {\n dayPeriodEnumValue = dayPeriodEnum.afternoon;\n } else if (hours >= 4) {\n dayPeriodEnumValue = dayPeriodEnum.morning;\n } else {\n dayPeriodEnumValue = dayPeriodEnum.night;\n }\n\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n\n case 'BBBBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'BBBB':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Hour [1-12]\n h: function (date, token, localize) {\n if (token === 'ho') {\n var hours = date.getUTCHours() % 12;\n if (hours === 0) hours = 12;\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n\n return formatters.h(date, token);\n },\n // Hour [0-23]\n H: function (date, token, localize) {\n if (token === 'Ho') {\n return localize.ordinalNumber(date.getUTCHours(), {\n unit: 'hour'\n });\n }\n\n return formatters.H(date, token);\n },\n // Hour [0-11]\n K: function (date, token, localize) {\n var hours = date.getUTCHours() % 12;\n\n if (token === 'Ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n // Hour [1-24]\n k: function (date, token, localize) {\n var hours = date.getUTCHours();\n if (hours === 0) hours = 24;\n\n if (token === 'ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n // Minute\n m: function (date, token, localize) {\n if (token === 'mo') {\n return localize.ordinalNumber(date.getUTCMinutes(), {\n unit: 'minute'\n });\n }\n\n return formatters.m(date, token);\n },\n // Second\n s: function (date, token, localize) {\n if (token === 'so') {\n return localize.ordinalNumber(date.getUTCSeconds(), {\n unit: 'second'\n });\n }\n\n return formatters.s(date, token);\n },\n // Fraction of second\n S: function (date, token) {\n return formatters.S(date, token);\n },\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n if (timezoneOffset === 0) {\n return 'Z';\n }\n\n switch (token) {\n // Hours and optional minutes\n case 'X':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n\n case 'XXXX':\n case 'XX':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n\n case 'XXXXX':\n case 'XXX': // Hours and minutes with `:` delimiter\n\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n switch (token) {\n // Hours and optional minutes\n case 'x':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n\n case 'xxxx':\n case 'xx':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n\n case 'xxxxx':\n case 'xxx': // Hours and minutes with `:` delimiter\n\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (GMT)\n O: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n switch (token) {\n // Short\n case 'O':\n case 'OO':\n case 'OOO':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n\n case 'OOOO':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (specific non-location)\n z: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n switch (token) {\n // Short\n case 'z':\n case 'zz':\n case 'zzz':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n\n case 'zzzz':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Seconds timestamp\n t: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = Math.floor(originalDate.getTime() / 1000);\n return addLeadingZeros(timestamp, token.length);\n },\n // Milliseconds timestamp\n T: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = originalDate.getTime();\n return addLeadingZeros(timestamp, token.length);\n }\n};\n\nfunction formatTimezoneShort(offset, dirtyDelimiter) {\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = Math.floor(absOffset / 60);\n var minutes = absOffset % 60;\n\n if (minutes === 0) {\n return sign + String(hours);\n }\n\n var delimiter = dirtyDelimiter || '';\n return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\n\nfunction formatTimezoneWithOptionalMinutes(offset, dirtyDelimiter) {\n if (offset % 60 === 0) {\n var sign = offset > 0 ? '-' : '+';\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n }\n\n return formatTimezone(offset, dirtyDelimiter);\n}\n\nfunction formatTimezone(offset, dirtyDelimiter) {\n var delimiter = dirtyDelimiter || '';\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = addLeadingZeros(Math.floor(absOffset / 60), 2);\n var minutes = addLeadingZeros(absOffset % 60, 2);\n return sign + hours + delimiter + minutes;\n}\n\nfunction dateLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'P':\n return formatLong.date({\n width: 'short'\n });\n\n case 'PP':\n return formatLong.date({\n width: 'medium'\n });\n\n case 'PPP':\n return formatLong.date({\n width: 'long'\n });\n\n case 'PPPP':\n default:\n return formatLong.date({\n width: 'full'\n });\n }\n}\n\nfunction timeLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'p':\n return formatLong.time({\n width: 'short'\n });\n\n case 'pp':\n return formatLong.time({\n width: 'medium'\n });\n\n case 'ppp':\n return formatLong.time({\n width: 'long'\n });\n\n case 'pppp':\n default:\n return formatLong.time({\n width: 'full'\n });\n }\n}\n\nfunction dateTimeLongFormatter(pattern, formatLong) {\n var matchResult = pattern.match(/(P+)(p+)?/);\n var datePattern = matchResult[1];\n var timePattern = matchResult[2];\n\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong);\n }\n\n var dateTimeFormat;\n\n switch (datePattern) {\n case 'P':\n dateTimeFormat = formatLong.dateTime({\n width: 'short'\n });\n break;\n\n case 'PP':\n dateTimeFormat = formatLong.dateTime({\n width: 'medium'\n });\n break;\n\n case 'PPP':\n dateTimeFormat = formatLong.dateTime({\n width: 'long'\n });\n break;\n\n case 'PPPP':\n default:\n dateTimeFormat = formatLong.dateTime({\n width: 'full'\n });\n break;\n }\n\n return dateTimeFormat.replace('{{date}}', dateLongFormatter(datePattern, formatLong)).replace('{{time}}', timeLongFormatter(timePattern, formatLong));\n}\n\nvar longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter\n};\n\nvar protectedDayOfYearTokens = ['D', 'DD'];\nvar protectedWeekYearTokens = ['YY', 'YYYY'];\nfunction isProtectedDayOfYearToken(token) {\n return protectedDayOfYearTokens.indexOf(token) !== -1;\n}\nfunction isProtectedWeekYearToken(token) {\n return protectedWeekYearTokens.indexOf(token) !== -1;\n}\nfunction throwProtectedError(token) {\n if (token === 'YYYY') {\n throw new RangeError('Use `yyyy` instead of `YYYY` for formatting years; see: https://git.io/fxCyr');\n } else if (token === 'YY') {\n throw new RangeError('Use `yy` instead of `YY` for formatting years; see: https://git.io/fxCyr');\n } else if (token === 'D') {\n throw new RangeError('Use `d` instead of `D` for formatting days of the month; see: https://git.io/fxCyr');\n } else if (token === 'DD') {\n throw new RangeError('Use `dd` instead of `DD` for formatting days of the month; see: https://git.io/fxCyr');\n }\n}\n\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\n\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g; // This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\n\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'(.*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n/**\n * @name format\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://git.io/fxCyr\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 9 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 9 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Su | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Su | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Su, Sa | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Su | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Su | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | AM, PM | a..aaa | AM, PM | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bbb | AM, PM, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 1, 2, ..., 11, 0 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 0001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |\n * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 05/29/1453 | 7 |\n * | | PP | May 29, 1453 | 7 |\n * | | PPP | May 29th, 1453 | 7 |\n * | | PPPP | Sunday, May 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 05/29/1453, 12:00 AM | 7 |\n * | | PPpp | May 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | May 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Sunday, May 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear]{@link https://date-fns.org/docs/getISOWeekYear}\n * and [getWeekYear]{@link https://date-fns.org/docs/getWeekYear}).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n * so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://git.io/fxCyr\n *\n * 9. `D` and `DD` tokens represent days of the year but they are ofthen confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://git.io/fxCyr\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The second argument is now required for the sake of explicitness.\n *\n * ```javascript\n * // Before v2.0.0\n * format(new Date(2016, 0, 1))\n *\n * // v2.0.0 onward\n * format(new Date(2016, 0, 1), \"yyyy-MM-dd'T'HH:mm:ss.SSSxxx\")\n * ```\n *\n * - New format string API for `format` function\n * which is based on [Unicode Technical Standard #35](https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table).\n * See [this post](https://blog.date-fns.org/post/unicode-tokens-in-date-fns-v2-sreatyki91jg) for more details.\n *\n * - Characters are now escaped using single quote symbols (`'`) instead of square brackets.\n *\n * @param {Date|Number} date - the original date\n * @param {String} format - the string of tokens\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n * see: https://git.io/fxCyr\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n * see: https://git.io/fxCyr\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years; see: https://git.io/fxCyr\n * @throws {RangeError} use `yy` instead of `YY` for formatting years; see: https://git.io/fxCyr\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month; see: https://git.io/fxCyr\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month; see: https://git.io/fxCyr\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * var result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * var result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n * locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * var result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\n\nfunction format(dirtyDate, dirtyFormatStr, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present');\n }\n\n var formatStr = String(dirtyFormatStr);\n var options = dirtyOptions || {};\n var locale$1 = options.locale || locale;\n var localeFirstWeekContainsDate = locale$1.options && locale$1.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate); // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n\n var localeWeekStartsOn = locale$1.options && locale$1.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n if (!locale$1.localize) {\n throw new RangeError('locale must contain localize property');\n }\n\n if (!locale$1.formatLong) {\n throw new RangeError('locale must contain formatLong property');\n }\n\n var originalDate = toDate(dirtyDate);\n\n if (!isValid(originalDate)) {\n throw new RangeError('Invalid time value');\n } // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376\n\n\n var timezoneOffset = getTimezoneOffsetInMilliseconds(originalDate);\n var utcDate = subMilliseconds(originalDate, timezoneOffset);\n var formatterOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale$1,\n _originalDate: originalDate\n };\n var result = formatStr.match(longFormattingTokensRegExp).map(function (substring) {\n var firstCharacter = substring[0];\n\n if (firstCharacter === 'p' || firstCharacter === 'P') {\n var longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale$1.formatLong, formatterOptions);\n }\n\n return substring;\n }).join('').match(formattingTokensRegExp).map(function (substring) {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return \"'\";\n }\n\n var firstCharacter = substring[0];\n\n if (firstCharacter === \"'\") {\n return cleanEscapedString(substring);\n }\n\n var formatter = formatters$1[firstCharacter];\n\n if (formatter) {\n if (!options.useAdditionalWeekYearTokens && isProtectedWeekYearToken(substring)) {\n throwProtectedError(substring);\n }\n\n if (!options.useAdditionalDayOfYearTokens && isProtectedDayOfYearToken(substring)) {\n throwProtectedError(substring);\n }\n\n return formatter(utcDate, substring, locale$1.localize, formatterOptions);\n }\n\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n }\n\n return substring;\n }).join('');\n return result;\n}\n\nfunction cleanEscapedString(input) {\n return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\");\n}\n\nfunction assign$1(target, dirtyObject) {\n if (target == null) {\n throw new TypeError('assign requires that input parameter not be null or undefined');\n }\n\n dirtyObject = dirtyObject || {};\n\n for (var property in dirtyObject) {\n if (dirtyObject.hasOwnProperty(property)) {\n target[property] = dirtyObject[property];\n }\n }\n\n return target;\n}\n\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nfunction setUTCDay(dirtyDate, dirtyDay, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present');\n }\n\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n var date = toDate(dirtyDate);\n var day = toInteger(dirtyDay);\n var currentDay = date.getUTCDay();\n var remainder = day % 7;\n var dayIndex = (remainder + 7) % 7;\n var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n}\n\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nfunction setUTCISODay(dirtyDate, dirtyDay) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present');\n }\n\n var day = toInteger(dirtyDay);\n\n if (day % 7 === 0) {\n day = day - 7;\n }\n\n var weekStartsOn = 1;\n var date = toDate(dirtyDate);\n var currentDay = date.getUTCDay();\n var remainder = day % 7;\n var dayIndex = (remainder + 7) % 7;\n var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n}\n\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nfunction setUTCISOWeek(dirtyDate, dirtyISOWeek) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present');\n }\n\n var date = toDate(dirtyDate);\n var isoWeek = toInteger(dirtyISOWeek);\n var diff = getUTCISOWeek(date) - isoWeek;\n date.setUTCDate(date.getUTCDate() - diff * 7);\n return date;\n}\n\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nfunction setUTCWeek(dirtyDate, dirtyWeek, options) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present');\n }\n\n var date = toDate(dirtyDate);\n var week = toInteger(dirtyWeek);\n var diff = getUTCWeek(date, options) - week;\n date.setUTCDate(date.getUTCDate() - diff * 7);\n return date;\n}\n\nvar MILLISECONDS_IN_HOUR = 3600000;\nvar MILLISECONDS_IN_MINUTE$1 = 60000;\nvar MILLISECONDS_IN_SECOND = 1000;\nvar numericPatterns = {\n month: /^(1[0-2]|0?\\d)/,\n // 0 to 12\n date: /^(3[0-1]|[0-2]?\\d)/,\n // 0 to 31\n dayOfYear: /^(36[0-6]|3[0-5]\\d|[0-2]?\\d?\\d)/,\n // 0 to 366\n week: /^(5[0-3]|[0-4]?\\d)/,\n // 0 to 53\n hour23h: /^(2[0-3]|[0-1]?\\d)/,\n // 0 to 23\n hour24h: /^(2[0-4]|[0-1]?\\d)/,\n // 0 to 24\n hour11h: /^(1[0-1]|0?\\d)/,\n // 0 to 11\n hour12h: /^(1[0-2]|0?\\d)/,\n // 0 to 12\n minute: /^[0-5]?\\d/,\n // 0 to 59\n second: /^[0-5]?\\d/,\n // 0 to 59\n singleDigit: /^\\d/,\n // 0 to 9\n twoDigits: /^\\d{1,2}/,\n // 0 to 99\n threeDigits: /^\\d{1,3}/,\n // 0 to 999\n fourDigits: /^\\d{1,4}/,\n // 0 to 9999\n anyDigitsSigned: /^-?\\d+/,\n singleDigitSigned: /^-?\\d/,\n // 0 to 9, -0 to -9\n twoDigitsSigned: /^-?\\d{1,2}/,\n // 0 to 99, -0 to -99\n threeDigitsSigned: /^-?\\d{1,3}/,\n // 0 to 999, -0 to -999\n fourDigitsSigned: /^-?\\d{1,4}/ // 0 to 9999, -0 to -9999\n\n};\nvar timezonePatterns = {\n basicOptionalMinutes: /^([+-])(\\d{2})(\\d{2})?|Z/,\n basic: /^([+-])(\\d{2})(\\d{2})|Z/,\n basicOptionalSeconds: /^([+-])(\\d{2})(\\d{2})((\\d{2}))?|Z/,\n extended: /^([+-])(\\d{2}):(\\d{2})|Z/,\n extendedOptionalSeconds: /^([+-])(\\d{2}):(\\d{2})(:(\\d{2}))?|Z/\n};\n\nfunction parseNumericPattern(pattern, string, valueCallback) {\n var matchResult = string.match(pattern);\n\n if (!matchResult) {\n return null;\n }\n\n var value = parseInt(matchResult[0], 10);\n return {\n value: valueCallback ? valueCallback(value) : value,\n rest: string.slice(matchResult[0].length)\n };\n}\n\nfunction parseTimezonePattern(pattern, string) {\n var matchResult = string.match(pattern);\n\n if (!matchResult) {\n return null;\n } // Input is 'Z'\n\n\n if (matchResult[0] === 'Z') {\n return {\n value: 0,\n rest: string.slice(1)\n };\n }\n\n var sign = matchResult[1] === '+' ? 1 : -1;\n var hours = matchResult[2] ? parseInt(matchResult[2], 10) : 0;\n var minutes = matchResult[3] ? parseInt(matchResult[3], 10) : 0;\n var seconds = matchResult[5] ? parseInt(matchResult[5], 10) : 0;\n return {\n value: sign * (hours * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE$1 + seconds * MILLISECONDS_IN_SECOND),\n rest: string.slice(matchResult[0].length)\n };\n}\n\nfunction parseAnyDigitsSigned(string, valueCallback) {\n return parseNumericPattern(numericPatterns.anyDigitsSigned, string, valueCallback);\n}\n\nfunction parseNDigits(n, string, valueCallback) {\n switch (n) {\n case 1:\n return parseNumericPattern(numericPatterns.singleDigit, string, valueCallback);\n\n case 2:\n return parseNumericPattern(numericPatterns.twoDigits, string, valueCallback);\n\n case 3:\n return parseNumericPattern(numericPatterns.threeDigits, string, valueCallback);\n\n case 4:\n return parseNumericPattern(numericPatterns.fourDigits, string, valueCallback);\n\n default:\n return parseNumericPattern(new RegExp('^\\\\d{1,' + n + '}'), string, valueCallback);\n }\n}\n\nfunction parseNDigitsSigned(n, string, valueCallback) {\n switch (n) {\n case 1:\n return parseNumericPattern(numericPatterns.singleDigitSigned, string, valueCallback);\n\n case 2:\n return parseNumericPattern(numericPatterns.twoDigitsSigned, string, valueCallback);\n\n case 3:\n return parseNumericPattern(numericPatterns.threeDigitsSigned, string, valueCallback);\n\n case 4:\n return parseNumericPattern(numericPatterns.fourDigitsSigned, string, valueCallback);\n\n default:\n return parseNumericPattern(new RegExp('^-?\\\\d{1,' + n + '}'), string, valueCallback);\n }\n}\n\nfunction dayPeriodEnumToHours(enumValue) {\n switch (enumValue) {\n case 'morning':\n return 4;\n\n case 'evening':\n return 17;\n\n case 'pm':\n case 'noon':\n case 'afternoon':\n return 12;\n\n case 'am':\n case 'midnight':\n case 'night':\n default:\n return 0;\n }\n}\n\nfunction normalizeTwoDigitYear(twoDigitYear, currentYear) {\n var isCommonEra = currentYear > 0; // Absolute number of the current year:\n // 1 -> 1 AC\n // 0 -> 1 BC\n // -1 -> 2 BC\n\n var absCurrentYear = isCommonEra ? currentYear : 1 - currentYear;\n var result;\n\n if (absCurrentYear <= 50) {\n result = twoDigitYear || 100;\n } else {\n var rangeEnd = absCurrentYear + 50;\n var rangeEndCentury = Math.floor(rangeEnd / 100) * 100;\n var isPreviousCentury = twoDigitYear >= rangeEnd % 100;\n result = twoDigitYear + rangeEndCentury - (isPreviousCentury ? 100 : 0);\n }\n\n return isCommonEra ? result : 1 - result;\n}\n\nvar DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nvar DAYS_IN_MONTH_LEAP_YEAR = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; // User for validation\n\nfunction isLeapYearIndex(year) {\n return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0;\n}\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O* | Timezone (GMT) |\n * | p | | P | |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z* | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `parse` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n */\n\n\nvar parsers = {\n // Era\n G: {\n priority: 140,\n parse: function (string, token, match, _options) {\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return match.era(string, {\n width: 'abbreviated'\n }) || match.era(string, {\n width: 'narrow'\n });\n // A, B\n\n case 'GGGGG':\n return match.era(string, {\n width: 'narrow'\n });\n // Anno Domini, Before Christ\n\n case 'GGGG':\n default:\n return match.era(string, {\n width: 'wide'\n }) || match.era(string, {\n width: 'abbreviated'\n }) || match.era(string, {\n width: 'narrow'\n });\n }\n },\n set: function (date, flags, value, _options) {\n flags.era = value;\n date.setUTCFullYear(value, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['R', 'u', 't', 'T']\n },\n // Year\n y: {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_Patterns\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n priority: 130,\n parse: function (string, token, match, _options) {\n var valueCallback = function (year) {\n return {\n year: year,\n isTwoDigitYear: token === 'yy'\n };\n };\n\n switch (token) {\n case 'y':\n return parseNDigits(4, string, valueCallback);\n\n case 'yo':\n return match.ordinalNumber(string, {\n unit: 'year',\n valueCallback: valueCallback\n });\n\n default:\n return parseNDigits(token.length, string, valueCallback);\n }\n },\n validate: function (_date, value, _options) {\n return value.isTwoDigitYear || value.year > 0;\n },\n set: function (date, flags, value, _options) {\n var currentYear = date.getUTCFullYear();\n\n if (value.isTwoDigitYear) {\n var normalizedTwoDigitYear = normalizeTwoDigitYear(value.year, currentYear);\n date.setUTCFullYear(normalizedTwoDigitYear, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n\n var year = !('era' in flags) || flags.era === 1 ? value.year : 1 - value.year;\n date.setUTCFullYear(year, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'u', 'w', 'I', 'i', 'e', 'c', 't', 'T']\n },\n // Local week-numbering year\n Y: {\n priority: 130,\n parse: function (string, token, match, _options) {\n var valueCallback = function (year) {\n return {\n year: year,\n isTwoDigitYear: token === 'YY'\n };\n };\n\n switch (token) {\n case 'Y':\n return parseNDigits(4, string, valueCallback);\n\n case 'Yo':\n return match.ordinalNumber(string, {\n unit: 'year',\n valueCallback: valueCallback\n });\n\n default:\n return parseNDigits(token.length, string, valueCallback);\n }\n },\n validate: function (_date, value, _options) {\n return value.isTwoDigitYear || value.year > 0;\n },\n set: function (date, flags, value, options) {\n var currentYear = getUTCWeekYear(date, options);\n\n if (value.isTwoDigitYear) {\n var normalizedTwoDigitYear = normalizeTwoDigitYear(value.year, currentYear);\n date.setUTCFullYear(normalizedTwoDigitYear, 0, options.firstWeekContainsDate);\n date.setUTCHours(0, 0, 0, 0);\n return startOfUTCWeek(date, options);\n }\n\n var year = !('era' in flags) || flags.era === 1 ? value.year : 1 - value.year;\n date.setUTCFullYear(year, 0, options.firstWeekContainsDate);\n date.setUTCHours(0, 0, 0, 0);\n return startOfUTCWeek(date, options);\n },\n incompatibleTokens: ['y', 'R', 'u', 'Q', 'q', 'M', 'L', 'I', 'd', 'D', 'i', 't', 'T']\n },\n // ISO week-numbering year\n R: {\n priority: 130,\n parse: function (string, token, _match, _options) {\n if (token === 'R') {\n return parseNDigitsSigned(4, string);\n }\n\n return parseNDigitsSigned(token.length, string);\n },\n set: function (_date, _flags, value, _options) {\n var firstWeekOfYear = new Date(0);\n firstWeekOfYear.setUTCFullYear(value, 0, 4);\n firstWeekOfYear.setUTCHours(0, 0, 0, 0);\n return startOfUTCISOWeek(firstWeekOfYear);\n },\n incompatibleTokens: ['G', 'y', 'Y', 'u', 'Q', 'q', 'M', 'L', 'w', 'd', 'D', 'e', 'c', 't', 'T']\n },\n // Extended year\n u: {\n priority: 130,\n parse: function (string, token, _match, _options) {\n if (token === 'u') {\n return parseNDigitsSigned(4, string);\n }\n\n return parseNDigitsSigned(token.length, string);\n },\n set: function (date, _flags, value, _options) {\n date.setUTCFullYear(value, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['G', 'y', 'Y', 'R', 'w', 'I', 'i', 'e', 'c', 't', 'T']\n },\n // Quarter\n Q: {\n priority: 120,\n parse: function (string, token, match, _options) {\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n case 'QQ':\n // 01, 02, 03, 04\n return parseNDigits(token.length, string);\n // 1st, 2nd, 3rd, 4th\n\n case 'Qo':\n return match.ordinalNumber(string, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n\n case 'QQQ':\n return match.quarter(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.quarter(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\n case 'QQQQQ':\n return match.quarter(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1st quarter, 2nd quarter, ...\n\n case 'QQQQ':\n default:\n return match.quarter(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.quarter(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.quarter(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 1 && value <= 4;\n },\n set: function (date, _flags, value, _options) {\n date.setUTCMonth((value - 1) * 3, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'q', 'M', 'L', 'w', 'I', 'd', 'D', 'i', 'e', 'c', 't', 'T']\n },\n // Stand-alone quarter\n q: {\n priority: 120,\n parse: function (string, token, match, _options) {\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n case 'qq':\n // 01, 02, 03, 04\n return parseNDigits(token.length, string);\n // 1st, 2nd, 3rd, 4th\n\n case 'qo':\n return match.ordinalNumber(string, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n\n case 'qqq':\n return match.quarter(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.quarter(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\n case 'qqqqq':\n return match.quarter(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1st quarter, 2nd quarter, ...\n\n case 'qqqq':\n default:\n return match.quarter(string, {\n width: 'wide',\n context: 'standalone'\n }) || match.quarter(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.quarter(string, {\n width: 'narrow',\n context: 'standalone'\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 1 && value <= 4;\n },\n set: function (date, _flags, value, _options) {\n date.setUTCMonth((value - 1) * 3, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'Q', 'M', 'L', 'w', 'I', 'd', 'D', 'i', 'e', 'c', 't', 'T']\n },\n // Month\n M: {\n priority: 110,\n parse: function (string, token, match, _options) {\n var valueCallback = function (value) {\n return value - 1;\n };\n\n switch (token) {\n // 1, 2, ..., 12\n case 'M':\n return parseNumericPattern(numericPatterns.month, string, valueCallback);\n // 01, 02, ..., 12\n\n case 'MM':\n return parseNDigits(2, string, valueCallback);\n // 1st, 2nd, ..., 12th\n\n case 'Mo':\n return match.ordinalNumber(string, {\n unit: 'month',\n valueCallback: valueCallback\n });\n // Jan, Feb, ..., Dec\n\n case 'MMM':\n return match.month(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.month(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // J, F, ..., D\n\n case 'MMMMM':\n return match.month(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // January, February, ..., December\n\n case 'MMMM':\n default:\n return match.month(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.month(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.month(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 11;\n },\n set: function (date, _flags, value, _options) {\n date.setUTCMonth(value, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'q', 'Q', 'L', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']\n },\n // Stand-alone month\n L: {\n priority: 110,\n parse: function (string, token, match, _options) {\n var valueCallback = function (value) {\n return value - 1;\n };\n\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return parseNumericPattern(numericPatterns.month, string, valueCallback);\n // 01, 02, ..., 12\n\n case 'LL':\n return parseNDigits(2, string, valueCallback);\n // 1st, 2nd, ..., 12th\n\n case 'Lo':\n return match.ordinalNumber(string, {\n unit: 'month',\n valueCallback: valueCallback\n });\n // Jan, Feb, ..., Dec\n\n case 'LLL':\n return match.month(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.month(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // J, F, ..., D\n\n case 'LLLLL':\n return match.month(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // January, February, ..., December\n\n case 'LLLL':\n default:\n return match.month(string, {\n width: 'wide',\n context: 'standalone'\n }) || match.month(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.month(string, {\n width: 'narrow',\n context: 'standalone'\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 11;\n },\n set: function (date, _flags, value, _options) {\n date.setUTCMonth(value, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'q', 'Q', 'M', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']\n },\n // Local week of year\n w: {\n priority: 100,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'w':\n return parseNumericPattern(numericPatterns.week, string);\n\n case 'wo':\n return match.ordinalNumber(string, {\n unit: 'week'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 1 && value <= 53;\n },\n set: function (date, _flags, value, options) {\n return startOfUTCWeek(setUTCWeek(date, value, options), options);\n },\n incompatibleTokens: ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'i', 't', 'T']\n },\n // ISO week of year\n I: {\n priority: 100,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'I':\n return parseNumericPattern(numericPatterns.week, string);\n\n case 'Io':\n return match.ordinalNumber(string, {\n unit: 'week'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 1 && value <= 53;\n },\n set: function (date, _flags, value, options) {\n return startOfUTCISOWeek(setUTCISOWeek(date, value, options), options);\n },\n incompatibleTokens: ['y', 'Y', 'u', 'q', 'Q', 'M', 'L', 'w', 'd', 'D', 'e', 'c', 't', 'T']\n },\n // Day of the month\n d: {\n priority: 90,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'd':\n return parseNumericPattern(numericPatterns.date, string);\n\n case 'do':\n return match.ordinalNumber(string, {\n unit: 'date'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (date, value, _options) {\n var year = date.getUTCFullYear();\n var isLeapYear = isLeapYearIndex(year);\n var month = date.getUTCMonth();\n\n if (isLeapYear) {\n return value >= 1 && value <= DAYS_IN_MONTH_LEAP_YEAR[month];\n } else {\n return value >= 1 && value <= DAYS_IN_MONTH[month];\n }\n },\n set: function (date, _flags, value, _options) {\n date.setUTCDate(value);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'q', 'Q', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']\n },\n // Day of year\n D: {\n priority: 90,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'D':\n case 'DD':\n return parseNumericPattern(numericPatterns.dayOfYear, string);\n\n case 'Do':\n return match.ordinalNumber(string, {\n unit: 'date'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (date, value, _options) {\n var year = date.getUTCFullYear();\n var isLeapYear = isLeapYearIndex(year);\n\n if (isLeapYear) {\n return value >= 1 && value <= 366;\n } else {\n return value >= 1 && value <= 365;\n }\n },\n set: function (date, _flags, value, _options) {\n date.setUTCMonth(0, value);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'q', 'Q', 'M', 'L', 'w', 'I', 'd', 'E', 'i', 'e', 'c', 't', 'T']\n },\n // Day of week\n E: {\n priority: 90,\n parse: function (string, token, match, _options) {\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return match.day(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(string, {\n width: 'short',\n context: 'formatting'\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // T\n\n case 'EEEEE':\n return match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'EEEEEE':\n return match.day(string, {\n width: 'short',\n context: 'formatting'\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tuesday\n\n case 'EEEE':\n default:\n return match.day(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.day(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(string, {\n width: 'short',\n context: 'formatting'\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 6;\n },\n set: function (date, _flags, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['D', 'i', 'e', 'c', 't', 'T']\n },\n // Local day of week\n e: {\n priority: 90,\n parse: function (string, token, match, options) {\n var valueCallback = function (value) {\n var wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays;\n };\n\n switch (token) {\n // 3\n case 'e':\n case 'ee':\n // 03\n return parseNDigits(token.length, string, valueCallback);\n // 3rd\n\n case 'eo':\n return match.ordinalNumber(string, {\n unit: 'day',\n valueCallback: valueCallback\n });\n // Tue\n\n case 'eee':\n return match.day(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(string, {\n width: 'short',\n context: 'formatting'\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // T\n\n case 'eeeee':\n return match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'eeeeee':\n return match.day(string, {\n width: 'short',\n context: 'formatting'\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tuesday\n\n case 'eeee':\n default:\n return match.day(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.day(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(string, {\n width: 'short',\n context: 'formatting'\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 6;\n },\n set: function (date, _flags, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'E', 'i', 'c', 't', 'T']\n },\n // Stand-alone local day of week\n c: {\n priority: 90,\n parse: function (string, token, match, options) {\n var valueCallback = function (value) {\n var wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays;\n };\n\n switch (token) {\n // 3\n case 'c':\n case 'cc':\n // 03\n return parseNDigits(token.length, string, valueCallback);\n // 3rd\n\n case 'co':\n return match.ordinalNumber(string, {\n unit: 'day',\n valueCallback: valueCallback\n });\n // Tue\n\n case 'ccc':\n return match.day(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.day(string, {\n width: 'short',\n context: 'standalone'\n }) || match.day(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // T\n\n case 'ccccc':\n return match.day(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tu\n\n case 'cccccc':\n return match.day(string, {\n width: 'short',\n context: 'standalone'\n }) || match.day(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tuesday\n\n case 'cccc':\n default:\n return match.day(string, {\n width: 'wide',\n context: 'standalone'\n }) || match.day(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.day(string, {\n width: 'short',\n context: 'standalone'\n }) || match.day(string, {\n width: 'narrow',\n context: 'standalone'\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 6;\n },\n set: function (date, _flags, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'E', 'i', 'e', 't', 'T']\n },\n // ISO day of week\n i: {\n priority: 90,\n parse: function (string, token, match, _options) {\n var valueCallback = function (value) {\n if (value === 0) {\n return 7;\n }\n\n return value;\n };\n\n switch (token) {\n // 2\n case 'i':\n case 'ii':\n // 02\n return parseNDigits(token.length, string);\n // 2nd\n\n case 'io':\n return match.ordinalNumber(string, {\n unit: 'day'\n });\n // Tue\n\n case 'iii':\n return match.day(string, {\n width: 'abbreviated',\n context: 'formatting',\n valueCallback: valueCallback\n }) || match.day(string, {\n width: 'short',\n context: 'formatting',\n valueCallback: valueCallback\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting',\n valueCallback: valueCallback\n });\n // T\n\n case 'iiiii':\n return match.day(string, {\n width: 'narrow',\n context: 'formatting',\n valueCallback: valueCallback\n });\n // Tu\n\n case 'iiiiii':\n return match.day(string, {\n width: 'short',\n context: 'formatting',\n valueCallback: valueCallback\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting',\n valueCallback: valueCallback\n });\n // Tuesday\n\n case 'iiii':\n default:\n return match.day(string, {\n width: 'wide',\n context: 'formatting',\n valueCallback: valueCallback\n }) || match.day(string, {\n width: 'abbreviated',\n context: 'formatting',\n valueCallback: valueCallback\n }) || match.day(string, {\n width: 'short',\n context: 'formatting',\n valueCallback: valueCallback\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting',\n valueCallback: valueCallback\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 1 && value <= 7;\n },\n set: function (date, _flags, value, options) {\n date = setUTCISODay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['y', 'Y', 'u', 'q', 'Q', 'M', 'L', 'w', 'd', 'D', 'E', 'e', 'c', 't', 'T']\n },\n // AM or PM\n a: {\n priority: 80,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'a':\n case 'aa':\n case 'aaa':\n return match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'aaaaa':\n return match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'aaaa':\n default:\n return match.dayPeriod(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n set: function (date, _flags, value, _options) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['b', 'B', 'H', 'K', 'k', 't', 'T']\n },\n // AM, PM, midnight\n b: {\n priority: 80,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'b':\n case 'bb':\n case 'bbb':\n return match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'bbbbb':\n return match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'bbbb':\n default:\n return match.dayPeriod(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n set: function (date, _flags, value, _options) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['a', 'B', 'H', 'K', 'k', 't', 'T']\n },\n // in the morning, in the afternoon, in the evening, at night\n B: {\n priority: 80,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'BBBBB':\n return match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'BBBB':\n default:\n return match.dayPeriod(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n set: function (date, _flags, value, _options) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['a', 'b', 't', 'T']\n },\n // Hour [1-12]\n h: {\n priority: 70,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'h':\n return parseNumericPattern(numericPatterns.hour12h, string);\n\n case 'ho':\n return match.ordinalNumber(string, {\n unit: 'hour'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 1 && value <= 12;\n },\n set: function (date, _flags, value, _options) {\n var isPM = date.getUTCHours() >= 12;\n\n if (isPM && value < 12) {\n date.setUTCHours(value + 12, 0, 0, 0);\n } else if (!isPM && value === 12) {\n date.setUTCHours(0, 0, 0, 0);\n } else {\n date.setUTCHours(value, 0, 0, 0);\n }\n\n return date;\n },\n incompatibleTokens: ['H', 'K', 'k', 't', 'T']\n },\n // Hour [0-23]\n H: {\n priority: 70,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'H':\n return parseNumericPattern(numericPatterns.hour23h, string);\n\n case 'Ho':\n return match.ordinalNumber(string, {\n unit: 'hour'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 23;\n },\n set: function (date, _flags, value, _options) {\n date.setUTCHours(value, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['a', 'b', 'h', 'K', 'k', 't', 'T']\n },\n // Hour [0-11]\n K: {\n priority: 70,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'K':\n return parseNumericPattern(numericPatterns.hour11h, string);\n\n case 'Ko':\n return match.ordinalNumber(string, {\n unit: 'hour'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 11;\n },\n set: function (date, _flags, value, _options) {\n var isPM = date.getUTCHours() >= 12;\n\n if (isPM && value < 12) {\n date.setUTCHours(value + 12, 0, 0, 0);\n } else {\n date.setUTCHours(value, 0, 0, 0);\n }\n\n return date;\n },\n incompatibleTokens: ['a', 'b', 'h', 'H', 'k', 't', 'T']\n },\n // Hour [1-24]\n k: {\n priority: 70,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'k':\n return parseNumericPattern(numericPatterns.hour24h, string);\n\n case 'ko':\n return match.ordinalNumber(string, {\n unit: 'hour'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 1 && value <= 24;\n },\n set: function (date, _flags, value, _options) {\n var hours = value <= 24 ? value % 24 : value;\n date.setUTCHours(hours, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['a', 'b', 'h', 'H', 'K', 't', 'T']\n },\n // Minute\n m: {\n priority: 60,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'm':\n return parseNumericPattern(numericPatterns.minute, string);\n\n case 'mo':\n return match.ordinalNumber(string, {\n unit: 'minute'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 59;\n },\n set: function (date, _flags, value, _options) {\n date.setUTCMinutes(value, 0, 0);\n return date;\n },\n incompatibleTokens: ['t', 'T']\n },\n // Second\n s: {\n priority: 50,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 's':\n return parseNumericPattern(numericPatterns.second, string);\n\n case 'so':\n return match.ordinalNumber(string, {\n unit: 'second'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 59;\n },\n set: function (date, _flags, value, _options) {\n date.setUTCSeconds(value, 0);\n return date;\n },\n incompatibleTokens: ['t', 'T']\n },\n // Fraction of second\n S: {\n priority: 30,\n parse: function (string, token, _match, _options) {\n var valueCallback = function (value) {\n return Math.floor(value * Math.pow(10, -token.length + 3));\n };\n\n return parseNDigits(token.length, string, valueCallback);\n },\n set: function (date, _flags, value, _options) {\n date.setUTCMilliseconds(value);\n return date;\n },\n incompatibleTokens: ['t', 'T']\n },\n // Timezone (ISO-8601. +00:00 is `'Z'`)\n X: {\n priority: 10,\n parse: function (string, token, _match, _options) {\n switch (token) {\n case 'X':\n return parseTimezonePattern(timezonePatterns.basicOptionalMinutes, string);\n\n case 'XX':\n return parseTimezonePattern(timezonePatterns.basic, string);\n\n case 'XXXX':\n return parseTimezonePattern(timezonePatterns.basicOptionalSeconds, string);\n\n case 'XXXXX':\n return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds, string);\n\n case 'XXX':\n default:\n return parseTimezonePattern(timezonePatterns.extended, string);\n }\n },\n set: function (date, flags, value, _options) {\n if (flags.timestampIsSet) {\n return date;\n }\n\n return new Date(date.getTime() - value);\n },\n incompatibleTokens: ['t', 'T', 'x']\n },\n // Timezone (ISO-8601)\n x: {\n priority: 10,\n parse: function (string, token, _match, _options) {\n switch (token) {\n case 'x':\n return parseTimezonePattern(timezonePatterns.basicOptionalMinutes, string);\n\n case 'xx':\n return parseTimezonePattern(timezonePatterns.basic, string);\n\n case 'xxxx':\n return parseTimezonePattern(timezonePatterns.basicOptionalSeconds, string);\n\n case 'xxxxx':\n return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds, string);\n\n case 'xxx':\n default:\n return parseTimezonePattern(timezonePatterns.extended, string);\n }\n },\n set: function (date, flags, value, _options) {\n if (flags.timestampIsSet) {\n return date;\n }\n\n return new Date(date.getTime() - value);\n },\n incompatibleTokens: ['t', 'T', 'X']\n },\n // Seconds timestamp\n t: {\n priority: 40,\n parse: function (string, _token, _match, _options) {\n return parseAnyDigitsSigned(string);\n },\n set: function (_date, _flags, value, _options) {\n return [new Date(value * 1000), {\n timestampIsSet: true\n }];\n },\n incompatibleTokens: '*'\n },\n // Milliseconds timestamp\n T: {\n priority: 20,\n parse: function (string, _token, _match, _options) {\n return parseAnyDigitsSigned(string);\n },\n set: function (_date, _flags, value, _options) {\n return [new Date(value), {\n timestampIsSet: true\n }];\n },\n incompatibleTokens: '*'\n }\n};\n\nvar TIMEZONE_UNIT_PRIORITY = 10; // This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\n\nvar formattingTokensRegExp$1 = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g; // This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\n\nvar longFormattingTokensRegExp$1 = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp$1 = /^'(.*?)'?$/;\nvar doubleQuoteRegExp$1 = /''/g;\nvar notWhitespaceRegExp = /\\S/;\nvar unescapedLatinCharacterRegExp$1 = /[a-zA-Z]/;\n/**\n * @name parse\n * @category Common Helpers\n * @summary Parse the date.\n *\n * @description\n * Return the date parsed from string using the given format string.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://git.io/fxCyr\n *\n * The characters in the format string wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n *\n * Format of the format string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 5 below the table).\n *\n * Not all tokens are compatible. Combinations that don't make sense or could lead to bugs are prohibited\n * and will throw `RangeError`. For example usage of 24-hour format token with AM/PM token will throw an exception:\n *\n * ```javascript\n * parse('23 AM', 'HH a', new Date())\n * //=> RangeError: The format string mustn't contain `HH` and `a` at the same time\n * ```\n *\n * See the compatibility table: https://docs.google.com/spreadsheets/d/e/2PACX-1vQOPU3xUhplll6dyoMmVUXHKl_8CRDs6_ueLmex3SoqwhuolkuN3O05l4rqx5h1dKX8eb46Ul-CCSrq/pubhtml?gid=0&single=true\n *\n * Accepted format string patterns:\n * | Unit |Prior| Pattern | Result examples | Notes |\n * |---------------------------------|-----|---------|-----------------------------------|-------|\n * | Era | 140 | G..GGG | AD, BC | |\n * | | | GGGG | Anno Domini, Before Christ | 2 |\n * | | | GGGGG | A, B | |\n * | Calendar year | 130 | y | 44, 1, 1900, 2017, 9999 | 4 |\n * | | | yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | yy | 44, 01, 00, 17 | 4 |\n * | | | yyy | 044, 001, 123, 999 | 4 |\n * | | | yyyy | 0044, 0001, 1900, 2017 | 4 |\n * | | | yyyyy | ... | 2,4 |\n * | Local week-numbering year | 130 | Y | 44, 1, 1900, 2017, 9000 | 4 |\n * | | | Yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | YY | 44, 01, 00, 17 | 4,6 |\n * | | | YYY | 044, 001, 123, 999 | 4 |\n * | | | YYYY | 0044, 0001, 1900, 2017 | 4,6 |\n * | | | YYYYY | ... | 2,4 |\n * | ISO week-numbering year | 130 | R | -43, 1, 1900, 2017, 9999, -9999 | 4,5 |\n * | | | RR | -43, 01, 00, 17 | 4,5 |\n * | | | RRR | -043, 001, 123, 999, -999 | 4,5 |\n * | | | RRRR | -0043, 0001, 2017, 9999, -9999 | 4,5 |\n * | | | RRRRR | ... | 2,4,5 |\n * | Extended year | 130 | u | -43, 1, 1900, 2017, 9999, -999 | 4 |\n * | | | uu | -43, 01, 99, -99 | 4 |\n * | | | uuu | -043, 001, 123, 999, -999 | 4 |\n * | | | uuuu | -0043, 0001, 2017, 9999, -9999 | 4 |\n * | | | uuuuu | ... | 2,4 |\n * | Quarter (formatting) | 120 | Q | 1, 2, 3, 4 | |\n * | | | Qo | 1st, 2nd, 3rd, 4th | 5 |\n * | | | QQ | 01, 02, 03, 04 | |\n * | | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | 120 | q | 1, 2, 3, 4 | |\n * | | | qo | 1st, 2nd, 3rd, 4th | 5 |\n * | | | qq | 01, 02, 03, 04 | |\n * | | | qqq | Q1, Q2, Q3, Q4 | |\n * | | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | | qqqqq | 1, 2, 3, 4 | 3 |\n * | Month (formatting) | 110 | M | 1, 2, ..., 12 | |\n * | | | Mo | 1st, 2nd, ..., 12th | 5 |\n * | | | MM | 01, 02, ..., 12 | |\n * | | | MMM | Jan, Feb, ..., Dec | |\n * | | | MMMM | January, February, ..., December | 2 |\n * | | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | 110 | L | 1, 2, ..., 12 | |\n * | | | Lo | 1st, 2nd, ..., 12th | 5 |\n * | | | LL | 01, 02, ..., 12 | |\n * | | | LLL | Jan, Feb, ..., Dec | |\n * | | | LLLL | January, February, ..., December | 2 |\n * | | | LLLLL | J, F, ..., D | |\n * | Local week of year | 100 | w | 1, 2, ..., 53 | |\n * | | | wo | 1st, 2nd, ..., 53th | 5 |\n * | | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | 100 | I | 1, 2, ..., 53 | 5 |\n * | | | Io | 1st, 2nd, ..., 53th | 5 |\n * | | | II | 01, 02, ..., 53 | 5 |\n * | Day of month | 90 | d | 1, 2, ..., 31 | |\n * | | | do | 1st, 2nd, ..., 31st | 5 |\n * | | | dd | 01, 02, ..., 31 | |\n * | Day of year | 90 | D | 1, 2, ..., 365, 366 | 7 |\n * | | | Do | 1st, 2nd, ..., 365th, 366th | 5 |\n * | | | DD | 01, 02, ..., 365, 366 | 7 |\n * | | | DDD | 001, 002, ..., 365, 366 | |\n * | | | DDDD | ... | 2 |\n * | Day of week (formatting) | 90 | E..EEE | Mon, Tue, Wed, ..., Su | |\n * | | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | | EEEEE | M, T, W, T, F, S, S | |\n * | | | EEEEEE | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | ISO day of week (formatting) | 90 | i | 1, 2, 3, ..., 7 | 5 |\n * | | | io | 1st, 2nd, ..., 7th | 5 |\n * | | | ii | 01, 02, ..., 07 | 5 |\n * | | | iii | Mon, Tue, Wed, ..., Su | 5 |\n * | | | iiii | Monday, Tuesday, ..., Sunday | 2,5 |\n * | | | iiiii | M, T, W, T, F, S, S | 5 |\n * | | | iiiiii | Mo, Tu, We, Th, Fr, Su, Sa | 5 |\n * | Local day of week (formatting) | 90 | e | 2, 3, 4, ..., 1 | |\n * | | | eo | 2nd, 3rd, ..., 1st | 5 |\n * | | | ee | 02, 03, ..., 01 | |\n * | | | eee | Mon, Tue, Wed, ..., Su | |\n * | | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | | eeeee | M, T, W, T, F, S, S | |\n * | | | eeeeee | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | Local day of week (stand-alone) | 90 | c | 2, 3, 4, ..., 1 | |\n * | | | co | 2nd, 3rd, ..., 1st | 5 |\n * | | | cc | 02, 03, ..., 01 | |\n * | | | ccc | Mon, Tue, Wed, ..., Su | |\n * | | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | | ccccc | M, T, W, T, F, S, S | |\n * | | | cccccc | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | AM, PM | 80 | a..aaa | AM, PM | |\n * | | | aaaa | a.m., p.m. | 2 |\n * | | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | 80 | b..bbb | AM, PM, noon, midnight | |\n * | | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | | bbbbb | a, p, n, mi | |\n * | Flexible day period | 80 | B..BBB | at night, in the morning, ... | |\n * | | | BBBB | at night, in the morning, ... | 2 |\n * | | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | 70 | h | 1, 2, ..., 11, 12 | |\n * | | | ho | 1st, 2nd, ..., 11th, 12th | 5 |\n * | | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | 70 | H | 0, 1, 2, ..., 23 | |\n * | | | Ho | 0th, 1st, 2nd, ..., 23rd | 5 |\n * | | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | 70 | K | 1, 2, ..., 11, 0 | |\n * | | | Ko | 1st, 2nd, ..., 11th, 0th | 5 |\n * | | | KK | 1, 2, ..., 11, 0 | |\n * | Hour [1-24] | 70 | k | 24, 1, 2, ..., 23 | |\n * | | | ko | 24th, 1st, 2nd, ..., 23rd | 5 |\n * | | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | 60 | m | 0, 1, ..., 59 | |\n * | | | mo | 0th, 1st, ..., 59th | 5 |\n * | | | mm | 00, 01, ..., 59 | |\n * | Second | 50 | s | 0, 1, ..., 59 | |\n * | | | so | 0th, 1st, ..., 59th | 5 |\n * | | | ss | 00, 01, ..., 59 | |\n * | Seconds timestamp | 40 | t | 512969520 | |\n * | | | tt | ... | 2 |\n * | Fraction of second | 30 | S | 0, 1, ..., 9 | |\n * | | | SS | 00, 01, ..., 99 | |\n * | | | SSS | 000, 0001, ..., 999 | |\n * | | | SSSS | ... | 2 |\n * | Milliseconds timestamp | 20 | T | 512969520900 | |\n * | | | TT | ... | 2 |\n * | Timezone (ISO-8601 w/ Z) | 10 | X | -08, +0530, Z | |\n * | | | XX | -0800, +0530, Z | |\n * | | | XXX | -08:00, +05:30, Z | |\n * | | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | 10 | x | -08, +0530, +00 | |\n * | | | xx | -0800, +0530, +0000 | |\n * | | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Long localized date | NA | P | 05/29/1453 | 5,8 |\n * | | | PP | May 29, 1453 | |\n * | | | PPP | May 29th, 1453 | |\n * | | | PPPP | Sunday, May 29th, 1453 | 2,5,8 |\n * | Long localized time | NA | p | 12:00 AM | 5,8 |\n * | | | pp | 12:00:00 AM | |\n * | Combination of date and time | NA | Pp | 05/29/1453, 12:00 AM | |\n * | | | PPpp | May 29, 1453, 12:00:00 AM | |\n * | | | PPPpp | May 29th, 1453 at ... | |\n * | | | PPPPpp | Sunday, May 29th, 1453 at ... | 2,5,8 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular.\n * In `format` function, they will produce different result:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * `parse` will try to match both formatting and stand-alone units interchangably.\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table:\n * - for numerical units (`yyyyyyyy`) `parse` will try to match a number\n * as wide as the sequence\n * - for text units (`MMMMMMMM`) `parse` will try to match the widest variation of the unit.\n * These variations are marked with \"2\" in the last column of the table.\n *\n * 3. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 4. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` will try to guess the century of two digit year by proximity with `backupDate`:\n *\n * `parse('50', 'yy', new Date(2018, 0, 1)) //=> Sat Jan 01 2050 00:00:00`\n *\n * `parse('75', 'yy', new Date(2018, 0, 1)) //=> Wed Jan 01 1975 00:00:00`\n *\n * while `uu` will just assign the year as is:\n *\n * `parse('50', 'uu', new Date(2018, 0, 1)) //=> Sat Jan 01 0050 00:00:00`\n *\n * `parse('75', 'uu', new Date(2018, 0, 1)) //=> Tue Jan 01 0075 00:00:00`\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [setISOWeekYear]{@link https://date-fns.org/docs/setISOWeekYear}\n * and [setWeekYear]{@link https://date-fns.org/docs/setWeekYear}).\n *\n * 5. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 6. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://git.io/fxCyr\n *\n * 7. `D` and `DD` tokens represent days of the year but they are ofthen confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://git.io/fxCyr\n *\n * 8. `P+` tokens do not have a defined priority since they are merely aliases to other tokens based\n * on the given locale.\n *\n * using `en-US` locale: `P` => `MM/dd/yyyy`\n * using `en-US` locale: `p` => `hh:mm a`\n * using `pt-BR` locale: `P` => `dd/MM/yyyy`\n * using `pt-BR` locale: `p` => `HH:mm`\n *\n * Values will be assigned to the date in the descending order of its unit's priority.\n * Units of an equal priority overwrite each other in the order of appearance.\n *\n * If no values of higher priority are parsed (e.g. when parsing string 'January 1st' without a year),\n * the values will be taken from 3rd argument `backupDate` which works as a context of parsing.\n *\n * `backupDate` must be passed for correct work of the function.\n * If you're not sure which `backupDate` to supply, create a new instance of Date:\n * `parse('02/11/2014', 'MM/dd/yyyy', new Date())`\n * In this case parsing will be done in the context of the current date.\n * If `backupDate` is `Invalid Date` or a value not convertible to valid `Date`,\n * then `Invalid Date` will be returned.\n *\n * The result may vary by locale.\n *\n * If `formatString` matches with `dateString` but does not provides tokens, `backupDate` will be returned.\n *\n * If parsing failed, `Invalid Date` will be returned.\n * Invalid Date is a Date, whose time value is NaN.\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - Old `parse` was renamed to `toDate`.\n * Now `parse` is a new function which parses a string using a provided format.\n *\n * ```javascript\n * // Before v2.0.0\n * parse('2016-01-01')\n *\n * // v2.0.0 onward\n * toDate('2016-01-01')\n * parse('2016-01-01', 'yyyy-MM-dd', new Date())\n * ```\n *\n * @param {String} dateString - the string to parse\n * @param {String} formatString - the string of tokens\n * @param {Date|Number} backupDate - defines values missing from the parsed dateString\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n * see: https://git.io/fxCyr\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n * see: https://git.io/fxCyr\n * @returns {Date} the parsed date\n * @throws {TypeError} 3 arguments required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} `options.locale` must contain `match` property\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years; see: https://git.io/fxCyr\n * @throws {RangeError} use `yy` instead of `YY` for formatting years; see: https://git.io/fxCyr\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month; see: https://git.io/fxCyr\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month; see: https://git.io/fxCyr\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Parse 11 February 2014 from middle-endian format:\n * var result = parse('02/11/2014', 'MM/dd/yyyy', new Date())\n * //=> Tue Feb 11 2014 00:00:00\n *\n * @example\n * // Parse 28th of February in Esperanto locale in the context of 2010 year:\n * import eo from 'date-fns/locale/eo'\n * var result = parse('28-a de februaro', \"do 'de' MMMM\", new Date(2010, 0, 1), {\n * locale: eo\n * })\n * //=> Sun Feb 28 2010 00:00:00\n */\n\nfunction parse(dirtyDateString, dirtyFormatString, dirtyBackupDate, dirtyOptions) {\n if (arguments.length < 3) {\n throw new TypeError('3 arguments required, but only ' + arguments.length + ' present');\n }\n\n var dateString = String(dirtyDateString);\n var formatString = String(dirtyFormatString);\n var options = dirtyOptions || {};\n var locale$1 = options.locale || locale;\n\n if (!locale$1.match) {\n throw new RangeError('locale must contain match property');\n }\n\n var localeFirstWeekContainsDate = locale$1.options && locale$1.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate); // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n\n var localeWeekStartsOn = locale$1.options && locale$1.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n if (formatString === '') {\n if (dateString === '') {\n return toDate(dirtyBackupDate);\n } else {\n return new Date(NaN);\n }\n }\n\n var subFnOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale$1 // If timezone isn't specified, it will be set to the system timezone\n\n };\n var setters = [{\n priority: TIMEZONE_UNIT_PRIORITY,\n set: dateToSystemTimezone,\n index: 0\n }];\n var i;\n var tokens = formatString.match(longFormattingTokensRegExp$1).map(function (substring) {\n var firstCharacter = substring[0];\n\n if (firstCharacter === 'p' || firstCharacter === 'P') {\n var longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale$1.formatLong, subFnOptions);\n }\n\n return substring;\n }).join('').match(formattingTokensRegExp$1);\n var usedTokens = [];\n\n for (i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n\n if (!options.useAdditionalWeekYearTokens && isProtectedWeekYearToken(token)) {\n throwProtectedError(token);\n }\n\n if (!options.useAdditionalDayOfYearTokens && isProtectedDayOfYearToken(token)) {\n throwProtectedError(token);\n }\n\n var firstCharacter = token[0];\n var parser = parsers[firstCharacter];\n\n if (parser) {\n var incompatibleTokens = parser.incompatibleTokens;\n\n if (Array.isArray(incompatibleTokens)) {\n var incompatibleToken = void 0;\n\n for (var _i = 0; _i < usedTokens.length; _i++) {\n var usedToken = usedTokens[_i].token;\n\n if (incompatibleTokens.indexOf(usedToken) !== -1 || usedToken === firstCharacter) {\n incompatibleToken = usedTokens[_i];\n break;\n }\n }\n\n if (incompatibleToken) {\n throw new RangeError(\"The format string mustn't contain `\".concat(incompatibleToken.fullToken, \"` and `\").concat(token, \"` at the same time\"));\n }\n } else if (parser.incompatibleTokens === '*' && usedTokens.length) {\n throw new RangeError(\"The format string mustn't contain `\".concat(token, \"` and any other token at the same time\"));\n }\n\n usedTokens.push({\n token: firstCharacter,\n fullToken: token\n });\n var parseResult = parser.parse(dateString, token, locale$1.match, subFnOptions);\n\n if (!parseResult) {\n return new Date(NaN);\n }\n\n setters.push({\n priority: parser.priority,\n set: parser.set,\n validate: parser.validate,\n value: parseResult.value,\n index: setters.length\n });\n dateString = parseResult.rest;\n } else {\n if (firstCharacter.match(unescapedLatinCharacterRegExp$1)) {\n throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n } // Replace two single quote characters with one single quote character\n\n\n if (token === \"''\") {\n token = \"'\";\n } else if (firstCharacter === \"'\") {\n token = cleanEscapedString$1(token);\n } // Cut token from string, or, if string doesn't match the token, return Invalid Date\n\n\n if (dateString.indexOf(token) === 0) {\n dateString = dateString.slice(token.length);\n } else {\n return new Date(NaN);\n }\n }\n } // Check if the remaining input contains something other than whitespace\n\n\n if (dateString.length > 0 && notWhitespaceRegExp.test(dateString)) {\n return new Date(NaN);\n }\n\n var uniquePrioritySetters = setters.map(function (setter) {\n return setter.priority;\n }).sort(function (a, b) {\n return b - a;\n }).filter(function (priority, index, array) {\n return array.indexOf(priority) === index;\n }).map(function (priority) {\n return setters.filter(function (setter) {\n return setter.priority === priority;\n }).reverse();\n }).map(function (setterArray) {\n return setterArray[0];\n });\n var date = toDate(dirtyBackupDate);\n\n if (isNaN(date)) {\n return new Date(NaN);\n } // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/37\n\n\n var utcDate = subMilliseconds(date, getTimezoneOffsetInMilliseconds(date));\n var flags = {};\n\n for (i = 0; i < uniquePrioritySetters.length; i++) {\n var setter = uniquePrioritySetters[i];\n\n if (setter.validate && !setter.validate(utcDate, setter.value, subFnOptions)) {\n return new Date(NaN);\n }\n\n var result = setter.set(utcDate, flags, setter.value, subFnOptions); // Result is tuple (date, flags)\n\n if (result[0]) {\n utcDate = result[0];\n assign$1(flags, result[1]); // Result is date\n } else {\n utcDate = result;\n }\n }\n\n return utcDate;\n}\n\nfunction dateToSystemTimezone(date, flags) {\n if (flags.timestampIsSet) {\n return date;\n }\n\n var convertedDate = new Date(0);\n convertedDate.setFullYear(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate());\n convertedDate.setHours(date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds(), date.getUTCMilliseconds());\n return convertedDate;\n}\n\nfunction cleanEscapedString$1(input) {\n return input.match(escapedStringRegExp$1)[1].replace(doubleQuoteRegExp$1, \"'\");\n}\n\nvar date = lodash_clonedeep(defaultType);\ndate.isRight = true;\n\ndate.compare = function (x, y, column) {\n function cook(d) {\n if (column && column.dateInputFormat) {\n return parse(\"\".concat(d), \"\".concat(column.dateInputFormat), new Date());\n }\n\n return d;\n }\n\n x = cook(x);\n y = cook(y);\n\n if (!isValid(x)) {\n return -1;\n }\n\n if (!isValid(y)) {\n return 1;\n }\n\n return compareAsc(x, y);\n};\n\ndate.format = function (v, column) {\n if (v === undefined || v === null) return ''; // convert to date\n\n var date = parse(v, column.dateInputFormat, new Date());\n\n if (isValid(date)) {\n return format(date, column.dateOutputFormat);\n }\n\n console.error(\"Not a valid date: \\\"\".concat(v, \"\\\"\"));\n return null;\n};\n\nvar date$1 = /*#__PURE__*/Object.freeze({\n 'default': date\n});\n\nvar number = lodash_clonedeep(defaultType);\nnumber.isRight = true;\n\nnumber.filterPredicate = function (rowval, filter) {\n return number.compare(rowval, filter) === 0;\n};\n\nnumber.compare = function (x, y) {\n function cook(d) {\n // if d is null or undefined we give it the smallest\n // possible value\n if (d === undefined || d === null) return -Infinity;\n return d.indexOf('.') >= 0 ? parseFloat(d) : parseInt(d, 10);\n }\n\n x = typeof x === 'number' ? x : cook(x);\n y = typeof y === 'number' ? y : cook(y);\n if (x < y) return -1;\n if (x > y) return 1;\n return 0;\n};\n\nvar number$1 = /*#__PURE__*/Object.freeze({\n 'default': number\n});\n\nvar decimal = lodash_clonedeep(number);\n\ndecimal.format = function (v) {\n if (v === undefined || v === null) return '';\n return parseFloat(Math.round(v * 100) / 100).toFixed(2);\n};\n\nvar decimal$1 = /*#__PURE__*/Object.freeze({\n 'default': decimal\n});\n\nvar percentage = lodash_clonedeep(number);\n\npercentage.format = function (v) {\n if (v === undefined || v === null) return '';\n return \"\".concat(parseFloat(v * 100).toFixed(2), \"%\");\n};\n\nvar percentage$1 = /*#__PURE__*/Object.freeze({\n 'default': percentage\n});\n\nvar _boolean = lodash_clonedeep(defaultType);\n\n_boolean.isRight = true;\n\n_boolean.filterPredicate = function (rowval, filter) {\n return _boolean.compare(rowval, filter) === 0;\n};\n\n_boolean.compare = function (x, y) {\n function cook(d) {\n if (typeof d === 'boolean') return d ? 1 : 0;\n if (typeof d === 'string') return d === 'true' ? 1 : 0;\n return -Infinity;\n }\n\n x = cook(x);\n y = cook(y);\n if (x < y) return -1;\n if (x > y) return 1;\n return 0;\n};\n\nvar _boolean$1 = /*#__PURE__*/Object.freeze({\n 'default': _boolean\n});\n\nvar index = {\n date: date$1,\n decimal: decimal$1,\n number: number$1,\n percentage: percentage$1,\n \"boolean\": _boolean$1\n};\n\nvar dataTypes = {};\nvar coreDataTypes = index;\nlodash_foreach(Object.keys(coreDataTypes), function (key) {\n var compName = key.replace(/^\\.\\//, '').replace(/\\.js/, '');\n dataTypes[compName] = coreDataTypes[key][\"default\"];\n});\nvar script$6 = {\n name: 'vue-good-table',\n props: {\n isLoading: {\n \"default\": null,\n type: Boolean\n },\n maxHeight: {\n \"default\": null,\n type: String\n },\n fixedHeader: Boolean,\n theme: {\n \"default\": ''\n },\n mode: {\n \"default\": 'local'\n },\n // could be remote\n totalRows: {},\n // required if mode = 'remote'\n styleClass: {\n \"default\": 'vgt-table bordered'\n },\n columns: {},\n rows: {},\n lineNumbers: Boolean,\n responsive: {\n \"default\": true,\n type: Boolean\n },\n rtl: Boolean,\n rowStyleClass: {\n \"default\": null,\n type: [Function, String]\n },\n compactMode: Boolean,\n groupOptions: {\n \"default\": function _default() {\n return {\n enabled: false,\n collapsable: false,\n rowKey: null\n };\n }\n },\n selectOptions: {\n \"default\": function _default() {\n return {\n enabled: false,\n selectionInfoClass: '',\n selectionText: 'rows selected',\n clearSelectionText: 'clear',\n disableSelectInfo: false,\n selectAllByGroup: false\n };\n }\n },\n // sort\n sortOptions: {\n \"default\": function _default() {\n return {\n enabled: true,\n initialSortBy: {}\n };\n }\n },\n // pagination\n paginationOptions: {\n \"default\": function _default() {\n return {\n enabled: false,\n perPage: 10,\n perPageDropdown: null,\n position: 'bottom',\n dropdownAllowAll: true,\n mode: 'records' // or pages\n\n };\n }\n },\n searchOptions: {\n \"default\": function _default() {\n return {\n enabled: false,\n trigger: null,\n externalQuery: null,\n searchFn: null,\n placeholder: 'Search Table'\n };\n }\n }\n },\n data: function data() {\n return {\n // loading state for remote mode\n tableLoading: false,\n // text options\n nextText: 'Next',\n prevText: 'Prev',\n rowsPerPageText: 'Rows per page',\n ofText: 'of',\n allText: 'All',\n pageText: 'page',\n // internal select options\n selectable: false,\n selectOnCheckboxOnly: false,\n selectAllByPage: true,\n disableSelectInfo: false,\n selectionInfoClass: '',\n selectionText: 'rows selected',\n clearSelectionText: 'clear',\n // keys for rows that are currently expanded\n maintainExpanded: true,\n expandedRowKeys: new Set(),\n // internal sort options\n sortable: true,\n defaultSortBy: null,\n // internal search options\n searchEnabled: false,\n searchTrigger: null,\n externalSearchQuery: null,\n searchFn: null,\n searchPlaceholder: 'Search Table',\n searchSkipDiacritics: false,\n // internal pagination options\n perPage: null,\n paginate: false,\n paginateOnTop: false,\n paginateOnBottom: true,\n customRowsPerPageDropdown: [],\n paginateDropdownAllowAll: true,\n paginationMode: 'records',\n currentPage: 1,\n currentPerPage: 10,\n sorts: [],\n globalSearchTerm: '',\n filteredRows: [],\n columnFilters: {},\n forceSearch: false,\n sortChanged: false,\n dataTypes: dataTypes || {}\n };\n },\n watch: {\n rows: {\n handler: function handler() {\n this.$emit('update:isLoading', false);\n this.filterRows(this.columnFilters, false);\n },\n deep: true,\n immediate: true\n },\n selectOptions: {\n handler: function handler() {\n this.initializeSelect();\n },\n deep: true,\n immediate: true\n },\n paginationOptions: {\n handler: function handler(newValue, oldValue) {\n if (!lodash_isequal(newValue, oldValue)) {\n this.initializePagination();\n }\n },\n deep: true,\n immediate: true\n },\n searchOptions: {\n handler: function handler() {\n if (this.searchOptions.externalQuery !== undefined && this.searchOptions.externalQuery !== this.searchTerm) {\n //* we need to set searchTerm to externalQuery first.\n this.externalSearchQuery = this.searchOptions.externalQuery;\n this.handleSearch();\n }\n\n this.initializeSearch();\n },\n deep: true,\n immediate: true\n },\n sortOptions: {\n handler: function handler(newValue, oldValue) {\n if (!lodash_isequal(newValue, oldValue)) {\n this.initializeSort();\n }\n },\n deep: true\n },\n selectedRows: function selectedRows(newValue, oldValue) {\n if (!lodash_isequal(newValue, oldValue)) {\n this.$emit('on-selected-rows-change', {\n selectedRows: this.selectedRows\n });\n }\n }\n },\n computed: {\n tableStyles: function tableStyles() {\n if (this.compactMode) return this.tableStyleClasses + 'vgt-compact';else return this.tableStyleClasses;\n },\n hasFooterSlot: function hasFooterSlot() {\n return !!this.$slots['table-actions-bottom'];\n },\n wrapperStyles: function wrapperStyles() {\n return {\n overflow: 'scroll-y',\n maxHeight: this.maxHeight ? this.maxHeight : 'auto'\n };\n },\n rowKeyField: function rowKeyField() {\n return this.groupOptions.rowKey || 'vgt_header_id';\n },\n hasHeaderRowTemplate: function hasHeaderRowTemplate() {\n return !!this.$slots['table-header-row'] || !!this.$scopedSlots['table-header-row'];\n },\n showEmptySlot: function showEmptySlot() {\n if (!this.paginated.length) return true;\n\n if (this.paginated[0].label === 'no groups' && !this.paginated[0].children.length) {\n return true;\n }\n\n return false;\n },\n allSelected: function allSelected() {\n return this.selectedRowCount > 0 && (this.selectAllByPage && this.selectedPageRowsCount === this.totalPageRowCount || !this.selectAllByPage && this.selectedRowCount === this.totalRowCount);\n },\n allSelectedIndeterminate: function allSelectedIndeterminate() {\n return !this.allSelected && (this.selectAllByPage && this.selectedPageRowsCount > 0 || !this.selectAllByPage && this.selectedRowCount > 0);\n },\n selectionInfo: function selectionInfo() {\n return \"\".concat(this.selectedRowCount, \" \").concat(this.selectionText);\n },\n selectedRowCount: function selectedRowCount() {\n return this.selectedRows.length;\n },\n selectedPageRowsCount: function selectedPageRowsCount() {\n return this.selectedPageRows.length;\n },\n selectedPageRows: function selectedPageRows() {\n var selectedRows = [];\n lodash_foreach(this.paginated, function (headerRow) {\n lodash_foreach(headerRow.children, function (row) {\n if (row.vgtSelected) {\n selectedRows.push(row);\n }\n });\n });\n return selectedRows;\n },\n selectedRows: function selectedRows() {\n var selectedRows = [];\n lodash_foreach(this.processedRows, function (headerRow) {\n lodash_foreach(headerRow.children, function (row) {\n if (row.vgtSelected) {\n selectedRows.push(row);\n }\n });\n });\n return selectedRows.sort(function (r1, r2) {\n return r1.originalIndex - r2.originalIndex;\n });\n },\n fullColspan: function fullColspan() {\n var fullColspan = 0;\n\n for (var i = 0; i < this.columns.length; i += 1) {\n if (!this.columns[i].hidden) {\n fullColspan += 1;\n }\n }\n\n if (this.lineNumbers) fullColspan++;\n if (this.selectable) fullColspan++;\n return fullColspan;\n },\n groupHeaderOnTop: function groupHeaderOnTop() {\n if (this.groupOptions && this.groupOptions.enabled && this.groupOptions.headerPosition && this.groupOptions.headerPosition === 'bottom') {\n return false;\n }\n\n if (this.groupOptions && this.groupOptions.enabled) return true; // will only get here if groupOptions is false\n\n return false;\n },\n groupHeaderOnBottom: function groupHeaderOnBottom() {\n if (this.groupOptions && this.groupOptions.enabled && this.groupOptions.headerPosition && this.groupOptions.headerPosition === 'bottom') {\n return true;\n }\n\n return false;\n },\n totalRowCount: function totalRowCount() {\n var total = 0;\n lodash_foreach(this.processedRows, function (headerRow) {\n total += headerRow.children ? headerRow.children.length : 0;\n });\n return total;\n },\n totalPageRowCount: function totalPageRowCount() {\n var total = 0;\n lodash_foreach(this.paginated, function (headerRow) {\n total += headerRow.children ? headerRow.children.length : 0;\n });\n return total;\n },\n wrapStyleClasses: function wrapStyleClasses() {\n var classes = 'vgt-wrap';\n if (this.rtl) classes += ' rtl';\n classes += \" \".concat(this.theme);\n return classes;\n },\n tableStyleClasses: function tableStyleClasses() {\n var classes = this.styleClass;\n classes += \" \".concat(this.theme);\n return classes;\n },\n searchTerm: function searchTerm() {\n return this.externalSearchQuery != null ? this.externalSearchQuery : this.globalSearchTerm;\n },\n //\n globalSearchAllowed: function globalSearchAllowed() {\n if (this.searchEnabled && !!this.globalSearchTerm && this.searchTrigger !== 'enter') {\n return true;\n }\n\n if (this.externalSearchQuery != null && this.searchTrigger !== 'enter') {\n return true;\n }\n\n if (this.forceSearch) {\n this.forceSearch = false;\n return true;\n }\n\n return false;\n },\n // this is done everytime sortColumn\n // or sort type changes\n //----------------------------------------\n processedRows: function processedRows() {\n var _this = this;\n\n // we only process rows when mode is local\n var computedRows = this.filteredRows;\n\n if (this.mode === 'remote') {\n return computedRows;\n } // take care of the global filter here also\n\n\n if (this.globalSearchAllowed) {\n // here also we need to de-construct and then\n // re-construct the rows.\n var allRows = [];\n lodash_foreach(this.filteredRows, function (headerRow) {\n allRows.push.apply(allRows, _toConsumableArray(headerRow.children));\n });\n var filteredRows = [];\n lodash_foreach(allRows, function (row) {\n lodash_foreach(_this.columns, function (col) {\n // if col does not have search disabled,\n if (!col.globalSearchDisabled) {\n // if a search function is provided,\n // use that for searching, otherwise,\n // use the default search behavior\n if (_this.searchFn) {\n var foundMatch = _this.searchFn(row, col, _this.collectFormatted(row, col), _this.searchTerm);\n\n if (foundMatch) {\n filteredRows.push(row);\n return false; // break the loop\n }\n } else {\n // comparison\n var matched = defaultType.filterPredicate(_this.collectFormatted(row, col), _this.searchTerm, _this.searchSkipDiacritics);\n\n if (matched) {\n filteredRows.push(row);\n return false; // break loop\n }\n }\n }\n });\n }); // this is where we emit on search\n\n this.$emit('on-search', {\n searchTerm: this.searchTerm,\n rowCount: filteredRows.length\n }); // here we need to reconstruct the nested structure\n // of rows\n\n computedRows = [];\n lodash_foreach(this.filteredRows, function (headerRow) {\n var i = headerRow.vgt_header_id;\n var children = lodash_filter(filteredRows, ['vgt_id', i]);\n\n if (children.length) {\n var newHeaderRow = lodash_clonedeep(headerRow);\n newHeaderRow.children = children;\n computedRows.push(newHeaderRow);\n }\n });\n }\n\n if (this.sorts.length) {\n //* we need to sort\n computedRows.forEach(function (cRows) {\n cRows.children.sort(function (xRow, yRow) {\n //* we need to get column for each sort\n var sortValue;\n\n for (var i = 0; i < _this.sorts.length; i += 1) {\n var column = _this.getColumnForField(_this.sorts[i].field);\n\n var xvalue = _this.collect(xRow, _this.sorts[i].field);\n\n var yvalue = _this.collect(yRow, _this.sorts[i].field); //* if a custom sort function has been provided we use that\n\n\n var sortFn = column.sortFn;\n\n if (sortFn && typeof sortFn === 'function') {\n sortValue = sortValue || sortFn(xvalue, yvalue, column, xRow, yRow) * (_this.sorts[i].type === 'desc' ? -1 : 1);\n } else {\n //* else we use our own sort\n sortValue = sortValue || column.typeDef.compare(xvalue, yvalue, column) * (_this.sorts[i].type === 'desc' ? -1 : 1);\n }\n }\n\n return sortValue;\n });\n });\n } // if the filtering is event based, we need to maintain filter\n // rows\n\n\n if (this.searchTrigger === 'enter') {\n this.filteredRows = computedRows;\n }\n\n return computedRows;\n },\n paginated: function paginated() {\n var _this2 = this;\n\n if (!this.processedRows.length) return [];\n\n if (this.mode === 'remote') {\n return this.processedRows;\n } //* flatten the rows for paging.\n\n\n var paginatedRows = [];\n lodash_foreach(this.processedRows, function (childRows) {\n var _paginatedRows;\n\n //* only add headers when group options are enabled.\n if (_this2.groupOptions.enabled) {\n paginatedRows.push(childRows);\n }\n\n (_paginatedRows = paginatedRows).push.apply(_paginatedRows, _toConsumableArray(childRows.children));\n });\n\n if (this.paginate) {\n var pageStart = (this.currentPage - 1) * this.currentPerPage; // in case of filtering we might be on a page that is\n // not relevant anymore\n // also, if setting to all, current page will not be valid\n\n if (pageStart >= paginatedRows.length || this.currentPerPage === -1) {\n this.currentPage = 1;\n pageStart = 0;\n } // calculate page end now\n\n\n var pageEnd = paginatedRows.length + 1; // if the setting is set to 'all'\n\n if (this.currentPerPage !== -1) {\n pageEnd = this.currentPage * this.currentPerPage;\n }\n\n paginatedRows = paginatedRows.slice(pageStart, pageEnd);\n } // reconstruct paginated rows here\n\n\n var reconstructedRows = [];\n paginatedRows.forEach(function (flatRow) {\n //* header row?\n if (flatRow.vgt_header_id !== undefined) {\n _this2.handleExpanded(flatRow);\n\n var newHeaderRow = lodash_clonedeep(flatRow);\n newHeaderRow.children = [];\n reconstructedRows.push(newHeaderRow);\n } else {\n //* child row\n var hRow = reconstructedRows.find(function (r) {\n return r.vgt_header_id === flatRow.vgt_id;\n });\n\n if (!hRow) {\n hRow = _this2.processedRows.find(function (r) {\n return r.vgt_header_id === flatRow.vgt_id;\n });\n\n if (hRow) {\n hRow = lodash_clonedeep(hRow);\n hRow.children = [];\n reconstructedRows.push(hRow);\n }\n }\n\n hRow.children.push(flatRow);\n }\n });\n return reconstructedRows;\n },\n originalRows: function originalRows() {\n var rows = lodash_clonedeep(this.rows);\n var nestedRows = [];\n\n if (!this.groupOptions.enabled) {\n nestedRows = this.handleGrouped([{\n label: 'no groups',\n children: rows\n }]);\n } else {\n nestedRows = this.handleGrouped(rows);\n } // we need to preserve the original index of\n // rows so lets do that\n\n\n var index = 0;\n lodash_foreach(nestedRows, function (headerRow, i) {\n lodash_foreach(headerRow.children, function (row, j) {\n row.originalIndex = index++;\n });\n });\n return nestedRows;\n },\n typedColumns: function typedColumns() {\n var columns = lodash_assign(this.columns, []);\n\n for (var i = 0; i < this.columns.length; i++) {\n var column = columns[i];\n column.typeDef = this.dataTypes[column.type] || defaultType;\n }\n\n return columns;\n },\n hasRowClickListener: function hasRowClickListener() {\n return this.$listeners && this.$listeners['on-row-click'];\n }\n },\n methods: {\n //* we need to check for expanded row state here\n //* to maintain it when sorting/filtering\n handleExpanded: function handleExpanded(headerRow) {\n if (this.maintainExpanded && this.expandedRowKeys.has(headerRow[this.rowKeyField])) {\n this.$set(headerRow, 'vgtIsExpanded', true);\n } else {\n this.$set(headerRow, 'vgtIsExpanded', false);\n }\n },\n toggleExpand: function toggleExpand(id) {\n var _this3 = this;\n\n var headerRow = this.filteredRows.find(function (r) {\n return r[_this3.rowKeyField] === id;\n });\n\n if (headerRow) {\n this.$set(headerRow, 'vgtIsExpanded', !headerRow.vgtIsExpanded);\n }\n\n if (this.maintainExpanded && headerRow.vgtIsExpanded) {\n this.expandedRowKeys.add(headerRow[this.rowKeyField]);\n } else {\n this.expandedRowKeys[\"delete\"](headerRow[this.rowKeyField]);\n }\n },\n expandAll: function expandAll() {\n var _this4 = this;\n\n this.filteredRows.forEach(function (row) {\n _this4.$set(row, 'vgtIsExpanded', true);\n\n if (_this4.maintainExpanded) {\n _this4.expandedRowKeys.add(row[_this4.rowKeyField]);\n }\n });\n },\n collapseAll: function collapseAll() {\n var _this5 = this;\n\n this.filteredRows.forEach(function (row) {\n _this5.$set(row, 'vgtIsExpanded', false);\n\n _this5.expandedRowKeys.clear();\n });\n },\n getColumnForField: function getColumnForField(field) {\n for (var i = 0; i < this.typedColumns.length; i += 1) {\n if (this.typedColumns[i].field === field) return this.typedColumns[i];\n }\n },\n handleSearch: function handleSearch() {\n this.resetTable(); // for remote mode, we need to emit on-search\n\n if (this.mode === 'remote') {\n this.$emit('on-search', {\n searchTerm: this.searchTerm\n });\n }\n },\n reset: function reset() {\n this.initializeSort();\n this.changePage(1);\n this.$refs['table-header-primary'].reset(true);\n\n if (this.$refs['table-header-secondary']) {\n this.$refs['table-header-secondary'].reset(true);\n }\n },\n emitSelectedRows: function emitSelectedRows() {\n this.$emit('on-select-all', {\n selected: this.selectedRowCount === this.totalRowCount,\n selectedRows: this.selectedRows\n });\n },\n unselectAllInternal: function unselectAllInternal(forceAll) {\n var _this6 = this;\n\n var rows = this.selectAllByPage && !forceAll ? this.paginated : this.filteredRows;\n lodash_foreach(rows, function (headerRow, i) {\n lodash_foreach(headerRow.children, function (row, j) {\n _this6.$set(row, 'vgtSelected', false);\n });\n });\n this.emitSelectedRows();\n },\n toggleSelectAll: function toggleSelectAll() {\n var _this7 = this;\n\n if (this.allSelected) {\n this.unselectAllInternal();\n return;\n }\n\n var rows = this.selectAllByPage ? this.paginated : this.filteredRows;\n lodash_foreach(rows, function (headerRow) {\n lodash_foreach(headerRow.children, function (row) {\n _this7.$set(row, 'vgtSelected', true);\n });\n });\n this.emitSelectedRows();\n },\n toggleSelectGroup: function toggleSelectGroup(event, headerRow) {\n var _this8 = this;\n\n lodash_foreach(headerRow.children, function (row) {\n _this8.$set(row, 'vgtSelected', event.checked);\n });\n },\n changePage: function changePage(value) {\n if (this.paginationOptions.enabled) {\n var paginationWidget = this.$refs.paginationBottom;\n\n if (this.paginationOptions.position === 'top') {\n paginationWidget = this.$refs.paginationTop;\n }\n\n if (paginationWidget) {\n paginationWidget.currentPage = value; // we also need to set the currentPage\n // for table.\n\n this.currentPage = value;\n }\n }\n },\n pageChangedEvent: function pageChangedEvent() {\n return {\n currentPage: this.currentPage,\n currentPerPage: this.currentPerPage,\n total: Math.floor(this.totalRowCount / this.currentPerPage)\n };\n },\n pageChanged: function pageChanged(pagination) {\n this.currentPage = pagination.currentPage;\n var pageChangedEvent = this.pageChangedEvent();\n pageChangedEvent.prevPage = pagination.prevPage;\n this.$emit('on-page-change', pageChangedEvent);\n\n if (this.mode === 'remote') {\n this.$emit('update:isLoading', true);\n }\n },\n perPageChanged: function perPageChanged(pagination) {\n this.currentPerPage = pagination.currentPerPage; //* update perPage also\n\n var perPageChangedEvent = this.pageChangedEvent();\n this.$emit('on-per-page-change', perPageChangedEvent);\n\n if (this.mode === 'remote') {\n this.$emit('update:isLoading', true);\n }\n },\n changeSort: function changeSort(sorts) {\n this.sorts = sorts;\n this.$emit('on-sort-change', sorts); // every time we change sort we need to reset to page 1\n\n this.changePage(1); // if the mode is remote, we don't need to do anything\n // after this. just set table loading to true\n\n if (this.mode === 'remote') {\n this.$emit('update:isLoading', true);\n return;\n }\n\n this.sortChanged = true;\n },\n // checkbox click should always do the following\n onCheckboxClicked: function onCheckboxClicked(row, index, event) {\n this.$set(row, 'vgtSelected', !row.vgtSelected);\n this.$emit('on-row-click', {\n row: row,\n pageIndex: index,\n selected: !!row.vgtSelected,\n event: event\n });\n },\n onRowDoubleClicked: function onRowDoubleClicked(row, index, event) {\n this.$emit('on-row-dblclick', {\n row: row,\n pageIndex: index,\n selected: !!row.vgtSelected,\n event: event\n });\n },\n onRowClicked: function onRowClicked(row, index, event) {\n if (this.selectable && !this.selectOnCheckboxOnly) {\n this.$set(row, 'vgtSelected', !row.vgtSelected);\n }\n\n this.$emit('on-row-click', {\n row: row,\n pageIndex: index,\n selected: !!row.vgtSelected,\n event: event\n });\n },\n onRowAuxClicked: function onRowAuxClicked(row, index, event) {\n this.$emit('on-row-aux-click', {\n row: row,\n pageIndex: index,\n selected: !!row.vgtSelected,\n event: event\n });\n },\n onCellClicked: function onCellClicked(row, column, rowIndex, event) {\n this.$emit('on-cell-click', {\n row: row,\n column: column,\n rowIndex: rowIndex,\n event: event\n });\n },\n onMouseenter: function onMouseenter(row, index) {\n this.$emit('on-row-mouseenter', {\n row: row,\n pageIndex: index\n });\n },\n onMouseleave: function onMouseleave(row, index) {\n this.$emit('on-row-mouseleave', {\n row: row,\n pageIndex: index\n });\n },\n searchTableOnEnter: function searchTableOnEnter() {\n if (this.searchTrigger === 'enter') {\n this.handleSearch(); // we reset the filteredRows here because\n // we want to search across everything.\n\n this.filteredRows = lodash_clonedeep(this.originalRows);\n this.forceSearch = true;\n this.sortChanged = true;\n }\n },\n searchTableOnKeyUp: function searchTableOnKeyUp() {\n if (this.searchTrigger !== 'enter') {\n this.handleSearch();\n }\n },\n resetTable: function resetTable() {\n this.unselectAllInternal(true); // every time we searchTable\n\n this.changePage(1);\n },\n // field can be:\n // 1. function\n // 2. regular property - ex: 'prop'\n // 3. nested property path - ex: 'nested.prop'\n collect: function collect(obj, field) {\n // utility function to get nested property\n function dig(obj, selector) {\n var result = obj;\n var splitter = selector.split('.');\n\n for (var i = 0; i < splitter.length; i++) {\n if (typeof result === 'undefined' || result === null) {\n return undefined;\n }\n\n result = result[splitter[i]];\n }\n\n return result;\n }\n\n if (typeof field === 'function') return field(obj);\n if (typeof field === 'string') return dig(obj, field);\n return undefined;\n },\n collectFormatted: function collectFormatted(obj, column) {\n var headerRow = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var value;\n\n if (headerRow && column.headerField) {\n value = this.collect(obj, column.headerField);\n } else {\n value = this.collect(obj, column.field);\n }\n\n if (value === undefined) return ''; // if user has supplied custom formatter,\n // use that here\n\n if (column.formatFn && typeof column.formatFn === 'function') {\n return column.formatFn(value, obj);\n } // lets format the resultant data\n\n\n var type = column.typeDef; // this will only happen if we try to collect formatted\n // before types have been initialized. for example: on\n // load when external query is specified.\n\n if (!type) {\n type = this.dataTypes[column.type] || defaultType;\n }\n\n var result = type.format(value, column); // we must have some values in compact mode\n\n if (this.compactMode && (result == '' || result == null)) return '-';\n return result;\n },\n formattedRow: function formattedRow(row) {\n var isHeaderRow = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var formattedRow = {};\n\n for (var i = 0; i < this.typedColumns.length; i++) {\n var col = this.typedColumns[i]; // what happens if field is\n\n if (col.field) {\n formattedRow[col.field] = this.collectFormatted(row, col, isHeaderRow);\n }\n }\n\n return formattedRow;\n },\n // Get classes for the given column index & element.\n getClasses: function getClasses(index, element, row) {\n var _this$typedColumns$in = this.typedColumns[index],\n typeDef = _this$typedColumns$in.typeDef,\n custom = _this$typedColumns$in[\"\".concat(element, \"Class\")];\n\n var isRight = typeDef.isRight;\n if (this.rtl) isRight = true;\n var classes = {\n 'vgt-right-align': isRight,\n 'vgt-left-align': !isRight\n }; // for td we need to check if value is\n // a function.\n\n if (typeof custom === 'function') {\n classes[custom(row)] = true;\n } else if (typeof custom === 'string') {\n classes[custom] = true;\n }\n\n return classes;\n },\n // method to filter rows\n filterRows: function filterRows(columnFilters) {\n var _this9 = this;\n\n var fromFilter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n // if (!this.rows.length) return;\n // this is invoked either as a result of changing filters\n // or as a result of modifying rows.\n this.columnFilters = columnFilters;\n var computedRows = lodash_clonedeep(this.originalRows); // do we have a filter to care about?\n // if not we don't need to do anything\n\n if (this.columnFilters && Object.keys(this.columnFilters).length) {\n // every time we filter rows, we need to set current page\n // to 1\n // if the mode is remote, we only need to reset, if this is\n // being called from filter, not when rows are changing\n if (this.mode !== 'remote' || fromFilter) {\n this.changePage(1);\n } // we need to emit an event and that's that.\n // but this only needs to be invoked if filter is changing\n // not when row object is modified.\n\n\n if (fromFilter) {\n this.$emit('on-column-filter', {\n columnFilters: this.columnFilters\n });\n } // if mode is remote, we don't do any filtering here.\n\n\n if (this.mode === 'remote') {\n if (fromFilter) {\n this.$emit('update:isLoading', true);\n } else {\n // if remote filtering has already been taken care of.\n this.filteredRows = computedRows;\n }\n\n return;\n }\n\n var _loop = function _loop(i) {\n var col = _this9.typedColumns[i];\n\n if (_this9.columnFilters[col.field]) {\n computedRows = lodash_foreach(computedRows, function (headerRow) {\n var newChildren = headerRow.children.filter(function (row) {\n // If column has a custom filter, use that.\n if (col.filterOptions && typeof col.filterOptions.filterFn === 'function') {\n return col.filterOptions.filterFn(_this9.collect(row, col.field), _this9.columnFilters[col.field]);\n } // Otherwise Use default filters\n\n\n var typeDef = col.typeDef;\n return typeDef.filterPredicate(_this9.collect(row, col.field), _this9.columnFilters[col.field], false, col.filterOptions && _typeof(col.filterOptions.filterDropdownItems) === 'object');\n }); // should we remove the header?\n\n headerRow.children = newChildren;\n });\n }\n };\n\n for (var i = 0; i < this.typedColumns.length; i++) {\n _loop(i);\n }\n }\n\n this.filteredRows = computedRows;\n },\n getCurrentIndex: function getCurrentIndex(index) {\n return (this.currentPage - 1) * this.currentPerPage + index + 1;\n },\n getRowStyleClass: function getRowStyleClass(row) {\n var classes = '';\n if (this.hasRowClickListener) classes += 'clickable';\n var rowStyleClasses;\n\n if (typeof this.rowStyleClass === 'function') {\n rowStyleClasses = this.rowStyleClass(row);\n } else {\n rowStyleClasses = this.rowStyleClass;\n }\n\n if (rowStyleClasses) {\n classes += \" \".concat(rowStyleClasses);\n }\n\n return classes;\n },\n handleGrouped: function handleGrouped(originalRows) {\n var _this10 = this;\n\n lodash_foreach(originalRows, function (headerRow, i) {\n headerRow.vgt_header_id = i;\n\n if (_this10.groupOptions.maintainExpanded && _this10.expandedRowKeys.has(headerRow[_this10.groupOptions.rowKey])) {\n _this10.$set(headerRow, 'vgtIsExpanded', true);\n }\n\n lodash_foreach(headerRow.children, function (childRow) {\n childRow.vgt_id = i;\n });\n });\n return originalRows;\n },\n initializePagination: function initializePagination() {\n var _this11 = this;\n\n var _this$paginationOptio = this.paginationOptions,\n enabled = _this$paginationOptio.enabled,\n perPage = _this$paginationOptio.perPage,\n position = _this$paginationOptio.position,\n perPageDropdown = _this$paginationOptio.perPageDropdown,\n dropdownAllowAll = _this$paginationOptio.dropdownAllowAll,\n nextLabel = _this$paginationOptio.nextLabel,\n prevLabel = _this$paginationOptio.prevLabel,\n rowsPerPageLabel = _this$paginationOptio.rowsPerPageLabel,\n ofLabel = _this$paginationOptio.ofLabel,\n pageLabel = _this$paginationOptio.pageLabel,\n allLabel = _this$paginationOptio.allLabel,\n setCurrentPage = _this$paginationOptio.setCurrentPage,\n mode = _this$paginationOptio.mode;\n\n if (typeof enabled === 'boolean') {\n this.paginate = enabled;\n }\n\n if (typeof perPage === 'number') {\n this.perPage = perPage;\n }\n\n if (position === 'top') {\n this.paginateOnTop = true; // default is false\n\n this.paginateOnBottom = false; // default is true\n } else if (position === 'both') {\n this.paginateOnTop = true;\n this.paginateOnBottom = true;\n }\n\n if (Array.isArray(perPageDropdown) && perPageDropdown.length) {\n this.customRowsPerPageDropdown = perPageDropdown;\n\n if (!this.perPage) {\n var _perPageDropdown = _slicedToArray(perPageDropdown, 1);\n\n this.perPage = _perPageDropdown[0];\n }\n }\n\n if (typeof dropdownAllowAll === 'boolean') {\n this.paginateDropdownAllowAll = dropdownAllowAll;\n }\n\n if (typeof mode === 'string') {\n this.paginationMode = mode;\n }\n\n if (typeof nextLabel === 'string') {\n this.nextText = nextLabel;\n }\n\n if (typeof prevLabel === 'string') {\n this.prevText = prevLabel;\n }\n\n if (typeof rowsPerPageLabel === 'string') {\n this.rowsPerPageText = rowsPerPageLabel;\n }\n\n if (typeof ofLabel === 'string') {\n this.ofText = ofLabel;\n }\n\n if (typeof pageLabel === 'string') {\n this.pageText = pageLabel;\n }\n\n if (typeof allLabel === 'string') {\n this.allText = allLabel;\n }\n\n if (typeof setCurrentPage === 'number') {\n setTimeout(function () {\n _this11.changePage(setCurrentPage);\n }, 500);\n }\n },\n initializeSearch: function initializeSearch() {\n var _this$searchOptions = this.searchOptions,\n enabled = _this$searchOptions.enabled,\n trigger = _this$searchOptions.trigger,\n externalQuery = _this$searchOptions.externalQuery,\n searchFn = _this$searchOptions.searchFn,\n placeholder = _this$searchOptions.placeholder,\n skipDiacritics = _this$searchOptions.skipDiacritics;\n\n if (typeof enabled === 'boolean') {\n this.searchEnabled = enabled;\n }\n\n if (trigger === 'enter') {\n this.searchTrigger = trigger;\n }\n\n if (typeof externalQuery === 'string') {\n this.externalSearchQuery = externalQuery;\n }\n\n if (typeof searchFn === 'function') {\n this.searchFn = searchFn;\n }\n\n if (typeof placeholder === 'string') {\n this.searchPlaceholder = placeholder;\n }\n\n if (typeof skipDiacritics === 'boolean') {\n this.searchSkipDiacritics = skipDiacritics;\n }\n },\n initializeSort: function initializeSort() {\n var _this$sortOptions = this.sortOptions,\n enabled = _this$sortOptions.enabled,\n initialSortBy = _this$sortOptions.initialSortBy;\n\n if (typeof enabled === 'boolean') {\n this.sortable = enabled;\n } //* initialSortBy can be an array or an object\n\n\n if (_typeof(initialSortBy) === 'object') {\n var ref = this.fixedHeader ? this.$refs['table-header-secondary'] : this.$refs['table-header-primary'];\n\n if (Array.isArray(initialSortBy)) {\n ref.setInitialSort(initialSortBy);\n } else {\n var hasField = Object.prototype.hasOwnProperty.call(initialSortBy, 'field');\n if (hasField) ref.setInitialSort([initialSortBy]);\n }\n }\n },\n initializeSelect: function initializeSelect() {\n var _this$selectOptions = this.selectOptions,\n enabled = _this$selectOptions.enabled,\n selectionInfoClass = _this$selectOptions.selectionInfoClass,\n selectionText = _this$selectOptions.selectionText,\n clearSelectionText = _this$selectOptions.clearSelectionText,\n selectOnCheckboxOnly = _this$selectOptions.selectOnCheckboxOnly,\n selectAllByPage = _this$selectOptions.selectAllByPage,\n disableSelectInfo = _this$selectOptions.disableSelectInfo,\n selectAllByGroup = _this$selectOptions.selectAllByGroup;\n\n if (typeof enabled === 'boolean') {\n this.selectable = enabled;\n }\n\n if (typeof selectOnCheckboxOnly === 'boolean') {\n this.selectOnCheckboxOnly = selectOnCheckboxOnly;\n }\n\n if (typeof selectAllByPage === 'boolean') {\n this.selectAllByPage = selectAllByPage;\n }\n\n if (typeof selectAllByGroup === 'boolean') {\n this.selectAllByGroup = selectAllByGroup;\n }\n\n if (typeof disableSelectInfo === 'boolean') {\n this.disableSelectInfo = disableSelectInfo;\n }\n\n if (typeof selectionInfoClass === 'string') {\n this.selectionInfoClass = selectionInfoClass;\n }\n\n if (typeof selectionText === 'string') {\n this.selectionText = selectionText;\n }\n\n if (typeof clearSelectionText === 'string') {\n this.clearSelectionText = clearSelectionText;\n }\n }\n },\n mounted: function mounted() {\n if (this.perPage) {\n this.currentPerPage = this.perPage;\n }\n\n this.initializeSort();\n },\n components: {\n 'vgt-pagination': __vue_component__$1,\n 'vgt-global-search': __vue_component__$2,\n 'vgt-header-row': __vue_component__$5,\n 'vgt-table-header': __vue_component__$4\n }\n};\n\n/* script */\nvar __vue_script__$6 = script$6;\n/* template */\n\nvar __vue_render__$6 = function __vue_render__() {\n var _vm = this;\n\n var _h = _vm.$createElement;\n\n var _c = _vm._self._c || _h;\n\n return _c('div', {\n \"class\": _vm.wrapStyleClasses\n }, [_vm.isLoading ? _c('div', {\n staticClass: \"vgt-loading vgt-center-align\"\n }, [_vm._t(\"loadingContent\", [_c('span', {\n staticClass: \"vgt-loading__content\"\n }, [_vm._v(\"\\n Loading...\\n \")])])], 2) : _vm._e(), _vm._v(\" \"), _c('div', {\n staticClass: \"vgt-inner-wrap\",\n \"class\": {\n 'is-loading': _vm.isLoading\n }\n }, [_vm.paginate && _vm.paginateOnTop ? _vm._t(\"pagination-top\", [_c('vgt-pagination', {\n ref: \"paginationTop\",\n attrs: {\n \"perPage\": _vm.perPage,\n \"rtl\": _vm.rtl,\n \"total\": _vm.totalRows || _vm.totalRowCount,\n \"mode\": _vm.paginationMode,\n \"nextText\": _vm.nextText,\n \"prevText\": _vm.prevText,\n \"rowsPerPageText\": _vm.rowsPerPageText,\n \"customRowsPerPageDropdown\": _vm.customRowsPerPageDropdown,\n \"paginateDropdownAllowAll\": _vm.paginateDropdownAllowAll,\n \"ofText\": _vm.ofText,\n \"pageText\": _vm.pageText,\n \"allText\": _vm.allText\n },\n on: {\n \"page-changed\": _vm.pageChanged,\n \"per-page-changed\": _vm.perPageChanged\n }\n })], {\n \"pageChanged\": _vm.pageChanged,\n \"perPageChanged\": _vm.perPageChanged,\n \"total\": _vm.totalRows || _vm.totalRowCount\n }) : _vm._e(), _vm._v(\" \"), _c('vgt-global-search', {\n attrs: {\n \"search-enabled\": _vm.searchEnabled && _vm.externalSearchQuery == null,\n \"global-search-placeholder\": _vm.searchPlaceholder\n },\n on: {\n \"on-keyup\": _vm.searchTableOnKeyUp,\n \"on-enter\": _vm.searchTableOnEnter\n },\n model: {\n value: _vm.globalSearchTerm,\n callback: function callback($$v) {\n _vm.globalSearchTerm = $$v;\n },\n expression: \"globalSearchTerm\"\n }\n }, [_c('template', {\n slot: \"internal-table-actions\"\n }, [_vm._t(\"table-actions\")], 2)], 2), _vm._v(\" \"), _vm.selectedRowCount && !_vm.disableSelectInfo ? _c('div', {\n staticClass: \"vgt-selection-info-row clearfix\",\n \"class\": _vm.selectionInfoClass\n }, [_vm._v(\"\\n \" + _vm._s(_vm.selectionInfo) + \"\\n \"), _c('a', {\n attrs: {\n \"href\": \"\"\n },\n on: {\n \"click\": function click($event) {\n $event.preventDefault();\n return _vm.unselectAllInternal(true);\n }\n }\n }, [_vm._v(\"\\n \" + _vm._s(_vm.clearSelectionText) + \"\\n \")]), _vm._v(\" \"), _c('div', {\n staticClass: \"vgt-selection-info-row__actions vgt-pull-right\"\n }, [_vm._t(\"selected-row-actions\")], 2)]) : _vm._e(), _vm._v(\" \"), _c('div', {\n staticClass: \"vgt-fixed-header\"\n }, [_vm.fixedHeader ? _c('table', {\n \"class\": _vm.tableStyleClasses\n }, [_c(\"vgt-table-header\", {\n ref: \"table-header-secondary\",\n tag: \"thead\",\n attrs: {\n \"columns\": _vm.columns,\n \"line-numbers\": _vm.lineNumbers,\n \"selectable\": _vm.selectable,\n \"all-selected\": _vm.allSelected,\n \"all-selected-indeterminate\": _vm.allSelectedIndeterminate,\n \"mode\": _vm.mode,\n \"sortable\": _vm.sortable,\n \"typed-columns\": _vm.typedColumns,\n \"getClasses\": _vm.getClasses,\n \"searchEnabled\": _vm.searchEnabled,\n \"paginated\": _vm.paginated,\n \"table-ref\": _vm.$refs.table\n },\n on: {\n \"on-toggle-select-all\": _vm.toggleSelectAll,\n \"on-sort-change\": _vm.changeSort,\n \"filter-changed\": _vm.filterRows\n },\n scopedSlots: _vm._u([{\n key: \"table-column\",\n fn: function fn(props) {\n return [_vm._t(\"table-column\", [_c('span', [_vm._v(_vm._s(props.column.label))])], {\n \"column\": props.column\n })];\n }\n }], null, true)\n })], 1) : _vm._e()]), _vm._v(\" \"), _c('div', {\n \"class\": {\n 'vgt-responsive': _vm.responsive\n },\n style: _vm.wrapperStyles\n }, [_c('table', {\n ref: \"table\",\n \"class\": _vm.tableStyles\n }, [_c(\"vgt-table-header\", {\n ref: \"table-header-primary\",\n tag: \"thead\",\n attrs: {\n \"columns\": _vm.columns,\n \"line-numbers\": _vm.lineNumbers,\n \"selectable\": _vm.selectable,\n \"all-selected\": _vm.allSelected,\n \"all-selected-indeterminate\": _vm.allSelectedIndeterminate,\n \"mode\": _vm.mode,\n \"sortable\": _vm.sortable,\n \"typed-columns\": _vm.typedColumns,\n \"getClasses\": _vm.getClasses,\n \"searchEnabled\": _vm.searchEnabled\n },\n on: {\n \"on-toggle-select-all\": _vm.toggleSelectAll,\n \"on-sort-change\": _vm.changeSort,\n \"filter-changed\": _vm.filterRows\n },\n scopedSlots: _vm._u([{\n key: \"table-column\",\n fn: function fn(props) {\n return [_vm._t(\"table-column\", [_c('span', [_vm._v(_vm._s(props.column.label))])], {\n \"column\": props.column\n })];\n }\n }, {\n key: \"column-filter\",\n fn: function fn(props) {\n return [_vm._t(\"column-filter\", null, {\n \"column\": props.column,\n \"updateFilters\": props.updateFilters\n })];\n }\n }], null, true)\n }), _vm._v(\" \"), _vm._l(_vm.paginated, function (headerRow, index) {\n return _c('tbody', {\n key: index\n }, [_vm.groupHeaderOnTop ? _c('vgt-header-row', {\n \"class\": _vm.getRowStyleClass(headerRow),\n attrs: {\n \"header-row\": headerRow,\n \"columns\": _vm.columns,\n \"line-numbers\": _vm.lineNumbers,\n \"selectable\": _vm.selectable,\n \"select-all-by-group\": _vm.selectAllByGroup,\n \"collapsable\": _vm.groupOptions.collapsable,\n \"collect-formatted\": _vm.collectFormatted,\n \"formatted-row\": _vm.formattedRow,\n \"get-classes\": _vm.getClasses,\n \"full-colspan\": _vm.fullColspan,\n \"groupIndex\": index\n },\n on: {\n \"vgtExpand\": function vgtExpand($event) {\n return _vm.toggleExpand(headerRow[_vm.rowKeyField]);\n },\n \"on-select-group-change\": function onSelectGroupChange($event) {\n return _vm.toggleSelectGroup($event, headerRow);\n }\n },\n scopedSlots: _vm._u([{\n key: \"table-header-row\",\n fn: function fn(props) {\n return _vm.hasHeaderRowTemplate ? [_vm._t(\"table-header-row\", null, {\n \"column\": props.column,\n \"formattedRow\": props.formattedRow,\n \"row\": props.row\n })] : undefined;\n }\n }], null, true)\n }) : _vm._e(), _vm._v(\" \"), _vm._l(headerRow.children, function (row, index) {\n return (_vm.groupOptions.collapsable ? headerRow.vgtIsExpanded : true) ? _c('tr', {\n key: row.originalIndex,\n \"class\": _vm.getRowStyleClass(row),\n on: {\n \"mouseenter\": function mouseenter($event) {\n return _vm.onMouseenter(row, index);\n },\n \"mouseleave\": function mouseleave($event) {\n return _vm.onMouseleave(row, index);\n },\n \"dblclick\": function dblclick($event) {\n return _vm.onRowDoubleClicked(row, index, $event);\n },\n \"click\": function click($event) {\n return _vm.onRowClicked(row, index, $event);\n },\n \"auxclick\": function auxclick($event) {\n return _vm.onRowAuxClicked(row, index, $event);\n }\n }\n }, [_vm.lineNumbers ? _c('th', {\n staticClass: \"line-numbers\"\n }, [_vm._v(\"\\n \" + _vm._s(_vm.getCurrentIndex(index)) + \"\\n \")]) : _vm._e(), _vm._v(\" \"), _vm.selectable ? _c('th', {\n staticClass: \"vgt-checkbox-col\",\n on: {\n \"click\": function click($event) {\n $event.stopPropagation();\n return _vm.onCheckboxClicked(row, index, $event);\n }\n }\n }, [_c('input', {\n attrs: {\n \"type\": \"checkbox\"\n },\n domProps: {\n \"checked\": row.vgtSelected\n }\n })]) : _vm._e(), _vm._v(\" \"), _vm._l(_vm.columns, function (column, i) {\n return !column.hidden && column.field ? _c('td', {\n key: i,\n \"class\": _vm.getClasses(i, 'td', row),\n attrs: {\n \"data-label\": _vm.compactMode ? column.label : undefined\n },\n on: {\n \"click\": function click($event) {\n return _vm.onCellClicked(row, column, index, $event);\n }\n }\n }, [_vm._t(\"table-row\", [!column.html ? _c('span', [_vm._v(\"\\n \" + _vm._s(_vm.collectFormatted(row, column)) + \"\\n \")]) : _vm._e(), _vm._v(\" \"), column.html ? _c('span', {\n domProps: {\n \"innerHTML\": _vm._s(_vm.collect(row, column.field))\n }\n }) : _vm._e()], {\n \"row\": row,\n \"column\": column,\n \"formattedRow\": _vm.formattedRow(row),\n \"index\": index\n })], 2) : _vm._e();\n })], 2) : _vm._e();\n }), _vm._v(\" \"), _vm.groupHeaderOnBottom ? _c('vgt-header-row', {\n attrs: {\n \"header-row\": headerRow,\n \"columns\": _vm.columns,\n \"line-numbers\": _vm.lineNumbers,\n \"selectable\": _vm.selectable,\n \"select-all-by-group\": _vm.selectAllByGroup,\n \"collect-formatted\": _vm.collectFormatted,\n \"formatted-row\": _vm.formattedRow,\n \"get-classes\": _vm.getClasses,\n \"full-colspan\": _vm.fullColspan,\n \"groupIndex\": index\n },\n on: {\n \"on-select-group-change\": function onSelectGroupChange($event) {\n return _vm.toggleSelectGroup($event, headerRow);\n }\n },\n scopedSlots: _vm._u([{\n key: \"table-header-row\",\n fn: function fn(props) {\n return _vm.hasHeaderRowTemplate ? [_vm._t(\"table-header-row\", null, {\n \"column\": props.column,\n \"formattedRow\": props.formattedRow,\n \"row\": props.row\n })] : undefined;\n }\n }], null, true)\n }) : _vm._e()], 2);\n }), _vm._v(\" \"), _vm.showEmptySlot ? _c('tbody', [_c('tr', [_c('td', {\n attrs: {\n \"colspan\": _vm.fullColspan\n }\n }, [_vm._t(\"emptystate\", [_c('div', {\n staticClass: \"vgt-center-align vgt-text-disabled\"\n }, [_vm._v(\"\\n No data for table\\n \")])])], 2)])]) : _vm._e()], 2)]), _vm._v(\" \"), _vm.hasFooterSlot ? _c('div', {\n staticClass: \"vgt-wrap__actions-footer\"\n }, [_vm._t(\"table-actions-bottom\")], 2) : _vm._e(), _vm._v(\" \"), _vm.paginate && _vm.paginateOnBottom ? _vm._t(\"pagination-bottom\", [_c('vgt-pagination', {\n ref: \"paginationBottom\",\n attrs: {\n \"perPage\": _vm.perPage,\n \"rtl\": _vm.rtl,\n \"total\": _vm.totalRows || _vm.totalRowCount,\n \"mode\": _vm.paginationMode,\n \"nextText\": _vm.nextText,\n \"prevText\": _vm.prevText,\n \"rowsPerPageText\": _vm.rowsPerPageText,\n \"customRowsPerPageDropdown\": _vm.customRowsPerPageDropdown,\n \"paginateDropdownAllowAll\": _vm.paginateDropdownAllowAll,\n \"ofText\": _vm.ofText,\n \"pageText\": _vm.pageText,\n \"allText\": _vm.allText\n },\n on: {\n \"page-changed\": _vm.pageChanged,\n \"per-page-changed\": _vm.perPageChanged\n }\n })], {\n \"pageChanged\": _vm.pageChanged,\n \"perPageChanged\": _vm.perPageChanged,\n \"total\": _vm.totalRows || _vm.totalRowCount\n }) : _vm._e()], 2)]);\n};\n\nvar __vue_staticRenderFns__$6 = [];\n/* style */\n\nvar __vue_inject_styles__$6 = undefined;\n/* scoped */\n\nvar __vue_scope_id__$6 = undefined;\n/* module identifier */\n\nvar __vue_module_identifier__$6 = undefined;\n/* functional template */\n\nvar __vue_is_functional_template__$6 = false;\n/* style inject */\n\n/* style inject SSR */\n\n/* style inject shadow dom */\n\nvar __vue_component__$6 =\n/*#__PURE__*/\nnormalizeComponent({\n render: __vue_render__$6,\n staticRenderFns: __vue_staticRenderFns__$6\n}, __vue_inject_styles__$6, __vue_script__$6, __vue_scope_id__$6, __vue_is_functional_template__$6, __vue_module_identifier__$6, false, undefined, undefined, undefined);\n\nvar VueGoodTablePlugin = {\n install: function install(Vue, options) {\n Vue.component(__vue_component__$6.name, __vue_component__$6);\n }\n}; // Automatic installation if Vue has been added to the global scope.\n\nif (typeof window !== 'undefined' && window.Vue) {\n window.Vue.use(VueGoodTablePlugin);\n}\n\nexport default VueGoodTablePlugin;\nexport { __vue_component__$6 as VueGoodTable };\n","var _watch;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { COMPONENT_UID_KEY, Vue } from '../../vue';\nimport { NAME_TABS, NAME_TAB_BUTTON_HELPER } from '../../constants/components';\nimport { IS_BROWSER } from '../../constants/env';\nimport { EVENT_NAME_ACTIVATE_TAB, EVENT_NAME_CHANGED, EVENT_NAME_CLICK, EVENT_NAME_FIRST, EVENT_NAME_LAST, EVENT_NAME_NEXT, EVENT_NAME_PREV } from '../../constants/events';\nimport { CODE_DOWN, CODE_END, CODE_HOME, CODE_LEFT, CODE_RIGHT, CODE_SPACE, CODE_UP } from '../../constants/key-codes';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_BOOLEAN, PROP_TYPE_NUMBER, PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_EMPTY, SLOT_NAME_TABS_END, SLOT_NAME_TABS_START, SLOT_NAME_TITLE } from '../../constants/slots';\nimport { arrayIncludes } from '../../utils/array';\nimport { BvEvent } from '../../utils/bv-event.class';\nimport { attemptFocus, selectAll, requestAF } from '../../utils/dom';\nimport { stopEvent } from '../../utils/events';\nimport { identity } from '../../utils/identity';\nimport { isEvent } from '../../utils/inspect';\nimport { looseEqual } from '../../utils/loose-equal';\nimport { mathMax } from '../../utils/math';\nimport { makeModelMixin } from '../../utils/model';\nimport { toInteger } from '../../utils/number';\nimport { omit, sortKeys } from '../../utils/object';\nimport { observeDom } from '../../utils/observe-dom';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { stableSort } from '../../utils/stable-sort';\nimport { idMixin, props as idProps } from '../../mixins/id';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { BLink } from '../link/link';\nimport { BNav, props as BNavProps } from '../nav/nav'; // --- Constants ---\n\nvar _makeModelMixin = makeModelMixin('value', {\n type: PROP_TYPE_NUMBER\n}),\n modelMixin = _makeModelMixin.mixin,\n modelProps = _makeModelMixin.props,\n MODEL_PROP_NAME = _makeModelMixin.prop,\n MODEL_EVENT_NAME = _makeModelMixin.event; // --- Helper methods ---\n// Filter function to filter out disabled tabs\n\n\nvar notDisabled = function notDisabled(tab) {\n return !tab.disabled;\n}; // --- Helper components ---\n// @vue/component\n\n\nvar BVTabButton = /*#__PURE__*/Vue.extend({\n name: NAME_TAB_BUTTON_HELPER,\n inject: {\n bvTabs: {\n default:\n /* istanbul ignore next */\n function _default() {\n return {};\n }\n }\n },\n props: {\n controls: makeProp(PROP_TYPE_STRING),\n id: makeProp(PROP_TYPE_STRING),\n noKeyNav: makeProp(PROP_TYPE_BOOLEAN, false),\n posInSet: makeProp(PROP_TYPE_NUMBER),\n setSize: makeProp(PROP_TYPE_NUMBER),\n // Reference to the child instance\n tab: makeProp(),\n tabIndex: makeProp(PROP_TYPE_NUMBER)\n },\n methods: {\n focus: function focus() {\n attemptFocus(this.$refs.link);\n },\n handleEvt: function handleEvt(event) {\n /* istanbul ignore next */\n if (this.tab.disabled) {\n return;\n }\n\n var type = event.type,\n keyCode = event.keyCode,\n shiftKey = event.shiftKey;\n\n if (type === 'click') {\n stopEvent(event);\n this.$emit(EVENT_NAME_CLICK, event);\n } else if (type === 'keydown' && keyCode === CODE_SPACE) {\n // For ARIA tabs the SPACE key will also trigger a click/select\n // Even with keyboard navigation disabled, SPACE should \"click\" the button\n // See: https://github.com/bootstrap-vue/bootstrap-vue/issues/4323\n stopEvent(event);\n this.$emit(EVENT_NAME_CLICK, event);\n } else if (type === 'keydown' && !this.noKeyNav) {\n // For keyboard navigation\n if ([CODE_UP, CODE_LEFT, CODE_HOME].indexOf(keyCode) !== -1) {\n stopEvent(event);\n\n if (shiftKey || keyCode === CODE_HOME) {\n this.$emit(EVENT_NAME_FIRST, event);\n } else {\n this.$emit(EVENT_NAME_PREV, event);\n }\n } else if ([CODE_DOWN, CODE_RIGHT, CODE_END].indexOf(keyCode) !== -1) {\n stopEvent(event);\n\n if (shiftKey || keyCode === CODE_END) {\n this.$emit(EVENT_NAME_LAST, event);\n } else {\n this.$emit(EVENT_NAME_NEXT, event);\n }\n }\n }\n }\n },\n render: function render(h) {\n var id = this.id,\n tabIndex = this.tabIndex,\n setSize = this.setSize,\n posInSet = this.posInSet,\n controls = this.controls,\n handleEvt = this.handleEvt;\n var _this$tab = this.tab,\n title = _this$tab.title,\n localActive = _this$tab.localActive,\n disabled = _this$tab.disabled,\n titleItemClass = _this$tab.titleItemClass,\n titleLinkClass = _this$tab.titleLinkClass,\n titleLinkAttributes = _this$tab.titleLinkAttributes;\n var $link = h(BLink, {\n staticClass: 'nav-link',\n class: [{\n active: localActive && !disabled,\n disabled: disabled\n }, titleLinkClass, // Apply `activeNavItemClass` styles when the tab is active\n localActive ? this.bvTabs.activeNavItemClass : null],\n props: {\n disabled: disabled\n },\n attrs: _objectSpread(_objectSpread({}, titleLinkAttributes), {}, {\n id: id,\n role: 'tab',\n // Roving tab index when keynav enabled\n tabindex: tabIndex,\n 'aria-selected': localActive && !disabled ? 'true' : 'false',\n 'aria-setsize': setSize,\n 'aria-posinset': posInSet,\n 'aria-controls': controls\n }),\n on: {\n click: handleEvt,\n keydown: handleEvt\n },\n ref: 'link'\n }, [this.tab.normalizeSlot(SLOT_NAME_TITLE) || title]);\n return h('li', {\n staticClass: 'nav-item',\n class: [titleItemClass],\n attrs: {\n role: 'presentation'\n }\n }, [$link]);\n }\n}); // --- Props ---\n\nvar navProps = omit(BNavProps, ['tabs', 'isNavBar', 'cardHeader']);\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, idProps), modelProps), navProps), {}, {\n // Only applied to the currently active ``\n activeNavItemClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n // Only applied to the currently active ``\n // This prop is sniffed by the `` child\n activeTabClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n card: makeProp(PROP_TYPE_BOOLEAN, false),\n contentClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n // Synonym for 'bottom'\n end: makeProp(PROP_TYPE_BOOLEAN, false),\n // This prop is sniffed by the `` child\n lazy: makeProp(PROP_TYPE_BOOLEAN, false),\n navClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n navWrapperClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n noFade: makeProp(PROP_TYPE_BOOLEAN, false),\n noKeyNav: makeProp(PROP_TYPE_BOOLEAN, false),\n noNavStyle: makeProp(PROP_TYPE_BOOLEAN, false),\n tag: makeProp(PROP_TYPE_STRING, 'div')\n})), NAME_TABS); // --- Main component ---\n// @vue/component\n\nexport var BTabs = /*#__PURE__*/Vue.extend({\n name: NAME_TABS,\n mixins: [idMixin, modelMixin, normalizeSlotMixin],\n provide: function provide() {\n return {\n bvTabs: this\n };\n },\n props: props,\n data: function data() {\n return {\n // Index of current tab\n currentTab: toInteger(this[MODEL_PROP_NAME], -1),\n // Array of direct child `` instances, in DOM order\n tabs: [],\n // Array of child instances registered (for triggering reactive updates)\n registeredTabs: []\n };\n },\n computed: {\n fade: function fade() {\n // This computed prop is sniffed by the tab child\n return !this.noFade;\n },\n localNavClass: function localNavClass() {\n var classes = [];\n\n if (this.card && this.vertical) {\n classes.push('card-header', 'h-100', 'border-bottom-0', 'rounded-0');\n }\n\n return [].concat(classes, [this.navClass]);\n }\n },\n watch: (_watch = {}, _defineProperty(_watch, MODEL_PROP_NAME, function (newValue, oldValue) {\n if (newValue !== oldValue) {\n newValue = toInteger(newValue, -1);\n oldValue = toInteger(oldValue, 0);\n var $tab = this.tabs[newValue];\n\n if ($tab && !$tab.disabled) {\n this.activateTab($tab);\n } else {\n // Try next or prev tabs\n if (newValue < oldValue) {\n this.previousTab();\n } else {\n this.nextTab();\n }\n }\n }\n }), _defineProperty(_watch, \"currentTab\", function currentTab(newValue) {\n var index = -1; // Ensure only one tab is active at most\n\n this.tabs.forEach(function ($tab, i) {\n if (i === newValue && !$tab.disabled) {\n $tab.localActive = true;\n index = i;\n } else {\n $tab.localActive = false;\n }\n }); // Update the v-model\n\n this.$emit(MODEL_EVENT_NAME, index);\n }), _defineProperty(_watch, \"tabs\", function tabs(newValue, oldValue) {\n var _this = this;\n\n // We use `_uid` instead of `safeId()`, as the later is changed in a `$nextTick()`\n // if no explicit ID is provided, causing duplicate emits\n if (!looseEqual(newValue.map(function ($tab) {\n return $tab[COMPONENT_UID_KEY];\n }), oldValue.map(function ($tab) {\n return $tab[COMPONENT_UID_KEY];\n }))) {\n // In a `$nextTick()` to ensure `currentTab` has been set first\n this.$nextTick(function () {\n // We emit shallow copies of the new and old arrays of tabs,\n // to prevent users from potentially mutating the internal arrays\n _this.$emit(EVENT_NAME_CHANGED, newValue.slice(), oldValue.slice());\n });\n }\n }), _defineProperty(_watch, \"registeredTabs\", function registeredTabs() {\n this.updateTabs();\n }), _watch),\n created: function created() {\n // Create private non-reactive props\n this.$_observer = null;\n },\n mounted: function mounted() {\n this.setObserver(true);\n },\n beforeDestroy: function beforeDestroy() {\n this.setObserver(false); // Ensure no references to child instances exist\n\n this.tabs = [];\n },\n methods: {\n registerTab: function registerTab($tab) {\n if (!arrayIncludes(this.registeredTabs, $tab)) {\n this.registeredTabs.push($tab);\n }\n },\n unregisterTab: function unregisterTab($tab) {\n this.registeredTabs = this.registeredTabs.slice().filter(function ($t) {\n return $t !== $tab;\n });\n },\n // DOM observer is needed to detect changes in order of tabs\n setObserver: function setObserver() {\n var _this2 = this;\n\n var on = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n this.$_observer && this.$_observer.disconnect();\n this.$_observer = null;\n\n if (on) {\n /* istanbul ignore next: difficult to test mutation observer in JSDOM */\n var handler = function handler() {\n _this2.$nextTick(function () {\n requestAF(function () {\n _this2.updateTabs();\n });\n });\n }; // Watch for changes to `` sub components\n\n\n this.$_observer = observeDom(this.$refs.content, handler, {\n childList: true,\n subtree: false,\n attributes: true,\n attributeFilter: ['id']\n });\n }\n },\n getTabs: function getTabs() {\n var $tabs = this.registeredTabs.filter(function ($tab) {\n return $tab.$children.filter(function ($t) {\n return $t._isTab;\n }).length === 0;\n }); // DOM Order of Tabs\n\n var order = [];\n /* istanbul ignore next: too difficult to test */\n\n if (IS_BROWSER && $tabs.length > 0) {\n // We rely on the DOM when mounted to get the \"true\" order of the `` children\n // `querySelectorAll()` always returns elements in document order, regardless of\n // order specified in the selector\n var selector = $tabs.map(function ($tab) {\n return \"#\".concat($tab.safeId());\n }).join(', ');\n order = selectAll(selector, this.$el).map(function ($el) {\n return $el.id;\n }).filter(identity);\n } // Stable sort keeps the original order if not found in the `order` array,\n // which will be an empty array before mount\n\n\n return stableSort($tabs, function (a, b) {\n return order.indexOf(a.safeId()) - order.indexOf(b.safeId());\n });\n },\n updateTabs: function updateTabs() {\n var $tabs = this.getTabs(); // Find last active non-disabled tab in current tabs\n // We trust tab state over `currentTab`, in case tabs were added/removed/re-ordered\n\n var tabIndex = $tabs.indexOf($tabs.slice().reverse().find(function ($tab) {\n return $tab.localActive && !$tab.disabled;\n })); // Else try setting to `currentTab`\n\n if (tabIndex < 0) {\n var currentTab = this.currentTab;\n\n if (currentTab >= $tabs.length) {\n // Handle last tab being removed, so find the last non-disabled tab\n tabIndex = $tabs.indexOf($tabs.slice().reverse().find(notDisabled));\n } else if ($tabs[currentTab] && !$tabs[currentTab].disabled) {\n // Current tab is not disabled\n tabIndex = currentTab;\n }\n } // Else find first non-disabled tab in current tabs\n\n\n if (tabIndex < 0) {\n tabIndex = $tabs.indexOf($tabs.find(notDisabled));\n } // Ensure only one tab is active at a time\n\n\n $tabs.forEach(function ($tab, index) {\n $tab.localActive = index === tabIndex;\n });\n this.tabs = $tabs;\n this.currentTab = tabIndex;\n },\n // Find a button that controls a tab, given the tab reference\n // Returns the button vm instance\n getButtonForTab: function getButtonForTab($tab) {\n return (this.$refs.buttons || []).find(function ($btn) {\n return $btn.tab === $tab;\n });\n },\n // Force a button to re-render its content, given a `` instance\n // Called by `` on `update()`\n updateButton: function updateButton($tab) {\n var $button = this.getButtonForTab($tab);\n\n if ($button && $button.$forceUpdate) {\n $button.$forceUpdate();\n }\n },\n // Activate a tab given a `` instance\n // Also accessed by ``\n activateTab: function activateTab($tab) {\n var currentTab = this.currentTab,\n $tabs = this.tabs;\n var result = false;\n\n if ($tab) {\n var index = $tabs.indexOf($tab);\n\n if (index !== currentTab && index > -1 && !$tab.disabled) {\n var tabEvent = new BvEvent(EVENT_NAME_ACTIVATE_TAB, {\n cancelable: true,\n vueTarget: this,\n componentId: this.safeId()\n });\n this.$emit(tabEvent.type, index, currentTab, tabEvent);\n\n if (!tabEvent.defaultPrevented) {\n this.currentTab = index;\n result = true;\n }\n }\n } // Couldn't set tab, so ensure v-model is up to date\n\n /* istanbul ignore next: should rarely happen */\n\n\n if (!result && this[MODEL_PROP_NAME] !== currentTab) {\n this.$emit(MODEL_EVENT_NAME, currentTab);\n }\n\n return result;\n },\n // Deactivate a tab given a `` instance\n // Accessed by ``\n deactivateTab: function deactivateTab($tab) {\n if ($tab) {\n // Find first non-disabled tab that isn't the one being deactivated\n // If no tabs are available, then don't deactivate current tab\n return this.activateTab(this.tabs.filter(function ($t) {\n return $t !== $tab;\n }).find(notDisabled));\n }\n /* istanbul ignore next: should never/rarely happen */\n\n\n return false;\n },\n // Focus a tab button given its `` instance\n focusButton: function focusButton($tab) {\n var _this3 = this;\n\n // Wrap in `$nextTick()` to ensure DOM has completed rendering\n this.$nextTick(function () {\n attemptFocus(_this3.getButtonForTab($tab));\n });\n },\n // Emit a click event on a specified `` component instance\n emitTabClick: function emitTabClick(tab, event) {\n if (isEvent(event) && tab && tab.$emit && !tab.disabled) {\n tab.$emit(EVENT_NAME_CLICK, event);\n }\n },\n // Click handler\n clickTab: function clickTab($tab, event) {\n this.activateTab($tab);\n this.emitTabClick($tab, event);\n },\n // Move to first non-disabled tab\n firstTab: function firstTab(focus) {\n var $tab = this.tabs.find(notDisabled);\n\n if (this.activateTab($tab) && focus) {\n this.focusButton($tab);\n this.emitTabClick($tab, focus);\n }\n },\n // Move to previous non-disabled tab\n previousTab: function previousTab(focus) {\n var currentIndex = mathMax(this.currentTab, 0);\n var $tab = this.tabs.slice(0, currentIndex).reverse().find(notDisabled);\n\n if (this.activateTab($tab) && focus) {\n this.focusButton($tab);\n this.emitTabClick($tab, focus);\n }\n },\n // Move to next non-disabled tab\n nextTab: function nextTab(focus) {\n var currentIndex = mathMax(this.currentTab, -1);\n var $tab = this.tabs.slice(currentIndex + 1).find(notDisabled);\n\n if (this.activateTab($tab) && focus) {\n this.focusButton($tab);\n this.emitTabClick($tab, focus);\n }\n },\n // Move to last non-disabled tab\n lastTab: function lastTab(focus) {\n var $tab = this.tabs.slice().reverse().find(notDisabled);\n\n if (this.activateTab($tab) && focus) {\n this.focusButton($tab);\n this.emitTabClick($tab, focus);\n }\n }\n },\n render: function render(h) {\n var _this4 = this;\n\n var align = this.align,\n card = this.card,\n end = this.end,\n fill = this.fill,\n firstTab = this.firstTab,\n justified = this.justified,\n lastTab = this.lastTab,\n nextTab = this.nextTab,\n noKeyNav = this.noKeyNav,\n noNavStyle = this.noNavStyle,\n pills = this.pills,\n previousTab = this.previousTab,\n small = this.small,\n $tabs = this.tabs,\n vertical = this.vertical; // Currently active tab\n\n var $activeTab = $tabs.find(function ($tab) {\n return $tab.localActive && !$tab.disabled;\n }); // Tab button to allow focusing when no active tab found (keynav only)\n\n var $fallbackTab = $tabs.find(function ($tab) {\n return !$tab.disabled;\n }); // For each `` found create the tab buttons\n\n var $buttons = $tabs.map(function ($tab, index) {\n var _on;\n\n var safeId = $tab.safeId; // Ensure at least one tab button is focusable when keynav enabled (if possible)\n\n var tabIndex = null;\n\n if (!noKeyNav) {\n // Buttons are not in tab index unless active, or a fallback tab\n tabIndex = -1;\n\n if ($tab === $activeTab || !$activeTab && $tab === $fallbackTab) {\n // Place tab button in tab sequence\n tabIndex = null;\n }\n }\n\n return h(BVTabButton, {\n props: {\n controls: safeId ? safeId() : null,\n id: $tab.controlledBy || (safeId ? safeId(\"_BV_tab_button_\") : null),\n noKeyNav: noKeyNav,\n posInSet: index + 1,\n setSize: $tabs.length,\n tab: $tab,\n tabIndex: tabIndex\n },\n on: (_on = {}, _defineProperty(_on, EVENT_NAME_CLICK, function (event) {\n _this4.clickTab($tab, event);\n }), _defineProperty(_on, EVENT_NAME_FIRST, firstTab), _defineProperty(_on, EVENT_NAME_PREV, previousTab), _defineProperty(_on, EVENT_NAME_NEXT, nextTab), _defineProperty(_on, EVENT_NAME_LAST, lastTab), _on),\n key: $tab[COMPONENT_UID_KEY] || index,\n ref: 'buttons',\n // Needed to make `this.$refs.buttons` an array\n refInFor: true\n });\n });\n var $nav = h(BNav, {\n class: this.localNavClass,\n attrs: {\n role: 'tablist',\n id: this.safeId('_BV_tab_controls_')\n },\n props: {\n fill: fill,\n justified: justified,\n align: align,\n tabs: !noNavStyle && !pills,\n pills: !noNavStyle && pills,\n vertical: vertical,\n small: small,\n cardHeader: card && !vertical\n },\n ref: 'nav'\n }, [this.normalizeSlot(SLOT_NAME_TABS_START) || h(), $buttons, this.normalizeSlot(SLOT_NAME_TABS_END) || h()]);\n $nav = h('div', {\n class: [{\n 'card-header': card && !vertical && !end,\n 'card-footer': card && !vertical && end,\n 'col-auto': vertical\n }, this.navWrapperClass],\n key: 'bv-tabs-nav'\n }, [$nav]);\n var $children = this.normalizeSlot() || [];\n var $empty = h();\n\n if ($children.length === 0) {\n $empty = h('div', {\n class: ['tab-pane', 'active', {\n 'card-body': card\n }],\n key: 'bv-empty-tab'\n }, this.normalizeSlot(SLOT_NAME_EMPTY));\n }\n\n var $content = h('div', {\n staticClass: 'tab-content',\n class: [{\n col: vertical\n }, this.contentClass],\n attrs: {\n id: this.safeId('_BV_tab_container_')\n },\n key: 'bv-content',\n ref: 'content'\n }, [$children, $empty]); // Render final output\n\n return h(this.tag, {\n staticClass: 'tabs',\n class: {\n row: vertical,\n 'no-gutters': vertical && card\n },\n attrs: {\n id: this.safeId()\n }\n }, [end ? $content : h(), $nav, end ? h() : $content]);\n }\n});","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.cardClosed)?_c('b-overlay',{attrs:{\"variant\":\"white\",\"show\":_vm.showLoading,\"spinner-variant\":\"primary\",\"blur\":\"0\",\"opacity\":\".75\",\"rounded\":\"sm\"}},[_c('b-card',_vm._g(_vm._b({ref:\"bCard\",style:(_vm.cardStyles),attrs:{\"no-body\":\"\",\"aria-expanded\":!_vm.content_visible ? 'true' : 'false',\"aria-controls\":_vm.parentID}},'b-card',_vm.cardAttrs,false),_vm.$listeners),[(_vm.showHeader)?_c('div',{staticClass:\"card-header\"},[_c('div',[_c('b-card-title',[_vm._v(_vm._s(_vm.$attrs.title))]),(_vm.$attrs['sub-title'])?_c('b-card-sub-title',[_vm._v(\" \"+_vm._s(_vm.$attrs['sub-title'])+\" \")]):_vm._e()],1),(_vm.showActions)?_c('b-card-actions-container',{attrs:{\"available-actions\":_vm.availableActions,\"is-collapsed\":!_vm.content_visible},on:{\"collapse\":_vm.triggerCollapse,\"refresh\":_vm.triggerRefresh,\"close\":_vm.triggerClose}}):_vm._e()],1):_vm._e(),_c('b-collapse',{staticClass:\"card-content\",attrs:{\"id\":_vm.parentID,\"visible\":_vm.content_visible},model:{value:(_vm.content_visible),callback:function ($$v) {_vm.content_visible=$$v},expression:\"content_visible\"}},[(_vm.$attrs['no-body'] !== undefined)?_vm._t(\"default\"):_c('b-card-body',[_vm._t(\"default\")],2)],2)],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue, mergeData } from '../../vue';\nimport { NAME_SPINNER } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_LABEL } from '../../constants/slots';\nimport { normalizeSlot } from '../../utils/normalize-slot';\nimport { makeProp, makePropsConfigurable } from '../../utils/props'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n label: makeProp(PROP_TYPE_STRING),\n role: makeProp(PROP_TYPE_STRING, 'status'),\n small: makeProp(PROP_TYPE_BOOLEAN, false),\n tag: makeProp(PROP_TYPE_STRING, 'span'),\n type: makeProp(PROP_TYPE_STRING, 'border'),\n variant: makeProp(PROP_TYPE_STRING)\n}, NAME_SPINNER); // --- Main component ---\n// @vue/component\n\nexport var BSpinner = /*#__PURE__*/Vue.extend({\n name: NAME_SPINNER,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var _class;\n\n var props = _ref.props,\n data = _ref.data,\n slots = _ref.slots,\n scopedSlots = _ref.scopedSlots;\n var $slots = slots();\n var $scopedSlots = scopedSlots || {};\n var $label = normalizeSlot(SLOT_NAME_LABEL, {}, $scopedSlots, $slots) || props.label;\n\n if ($label) {\n $label = h('span', {\n staticClass: 'sr-only'\n }, $label);\n }\n\n return h(props.tag, mergeData(data, {\n attrs: {\n role: $label ? props.role || 'status' : null,\n 'aria-hidden': $label ? null : 'true'\n },\n class: (_class = {}, _defineProperty(_class, \"spinner-\".concat(props.type), props.type), _defineProperty(_class, \"spinner-\".concat(props.type, \"-sm\"), props.small), _defineProperty(_class, \"text-\".concat(props.variant), props.variant), _class)\n }), [$label || h()]);\n }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../../vue';\nimport { NAME_OVERLAY } from '../../constants/components';\nimport { EVENT_NAME_CLICK, EVENT_NAME_HIDDEN, EVENT_NAME_SHOWN } from '../../constants/events';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_BOOLEAN_STRING, PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_OVERLAY } from '../../constants/slots';\nimport { toFloat } from '../../utils/number';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { BSpinner } from '../spinner/spinner';\nimport { BVTransition } from '../transition/bv-transition'; // --- Constants ---\n\nvar POSITION_COVER = {\n top: 0,\n left: 0,\n bottom: 0,\n right: 0\n}; // --- Props ---\n\nexport var props = makePropsConfigurable({\n // Alternative to variant, allowing a specific\n // CSS color to be applied to the overlay\n bgColor: makeProp(PROP_TYPE_STRING),\n blur: makeProp(PROP_TYPE_STRING, '2px'),\n fixed: makeProp(PROP_TYPE_BOOLEAN, false),\n noCenter: makeProp(PROP_TYPE_BOOLEAN, false),\n noFade: makeProp(PROP_TYPE_BOOLEAN, false),\n // If `true, does not render the default slot\n // and switches to absolute positioning\n noWrap: makeProp(PROP_TYPE_BOOLEAN, false),\n opacity: makeProp(PROP_TYPE_NUMBER_STRING, 0.85, function (value) {\n var number = toFloat(value, 0);\n return number >= 0 && number <= 1;\n }),\n overlayTag: makeProp(PROP_TYPE_STRING, 'div'),\n rounded: makeProp(PROP_TYPE_BOOLEAN_STRING, false),\n show: makeProp(PROP_TYPE_BOOLEAN, false),\n spinnerSmall: makeProp(PROP_TYPE_BOOLEAN, false),\n spinnerType: makeProp(PROP_TYPE_STRING, 'border'),\n spinnerVariant: makeProp(PROP_TYPE_STRING),\n variant: makeProp(PROP_TYPE_STRING, 'light'),\n wrapTag: makeProp(PROP_TYPE_STRING, 'div'),\n zIndex: makeProp(PROP_TYPE_NUMBER_STRING, 10)\n}, NAME_OVERLAY); // --- Main component ---\n// @vue/component\n\nexport var BOverlay = /*#__PURE__*/Vue.extend({\n name: NAME_OVERLAY,\n mixins: [normalizeSlotMixin],\n props: props,\n computed: {\n computedRounded: function computedRounded() {\n var rounded = this.rounded;\n return rounded === true || rounded === '' ? 'rounded' : !rounded ? '' : \"rounded-\".concat(rounded);\n },\n computedVariant: function computedVariant() {\n var variant = this.variant;\n return variant && !this.bgColor ? \"bg-\".concat(variant) : '';\n },\n slotScope: function slotScope() {\n return {\n spinnerType: this.spinnerType || null,\n spinnerVariant: this.spinnerVariant || null,\n spinnerSmall: this.spinnerSmall\n };\n }\n },\n methods: {\n defaultOverlayFn: function defaultOverlayFn(_ref) {\n var spinnerType = _ref.spinnerType,\n spinnerVariant = _ref.spinnerVariant,\n spinnerSmall = _ref.spinnerSmall;\n return this.$createElement(BSpinner, {\n props: {\n type: spinnerType,\n variant: spinnerVariant,\n small: spinnerSmall\n }\n });\n }\n },\n render: function render(h) {\n var _this = this;\n\n var show = this.show,\n fixed = this.fixed,\n noFade = this.noFade,\n noWrap = this.noWrap,\n slotScope = this.slotScope;\n var $overlay = h();\n\n if (show) {\n var $background = h('div', {\n staticClass: 'position-absolute',\n class: [this.computedVariant, this.computedRounded],\n style: _objectSpread(_objectSpread({}, POSITION_COVER), {}, {\n opacity: this.opacity,\n backgroundColor: this.bgColor || null,\n backdropFilter: this.blur ? \"blur(\".concat(this.blur, \")\") : null\n })\n });\n var $content = h('div', {\n staticClass: 'position-absolute',\n style: this.noCenter ?\n /* istanbul ignore next */\n _objectSpread({}, POSITION_COVER) : {\n top: '50%',\n left: '50%',\n transform: 'translateX(-50%) translateY(-50%)'\n }\n }, [this.normalizeSlot(SLOT_NAME_OVERLAY, slotScope) || this.defaultOverlayFn(slotScope)]);\n $overlay = h(this.overlayTag, {\n staticClass: 'b-overlay',\n class: {\n 'position-absolute': !noWrap || noWrap && !fixed,\n 'position-fixed': noWrap && fixed\n },\n style: _objectSpread(_objectSpread({}, POSITION_COVER), {}, {\n zIndex: this.zIndex || 10\n }),\n on: {\n click: function click(event) {\n return _this.$emit(EVENT_NAME_CLICK, event);\n }\n },\n key: 'overlay'\n }, [$background, $content]);\n } // Wrap in a fade transition\n\n\n $overlay = h(BVTransition, {\n props: {\n noFade: noFade,\n appear: true\n },\n on: {\n 'after-enter': function afterEnter() {\n return _this.$emit(EVENT_NAME_SHOWN);\n },\n 'after-leave': function afterLeave() {\n return _this.$emit(EVENT_NAME_HIDDEN);\n }\n }\n }, [$overlay]);\n\n if (noWrap) {\n return $overlay;\n }\n\n return h(this.wrapTag, {\n staticClass: 'b-overlay-wrap position-relative',\n attrs: {\n 'aria-busy': show ? 'true' : null\n }\n }, noWrap ? [$overlay] : [this.normalizeSlot(), $overlay]);\n }\n});","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"heading-elements\"},[_c('ul',{staticClass:\"list-inline mb-0\"},[(_vm.availableActions.includes('collapse'))?_c('li',[_c('a',{class:{ rotate: _vm.isCollapsed },attrs:{\"data-action\":\"collapse\"},on:{\"click\":function($event){return _vm.$emit('collapse')}}},[_c('feather-icon',{attrs:{\"icon\":\"ChevronDownIcon\",\"size\":\"16\"}})],1)]):_vm._e(),(_vm.availableActions.includes('refresh'))?_c('li',[_c('a',{attrs:{\"data-action\":\"reload\"},on:{\"click\":function($event){return _vm.$emit('refresh')}}},[_c('feather-icon',{attrs:{\"icon\":\"RotateCwIcon\",\"size\":\"14\"}})],1)]):_vm._e(),(_vm.availableActions.includes('close'))?_c('li',[_c('a',{attrs:{\"data-action\":\"close\"},on:{\"click\":function($event){return _vm.$emit('close')}}},[_c('feather-icon',{attrs:{\"icon\":\"XIcon\",\"size\":\"14\"}})],1)]):_vm._e()])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \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/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!./BCardActionsContainer.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/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!./BCardActionsContainer.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./BCardActionsContainer.vue?vue&type=template&id=7de64d6c&\"\nimport script from \"./BCardActionsContainer.vue?vue&type=script&lang=js&\"\nexport * from \"./BCardActionsContainer.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 \n {{ $attrs.title }}\n \n {{ $attrs['sub-title'] }}\n \n \n\n \n \n \n\n \n \n \n \n \n \n \n \n \n \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/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!./BCardActions.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/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!./BCardActions.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./BCardActions.vue?vue&type=template&id=623d1c43&scoped=true&\"\nimport script from \"./BCardActions.vue?vue&type=script&lang=js&\"\nexport * from \"./BCardActions.vue?vue&type=script&lang=js&\"\nimport style0 from \"./BCardActions.vue?vue&type=style&index=0&id=623d1c43&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 \"623d1c43\",\n null\n \n)\n\nexport default component.exports"],"sourceRoot":""}