{"version":3,"sources":["webpack:///./src/views/campaignproducts.vue?87ab","webpack:///src/views/campaignproducts.vue","webpack:///./src/views/campaignproducts.vue?b6f9","webpack:///./src/views/campaignproducts.vue","webpack:///./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","webpack:///./src/@core/components/toastification/ToastificationContent.vue?2bd2","webpack:///src/@core/components/toastification/ToastificationContent.vue","webpack:///./src/@core/components/toastification/ToastificationContent.vue?d65c","webpack:///./src/@core/components/toastification/ToastificationContent.vue","webpack:///./node_modules/bootstrap-vue/esm/mixins/pagination.js","webpack:///./node_modules/bootstrap-vue/esm/components/pagination/pagination.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/tfoot.js","webpack:///./node_modules/bootstrap-vue/esm/components/form-radio/form-radio.js","webpack:///./node_modules/bootstrap-vue/esm/mixins/form-radio-check-group.js","webpack:///./node_modules/bootstrap-vue/esm/mixins/form-options.js","webpack:///./node_modules/bootstrap-vue/esm/components/form-radio/form-radio-group.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-bottom-row.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-busy.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-empty.js","webpack:///./node_modules/bootstrap-vue/esm/utils/stringify-object-values.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/sanitize-row.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/stringify-record-values.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-filtering.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-pagination.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-provider.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-selectable.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-sorting.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/default-sort-compare.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-top-row.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/table.js","webpack:///./node_modules/bootstrap-vue/esm/components/media/media.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-tbody-row.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-tbody.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-caption.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/normalize-fields.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-items.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/th.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/constants.js","webpack:///./node_modules/bootstrap-vue/esm/components/media/media-aside.js","webpack:///./node_modules/bootstrap-vue/esm/components/media/media-body.js","webpack:///./node_modules/bootstrap-vue/esm/utils/css-escape.js","webpack:///./node_modules/bootstrap-vue/esm/components/layout/form-row.js","webpack:///./node_modules/bootstrap-vue/esm/components/form/form-text.js","webpack:///./node_modules/bootstrap-vue/esm/components/form/form-invalid-feedback.js","webpack:///./node_modules/bootstrap-vue/esm/components/form/form-valid-feedback.js","webpack:///./node_modules/bootstrap-vue/esm/components/form-group/form-group.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-tfoot.js","webpack:///./node_modules/bootstrap-vue/esm/utils/stable-sort.js","webpack:///./node_modules/bootstrap-vue/esm/components/form-spinbutton/form-spinbutton.js","webpack:///./node_modules/bootstrap-vue/esm/utils/locale.js","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/regenerator-runtime/runtime.js","webpack:///./node_modules/bootstrap-vue/esm/components/spinner/spinner.js","webpack:///./node_modules/bootstrap-vue/esm/components/overlay/overlay.js","webpack:///./node_modules/bootstrap-vue/esm/components/dropdown/dropdown-item.js","webpack:///./node_modules/bootstrap-vue/esm/mixins/form-custom.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/filter-event.js","webpack:///./src/@core/components/toastification/ToastificationContent.vue?1b26","webpack:///./src/views/campaignproducts.vue?eb9a","webpack:///./node_modules/bootstrap-vue/esm/components/table/thead.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-thead.js","webpack:///./node_modules/bootstrap-vue/esm/components/form-checkbox/form-checkbox.js","webpack:///./node_modules/bootstrap-vue/esm/utils/loose-index-of.js","webpack:///./node_modules/bootstrap-vue/esm/components/form-file/form-file.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/text-selection-active.js","webpack:///./node_modules/bootstrap-vue/esm/mixins/form-radio-check.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-colgroup.js","webpack:///./node_modules/bootstrap-vue/esm/components/dropdown/dropdown.js","webpack:///./node_modules/bootstrap-vue/esm/components/badge/badge.js"],"names":["render","_vm","this","_h","$createElement","_c","_self","attrs","show","staticClass","_v","groups","scopedSlots","_u","key","fn","ref","name","staticStyle","_s","model","value","callback","$$v","selectedGroup","expression","brands","selectedBrand","models","selectedModel","oeNo","partNo","on","$event","searchClick","clearClick","showUploadPanel","downloadSample","levels","changeLevel","selectedLevel","productsData","items","tableColumns","data","item","priceType","packageUnit","priceFormatted","$set","directives","rawName","modifiers","showImageClick","addCartClick","totalRecords","pageSize","changePage","pageNumber","proxy","selectedImgUrl","file","cartUpload","staticRenderFns","components","BRow","BImg","BCol","BCard","ToastificationContent","BModal","BOverlay","BFormInput","BCardHeader","BCardBody","BButton","BFormSpinbutton","vSelect","BTable","BMedia","BFormRadioGroup","BFormGroup","BAvatar","BFormFile","BLink","BBadge","BDropdown","BDropdownItem","BPagination","cleanProdcuts","pageLoad","created","init","methods","pageNo","bid","id","mid","gid","$http","coverImgUrl","cartUnit","$swal","formData","append","title","text","icon","customClass","confirmButton","confirmButtonText","buttonsStyling","window","open","component","asyncGeneratorStep","gen","resolve","reject","_next","_throw","arg","info","error","done","Promise","then","_asyncToGenerator","self","args","arguments","apply","err","undefined","variant","class","domProps","_e","$emit","hideClose","props","type","String","default","Boolean","_watch","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","_objectSpread","target","i","length","source","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","obj","configurable","writable","_makeModelMixin","defaultValue","validator","warn","modelMixin","mixin","modelProps","MODEL_PROP_NAME","prop","MODEL_EVENT_NAME","event","ELLIPSIS_THRESHOLD","DEFAULT_LIMIT","startNumber","numberOfPages","_","number","classes","limit","val","page","keyCode","immediatePropagation","currentTarget","click","align","ariaLabel","disabled","ellipsisClass","ellipsisText","firstClass","firstNumber","firstText","hideEllipsis","hideGotoEndButtons","labelFirstPage","labelLastPage","labelNextPage","labelPage","labelPrevPage","lastClass","lastNumber","lastText","nextClass","nextText","pageClass","pills","prevClass","prevText","size","paginationMixin","extend","mixins","currentPage","localNumberOfPages","localLimit","computed","btnSize","concat","alignment","styleClass","computedCurrentPage","paginationParams","showFirstDots","showLastDots","numberOfLinks","math","lastPageNumber","pageList","_this$paginationParam","pages","idx","_i","_i2","_i3","watch","newValue","oldValue","_this","$nextTick","handleKeyNav","shiftKey","isNav","propagation","focusFirst","focusPrev","focusLast","focusNext","getButtons","$el","btn","focusCurrent","_this2","find","el","_this3","_this4","reverse","_this5","buttons","index","indexOf","_this6","h","_this7","pageNumbers","map","p","_this$paginationParam2","fill","$buttons","isActivePage","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","perPage","totalRows","result","pageSizeNumberOfPages","clickEvt","cancelable","vueTarget","defaultPrevented","contains","pageNum","footVariant","BTfoot","provide","bvTableRowGroup","inject","bvTable","inheritAttrs","isTfoot","isDark","dark","isStacked","isResponsive","isStickyHeader","hasStickyHeader","stickyHeader","tableVariant","tfootClasses","tfootAttrs","bvAttrs","bvListeners","BFormRadio","bvGroup","from","computedLocalChecked","OPTIONS_OBJECT_DEPRECATED_MSG","disabledField","htmlField","options","textField","valueField","formOptionsMixin","formOptions","normalizeOptions","normalizeOption","option","get","html","$options","PASS_DOWN_ATTRS","ariaInvalid","buttonVariant","stacked","validated","formRadioCheckGroupMixin","localChecked","inline","groupName","safeId","groupClasses","isRadioGroup","$attrs","optionComponent","$inputs","computedAriaInvalid","required","bvRadioGroup","bottomRowMixin","renderBottomRow","fields","computedFields","tbodyTrClass","tbodyTrAttr","hasNormalizedSlot","columns","MODEL_PROP_NAME_BUSY","MODEL_EVENT_NAME_BUSY","busyMixin","localBusy","computedBusy","stopIfBusy","renderBusy","colspan","emptyFilteredHtml","emptyFilteredText","emptyHtml","emptyText","showEmpty","emptyMixin","renderEmpty","computedItems","$empty","isFiltered","stringifyObjectValues","sort","k","v","join","row","ignoreFields","includeFields","fieldsObj","formattedRow","reduce","field","filterByFormatted","formatter","allowedKeys","array","_toConsumableArray","arr","_arrayWithoutHoles","_iterableToArray","_unsupportedIterableToArray","_nonIterableSpread","TypeError","o","minLen","_arrayLikeToArray","n","prototype","toString","call","slice","constructor","Array","test","iter","Symbol","iterator","isArray","len","arr2","DEBOUNCE_DEPRECATED_MSG","filterDebounce","filterFunction","filterIgnoredFields","filterIncludedFields","filteringMixin","localFilter","filterSanitize","computedFilterIgnored","identity","computedFilterIncluded","computedFilterDebounce","ms","localFiltering","hasProvider","noProviderFiltering","filteredCheck","filteredItems","localItems","localFilterFn","criteria","filterFn","filterFnFactory","defaultFilterFnFactory","$_filterTimer","clearFilterTimer","deep","handler","newCriteria","timeout","setTimeout","_ref","beforeDestroy","clearTimeout","regExp","pattern","replace","RegExp","lastIndex","computedFieldsObj","localPaging","noProviderPaging","paginatedItems","sortedItems","ROOT_EVENT_NAME_REFRESHED","ROOT_ACTION_EVENT_NAME_REFRESH","apiUrl","noProviderSorting","providerMixin","providerTriggerContext","ctx","sortBy","sortDesc","localSortBy","localSortDesc","_providerUpdate","mounted","listenOnRoot","refresh","$off","$on","clearSelected","_providerSetLocal","emitOnRoot","context","e","message","_props","SELECT_MODES","noSelectOnClick","selectMode","selectable","selectedVariant","selectableMixin","selectedRows","selectedLastRow","isSelectable","hasSelectableRowClick","supportsSelectableRows","selectableHasSelection","some","selectableIsMultiSelect","selectableTableClasses","selectableTableAttrs","equal","setSelectionHandlers","_selectedRows","beforeMount","selectRow","isRowSelected","selectedLastClicked","unselectRow","selectAllRows","selectableRowClasses","selectableRowAttrs","method","selectionHandler","selected","ctrlKey","metaKey","a","b","_ref$sortBy","_ref$formatter","_ref$locale","locale","_ref$localeOptions","localeOptions","_ref$nullLast","nullLast","aa","bb","localeCompare","MODEL_PROP_NAME_SORT_BY","MODEL_EVENT_NAME_SORT_BY","MODEL_PROP_NAME_SORT_DESC","MODEL_EVENT_NAME_SORT_DESC","SORT_DIRECTION_ASC","SORT_DIRECTION_DESC","SORT_DIRECTION_LAST","SORT_DIRECTIONS","labelSortAsc","labelSortClear","labelSortDesc","noFooterSorting","noLocalSorting","noSortReset","numeric","sortingMixin","localSorting","isSortable","f","sortable","sortCompareLocale","sortNullLast","sortCompare","sortCompareOptions","usage","sortByFormatted","getFieldFormatter","handleSort","isFoot","sortChanged","toggleLocalSortDesc","sortDirection","sortKey","sortTheadThClasses","sortIconLeft","sortTheadThAttrs","ariaSort","sortTheadThLabel","labelSorting","topRowMixin","renderTopRow","noBody","rightAlign","tag","verticalAlign","functional","slots","children","$children","slotScope","$slots","$scopedSlots","$aside","right","detailsTdClass","tbodyRowMixin","getTdValues","tdValue","$parent","getThValues","thValue","getFormattedValue","toggleDetailsFactory","hasDetailsSlot","rowHovered","tbodyRowEvtStopped","emitTbodyRowEvent","rowUnhovered","renderTbodyRowCell","colIndex","rowIndex","label","isRowHeader","formatted","stickyColumn","cellTag","cellVariant","tdClass","thAttr","tdAttr","stackedHeading","unformatted","toggleDetails","detailsShowing","rowSelected","slotName","$_bodyFieldSlotNameCache","$childNodes","renderTbodyRow","striped","primaryKey","rowShowDetails","hasRowClickHandler","$listeners","$rows","detailsId","$tds","ariaRowIndex","primaryKeyValue","rowKey","rowId","selectableClasses","selectableAttrs","userTrClasses","userTrAttrs","mouseenter","mouseleave","refInFor","detailsScope","$details","userDetailsTrClasses","userDetailsTrAttrs","getCellSlotName","tbodyClass","tbodyMixin","getTbodyTrs","$refs","tbody","trs","tr","getTbodyTrIndex","tagName","hasListener","onTbodyRowKeydown","onTBodyRowClicked","shift","onTbodyRowMiddleMouseRowClicked","which","onTbodyRowContextmenu","onTbodyRowDblClicked","renderTbody","$busy","cache","defaultSlotName","lowercaseSlotName","toLowerCase","handlers","auxclick","contextmenu","dblclick","$tbody","$props","caption","captionHtml","captionMixin","captionId","renderCaption","$caption","hasCaptionSlot","origFields","sample","memo","itemsMixin","BTh","extends","FIELD_KEY_CELL_VARIANT","FIELD_KEY_ROW_VARIANT","FIELD_KEY_SHOW_DETAILS","IGNORED_FIELD_KEYS","EVENT_FILTER","BMediaAside","BMediaBody","escapeChar","firstCharCode","charCodeAt","split","char","charCode","BFormRow","textVariant","BFormText","ariaLive","forceShow","state","tooltip","BFormInvalidFeedback","BFormValidFeedback","INPUTS","INPUT_SELECTOR","LEGEND_INTERACTIVE_ELEMENTS","breakpoint","description","feedbackAriaLive","invalidFeedback","labelClass","labelFor","labelSize","labelSrOnly","validFeedback","ariaDescribedby","contentColProps","getColProps","labelAlignClasses","getAlignClasses","labelColProps","isHorizontal","updateAriaDescribedby","prefix","propValue","$input","attr","newIds","oldIds","ids","trim","onLegendClick","inputs","computedState","isFieldset","$label","labelContent","labelId","labelTag","for","$invalidFeedback","invalidFeedbackContent","invalidFeedbackId","$validFeedback","validFeedbackContent","validFeedbackId","$description","descriptionContent","descriptionId","$content","stateClass","footClone","footRowVariant","tfootClass","tfootTrClass","tfootMixin","renderTFootCustom","headVariant","renderTfoot","renderThead","stableSort","compareFn","bind","RTL_LANGS","parts","locale1","locale2","DEFAULT_MIN","DEFAULT_MAX","DEFAULT_STEP","DEFAULT_REPEAT_DELAY","DEFAULT_REPEAT_INTERVAL","DEFAULT_REPEAT_THRESHOLD","DEFAULT_REPEAT_MULTIPLIER","KEY_CODES","formatterFn","labelDecrement","labelIncrement","max","min","placeholder","readonly","repeatDelay","repeatInterval","repeatStepMultiplier","repeatThreshold","step","vertical","wrap","localValue","hasFocus","spinId","computedInline","computedReadonly","computedRequired","computedStep","computedMin","computedMax","computedDelay","delay","computedInterval","interval","computedThreshold","computedStepMultiplier","computedPrecision","computedMultiplier","valueAsFixed","toFixed","computedLocale","locales","nf","Intl","NumberFormat","resolvedOptions","computedRTL","defaultFormatter","precision","style","useGrouping","minimumIntegerDigits","minimumFractionDigits","maximumFractionDigits","notation","format","computedFormatter","computedAttrs","lang","computedSpinAttrs","hasValue","dir","_disabled","clearRepeat","_readonly","$_autoDelayTimer","$_autoRepeatTimer","$_keyIsDown","deactivated","focus","spinner","blur","emitChange","stepValue","direction","multiplier","onFocusBlur","stepUp","stepDown","onKeydown","altKey","resetTimers","handleStepRepeat","onKeyup","stepper","button","threshold","count","setInterval","onMouseup","_ref2","setMouseup","document","body","_unused","clearInterval","makeButton","IconCmp","keyRef","shortcut","btnDisabled","$icon","scale","mousedown","touchstart","$increment","$decrement","$hidden","form","$spin","sizeFormClass","keyup","PLACEMENT_TOP_START","PLACEMENT_TOP_END","PLACEMENT_BOTTOM_START","PLACEMENT_BOTTOM_END","PLACEMENT_RIGHT_START","PLACEMENT_LEFT_START","clickOutMixin","listenForClickOut","clickOutElement","clickOutEventName","_clickOutHandler","beforeCreate","isClickOut","clickOutHandler","focusInMixin","listenForFocusIn","focusInElement","_focusInHandler","focusInHandler","ROOT_EVENT_NAME_SHOWN","ROOT_EVENT_NAME_HIDDEN","SELECTOR_FORM_CHILD","SELECTOR_ITEM","selector","els","boundary","dropleft","dropright","dropup","noFlip","popperOpts","dropdownMixin","bvDropdown","bvNavbar","visible","visibleChangePrevented","inNavbar","toggler","toggle","directionClass","boundaryClass","eventName","bvEvent","menu","relatedTarget","componentId","emitEvent","focusToggler","showMenu","hideMenu","$_popper","$_hideTimeout","whileOpenListen","destroyPopper","clearHideTimeout","createPopper","focusMenu","element","getPopperConfig","destroy","updatePopper","scheduleUpdate","placement","popperConfig","flip","enabled","boundariesElement","preventOverflow","isOpen","$root","rootCloseListener","vm","hide","refocus","$once","_event","onMousedown","onEsc","onSplitClick","hideHandler","up","getItems","focusItem","runtime","exports","Op","hasOwn","hasOwnProperty","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","define","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","create","Context","_invoke","makeInvokeMethod","tryCatch","GenStateSuspendedStart","GenStateSuspendedYield","GenStateExecuting","GenStateCompleted","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","values","Gp","defineIteratorMethods","AsyncIterator","PromiseImpl","invoke","record","__await","unwrapped","previousPromise","enqueue","callInvokeWithMethodAndArg","Error","doneResult","delegate","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","resultName","next","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","iterable","iteratorMethod","isNaN","displayName","isGeneratorFunction","genFun","ctor","mark","setPrototypeOf","__proto__","awrap","async","pop","skipTempReset","prev","charAt","stop","rootEntry","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","module","regeneratorRuntime","accidentalStrictMode","Function","small","BSpinner","_class","POSITION_COVER","top","left","bottom","bgColor","fixed","noCenter","noFade","noWrap","opacity","overlayTag","rounded","spinnerSmall","spinnerType","spinnerVariant","wrapTag","zIndex","computedRounded","computedVariant","defaultOverlayFn","$overlay","$background","backgroundColor","backdropFilter","transform","appear","linkClass","closeDropdown","plain","formCustomMixin","custom","TABLE_TAG_NAMES","filterEvent","input","BThead","listeners","isThead","theadClasses","theadAttrs","getHeadSlotName","getFootSlotName","headRowVariant","theadClass","theadTrClass","theadMixin","fieldClasses","thClass","headClicked","isStackedAlways","hasHeadClickListener","noop","makeCell","labelHtml","headerTitle","sortAttrs","sortClass","sortLabel","thStyle","abbr","headerAbbr","slotNames","column","$srLabel","$cells","$trs","_objectSpread2","MODEL_PROP_NAME_INDETERMINATE","MODEL_EVENT_NAME_INDETERMINATE","BFormCheckbox","isChecked","checked","isRadio","setIndeterminate","computedLocalCheckedWatcher","indeterminate","handleChange","_ref$target","uncheckedValue","isGroup","VALUE_EMPTY_DEPRECATED_MSG","isValidValue","every","getDataTransferItemEntry","getAsEntry","webkitGetAsEntry","getAllFileEntries","dataTransferItemList","traverseDirectories","all","kind","isDirectory","getAllFileEntriesInDirectory","createReader","isFile","$path","directoryReader","path","entryPromises","readDirectoryEntries","readEntries","entries","accept","browseText","capture","directory","dropPlaceholder","fileNameFormatter","multiple","noDrop","noDropPlaceholder","noTraverse","files","dragging","dropAllowed","computedAccept","extOrType","startMatch","endMatch","rx","computedCapture","webkitdirectory","computedFileNameFormatter","defaultFileNameFormatter","clonedFiles","flattenedFiles","fileNames","allowed","filesTraversed","names","$_form","$form","isFileValid","isFilesArrayValid","setFiles","setInputFiles","dataTransfer","ClipboardEvent","clipboardData","DataTransfer","add","_unused2","handleFiles","isDrop","filteredFiles","focusHandler","onChange","_event$dataTransfer","webkitRelativePath","onDragenter","_event$dataTransfer2","dropEffect","onDragover","_event$dataTransfer3","onDragleave","onDrop","change","focusin","focusout","pointerEvents","dragenter","dragover","dragleave","drop","textSelectionActive","sel","containsNode","_methods","ariaLabelledby","formRadioCheckMixin","set","isBtnMode","isPlain","isCustom","isSwitch","switches","switch","isInline","isRequired","computedName","computedForm","computedSize","computedButtonVariant","buttonClasses","handleFocus","$button","colgroupMixin","renderColgroup","$colgroup","block","lazy","menuClass","noCaret","splitButtonType","splitClass","splitHref","splitTo","splitVariant","toggleClass","toggleTag","toggleText","dropdownClasses","menuClasses","toggleClasses","commonProps","$buttonChildren","buttonContentDomProps","$split","btnProps","to","href","$toggle","$menu","pill","link"],"mappings":"uHAAA,IAAIA,EAAS,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,UAAU,CAACE,MAAM,CAAC,GAAK,wBAAwB,CAACF,EAAG,YAAY,CAACE,MAAM,CAAC,GAAK,qBAAqB,KAAON,EAAIO,KAAK,QAAU,UAAU,QAAU,OAAO,KAAO,IAAI,QAAU,OAAO,CAACH,EAAG,MAAM,CAACA,EAAG,SAAS,CAACE,MAAM,CAAC,UAAU,KAAK,CAACF,EAAG,cAAc,CAACA,EAAG,QAAQ,CAACA,EAAG,QAAQ,CAACI,YAAY,eAAeF,MAAM,CAAC,KAAO,KAAK,GAAK,MAAM,CAACF,EAAG,QAAQ,CAACJ,EAAIS,GAAG,UAAUL,EAAG,WAAW,CAACI,YAAY,QAAQF,MAAM,CAAC,MAAQ,OAAO,SAAW,GAAG,QAAUN,EAAIU,OAAO,YAAc,uBAAuBC,YAAYX,EAAIY,GAAG,CAAC,CAACC,IAAI,kBAAkBC,GAAG,SAASC,GAC7nB,IAAIC,EAAOD,EAAIC,KACf,MAAO,CAACZ,EAAG,SAAS,CAACa,YAAY,CAAC,YAAY,OAAO,cAAc,SAAS,CAACjB,EAAIS,GAAGT,EAAIkB,GAAGF,WAAcG,MAAM,CAACC,MAAOpB,EAAiB,cAAEqB,SAAS,SAAUC,GAAMtB,EAAIuB,cAAcD,GAAKE,WAAW,oBAAoB,GAAGpB,EAAG,QAAQ,CAACI,YAAY,eAAeF,MAAM,CAAC,KAAO,KAAK,GAAK,MAAM,CAACF,EAAG,QAAQ,CAACJ,EAAIS,GAAG,WAAWL,EAAG,WAAW,CAACI,YAAY,QAAQF,MAAM,CAAC,MAAQ,OAAO,YAAc,uBAAuB,QAAUN,EAAIyB,QAAQd,YAAYX,EAAIY,GAAG,CAAC,CAACC,IAAI,kBAAkBC,GAAG,SAASC,GAC3e,IAAIC,EAAOD,EAAIC,KACf,MAAO,CAACZ,EAAG,SAAS,CAACa,YAAY,CAAC,YAAY,OAAO,cAAc,SAAS,CAACjB,EAAIS,GAAGT,EAAIkB,GAAGF,WAAcG,MAAM,CAACC,MAAOpB,EAAiB,cAAEqB,SAAS,SAAUC,GAAMtB,EAAI0B,cAAcJ,GAAKE,WAAW,oBAAoB,GAAGpB,EAAG,QAAQ,CAACI,YAAY,eAAeF,MAAM,CAAC,KAAO,KAAK,GAAK,MAAM,CAACF,EAAG,QAAQ,CAACJ,EAAIS,GAAG,WAAWL,EAAG,WAAW,CAACI,YAAY,QAAQF,MAAM,CAAC,MAAQ,OAAO,YAAc,uBAAuB,QAAUN,EAAI2B,QAAQhB,YAAYX,EAAIY,GAAG,CAAC,CAACC,IAAI,kBAAkBC,GAAG,SAASC,GAC3e,IAAIC,EAAOD,EAAIC,KACf,MAAO,CAACZ,EAAG,SAAS,CAACa,YAAY,CAAC,YAAY,OAAO,cAAc,SAAS,CAACjB,EAAIS,GAAGT,EAAIkB,GAAGF,WAAcG,MAAM,CAACC,MAAOpB,EAAiB,cAAEqB,SAAS,SAAUC,GAAMtB,EAAI4B,cAAcN,GAAKE,WAAW,oBAAoB,GAAGpB,EAAG,QAAQ,CAACI,YAAY,eAAeF,MAAM,CAAC,KAAO,KAAK,GAAK,MAAM,CAACF,EAAG,QAAQ,CAACJ,EAAIS,GAAG,WAAWL,EAAG,eAAe,CAACI,YAAY,sBAAsBF,MAAM,CAAC,YAAc,UAAUa,MAAM,CAACC,MAAOpB,EAAQ,KAAEqB,SAAS,SAAUC,GAAMtB,EAAI6B,KAAKP,GAAKE,WAAW,WAAW,GAAGpB,EAAG,QAAQ,CAACI,YAAY,eAAeF,MAAM,CAAC,KAAO,KAAK,GAAK,MAAM,CAACF,EAAG,QAAQ,CAACJ,EAAIS,GAAG,cAAcL,EAAG,eAAe,CAACI,YAAY,sBAAsBF,MAAM,CAAC,YAAc,UAAUa,MAAM,CAACC,MAAOpB,EAAU,OAAEqB,SAAS,SAAUC,GAAMtB,EAAI8B,OAAOR,GAAKE,WAAW,aAAa,GAAGpB,EAAG,QAAQ,CAACI,YAAY,eAAeF,MAAM,CAAC,KAAO,KAAK,GAAK,MAAM,CAACF,EAAG,MAAM,CAACI,YAAY,eAAe,CAACJ,EAAG,WAAW,CAACa,YAAY,CAAC,aAAa,MAAMX,MAAM,CAAC,KAAO,SAAS,QAAU,WAAWyB,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOhC,EAAIiC,YAAY,MAAM,CAAC7B,EAAG,eAAe,CAACI,YAAY,QAAQF,MAAM,CAAC,KAAO,gBAAgBF,EAAG,OAAO,CAACI,YAAY,gBAAgB,CAACR,EAAIS,GAAG,UAAU,IAAI,KAAKL,EAAG,QAAQ,CAACI,YAAY,eAAeF,MAAM,CAAC,KAAO,KAAK,GAAK,MAAM,CAACF,EAAG,MAAM,CAACI,YAAY,eAAe,CAACJ,EAAG,WAAW,CAACa,YAAY,CAAC,aAAa,OAAOX,MAAM,CAAC,KAAO,SAAS,QAAU,WAAWyB,GAAG,CAAC,MAAQ/B,EAAIkC,aAAa,CAAC9B,EAAG,OAAO,CAACI,YAAY,gBAAgB,CAACR,EAAIS,GAAG,gBAAgB,MAAM,GAAGL,EAAG,QAAQ,CAACA,EAAG,QAAQ,CAACI,YAAY,eAAeF,MAAM,CAAC,KAAO,KAAK,GAAK,MAAM,CAACF,EAAG,MAAM,CAACI,YAAY,eAAe,CAACJ,EAAG,WAAW,CAACa,YAAY,CAAC,aAAa,MAAMX,MAAM,CAAC,KAAO,SAAS,QAAU,WAAWyB,GAAG,CAAC,MAAQ,SAASC,GAAQhC,EAAImC,iBAAkB,KAAQ,CAAC/B,EAAG,eAAe,CAACI,YAAY,QAAQF,MAAM,CAAC,KAAO,gBAAgBF,EAAG,OAAO,CAACI,YAAY,gBAAgB,CAACR,EAAIS,GAAG,6BAA6B,IAAI,KAAKL,EAAG,QAAQ,CAACI,YAAY,eAAeF,MAAM,CAAC,KAAO,KAAK,GAAK,MAAM,CAACF,EAAG,MAAM,CAACI,YAAY,eAAe,CAACJ,EAAG,WAAW,CAACa,YAAY,CAAC,aAAa,MAAMX,MAAM,CAAC,KAAO,SAAS,QAAU,WAAWyB,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOhC,EAAIoC,oBAAoB,CAAChC,EAAG,eAAe,CAACI,YAAY,QAAQF,MAAM,CAAC,KAAO,kBAAkBF,EAAG,OAAO,CAACI,YAAY,gBAAgB,CAACR,EAAIS,GAAG,wBAAwB,IAAI,KAAKL,EAAG,QAAQ,CAACI,YAAY,eAAeF,MAAM,CAAC,KAAO,KAAK,GAAK,OAAOF,EAAG,QAAQ,CAACI,YAAY,eAAeF,MAAM,CAAC,KAAO,KAAK,GAAK,OAAOF,EAAG,QAAQ,CAACI,YAAY,eAAeF,MAAM,CAAC,KAAO,KAAK,GAAK,MAAM,CAACF,EAAG,MAAM,CAACI,YAAY,eAAe,CAACJ,EAAG,qBAAqB,CAACI,YAAY,sBAAsBF,MAAM,CAAC,QAAUN,EAAIqC,OAAO,KAAO,gBAAgBN,GAAG,CAAC,OAAS,SAASC,GAAQ,OAAOhC,EAAIsC,gBAAgBnB,MAAM,CAACC,MAAOpB,EAAiB,cAAEqB,SAAS,SAAUC,GAAMtB,EAAIuC,cAAcjB,GAAKE,WAAW,oBAAoB,MAAM,IAAI,IAAI,GAAGpB,EAAG,SAAS,CAACI,YAAY,OAAOF,MAAM,CAAC,UAAU,KAAK,CAACF,EAAG,UAAU,CAACW,IAAI,mBAAmBP,YAAY,oBAAoBF,MAAM,CAAC,SAAU,EAAK,UAAW,EAAK,OAAQ,EAAK,KAAON,EAAIO,KAAK,OAAQ,EAAK,MAAQP,EAAIwC,aAAaC,MAAM,WAAa,GAAG,OAASzC,EAAI0C,aAAa,cAAc,KAAK,eAAe,KAAK,aAAa,GAAG,aAAa,2BAA2B,eAAe,QAAQ/B,YAAYX,EAAIY,GAAG,CAAC,CAACC,IAAI,kBAAkBC,GAAG,SAAS6B,GAAM,MAAO,CAACvC,EAAG,MAAM,CAACI,YAAY,+CAA+C,CAACR,EAAIS,GAAG,IAAIT,EAAIkB,GAAGyB,EAAKC,KAAKC,WAAW,UAAU,CAAChC,IAAI,oBAAoBC,GAAG,SAAS6B,GAAM,MAAO,CAACvC,EAAG,MAAM,CAACI,YAAY,4CAA4C,CAACJ,EAAG,SAAS,CAACJ,EAAIS,GAAGT,EAAIkB,GAAGyB,EAAKC,KAAKE,qBAAqB,CAACjC,IAAI,uBAAuBC,GAAG,SAAS6B,GAAM,MAAO,CAACvC,EAAG,MAAM,CAACI,YAAY,4CAA4C,CAACJ,EAAG,SAAS,CAACJ,EAAIS,GAAGT,EAAIkB,GAAGyB,EAAKC,KAAKG,wBAAwB,CAAClC,IAAI,gBAAgBC,GAAG,SAAS6B,GAAM,MAAO,CAACvC,EAAG,MAAM,CAACI,YAAY,+CAA+C,CAACJ,EAAG,oBAAoB,CAACI,YAAY,QAAQF,MAAM,CAAC,KAAO,KAAK,IAAM,IAAI,IAAM,WAAW,KAAOqC,EAAKC,KAAKE,YAAY,OAAS,IAAI3B,MAAM,CAACC,MAAOuB,EAAKC,KAAa,SAAEvB,SAAS,SAAUC,GAAMtB,EAAIgD,KAAKL,EAAKC,KAAM,WAAYtB,IAAME,WAAW,yBAAyB,MAAM,CAACX,IAAI,kBAAkBC,GAAG,SAAS6B,GAAM,MAAO,CAACvC,EAAG,MAAM,CAACI,YAAY,iCAAiC,CAACJ,EAAG,WAAW,CAAC6C,WAAW,CAAC,CAACjC,KAAK,UAAUkC,QAAQ,yBAAyBC,UAAU,CAAC,gBAAe,KAAQ3C,YAAY,WAAWF,MAAM,CAAC,QAAU,WAAWyB,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOhC,EAAIoD,eAAeT,MAAS,CAACvC,EAAG,eAAe,CAACE,MAAM,CAAC,KAAO,gBAAgB,IAAI,MAAM,CAACO,IAAI,aAAaC,GAAG,SAAS6B,GAAM,MAAO,CAACvC,EAAG,MAAM,CAACI,YAAY,iCAAiC,CAACJ,EAAG,WAAW,CAACI,YAAY,WAAWF,MAAM,CAAC,QAAU,WAAWyB,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOhC,EAAIqD,aAAaV,MAAS,CAACvC,EAAG,eAAe,CAACE,MAAM,CAAC,KAAO,uBAAuB,IAAI,UAAUF,EAAG,MAAM,CAACI,YAAY,aAAa,CAACJ,EAAG,QAAQ,CAACA,EAAG,QAAQ,CAACI,YAAY,4EAA4EF,MAAM,CAAC,KAAO,KAAK,GAAK,MAAM,CAACF,EAAG,OAAO,CAACI,YAAY,cAAc,CAACR,EAAIS,GAAG,uBAAuBL,EAAG,SAAS,CAACJ,EAAIS,GAAG,IAAIT,EAAIkB,GAAGlB,EAAIwC,aAAac,qBAAqBlD,EAAG,QAAQ,CAACI,YAAY,0EAA0EF,MAAM,CAAC,KAAO,KAAK,GAAK,MAAM,CAACF,EAAG,eAAe,CAACI,YAAY,oBAAoBF,MAAM,CAAC,aAAaN,EAAIwC,aAAac,aAAa,WAAWtD,EAAIwC,aAAae,SAAS,eAAe,GAAG,cAAc,GAAG,aAAa,YAAY,aAAa,aAAaxB,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOhC,EAAIwD,WAAWxD,EAAIwC,aAAaiB,cAAc9C,YAAYX,EAAIY,GAAG,CAAC,CAACC,IAAI,YAAYC,GAAG,WAAW,MAAO,CAACV,EAAG,eAAe,CAACE,MAAM,CAAC,KAAO,kBAAkB,KAAO,UAAUoD,OAAM,GAAM,CAAC7C,IAAI,YAAYC,GAAG,WAAW,MAAO,CAACV,EAAG,eAAe,CAACE,MAAM,CAAC,KAAO,mBAAmB,KAAO,UAAUoD,OAAM,KAAQvC,MAAM,CAACC,MAAOpB,EAAIwC,aAAuB,WAAEnB,SAAS,SAAUC,GAAMtB,EAAIgD,KAAKhD,EAAIwC,aAAc,aAAclB,IAAME,WAAW,8BAA8B,IAAI,IAAI,IAAI,IAAI,GAAGpB,EAAG,UAAU,CAACE,MAAM,CAAC,GAAK,eAAe,SAAW,GAAG,MAAQ,eAAe,eAAc,IAAO,CAACF,EAAG,QAAQ,CAACE,MAAM,CAAC,IAAMN,EAAI2D,eAAe,MAAQ,GAAG,IAAM,oBAAoB,GAAGvD,EAAG,UAAU,CAACE,MAAM,CAAC,GAAK,mBAAmB,SAAW,GAAG,MAAQ,2BAA2B,eAAc,GAAMa,MAAM,CAACC,MAAOpB,EAAmB,gBAAEqB,SAAS,SAAUC,GAAMtB,EAAImC,gBAAgBb,GAAKE,WAAW,oBAAoB,CAACpB,EAAG,cAAc,CAACE,MAAM,CAAC,YAAc,sCAAsC,mBAAmB,2BAA2B,OAAS,eAAea,MAAM,CAACC,MAAOpB,EAAQ,KAAEqB,SAAS,SAAUC,GAAMtB,EAAI4D,KAAKtC,GAAKE,WAAW,UAAUpB,EAAG,MAAMA,EAAG,MAAM,CAACI,YAAY,+CAA+C,CAACJ,EAAG,MAAM,CAACI,YAAY,eAAe,CAACJ,EAAG,WAAW,CAACa,YAAY,CAAC,aAAa,MAAMX,MAAM,CAAC,KAAO,SAAS,QAAU,WAAWyB,GAAG,CAAC,MAAQ/B,EAAI6D,aAAa,CAACzD,EAAG,eAAe,CAACI,YAAY,QAAQF,MAAM,CAAC,KAAO,gBAAgBF,EAAG,OAAO,CAACI,YAAY,gBAAgB,CAACR,EAAIS,GAAG,YAAY,IAAI,MAAM,IAAI,IAAI,IACv6NqD,EAAkB,G,qXCoUtB,GACEC,WAAY,CACVC,KAAJ,OACIC,KAAJ,OACIC,KAAJ,OACIC,MAAJ,OACIC,sBAAJ,OACIC,OAAJ,OACIC,SAAJ,OACIC,WAAJ,OACIC,YAAJ,OACIC,UAAJ,OACIC,QAAJ,OACIC,gBAAJ,OACIC,QAAJ,IACIC,OAAJ,OACIC,OAAJ,OACIC,gBAAJ,OACIC,WAAJ,OACIC,QAAJ,OACIC,UAAJ,OACIC,MAAJ,OACIC,OAAJ,OACIC,UAAJ,OACIC,cAAJ,OACIC,YAAJ,QAEE5C,KA3BF,WA4BI,MAAO,CACLH,aAAc,GACdgD,cAAe,GACf9E,OAAQ,GACRa,cAAe,KACfE,OAAQ,GACRC,cAAe,KACfC,OAAQ,GACRC,cAAe,KACfE,OAAQ,GACRD,KAAM,GACNa,aAAc,CACpB,CAAQ,IAAR,SAAQ,MAAR,aAAQ,MAAR,qBACA,CAAQ,IAAR,SAAQ,MAAR,WAAQ,MAAR,qBACA,CACQ,IAAR,UACQ,MAAR,eACQ,MAAR,qBAEA,CAAQ,IAAR,SAAQ,MAAR,aAAQ,MAAR,uBACA,CAAQ,IAAR,SAAQ,MAAR,aAAQ,MAAR,wBACA,CAAQ,IAAR,QAAQ,MAAR,MAAQ,MAAR,qBACA,CAAQ,IAAR,OAAQ,MAAR,cAAQ,MAAR,iBACA,CAAQ,IAAR,cAAQ,MAAR,YAAQ,MAAR,iBACA,CACQ,IAAR,iBACQ,MAAR,eACQ,MAAR,iBAEA,CAAQ,IAAR,YAAQ,MAAR,cAAQ,MAAR,iBACA,CAAQ,IAAR,oBAAQ,MAAR,UAAQ,MAAR,kBACA,CAAQ,IAAR,YAAQ,MAAR,QAAQ,MAAR,iBACA,CAAQ,IAAR,UAAQ,MAAR,SAAQ,MAAR,qBACA,CAAQ,IAAR,OAAQ,MAAR,QAAQ,MAAR,kBAEM+C,UAAU,EACVlF,MAAM,EACNoD,eAAgB,GAChBtB,OAAQ,CACd,CAAQ,KAAR,OAAQ,MAAR,OACA,CAAQ,KAAR,IAAQ,MAAR,KACA,CAAQ,KAAR,IAAQ,MAAR,KACA,CAAQ,KAAR,IAAQ,MAAR,KACA,CAAQ,KAAR,IAAQ,MAAR,MAEME,cAAe,MACfqB,KAAM,KACNzB,iBAAiB,IAGrBuD,QA9EF,WA+EIzF,KAAK0F,QAEPC,QAAS,CACP,KADJ,WACA,+JACA,UACA,qBACA,qBACA,qBACA,UACA,YAEA,wBACA,2BACA,iBAVA,UAYA,2DACA,0BAbA,yBAgBA,2DACA,0BAjBA,yBAoBA,2DACA,0BArBA,QAuBA,UAvBA,+CAyBIpC,WA1BJ,SA0BA,GAEoB,MAAVqC,GAAkBA,EAAS,IAC7B5F,KAAKgC,YAAY4D,GACjB5F,KAAKwF,UAAW,GAGJ,GAAVI,GAAe5F,KAAKwF,WACtBxF,KAAKgC,YAAY4D,GACjB5F,KAAKwF,UAAW,IAGpBnD,YAtCJ,WAuCMrC,KAAKgC,YAAY,IAEnBA,YAzCJ,SAyCA,cACMhC,KAAKM,MAAO,EACZ,IAAN,IACA,IACA,IAEgC,MAAtBN,KAAKyB,gBACPoE,EAAM7F,KAAKyB,cAAcqE,IAGD,MAAtB9F,KAAK2B,gBACPoE,EAAM/F,KAAK2B,cAAcmE,IAGD,MAAtB9F,KAAKsB,gBACP0E,EAAMhG,KAAKsB,cAAcwE,IAG3B9F,KAAKiG,MACX,IADA,8CAEA,EAFA,oBAEA,EAFA,oBAEA,EAFA,iBAEA,UAFA,mBAEA,YAFA,kBAEA,mBAFA,qBAEA,2BAFA,sBAEA,IAEA,kBACQ,EAAR,2BACQ,EAAR,mCACA,yBACU,EAAV,oCACA,YAAY,OAAZ,6BAGQ,EAAR,WAEA,mBACQ,EAAR,QAEQ,EAAR,OACU,MAAV,QACU,KAAV,mDACU,KAAV,QACU,YAAV,CACY,cAAZ,mBAEU,kBAAV,QACU,gBAAV,QAIIhE,WAxFJ,WAyFMjC,KAAK0F,QAEPvC,eA3FJ,SA2FA,GACMnD,KAAK0D,eAAiBhB,EAAKC,KAAKuD,aAElC9C,aA9FJ,SA8FA,cACiC,IAAvBV,EAAKC,KAAKwD,SACZnG,KAAKoG,MAAM,CACT,MAAV,QACU,KAAV,sCACU,KAAV,UACU,YAAV,CACY,cAAZ,mBAEU,kBAAV,QACU,gBAAV,KAGQpG,KAAKM,MAAO,EACZN,KAAKiG,MACb,IADA,wCAEA,UAFA,wBAEA,kBAEA,kBACU,EAAV,gBACU,EAAV,QACU,EAAV,QACY,UAAZ,OACY,MAAZ,CACc,MAAd,WACc,KAAd,WACc,KAAd,eACc,QAAd,gBAIA,mBACU,EAAV,QAEU,EAAV,OACY,MAAZ,QACY,KAAZ,mDACY,KAAZ,QACY,YAAZ,CACc,cAAd,mBAEY,kBAAZ,QACY,gBAAZ,SAKIrC,WA7IJ,WA6IA,WACM,GAAkB,OAAd5D,KAAK2D,KAAT,CAcA3D,KAAKM,MAAO,EACZN,KAAKkC,iBAAkB,EACvB,IAAN,eACMmE,EAASC,OAAO,OAAQtG,KAAK2D,MAC7B3D,KAAKiG,MACX,KADA,2BACA,GACQ,QAAR,CACU,eAAV,yBAGA,kBAGQ,GAFA,EAAR,QAEA,uCACU,IAEV,EAFA,gBACA,iBAEU,IAAV,mBACY,GAAZ,yBAcU,OAZA,GACV,sGACU,EAAV,OACY,MAAZ,SACY,KAAZ,EACY,KAAZ,UACY,YAAZ,CACc,cAAd,mBAEY,kBAAZ,QACY,gBAAZ,IAKQ,EAAR,OACU,MAAV,kBACU,KAAV,eACU,KAAV,UACU,YAAV,CACY,cAAZ,mBAEU,kBAAV,aACU,gBAAV,EACU,WATV,WAUY,EAAZ,WAAc,KAAd,oBAGQ,EAAR,aAEA,mBACQ,EAAR,QACQ,QAAR,OACQ,EAAR,OACU,MAAV,QACU,KAAV,mDACU,KAAV,QACU,YAAV,CACY,cAAZ,mBAEU,kBAAV,QACU,gBAAV,IAEQ,EAAR,kBA5EQjG,KAAKoG,MAAM,CACTG,MAAO,SACPC,KAAM,6BACNC,KAAM,UACNC,YAAa,CACXC,cAAe,mBAEjBC,kBAAmB,QACnBC,gBAAgB,KAuEtB1E,eA9NJ,WA+NM2E,OAAOC,KAAK,8DAA+D,aC3nByQ,I,wBCQtVC,EAAY,eACd,EACAlH,EACA+D,GACA,EACA,KACA,KACA,MAIa,aAAAmD,E,yFCnBf,SAASC,EAAmBC,EAAKC,EAASC,EAAQC,EAAOC,EAAQ1G,EAAK2G,GACpE,IACE,IAAIC,EAAON,EAAItG,GAAK2G,GAChBpG,EAAQqG,EAAKrG,MACjB,MAAOsG,GAEP,YADAL,EAAOK,GAILD,EAAKE,KACPP,EAAQhG,GAERwG,QAAQR,QAAQhG,GAAOyG,KAAKP,EAAOC,GAIxB,SAASO,EAAkBhH,GACxC,OAAO,WACL,IAAIiH,EAAO9H,KACP+H,EAAOC,UACX,OAAO,IAAIL,SAAQ,SAAUR,EAASC,GACpC,IAAIF,EAAMrG,EAAGoH,MAAMH,EAAMC,GAEzB,SAASV,EAAMlG,GACb8F,EAAmBC,EAAKC,EAASC,EAAQC,EAAOC,EAAQ,OAAQnG,GAGlE,SAASmG,EAAOY,GACdjB,EAAmBC,EAAKC,EAASC,EAAQC,EAAOC,EAAQ,QAASY,GAGnEb,OAAMc,S,oCC/BZ,IAAIrI,EAAS,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACI,YAAY,kBAAkB,CAACJ,EAAG,MAAM,CAACI,YAAY,4BAA4B,CAACJ,EAAG,WAAW,CAACI,YAAY,sBAAsBF,MAAM,CAAC,QAAUN,EAAIqI,QAAQ,KAAO,WAAW,CAACjI,EAAG,eAAe,CAACE,MAAM,CAAC,KAAON,EAAI0G,KAAK,KAAO,SAAS,GAAGtG,EAAG,MAAM,CAACI,YAAY,sBAAsB,CAACJ,EAAG,MAAM,CAAEJ,EAAS,MAAEI,EAAG,KAAK,CAACI,YAAY,+CAA+C8H,MAAO,QAAUtI,EAAIqI,QAASE,SAAS,CAAC,YAAcvI,EAAIkB,GAAGlB,EAAIwG,UAAUxG,EAAIwI,KAAMxI,EAAQ,KAAEI,EAAG,QAAQ,CAACI,YAAY,2BAA2B+H,SAAS,CAAC,YAAcvI,EAAIkB,GAAGlB,EAAIyG,SAASzG,EAAIwI,OAAOpI,EAAG,OAAO,CAACI,YAAY,oDAAoDuB,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOhC,EAAIyI,MAAM,kBAAkB,CAAGzI,EAAI0I,UAA+E1I,EAAIwI,KAAxEpI,EAAG,eAAe,CAACI,YAAY,YAAYF,MAAM,CAAC,KAAO,YAAqB,MAAM,MACv5BwD,EAAkB,G,YC4CtB,GACEC,WAAY,CACVkB,QAAJ,QAEE0D,MAAO,CACLN,QAAS,CACPO,KAAMC,OACNC,QAAS,WAEXpC,KAAM,CACJkC,KAAMC,OACNC,QAAS,MAEXtC,MAAO,CACLoC,KAAMC,OACNC,QAAS,MAEXrC,KAAM,CACJmC,KAAMC,OACNC,QAAS,MAEXJ,UAAW,CACTE,KAAMG,QACND,SAAS,KCpE8W,I,wBCQzX7B,EAAY,eACd,EACAlH,EACA+D,GACA,EACA,KACA,WACA,MAIa,OAAAmD,E,mFCnBX+B,E,gPAEJ,SAASC,EAAQC,EAAQC,GAAkB,IAAIC,EAAOC,OAAOD,KAAKF,GAAS,GAAIG,OAAOC,sBAAuB,CAAE,IAAIC,EAAUF,OAAOC,sBAAsBJ,GAAaC,IAAgBI,EAAUA,EAAQC,QAAO,SAAUC,GAAO,OAAOJ,OAAOK,yBAAyBR,EAAQO,GAAKE,eAAgBP,EAAKQ,KAAK1B,MAAMkB,EAAMG,GAAY,OAAOH,EAE9U,SAASS,EAAcC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAI9B,UAAU+B,OAAQD,IAAK,CAAE,IAAIE,EAAyB,MAAhBhC,UAAU8B,GAAa9B,UAAU8B,GAAK,GAAQA,EAAI,EAAKd,EAAQI,OAAOY,IAAS,GAAMC,SAAQ,SAAUrJ,GAAOsJ,EAAgBL,EAAQjJ,EAAKoJ,EAAOpJ,OAAsBwI,OAAOe,0BAA6Bf,OAAOgB,iBAAiBP,EAAQT,OAAOe,0BAA0BH,IAAmBhB,EAAQI,OAAOY,IAASC,SAAQ,SAAUrJ,GAAOwI,OAAOiB,eAAeR,EAAQjJ,EAAKwI,OAAOK,yBAAyBO,EAAQpJ,OAAe,OAAOiJ,EAE7gB,SAASK,EAAgBI,EAAK1J,EAAKO,GAAiK,OAApJP,KAAO0J,EAAOlB,OAAOiB,eAAeC,EAAK1J,EAAK,CAAEO,MAAOA,EAAOuI,YAAY,EAAMa,cAAc,EAAMC,UAAU,IAAkBF,EAAI1J,GAAOO,EAAgBmJ,EAuB3M,IAAIG,EAAkB,eAAe,QAAS,CAC5C9B,KAAM,OACN+B,aAAc,KAGdC,UAAW,SAAmBxJ,GAC5B,SAAK,eAAOA,IAAU,eAAUA,EAAO,GAAK,KAC1C,OAAAyJ,EAAA,MAAK,oDAAqD,UACnD,MAMTC,EAAaJ,EAAgBK,MAC7BC,EAAaN,EAAgB/B,MAC7BsC,EAAkBP,EAAgBQ,KAClCC,EAAmBT,EAAgBU,MAInCC,EAAqB,EAErBC,EAAgB,EAGhB,EAAgB,SAAuBC,EAAaC,GACtD,OAAO,eAAYA,GAAe,SAAUC,EAAG1B,GAC7C,MAAO,CACL2B,OAAQH,EAAcxB,EACtB4B,QAAS,UAMX,EAAgB,SAAuBvK,GACzC,IAAIwK,EAAQ,eAAUxK,IAAU,EAChC,OAAOwK,EAAQ,EAAIN,EAAgBM,GAIjC,EAAsB,SAA6BC,EAAKL,GAC1D,IAAIM,EAAO,eAAUD,IAAQ,EAC7B,OAAOC,EAAON,EAAgBA,EAAgBM,EAAO,EAAI,EAAIA,GAK3D,EAAa,SAAoBV,GACnC,GAAIA,EAAMW,UAAY,OAOpB,OALA,eAAUX,EAAO,CACfY,sBAAsB,IAGxBZ,EAAMa,cAAcC,SACb,GAKA,EAAQ,eAAsB,eAASrC,EAAcA,EAAc,GAAImB,GAAa,GAAI,CACjGmB,MAAO,eAAS,OAAkB,QAClCC,UAAW,eAAS,OAAkB,cACtCC,SAAU,eAAS,QAAmB,GACtCC,cAAe,eAAS,QACxBC,aAAc,eAAS,OAAkB,KAEzCC,WAAY,eAAS,QACrBC,YAAa,eAAS,QAAmB,GACzCC,UAAW,eAAS,OAAkB,KAEtCC,aAAc,eAAS,QAAmB,GAC1CC,mBAAoB,eAAS,QAAmB,GAChDC,eAAgB,eAAS,OAAkB,oBAC3CC,cAAe,eAAS,OAAkB,mBAC1CC,cAAe,eAAS,OAAkB,mBAC1CC,UAAW,eAAS,OAA2B,cAC/CC,cAAe,eAAS,OAAkB,uBAC1CC,UAAW,eAAS,QACpBC,WAAY,eAAS,QAAmB,GACxCC,SAAU,eAAS,OAAkB,KAErCxB,MAAO,eAAS,OAAyBN,GAEzC,SAAUlK,GACR,QAAI,eAAUA,EAAO,GAAK,KACxB,OAAAyJ,EAAA,MAAK,iDAAkD,UAChD,MAKXwC,UAAW,eAAS,QACpBC,SAAU,eAAS,OAAkB,KAErCC,UAAW,eAAS,QACpBC,MAAO,eAAS,QAAmB,GACnCC,UAAW,eAAS,QACpBC,SAAU,eAAS,OAAkB,KAErCC,KAAM,eAAS,WACZ,cAGMC,EAAkB,aAAIC,OAAO,CACtCC,OAAQ,CAAChD,EAAY,QACrBnC,MAAO,EACPhG,KAAM,WAEJ,IAAIoL,EAAc,eAAU9N,KAAKgL,GAAkB,GAEnD,OADA8C,EAAcA,EAAc,EAAIA,GAAe,EACxC,CACLA,YAAaA,EACbC,mBAAoB,EACpBC,WAAY3C,IAGhB4C,SAAU,CACRC,QAAS,WACP,IAAIR,EAAO1N,KAAK0N,KAChB,OAAOA,EAAO,cAAcS,OAAOT,GAAQ,IAE7CU,UAAW,WACT,IAAIlC,EAAQlM,KAAKkM,MAEjB,MAAc,WAAVA,EACK,yBACY,QAAVA,GAA6B,UAAVA,EACrB,sBACY,SAAVA,EAGF,cAGF,IAETmC,WAAY,WACV,OAAOrO,KAAKuN,MAAQ,qBAAuB,IAE7Ce,oBAAqB,WACnB,OAAO,EAAoBtO,KAAK8N,YAAa9N,KAAK+N,qBAEpDQ,iBAAkB,WAEhB,IAAI5C,EAAQ3L,KAAKgO,WACbzC,EAAgBvL,KAAK+N,mBACrBD,EAAc9N,KAAKsO,oBACnB5B,EAAe1M,KAAK0M,aACpBF,EAAcxM,KAAKwM,YACnBU,EAAalN,KAAKkN,WAClBsB,GAAgB,EAChBC,GAAe,EACfC,EAAgB/C,EAChBL,EAAc,EAEdC,GAAiBI,EAEnB+C,EAAgBnD,EACPuC,EAAcnC,EAAQ,GAAKA,EAAQP,GACvCsB,IAAgBQ,IACnBuB,GAAe,EACfC,EAAgB/C,GAASa,EAAc,EAAI,IAG7CkC,EAAgB,OAAAC,EAAA,MAAQD,EAAe/C,IAC9BJ,EAAgBuC,EAAc,EAAInC,GAASA,EAAQP,GACvDsB,IAAgBF,IACnBgC,GAAgB,EAChBE,EAAgB/C,GAASuB,EAAa,EAAI,IAG5C5B,EAAcC,EAAgBmD,EAAgB,IAG1C/C,EAAQP,IACVsD,EAAgB/C,GAASe,EAAe,EAAI,GAC5C8B,IAAoB9B,IAAgBF,GACpCiC,IAAmB/B,IAAgBQ,IAGrC5B,EAAcwC,EAAc,OAAAa,EAAA,MAAUD,EAAgB,IAMpDpD,EAAc,GAChBA,EAAc,EACdkD,GAAgB,GACPlD,EAAcC,EAAgBmD,IACvCpD,EAAcC,EAAgBmD,EAAgB,EAC9CD,GAAe,GAGbD,GAAiBhC,GAAelB,EAAc,IAChDoD,GAAgC,EAChCpD,EAAc,EACdkD,GAAgB,GAGlB,IAAII,EAAiBtD,EAAcoD,EAAgB,EAkBnD,OAhBID,GAAgBvB,GAAc0B,EAAiBrD,EAAgB,IACjEmD,GAAiCE,IAAmBrD,EAAgB,EAAI,EAAI,EAC5EkD,GAAe,GAIb9C,GAASP,IACPoB,GAA+B,IAAhBlB,EACjBoD,EAAgB,OAAAC,EAAA,MAAQD,EAAgB,EAAGnD,EAAeI,EAAQ,GACzDuB,GAAc3B,IAAkBD,EAAcoD,EAAgB,IACvEpD,EAAc,OAAAqD,EAAA,MAAQrD,EAAc,EAAG,GACvCoD,EAAgB,OAAAC,EAAA,MAAQpD,EAAgBD,EAAc,EAAGC,EAAeI,EAAQ,KAIpF+C,EAAgB,OAAAC,EAAA,MAAQD,EAAenD,EAAgBD,EAAc,GAC9D,CACLkD,cAAeA,EACfC,aAAcA,EACdC,cAAeA,EACfpD,YAAaA,IAGjBuD,SAAU,WAER,IAAIC,EAAwB9O,KAAKuO,iBAC7BG,EAAgBI,EAAsBJ,cACtCpD,EAAcwD,EAAsBxD,YACpCwC,EAAc9N,KAAKsO,oBAEnBS,EAAQ,EAAczD,EAAaoD,GAKvC,GAAIK,EAAMhF,OAAS,EAAG,CACpB,IAAIiF,EAAMlB,EAAcxC,EAEpBI,EAAU,oBAEd,GAAY,IAARsD,EAEF,IAAK,IAAIlF,EAAI,EAAGA,EAAIiF,EAAMhF,OAAQD,IAChCiF,EAAMjF,GAAG4B,QAAUA,OAEhB,GAAIsD,IAAQD,EAAMhF,OAAS,EAEhC,IAAK,IAAIkF,EAAK,EAAGA,EAAKF,EAAMhF,OAAS,EAAGkF,IACtCF,EAAME,GAAIvD,QAAUA,MAEjB,CAEL,IAAK,IAAIwD,EAAM,EAAGA,EAAMF,EAAM,EAAGE,IAE/BH,EAAMG,GAAKxD,QAAUA,EAGvB,IAAK,IAAIyD,EAAMJ,EAAMhF,OAAS,EAAGoF,EAAMH,EAAM,EAAGG,IAE9CJ,EAAMI,GAAKzD,QAAUA,GAK3B,OAAOqD,IAGXK,OAAQrG,EAAS,GAAImB,EAAgBnB,EAAQiC,GAAiB,SAAUqE,EAAUC,GAC5ED,IAAaC,IACftP,KAAK8N,YAAc,EAAoBuB,EAAUrP,KAAK+N,wBAEtD7D,EAAgBnB,EAAQ,eAAe,SAAqBsG,EAAUC,GACpED,IAAaC,GAEftP,KAAKwI,MAAM0C,EAAkBmE,EAAW,EAAIA,EAAW,SAEvDnF,EAAgBnB,EAAQ,SAAS,SAAesG,EAAUC,GACxDD,IAAaC,IACftP,KAAKgO,WAAa,EAAcqB,OAEhCtG,GACJtD,QAAS,WACP,IAAI8J,EAAQvP,KAGZA,KAAKgO,WAAa,EAAchO,KAAK2L,OACrC3L,KAAKwP,WAAU,WAEbD,EAAMzB,YAAcyB,EAAMzB,YAAcyB,EAAMxB,mBAAqBwB,EAAMxB,mBAAqBwB,EAAMzB,gBAGxGnI,QAAS,CACP8J,aAAc,SAAsBtE,GAClC,IAAIW,EAAUX,EAAMW,QAChB4D,EAAWvE,EAAMuE,SAGjB1P,KAAK2P,QAKL7D,IAAY,QAAaA,IAAY,QACvC,eAAUX,EAAO,CACfyE,aAAa,IAEfF,EAAW1P,KAAK6P,aAAe7P,KAAK8P,aAC3BhE,IAAY,QAAcA,IAAY,SAC/C,eAAUX,EAAO,CACfyE,aAAa,IAEfF,EAAW1P,KAAK+P,YAAc/P,KAAKgQ,eAGvCC,WAAY,WAEV,OAAO,eAAU,gCAAiCjQ,KAAKkQ,KAAK3G,QAAO,SAAU4G,GAC3E,OAAO,eAAUA,OAGrBC,aAAc,WACZ,IAAIC,EAASrQ,KAGbA,KAAKwP,WAAU,WACb,IAAIW,EAAME,EAAOJ,aAAaK,MAAK,SAAUC,GAC3C,OAAO,eAAU,eAAQA,EAAI,iBAAkB,KAAOF,EAAO/B,uBAG1D,eAAa6B,IAEhBE,EAAOR,iBAIbA,WAAY,WACV,IAAIW,EAASxQ,KAGbA,KAAKwP,WAAU,WACb,IAAIW,EAAMK,EAAOP,aAAaK,MAAK,SAAUC,GAC3C,OAAQ,eAAWA,MAGrB,eAAaJ,OAGjBJ,UAAW,WACT,IAAIU,EAASzQ,KAGbA,KAAKwP,WAAU,WACb,IAAIW,EAAMM,EAAOR,aAAaS,UAAUJ,MAAK,SAAUC,GACrD,OAAQ,eAAWA,MAGrB,eAAaJ,OAGjBL,UAAW,WACT,IAAIa,EAAS3Q,KAGbA,KAAKwP,WAAU,WACb,IAAIoB,EAAUD,EAAOV,aAEjBY,EAAQD,EAAQE,QAAQ,kBAExBD,EAAQ,IAAM,eAAWD,EAAQC,EAAQ,KAC3C,eAAaD,EAAQC,EAAQ,QAInCb,UAAW,WACT,IAAIe,EAAS/Q,KAGbA,KAAKwP,WAAU,WACb,IAAIoB,EAAUG,EAAOd,aAEjBY,EAAQD,EAAQE,QAAQ,kBAExBD,EAAQD,EAAQ7G,OAAS,IAAM,eAAW6G,EAAQC,EAAQ,KAC5D,eAAaD,EAAQC,EAAQ,SAKrC/Q,OAAQ,SAAgBkR,GACtB,IAAIC,EAASjR,KAEToM,EAAWpM,KAAKoM,SAChBW,EAAY/M,KAAK+M,UACjBZ,EAAYnM,KAAKmM,UACjBwD,EAAQ3P,KAAK2P,MACbpE,EAAgBvL,KAAK+N,mBACrBD,EAAc9N,KAAKsO,oBACnB4C,EAAclR,KAAK6O,SAASsC,KAAI,SAAUC,GAC5C,OAAOA,EAAE3F,UAEP4F,EAAyBrR,KAAKuO,iBAC9BC,EAAgB6C,EAAuB7C,cACvCC,EAAe4C,EAAuB5C,aACtC6C,EAAsB,SAAftR,KAAKkM,MACZqF,EAAW,GAEXC,EAAe,SAAsBhO,GACvC,OAAOA,IAAesK,GAGpB2D,EAAgBzR,KAAK8N,YAAc,EAEnC4D,EAAa,SAAoBC,EAAQxF,EAAWyF,EAASC,EAASC,EAAUC,EAAUnR,GAC5F,IAAIoR,EAAa5F,GAAYoF,EAAaO,IAAaN,GAAiBE,EAAS,GAAKA,EAASpG,EAC3F/H,EAAamO,EAAS,EAAI,EAAIA,EAASpG,EAAgBA,EAAgBoG,EACvEM,EAAQ,CACV7F,SAAU4F,EACVnG,KAAMrI,EACNqN,MAAOrN,EAAa,GAElB0O,EAAcjB,EAAOkB,cAAcP,EAASK,IAAU,eAASJ,IAAYb,IAC3EoB,EAASpB,EAAEgB,EAAa,OAASrC,EAAQ,OAAQ,SAAU,CAC7DpP,YAAa,YACb8H,MAAO,CACL,eAAgBsH,IAAUqC,GAAcV,GAE1C5I,MAAOsJ,IAAerC,EAAQ,GAAKsB,EAAOoB,UAAUV,GACpDtR,MAAO,CACLiS,KAAM3C,EAAQ,KAAO,WACrBhH,KAAMgH,GAASqC,EAAa,KAAO,SACnCO,SAAUP,GAAcrC,EAAQ,KAAO,KACvC,aAAcxD,EACd,gBAAiB8E,EAAOuB,cAAgB,KACxC,gBAAiBR,EAAa,OAAS,MAEzClQ,GAAIkQ,EAAa,GAAK,CACpB,SAAU,SAAe7G,GACvB8F,EAAOwB,QAAQtH,EAAOwG,IAExBe,QAAS,IAEV,CAACR,IACJ,OAAOlB,EAAE,KAAM,CACbpQ,IAAKA,EACLL,YAAa,YACb8H,MAAO,CAAC,CACN+D,SAAU4F,EACV,YAAaV,EACb,SAAUA,IAAS3B,IAAUqC,GAC5BF,GACHzR,MAAO,CACLiS,KAAM3C,EAAQ,KAAO,eACrB,cAAeqC,EAAa,OAAS,OAEtC,CAACI,KAIFO,EAAe,SAAsBC,GACvC,OAAO5B,EAAE,KAAM,CACbzQ,YAAa,YACb8H,MAAO,CAAC,WAAY,oBAAqBiJ,EAAO,YAAc,GAAIL,EAAO5E,eACzEhM,MAAO,CACLiS,KAAM,aAER1R,IAAK,YAAYuN,OAAOyE,EAAS,OAAS,UACzC,CAAC5B,EAAE,OAAQ,CACZzQ,YAAa,aACZ,CAAC0Q,EAAOkB,cAAc,SAA4B,eAASlB,EAAO3E,eAAiB0E,SAIpF6B,EAAiB,SAAwBhH,EAAMmD,GACjD,IAAIxL,EAAaqI,EAAKJ,OAClBqH,EAAStB,EAAahO,KAAgBiO,EAEtCsB,EAAW3G,EAAW,KAAO0G,GAAUrB,GAAyB,IAARzC,EAAY,IAAM,KAC1E3O,EAAQ,CACViS,KAAM3C,EAAQ,KAAO,gBACrBhH,KAAMgH,GAASvD,EAAW,KAAO,SACjC,gBAAiBA,EAAW,OAAS,KACrC,gBAAiB6E,EAAOuB,cAAgB,KACxC,aAAc,eAAgBzF,GAE9BA,EAAUvJ,GAAc,GAAG2K,OAAO,eAAWpB,GAAaA,IAAcA,EAAW,KAAKoB,OAAO3K,GAC/F,eAAgBmM,EAAQ,KAAOmD,EAAS,OAAS,QACjD,eAAgBnD,GAASmD,EAAS,OAAS,KAC3C,gBAAiBnD,EAAQ,KAAOnM,EAChC,eAAgBmM,EAAQ,KAAOpE,EAE/BgH,SAAU5C,EAAQ,KAAOoD,GAEvBC,EAAa,eAAS/B,EAAOgC,SAASzP,IACtCyO,EAAQ,CACVpG,KAAMrI,EACNqN,MAAOrN,EAAa,EACpB0P,QAASF,EACTF,OAAQA,EACR1G,SAAUA,GAERgG,EAASpB,EAAE5E,EAAW,OAASuD,EAAQ,OAAQ,SAAU,CAC3DjH,MAAO0D,IAAauD,EAAQ,GAAKsB,EAAOoB,UAAU7O,GAClDjD,YAAa,YACb8H,MAAO,CACL,eAAgBsH,IAAUvD,GAAYkF,GAExCjR,MAAOA,EACPyB,GAAIsK,EAAW,GAAK,CAClB,SAAU,SAAejB,GACvB8F,EAAOwB,QAAQtH,EAAO3H,IAExBkP,QAAS,IAEV,CAACzB,EAAOkB,cAAc,OAAgBF,IAAUe,IACnD,OAAOhC,EAAE,KAAM,CACbzQ,YAAa,YACb8H,MAAO,CAAC,CACN+D,SAAUA,EACV0G,OAAQA,EACR,YAAaxB,EACb,SAAUA,IAAS3B,IAAUvD,GAC5BP,EAAKH,QAASuF,EAAO3D,WACxBjN,MAAO,CACLiS,KAAM3C,EAAQ,KAAO,gBAEvB/O,IAAK,QAAQuN,OAAO3K,IACnB,CAAC4O,KAKFe,EAAgBnC,IAEfhR,KAAKwM,aAAgBxM,KAAK2M,qBAC7BwG,EAAgBzB,EAAW,EAAG1R,KAAK4M,eAAgB,OAAsB5M,KAAKyM,UAAWzM,KAAKuM,WAAY,EAAG,0BAG/GgF,EAAS5H,KAAKwJ,GAEd5B,EAAS5H,KAAK+H,EAAW5D,EAAc,EAAG9N,KAAKgN,cAAe,OAAqBhN,KAAKyN,SAAUzN,KAAKwN,UAAW,EAAG,yBAErH+D,EAAS5H,KAAK3J,KAAKwM,aAAkC,IAAnB0E,EAAY,GAAW2B,EAAe,CACtEpH,OAAQ,GACP,GAAKuF,KAERO,EAAS5H,KAAK6E,EAAgBmE,GAAa,GAAS3B,KAEpDhR,KAAK6O,SAAS5E,SAAQ,SAAU4B,EAAMmD,GACpC,IAAIoE,EAAS5E,GAAiByC,EAAOzE,aAAkC,IAAnB0E,EAAY,GAAW,EAAI,EAC/EK,EAAS5H,KAAKkJ,EAAehH,EAAMmD,EAAMoE,OAG3C7B,EAAS5H,KAAK8E,EAAekE,GAAa,GAAQ3B,KAElDO,EAAS5H,KAAK3J,KAAKkN,YAAcgE,EAAYA,EAAYnH,OAAS,KAAOwB,EAAgBsH,EAAe,CACtGpH,OAAQF,IACN,GAAKyF,KAETO,EAAS5H,KAAK+H,EAAW5D,EAAc,EAAG9N,KAAK8M,cAAe,OAAqB9M,KAAKqN,SAAUrN,KAAKoN,UAAW7B,EAAe,yBAGjI,IAAI8H,EAAerC,IAEdhR,KAAKkN,YAAelN,KAAK2M,qBAC5B0G,EAAe3B,EAAWnG,EAAevL,KAAK6M,cAAe,OAAqB7M,KAAKmN,SAAUnN,KAAKiN,UAAW1B,EAAe,yBAGlIgG,EAAS5H,KAAK0J,GAEd,IAAIC,EAActC,EAAE,KAAM,CACxBzQ,YAAa,aACb8H,MAAO,CAAC,eAAgBrI,KAAKkO,QAASlO,KAAKoO,UAAWpO,KAAKqO,YAC3DhO,MAAO,CACLiS,KAAM3C,EAAQ,KAAO,UACrB,gBAAiBvD,EAAW,OAAS,QACrC,aAAcuD,EAAQ,KAAOxD,GAAa,MAG5CrK,GAAI6N,EAAQ,GAAK,CACf+C,QAAS1S,KAAKyP,cAEhB3O,IAAK,MACJyQ,GAEH,OAAI5B,EACKqB,EAAE,MAAO,CACd3Q,MAAO,CACL,gBAAiB+L,EAAW,OAAS,KACrC,cAAeA,EAAW,OAAS,QACnC,aAAcuD,GAAQxD,GAAoB,OAE3C,CAACmH,IAGCA,KCpnBX,SAAS,EAAQrK,EAAQC,GAAkB,IAAIC,EAAOC,OAAOD,KAAKF,GAAS,GAAIG,OAAOC,sBAAuB,CAAE,IAAIC,EAAUF,OAAOC,sBAAsBJ,GAAaC,IAAgBI,EAAUA,EAAQC,QAAO,SAAUC,GAAO,OAAOJ,OAAOK,yBAAyBR,EAAQO,GAAKE,eAAgBP,EAAKQ,KAAK1B,MAAMkB,EAAMG,GAAY,OAAOH,EAE9U,SAAS,EAAcU,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAI9B,UAAU+B,OAAQD,IAAK,CAAE,IAAIE,EAAyB,MAAhBhC,UAAU8B,GAAa9B,UAAU8B,GAAK,GAAQA,EAAI,EAAK,EAAQV,OAAOY,IAAS,GAAMC,SAAQ,SAAUrJ,GAAO,EAAgBiJ,EAAQjJ,EAAKoJ,EAAOpJ,OAAsBwI,OAAOe,0BAA6Bf,OAAOgB,iBAAiBP,EAAQT,OAAOe,0BAA0BH,IAAmB,EAAQZ,OAAOY,IAASC,SAAQ,SAAUrJ,GAAOwI,OAAOiB,eAAeR,EAAQjJ,EAAKwI,OAAOK,yBAAyBO,EAAQpJ,OAAe,OAAOiJ,EAE7gB,SAAS,EAAgBS,EAAK1J,EAAKO,GAAiK,OAApJP,KAAO0J,EAAOlB,OAAOiB,eAAeC,EAAK1J,EAAK,CAAEO,MAAOA,EAAOuI,YAAY,EAAMa,cAAc,EAAMC,UAAU,IAAkBF,EAAI1J,GAAOO,EAAgBmJ,EAe3M,IAAIiJ,EAAmB,GACnBC,EAAqB,EAGrB,EAAkB,SAAyBrS,GAC7C,OAAO,OAAAwN,EAAA,MAAQ,eAAUxN,IAAUoS,EAAkB,IAInD,EAAoB,SAA2BpS,GACjD,OAAO,OAAAwN,EAAA,MAAQ,eAAUxN,IAAUqS,EAAoB,IAI9C,EAAQ,eAAsB,eAAS,EAAc,EAAc,GAAI,GAAkB,GAAI,CACtGhB,aAAc,eAAS,QACvBiB,QAAS,eAAS,OAAyBF,GAC3CG,UAAW,eAAS,OAAyBF,MAC1C,SAGMlO,EAA2B,aAAIsI,OAAO,CAC/C7M,KAAM,QAEN8M,OAAQ,CAACF,GACTjF,MAAO,EACPuF,SAAU,CACR1C,cAAe,WACb,IAAIoI,EAAS,OAAAhF,EAAA,MAAS,EAAkB3O,KAAK0T,WAAa,EAAgB1T,KAAKyT,UAC/E,OAAOE,EAAS,EAAI,EAAIA,GAG1BC,sBAAuB,WACrB,MAAO,CACLH,QAAS,EAAgBzT,KAAKyT,SAC9BC,UAAW,EAAkB1T,KAAK0T,WAClCnI,cAAevL,KAAKuL,iBAI1B6D,MAAO,CACLwE,sBAAuB,SAA+BvE,EAAUC,GACzD,eAAkBA,KACjBD,EAASoE,UAAYnE,EAASmE,SAAWpE,EAASqE,YAAcpE,EAASoE,WAGlErE,EAAS9D,gBAAkB+D,EAAS/D,eAAiBvL,KAAK8N,YAAcuB,EAAS9D,iBAD1FvL,KAAK8N,YAAc,GAQvB9N,KAAK+N,mBAAqBsB,EAAS9D,gBAGvC9F,QAAS,WACP,IAAI8J,EAAQvP,KAGZA,KAAK+N,mBAAqB/N,KAAKuL,cAE/B,IAAIuC,EAAc,eAAU9N,KAAKgL,GAAkB,GAE/C8C,EAAc,EAChB9N,KAAK8N,YAAcA,EAEnB9N,KAAKwP,WAAU,WAGbD,EAAMzB,YAAc,MAI1BnI,QAAS,CAEP8M,QAAS,SAAiBtH,EAAO3H,GAC/B,IAAI6M,EAASrQ,KAGb,GAAIwD,IAAexD,KAAK8N,YAAxB,CAIA,IAAIjE,EAASsB,EAAMtB,OAEfgK,EAAW,IAAI,OAAQ,OAAuB,CAChDC,YAAY,EACZC,UAAW/T,KACX6J,OAAQA,IAEV7J,KAAKwI,MAAMqL,EAASlL,KAAMkL,EAAUrQ,GAEhCqQ,EAASG,mBAKbhU,KAAK8N,YAActK,EAEnBxD,KAAKwI,MAAM,OAAmBxI,KAAK8N,aAEnC9N,KAAKwP,WAAU,WACT,eAAU3F,IAAWwG,EAAOH,IAAI+D,SAASpK,GAC3C,eAAaA,GAEbwG,EAAOD,qBAIb6C,SAAU,SAAkBiB,GAC1B,OAAOA,GAIT7B,UAAW,WAET,MAAO,Q,kCCxIb,mIAASrJ,EAAQC,EAAQC,GAAkB,IAAIC,EAAOC,OAAOD,KAAKF,GAAS,GAAIG,OAAOC,sBAAuB,CAAE,IAAIC,EAAUF,OAAOC,sBAAsBJ,GAAaC,IAAgBI,EAAUA,EAAQC,QAAO,SAAUC,GAAO,OAAOJ,OAAOK,yBAAyBR,EAAQO,GAAKE,eAAgBP,EAAKQ,KAAK1B,MAAMkB,EAAMG,GAAY,OAAOH,EAE9U,SAASS,EAAcC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAI9B,UAAU+B,OAAQD,IAAK,CAAE,IAAIE,EAAyB,MAAhBhC,UAAU8B,GAAa9B,UAAU8B,GAAK,GAAQA,EAAI,EAAKd,EAAQI,OAAOY,IAAS,GAAMC,SAAQ,SAAUrJ,GAAOsJ,EAAgBL,EAAQjJ,EAAKoJ,EAAOpJ,OAAsBwI,OAAOe,0BAA6Bf,OAAOgB,iBAAiBP,EAAQT,OAAOe,0BAA0BH,IAAmBhB,EAAQI,OAAOY,IAASC,SAAQ,SAAUrJ,GAAOwI,OAAOiB,eAAeR,EAAQjJ,EAAKwI,OAAOK,yBAAyBO,EAAQpJ,OAAe,OAAOiJ,EAE7gB,SAASK,EAAgBI,EAAK1J,EAAKO,GAAiK,OAApJP,KAAO0J,EAAOlB,OAAOiB,eAAeC,EAAK1J,EAAK,CAAEO,MAAOA,EAAOuI,YAAY,EAAMa,cAAc,EAAMC,UAAU,IAAkBF,EAAI1J,GAAOO,EAAgBmJ,EAUpM,IAAI5B,EAAQ,eAAsB,CAEvCyL,YAAa,eAAS,SACrB,SAMQC,EAAsB,aAAIxG,OAAO,CAC1C7M,KAAM,QACN8M,OAAQ,CAAC,OAAY,OAAgB,QACrCwG,QAAS,WACP,MAAO,CACLC,gBAAiBtU,OAGrBuU,OAAQ,CAENC,QAAS,CACP3L,QAEA,WACE,MAAO,MAIb4L,cAAc,EACd/L,MAAOA,EACPuF,SAAU,CAERyG,QAAS,WACP,OAAO,GAGTC,OAAQ,WACN,OAAO3U,KAAKwU,QAAQI,MAGtBC,UAAW,WACT,OAAO7U,KAAKwU,QAAQK,WAGtBC,aAAc,WACZ,OAAO9U,KAAKwU,QAAQM,cAItBC,eAAgB,WACd,OAAO,GAKTC,gBAAiB,WACf,OAAQhV,KAAK6U,WAAa7U,KAAKwU,QAAQS,cAGzCC,aAAc,WACZ,OAAOlV,KAAKwU,QAAQU,cAEtBC,aAAc,WACZ,MAAO,CAACnV,KAAKmU,YAAc,SAAShG,OAAOnO,KAAKmU,aAAe,OAEjEiB,WAAY,WACV,OAAOxL,EAAcA,EAAc,GAAI5J,KAAKqV,SAAU,GAAI,CACxD/C,KAAM,eAIZxS,OAAQ,SAAgBkR,GACtB,OAAOA,EAAE,QAAS,CAChB3I,MAAOrI,KAAKmV,aACZ9U,MAAOL,KAAKoV,WAEZtT,GAAI9B,KAAKsV,aACRtV,KAAKmS,qB,4PC1FZ,SAASnJ,EAAQC,EAAQC,GAAkB,IAAIC,EAAOC,OAAOD,KAAKF,GAAS,GAAIG,OAAOC,sBAAuB,CAAE,IAAIC,EAAUF,OAAOC,sBAAsBJ,GAAaC,IAAgBI,EAAUA,EAAQC,QAAO,SAAUC,GAAO,OAAOJ,OAAOK,yBAAyBR,EAAQO,GAAKE,eAAgBP,EAAKQ,KAAK1B,MAAMkB,EAAMG,GAAY,OAAOH,EAE9U,SAASS,EAAcC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAI9B,UAAU+B,OAAQD,IAAK,CAAE,IAAIE,EAAyB,MAAhBhC,UAAU8B,GAAa9B,UAAU8B,GAAK,GAAQA,EAAI,EAAKd,EAAQI,OAAOY,IAAS,GAAMC,SAAQ,SAAUrJ,GAAOsJ,EAAgBL,EAAQjJ,EAAKoJ,EAAOpJ,OAAsBwI,OAAOe,0BAA6Bf,OAAOgB,iBAAiBP,EAAQT,OAAOe,0BAA0BH,IAAmBhB,EAAQI,OAAOY,IAASC,SAAQ,SAAUrJ,GAAOwI,OAAOiB,eAAeR,EAAQjJ,EAAKwI,OAAOK,yBAAyBO,EAAQpJ,OAAe,OAAOiJ,EAE7gB,SAASK,EAAgBI,EAAK1J,EAAKO,GAAiK,OAApJP,KAAO0J,EAAOlB,OAAOiB,eAAeC,EAAK1J,EAAK,CAAEO,MAAOA,EAAOuI,YAAY,EAAMa,cAAc,EAAMC,UAAU,IAAkBF,EAAI1J,GAAOO,EAAgBmJ,EAapM,ICjBHvB,EDiBO,EAAQ,eAAsB,eAASa,EAAcA,EAAcA,EAAcA,EAAcA,EAAc,GAAI9D,EAAA,MAAU,QAAmB,QAAsB,QAAgB,SAAkB,QAGtMyP,EAA0B,aAAI3H,OAAO,CAC9C7M,KAAM,OACN8M,OAAQ,CAAC/H,EAAA,KAAS,OAClB,OAAkB,OAAe,QACjCyO,OAAQ,CACNiB,QAAS,CACPC,KAAM,eACN5M,SAAS,IAGbH,MAAO,EACP0G,MAAO,CACLsG,qBAAsB,SAA8BrG,EAAUC,GACvD,eAAWD,EAAUC,IACxBtP,KAAKwI,MAAM,OAAkB6G,O,gDEzBjCsG,EAAgC,mFAEzB,EAAQ,eAAsB,CACvCC,cAAe,eAAS,OAAkB,YAC1CC,UAAW,eAAS,OAAkB,QACtCC,QAAS,eAAS,OAAwB,IAC1CC,UAAW,eAAS,OAAkB,QACtCC,WAAY,eAAS,OAAkB,UACtC,sBAGQC,EAAmB,aAAIrI,OAAO,CACvClF,MAAO,EACPuF,SAAU,CACRiI,YAAa,WACX,OAAOlW,KAAKmW,iBAAiBnW,KAAK8V,WAGtCnQ,QAAS,CACPyQ,gBAAiB,SAAyBC,GACxC,IAAIzV,EAAMoH,UAAU+B,OAAS,QAAsB5B,IAAjBH,UAAU,GAAmBA,UAAU,GAAK,KAG9E,GAAI,eAAcqO,GAAS,CACzB,IAAIlV,EAAQ,OAAAmV,EAAA,MAAID,EAAQrW,KAAKgW,YACzBxP,EAAO,OAAA8P,EAAA,MAAID,EAAQrW,KAAK+V,WAC5B,MAAO,CACL5U,MAAO,eAAYA,GAASP,GAAO4F,EAAOrF,EAC1CqF,KAAM,eAAUoC,OAAO,eAAYpC,GAAQ5F,EAAM4F,IACjD+P,KAAM,OAAAD,EAAA,MAAID,EAAQrW,KAAK6V,WACvBzJ,SAAUtD,QAAQ,OAAAwN,EAAA,MAAID,EAAQrW,KAAK4V,iBAKvC,MAAO,CACLzU,MAAOP,GAAOyV,EACd7P,KAAM,eAAUoC,OAAOyN,IACvBjK,UAAU,IAGd+J,iBAAkB,SAA0BL,GAC1C,IAAIvG,EAAQvP,KAGZ,OAAI,eAAQ8V,GACHA,EAAQ3E,KAAI,SAAUkF,GAC3B,OAAO9G,EAAM6G,gBAAgBC,MAEtB,eAAcP,IAEvB,OAAAlL,EAAA,MAAK+K,EAA+B3V,KAAKwW,SAASzV,MAE3C,eAAK+U,GAAS3E,KAAI,SAAUvQ,GACjC,OAAO2O,EAAM6G,gBAAgBN,EAAQlV,IAAQ,GAAIA,OAO9C,O,YDpEb,SAAS,EAAQqI,EAAQC,GAAkB,IAAIC,EAAOC,OAAOD,KAAKF,GAAS,GAAIG,OAAOC,sBAAuB,CAAE,IAAIC,EAAUF,OAAOC,sBAAsBJ,GAAaC,IAAgBI,EAAUA,EAAQC,QAAO,SAAUC,GAAO,OAAOJ,OAAOK,yBAAyBR,EAAQO,GAAKE,eAAgBP,EAAKQ,KAAK1B,MAAMkB,EAAMG,GAAY,OAAOH,EAE9U,SAAS,EAAcU,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAI9B,UAAU+B,OAAQD,IAAK,CAAE,IAAIE,EAAyB,MAAhBhC,UAAU8B,GAAa9B,UAAU8B,GAAK,GAAQA,EAAI,EAAK,EAAQV,OAAOY,IAAS,GAAMC,SAAQ,SAAUrJ,GAAO,EAAgBiJ,EAAQjJ,EAAKoJ,EAAOpJ,OAAsBwI,OAAOe,0BAA6Bf,OAAOgB,iBAAiBP,EAAQT,OAAOe,0BAA0BH,IAAmB,EAAQZ,OAAOY,IAASC,SAAQ,SAAUrJ,GAAOwI,OAAOiB,eAAeR,EAAQjJ,EAAKwI,OAAOK,yBAAyBO,EAAQpJ,OAAe,OAAOiJ,EAE7gB,SAAS,EAAgBS,EAAK1J,EAAKO,GAAiK,OAApJP,KAAO0J,EAAOlB,OAAOiB,eAAeC,EAAK1J,EAAK,CAAEO,MAAOA,EAAOuI,YAAY,EAAMa,cAAc,EAAMC,UAAU,IAAkBF,EAAI1J,GAAOO,EAAgBmJ,EAqB3M,IAAImM,EAAkB,CAAC,mBAAoB,mBAEvChM,EAAkB,eAAe,WACjCI,EAAaJ,EAAgBK,MAC7BC,EAAaN,EAAgB/B,MAC7BsC,EAAkBP,EAAgBQ,KAClCC,EAAmBT,EAAgBU,MAI5B,EAAQ,eAAsB,eAAS,EAAc,EAAc,EAAc,EAAc,EAAc,EAAc,EAAc,EAAc,GAAIrF,EAAA,MAAUiF,GAAa,QAAmB,GAAmB,QAAgB,QAAiB,QAAkB,GAAI,CACxR2L,YAAa,eAAS,QAA0B,GAEhDC,cAAe,eAAS,QAExB/F,QAAS,eAAS,QAAmB,GACrCgG,QAAS,eAAS,QAAmB,GACrCC,UAAW,eAAS,QAAmB,MACpC,wBAGMC,EAA2B,aAAIlJ,OAAO,CAC/CC,OAAQ,CAAC/H,EAAA,KAAS+E,EAAY,OAAoB,OAAkBoL,EAAkB,OAAe,OAAgB,QACrHxB,cAAc,EACd/L,MAAO,EACPhG,KAAM,WACJ,MAAO,CACLqU,aAAc/W,KAAKgL,KAGvBiD,SAAU,CACR+I,OAAQ,WACN,OAAQhX,KAAK4W,SAEfK,UAAW,WAGT,OAAOjX,KAAKe,MAAQf,KAAKkX,UAE3BC,aAAc,WACZ,IAAIH,EAAShX,KAAKgX,OACdtJ,EAAO1N,KAAK0N,KACZmJ,EAAY7W,KAAK6W,UACjBnL,EAAU,CACZ,gBAAiBmL,GAUnB,OAPI7W,KAAK4Q,UACPlF,EAAU,CAACA,EAAS,mBAAoB,EAAgB,CACtD,YAAasL,EACb,sBAAuBA,GACtB,aAAa7I,OAAOT,GAAOA,KAGzBhC,IAGX0D,OAAQrG,EAAS,GAAI,EAAgBA,EAAQiC,GAAiB,SAAUqE,GACjE,eAAWA,EAAUrP,KAAK+W,gBAC7B/W,KAAK+W,aAAe1H,MAEpB,EAAgBtG,EAAQ,gBAAgB,SAAsBsG,EAAUC,GACrE,eAAWD,EAAUC,IACxBtP,KAAKwI,MAAM0C,EAAkBmE,MAE7BtG,GACJjJ,OAAQ,SAAgBkR,GACtB,IAAIzB,EAAQvP,KAERoX,EAAepX,KAAKoX,aACpB/W,EAAQ,eAAKL,KAAKqX,OAAQZ,GAC1Ba,EAAkBF,EAAe7B,EAAa,OAC9CgC,EAAUvX,KAAKkW,YAAY/E,KAAI,SAAUkF,EAAQxF,GACnD,IAAIjQ,EAAM,aAAauN,OAAO0C,GAC9B,OAAOG,EAAEsG,EAAiB,CACxB5O,MAAO,CAEL0D,SAAUiK,EAAOjK,WAAY,EAC7BtG,GAAIyJ,EAAM2H,OAAOtW,GACjBO,MAAOkV,EAAOlV,OAMhBd,MAAOA,EACPO,IAAKA,GACJ,CAACoQ,EAAE,OAAQ,CACZ1I,SAAU,OAAAiO,EAAA,MAAWF,EAAOE,KAAMF,EAAO7P,aAG7C,OAAOwK,EAAE,MAAO,CACd3I,MAAO,CAACrI,KAAKmX,aAAc,oBAC3B9W,MAAO,EAAc,EAAc,GAAI,eAAKL,KAAKqX,OAAQZ,IAAmB,GAAI,CAC9E,eAAgBzW,KAAKwX,oBACrB,gBAAiBxX,KAAKyX,SAAW,OAAS,KAC1C3R,GAAI9F,KAAKkX,SACT5E,KAAM8E,EAAe,aAAe,QAEpC7E,SAAU,QAEX,CAACvS,KAAKmS,cAAc,QAAkBoF,EAASvX,KAAKmS,qBE3HhD,EAAQ,eAAsB,EAA0B,QAGxDrN,EAA+B,aAAI8I,OAAO,CACnD7M,KAAM,OACN8M,OAAQ,CAACiJ,GACTzC,QAAS,WACP,MAAO,CACLqD,aAAc1X,OAGlB0I,MAAO,EACPuF,SAAU,CACRmJ,aAAc,WACZ,OAAO,O,+MCdF,EAAQ,GAGRO,EAAiB,aAAI/J,OAAO,CACrClF,MAAO,EACP/C,QAAS,CACPiS,gBAAiB,WACf,IAAIC,EAAS7X,KAAK8X,eACdlB,EAAU5W,KAAK4W,QACfmB,EAAe/X,KAAK+X,aACpBC,EAAchY,KAAKgY,YACnBhH,EAAIhR,KAAKE,eAGb,OAAKF,KAAKiY,kBAAkB,UAAqC,IAAZrB,GAAgC,KAAZA,EAIlE5F,EAAE,OAAK,CACZzQ,YAAa,qBACb8H,MAAO,CAAC,eAAW0P,GAEnBA,EAAa,KAAM,cAAgBA,GACnC1X,MAAO,eAAW2X,GAElBA,EAAY,KAAM,cAAgBA,EAClCpX,IAAK,gBACJZ,KAAKmS,cAAc,OAAsB,CAC1C+F,QAASL,EAAO9N,OAChB8N,OAAQA,KAdD7G,Q,gDCpBf,SAAS9G,EAAgBI,EAAK1J,EAAKO,GAAiK,OAApJP,KAAO0J,EAAOlB,OAAOiB,eAAeC,EAAK1J,EAAK,CAAEO,MAAOA,EAAOuI,YAAY,EAAMa,cAAc,EAAMC,UAAU,IAAkBF,EAAI1J,GAAOO,EAAgBmJ,EAY3M,IAAI6N,EAAuB,OACvBC,EAAwB,QAA0BD,EAE3C,EAAQjO,EAAgB,GAAIiO,EAAsB,eAAS,QAAmB,IAG9EE,EAAY,aAAIzK,OAAO,CAChClF,MAAO,EACPhG,KAAM,WACJ,MAAO,CACL4V,WAAW,IAGfrK,SAAU,CACRsK,aAAc,WACZ,OAAOvY,KAAKmY,IAAyBnY,KAAKsY,YAG9ClJ,MAAO,CACLkJ,UAAW,SAAmBjJ,EAAUC,GAClCD,IAAaC,GACftP,KAAKwI,MAAM4P,EAAuB/I,KAIxC1J,QAAS,CAEP6S,WAAY,SAAoBrN,GAE9B,QAAInL,KAAKuY,eACP,eAAUpN,IACH,IAMXsN,WAAY,WACV,IAAIV,EAAe/X,KAAK+X,aACpBC,EAAchY,KAAKgY,YACnBhH,EAAIhR,KAAKE,eAEb,OAAIF,KAAKuY,cAAgBvY,KAAKiY,kBAAkB,QACvCjH,EAAE,OAAK,CACZzQ,YAAa,oBACb8H,MAAO,CAAC,eAAW0P,GAEnBA,EAAa,KAAM,QAAwBA,GAC3C1X,MAAO,eAAW2X,GAElBA,EAAY,KAAM,QAAwBA,EAC1CpX,IAAK,mBACJ,CAACoQ,EAAE,OAAK,CACTtI,MAAO,CACLgQ,QAAS1Y,KAAK8X,eAAe/N,QAAU,OAExC,CAAC/J,KAAKmS,cAAc,YAKlB,S,oCChEF,EAAQ,CACjBwG,kBAAmB,eAAS,QAC5BC,kBAAmB,eAAS,OAAkB,8CAC9CC,UAAW,eAAS,QACpBC,UAAW,eAAS,OAAkB,gCACtCC,UAAW,eAAS,QAAmB,IAI9BC,EAAa,aAAIpL,OAAO,CACjClF,MAAO,EACP/C,QAAS,CACPsT,YAAa,WACX,IAAIzW,EAAQxC,KAAKkZ,cACblI,EAAIhR,KAAKE,eACTiZ,EAASnI,IAEb,GAAIhR,KAAK+Y,aAAevW,GAA0B,IAAjBA,EAAMuH,WAAmB/J,KAAKuY,eAAgBvY,KAAKiY,kBAAkB,SAAwB,CAC5H,IAAIJ,EAAS7X,KAAK8X,eACdsB,EAAapZ,KAAKoZ,WAClBN,EAAY9Y,KAAK8Y,UACjBD,EAAY7Y,KAAK6Y,UACjBD,EAAoB5Y,KAAK4Y,kBACzBD,EAAoB3Y,KAAK2Y,kBACzBZ,EAAe/X,KAAK+X,aACpBC,EAAchY,KAAKgY,YACvBmB,EAASnZ,KAAKmS,cAAciH,EAAa,OAA0B,OAAiB,CAClFT,kBAAmBA,EACnBC,kBAAmBA,EACnBC,UAAWA,EACXC,UAAWA,EACXjB,OAAQA,EAERrV,MAAOA,IAGJ2W,IACHA,EAASnI,EAAE,MAAO,CAChB3I,MAAO,CAAC,cAAe,QACvBC,SAAU8Q,EAAa,OAAA7C,EAAA,MAAWoC,EAAmBC,GAAqB,OAAArC,EAAA,MAAWsC,EAAWC,MAIpGK,EAASnI,EAAE,OAAK,CACdtI,MAAO,CACLgQ,QAASb,EAAO9N,QAAU,OAE3B,CAACiH,EAAE,MAAO,CACX3Q,MAAO,CACLiS,KAAM,QACN,YAAa,WAEd,CAAC6G,MACJA,EAASnI,EAAE,OAAK,CACdzQ,YAAa,oBACb8H,MAAO,CAAC,eAAW0P,GAEnBA,EAAa,KAAM,aAAeA,GAClC1X,MAAO,eAAW2X,GAElBA,EAAY,KAAM,aAAeA,EACjCpX,IAAKwY,EAAa,uBAAyB,eAC1C,CAACD,IAGN,OAAOA,M,gGC3DF,EAAwB,SAASE,EAAsBlY,GAChE,OAAI,eAAkBA,GACb,GAKL,eAASA,KAAW,eAAOA,GACtB,eAAKA,GAAOmY,OAClBnI,KAAI,SAAUoI,GACb,OAAOF,EAAsBlY,EAAMoY,OAClChQ,QAAO,SAAUiQ,GAClB,QAASA,KAEVC,KAAK,KAGD,eAAStY,I,YC3BP,EAAc,SAAqBuY,EAAKC,EAAcC,GAC/D,IAAIC,EAAY7R,UAAU+B,OAAS,QAAsB5B,IAAjBH,UAAU,GAAmBA,UAAU,GAAK,GAIhF8R,EAAe,eAAKD,GAAWE,QAAO,SAAUpG,EAAQ/S,GAC1D,IAAIoZ,EAAQH,EAAUjZ,GAClBqZ,EAAoBD,EAAMC,kBAC1BC,EAAY,eAAWD,GAE3BA,EAAoBA,EAEpBD,EAAME,UAAY,KAMlB,OAJI,eAAWA,KACbvG,EAAO/S,GAAOsZ,EAAUR,EAAI9Y,GAAMA,EAAK8Y,IAGlC/F,IACN,eAAM+F,IAKLS,EAAc,eAAKL,GAAcvQ,QAAO,SAAU3I,GACpD,OAAQ,OAAmBA,MAAU,eAAQ+Y,IAAiBA,EAAa5P,OAAS,GAAK,OAAAqQ,EAAA,MAAcT,EAAc/Y,OAAW,eAAQgZ,IAAkBA,EAAc7P,OAAS,IAAM,OAAAqQ,EAAA,MAAcR,EAAehZ,OAEtN,OAAO,eAAKkZ,EAAcK,IC3BjB,EAAwB,SAA+BT,EAAKC,EAAcC,EAAeC,GAClG,OAAO,eAASH,GAAO,EAAsB,EAAYA,EAAKC,EAAcC,EAAeC,IAE3F,ICRF,SAASQ,EAAmBC,GAAO,OAAOC,EAAmBD,IAAQE,EAAiBF,IAAQG,EAA4BH,IAAQI,IAElI,SAASA,IAAuB,MAAM,IAAIC,UAAU,wIAEpD,SAASF,EAA4BG,EAAGC,GAAU,GAAKD,EAAL,CAAgB,GAAiB,kBAANA,EAAgB,OAAOE,EAAkBF,EAAGC,GAAS,IAAIE,EAAI3R,OAAO4R,UAAUC,SAASC,KAAKN,GAAGO,MAAM,GAAI,GAAiE,MAAnD,WAANJ,GAAkBH,EAAEQ,cAAaL,EAAIH,EAAEQ,YAAYra,MAAgB,QAANga,GAAqB,QAANA,EAAoBM,MAAM5F,KAAKmF,GAAc,cAANG,GAAqB,2CAA2CO,KAAKP,GAAWD,EAAkBF,EAAGC,QAAzG,GAE7S,SAASL,EAAiBe,GAAQ,GAAsB,qBAAXC,QAA0BA,OAAOC,YAAYrS,OAAOmS,GAAO,OAAOF,MAAM5F,KAAK8F,GAE1H,SAAShB,EAAmBD,GAAO,GAAIe,MAAMK,QAAQpB,GAAM,OAAOQ,EAAkBR,GAEpF,SAASQ,EAAkBR,EAAKqB,IAAkB,MAAPA,GAAeA,EAAMrB,EAAIvQ,UAAQ4R,EAAMrB,EAAIvQ,QAAQ,IAAK,IAAID,EAAI,EAAG8R,EAAO,IAAIP,MAAMM,GAAM7R,EAAI6R,EAAK7R,IAAO8R,EAAK9R,GAAKwQ,EAAIxQ,GAAM,OAAO8R,EAkBhL,IAAIC,EAA0B,8FAEnB,EAAQ,CACjBtS,OAAQ,eAAS,GAAG4E,OAAOkM,EAAmB,QAAgC,CAAC,UAC/EyB,eAAgB,eAAS,OAAyB,GAAG,SAAU3a,GAC7D,OAAO,OAAUma,KAAK1S,OAAOzH,OAE/B4a,eAAgB,eAAS,QACzBC,oBAAqB,eAAS,OAAiB,IAC/CC,qBAAsB,eAAS,OAAiB,KAIvCC,EAAiB,aAAItO,OAAO,CACrClF,MAAO,EACPhG,KAAM,WACJ,MAAO,CAEL0W,YAAY,EAGZ+C,YAAanc,KAAKoc,eAAepc,KAAKuJ,UAG1C0E,SAAU,CACRoO,sBAAuB,WACrB,OAAO,eAAOrc,KAAKgc,qBAAuB,IAAIzS,OAAO+S,EAAA,OAEvDC,uBAAwB,WACtB,OAAO,eAAOvc,KAAKic,sBAAwB,IAAI1S,OAAO+S,EAAA,OAExDE,uBAAwB,WACtB,IAAIC,EAAK,eAAUzc,KAAK8b,eAAgB,GAOxC,OAJIW,EAAK,GACP,OAAA7R,EAAA,MAAKiR,EAAyB,SAGzBY,GAETC,eAAgB,WACd,OAAO1c,KAAK2c,eAAgB3c,KAAK4c,qBAGnCC,cAAe,WACb,IAAIC,EAAgB9c,KAAK8c,cACrBC,EAAa/c,KAAK+c,WAClBZ,EAAcnc,KAAKmc,YACvB,MAAO,CACLW,cAAeA,EACfC,WAAYA,EACZZ,YAAaA,IAIjBa,cAAe,WAEb,IAAIjB,EAAiB/b,KAAK+b,eAC1B,OAAO,eAAgBA,GAAkBA,EAAiB,MAI5De,cAAe,WAEb,IAAIta,EAAQxC,KAAK+c,WACbE,EAAWjd,KAAKmc,YAIhBe,EAAWld,KAAK0c,eAAiB1c,KAAKmd,gBAAgBnd,KAAKgd,cAAeC,IAAajd,KAAKod,uBAAuBH,GAAY,KAEnI,OAAOC,GAAY1a,EAAMuH,OAAS,EAAIvH,EAAM+G,OAAO2T,GAAY1a,IAGnE4M,MAAO,CAELoN,uBAAwB,SAAgCnN,IACjDA,GAAYrP,KAAKqd,gBACpBrd,KAAKsd,mBACLtd,KAAKmc,YAAcnc,KAAKoc,eAAepc,KAAKuJ,UAIhDA,OAAQ,CAGNgU,MAAM,EACNC,QAAS,SAAiBC,GACxB,IAAIlO,EAAQvP,KAER0d,EAAU1d,KAAKwc,uBACnBxc,KAAKsd,mBAEDI,GAAWA,EAAU,EAEvB1d,KAAKqd,cAAgBM,YAAW,WAC9BpO,EAAM4M,YAAc5M,EAAM6M,eAAeqB,KACxCC,GAGH1d,KAAKmc,YAAcnc,KAAKoc,eAAeqB,KAM7CZ,cAAe,SAAuBe,GACpC,IAAId,EAAgBc,EAAKd,cACrBX,EAAcyB,EAAKzB,YAEnB/C,GAAa,EAEZ+C,EAGM,eAAWA,EAAa,KAAO,eAAWA,EAAa,IAEhE/C,GAAa,EACJ+C,IAET/C,GAAa,GANbA,GAAa,EASXA,GACFpZ,KAAKwI,MAAM,OAAqBsU,EAAeA,EAAc/S,QAG/D/J,KAAKoZ,WAAaA,GAEpBA,WAAY,SAAoB/J,EAAUC,GACxC,IAAiB,IAAbD,IAAmC,IAAbC,EAAmB,CAG3C,IAAIyN,EAAa/c,KAAK+c,WACtB/c,KAAKwI,MAAM,OAAqBuU,EAAYA,EAAWhT,WAI7DtE,QAAS,WACP,IAAI4K,EAASrQ,KAGbA,KAAKqd,cAAgB,KAMrBrd,KAAKwP,WAAU,WACba,EAAO+I,WAAatQ,QAAQuH,EAAO8L,iBAGvC0B,cAAe,WACb7d,KAAKsd,oBAEP3X,QAAS,CACP2X,iBAAkB,WAChBQ,aAAa9d,KAAKqd,eAClBrd,KAAKqd,cAAgB,MAEvBjB,eAAgB,SAAwBa,GAEtC,OAAIjd,KAAK0c,gBAAmB1c,KAAKgd,eAAmB,eAASC,IAAa,eAASA,GAS5E,eAAUA,GANR,IASXE,gBAAiB,SAAyBD,EAAUD,GAOlD,IAAKC,IAAa,eAAWA,KAAcD,GAAY,eAAWA,EAAU,KAAO,eAAWA,EAAU,IACtG,OAAO,KAIT,IAAIpc,EAAK,SAAY8B,GAGnB,OAAOua,EAASva,EAAMsa,IAIxB,OAAOpc,GAETuc,uBAAwB,SAAgCH,GACtD,IAAIzM,EAASxQ,KAIb,IAAKid,IAAc,eAASA,KAAa,eAASA,GAEhD,OAAO,KAIT,IAAIc,EAASd,EAEb,GAAI,eAASc,GAAS,CAGpB,IAAIC,EAAU,eAAaf,GAAUgB,QAAQ,OAAW,QAGxDF,EAAS,IAAIG,OAAO,KAAK/P,OAAO6P,EAAS,MAAO,KAIlD,IAAInd,EAAK,SAAY8B,GAenB,OADAob,EAAOI,UAAY,EACZJ,EAAOzC,KAAK,EAAsB3Y,EAAM6N,EAAO6L,sBAAuB7L,EAAO+L,uBAAwB/L,EAAO4N,qBAIrH,OAAOvd,M,wBCpQF,EAAQ,CACjBiN,YAAa,eAAS,OAAyB,GAC/C2F,QAAS,eAAS,OAAyB,IAIlC9F,GAAkB,aAAIC,OAAO,CACtClF,MAAO,EACPuF,SAAU,CACRoQ,YAAa,WACX,OAAOre,KAAK2c,eAAgB3c,KAAKse,kBAEnCC,eAAgB,WACd,IAAI/b,EAAQxC,KAAKwe,aAAexe,KAAK8c,eAAiB9c,KAAK+c,YAAc,GACrEjP,EAAc,OAAAa,EAAA,MAAQ,eAAU3O,KAAK8N,YAAa,GAAI,GACtD2F,EAAU,OAAA9E,EAAA,MAAQ,eAAU3O,KAAKyT,QAAS,GAAI,GAQlD,OANIzT,KAAKqe,aAAe5K,IAEtBjR,EAAQA,EAAM2Y,OAAOrN,EAAc,GAAK2F,EAAS3F,EAAc2F,IAI1DjR,M,aCjBTic,GAA4B,eAAiB,QAAY,QACzDC,GAAiC,eAAuB,QAAY,QAE7D,GAAQ,CAGjBC,OAAQ,eAAS,QAEjBnc,MAAO,eAAS,OAA0B,IAC1Coa,oBAAqB,eAAS,QAAmB,GACjD0B,iBAAkB,eAAS,QAAmB,GAC9CM,kBAAmB,eAAS,QAAmB,IAItCC,GAAgB,aAAIjR,OAAO,CACpCC,OAAQ,CAAC,SACTnF,MAAO,GACPuF,SAAU,CACR0O,YAAa,WACX,OAAO,eAAW3c,KAAKwC,QAEzBsc,uBAAwB,WAKtB,IAAIC,EAAM,CACRJ,OAAQ3e,KAAK2e,OACbpV,OAAQ,KACRyV,OAAQ,KACRC,SAAU,KACVxL,QAAS,KACT3F,YAAa,MAkBf,OAfK9N,KAAK4c,sBAERmC,EAAIxV,OAASvJ,KAAKmc,aAGfnc,KAAK4e,oBACRG,EAAIC,OAAShf,KAAKkf,YAClBH,EAAIE,SAAWjf,KAAKmf,eAGjBnf,KAAKse,mBACRS,EAAItL,QAAUzT,KAAKyT,QACnBsL,EAAIjR,YAAc9N,KAAK8N,aAGlB,eAAMiR,KAGjB3P,MAAO,CAEL5M,MAAO,SAAe6M,IAEhBrP,KAAK2c,aAAe,eAAWtN,KACjCrP,KAAKwP,UAAUxP,KAAKof,kBAGxBN,uBAAwB,SAAgCzP,EAAUC,GAE3D,eAAWD,EAAUC,IACxBtP,KAAKwP,UAAUxP,KAAKof,mBAI1BC,QAAS,WACP,IAAI9P,EAAQvP,MAGRA,KAAK2c,aAAiB3c,KAAK+c,YAAyC,IAA3B/c,KAAK+c,WAAWhT,QAE3D/J,KAAKof,kBAIPpf,KAAKsf,aAAaZ,IAAgC,SAAU5Y,GACtDA,IAAOyJ,EAAMzJ,IAAMA,IAAOyJ,GAC5BA,EAAMgQ,cAIZ5Z,QAAS,CACP4Z,QAAS,WACP,IAAI/c,EAAQxC,KAAKwC,MACb+c,EAAUvf,KAAKuf,QAEnBvf,KAAKwf,KAAK,OAAsBD,GAE5Bvf,KAAKuY,aAEHvY,KAAKsY,WAAatY,KAAK2c,aAEzB3c,KAAKyf,IAAI,OAAsBF,IAGjCvf,KAAK0f,gBAED1f,KAAK2c,YACP3c,KAAKwP,UAAUxP,KAAKof,iBAGpBpf,KAAK+c,WAAa,eAAQva,GAASA,EAAM2Y,QAAU,KAKzDwE,kBAAmB,SAA2Bnd,GAC5CxC,KAAK+c,WAAa,eAAQva,GAASA,EAAM2Y,QAAU,GACnDnb,KAAKsY,WAAY,EACjBtY,KAAKwI,MAAM,QAEPxI,KAAK8F,IACP9F,KAAK4f,WAAWnB,GAA2Bze,KAAK8F,KAGpDsZ,gBAAiB,WACf,IAAI/O,EAASrQ,KAGRA,KAAK2c,cAMN3c,KAAKuY,aAEPvY,KAAKwP,UAAUxP,KAAKuf,UAKtBvf,KAAKsY,WAAY,EAEjBtY,KAAKwP,WAAU,WACb,IAEE,IAAI9M,EAAO2N,EAAO7N,MAAM6N,EAAOwP,QAASxP,EAAOsP,mBAE3C,eAAUjd,GAEZA,EAAKkF,MAAK,SAAUpF,GAElB6N,EAAOsP,kBAAkBnd,MAElB,eAAQE,GAEjB2N,EAAOsP,kBAAkBjd,GAGG,IAAxB2N,EAAO7N,MAAMuH,SAMf,OAAAa,EAAA,MAAK,kFAAmF,SACxFyF,EAAOiI,WAAY,GAGvB,MAAOwH,GAKP,OAAAlV,EAAA,MAAK,4BAA4BuD,OAAO2R,EAAE/e,KAAM,MAAMoN,OAAO2R,EAAEC,QAAS,KAAM,SAC9E1P,EAAOiI,WAAY,EAEnBjI,EAAOmP,KAAK,OAAsBnP,EAAOkP,mBCxLnD,SAAS,GAAgBjV,EAAK1J,EAAKO,GAAiK,OAApJP,KAAO0J,EAAOlB,OAAOiB,eAAeC,EAAK1J,EAAK,CAAEO,MAAOA,EAAOuI,YAAY,EAAMa,cAAc,EAAMC,UAAU,IAAkBF,EAAI1J,GAAOO,EAAgBmJ,EAa3M,ICbI0V,GAAQjX,GDaRkX,GAAe,CAAC,QAAS,QAAS,UAE3B,GAAQ,CAEjBC,gBAAiB,eAAS,QAAmB,GAC7CC,WAAY,eAAS,OAAkB,SAAS,SAAUhf,GACxD,OAAO,OAAAiZ,EAAA,MAAc6F,GAAc9e,MAErCif,WAAY,eAAS,QAAmB,GACxCC,gBAAiB,eAAS,OAAkB,WAInCC,GAAkB,aAAI1S,OAAO,CACtClF,MAAO,GACPhG,KAAM,WACJ,MAAO,CACL6d,aAAc,GACdC,iBAAkB,IAGtBvS,SAAU,CACRwS,aAAc,WACZ,OAAOzgB,KAAKogB,YAAcpgB,KAAKmgB,YAEjCO,sBAAuB,WACrB,OAAO1gB,KAAKygB,eAAiBzgB,KAAKkgB,iBAEpCS,uBAAwB,WACtB,OAAO,GAETC,uBAAwB,WACtB,IAAIL,EAAevgB,KAAKugB,aACxB,OAAOvgB,KAAKygB,cAAgBF,GAAgBA,EAAaxW,OAAS,GAAKwW,EAAaM,KAAKvE,EAAA,OAE3FwE,wBAAyB,WACvB,OAAO9gB,KAAKygB,cAAgB,OAAArG,EAAA,MAAc,CAAC,QAAS,SAAUpa,KAAKmgB,aAErEY,uBAAwB,WACtB,IAAInD,EAEA6C,EAAezgB,KAAKygB,aACxB,OAAO7C,EAAO,CACZ,qBAAsB6C,GACrB,GAAgB7C,EAAM,kBAAkBzP,OAAOnO,KAAKmgB,YAAaM,GAAe,GAAgB7C,EAAM,oBAAqB5d,KAAK4gB,wBAAyB,GAAgBhD,EAAM,8BAA+B6C,IAAiBzgB,KAAK0gB,uBAAwB9C,GAEjQoD,qBAAsB,WACpB,MAAO,CAIL,uBAAyBhhB,KAAKygB,aAAsBzgB,KAAK8gB,wBAA0B,OAAS,QAA/C,QAInD1R,MAAO,CACL8J,cAAe,SAAuB7J,EAAUC,GAE9C,IAAI2R,GAAQ,EAEZ,GAAIjhB,KAAKygB,cAAgBzgB,KAAKugB,aAAaxW,OAAS,EAAG,CAErDkX,EAAQ,eAAQ5R,IAAa,eAAQC,IAAaD,EAAStF,SAAWuF,EAASvF,OAE/E,IAAK,IAAID,EAAI,EAAGmX,GAASnX,EAAIuF,EAAStF,OAAQD,IAE5CmX,EAAQ,eAAW,EAAY5R,EAASvF,IAAK,EAAYwF,EAASxF,KAIjEmX,GACHjhB,KAAK0f,iBAGTU,WAAY,SAAoB/Q,GAC9BrP,KAAK0f,gBACL1f,KAAKkhB,qBAAqB7R,IAE5B8Q,WAAY,WACVngB,KAAK0f,iBAEPgB,sBAAuB,SAA+BrR,GACpDrP,KAAK0f,gBACL1f,KAAKkhB,sBAAsB7R,IAE7BkR,aAAc,SAAsBY,EAAe7R,GACjD,IAAIC,EAAQvP,KAEZ,GAAIA,KAAKygB,eAAiB,eAAWU,EAAe7R,GAAW,CAC7D,IAAI9M,EAAQ,GAEZ2e,EAAclX,SAAQ,SAAUuP,EAAGxK,GAC7BwK,GACFhX,EAAMmH,KAAK4F,EAAM2J,cAAclK,OAInChP,KAAKwI,MAAM,OAAyBhG,MAI1C4e,YAAa,WAEPphB,KAAKygB,cACPzgB,KAAKkhB,sBAAqB,IAG9Bvb,QAAS,CAEP0b,UAAW,SAAmBxQ,GAE5B,GAAI7Q,KAAKygB,cAAgB,eAAS5P,IAAUA,GAAS,GAAKA,EAAQ7Q,KAAKkZ,cAAcnP,SAAW/J,KAAKshB,cAAczQ,GAAQ,CACzH,IAAI0P,EAAevgB,KAAK8gB,wBAA0B9gB,KAAKugB,aAAapF,QAAU,GAC9EoF,EAAa1P,IAAS,EACtB7Q,KAAKuhB,qBAAuB,EAC5BvhB,KAAKugB,aAAeA,IAGxBiB,YAAa,SAAqB3Q,GAEhC,GAAI7Q,KAAKygB,cAAgB,eAAS5P,IAAU7Q,KAAKshB,cAAczQ,GAAQ,CACrE,IAAI0P,EAAevgB,KAAKugB,aAAapF,QACrCoF,EAAa1P,IAAS,EACtB7Q,KAAKuhB,qBAAuB,EAC5BvhB,KAAKugB,aAAeA,IAGxBkB,cAAe,WACb,IAAI1X,EAAS/J,KAAKkZ,cAAcnP,OAE5B/J,KAAKygB,cAAgB1W,EAAS,IAChC/J,KAAKuhB,qBAAuB,EAC5BvhB,KAAKugB,aAAevgB,KAAK8gB,wBAA0B,eAAY/W,GAAQ,GAAQ,EAAC,KAGpFuX,cAAe,SAAuBzQ,GAEpC,SAAU,eAASA,KAAU7Q,KAAKugB,aAAa1P,KAEjD6O,cAAe,WAEb1f,KAAKuhB,qBAAuB,EAC5BvhB,KAAKugB,aAAe,IAGtBmB,qBAAsB,SAA8B7Q,GAClD,GAAI7Q,KAAKygB,cAAgBzgB,KAAKshB,cAAczQ,GAAQ,CAClD,IAAIzI,EAAUpI,KAAKqgB,gBACnB,OAAO,GAAgB,CACrB,wBAAwB,GACvB,GAAGlS,OAAOnO,KAAK4U,KAAO,KAAO,QAAS,KAAKzG,OAAO/F,GAAUA,GAGjE,MAAO,IAETuZ,mBAAoB,SAA4B9Q,GAC9C,MAAO,CACL,gBAAkB7Q,KAAKygB,aAAsBzgB,KAAKshB,cAAczQ,GAAS,OAAS,QAA5C,OAG1CqQ,qBAAsB,SAA8Bpf,GAClD,IAAI8f,EAAS9f,IAAO9B,KAAKkgB,gBAAkB,MAAQ,OAEnDlgB,KAAK4hB,GAAQ,OAAwB5hB,KAAK6hB,kBAE1C7hB,KAAK4hB,GAAQ,OAAqB5hB,KAAK0f,eACvC1f,KAAK4hB,GAAQ,OAA4B5hB,KAAK0f,gBAEhDmC,iBAAkB,SAA0Blf,EAAMkO,EAAO1F,GAEvD,GAAKnL,KAAKygB,eAAgBzgB,KAAKkgB,gBAA/B,CAMA,IAAIC,EAAangB,KAAKmgB,WAClBK,EAAkBxgB,KAAKwgB,gBACvBD,EAAevgB,KAAKugB,aAAapF,QACjC2G,GAAYvB,EAAa1P,GAE7B,GAAmB,WAAfsP,EACFI,EAAe,QACV,GAAmB,UAAfJ,EACT,GAAIK,GAAmB,GAAKrV,EAAMuE,SAAU,CAE1C,IAAK,IAAIV,EAAM,OAAAL,EAAA,MAAQ6R,EAAiB3P,GAAQ7B,GAAO,OAAAL,EAAA,MAAQ6R,EAAiB3P,GAAQ7B,IACtFuR,EAAavR,IAAO,EAGtB8S,GAAW,OAEL3W,EAAM4W,SAAW5W,EAAM6W,UAE3BzB,EAAe,GACfuB,GAAW,GAGb9hB,KAAKwgB,gBAAkBsB,EAAWjR,GAAS,EAI/C0P,EAAa1P,GAASiR,EACtB9hB,KAAKugB,aAAeA,OA/BlBvgB,KAAK0f,oB,0BEpLT,GAAiB,SAAwBve,GAC3C,OAAI,eAAkBA,GACb,GAGL,eAAUA,GACL,eAAQA,EAAOA,GAGjBA,GAYE,GAAqB,SAA4B8gB,EAAGC,GAC7D,IAAItE,EAAO5V,UAAU+B,OAAS,QAAsB5B,IAAjBH,UAAU,GAAmBA,UAAU,GAAK,GAC3Ema,EAAcvE,EAAKoB,OACnBA,OAAyB,IAAhBmD,EAAyB,KAAOA,EACzCC,EAAiBxE,EAAK1D,UACtBA,OAA+B,IAAnBkI,EAA4B,KAAOA,EAC/CC,EAAczE,EAAK0E,OACnBA,OAAyB,IAAhBD,OAAyBla,EAAYka,EAC9CE,EAAqB3E,EAAK4E,cAC1BA,OAAuC,IAAvBD,EAAgC,GAAKA,EACrDE,EAAgB7E,EAAK8E,SACrBA,OAA6B,IAAlBD,GAAmCA,EAG9CE,EAAK,OAAArM,GAAA,MAAI2L,EAAGjD,EAAQ,MACpB4D,EAAK,OAAAtM,GAAA,MAAI4L,EAAGlD,EAAQ,MAaxB,OAXI,eAAW9E,KACbyI,EAAKzI,EAAUyI,EAAI3D,EAAQiD,GAC3BW,EAAK1I,EAAU0I,EAAI5D,EAAQkD,IAM7BS,EAAK,GAAeA,GACpBC,EAAK,GAAeA,GAEhB,eAAOD,IAAO,eAAOC,IAAO,eAASD,IAAO,eAASC,GAGhDD,EAAKC,GAAM,EAAID,EAAKC,EAAK,EAAI,EAC3BF,GAAmB,KAAPC,GAAoB,KAAPC,EAE3B,EACEF,GAAmB,KAAPC,GAAoB,KAAPC,GAE1B,EAIH,EAAsBD,GAAIE,cAAc,EAAsBD,GAAKN,EAAQE,IDjEpF,SAASxZ,GAAQC,EAAQC,GAAkB,IAAIC,EAAOC,OAAOD,KAAKF,GAAS,GAAIG,OAAOC,sBAAuB,CAAE,IAAIC,EAAUF,OAAOC,sBAAsBJ,GAAaC,IAAgBI,EAAUA,EAAQC,QAAO,SAAUC,GAAO,OAAOJ,OAAOK,yBAAyBR,EAAQO,GAAKE,eAAgBP,EAAKQ,KAAK1B,MAAMkB,EAAMG,GAAY,OAAOH,EAE9U,SAASS,GAAcC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAI9B,UAAU+B,OAAQD,IAAK,CAAE,IAAIE,EAAyB,MAAhBhC,UAAU8B,GAAa9B,UAAU8B,GAAK,GAAQA,EAAI,EAAKd,GAAQI,OAAOY,IAAS,GAAMC,SAAQ,SAAUrJ,GAAO,GAAgBiJ,EAAQjJ,EAAKoJ,EAAOpJ,OAAsBwI,OAAOe,0BAA6Bf,OAAOgB,iBAAiBP,EAAQT,OAAOe,0BAA0BH,IAAmBhB,GAAQI,OAAOY,IAASC,SAAQ,SAAUrJ,GAAOwI,OAAOiB,eAAeR,EAAQjJ,EAAKwI,OAAOK,yBAAyBO,EAAQpJ,OAAe,OAAOiJ,EAE7gB,SAAS,GAAgBS,EAAK1J,EAAKO,GAAiK,OAApJP,KAAO0J,EAAOlB,OAAOiB,eAAeC,EAAK1J,EAAK,CAAEO,MAAOA,EAAOuI,YAAY,EAAMa,cAAc,EAAMC,UAAU,IAAkBF,EAAI1J,GAAOO,EAAgBmJ,EAY3M,IAAIwY,GAA0B,SAC1BC,GAA2B,QAA0BD,GACrDE,GAA4B,WAC5BC,GAA6B,QAA0BD,GACvDE,GAAqB,MACrBC,GAAsB,OACtBC,GAAsB,OACtBC,GAAkB,CAACH,GAAoBC,GAAqBC,IAErD,IAASpD,GAAS,CAC3BsD,aAAc,eAAS,OAAkB,2BACzCC,eAAgB,eAAS,OAAkB,0BAC3CC,cAAe,eAAS,OAAkB,4BAC1CC,gBAAiB,eAAS,QAAmB,GAC7CC,eAAgB,eAAS,QAAmB,GAK5CC,YAAa,eAAS,QAAmB,IACxC,GAAgB3D,GAAQ8C,GAAyB,eAAS,SAAoB,GAAgB9C,GAAQ,cAAe,eAAS,SAAsB,GAAgBA,GAAQ,oBAAqB,eAAS,SAA0B,GAAgBA,GAAQ,qBAAsB,eAAS,OAAkB,CAC9S4D,SAAS,KACN,GAAgB5D,GAAQgD,GAA2B,eAAS,QAAmB,IAAS,GAAgBhD,GAAQ,gBAAiB,eAAS,OAAkBkD,IAAoB,SAAU/hB,GAC7L,OAAO,OAAAiZ,EAAA,MAAciJ,GAAiBliB,OACnC,GAAgB6e,GAAQ,eAAgB,eAAS,QAAmB,IAAS,GAAgBA,GAAQ,eAAgB,eAAS,QAAmB,IAASA,IAGpJ6D,GAAe,aAAIjW,OAAO,CACnClF,MAAO,GACPhG,KAAM,WACJ,MAAO,CACLwc,YAAalf,KAAK8iB,KAA4B,GAC9C3D,cAAenf,KAAKgjB,MAA8B,IAGtD/U,SAAU,CACR6V,aAAc,WACZ,OAAO9jB,KAAK2c,cAAgB3c,KAAK4e,mBAAqB5e,KAAK0jB,gBAE7DK,WAAY,WACV,OAAO/jB,KAAK8X,eAAe+I,MAAK,SAAUmD,GACxC,OAAOA,EAAEC,aAKbzF,YAAa,WACX,IAAIQ,EAAShf,KAAKkf,YACdD,EAAWjf,KAAKmf,cAChBmD,EAAStiB,KAAKkkB,kBACdxB,EAAW1iB,KAAKmkB,aAChBC,EAAcpkB,KAAKokB,YACnBN,EAAe9jB,KAAK8jB,aACpBthB,GAASxC,KAAK8c,eAAiB9c,KAAK+c,YAAc,IAAI5B,QAEtDqH,EAAgB5Y,GAAcA,GAAc,GAAI5J,KAAKqkB,oBAAqB,GAAI,CAChFC,MAAO,SAGT,GAAItF,GAAU8E,EAAc,CAC1B,IAAI9J,EAAQha,KAAKoe,kBAAkBY,IAAW,GAC1CuF,EAAkBvK,EAAMuK,gBACxBrK,EAAY,eAAWqK,GAE3BA,EAAkBA,EAAkBvkB,KAAKwkB,kBAAkBxF,QAAU7W,EAErE,OAAO,gBAAW3F,GAAO,SAAUyf,EAAGC,GACpC,IAAIvO,EAAS,KAsBb,OApBI,eAAWyQ,KAIbzQ,EAASyQ,EAAYnC,EAAGC,EAAGlD,EAAQC,EAAU/E,EAAWsI,EAAeF,KAKrE,eAAkB3O,KAAsB,IAAXA,KAC/BA,EAAS,GAAmBsO,EAAGC,EAAG,CAChClD,OAAQA,EACR9E,UAAWA,EACXoI,OAAQA,EACRE,cAAeA,EACfE,SAAUA,MAKN/O,GAAU,IAAMsL,GAAY,EAAI,MAI5C,OAAOzc,IAGX4M,OAAQrG,GAAS,CAEfgb,WAAY,SAAoB1U,GAC1BA,EACErP,KAAK+jB,YACP/jB,KAAKyf,IAAI,OAAyBzf,KAAKykB,YAGzCzkB,KAAKwf,KAAK,OAAyBxf,KAAKykB,cAG3C,GAAgB1b,GAAQia,IAA2B,SAAU3T,GAE1DA,IAAarP,KAAKmf,gBAItBnf,KAAKmf,cAAgB9P,IAAY,MAC/B,GAAgBtG,GAAQ+Z,IAAyB,SAAUzT,GAEzDA,IAAarP,KAAKkf,cAItBlf,KAAKkf,YAAc7P,GAAY,OAC7B,GAAgBtG,GAAQ,iBAAiB,SAAuBsG,EAAUC,GAExED,IAAaC,GACftP,KAAKwI,MAAMya,GAA4B5T,MAEvC,GAAgBtG,GAAQ,eAAe,SAAqBsG,EAAUC,GACpED,IAAaC,GACftP,KAAKwI,MAAMua,GAA0B1T,MAErCtG,IACJtD,QAAS,WACHzF,KAAK+jB,YACP/jB,KAAKyf,IAAI,OAAyBzf,KAAKykB,aAG3C9e,QAAS,CAGP8e,WAAY,SAAoB7jB,EAAKoZ,EAAO7O,EAAOuZ,GACjD,IAAInV,EAAQvP,KAEZ,GAAKA,KAAK+jB,cAKNW,IAAU1kB,KAAKyjB,iBAAnB,CAMA,IAAIkB,GAAc,EAEdC,EAAsB,WACxB,IAAIC,EAAgB7K,EAAM6K,eAAiBtV,EAAMsV,cAE7CA,IAAkB3B,GACpB3T,EAAM4P,eAAgB,EACb0F,IAAkB1B,KAC3B5T,EAAM4P,eAAgB,IAM1B,GAAInF,EAAMiK,SAAU,CAClB,IAAIa,GAAW9kB,KAAK8jB,cAAgB9J,EAAM8K,QAAU9K,EAAM8K,QAAUlkB,EAEhEZ,KAAKkf,cAAgB4F,EAEvB9kB,KAAKmf,eAAiBnf,KAAKmf,eAG3Bnf,KAAKkf,YAAc4F,EAEnBF,KAGFD,GAAc,OACL3kB,KAAKkf,cAAgBlf,KAAK2jB,cACnC3jB,KAAKkf,YAAc,GACnB0F,IACAD,GAAc,GAGZA,GAEF3kB,KAAKwI,MAAM,OAAyBxI,KAAK6f,WAI7CkF,mBAAoB,SAA4BnkB,EAAKoZ,EAAO0K,GAC1D,MAAO,CAEL,yBAA0B1K,EAAMiK,UAAYjkB,KAAKglB,gBAAkBN,GAAU1kB,KAAKyjB,mBAGtFwB,iBAAkB,SAA0BrkB,EAAKoZ,EAAO0K,GACtD,IAAK1kB,KAAK+jB,YAAcW,GAAU1kB,KAAKyjB,gBAErC,MAAO,GAGT,IAAIQ,EAAWjK,EAAMiK,SAEjBiB,EAAWjB,GAAYjkB,KAAKkf,cAAgBte,EAAMZ,KAAKmf,cAAgB,aAAe,YAAc8E,EAAW,OAAS,KAE5H,MAAO,CACL,YAAaiB,IAGjBC,iBAAkB,SAA0BvkB,EAAKoZ,EAAO0K,GAEtD,IAAK1kB,KAAK+jB,YAAcW,GAAU1kB,KAAKyjB,gBAErC,OAAO,KAGT,IAAIQ,EAAWjK,EAAMiK,SAEjBmB,EAAe,GAEnB,GAAInB,EACF,GAAIjkB,KAAKkf,cAAgBte,EAEvBwkB,EAAeplB,KAAKmf,cAAgBnf,KAAKsjB,aAAetjB,KAAKwjB,kBACxD,CAIL4B,EAAeplB,KAAKmf,cAAgBnf,KAAKwjB,cAAgBxjB,KAAKsjB,aAE9D,IAAIuB,EAAgB7kB,KAAK6kB,eAAiB7K,EAAM6K,cAE5CA,IAAkB3B,GACpBkC,EAAeplB,KAAKsjB,aACXuB,IAAkB1B,KAC3BiC,EAAeplB,KAAKwjB,oBAGdxjB,KAAK2jB,cAEfyB,EAAeplB,KAAKkf,YAAclf,KAAKujB,eAAiB,IAI1D,OAAO,eAAK6B,IAAiB,S,kEErQxB,GAAQ,GAGRC,GAAc,aAAIzX,OAAO,CAClCjI,QAAS,CACP2f,aAAc,WACZ,IAAIzN,EAAS7X,KAAK8X,eACdlB,EAAU5W,KAAK4W,QACfmB,EAAe/X,KAAK+X,aACpBC,EAAchY,KAAKgY,YACnBhH,EAAIhR,KAAKE,eAGb,OAAKF,KAAKiY,kBAAkB,UAAkC,IAAZrB,GAAgC,KAAZA,EAI/D5F,EAAE,OAAK,CACZzQ,YAAa,kBACb8H,MAAO,CAAC,eAAW0P,GAAgBA,EAAa,KAAM,WAAaA,GACnE1X,MAAO,eAAW2X,GAAeA,EAAY,KAAM,WAAaA,EAChEpX,IAAK,aACJ,CAACZ,KAAKmS,cAAc,OAAmB,CACxC+F,QAASL,EAAO9N,OAChB8N,OAAQA,MAVD7G,QCnBf,SAAS,GAAQ/H,EAAQC,GAAkB,IAAIC,EAAOC,OAAOD,KAAKF,GAAS,GAAIG,OAAOC,sBAAuB,CAAE,IAAIC,EAAUF,OAAOC,sBAAsBJ,GAAaC,IAAgBI,EAAUA,EAAQC,QAAO,SAAUC,GAAO,OAAOJ,OAAOK,yBAAyBR,EAAQO,GAAKE,eAAgBP,EAAKQ,KAAK1B,MAAMkB,EAAMG,GAAY,OAAOH,EAE9U,SAAS,GAAcU,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAI9B,UAAU+B,OAAQD,IAAK,CAAE,IAAIE,EAAyB,MAAhBhC,UAAU8B,GAAa9B,UAAU8B,GAAK,GAAQA,EAAI,EAAK,GAAQV,OAAOY,IAAS,GAAMC,SAAQ,SAAUrJ,GAAO,GAAgBiJ,EAAQjJ,EAAKoJ,EAAOpJ,OAAsBwI,OAAOe,0BAA6Bf,OAAOgB,iBAAiBP,EAAQT,OAAOe,0BAA0BH,IAAmB,GAAQZ,OAAOY,IAASC,SAAQ,SAAUrJ,GAAOwI,OAAOiB,eAAeR,EAAQjJ,EAAKwI,OAAOK,yBAAyBO,EAAQpJ,OAAe,OAAOiJ,EAE7gB,SAAS,GAAgBS,EAAK1J,EAAKO,GAAiK,OAApJP,KAAO0J,EAAOlB,OAAOiB,eAAeC,EAAK1J,EAAK,CAAEO,MAAOA,EAAOuI,YAAY,EAAMa,cAAc,EAAMC,UAAU,IAAkBF,EAAI1J,GAAOO,EAAgBmJ,EA4BpM,IAAI,GAAQ,eAAsB,eAAS,GAAc,GAAc,GAAc,GAAc,GAAc,GAAc,GAAc,GAAc,GAAc,GAAc,GAAc,GAAc,GAAc,GAAc,GAAc,GAAc,GAAc,GAAc,GAAIxE,EAAA,MAAU,GAAiB,GAAY,QAAe,QAAgB,GAAa,GAAiB,QAAa,GAAkB,IAAgB,IAAkB,IAAe,SAAe,SAAqB,SAAa,SAAa,SAAa,KAAe,SAGrjBlB,GAAsB,aAAIgJ,OAAO,CAC1C7M,KAAM,QAGN8M,OAAQ,CACRxN,EAAA,KAAY,OAAkByF,EAAA,KAAS,OACvC,OAAY,QAAoB,QAAc,QAAY,QAAY,QACtE,QAAcoW,EAAgB2H,GAAclW,GAAiB,OAAc,OAAe2S,GAAiBtH,EAAYqM,GAAa1N,EAAgBU,EAAWwG,IAC/JnW,MAAO,M,oCC3CT,kJASWA,EAAQ,eAAsB,CACvC6c,OAAQ,eAAS,QAAmB,GACpCC,WAAY,eAAS,QAAmB,GACxCC,IAAK,eAAS,OAAkB,OAChCC,cAAe,eAAS,OAAkB,QACzC,QAGQ7gB,EAAsB,aAAI+I,OAAO,CAC1C7M,KAAM,OACN4kB,YAAY,EACZjd,MAAOA,EACP5I,OAAQ,SAAgBkR,EAAG4M,GACzB,IAAIlV,EAAQkV,EAAKlV,MACbhG,EAAOkb,EAAKlb,KACZkjB,EAAQhI,EAAKgI,MACbllB,EAAckd,EAAKld,YACnBmlB,EAAWjI,EAAKiI,SAChBN,EAAS7c,EAAM6c,OACfC,EAAa9c,EAAM8c,WACnBE,EAAgBhd,EAAMgd,cACtBI,EAAYP,EAASM,EAAW,GAEpC,IAAKN,EAAQ,CACX,IAAIQ,EAAY,GACZC,EAASJ,IACTK,EAAevlB,GAAe,GAClColB,EAAUnc,KAAKqH,EAAE,OAAY,eAAc,OAAmB+U,EAAWE,EAAcD,KACvF,IAAIE,EAAS,eAAc,OAAiBH,EAAWE,EAAcD,GAEjEE,GACFJ,EAAUN,EAAa,OAAS,WAAWxU,EAAE,OAAa,CACxDtI,MAAO,CACLyd,MAAOX,EACPE,cAAeA,IAEhBQ,IAIP,OAAOlV,EAAEtI,EAAM+c,IAAK,eAAU/iB,EAAM,CAClCnC,YAAa,UACXulB,O,6VCnDR,SAAS9c,EAAQC,EAAQC,GAAkB,IAAIC,EAAOC,OAAOD,KAAKF,GAAS,GAAIG,OAAOC,sBAAuB,CAAE,IAAIC,EAAUF,OAAOC,sBAAsBJ,GAAaC,IAAgBI,EAAUA,EAAQC,QAAO,SAAUC,GAAO,OAAOJ,OAAOK,yBAAyBR,EAAQO,GAAKE,eAAgBP,EAAKQ,KAAK1B,MAAMkB,EAAMG,GAAY,OAAOH,EAE9U,SAASS,EAAcC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAI9B,UAAU+B,OAAQD,IAAK,CAAE,IAAIE,EAAyB,MAAhBhC,UAAU8B,GAAa9B,UAAU8B,GAAK,GAAQA,EAAI,EAAKd,EAAQI,OAAOY,IAAS,GAAMC,SAAQ,SAAUrJ,GAAOsJ,EAAgBL,EAAQjJ,EAAKoJ,EAAOpJ,OAAsBwI,OAAOe,0BAA6Bf,OAAOgB,iBAAiBP,EAAQT,OAAOe,0BAA0BH,IAAmBhB,EAAQI,OAAOY,IAASC,SAAQ,SAAUrJ,GAAOwI,OAAOiB,eAAeR,EAAQjJ,EAAKwI,OAAOK,yBAAyBO,EAAQpJ,OAAe,OAAOiJ,EAE7gB,SAASK,EAAgBI,EAAK1J,EAAKO,GAAiK,OAApJP,KAAO0J,EAAOlB,OAAOiB,eAAeC,EAAK1J,EAAK,CAAEO,MAAOA,EAAOuI,YAAY,EAAMa,cAAc,EAAMC,UAAU,IAAkBF,EAAI1J,GAAOO,EAAgBmJ,EAE3M,SAAS+P,EAAmBC,GAAO,OAAOC,EAAmBD,IAAQE,EAAiBF,IAAQG,EAA4BH,IAAQI,IAElI,SAASA,IAAuB,MAAM,IAAIC,UAAU,wIAEpD,SAASF,EAA4BG,EAAGC,GAAU,GAAKD,EAAL,CAAgB,GAAiB,kBAANA,EAAgB,OAAOE,EAAkBF,EAAGC,GAAS,IAAIE,EAAI3R,OAAO4R,UAAUC,SAASC,KAAKN,GAAGO,MAAM,GAAI,GAAiE,MAAnD,WAANJ,GAAkBH,EAAEQ,cAAaL,EAAIH,EAAEQ,YAAYra,MAAgB,QAANga,GAAqB,QAANA,EAAoBM,MAAM5F,KAAKmF,GAAc,cAANG,GAAqB,2CAA2CO,KAAKP,GAAWD,EAAkBF,EAAGC,QAAzG,GAE7S,SAASL,EAAiBe,GAAQ,GAAsB,qBAAXC,QAA0BA,OAAOC,YAAYrS,OAAOmS,GAAO,OAAOF,MAAM5F,KAAK8F,GAE1H,SAAShB,EAAmBD,GAAO,GAAIe,MAAMK,QAAQpB,GAAM,OAAOQ,EAAkBR,GAEpF,SAASQ,EAAkBR,EAAKqB,IAAkB,MAAPA,GAAeA,EAAMrB,EAAIvQ,UAAQ4R,EAAMrB,EAAIvQ,QAAQ,IAAK,IAAID,EAAI,EAAG8R,EAAO,IAAIP,MAAMM,GAAM7R,EAAI6R,EAAK7R,IAAO8R,EAAK9R,GAAKwQ,EAAIxQ,GAAM,OAAO8R,EAezK,IAAI,EAAQ,CACjBwK,eAAgB,eAAS,QACzBpO,YAAa,eAAS,QACtBD,aAAc,eAAS,GAAG5J,OAAOkM,EAAmB,QAAgC,CAAC,WAI5EgM,EAAgB,aAAIzY,OAAO,CACpClF,MAAO,EACP/C,QAAS,CAEP2gB,YAAa,SAAqB3jB,EAAM/B,EAAK2lB,EAAS7b,GACpD,IAAI8b,EAAUxmB,KAAKwmB,QAEnB,GAAID,EAAS,CACX,IAAIplB,EAAQ,OAAAmV,EAAA,MAAI3T,EAAM/B,EAAK,IAE3B,OAAI,eAAW2lB,GACNA,EAAQplB,EAAOP,EAAK+B,GAClB,eAAS4jB,IAAY,eAAWC,EAAQD,IAC1CC,EAAQD,GAASplB,EAAOP,EAAK+B,GAG/B4jB,EAGT,OAAO7b,GAET+b,YAAa,SAAqB9jB,EAAM/B,EAAK8lB,EAAS/d,EAAM+B,GAC1D,IAAI8b,EAAUxmB,KAAKwmB,QAEnB,GAAIE,EAAS,CACX,IAAIvlB,EAAQ,OAAAmV,EAAA,MAAI3T,EAAM/B,EAAK,IAE3B,OAAI,eAAW8lB,GACNA,EAAQvlB,EAAOP,EAAK+B,EAAMgG,GACxB,eAAS+d,IAAY,eAAWF,EAAQE,IAC1CF,EAAQE,GAASvlB,EAAOP,EAAK+B,EAAMgG,GAGrC+d,EAGT,OAAOhc,GAGTic,kBAAmB,SAA2BhkB,EAAMqX,GAClD,IAAIpZ,EAAMoZ,EAAMpZ,IACZsZ,EAAYla,KAAKwkB,kBAAkB5jB,GACnCO,EAAQ,OAAAmV,EAAA,MAAI3T,EAAM/B,EAAK,MAM3B,OAJI,eAAWsZ,KACb/Y,EAAQ+Y,EAAU/Y,EAAOP,EAAK+B,IAGzB,eAAkBxB,GAAS,GAAKA,GAGzCylB,qBAAsB,SAA8BC,EAAgBlkB,GAClE,IAAI4M,EAAQvP,KAGZ,OAAO,WACD6mB,GACFtX,EAAMxM,KAAKJ,EAAM,QAAyBA,EAAK,WAKrDmkB,WAAY,SAAoB3b,GAGzBnL,KAAK+mB,mBAAmB5b,IAE3BnL,KAAKgnB,kBAAkB,OAAwB7b,IAGnD8b,aAAc,SAAsB9b,GAG7BnL,KAAK+mB,mBAAmB5b,IAE3BnL,KAAKgnB,kBAAkB,OAA0B7b,IAIrD+b,mBAAoB,SAA4BlN,EAAOmN,EAAUxkB,EAAMykB,GACrE,IAAI/W,EAASrQ,KAET6U,EAAY7U,KAAK6U,UACjBjU,EAAMoZ,EAAMpZ,IACZymB,EAAQrN,EAAMqN,MACdC,EAActN,EAAMsN,YACpBtW,EAAIhR,KAAKE,eACT2mB,EAAiB7mB,KAAKiY,kBAAkB,QACxCsP,EAAYvnB,KAAK2mB,kBAAkBhkB,EAAMqX,GACzCwN,GAAgB3S,IAAc7U,KAAK8U,cAAgB9U,KAAKiV,eAAiB+E,EAAMwN,aAI/EC,EAAUD,EAAeF,EAAc,OAAM,OAAMA,EAAc,KAAO,KACxEI,EAAc/kB,EAAK,SAA2BA,EAAK,QAAwB/B,GAAO+B,EAAK,QAAwB/B,GAAOoZ,EAAM5R,SAAW,KACvI1F,EAAO,CAKT2F,MAAO,CAAC2R,EAAM3R,MAAQ2R,EAAM3R,MAAQ,GAAIrI,KAAKsmB,YAAY3jB,EAAM/B,EAAKoZ,EAAM2N,QAAS,KACnFjf,MAAO,GACPrI,MAAOuJ,EAAc,CACnB,gBAAiBhB,OAAOue,EAAW,IAClCG,EAActnB,KAAKymB,YAAY9jB,EAAM/B,EAAKoZ,EAAM4N,OAAQ,MAAO,IAAM5nB,KAAKsmB,YAAY3jB,EAAM/B,EAAKoZ,EAAM6N,OAAQ,KAClHjnB,IAAK,OAAOuN,OAAOiZ,EAAU,UAAUjZ,OAAOgZ,EAAU,KAAKhZ,OAAOvN,IAGlE4mB,EAEF9kB,EAAKgG,MAAQ,CACXof,eAAgBjT,EAAYwS,EAAQ,KACpCG,cAAc,EACdpf,QAASsf,IAKXhlB,EAAKrC,MAAM,cAAgBwU,IAAc,eAAkBwS,GAAS,eAASA,GAAS,KACtF3kB,EAAKrC,MAAMiS,KAAOgV,EAAc,YAAc,OAC9C5kB,EAAKrC,MAAM4R,MAAQqV,EAAc,MAAQ,KAErCI,GACFhlB,EAAK2F,MAAMsB,KAAK,GAAGwE,OAAOnO,KAAK4U,KAAO,KAAO,QAAS,KAAKzG,OAAOuZ,KAItE,IAAI3B,EAAY,CACdpjB,KAAMA,EACNkO,MAAOuW,EACPpN,MAAOA,EACP+N,YAAa,OAAAzR,EAAA,MAAI3T,EAAM/B,EAAK,IAC5BO,MAAOomB,EACPS,cAAehoB,KAAK4mB,qBAAqBC,EAAgBlkB,GACzDslB,eAAgBnf,QAAQnG,EAAK,UAI3B3C,KAAK2gB,yBACPoF,EAAUmC,YAAcloB,KAAKshB,cAAc8F,GAE3CrB,EAAU1E,UAAY,WACpB,OAAOhR,EAAOgR,UAAU+F,IAG1BrB,EAAUvE,YAAc,WACtB,OAAOnR,EAAOmR,YAAY4F,KAY9B,IAAIe,EAAWnoB,KAAKooB,yBAAyBxnB,GACzCynB,EAAcF,EAAWnoB,KAAKmS,cAAcgW,EAAUpC,GAAa,eAASwB,GAQhF,OANIvnB,KAAK6U,YAEPwT,EAAc,CAACrX,EAAE,MAAO,CAACqX,MAIpBrX,EAAEyW,EAAS/kB,EAAM,CAAC2lB,KAG3BC,eAAgB,SAAwB3lB,EAAMykB,GAC5C,IAAI5W,EAASxQ,KAET6X,EAAS7X,KAAK8X,eACdyQ,EAAUvoB,KAAKuoB,QACfC,EAAaxoB,KAAKwoB,WAClB1a,EAAc9N,KAAK8N,YACnB2F,EAAUzT,KAAKyT,QACfsE,EAAe/X,KAAK+X,aACpBC,EAAchY,KAAKgY,YACnBhH,EAAIhR,KAAKE,eACT2mB,EAAiB7mB,KAAKiY,kBAAkB,QACxCwQ,EAAiB9lB,EAAK,SAA2BkkB,EACjD6B,EAAqB1oB,KAAK2oB,WAAW,SAA2B3oB,KAAK0gB,sBAErEkI,EAAQ,GAIRC,EAAYJ,EAAiBzoB,KAAKkX,OAAO,YAAY/I,OAAOiZ,EAAU,MAAQ,KAE9E0B,EAAOjR,EAAO1G,KAAI,SAAU6I,EAAOmN,GACrC,OAAO3W,EAAO0W,mBAAmBlN,EAAOmN,EAAUxkB,EAAMykB,MAGtD2B,EAAe,KAEfjb,GAAe2F,GAAWA,EAAU,IACtCsV,EAAengB,QAAQkF,EAAc,GAAK2F,EAAU2T,EAAW,IAOjE,IAAI4B,EAAkB,eAAS,OAAA1S,EAAA,MAAI3T,EAAM6lB,KAAgB,KACrDS,EAASD,GAAmB,eAAS5B,GAGrC8B,EAAQF,EAAkBhpB,KAAKkX,OAAO,QAAQ/I,OAAO6a,IAAoB,KAEzEG,EAAoBnpB,KAAK0hB,qBAAuB1hB,KAAK0hB,qBAAqB0F,GAAY,GACtFgC,EAAkBppB,KAAK2hB,mBAAqB3hB,KAAK2hB,mBAAmByF,GAAY,GAEhFiC,EAAgB,eAAWtR,GAAgBA,EAAapV,EAAM,OAASoV,EACvEuR,EAAc,eAAWtR,GAE7BA,EAAYrV,EAAM,OAASqV,EA2B3B,GAzBA4Q,EAAMjf,KAAKqH,EAAE,OAAK,CAChB3I,MAAO,CAACghB,EAAeF,EAAmBV,EAAiB,sBAAwB,IACnF/f,MAAO,CACLN,QAASzF,EAAK,SAA0B,MAE1CtC,MAAOuJ,EAAcA,EAAc,CACjC9D,GAAIojB,GACHI,GAAc,GAAI,CAEnB/W,SAAUmW,EAAqB,IAAM,KACrC,UAAWM,GAAmB,KAC9B,eAAgBH,EAChB,YAAaA,EACb,gBAAiBE,GAChBK,GACHtnB,GAAI,CAEFynB,WAAYvpB,KAAK8mB,WACjB0C,WAAYxpB,KAAKinB,cAEnBrmB,IAAK,iBAAiBuN,OAAO8a,EAAQ,MACrCnoB,IAAK,YACL2oB,UAAU,GACTX,IAECL,EAAgB,CAClB,IAAIiB,EAAe,CACjB/mB,KAAMA,EACNkO,MAAOuW,EACPvP,OAAQA,EACRmQ,cAAehoB,KAAK4mB,qBAAqBC,EAAgBlkB,IAIvD3C,KAAK2gB,yBACP+I,EAAaxB,YAAcloB,KAAKshB,cAAc8F,GAE9CsC,EAAarI,UAAY,WACvB,OAAO7Q,EAAO6Q,UAAU+F,IAG1BsC,EAAalI,YAAc,WACzB,OAAOhR,EAAOgR,YAAY4F,KAK9B,IAAIuC,EAAW3Y,EAAE,OAAK,CACpBtI,MAAO,CACLgQ,QAASb,EAAO9N,QAElB1B,MAAOrI,KAAKomB,gBACX,CAACpmB,KAAKmS,cAAc,OAAuBuX,KAG1CnB,GACFK,EAAMjf,KACNqH,EAAE,KAAM,CACNzQ,YAAa,SACbF,MAAO,CACL,cAAe,OACfiS,KAAM,gBAER1R,IAAK,6BAA6BuN,OAAO8a,MAK7C,IAAIW,EAAuB,eAAW5pB,KAAK+X,cAE3C/X,KAAK+X,aAAapV,EAAM,QAAyB3C,KAAK+X,aAClD8R,EAAqB,eAAW7pB,KAAKgY,aAEzChY,KAAKgY,YAAYrV,EAAM,QAAyB3C,KAAKgY,YACrD4Q,EAAMjf,KAAKqH,EAAE,OAAK,CAChBzQ,YAAa,kBACb8H,MAAO,CAACuhB,GACRlhB,MAAO,CACLN,QAASzF,EAAK,SAA0B,MAE1CtC,MAAOuJ,EAAcA,EAAc,GAAIigB,GAAqB,GAAI,CAE9D/jB,GAAI+iB,EACJtW,SAAU,OAEZ3R,IAAK,sBAAsBuN,OAAO8a,IACjC,CAACU,UACK9C,IAET+B,EAAMjf,KAAKqH,KAEPuX,GAEFK,EAAMjf,KAAKqH,MAKf,OAAO4X,MCnWb,SAAS,EAAQ3f,EAAQC,GAAkB,IAAIC,EAAOC,OAAOD,KAAKF,GAAS,GAAIG,OAAOC,sBAAuB,CAAE,IAAIC,EAAUF,OAAOC,sBAAsBJ,GAAaC,IAAgBI,EAAUA,EAAQC,QAAO,SAAUC,GAAO,OAAOJ,OAAOK,yBAAyBR,EAAQO,GAAKE,eAAgBP,EAAKQ,KAAK1B,MAAMkB,EAAMG,GAAY,OAAOH,EAE9U,SAAS,EAAcU,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAI9B,UAAU+B,OAAQD,IAAK,CAAE,IAAIE,EAAyB,MAAhBhC,UAAU8B,GAAa9B,UAAU8B,GAAK,GAAQA,EAAI,EAAK,EAAQV,OAAOY,IAAS,GAAMC,SAAQ,SAAUrJ,GAAO,EAAgBiJ,EAAQjJ,EAAKoJ,EAAOpJ,OAAsBwI,OAAOe,0BAA6Bf,OAAOgB,iBAAiBP,EAAQT,OAAOe,0BAA0BH,IAAmB,EAAQZ,OAAOY,IAASC,SAAQ,SAAUrJ,GAAOwI,OAAOiB,eAAeR,EAAQjJ,EAAKwI,OAAOK,yBAAyBO,EAAQpJ,OAAe,OAAOiJ,EAE7gB,SAAS,EAAgBS,EAAK1J,EAAKO,GAAiK,OAApJP,KAAO0J,EAAOlB,OAAOiB,eAAeC,EAAK1J,EAAK,CAAEO,MAAOA,EAAOuI,YAAY,EAAMa,cAAc,EAAMC,UAAU,IAAkBF,EAAI1J,GAAOO,EAAgBmJ,EAgB3M,IAAIwf,EAAkB,SAAyB3oB,GAC7C,MAAO,QAAQgN,OAAOhN,GAAS,GAAI,MAI1B,EAAQ,eAAS,EAAc,EAAc,EAAc,GAAI,QAAc,GAAgB,GAAI,CAC1G4oB,WAAY,eAAS,WAIZC,EAAa,aAAIpc,OAAO,CACjCC,OAAQ,CAACwY,GACT3d,MAAO,EACPmV,cAAe,WACb7d,KAAKooB,yBAA2B,MAElCziB,QAAS,CAKPskB,YAAa,WACX,IAAIC,EAAQlqB,KAAKkqB,MACbC,EAAQD,EAAMC,MAAQD,EAAMC,MAAMja,KAAOga,EAAMC,MAAQ,KACvDC,GAAOF,EAAM,cAAgB,IAAI/Y,KAAI,SAAUkZ,GACjD,OAAOA,EAAGna,KAAOma,KAEnB,OAAOF,GAASA,EAAMtE,UAAYsE,EAAMtE,SAAS9b,OAAS,GAAKqgB,GAAOA,EAAIrgB,OAAS,EAAI,OAAAqQ,EAAA,MAAU+P,EAAMtE,UAAUtc,QAAO,SAAU8gB,GAChI,OAAO,OAAAjQ,EAAA,MAAcgQ,EAAKC,MAG5B,IAIFC,gBAAiB,SAAyB/Z,GAExC,IAAK,eAAUA,GACb,OAAQ,EAGV,IAAI8Z,EAAoB,OAAf9Z,EAAGga,QAAmBha,EAAK,eAAQ,KAAMA,GAAI,GACtD,OAAO8Z,EAAKrqB,KAAKiqB,cAAcnZ,QAAQuZ,IAAO,GAGhDrD,kBAAmB,SAA2Bre,EAAMwC,GAClD,GAAIxC,GAAQ3I,KAAKwqB,YAAY7hB,IAASwC,GAASA,EAAMtB,OAAQ,CAC3D,IAAIud,EAAWpnB,KAAKsqB,gBAAgBnf,EAAMtB,QAE1C,GAAIud,GAAY,EAAG,CAEjB,IAAIzkB,EAAO3C,KAAKkZ,cAAckO,GAC9BpnB,KAAKwI,MAAMG,EAAMhG,EAAMykB,EAAUjc,MAIvC4b,mBAAoB,SAA4B5b,GAC9C,OAAOnL,KAAKwY,YAAcxY,KAAKwY,WAAWrN,IAG5Csf,kBAAmB,SAA2Btf,GAE5C,IAAItB,EAASsB,EAAMtB,OACfiC,EAAUX,EAAMW,QAEpB,IAAI9L,KAAK+mB,mBAAmB5b,IAA6B,OAAnBtB,EAAO0gB,SAAqB,eAAgB1gB,IAA+B,IAApBA,EAAOkJ,SAKpG,GAAI,OAAAqH,EAAA,MAAc,CAAC,OAAY,QAAatO,GAE1C,eAAUX,GACVnL,KAAK0qB,kBAAkBvf,QAClB,GAAI,OAAAiP,EAAA,MAAc,CAAC,OAAS,OAAW,OAAW,QAAWtO,GAAU,CAE5E,IAAIsb,EAAWpnB,KAAKsqB,gBAAgBzgB,GAEpC,GAAIud,GAAY,EAAG,CACjB,eAAUjc,GACV,IAAIif,EAAMpqB,KAAKiqB,cACXU,EAAQxf,EAAMuE,SAEd5D,IAAY,QAAa6e,GAAS7e,IAAY,OAEhD,eAAase,EAAI,IACRte,IAAY,QAAY6e,GAAS7e,IAAY,OAEtD,eAAase,EAAIA,EAAIrgB,OAAS,IACrB+B,IAAY,QAAWsb,EAAW,EAE3C,eAAagD,EAAIhD,EAAW,IACnBtb,IAAY,QAAasb,EAAWgD,EAAIrgB,OAAS,GAE1D,eAAaqgB,EAAIhD,EAAW,OAKpCsD,kBAAmB,SAA2Bvf,GAGxCnL,KAAK+mB,mBAAmB5b,IAAU,eAAYA,IAAU,eAAoBnL,KAAKkQ,MAIrFlQ,KAAKgnB,kBAAkB,OAAwB7b,IAEjDyf,gCAAiC,SAAyCzf,GACnEnL,KAAK+mB,mBAAmB5b,IAA0B,IAAhBA,EAAM0f,OAC3C7qB,KAAKgnB,kBAAkB,OAA+B7b,IAG1D2f,sBAAuB,SAA+B3f,GAC/CnL,KAAK+mB,mBAAmB5b,IAC3BnL,KAAKgnB,kBAAkB,OAA4B7b,IAGvD4f,qBAAsB,SAA8B5f,GAC7CnL,KAAK+mB,mBAAmB5b,IAAW,eAAYA,IAClDnL,KAAKgnB,kBAAkB,OAA2B7b,IAOtD6f,YAAa,WACX,IAAIzb,EAAQvP,KAERwC,EAAQxC,KAAKkZ,cACbT,EAAazY,KAAKyY,WAClB6M,EAAetlB,KAAKslB,aACpBrM,EAAcjZ,KAAKiZ,YACnBrB,EAAkB5X,KAAK4X,gBACvB5G,EAAIhR,KAAKE,eACTwoB,EAAqB1oB,KAAKwqB,YAAY,SAA2BxqB,KAAK0gB,sBAEtEkI,EAAQ,GAERqC,EAAQxS,EAAaA,IAAe,KAExC,GAAIwS,EAEFrC,EAAMjf,KAAKshB,OACN,CAML,IAAIC,EAAQ,GACRC,EAAkBrB,IACtBqB,EAAkBnrB,KAAKiY,kBAAkBkT,GAAmBA,EAAkB,KAC9EnrB,KAAK8X,eAAe7N,SAAQ,SAAU+P,GACpC,IAAIpZ,EAAMoZ,EAAMpZ,IACZunB,EAAW2B,EAAgBlpB,GAC3BwqB,EAAoBtB,EAAgBlpB,EAAIyqB,eAC5CH,EAAMtqB,GAAO2O,EAAM0I,kBAAkBkQ,GAAYA,EAAW5Y,EAAM0I,kBAAkBmT,GAEpFA,EAAoBD,KAItBnrB,KAAKooB,yBAA2B8C,EAGhCtC,EAAMjf,KAAK2b,EAAeA,IAAiBtU,KAE3CxO,EAAMyH,SAAQ,SAAUtH,EAAMykB,GAE5BwB,EAAMjf,KAAK4F,EAAM+Y,eAAe3lB,EAAMykB,OAGxCwB,EAAMjf,KAAKsP,EAAcA,IAAgBjI,KAGzC4X,EAAMjf,KAAKiO,EAAkBA,IAAoB5G,KAInD,IAAIsa,EAAW,CACbC,SAAUvrB,KAAK4qB,gCAKfY,YAAaxrB,KAAK8qB,sBAElBW,SAAUzrB,KAAK+qB,sBAIbrC,IACF4C,EAASrf,MAAQjM,KAAK0qB,kBACtBY,EAAS5Y,QAAU1S,KAAKyqB,mBAI1B,IAAIiB,EAAS1a,EAAE,OAAQ,CACrB3I,MAAOrI,KAAK+pB,YAAc,KAC1BrhB,MAAO,eAAW,OAAa1I,KAAK2rB,QAGpC7pB,GAAIwpB,EACJxqB,IAAK,SACJ8nB,GAEH,OAAO8C,O,6DCpOb,oIAMWhjB,EAAQ,CACjBkjB,QAAS,eAAS,QAClBC,YAAa,eAAS,SAMbC,EAAe,aAAIle,OAAO,CACnClF,MAAOA,EACPuF,SAAU,CACR8d,UAAW,WAGT,OAAO/rB,KAAK6U,UAAY7U,KAAKkX,OAAO,aAAe,OAGvDvR,QAAS,CACPqmB,cAAe,WACb,IAAIJ,EAAU5rB,KAAK4rB,QACfC,EAAc7rB,KAAK6rB,YACnB7a,EAAIhR,KAAKE,eACT+rB,EAAWjb,IACXkb,EAAiBlsB,KAAKiY,kBAAkB,QAY5C,OAVIiU,GAAkBN,GAAWC,KAC/BI,EAAWjb,EAAE,UAAW,CACtB3Q,MAAO,CACLyF,GAAI9F,KAAK+rB,WAEXzjB,SAAU4jB,EAAiB,GAAK,eAAWL,EAAaD,GACxDhrB,IAAK,WACJZ,KAAKmS,cAAc,UAGjB8Z,O,wQCnCT,EAAe,SAAsBrrB,EAAKO,GAC5C,IAAI6Y,EAAQ,KA0BZ,OAxBI,eAAS7Y,GAEX6Y,EAAQ,CACNpZ,IAAKA,EACLymB,MAAOlmB,GAEA,eAAWA,GAEpB6Y,EAAQ,CACNpZ,IAAKA,EACLsZ,UAAW/Y,GAEJ,eAASA,IAClB6Y,EAAQ,eAAM7Y,GACd6Y,EAAMpZ,IAAMoZ,EAAMpZ,KAAOA,IACN,IAAVO,IAIT6Y,EAAQ,CACNpZ,IAAKA,IAIFoZ,GAKE,EAAkB,SAAyBmS,EAAY3pB,GAChE,IAAIqV,EAAS,GA0Bb,GAxBI,eAAQsU,IAEVA,EAAW5iB,OAAO+S,EAAA,MAAUrS,SAAQ,SAAU+Z,GAC5C,GAAI,eAASA,GACXnM,EAAOlO,KAAK,CACV/I,IAAKojB,EACLqD,MAAO,eAAUrD,UAEd,GAAI,eAASA,IAAMA,EAAEpjB,KAAO,eAASojB,EAAEpjB,KAE5CiX,EAAOlO,KAAK,eAAMqa,SACb,GAAI,eAASA,IAAyB,IAAnB,eAAKA,GAAGja,OAAc,CAE9C,IAAInJ,EAAM,eAAKojB,GAAG,GACdhK,EAAQ,EAAapZ,EAAKojB,EAAEpjB,IAE5BoZ,GACFnC,EAAOlO,KAAKqQ,OAOE,IAAlBnC,EAAO9N,QAAgB,eAAQvH,IAAUA,EAAMuH,OAAS,EAAG,CAC7D,IAAIqiB,EAAS5pB,EAAM,GACnB,eAAK4pB,GAAQniB,SAAQ,SAAUsP,GACxB,OAAmBA,IACtB1B,EAAOlO,KAAK,CACV/I,IAAK2Y,EACL8N,MAAO,eAAU9N,QAOzB,IAAI8S,EAAO,GACX,OAAOxU,EAAOtO,QAAO,SAAUya,GAC7B,OAAKqI,EAAKrI,EAAEpjB,OACVyrB,EAAKrI,EAAEpjB,MAAO,EACdojB,EAAEqD,MAAQ,eAASrD,EAAEqD,OAASrD,EAAEqD,MAAQ,eAAUrD,EAAEpjB,MAC7C,OCnFb,SAASoI,EAAQC,EAAQC,GAAkB,IAAIC,EAAOC,OAAOD,KAAKF,GAAS,GAAIG,OAAOC,sBAAuB,CAAE,IAAIC,EAAUF,OAAOC,sBAAsBJ,GAAaC,IAAgBI,EAAUA,EAAQC,QAAO,SAAUC,GAAO,OAAOJ,OAAOK,yBAAyBR,EAAQO,GAAKE,eAAgBP,EAAKQ,KAAK1B,MAAMkB,EAAMG,GAAY,OAAOH,EAE9U,SAASS,EAAcC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAI9B,UAAU+B,OAAQD,IAAK,CAAE,IAAIE,EAAyB,MAAhBhC,UAAU8B,GAAa9B,UAAU8B,GAAK,GAAQA,EAAI,EAAKd,EAAQI,OAAOY,IAAS,GAAMC,SAAQ,SAAUrJ,GAAOsJ,EAAgBL,EAAQjJ,EAAKoJ,EAAOpJ,OAAsBwI,OAAOe,0BAA6Bf,OAAOgB,iBAAiBP,EAAQT,OAAOe,0BAA0BH,IAAmBhB,EAAQI,OAAOY,IAASC,SAAQ,SAAUrJ,GAAOwI,OAAOiB,eAAeR,EAAQjJ,EAAKwI,OAAOK,yBAAyBO,EAAQpJ,OAAe,OAAOiJ,EAE7gB,SAASK,EAAgBI,EAAK1J,EAAKO,GAAiK,OAApJP,KAAO0J,EAAOlB,OAAOiB,eAAeC,EAAK1J,EAAK,CAAEO,MAAOA,EAAOuI,YAAY,EAAMa,cAAc,EAAMC,UAAU,IAAkBF,EAAI1J,GAAOO,EAAgBmJ,EAc3M,IAAIG,EAAkB,eAAe,QAAS,CAC5C9B,KAAM,OACN+B,aAAc,KAEZG,EAAaJ,EAAgBK,MAC7BC,EAAaN,EAAgB/B,MAC7BsC,EAAkBP,EAAgBQ,KAClCC,EAAmBT,EAAgBU,MAI5B,EAAQ,eAASvB,EAAcA,EAAc,GAAImB,GAAa,GAAIb,EAAgB,CAC3F2N,OAAQ,eAAS,OAAiB,MAElCrV,MAAO,eAAS,OAAiB,IAGjCgmB,WAAY,eAAS,SACpBxd,EAAiB,eAAS,OAAiB,OAGnCshB,EAAa,aAAI1e,OAAO,CACjCC,OAAQ,CAAChD,GACTnC,MAAO,EACPhG,KAAM,WACJ,IAAIF,EAAQxC,KAAKwC,MACjB,MAAO,CAGLua,WAAY,eAAQva,GAASA,EAAM2Y,QAAU,KAGjDlN,SAAU,CACR6J,eAAgB,WAGd,OAAO,EAAgB9X,KAAK6X,OAAQ7X,KAAK+c,aAE3CqB,kBAAmB,WAKjB,IAAIoI,EAAUxmB,KAAKwmB,QACnB,OAAOxmB,KAAK8X,eAAeiC,QAAO,SAAUzP,EAAK0Z,GAI/C,GAFA1Z,EAAI0Z,EAAEpjB,KAAO,eAAMojB,GAEfA,EAAE9J,UAAW,CAEf,IAAIA,EAAY8J,EAAE9J,UAEd,eAASA,IAAc,eAAWsM,EAAQtM,IAC5CA,EAAYsM,EAAQtM,GACV,eAAWA,KAErBA,OAAY/R,GAIdmC,EAAI0Z,EAAEpjB,KAAKsZ,UAAYA,EAGzB,OAAO5P,IACN,KAEL4O,cAAe,WAEb,OAAQlZ,KAAKue,gBAAkBve,KAAKwe,aAAexe,KAAK8c,eAAiB9c,KAAK+c,YAE9E,IAAI5B,SAEN0E,QAAS,WAEP,MAAO,CACLtW,OAAQvJ,KAAKmc,YACb6C,OAAQhf,KAAKkf,YACbD,SAAUjf,KAAKmf,cACf1L,QAAS,OAAA9E,EAAA,MAAQ,eAAU3O,KAAKyT,QAAS,GAAI,GAC7C3F,YAAa,OAAAa,EAAA,MAAQ,eAAU3O,KAAK8N,YAAa,GAAI,GACrD6Q,OAAQ3e,KAAK2e,UAInBvP,MAAO,CACL5M,MAAO,SAAe6M,GAEpBrP,KAAK+c,WAAa,eAAQ1N,GAAYA,EAAS8L,QAAU,IAG3DjC,cAAe,SAAuB7J,EAAUC,GACzC,eAAWD,EAAUC,IACxBtP,KAAKwI,MAAM0C,EAAkBmE,IAIjCwQ,QAAS,SAAiBxQ,EAAUC,GAE7B,eAAWD,EAAUC,IACxBtP,KAAKwI,MAAM,OAA4B6G,KAI7CgQ,QAAS,WAEPrf,KAAKwI,MAAM0C,EAAkBlL,KAAKkZ,gBAEpCvT,QAAS,CAEP6e,kBAAmB,SAA2B5jB,GAC5C,IAAIoZ,EAAQha,KAAKoe,kBAAkBxd,GAGnC,OAAOoZ,EAAQA,EAAME,eAAY/R,O,oCCnIvC,sFAKWO,EAAQ,eAAsB,OAAU,SAMxC6jB,EAAmB,aAAI3e,OAAO,CACvC7M,KAAM,QACNyrB,QAAS,OACT9jB,MAAOA,EACPuF,SAAU,CACRwX,IAAK,WACH,MAAO,U,kCCjBb,SAASzc,EAAQC,EAAQC,GAAkB,IAAIC,EAAOC,OAAOD,KAAKF,GAAS,GAAIG,OAAOC,sBAAuB,CAAE,IAAIC,EAAUF,OAAOC,sBAAsBJ,GAAaC,IAAgBI,EAAUA,EAAQC,QAAO,SAAUC,GAAO,OAAOJ,OAAOK,yBAAyBR,EAAQO,GAAKE,eAAgBP,EAAKQ,KAAK1B,MAAMkB,EAAMG,GAAY,OAAOH,EAE9U,SAASS,EAAcC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAI9B,UAAU+B,OAAQD,IAAK,CAAE,IAAIE,EAAyB,MAAhBhC,UAAU8B,GAAa9B,UAAU8B,GAAK,GAAQA,EAAI,EAAKd,EAAQI,OAAOY,IAAS,GAAMC,SAAQ,SAAUrJ,GAAOsJ,EAAgBL,EAAQjJ,EAAKoJ,EAAOpJ,OAAsBwI,OAAOe,0BAA6Bf,OAAOgB,iBAAiBP,EAAQT,OAAOe,0BAA0BH,IAAmBhB,EAAQI,OAAOY,IAASC,SAAQ,SAAUrJ,GAAOwI,OAAOiB,eAAeR,EAAQjJ,EAAKwI,OAAOK,yBAAyBO,EAAQpJ,OAAe,OAAOiJ,EAE7gB,SAASK,EAAgBI,EAAK1J,EAAKO,GAAiK,OAApJP,KAAO0J,EAAOlB,OAAOiB,eAAeC,EAAK1J,EAAK,CAAEO,MAAOA,EAAOuI,YAAY,EAAMa,cAAc,EAAMC,UAAU,IAAkBF,EAAI1J,GAAOO,EAAgBmJ,EAJ3M,0KAOO,IAAImiB,EAAyB,gBACzBC,EAAwB,cACxBC,EAAyB,eAGzBC,EAAqB,CAACH,EAAwBC,EAAuBC,GAAwB5S,QAAO,SAAUpG,EAAQ/S,GAC/H,OAAOgJ,EAAcA,EAAc,GAAI+J,GAAS,GAAIzJ,EAAgB,GAAItJ,GAAK,MAC5E,IAGQisB,EAAe,CAAC,IAAK,MAChC,SAAU,WACV,uCAAwC,wCAAyC,0CAA2C,gBAAiB,kBAAmB,kBAAmB,oBAAqB,6CAA6CpT,KAAK,M,oCCnB1P,2GAASvP,EAAgBI,EAAK1J,EAAKO,GAAiK,OAApJP,KAAO0J,EAAOlB,OAAOiB,eAAeC,EAAK1J,EAAK,CAAEO,MAAOA,EAAOuI,YAAY,EAAMa,cAAc,EAAMC,UAAU,IAAkBF,EAAI1J,GAAOO,EAAgBmJ,EAOpM,IAAI5B,EAAQ,eAAsB,CACvCyd,MAAO,eAAS,QAAmB,GACnCV,IAAK,eAAS,OAAkB,OAChCC,cAAe,eAAS,OAAkB,QACzC,QAGQoH,EAA2B,aAAIlf,OAAO,CAC/C7M,KAAM,OACN4kB,YAAY,EACZjd,MAAOA,EACP5I,OAAQ,SAAgBkR,EAAG4M,GACzB,IAAIlV,EAAQkV,EAAKlV,MACbhG,EAAOkb,EAAKlb,KACZmjB,EAAWjI,EAAKiI,SAChBH,EAAgBhd,EAAMgd,cACtBxZ,EAA0B,QAAlBwZ,EAA0B,QAA4B,WAAlBA,EAA6B,MAE7EA,EACA,OAAO1U,EAAEtI,EAAM+c,IAAK,eAAU/iB,EAAM,CAClCnC,YAAa,cACb8H,MAAO6B,EAAgB,CACrB,oBAAqBxB,EAAMyd,OAC1B,cAAchY,OAAOjC,GAAQA,KAC9B2Z,O,oCC/BR,kGAKWnd,EAAQ,eAAsB,CACvC+c,IAAK,eAAS,OAAkB,QAC/B,QAGQsH,EAA0B,aAAInf,OAAO,CAC9C7M,KAAM,OACN4kB,YAAY,EACZjd,MAAOA,EACP5I,OAAQ,SAAgBkR,EAAG4M,GACzB,IAAIlV,EAAQkV,EAAKlV,MACbhG,EAAOkb,EAAKlb,KACZmjB,EAAWjI,EAAKiI,SACpB,OAAO7U,EAAEtI,EAAM+c,IAAK,eAAU/iB,EAAM,CAClCnC,YAAa,eACXslB,O,wKClBJmH,EAAa,SAAoB7rB,GACnC,MAAO,KAAOA,GAKL,EAAY,SAAmBA,GACxCA,EAAQ,eAASA,GACjB,IAAI4I,EAAS5I,EAAM4I,OACfkjB,EAAgB9rB,EAAM+rB,WAAW,GACrC,OAAO/rB,EAAMgsB,MAAM,IAAIpT,QAAO,SAAUpG,EAAQyZ,EAAMvc,GACpD,IAAIwc,EAAWlsB,EAAM+rB,WAAWrc,GAEhC,OAAiB,IAAbwc,EACK1Z,EAAS,IAKL,MAAb0Z,GACAA,GAAY,GAAUA,GAAY,IACxB,IAAVxc,GAAewc,GAAY,IAAUA,GAAY,IAEvC,IAAVxc,GAAewc,GAAY,IAAUA,GAAY,IAA4B,KAAlBJ,EAElDtZ,EAASqZ,EAAW,GAAG7e,OAAOkf,EAASpS,SAAS,IAAK,MAKpD,IAAVpK,GACa,KAAbwc,GACW,IAAXtjB,EAES4J,EAASqZ,EAAWI,GAK7BC,GAAY,KACC,KAAbA,GACa,KAAbA,GACAA,GAAY,IAAUA,GAAY,IAClCA,GAAY,IAAUA,GAAY,IAClCA,GAAY,IAAUA,GAAY,IAEzB1Z,EAASyZ,EAKXzZ,EAASqZ,EAAWI,KAC1B,K,gJCjDM,EAAQ,eAAsB,CACvC3H,IAAK,eAAS,OAAkB,QAC/B,QAGQ6H,EAAwB,aAAI1f,OAAO,CAC5C7M,KAAM,OACN4kB,YAAY,EACZjd,MAAO,EACP5I,OAAQ,SAAgBkR,EAAG4M,GACzB,IAAIlV,EAAQkV,EAAKlV,MACbhG,EAAOkb,EAAKlb,KACZmjB,EAAWjI,EAAKiI,SACpB,OAAO7U,EAAEtI,EAAM+c,IAAK,eAAU/iB,EAAM,CAClCnC,YAAa,aACXslB,MCpBR,SAAS3b,EAAgBI,EAAK1J,EAAKO,GAAiK,OAApJP,KAAO0J,EAAOlB,OAAOiB,eAAeC,EAAK1J,EAAK,CAAEO,MAAOA,EAAOuI,YAAY,EAAMa,cAAc,EAAMC,UAAU,IAAkBF,EAAI1J,GAAOO,EAAgBmJ,EAOpM,IAAI,EAAQ,eAAsB,CACvCxE,GAAI,eAAS,QACbkR,OAAQ,eAAS,QAAmB,GACpCyO,IAAK,eAAS,OAAkB,SAChC8H,YAAa,eAAS,OAAkB,UACvC,QAGQC,EAAyB,aAAI5f,OAAO,CAC7C7M,KAAM,OACN4kB,YAAY,EACZjd,MAAO,EACP5I,OAAQ,SAAgBkR,EAAG4M,GACzB,IAAIlV,EAAQkV,EAAKlV,MACbhG,EAAOkb,EAAKlb,KACZmjB,EAAWjI,EAAKiI,SACpB,OAAO7U,EAAEtI,EAAM+c,IAAK,eAAU/iB,EAAM,CAClC2F,MAAO6B,EAAgB,CACrB,aAAcxB,EAAMsO,QACnB,QAAQ7I,OAAOzF,EAAM6kB,aAAc7kB,EAAM6kB,aAC5CltB,MAAO,CACLyF,GAAI4C,EAAM5C,MAEV+f,MCzBG,EAAQ,eAAsB,CACvC4H,SAAU,eAAS,QACnBC,UAAW,eAAS,QAAmB,GACvC5nB,GAAI,eAAS,QACbwM,KAAM,eAAS,QAEfqb,MAAO,eAAS,OAAmB,MACnClI,IAAK,eAAS,OAAkB,OAChCmI,QAAS,eAAS,QAAmB,IACpC,QAGQC,EAAoC,aAAIjgB,OAAO,CACxD7M,KAAM,OACN4kB,YAAY,EACZjd,MAAO,EACP5I,OAAQ,SAAgBkR,EAAG4M,GACzB,IAAIlV,EAAQkV,EAAKlV,MACbhG,EAAOkb,EAAKlb,KACZmjB,EAAWjI,EAAKiI,SAChB+H,EAAUllB,EAAMklB,QAChBH,EAAW/kB,EAAM+kB,SACjBntB,GAA2B,IAApBoI,EAAMglB,YAAsC,IAAhBhlB,EAAMilB,MAC7C,OAAO3c,EAAEtI,EAAM+c,IAAK,eAAU/iB,EAAM,CAClC2F,MAAO,CACL,UAAW/H,EACX,oBAAqBstB,EACrB,kBAAmBA,GAErBvtB,MAAO,CACLyF,GAAI4C,EAAM5C,IAAM,KAChBwM,KAAM5J,EAAM4J,MAAQ,KACpB,YAAamb,GAAY,KACzB,cAAeA,EAAW,OAAS,QAEnC5H,MCnCG,EAAQ,eAAsB,CACvC4H,SAAU,eAAS,QACnBC,UAAW,eAAS,QAAmB,GACvC5nB,GAAI,eAAS,QACbwM,KAAM,eAAS,QAEfqb,MAAO,eAAS,OAAmB,MACnClI,IAAK,eAAS,OAAkB,OAChCmI,QAAS,eAAS,QAAmB,IACpC,QAGQE,EAAkC,aAAIlgB,OAAO,CACtD7M,KAAM,OACN4kB,YAAY,EACZjd,MAAO,EACP5I,OAAQ,SAAgBkR,EAAG4M,GACzB,IAAIlV,EAAQkV,EAAKlV,MACbhG,EAAOkb,EAAKlb,KACZmjB,EAAWjI,EAAKiI,SAChB+H,EAAUllB,EAAMklB,QAChBH,EAAW/kB,EAAM+kB,SACjBntB,GAA2B,IAApBoI,EAAMglB,YAAsC,IAAhBhlB,EAAMilB,MAC7C,OAAO3c,EAAEtI,EAAM+c,IAAK,eAAU/iB,EAAM,CAClC2F,MAAO,CACL,UAAW/H,EACX,kBAAmBstB,EACnB,gBAAiBA,GAEnBvtB,MAAO,CACLyF,GAAI4C,EAAM5C,IAAM,KAChBwM,KAAM5J,EAAM4J,MAAQ,KACpB,YAAamb,GAAY,KACzB,cAAeA,EAAW,OAAS,QAEnC5H,MCxCR,SAAS7c,EAAQC,EAAQC,GAAkB,IAAIC,EAAOC,OAAOD,KAAKF,GAAS,GAAIG,OAAOC,sBAAuB,CAAE,IAAIC,EAAUF,OAAOC,sBAAsBJ,GAAaC,IAAgBI,EAAUA,EAAQC,QAAO,SAAUC,GAAO,OAAOJ,OAAOK,yBAAyBR,EAAQO,GAAKE,eAAgBP,EAAKQ,KAAK1B,MAAMkB,EAAMG,GAAY,OAAOH,EAE9U,SAASS,EAAcC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAI9B,UAAU+B,OAAQD,IAAK,CAAE,IAAIE,EAAyB,MAAhBhC,UAAU8B,GAAa9B,UAAU8B,GAAK,GAAQA,EAAI,EAAKd,EAAQI,OAAOY,IAAS,GAAMC,SAAQ,SAAUrJ,GAAO,EAAgBiJ,EAAQjJ,EAAKoJ,EAAOpJ,OAAsBwI,OAAOe,0BAA6Bf,OAAOgB,iBAAiBP,EAAQT,OAAOe,0BAA0BH,IAAmBhB,EAAQI,OAAOY,IAASC,SAAQ,SAAUrJ,GAAOwI,OAAOiB,eAAeR,EAAQjJ,EAAKwI,OAAOK,yBAAyBO,EAAQpJ,OAAe,OAAOiJ,EAE7gB,SAAS,EAAgBS,EAAK1J,EAAKO,GAAiK,OAApJP,KAAO0J,EAAOlB,OAAOiB,eAAeC,EAAK1J,EAAK,CAAEO,MAAOA,EAAOuI,YAAY,EAAMa,cAAc,EAAMC,UAAU,IAAkBF,EAAI1J,GAAOO,EAAgBmJ,EAyB3M,IAAIyjB,EAAS,CAAC,QAAS,SAAU,YAE7BC,EAAiBD,EAAO5c,KAAI,SAAUqI,GACxC,MAAO,GAAGrL,OAAOqL,EAAG,uBACnBC,OAECwU,EAA8B,GAAG9f,OAAO4f,EAAQ,CAAC,IAAK,SAAU,UAGzD,EAAgB,WACzB,OAAO,eAAsB,eAASnkB,EAAcA,EAAcA,EAAcA,EAAc,GAAI,QAAU,QAAiB,iBAAyBmQ,QAAO,SAAUrR,EAAOwlB,GAO5K,OALAxlB,EAAM,eAAewlB,EAAY,gBAAkB,eAAS,QAE5DxlB,EAAM,eAAewlB,EAAY,eAAiB,eAAS,QAE3DxlB,EAAM,eAAewlB,EAAY,cAAgB,eAAS,QACnDxlB,IACN,eAAO,QAAS,GAAI,CACrBylB,YAAa,eAAS,QACtB/hB,SAAU,eAAS,QAAmB,GACtCgiB,iBAAkB,eAAS,OAAkB,aAC7CC,gBAAiB,eAAS,QAC1BhH,MAAO,eAAS,QAChBiH,WAAY,eAAS,QACrBC,SAAU,eAAS,QACnBC,UAAW,eAAS,QACpBC,YAAa,eAAS,QAAmB,GACzCb,QAAS,eAAS,QAAmB,GACrCc,cAAe,eAAS,QACxB7X,UAAW,eAAS,QAAmB,MACpC,SAMI9R,EAAa,CACtBhE,KAAM,OACN8M,OAAQ,CAAC,OAAS,OAAgB,QAElC,YAME,cAFO7N,KAAK0I,MAEL1I,KAAK0I,MAAQ,KAGtBhG,KAAM,WACJ,MAAO,CACLisB,gBAAiB,OAGrB1gB,SAAU,CACR2gB,gBAAiB,WACf,OAAO5uB,KAAK6uB,YAAY7uB,KAAK2rB,OAAQ,YAEvCmD,kBAAmB,WACjB,OAAO9uB,KAAK+uB,gBAAgB/uB,KAAK2rB,OAAQ,UAE3CqD,cAAe,WACb,OAAOhvB,KAAK6uB,YAAY7uB,KAAK2rB,OAAQ,UAEvCsD,aAAc,WAGZ,OAAO,eAAKjvB,KAAK4uB,iBAAiB7kB,OAAS,GAAK,eAAK/J,KAAKgvB,eAAejlB,OAAS,IAGtFqF,MAAO,CACLuf,gBAAiB,SAAyBtf,EAAUC,GAC9CD,IAAaC,GACftP,KAAKkvB,sBAAsB7f,EAAUC,KAI3C+P,QAAS,WACP,IAAI9P,EAAQvP,KAEZA,KAAKwP,WAAU,WAGbD,EAAM2f,sBAAsB3f,EAAMof,qBAGtChpB,QAAS,CACPopB,gBAAiB,SAAyBrmB,EAAOymB,GAC/C,OAAO,iBAAyBpV,QAAO,SAAUpG,EAAQua,GACvD,IAAIkB,EAAY1mB,EAAM,eAAewlB,EAAY,GAAG/f,OAAOghB,EAAQ,YAAc,KAMjF,OAJIC,GACFzb,EAAOhK,KAAK,CAAC,OAAQukB,EAAYkB,GAAW7lB,OAAO+S,EAAA,MAAU7C,KAAK,MAG7D9F,IACN,KAELkb,YAAa,SAAqBnmB,EAAOymB,GACvC,OAAO,iBAAyBpV,QAAO,SAAUpG,EAAQua,GACvD,IAAIkB,EAAY1mB,EAAM,eAAewlB,EAAY,GAAG/f,OAAOghB,EAAQ,UAmBnE,OAhBAC,EAA0B,KAAdA,IAA0BA,IAAa,GAE9C,eAAUA,IAA4B,SAAdA,IAE3BA,EAAY,eAAUA,EAAW,GAEjCA,EAAYA,EAAY,GAAIA,GAM1BA,IACFzb,EAAOua,IAAe,eAAUkB,GAAa,MAAQ,SAAWA,GAG3Dzb,IACN,KAKLub,sBAAuB,SAA+B7f,EAAUC,GAC9D,IAAIif,EAAWvuB,KAAKuuB,SAEpB,GAAI,QAAcA,EAAU,CAE1B,IAAIc,EAAS,eAAO,IAAIlhB,OAAO,EAAUogB,IAAYvuB,KAAKkqB,MAAMhX,SAEhE,GAAImc,EAAQ,CACV,IAAIC,EAAO,mBACPC,GAAUlgB,GAAY,IAAI8d,MAAM,QAChCqC,GAAUlgB,GAAY,IAAI6d,MAAM,QAGhCsC,GAAO,eAAQJ,EAAQC,IAAS,IAAInC,MAAM,QAAgB5jB,QAAO,SAAUzD,GAC7E,OAAQ,OAAAsU,EAAA,MAAcoV,EAAQ1pB,MAC7BqI,OAAOohB,GAAQhmB,QAAO,SAAUzD,EAAI+K,EAAO4e,GAC5C,OAAOA,EAAI3e,QAAQhL,KAAQ+K,KAC1BtH,OAAO+S,EAAA,MAAU7C,KAAK,KAAKiW,OAE1BD,EACF,eAAQJ,EAAQC,EAAMG,GAEtB,eAAWJ,EAAQC,MAK3BK,cAAe,SAAuBxkB,GAIpC,IAAInL,KAAKuuB,SAAT,CAIA,IAAI1kB,EAASsB,EAAMtB,OACf0gB,EAAU1gB,EAASA,EAAO0gB,QAAU,GAKxC,IAAsD,IAAlD0D,EAA4Bnd,QAAQyZ,GAAxC,CAKA,IAAIqF,EAAS,eAAU5B,EAAgBhuB,KAAKkqB,MAAMhX,SAAS3J,OAAO,QAE5C,IAAlBqmB,EAAO7lB,QACT,eAAa6lB,EAAO,QAI1B9vB,OAAQ,SAAgBkR,GACtB,IAAI2c,EAAQ3tB,KAAK6vB,cACbzB,EAAmBpuB,KAAKouB,iBACxBa,EAAejvB,KAAKivB,aACpBV,EAAWvuB,KAAKuuB,SAChBpc,EAAgBnS,KAAKmS,cACrB+E,EAASlX,KAAKkX,OACd0W,EAAU5tB,KAAK4tB,QACf9nB,EAAKoR,IACL4Y,GAAcvB,EACdwB,EAAS/e,IACTgf,EAAe7d,EAAc,SAAoBnS,KAAKqnB,MACtD4I,EAAUD,EAAe9Y,EAAO,cAAgB,KAEpD,GAAI8Y,GAAgBf,EAAc,CAChC,IAAIT,EAAYxuB,KAAKwuB,UACjBQ,EAAgBhvB,KAAKgvB,cACrBkB,EAAWJ,EAAa,SAAW,QAEnC9vB,KAAKyuB,aACHuB,IACFD,EAAS/e,EAAEkf,EAAU,CACnB7nB,MAAO,UACPhI,MAAO,CACLyF,GAAImqB,EACJE,IAAK5B,GAAY,OAElB,CAACyB,KAGND,EAAS/e,EAAEie,EAAe,OAAO,MAAO,CACtCvmB,MAAOumB,EAAeD,EAAgB,IACrC,CAACe,KAEJA,EAAS/e,EAAEie,EAAe,OAAOiB,EAAU,CACzCpuB,GAAIguB,EAAa,CACf7jB,MAAOjM,KAAK2vB,eACV,GACJjnB,MAAOumB,EAAerlB,EAAcA,EAAc,GAAIolB,GAAgB,GAAI,CACxEvJ,IAAKyK,IACF,GACL7vB,MAAO,CACLyF,GAAImqB,EACJE,IAAK5B,GAAY,KAGjBhc,SAAUud,EAAa,KAAO,MAEhCznB,MAAO,CACPynB,EAAa,mBAAqB,GAIlCb,GAAgBa,EAAa,iBAAmB,IAC/Cb,GAAgBa,EAAa,OAAS,GAEtCb,GAAiBa,EAAyB,GAAZ,UAAgBtB,EAAY,kBAAkBrgB,OAAOqgB,GAAa,GAAIxuB,KAAK8uB,kBAAmB9uB,KAAKsuB,aACjI,CAAC0B,IAIR,IAAII,EAAmBpf,IACnBqf,EAAyBle,EAAc,SAA+BnS,KAAKquB,gBAC3EiC,EAAoBD,EAAyBnZ,EAAO,yBAA2B,KAE/EmZ,IACFD,EAAmBpf,EAAE6c,EAAsB,CACzCnlB,MAAO,CACL+kB,SAAUW,EACVtoB,GAAIwqB,EACJhe,KAAM8b,EAAmB,QAAU,KAEnCT,MAAOA,EACPC,QAASA,GAEXvtB,MAAO,CACLkS,SAAU8d,EAAyB,KAAO,OAE3C,CAACA,KAGN,IAAIE,EAAiBvf,IACjBwf,EAAuBre,EAAc,SAA6BnS,KAAK0uB,cACvE+B,EAAkBD,EAAuBtZ,EAAO,uBAAyB,KAEzEsZ,IACFD,EAAiBvf,EAAE8c,EAAoB,CACrCplB,MAAO,CACL+kB,SAAUW,EACVtoB,GAAI2qB,EACJne,KAAM8b,EAAmB,QAAU,KAEnCT,MAAOA,EACPC,QAASA,GAEXvtB,MAAO,CACLkS,SAAUie,EAAuB,KAAO,OAEzC,CAACA,KAGN,IAAIE,EAAe1f,IACf2f,EAAqBxe,EAAc,SAA0BnS,KAAKmuB,YAClEyC,EAAgBD,EAAqBzZ,EAAO,oBAAsB,KAElEyZ,IACFD,EAAe1f,EAAEwc,EAAW,CAC1BntB,MAAO,CACLyF,GAAI8qB,EACJre,SAAU,OAEX,CAACoe,KAON,IAAIhC,EAAkB3uB,KAAK2uB,gBAAkB,CAACiC,GAAyB,IAAVjD,EAAkB2C,EAAoB,MAAgB,IAAV3C,EAAiB8C,EAAkB,MAAMlnB,OAAO+S,EAAA,MAAU7C,KAAK,MAAQ,KAC5KoX,EAAW7f,EAAEie,EAAe,OAAO,MAAO,CAC5CvmB,MAAOumB,EAAejvB,KAAK4uB,gBAAkB,GAC7C9tB,IAAK,WACJ,CAACqR,EAAc,OAAmB,CACnCwc,gBAAiBA,EACjBiC,cAAeA,EACf9qB,GAAIA,EACJmqB,QAASA,KACLjf,IAAKof,EAAkBG,EAAgBG,IAK7C,OAAO1f,EAAE8e,EAAa,WAAab,EAAe3B,EAAW,MAAO,CAClE/sB,YAAa,aACb8H,MAAO,CAAC,CACN,gBAAiBrI,KAAK6W,WACrB7W,KAAK8wB,YACRzwB,MAAO,CACLyF,GAAIA,EACJsG,SAAU0jB,EAAa9vB,KAAKoM,SAAW,KACvCkG,KAAMwd,EAAa,KAAO,QAC1B,eAAgB9vB,KAAKwX,oBAGrB,kBAAmBsY,GAAcb,EAAegB,EAAU,OAE3DhB,GAAgBa,EAAa,CAAC9e,EAAEsc,EAAU,CAACyC,EAAQc,KAAc,CAACd,EAAQc,O,oCClWjF,oIAMWnoB,EAAQ,CACjBqoB,UAAW,eAAS,QAAmB,GAGvCC,eAAgB,eAAS,QAEzB7c,YAAa,eAAS,QACtB8c,WAAY,eAAS,QACrBC,aAAc,eAAS,SAIdC,EAAa,aAAIvjB,OAAO,CACjClF,MAAOA,EACP/C,QAAS,CACPyrB,kBAAmB,WACjB,IAAIpgB,EAAIhR,KAAKE,eAEb,OAAIF,KAAKiY,kBAAkB,QAClBjH,EAAE,OAAQ,CACf3I,MAAOrI,KAAKixB,YAAc,KAC1BvoB,MAAO,CACLyL,YAAanU,KAAKmU,aAAenU,KAAKqxB,aAAe,MAEvDzwB,IAAK,mBACJZ,KAAKmS,cAAc,OAAuB,CAC3C3P,MAAOxC,KAAKkZ,cAAciC,QAC1BtD,OAAQ7X,KAAK8X,eAAeqD,QAC5BjD,QAASlY,KAAK8X,eAAe/N,UAI1BiH,KAETsgB,YAAa,WAEX,OAAOtxB,KAAK+wB,UAAY/wB,KAAKuxB,aAAY,GAAQvxB,KAAKoxB,yB,kCC1C5D,kCAiBO,IAAII,EAAa,SAAoBpX,EAAOqX,GAKjD,OAAOrX,EAAMjJ,KAAI,SAAU8Q,EAAGpR,GAC5B,MAAO,CAACA,EAAOoR,MACd3I,KAAK,SAAU2I,EAAGC,GACnB,OAAOliB,KAAKiiB,EAAE,GAAIC,EAAE,KAAOD,EAAE,GAAKC,EAAE,IACpCwP,KAAKD,IAAYtgB,KAAI,SAAU2O,GAC/B,OAAOA,EAAE,Q,mGC3BT/W,E,4JCKA4oB,EAAY,CAAC,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,MAAO,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,MAAMxgB,KAAI,SAAUmR,GACpH,OAAOA,EAAO+I,iBAGL,EAAc,SAAqB/I,GAE5C,IAAIsP,EAAQ,eAAStP,GAAQ+I,cAAcpN,QAAQ,OAAsB,IAAIkP,MAAM,KAC/E0E,EAAUD,EAAMzW,MAAM,EAAG,GAAG1B,KAAK,KACjCqY,EAAUF,EAAM,GACpB,OAAO,OAAAxX,EAAA,MAAcuX,EAAWE,IAAY,OAAAzX,EAAA,MAAcuX,EAAWG,I,gJDZvE,SAAS9oB,EAAQC,EAAQC,GAAkB,IAAIC,EAAOC,OAAOD,KAAKF,GAAS,GAAIG,OAAOC,sBAAuB,CAAE,IAAIC,EAAUF,OAAOC,sBAAsBJ,GAAaC,IAAgBI,EAAUA,EAAQC,QAAO,SAAUC,GAAO,OAAOJ,OAAOK,yBAAyBR,EAAQO,GAAKE,eAAgBP,EAAKQ,KAAK1B,MAAMkB,EAAMG,GAAY,OAAOH,EAE9U,SAASS,EAAcC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAI9B,UAAU+B,OAAQD,IAAK,CAAE,IAAIE,EAAyB,MAAhBhC,UAAU8B,GAAa9B,UAAU8B,GAAK,GAAQA,EAAI,EAAKd,EAAQI,OAAOY,IAAS,GAAMC,SAAQ,SAAUrJ,GAAOsJ,EAAgBL,EAAQjJ,EAAKoJ,EAAOpJ,OAAsBwI,OAAOe,0BAA6Bf,OAAOgB,iBAAiBP,EAAQT,OAAOe,0BAA0BH,IAAmBhB,EAAQI,OAAOY,IAASC,SAAQ,SAAUrJ,GAAOwI,OAAOiB,eAAeR,EAAQjJ,EAAKwI,OAAOK,yBAAyBO,EAAQpJ,OAAe,OAAOiJ,EAE7gB,SAASK,EAAgBI,EAAK1J,EAAKO,GAAiK,OAApJP,KAAO0J,EAAOlB,OAAOiB,eAAeC,EAAK1J,EAAK,CAAEO,MAAOA,EAAOuI,YAAY,EAAMa,cAAc,EAAMC,UAAU,IAAkBF,EAAI1J,GAAOO,EAAgBmJ,EA4B3M,IAAIG,EAAkB,eAAe,QAAS,CAE5C9B,KAAM,SAEJkC,EAAaJ,EAAgBK,MAC7BC,EAAaN,EAAgB/B,MAC7BsC,EAAkBP,EAAgBQ,KAClCC,EAAmBT,EAAgBU,MAGnC4mB,EAAc,EACdC,EAAc,IACdC,EAAe,EAEfC,EAAuB,IAEvBC,EAA0B,IAE1BC,EAA2B,GAE3BC,EAA4B,EAC5BC,EAAY,CAAC,OAAS,OAAW,OAAW,OAAU,OAAa,QAE5D,EAAQ,eAAsB,eAAS1oB,EAAcA,EAAcA,EAAcA,EAAcA,EAAcA,EAAc,GAAI9D,EAAA,MAAUiF,GAAa,eAAK,OAAkB,CAAC,WAAY,eAAgB,QAAgB,QAAiB,GAAI,CACxPyH,aAAc,eAAS,QACvBrG,UAAW,eAAS,QACpBomB,YAAa,eAAS,QACtBvb,OAAQ,eAAS,QAAmB,GACpCwb,eAAgB,eAAS,OAAkB,aAC3CC,eAAgB,eAAS,OAAkB,aAC3CnQ,OAAQ,eAAS,QACjBoQ,IAAK,eAAS,OAAyBV,GACvCW,IAAK,eAAS,OAAyBZ,GACvCa,YAAa,eAAS,QACtBC,SAAU,eAAS,QAAmB,GACtCC,YAAa,eAAS,OAAyBZ,GAC/Ca,eAAgB,eAAS,OAAyBZ,GAClDa,qBAAsB,eAAS,OAAyBX,GACxDY,gBAAiB,eAAS,OAAyBb,GACnDc,KAAM,eAAS,OAAyBjB,GACxCkB,SAAU,eAAS,QAAmB,GACtCC,KAAM,eAAS,QAAmB,MAC/B,QAGM1uB,EAA+B,aAAIkJ,OAAO,CACnD7M,KAAM,OAEN8M,OAAQ,CAACxN,EAAA,KAAYyF,EAAA,KAAS+E,EAAY,OAAe,OAAgB,QACzE4J,cAAc,EACd/L,MAAO,EACPhG,KAAM,WACJ,MAAO,CACL2wB,WAAY,eAAQrzB,KAAKgL,GAAkB,MAC3CsoB,UAAU,IAGdrlB,SAAU,CACRslB,OAAQ,WACN,OAAOvzB,KAAKkX,UAEdsc,eAAgB,WACd,OAAOxzB,KAAKgX,SAAWhX,KAAKmzB,UAE9BM,iBAAkB,WAChB,OAAOzzB,KAAK6yB,WAAa7yB,KAAKoM,UAEhCsnB,iBAAkB,WAChB,OAAO1zB,KAAKyX,WAAazX,KAAKyzB,mBAAqBzzB,KAAKoM,UAE1DunB,aAAc,WACZ,OAAO,eAAQ3zB,KAAKkzB,KAAMjB,IAE5B2B,YAAa,WACX,OAAO,eAAQ5zB,KAAK2yB,IAAKZ,IAE3B8B,YAAa,WAEX,IAAInB,EAAM,eAAQ1yB,KAAK0yB,IAAKV,GACxBkB,EAAOlzB,KAAK2zB,aACZhB,EAAM3yB,KAAK4zB,YACf,OAAO,OAAAjlB,EAAA,OAAW+jB,EAAMC,GAAOO,GAAQA,EAAOP,GAEhDmB,cAAe,WACb,IAAIC,EAAQ,eAAU/zB,KAAK8yB,YAAa,GACxC,OAAOiB,EAAQ,EAAIA,EAAQ7B,GAE7B8B,iBAAkB,WAChB,IAAIC,EAAW,eAAUj0B,KAAK+yB,eAAgB,GAC9C,OAAOkB,EAAW,EAAIA,EAAW9B,GAEnC+B,kBAAmB,WACjB,OAAO,OAAAvlB,EAAA,MAAQ,eAAU3O,KAAKizB,gBAAiBb,GAA2B,IAE5E+B,uBAAwB,WACtB,OAAO,OAAAxlB,EAAA,MAAQ,eAAU3O,KAAKgzB,qBAAsBX,GAA4B,IAElF+B,kBAAmB,WAEjB,IAAIlB,EAAOlzB,KAAK2zB,aAChB,OAAO,OAAAhlB,EAAA,MAAUukB,KAAUA,EAAO,GAAKA,EAAKjY,WAAWkS,MAAM,KAAK,IAAM,IAAIpjB,QAE9EsqB,mBAAoB,WAClB,OAAO,OAAA1lB,EAAA,MAAQ,GAAI3O,KAAKo0B,mBAAqB,IAE/CE,aAAc,WACZ,IAAInzB,EAAQnB,KAAKqzB,WACjB,OAAO,eAAOlyB,GAAS,GAAKA,EAAMozB,QAAQv0B,KAAKo0B,oBAEjDI,eAAgB,WACd,IAAIC,EAAU,eAAOz0B,KAAKsiB,QAAQ/Y,OAAO+S,EAAA,MACrCoY,EAAK,IAAIC,KAAKC,aAAaH,GAC/B,OAAOC,EAAGG,kBAAkBvS,QAE9BwS,YAAa,WACX,OAAO,EAAY90B,KAAKw0B,iBAE1BO,iBAAkB,WAEhB,IAAIC,EAAYh1B,KAAKo0B,kBACjBM,EAAK,IAAIC,KAAKC,aAAa50B,KAAKw0B,eAAgB,CAClDS,MAAO,UACPC,aAAa,EACbC,qBAAsB,EACtBC,sBAAuBJ,EACvBK,sBAAuBL,EACvBM,SAAU,aAGZ,OAAOZ,EAAGa,QAEZC,kBAAmB,WACjB,IAAIjD,EAAcvyB,KAAKuyB,YACvB,OAAO,eAAgBA,GAAeA,EAAcvyB,KAAK+0B,kBAE3DU,cAAe,WACb,OAAO7rB,EAAcA,EAAc,GAAI5J,KAAKqV,SAAU,GAAI,CACxD/C,KAAM,QACNojB,KAAM11B,KAAKw0B,eACXjiB,SAAUvS,KAAKoM,SAAW,KAAO,KACjC7F,MAAOvG,KAAKmM,aAGhBwpB,kBAAmB,WACjB,IAAIpC,EAASvzB,KAAKuzB,OACdpyB,EAAQnB,KAAKqzB,WACb5b,EAAWzX,KAAK0zB,iBAChBtnB,EAAWpM,KAAKoM,SAChBuhB,EAAQ3tB,KAAK2tB,MACb6H,EAAoBx1B,KAAKw1B,kBACzBI,GAAY,eAAOz0B,GACvB,OAAOyI,EAAcA,EAAc,CACjCisB,IAAK71B,KAAK80B,YAAc,MAAQ,OAC/B90B,KAAKqV,SAAU,GAAI,CACpBvP,GAAIytB,EACJjhB,KAAM,aACNC,SAAUnG,EAAW,KAAO,IAC5B,YAAa,MACb,aAAcpM,KAAKmM,WAAa,KAChC,gBAAiBnM,KAAKwS,cAAgB,KAEtC,gBAA0B,IAAVmb,IAAoBiI,GAAYne,EAAW,OAAS,KACpE,gBAAiBA,EAAW,OAAS,KAErC,gBAAiB,eAASzX,KAAK4zB,aAC/B,gBAAiB,eAAS5zB,KAAK6zB,aAG/B,gBAAiB+B,EAAWz0B,EAAQ,KACpC,iBAAkBy0B,EAAWJ,EAAkBr0B,GAAS,SAI9DiO,OAAQrG,EAAS,GAAImB,EAAgBnB,EAAQiC,GAAiB,SAAU7J,GACtEnB,KAAKqzB,WAAa,eAAQlyB,EAAO,SAC/B+I,EAAgBnB,EAAQ,cAAc,SAAoB5H,GAC5DnB,KAAKwI,MAAM0C,EAAkB/J,MAC3B+I,EAAgBnB,EAAQ,YAAY,SAAkB+sB,GACpDA,GACF91B,KAAK+1B,iBAEL7rB,EAAgBnB,EAAQ,YAAY,SAAkBitB,GACpDA,GACFh2B,KAAK+1B,iBAELhtB,GACJtD,QAAS,WAEPzF,KAAKi2B,iBAAmB,KACxBj2B,KAAKk2B,kBAAoB,KACzBl2B,KAAKm2B,aAAc,GAErBtY,cAAe,WACb7d,KAAK+1B,eAIPK,YAAa,WACXp2B,KAAK+1B,eAEPpwB,QAAS,CAEP0wB,MAAO,WACAr2B,KAAKoM,UACR,eAAapM,KAAKkqB,MAAMoM,UAG5BC,KAAM,WACCv2B,KAAKoM,UACR,eAAYpM,KAAKkqB,MAAMoM,UAI3BE,WAAY,WACVx2B,KAAKwI,MAAM,OAAmBxI,KAAKqzB,aAErCoD,UAAW,SAAmBC,GAG5B,IAAIv1B,EAAQnB,KAAKqzB,WAEjB,IAAKrzB,KAAKoM,WAAa,eAAOjL,GAAQ,CACpC,IAAI+xB,EAAOlzB,KAAK2zB,aAAe+C,EAC3B/D,EAAM3yB,KAAK4zB,YACXlB,EAAM1yB,KAAK6zB,YACX8C,EAAa32B,KAAKq0B,mBAClBjB,EAAOpzB,KAAKozB,KAEhBjyB,EAAQ,OAAAwN,EAAA,OAAWxN,EAAQwxB,GAAOO,GAAQA,EAAOP,EAAMO,EAEvD/xB,EAAQ,OAAAwN,EAAA,MAAUxN,EAAQw1B,GAAcA,EAExC32B,KAAKqzB,WAAalyB,EAAQuxB,EAAMU,EAAOT,EAAMD,EAAMvxB,EAAQwxB,EAAMS,EAAOV,EAAMC,EAAMxxB,IAGxFy1B,YAAa,SAAqBzrB,GAC3BnL,KAAKoM,SAGRpM,KAAKszB,UAAW,EAFhBtzB,KAAKszB,SAA0B,UAAfnoB,EAAMxC,MAK1BkuB,OAAQ,WACN,IAAIF,EAAa3uB,UAAU+B,OAAS,QAAsB5B,IAAjBH,UAAU,GAAmBA,UAAU,GAAK,EACjF7G,EAAQnB,KAAKqzB,WAEb,eAAOlyB,GACTnB,KAAKqzB,WAAarzB,KAAK4zB,YAEvB5zB,KAAKy2B,UAAU,EAAKE,IAGxBG,SAAU,WACR,IAAIH,EAAa3uB,UAAU+B,OAAS,QAAsB5B,IAAjBH,UAAU,GAAmBA,UAAU,GAAK,EACjF7G,EAAQnB,KAAKqzB,WAEb,eAAOlyB,GACTnB,KAAKqzB,WAAarzB,KAAKozB,KAAOpzB,KAAK6zB,YAAc7zB,KAAK4zB,YAEtD5zB,KAAKy2B,WAAW,EAAIE,IAGxBI,UAAW,SAAmB5rB,GAC5B,IAAIW,EAAUX,EAAMW,QAChBkrB,EAAS7rB,EAAM6rB,OACfjV,EAAU5W,EAAM4W,QAChBC,EAAU7W,EAAM6W,QAGpB,KAAIhiB,KAAKoM,UAAYpM,KAAK6yB,UAAYmE,GAAUjV,GAAWC,IAIvD,OAAA5H,EAAA,MAAckY,EAAWxmB,GAAU,CAOrC,GALA,eAAUX,EAAO,CACfyE,aAAa,IAIX5P,KAAKm2B,YAEP,OAGFn2B,KAAKi3B,cAED,OAAA7c,EAAA,MAAc,CAAC,OAAS,QAAYtO,IAEtC9L,KAAKm2B,aAAc,EAEfrqB,IAAY,OACd9L,KAAKk3B,iBAAiB/rB,EAAOnL,KAAK62B,QACzB/qB,IAAY,QACrB9L,KAAKk3B,iBAAiB/rB,EAAOnL,KAAK82B,WAIhChrB,IAAY,OACd9L,KAAK62B,OAAO72B,KAAKm0B,wBACRroB,IAAY,OACrB9L,KAAK82B,SAAS92B,KAAKm0B,wBACVroB,IAAY,OACrB9L,KAAKqzB,WAAarzB,KAAK4zB,YACd9nB,IAAY,SACrB9L,KAAKqzB,WAAarzB,KAAK6zB,eAK/BsD,QAAS,SAAiBhsB,GAExB,IAAIW,EAAUX,EAAMW,QAChBkrB,EAAS7rB,EAAM6rB,OACfjV,EAAU5W,EAAM4W,QAChBC,EAAU7W,EAAM6W,QAGhBhiB,KAAKoM,UAAYpM,KAAK6yB,UAAYmE,GAAUjV,GAAWC,GAIvD,OAAA5H,EAAA,MAAckY,EAAWxmB,KAC3B,eAAUX,EAAO,CACfyE,aAAa,IAEf5P,KAAKi3B,cACLj3B,KAAKm2B,aAAc,EACnBn2B,KAAKw2B,eAGTU,iBAAkB,SAA0B/rB,EAAOisB,GACjD,IAAI7nB,EAAQvP,KAER4d,EAAOzS,GAAS,GAChBxC,EAAOiV,EAAKjV,KACZ0uB,EAASzZ,EAAKyZ,OAElB,IAAKr3B,KAAKoM,WAAapM,KAAK6yB,SAAU,CAEpC,GAAa,cAATlqB,GAAwB0uB,EAE1B,OAGFr3B,KAAKi3B,cAELG,EAAQ,GACR,IAAIE,EAAYt3B,KAAKk0B,kBACjByC,EAAa32B,KAAKm0B,uBAClBJ,EAAQ/zB,KAAK8zB,cACbG,EAAWj0B,KAAKg0B,iBAEpBh0B,KAAKi2B,iBAAmBtY,YAAW,WACjC,IAAI4Z,EAAQ,EACZhoB,EAAM2mB,kBAAoBsB,aAAY,WAKpCJ,EAAQG,EAAQD,EAAY,EAAIX,GAChCY,MACCtD,KACFF,KAGP0D,UAAW,SAAmBtsB,GAE5B,IAAIusB,EAAQvsB,GAAS,GACjBxC,EAAO+uB,EAAM/uB,KACb0uB,EAASK,EAAML,OAIN,YAAT1uB,GAAsB0uB,IAK1B,eAAUlsB,EAAO,CACfyE,aAAa,IAEf5P,KAAKi3B,cACLj3B,KAAK23B,YAAW,GAEhB33B,KAAKw2B,eAEPmB,WAAY,SAAoB71B,GAG9B,IACE,eAAWA,EAAI81B,SAASC,KAAM,UAAW73B,KAAKy3B,WAAW,GACzD,eAAW31B,EAAI81B,SAASC,KAAM,WAAY73B,KAAKy3B,WAAW,GAC1D,MAAOK,MAEXb,YAAa,WACXnZ,aAAa9d,KAAKi2B,kBAClB8B,cAAc/3B,KAAKk2B,mBACnBl2B,KAAKi2B,iBAAmB,KACxBj2B,KAAKk2B,kBAAoB,MAE3BH,YAAa,WACX/1B,KAAKi3B,cACLj3B,KAAK23B,YAAW,GAChB33B,KAAKm2B,aAAc,IAGvBr2B,OAAQ,SAAgBkR,GACtB,IAAIX,EAASrQ,KAETuzB,EAASvzB,KAAKuzB,OACdpyB,EAAQnB,KAAKqzB,WACbrc,EAAShX,KAAKwzB,eACdX,EAAW7yB,KAAKyzB,iBAChBN,EAAWnzB,KAAKmzB,SAChB/mB,EAAWpM,KAAKoM,SAChBopB,EAAoBx1B,KAAKw1B,kBACzBI,GAAY,eAAOz0B,GAEnB62B,EAAa,SAAoBZ,EAAS/P,EAAO4Q,EAASC,EAAQC,EAAUC,EAAajQ,GAC3F,IAAIkQ,EAAQrnB,EAAEinB,EAAS,CACrBvvB,MAAO,CACL4vB,MAAOjoB,EAAOijB,SAAW,IAAM,MAEjCjzB,MAAO,CACL,cAAe,UAGf4R,EAAQ,CACVqhB,SAAUjjB,EAAOijB,UAGf9V,EAAU,SAAiBrS,GACxBiB,GAAaymB,IAChB,eAAU1nB,EAAO,CACfyE,aAAa,IAGfS,EAAOsnB,YAAW,GAGlB,eAAaxsB,EAAMa,eAEnBqE,EAAO6mB,iBAAiB/rB,EAAOisB,KAInC,OAAOpmB,EAAE,SAAU,CACjBzQ,YAAa,gCACb8H,MAAO,CACL,QAAS8qB,GAEX9yB,MAAO,CACLkS,SAAU,KACV5J,KAAM,SACNyD,SAAUA,GAAYymB,GAAYuF,EAClC,gBAAiBhsB,GAAYymB,GAAYuF,EAAc,OAAS,KAChE,gBAAiB7E,EACjB,aAAclM,GAAS,KACvB,oBAAqB8Q,GAAY,MAEnCr2B,GAAI,CACFy2B,UAAW/a,EACXgb,WAAYhb,GAEd5c,IAAKs3B,GAAU,KACfp3B,IAAKo3B,GACJ,CAAC7nB,EAAO8B,cAAcgW,EAAUlW,IAAUomB,KAI3CI,EAAaT,EAAWh4B,KAAK62B,OAAQ72B,KAAKyyB,eAAgB,OAAW,MAAO,WAAW,EAAO,QAC9FiG,EAAaV,EAAWh4B,KAAK82B,SAAU92B,KAAKwyB,eAAgB,OAAW,MAAO,aAAa,EAAO,QAClGmG,EAAU3nB,IAEVhR,KAAKe,OAASqL,IAChBusB,EAAU3nB,EAAE,QAAS,CACnB3Q,MAAO,CACLsI,KAAM,SACN5H,KAAMf,KAAKe,KACX63B,KAAM54B,KAAK44B,MAAQ,KAEnBz3B,MAAOnB,KAAKs0B,cAEd1zB,IAAK,YAIT,IAAIi4B,EAAQ7nB,EACZ,SAAU,CACRzQ,YAAa,cACb8H,MAAO,CACL,SAAU8qB,EACV,qBAAsBA,EACtB,qBAAsBA,EACtB,aAAcA,EACd,gBAAiBA,EACjB,eAAgBA,EAChB,gBAAiBA,GAEnB9yB,MAAOL,KAAK21B,kBACZ/0B,IAAK,SACLE,IAAK,WACJ,CAACkQ,EAAE,MAAO4kB,EAAWJ,EAAkBr0B,GAASnB,KAAK4yB,aAAe,MACvE,OAAO5hB,EAAE,MAAO,CACdzQ,YAAa,iCACb8H,MAAO,CAAC,CACN+D,SAAUA,EACVymB,SAAUA,EACVwD,MAAOr2B,KAAKszB,SACZ,gBAAiBtc,GAAUmc,EAC3B,UAAWnc,IAAWmc,EACtB,uBAAwBA,EACxB,cAAeA,GACdnzB,KAAK84B,cAAe94B,KAAK8wB,YAC5BzwB,MAAOL,KAAKy1B,cACZ3zB,GAAI,CACF4Q,QAAS1S,KAAK+2B,UACdgC,MAAO/4B,KAAKm3B,QAEZ,SAAUn3B,KAAK42B,YACf,QAAS52B,KAAK42B,cAEfzD,EAAW,CAACsF,EAAYE,EAASE,EAAOH,GAAc,CAACA,EAAYC,EAASE,EAAOJ,Q,wKE7iB/EO,EAAsB,YACtBC,EAAoB,UACpBC,EAAyB,eACzBC,EAAuB,aACvBC,EAAwB,cAExBC,EAAuB,a,4GCDvBC,EAAgB,aAAI1rB,OAAO,CACpClL,KAAM,WACJ,MAAO,CACL62B,mBAAmB,IAGvBnqB,MAAO,CACLmqB,kBAAmB,SAA2BlqB,EAAUC,GAClDD,IAAaC,IACf,eAAStP,KAAKw5B,gBAAiBx5B,KAAKy5B,kBAAmBz5B,KAAK05B,iBAAkB,QAE1ErqB,GACF,eAAQrP,KAAKw5B,gBAAiBx5B,KAAKy5B,kBAAmBz5B,KAAK05B,iBAAkB,WAKrFC,aAAc,WAEZ35B,KAAKw5B,gBAAkB,KACvBx5B,KAAKy5B,kBAAoB,MAE3Bpa,QAAS,WACFrf,KAAKw5B,kBACRx5B,KAAKw5B,gBAAkB5B,UAGpB53B,KAAKy5B,oBACRz5B,KAAKy5B,kBAAoB,SAGvBz5B,KAAKu5B,mBACP,eAAQv5B,KAAKw5B,gBAAiBx5B,KAAKy5B,kBAAmBz5B,KAAK05B,iBAAkB,SAGjF7b,cAAe,WACb,eAAS7d,KAAKw5B,gBAAiBx5B,KAAKy5B,kBAAmBz5B,KAAK05B,iBAAkB,SAEhF/zB,QAAS,CACPi0B,WAAY,SAAoBzuB,GAC9B,OAAQ,eAASnL,KAAKkQ,IAAK/E,EAAMtB,SAEnC6vB,iBAAkB,SAA0BvuB,GACtCnL,KAAK65B,iBAAmB75B,KAAK45B,WAAWzuB,IAC1CnL,KAAK65B,gBAAgB1uB,OC7ClB2uB,EAAe,aAAIlsB,OAAO,CACnClL,KAAM,WACJ,MAAO,CACLq3B,kBAAkB,IAGtB3qB,MAAO,CACL2qB,iBAAkB,SAA0B1qB,EAAUC,GAChDD,IAAaC,IACf,eAAStP,KAAKg6B,eAAgB,UAAWh6B,KAAKi6B,gBAAiB,QAE3D5qB,GACF,eAAQrP,KAAKg6B,eAAgB,UAAWh6B,KAAKi6B,gBAAiB,WAKtEN,aAAc,WAEZ35B,KAAKg6B,eAAiB,MAExB3a,QAAS,WACFrf,KAAKg6B,iBACRh6B,KAAKg6B,eAAiBpC,UAGpB53B,KAAK+5B,kBACP,eAAQ/5B,KAAKg6B,eAAgB,UAAWh6B,KAAKi6B,gBAAiB,SAGlEpc,cAAe,WACb,eAAS7d,KAAKg6B,eAAgB,UAAWh6B,KAAKi6B,gBAAiB,SAEjEt0B,QAAS,CACPs0B,gBAAiB,SAAyB9uB,GACpCnL,KAAKk6B,gBACPl6B,KAAKk6B,eAAe/uB,O,wBCxC5B,SAASnC,EAAQC,EAAQC,GAAkB,IAAIC,EAAOC,OAAOD,KAAKF,GAAS,GAAIG,OAAOC,sBAAuB,CAAE,IAAIC,EAAUF,OAAOC,sBAAsBJ,GAAaC,IAAgBI,EAAUA,EAAQC,QAAO,SAAUC,GAAO,OAAOJ,OAAOK,yBAAyBR,EAAQO,GAAKE,eAAgBP,EAAKQ,KAAK1B,MAAMkB,EAAMG,GAAY,OAAOH,EAE9U,SAASS,EAAcC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAI9B,UAAU+B,OAAQD,IAAK,CAAE,IAAIE,EAAyB,MAAhBhC,UAAU8B,GAAa9B,UAAU8B,GAAK,GAAQA,EAAI,EAAKd,EAAQI,OAAOY,IAAS,GAAMC,SAAQ,SAAUrJ,GAAOsJ,EAAgBL,EAAQjJ,EAAKoJ,EAAOpJ,OAAsBwI,OAAOe,0BAA6Bf,OAAOgB,iBAAiBP,EAAQT,OAAOe,0BAA0BH,IAAmBhB,EAAQI,OAAOY,IAASC,SAAQ,SAAUrJ,GAAOwI,OAAOiB,eAAeR,EAAQjJ,EAAKwI,OAAOK,yBAAyBO,EAAQpJ,OAAe,OAAOiJ,EAE7gB,SAASK,EAAgBI,EAAK1J,EAAKO,GAAiK,OAApJP,KAAO0J,EAAOlB,OAAOiB,eAAeC,EAAK1J,EAAK,CAAEO,MAAOA,EAAOuI,YAAY,EAAMa,cAAc,EAAMC,UAAU,IAAkBF,EAAI1J,GAAOO,EAAgBmJ,EAsB3M,IAAI6vB,EAAwB,eAAiB,OAAe,QACxDC,EAAyB,eAAiB,OAAe,QAEzDC,EAAsB,iBACtBC,EAAgB,CAAC,iBAAkB,oBAAoBnpB,KAAI,SAAUopB,GACvE,MAAO,GAAGpsB,OAAOosB,EAAU,sCAC1B9gB,KAAK,MAGJ,EAAiB,SAAwB+gB,GAC3C,OAAQA,GAAO,IAAIjxB,OAAO,SAIjB,EAAQ,eAAsB,eAASK,EAAcA,EAAc,GAAI9D,EAAA,MAAU,GAAI,CAG9F20B,SAAU,eAAS,CAAC,OAAa,QAAmB,gBACpDruB,SAAU,eAAS,QAAmB,GAEtCsuB,SAAU,eAAS,QAAmB,GAEtCC,UAAW,eAAS,QAAmB,GAEvCC,OAAQ,eAAS,QAAmB,GAEpCC,OAAQ,eAAS,QAAmB,GAGpCznB,OAAQ,eAAS,OAAyB,GAC1C0nB,WAAY,eAAS,OAAkB,IAEvC3U,MAAO,eAAS,QAAmB,MAChC,QAGM4U,EAAgB,aAAIntB,OAAO,CACpCC,OAAQ,CAAC/H,EAAA,KAAS,OAAmBwzB,EAAeQ,GACpDzlB,QAAS,WACP,MAAO,CACL2mB,WAAYh7B,OAGhBuU,OAAQ,CACN0mB,SAAU,CACRpyB,QAAS,OAGbH,MAAO,EACPhG,KAAM,WACJ,MAAO,CACLw4B,SAAS,EACTC,wBAAwB,IAG5BltB,SAAU,CACRmtB,SAAU,WACR,OAAQ,eAAOp7B,KAAKi7B,WAEtBI,QAAS,WACP,IAAIC,EAASt7B,KAAKkqB,MAAMoR,OACxB,OAAOA,EAASA,EAAOprB,KAAOorB,EAAS,MAEzCC,eAAgB,WACd,OAAIv7B,KAAK46B,OACA,SACE56B,KAAK26B,UACP,YACE36B,KAAK06B,SACP,WAGF,IAETc,cAAe,WAIb,MAAyB,iBAAlBx7B,KAAKy6B,UAAgCz6B,KAAKo7B,SAA+B,GAApB,oBAGhEhsB,MAAO,CACL8rB,QAAS,SAAiB7rB,EAAUC,GAClC,GAAItP,KAAKm7B,uBACPn7B,KAAKm7B,wBAAyB,OAIhC,GAAI9rB,IAAaC,EAAU,CACzB,IAAImsB,EAAYpsB,EAAW,OAAkB,OACzCqsB,EAAU,IAAI,OAAQD,EAAW,CACnC3nB,YAAY,EACZC,UAAW/T,KACX6J,OAAQ7J,KAAKkqB,MAAMyR,KACnBC,cAAe,KACfC,YAAa77B,KAAKkX,OAASlX,KAAKkX,SAAWlX,KAAK8F,IAAM,OAIxD,GAFA9F,KAAK87B,UAAUJ,GAEXA,EAAQ1nB,iBAMV,OAJAhU,KAAKm7B,wBAAyB,EAC9Bn7B,KAAKk7B,QAAU5rB,OAEftP,KAAKwf,KAAK,OAAmBxf,KAAK+7B,cAIhC1sB,EACFrP,KAAKg8B,WAELh8B,KAAKi8B,aAIX7vB,SAAU,SAAkBiD,EAAUC,GAChCD,IAAaC,GAAYD,GAAYrP,KAAKk7B,UAE5Cl7B,KAAKk7B,SAAU,KAIrBz1B,QAAS,WAEPzF,KAAKk8B,SAAW,KAChBl8B,KAAKm8B,cAAgB,MAIvB/F,YAAa,WAEXp2B,KAAKk7B,SAAU,EACfl7B,KAAKo8B,iBAAgB,GACrBp8B,KAAKq8B,iBAEPxe,cAAe,WACb7d,KAAKk7B,SAAU,EACfl7B,KAAKo8B,iBAAgB,GACrBp8B,KAAKq8B,gBACLr8B,KAAKs8B,oBAEP32B,QAAS,CAEPm2B,UAAW,SAAmBJ,GAC5B,IAAI/yB,EAAO+yB,EAAQ/yB,KACnB3I,KAAK4f,WAAW,eAAiB,OAAejX,GAAO+yB,GACvD17B,KAAKwI,MAAMG,EAAM+yB,IAEnBM,SAAU,WACR,IAAIzsB,EAAQvP,KAEZ,IAAIA,KAAKoM,SAAT,CAMA,IAAKpM,KAAKo7B,SACR,GAAsB,qBAAX,OAET,OAAAxwB,EAAA,MAAK,uDAAwD,YACxD,CAEL,IAAI2F,EAAKvQ,KAAK46B,QAAU56B,KAAKmmB,OAASnmB,KAAKmtB,MAAQntB,KAAKkQ,IAAMlQ,KAAKkqB,MAAMoR,OAEzE/qB,EAAKA,EAAGL,KAAOK,EAEfvQ,KAAKu8B,aAAahsB,GAKtBvQ,KAAK4f,WAAWua,EAAuBn6B,MAEvCA,KAAKo8B,iBAAgB,GAErBp8B,KAAKwP,WAAU,WAEbD,EAAMitB,YAGNjtB,EAAM/G,MAAM,aAGhByzB,SAAU,WACRj8B,KAAKo8B,iBAAgB,GACrBp8B,KAAK4f,WAAWwa,EAAwBp6B,MACxCA,KAAKwI,MAAM,QACXxI,KAAKq8B,iBAEPE,aAAc,SAAsBE,GAClCz8B,KAAKq8B,gBACLr8B,KAAKk8B,SAAW,IAAI,OAAOO,EAASz8B,KAAKkqB,MAAMyR,KAAM37B,KAAK08B,oBAG5DL,cAAe,WACbr8B,KAAKk8B,UAAYl8B,KAAKk8B,SAASS,UAC/B38B,KAAKk8B,SAAW,MAIlBU,aAAc,WACZ,IACE58B,KAAKk8B,SAASW,iBACd,MAAO/E,MAEXwE,iBAAkB,WAChBxe,aAAa9d,KAAKm8B,eAClBn8B,KAAKm8B,cAAgB,MAEvBO,gBAAiB,WACf,IAAII,EAAY5D,EAEZl5B,KAAK46B,OACPkC,EAAY98B,KAAKmmB,MAAQ8S,EAAoBD,EACpCh5B,KAAK26B,UACdmC,EAAY1D,EACHp5B,KAAK06B,SACdoC,EAAYzD,EACHr5B,KAAKmmB,QACd2W,EAAY3D,GAGd,IAAI4D,EAAe,CACjBD,UAAWA,EACX55B,UAAW,CACTkQ,OAAQ,CACNA,OAAQpT,KAAKoT,QAAU,GAEzB4pB,KAAM,CACJC,SAAUj9B,KAAK66B,UAIjBqC,EAAoBl9B,KAAKy6B,SAQ7B,OANIyC,IACFH,EAAa75B,UAAUi6B,gBAAkB,CACvCD,kBAAmBA,IAIhB,eAAUH,EAAc/8B,KAAK86B,YAAc,KAGpDsB,gBAAiB,SAAyBgB,GAExCp9B,KAAKu5B,kBAAoB6D,EAEzBp9B,KAAK+5B,iBAAmBqD,EAExB,IAAIxb,EAASwb,EAAS,MAAQ,OAC9Bp9B,KAAKq9B,MAAMzb,GAAQuY,EAAuBn6B,KAAKs9B,oBAEjDA,kBAAmB,SAA2BC,GACxCA,IAAOv9B,OACTA,KAAKk7B,SAAU,IAInB56B,KAAM,WACJ,IAAI+P,EAASrQ,KAETA,KAAKoM,UAMT,gBAAU,WACRiE,EAAO6qB,SAAU,MAIrBsC,KAAM,WACJ,IAAIC,EAAUz1B,UAAU+B,OAAS,QAAsB5B,IAAjBH,UAAU,IAAmBA,UAAU,GAGzEhI,KAAKoM,WAITpM,KAAKk7B,SAAU,EAEXuC,GAEFz9B,KAAK09B,MAAM,OAAmB19B,KAAK+7B,gBAIvCT,OAAQ,SAAgBnwB,GACtBA,EAAQA,GAAS,GAEjB,IAAIwyB,EAASxyB,EACTxC,EAAOg1B,EAAOh1B,KACdmD,EAAU6xB,EAAO7xB,SAER,UAATnD,GAA+B,YAATA,IAAgF,IAA1D,CAAC,OAAY,OAAY,QAAWmI,QAAQhF,MAOxF9L,KAAKoM,SACPpM,KAAKk7B,SAAU,GAIjBl7B,KAAKwI,MAAM,OAAmB2C,GAC9B,eAAUA,GAENnL,KAAKk7B,QACPl7B,KAAKw9B,MAAK,GAEVx9B,KAAKM,UAMTs9B,YAAa,SAAqBzyB,GAShC,eAAUA,EAAO,CACfyE,aAAa,KAIjBmnB,UAAW,SAAmB5rB,GAC5B,IAAIW,EAAUX,EAAMW,QAEhBA,IAAY,OAEd9L,KAAK69B,MAAM1yB,GACFW,IAAY,OAErB9L,KAAKgQ,UAAU7E,GAAO,GACbW,IAAY,QAErB9L,KAAKgQ,UAAU7E,GAAO,IAI1B0yB,MAAO,SAAe1yB,GAChBnL,KAAKk7B,UACPl7B,KAAKk7B,SAAU,EACf,eAAU/vB,GAEVnL,KAAK09B,MAAM,OAAmB19B,KAAK+7B,gBAIvC+B,aAAc,SAAsB3yB,GAE9BnL,KAAKoM,SACPpM,KAAKk7B,SAAU,EAIjBl7B,KAAKwI,MAAM,OAAkB2C,IAG/B4yB,YAAa,SAAqB5yB,GAChC,IAAIqF,EAASxQ,KAET6J,EAASsB,EAAMtB,QAEf7J,KAAKk7B,SAAY,eAASl7B,KAAKkqB,MAAMyR,KAAM9xB,IAAY,eAAS7J,KAAKq7B,QAASxxB,KAChF7J,KAAKs8B,mBACLt8B,KAAKm8B,cAAgBxe,YAAW,WAC9B,OAAOnN,EAAOgtB,SACbx9B,KAAKo7B,SAAW,IAAM,KAI7BvB,gBAAiB,SAAyB1uB,GACxCnL,KAAK+9B,YAAY5yB,IAGnB+uB,eAAgB,SAAwB/uB,GACtCnL,KAAK+9B,YAAY5yB,IAGnB6E,UAAW,SAAmB7E,EAAO6yB,GACnC,IAAIvtB,EAASzQ,KAGT6J,EAASsB,EAAMtB,QAEd7J,KAAKk7B,SAAW/vB,GAAS,eAAQkvB,EAAqBxwB,KAK3D,eAAUsB,GACVnL,KAAKwP,WAAU,WACb,IAAIhN,EAAQiO,EAAOwtB,WAEnB,KAAIz7B,EAAMuH,OAAS,GAAnB,CAKA,IAAI8G,EAAQrO,EAAMsO,QAAQjH,GAEtBm0B,GAAMntB,EAAQ,EAChBA,KACUmtB,GAAMntB,EAAQrO,EAAMuH,OAAS,GACvC8G,IAGEA,EAAQ,IAEVA,EAAQ,GAGVJ,EAAOytB,UAAUrtB,EAAOrO,SAG5B07B,UAAW,SAAmBrtB,EAAOrO,GACnC,IAAI+N,EAAK/N,EAAM8N,MAAK,SAAUC,EAAIzG,GAChC,OAAOA,IAAM+G,KAEf,eAAaN,IAEf0tB,SAAU,WAER,OAAO,EAAe,eAAU3D,EAAet6B,KAAKkqB,MAAMyR,QAE5Da,UAAW,WACT,eAAax8B,KAAKkqB,MAAMyR,OAE1BI,aAAc,WACZ,IAAIprB,EAAS3Q,KAEbA,KAAKwP,WAAU,WACb,eAAamB,EAAO0qB,iB,uBC9c5B,IAAI8C,EAAW,SAAUC,GACvB,aAEA,IAEIj2B,EAFAk2B,EAAKj1B,OAAO4R,UACZsjB,EAASD,EAAGE,eAEZC,EAA4B,oBAAXhjB,OAAwBA,OAAS,GAClDijB,EAAiBD,EAAQ/iB,UAAY,aACrCijB,EAAsBF,EAAQG,eAAiB,kBAC/CC,EAAoBJ,EAAQK,aAAe,gBAE/C,SAASC,EAAOx0B,EAAK1J,EAAKO,GAOxB,OANAiI,OAAOiB,eAAeC,EAAK1J,EAAK,CAC9BO,MAAOA,EACPuI,YAAY,EACZa,cAAc,EACdC,UAAU,IAELF,EAAI1J,GAEb,IAEEk+B,EAAO,GAAI,IACX,MAAO52B,GACP42B,EAAS,SAASx0B,EAAK1J,EAAKO,GAC1B,OAAOmJ,EAAI1J,GAAOO,GAItB,SAASiyB,EAAK2L,EAASC,EAASl3B,EAAMm3B,GAEpC,IAAIC,EAAiBF,GAAWA,EAAQhkB,qBAAqBmkB,EAAYH,EAAUG,EAC/EC,EAAYh2B,OAAOi2B,OAAOH,EAAelkB,WACzC6E,EAAU,IAAIyf,EAAQL,GAAe,IAMzC,OAFAG,EAAUG,QAAUC,EAAiBT,EAASj3B,EAAM+X,GAE7Cuf,EAcT,SAASK,EAAS5+B,EAAIyJ,EAAK/C,GACzB,IACE,MAAO,CAAEoB,KAAM,SAAUpB,IAAK1G,EAAGqa,KAAK5Q,EAAK/C,IAC3C,MAAOW,GACP,MAAO,CAAES,KAAM,QAASpB,IAAKW,IAhBjCk2B,EAAQhL,KAAOA,EAoBf,IAAIsM,EAAyB,iBACzBC,EAAyB,iBACzBC,EAAoB,YACpBC,EAAoB,YAIpBC,EAAmB,GAMvB,SAASX,KACT,SAASY,KACT,SAASC,KAIT,IAAIC,EAAoB,GACxBA,EAAkBxB,GAAkB,WAClC,OAAOz+B,MAGT,IAAIkgC,EAAW92B,OAAO+2B,eAClBC,EAA0BF,GAAYA,EAASA,EAASG,EAAO,MAC/DD,GACAA,IAA4B/B,GAC5BC,EAAOpjB,KAAKklB,EAAyB3B,KAGvCwB,EAAoBG,GAGtB,IAAIE,EAAKN,EAA2BhlB,UAClCmkB,EAAUnkB,UAAY5R,OAAOi2B,OAAOY,GAWtC,SAASM,EAAsBvlB,GAC7B,CAAC,OAAQ,QAAS,UAAU/Q,SAAQ,SAAS2X,GAC3Ckd,EAAO9jB,EAAW4G,GAAQ,SAASra,GACjC,OAAOvH,KAAKu/B,QAAQ3d,EAAQra,SAkClC,SAASi5B,EAAcpB,EAAWqB,GAChC,SAASC,EAAO9e,EAAQra,EAAKJ,EAASC,GACpC,IAAIu5B,EAASlB,EAASL,EAAUxd,GAASwd,EAAW73B,GACpD,GAAoB,UAAhBo5B,EAAOh4B,KAEJ,CACL,IAAIgL,EAASgtB,EAAOp5B,IAChBpG,EAAQwS,EAAOxS,MACnB,OAAIA,GACiB,kBAAVA,GACPm9B,EAAOpjB,KAAK/Z,EAAO,WACds/B,EAAYt5B,QAAQhG,EAAMy/B,SAASh5B,MAAK,SAASzG,GACtDu/B,EAAO,OAAQv/B,EAAOgG,EAASC,MAC9B,SAASc,GACVw4B,EAAO,QAASx4B,EAAKf,EAASC,MAI3Bq5B,EAAYt5B,QAAQhG,GAAOyG,MAAK,SAASi5B,GAI9CltB,EAAOxS,MAAQ0/B,EACf15B,EAAQwM,MACP,SAASlM,GAGV,OAAOi5B,EAAO,QAASj5B,EAAON,EAASC,MAvBzCA,EAAOu5B,EAAOp5B,KA4BlB,IAAIu5B,EAEJ,SAASC,EAAQnf,EAAQra,GACvB,SAASy5B,IACP,OAAO,IAAIP,GAAY,SAASt5B,EAASC,GACvCs5B,EAAO9e,EAAQra,EAAKJ,EAASC,MAIjC,OAAO05B,EAaLA,EAAkBA,EAAgBl5B,KAChCo5B,EAGAA,GACEA,IAKRhhC,KAAKu/B,QAAUwB,EA2BjB,SAASvB,EAAiBT,EAASj3B,EAAM+X,GACvC,IAAI8N,EAAQ+R,EAEZ,OAAO,SAAgB9d,EAAQra,GAC7B,GAAIomB,IAAUiS,EACZ,MAAM,IAAIqB,MAAM,gCAGlB,GAAItT,IAAUkS,EAAmB,CAC/B,GAAe,UAAXje,EACF,MAAMra,EAKR,OAAO25B,IAGTrhB,EAAQ+B,OAASA,EACjB/B,EAAQtY,IAAMA,EAEd,MAAO,EAAM,CACX,IAAI45B,EAAWthB,EAAQshB,SACvB,GAAIA,EAAU,CACZ,IAAIC,EAAiBC,EAAoBF,EAAUthB,GACnD,GAAIuhB,EAAgB,CAClB,GAAIA,IAAmBtB,EAAkB,SACzC,OAAOsB,GAIX,GAAuB,SAAnBvhB,EAAQ+B,OAGV/B,EAAQyhB,KAAOzhB,EAAQ0hB,MAAQ1hB,EAAQtY,SAElC,GAAuB,UAAnBsY,EAAQ+B,OAAoB,CACrC,GAAI+L,IAAU+R,EAEZ,MADA/R,EAAQkS,EACFhgB,EAAQtY,IAGhBsY,EAAQ2hB,kBAAkB3hB,EAAQtY,SAEN,WAAnBsY,EAAQ+B,QACjB/B,EAAQ4hB,OAAO,SAAU5hB,EAAQtY,KAGnComB,EAAQiS,EAER,IAAIe,EAASlB,EAASV,EAASj3B,EAAM+X,GACrC,GAAoB,WAAhB8gB,EAAOh4B,KAAmB,CAO5B,GAJAglB,EAAQ9N,EAAQnY,KACZm4B,EACAF,EAEAgB,EAAOp5B,MAAQu4B,EACjB,SAGF,MAAO,CACL3+B,MAAOw/B,EAAOp5B,IACdG,KAAMmY,EAAQnY,MAGS,UAAhBi5B,EAAOh4B,OAChBglB,EAAQkS,EAGRhgB,EAAQ+B,OAAS,QACjB/B,EAAQtY,IAAMo5B,EAAOp5B,OAU7B,SAAS85B,EAAoBF,EAAUthB,GACrC,IAAI+B,EAASuf,EAAS1lB,SAASoE,EAAQ+B,QACvC,GAAIA,IAAWzZ,EAAW,CAKxB,GAFA0X,EAAQshB,SAAW,KAEI,UAAnBthB,EAAQ+B,OAAoB,CAE9B,GAAIuf,EAAS1lB,SAAS,YAGpBoE,EAAQ+B,OAAS,SACjB/B,EAAQtY,IAAMY,EACdk5B,EAAoBF,EAAUthB,GAEP,UAAnBA,EAAQ+B,QAGV,OAAOke,EAIXjgB,EAAQ+B,OAAS,QACjB/B,EAAQtY,IAAM,IAAIoT,UAChB,kDAGJ,OAAOmlB,EAGT,IAAIa,EAASlB,EAAS7d,EAAQuf,EAAS1lB,SAAUoE,EAAQtY,KAEzD,GAAoB,UAAhBo5B,EAAOh4B,KAIT,OAHAkX,EAAQ+B,OAAS,QACjB/B,EAAQtY,IAAMo5B,EAAOp5B,IACrBsY,EAAQshB,SAAW,KACZrB,EAGT,IAAIt4B,EAAOm5B,EAAOp5B,IAElB,OAAMC,EAOFA,EAAKE,MAGPmY,EAAQshB,EAASO,YAAcl6B,EAAKrG,MAGpC0e,EAAQ8hB,KAAOR,EAASS,QAQD,WAAnB/hB,EAAQ+B,SACV/B,EAAQ+B,OAAS,OACjB/B,EAAQtY,IAAMY,GAUlB0X,EAAQshB,SAAW,KACZrB,GANEt4B,GA3BPqY,EAAQ+B,OAAS,QACjB/B,EAAQtY,IAAM,IAAIoT,UAAU,oCAC5BkF,EAAQshB,SAAW,KACZrB,GAoDX,SAAS+B,EAAaC,GACpB,IAAIC,EAAQ,CAAEC,OAAQF,EAAK,IAEvB,KAAKA,IACPC,EAAME,SAAWH,EAAK,IAGpB,KAAKA,IACPC,EAAMG,WAAaJ,EAAK,GACxBC,EAAMI,SAAWL,EAAK,IAGxB9hC,KAAKoiC,WAAWz4B,KAAKo4B,GAGvB,SAASM,EAAcN,GACrB,IAAIpB,EAASoB,EAAMO,YAAc,GACjC3B,EAAOh4B,KAAO,gBACPg4B,EAAOp5B,IACdw6B,EAAMO,WAAa3B,EAGrB,SAASrB,EAAQL,GAIfj/B,KAAKoiC,WAAa,CAAC,CAAEJ,OAAQ,SAC7B/C,EAAYh1B,QAAQ43B,EAAc7hC,MAClCA,KAAKuiC,OAAM,GA8Bb,SAASlC,EAAOmC,GACd,GAAIA,EAAU,CACZ,IAAIC,EAAiBD,EAAS/D,GAC9B,GAAIgE,EACF,OAAOA,EAAevnB,KAAKsnB,GAG7B,GAA6B,oBAAlBA,EAASb,KAClB,OAAOa,EAGT,IAAKE,MAAMF,EAASz4B,QAAS,CAC3B,IAAID,GAAK,EAAG63B,EAAO,SAASA,IAC1B,QAAS73B,EAAI04B,EAASz4B,OACpB,GAAIu0B,EAAOpjB,KAAKsnB,EAAU14B,GAGxB,OAFA63B,EAAKxgC,MAAQqhC,EAAS14B,GACtB63B,EAAKj6B,MAAO,EACLi6B,EAOX,OAHAA,EAAKxgC,MAAQgH,EACbw5B,EAAKj6B,MAAO,EAELi6B,GAGT,OAAOA,EAAKA,KAAOA,GAKvB,MAAO,CAAEA,KAAMT,GAIjB,SAASA,IACP,MAAO,CAAE//B,MAAOgH,EAAWT,MAAM,GA+MnC,OA5mBAq4B,EAAkB/kB,UAAYslB,EAAGllB,YAAc4kB,EAC/CA,EAA2B5kB,YAAc2kB,EACzCA,EAAkB4C,YAAc7D,EAC9BkB,EACApB,EACA,qBAaFR,EAAQwE,oBAAsB,SAASC,GACrC,IAAIC,EAAyB,oBAAXD,GAAyBA,EAAOznB,YAClD,QAAO0nB,IACHA,IAAS/C,GAG2B,uBAAnC+C,EAAKH,aAAeG,EAAK/hC,QAIhCq9B,EAAQ2E,KAAO,SAASF,GAQtB,OAPIz5B,OAAO45B,eACT55B,OAAO45B,eAAeH,EAAQ7C,IAE9B6C,EAAOI,UAAYjD,EACnBlB,EAAO+D,EAAQjE,EAAmB,sBAEpCiE,EAAO7nB,UAAY5R,OAAOi2B,OAAOiB,GAC1BuC,GAOTzE,EAAQ8E,MAAQ,SAAS37B,GACvB,MAAO,CAAEq5B,QAASr5B,IAsEpBg5B,EAAsBC,EAAcxlB,WACpCwlB,EAAcxlB,UAAU0jB,GAAuB,WAC7C,OAAO1+B,MAETo+B,EAAQoC,cAAgBA,EAKxBpC,EAAQ+E,MAAQ,SAASpE,EAASC,EAASl3B,EAAMm3B,EAAawB,QACxC,IAAhBA,IAAwBA,EAAc94B,SAE1C,IAAI4T,EAAO,IAAIilB,EACbpN,EAAK2L,EAASC,EAASl3B,EAAMm3B,GAC7BwB,GAGF,OAAOrC,EAAQwE,oBAAoB5D,GAC/BzjB,EACAA,EAAKomB,OAAO/5B,MAAK,SAAS+L,GACxB,OAAOA,EAAOjM,KAAOiM,EAAOxS,MAAQoa,EAAKomB,WAuKjDpB,EAAsBD,GAEtBxB,EAAOwB,EAAI1B,EAAmB,aAO9B0B,EAAG7B,GAAkB,WACnB,OAAOz+B,MAGTsgC,EAAGrlB,SAAW,WACZ,MAAO,sBAkCTmjB,EAAQj1B,KAAO,SAASF,GACtB,IAAIE,EAAO,GACX,IAAK,IAAIvI,KAAOqI,EACdE,EAAKQ,KAAK/I,GAMZ,OAJAuI,EAAKuH,UAIE,SAASixB,IACd,MAAOx4B,EAAKY,OAAQ,CAClB,IAAInJ,EAAMuI,EAAKi6B,MACf,GAAIxiC,KAAOqI,EAGT,OAFA04B,EAAKxgC,MAAQP,EACb+gC,EAAKj6B,MAAO,EACLi6B,EAQX,OADAA,EAAKj6B,MAAO,EACLi6B,IAsCXvD,EAAQiC,OAASA,EAMjBf,EAAQtkB,UAAY,CAClBI,YAAakkB,EAEbiD,MAAO,SAASc,GAcd,GAbArjC,KAAKsjC,KAAO,EACZtjC,KAAK2hC,KAAO,EAGZ3hC,KAAKshC,KAAOthC,KAAKuhC,MAAQp5B,EACzBnI,KAAK0H,MAAO,EACZ1H,KAAKmhC,SAAW,KAEhBnhC,KAAK4hB,OAAS,OACd5hB,KAAKuH,IAAMY,EAEXnI,KAAKoiC,WAAWn4B,QAAQo4B,IAEnBgB,EACH,IAAK,IAAItiC,KAAQf,KAEQ,MAAnBe,EAAKwiC,OAAO,IACZjF,EAAOpjB,KAAKlb,KAAMe,KACjB2hC,OAAO3hC,EAAKoa,MAAM,MACrBnb,KAAKe,GAAQoH,IAMrBq7B,KAAM,WACJxjC,KAAK0H,MAAO,EAEZ,IAAI+7B,EAAYzjC,KAAKoiC,WAAW,GAC5BsB,EAAaD,EAAUnB,WAC3B,GAAwB,UAApBoB,EAAW/6B,KACb,MAAM+6B,EAAWn8B,IAGnB,OAAOvH,KAAK2jC,MAGdnC,kBAAmB,SAASoC,GAC1B,GAAI5jC,KAAK0H,KACP,MAAMk8B,EAGR,IAAI/jB,EAAU7f,KACd,SAAS6jC,EAAOC,EAAKC,GAYnB,OAXApD,EAAOh4B,KAAO,QACdg4B,EAAOp5B,IAAMq8B,EACb/jB,EAAQ8hB,KAAOmC,EAEXC,IAGFlkB,EAAQ+B,OAAS,OACjB/B,EAAQtY,IAAMY,KAGN47B,EAGZ,IAAK,IAAIj6B,EAAI9J,KAAKoiC,WAAWr4B,OAAS,EAAGD,GAAK,IAAKA,EAAG,CACpD,IAAIi4B,EAAQ/hC,KAAKoiC,WAAWt4B,GACxB62B,EAASoB,EAAMO,WAEnB,GAAqB,SAAjBP,EAAMC,OAIR,OAAO6B,EAAO,OAGhB,GAAI9B,EAAMC,QAAUhiC,KAAKsjC,KAAM,CAC7B,IAAIU,EAAW1F,EAAOpjB,KAAK6mB,EAAO,YAC9BkC,EAAa3F,EAAOpjB,KAAK6mB,EAAO,cAEpC,GAAIiC,GAAYC,EAAY,CAC1B,GAAIjkC,KAAKsjC,KAAOvB,EAAME,SACpB,OAAO4B,EAAO9B,EAAME,UAAU,GACzB,GAAIjiC,KAAKsjC,KAAOvB,EAAMG,WAC3B,OAAO2B,EAAO9B,EAAMG,iBAGjB,GAAI8B,GACT,GAAIhkC,KAAKsjC,KAAOvB,EAAME,SACpB,OAAO4B,EAAO9B,EAAME,UAAU,OAG3B,KAAIgC,EAMT,MAAM,IAAIhD,MAAM,0CALhB,GAAIjhC,KAAKsjC,KAAOvB,EAAMG,WACpB,OAAO2B,EAAO9B,EAAMG,gBAU9BT,OAAQ,SAAS94B,EAAMpB,GACrB,IAAK,IAAIuC,EAAI9J,KAAKoiC,WAAWr4B,OAAS,EAAGD,GAAK,IAAKA,EAAG,CACpD,IAAIi4B,EAAQ/hC,KAAKoiC,WAAWt4B,GAC5B,GAAIi4B,EAAMC,QAAUhiC,KAAKsjC,MACrBhF,EAAOpjB,KAAK6mB,EAAO,eACnB/hC,KAAKsjC,KAAOvB,EAAMG,WAAY,CAChC,IAAIgC,EAAenC,EACnB,OAIAmC,IACU,UAATv7B,GACS,aAATA,IACDu7B,EAAalC,QAAUz6B,GACvBA,GAAO28B,EAAahC,aAGtBgC,EAAe,MAGjB,IAAIvD,EAASuD,EAAeA,EAAa5B,WAAa,GAItD,OAHA3B,EAAOh4B,KAAOA,EACdg4B,EAAOp5B,IAAMA,EAET28B,GACFlkC,KAAK4hB,OAAS,OACd5hB,KAAK2hC,KAAOuC,EAAahC,WAClBpC,GAGF9/B,KAAKmkC,SAASxD,IAGvBwD,SAAU,SAASxD,EAAQwB,GACzB,GAAoB,UAAhBxB,EAAOh4B,KACT,MAAMg4B,EAAOp5B,IAcf,MAXoB,UAAhBo5B,EAAOh4B,MACS,aAAhBg4B,EAAOh4B,KACT3I,KAAK2hC,KAAOhB,EAAOp5B,IACM,WAAhBo5B,EAAOh4B,MAChB3I,KAAK2jC,KAAO3jC,KAAKuH,IAAMo5B,EAAOp5B,IAC9BvH,KAAK4hB,OAAS,SACd5hB,KAAK2hC,KAAO,OACa,WAAhBhB,EAAOh4B,MAAqBw5B,IACrCniC,KAAK2hC,KAAOQ,GAGPrC,GAGTsE,OAAQ,SAASlC,GACf,IAAK,IAAIp4B,EAAI9J,KAAKoiC,WAAWr4B,OAAS,EAAGD,GAAK,IAAKA,EAAG,CACpD,IAAIi4B,EAAQ/hC,KAAKoiC,WAAWt4B,GAC5B,GAAIi4B,EAAMG,aAAeA,EAGvB,OAFAliC,KAAKmkC,SAASpC,EAAMO,WAAYP,EAAMI,UACtCE,EAAcN,GACPjC,IAKb,MAAS,SAASkC,GAChB,IAAK,IAAIl4B,EAAI9J,KAAKoiC,WAAWr4B,OAAS,EAAGD,GAAK,IAAKA,EAAG,CACpD,IAAIi4B,EAAQ/hC,KAAKoiC,WAAWt4B,GAC5B,GAAIi4B,EAAMC,SAAWA,EAAQ,CAC3B,IAAIrB,EAASoB,EAAMO,WACnB,GAAoB,UAAhB3B,EAAOh4B,KAAkB,CAC3B,IAAI07B,EAAS1D,EAAOp5B,IACpB86B,EAAcN,GAEhB,OAAOsC,GAMX,MAAM,IAAIpD,MAAM,0BAGlBqD,cAAe,SAAS9B,EAAUd,EAAYE,GAa5C,OAZA5hC,KAAKmhC,SAAW,CACd1lB,SAAU4kB,EAAOmC,GACjBd,WAAYA,EACZE,QAASA,GAGS,SAAhB5hC,KAAK4hB,SAGP5hB,KAAKuH,IAAMY,GAGN23B,IAQJ1B,EA7sBK,CAotBiBmG,EAAOnG,SAGtC,IACEoG,mBAAqBrG,EACrB,MAAOsG,GAUPC,SAAS,IAAK,yBAAdA,CAAwCvG,K,kMC1uB1C,SAASj0B,EAAgBI,EAAK1J,EAAKO,GAAiK,OAApJP,KAAO0J,EAAOlB,OAAOiB,eAAeC,EAAK1J,EAAK,CAAEO,MAAOA,EAAOuI,YAAY,EAAMa,cAAc,EAAMC,UAAU,IAAkBF,EAAI1J,GAAOO,EAAgBmJ,EASpM,IAAI,EAAQ,eAAsB,CACvC+c,MAAO,eAAS,QAChB/U,KAAM,eAAS,OAAkB,UACjCqyB,MAAO,eAAS,QAAmB,GACnClf,IAAK,eAAS,OAAkB,QAChC9c,KAAM,eAAS,OAAkB,UACjCP,QAAS,eAAS,SACjB,SAGQw8B,EAAwB,aAAIh3B,OAAO,CAC5C7M,KAAM,QACN4kB,YAAY,EACZjd,MAAO,EACP5I,OAAQ,SAAgBkR,EAAG4M,GACzB,IAAIinB,EAEAn8B,EAAQkV,EAAKlV,MACbhG,EAAOkb,EAAKlb,KACZkjB,EAAQhI,EAAKgI,MACbllB,EAAckd,EAAKld,YACnBslB,EAASJ,IACTK,EAAevlB,GAAe,GAC9BqvB,EAAS,eAAc,OAAiB,GAAI9J,EAAcD,IAAWtd,EAAM2e,MAQ/E,OANI0I,IACFA,EAAS/e,EAAE,OAAQ,CACjBzQ,YAAa,WACZwvB,IAGE/e,EAAEtI,EAAM+c,IAAK,eAAU/iB,EAAM,CAClCrC,MAAO,CACLiS,KAAMyd,EAASrnB,EAAM4J,MAAQ,SAAW,KACxC,cAAeyd,EAAS,KAAO,QAEjC1nB,OAAQw8B,EAAS,GAAI36B,EAAgB26B,EAAQ,WAAW12B,OAAOzF,EAAMC,MAAOD,EAAMC,MAAOuB,EAAgB26B,EAAQ,WAAW12B,OAAOzF,EAAMC,KAAM,OAAQD,EAAMi8B,OAAQz6B,EAAgB26B,EAAQ,QAAQ12B,OAAOzF,EAAMN,SAAUM,EAAMN,SAAUy8B,KAC1O,CAAC9U,GAAU/e,S,YC9CnB,SAAShI,EAAQC,EAAQC,GAAkB,IAAIC,EAAOC,OAAOD,KAAKF,GAAS,GAAIG,OAAOC,sBAAuB,CAAE,IAAIC,EAAUF,OAAOC,sBAAsBJ,GAAaC,IAAgBI,EAAUA,EAAQC,QAAO,SAAUC,GAAO,OAAOJ,OAAOK,yBAAyBR,EAAQO,GAAKE,eAAgBP,EAAKQ,KAAK1B,MAAMkB,EAAMG,GAAY,OAAOH,EAE9U,SAASS,EAAcC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAI9B,UAAU+B,OAAQD,IAAK,CAAE,IAAIE,EAAyB,MAAhBhC,UAAU8B,GAAa9B,UAAU8B,GAAK,GAAQA,EAAI,EAAKd,EAAQI,OAAOY,IAAS,GAAMC,SAAQ,SAAUrJ,GAAO,EAAgBiJ,EAAQjJ,EAAKoJ,EAAOpJ,OAAsBwI,OAAOe,0BAA6Bf,OAAOgB,iBAAiBP,EAAQT,OAAOe,0BAA0BH,IAAmBhB,EAAQI,OAAOY,IAASC,SAAQ,SAAUrJ,GAAOwI,OAAOiB,eAAeR,EAAQjJ,EAAKwI,OAAOK,yBAAyBO,EAAQpJ,OAAe,OAAOiJ,EAE7gB,SAAS,EAAgBS,EAAK1J,EAAKO,GAAiK,OAApJP,KAAO0J,EAAOlB,OAAOiB,eAAeC,EAAK1J,EAAK,CAAEO,MAAOA,EAAOuI,YAAY,EAAMa,cAAc,EAAMC,UAAU,IAAkBF,EAAI1J,GAAOO,EAAgBmJ,EAa3M,IAAIw6B,EAAiB,CACnBC,IAAK,EACLC,KAAM,EACNC,OAAQ,EACR9e,MAAO,GAGE,EAAQ,eAAsB,CAGvC+e,QAAS,eAAS,QAClB3O,KAAM,eAAS,OAAkB,OACjC4O,MAAO,eAAS,QAAmB,GACnCC,SAAU,eAAS,QAAmB,GACtCC,OAAQ,eAAS,QAAmB,GAGpCC,OAAQ,eAAS,QAAmB,GACpCC,QAAS,eAAS,OAAyB,KAAM,SAAUpkC,GACzD,IAAIsK,EAAS,eAAQtK,EAAO,GAC5B,OAAOsK,GAAU,GAAKA,GAAU,KAElC+5B,WAAY,eAAS,OAAkB,OACvCC,QAAS,eAAS,QAA0B,GAC5CnlC,KAAM,eAAS,QAAmB,GAClColC,aAAc,eAAS,QAAmB,GAC1CC,YAAa,eAAS,OAAkB,UACxCC,eAAgB,eAAS,QACzBx9B,QAAS,eAAS,OAAkB,SACpCy9B,QAAS,eAAS,OAAkB,OACpCC,OAAQ,eAAS,OAAyB,KACzC,SAGQzhC,EAAwB,aAAIuJ,OAAO,CAC5C7M,KAAM,QACN8M,OAAQ,CAAC,QACTnF,MAAO,EACPuF,SAAU,CACR83B,gBAAiB,WACf,IAAIN,EAAUzlC,KAAKylC,QACnB,OAAmB,IAAZA,GAAgC,KAAZA,EAAiB,UAAaA,EAAe,WAAWt3B,OAAOs3B,GAAvB,IAErEO,gBAAiB,WACf,IAAI59B,EAAUpI,KAAKoI,QACnB,OAAOA,IAAYpI,KAAKklC,QAAU,MAAM/2B,OAAO/F,GAAW,IAE5D2d,UAAW,WACT,MAAO,CACL4f,YAAa3lC,KAAK2lC,aAAe,KACjCC,eAAgB5lC,KAAK4lC,gBAAkB,KACvCF,aAAc1lC,KAAK0lC,gBAIzB//B,QAAS,CACPsgC,iBAAkB,SAA0BroB,GAC1C,IAAI+nB,EAAc/nB,EAAK+nB,YACnBC,EAAiBhoB,EAAKgoB,eACtBF,EAAe9nB,EAAK8nB,aACxB,OAAO1lC,KAAKE,eAAe0kC,EAAU,CACnCl8B,MAAO,CACLC,KAAMg9B,EACNv9B,QAASw9B,EACTjB,MAAOe,OAKf5lC,OAAQ,SAAgBkR,GACtB,IAAIzB,EAAQvP,KAERM,EAAON,KAAKM,KACZ6kC,EAAQnlC,KAAKmlC,MACbE,EAASrlC,KAAKqlC,OACdC,EAAStlC,KAAKslC,OACdvf,EAAY/lB,KAAK+lB,UACjBmgB,EAAWl1B,IAEf,GAAI1Q,EAAM,CACR,IAAI6lC,EAAcn1B,EAAE,MAAO,CACzBzQ,YAAa,oBACb8H,MAAO,CAACrI,KAAKgmC,gBAAiBhmC,KAAK+lC,iBACnC9Q,MAAOrrB,EAAcA,EAAc,GAAIk7B,GAAiB,GAAI,CAC1DS,QAASvlC,KAAKulC,QACda,gBAAiBpmC,KAAKklC,SAAW,KACjCmB,eAAgBrmC,KAAKu2B,KAAO,QAAQpoB,OAAOnO,KAAKu2B,KAAM,KAAO,SAG7D1F,EAAW7f,EAAE,MAAO,CACtBzQ,YAAa,oBACb00B,MAAOj1B,KAAKolC,SAEZx7B,EAAc,GAAIk7B,GAAkB,CAClCC,IAAK,MACLC,KAAM,MACNsB,UAAW,sCAEZ,CAACtmC,KAAKmS,cAAc,OAAmB4T,IAAc/lB,KAAKimC,iBAAiBlgB,KAC9EmgB,EAAWl1B,EAAEhR,KAAKwlC,WAAY,CAC5BjlC,YAAa,YACb8H,MAAO,CACL,qBAAsBi9B,GAAUA,IAAWH,EAC3C,iBAAkBG,GAAUH,GAE9BlQ,MAAOrrB,EAAcA,EAAc,GAAIk7B,GAAiB,GAAI,CAC1DgB,OAAQ9lC,KAAK8lC,QAAU,KAEzBhkC,GAAI,CACFmK,MAAO,SAAed,GACpB,OAAOoE,EAAM/G,MAAM,OAAkB2C,KAGzCvK,IAAK,WACJ,CAACulC,EAAatV,IAmBnB,OAfAqV,EAAWl1B,EAAE,OAAc,CACzBtI,MAAO,CACL28B,OAAQA,EACRkB,QAAQ,GAEVzkC,GAAI,CACF,cAAe,WACb,OAAOyN,EAAM/G,MAAM,SAErB,cAAe,WACb,OAAO+G,EAAM/G,MAAM,WAGtB,CAAC09B,IAEAZ,EACKY,EAGFl1B,EAAEhR,KAAK6lC,QAAS,CACrBtlC,YAAa,mCACbF,MAAO,CACL,YAAaC,EAAO,OAAS,OAE9BglC,EAAS,CAACY,GAAY,CAAClmC,KAAKmS,gBAAiB+zB,Q,oCC/JpD,uKAASl9B,EAAQC,EAAQC,GAAkB,IAAIC,EAAOC,OAAOD,KAAKF,GAAS,GAAIG,OAAOC,sBAAuB,CAAE,IAAIC,EAAUF,OAAOC,sBAAsBJ,GAAaC,IAAgBI,EAAUA,EAAQC,QAAO,SAAUC,GAAO,OAAOJ,OAAOK,yBAAyBR,EAAQO,GAAKE,eAAgBP,EAAKQ,KAAK1B,MAAMkB,EAAMG,GAAY,OAAOH,EAE9U,SAASS,EAAcC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAI9B,UAAU+B,OAAQD,IAAK,CAAE,IAAIE,EAAyB,MAAhBhC,UAAU8B,GAAa9B,UAAU8B,GAAK,GAAQA,EAAI,EAAKd,EAAQI,OAAOY,IAAS,GAAMC,SAAQ,SAAUrJ,GAAOsJ,EAAgBL,EAAQjJ,EAAKoJ,EAAOpJ,OAAsBwI,OAAOe,0BAA6Bf,OAAOgB,iBAAiBP,EAAQT,OAAOe,0BAA0BH,IAAmBhB,EAAQI,OAAOY,IAASC,SAAQ,SAAUrJ,GAAOwI,OAAOiB,eAAeR,EAAQjJ,EAAKwI,OAAOK,yBAAyBO,EAAQpJ,OAAe,OAAOiJ,EAE7gB,SAASK,EAAgBI,EAAK1J,EAAKO,GAAiK,OAApJP,KAAO0J,EAAOlB,OAAOiB,eAAeC,EAAK1J,EAAK,CAAEO,MAAOA,EAAOuI,YAAY,EAAMa,cAAc,EAAMC,UAAU,IAAkBF,EAAI1J,GAAOO,EAAgBmJ,EAapM,IAAI5B,EAAQ,eAAsB,eAASkB,EAAcA,EAAc,GAAI,eAAK,OAAY,CAAC,QAAS,eAAgB,GAAI,CAC/H48B,UAAW,eAAS,QACpBp+B,QAAS,eAAS,WACf,QAGM/C,EAA6B,aAAIuI,OAAO,CACjD7M,KAAM,OACN8M,OAAQ,CAAC,OAAY,QACrB0G,OAAQ,CACNymB,WAAY,CACVnyB,QAAS,OAGb4L,cAAc,EACd/L,MAAOA,EACPuF,SAAU,CACRwnB,cAAe,WACb,OAAO7rB,EAAcA,EAAc,GAAI5J,KAAKqV,SAAU,GAAI,CACxD/C,KAAM,eAIZ3M,QAAS,CACP8gC,cAAe,WACb,IAAIl3B,EAAQvP,KAGZ,gBAAU,WACJuP,EAAMyrB,YACRzrB,EAAMyrB,WAAWwC,MAAK,OAI5B/qB,QAAS,SAAiBtH,GACxBnL,KAAKwI,MAAM,OAAkB2C,GAC7BnL,KAAKymC,kBAGT3mC,OAAQ,SAAgBkR,GACtB,IAAIw1B,EAAYxmC,KAAKwmC,UACjBp+B,EAAUpI,KAAKoI,QACf0K,EAAS9S,KAAK8S,OACd1G,EAAWpM,KAAKoM,SAChBqG,EAAUzS,KAAKyS,QACf4C,EAAUrV,KAAKqV,QACnB,OAAOrE,EAAE,KAAM,CACb3I,MAAOgN,EAAQhN,MACf4sB,MAAO5f,EAAQ4f,MACf50B,MAAO,CACLiS,KAAM,iBAEP,CAACtB,EAAE,OAAO,CACXzQ,YAAa,gBACb8H,MAAO,CAACm+B,EAAWt8B,EAAgB,GAAI,QAAQiE,OAAO/F,GAAUA,KAAa0K,GAAU1G,KACvF1D,MAAO1I,KAAK2rB,OACZtrB,MAAOL,KAAKy1B,cACZ3zB,GAAI,CACFmK,MAAOwG,GAET3R,IAAK,QACJd,KAAKmS,uB,kCC9EZ,4GAIWzJ,EAAQ,eAAsB,CACvCg+B,MAAO,eAAS,QAAmB,IAClC,gBAGQC,EAAkB,aAAI/4B,OAAO,CACtClF,MAAOA,EACPuF,SAAU,CACR24B,OAAQ,WACN,OAAQ5mC,KAAK0mC,W,kCCbnB,8DAEIG,EAAkB,CAAC,KAAM,KAAM,MAGxBC,EAAc,SAAqB37B,GAE5C,IAAKA,IAAUA,EAAMtB,OAEnB,OAAO,EAGT,IAAI0G,EAAKpF,EAAMtB,OAEf,GAAI0G,EAAGnE,WAAqD,IAAzCy6B,EAAgB/1B,QAAQP,EAAGga,SAC5C,OAAO,EAIT,GAAI,eAAQ,iBAAkBha,GAC5B,OAAO,EAGT,IAAI8W,EAAuB,UAAf9W,EAAGga,QAAsBha,EAAK,eAAQ,QAASA,GAI3D,GAAI8W,EAAO,CACT,IAAIkH,EAAW,eAAQlH,EAAO,OAC1B0f,EAAQxY,EAAW,eAAQA,GAAY,eAAO,0BAA2BlH,GAE7E,GAAI0f,IAAUA,EAAM36B,SAClB,OAAO,EAOX,OAAO,eAAQmE,EAAI,U,kCCvCrB,W,kCCAA,W,0SCAA,SAASvH,EAAQC,EAAQC,GAAkB,IAAIC,EAAOC,OAAOD,KAAKF,GAAS,GAAIG,OAAOC,sBAAuB,CAAE,IAAIC,EAAUF,OAAOC,sBAAsBJ,GAAaC,IAAgBI,EAAUA,EAAQC,QAAO,SAAUC,GAAO,OAAOJ,OAAOK,yBAAyBR,EAAQO,GAAKE,eAAgBP,EAAKQ,KAAK1B,MAAMkB,EAAMG,GAAY,OAAOH,EAE9U,SAASS,EAAcC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAI9B,UAAU+B,OAAQD,IAAK,CAAE,IAAIE,EAAyB,MAAhBhC,UAAU8B,GAAa9B,UAAU8B,GAAK,GAAQA,EAAI,EAAKd,EAAQI,OAAOY,IAAS,GAAMC,SAAQ,SAAUrJ,GAAOsJ,EAAgBL,EAAQjJ,EAAKoJ,EAAOpJ,OAAsBwI,OAAOe,0BAA6Bf,OAAOgB,iBAAiBP,EAAQT,OAAOe,0BAA0BH,IAAmBhB,EAAQI,OAAOY,IAASC,SAAQ,SAAUrJ,GAAOwI,OAAOiB,eAAeR,EAAQjJ,EAAKwI,OAAOK,yBAAyBO,EAAQpJ,OAAe,OAAOiJ,EAE7gB,SAASK,EAAgBI,EAAK1J,EAAKO,GAAiK,OAApJP,KAAO0J,EAAOlB,OAAOiB,eAAeC,EAAK1J,EAAK,CAAEO,MAAOA,EAAOuI,YAAY,EAAMa,cAAc,EAAMC,UAAU,IAAkBF,EAAI1J,GAAOO,EAAgBmJ,EAUpM,IAAI,EAAQ,eAAsB,CAGvC+mB,YAAa,eAAS,SACrB,SAMQ2V,EAAsB,aAAIp5B,OAAO,CAC1C7M,KAAM,QACN8M,OAAQ,CAACxN,EAAA,KAAY4mC,EAAA,KAAgB,QACrC5yB,QAAS,WACP,MAAO,CACLC,gBAAiBtU,OAGrBuU,OAAQ,CAENC,QAAS,CACP3L,QAEA,WACE,MAAO,MAIb4L,cAAc,EACd/L,MAAO,EACPuF,SAAU,CAERi5B,QAAS,WACP,OAAO,GAGTvyB,OAAQ,WACN,OAAO3U,KAAKwU,QAAQI,MAGtBC,UAAW,WACT,OAAO7U,KAAKwU,QAAQK,WAGtBC,aAAc,WACZ,OAAO9U,KAAKwU,QAAQM,cAMtBC,eAAgB,WACd,OAAQ/U,KAAK6U,WAAa7U,KAAKwU,QAAQS,cAKzCD,gBAAiB,WACf,OAAQhV,KAAK6U,WAAa7U,KAAKwU,QAAQS,cAGzCC,aAAc,WACZ,OAAOlV,KAAKwU,QAAQU,cAEtBiyB,aAAc,WACZ,MAAO,CAACnnC,KAAKqxB,YAAc,SAASljB,OAAOnO,KAAKqxB,aAAe,OAEjE+V,WAAY,WACV,OAAOx9B,EAAc,CACnB0I,KAAM,YACLtS,KAAKqV,WAGZvV,OAAQ,SAAgBkR,GACtB,OAAOA,EAAE,QAAS,CAChB3I,MAAOrI,KAAKmnC,aACZ9mC,MAAOL,KAAKonC,WAEZtlC,GAAI9B,KAAKsV,aACRtV,KAAKmS,oB,4DC7FZ,SAASkI,EAAmBC,GAAO,OAAOC,EAAmBD,IAAQE,EAAiBF,IAAQG,EAA4BH,IAAQI,IAElI,SAASA,IAAuB,MAAM,IAAIC,UAAU,wIAEpD,SAASF,EAA4BG,EAAGC,GAAU,GAAKD,EAAL,CAAgB,GAAiB,kBAANA,EAAgB,OAAOE,EAAkBF,EAAGC,GAAS,IAAIE,EAAI3R,OAAO4R,UAAUC,SAASC,KAAKN,GAAGO,MAAM,GAAI,GAAiE,MAAnD,WAANJ,GAAkBH,EAAEQ,cAAaL,EAAIH,EAAEQ,YAAYra,MAAgB,QAANga,GAAqB,QAANA,EAAoBM,MAAM5F,KAAKmF,GAAc,cAANG,GAAqB,2CAA2CO,KAAKP,GAAWD,EAAkBF,EAAGC,QAAzG,GAE7S,SAASL,EAAiBe,GAAQ,GAAsB,qBAAXC,QAA0BA,OAAOC,YAAYrS,OAAOmS,GAAO,OAAOF,MAAM5F,KAAK8F,GAE1H,SAAShB,EAAmBD,GAAO,GAAIe,MAAMK,QAAQpB,GAAM,OAAOQ,EAAkBR,GAEpF,SAASQ,EAAkBR,EAAKqB,IAAkB,MAAPA,GAAeA,EAAMrB,EAAIvQ,UAAQ4R,EAAMrB,EAAIvQ,QAAQ,IAAK,IAAID,EAAI,EAAG8R,EAAO,IAAIP,MAAMM,GAAM7R,EAAI6R,EAAK7R,IAAO8R,EAAK9R,GAAKwQ,EAAIxQ,GAAM,OAAO8R,EAEhL,SAAS,EAAQ3S,EAAQC,GAAkB,IAAIC,EAAOC,OAAOD,KAAKF,GAAS,GAAIG,OAAOC,sBAAuB,CAAE,IAAIC,EAAUF,OAAOC,sBAAsBJ,GAAaC,IAAgBI,EAAUA,EAAQC,QAAO,SAAUC,GAAO,OAAOJ,OAAOK,yBAAyBR,EAAQO,GAAKE,eAAgBP,EAAKQ,KAAK1B,MAAMkB,EAAMG,GAAY,OAAOH,EAE9U,SAAS,EAAcU,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAI9B,UAAU+B,OAAQD,IAAK,CAAE,IAAIE,EAAyB,MAAhBhC,UAAU8B,GAAa9B,UAAU8B,GAAK,GAAQA,EAAI,EAAK,EAAQV,OAAOY,IAAS,GAAMC,SAAQ,SAAUrJ,GAAO,EAAgBiJ,EAAQjJ,EAAKoJ,EAAOpJ,OAAsBwI,OAAOe,0BAA6Bf,OAAOgB,iBAAiBP,EAAQT,OAAOe,0BAA0BH,IAAmB,EAAQZ,OAAOY,IAASC,SAAQ,SAAUrJ,GAAOwI,OAAOiB,eAAeR,EAAQjJ,EAAKwI,OAAOK,yBAAyBO,EAAQpJ,OAAe,OAAOiJ,EAE7gB,SAAS,EAAgBS,EAAK1J,EAAKO,GAAiK,OAApJP,KAAO0J,EAAOlB,OAAOiB,eAAeC,EAAK1J,EAAK,CAAEO,MAAOA,EAAOuI,YAAY,EAAMa,cAAc,EAAMC,UAAU,IAAkBF,EAAI1J,GAAOO,EAAgBmJ,EAqB3M,IAAI+8B,EAAkB,SAAyBlmC,GAC7C,MAAO,QAAQgN,OAAOhN,GAAS,GAAI,MAGjCmmC,EAAkB,SAAyBnmC,GAC7C,MAAO,QAAQgN,OAAOhN,GAAS,GAAI,MAI1B,EAAQ,CAEjBomC,eAAgB,eAAS,QAEzBlW,YAAa,eAAS,QACtBmW,WAAY,eAAS,QACrBC,aAAc,eAAS,SAIdC,EAAa,aAAI95B,OAAO,CACjClF,MAAO,EACP/C,QAAS,CACPgiC,aAAc,SAAsB3tB,GAElC,MAAO,CAACA,EAAM3R,MAAQ2R,EAAM3R,MAAQ,GAAI2R,EAAM4tB,QAAU5tB,EAAM4tB,QAAU,KAE1EC,YAAa,SAAqB18B,EAAO6O,EAAO0K,GAC1C1kB,KAAKwY,YAAcxY,KAAKwY,WAAWrN,IAG5B,eAAYA,IAGZ,eAAoBnL,KAAKkQ,OAOpC,eAAU/E,GACVnL,KAAKwI,MAAM,OAAyBwR,EAAMpZ,IAAKoZ,EAAO7O,EAAOuZ,KAE/D6M,YAAa,WACX,IAAIhiB,EAAQvP,KAER0kB,EAAS1c,UAAU+B,OAAS,QAAsB5B,IAAjBH,UAAU,IAAmBA,UAAU,GACxE6P,EAAS7X,KAAK8X,eACdiM,EAAa/jB,KAAK+jB,WAClBtD,EAAezgB,KAAKygB,aACpB4Q,EAAcrxB,KAAKqxB,YACnBld,EAAcnU,KAAKmU,YACnBozB,EAAiBvnC,KAAKunC,eACtBvW,EAAiBhxB,KAAKgxB,eACtBhgB,EAAIhR,KAAKE,eAGb,GAAIF,KAAK8nC,iBAAqC,IAAlBjwB,EAAO9N,OACjC,OAAOiH,IAGT,IAAI+2B,EAAuBhkB,GAAc/jB,KAAKwqB,YAAY,QAEtD/I,EAAgBhB,EAAezgB,KAAKyhB,cAAgBumB,EAAA,KACpDtoB,EAAgBe,EAAezgB,KAAK0f,cAAgBsoB,EAAA,KAEpDC,EAAW,SAAkBjuB,EAAOmN,GACtC,IAAIE,EAAQrN,EAAMqN,MACd6gB,EAAYluB,EAAMkuB,UAClB9/B,EAAU4R,EAAM5R,QAChBof,EAAexN,EAAMwN,aACrB5mB,EAAMoZ,EAAMpZ,IACZuL,EAAY,KAEX6N,EAAMqN,MAAMqI,QAAW1V,EAAMmuB,cAKhCh8B,EAAY,eAAU6N,EAAMpZ,MAG9B,IAAIkB,EAAK,GAELimC,IACFjmC,EAAGmK,MAAQ,SAAUd,GACnBoE,EAAMs4B,YAAY18B,EAAO6O,EAAO0K,IAGlC5iB,EAAG4Q,QAAU,SAAUvH,GACrB,IAAIW,EAAUX,EAAMW,QAEhBA,IAAY,QAAcA,IAAY,QACxCyD,EAAMs4B,YAAY18B,EAAO6O,EAAO0K,KAKtC,IAAI0jB,EAAYrkB,EAAaxU,EAAM0V,iBAAiBrkB,EAAKoZ,EAAO0K,GAAU,GACtE2jB,EAAYtkB,EAAaxU,EAAMwV,mBAAmBnkB,EAAKoZ,EAAO0K,GAAU,KACxE4jB,EAAYvkB,EAAaxU,EAAM4V,iBAAiBvkB,EAAKoZ,EAAO0K,GAAU,KACtEhiB,EAAO,CACT2F,MAAO,CAACkH,EAAMo4B,aAAa3tB,GAAQquB,GACnC3/B,MAAO,CACLN,QAASA,EACTof,aAAcA,GAEhByN,MAAOjb,EAAMuuB,SAAW,GACxBloC,MAAO,EAAc,EAAc,CAGjCkS,SAAUw1B,GAAwB/tB,EAAMiK,SAAW,IAAM,KACzDukB,KAAMxuB,EAAMyuB,YAAc,KAC1BliC,MAAOyT,EAAMmuB,aAAe,KAC5B,gBAAiBhhB,EAAW,EAC5B,aAAchb,GACboD,EAAMkX,YAAY,KAAM7lB,EAAKoZ,EAAM4N,OAAQlD,EAAS,OAAS,OAAQ,KAAM0jB,GAC9EtmC,GAAIA,EACJlB,IAAKA,GAOH8nC,EAAY,CAACrB,EAAgBzmC,GAAMymC,EAAgBzmC,EAAIyqB,eAAgBgc,KAEvE3iB,IACFgkB,EAAY,CAACpB,EAAgB1mC,GAAM0mC,EAAgB1mC,EAAIyqB,eAAgBic,KAAmBn5B,OAAOkM,EAAmBquB,KAGtH,IAAIz2B,EAAQ,CACVoV,MAAOA,EACPshB,OAAQ/nC,EACRoZ,MAAOA,EACP0K,OAAQA,EAERjD,cAAeA,EACf/B,cAAeA,GAEbmR,EAAWthB,EAAM4C,cAAcu2B,EAAWz2B,IAAUjB,EAAE,MAAO,CAC/D1I,SAAU,OAAAiO,EAAA,MAAW2xB,EAAW7gB,KAE9BuhB,EAAWN,EAAYt3B,EAAE,OAAQ,CACnCzQ,YAAa,WACZ,KAAK4N,OAAOm6B,EAAW,MAAQ,KAElC,OAAOt3B,EAAE,OAAKtO,EAAM,CAACmuB,EAAU+X,GAAUr/B,OAAO+S,EAAA,QAI9CusB,EAAShxB,EAAO1G,IAAI82B,GAAU1+B,OAAO+S,EAAA,MAErCwsB,EAAO,GAEX,GAAIpkB,EACFokB,EAAKn/B,KAAKqH,EAAE,OAAK,CACf3I,MAAOrI,KAAKkxB,aACZxoB,MAAO,CACLN,QAAS,eAAkB4oB,GAAkBuW,EAE7CvW,IAED6X,QACE,CACL,IAAI52B,EAAQ,CACViG,QAASL,EAAO9N,OAChB8N,OAAQA,EAER4J,cAAeA,EACf/B,cAAeA,GAEjBopB,EAAKn/B,KAAK3J,KAAKmS,cAAc,OAAqBF,IAAUjB,KAC5D83B,EAAKn/B,KAAKqH,EAAE,OAAK,CACf3I,MAAOrI,KAAKynC,aACZ/+B,MAAO,CACLN,QAASm/B,IAEVsB,IAGL,OAAO73B,EAAE0T,EAAS,OAASsiB,EAAQ,CACjC3+B,OAAQqc,EAAS1kB,KAAKixB,WAAajxB,KAAKwnC,aAAe,KACvD9+B,MAAOgc,EAAS,CACdvQ,YAAaA,GAAekd,GAAe,MACzC,CACFA,YAAaA,GAAe,MAE9BzwB,IAAK8jB,EAAS,WAAa,YAC1BokB,Q,wEClOLC,E,wECEO,EAAe,SAAsB3uB,EAAOjZ,GACrD,IAAK,IAAI2I,EAAI,EAAGA,EAAIsQ,EAAMrQ,OAAQD,IAChC,GAAI,eAAWsQ,EAAMtQ,GAAI3I,GACvB,OAAO2I,EAIX,OAAQ,G,oCDPV,SAASd,EAAQC,EAAQC,GAAkB,IAAIC,EAAOC,OAAOD,KAAKF,GAAS,GAAIG,OAAOC,sBAAuB,CAAE,IAAIC,EAAUF,OAAOC,sBAAsBJ,GAAaC,IAAgBI,EAAUA,EAAQC,QAAO,SAAUC,GAAO,OAAOJ,OAAOK,yBAAyBR,EAAQO,GAAKE,eAAgBP,EAAKQ,KAAK1B,MAAMkB,EAAMG,GAAY,OAAOH,EAE9U,SAASS,EAAcC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAI9B,UAAU+B,OAAQD,IAAK,CAAE,IAAIE,EAAyB,MAAhBhC,UAAU8B,GAAa9B,UAAU8B,GAAK,GAAQA,EAAI,EAAKd,EAAQI,OAAOY,IAAS,GAAMC,SAAQ,SAAUrJ,GAAOsJ,EAAgBL,EAAQjJ,EAAKoJ,EAAOpJ,OAAsBwI,OAAOe,0BAA6Bf,OAAOgB,iBAAiBP,EAAQT,OAAOe,0BAA0BH,IAAmBhB,EAAQI,OAAOY,IAASC,SAAQ,SAAUrJ,GAAOwI,OAAOiB,eAAeR,EAAQjJ,EAAKwI,OAAOK,yBAAyBO,EAAQpJ,OAAe,OAAOiJ,EAE7gB,SAASK,EAAgBI,EAAK1J,EAAKO,GAAiK,OAApJP,KAAO0J,EAAOlB,OAAOiB,eAAeC,EAAK1J,EAAK,CAAEO,MAAOA,EAAOuI,YAAY,EAAMa,cAAc,EAAMC,UAAU,IAAkBF,EAAI1J,GAAOO,EAAgBmJ,EAa3M,IAAI0+B,EAAgC,gBAChCC,EAAiC,QAA0BD,EAEpD,EAAQ,eAAsB,eAASp/B,EAAcA,EAAc,GAAI,QAAsB,IAAKm/B,EAAiB,GAAI7+B,EAAgB6+B,EAAgBC,EAA+B,eAAS,QAAmB,IAAS9+B,EAAgB6+B,EAAgB,SAAU,eAAS,QAAmB,IAAS7+B,EAAgB6+B,EAAgB,iBAAkB,eAAS,QAAe,IAAS7+B,EAAgB6+B,EAAgB,QAAS,eAAS,QAAe,IAAQA,KAAmB,QAGzdG,EAA6B,aAAIt7B,OAAO,CACjD7M,KAAM,OACN8M,OAAQ,CAAC,QACT0G,OAAQ,CACNiB,QAAS,CACPC,KAAM,eACN5M,QAAS,OAGbH,MAAO,EACPuF,SAAU,CACRk7B,UAAW,WACT,IAAIhoC,EAAQnB,KAAKmB,MACbioC,EAAUppC,KAAK0V,qBACnB,OAAO,eAAQ0zB,GAAW,EAAaA,EAASjoC,IAAU,EAAI,eAAWioC,EAASjoC,IAEpFkoC,QAAS,WACP,OAAO,IAGXj6B,MAAOlF,EAAgB,GAAI8+B,GAA+B,SAAU35B,EAAUC,GACvE,eAAWD,EAAUC,IACxBtP,KAAKspC,iBAAiBj6B,MAG1BgQ,QAAS,WAEPrf,KAAKspC,iBAAiBtpC,KAAKgpC,KAE7BrjC,QAAS,CACP4jC,4BAA6B,SAAqCl6B,EAAUC,GAC1E,IAAK,eAAWD,EAAUC,GAAW,CACnCtP,KAAKwI,MAAM,OAAkB6G,GAC7B,IAAIggB,EAASrvB,KAAKkqB,MAAM6c,MAEpB1X,GACFrvB,KAAKwI,MAAMygC,EAAgC5Z,EAAOma,iBAIxDC,aAAc,SAAsB7rB,GAClC,IAAIrO,EAAQvP,KAER0pC,EAAc9rB,EAAK/T,OACnBu/B,EAAUM,EAAYN,QACtBI,EAAgBE,EAAYF,cAC5BroC,EAAQnB,KAAKmB,MACbwoC,EAAiB3pC,KAAK2pC,eAEtB5yB,EAAe/W,KAAK0V,qBAExB,GAAI,eAAQqB,GAAe,CACzB,IAAIlG,EAAQ,EAAakG,EAAc5V,GAEnCioC,GAAWv4B,EAAQ,EAErBkG,EAAeA,EAAa5I,OAAOhN,IACzBioC,GAAWv4B,GAAS,IAE9BkG,EAAeA,EAAaoE,MAAM,EAAGtK,GAAO1C,OAAO4I,EAAaoE,MAAMtK,EAAQ,UAGhFkG,EAAeqyB,EAAUjoC,EAAQwoC,EAGnC3pC,KAAK0V,qBAAuBqB,EAE5B/W,KAAKwP,WAAU,WAEbD,EAAM/G,MAAM,OAAmBuO,GAG3BxH,EAAMq6B,SACRr6B,EAAMiG,QAAQhN,MAAM,OAAmBuO,GAGzCxH,EAAM/G,MAAMygC,EAAgCO,OAGhDF,iBAAkB,SAA0B3b,GAEtC,eAAQ3tB,KAAK0V,wBACfiY,GAAQ,GAGV,IAAI0B,EAASrvB,KAAKkqB,MAAM6c,MAEpB1X,IACFA,EAAOma,cAAgB7b,EAEvB3tB,KAAKwI,MAAMygC,EAAgCtb,S,kCEnHnD,sCAAI5kB,EAAJ,oUAEA,SAASC,EAAQC,EAAQC,GAAkB,IAAIC,EAAOC,OAAOD,KAAKF,GAAS,GAAIG,OAAOC,sBAAuB,CAAE,IAAIC,EAAUF,OAAOC,sBAAsBJ,GAAaC,IAAgBI,EAAUA,EAAQC,QAAO,SAAUC,GAAO,OAAOJ,OAAOK,yBAAyBR,EAAQO,GAAKE,eAAgBP,EAAKQ,KAAK1B,MAAMkB,EAAMG,GAAY,OAAOH,EAE9U,SAASS,EAAcC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAI9B,UAAU+B,OAAQD,IAAK,CAAE,IAAIE,EAAyB,MAAhBhC,UAAU8B,GAAa9B,UAAU8B,GAAK,GAAQA,EAAI,EAAKd,EAAQI,OAAOY,IAAS,GAAMC,SAAQ,SAAUrJ,GAAOsJ,EAAgBL,EAAQjJ,EAAKoJ,EAAOpJ,OAAsBwI,OAAOe,0BAA6Bf,OAAOgB,iBAAiBP,EAAQT,OAAOe,0BAA0BH,IAAmBhB,EAAQI,OAAOY,IAASC,SAAQ,SAAUrJ,GAAOwI,OAAOiB,eAAeR,EAAQjJ,EAAKwI,OAAOK,yBAAyBO,EAAQpJ,OAAe,OAAOiJ,EAE7gB,SAASK,EAAgBI,EAAK1J,EAAKO,GAAiK,OAApJP,KAAO0J,EAAOlB,OAAOiB,eAAeC,EAAK1J,EAAK,CAAEO,MAAOA,EAAOuI,YAAY,EAAMa,cAAc,EAAMC,UAAU,IAAkBF,EAAI1J,GAAOO,EAAgBmJ,EA8B3M,IAAIG,EAAkB,eAAe,QAAS,CAC5C9B,KAAM,CAAC,OAAiB,QACxB+B,aAAc,KACdC,UAAW,SAAmBxJ,GAE5B,MAAc,KAAVA,GACF,eAAK0oC,EAA4B,SAC1B,GAGF,eAAkB1oC,IAAU2oC,EAAa3oC,MAGhD0J,EAAaJ,EAAgBK,MAC7BC,EAAaN,EAAgB/B,MAC7BsC,EAAkBP,EAAgBQ,KAClCC,EAAmBT,EAAgBU,MAEnC0+B,EAA6B,+FAE7BC,EAAe,SAASA,EAAa3oC,GACvC,OAAO,eAAOA,IAAU,eAAQA,IAAUA,EAAM4oC,OAAM,SAAUvwB,GAC9D,OAAOswB,EAAatwB,OAOpBwwB,EAA2B,SAAkCrnC,GAC/D,OAAO,eAAWA,EAAKsnC,YAActnC,EAAKsnC,aAAe,eAAWtnC,EAAKunC,kBAAoBvnC,EAAKunC,mBAAqB,MAMrHC,EAAoB,SAA2BC,GACjD,IAAIC,IAAsBriC,UAAU+B,OAAS,QAAsB5B,IAAjBH,UAAU,KAAmBA,UAAU,GACzF,OAAOL,QAAQ2iC,IAAI,eAAUF,GAAsB7gC,QAAO,SAAU5G,GAClE,MAAqB,SAAdA,EAAK4nC,QACXp5B,KAAI,SAAUxO,GACf,IAAIo/B,EAAQiI,EAAyBrnC,GAErC,GAAIo/B,EAAO,CACT,GAAIA,EAAMyI,aAAeH,EACvB,OAAOI,EAA6B1I,EAAM2I,eAAgB,GAAGv8B,OAAO4zB,EAAMhhC,KAAM,MAC3E,GAAIghC,EAAM4I,OACf,OAAO,IAAIhjC,SAAQ,SAAUR,GAC3B46B,EAAMp+B,MAAK,SAAUA,GACnBA,EAAKinC,MAAQ,GACbzjC,EAAQxD,SAMhB,OAAO,QACN4F,OAAO,UAMRkhC,EAA+B,SAASA,EAA6BI,GACvE,IAAIC,EAAO9iC,UAAU+B,OAAS,QAAsB5B,IAAjBH,UAAU,GAAmBA,UAAU,GAAK,GAC/E,OAAO,IAAIL,SAAQ,SAAUR,GAC3B,IAAI4jC,EAAgB,GAEhBC,EAAuB,SAASA,IAClCH,EAAgBI,aAAY,SAAUC,GACb,IAAnBA,EAAQnhC,OACV5C,EAAQQ,QAAQ2iC,IAAIS,GAAenjC,MAAK,SAAUsjC,GAChD,OAAO,eAAQA,QAGjBH,EAAcphC,KAAKhC,QAAQ2iC,IAAIY,EAAQ/5B,KAAI,SAAU4wB,GACnD,GAAIA,EAAO,CACT,GAAIA,EAAMyI,YACR,OAAOC,EAA6B1I,EAAM2I,eAAgB,GAAGv8B,OAAO28B,GAAM38B,OAAO4zB,EAAMhhC,KAAM,MACxF,GAAIghC,EAAM4I,OACf,OAAO,IAAIhjC,SAAQ,SAAUR,GAC3B46B,EAAMp+B,MAAK,SAAUA,GACnBA,EAAKinC,MAAQ,GAAGz8B,OAAO28B,GAAM38B,OAAOxK,EAAK5C,MACzCoG,EAAQxD,SAMhB,OAAO,QACN4F,OAAO,UACVyhC,SAKNA,QAKAtiC,EAAQ,eAAsB,eAASkB,EAAcA,EAAcA,EAAcA,EAAcA,EAAcA,EAAcA,EAAc,GAAI,QAAUmB,GAAa,QAAmB,QAAkB,QAAiB,QAAgB,GAAI,CAChPogC,OAAQ,eAAS,OAAkB,IACnCC,WAAY,eAAS,OAAkB,UAEvCC,QAAS,eAAS,QAAmB,GACrCC,UAAW,eAAS,QAAmB,GACvCC,gBAAiB,eAAS,OAAkB,mBAC5CC,kBAAmB,eAAS,QAC5BC,SAAU,eAAS,QAAmB,GACtCC,OAAQ,eAAS,QAAmB,GACpCC,kBAAmB,eAAS,OAAkB,eAS9CC,WAAY,eAAS,QAAmB,GACxChZ,YAAa,eAAS,OAAkB,qBACrC,QAGM3tB,EAAyB,aAAI2I,OAAO,CAC7C7M,KAAM,OACN8M,OAAQ,CAAC,OAAY,OAAShD,EAAY,OAAoB,OAAkB,OAAgB,OAAiB,QACjH4J,cAAc,EACd/L,MAAOA,EACPhG,KAAM,WACJ,MAAO,CACLmpC,MAAO,GACPC,UAAU,EAIVC,aAAc/rC,KAAK0rC,OACnBpY,UAAU,IAGdrlB,SAAU,CAER+9B,eAAgB,WACd,IAAIb,EAASnrC,KAAKmrC,OAGlB,OAFAA,GAAUA,GAAU,IAAIzb,OAAOvC,MAAM,UAAU5jB,OAAO,QAEhC,IAAlB4hC,EAAOphC,OACF,KAGFohC,EAAOh6B,KAAI,SAAU86B,GAC1B,IAAIhhC,EAAO,OACPihC,EAAa,IACbC,EAAW,IAEX,OAAa7wB,KAAK2wB,GAEpBC,EAAa,IAGbjhC,EAAO,OAEH,OAAQqQ,KAAK2wB,KACfE,EAAW,MAEXF,EAAYA,EAAU9wB,MAAM,GAAI,KAKpC8wB,EAAY,eAAaA,GACzB,IAAIG,EAAK,IAAIluB,OAAO,GAAG/P,OAAO+9B,GAAY/9B,OAAO89B,GAAW99B,OAAOg+B,IACnE,MAAO,CACLC,GAAIA,EACJnhC,KAAMA,OAIZohC,gBAAiB,WACf,IAAIhB,EAAUrrC,KAAKqrC,QACnB,OAAmB,IAAZA,GAAgC,KAAZA,IAAwBA,GAAW,OAEhE5V,cAAe,WACb,IAAI10B,EAAOf,KAAKe,KACZqL,EAAWpM,KAAKoM,SAChBqL,EAAWzX,KAAKyX,SAChBmhB,EAAO54B,KAAK44B,KACZyT,EAAkBrsC,KAAKqsC,gBACvBlB,EAASnrC,KAAKmrC,OACdM,EAAWzrC,KAAKyrC,SAChBH,EAAYtrC,KAAKsrC,UACrB,OAAO1hC,EAAcA,EAAc,GAAI5J,KAAKqV,SAAU,GAAI,CACxD1M,KAAM,OACN7C,GAAI9F,KAAKkX,SACTnW,KAAMA,EACNqL,SAAUA,EACVqL,SAAUA,EACVmhB,KAAMA,GAAQ,KACdyS,QAASgB,EACTlB,OAAQA,GAAU,KAClBM,SAAUA,EACVH,UAAWA,EACXgB,gBAAiBhB,EACjB,gBAAiB7zB,EAAW,OAAS,QAGzC80B,0BAA2B,WACzB,IAAIf,EAAoBxrC,KAAKwrC,kBAC7B,OAAO,eAAgBA,GAAqBA,EAAoBxrC,KAAKwsC,0BAEvEC,YAAa,WACX,OAAO,eAAUzsC,KAAK6rC,QAExBa,eAAgB,WACd,OAAO,eAAY1sC,KAAK6rC,QAE1Bc,UAAW,WACT,OAAO3sC,KAAK0sC,eAAev7B,KAAI,SAAUxN,GACvC,OAAOA,EAAK5C,SAGhBivB,aAAc,WAIZ,GAAIhwB,KAAK8rC,WAAa9rC,KAAK0rC,OACzB,OACE1rC,KAAKmS,cAAc,OAA4B,CAC7Cy6B,QAAS5sC,KAAK+rC,gBACT/rC,KAAK+rC,YAAc/rC,KAAKurC,gBAAkBvrC,KAAKE,eAAe,OAAQ,CAC3EK,YAAa,eACZP,KAAK2rC,oBAKZ,GAA0B,IAAtB3rC,KAAK6rC,MAAM9hC,OACb,OAAO/J,KAAKmS,cAAc,SAA0BnS,KAAK4yB,YAG3D,IAAI8Z,EAAiB1sC,KAAK0sC,eACtBD,EAAczsC,KAAKysC,YACnBE,EAAY3sC,KAAK2sC,UACjBJ,EAA4BvsC,KAAKusC,0BAErC,OAAIvsC,KAAKiY,kBAAkB,QAClBjY,KAAKmS,cAAc,OAAqB,CAC7C05B,MAAOa,EACPG,eAAgBJ,EAChBK,MAAOH,IAIJJ,EAA0BG,EAAgBD,EAAaE,KAGlEv9B,OAAQrG,EAAS,GAAImB,EAAgBnB,EAAQiC,GAAiB,SAAUqE,KACjEA,GAAY,eAAQA,IAAiC,IAApBA,EAAStF,SAC7C/J,KAAKuiC,WAELr4B,EAAgBnB,EAAQ,SAAS,SAAesG,EAAUC,GAC5D,IAAK,eAAWD,EAAUC,GAAW,CACnC,IAAIm8B,EAAWzrC,KAAKyrC,SAChBG,EAAa5rC,KAAK4rC,WAClBC,GAASJ,GAAYG,EAAa,eAAYv8B,GAAYA,EAC9DrP,KAAKwI,MAAM0C,EAAkBugC,EAAWI,EAAQA,EAAM,IAAM,UAE5D9iC,GACJtD,QAAS,WAEPzF,KAAK+sC,OAAS,MAEhB1tB,QAAS,WAEP,IAAI2tB,EAAQ,eAAQ,OAAQhtC,KAAKkQ,KAE7B88B,IACF,eAAQA,EAAO,QAAShtC,KAAKuiC,MAAO,QACpCviC,KAAK+sC,OAASC,IAGlBnvB,cAAe,WACb,IAAImvB,EAAQhtC,KAAK+sC,OAEbC,GACF,eAASA,EAAO,QAAShtC,KAAKuiC,MAAO,SAGzC58B,QAAS,CACPsnC,YAAa,SAAqBtpC,GAChC,IAAKA,EACH,OAAO,EAGT,IAAIwnC,EAASnrC,KAAKgsC,eAClB,OAAOb,GAASA,EAAOtqB,MAAK,SAAUoB,GACpC,OAAOA,EAAEmqB,GAAG9wB,KAAK3X,EAAKse,EAAEhX,WAG5BiiC,kBAAmB,SAA2BrB,GAC5C,IAAIt8B,EAAQvP,KAEZ,OAAO,eAAQ6rC,GAASA,EAAM9B,OAAM,SAAUpmC,GAC5C,OAAO4L,EAAM09B,YAAYtpC,MACtB3D,KAAKitC,YAAYpB,IAExBW,yBAA0B,SAAkCE,EAAgBD,EAAaE,GACvF,OAAOA,EAAUlzB,KAAK,OAExB0zB,SAAU,SAAkBtB,GAE1B7rC,KAAK+rC,aAAe/rC,KAAK0rC,OACzB1rC,KAAK8rC,UAAW,EAEhB9rC,KAAK6rC,MAAQ7rC,KAAKyrC,SAAWzrC,KAAKsrC,UAAYO,EAAQ,eAAYA,GAAS,eAAYA,GAAO1wB,MAAM,EAAG,IAIzGiyB,cAAe,SAAuBvB,GAIpC,IAEE,IAAIwB,EAAe,IAAIC,eAAe,IAAIC,eAAiB,IAAIC,aAE/D,eAAY,eAAU3B,IAAQ5hC,SAAQ,SAAUtG,UAEvCA,EAAKinC,MACZyC,EAAa7qC,MAAMirC,IAAI9pC,MAEzB3D,KAAKkqB,MAAM6c,MAAM8E,MAAQwB,EAAaxB,MACtC,MAAO/T,MAEXyK,MAAO,WAKL,IACE,IAAIlT,EAASrvB,KAAKkqB,MAAM6c,MACxB1X,EAAOluB,MAAQ,GACfkuB,EAAO1mB,KAAO,GACd0mB,EAAO1mB,KAAO,OACd,MAAO+kC,IAET1tC,KAAK6rC,MAAQ,IAEf8B,YAAa,SAAqB9B,GAChC,IAAI+B,EAAS5lC,UAAU+B,OAAS,QAAsB5B,IAAjBH,UAAU,IAAmBA,UAAU,GAE5E,GAAI4lC,EAAQ,CAEV,IAAIC,EAAgBhC,EAAMtiC,OAAOvJ,KAAKktC,mBAElCW,EAAc9jC,OAAS,IACzB/J,KAAKmtC,SAASU,GAGd7tC,KAAKotC,cAAcS,SAIrB7tC,KAAKmtC,SAAStB,IAGlBiC,aAAc,SAAsB3iC,GAI9BnL,KAAK0mC,OAAwB,aAAfv7B,EAAMxC,KACtB3I,KAAKszB,UAAW,EAGhBtzB,KAAKszB,UAAW,GAGpBya,SAAU,SAAkB5iC,GAC1B,IAAIkF,EAASrQ,KAET2I,EAAOwC,EAAMxC,KACbkB,EAASsB,EAAMtB,OACfmkC,EAAsB7iC,EAAMkiC,aAC5BA,OAAuC,IAAxBW,EAAiC,GAAKA,EACrDJ,EAAkB,SAATjlC,EAEb3I,KAAKwI,MAAM,OAAmB2C,GAC9B,IAAI3I,EAAQ,eAAU6qC,EAAa7qC,OAAS,IAE5C,GAAI,QAAuBA,EAAMuH,OAAS,IAAM,eAAOigC,EAAyBxnC,EAAM,KAKpF2nC,EAAkB3nC,EAAOxC,KAAKsrC,WAAW1jC,MAAK,SAAUikC,GACtD,OAAOx7B,EAAOs9B,YAAY9B,EAAO+B,UAE9B,CAGL,IAAI/B,EAAQ,eAAUhiC,EAAOgiC,OAASwB,EAAaxB,OAAS,IAAI16B,KAAI,SAAUxN,GAG5E,OADAA,EAAKinC,MAAQjnC,EAAKsqC,oBAAsB,GACjCtqC,KAET3D,KAAK2tC,YAAY9B,EAAO+B,KAG5BM,YAAa,SAAqB/iC,GAChC,eAAUA,GACVnL,KAAK8rC,UAAW,EAChB,IAAIqC,EAAuBhjC,EAAMkiC,aAC7BA,OAAwC,IAAzBc,EAAkC,GAAKA,EAE1D,GAAInuC,KAAK0rC,QAAU1rC,KAAKoM,WAAapM,KAAK+rC,YAMxC,OAFAsB,EAAae,WAAa,YAC1BpuC,KAAK+rC,aAAc,GAMrBsB,EAAae,WAAa,QAI5BC,WAAY,SAAoBljC,GAC9B,eAAUA,GACVnL,KAAK8rC,UAAW,EAChB,IAAIwC,EAAuBnjC,EAAMkiC,aAC7BA,OAAwC,IAAzBiB,EAAkC,GAAKA,EAE1D,GAAItuC,KAAK0rC,QAAU1rC,KAAKoM,WAAapM,KAAK+rC,YAMxC,OAFAsB,EAAae,WAAa,YAC1BpuC,KAAK+rC,aAAc,GAMrBsB,EAAae,WAAa,QAE5BG,YAAa,SAAqBpjC,GAChC,IAAIqF,EAASxQ,KAEb,eAAUmL,GACVnL,KAAKwP,WAAU,WACbgB,EAAOs7B,UAAW,EAElBt7B,EAAOu7B,aAAev7B,EAAOk7B,WAIjC8C,OAAQ,SAAgBrjC,GACtB,IAAIsF,EAASzQ,KAEb,eAAUmL,GACVnL,KAAK8rC,UAAW,EAEZ9rC,KAAK0rC,QAAU1rC,KAAKoM,WAAapM,KAAK+rC,YACxC/rC,KAAKwP,WAAU,WAEbiB,EAAOs7B,aAAet7B,EAAOi7B,UAKjC1rC,KAAK+tC,SAAS5iC,KAGlBrL,OAAQ,SAAgBkR,GACtB,IAAI41B,EAAS5mC,KAAK4mC,OACdF,EAAQ1mC,KAAK0mC,MACbh5B,EAAO1N,KAAK0N,KACZo+B,EAAW9rC,KAAK8rC,SAChBhb,EAAa9wB,KAAK8wB,WAClBzb,EAAUrV,KAAKqV,QAEfga,EAASre,EAAE,QAAS,CACtB3I,MAAO,CAAC,CACN,oBAAqBq+B,EACrB,oBAAqBE,EACrBvQ,MAAOuQ,GAAU5mC,KAAKszB,UACrBxC,GAIHmE,MAAO2R,EAAS,CACdd,QAAS,GACP,GACJzlC,MAAOL,KAAKy1B,cACZ3zB,GAAI,CACF2sC,OAAQzuC,KAAK+tC,SACbW,QAAS1uC,KAAK8tC,aACda,SAAU3uC,KAAK8tC,aACfvL,MAAOviC,KAAKuiC,OAEdzhC,IAAK,UAGP,GAAI4lC,EACF,OAAOrX,EAIT,IAAIU,EAAS/e,EAAE,QAAS,CACtBzQ,YAAa,oBACb8H,MAAO,CACLyjC,SAAUA,GAEZzrC,MAAO,CACL8vB,IAAKnwB,KAAKkX,SAEV,cAAelX,KAAKorC,YAAc,OAEnC,CAACp6B,EAAE,OAAQ,CACZzQ,YAAa,yBAGb00B,MAAO,CACL2Z,cAAe,SAEhB,CAAC5uC,KAAKgwB,iBAET,OAAOhf,EAAE,MAAO,CACdzQ,YAAa,0BACb8H,MAAO,CAAC6B,EAAgB,GAAI,oBAAoBiE,OAAOT,GAAOA,GAAOojB,EAAYzb,EAAQhN,OACzF4sB,MAAO5f,EAAQ4f,MACf50B,MAAO,CACLyF,GAAI9F,KAAKkX,OAAO,oBAElBpV,GAAI,CACF+sC,UAAW7uC,KAAKkuC,YAChBY,SAAU9uC,KAAKquC,WACfU,UAAW/uC,KAAKuuC,YAChBS,KAAMhvC,KAAKwuC,SAEZ,CAACnf,EAAQU,Q,kCCpkBhB,kDAMWkf,EAAsB,WAC/B,IAAI1+B,EAAKvI,UAAU+B,OAAS,QAAsB5B,IAAjBH,UAAU,GAAmBA,UAAU,GAAK4vB,SACzEsX,EAAM,iBACV,SAAOA,GAAiC,KAA1BA,EAAIj0B,WAAWyU,QAAiBwf,EAAIC,cAAgB,eAAU5+B,KAE5E2+B,EAAIC,aAAa5+B,GAAI,K,kCCXvB,0GAAIxH,EAAQqmC,EAAZ,gMAEA,SAASpmC,EAAQC,EAAQC,GAAkB,IAAIC,EAAOC,OAAOD,KAAKF,GAAS,GAAIG,OAAOC,sBAAuB,CAAE,IAAIC,EAAUF,OAAOC,sBAAsBJ,GAAaC,IAAgBI,EAAUA,EAAQC,QAAO,SAAUC,GAAO,OAAOJ,OAAOK,yBAAyBR,EAAQO,GAAKE,eAAgBP,EAAKQ,KAAK1B,MAAMkB,EAAMG,GAAY,OAAOH,EAE9U,SAASS,EAAcC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAI9B,UAAU+B,OAAQD,IAAK,CAAE,IAAIE,EAAyB,MAAhBhC,UAAU8B,GAAa9B,UAAU8B,GAAK,GAAQA,EAAI,EAAKd,EAAQI,OAAOY,IAAS,GAAMC,SAAQ,SAAUrJ,GAAOsJ,EAAgBL,EAAQjJ,EAAKoJ,EAAOpJ,OAAsBwI,OAAOe,0BAA6Bf,OAAOgB,iBAAiBP,EAAQT,OAAOe,0BAA0BH,IAAmBhB,EAAQI,OAAOY,IAASC,SAAQ,SAAUrJ,GAAOwI,OAAOiB,eAAeR,EAAQjJ,EAAKwI,OAAOK,yBAAyBO,EAAQpJ,OAAe,OAAOiJ,EAE7gB,SAASK,EAAgBI,EAAK1J,EAAKO,GAAiK,OAApJP,KAAO0J,EAAOlB,OAAOiB,eAAeC,EAAK1J,EAAK,CAAEO,MAAOA,EAAOuI,YAAY,EAAMa,cAAc,EAAMC,UAAU,IAAkBF,EAAI1J,GAAOO,EAAgBmJ,EAmB3M,IAAIG,EAAkB,eAAe,UAAW,CAC9CC,aAAc,OAEZG,EAAaJ,EAAgBK,MAC7BC,EAAaN,EAAgB/B,MAC7BsC,EAAkBP,EAAgBQ,KAClCC,EAAmBT,EAAgBU,MAI5BzC,EAAQ,eAAsB,eAASkB,EAAcA,EAAcA,EAAcA,EAAcA,EAAcA,EAAcA,EAAc,GAAI,QAAUmB,GAAa,QAAmB,QAAgB,QAAiB,QAAkB,GAAI,CACvPoB,UAAW,eAAS,QACpBkjC,eAAgB,eAAS,QAEzBhY,OAAQ,eAAS,QAAmB,GAEpC1gB,cAAe,eAAS,QACxBK,OAAQ,eAAS,QAAmB,GACpC7V,MAAO,eAAS,WACb,0BAGMmuC,EAAsB,aAAI1hC,OAAO,CAC1CC,OAAQ,CAAC,OAAY,OAAShD,EAAY,OAAoB,OAAkB,OAAe,OAAgB,QAC/G4J,cAAc,EACd/L,MAAOA,EACPhG,KAAM,WACJ,MAAO,CACLqU,aAAc/W,KAAK4pC,QAAU5pC,KAAKwV,QAAQxK,GAAmBhL,KAAKgL,GAClEsoB,UAAU,IAGdrlB,SAAU,CACRyH,qBAAsB,CACpBY,IAAK,WACH,OAAOtW,KAAK4pC,QAAU5pC,KAAKwV,QAAQuB,aAAe/W,KAAK+W,cAEzDw4B,IAAK,SAAapuC,GACZnB,KAAK4pC,QACP5pC,KAAKwV,QAAQuB,aAAe5V,EAE5BnB,KAAK+W,aAAe5V,IAI1BgoC,UAAW,WACT,OAAO,eAAWnpC,KAAKmB,MAAOnB,KAAK0V,uBAErC2zB,QAAS,WACP,OAAO,GAETO,QAAS,WAEP,QAAS5pC,KAAKwV,SAEhBg6B,UAAW,WAET,OAAOxvC,KAAK4pC,QAAU5pC,KAAKwV,QAAQ5E,QAAU5Q,KAAKq3B,QAEpDoY,QAAS,WACP,OAAOzvC,KAAKwvC,YAAoBxvC,KAAK4pC,QAAU5pC,KAAKwV,QAAQkxB,MAAQ1mC,KAAK0mC,QAE3EgJ,SAAU,WACR,OAAO1vC,KAAKwvC,YAAqBxvC,KAAKyvC,SAExCE,SAAU,WAER,QAAO3vC,KAAKwvC,WAAaxvC,KAAKqpC,SAAWrpC,KAAKyvC,WAAkBzvC,KAAK4pC,QAAU5pC,KAAKwV,QAAQo6B,SAAW5vC,KAAK6vC,SAE9GC,SAAU,WACR,OAAO9vC,KAAK4pC,QAAU5pC,KAAKwV,QAAQwB,OAAShX,KAAKgX,QAEnDhF,WAAY,WAEV,OAAOhS,KAAK4pC,SAAU5pC,KAAKwV,QAAQpJ,UAA4BpM,KAAKoM,UAEtE2jC,WAAY,WAIV,OAAO/vC,KAAKgwC,eAAiBhwC,KAAK4pC,QAAU5pC,KAAKwV,QAAQiC,SAAWzX,KAAKyX,WAE3Eu4B,aAAc,WAEZ,OAAQhwC,KAAK4pC,QAAU5pC,KAAKwV,QAAQyB,UAAYjX,KAAKe,OAAS,MAEhEkvC,aAAc,WACZ,OAAQjwC,KAAK4pC,QAAU5pC,KAAKwV,QAAQojB,KAAO54B,KAAK44B,OAAS,MAE3DsX,aAAc,WACZ,OAAQlwC,KAAK4pC,QAAU5pC,KAAKwV,QAAQ9H,KAAO1N,KAAK0N,OAAS,IAE3DmiB,cAAe,WACb,OAAO7vB,KAAK4pC,QAAU5pC,KAAKwV,QAAQqa,cAAgB,eAAU7vB,KAAK2tB,OAAS3tB,KAAK2tB,MAAQ,MAE1FwiB,sBAAuB,WAErB,IAAIx5B,EAAgB3W,KAAK2W,cAEzB,OAAIA,IAIA3W,KAAK4pC,SAAW5pC,KAAKwV,QAAQmB,cACxB3W,KAAKwV,QAAQmB,cAGf,cAETy5B,cAAe,WACb,IAAIxyB,EAEAsyB,EAAelwC,KAAKkwC,aACxB,MAAO,CAAC,MAAO,OAAO/hC,OAAOnO,KAAKmwC,wBAAyBvyB,EAAO,GAAI1T,EAAgB0T,EAAM,OAAOzP,OAAO+hC,GAAeA,GAAehmC,EAAgB0T,EAAM,WAAY5d,KAAKgS,YAAa9H,EAAgB0T,EAAM,SAAU5d,KAAKmpC,WAAYj/B,EAAgB0T,EAAM,QAAS5d,KAAKszB,UAAW1V,KAE9R6X,cAAe,WACb,IAAIrpB,EAAWpM,KAAKgS,WAChByF,EAAWzX,KAAK+vC,WACpB,OAAOnmC,EAAcA,EAAc,GAAI5J,KAAKqV,SAAU,GAAI,CACxDvP,GAAI9F,KAAKkX,SACTvO,KAAM3I,KAAKqpC,QAAU,QAAU,WAC/BtoC,KAAMf,KAAKgwC,aACXpX,KAAM54B,KAAKiwC,aACX7jC,SAAUA,EACVqL,SAAUA,EACV,gBAAiBA,GAAY,KAC7B,aAAczX,KAAKmM,WAAa,KAChC,kBAAmBnM,KAAKqvC,gBAAkB,SAIhDjgC,OAAQrG,EAAS,GAAImB,EAAgBnB,EAAQiC,GAAiB,WAC5DhL,KAAK,GAAGmO,OAAOnD,EAAiB,YAAY/C,MAAMjI,KAAMgI,cACtDkC,EAAgBnB,EAAQ,wBAAwB,WAClD/I,KAAKupC,4BAA4BthC,MAAMjI,KAAMgI,cAC3Ce,GACJpD,SAAUypC,EAAW,GAAIllC,EAAgBklC,EAAU,GAAGjhC,OAAOnD,EAAiB,YAAY,SAAiBqE,GACpG,eAAWA,EAAUrP,KAAK0V,wBAC7B1V,KAAK0V,qBAAuBrG,MAE5BnF,EAAgBklC,EAAU,+BAA+B,SAAqC//B,EAAUC,GACrG,eAAWD,EAAUC,IACxBtP,KAAKwI,MAAM0C,EAAkBmE,MAE7BnF,EAAgBklC,EAAU,gBAAgB,SAAsB1X,GAClE,IAAInoB,EAAQvP,KAERopC,EAAU1R,EAAM7tB,OAAOu/B,QACvBjoC,EAAQnB,KAAKmB,MACb4V,EAAeqyB,EAAUjoC,EAAQ,KACrCnB,KAAK0V,qBAAuBvU,EAE5BnB,KAAKwP,WAAU,WAEbD,EAAM/G,MAAM,OAAmBuO,GAG3BxH,EAAMq6B,SACRr6B,EAAMiG,QAAQhN,MAAM,OAAmBuO,SAGzC7M,EAAgBklC,EAAU,eAAe,SAAqBjkC,GAG5DA,EAAMtB,SACW,UAAfsB,EAAMxC,KACR3I,KAAKszB,UAAW,EACQ,SAAfnoB,EAAMxC,OACf3I,KAAKszB,UAAW,OAGlBppB,EAAgBklC,EAAU,SAAS,WAChCpvC,KAAKgS,YACR,eAAahS,KAAKkqB,MAAM6c,UAExB78B,EAAgBklC,EAAU,QAAQ,WAC/BpvC,KAAKgS,YACR,eAAYhS,KAAKkqB,MAAM6c,UAEvBqI,GACJtvC,OAAQ,SAAgBkR,GACtB,IAAIq4B,EAAUrpC,KAAKqpC,QACfmG,EAAYxvC,KAAKwvC,UACjBC,EAAUzvC,KAAKyvC,QACfC,EAAW1vC,KAAK0vC,SAChBI,EAAW9vC,KAAK8vC,SAChBH,EAAW3vC,KAAK2vC,SAChBO,EAAelwC,KAAKkwC,aACpB76B,EAAUrV,KAAKqV,QACfwb,EAAW7wB,KAAKmS,gBAChBkd,EAASre,EAAE,QAAS,CACtB3I,MAAO,CAAC,CACN,mBAAoBonC,EACpB,uBAAwBC,EAExB,kBAAmBD,IAAY5e,GAC9B2e,EAAY,GAAKxvC,KAAK8wB,YACzB9tB,WAAY,CAAC,CACXjC,KAAM,QACNI,MAAOnB,KAAK0V,uBAEdrV,MAAOL,KAAKy1B,cACZntB,SAAU,CACRnH,MAAOnB,KAAKmB,MACZioC,QAASppC,KAAKmpC,WAEhBrnC,GAAI8H,EAAc,CAChB6kC,OAAQzuC,KAAKypC,cACZ+F,EAAY,CACbnZ,MAAOr2B,KAAKqwC,YACZ9Z,KAAMv2B,KAAKqwC,aACT,IACJzvC,IAAK,QACLE,IAAK,UAGP,GAAI0uC,EAAW,CACb,IAAIc,EAAUt/B,EAAE,QAAS,CACvB3I,MAAOrI,KAAKowC,eACX,CAAC/gB,EAAQwB,IAUZ,OARK7wB,KAAK4pC,UAGR0G,EAAUt/B,EAAE,MAAO,CACjB3I,MAAO,CAAC,mBAAoB,mBAC3B,CAACioC,KAGCA,EAKT,IAAIvgB,EAAS/e,IAcb,OAZMy+B,IAAY5e,IAChBd,EAAS/e,EAAE,QAAS,CAClB3I,MAAO,CACL,mBAAoBonC,EACpB,uBAAwBC,GAE1BrvC,MAAO,CACL8vB,IAAKnwB,KAAKkX,WAEX2Z,IAGE7f,EAAE,MAAO,CACd3I,MAAO,CAAC6B,EAAgB,CACtB,aAAculC,EACd,oBAAqBA,GAAWK,EAChC,iBAAkBJ,EAClB,wBAAyBA,GAAYI,EACrC,kBAAmBJ,IAAarG,IAAYsG,EAC5C,gBAAiBA,EACjB,eAAgBD,GAAYrG,GAC3B,oBAAoBl7B,OAAO+hC,GAAeA,IAAiBV,GAAYn6B,EAAQhN,OAClF4sB,MAAO5f,EAAQ4f,OACd,CAAC5F,EAAQU,Q,kCC5RhB,gGAGWrnB,EAAQ,GAGR6nC,EAAgB,aAAI3iC,OAAO,CACpCjI,QAAS,CACP6qC,eAAgB,WACd,IAAI34B,EAAS7X,KAAK8X,eACd9G,EAAIhR,KAAKE,eACTuwC,EAAYz/B,IAWhB,OATIhR,KAAKiY,kBAAkB,UACzBw4B,EAAYz/B,EAAE,WAAY,CACxBpQ,IAAK,YACJ,CAACZ,KAAKmS,cAAc,OAA0B,CAC/C+F,QAASL,EAAO9N,OAChB8N,OAAQA,OAIL44B,O,kCCtBb,6OAASznC,EAAQC,EAAQC,GAAkB,IAAIC,EAAOC,OAAOD,KAAKF,GAAS,GAAIG,OAAOC,sBAAuB,CAAE,IAAIC,EAAUF,OAAOC,sBAAsBJ,GAAaC,IAAgBI,EAAUA,EAAQC,QAAO,SAAUC,GAAO,OAAOJ,OAAOK,yBAAyBR,EAAQO,GAAKE,eAAgBP,EAAKQ,KAAK1B,MAAMkB,EAAMG,GAAY,OAAOH,EAE9U,SAASS,EAAcC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAI9B,UAAU+B,OAAQD,IAAK,CAAE,IAAIE,EAAyB,MAAhBhC,UAAU8B,GAAa9B,UAAU8B,GAAK,GAAQA,EAAI,EAAKd,EAAQI,OAAOY,IAAS,GAAMC,SAAQ,SAAUrJ,GAAOsJ,EAAgBL,EAAQjJ,EAAKoJ,EAAOpJ,OAAsBwI,OAAOe,0BAA6Bf,OAAOgB,iBAAiBP,EAAQT,OAAOe,0BAA0BH,IAAmBhB,EAAQI,OAAOY,IAASC,SAAQ,SAAUrJ,GAAOwI,OAAOiB,eAAeR,EAAQjJ,EAAKwI,OAAOK,yBAAyBO,EAAQpJ,OAAe,OAAOiJ,EAE7gB,SAASK,EAAgBI,EAAK1J,EAAKO,GAAiK,OAApJP,KAAO0J,EAAOlB,OAAOiB,eAAeC,EAAK1J,EAAK,CAAEO,MAAOA,EAAOuI,YAAY,EAAMa,cAAc,EAAMC,UAAU,IAAkBF,EAAI1J,GAAOO,EAAgBmJ,EAgBpM,IAAI5B,EAAQ,eAAsB,eAASkB,EAAcA,EAAcA,EAAc,GAAI,QAAU,QAAgB,GAAI,CAC5H8mC,MAAO,eAAS,QAAmB,GACnCn6B,KAAM,eAAS,QAEfo6B,KAAM,eAAS,QAAmB,GAClCC,UAAW,eAAS,QACpBC,QAAS,eAAS,QAAmB,GACrCv+B,KAAM,eAAS,OAAkB,QACjC5E,KAAM,eAAS,QACfyf,MAAO,eAAS,QAAmB,GACnC2jB,gBAAiB,eAAS,OAAkB,UAAU,SAAU3vC,GAC9D,OAAO,eAAc,CAAC,SAAU,SAAU,SAAUA,MAEtD4vC,WAAY,eAAS,QACrBC,UAAW,eAAS,QACpBC,QAAS,eAAS,QAClBC,aAAc,eAAS,QACvB1qC,KAAM,eAAS,QACf2qC,YAAa,eAAS,QACtBC,UAAW,eAAS,OAAkB,UAEtCC,WAAY,eAAS,OAAkB,mBACvCjpC,QAAS,eAAS,OAAkB,gBACjC,QAGMhD,EAAyB,aAAIwI,OAAO,CAC7C7M,KAAM,OACN8M,OAAQ,CAAC,OAAS,OAAe,QACjCnF,MAAOA,EACPuF,SAAU,CACRqjC,gBAAiB,WACf,IAAIZ,EAAQ1wC,KAAK0wC,MACbvjB,EAAQntB,KAAKmtB,MACjB,MAAO,CAACntB,KAAKu7B,eAAgBv7B,KAAKw7B,cAAe,CAC/Cl7B,KAAMN,KAAKk7B,QAIX,YAAa/N,IAAUujB,EAGvB,SAAUA,GAASvjB,KAGvBokB,YAAa,WACX,MAAO,CAACvxC,KAAK4wC,UAAW,CACtB,sBAAuB5wC,KAAKmmB,MAC5B7lB,KAAMN,KAAKk7B,WAGfsW,cAAe,WACb,IAAIrkB,EAAQntB,KAAKmtB,MACjB,MAAO,CAACntB,KAAKmxC,YAAa,CACxB,wBAAyBhkB,EACzB,2BAA4BntB,KAAK6wC,UAAY1jB,MAInDrtB,OAAQ,SAAgBkR,GACtB,IAAIkqB,EAAUl7B,KAAKk7B,QACf9yB,EAAUpI,KAAKoI,QACfsF,EAAO1N,KAAK0N,KACZgjC,EAAQ1wC,KAAK0wC,MACbtkC,EAAWpM,KAAKoM,SAChB+gB,EAAQntB,KAAKmtB,MACb7a,EAAOtS,KAAKsS,KACZkrB,EAAOx9B,KAAKw9B,KACZlC,EAASt7B,KAAKs7B,OACdmW,EAAc,CAChBrpC,QAASA,EACTsF,KAAMA,EACNgjC,MAAOA,EACPtkC,SAAUA,GAERslC,EAAkB1xC,KAAKmS,cAAc,QACrCw/B,EAAwB3xC,KAAKiY,kBAAkB,QAA4B,GAAK,eAAWjY,KAAKuW,KAAMvW,KAAKwG,MAC3GorC,EAAS5gC,IAEb,GAAImc,EAAO,CACT,IAAI8jB,EAAUjxC,KAAKixC,QACfD,EAAYhxC,KAAKgxC,UACjBF,EAAkB9wC,KAAK8wC,gBAEvBe,EAAWjoC,EAAcA,EAAc,GAAI6nC,GAAc,GAAI,CAC/DrpC,QAASpI,KAAKkxC,cAAgB9oC,IAK5B6oC,EACFY,EAASC,GAAKb,EACLD,EACTa,EAASE,KAAOf,EACPF,IACTe,EAASlpC,KAAOmoC,GAGlBc,EAAS5gC,EAAE,OAAS,CAClB3I,MAAOrI,KAAK+wC,WACZ1wC,MAAO,CACLyF,GAAI9F,KAAKkX,OAAO,gBAElBxO,MAAOmpC,EACPvpC,SAAUqpC,EACV7vC,GAAI,CACFmK,MAAOjM,KAAK89B,cAEdh9B,IAAK,UACJ4wC,GAEHA,EAAkB,CAAC1gC,EAAE,OAAQ,CAC3B3I,MAAO,CAAC,YACP,CAACrI,KAAKqxC,cACTM,EAAwB,GAG1B,IAAIK,EAAUhhC,EAAE,OAAS,CACvBzQ,YAAa,kBACb8H,MAAOrI,KAAKwxC,cACZnxC,MAAO,CACLyF,GAAI9F,KAAKkX,OAAO,eAChB,gBAAiB,OACjB,gBAAiB,eAASgkB,IAE5BxyB,MAAOkB,EAAcA,EAAc,GAAI6nC,GAAc,GAAI,CACvDhsB,IAAKzlB,KAAKoxC,UACVV,MAAOA,IAAUvjB,IAEnB7kB,SAAUqpC,EACV7vC,GAAI,CACFy2B,UAAWv4B,KAAK49B,YAChB3xB,MAAOqvB,EACP5oB,QAAS4oB,GAGXx6B,IAAK,UACJ4wC,GACCO,EAAQjhC,EAAE,KAAM,CAClBzQ,YAAa,gBACb8H,MAAOrI,KAAKuxC,YACZlxC,MAAO,CACLiS,KAAMA,EACNC,SAAU,KACV,kBAAmBvS,KAAKkX,OAAOiW,EAAQ,cAAgB,gBAEzDrrB,GAAI,CACF4Q,QAAS1S,KAAK+2B,WAGhBj2B,IAAK,QACJ,EAAEd,KAAK2wC,MAAQzV,EAAUl7B,KAAKmS,cAAc,OAAmB,CAChEqrB,KAAMA,IACHxsB,MACL,OAAOA,EAAE,MAAO,CACdzQ,YAAa,sBACb8H,MAAOrI,KAAKsxC,gBACZjxC,MAAO,CACLyF,GAAI9F,KAAKkX,WAEV,CAAC06B,EAAQI,EAASC,Q,kCCpLzB,+IAASjpC,EAAQC,EAAQC,GAAkB,IAAIC,EAAOC,OAAOD,KAAKF,GAAS,GAAIG,OAAOC,sBAAuB,CAAE,IAAIC,EAAUF,OAAOC,sBAAsBJ,GAAaC,IAAgBI,EAAUA,EAAQC,QAAO,SAAUC,GAAO,OAAOJ,OAAOK,yBAAyBR,EAAQO,GAAKE,eAAgBP,EAAKQ,KAAK1B,MAAMkB,EAAMG,GAAY,OAAOH,EAE9U,SAASS,EAAcC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAI9B,UAAU+B,OAAQD,IAAK,CAAE,IAAIE,EAAyB,MAAhBhC,UAAU8B,GAAa9B,UAAU8B,GAAK,GAAQA,EAAI,EAAKd,EAAQI,OAAOY,IAAS,GAAMC,SAAQ,SAAUrJ,GAAOsJ,EAAgBL,EAAQjJ,EAAKoJ,EAAOpJ,OAAsBwI,OAAOe,0BAA6Bf,OAAOgB,iBAAiBP,EAAQT,OAAOe,0BAA0BH,IAAmBhB,EAAQI,OAAOY,IAASC,SAAQ,SAAUrJ,GAAOwI,OAAOiB,eAAeR,EAAQjJ,EAAKwI,OAAOK,yBAAyBO,EAAQpJ,OAAe,OAAOiJ,EAE7gB,SAASK,EAAgBI,EAAK1J,EAAKO,GAAiK,OAApJP,KAAO0J,EAAOlB,OAAOiB,eAAeC,EAAK1J,EAAK,CAAEO,MAAOA,EAAOuI,YAAY,EAAMa,cAAc,EAAMC,UAAU,IAAkBF,EAAI1J,GAAOO,EAAgBmJ,EAU3M,IAAI+H,EAAY,eAAK,OAAY,CAAC,QAAS,qBACpCA,EAAU0/B,KAAKlpC,eACfwJ,EAAUy/B,GAAGjpC,QACb,IAAIH,EAAQ,eAAsB,eAASkB,EAAcA,EAAc,GAAIyI,GAAY,GAAI,CAChG6/B,KAAM,eAAS,QAAmB,GAClCzsB,IAAK,eAAS,OAAkB,QAChCrd,QAAS,eAAS,OAAkB,gBACjC,QAGMjD,EAAsB,aAAIyI,OAAO,CAC1C7M,KAAM,OACN4kB,YAAY,EACZjd,MAAOA,EACP5I,OAAQ,SAAgBkR,EAAG4M,GACzB,IAAIlV,EAAQkV,EAAKlV,MACbhG,EAAOkb,EAAKlb,KACZmjB,EAAWjI,EAAKiI,SAChB/S,EAASpK,EAAMoK,OACf1G,EAAW1D,EAAM0D,SACjB+lC,EAAO,eAAOzpC,GACd+c,EAAM0sB,EAAO,OAAQzpC,EAAM+c,IAC3Brd,EAAUM,EAAMN,SAAW,YAC/B,OAAO4I,EAAEyU,EAAK,eAAU/iB,EAAM,CAC5BnC,YAAa,QACb8H,MAAO,CAAC,SAAS8F,OAAO/F,GAAU,CAChC,aAAcM,EAAMwpC,KACpBp/B,OAAQA,EACR1G,SAAUA,IAEZ1D,MAAOypC,EAAO,eAAW9/B,EAAW3J,GAAS,KAC3Cmd","file":"js/chunk-09c60a22.81d9628a.js","sourcesContent":["var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',{attrs:{\"id\":\"dashboard-ecommerce\"}},[_c('b-overlay',{attrs:{\"id\":\"overlay-background\",\"show\":_vm.show,\"variant\":\"primary\",\"opacity\":\"0.85\",\"blur\":\"2\",\"rounded\":\"sm\"}},[_c('div',[_c('b-card',{attrs:{\"no-body\":\"\"}},[_c('b-card-body',[_c('b-row',[_c('b-col',{staticClass:\"mb-md-0 mb-2\",attrs:{\"cols\":\"12\",\"md\":\"2\"}},[_c('label',[_vm._v(\"Grup\")]),_c('v-select',{staticClass:\"w-100\",attrs:{\"label\":\"name\",\"taggable\":\"\",\"options\":_vm.groups,\"placeholder\":\"Grup seçebilirsiniz\"},scopedSlots:_vm._u([{key:\"selected-option\",fn:function(ref){\nvar name = ref.name;\nreturn [_c('strong',{staticStyle:{\"font-size\":\"10px\",\"line-height\":\"22px\"}},[_vm._v(_vm._s(name))])]}}]),model:{value:(_vm.selectedGroup),callback:function ($$v) {_vm.selectedGroup=$$v},expression:\"selectedGroup\"}})],1),_c('b-col',{staticClass:\"mb-md-0 mb-2\",attrs:{\"cols\":\"12\",\"md\":\"2\"}},[_c('label',[_vm._v(\"Marka\")]),_c('v-select',{staticClass:\"w-100\",attrs:{\"label\":\"name\",\"placeholder\":\"Marka Seçebilirsiniz\",\"options\":_vm.brands},scopedSlots:_vm._u([{key:\"selected-option\",fn:function(ref){\nvar name = ref.name;\nreturn [_c('strong',{staticStyle:{\"font-size\":\"10px\",\"line-height\":\"22px\"}},[_vm._v(_vm._s(name))])]}}]),model:{value:(_vm.selectedBrand),callback:function ($$v) {_vm.selectedBrand=$$v},expression:\"selectedBrand\"}})],1),_c('b-col',{staticClass:\"mb-md-0 mb-2\",attrs:{\"cols\":\"12\",\"md\":\"2\"}},[_c('label',[_vm._v(\"Model\")]),_c('v-select',{staticClass:\"w-100\",attrs:{\"label\":\"name\",\"placeholder\":\"Model Seçebilirsiniz\",\"options\":_vm.models},scopedSlots:_vm._u([{key:\"selected-option\",fn:function(ref){\nvar name = ref.name;\nreturn [_c('strong',{staticStyle:{\"font-size\":\"10px\",\"line-height\":\"22px\"}},[_vm._v(_vm._s(name))])]}}]),model:{value:(_vm.selectedModel),callback:function ($$v) {_vm.selectedModel=$$v},expression:\"selectedModel\"}})],1),_c('b-col',{staticClass:\"mb-md-0 mb-2\",attrs:{\"cols\":\"12\",\"md\":\"2\"}},[_c('label',[_vm._v(\"OE No\")]),_c('b-form-input',{staticClass:\"d-inline-block mr-1\",attrs:{\"placeholder\":\"0000..\"},model:{value:(_vm.oeNo),callback:function ($$v) {_vm.oeNo=$$v},expression:\"oeNo\"}})],1),_c('b-col',{staticClass:\"mb-md-0 mb-2\",attrs:{\"cols\":\"12\",\"md\":\"2\"}},[_c('label',[_vm._v(\"Parça No\")]),_c('b-form-input',{staticClass:\"d-inline-block mr-1\",attrs:{\"placeholder\":\"0000..\"},model:{value:(_vm.partNo),callback:function ($$v) {_vm.partNo=$$v},expression:\"partNo\"}})],1),_c('b-col',{staticClass:\"mb-md-0 mb-2\",attrs:{\"cols\":\"12\",\"md\":\"1\"}},[_c('div',{staticClass:\"d-flex mt-2\"},[_c('b-button',{staticStyle:{\"margin-top\":\"0x\"},attrs:{\"type\":\"button\",\"variant\":\"primary\"},on:{\"click\":function($event){return _vm.searchClick(1)}}},[_c('feather-icon',{staticClass:\"mr-50\",attrs:{\"icon\":\"SearchIcon\"}}),_c('span',{staticClass:\"align-middle\"},[_vm._v(\"Ara\")])],1)],1)]),_c('b-col',{staticClass:\"mb-md-0 mb-2\",attrs:{\"cols\":\"12\",\"md\":\"1\"}},[_c('div',{staticClass:\"d-flex mt-2\"},[_c('b-button',{staticStyle:{\"margin-top\":\"0px\"},attrs:{\"type\":\"button\",\"variant\":\"primary\"},on:{\"click\":_vm.clearClick}},[_c('span',{staticClass:\"align-middle\"},[_vm._v(\"Temizle\")])])],1)])],1),_c('b-row',[_c('b-col',{staticClass:\"mb-md-0 mb-2\",attrs:{\"cols\":\"12\",\"md\":\"2\"}},[_c('div',{staticClass:\"d-flex mt-2\"},[_c('b-button',{staticStyle:{\"margin-top\":\"0x\"},attrs:{\"type\":\"button\",\"variant\":\"primary\"},on:{\"click\":function($event){_vm.showUploadPanel = true}}},[_c('feather-icon',{staticClass:\"mr-50\",attrs:{\"icon\":\"UploadIcon\"}}),_c('span',{staticClass:\"align-middle\"},[_vm._v(\"Excelden Sipariş Aktar\")])],1)],1)]),_c('b-col',{staticClass:\"mb-md-0 mb-2\",attrs:{\"cols\":\"12\",\"md\":\"2\"}},[_c('div',{staticClass:\"d-flex mt-2\"},[_c('b-button',{staticStyle:{\"margin-top\":\"0x\"},attrs:{\"type\":\"button\",\"variant\":\"primary\"},on:{\"click\":function($event){return _vm.downloadSample()}}},[_c('feather-icon',{staticClass:\"mr-50\",attrs:{\"icon\":\"DownloadIcon\"}}),_c('span',{staticClass:\"align-middle\"},[_vm._v(\"Örnek Excel İndir\")])],1)],1)]),_c('b-col',{staticClass:\"mb-md-0 mb-2\",attrs:{\"cols\":\"12\",\"md\":\"4\"}}),_c('b-col',{staticClass:\"mb-md-0 mb-2\",attrs:{\"cols\":\"12\",\"md\":\"1\"}}),_c('b-col',{staticClass:\"mb-md-0 mb-2\",attrs:{\"cols\":\"12\",\"md\":\"3\"}},[_c('div',{staticClass:\"d-flex mt-1\"},[_c('b-form-radio-group',{staticClass:\"demo-inline-spacing\",attrs:{\"options\":_vm.levels,\"name\":\"radio-inline\"},on:{\"change\":function($event){return _vm.changeLevel()}},model:{value:(_vm.selectedLevel),callback:function ($$v) {_vm.selectedLevel=$$v},expression:\"selectedLevel\"}})],1)])],1)],1)],1),_c('b-card',{staticClass:\"mb-0\",attrs:{\"no-body\":\"\"}},[_c('b-table',{ref:\"refUserListTable\",staticClass:\"position-relative\",attrs:{\"striped\":true,\"bordered\":true,\"hover\":true,\"busy\":_vm.show,\"small\":true,\"items\":_vm.productsData.items,\"responsive\":\"\",\"fields\":_vm.tableColumns,\"primary-key\":\"id\",\"sort-by.sync\":\"id\",\"show-empty\":\"\",\"empty-text\":\"Eşleşen ürün bulunamadı.\",\"head-variant\":\"dark\"},scopedSlots:_vm._u([{key:\"cell(priceType)\",fn:function(data){return [_c('div',{staticClass:\"item-quantity d-flex justify-content-center\"},[_vm._v(\" \"+_vm._s(data.item.priceType)+\" \")])]}},{key:\"cell(packageUnit)\",fn:function(data){return [_c('div',{staticClass:\"item-quantity d-flex justify-content-end\"},[_c('strong',[_vm._v(_vm._s(data.item.packageUnit))])])]}},{key:\"cell(priceFormatted)\",fn:function(data){return [_c('div',{staticClass:\"item-quantity d-flex justify-content-end\"},[_c('strong',[_vm._v(_vm._s(data.item.priceFormatted))])])]}},{key:\"cell(actions)\",fn:function(data){return [_c('div',{staticClass:\"item-quantity d-flex justify-content-center\"},[_c('b-form-spinbutton',{staticClass:\"ml-75\",attrs:{\"size\":\"sm\",\"min\":\"0\",\"max\":\"10000000\",\"step\":data.item.packageUnit,\"inline\":\"\"},model:{value:(data.item.cartUnit),callback:function ($$v) {_vm.$set(data.item, \"cartUnit\", $$v)},expression:\"data.item.cartUnit\"}})],1)]}},{key:\"cell(imgViewer)\",fn:function(data){return [_c('div',{staticClass:\"d-flex justify-content-center\"},[_c('b-button',{directives:[{name:\"b-modal\",rawName:\"v-b-modal.modal-center\",modifiers:{\"modal-center\":true}}],staticClass:\"btn-icon\",attrs:{\"variant\":\"primary\"},on:{\"click\":function($event){return _vm.showImageClick(data)}}},[_c('feather-icon',{attrs:{\"icon\":\"ImageIcon\"}})],1)],1)]}},{key:\"cell(cart)\",fn:function(data){return [_c('div',{staticClass:\"d-flex justify-content-center\"},[_c('b-button',{staticClass:\"btn-icon\",attrs:{\"variant\":\"primary\"},on:{\"click\":function($event){return _vm.addCartClick(data)}}},[_c('feather-icon',{attrs:{\"icon\":\"ShoppingCartIcon\"}})],1)],1)]}}])}),_c('div',{staticClass:\"mx-2 mb-2\"},[_c('b-row',[_c('b-col',{staticClass:\"d-flex align-items-center justify-content-center justify-content-sm-start\",attrs:{\"cols\":\"12\",\"sm\":\"6\"}},[_c('span',{staticClass:\"text-muted\"},[_vm._v(\"Toplam ürün sayısı:\"),_c('strong',[_vm._v(\" \"+_vm._s(_vm.productsData.totalRecords))])])]),_c('b-col',{staticClass:\"d-flex align-items-center justify-content-center justify-content-sm-end\",attrs:{\"cols\":\"12\",\"sm\":\"6\"}},[_c('b-pagination',{staticClass:\"mb-0 mt-1 mt-sm-0\",attrs:{\"total-rows\":_vm.productsData.totalRecords,\"per-page\":_vm.productsData.pageSize,\"first-number\":\"\",\"last-number\":\"\",\"prev-class\":\"prev-item\",\"next-class\":\"next-item\"},on:{\"input\":function($event){return _vm.changePage(_vm.productsData.pageNumber)}},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}]),model:{value:(_vm.productsData.pageNumber),callback:function ($$v) {_vm.$set(_vm.productsData, \"pageNumber\", $$v)},expression:\"productsData.pageNumber\"}})],1)],1)],1)],1)],1),_c('b-modal',{attrs:{\"id\":\"modal-center\",\"centered\":\"\",\"title\":\"Ürün Görseli\",\"hide-footer\":true}},[_c('b-img',{attrs:{\"src\":_vm.selectedImgUrl,\"fluid\":\"\",\"alt\":\"Fluid image')\"}})],1),_c('b-modal',{attrs:{\"id\":\"modal-cartImport\",\"centered\":\"\",\"title\":\"Excelden Sipariş Aktarma\",\"hide-footer\":true},model:{value:(_vm.showUploadPanel),callback:function ($$v) {_vm.showUploadPanel=$$v},expression:\"showUploadPanel\"}},[_c('b-form-file',{attrs:{\"placeholder\":\"Bir dosya seçin veya buraya bırakın\",\"drop-placeholder\":\"Dosyayı buraya bırakın..\",\"accept\":\".xlsx, .xls\"},model:{value:(_vm.file),callback:function ($$v) {_vm.file=$$v},expression:\"file\"}}),_c('br'),_c('div',{staticClass:\"item-quantity d-flex justify-content-center\"},[_c('div',{staticClass:\"d-flex mt-2\"},[_c('b-button',{staticStyle:{\"margin-top\":\"0x\"},attrs:{\"type\":\"button\",\"variant\":\"primary\"},on:{\"click\":_vm.cartUpload}},[_c('feather-icon',{staticClass:\"mr-50\",attrs:{\"icon\":\"UploadIcon\"}}),_c('span',{staticClass:\"align-middle\"},[_vm._v(\"Yükle\")])],1)],1)])],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Grup\r\n \r\n \r\n {{\r\n name\r\n }}\r\n \r\n \r\n \r\n \r\n Marka\r\n \r\n \r\n {{\r\n name\r\n }}\r\n \r\n \r\n \r\n \r\n Model\r\n \r\n \r\n {{\r\n name\r\n }}\r\n \r\n \r\n \r\n \r\n OE No\r\n \r\n \r\n \r\n Parça No\r\n \r\n \r\n \r\n \r\n \r\n \r\n Ara\r\n \r\n \r\n \r\n \r\n \r\n \r\n Temizle\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Excelden Sipariş Aktar\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n Örnek Excel İndir\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {{ data.item.priceType }}\r\n \r\n \r\n \r\n \r\n {{ data.item.packageUnit }}\r\n \r\n \r\n \r\n \r\n {{ data.item.priceFormatted }}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Toplam ürün sayısı:\r\n {{ productsData.totalRecords }}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n Yükle\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n\r\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!./campaignproducts.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!./campaignproducts.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./campaignproducts.vue?vue&type=template&id=e05b7294&\"\nimport script from \"./campaignproducts.vue?vue&type=script&lang=js&\"\nexport * from \"./campaignproducts.vue?vue&type=script&lang=js&\"\nimport style0 from \"./campaignproducts.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 asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"toastification\"},[_c('div',{staticClass:\"d-flex align-items-start\"},[_c('b-avatar',{staticClass:\"mr-75 flex-shrink-0\",attrs:{\"variant\":_vm.variant,\"size\":\"1.8rem\"}},[_c('feather-icon',{attrs:{\"icon\":_vm.icon,\"size\":\"15\"}})],1),_c('div',{staticClass:\"d-flex flex-grow-1\"},[_c('div',[(_vm.title)?_c('h5',{staticClass:\"mb-0 font-weight-bolder toastification-title\",class:(\"text-\" + _vm.variant),domProps:{\"textContent\":_vm._s(_vm.title)}}):_vm._e(),(_vm.text)?_c('small',{staticClass:\"d-inline-block text-body\",domProps:{\"textContent\":_vm._s(_vm.text)}}):_vm._e()]),_c('span',{staticClass:\"cursor-pointer toastification-close-icon ml-auto \",on:{\"click\":function($event){return _vm.$emit('close-toast')}}},[(!_vm.hideClose)?_c('feather-icon',{staticClass:\"text-body\",attrs:{\"icon\":\"XIcon\"}}):_vm._e()],1)])],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n\r\n\r\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!./ToastificationContent.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!./ToastificationContent.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ToastificationContent.vue?vue&type=template&id=55dd3057&scoped=true&\"\nimport script from \"./ToastificationContent.vue?vue&type=script&lang=js&\"\nexport * from \"./ToastificationContent.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ToastificationContent.vue?vue&type=style&index=0&id=55dd3057&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 \"55dd3057\",\n null\n \n)\n\nexport default component.exports","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 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_TFOOT } from '../../constants/components';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { listenersMixin } from '../../mixins/listeners';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n // Supported values: 'lite', 'dark', or null\n footVariant: makeProp(PROP_TYPE_STRING)\n}, NAME_TFOOT); // --- Main component ---\n// TODO:\n// In Bootstrap v5, we won't need \"sniffing\" as table element variants properly inherit\n// to the child elements, so this can be converted to a functional component\n// @vue/component\n\nexport var BTfoot = /*#__PURE__*/Vue.extend({\n name: NAME_TFOOT,\n mixins: [attrsMixin, listenersMixin, normalizeSlotMixin],\n provide: function provide() {\n return {\n bvTableRowGroup: this\n };\n },\n inject: {\n // Sniffed by `` / `` / ``\n bvTable: {\n default:\n /* istanbul ignore next */\n function _default() {\n return {};\n }\n }\n },\n inheritAttrs: false,\n props: props,\n computed: {\n // Sniffed by `` / `` / ``\n isTfoot: function isTfoot() {\n return true;\n },\n // Sniffed by `` / `` / ``\n isDark: function isDark() {\n return this.bvTable.dark;\n },\n // Sniffed by `` / `` / ``\n isStacked: function isStacked() {\n return this.bvTable.isStacked;\n },\n // Sniffed by `` / `` / ``\n isResponsive: function isResponsive() {\n return this.bvTable.isResponsive;\n },\n // Sniffed by `` / `` / ``\n // Sticky headers are only supported in thead\n isStickyHeader: function isStickyHeader() {\n return false;\n },\n // Sniffed by `` / `` / ``\n // Needed to handle header background classes, due to lack of\n // background color inheritance with Bootstrap v4 table CSS\n hasStickyHeader: function hasStickyHeader() {\n return !this.isStacked && this.bvTable.stickyHeader;\n },\n // Sniffed by `` / `` / ``\n tableVariant: function tableVariant() {\n return this.bvTable.tableVariant;\n },\n tfootClasses: function tfootClasses() {\n return [this.footVariant ? \"thead-\".concat(this.footVariant) : null];\n },\n tfootAttrs: function tfootAttrs() {\n return _objectSpread(_objectSpread({}, this.bvAttrs), {}, {\n role: 'rowgroup'\n });\n }\n },\n render: function render(h) {\n return h('tfoot', {\n class: this.tfootClasses,\n attrs: this.tfootAttrs,\n // Pass down any native listeners\n on: this.bvListeners\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 { Vue } from '../../vue';\nimport { NAME_FORM_RADIO } from '../../constants/components';\nimport { looseEqual } from '../../utils/loose-equal';\nimport { sortKeys } from '../../utils/object';\nimport { makePropsConfigurable } from '../../utils/props';\nimport { formControlMixin, props as formControlProps } from '../../mixins/form-control';\nimport { MODEL_EVENT_NAME, formRadioCheckMixin, props as formRadioCheckProps } from '../../mixins/form-radio-check';\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'; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, idProps), formControlProps), formRadioCheckProps), formSizeProps), formStateProps)), NAME_FORM_RADIO); // --- Main component ---\n// @vue/component\n\nexport var BFormRadio = /*#__PURE__*/Vue.extend({\n name: NAME_FORM_RADIO,\n mixins: [idMixin, formRadioCheckMixin, // Includes shared render function\n formControlMixin, formSizeMixin, formStateMixin],\n inject: {\n bvGroup: {\n from: 'bvRadioGroup',\n default: false\n }\n },\n props: props,\n watch: {\n computedLocalChecked: function computedLocalChecked(newValue, oldValue) {\n if (!looseEqual(newValue, oldValue)) {\n this.$emit(MODEL_EVENT_NAME, newValue);\n }\n }\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 { PROP_TYPE_BOOLEAN, PROP_TYPE_BOOLEAN_STRING, PROP_TYPE_STRING } from '../constants/props';\nimport { SLOT_NAME_FIRST } from '../constants/slots';\nimport { htmlOrText } from '../utils/html';\nimport { looseEqual } from '../utils/loose-equal';\nimport { makeModelMixin } from '../utils/model';\nimport { omit, pick, sortKeys } from '../utils/object';\nimport { makeProp, makePropsConfigurable } from '../utils/props';\nimport { BFormCheckbox } from '../components/form-checkbox/form-checkbox';\nimport { BFormRadio } from '../components/form-radio/form-radio';\nimport { formControlMixin, props as formControlProps } from './form-control';\nimport { formCustomMixin, props as formCustomProps } from './form-custom';\nimport { formOptionsMixin, props as formOptionsProps } from './form-options';\nimport { formSizeMixin, props as formSizeProps } from './form-size';\nimport { formStateMixin, props as formStateProps } from './form-state';\nimport { idMixin, props as idProps } from './id';\nimport { normalizeSlotMixin } from './normalize-slot'; // --- Constants ---\n// Attributes to pass down to checks/radios instead of applying them to the group\n\nvar PASS_DOWN_ATTRS = ['aria-describedby', 'aria-labelledby'];\n\nvar _makeModelMixin = makeModelMixin('checked'),\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 }; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, idProps), modelProps), formControlProps), formOptionsProps), formSizeProps), formStateProps), formCustomProps), {}, {\n ariaInvalid: makeProp(PROP_TYPE_BOOLEAN_STRING, false),\n // Only applicable when rendered with button style\n buttonVariant: makeProp(PROP_TYPE_STRING),\n // Render as button style\n buttons: makeProp(PROP_TYPE_BOOLEAN, false),\n stacked: makeProp(PROP_TYPE_BOOLEAN, false),\n validated: makeProp(PROP_TYPE_BOOLEAN, false)\n})), 'formRadioCheckGroups'); // --- Mixin ---\n// @vue/component\n\nexport var formRadioCheckGroupMixin = Vue.extend({\n mixins: [idMixin, modelMixin, normalizeSlotMixin, formControlMixin, formOptionsMixin, formSizeMixin, formStateMixin, formCustomMixin],\n inheritAttrs: false,\n props: props,\n data: function data() {\n return {\n localChecked: this[MODEL_PROP_NAME]\n };\n },\n computed: {\n inline: function inline() {\n return !this.stacked;\n },\n groupName: function groupName() {\n // Checks/Radios tied to the same model must have the same name,\n // especially for ARIA accessibility\n return this.name || this.safeId();\n },\n groupClasses: function groupClasses() {\n var inline = this.inline,\n size = this.size,\n validated = this.validated;\n var classes = {\n 'was-validated': validated\n };\n\n if (this.buttons) {\n classes = [classes, 'btn-group-toggle', _defineProperty({\n 'btn-group': inline,\n 'btn-group-vertical': !inline\n }, \"btn-group-\".concat(size), size)];\n }\n\n return classes;\n }\n },\n watch: (_watch = {}, _defineProperty(_watch, MODEL_PROP_NAME, function (newValue) {\n if (!looseEqual(newValue, this.localChecked)) {\n this.localChecked = newValue;\n }\n }), _defineProperty(_watch, \"localChecked\", function localChecked(newValue, oldValue) {\n if (!looseEqual(newValue, oldValue)) {\n this.$emit(MODEL_EVENT_NAME, newValue);\n }\n }), _watch),\n render: function render(h) {\n var _this = this;\n\n var isRadioGroup = this.isRadioGroup;\n var attrs = pick(this.$attrs, PASS_DOWN_ATTRS);\n var optionComponent = isRadioGroup ? BFormRadio : BFormCheckbox;\n var $inputs = this.formOptions.map(function (option, index) {\n var key = \"BV_option_\".concat(index);\n return h(optionComponent, {\n props: {\n // Individual radios or checks can be disabled in a group\n disabled: option.disabled || false,\n id: _this.safeId(key),\n value: option.value // We don't need to include these, since the input's will know they are inside here\n // form: this.form || null,\n // name: this.groupName,\n // required: Boolean(this.name && this.required)\n\n },\n attrs: attrs,\n key: key\n }, [h('span', {\n domProps: htmlOrText(option.html, option.text)\n })]);\n });\n return h('div', {\n class: [this.groupClasses, 'bv-no-focus-ring'],\n attrs: _objectSpread(_objectSpread({}, omit(this.$attrs, PASS_DOWN_ATTRS)), {}, {\n 'aria-invalid': this.computedAriaInvalid,\n 'aria-required': this.required ? 'true' : null,\n id: this.safeId(),\n role: isRadioGroup ? 'radiogroup' : 'group',\n // Add `tabindex=\"-1\"` to allow group to be focused if needed by screen readers\n tabindex: '-1'\n })\n }, [this.normalizeSlot(SLOT_NAME_FIRST), $inputs, this.normalizeSlot()]);\n }\n});","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 } from '../../vue';\nimport { NAME_FORM_RADIO_GROUP } from '../../constants/components';\nimport { makePropsConfigurable } from '../../utils/props';\nimport { formRadioCheckGroupMixin, props as formRadioCheckGroupProps } from '../../mixins/form-radio-check-group'; // --- Props ---\n\nexport var props = makePropsConfigurable(formRadioCheckGroupProps, NAME_FORM_RADIO_GROUP); // --- Main component ---\n// @vue/component\n\nexport var BFormRadioGroup = /*#__PURE__*/Vue.extend({\n name: NAME_FORM_RADIO_GROUP,\n mixins: [formRadioCheckGroupMixin],\n provide: function provide() {\n return {\n bvRadioGroup: this\n };\n },\n props: props,\n computed: {\n isRadioGroup: function isRadioGroup() {\n return true;\n }\n }\n});","import { Vue } from '../../../vue';\nimport { SLOT_NAME_BOTTOM_ROW } from '../../../constants/slots';\nimport { isFunction } from '../../../utils/inspect';\nimport { BTr } from '../tr'; // --- Props ---\n\nexport var props = {}; // --- Mixin ---\n// @vue/component\n\nexport var bottomRowMixin = Vue.extend({\n props: props,\n methods: {\n renderBottomRow: function renderBottomRow() {\n var fields = this.computedFields,\n stacked = this.stacked,\n tbodyTrClass = this.tbodyTrClass,\n tbodyTrAttr = this.tbodyTrAttr;\n var h = this.$createElement; // Static bottom row slot (hidden in visibly stacked mode as we can't control the data-label)\n // If in *always* stacked mode, we don't bother rendering the row\n\n if (!this.hasNormalizedSlot(SLOT_NAME_BOTTOM_ROW) || stacked === true || stacked === '') {\n return h();\n }\n\n return h(BTr, {\n staticClass: 'b-table-bottom-row',\n class: [isFunction(tbodyTrClass) ?\n /* istanbul ignore next */\n tbodyTrClass(null, 'row-bottom') : tbodyTrClass],\n attrs: isFunction(tbodyTrAttr) ?\n /* istanbul ignore next */\n tbodyTrAttr(null, 'row-bottom') : tbodyTrAttr,\n key: 'b-bottom-row'\n }, this.normalizeSlot(SLOT_NAME_BOTTOM_ROW, {\n columns: fields.length,\n fields: fields\n }));\n }\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 } from '../../../vue';\nimport { MODEL_EVENT_NAME_PREFIX } from '../../../constants/events';\nimport { PROP_TYPE_BOOLEAN } from '../../../constants/props';\nimport { SLOT_NAME_TABLE_BUSY } from '../../../constants/slots';\nimport { stopEvent } from '../../../utils/events';\nimport { isFunction } from '../../../utils/inspect';\nimport { makeProp } from '../../../utils/props';\nimport { BTr } from '../tr';\nimport { BTd } from '../td'; // --- Constants ---\n\nvar MODEL_PROP_NAME_BUSY = 'busy';\nvar MODEL_EVENT_NAME_BUSY = MODEL_EVENT_NAME_PREFIX + MODEL_PROP_NAME_BUSY; // --- Props ---\n\nexport var props = _defineProperty({}, MODEL_PROP_NAME_BUSY, makeProp(PROP_TYPE_BOOLEAN, false)); // --- Mixin ---\n// @vue/component\n\nexport var busyMixin = Vue.extend({\n props: props,\n data: function data() {\n return {\n localBusy: false\n };\n },\n computed: {\n computedBusy: function computedBusy() {\n return this[MODEL_PROP_NAME_BUSY] || this.localBusy;\n }\n },\n watch: {\n localBusy: function localBusy(newValue, oldValue) {\n if (newValue !== oldValue) {\n this.$emit(MODEL_EVENT_NAME_BUSY, newValue);\n }\n }\n },\n methods: {\n // Event handler helper\n stopIfBusy: function stopIfBusy(event) {\n // If table is busy (via provider) then don't propagate\n if (this.computedBusy) {\n stopEvent(event);\n return true;\n }\n\n return false;\n },\n // Render the busy indicator or return `null` if not busy\n renderBusy: function renderBusy() {\n var tbodyTrClass = this.tbodyTrClass,\n tbodyTrAttr = this.tbodyTrAttr;\n var h = this.$createElement; // Return a busy indicator row, or `null` if not busy\n\n if (this.computedBusy && this.hasNormalizedSlot(SLOT_NAME_TABLE_BUSY)) {\n return h(BTr, {\n staticClass: 'b-table-busy-slot',\n class: [isFunction(tbodyTrClass) ?\n /* istanbul ignore next */\n tbodyTrClass(null, SLOT_NAME_TABLE_BUSY) : tbodyTrClass],\n attrs: isFunction(tbodyTrAttr) ?\n /* istanbul ignore next */\n tbodyTrAttr(null, SLOT_NAME_TABLE_BUSY) : tbodyTrAttr,\n key: 'table-busy-slot'\n }, [h(BTd, {\n props: {\n colspan: this.computedFields.length || null\n }\n }, [this.normalizeSlot(SLOT_NAME_TABLE_BUSY)])]);\n } // We return `null` here so that we can determine if we need to\n // render the table items rows or not\n\n\n return null;\n }\n }\n});","import { Vue } from '../../../vue';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../../constants/props';\nimport { SLOT_NAME_EMPTY, SLOT_NAME_EMPTYFILTERED, SLOT_NAME_TABLE_BUSY } from '../../../constants/slots';\nimport { htmlOrText } from '../../../utils/html';\nimport { isFunction } from '../../../utils/inspect';\nimport { makeProp } from '../../../utils/props';\nimport { BTr } from '../tr';\nimport { BTd } from '../td'; // --- Props ---\n\nexport var props = {\n emptyFilteredHtml: makeProp(PROP_TYPE_STRING),\n emptyFilteredText: makeProp(PROP_TYPE_STRING, 'There are no records matching your request'),\n emptyHtml: makeProp(PROP_TYPE_STRING),\n emptyText: makeProp(PROP_TYPE_STRING, 'There are no records to show'),\n showEmpty: makeProp(PROP_TYPE_BOOLEAN, false)\n}; // --- Mixin ---\n// @vue/component\n\nexport var emptyMixin = Vue.extend({\n props: props,\n methods: {\n renderEmpty: function renderEmpty() {\n var items = this.computedItems;\n var h = this.$createElement;\n var $empty = h();\n\n if (this.showEmpty && (!items || items.length === 0) && !(this.computedBusy && this.hasNormalizedSlot(SLOT_NAME_TABLE_BUSY))) {\n var fields = this.computedFields,\n isFiltered = this.isFiltered,\n emptyText = this.emptyText,\n emptyHtml = this.emptyHtml,\n emptyFilteredText = this.emptyFilteredText,\n emptyFilteredHtml = this.emptyFilteredHtml,\n tbodyTrClass = this.tbodyTrClass,\n tbodyTrAttr = this.tbodyTrAttr;\n $empty = this.normalizeSlot(isFiltered ? SLOT_NAME_EMPTYFILTERED : SLOT_NAME_EMPTY, {\n emptyFilteredHtml: emptyFilteredHtml,\n emptyFilteredText: emptyFilteredText,\n emptyHtml: emptyHtml,\n emptyText: emptyText,\n fields: fields,\n // Not sure why this is included, as it will always be an empty array\n items: items\n });\n\n if (!$empty) {\n $empty = h('div', {\n class: ['text-center', 'my-2'],\n domProps: isFiltered ? htmlOrText(emptyFilteredHtml, emptyFilteredText) : htmlOrText(emptyHtml, emptyText)\n });\n }\n\n $empty = h(BTd, {\n props: {\n colspan: fields.length || null\n }\n }, [h('div', {\n attrs: {\n role: 'alert',\n 'aria-live': 'polite'\n }\n }, [$empty])]);\n $empty = h(BTr, {\n staticClass: 'b-table-empty-row',\n class: [isFunction(tbodyTrClass) ?\n /* istanbul ignore next */\n tbodyTrClass(null, 'row-empty') : tbodyTrClass],\n attrs: isFunction(tbodyTrAttr) ?\n /* istanbul ignore next */\n tbodyTrAttr(null, 'row-empty') : tbodyTrAttr,\n key: isFiltered ? 'b-empty-filtered-row' : 'b-empty-row'\n }, [$empty]);\n }\n\n return $empty;\n }\n }\n});","import { isDate, isObject, isUndefinedOrNull } from './inspect';\nimport { keys } from './object';\nimport { toString } from './string'; // Recursively stringifies the values of an object, space separated, in an\n// SSR safe deterministic way (keys are sorted before stringification)\n//\n// ex:\n// { b: 3, c: { z: 'zzz', d: null, e: 2 }, d: [10, 12, 11], a: 'one' }\n// becomes\n// 'one 3 2 zzz 10 12 11'\n//\n// Strings are returned as-is\n// Numbers get converted to string\n// `null` and `undefined` values are filtered out\n// Dates are converted to their native string format\n\nexport var stringifyObjectValues = function stringifyObjectValues(value) {\n if (isUndefinedOrNull(value)) {\n return '';\n } // Arrays are also object, and keys just returns the array indexes\n // Date objects we convert to strings\n\n\n if (isObject(value) && !isDate(value)) {\n return keys(value).sort() // Sort to prevent SSR issues on pre-rendered sorted tables\n .map(function (k) {\n return stringifyObjectValues(value[k]);\n }).filter(function (v) {\n return !!v;\n }) // Ignore empty strings\n .join(' ');\n }\n\n return toString(value);\n};","import { arrayIncludes } from '../../../utils/array';\nimport { isArray, isFunction } from '../../../utils/inspect';\nimport { clone, keys, pick } from '../../../utils/object';\nimport { IGNORED_FIELD_KEYS } from './constants'; // Return a copy of a row after all reserved fields have been filtered out\n\nexport var sanitizeRow = function sanitizeRow(row, ignoreFields, includeFields) {\n var fieldsObj = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n // We first need to format the row based on the field configurations\n // This ensures that we add formatted values for keys that may not\n // exist in the row itself\n var formattedRow = keys(fieldsObj).reduce(function (result, key) {\n var field = fieldsObj[key];\n var filterByFormatted = field.filterByFormatted;\n var formatter = isFunction(filterByFormatted) ?\n /* istanbul ignore next */\n filterByFormatted : filterByFormatted ?\n /* istanbul ignore next */\n field.formatter : null;\n\n if (isFunction(formatter)) {\n result[key] = formatter(row[key], key, row);\n }\n\n return result;\n }, clone(row)); // Determine the allowed keys:\n // - Ignore special fields that start with `_`\n // - Ignore fields in the `ignoreFields` array\n // - Include only fields in the `includeFields` array\n\n var allowedKeys = keys(formattedRow).filter(function (key) {\n return !IGNORED_FIELD_KEYS[key] && !(isArray(ignoreFields) && ignoreFields.length > 0 && arrayIncludes(ignoreFields, key)) && !(isArray(includeFields) && includeFields.length > 0 && !arrayIncludes(includeFields, key));\n });\n return pick(formattedRow, allowedKeys);\n};","import { isObject } from '../../../utils/inspect';\nimport { stringifyObjectValues } from '../../../utils/stringify-object-values';\nimport { sanitizeRow } from './sanitize-row'; // Stringifies the values of a record, ignoring any special top level field keys\n// TODO: Add option to stringify `scopedSlot` items\n\nexport var stringifyRecordValues = function stringifyRecordValues(row, ignoreFields, includeFields, fieldsObj) {\n return isObject(row) ? stringifyObjectValues(sanitizeRow(row, ignoreFields, includeFields, fieldsObj)) :\n /* istanbul ignore next */\n '';\n};","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nimport { Vue } from '../../../vue';\nimport { NAME_TABLE } from '../../../constants/components';\nimport { EVENT_NAME_FILTERED } from '../../../constants/events';\nimport { PROP_TYPE_REG_EXP, PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_FUNCTION, PROP_TYPE_ARRAY, PROP_TYPE_NUMBER_STRING } from '../../../constants/props';\nimport { RX_DIGITS, RX_SPACES } from '../../../constants/regex';\nimport { concat } from '../../../utils/array';\nimport { cloneDeep } from '../../../utils/clone-deep';\nimport { identity } from '../../../utils/identity';\nimport { isFunction, isString, isRegExp } from '../../../utils/inspect';\nimport { looseEqual } from '../../../utils/loose-equal';\nimport { toInteger } from '../../../utils/number';\nimport { hasPropFunction, makeProp } from '../../../utils/props';\nimport { escapeRegExp } from '../../../utils/string';\nimport { warn } from '../../../utils/warn';\nimport { stringifyRecordValues } from './stringify-record-values'; // --- Constants ---\n\nvar DEBOUNCE_DEPRECATED_MSG = 'Prop \"filter-debounce\" is deprecated. Use the debounce feature of \"\" instead.'; // --- Props ---\n\nexport var props = {\n filter: makeProp([].concat(_toConsumableArray(PROP_TYPE_ARRAY_OBJECT_STRING), [PROP_TYPE_REG_EXP])),\n filterDebounce: makeProp(PROP_TYPE_NUMBER_STRING, 0, function (value) {\n return RX_DIGITS.test(String(value));\n }),\n filterFunction: makeProp(PROP_TYPE_FUNCTION),\n filterIgnoredFields: makeProp(PROP_TYPE_ARRAY, []),\n filterIncludedFields: makeProp(PROP_TYPE_ARRAY, [])\n}; // --- Mixin ---\n// @vue/component\n\nexport var filteringMixin = Vue.extend({\n props: props,\n data: function data() {\n return {\n // Flag for displaying which empty slot to show and some event triggering\n isFiltered: false,\n // Where we store the copy of the filter criteria after debouncing\n // We pre-set it with the sanitized filter value\n localFilter: this.filterSanitize(this.filter)\n };\n },\n computed: {\n computedFilterIgnored: function computedFilterIgnored() {\n return concat(this.filterIgnoredFields || []).filter(identity);\n },\n computedFilterIncluded: function computedFilterIncluded() {\n return concat(this.filterIncludedFields || []).filter(identity);\n },\n computedFilterDebounce: function computedFilterDebounce() {\n var ms = toInteger(this.filterDebounce, 0);\n /* istanbul ignore next */\n\n if (ms > 0) {\n warn(DEBOUNCE_DEPRECATED_MSG, NAME_TABLE);\n }\n\n return ms;\n },\n localFiltering: function localFiltering() {\n return this.hasProvider ? !!this.noProviderFiltering : true;\n },\n // For watching changes to `filteredItems` vs `localItems`\n filteredCheck: function filteredCheck() {\n var filteredItems = this.filteredItems,\n localItems = this.localItems,\n localFilter = this.localFilter;\n return {\n filteredItems: filteredItems,\n localItems: localItems,\n localFilter: localFilter\n };\n },\n // Sanitized/normalize filter-function prop\n localFilterFn: function localFilterFn() {\n // Return `null` to signal to use internal filter function\n var filterFunction = this.filterFunction;\n return hasPropFunction(filterFunction) ? filterFunction : null;\n },\n // Returns the records in `localItems` that match the filter criteria\n // Returns the original `localItems` array if not sorting\n filteredItems: function filteredItems() {\n // Note the criteria is debounced and sanitized\n var items = this.localItems,\n criteria = this.localFilter; // Resolve the filtering function, when requested\n // We prefer the provided filtering function and fallback to the internal one\n // When no filtering criteria is specified the filtering factories will return `null`\n\n var filterFn = this.localFiltering ? this.filterFnFactory(this.localFilterFn, criteria) || this.defaultFilterFnFactory(criteria) : null; // We only do local filtering when requested and there are records to filter\n\n return filterFn && items.length > 0 ? items.filter(filterFn) : items;\n }\n },\n watch: {\n // Watch for debounce being set to 0\n computedFilterDebounce: function computedFilterDebounce(newValue) {\n if (!newValue && this.$_filterTimer) {\n this.clearFilterTimer();\n this.localFilter = this.filterSanitize(this.filter);\n }\n },\n // Watch for changes to the filter criteria, and debounce if necessary\n filter: {\n // We need a deep watcher in case the user passes\n // an object when using `filter-function`\n deep: true,\n handler: function handler(newCriteria) {\n var _this = this;\n\n var timeout = this.computedFilterDebounce;\n this.clearFilterTimer();\n\n if (timeout && timeout > 0) {\n // If we have a debounce time, delay the update of `localFilter`\n this.$_filterTimer = setTimeout(function () {\n _this.localFilter = _this.filterSanitize(newCriteria);\n }, timeout);\n } else {\n // Otherwise, immediately update `localFilter` with `newFilter` value\n this.localFilter = this.filterSanitize(newCriteria);\n }\n }\n },\n // Watch for changes to the filter criteria and filtered items vs `localItems`\n // Set visual state and emit events as required\n filteredCheck: function filteredCheck(_ref) {\n var filteredItems = _ref.filteredItems,\n localFilter = _ref.localFilter;\n // Determine if the dataset is filtered or not\n var isFiltered = false;\n\n if (!localFilter) {\n // If filter criteria is falsey\n isFiltered = false;\n } else if (looseEqual(localFilter, []) || looseEqual(localFilter, {})) {\n // If filter criteria is an empty array or object\n isFiltered = false;\n } else if (localFilter) {\n // If filter criteria is truthy\n isFiltered = true;\n }\n\n if (isFiltered) {\n this.$emit(EVENT_NAME_FILTERED, filteredItems, filteredItems.length);\n }\n\n this.isFiltered = isFiltered;\n },\n isFiltered: function isFiltered(newValue, oldValue) {\n if (newValue === false && oldValue === true) {\n // We need to emit a filtered event if `isFiltered` transitions from `true` to\n // `false` so that users can update their pagination controls\n var localItems = this.localItems;\n this.$emit(EVENT_NAME_FILTERED, localItems, localItems.length);\n }\n }\n },\n created: function created() {\n var _this2 = this;\n\n // Create private non-reactive props\n this.$_filterTimer = null; // If filter is \"pre-set\", set the criteria\n // This will trigger any watchers/dependents\n // this.localFilter = this.filterSanitize(this.filter)\n // Set the initial filtered state in a `$nextTick()` so that\n // we trigger a filtered event if needed\n\n this.$nextTick(function () {\n _this2.isFiltered = Boolean(_this2.localFilter);\n });\n },\n beforeDestroy: function beforeDestroy() {\n this.clearFilterTimer();\n },\n methods: {\n clearFilterTimer: function clearFilterTimer() {\n clearTimeout(this.$_filterTimer);\n this.$_filterTimer = null;\n },\n filterSanitize: function filterSanitize(criteria) {\n // Sanitizes filter criteria based on internal or external filtering\n if (this.localFiltering && !this.localFilterFn && !(isString(criteria) || isRegExp(criteria))) {\n // If using internal filter function, which only accepts string or RegExp,\n // return '' to signify no filter\n return '';\n } // Could be a string, object or array, as needed by external filter function\n // We use `cloneDeep` to ensure we have a new copy of an object or array\n // without Vue's reactive observers\n\n\n return cloneDeep(criteria);\n },\n // Filter Function factories\n filterFnFactory: function filterFnFactory(filterFn, criteria) {\n // Wrapper factory for external filter functions\n // Wrap the provided filter-function and return a new function\n // Returns `null` if no filter-function defined or if criteria is falsey\n // Rather than directly grabbing `this.computedLocalFilterFn` or `this.filterFunction`\n // we have it passed, so that the caller computed prop will be reactive to changes\n // in the original filter-function (as this routine is a method)\n if (!filterFn || !isFunction(filterFn) || !criteria || looseEqual(criteria, []) || looseEqual(criteria, {})) {\n return null;\n } // Build the wrapped filter test function, passing the criteria to the provided function\n\n\n var fn = function fn(item) {\n // Generated function returns true if the criteria matches part\n // of the serialized data, otherwise false\n return filterFn(item, criteria);\n }; // Return the wrapped function\n\n\n return fn;\n },\n defaultFilterFnFactory: function defaultFilterFnFactory(criteria) {\n var _this3 = this;\n\n // Generates the default filter function, using the given filter criteria\n // Returns `null` if no criteria or criteria format not supported\n if (!criteria || !(isString(criteria) || isRegExp(criteria))) {\n // Built in filter can only support strings or RegExp criteria (at the moment)\n return null;\n } // Build the RegExp needed for filtering\n\n\n var regExp = criteria;\n\n if (isString(regExp)) {\n // Escape special RegExp characters in the string and convert contiguous\n // whitespace to \\s+ matches\n var pattern = escapeRegExp(criteria).replace(RX_SPACES, '\\\\s+'); // Build the RegExp (no need for global flag, as we only need\n // to find the value once in the string)\n\n regExp = new RegExp(\".*\".concat(pattern, \".*\"), 'i');\n } // Generate the wrapped filter test function to use\n\n\n var fn = function fn(item) {\n // This searches all row values (and sub property values) in the entire (excluding\n // special `_` prefixed keys), because we convert the record to a space-separated\n // string containing all the value properties (recursively), even ones that are\n // not visible (not specified in this.fields)\n // Users can ignore filtering on specific fields, or on only certain fields,\n // and can optionall specify searching results of fields with formatter\n //\n // TODO: Enable searching on scoped slots (optional, as it will be SLOW)\n //\n // Generated function returns true if the criteria matches part of\n // the serialized data, otherwise false\n //\n // We set `lastIndex = 0` on the `RegExp` in case someone specifies the `/g` global flag\n regExp.lastIndex = 0;\n return regExp.test(stringifyRecordValues(item, _this3.computedFilterIgnored, _this3.computedFilterIncluded, _this3.computedFieldsObj));\n }; // Return the generated function\n\n\n return fn;\n }\n }\n});","import { Vue } from '../../../vue';\nimport { PROP_TYPE_NUMBER_STRING } from '../../../constants/props';\nimport { mathMax } from '../../../utils/math';\nimport { toInteger } from '../../../utils/number';\nimport { makeProp } from '../../../utils/props'; // --- Props ---\n\nexport var props = {\n currentPage: makeProp(PROP_TYPE_NUMBER_STRING, 1),\n perPage: makeProp(PROP_TYPE_NUMBER_STRING, 0)\n}; // --- Mixin ---\n// @vue/component\n\nexport var paginationMixin = Vue.extend({\n props: props,\n computed: {\n localPaging: function localPaging() {\n return this.hasProvider ? !!this.noProviderPaging : true;\n },\n paginatedItems: function paginatedItems() {\n var items = this.sortedItems || this.filteredItems || this.localItems || [];\n var currentPage = mathMax(toInteger(this.currentPage, 1), 1);\n var perPage = mathMax(toInteger(this.perPage, 0), 0); // Apply local pagination\n\n if (this.localPaging && perPage) {\n // Grab the current page of data (which may be past filtered items limit)\n items = items.slice((currentPage - 1) * perPage, currentPage * perPage);\n } // Return the items to display in the table\n\n\n return items;\n }\n }\n});","import { Vue } from '../../../vue';\nimport { NAME_TABLE } from '../../../constants/components';\nimport { EVENT_NAME_REFRESH, EVENT_NAME_REFRESHED } from '../../../constants/events';\nimport { PROP_TYPE_ARRAY_FUNCTION, PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../../constants/props';\nimport { getRootActionEventName, getRootEventName } from '../../../utils/events';\nimport { isArray, isFunction, isPromise } from '../../../utils/inspect';\nimport { looseEqual } from '../../../utils/loose-equal';\nimport { clone } from '../../../utils/object';\nimport { makeProp } from '../../../utils/props';\nimport { warn } from '../../../utils/warn';\nimport { listenOnRootMixin } from '../../../mixins/listen-on-root'; // --- Constants ---\n\nvar ROOT_EVENT_NAME_REFRESHED = getRootEventName(NAME_TABLE, EVENT_NAME_REFRESHED);\nvar ROOT_ACTION_EVENT_NAME_REFRESH = getRootActionEventName(NAME_TABLE, EVENT_NAME_REFRESH); // --- Props ---\n\nexport var props = {\n // Passed to the context object\n // Not used by `` directly\n apiUrl: makeProp(PROP_TYPE_STRING),\n // Adds in 'Function' support\n items: makeProp(PROP_TYPE_ARRAY_FUNCTION, []),\n noProviderFiltering: makeProp(PROP_TYPE_BOOLEAN, false),\n noProviderPaging: makeProp(PROP_TYPE_BOOLEAN, false),\n noProviderSorting: makeProp(PROP_TYPE_BOOLEAN, false)\n}; // --- Mixin ---\n// @vue/component\n\nexport var providerMixin = Vue.extend({\n mixins: [listenOnRootMixin],\n props: props,\n computed: {\n hasProvider: function hasProvider() {\n return isFunction(this.items);\n },\n providerTriggerContext: function providerTriggerContext() {\n // Used to trigger the provider function via a watcher. Only the fields that\n // are needed for triggering a provider update are included. Note that the\n // regular this.context is sent to the provider during fetches though, as they\n // may need all the prop info.\n var ctx = {\n apiUrl: this.apiUrl,\n filter: null,\n sortBy: null,\n sortDesc: null,\n perPage: null,\n currentPage: null\n };\n\n if (!this.noProviderFiltering) {\n // Either a string, or could be an object or array.\n ctx.filter = this.localFilter;\n }\n\n if (!this.noProviderSorting) {\n ctx.sortBy = this.localSortBy;\n ctx.sortDesc = this.localSortDesc;\n }\n\n if (!this.noProviderPaging) {\n ctx.perPage = this.perPage;\n ctx.currentPage = this.currentPage;\n }\n\n return clone(ctx);\n }\n },\n watch: {\n // Provider update triggering\n items: function items(newValue) {\n // If a new provider has been specified, trigger an update\n if (this.hasProvider || isFunction(newValue)) {\n this.$nextTick(this._providerUpdate);\n }\n },\n providerTriggerContext: function providerTriggerContext(newValue, oldValue) {\n // Trigger the provider to update as the relevant context values have changed.\n if (!looseEqual(newValue, oldValue)) {\n this.$nextTick(this._providerUpdate);\n }\n }\n },\n mounted: function mounted() {\n var _this = this;\n\n // Call the items provider if necessary\n if (this.hasProvider && (!this.localItems || this.localItems.length === 0)) {\n // Fetch on mount if localItems is empty\n this._providerUpdate();\n } // Listen for global messages to tell us to force refresh the table\n\n\n this.listenOnRoot(ROOT_ACTION_EVENT_NAME_REFRESH, function (id) {\n if (id === _this.id || id === _this) {\n _this.refresh();\n }\n });\n },\n methods: {\n refresh: function refresh() {\n var items = this.items,\n refresh = this.refresh; // Public Method: Force a refresh of the provider function\n\n this.$off(EVENT_NAME_REFRESHED, refresh);\n\n if (this.computedBusy) {\n // Can't force an update when forced busy by user (busy prop === true)\n if (this.localBusy && this.hasProvider) {\n // But if provider running (localBusy), re-schedule refresh once `refreshed` emitted\n this.$on(EVENT_NAME_REFRESHED, refresh);\n }\n } else {\n this.clearSelected();\n\n if (this.hasProvider) {\n this.$nextTick(this._providerUpdate);\n } else {\n /* istanbul ignore next */\n this.localItems = isArray(items) ? items.slice() : [];\n }\n }\n },\n // Provider related methods\n _providerSetLocal: function _providerSetLocal(items) {\n this.localItems = isArray(items) ? items.slice() : [];\n this.localBusy = false;\n this.$emit(EVENT_NAME_REFRESHED); // New root emit\n\n if (this.id) {\n this.emitOnRoot(ROOT_EVENT_NAME_REFRESHED, this.id);\n }\n },\n _providerUpdate: function _providerUpdate() {\n var _this2 = this;\n\n // Refresh the provider function items.\n if (!this.hasProvider) {\n // Do nothing if no provider\n return;\n } // If table is busy, wait until refreshed before calling again\n\n\n if (this.computedBusy) {\n // Schedule a new refresh once `refreshed` is emitted\n this.$nextTick(this.refresh);\n return;\n } // Set internal busy state\n\n\n this.localBusy = true; // Call provider function with context and optional callback after DOM is fully updated\n\n this.$nextTick(function () {\n try {\n // Call provider function passing it the context and optional callback\n var data = _this2.items(_this2.context, _this2._providerSetLocal);\n\n if (isPromise(data)) {\n // Provider returned Promise\n data.then(function (items) {\n // Provider resolved with items\n _this2._providerSetLocal(items);\n });\n } else if (isArray(data)) {\n // Provider returned Array data\n _this2._providerSetLocal(data);\n } else {\n /* istanbul ignore if */\n if (_this2.items.length !== 2) {\n // Check number of arguments provider function requested\n // Provider not using callback (didn't request second argument), so we clear\n // busy state as most likely there was an error in the provider function\n\n /* istanbul ignore next */\n warn(\"Provider function didn't request callback and did not return a promise or data.\", NAME_TABLE);\n _this2.localBusy = false;\n }\n }\n } catch (e)\n /* istanbul ignore next */\n {\n // Provider function borked on us, so we spew out a warning\n // and clear the busy state\n warn(\"Provider function error [\".concat(e.name, \"] \").concat(e.message, \".\"), NAME_TABLE);\n _this2.localBusy = false;\n\n _this2.$off(EVENT_NAME_REFRESHED, _this2.refresh);\n }\n });\n }\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 } from '../../../vue';\nimport { EVENT_NAME_CONTEXT_CHANGED, EVENT_NAME_FILTERED, EVENT_NAME_ROW_CLICKED, EVENT_NAME_ROW_SELECTED } from '../../../constants/events';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../../constants/props';\nimport { arrayIncludes, createArray } from '../../../utils/array';\nimport { identity } from '../../../utils/identity';\nimport { isArray, isNumber } from '../../../utils/inspect';\nimport { looseEqual } from '../../../utils/loose-equal';\nimport { mathMax, mathMin } from '../../../utils/math';\nimport { makeProp } from '../../../utils/props';\nimport { sanitizeRow } from './sanitize-row'; // --- Constants ---\n\nvar SELECT_MODES = ['range', 'multi', 'single']; // --- Props ---\n\nexport var props = {\n // Disable use of click handlers for row selection\n noSelectOnClick: makeProp(PROP_TYPE_BOOLEAN, false),\n selectMode: makeProp(PROP_TYPE_STRING, 'multi', function (value) {\n return arrayIncludes(SELECT_MODES, value);\n }),\n selectable: makeProp(PROP_TYPE_BOOLEAN, false),\n selectedVariant: makeProp(PROP_TYPE_STRING, 'active')\n}; // --- Mixin ---\n// @vue/component\n\nexport var selectableMixin = Vue.extend({\n props: props,\n data: function data() {\n return {\n selectedRows: [],\n selectedLastRow: -1\n };\n },\n computed: {\n isSelectable: function isSelectable() {\n return this.selectable && this.selectMode;\n },\n hasSelectableRowClick: function hasSelectableRowClick() {\n return this.isSelectable && !this.noSelectOnClick;\n },\n supportsSelectableRows: function supportsSelectableRows() {\n return true;\n },\n selectableHasSelection: function selectableHasSelection() {\n var selectedRows = this.selectedRows;\n return this.isSelectable && selectedRows && selectedRows.length > 0 && selectedRows.some(identity);\n },\n selectableIsMultiSelect: function selectableIsMultiSelect() {\n return this.isSelectable && arrayIncludes(['range', 'multi'], this.selectMode);\n },\n selectableTableClasses: function selectableTableClasses() {\n var _ref;\n\n var isSelectable = this.isSelectable;\n return _ref = {\n 'b-table-selectable': isSelectable\n }, _defineProperty(_ref, \"b-table-select-\".concat(this.selectMode), isSelectable), _defineProperty(_ref, 'b-table-selecting', this.selectableHasSelection), _defineProperty(_ref, 'b-table-selectable-no-click', isSelectable && !this.hasSelectableRowClick), _ref;\n },\n selectableTableAttrs: function selectableTableAttrs() {\n return {\n // TODO:\n // Should this attribute not be included when no-select-on-click is set\n // since this attribute implies keyboard navigation?\n 'aria-multiselectable': !this.isSelectable ? null : this.selectableIsMultiSelect ? 'true' : 'false'\n };\n }\n },\n watch: {\n computedItems: function computedItems(newValue, oldValue) {\n // Reset for selectable\n var equal = false;\n\n if (this.isSelectable && this.selectedRows.length > 0) {\n // Quick check against array length\n equal = isArray(newValue) && isArray(oldValue) && newValue.length === oldValue.length;\n\n for (var i = 0; equal && i < newValue.length; i++) {\n // Look for the first non-loosely equal row, after ignoring reserved fields\n equal = looseEqual(sanitizeRow(newValue[i]), sanitizeRow(oldValue[i]));\n }\n }\n\n if (!equal) {\n this.clearSelected();\n }\n },\n selectable: function selectable(newValue) {\n this.clearSelected();\n this.setSelectionHandlers(newValue);\n },\n selectMode: function selectMode() {\n this.clearSelected();\n },\n hasSelectableRowClick: function hasSelectableRowClick(newValue) {\n this.clearSelected();\n this.setSelectionHandlers(!newValue);\n },\n selectedRows: function selectedRows(_selectedRows, oldValue) {\n var _this = this;\n\n if (this.isSelectable && !looseEqual(_selectedRows, oldValue)) {\n var items = []; // `.forEach()` skips over non-existent indices (on sparse arrays)\n\n _selectedRows.forEach(function (v, idx) {\n if (v) {\n items.push(_this.computedItems[idx]);\n }\n });\n\n this.$emit(EVENT_NAME_ROW_SELECTED, items);\n }\n }\n },\n beforeMount: function beforeMount() {\n // Set up handlers if needed\n if (this.isSelectable) {\n this.setSelectionHandlers(true);\n }\n },\n methods: {\n // Public methods\n selectRow: function selectRow(index) {\n // Select a particular row (indexed based on computedItems)\n if (this.isSelectable && isNumber(index) && index >= 0 && index < this.computedItems.length && !this.isRowSelected(index)) {\n var selectedRows = this.selectableIsMultiSelect ? this.selectedRows.slice() : [];\n selectedRows[index] = true;\n this.selectedLastClicked = -1;\n this.selectedRows = selectedRows;\n }\n },\n unselectRow: function unselectRow(index) {\n // Un-select a particular row (indexed based on `computedItems`)\n if (this.isSelectable && isNumber(index) && this.isRowSelected(index)) {\n var selectedRows = this.selectedRows.slice();\n selectedRows[index] = false;\n this.selectedLastClicked = -1;\n this.selectedRows = selectedRows;\n }\n },\n selectAllRows: function selectAllRows() {\n var length = this.computedItems.length;\n\n if (this.isSelectable && length > 0) {\n this.selectedLastClicked = -1;\n this.selectedRows = this.selectableIsMultiSelect ? createArray(length, true) : [true];\n }\n },\n isRowSelected: function isRowSelected(index) {\n // Determine if a row is selected (indexed based on `computedItems`)\n return !!(isNumber(index) && this.selectedRows[index]);\n },\n clearSelected: function clearSelected() {\n // Clear any active selected row(s)\n this.selectedLastClicked = -1;\n this.selectedRows = [];\n },\n // Internal private methods\n selectableRowClasses: function selectableRowClasses(index) {\n if (this.isSelectable && this.isRowSelected(index)) {\n var variant = this.selectedVariant;\n return _defineProperty({\n 'b-table-row-selected': true\n }, \"\".concat(this.dark ? 'bg' : 'table', \"-\").concat(variant), variant);\n }\n\n return {};\n },\n selectableRowAttrs: function selectableRowAttrs(index) {\n return {\n 'aria-selected': !this.isSelectable ? null : this.isRowSelected(index) ? 'true' : 'false'\n };\n },\n setSelectionHandlers: function setSelectionHandlers(on) {\n var method = on && !this.noSelectOnClick ? '$on' : '$off'; // Handle row-clicked event\n\n this[method](EVENT_NAME_ROW_CLICKED, this.selectionHandler); // Clear selection on filter, pagination, and sort changes\n\n this[method](EVENT_NAME_FILTERED, this.clearSelected);\n this[method](EVENT_NAME_CONTEXT_CHANGED, this.clearSelected);\n },\n selectionHandler: function selectionHandler(item, index, event) {\n /* istanbul ignore if: should never happen */\n if (!this.isSelectable || this.noSelectOnClick) {\n // Don't do anything if table is not in selectable mode\n this.clearSelected();\n return;\n }\n\n var selectMode = this.selectMode,\n selectedLastRow = this.selectedLastRow;\n var selectedRows = this.selectedRows.slice();\n var selected = !selectedRows[index]; // Note 'multi' mode needs no special event handling\n\n if (selectMode === 'single') {\n selectedRows = [];\n } else if (selectMode === 'range') {\n if (selectedLastRow > -1 && event.shiftKey) {\n // range\n for (var idx = mathMin(selectedLastRow, index); idx <= mathMax(selectedLastRow, index); idx++) {\n selectedRows[idx] = true;\n }\n\n selected = true;\n } else {\n if (!(event.ctrlKey || event.metaKey)) {\n // Clear range selection if any\n selectedRows = [];\n selected = true;\n }\n\n this.selectedLastRow = selected ? index : -1;\n }\n }\n\n selectedRows[index] = selected;\n this.selectedRows = selectedRows;\n }\n }\n});","var _props, _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 { EVENT_NAME_HEAD_CLICKED, EVENT_NAME_SORT_CHANGED, MODEL_EVENT_NAME_PREFIX } from '../../../constants/events';\nimport { PROP_TYPE_ARRAY_STRING, PROP_TYPE_BOOLEAN, PROP_TYPE_FUNCTION, PROP_TYPE_OBJECT, PROP_TYPE_STRING } from '../../../constants/props';\nimport { arrayIncludes } from '../../../utils/array';\nimport { isFunction, isUndefinedOrNull } from '../../../utils/inspect';\nimport { makeProp } from '../../../utils/props';\nimport { stableSort } from '../../../utils/stable-sort';\nimport { trim } from '../../../utils/string';\nimport { defaultSortCompare } from './default-sort-compare'; // --- Constants ---\n\nvar MODEL_PROP_NAME_SORT_BY = 'sortBy';\nvar MODEL_EVENT_NAME_SORT_BY = MODEL_EVENT_NAME_PREFIX + MODEL_PROP_NAME_SORT_BY;\nvar MODEL_PROP_NAME_SORT_DESC = 'sortDesc';\nvar MODEL_EVENT_NAME_SORT_DESC = MODEL_EVENT_NAME_PREFIX + MODEL_PROP_NAME_SORT_DESC;\nvar SORT_DIRECTION_ASC = 'asc';\nvar SORT_DIRECTION_DESC = 'desc';\nvar SORT_DIRECTION_LAST = 'last';\nvar SORT_DIRECTIONS = [SORT_DIRECTION_ASC, SORT_DIRECTION_DESC, SORT_DIRECTION_LAST]; // --- Props ---\n\nexport var props = (_props = {\n labelSortAsc: makeProp(PROP_TYPE_STRING, 'Click to sort Ascending'),\n labelSortClear: makeProp(PROP_TYPE_STRING, 'Click to clear sorting'),\n labelSortDesc: makeProp(PROP_TYPE_STRING, 'Click to sort Descending'),\n noFooterSorting: makeProp(PROP_TYPE_BOOLEAN, false),\n noLocalSorting: makeProp(PROP_TYPE_BOOLEAN, false),\n // Another prop that should have had a better name\n // It should be `noSortClear` (on non-sortable headers)\n // We will need to make sure the documentation is clear on what\n // this prop does (as well as in the code for future reference)\n noSortReset: makeProp(PROP_TYPE_BOOLEAN, false)\n}, _defineProperty(_props, MODEL_PROP_NAME_SORT_BY, makeProp(PROP_TYPE_STRING)), _defineProperty(_props, \"sortCompare\", makeProp(PROP_TYPE_FUNCTION)), _defineProperty(_props, \"sortCompareLocale\", makeProp(PROP_TYPE_ARRAY_STRING)), _defineProperty(_props, \"sortCompareOptions\", makeProp(PROP_TYPE_OBJECT, {\n numeric: true\n})), _defineProperty(_props, MODEL_PROP_NAME_SORT_DESC, makeProp(PROP_TYPE_BOOLEAN, false)), _defineProperty(_props, \"sortDirection\", makeProp(PROP_TYPE_STRING, SORT_DIRECTION_ASC, function (value) {\n return arrayIncludes(SORT_DIRECTIONS, value);\n})), _defineProperty(_props, \"sortIconLeft\", makeProp(PROP_TYPE_BOOLEAN, false)), _defineProperty(_props, \"sortNullLast\", makeProp(PROP_TYPE_BOOLEAN, false)), _props); // --- Mixin ---\n// @vue/component\n\nexport var sortingMixin = Vue.extend({\n props: props,\n data: function data() {\n return {\n localSortBy: this[MODEL_PROP_NAME_SORT_BY] || '',\n localSortDesc: this[MODEL_PROP_NAME_SORT_DESC] || false\n };\n },\n computed: {\n localSorting: function localSorting() {\n return this.hasProvider ? !!this.noProviderSorting : !this.noLocalSorting;\n },\n isSortable: function isSortable() {\n return this.computedFields.some(function (f) {\n return f.sortable;\n });\n },\n // Sorts the filtered items and returns a new array of the sorted items\n // When not sorted, the original items array will be returned\n sortedItems: function sortedItems() {\n var sortBy = this.localSortBy,\n sortDesc = this.localSortDesc,\n locale = this.sortCompareLocale,\n nullLast = this.sortNullLast,\n sortCompare = this.sortCompare,\n localSorting = this.localSorting;\n var items = (this.filteredItems || this.localItems || []).slice();\n\n var localeOptions = _objectSpread(_objectSpread({}, this.sortCompareOptions), {}, {\n usage: 'sort'\n });\n\n if (sortBy && localSorting) {\n var field = this.computedFieldsObj[sortBy] || {};\n var sortByFormatted = field.sortByFormatted;\n var formatter = isFunction(sortByFormatted) ?\n /* istanbul ignore next */\n sortByFormatted : sortByFormatted ? this.getFieldFormatter(sortBy) : undefined; // `stableSort` returns a new array, and leaves the original array intact\n\n return stableSort(items, function (a, b) {\n var result = null; // Call user provided `sortCompare` routine first\n\n if (isFunction(sortCompare)) {\n // TODO:\n // Change the `sortCompare` signature to the one of `defaultSortCompare`\n // with the next major version bump\n result = sortCompare(a, b, sortBy, sortDesc, formatter, localeOptions, locale);\n } // Fallback to built-in `defaultSortCompare` if `sortCompare`\n // is not defined or returns `null`/`false`\n\n\n if (isUndefinedOrNull(result) || result === false) {\n result = defaultSortCompare(a, b, {\n sortBy: sortBy,\n formatter: formatter,\n locale: locale,\n localeOptions: localeOptions,\n nullLast: nullLast\n });\n } // Negate result if sorting in descending order\n\n\n return (result || 0) * (sortDesc ? -1 : 1);\n });\n }\n\n return items;\n }\n },\n watch: (_watch = {\n /* istanbul ignore next: pain in the butt to test */\n isSortable: function isSortable(newValue) {\n if (newValue) {\n if (this.isSortable) {\n this.$on(EVENT_NAME_HEAD_CLICKED, this.handleSort);\n }\n } else {\n this.$off(EVENT_NAME_HEAD_CLICKED, this.handleSort);\n }\n }\n }, _defineProperty(_watch, MODEL_PROP_NAME_SORT_DESC, function (newValue) {\n /* istanbul ignore next */\n if (newValue === this.localSortDesc) {\n return;\n }\n\n this.localSortDesc = newValue || false;\n }), _defineProperty(_watch, MODEL_PROP_NAME_SORT_BY, function (newValue) {\n /* istanbul ignore next */\n if (newValue === this.localSortBy) {\n return;\n }\n\n this.localSortBy = newValue || '';\n }), _defineProperty(_watch, \"localSortDesc\", function localSortDesc(newValue, oldValue) {\n // Emit update to sort-desc.sync\n if (newValue !== oldValue) {\n this.$emit(MODEL_EVENT_NAME_SORT_DESC, newValue);\n }\n }), _defineProperty(_watch, \"localSortBy\", function localSortBy(newValue, oldValue) {\n if (newValue !== oldValue) {\n this.$emit(MODEL_EVENT_NAME_SORT_BY, newValue);\n }\n }), _watch),\n created: function created() {\n if (this.isSortable) {\n this.$on(EVENT_NAME_HEAD_CLICKED, this.handleSort);\n }\n },\n methods: {\n // Handlers\n // Need to move from thead-mixin\n handleSort: function handleSort(key, field, event, isFoot) {\n var _this = this;\n\n if (!this.isSortable) {\n /* istanbul ignore next */\n return;\n }\n\n if (isFoot && this.noFooterSorting) {\n return;\n } // TODO: make this tri-state sorting\n // cycle desc => asc => none => desc => ...\n\n\n var sortChanged = false;\n\n var toggleLocalSortDesc = function toggleLocalSortDesc() {\n var sortDirection = field.sortDirection || _this.sortDirection;\n\n if (sortDirection === SORT_DIRECTION_ASC) {\n _this.localSortDesc = false;\n } else if (sortDirection === SORT_DIRECTION_DESC) {\n _this.localSortDesc = true;\n } else {// sortDirection === 'last'\n // Leave at last sort direction from previous column\n }\n };\n\n if (field.sortable) {\n var sortKey = !this.localSorting && field.sortKey ? field.sortKey : key;\n\n if (this.localSortBy === sortKey) {\n // Change sorting direction on current column\n this.localSortDesc = !this.localSortDesc;\n } else {\n // Start sorting this column ascending\n this.localSortBy = sortKey; // this.localSortDesc = false\n\n toggleLocalSortDesc();\n }\n\n sortChanged = true;\n } else if (this.localSortBy && !this.noSortReset) {\n this.localSortBy = '';\n toggleLocalSortDesc();\n sortChanged = true;\n }\n\n if (sortChanged) {\n // Sorting parameters changed\n this.$emit(EVENT_NAME_SORT_CHANGED, this.context);\n }\n },\n // methods to compute classes and attrs for thead>th cells\n sortTheadThClasses: function sortTheadThClasses(key, field, isFoot) {\n return {\n // If sortable and sortIconLeft are true, then place sort icon on the left\n 'b-table-sort-icon-left': field.sortable && this.sortIconLeft && !(isFoot && this.noFooterSorting)\n };\n },\n sortTheadThAttrs: function sortTheadThAttrs(key, field, isFoot) {\n if (!this.isSortable || isFoot && this.noFooterSorting) {\n // No attributes if not a sortable table\n return {};\n }\n\n var sortable = field.sortable; // Assemble the aria-sort attribute value\n\n var ariaSort = sortable && this.localSortBy === key ? this.localSortDesc ? 'descending' : 'ascending' : sortable ? 'none' : null; // Return the attribute\n\n return {\n 'aria-sort': ariaSort\n };\n },\n sortTheadThLabel: function sortTheadThLabel(key, field, isFoot) {\n // A label to be placed in an `.sr-only` element in the header cell\n if (!this.isSortable || isFoot && this.noFooterSorting) {\n // No label if not a sortable table\n return null;\n }\n\n var sortable = field.sortable; // The correctness of these labels is very important for screen-reader users.\n\n var labelSorting = '';\n\n if (sortable) {\n if (this.localSortBy === key) {\n // currently sorted sortable column.\n labelSorting = this.localSortDesc ? this.labelSortAsc : this.labelSortDesc;\n } else {\n // Not currently sorted sortable column.\n // Not using nested ternary's here for clarity/readability\n // Default for ariaLabel\n labelSorting = this.localSortDesc ? this.labelSortDesc : this.labelSortAsc; // Handle sortDirection setting\n\n var sortDirection = this.sortDirection || field.sortDirection;\n\n if (sortDirection === SORT_DIRECTION_ASC) {\n labelSorting = this.labelSortAsc;\n } else if (sortDirection === SORT_DIRECTION_DESC) {\n labelSorting = this.labelSortDesc;\n }\n }\n } else if (!this.noSortReset) {\n // Non sortable column\n labelSorting = this.localSortBy ? this.labelSortClear : '';\n } // Return the sr-only sort label or null if no label\n\n\n return trim(labelSorting) || null;\n }\n }\n});","import { get } from '../../../utils/get';\nimport { isDate, isFunction, isNumber, isNumeric, isUndefinedOrNull } from '../../../utils/inspect';\nimport { toFloat } from '../../../utils/number';\nimport { stringifyObjectValues } from '../../../utils/stringify-object-values';\n\nvar normalizeValue = function normalizeValue(value) {\n if (isUndefinedOrNull(value)) {\n return '';\n }\n\n if (isNumeric(value)) {\n return toFloat(value, value);\n }\n\n return value;\n}; // Default sort compare routine\n//\n// TODO:\n// Add option to sort by multiple columns (tri-state per column,\n// plus order of columns in sort) where `sortBy` could be an array\n// of objects `[ {key: 'foo', sortDir: 'asc'}, {key:'bar', sortDir: 'desc'} ...]`\n// or an array of arrays `[ ['foo','asc'], ['bar','desc'] ]`\n// Multisort will most likely be handled in `mixin-sort.js` by\n// calling this method for each sortBy\n\n\nexport var defaultSortCompare = function defaultSortCompare(a, b) {\n var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n _ref$sortBy = _ref.sortBy,\n sortBy = _ref$sortBy === void 0 ? null : _ref$sortBy,\n _ref$formatter = _ref.formatter,\n formatter = _ref$formatter === void 0 ? null : _ref$formatter,\n _ref$locale = _ref.locale,\n locale = _ref$locale === void 0 ? undefined : _ref$locale,\n _ref$localeOptions = _ref.localeOptions,\n localeOptions = _ref$localeOptions === void 0 ? {} : _ref$localeOptions,\n _ref$nullLast = _ref.nullLast,\n nullLast = _ref$nullLast === void 0 ? false : _ref$nullLast;\n\n // Get the value by `sortBy`\n var aa = get(a, sortBy, null);\n var bb = get(b, sortBy, null); // Apply user-provided formatter\n\n if (isFunction(formatter)) {\n aa = formatter(aa, sortBy, a);\n bb = formatter(bb, sortBy, b);\n } // Internally normalize value\n // `null` / `undefined` => ''\n // `'0'` => `0`\n\n\n aa = normalizeValue(aa);\n bb = normalizeValue(bb);\n\n if (isDate(aa) && isDate(bb) || isNumber(aa) && isNumber(bb)) {\n // Special case for comparing dates and numbers\n // Internally dates are compared via their epoch number values\n return aa < bb ? -1 : aa > bb ? 1 : 0;\n } else if (nullLast && aa === '' && bb !== '') {\n // Special case when sorting `null` / `undefined` / '' last\n return 1;\n } else if (nullLast && aa !== '' && bb === '') {\n // Special case when sorting `null` / `undefined` / '' last\n return -1;\n } // Do localized string comparison\n\n\n return stringifyObjectValues(aa).localeCompare(stringifyObjectValues(bb), locale, localeOptions);\n};","import { Vue } from '../../../vue';\nimport { SLOT_NAME_TOP_ROW } from '../../../constants/slots';\nimport { isFunction } from '../../../utils/inspect';\nimport { BTr } from '../tr'; // --- Props ---\n\nexport var props = {}; // --- Mixin ---\n// @vue/component\n\nexport var topRowMixin = Vue.extend({\n methods: {\n renderTopRow: function renderTopRow() {\n var fields = this.computedFields,\n stacked = this.stacked,\n tbodyTrClass = this.tbodyTrClass,\n tbodyTrAttr = this.tbodyTrAttr;\n var h = this.$createElement; // Add static Top Row slot (hidden in visibly stacked mode as we can't control the data-label)\n // If in *always* stacked mode, we don't bother rendering the row\n\n if (!this.hasNormalizedSlot(SLOT_NAME_TOP_ROW) || stacked === true || stacked === '') {\n return h();\n }\n\n return h(BTr, {\n staticClass: 'b-table-top-row',\n class: [isFunction(tbodyTrClass) ? tbodyTrClass(null, 'row-top') : tbodyTrClass],\n attrs: isFunction(tbodyTrAttr) ? tbodyTrAttr(null, 'row-top') : tbodyTrAttr,\n key: 'b-top-row'\n }, [this.normalizeSlot(SLOT_NAME_TOP_ROW, {\n columns: fields.length,\n fields: fields\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_TABLE } from '../../constants/components';\nimport { sortKeys } from '../../utils/object';\nimport { makePropsConfigurable } from '../../utils/props';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { hasListenerMixin } from '../../mixins/has-listener';\nimport { idMixin, props as idProps } from '../../mixins/id';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { bottomRowMixin, props as bottomRowProps } from './helpers/mixin-bottom-row';\nimport { busyMixin, props as busyProps } from './helpers/mixin-busy';\nimport { captionMixin, props as captionProps } from './helpers/mixin-caption';\nimport { colgroupMixin, props as colgroupProps } from './helpers/mixin-colgroup';\nimport { emptyMixin, props as emptyProps } from './helpers/mixin-empty';\nimport { filteringMixin, props as filteringProps } from './helpers/mixin-filtering';\nimport { itemsMixin, props as itemsProps } from './helpers/mixin-items';\nimport { paginationMixin, props as paginationProps } from './helpers/mixin-pagination';\nimport { providerMixin, props as providerProps } from './helpers/mixin-provider';\nimport { selectableMixin, props as selectableProps } from './helpers/mixin-selectable';\nimport { sortingMixin, props as sortingProps } from './helpers/mixin-sorting';\nimport { stackedMixin, props as stackedProps } from './helpers/mixin-stacked';\nimport { tableRendererMixin, props as tableRendererProps } from './helpers/mixin-table-renderer';\nimport { tbodyMixin, props as tbodyProps } from './helpers/mixin-tbody';\nimport { tfootMixin, props as tfootProps } from './helpers/mixin-tfoot';\nimport { theadMixin, props as theadProps } from './helpers/mixin-thead';\nimport { topRowMixin, props as topRowProps } from './helpers/mixin-top-row'; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, idProps), bottomRowProps), busyProps), captionProps), colgroupProps), emptyProps), filteringProps), itemsProps), paginationProps), providerProps), selectableProps), sortingProps), stackedProps), tableRendererProps), tbodyProps), tfootProps), theadProps), topRowProps)), NAME_TABLE); // --- Main component ---\n// @vue/component\n\nexport var BTable = /*#__PURE__*/Vue.extend({\n name: NAME_TABLE,\n // Order of mixins is important!\n // They are merged from first to last, followed by this component\n mixins: [// General mixins\n attrsMixin, hasListenerMixin, idMixin, normalizeSlotMixin, // Required table mixins\n itemsMixin, tableRendererMixin, stackedMixin, theadMixin, tfootMixin, tbodyMixin, // Table features mixins\n stackedMixin, filteringMixin, sortingMixin, paginationMixin, captionMixin, colgroupMixin, selectableMixin, emptyMixin, topRowMixin, bottomRowMixin, busyMixin, providerMixin],\n props: props // Render function is provided by `tableRendererMixin`\n\n});","import { Vue, mergeData } from '../../vue';\nimport { NAME_MEDIA } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_ASIDE, SLOT_NAME_DEFAULT } from '../../constants/slots';\nimport { normalizeSlot } from '../../utils/normalize-slot';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { BMediaAside } from './media-aside';\nimport { BMediaBody } from './media-body'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n noBody: makeProp(PROP_TYPE_BOOLEAN, false),\n rightAlign: makeProp(PROP_TYPE_BOOLEAN, false),\n tag: makeProp(PROP_TYPE_STRING, 'div'),\n verticalAlign: makeProp(PROP_TYPE_STRING, 'top')\n}, NAME_MEDIA); // --- Main component ---\n// @vue/component\n\nexport var BMedia = /*#__PURE__*/Vue.extend({\n name: NAME_MEDIA,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n slots = _ref.slots,\n scopedSlots = _ref.scopedSlots,\n children = _ref.children;\n var noBody = props.noBody,\n rightAlign = props.rightAlign,\n verticalAlign = props.verticalAlign;\n var $children = noBody ? children : [];\n\n if (!noBody) {\n var slotScope = {};\n var $slots = slots();\n var $scopedSlots = scopedSlots || {};\n $children.push(h(BMediaBody, normalizeSlot(SLOT_NAME_DEFAULT, slotScope, $scopedSlots, $slots)));\n var $aside = normalizeSlot(SLOT_NAME_ASIDE, slotScope, $scopedSlots, $slots);\n\n if ($aside) {\n $children[rightAlign ? 'push' : 'unshift'](h(BMediaAside, {\n props: {\n right: rightAlign,\n verticalAlign: verticalAlign\n }\n }, $aside));\n }\n }\n\n return h(props.tag, mergeData(data, {\n staticClass: 'media'\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\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nimport { Vue } from '../../../vue';\nimport { EVENT_NAME_ROW_CLICKED, EVENT_NAME_ROW_HOVERED, EVENT_NAME_ROW_UNHOVERED } from '../../../constants/events';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_FUNCTION, PROP_TYPE_OBJECT_FUNCTION } from '../../../constants/props';\nimport { SLOT_NAME_ROW_DETAILS } from '../../../constants/slots';\nimport { get } from '../../../utils/get';\nimport { isFunction, isString, isUndefinedOrNull } from '../../../utils/inspect';\nimport { makeProp } from '../../../utils/props';\nimport { toString } from '../../../utils/string';\nimport { BTr } from '../tr';\nimport { BTd } from '../td';\nimport { BTh } from '../th';\nimport { FIELD_KEY_CELL_VARIANT, FIELD_KEY_ROW_VARIANT, FIELD_KEY_SHOW_DETAILS } from './constants'; // --- Props ---\n\nexport var props = {\n detailsTdClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n tbodyTrAttr: makeProp(PROP_TYPE_OBJECT_FUNCTION),\n tbodyTrClass: makeProp([].concat(_toConsumableArray(PROP_TYPE_ARRAY_OBJECT_STRING), [PROP_TYPE_FUNCTION]))\n}; // --- Mixin ---\n// @vue/component\n\nexport var tbodyRowMixin = Vue.extend({\n props: props,\n methods: {\n // Methods for computing classes, attributes and styles for table cells\n getTdValues: function getTdValues(item, key, tdValue, defaultValue) {\n var $parent = this.$parent;\n\n if (tdValue) {\n var value = get(item, key, '');\n\n if (isFunction(tdValue)) {\n return tdValue(value, key, item);\n } else if (isString(tdValue) && isFunction($parent[tdValue])) {\n return $parent[tdValue](value, key, item);\n }\n\n return tdValue;\n }\n\n return defaultValue;\n },\n getThValues: function getThValues(item, key, thValue, type, defaultValue) {\n var $parent = this.$parent;\n\n if (thValue) {\n var value = get(item, key, '');\n\n if (isFunction(thValue)) {\n return thValue(value, key, item, type);\n } else if (isString(thValue) && isFunction($parent[thValue])) {\n return $parent[thValue](value, key, item, type);\n }\n\n return thValue;\n }\n\n return defaultValue;\n },\n // Method to get the value for a field\n getFormattedValue: function getFormattedValue(item, field) {\n var key = field.key;\n var formatter = this.getFieldFormatter(key);\n var value = get(item, key, null);\n\n if (isFunction(formatter)) {\n value = formatter(value, key, item);\n }\n\n return isUndefinedOrNull(value) ? '' : value;\n },\n // Factory function methods\n toggleDetailsFactory: function toggleDetailsFactory(hasDetailsSlot, item) {\n var _this = this;\n\n // Returns a function to toggle a row's details slot\n return function () {\n if (hasDetailsSlot) {\n _this.$set(item, FIELD_KEY_SHOW_DETAILS, !item[FIELD_KEY_SHOW_DETAILS]);\n }\n };\n },\n // Row event handlers\n rowHovered: function rowHovered(event) {\n // `mouseenter` handler (non-bubbling)\n // `this.tbodyRowEvtStopped` from tbody mixin\n if (!this.tbodyRowEvtStopped(event)) {\n // `this.emitTbodyRowEvent` from tbody mixin\n this.emitTbodyRowEvent(EVENT_NAME_ROW_HOVERED, event);\n }\n },\n rowUnhovered: function rowUnhovered(event) {\n // `mouseleave` handler (non-bubbling)\n // `this.tbodyRowEvtStopped` from tbody mixin\n if (!this.tbodyRowEvtStopped(event)) {\n // `this.emitTbodyRowEvent` from tbody mixin\n this.emitTbodyRowEvent(EVENT_NAME_ROW_UNHOVERED, event);\n }\n },\n // Renders a TD or TH for a row's field\n renderTbodyRowCell: function renderTbodyRowCell(field, colIndex, item, rowIndex) {\n var _this2 = this;\n\n var isStacked = this.isStacked;\n var key = field.key,\n label = field.label,\n isRowHeader = field.isRowHeader;\n var h = this.$createElement;\n var hasDetailsSlot = this.hasNormalizedSlot(SLOT_NAME_ROW_DETAILS);\n var formatted = this.getFormattedValue(item, field);\n var stickyColumn = !isStacked && (this.isResponsive || this.stickyHeader) && field.stickyColumn; // We only uses the helper components for sticky columns to\n // improve performance of BTable/BTableLite by reducing the\n // total number of vue instances created during render\n\n var cellTag = stickyColumn ? isRowHeader ? BTh : BTd : isRowHeader ? 'th' : 'td';\n var cellVariant = item[FIELD_KEY_CELL_VARIANT] && item[FIELD_KEY_CELL_VARIANT][key] ? item[FIELD_KEY_CELL_VARIANT][key] : field.variant || null;\n var data = {\n // For the Vue key, we concatenate the column index and\n // field key (as field keys could be duplicated)\n // TODO: Although we do prevent duplicate field keys...\n // So we could change this to: `row-${rowIndex}-cell-${key}`\n class: [field.class ? field.class : '', this.getTdValues(item, key, field.tdClass, '')],\n props: {},\n attrs: _objectSpread({\n 'aria-colindex': String(colIndex + 1)\n }, isRowHeader ? this.getThValues(item, key, field.thAttr, 'row', {}) : this.getTdValues(item, key, field.tdAttr, {})),\n key: \"row-\".concat(rowIndex, \"-cell-\").concat(colIndex, \"-\").concat(key)\n };\n\n if (stickyColumn) {\n // We are using the helper BTd or BTh\n data.props = {\n stackedHeading: isStacked ? label : null,\n stickyColumn: true,\n variant: cellVariant\n };\n } else {\n // Using native TD or TH element, so we need to\n // add in the attributes and variant class\n data.attrs['data-label'] = isStacked && !isUndefinedOrNull(label) ? toString(label) : null;\n data.attrs.role = isRowHeader ? 'rowheader' : 'cell';\n data.attrs.scope = isRowHeader ? 'row' : null; // Add in the variant class\n\n if (cellVariant) {\n data.class.push(\"\".concat(this.dark ? 'bg' : 'table', \"-\").concat(cellVariant));\n }\n }\n\n var slotScope = {\n item: item,\n index: rowIndex,\n field: field,\n unformatted: get(item, key, ''),\n value: formatted,\n toggleDetails: this.toggleDetailsFactory(hasDetailsSlot, item),\n detailsShowing: Boolean(item[FIELD_KEY_SHOW_DETAILS])\n }; // If table supports selectable mode, then add in the following scope\n // this.supportsSelectableRows will be undefined if mixin isn't loaded\n\n if (this.supportsSelectableRows) {\n slotScope.rowSelected = this.isRowSelected(rowIndex);\n\n slotScope.selectRow = function () {\n return _this2.selectRow(rowIndex);\n };\n\n slotScope.unselectRow = function () {\n return _this2.unselectRow(rowIndex);\n };\n } // The new `v-slot` syntax doesn't like a slot name starting with\n // a square bracket and if using in-document HTML templates, the\n // v-slot attributes are lower-cased by the browser.\n // Switched to round bracket syntax to prevent confusion with\n // dynamic slot name syntax.\n // We look for slots in this order: `cell(${key})`, `cell(${key.toLowerCase()})`, 'cell()'\n // Slot names are now cached by mixin tbody in `this.$_bodyFieldSlotNameCache`\n // Will be `null` if no slot (or fallback slot) exists\n\n\n var slotName = this.$_bodyFieldSlotNameCache[key];\n var $childNodes = slotName ? this.normalizeSlot(slotName, slotScope) : toString(formatted);\n\n if (this.isStacked) {\n // We wrap in a DIV to ensure rendered as a single cell when visually stacked!\n $childNodes = [h('div', [$childNodes])];\n } // Render either a td or th cell\n\n\n return h(cellTag, data, [$childNodes]);\n },\n // Renders an item's row (or rows if details supported)\n renderTbodyRow: function renderTbodyRow(item, rowIndex) {\n var _this3 = this;\n\n var fields = this.computedFields,\n striped = this.striped,\n primaryKey = this.primaryKey,\n currentPage = this.currentPage,\n perPage = this.perPage,\n tbodyTrClass = this.tbodyTrClass,\n tbodyTrAttr = this.tbodyTrAttr;\n var h = this.$createElement;\n var hasDetailsSlot = this.hasNormalizedSlot(SLOT_NAME_ROW_DETAILS);\n var rowShowDetails = item[FIELD_KEY_SHOW_DETAILS] && hasDetailsSlot;\n var hasRowClickHandler = this.$listeners[EVENT_NAME_ROW_CLICKED] || this.hasSelectableRowClick; // We can return more than one TR if rowDetails enabled\n\n var $rows = []; // Details ID needed for `aria-details` when details showing\n // We set it to `null` when not showing so that attribute\n // does not appear on the element\n\n var detailsId = rowShowDetails ? this.safeId(\"_details_\".concat(rowIndex, \"_\")) : null; // For each item data field in row\n\n var $tds = fields.map(function (field, colIndex) {\n return _this3.renderTbodyRowCell(field, colIndex, item, rowIndex);\n }); // Calculate the row number in the dataset (indexed from 1)\n\n var ariaRowIndex = null;\n\n if (currentPage && perPage && perPage > 0) {\n ariaRowIndex = String((currentPage - 1) * perPage + rowIndex + 1);\n } // Create a unique :key to help ensure that sub components are re-rendered rather than\n // re-used, which can cause issues. If a primary key is not provided we use the rendered\n // rows index within the tbody.\n // See: https://github.com/bootstrap-vue/bootstrap-vue/issues/2410\n\n\n var primaryKeyValue = toString(get(item, primaryKey)) || null;\n var rowKey = primaryKeyValue || toString(rowIndex); // If primary key is provided, use it to generate a unique ID on each tbody > tr\n // In the format of '{tableId}__row_{primaryKeyValue}'\n\n var rowId = primaryKeyValue ? this.safeId(\"_row_\".concat(primaryKeyValue)) : null; // Selectable classes and attributes\n\n var selectableClasses = this.selectableRowClasses ? this.selectableRowClasses(rowIndex) : {};\n var selectableAttrs = this.selectableRowAttrs ? this.selectableRowAttrs(rowIndex) : {}; // Additional classes and attributes\n\n var userTrClasses = isFunction(tbodyTrClass) ? tbodyTrClass(item, 'row') : tbodyTrClass;\n var userTrAttrs = isFunction(tbodyTrAttr) ?\n /* istanbul ignore next */\n tbodyTrAttr(item, 'row') : tbodyTrAttr; // Add the item row\n\n $rows.push(h(BTr, {\n class: [userTrClasses, selectableClasses, rowShowDetails ? 'b-table-has-details' : ''],\n props: {\n variant: item[FIELD_KEY_ROW_VARIANT] || null\n },\n attrs: _objectSpread(_objectSpread({\n id: rowId\n }, userTrAttrs), {}, {\n // Users cannot override the following attributes\n tabindex: hasRowClickHandler ? '0' : null,\n 'data-pk': primaryKeyValue || null,\n 'aria-details': detailsId,\n 'aria-owns': detailsId,\n 'aria-rowindex': ariaRowIndex\n }, selectableAttrs),\n on: {\n // Note: These events are not A11Y friendly!\n mouseenter: this.rowHovered,\n mouseleave: this.rowUnhovered\n },\n key: \"__b-table-row-\".concat(rowKey, \"__\"),\n ref: 'item-rows',\n refInFor: true\n }, $tds)); // Row Details slot\n\n if (rowShowDetails) {\n var detailsScope = {\n item: item,\n index: rowIndex,\n fields: fields,\n toggleDetails: this.toggleDetailsFactory(hasDetailsSlot, item)\n }; // If table supports selectable mode, then add in the following scope\n // this.supportsSelectableRows will be undefined if mixin isn't loaded\n\n if (this.supportsSelectableRows) {\n detailsScope.rowSelected = this.isRowSelected(rowIndex);\n\n detailsScope.selectRow = function () {\n return _this3.selectRow(rowIndex);\n };\n\n detailsScope.unselectRow = function () {\n return _this3.unselectRow(rowIndex);\n };\n } // Render the details slot in a TD\n\n\n var $details = h(BTd, {\n props: {\n colspan: fields.length\n },\n class: this.detailsTdClass\n }, [this.normalizeSlot(SLOT_NAME_ROW_DETAILS, detailsScope)]); // Add a hidden row to keep table row striping consistent when details showing\n // Only added if the table is striped\n\n if (striped) {\n $rows.push( // We don't use `BTr` here as we don't need the extra functionality\n h('tr', {\n staticClass: 'd-none',\n attrs: {\n 'aria-hidden': 'true',\n role: 'presentation'\n },\n key: \"__b-table-details-stripe__\".concat(rowKey)\n }));\n } // Add the actual details row\n\n\n var userDetailsTrClasses = isFunction(this.tbodyTrClass) ?\n /* istanbul ignore next */\n this.tbodyTrClass(item, SLOT_NAME_ROW_DETAILS) : this.tbodyTrClass;\n var userDetailsTrAttrs = isFunction(this.tbodyTrAttr) ?\n /* istanbul ignore next */\n this.tbodyTrAttr(item, SLOT_NAME_ROW_DETAILS) : this.tbodyTrAttr;\n $rows.push(h(BTr, {\n staticClass: 'b-table-details',\n class: [userDetailsTrClasses],\n props: {\n variant: item[FIELD_KEY_ROW_VARIANT] || null\n },\n attrs: _objectSpread(_objectSpread({}, userDetailsTrAttrs), {}, {\n // Users cannot override the following attributes\n id: detailsId,\n tabindex: '-1'\n }),\n key: \"__b-table-details__\".concat(rowKey)\n }, [$details]));\n } else if (hasDetailsSlot) {\n // Only add the placeholder if a the table has a row-details slot defined (but not shown)\n $rows.push(h());\n\n if (striped) {\n // Add extra placeholder if table is striped\n $rows.push(h());\n }\n } // Return the row(s)\n\n\n return $rows;\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 { EVENT_NAME_ROW_CLICKED, EVENT_NAME_ROW_CONTEXTMENU, EVENT_NAME_ROW_DBLCLICKED, EVENT_NAME_ROW_MIDDLE_CLICKED } from '../../../constants/events';\nimport { CODE_DOWN, CODE_END, CODE_ENTER, CODE_HOME, CODE_SPACE, CODE_UP } from '../../../constants/key-codes';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING } from '../../../constants/props';\nimport { arrayIncludes, from as arrayFrom } from '../../../utils/array';\nimport { attemptFocus, closest, isActiveElement, isElement } from '../../../utils/dom';\nimport { stopEvent } from '../../../utils/events';\nimport { sortKeys } from '../../../utils/object';\nimport { makeProp, pluckProps } from '../../../utils/props';\nimport { BTbody, props as BTbodyProps } from '../tbody';\nimport { filterEvent } from './filter-event';\nimport { textSelectionActive } from './text-selection-active';\nimport { tbodyRowMixin, props as tbodyRowProps } from './mixin-tbody-row'; // --- Helper methods ---\n\nvar getCellSlotName = function getCellSlotName(value) {\n return \"cell(\".concat(value || '', \")\");\n}; // --- Props ---\n\n\nexport var props = sortKeys(_objectSpread(_objectSpread(_objectSpread({}, BTbodyProps), tbodyRowProps), {}, {\n tbodyClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING)\n})); // --- Mixin ---\n// @vue/component\n\nexport var tbodyMixin = Vue.extend({\n mixins: [tbodyRowMixin],\n props: props,\n beforeDestroy: function beforeDestroy() {\n this.$_bodyFieldSlotNameCache = null;\n },\n methods: {\n // Returns all the item TR elements (excludes detail and spacer rows)\n // `this.$refs['item-rows']` is an array of item TR components/elements\n // Rows should all be `` components, but we map to TR elements\n // Also note that `this.$refs['item-rows']` may not always be in document order\n getTbodyTrs: function getTbodyTrs() {\n var $refs = this.$refs;\n var tbody = $refs.tbody ? $refs.tbody.$el || $refs.tbody : null;\n var trs = ($refs['item-rows'] || []).map(function (tr) {\n return tr.$el || tr;\n });\n return tbody && tbody.children && tbody.children.length > 0 && trs && trs.length > 0 ? arrayFrom(tbody.children).filter(function (tr) {\n return arrayIncludes(trs, tr);\n }) :\n /* istanbul ignore next */\n [];\n },\n // Returns index of a particular TBODY item TR\n // We set `true` on closest to include self in result\n getTbodyTrIndex: function getTbodyTrIndex(el) {\n /* istanbul ignore next: should not normally happen */\n if (!isElement(el)) {\n return -1;\n }\n\n var tr = el.tagName === 'TR' ? el : closest('tr', el, true);\n return tr ? this.getTbodyTrs().indexOf(tr) : -1;\n },\n // Emits a row event, with the item object, row index and original event\n emitTbodyRowEvent: function emitTbodyRowEvent(type, event) {\n if (type && this.hasListener(type) && event && event.target) {\n var rowIndex = this.getTbodyTrIndex(event.target);\n\n if (rowIndex > -1) {\n // The array of TRs correlate to the `computedItems` array\n var item = this.computedItems[rowIndex];\n this.$emit(type, item, rowIndex, event);\n }\n }\n },\n tbodyRowEvtStopped: function tbodyRowEvtStopped(event) {\n return this.stopIfBusy && this.stopIfBusy(event);\n },\n // Delegated row event handlers\n onTbodyRowKeydown: function onTbodyRowKeydown(event) {\n // Keyboard navigation and row click emulation\n var target = event.target,\n keyCode = event.keyCode;\n\n if (this.tbodyRowEvtStopped(event) || target.tagName !== 'TR' || !isActiveElement(target) || target.tabIndex !== 0) {\n // Early exit if not an item row TR\n return;\n }\n\n if (arrayIncludes([CODE_ENTER, CODE_SPACE], keyCode)) {\n // Emulated click for keyboard users, transfer to click handler\n stopEvent(event);\n this.onTBodyRowClicked(event);\n } else if (arrayIncludes([CODE_UP, CODE_DOWN, CODE_HOME, CODE_END], keyCode)) {\n // Keyboard navigation\n var rowIndex = this.getTbodyTrIndex(target);\n\n if (rowIndex > -1) {\n stopEvent(event);\n var trs = this.getTbodyTrs();\n var shift = event.shiftKey;\n\n if (keyCode === CODE_HOME || shift && keyCode === CODE_UP) {\n // Focus first row\n attemptFocus(trs[0]);\n } else if (keyCode === CODE_END || shift && keyCode === CODE_DOWN) {\n // Focus last row\n attemptFocus(trs[trs.length - 1]);\n } else if (keyCode === CODE_UP && rowIndex > 0) {\n // Focus previous row\n attemptFocus(trs[rowIndex - 1]);\n } else if (keyCode === CODE_DOWN && rowIndex < trs.length - 1) {\n // Focus next row\n attemptFocus(trs[rowIndex + 1]);\n }\n }\n }\n },\n onTBodyRowClicked: function onTBodyRowClicked(event) {\n // Don't emit event when the table is busy, the user clicked\n // on a non-disabled control or is selecting text\n if (this.tbodyRowEvtStopped(event) || filterEvent(event) || textSelectionActive(this.$el)) {\n return;\n }\n\n this.emitTbodyRowEvent(EVENT_NAME_ROW_CLICKED, event);\n },\n onTbodyRowMiddleMouseRowClicked: function onTbodyRowMiddleMouseRowClicked(event) {\n if (!this.tbodyRowEvtStopped(event) && event.which === 2) {\n this.emitTbodyRowEvent(EVENT_NAME_ROW_MIDDLE_CLICKED, event);\n }\n },\n onTbodyRowContextmenu: function onTbodyRowContextmenu(event) {\n if (!this.tbodyRowEvtStopped(event)) {\n this.emitTbodyRowEvent(EVENT_NAME_ROW_CONTEXTMENU, event);\n }\n },\n onTbodyRowDblClicked: function onTbodyRowDblClicked(event) {\n if (!this.tbodyRowEvtStopped(event) && !filterEvent(event)) {\n this.emitTbodyRowEvent(EVENT_NAME_ROW_DBLCLICKED, event);\n }\n },\n // Render the tbody element and children\n // Note:\n // Row hover handlers are handled by the tbody-row mixin\n // As mouseenter/mouseleave events do not bubble\n renderTbody: function renderTbody() {\n var _this = this;\n\n var items = this.computedItems,\n renderBusy = this.renderBusy,\n renderTopRow = this.renderTopRow,\n renderEmpty = this.renderEmpty,\n renderBottomRow = this.renderBottomRow;\n var h = this.$createElement;\n var hasRowClickHandler = this.hasListener(EVENT_NAME_ROW_CLICKED) || this.hasSelectableRowClick; // Prepare the tbody rows\n\n var $rows = []; // Add the item data rows or the busy slot\n\n var $busy = renderBusy ? renderBusy() : null;\n\n if ($busy) {\n // If table is busy and a busy slot, then return only the busy \"row\" indicator\n $rows.push($busy);\n } else {\n // Table isn't busy, or we don't have a busy slot\n // Create a slot cache for improved performance when looking up cell slot names\n // Values will be keyed by the field's `key` and will store the slot's name\n // Slots could be dynamic (i.e. `v-if`), so we must compute on each render\n // Used by tbody-row mixin render helper\n var cache = {};\n var defaultSlotName = getCellSlotName();\n defaultSlotName = this.hasNormalizedSlot(defaultSlotName) ? defaultSlotName : null;\n this.computedFields.forEach(function (field) {\n var key = field.key;\n var slotName = getCellSlotName(key);\n var lowercaseSlotName = getCellSlotName(key.toLowerCase());\n cache[key] = _this.hasNormalizedSlot(slotName) ? slotName : _this.hasNormalizedSlot(lowercaseSlotName) ?\n /* istanbul ignore next */\n lowercaseSlotName : defaultSlotName;\n }); // Created as a non-reactive property so to not trigger component updates\n // Must be a fresh object each render\n\n this.$_bodyFieldSlotNameCache = cache; // Add static top row slot (hidden in visibly stacked mode\n // as we can't control `data-label` attr)\n\n $rows.push(renderTopRow ? renderTopRow() : h()); // Render the rows\n\n items.forEach(function (item, rowIndex) {\n // Render the individual item row (rows if details slot)\n $rows.push(_this.renderTbodyRow(item, rowIndex));\n }); // Empty items / empty filtered row slot (only shows if `items.length < 1`)\n\n $rows.push(renderEmpty ? renderEmpty() : h()); // Static bottom row slot (hidden in visibly stacked mode\n // as we can't control `data-label` attr)\n\n $rows.push(renderBottomRow ? renderBottomRow() : h());\n } // Note: these events will only emit if a listener is registered\n\n\n var handlers = {\n auxclick: this.onTbodyRowMiddleMouseRowClicked,\n // TODO:\n // Perhaps we do want to automatically prevent the\n // default context menu from showing if there is a\n // `row-contextmenu` listener registered\n contextmenu: this.onTbodyRowContextmenu,\n // The following event(s) is not considered A11Y friendly\n dblclick: this.onTbodyRowDblClicked // Hover events (`mouseenter`/`mouseleave`) are handled by `tbody-row` mixin\n\n }; // Add in click/keydown listeners if needed\n\n if (hasRowClickHandler) {\n handlers.click = this.onTBodyRowClicked;\n handlers.keydown = this.onTbodyRowKeydown;\n } // Assemble rows into the tbody\n\n\n var $tbody = h(BTbody, {\n class: this.tbodyClass || null,\n props: pluckProps(BTbodyProps, this.$props),\n // BTbody transfers all native event listeners to the root element\n // TODO: Only set the handlers if the table is not busy\n on: handlers,\n ref: 'tbody'\n }, $rows); // Return the assembled tbody\n\n return $tbody;\n }\n }\n});","import { Vue } from '../../../vue';\nimport { PROP_TYPE_STRING } from '../../../constants/props';\nimport { SLOT_NAME_TABLE_CAPTION } from '../../../constants/slots';\nimport { htmlOrText } from '../../../utils/html';\nimport { makeProp } from '../../../utils/props'; // --- Props ---\n\nexport var props = {\n caption: makeProp(PROP_TYPE_STRING),\n captionHtml: makeProp(PROP_TYPE_STRING) // `caption-top` is part of table-render mixin (styling)\n // captionTop: makeProp(PROP_TYPE_BOOLEAN, false)\n\n}; // --- Mixin ---\n// @vue/component\n\nexport var captionMixin = Vue.extend({\n props: props,\n computed: {\n captionId: function captionId() {\n // Even though `this.safeId` looks like a method, it is a computed prop\n // that returns a new function if the underlying ID changes\n return this.isStacked ? this.safeId('_caption_') : null;\n }\n },\n methods: {\n renderCaption: function renderCaption() {\n var caption = this.caption,\n captionHtml = this.captionHtml;\n var h = this.$createElement;\n var $caption = h();\n var hasCaptionSlot = this.hasNormalizedSlot(SLOT_NAME_TABLE_CAPTION);\n\n if (hasCaptionSlot || caption || captionHtml) {\n $caption = h('caption', {\n attrs: {\n id: this.captionId\n },\n domProps: hasCaptionSlot ? {} : htmlOrText(captionHtml, caption),\n key: 'caption'\n }, this.normalizeSlot(SLOT_NAME_TABLE_CAPTION));\n }\n\n return $caption;\n }\n }\n});","import { identity } from '../../../utils/identity';\nimport { isArray, isFunction, isObject, isString } from '../../../utils/inspect';\nimport { clone, keys } from '../../../utils/object';\nimport { startCase } from '../../../utils/string';\nimport { IGNORED_FIELD_KEYS } from './constants'; // Private function to massage field entry into common object format\n\nvar processField = function processField(key, value) {\n var field = null;\n\n if (isString(value)) {\n // Label shortcut\n field = {\n key: key,\n label: value\n };\n } else if (isFunction(value)) {\n // Formatter shortcut\n field = {\n key: key,\n formatter: value\n };\n } else if (isObject(value)) {\n field = clone(value);\n field.key = field.key || key;\n } else if (value !== false) {\n // Fallback to just key\n\n /* istanbul ignore next */\n field = {\n key: key\n };\n }\n\n return field;\n}; // We normalize fields into an array of objects\n// [ { key:..., label:..., ...}, {...}, ..., {..}]\n\n\nexport var normalizeFields = function normalizeFields(origFields, items) {\n var fields = [];\n\n if (isArray(origFields)) {\n // Normalize array Form\n origFields.filter(identity).forEach(function (f) {\n if (isString(f)) {\n fields.push({\n key: f,\n label: startCase(f)\n });\n } else if (isObject(f) && f.key && isString(f.key)) {\n // Full object definition. We use assign so that we don't mutate the original\n fields.push(clone(f));\n } else if (isObject(f) && keys(f).length === 1) {\n // Shortcut object (i.e. { 'foo_bar': 'This is Foo Bar' }\n var key = keys(f)[0];\n var field = processField(key, f[key]);\n\n if (field) {\n fields.push(field);\n }\n }\n });\n } // If no field provided, take a sample from first record (if exits)\n\n\n if (fields.length === 0 && isArray(items) && items.length > 0) {\n var sample = items[0];\n keys(sample).forEach(function (k) {\n if (!IGNORED_FIELD_KEYS[k]) {\n fields.push({\n key: k,\n label: startCase(k)\n });\n }\n });\n } // Ensure we have a unique array of fields and that they have String labels\n\n\n var memo = {};\n return fields.filter(function (f) {\n if (!memo[f.key]) {\n memo[f.key] = true;\n f.label = isString(f.label) ? f.label : startCase(f.key);\n return true;\n }\n\n return false;\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 { EVENT_NAME_CONTEXT_CHANGED } from '../../../constants/events';\nimport { PROP_TYPE_ARRAY, PROP_TYPE_STRING } from '../../../constants/props';\nimport { isArray, isFunction, isString } 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 { clone, sortKeys } from '../../../utils/object';\nimport { makeProp } from '../../../utils/props';\nimport { normalizeFields } from './normalize-fields'; // --- Constants ---\n\nvar _makeModelMixin = makeModelMixin('value', {\n type: PROP_TYPE_ARRAY,\n defaultValue: []\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 }; // --- Props ---\n\nexport var props = sortKeys(_objectSpread(_objectSpread({}, modelProps), {}, _defineProperty({\n fields: makeProp(PROP_TYPE_ARRAY, null),\n // Provider mixin adds in `Function` type\n items: makeProp(PROP_TYPE_ARRAY, []),\n // Primary key for record\n // If provided the value in each row must be unique!\n primaryKey: makeProp(PROP_TYPE_STRING)\n}, MODEL_PROP_NAME, makeProp(PROP_TYPE_ARRAY, [])))); // --- Mixin ---\n// @vue/component\n\nexport var itemsMixin = Vue.extend({\n mixins: [modelMixin],\n props: props,\n data: function data() {\n var items = this.items;\n return {\n // Our local copy of the items\n // Must be an array\n localItems: isArray(items) ? items.slice() : []\n };\n },\n computed: {\n computedFields: function computedFields() {\n // We normalize fields into an array of objects\n // `[ { key:..., label:..., ...}, {...}, ..., {..}]`\n return normalizeFields(this.fields, this.localItems);\n },\n computedFieldsObj: function computedFieldsObj() {\n // Fields as a simple lookup hash object\n // Mainly for formatter lookup and use in `scopedSlots` for convenience\n // If the field has a formatter, it normalizes formatter to a\n // function ref or `undefined` if no formatter\n var $parent = this.$parent;\n return this.computedFields.reduce(function (obj, f) {\n // We use object spread here so we don't mutate the original field object\n obj[f.key] = clone(f);\n\n if (f.formatter) {\n // Normalize formatter to a function ref or `undefined`\n var formatter = f.formatter;\n\n if (isString(formatter) && isFunction($parent[formatter])) {\n formatter = $parent[formatter];\n } else if (!isFunction(formatter)) {\n /* istanbul ignore next */\n formatter = undefined;\n } // Return formatter function or `undefined` if none\n\n\n obj[f.key].formatter = formatter;\n }\n\n return obj;\n }, {});\n },\n computedItems: function computedItems() {\n // Fallback if various mixins not provided\n return (this.paginatedItems || this.sortedItems || this.filteredItems || this.localItems ||\n /* istanbul ignore next */\n []).slice();\n },\n context: function context() {\n // Current state of sorting, filtering and pagination props/values\n return {\n filter: this.localFilter,\n sortBy: this.localSortBy,\n sortDesc: this.localSortDesc,\n perPage: mathMax(toInteger(this.perPage, 0), 0),\n currentPage: mathMax(toInteger(this.currentPage, 0), 1),\n apiUrl: this.apiUrl\n };\n }\n },\n watch: {\n items: function items(newValue) {\n // Set `localItems`/`filteredItems` to a copy of the provided array\n this.localItems = isArray(newValue) ? newValue.slice() : [];\n },\n // Watch for changes on `computedItems` and update the `v-model`\n computedItems: function computedItems(newValue, oldValue) {\n if (!looseEqual(newValue, oldValue)) {\n this.$emit(MODEL_EVENT_NAME, newValue);\n }\n },\n // Watch for context changes\n context: function context(newValue, oldValue) {\n // Emit context information for external paging/filtering/sorting handling\n if (!looseEqual(newValue, oldValue)) {\n this.$emit(EVENT_NAME_CONTEXT_CHANGED, newValue);\n }\n }\n },\n mounted: function mounted() {\n // Initially update the `v-model` of displayed items\n this.$emit(MODEL_EVENT_NAME, this.computedItems);\n },\n methods: {\n // Method to get the formatter method for a given field key\n getFieldFormatter: function getFieldFormatter(key) {\n var field = this.computedFieldsObj[key]; // `this.computedFieldsObj` has pre-normalized the formatter to a\n // function ref if present, otherwise `undefined`\n\n return field ? field.formatter : undefined;\n }\n }\n});","import { Vue } from '../../vue';\nimport { NAME_TH } from '../../constants/components';\nimport { makePropsConfigurable } from '../../utils/props';\nimport { BTd, props as BTdProps } from './td'; // --- Props ---\n\nexport var props = makePropsConfigurable(BTdProps, NAME_TH); // --- Main component ---\n// TODO:\n// In Bootstrap v5, we won't need \"sniffing\" as table element variants properly inherit\n// to the child elements, so this can be converted to a functional component\n// @vue/component\n\nexport var BTh = /*#__PURE__*/Vue.extend({\n name: NAME_TH,\n extends: BTd,\n props: props,\n computed: {\n tag: function tag() {\n return 'th';\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\n// Constants used by table helpers\nexport var FIELD_KEY_CELL_VARIANT = '_cellVariants';\nexport var FIELD_KEY_ROW_VARIANT = '_rowVariant';\nexport var FIELD_KEY_SHOW_DETAILS = '_showDetails'; // Object of item keys that should be ignored for headers and\n// stringification and filter events\n\nexport var IGNORED_FIELD_KEYS = [FIELD_KEY_CELL_VARIANT, FIELD_KEY_ROW_VARIANT, FIELD_KEY_SHOW_DETAILS].reduce(function (result, key) {\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, key, true));\n}, {}); // Filter CSS selector for click/dblclick/etc. events\n// If any of these selectors match the clicked element, we ignore the event\n\nexport var EVENT_FILTER = ['a', 'a *', // Include content inside links\n'button', 'button *', // Include content inside buttons\n'input:not(.disabled):not([disabled])', 'select:not(.disabled):not([disabled])', 'textarea:not(.disabled):not([disabled])', '[role=\"link\"]', '[role=\"link\"] *', '[role=\"button\"]', '[role=\"button\"] *', '[tabindex]:not(.disabled):not([disabled])'].join(',');","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_MEDIA_ASIDE } 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 right: makeProp(PROP_TYPE_BOOLEAN, false),\n tag: makeProp(PROP_TYPE_STRING, 'div'),\n verticalAlign: makeProp(PROP_TYPE_STRING, 'top')\n}, NAME_MEDIA_ASIDE); // --- Main component ---\n// @vue/component\n\nexport var BMediaAside = /*#__PURE__*/Vue.extend({\n name: NAME_MEDIA_ASIDE,\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 verticalAlign = props.verticalAlign;\n var align = verticalAlign === 'top' ? 'start' : verticalAlign === 'bottom' ? 'end' :\n /* istanbul ignore next */\n verticalAlign;\n return h(props.tag, mergeData(data, {\n staticClass: 'media-aside',\n class: _defineProperty({\n 'media-aside-right': props.right\n }, \"align-self-\".concat(align), align)\n }), children);\n }\n});","import { Vue, mergeData } from '../../vue';\nimport { NAME_MEDIA_BODY } from '../../constants/components';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n tag: makeProp(PROP_TYPE_STRING, 'div')\n}, NAME_MEDIA_BODY); // --- Main component ---\n// @vue/component\n\nexport var BMediaBody = /*#__PURE__*/Vue.extend({\n name: NAME_MEDIA_BODY,\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(props.tag, mergeData(data, {\n staticClass: 'media-body'\n }), children);\n }\n});","import { toString } from './string';\n\nvar escapeChar = function escapeChar(value) {\n return '\\\\' + value;\n}; // The `cssEscape()` util is based on this `CSS.escape()` polyfill:\n// https://github.com/mathiasbynens/CSS.escape\n\n\nexport var cssEscape = function cssEscape(value) {\n value = toString(value);\n var length = value.length;\n var firstCharCode = value.charCodeAt(0);\n return value.split('').reduce(function (result, char, index) {\n var charCode = value.charCodeAt(index); // If the character is NULL (U+0000), use (U+FFFD) as replacement\n\n if (charCode === 0x0000) {\n return result + \"\\uFFFD\";\n } // If the character ...\n\n\n if ( // ... is U+007F OR\n charCode === 0x007f || // ... is in the range [\\1-\\1F] (U+0001 to U+001F) OR ...\n charCode >= 0x0001 && charCode <= 0x001f || // ... is the first character and is in the range [0-9] (U+0030 to U+0039) OR ...\n index === 0 && charCode >= 0x0030 && charCode <= 0x0039 || // ... is the second character and is in the range [0-9] (U+0030 to U+0039)\n // and the first character is a `-` (U+002D) ...\n index === 1 && charCode >= 0x0030 && charCode <= 0x0039 && firstCharCode === 0x002d) {\n // ... https://drafts.csswg.org/cssom/#escape-a-character-as-code-point\n return result + escapeChar(\"\".concat(charCode.toString(16), \" \"));\n } // If the character ...\n\n\n if ( // ... is the first character AND ...\n index === 0 && // ... is a `-` (U+002D) AND ...\n charCode === 0x002d && // ... there is no second character ...\n length === 1) {\n // ... use the escaped character\n return result + escapeChar(char);\n } // If the character ...\n\n\n if ( // ... is greater than or equal to U+0080 OR ...\n charCode >= 0x0080 || // ... is `-` (U+002D) OR ...\n charCode === 0x002d || // ... is `_` (U+005F) OR ...\n charCode === 0x005f || // ... is in the range [0-9] (U+0030 to U+0039) OR ...\n charCode >= 0x0030 && charCode <= 0x0039 || // ... is in the range [A-Z] (U+0041 to U+005A) OR ...\n charCode >= 0x0041 && charCode <= 0x005a || // ... is in the range [a-z] (U+0061 to U+007A) ...\n charCode >= 0x0061 && charCode <= 0x007a) {\n // ... use the character itself\n return result + char;\n } // Otherwise use the escaped character\n // See: https://drafts.csswg.org/cssom/#escape-a-character\n\n\n return result + escapeChar(char);\n }, '');\n};","import { Vue, mergeData } from '../../vue';\nimport { NAME_FORM_ROW } from '../../constants/components';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n tag: makeProp(PROP_TYPE_STRING, 'div')\n}, NAME_FORM_ROW); // --- Main component ---\n// @vue/component\n\nexport var BFormRow = /*#__PURE__*/Vue.extend({\n name: NAME_FORM_ROW,\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(props.tag, mergeData(data, {\n staticClass: 'form-row'\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_FORM_TEXT } 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 tag: makeProp(PROP_TYPE_STRING, 'small'),\n textVariant: makeProp(PROP_TYPE_STRING, 'muted')\n}, NAME_FORM_TEXT); // --- Main component ---\n// @vue/component\n\nexport var BFormText = /*#__PURE__*/Vue.extend({\n name: NAME_FORM_TEXT,\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(props.tag, mergeData(data, {\n class: _defineProperty({\n 'form-text': !props.inline\n }, \"text-\".concat(props.textVariant), props.textVariant),\n attrs: {\n id: props.id\n }\n }), children);\n }\n});","import { Vue, mergeData } from '../../vue';\nimport { NAME_FORM_INVALID_FEEDBACK } 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 ariaLive: makeProp(PROP_TYPE_STRING),\n forceShow: makeProp(PROP_TYPE_BOOLEAN, false),\n id: makeProp(PROP_TYPE_STRING),\n role: makeProp(PROP_TYPE_STRING),\n // Tri-state prop: `true`, `false`, or `null`\n state: makeProp(PROP_TYPE_BOOLEAN, null),\n tag: makeProp(PROP_TYPE_STRING, 'div'),\n tooltip: makeProp(PROP_TYPE_BOOLEAN, false)\n}, NAME_FORM_INVALID_FEEDBACK); // --- Main component ---\n// @vue/component\n\nexport var BFormInvalidFeedback = /*#__PURE__*/Vue.extend({\n name: NAME_FORM_INVALID_FEEDBACK,\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 tooltip = props.tooltip,\n ariaLive = props.ariaLive;\n var show = props.forceShow === true || props.state === false;\n return h(props.tag, mergeData(data, {\n class: {\n 'd-block': show,\n 'invalid-feedback': !tooltip,\n 'invalid-tooltip': tooltip\n },\n attrs: {\n id: props.id || null,\n role: props.role || null,\n 'aria-live': ariaLive || null,\n 'aria-atomic': ariaLive ? 'true' : null\n }\n }), children);\n }\n});","import { Vue, mergeData } from '../../vue';\nimport { NAME_FORM_VALID_FEEDBACK } 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 ariaLive: makeProp(PROP_TYPE_STRING),\n forceShow: makeProp(PROP_TYPE_BOOLEAN, false),\n id: makeProp(PROP_TYPE_STRING),\n role: makeProp(PROP_TYPE_STRING),\n // Tri-state prop: `true`, `false`, or `null`\n state: makeProp(PROP_TYPE_BOOLEAN, null),\n tag: makeProp(PROP_TYPE_STRING, 'div'),\n tooltip: makeProp(PROP_TYPE_BOOLEAN, false)\n}, NAME_FORM_VALID_FEEDBACK); // --- Main component ---\n// @vue/component\n\nexport var BFormValidFeedback = /*#__PURE__*/Vue.extend({\n name: NAME_FORM_VALID_FEEDBACK,\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 tooltip = props.tooltip,\n ariaLive = props.ariaLive;\n var show = props.forceShow === true || props.state === true;\n return h(props.tag, mergeData(data, {\n class: {\n 'd-block': show,\n 'valid-feedback': !tooltip,\n 'valid-tooltip': tooltip\n },\n attrs: {\n id: props.id || null,\n role: props.role || null,\n 'aria-live': ariaLive || null,\n 'aria-atomic': ariaLive ? 'true' : null\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 { NAME_FORM_GROUP } from '../../constants/components';\nimport { IS_BROWSER } from '../../constants/env';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_BOOLEAN, PROP_TYPE_BOOLEAN_NUMBER_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { RX_SPACE_SPLIT } from '../../constants/regex';\nimport { SLOT_NAME_DEFAULT, SLOT_NAME_DESCRIPTION, SLOT_NAME_INVALID_FEEDBACK, SLOT_NAME_LABEL, SLOT_NAME_VALID_FEEDBACK } from '../../constants/slots';\nimport { arrayIncludes } from '../../utils/array';\nimport { getBreakpointsUpCached } from '../../utils/config';\nimport { cssEscape } from '../../utils/css-escape';\nimport { select, selectAll, isVisible, setAttr, removeAttr, getAttr, attemptFocus } from '../../utils/dom';\nimport { identity } from '../../utils/identity';\nimport { isBoolean } from '../../utils/inspect';\nimport { toInteger } from '../../utils/number';\nimport { create, keys, sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable, suffixPropName } from '../../utils/props';\nimport { formStateMixin, props as formStateProps } from '../../mixins/form-state';\nimport { idMixin, props as idProps } from '../../mixins/id';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { BCol } from '../layout/col';\nimport { BFormRow } from '../layout/form-row';\nimport { BFormText } from '../form/form-text';\nimport { BFormInvalidFeedback } from '../form/form-invalid-feedback';\nimport { BFormValidFeedback } from '../form/form-valid-feedback'; // --- Constants ---\n\nvar INPUTS = ['input', 'select', 'textarea']; // Selector for finding first input in the form group\n\nvar INPUT_SELECTOR = INPUTS.map(function (v) {\n return \"\".concat(v, \":not([disabled])\");\n}).join(); // A list of interactive elements (tag names) inside ``'s legend\n\nvar LEGEND_INTERACTIVE_ELEMENTS = [].concat(INPUTS, ['a', 'button', 'label']); // --- Props ---\n// Prop generator for lazy generation of props\n\nexport var generateProps = function generateProps() {\n return makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, idProps), formStateProps), getBreakpointsUpCached().reduce(function (props, breakpoint) {\n // i.e. 'content-cols', 'content-cols-sm', 'content-cols-md', ...\n props[suffixPropName(breakpoint, 'contentCols')] = makeProp(PROP_TYPE_BOOLEAN_NUMBER_STRING); // i.e. 'label-align', 'label-align-sm', 'label-align-md', ...\n\n props[suffixPropName(breakpoint, 'labelAlign')] = makeProp(PROP_TYPE_STRING); // i.e. 'label-cols', 'label-cols-sm', 'label-cols-md', ...\n\n props[suffixPropName(breakpoint, 'labelCols')] = makeProp(PROP_TYPE_BOOLEAN_NUMBER_STRING);\n return props;\n }, create(null))), {}, {\n description: makeProp(PROP_TYPE_STRING),\n disabled: makeProp(PROP_TYPE_BOOLEAN, false),\n feedbackAriaLive: makeProp(PROP_TYPE_STRING, 'assertive'),\n invalidFeedback: makeProp(PROP_TYPE_STRING),\n label: makeProp(PROP_TYPE_STRING),\n labelClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n labelFor: makeProp(PROP_TYPE_STRING),\n labelSize: makeProp(PROP_TYPE_STRING),\n labelSrOnly: makeProp(PROP_TYPE_BOOLEAN, false),\n tooltip: makeProp(PROP_TYPE_BOOLEAN, false),\n validFeedback: makeProp(PROP_TYPE_STRING),\n validated: makeProp(PROP_TYPE_BOOLEAN, false)\n })), NAME_FORM_GROUP);\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 BFormGroup = {\n name: NAME_FORM_GROUP,\n mixins: [idMixin, formStateMixin, normalizeSlotMixin],\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; // eslint-disable-next-line no-return-assign\n\n return this.props = generateProps();\n },\n\n data: function data() {\n return {\n ariaDescribedby: null\n };\n },\n computed: {\n contentColProps: function contentColProps() {\n return this.getColProps(this.$props, 'content');\n },\n labelAlignClasses: function labelAlignClasses() {\n return this.getAlignClasses(this.$props, 'label');\n },\n labelColProps: function labelColProps() {\n return this.getColProps(this.$props, 'label');\n },\n isHorizontal: function isHorizontal() {\n // Determine if the form group will be rendered horizontal\n // based on the existence of 'content-col' or 'label-col' props\n return keys(this.contentColProps).length > 0 || keys(this.labelColProps).length > 0;\n }\n },\n watch: {\n ariaDescribedby: function ariaDescribedby(newValue, oldValue) {\n if (newValue !== oldValue) {\n this.updateAriaDescribedby(newValue, oldValue);\n }\n }\n },\n mounted: function mounted() {\n var _this = this;\n\n this.$nextTick(function () {\n // Set `aria-describedby` on the input specified by `labelFor`\n // We do this in a `$nextTick()` to ensure the children have finished rendering\n _this.updateAriaDescribedby(_this.ariaDescribedby);\n });\n },\n methods: {\n getAlignClasses: function getAlignClasses(props, prefix) {\n return getBreakpointsUpCached().reduce(function (result, breakpoint) {\n var propValue = props[suffixPropName(breakpoint, \"\".concat(prefix, \"Align\"))] || null;\n\n if (propValue) {\n result.push(['text', breakpoint, propValue].filter(identity).join('-'));\n }\n\n return result;\n }, []);\n },\n getColProps: function getColProps(props, prefix) {\n return getBreakpointsUpCached().reduce(function (result, breakpoint) {\n var propValue = props[suffixPropName(breakpoint, \"\".concat(prefix, \"Cols\"))]; // Handle case where the prop's value is an empty string,\n // which represents `true`\n\n propValue = propValue === '' ? true : propValue || false;\n\n if (!isBoolean(propValue) && propValue !== 'auto') {\n // Convert to column size to number\n propValue = toInteger(propValue, 0); // Ensure column size is greater than `0`\n\n propValue = propValue > 0 ? propValue : false;\n } // Add the prop to the list of props to give to ``\n // If breakpoint is '' (`${prefix}Cols` is `true`), then we use\n // the 'col' prop to make equal width at 'xs'\n\n\n if (propValue) {\n result[breakpoint || (isBoolean(propValue) ? 'col' : 'cols')] = propValue;\n }\n\n return result;\n }, {});\n },\n // Sets the `aria-describedby` attribute on the input if `labelFor` is set\n // Optionally accepts a string of IDs to remove as the second parameter\n // Preserves any `aria-describedby` value(s) user may have on input\n updateAriaDescribedby: function updateAriaDescribedby(newValue, oldValue) {\n var labelFor = this.labelFor;\n\n if (IS_BROWSER && labelFor) {\n // We need to escape `labelFor` since it can be user-provided\n var $input = select(\"#\".concat(cssEscape(labelFor)), this.$refs.content);\n\n if ($input) {\n var attr = 'aria-describedby';\n var newIds = (newValue || '').split(RX_SPACE_SPLIT);\n var oldIds = (oldValue || '').split(RX_SPACE_SPLIT); // Update ID list, preserving any original IDs\n // and ensuring the ID's are unique\n\n var ids = (getAttr($input, attr) || '').split(RX_SPACE_SPLIT).filter(function (id) {\n return !arrayIncludes(oldIds, id);\n }).concat(newIds).filter(function (id, index, ids) {\n return ids.indexOf(id) === index;\n }).filter(identity).join(' ').trim();\n\n if (ids) {\n setAttr($input, attr, ids);\n } else {\n removeAttr($input, attr);\n }\n }\n }\n },\n onLegendClick: function onLegendClick(event) {\n // Don't do anything if `labelFor` is set\n\n /* istanbul ignore next: clicking a label will focus the input, so no need to test */\n if (this.labelFor) {\n return;\n }\n\n var target = event.target;\n var tagName = target ? target.tagName : ''; // If clicked an interactive element inside legend,\n // we just let the default happen\n\n /* istanbul ignore next */\n\n if (LEGEND_INTERACTIVE_ELEMENTS.indexOf(tagName) !== -1) {\n return;\n } // If only a single input, focus it, emulating label behaviour\n\n\n var inputs = selectAll(INPUT_SELECTOR, this.$refs.content).filter(isVisible);\n\n if (inputs.length === 1) {\n attemptFocus(inputs[0]);\n }\n }\n },\n render: function render(h) {\n var state = this.computedState,\n feedbackAriaLive = this.feedbackAriaLive,\n isHorizontal = this.isHorizontal,\n labelFor = this.labelFor,\n normalizeSlot = this.normalizeSlot,\n safeId = this.safeId,\n tooltip = this.tooltip;\n var id = safeId();\n var isFieldset = !labelFor;\n var $label = h();\n var labelContent = normalizeSlot(SLOT_NAME_LABEL) || this.label;\n var labelId = labelContent ? safeId('_BV_label_') : null;\n\n if (labelContent || isHorizontal) {\n var labelSize = this.labelSize,\n labelColProps = this.labelColProps;\n var labelTag = isFieldset ? 'legend' : 'label';\n\n if (this.labelSrOnly) {\n if (labelContent) {\n $label = h(labelTag, {\n class: 'sr-only',\n attrs: {\n id: labelId,\n for: labelFor || null\n }\n }, [labelContent]);\n }\n\n $label = h(isHorizontal ? BCol : 'div', {\n props: isHorizontal ? labelColProps : {}\n }, [$label]);\n } else {\n $label = h(isHorizontal ? BCol : labelTag, {\n on: isFieldset ? {\n click: this.onLegendClick\n } : {},\n props: isHorizontal ? _objectSpread(_objectSpread({}, labelColProps), {}, {\n tag: labelTag\n }) : {},\n attrs: {\n id: labelId,\n for: labelFor || null,\n // We add a `tabindex` to legend so that screen readers\n // will properly read the `aria-labelledby` in IE\n tabindex: isFieldset ? '-1' : null\n },\n class: [// Hide the focus ring on the legend\n isFieldset ? 'bv-no-focus-ring' : '', // When horizontal or if a legend is rendered, add 'col-form-label' class\n // for correct sizing as Bootstrap has inconsistent font styling for\n // legend in non-horizontal form groups\n // See: https://github.com/twbs/bootstrap/issues/27805\n isHorizontal || isFieldset ? 'col-form-label' : '', // Emulate label padding top of `0` on legend when not horizontal\n !isHorizontal && isFieldset ? 'pt-0' : '', // If not horizontal and not a legend, we add 'd-block' class to label\n // so that label-align works\n !isHorizontal && !isFieldset ? 'd-block' : '', labelSize ? \"col-form-label-\".concat(labelSize) : '', this.labelAlignClasses, this.labelClass]\n }, [labelContent]);\n }\n }\n\n var $invalidFeedback = h();\n var invalidFeedbackContent = normalizeSlot(SLOT_NAME_INVALID_FEEDBACK) || this.invalidFeedback;\n var invalidFeedbackId = invalidFeedbackContent ? safeId('_BV_feedback_invalid_') : null;\n\n if (invalidFeedbackContent) {\n $invalidFeedback = h(BFormInvalidFeedback, {\n props: {\n ariaLive: feedbackAriaLive,\n id: invalidFeedbackId,\n role: feedbackAriaLive ? 'alert' : null,\n // If state is explicitly `false`, always show the feedback\n state: state,\n tooltip: tooltip\n },\n attrs: {\n tabindex: invalidFeedbackContent ? '-1' : null\n }\n }, [invalidFeedbackContent]);\n }\n\n var $validFeedback = h();\n var validFeedbackContent = normalizeSlot(SLOT_NAME_VALID_FEEDBACK) || this.validFeedback;\n var validFeedbackId = validFeedbackContent ? safeId('_BV_feedback_valid_') : null;\n\n if (validFeedbackContent) {\n $validFeedback = h(BFormValidFeedback, {\n props: {\n ariaLive: feedbackAriaLive,\n id: validFeedbackId,\n role: feedbackAriaLive ? 'alert' : null,\n // If state is explicitly `true`, always show the feedback\n state: state,\n tooltip: tooltip\n },\n attrs: {\n tabindex: validFeedbackContent ? '-1' : null\n }\n }, [validFeedbackContent]);\n }\n\n var $description = h();\n var descriptionContent = normalizeSlot(SLOT_NAME_DESCRIPTION) || this.description;\n var descriptionId = descriptionContent ? safeId('_BV_description_') : null;\n\n if (descriptionContent) {\n $description = h(BFormText, {\n attrs: {\n id: descriptionId,\n tabindex: '-1'\n }\n }, [descriptionContent]);\n } // Update `ariaDescribedby`\n // Screen readers will read out any content linked to by `aria-describedby`\n // even if the content is hidden with `display: none;`, hence we only include\n // feedback IDs if the form group's state is explicitly valid or invalid\n\n\n var ariaDescribedby = this.ariaDescribedby = [descriptionId, state === false ? invalidFeedbackId : null, state === true ? validFeedbackId : null].filter(identity).join(' ') || null;\n var $content = h(isHorizontal ? BCol : 'div', {\n props: isHorizontal ? this.contentColProps : {},\n ref: 'content'\n }, [normalizeSlot(SLOT_NAME_DEFAULT, {\n ariaDescribedby: ariaDescribedby,\n descriptionId: descriptionId,\n id: id,\n labelId: labelId\n }) || h(), $invalidFeedback, $validFeedback, $description]); // Return it wrapped in a form group\n // Note: Fieldsets do not support adding `row` or `form-row` directly\n // to them due to browser specific render issues, so we move the `form-row`\n // to an inner wrapper div when horizontal and using a fieldset\n\n return h(isFieldset ? 'fieldset' : isHorizontal ? BFormRow : 'div', {\n staticClass: 'form-group',\n class: [{\n 'was-validated': this.validated\n }, this.stateClass],\n attrs: {\n id: id,\n disabled: isFieldset ? this.disabled : null,\n role: isFieldset ? null : 'group',\n 'aria-invalid': this.computedAriaInvalid,\n // Only apply `aria-labelledby` if we are a horizontal fieldset\n // as the legend is no longer a direct child of fieldset\n 'aria-labelledby': isFieldset && isHorizontal ? labelId : null\n }\n }, isHorizontal && isFieldset ? [h(BFormRow, [$label, $content])] : [$label, $content]);\n }\n};","import { Vue } from '../../../vue';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../../constants/props';\nimport { SLOT_NAME_CUSTOM_FOOT } from '../../../constants/slots';\nimport { makeProp } from '../../../utils/props';\nimport { BTfoot } from '../tfoot'; // --- Props ---\n\nexport var props = {\n footClone: makeProp(PROP_TYPE_BOOLEAN, false),\n // Any Bootstrap theme variant (or custom)\n // Falls back to `headRowVariant`\n footRowVariant: makeProp(PROP_TYPE_STRING),\n // 'dark', 'light', or `null` (or custom)\n footVariant: makeProp(PROP_TYPE_STRING),\n tfootClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n tfootTrClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING)\n}; // --- Mixin ---\n// @vue/component\n\nexport var tfootMixin = Vue.extend({\n props: props,\n methods: {\n renderTFootCustom: function renderTFootCustom() {\n var h = this.$createElement;\n\n if (this.hasNormalizedSlot(SLOT_NAME_CUSTOM_FOOT)) {\n return h(BTfoot, {\n class: this.tfootClass || null,\n props: {\n footVariant: this.footVariant || this.headVariant || null\n },\n key: 'bv-tfoot-custom'\n }, this.normalizeSlot(SLOT_NAME_CUSTOM_FOOT, {\n items: this.computedItems.slice(),\n fields: this.computedFields.slice(),\n columns: this.computedFields.length\n }));\n }\n\n return h();\n },\n renderTfoot: function renderTfoot() {\n // Passing true to renderThead will make it render a tfoot\n return this.footClone ? this.renderThead(true) : this.renderTFootCustom();\n }\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};","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_FORM_SPINBUTTON } from '../../constants/components';\nimport { EVENT_NAME_CHANGE } from '../../constants/events';\nimport { PROP_TYPE_ARRAY_STRING, PROP_TYPE_BOOLEAN, PROP_TYPE_BOOLEAN_NUMBER, PROP_TYPE_FUNCTION, PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { CODE_DOWN, CODE_END, CODE_HOME, CODE_PAGEUP, CODE_UP, CODE_PAGEDOWN } from '../../constants/key-codes';\nimport { SLOT_NAME_DECREMENT, SLOT_NAME_INCREMENT } from '../../constants/slots';\nimport { arrayIncludes, concat } from '../../utils/array';\nimport { attemptBlur, attemptFocus } from '../../utils/dom';\nimport { eventOnOff, stopEvent } from '../../utils/events';\nimport { identity } from '../../utils/identity';\nimport { isNull } from '../../utils/inspect';\nimport { isLocaleRTL } from '../../utils/locale';\nimport { mathFloor, mathMax, mathPow, mathRound } from '../../utils/math';\nimport { makeModelMixin } from '../../utils/model';\nimport { toFloat, toInteger } from '../../utils/number';\nimport { omit, sortKeys } from '../../utils/object';\nimport { hasPropFunction, makeProp, makePropsConfigurable } from '../../utils/props';\nimport { toString } from '../../utils/string';\nimport { attrsMixin } from '../../mixins/attrs';\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 { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { props as formControlProps } from '../../mixins/form-control';\nimport { BIconPlus, BIconDash } from '../../icons/icons'; // --- Constants ---\n\nvar _makeModelMixin = makeModelMixin('value', {\n // Should this really be String, to match native number inputs?\n type: PROP_TYPE_BOOLEAN_NUMBER\n}),\n modelMixin = _makeModelMixin.mixin,\n modelProps = _makeModelMixin.props,\n MODEL_PROP_NAME = _makeModelMixin.prop,\n MODEL_EVENT_NAME = _makeModelMixin.event; // Default for spin button range and step\n\n\nvar DEFAULT_MIN = 1;\nvar DEFAULT_MAX = 100;\nvar DEFAULT_STEP = 1; // Delay before auto-repeat in ms\n\nvar DEFAULT_REPEAT_DELAY = 500; // Repeat interval in ms\n\nvar DEFAULT_REPEAT_INTERVAL = 100; // Repeat rate increased after number of repeats\n\nvar DEFAULT_REPEAT_THRESHOLD = 10; // Repeat speed multiplier (step multiplier, must be an integer)\n\nvar DEFAULT_REPEAT_MULTIPLIER = 4;\nvar KEY_CODES = [CODE_UP, CODE_DOWN, CODE_HOME, CODE_END, CODE_PAGEUP, CODE_PAGEDOWN]; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, idProps), modelProps), omit(formControlProps, ['required', 'autofocus'])), formSizeProps), formStateProps), {}, {\n ariaControls: makeProp(PROP_TYPE_STRING),\n ariaLabel: makeProp(PROP_TYPE_STRING),\n formatterFn: makeProp(PROP_TYPE_FUNCTION),\n inline: makeProp(PROP_TYPE_BOOLEAN, false),\n labelDecrement: makeProp(PROP_TYPE_STRING, 'Decrement'),\n labelIncrement: makeProp(PROP_TYPE_STRING, 'Increment'),\n locale: makeProp(PROP_TYPE_ARRAY_STRING),\n max: makeProp(PROP_TYPE_NUMBER_STRING, DEFAULT_MAX),\n min: makeProp(PROP_TYPE_NUMBER_STRING, DEFAULT_MIN),\n placeholder: makeProp(PROP_TYPE_STRING),\n readonly: makeProp(PROP_TYPE_BOOLEAN, false),\n repeatDelay: makeProp(PROP_TYPE_NUMBER_STRING, DEFAULT_REPEAT_DELAY),\n repeatInterval: makeProp(PROP_TYPE_NUMBER_STRING, DEFAULT_REPEAT_INTERVAL),\n repeatStepMultiplier: makeProp(PROP_TYPE_NUMBER_STRING, DEFAULT_REPEAT_MULTIPLIER),\n repeatThreshold: makeProp(PROP_TYPE_NUMBER_STRING, DEFAULT_REPEAT_THRESHOLD),\n step: makeProp(PROP_TYPE_NUMBER_STRING, DEFAULT_STEP),\n vertical: makeProp(PROP_TYPE_BOOLEAN, false),\n wrap: makeProp(PROP_TYPE_BOOLEAN, false)\n})), NAME_FORM_SPINBUTTON); // --- Main Component ---\n// @vue/component\n\nexport var BFormSpinbutton = /*#__PURE__*/Vue.extend({\n name: NAME_FORM_SPINBUTTON,\n // Mixin order is important!\n mixins: [attrsMixin, idMixin, modelMixin, formSizeMixin, formStateMixin, normalizeSlotMixin],\n inheritAttrs: false,\n props: props,\n data: function data() {\n return {\n localValue: toFloat(this[MODEL_PROP_NAME], null),\n hasFocus: false\n };\n },\n computed: {\n spinId: function spinId() {\n return this.safeId();\n },\n computedInline: function computedInline() {\n return this.inline && !this.vertical;\n },\n computedReadonly: function computedReadonly() {\n return this.readonly && !this.disabled;\n },\n computedRequired: function computedRequired() {\n return this.required && !this.computedReadonly && !this.disabled;\n },\n computedStep: function computedStep() {\n return toFloat(this.step, DEFAULT_STEP);\n },\n computedMin: function computedMin() {\n return toFloat(this.min, DEFAULT_MIN);\n },\n computedMax: function computedMax() {\n // We round down to the nearest maximum step value\n var max = toFloat(this.max, DEFAULT_MAX);\n var step = this.computedStep;\n var min = this.computedMin;\n return mathFloor((max - min) / step) * step + min;\n },\n computedDelay: function computedDelay() {\n var delay = toInteger(this.repeatDelay, 0);\n return delay > 0 ? delay : DEFAULT_REPEAT_DELAY;\n },\n computedInterval: function computedInterval() {\n var interval = toInteger(this.repeatInterval, 0);\n return interval > 0 ? interval : DEFAULT_REPEAT_INTERVAL;\n },\n computedThreshold: function computedThreshold() {\n return mathMax(toInteger(this.repeatThreshold, DEFAULT_REPEAT_THRESHOLD), 1);\n },\n computedStepMultiplier: function computedStepMultiplier() {\n return mathMax(toInteger(this.repeatStepMultiplier, DEFAULT_REPEAT_MULTIPLIER), 1);\n },\n computedPrecision: function computedPrecision() {\n // Quick and dirty way to get the number of decimals\n var step = this.computedStep;\n return mathFloor(step) === step ? 0 : (step.toString().split('.')[1] || '').length;\n },\n computedMultiplier: function computedMultiplier() {\n return mathPow(10, this.computedPrecision || 0);\n },\n valueAsFixed: function valueAsFixed() {\n var value = this.localValue;\n return isNull(value) ? '' : value.toFixed(this.computedPrecision);\n },\n computedLocale: function computedLocale() {\n var locales = concat(this.locale).filter(identity);\n var nf = new Intl.NumberFormat(locales);\n return nf.resolvedOptions().locale;\n },\n computedRTL: function computedRTL() {\n return isLocaleRTL(this.computedLocale);\n },\n defaultFormatter: function defaultFormatter() {\n // Returns and `Intl.NumberFormat` formatter method reference\n var precision = this.computedPrecision;\n var nf = new Intl.NumberFormat(this.computedLocale, {\n style: 'decimal',\n useGrouping: false,\n minimumIntegerDigits: 1,\n minimumFractionDigits: precision,\n maximumFractionDigits: precision,\n notation: 'standard'\n }); // Return the format method reference\n\n return nf.format;\n },\n computedFormatter: function computedFormatter() {\n var formatterFn = this.formatterFn;\n return hasPropFunction(formatterFn) ? formatterFn : this.defaultFormatter;\n },\n computedAttrs: function computedAttrs() {\n return _objectSpread(_objectSpread({}, this.bvAttrs), {}, {\n role: 'group',\n lang: this.computedLocale,\n tabindex: this.disabled ? null : '-1',\n title: this.ariaLabel\n });\n },\n computedSpinAttrs: function computedSpinAttrs() {\n var spinId = this.spinId,\n value = this.localValue,\n required = this.computedRequired,\n disabled = this.disabled,\n state = this.state,\n computedFormatter = this.computedFormatter;\n var hasValue = !isNull(value);\n return _objectSpread(_objectSpread({\n dir: this.computedRTL ? 'rtl' : 'ltr'\n }, this.bvAttrs), {}, {\n id: spinId,\n role: 'spinbutton',\n tabindex: disabled ? null : '0',\n 'aria-live': 'off',\n 'aria-label': this.ariaLabel || null,\n 'aria-controls': this.ariaControls || null,\n // TODO: May want to check if the value is in range\n 'aria-invalid': state === false || !hasValue && required ? 'true' : null,\n 'aria-required': required ? 'true' : null,\n // These attrs are required for role spinbutton\n 'aria-valuemin': toString(this.computedMin),\n 'aria-valuemax': toString(this.computedMax),\n // These should be `null` if the value is out of range\n // They must also be non-existent attrs if the value is out of range or `null`\n 'aria-valuenow': hasValue ? value : null,\n 'aria-valuetext': hasValue ? computedFormatter(value) : null\n });\n }\n },\n watch: (_watch = {}, _defineProperty(_watch, MODEL_PROP_NAME, function (value) {\n this.localValue = toFloat(value, null);\n }), _defineProperty(_watch, \"localValue\", function localValue(value) {\n this.$emit(MODEL_EVENT_NAME, value);\n }), _defineProperty(_watch, \"disabled\", function disabled(_disabled) {\n if (_disabled) {\n this.clearRepeat();\n }\n }), _defineProperty(_watch, \"readonly\", function readonly(_readonly) {\n if (_readonly) {\n this.clearRepeat();\n }\n }), _watch),\n created: function created() {\n // Create non reactive properties\n this.$_autoDelayTimer = null;\n this.$_autoRepeatTimer = null;\n this.$_keyIsDown = false;\n },\n beforeDestroy: function beforeDestroy() {\n this.clearRepeat();\n },\n\n /* istanbul ignore next */\n deactivated: function deactivated() {\n this.clearRepeat();\n },\n methods: {\n // --- Public methods ---\n focus: function focus() {\n if (!this.disabled) {\n attemptFocus(this.$refs.spinner);\n }\n },\n blur: function blur() {\n if (!this.disabled) {\n attemptBlur(this.$refs.spinner);\n }\n },\n // --- Private methods ---\n emitChange: function emitChange() {\n this.$emit(EVENT_NAME_CHANGE, this.localValue);\n },\n stepValue: function stepValue(direction) {\n // Sets a new incremented or decremented value, supporting optional wrapping\n // Direction is either +1 or -1 (or a multiple thereof)\n var value = this.localValue;\n\n if (!this.disabled && !isNull(value)) {\n var step = this.computedStep * direction;\n var min = this.computedMin;\n var max = this.computedMax;\n var multiplier = this.computedMultiplier;\n var wrap = this.wrap; // We ensure that the value steps like a native input\n\n value = mathRound((value - min) / step) * step + min + step; // We ensure that precision is maintained (decimals)\n\n value = mathRound(value * multiplier) / multiplier; // Handle if wrapping is enabled\n\n this.localValue = value > max ? wrap ? min : max : value < min ? wrap ? max : min : value;\n }\n },\n onFocusBlur: function onFocusBlur(event) {\n if (!this.disabled) {\n this.hasFocus = event.type === 'focus';\n } else {\n this.hasFocus = false;\n }\n },\n stepUp: function stepUp() {\n var multiplier = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;\n var value = this.localValue;\n\n if (isNull(value)) {\n this.localValue = this.computedMin;\n } else {\n this.stepValue(+1 * multiplier);\n }\n },\n stepDown: function stepDown() {\n var multiplier = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;\n var value = this.localValue;\n\n if (isNull(value)) {\n this.localValue = this.wrap ? this.computedMax : this.computedMin;\n } else {\n this.stepValue(-1 * multiplier);\n }\n },\n onKeydown: function onKeydown(event) {\n var keyCode = event.keyCode,\n altKey = event.altKey,\n ctrlKey = event.ctrlKey,\n metaKey = event.metaKey;\n /* istanbul ignore if */\n\n if (this.disabled || this.readonly || altKey || ctrlKey || metaKey) {\n return;\n }\n\n if (arrayIncludes(KEY_CODES, keyCode)) {\n // https://w3c.github.io/aria-practices/#spinbutton\n stopEvent(event, {\n propagation: false\n });\n /* istanbul ignore if */\n\n if (this.$_keyIsDown) {\n // Keypress is already in progress\n return;\n }\n\n this.resetTimers();\n\n if (arrayIncludes([CODE_UP, CODE_DOWN], keyCode)) {\n // The following use the custom auto-repeat handling\n this.$_keyIsDown = true;\n\n if (keyCode === CODE_UP) {\n this.handleStepRepeat(event, this.stepUp);\n } else if (keyCode === CODE_DOWN) {\n this.handleStepRepeat(event, this.stepDown);\n }\n } else {\n // These use native OS key repeating\n if (keyCode === CODE_PAGEUP) {\n this.stepUp(this.computedStepMultiplier);\n } else if (keyCode === CODE_PAGEDOWN) {\n this.stepDown(this.computedStepMultiplier);\n } else if (keyCode === CODE_HOME) {\n this.localValue = this.computedMin;\n } else if (keyCode === CODE_END) {\n this.localValue = this.computedMax;\n }\n }\n }\n },\n onKeyup: function onKeyup(event) {\n // Emit a change event when the keyup happens\n var keyCode = event.keyCode,\n altKey = event.altKey,\n ctrlKey = event.ctrlKey,\n metaKey = event.metaKey;\n /* istanbul ignore if */\n\n if (this.disabled || this.readonly || altKey || ctrlKey || metaKey) {\n return;\n }\n\n if (arrayIncludes(KEY_CODES, keyCode)) {\n stopEvent(event, {\n propagation: false\n });\n this.resetTimers();\n this.$_keyIsDown = false;\n this.emitChange();\n }\n },\n handleStepRepeat: function handleStepRepeat(event, stepper) {\n var _this = this;\n\n var _ref = event || {},\n type = _ref.type,\n button = _ref.button;\n\n if (!this.disabled && !this.readonly) {\n /* istanbul ignore if */\n if (type === 'mousedown' && button) {\n // We only respond to left (main === 0) button clicks\n return;\n }\n\n this.resetTimers(); // Step the counter initially\n\n stepper(1);\n var threshold = this.computedThreshold;\n var multiplier = this.computedStepMultiplier;\n var delay = this.computedDelay;\n var interval = this.computedInterval; // Initiate the delay/repeat interval\n\n this.$_autoDelayTimer = setTimeout(function () {\n var count = 0;\n _this.$_autoRepeatTimer = setInterval(function () {\n // After N initial repeats, we increase the incrementing step amount\n // We do this to minimize screen reader announcements of the value\n // (values are announced every change, which can be chatty for SR users)\n // And to make it easer to select a value when the range is large\n stepper(count < threshold ? 1 : multiplier);\n count++;\n }, interval);\n }, delay);\n }\n },\n onMouseup: function onMouseup(event) {\n // `` listener, only enabled when mousedown starts\n var _ref2 = event || {},\n type = _ref2.type,\n button = _ref2.button;\n /* istanbul ignore if */\n\n\n if (type === 'mouseup' && button) {\n // Ignore non left button (main === 0) mouse button click\n return;\n }\n\n stopEvent(event, {\n propagation: false\n });\n this.resetTimers();\n this.setMouseup(false); // Trigger the change event\n\n this.emitChange();\n },\n setMouseup: function setMouseup(on) {\n // Enable or disabled the body mouseup/touchend handlers\n // Use try/catch to handle case when called server side\n try {\n eventOnOff(on, document.body, 'mouseup', this.onMouseup, false);\n eventOnOff(on, document.body, 'touchend', this.onMouseup, false);\n } catch (_unused) {}\n },\n resetTimers: function resetTimers() {\n clearTimeout(this.$_autoDelayTimer);\n clearInterval(this.$_autoRepeatTimer);\n this.$_autoDelayTimer = null;\n this.$_autoRepeatTimer = null;\n },\n clearRepeat: function clearRepeat() {\n this.resetTimers();\n this.setMouseup(false);\n this.$_keyIsDown = false;\n }\n },\n render: function render(h) {\n var _this2 = this;\n\n var spinId = this.spinId,\n value = this.localValue,\n inline = this.computedInline,\n readonly = this.computedReadonly,\n vertical = this.vertical,\n disabled = this.disabled,\n computedFormatter = this.computedFormatter;\n var hasValue = !isNull(value);\n\n var makeButton = function makeButton(stepper, label, IconCmp, keyRef, shortcut, btnDisabled, slotName) {\n var $icon = h(IconCmp, {\n props: {\n scale: _this2.hasFocus ? 1.5 : 1.25\n },\n attrs: {\n 'aria-hidden': 'true'\n }\n });\n var scope = {\n hasFocus: _this2.hasFocus\n };\n\n var handler = function handler(event) {\n if (!disabled && !readonly) {\n stopEvent(event, {\n propagation: false\n });\n\n _this2.setMouseup(true); // Since we `preventDefault()`, we must manually focus the button\n\n\n attemptFocus(event.currentTarget);\n\n _this2.handleStepRepeat(event, stepper);\n }\n };\n\n return h('button', {\n staticClass: 'btn btn-sm border-0 rounded-0',\n class: {\n 'py-0': !vertical\n },\n attrs: {\n tabindex: '-1',\n type: 'button',\n disabled: disabled || readonly || btnDisabled,\n 'aria-disabled': disabled || readonly || btnDisabled ? 'true' : null,\n 'aria-controls': spinId,\n 'aria-label': label || null,\n 'aria-keyshortcuts': shortcut || null\n },\n on: {\n mousedown: handler,\n touchstart: handler\n },\n key: keyRef || null,\n ref: keyRef\n }, [_this2.normalizeSlot(slotName, scope) || $icon]);\n }; // TODO: Add button disabled state when `wrap` is `false` and at value max/min\n\n\n var $increment = makeButton(this.stepUp, this.labelIncrement, BIconPlus, 'inc', 'ArrowUp', false, SLOT_NAME_INCREMENT);\n var $decrement = makeButton(this.stepDown, this.labelDecrement, BIconDash, 'dec', 'ArrowDown', false, SLOT_NAME_DECREMENT);\n var $hidden = h();\n\n if (this.name && !disabled) {\n $hidden = h('input', {\n attrs: {\n type: 'hidden',\n name: this.name,\n form: this.form || null,\n // TODO: Should this be set to '' if value is out of range?\n value: this.valueAsFixed\n },\n key: 'hidden'\n });\n }\n\n var $spin = h( // We use 'output' element to make this accept a `` (Except IE)\n 'output', {\n staticClass: 'flex-grow-1',\n class: {\n 'd-flex': vertical,\n 'align-self-center': !vertical,\n 'align-items-center': vertical,\n 'border-top': vertical,\n 'border-bottom': vertical,\n 'border-left': !vertical,\n 'border-right': !vertical\n },\n attrs: this.computedSpinAttrs,\n key: 'output',\n ref: 'spinner'\n }, [h('bdi', hasValue ? computedFormatter(value) : this.placeholder || '')]);\n return h('div', {\n staticClass: 'b-form-spinbutton form-control',\n class: [{\n disabled: disabled,\n readonly: readonly,\n focus: this.hasFocus,\n 'd-inline-flex': inline || vertical,\n 'd-flex': !inline && !vertical,\n 'align-items-stretch': !vertical,\n 'flex-column': vertical\n }, this.sizeFormClass, this.stateClass],\n attrs: this.computedAttrs,\n on: {\n keydown: this.onKeydown,\n keyup: this.onKeyup,\n // We use capture phase (`!` prefix) since focus and blur do not bubble\n '!focus': this.onFocusBlur,\n '!blur': this.onFocusBlur\n }\n }, vertical ? [$increment, $hidden, $spin, $decrement] : [$decrement, $hidden, $spin, $increment]);\n }\n});","// Localization utilities\nimport { RX_STRIP_LOCALE_MODS } from '../constants/regex';\nimport { arrayIncludes } from './array';\nimport { toString } from './string'; // Languages that are RTL\n\nvar RTL_LANGS = ['ar', 'az', 'ckb', 'fa', 'he', 'ks', 'lrc', 'mzn', 'ps', 'sd', 'te', 'ug', 'ur', 'yi'].map(function (locale) {\n return locale.toLowerCase();\n}); // Returns true if the locale is RTL\n\nexport var isLocaleRTL = function isLocaleRTL(locale) {\n // Determines if the locale is RTL (only single locale supported)\n var parts = toString(locale).toLowerCase().replace(RX_STRIP_LOCALE_MODS, '').split('-');\n var locale1 = parts.slice(0, 2).join('-');\n var locale2 = parts[0];\n return arrayIncludes(RTL_LANGS, locale1) || arrayIncludes(RTL_LANGS, locale2);\n};","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});","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\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_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});","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});","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});","import { closest, getAttr, getById, matches, select } from '../../../utils/dom';\nimport { EVENT_FILTER } from './constants';\nvar TABLE_TAG_NAMES = ['TD', 'TH', 'TR']; // Returns `true` if we should ignore the click/double-click/keypress event\n// Avoids having the user need to use `@click.stop` on the form control\n\nexport var filterEvent = function filterEvent(event) {\n // Exit early when we don't have a target element\n if (!event || !event.target) {\n /* istanbul ignore next */\n return false;\n }\n\n var el = event.target; // Exit early when element is disabled or a table element\n\n if (el.disabled || TABLE_TAG_NAMES.indexOf(el.tagName) !== -1) {\n return false;\n } // Ignore the click when it was inside a dropdown menu\n\n\n if (closest('.dropdown-menu', el)) {\n return true;\n }\n\n var label = el.tagName === 'LABEL' ? el : closest('label', el); // If the label's form control is not disabled then we don't propagate event\n // Modern browsers have `label.control` that references the associated input, but IE 11\n // does not have this property on the label element, so we resort to DOM lookups\n\n if (label) {\n var labelFor = getAttr(label, 'for');\n var input = labelFor ? getById(labelFor) : select('input, select, textarea', label);\n\n if (input && !input.disabled) {\n return true;\n }\n } // Otherwise check if the event target matches one of the selectors in the\n // event filter (i.e. anchors, non disabled inputs, etc.)\n // Return `true` if we should ignore the event\n\n\n return matches(el, EVENT_FILTER);\n};","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ToastificationContent.vue?vue&type=style&index=0&id=55dd3057&lang=scss&scoped=true&\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./campaignproducts.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_THEAD } from '../../constants/components';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { listenersMixin } from '../../mixins/listeners';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n // Also sniffed by `` / `` / ``\n // Supported values: 'lite', 'dark', or `null`\n headVariant: makeProp(PROP_TYPE_STRING)\n}, NAME_THEAD); // --- Main component ---\n// TODO:\n// In Bootstrap v5, we won't need \"sniffing\" as table element variants properly inherit\n// to the child elements, so this can be converted to a functional component\n// @vue/component\n\nexport var BThead = /*#__PURE__*/Vue.extend({\n name: NAME_THEAD,\n mixins: [attrsMixin, listenersMixin, normalizeSlotMixin],\n provide: function provide() {\n return {\n bvTableRowGroup: this\n };\n },\n inject: {\n // Sniffed by `` / `` / ``\n bvTable: {\n default:\n /* istanbul ignore next */\n function _default() {\n return {};\n }\n }\n },\n inheritAttrs: false,\n props: props,\n computed: {\n // Sniffed by `` / `` / ``\n isThead: function isThead() {\n return true;\n },\n // Sniffed by `` / `` / ``\n isDark: function isDark() {\n return this.bvTable.dark;\n },\n // Sniffed by `` / `` / ``\n isStacked: function isStacked() {\n return this.bvTable.isStacked;\n },\n // Sniffed by `` / `` / ``\n isResponsive: function isResponsive() {\n return this.bvTable.isResponsive;\n },\n // Sniffed by `` / `` / ``\n // Needed to handle header background classes, due to lack of\n // background color inheritance with Bootstrap v4 table CSS\n // Sticky headers only apply to cells in table `thead`\n isStickyHeader: function isStickyHeader() {\n return !this.isStacked && this.bvTable.stickyHeader;\n },\n // Sniffed by `` / `` / ``\n // Needed to handle header background classes, due to lack of\n // background color inheritance with Bootstrap v4 table CSS\n hasStickyHeader: function hasStickyHeader() {\n return !this.isStacked && this.bvTable.stickyHeader;\n },\n // Sniffed by `` / `` / ``\n tableVariant: function tableVariant() {\n return this.bvTable.tableVariant;\n },\n theadClasses: function theadClasses() {\n return [this.headVariant ? \"thead-\".concat(this.headVariant) : null];\n },\n theadAttrs: function theadAttrs() {\n return _objectSpread({\n role: 'rowgroup'\n }, this.bvAttrs);\n }\n },\n render: function render(h) {\n return h('thead', {\n class: this.theadClasses,\n attrs: this.theadAttrs,\n // Pass down any native listeners\n on: this.bvListeners\n }, this.normalizeSlot());\n }\n});","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\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 { EVENT_NAME_HEAD_CLICKED } from '../../../constants/events';\nimport { CODE_ENTER, CODE_SPACE } from '../../../constants/key-codes';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_STRING } from '../../../constants/props';\nimport { SLOT_NAME_THEAD_TOP } from '../../../constants/slots';\nimport { stopEvent } from '../../../utils/events';\nimport { htmlOrText } from '../../../utils/html';\nimport { identity } from '../../../utils/identity';\nimport { isUndefinedOrNull } from '../../../utils/inspect';\nimport { noop } from '../../../utils/noop';\nimport { makeProp } from '../../../utils/props';\nimport { startCase } from '../../../utils/string';\nimport { BThead } from '../thead';\nimport { BTfoot } from '../tfoot';\nimport { BTr } from '../tr';\nimport { BTh } from '../th';\nimport { filterEvent } from './filter-event';\nimport { textSelectionActive } from './text-selection-active'; // --- Helper methods ---\n\nvar getHeadSlotName = function getHeadSlotName(value) {\n return \"head(\".concat(value || '', \")\");\n};\n\nvar getFootSlotName = function getFootSlotName(value) {\n return \"foot(\".concat(value || '', \")\");\n}; // --- Props ---\n\n\nexport var props = {\n // Any Bootstrap theme variant (or custom)\n headRowVariant: makeProp(PROP_TYPE_STRING),\n // 'light', 'dark' or `null` (or custom)\n headVariant: makeProp(PROP_TYPE_STRING),\n theadClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n theadTrClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING)\n}; // --- Mixin ---\n// @vue/component\n\nexport var theadMixin = Vue.extend({\n props: props,\n methods: {\n fieldClasses: function fieldClasses(field) {\n // Header field () classes\n return [field.class ? field.class : '', field.thClass ? field.thClass : ''];\n },\n headClicked: function headClicked(event, field, isFoot) {\n if (this.stopIfBusy && this.stopIfBusy(event)) {\n // If table is busy (via provider) then don't propagate\n return;\n } else if (filterEvent(event)) {\n // Clicked on a non-disabled control so ignore\n return;\n } else if (textSelectionActive(this.$el)) {\n // User is selecting text, so ignore\n\n /* istanbul ignore next: JSDOM doesn't support getSelection() */\n return;\n }\n\n stopEvent(event);\n this.$emit(EVENT_NAME_HEAD_CLICKED, field.key, field, event, isFoot);\n },\n renderThead: function renderThead() {\n var _this = this;\n\n var isFoot = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var fields = this.computedFields,\n isSortable = this.isSortable,\n isSelectable = this.isSelectable,\n headVariant = this.headVariant,\n footVariant = this.footVariant,\n headRowVariant = this.headRowVariant,\n footRowVariant = this.footRowVariant;\n var h = this.$createElement; // In always stacked mode, we don't bother rendering the head/foot\n // Or if no field headings (empty table)\n\n if (this.isStackedAlways || fields.length === 0) {\n return h();\n }\n\n var hasHeadClickListener = isSortable || this.hasListener(EVENT_NAME_HEAD_CLICKED); // Reference to `selectAllRows` and `clearSelected()`, if table is selectable\n\n var selectAllRows = isSelectable ? this.selectAllRows : noop;\n var clearSelected = isSelectable ? this.clearSelected : noop; // Helper function to generate a field cell\n\n var makeCell = function makeCell(field, colIndex) {\n var label = field.label,\n labelHtml = field.labelHtml,\n variant = field.variant,\n stickyColumn = field.stickyColumn,\n key = field.key;\n var ariaLabel = null;\n\n if (!field.label.trim() && !field.headerTitle) {\n // In case field's label and title are empty/blank\n // We need to add a hint about what the column is about for non-sighted users\n\n /* istanbul ignore next */\n ariaLabel = startCase(field.key);\n }\n\n var on = {};\n\n if (hasHeadClickListener) {\n on.click = function (event) {\n _this.headClicked(event, field, isFoot);\n };\n\n on.keydown = function (event) {\n var keyCode = event.keyCode;\n\n if (keyCode === CODE_ENTER || keyCode === CODE_SPACE) {\n _this.headClicked(event, field, isFoot);\n }\n };\n }\n\n var sortAttrs = isSortable ? _this.sortTheadThAttrs(key, field, isFoot) : {};\n var sortClass = isSortable ? _this.sortTheadThClasses(key, field, isFoot) : null;\n var sortLabel = isSortable ? _this.sortTheadThLabel(key, field, isFoot) : null;\n var data = {\n class: [_this.fieldClasses(field), sortClass],\n props: {\n variant: variant,\n stickyColumn: stickyColumn\n },\n style: field.thStyle || {},\n attrs: _objectSpread(_objectSpread({\n // We only add a `tabindex` of `0` if there is a head-clicked listener\n // and the current field is sortable\n tabindex: hasHeadClickListener && field.sortable ? '0' : null,\n abbr: field.headerAbbr || null,\n title: field.headerTitle || null,\n 'aria-colindex': colIndex + 1,\n 'aria-label': ariaLabel\n }, _this.getThValues(null, key, field.thAttr, isFoot ? 'foot' : 'head', {})), sortAttrs),\n on: on,\n key: key\n }; // Handle edge case where in-document templates are used with new\n // `v-slot:name` syntax where the browser lower-cases the v-slot's\n // name (attributes become lower cased when parsed by the browser)\n // We have replaced the square bracket syntax with round brackets\n // to prevent confusion with dynamic slot names\n\n var slotNames = [getHeadSlotName(key), getHeadSlotName(key.toLowerCase()), getHeadSlotName()]; // Footer will fallback to header slot names\n\n if (isFoot) {\n slotNames = [getFootSlotName(key), getFootSlotName(key.toLowerCase()), getFootSlotName()].concat(_toConsumableArray(slotNames));\n }\n\n var scope = {\n label: label,\n column: key,\n field: field,\n isFoot: isFoot,\n // Add in row select methods\n selectAllRows: selectAllRows,\n clearSelected: clearSelected\n };\n var $content = _this.normalizeSlot(slotNames, scope) || h('div', {\n domProps: htmlOrText(labelHtml, label)\n });\n var $srLabel = sortLabel ? h('span', {\n staticClass: 'sr-only'\n }, \" (\".concat(sortLabel, \")\")) : null; // Return the header cell\n\n return h(BTh, data, [$content, $srLabel].filter(identity));\n }; // Generate the array of cells\n\n\n var $cells = fields.map(makeCell).filter(identity); // Generate the row(s)\n\n var $trs = [];\n\n if (isFoot) {\n $trs.push(h(BTr, {\n class: this.tfootTrClass,\n props: {\n variant: isUndefinedOrNull(footRowVariant) ? headRowVariant :\n /* istanbul ignore next */\n footRowVariant\n }\n }, $cells));\n } else {\n var scope = {\n columns: fields.length,\n fields: fields,\n // Add in row select methods\n selectAllRows: selectAllRows,\n clearSelected: clearSelected\n };\n $trs.push(this.normalizeSlot(SLOT_NAME_THEAD_TOP, scope) || h());\n $trs.push(h(BTr, {\n class: this.theadTrClass,\n props: {\n variant: headRowVariant\n }\n }, $cells));\n }\n\n return h(isFoot ? BTfoot : BThead, {\n class: (isFoot ? this.tfootClass : this.theadClass) || null,\n props: isFoot ? {\n footVariant: footVariant || headVariant || null\n } : {\n headVariant: headVariant || null\n },\n key: isFoot ? 'bv-tfoot' : 'bv-thead'\n }, $trs);\n }\n }\n});","var _objectSpread2;\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_FORM_CHECKBOX } from '../../constants/components';\nimport { EVENT_NAME_CHANGE, MODEL_EVENT_NAME_PREFIX } from '../../constants/events';\nimport { PROP_TYPE_ANY, PROP_TYPE_BOOLEAN } from '../../constants/props';\nimport { isArray } from '../../utils/inspect';\nimport { looseEqual } from '../../utils/loose-equal';\nimport { looseIndexOf } from '../../utils/loose-index-of';\nimport { sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { MODEL_EVENT_NAME, formRadioCheckMixin, props as formRadioCheckProps } from '../../mixins/form-radio-check'; // --- Constants ---\n\nvar MODEL_PROP_NAME_INDETERMINATE = 'indeterminate';\nvar MODEL_EVENT_NAME_INDETERMINATE = MODEL_EVENT_NAME_PREFIX + MODEL_PROP_NAME_INDETERMINATE; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, formRadioCheckProps), {}, (_objectSpread2 = {}, _defineProperty(_objectSpread2, MODEL_PROP_NAME_INDETERMINATE, makeProp(PROP_TYPE_BOOLEAN, false)), _defineProperty(_objectSpread2, \"switch\", makeProp(PROP_TYPE_BOOLEAN, false)), _defineProperty(_objectSpread2, \"uncheckedValue\", makeProp(PROP_TYPE_ANY, false)), _defineProperty(_objectSpread2, \"value\", makeProp(PROP_TYPE_ANY, true)), _objectSpread2))), NAME_FORM_CHECKBOX); // --- Main component ---\n// @vue/component\n\nexport var BFormCheckbox = /*#__PURE__*/Vue.extend({\n name: NAME_FORM_CHECKBOX,\n mixins: [formRadioCheckMixin],\n inject: {\n bvGroup: {\n from: 'bvCheckGroup',\n default: null\n }\n },\n props: props,\n computed: {\n isChecked: function isChecked() {\n var value = this.value,\n checked = this.computedLocalChecked;\n return isArray(checked) ? looseIndexOf(checked, value) > -1 : looseEqual(checked, value);\n },\n isRadio: function isRadio() {\n return false;\n }\n },\n watch: _defineProperty({}, MODEL_PROP_NAME_INDETERMINATE, function (newValue, oldValue) {\n if (!looseEqual(newValue, oldValue)) {\n this.setIndeterminate(newValue);\n }\n }),\n mounted: function mounted() {\n // Set initial indeterminate state\n this.setIndeterminate(this[MODEL_PROP_NAME_INDETERMINATE]);\n },\n methods: {\n computedLocalCheckedWatcher: function computedLocalCheckedWatcher(newValue, oldValue) {\n if (!looseEqual(newValue, oldValue)) {\n this.$emit(MODEL_EVENT_NAME, newValue);\n var $input = this.$refs.input;\n\n if ($input) {\n this.$emit(MODEL_EVENT_NAME_INDETERMINATE, $input.indeterminate);\n }\n }\n },\n handleChange: function handleChange(_ref) {\n var _this = this;\n\n var _ref$target = _ref.target,\n checked = _ref$target.checked,\n indeterminate = _ref$target.indeterminate;\n var value = this.value,\n uncheckedValue = this.uncheckedValue; // Update `computedLocalChecked`\n\n var localChecked = this.computedLocalChecked;\n\n if (isArray(localChecked)) {\n var index = looseIndexOf(localChecked, value);\n\n if (checked && index < 0) {\n // Add value to array\n localChecked = localChecked.concat(value);\n } else if (!checked && index > -1) {\n // Remove value from array\n localChecked = localChecked.slice(0, index).concat(localChecked.slice(index + 1));\n }\n } else {\n localChecked = checked ? value : uncheckedValue;\n }\n\n this.computedLocalChecked = localChecked; // Fire events in a `$nextTick()` to ensure the `v-model` is updated\n\n this.$nextTick(function () {\n // Change is only emitted on user interaction\n _this.$emit(EVENT_NAME_CHANGE, localChecked); // If this is a child of a group, we emit a change event on it as well\n\n\n if (_this.isGroup) {\n _this.bvGroup.$emit(EVENT_NAME_CHANGE, localChecked);\n }\n\n _this.$emit(MODEL_EVENT_NAME_INDETERMINATE, indeterminate);\n });\n },\n setIndeterminate: function setIndeterminate(state) {\n // Indeterminate only supported in single checkbox mode\n if (isArray(this.computedLocalChecked)) {\n state = false;\n }\n\n var $input = this.$refs.input;\n\n if ($input) {\n $input.indeterminate = state; // Emit update event to prop\n\n this.$emit(MODEL_EVENT_NAME_INDETERMINATE, state);\n }\n }\n }\n});","import { looseEqual } from './loose-equal'; // Assumes that the first argument is an array\n\nexport var looseIndexOf = function looseIndexOf(array, value) {\n for (var i = 0; i < array.length; i++) {\n if (looseEqual(array[i], value)) {\n return i;\n }\n }\n\n return -1;\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_FORM_FILE } from '../../constants/components';\nimport { HAS_PROMISE_SUPPORT } from '../../constants/env';\nimport { EVENT_NAME_CHANGE, EVENT_OPTIONS_PASSIVE } from '../../constants/events';\nimport { PROP_TYPE_ARRAY, PROP_TYPE_BOOLEAN, PROP_TYPE_FUNCTION, PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_DROP_PLACEHOLDER, SLOT_NAME_FILE_NAME, SLOT_NAME_PLACEHOLDER } from '../../constants/slots';\nimport { RX_EXTENSION, RX_STAR } from '../../constants/regex';\nimport { File } from '../../constants/safe-types';\nimport { from as arrayFrom, flatten, flattenDeep } from '../../utils/array';\nimport { cloneDeep } from '../../utils/clone-deep';\nimport { closest } from '../../utils/dom';\nimport { eventOn, eventOff, stopEvent } from '../../utils/events';\nimport { identity } from '../../utils/identity';\nimport { isArray, isFile, isFunction, isNull, isUndefinedOrNull } from '../../utils/inspect';\nimport { looseEqual } from '../../utils/loose-equal';\nimport { makeModelMixin } from '../../utils/model';\nimport { sortKeys } from '../../utils/object';\nimport { hasPropFunction, makeProp, makePropsConfigurable } from '../../utils/props';\nimport { escapeRegExp } from '../../utils/string';\nimport { warn } from '../../utils/warn';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { formControlMixin, props as formControlProps } from '../../mixins/form-control';\nimport { formCustomMixin, props as formCustomProps } from '../../mixins/form-custom';\nimport { formStateMixin, props as formStateProps } from '../../mixins/form-state';\nimport { idMixin, props as idProps } from '../../mixins/id';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { props as formSizeProps } from '../../mixins/form-size'; // --- Constants ---\n\nvar _makeModelMixin = makeModelMixin('value', {\n type: [PROP_TYPE_ARRAY, File],\n defaultValue: null,\n validator: function validator(value) {\n /* istanbul ignore next */\n if (value === '') {\n warn(VALUE_EMPTY_DEPRECATED_MSG, NAME_FORM_FILE);\n return true;\n }\n\n return isUndefinedOrNull(value) || isValidValue(value);\n }\n}),\n modelMixin = _makeModelMixin.mixin,\n modelProps = _makeModelMixin.props,\n MODEL_PROP_NAME = _makeModelMixin.prop,\n MODEL_EVENT_NAME = _makeModelMixin.event;\n\nvar VALUE_EMPTY_DEPRECATED_MSG = 'Setting \"value\"/\"v-model\" to an empty string for reset is deprecated. Set to \"null\" instead.'; // --- Helper methods ---\n\nvar isValidValue = function isValidValue(value) {\n return isFile(value) || isArray(value) && value.every(function (v) {\n return isValidValue(v);\n });\n}; // Helper method to \"safely\" get the entry from a data-transfer item\n\n/* istanbul ignore next: not supported in JSDOM */\n\n\nvar getDataTransferItemEntry = function getDataTransferItemEntry(item) {\n return isFunction(item.getAsEntry) ? item.getAsEntry() : isFunction(item.webkitGetAsEntry) ? item.webkitGetAsEntry() : null;\n}; // Drop handler function to get all files\n\n/* istanbul ignore next: not supported in JSDOM */\n\n\nvar getAllFileEntries = function getAllFileEntries(dataTransferItemList) {\n var traverseDirectories = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n return Promise.all(arrayFrom(dataTransferItemList).filter(function (item) {\n return item.kind === 'file';\n }).map(function (item) {\n var entry = getDataTransferItemEntry(item);\n\n if (entry) {\n if (entry.isDirectory && traverseDirectories) {\n return getAllFileEntriesInDirectory(entry.createReader(), \"\".concat(entry.name, \"/\"));\n } else if (entry.isFile) {\n return new Promise(function (resolve) {\n entry.file(function (file) {\n file.$path = '';\n resolve(file);\n });\n });\n }\n }\n\n return null;\n }).filter(identity));\n}; // Get all the file entries (recursive) in a directory\n\n/* istanbul ignore next: not supported in JSDOM */\n\n\nvar getAllFileEntriesInDirectory = function getAllFileEntriesInDirectory(directoryReader) {\n var path = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n return new Promise(function (resolve) {\n var entryPromises = [];\n\n var readDirectoryEntries = function readDirectoryEntries() {\n directoryReader.readEntries(function (entries) {\n if (entries.length === 0) {\n resolve(Promise.all(entryPromises).then(function (entries) {\n return flatten(entries);\n }));\n } else {\n entryPromises.push(Promise.all(entries.map(function (entry) {\n if (entry) {\n if (entry.isDirectory) {\n return getAllFileEntriesInDirectory(entry.createReader(), \"\".concat(path).concat(entry.name, \"/\"));\n } else if (entry.isFile) {\n return new Promise(function (resolve) {\n entry.file(function (file) {\n file.$path = \"\".concat(path).concat(file.name);\n resolve(file);\n });\n });\n }\n }\n\n return null;\n }).filter(identity)));\n readDirectoryEntries();\n }\n });\n };\n\n readDirectoryEntries();\n });\n}; // --- Props ---\n\n\nvar props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, idProps), modelProps), formControlProps), formCustomProps), formStateProps), formSizeProps), {}, {\n accept: makeProp(PROP_TYPE_STRING, ''),\n browseText: makeProp(PROP_TYPE_STRING, 'Browse'),\n // Instruct input to capture from camera\n capture: makeProp(PROP_TYPE_BOOLEAN, false),\n directory: makeProp(PROP_TYPE_BOOLEAN, false),\n dropPlaceholder: makeProp(PROP_TYPE_STRING, 'Drop files here'),\n fileNameFormatter: makeProp(PROP_TYPE_FUNCTION),\n multiple: makeProp(PROP_TYPE_BOOLEAN, false),\n noDrop: makeProp(PROP_TYPE_BOOLEAN, false),\n noDropPlaceholder: makeProp(PROP_TYPE_STRING, 'Not allowed'),\n // TODO:\n // Should we deprecate this and only support flat file structures?\n // Nested file structures are only supported when files are dropped\n // A Chromium \"bug\" prevents `webkitEntries` from being populated\n // on the file input's `change` event and is marked as \"WontFix\"\n // Mozilla implemented the behavior the same way as Chromium\n // See: https://bugs.chromium.org/p/chromium/issues/detail?id=138987\n // See: https://bugzilla.mozilla.org/show_bug.cgi?id=1326031\n noTraverse: makeProp(PROP_TYPE_BOOLEAN, false),\n placeholder: makeProp(PROP_TYPE_STRING, 'No file chosen')\n})), NAME_FORM_FILE); // --- Main component ---\n// @vue/component\n\nexport var BFormFile = /*#__PURE__*/Vue.extend({\n name: NAME_FORM_FILE,\n mixins: [attrsMixin, idMixin, modelMixin, normalizeSlotMixin, formControlMixin, formStateMixin, formCustomMixin, normalizeSlotMixin],\n inheritAttrs: false,\n props: props,\n data: function data() {\n return {\n files: [],\n dragging: false,\n // IE 11 doesn't respect setting `event.dataTransfer.dropEffect`,\n // so we handle it ourselves as well\n // https://stackoverflow.com/a/46915971/2744776\n dropAllowed: !this.noDrop,\n hasFocus: false\n };\n },\n computed: {\n // Convert `accept` to an array of `[{ RegExpr, isMime }, ...]`\n computedAccept: function computedAccept() {\n var accept = this.accept;\n accept = (accept || '').trim().split(/[,\\s]+/).filter(identity); // Allow any file type/extension\n\n if (accept.length === 0) {\n return null;\n }\n\n return accept.map(function (extOrType) {\n var prop = 'name';\n var startMatch = '^';\n var endMatch = '$';\n\n if (RX_EXTENSION.test(extOrType)) {\n // File extension /\\.ext$/\n startMatch = '';\n } else {\n // MIME type /^mime\\/.+$/ or /^mime\\/type$/\n prop = 'type';\n\n if (RX_STAR.test(extOrType)) {\n endMatch = '.+$'; // Remove trailing `*`\n\n extOrType = extOrType.slice(0, -1);\n }\n } // Escape all RegExp special chars\n\n\n extOrType = escapeRegExp(extOrType);\n var rx = new RegExp(\"\".concat(startMatch).concat(extOrType).concat(endMatch));\n return {\n rx: rx,\n prop: prop\n };\n });\n },\n computedCapture: function computedCapture() {\n var capture = this.capture;\n return capture === true || capture === '' ? true : capture || null;\n },\n computedAttrs: function computedAttrs() {\n var name = this.name,\n disabled = this.disabled,\n required = this.required,\n form = this.form,\n computedCapture = this.computedCapture,\n accept = this.accept,\n multiple = this.multiple,\n directory = this.directory;\n return _objectSpread(_objectSpread({}, this.bvAttrs), {}, {\n type: 'file',\n id: this.safeId(),\n name: name,\n disabled: disabled,\n required: required,\n form: form || null,\n capture: computedCapture,\n accept: accept || null,\n multiple: multiple,\n directory: directory,\n webkitdirectory: directory,\n 'aria-required': required ? 'true' : null\n });\n },\n computedFileNameFormatter: function computedFileNameFormatter() {\n var fileNameFormatter = this.fileNameFormatter;\n return hasPropFunction(fileNameFormatter) ? fileNameFormatter : this.defaultFileNameFormatter;\n },\n clonedFiles: function clonedFiles() {\n return cloneDeep(this.files);\n },\n flattenedFiles: function flattenedFiles() {\n return flattenDeep(this.files);\n },\n fileNames: function fileNames() {\n return this.flattenedFiles.map(function (file) {\n return file.name;\n });\n },\n labelContent: function labelContent() {\n // Draging active\n\n /* istanbul ignore next: used by drag/drop which can't be tested easily */\n if (this.dragging && !this.noDrop) {\n return (// TODO: Add additional scope with file count, and other not-allowed reasons\n this.normalizeSlot(SLOT_NAME_DROP_PLACEHOLDER, {\n allowed: this.dropAllowed\n }) || (this.dropAllowed ? this.dropPlaceholder : this.$createElement('span', {\n staticClass: 'text-danger'\n }, this.noDropPlaceholder))\n );\n } // No file chosen\n\n\n if (this.files.length === 0) {\n return this.normalizeSlot(SLOT_NAME_PLACEHOLDER) || this.placeholder;\n }\n\n var flattenedFiles = this.flattenedFiles,\n clonedFiles = this.clonedFiles,\n fileNames = this.fileNames,\n computedFileNameFormatter = this.computedFileNameFormatter; // There is a slot for formatting the files/names\n\n if (this.hasNormalizedSlot(SLOT_NAME_FILE_NAME)) {\n return this.normalizeSlot(SLOT_NAME_FILE_NAME, {\n files: flattenedFiles,\n filesTraversed: clonedFiles,\n names: fileNames\n });\n }\n\n return computedFileNameFormatter(flattenedFiles, clonedFiles, fileNames);\n }\n },\n watch: (_watch = {}, _defineProperty(_watch, MODEL_PROP_NAME, function (newValue) {\n if (!newValue || isArray(newValue) && newValue.length === 0) {\n this.reset();\n }\n }), _defineProperty(_watch, \"files\", function files(newValue, oldValue) {\n if (!looseEqual(newValue, oldValue)) {\n var multiple = this.multiple,\n noTraverse = this.noTraverse;\n var files = !multiple || noTraverse ? flattenDeep(newValue) : newValue;\n this.$emit(MODEL_EVENT_NAME, multiple ? files : files[0] || null);\n }\n }), _watch),\n created: function created() {\n // Create private non-reactive props\n this.$_form = null;\n },\n mounted: function mounted() {\n // Listen for form reset events, to reset the file input\n var $form = closest('form', this.$el);\n\n if ($form) {\n eventOn($form, 'reset', this.reset, EVENT_OPTIONS_PASSIVE);\n this.$_form = $form;\n }\n },\n beforeDestroy: function beforeDestroy() {\n var $form = this.$_form;\n\n if ($form) {\n eventOff($form, 'reset', this.reset, EVENT_OPTIONS_PASSIVE);\n }\n },\n methods: {\n isFileValid: function isFileValid(file) {\n if (!file) {\n return false;\n }\n\n var accept = this.computedAccept;\n return accept ? accept.some(function (a) {\n return a.rx.test(file[a.prop]);\n }) : true;\n },\n isFilesArrayValid: function isFilesArrayValid(files) {\n var _this = this;\n\n return isArray(files) ? files.every(function (file) {\n return _this.isFileValid(file);\n }) : this.isFileValid(files);\n },\n defaultFileNameFormatter: function defaultFileNameFormatter(flattenedFiles, clonedFiles, fileNames) {\n return fileNames.join(', ');\n },\n setFiles: function setFiles(files) {\n // Reset the dragging flags\n this.dropAllowed = !this.noDrop;\n this.dragging = false; // Set the selected files\n\n this.files = this.multiple ? this.directory ? files : flattenDeep(files) : flattenDeep(files).slice(0, 1);\n },\n\n /* istanbul ignore next: used by Drag/Drop */\n setInputFiles: function setInputFiles(files) {\n // Try an set the file input files array so that `required`\n // constraint works for dropped files (will fail in IE11 though)\n // To be used only when dropping files\n try {\n // Firefox < 62 workaround exploiting https://bugzilla.mozilla.org/show_bug.cgi?id=1422655\n var dataTransfer = new ClipboardEvent('').clipboardData || new DataTransfer(); // Add flattened files to temp `dataTransfer` object to get a true `FileList` array\n\n flattenDeep(cloneDeep(files)).forEach(function (file) {\n // Make sure to remove the custom `$path` attribute\n delete file.$path;\n dataTransfer.items.add(file);\n });\n this.$refs.input.files = dataTransfer.files;\n } catch (_unused) {}\n },\n reset: function reset() {\n // IE 11 doesn't support setting `$input.value` to `''` or `null`\n // So we use this little extra hack to reset the value, just in case\n // This also appears to work on modern browsers as well\n // Wrapped in try in case IE 11 or mobile Safari crap out\n try {\n var $input = this.$refs.input;\n $input.value = '';\n $input.type = '';\n $input.type = 'file';\n } catch (_unused2) {}\n\n this.files = [];\n },\n handleFiles: function handleFiles(files) {\n var isDrop = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (isDrop) {\n // When dropped, make sure to filter files with the internal `accept` logic\n var filteredFiles = files.filter(this.isFilesArrayValid); // Only update files when we have any after filtering\n\n if (filteredFiles.length > 0) {\n this.setFiles(filteredFiles); // Try an set the file input's files array so that `required`\n // constraint works for dropped files (will fail in IE 11 though)\n\n this.setInputFiles(filteredFiles);\n }\n } else {\n // We always update the files from the `change` event\n this.setFiles(files);\n }\n },\n focusHandler: function focusHandler(event) {\n // Bootstrap v4 doesn't have focus styling for custom file input\n // Firefox has a `[type=file]:focus ~ sibling` selector issue,\n // so we add a `focus` class to get around these bugs\n if (this.plain || event.type === 'focusout') {\n this.hasFocus = false;\n } else {\n // Add focus styling for custom file input\n this.hasFocus = true;\n }\n },\n onChange: function onChange(event) {\n var _this2 = this;\n\n var type = event.type,\n target = event.target,\n _event$dataTransfer = event.dataTransfer,\n dataTransfer = _event$dataTransfer === void 0 ? {} : _event$dataTransfer;\n var isDrop = type === 'drop'; // Always emit original event\n\n this.$emit(EVENT_NAME_CHANGE, event);\n var items = arrayFrom(dataTransfer.items || []);\n\n if (HAS_PROMISE_SUPPORT && items.length > 0 && !isNull(getDataTransferItemEntry(items[0]))) {\n // Drop handling for modern browsers\n // Supports nested directory structures in `directory` mode\n\n /* istanbul ignore next: not supported in JSDOM */\n getAllFileEntries(items, this.directory).then(function (files) {\n return _this2.handleFiles(files, isDrop);\n });\n } else {\n // Standard file input handling (native file input change event),\n // or fallback drop mode (IE 11 / Opera) which don't support `directory` mode\n var files = arrayFrom(target.files || dataTransfer.files || []).map(function (file) {\n // Add custom `$path` property to each file (to be consistent with drop mode)\n file.$path = file.webkitRelativePath || '';\n return file;\n });\n this.handleFiles(files, isDrop);\n }\n },\n onDragenter: function onDragenter(event) {\n stopEvent(event);\n this.dragging = true;\n var _event$dataTransfer2 = event.dataTransfer,\n dataTransfer = _event$dataTransfer2 === void 0 ? {} : _event$dataTransfer2; // Early exit when the input or dropping is disabled\n\n if (this.noDrop || this.disabled || !this.dropAllowed) {\n // Show deny feedback\n\n /* istanbul ignore next: not supported in JSDOM */\n dataTransfer.dropEffect = 'none';\n this.dropAllowed = false;\n return;\n }\n /* istanbul ignore next: not supported in JSDOM */\n\n\n dataTransfer.dropEffect = 'copy';\n },\n // Note this event fires repeatedly while the mouse is over the dropzone at\n // intervals in the milliseconds, so avoid doing much processing in here\n onDragover: function onDragover(event) {\n stopEvent(event);\n this.dragging = true;\n var _event$dataTransfer3 = event.dataTransfer,\n dataTransfer = _event$dataTransfer3 === void 0 ? {} : _event$dataTransfer3; // Early exit when the input or dropping is disabled\n\n if (this.noDrop || this.disabled || !this.dropAllowed) {\n // Show deny feedback\n\n /* istanbul ignore next: not supported in JSDOM */\n dataTransfer.dropEffect = 'none';\n this.dropAllowed = false;\n return;\n }\n /* istanbul ignore next: not supported in JSDOM */\n\n\n dataTransfer.dropEffect = 'copy';\n },\n onDragleave: function onDragleave(event) {\n var _this3 = this;\n\n stopEvent(event);\n this.$nextTick(function () {\n _this3.dragging = false; // Reset `dropAllowed` to default\n\n _this3.dropAllowed = !_this3.noDrop;\n });\n },\n // Triggered by a file drop onto drop target\n onDrop: function onDrop(event) {\n var _this4 = this;\n\n stopEvent(event);\n this.dragging = false; // Early exit when the input or dropping is disabled\n\n if (this.noDrop || this.disabled || !this.dropAllowed) {\n this.$nextTick(function () {\n // Reset `dropAllowed` to default\n _this4.dropAllowed = !_this4.noDrop;\n });\n return;\n }\n\n this.onChange(event);\n }\n },\n render: function render(h) {\n var custom = this.custom,\n plain = this.plain,\n size = this.size,\n dragging = this.dragging,\n stateClass = this.stateClass,\n bvAttrs = this.bvAttrs; // Form Input\n\n var $input = h('input', {\n class: [{\n 'form-control-file': plain,\n 'custom-file-input': custom,\n focus: custom && this.hasFocus\n }, stateClass],\n // With IE 11, the input gets in the \"way\" of the drop events,\n // so we move it out of the way by putting it behind the label\n // Bootstrap v4 has it in front\n style: custom ? {\n zIndex: -5\n } : {},\n attrs: this.computedAttrs,\n on: {\n change: this.onChange,\n focusin: this.focusHandler,\n focusout: this.focusHandler,\n reset: this.reset\n },\n ref: 'input'\n });\n\n if (plain) {\n return $input;\n } // Overlay label\n\n\n var $label = h('label', {\n staticClass: 'custom-file-label',\n class: {\n dragging: dragging\n },\n attrs: {\n for: this.safeId(),\n // This goes away in Bootstrap v5\n 'data-browse': this.browseText || null\n }\n }, [h('span', {\n staticClass: 'd-block form-file-text',\n // `pointer-events: none` is used to make sure\n // the drag events fire only on the label\n style: {\n pointerEvents: 'none'\n }\n }, [this.labelContent])]); // Return rendered custom file input\n\n return h('div', {\n staticClass: 'custom-file b-form-file',\n class: [_defineProperty({}, \"b-custom-control-\".concat(size), size), stateClass, bvAttrs.class],\n style: bvAttrs.style,\n attrs: {\n id: this.safeId('_BV_file_outer_')\n },\n on: {\n dragenter: this.onDragenter,\n dragover: this.onDragover,\n dragleave: this.onDragleave,\n drop: this.onDrop\n }\n }, [$input, $label]);\n }\n});","import { getSel, isElement } from '../../../utils/dom'; // Helper to determine if a there is an active text selection on the document page\n// Used to filter out click events caused by the mouse up at end of selection\n//\n// Accepts an element as only argument to test to see if selection overlaps or is\n// contained within the element\n\nexport var textSelectionActive = function textSelectionActive() {\n var el = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document;\n var sel = getSel();\n return sel && sel.toString().trim() !== '' && sel.containsNode && isElement(el) ?\n /* istanbul ignore next */\n sel.containsNode(el, true) : false;\n};","var _watch, _methods;\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 { PROP_TYPE_ANY, PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../constants/props';\nimport { EVENT_NAME_CHANGE } from '../constants/events';\nimport { attemptBlur, attemptFocus } from '../utils/dom';\nimport { isBoolean } from '../utils/inspect';\nimport { looseEqual } from '../utils/loose-equal';\nimport { makeModelMixin } from '../utils/model';\nimport { sortKeys } from '../utils/object';\nimport { makeProp, makePropsConfigurable } from '../utils/props';\nimport { attrsMixin } from './attrs';\nimport { formControlMixin, props as formControlProps } from './form-control';\nimport { formCustomMixin, props as formCustomProps } from './form-custom';\nimport { formSizeMixin, props as formSizeProps } from './form-size';\nimport { formStateMixin, props as formStateProps } from './form-state';\nimport { idMixin, props as idProps } from './id';\nimport { normalizeSlotMixin } from './normalize-slot'; // --- Constants ---\n\nvar _makeModelMixin = makeModelMixin('checked', {\n defaultValue: null\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 }; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, idProps), modelProps), formControlProps), formSizeProps), formStateProps), formCustomProps), {}, {\n ariaLabel: makeProp(PROP_TYPE_STRING),\n ariaLabelledby: makeProp(PROP_TYPE_STRING),\n // Only applicable in standalone mode (non group)\n button: makeProp(PROP_TYPE_BOOLEAN, false),\n // Only applicable when rendered with button style\n buttonVariant: makeProp(PROP_TYPE_STRING),\n inline: makeProp(PROP_TYPE_BOOLEAN, false),\n value: makeProp(PROP_TYPE_ANY)\n})), 'formRadioCheckControls'); // --- Mixin ---\n// @vue/component\n\nexport var formRadioCheckMixin = Vue.extend({\n mixins: [attrsMixin, idMixin, modelMixin, normalizeSlotMixin, formControlMixin, formSizeMixin, formStateMixin, formCustomMixin],\n inheritAttrs: false,\n props: props,\n data: function data() {\n return {\n localChecked: this.isGroup ? this.bvGroup[MODEL_PROP_NAME] : this[MODEL_PROP_NAME],\n hasFocus: false\n };\n },\n computed: {\n computedLocalChecked: {\n get: function get() {\n return this.isGroup ? this.bvGroup.localChecked : this.localChecked;\n },\n set: function set(value) {\n if (this.isGroup) {\n this.bvGroup.localChecked = value;\n } else {\n this.localChecked = value;\n }\n }\n },\n isChecked: function isChecked() {\n return looseEqual(this.value, this.computedLocalChecked);\n },\n isRadio: function isRadio() {\n return true;\n },\n isGroup: function isGroup() {\n // Is this check/radio a child of check-group or radio-group?\n return !!this.bvGroup;\n },\n isBtnMode: function isBtnMode() {\n // Support button style in single input mode\n return this.isGroup ? this.bvGroup.buttons : this.button;\n },\n isPlain: function isPlain() {\n return this.isBtnMode ? false : this.isGroup ? this.bvGroup.plain : this.plain;\n },\n isCustom: function isCustom() {\n return this.isBtnMode ? false : !this.isPlain;\n },\n isSwitch: function isSwitch() {\n // Custom switch styling (checkboxes only)\n return this.isBtnMode || this.isRadio || this.isPlain ? false : this.isGroup ? this.bvGroup.switches : this.switch;\n },\n isInline: function isInline() {\n return this.isGroup ? this.bvGroup.inline : this.inline;\n },\n isDisabled: function isDisabled() {\n // Child can be disabled while parent isn't, but is always disabled if group is\n return this.isGroup ? this.bvGroup.disabled || this.disabled : this.disabled;\n },\n isRequired: function isRequired() {\n // Required only works when a name is provided for the input(s)\n // Child can only be required when parent is\n // Groups will always have a name (either user supplied or auto generated)\n return this.computedName && (this.isGroup ? this.bvGroup.required : this.required);\n },\n computedName: function computedName() {\n // Group name preferred over local name\n return (this.isGroup ? this.bvGroup.groupName : this.name) || null;\n },\n computedForm: function computedForm() {\n return (this.isGroup ? this.bvGroup.form : this.form) || null;\n },\n computedSize: function computedSize() {\n return (this.isGroup ? this.bvGroup.size : this.size) || '';\n },\n computedState: function computedState() {\n return this.isGroup ? this.bvGroup.computedState : isBoolean(this.state) ? this.state : null;\n },\n computedButtonVariant: function computedButtonVariant() {\n // Local variant preferred over group variant\n var buttonVariant = this.buttonVariant;\n\n if (buttonVariant) {\n return buttonVariant;\n }\n\n if (this.isGroup && this.bvGroup.buttonVariant) {\n return this.bvGroup.buttonVariant;\n }\n\n return 'secondary';\n },\n buttonClasses: function buttonClasses() {\n var _ref;\n\n var computedSize = this.computedSize;\n return ['btn', \"btn-\".concat(this.computedButtonVariant), (_ref = {}, _defineProperty(_ref, \"btn-\".concat(computedSize), computedSize), _defineProperty(_ref, \"disabled\", this.isDisabled), _defineProperty(_ref, \"active\", this.isChecked), _defineProperty(_ref, \"focus\", this.hasFocus), _ref)];\n },\n computedAttrs: function computedAttrs() {\n var disabled = this.isDisabled,\n required = this.isRequired;\n return _objectSpread(_objectSpread({}, this.bvAttrs), {}, {\n id: this.safeId(),\n type: this.isRadio ? 'radio' : 'checkbox',\n name: this.computedName,\n form: this.computedForm,\n disabled: disabled,\n required: required,\n 'aria-required': required || null,\n 'aria-label': this.ariaLabel || null,\n 'aria-labelledby': this.ariaLabelledby || null\n });\n }\n },\n watch: (_watch = {}, _defineProperty(_watch, MODEL_PROP_NAME, function () {\n this[\"\".concat(MODEL_PROP_NAME, \"Watcher\")].apply(this, arguments);\n }), _defineProperty(_watch, \"computedLocalChecked\", function computedLocalChecked() {\n this.computedLocalCheckedWatcher.apply(this, arguments);\n }), _watch),\n methods: (_methods = {}, _defineProperty(_methods, \"\".concat(MODEL_PROP_NAME, \"Watcher\"), function Watcher(newValue) {\n if (!looseEqual(newValue, this.computedLocalChecked)) {\n this.computedLocalChecked = newValue;\n }\n }), _defineProperty(_methods, \"computedLocalCheckedWatcher\", function computedLocalCheckedWatcher(newValue, oldValue) {\n if (!looseEqual(newValue, oldValue)) {\n this.$emit(MODEL_EVENT_NAME, newValue);\n }\n }), _defineProperty(_methods, \"handleChange\", function handleChange(_ref2) {\n var _this = this;\n\n var checked = _ref2.target.checked;\n var value = this.value;\n var localChecked = checked ? value : null;\n this.computedLocalChecked = value; // Fire events in a `$nextTick()` to ensure the `v-model` is updated\n\n this.$nextTick(function () {\n // Change is only emitted on user interaction\n _this.$emit(EVENT_NAME_CHANGE, localChecked); // If this is a child of a group, we emit a change event on it as well\n\n\n if (_this.isGroup) {\n _this.bvGroup.$emit(EVENT_NAME_CHANGE, localChecked);\n }\n });\n }), _defineProperty(_methods, \"handleFocus\", function handleFocus(event) {\n // When in buttons mode, we need to add 'focus' class to label when input focused\n // As it is the hidden input which has actual focus\n if (event.target) {\n if (event.type === 'focus') {\n this.hasFocus = true;\n } else if (event.type === 'blur') {\n this.hasFocus = false;\n }\n }\n }), _defineProperty(_methods, \"focus\", function focus() {\n if (!this.isDisabled) {\n attemptFocus(this.$refs.input);\n }\n }), _defineProperty(_methods, \"blur\", function blur() {\n if (!this.isDisabled) {\n attemptBlur(this.$refs.input);\n }\n }), _methods),\n render: function render(h) {\n var isRadio = this.isRadio,\n isBtnMode = this.isBtnMode,\n isPlain = this.isPlain,\n isCustom = this.isCustom,\n isInline = this.isInline,\n isSwitch = this.isSwitch,\n computedSize = this.computedSize,\n bvAttrs = this.bvAttrs;\n var $content = this.normalizeSlot();\n var $input = h('input', {\n class: [{\n 'form-check-input': isPlain,\n 'custom-control-input': isCustom,\n // https://github.com/bootstrap-vue/bootstrap-vue/issues/2911\n 'position-static': isPlain && !$content\n }, isBtnMode ? '' : this.stateClass],\n directives: [{\n name: 'model',\n value: this.computedLocalChecked\n }],\n attrs: this.computedAttrs,\n domProps: {\n value: this.value,\n checked: this.isChecked\n },\n on: _objectSpread({\n change: this.handleChange\n }, isBtnMode ? {\n focus: this.handleFocus,\n blur: this.handleFocus\n } : {}),\n key: 'input',\n ref: 'input'\n });\n\n if (isBtnMode) {\n var $button = h('label', {\n class: this.buttonClasses\n }, [$input, $content]);\n\n if (!this.isGroup) {\n // Standalone button mode, so wrap in 'btn-group-toggle'\n // and flag it as inline-block to mimic regular buttons\n $button = h('div', {\n class: ['btn-group-toggle', 'd-inline-block']\n }, [$button]);\n }\n\n return $button;\n } // If no label content in plain mode we dont render the label\n // See: https://github.com/bootstrap-vue/bootstrap-vue/issues/2911\n\n\n var $label = h();\n\n if (!(isPlain && !$content)) {\n $label = h('label', {\n class: {\n 'form-check-label': isPlain,\n 'custom-control-label': isCustom\n },\n attrs: {\n for: this.safeId()\n }\n }, $content);\n }\n\n return h('div', {\n class: [_defineProperty({\n 'form-check': isPlain,\n 'form-check-inline': isPlain && isInline,\n 'custom-control': isCustom,\n 'custom-control-inline': isCustom && isInline,\n 'custom-checkbox': isCustom && !isRadio && !isSwitch,\n 'custom-switch': isSwitch,\n 'custom-radio': isCustom && isRadio\n }, \"b-custom-control-\".concat(computedSize), computedSize && !isBtnMode), bvAttrs.class],\n style: bvAttrs.style\n }, [$input, $label]);\n }\n});","import { Vue } from '../../../vue';\nimport { SLOT_NAME_TABLE_COLGROUP } from '../../../constants/slots'; // --- Props ---\n\nexport var props = {}; // --- Mixin ---\n// @vue/component\n\nexport var colgroupMixin = Vue.extend({\n methods: {\n renderColgroup: function renderColgroup() {\n var fields = this.computedFields;\n var h = this.$createElement;\n var $colgroup = h();\n\n if (this.hasNormalizedSlot(SLOT_NAME_TABLE_COLGROUP)) {\n $colgroup = h('colgroup', {\n key: 'colgroup'\n }, [this.normalizeSlot(SLOT_NAME_TABLE_COLGROUP, {\n columns: fields.length,\n fields: fields\n })]);\n }\n\n return $colgroup;\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 } 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});","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});"],"sourceRoot":""}