{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./cartridges/app_accelerator_core/cartridge/client/default/js/applepayapi.js","webpack:///./cartridges/app_accelerator_core/cartridge/client/default/js/components/born-megamenu.js","webpack:///./cartridges/app_accelerator_core/cartridge/client/default/js/components/clientSideValidation.js","webpack:///./cartridges/app_accelerator_core/cartridge/client/default/js/components/customValidation.js","webpack:///./cartridges/app_accelerator_core/cartridge/client/default/js/components/detectFocusType.js","webpack:///./cartridges/app_accelerator_core/cartridge/client/default/js/components/header.js","webpack:///./cartridges/app_accelerator_core/cartridge/client/default/js/components/headerFocusManager.js","webpack:///./cartridges/app_accelerator_core/cartridge/client/default/js/components/miniCart.js","webpack:///./cartridges/app_accelerator_core/cartridge/client/default/js/components/progress.js","webpack:///./cartridges/app_accelerator_core/cartridge/client/default/js/components/puckSizer.js","webpack:///./cartridges/app_accelerator_core/cartridge/client/default/js/components/search.js","webpack:///./cartridges/app_accelerator_core/cartridge/client/default/js/components/shopTheLook.js","webpack:///./cartridges/app_accelerator_core/cartridge/client/default/js/helpers/giftMessageValidate.js","webpack:///./cartridges/app_accelerator_core/cartridge/client/default/js/helpers/imageUtilities.js","webpack:///./cartridges/app_accelerator_core/cartridge/client/default/js/helpers/modules.js","webpack:///./cartridges/app_accelerator_core/cartridge/client/default/js/helpers/pages.js","webpack:///./cartridges/app_accelerator_core/cartridge/client/default/js/helpers/polyfills.js","webpack:///./cartridges/app_accelerator_core/cartridge/client/default/js/helpers/urlUtilities.js","webpack:///./cartridges/app_accelerator_core/cartridge/client/default/js/helpers/utilities.js","webpack:///./cartridges/app_accelerator_core/cartridge/client/default/js/modules/module.infinite-scroll.js","webpack:///./cartridges/app_accelerator_core/cartridge/client/default/js/product/productUtils.js","webpack:///./cartridges/app_accelerator_core/cartridge/client/default/js/product/widget3D.js","webpack:///./cartridges/app_accelerator_core/cartridge/client/default/js/search/index.js","webpack:///./cartridges/app_rna_core/cartridge/client/default/js/helpers/modules.js","webpack:///./cartridges/app_rna_core/cartridge/client/default/js/helpers/pages.js","webpack:///./cartridges/app_rna_core/cartridge/client/default/js/helpers/pubSub.js","webpack:///./cartridges/app_rna_core/cartridge/client/default/js/helpers/serviceWorkerEvents.js","webpack:///./cartridges/app_rna_core/cartridge/client/default/js/main.js","webpack:///./cartridges/app_rna_core/cartridge/client/default/js/product/productUtils.js","webpack:///./node_modules/@borngroup/born-modal/dist/born-modal.min.js","webpack:///./node_modules/@borngroup/born-modal/node_modules/body-scroll-lock/lib/bodyScrollLock.min.js","webpack:///./node_modules/@borngroup/born-toggle/dist/born-toggle.min.js","webpack:///./node_modules/@borngroup/born-utilities/dist/born-utilities.min.js","webpack:///./node_modules/body-scroll-lock/lib/bodyScrollLock.esm.js","webpack:///./node_modules/es6-promise-promise/index.js","webpack:///./node_modules/es6-promise/dist/es6-promise.js","webpack:///./node_modules/lazysizes/lazysizes.js","webpack:///./node_modules/lodash/_Symbol.js","webpack:///./node_modules/lodash/_baseGetTag.js","webpack:///./node_modules/lodash/_baseTrim.js","webpack:///./node_modules/lodash/_freeGlobal.js","webpack:///./node_modules/lodash/_getRawTag.js","webpack:///./node_modules/lodash/_objectToString.js","webpack:///./node_modules/lodash/_root.js","webpack:///./node_modules/lodash/_trimmedEndIndex.js","webpack:///./node_modules/lodash/debounce.js","webpack:///./node_modules/lodash/isObject.js","webpack:///./node_modules/lodash/isObjectLike.js","webpack:///./node_modules/lodash/isSymbol.js","webpack:///./node_modules/lodash/now.js","webpack:///./node_modules/lodash/toNumber.js","webpack:///./node_modules/process/browser.js","webpack:///./node_modules/scrollmonitor/scrollMonitor.js","webpack:///(webpack)/buildin/global.js","webpack:///vertx (ignored)","webpack:///external \"jQuery\""],"names":["_typeof","o","Symbol","iterator","constructor","prototype","launchApplePay","action","location","ApplePaySession","window","SFRA","SitePreferences","enableApplePayApi","canMakePayments","handleResponse","response","json","then","status","err","Error","filterEvent","e","filteredEvent","prop","Event","hasOwnProperty","postJson","url","data","JSON","stringify","fetch","method","credentials","headers","body","doRedirect","redirect","href","processServerResponse","getJson","updateAppleErrorObject","ApplePayErrors","length","forEach","error","applePayError","ApplePayError","code","contactField","message","push","submitOrder","formAction","form","document","createElement","appendChild","submit","oncancelHandler","setSession","cancel","onpaymentauthorizedHandler","onpaymentauthorized","session","completePayment","STATUS_SUCCESS","result","errors","STATUS_FAILURE","onpaymentmethodselectedHandler","onpaymentmethodselected","updatedRequest","total","update","newTotal","newLineItems","lineItems","undefined","completePaymentMethodSelection","onshippingcontactselectedHandler","onshippingcontactselected","shippingMethods","newShippingMethods","completeShippingContactSelection","onshippingmethodselectedHandler","onshippingmethodselected","completeShippingMethodSelection","prepareBasket","sku","page","abort","onvalidatemerchantHandler","onvalidatemerchant","Object","assign","hostname","completeMerchantValidation","s","oncancel","getRequest","request","responseObj","applePayApiButton","show","APPLE_PAY_VERSION","applePayVersion","ATTR_SKU","ATTR_PAGE","$","protocol","supportsVersion","hide","off","on","classList","add","setAttribute","setTimeout","removeClass","removeAttr","attr","parseFloat","amount","begin","init","Urls","applePayRedirect","Megamenu","options","_classCallCheck","originalOptions","objectAssign","setProperties","menu","menuSelector","querySelector","console","warn","menuOriginalHTML","innerHTML","reInitOnBreakpointChange","addEventListener","matchMedia","currentBreakpoint","breakpoint","matches","reInitialize","bind","setupInteractions","_createClass","key","value","destroy","textContent","manageMenuControlListeners","insertAdjacentHTML","setupEventCallbacks","triggers","querySelectorAll","triggerSelector","call","setupMenuTriggers","setupMenuControlListeners","_beforeTriggerUnset","beforeTriggerUnset","_afterTriggerSet","afterTriggerSet","_afterMenuSet","afterMenuSet","_afterTriggerUnset","afterTriggerUnset","_afterMenuUnset","afterMenuUnset","detach","keys","menuListeners","type","handler","createMenuControlListeners","self","getCursorSpeed","unsetOnClick","evt","isKeyboardEvent","unsetCurrentSubmenu","unsetOnKeydown","unsetOnMouseleave","unsetSiblings","unsetSubmenuOnFocusOut","isActive","lastActiveTrigger","getLastActiveTrigger","activeElement","megamenu","isSiblingTrigger","target","contains","unsetOnClickOut","newX","Math","abs","clientX","newY","clientY","diffX","_origX","diffY","_origY","isMouseMoveFast","events","menuActiveClass","itemActiveClass","waitForTransition","selector","targetSelector","property","disableUnsetSelf","hoverDelay","responsive","sort","_lowestBreakpoint","i","_mergeBreakpointProperties","keyboardNavigation","horizontal","vertical","manageTabIndex","breakpointOpts","settings","a","b","trigger","index","menuItemID","id","getMenuItemID","parent","getTriggerParent","siblings","getTriggerSiblings","indexOf","hasAttribute","getTriggerTarget","setInitialTabIndex","setupKeyboardHandlers","optionsCustomAttributes","children","getTriggerChildren","setupActivationHandlers","concat","customAttributes","getCustomAttributes","updateAttributes","unsetSiblingsSelector","eventsArray","getEventsArray","currentEvt","tabIndex","_previousFocus","shiftFocus","setDirection","moveForward","consumedChecks","elConsumesSpace","getDirectionTrigger","forceFocus","el","offsetParent","firstElementChild","offsetHeight","randomString","floor","Date","getTime","random","toString","substr","attrKey","setAttributeValue","attrName","attrObject","closest","getAttribute","parentNode","closestParentContainer","getClosestSiblingsParent","filter","currentTrigger","nodeName","relatedTarget","testTrigger","matchingSiblingsAttribute","isTriggerActive","followingTrigger","getMatchingCharTrigger","charCode","matchingTrigger","toUpperCase","trim","charCodeAt","split","Array","isArray","currentEventGroup","scope","evtType","isTouch","isKeyboard","allowClickThrough","clickThroughSelector","preventDefault","minDelay","overstay","toggleTriggerActive","keyCode","stopImmediatePropagation","clearInterval","item","isLeftArrow","isUpArrow","isRightArrow","isDownArrow","matchesHorizontal","matchesVertical","isHorizontalNavigation","isVerticalNavigation","directionTrigger","triggerIsActive","targetTrigger","isMousehover","setTriggerActive","SCOPE","activeWaitEl","canDetectTransition","whichTransition","_transitionEndHandler","setMenuActive","propertyName","removeEventListener","isEscKey","targetTriggerSelector","allowUnset","getMatchingActiveTrigger","stopPropagation","targetEl","getComputedStyle","transitionDuration","arguments","activeTriggers","getActiveTriggers","setMenuInactive","remove","callback","commonContainer","activeElements","FORM_SELECTOR","FIELD_SELECTOR","FIELD_INVALID_CLASS","FEEDBACK_SUCCESS_CLASS","FEEDBACK_INVALID_CLASS","FEEDBACK_VISIBILITY_CLASS","VALIDATION_LIST","VALIDATION_MESSAGES","isFirstInvalidField","_getFormElement","_getFormFields","containerEl","_validateForm","valid","checkFormValidity","_getFeedbackEl","field","describedByID","createElWithAttrs","class","role","_generateFeedbackEl","cleanID","name","replace","_validateAndPreventDefault","validateField","setFocusOnFirst","_validateIfInvalid","_matchesValidationSelector","validationName","_setCustomErrorsByGroup","errorGroup","fieldName","matchedEl","displayValidity","_getOverrideValidationMessage","validationMessage","validity","patternMismatch","rangeOverflow","rangeUnderflow","tooLong","tooShort","typeMismatch","valueMissing","_canValidateField","setCustomValidity","getCustomValidation","clearFormSuccess","customError","silent","setFocus","focus","clearValidity","clearFormErrors","invalidFields","successFeedbackEls","currentFeedback","feedbackEl","isValid","currentField","is","val","hasClass","blur","validateForm","setCustomErrors","errorList","messageIsFunction","addValidation","validationMethod","setDefaultMessages","messageObject","setupForm","tagName","setupFormList","formList","callbackOnElements","validateBirthDayDate","birthDayEle","getElementById","birthMonthEle","birthYearEle","currentDate","birthDay","birthMonth","birthYear","parseInt","day","month","year","listOfDays","lyear","birthDate","_createForOfIteratorHelper","r","t","_unsupportedIterableToArray","_n","F","n","done","f","TypeError","u","next","return","_arrayLikeToArray","slice","from","test","validationRegEx","phone","postalCode","ch","regex","format","de","at","cz","fr","mc","gb","jp","in","it","gr","tr","be","nl","lu","dk","se","es","pt","sg","my","th","au","us","ca","dz","ar","bm","br","bn","cl","cn","cr","hr","cy","ec","fi","gg","hn","hu","ir","il","je","kz","kp","kr","kw","lb","ls","li","mt","mu","mx","np","nz","ni","no","ps","pa","ph","pl","ro","ru","sa","sk","si","so","za","tw","tn","ua","ve","vn","default","taxCode","parser","DOMParser","validator","_getPostalCodeStructure","postalField","validationContext","attributes","countrySelector","choosedCountry","selectedCountryID","Constants","LOCALE_COUNTRY","toLowerCase","_getTaxCodeStructure","selectedCountry","validatePhone","validateSuppliedPhone","regSupPhone","RegExp","suppliedPhoneNumberRegExp","validateIntlPhone","intlTelInputGlobals","intlInstance","getInstance","isValidNumber","postalCodeValidation","postalValue","postalStructure","taxCodeValidation","taxValue","taxField","taxStructure","validateNumeric","validateCaseId","validateArabicAndLatin","$currentSiteId","$isGiftCardMessage","whiteSpaceStrip","koreanAndEnglishPatternMatch","noKoreanNoEnglishPatternMatch","acceptableText","validateArabic","validateArabicForUAEOrKSA","validateAlphanumeric","validateGiftmessage","validateLatin","validateNonPoBox","validateBillingStateCode","stateField","localeCountry","validateMatch","matchingEl","matchingElValue","validateRequired","validateConstraints","validationRules","parse","currentRegex","dataset","constraintKey","constraintValue","_toggleDependentRequired","dependentEls","setRequired","currentInput","required","_hasDependentValue","_iterator","_step","dependentEl","checked","setupRequiredDependency","formEl","dependencyGroupEls","currentGroup","addEventListenerList","cleanInputScripts","parsedHTML","parseFromString","validateMaxLength","maxLength","validateRequiredConsent","yesField","_getConsentYesField","validateTextareaWithPattern","pattern","usePattenMessage","Resources","validateSpecialCharsAddress","matchingFormat","phoneFormat","numericFormat","alphabetFormat","arabicFormat","taxCodeFormat","alphanumericFormat","giftmessageFormat","latinFormat","validateAreaInput","areaFormat","nonPoBoxFormat","caseIdLength","invalidBirthDate","invalidSpecialCharsInAddress","enableContactUsEmailPhoneNumber","requiredField","labels","dataValidateMax","constraints","postalFormatX","postalFormat","emptyRadio","invalidEmail","label","targetForm","matchingForms","detectFocusType","toggleFocusType","_toggleOverlay","set","setOverlay","innerWidth","breakpoints","small","unsetOverlay","_checkIsLevel1","triggerEl","setupMobileFlyoutTrigger","toggle","afterSet","toggleInert","disableBodyScroll","allowTouchMove","allowScrollableAreas","afterUnset","enableBodyScroll","_getFirstTabMatch","tabAnchors","firstTabMatch","_updateFlyoutState","megaMenu","updatePuck","loadOnDemandImage","setupMegamenu","MegaMenu","unit","isLevel1","style","marginRight","headerEl","publishEvent","scrollDirection","closeSearch","loginFormError","subscribe","notificationElem","migratedCustomer","sliderMegaMenu","container","scrollDuration","leftArrow","find","rightArrow","menuItem","itemWidth","each","offsetWidth","paddleMargin","getMenuWrapperSize","outerWidth","menuWrapperSize","getMenuSize","menuSize","menuInvisibleSize","getMenuPosition","scrollLeft","menuPosition","menuEndOffset","addClass","animate","menuHandler","isInViewport","top","offsetTop","left","offsetLeft","width","height","pageYOffset","innerHeight","pageXOffset","checkAutoplay","video","playButton","click","getNewsLetterLinkText","newsLetterConfig","newsLetterSubscriptionConfig","currentLocale","LOCALE_XML_CODE","newsLetterConfigJSON","getLoginLinkText","loginTextConfig","loginTextConfigJSON","modalOpenWithContent","paramsContent","modalContent","content","html","modalInstance","originalCallback","tracking","afterCreateCallback","modal","initModules","validation","BornModal","dialogOpen","modalParams","targetModalContent","getModal","modalID","afterOpenCallback","open","progress","ajax","dataType","xhrFields","withCredentials","renderedTemplate","fail","xhr","textStatus","log","enableNewsletterSubscriptionLink","isHomePage","newsLetterSubscriptionLinkText","encodeURI","modalOptions","modalClass","overlayOthers","appendParamsToURL","newsLetterSubscribeUrl","isModalLoadFromLink","enableLoginLink","loginPageLinkText","sessionData","loggedin","accountShow","targetURL","targetModalID","targetModalClass","loginShow","rurl","renderView","keepAlive","setHeaderHeight","headerContainerEl","headerPromo","headerNavEl","experienceComponent","moduleGridItem","headerMainNav","headerHeight","headerNavHeight","outerHeight","clientHeight","css","setupSearch","setupHeaderFocus","headerFlyoutEl","headerFocusManagers","_headerFocusHandler","_hasVisibleFocusManagers","isSet","minicartTrigger","minicartDropdown","_renderMinicartDropdown","restrictSiteAccessForLoggedInUser","isCustomerLoggedIn","applepayapi","LineItem","initMethods","modules","_handleMinicartLoad","includeHeader","get","handleFocusTrap","firstFocusableElement","lastFocusableElement","applePayButton","isTabPressed","navigator","userAgent","keyPressed","firstElement","unset","updateMinicartCount","qtyTotal","isNaN","minicartContainerEl","minicartTriggerDescription","cartCountLabel","cartCountLabelPlural","currentEl","openMinicart","closeMinicart","setupMiniCart","beforeSet","clearAllBodyScrollLocks","loaderEl","loaderIndicator","loaderGroupFace","loaderGroupEyes","loaderClip","loaderClipDefs","loaderClipPath","clipPathValue","fn","spinner","element","Fn","start","showLoader","stop","hideLoader","setAlt","matchedContainerEl","HTMLElement","nameSpace","d","points","messageEl","removeChild","cancelTransitions","puckContainer","puckEl","puckContainerPosX","getBoundingClientRect","targetElRect","targetElComputed","targetElPaddingLeft","targetElPaddingRight","newPosX","transform","SUGGESTIONS_URL_EL","ENDPOINT","MIN_CHARS","getSearchContainer","getSuggestionsContainer","emptyContainer","searchContainer","suggestionsContainer","_handleSearchTracking","formUrl","delayedPageView","delayPageView","debounce","trackEvent","trackObject","asyncURL","GTMVirtualView","reqPath","searchShow","kwCAR","searchTerm","category","searchCategory","qString","asyncParams","pageTemplate","resetProductAnchors","processResponse","getSuggestions","appendParamToURL","context","success","preventEmptySearch","setupSearchTrigger","queryInputEl","plpColorStrap","searchTrigger","searchInputs","debounceSuggestions","miniCartOpen","lastContainerClicked","lastVideoElement","videoPaused","cacheStorage","openOverlay","shopLookOverlay","overlayBackground","overlayContent","overlayHeading","containerID","renderFeaturedProducts","closeOverlay","toggleDeactive","URL","isMobile","handleShopTheLookClick","videoElement","pause","dataLayerPush","isElementFullyInViewport","clientRect","bottom","documentElement","right","clientWidth","onVisibilityChange","old_visible","visible","dataLayerValue","shop_the_look_title","initializeShopTheLook","miniCartIconContainer","shopTheLookOverlayCloseButton","overlayOpened","shopTheLookButton","prev","event","parentElement","play","lines","numOfAllowedLines","valueHistory","currentValueIndex","saveValueToHistory","getKeyNum","keynum","which","limitLines","giftMessageAllowedLinesCount","rows","ctrlKey","startInd","selectionStart","endInd","selectionEnd","substring","setNumberOfLines","getNumberOfLines","getPasteDataToElement","clipPasteData","end","charCount","countBackSlashChars","size","pastedData","cursorPos","newLnChrCount","reqCharsCount","clipNewLineCnt","reqCharCount","ceil","newLineCntSelectTxt","existLineCount","pasteDataToElement","allowChars","flag","limitPasteData","clipboardData","getData","clipboard","readText","text","catch","pasteEndIndex","pastedLines","join","str","ristrictNumberOfLinesInGiftMessage","limitedElements","getElementsByClassName","select","writeText","lazyLoadType","currentImage","lazySizes","loader","unveil","toggles","query","Toggle","breakpointRanges","carousels","_this","Carousel","fixitTrigger","_this2","FixitTrigger","elements","modalTrigger","_this3","ModalTrigger","quickView","QuickView","quickAdd","QuickAdd","windowScrolls","_this4","WindowScroll","wishlistTrigger","_this5","WishlistTrigger","saveForLaterTrigger","_this6","enableSaveForLater","SaveForLaterTrigger","productTile","_this7","ProductTile","productTilePackshots","productPackshotInit","productImageGalleryItem","productImageGalleryItemInit","productTileQuickShop","Init","ajaxForm","_this8","AJAXForm","recaptchaForm","_this9","RecaptchaForm","videos","_this10","Video","storeLocator","_this11","StoreLocator","inputFormat","_this12","InputFormat","pageMotion","_this13","PageMotion","authTrigger","_this14","Auth","addressVerification","_this15","addressVerificationEnabled","AddressVerification","addressSuggestion","_this16","AddressSuggestion","addressAutocomplete","_this17","addressAutocompleteEnabled","AddressAutofill","floatingLabels","_this18","FloatingLabels","_this19","TrackingLayer","passwordShow","_this20","PasswordShow","intlPhone","_this21","IntlPhone","giftMsgFont","_this22","GiftMsgFont","customSelect","_this23","CustomSelect","CountrySelector","formfieldBinding","_this24","FormfieldBinding","inputAutoApply","_this25","InputAutoApply","navTabs","navTabsInit","personalisationModalHelper","personalisationModal","cmsSearch","cmsSearchInit","langEnablement","langEnablementInit","styleguide","Styleguide","search","Search","product","Product","cart","Cart","account","Account","checkout","Checkout","wishlist","Wishlist","orderHistory","OrderHistory","pageDesigner","PageDesigner","storesAssignmentPage","StoresAssignment","contact","Contact","emailUnsubscribe","EmailUnsubscribe","orderDetails","OrderDetails","paymentLink","PaymentLink","profileEditCAPI","isIE10","appVersion","isHighContrastMode","IEImageSupport","MSInputMethodContext","documentMode","picturefill","objectFitImages","allImages","readyImages","watchMQ","stringFormat","String","string","supportsPlaceholderShown","replaceParam","removeParamFromURL","separator","encodeURIComponent","hash","params","domain","paramUrl","newParams","_url","toAbsoluteUrl","charAt","getQueryStringParams","qs","defaultValue","$0","$1","$2","$3","decodeURIComponent","serializeObject","object","loadJsFile","appendTo","updateQueryStringEl","queryStringParams","pageQueryStringEl","newQueryString","updateHistoryState","customPathName","stateObject","stateTitle","baseURL","origin","pathname","newURL","history","lastOverlayTrigger","globalWrapper","xxsmall","xsmall","medium","xmedium","large","max","min","obj","targetContainer","giftMsgTextAreaElement","enableGiftMessageLinesRestriction","currentProperty","initPages","pages","moduleName","eventName","detail","bubbles","cancelable","eventString","CustomEvent","createEvent","initCustomEvent","dispatchEvent","initEvent","_getOverlayTarget","targetElement","coverAll","headerOptions","currentEvent","source","createErrorNotification","handleError","responseJSON","redirectUrl","errorMessage","genericErrorMessage","inert","removeAttribute","getPageActionData","pageDataEl","queryString","getNextPageNumber","infiniteTrigger","pageNumber","updatePageHistory","nextPageNumber","cgid","urlParams","setupInfiniteScroll","pageInsertCallback","distance","infiniteWatcher","scrollMonitor","create","one","getChildProducts","productType","getProductType","isProductSet","productData","productList","currentItem","currentItemQty","getQuantitySelected","currentItemData","pid","getPidValue","getOptions","list","referenceEl","productContainer","getProductContainer","map","optionsEl","selectedValueId","selectedIndex","optionId","updateSingleID","newID","updateIDText","updatePIDs","updateName","newName","updateImages","responseImages","imageSelector","updateImageDifference","updateImageList","updateSingleImage","imageCarousels","imageCarousel","imageCarouselConfig","slick","carouselEnabled","unslicked","imageCarouselLength","slideCount","childElementCount","imageCountDifference","hasNewImages","imageTemplate","cloneNode","lastElementChild","imageContainer","currentImgObj","currentImgEl","isPdpRelatedVariationsProduct","src","title","alt","updateURLs","urlEls","queryParams","urlType","variationGroup","productGrouping","updatedURL","updateQueryStrings","updateProductPrice","priceEl","priceTaxEl","outerHTML","price","available","sellable","sales","getQuantitySelector","quantitySelector","initShareLink","shareLinks","onclick","encodedUrl","urlEmail","urlArrEmail","finalUrlEmail","urlFacebook","urlArrFacebook","finalUrlFacebook","urlTwitter","urlArrTwitter","finalUrlTwitter","urlPinterest","urlArrPinterest","finalUrlPinterest","urlWhatsapp","urlArrWhatsapp","finalUrlWhatsapp","chooseColorBackToPdp","selectedStrapOption","defaultStrapOption","addToCart","stockAvailability","availabilityStatus","availabilityNotification","showNotify","backToProductBtn","productInStock","parentProductInstock","strapInstock","disabled","updateApplePayETA","applePayButtonButton","applePayForm","formData","serialize","addToBagButton","parents","cache","async","addressSummary","availabilityData","isAvailable","errorMsg","widget3DConfiguration","iFrame","tabNav","tabStrapType","tabStrapColor","strapType","strapColor","addStrapColor","strapColors","fontType","engravLine1Elem","engravLine2Elem","embossElem","embossFontType","embossFoilType","embossDots","backToProduct","collapseButtons","ctaWrapper","pdpContainer","tabAdj","isPdpPage","VAS_TYPE_EMBOSSING","VAS_TYPE_ENGRAVING","VAS_TYPE_BRACELETADJ","IFRAME_MESSAGE_SUCCESS","IFRAME_MESSAGE_AR_CLICKED","sendMessage","contentWindow","postMessage","strapFrameLoadForMobile","iframeStates","strapId","currentTarget","myParam","receiveMessage","setVTOButton","arStates","setQrCodeMessage","gtmEvent","GTMEventView","vto_button_text","qrCodeMessage","qrCodeContent","sendMessages","strap","frame","strapFrame","iframes","currentFrame","receiveMessageFromIframe","getDots","vasName","view","embossingMsg_1","vasFontType","embossingFoilType","engravingMsg_1","engravingMsg_2","vasType","FontType","engravingFont","embossingFont","foilType","embossingColor","addOrRemoveHiddenClass","ctaWrapperClass","addRefillButton","refillContainer","tabId","disableconfig","selectedColor","thisStrap","_toggle","once","isWithoutDot","embossDotValue","getFontType","getFoilType","_toConsumableArray","_arrayWithoutHoles","_iterableToArray","_nonIterableSpread","_getToggledRefinements","toggledRefinements","_getToggledGridFeed","selectedLayout","toggleHiddenRefinements","showMore","sibilings","lessText","moreText","_getRefineBarIsToggled","refineBarTrigger","_handleRefinementTracking","refinementTrackingEl","_updateResults","requestUrl","refineBarToggled","strapColorCarousel","requestData","selectedUrl","loadingContainer","updateHTML","appendHTML","append","replaceWith","updateHistory","targetFocus","preventScroll","yotpoEnabled","yotpo","initWidgets","_updateSortOptions","sortOptionsEl","sortOptions","option","matchedOptionEls","currentOptionEl","itemArray","readCookie","_setItemListName","itemListid","itemListName","itemObj","newMap","Map","newArr","values","createCookie","pushDataLayer","itemId","dataLayer","listView","getListName","products","listName","strapStatus","isStrapUnvailable","_ev","strapCount","closeStrap","_colorStrap","_colorStrapOptions","strapName","_strap","_parent","_starpVal","strapView","_parentNode","starpBar","$strapBarDialogToClose","$iframeToReset","$iframe","_lastVal","_active","isDefaultStrap","dataStrapInstock","empty","pdpLinkEle","pdpLink","optionObj","strapCarouselView","addItemCookie","productShow","productShowQuickAdd","productShowQuickView","selectorElements","_resetElementListeners","setupSortListener","setupShowMoreListener","setupFiltersListener","setupContentTabListener","toggleGridFeed","setupPopListener","searchMain","requestParams","searchShowAjax","currentSortEl","sortElAnchors","currentSortAnchor","showMoreBtn","gridFooter","loadMore","enableInfiniteScroll","pageNumberEl","refinementActions","currentAction","refinementAction","refinementID","contentSearchTrigger","contenSearchResultsEl","productStrap","slidesToShow","slidesToScroll","allAnchors","currentAnchor","gridFeedToggleEls","productGridEl","gridFeedToggle","searchLayout","descriptionMobileTruncate","plpDescription","readMoreBtn","readLessBtn","scrollHeight","scrollWidth","display","setupSort","setupShowMore","setupFilters","setupContentTab","coreModules","nameConverter","NameConverter","loqateAddressCapture","enableLoqateAddressCapture","corePages","profileEdit","subscriptions","requestprice","subscribers","unsubscribe","splice","publish","subscriberCallback","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_nonIterableRest","l","sendCustomerHashToServiceWorker","info","serviceWorker","ready","registration","active","loginState","userLoginState","getCookie","cookieName","cookie","_el$split","_el$split2","getHashFromCookieAndSend","hashData","module","exports","__webpack_public_path__","staticPath","serviceWorkerCartridgeEnabled","enableServiceWorker","ServiceWorkerPreference","akamaiEnabled","serviceWorkerEvents","polyfills","header","miniCart","enableShopTheLook","ShopTheLook","_ele","_eleProductTile","_quickshopOptions","_eleQuichShopBtn","productUtils"],"mappings":";QAAA;QACA;QACA;QACA;;;QAGA;QACA;QACA;QACA,QAAQ,oBAAoB;QAC5B;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;QACA;;QAEA;;;QAGA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;;;;QAIA;QACA;QACA,yCAAyC,soHAAsoH;QAC/qH;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;QAEA;QACA;QACA;QACA;;;QAGA;;QAEA;QACA,iCAAiC;;QAEjC;QACA;QACA;QACA,KAAK;QACL;QACA;QACA;QACA,MAAM;QACN;;QAEA;QACA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,wBAAwB,kCAAkC;QAC1D,MAAM;QACN;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1E;QACA,iDAAiD,cAAc;QAC/D;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,yCAAyC,iCAAiC;QAC1E,gHAAgH,mBAAmB,EAAE;QACrI;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;QAEA;QACA,0CAA0C,oBAAoB,WAAW;;QAEzE;QACA;QACA;QACA;QACA,gBAAgB,uBAAuB;QACvC;;;QAGA;QACA;;;;;;;;;;;;;ACrMA;AAAA;AAAA;AACa;;AAAA,SAAAA,QAAAC,CAAA,sCAAAD,OAAA,wBAAAE,MAAA,uBAAAA,MAAA,CAAAC,QAAA,aAAAF,CAAA,kBAAAA,CAAA,gBAAAA,CAAA,WAAAA,CAAA,yBAAAC,MAAA,IAAAD,CAAA,CAAAG,WAAA,KAAAF,MAAA,IAAAD,CAAA,KAAAC,MAAA,CAAAG,SAAA,qBAAAJ,CAAA,KAAAD,OAAA,CAAAC,CAAA;AAEb,SAASK,cAAcA,CAACC,MAAM,EAAEC,QAAQ,EAAEC,eAAe,EAAE;EACvD;EACA,IAAIC,MAAM,CAACC,IAAI,CAACC,eAAe,CAACC,iBAAiB,IAAIH,MAAM,CAACD,eAAe,IAAIC,MAAM,CAACD,eAAe,CAACK,eAAe,CAAC,CAAC,EAAE;IAAA,IAc5GC,cAAc,GAAvB,SAASA,cAAcA,CAACC,QAAQ,EAAE;MAC9B,OAAOA,QAAQ,CAACC,IAAI,CAAC,CAAC,CACjBC,IAAI,CAAC,UAASD,IAAI,EAAE;QACjB,IAAID,QAAQ,CAACG,MAAM,IAAI,GAAG,IAAIH,QAAQ,CAACG,MAAM,GAAG,GAAG,EAAE;UACjD;UACA,OAAOF,IAAI;QACf;QACA;QACA,IAAIG,GAAG,GAAG,IAAIC,KAAK,CAACJ,IAAI,GAAGA,IAAI,CAACE,MAAM,GAAG,eAAe,CAAC;QACzDC,GAAG,CAACJ,QAAQ,GAAGC,IAAI;QACnB,MAAMG,GAAG;MACb,CAAC,CAAC;IACV,CAAC;IAED;AACR;AACA;AACA;AACA;IAJQ,IAKSE,WAAW,GAApB,SAASA,WAAWA,CAACC,CAAC,EAAE;MACpB,IAAIC,aAAa,GAAG,CAAC,CAAC;MACtB,KAAK,IAAIC,IAAI,IAAIF,CAAC,EAAE;QAChB,IAAI,CAACG,KAAK,CAACrB,SAAS,CAACsB,cAAc,CAACF,IAAI,CAAC,EAAE;UACvCD,aAAa,CAACC,IAAI,CAAC,GAAGF,CAAC,CAACE,IAAI,CAAC;QACjC;MACJ;MACA,OAAOD,aAAa;IACxB,CAAC;IAAA,IAEQI,QAAQ,GAAjB,SAASA,QAAQA,CAACC,GAAG,EAAEC,IAAI,EAAE;MACzB,IAAIb,IAAI,GAAGa,IAAI;MACf,IAAI9B,OAAA,CAAO8B,IAAI,MAAK,QAAQ,EAAE;QAC1Bb,IAAI,GAAGc,IAAI,CAACC,SAAS,CAACF,IAAI,CAAC;MAC/B,CAAC,MAAM,IAAI,OAAOA,IAAI,KAAK,QAAQ,EAAE;QACjC,MAAM,IAAIT,KAAK,CAAC,0CAA0C,CAAC;MAC/D;MACA,OAAOY,KAAK,CAACJ,GAAG,EAAE;QACdK,MAAM,EAAE,MAAM;QACdC,WAAW,EAAE,SAAS;QACtBC,OAAO,EAAE;UACL,cAAc,EAAE,kBAAkB;UAClC,QAAQ,EAAE;QACd,CAAC;QACDC,IAAI,EAAEpB;MACV,CAAC,CAAC,CAACC,IAAI,CAACH,cAAc,CAAC;IAC3B,CAAC;IAAA,IAEQuB,UAAU,GAAnB,SAASA,UAAUA,CAAA,EAAG;MAClB,IAAIC,QAAQ,EAAE;QACV;QACA/B,QAAQ,CAACgC,IAAI,GAAGD,QAAQ;MAC5B;IACJ,CAAC;IAAA,IAEQE,qBAAqB,GAA9B,SAASA,qBAAqBA,CAACzB,QAAQ,EAAE;MACrC,IAAI,CAACA,QAAQ,EAAE;QACX;MACJ;MACA;MACA,IAAI,OAAOA,QAAQ,CAACuB,QAAQ,KAAK,WAAW,EAAE;QAC1C;QACAA,QAAQ,GAAGvB,QAAQ,CAACuB,QAAQ;MAChC;IACJ,CAAC;IAAA,IAEQG,OAAO,GAAhB,SAASA,OAAOA,CAACb,GAAG,EAAE;MAClB,OAAOI,KAAK,CAACJ,GAAG,EAAE;QACdM,WAAW,EAAE,SAAS;QACtBC,OAAO,EAAE;UACL,QAAQ,EAAE;QACd;MACJ,CAAC,CAAC,CAAClB,IAAI,CAACH,cAAc,CAAC;IAC3B,CAAC;IAAA,IAEQ4B,sBAAsB,GAA/B,SAASA,sBAAsBA,CAAC3B,QAAQ,EAAE;MACtC,IAAIA,QAAQ,CAAC4B,cAAc,IAAI5B,QAAQ,CAAC4B,cAAc,CAACC,MAAM,GAAG,CAAC,EAAE;QAC/D7B,QAAQ,CAAC,QAAQ,CAAC,GAAG,EAAE;QACvBA,QAAQ,CAAC4B,cAAc,CAACE,OAAO,CAAC,UAASC,KAAK,EAAE;UAC5C;UACA,IAAIC,aAAa,GAAG,IAAIC,aAAa,CAACF,KAAK,CAACG,IAAI,EAAEH,KAAK,CAACI,YAAY,EAAEJ,KAAK,CAACK,OAAO,CAAC;UACpFpC,QAAQ,CAAC,QAAQ,CAAC,CAACqC,IAAI,CAACL,aAAa,CAAC;QAC1C,CAAC,CAAC;QACF,OAAOhC,QAAQ,CAAC4B,cAAc;QAC9B,OAAO5B,QAAQ;MACnB;MACA,OAAOA,QAAQ;IACnB,CAAC;IAED;AACR;AACA;AACA;IAHQ,IAISsC,WAAW,GAApB,SAASA,WAAWA,CAACC,UAAU,EAAE;MAC7B,IAAIC,IAAI,GAAGC,QAAQ,CAACC,aAAa,CAAC,MAAM,CAAC;MACzCF,IAAI,CAACjD,MAAM,GAAGgD,UAAU;MACxBC,IAAI,CAACtB,MAAM,GAAG,MAAM;MAEpBuB,QAAQ,CAACpB,IAAI,CAACsB,WAAW,CAACH,IAAI,CAAC;MAC/BA,IAAI,CAACI,MAAM,CAAC,CAAC;IACjB,CAAC;IAAA,IAEQC,eAAe,GAAxB,SAASA,eAAeA,CAAA,EAAG;MACvBC,UAAU,CAAC,IAAI,CAAC;MAEhBlC,QAAQ,CAACrB,MAAM,CAACwD,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC7C,IAAI,CAAC,UAASF,QAAQ,EAAE;QAChDyB,qBAAqB,CAACzB,QAAQ,CAAC;QAC/BsB,UAAU,CAAC,CAAC;MAChB,CAAC,EAAE,UAASS,KAAK,EAAE;QACfN,qBAAqB,CAACM,KAAK,CAAC/B,QAAQ,CAAC;QACrCsB,UAAU,CAAC,CAAC;MAChB,CAAC,CAAC;IACN,CAAC;IAAA,IAEQ0B,0BAA0B,GAAnC,SAASA,0BAA0BA,CAACzC,CAAC,EAAE;MACnCK,QAAQ,CAACrB,MAAM,CAAC0D,mBAAmB,EAAE3C,WAAW,CAACC,CAAC,CAAC,CAAC,CAACL,IAAI,CAAC,UAASF,QAAQ,EAAE;QACzEkD,OAAO,CAACC,eAAe,CAAC1D,eAAe,CAAC2D,cAAc,CAAC;QACvDN,UAAU,CAAC,IAAI,CAAC;QAChBR,WAAW,CAACtC,QAAQ,CAACqD,MAAM,CAAC9B,QAAQ,CAAC;MACzC,CAAC,EAAE,UAASQ,KAAK,EAAE;QACfA,KAAK,CAAC/B,QAAQ,GAAG2B,sBAAsB,CAACI,KAAK,CAAC/B,QAAQ,CAACqD,MAAM,CAAC;QAC9D,IAAItB,KAAK,CAAC/B,QAAQ,CAACsD,MAAM,IAAIvB,KAAK,CAAC/B,QAAQ,CAACsD,MAAM,CAACzB,MAAM,GAAG,CAAC,EAAE;UAC3DqB,OAAO,CAACC,eAAe,CAACpB,KAAK,CAAC/B,QAAQ,CAAC;QAC3C,CAAC,MAAM;UACHkD,OAAO,CAACC,eAAe,CAAC;YACpBhD,MAAM,EAAEV,eAAe,CAAC8D;UAC5B,CAAC,CAAC;QACN;QACA9B,qBAAqB,CAACM,KAAK,CAAC/B,QAAQ,CAAC;QACrCsB,UAAU,CAAC,CAAC;MAChB,CAAC,CAAC;IACN,CAAC;IAAA,IAEQkC,8BAA8B,GAAvC,SAASA,8BAA8BA,CAACjD,CAAC,EAAE;MACvCK,QAAQ,CAACrB,MAAM,CAACkE,uBAAuB,EAAEnD,WAAW,CAACC,CAAC,CAAC,CAAC,CAACL,IAAI,CAAC,UAASF,QAAQ,EAAE;QAC7E;QACA0D,cAAc,CAACC,KAAK,GAAG3D,QAAQ,CAAC4D,MAAM,CAACC,QAAQ;QAC/C,IAAI7D,QAAQ,CAAC4D,MAAM,CAACE,YAAY,IAAI9D,QAAQ,CAAC4D,MAAM,CAACE,YAAY,CAACjC,MAAM,GAAG,CAAC,EAAE;UACzE6B,cAAc,CAACK,SAAS,GAAG/D,QAAQ,CAAC4D,MAAM,CAACE,YAAY;QAC3D;QACA,IAAIZ,OAAO,IAAI,IAAI,IAAIA,OAAO,IAAIc,SAAS,EAAE;UACzC;QACJ;QACAd,OAAO,CAACe,8BAA8B,CAACjE,QAAQ,CAAC4D,MAAM,CAAC;QACvDnC,qBAAqB,CAACzB,QAAQ,CAAC;MACnC,CAAC,EAAE,UAAS+B,KAAK,EAAE;QACf;QACA,IAAImB,OAAO,IAAI,IAAI,IAAIA,OAAO,IAAIc,SAAS,EAAE;UACzC;QACJ;QACAd,OAAO,CAACe,8BAA8B,CAAClC,KAAK,CAAC/B,QAAQ,CAAC;QACtDyB,qBAAqB,CAACM,KAAK,CAAC/B,QAAQ,CAAC;MACzC,CAAC,CAAC;IACN,CAAC;IAAA,IAEQkE,gCAAgC,GAAzC,SAASA,gCAAgCA,CAAC3D,CAAC,EAAE;MACzCK,QAAQ,CAACrB,MAAM,CAAC4E,yBAAyB,EAAE7D,WAAW,CAACC,CAAC,CAAC,CAAC,CAACL,IAAI,CAAC,UAASF,QAAQ,EAAE;QAC/E;QACA0D,cAAc,CAACC,KAAK,GAAG3D,QAAQ,CAAC4D,MAAM,CAACC,QAAQ;QAC/CH,cAAc,CAACK,SAAS,GAAG/D,QAAQ,CAAC4D,MAAM,CAACE,YAAY;QACvDJ,cAAc,CAACU,eAAe,GAAGpE,QAAQ,CAAC4D,MAAM,CAACS,kBAAkB;QACnE,IAAInB,OAAO,IAAI,IAAI,IAAIA,OAAO,IAAIc,SAAS,EAAE;UACzC;QACJ;QACAd,OAAO,CAACoB,gCAAgC,CAACtE,QAAQ,CAAC4D,MAAM,CAAC;QACzDnC,qBAAqB,CAACzB,QAAQ,CAAC4D,MAAM,CAAC;MAC1C,CAAC,EAAE,UAAS7B,KAAK,EAAE;QACfA,KAAK,CAAC/B,QAAQ,GAAG2B,sBAAsB,CAACI,KAAK,CAAC/B,QAAQ,CAAC4D,MAAM,CAAC;QAC9D,IAAIV,OAAO,IAAI,IAAI,IAAIA,OAAO,IAAIc,SAAS,EAAE;UACzC;QACJ;QACAd,OAAO,CAACoB,gCAAgC,CAACvC,KAAK,CAAC/B,QAAQ,CAAC;QACxDyB,qBAAqB,CAACM,KAAK,CAAC/B,QAAQ,CAAC;MACzC,CAAC,CAAC;IACN,CAAC;IAAA,IAEQuE,+BAA+B,GAAxC,SAASA,+BAA+BA,CAAChE,CAAC,EAAE;MACxCK,QAAQ,CAACrB,MAAM,CAACiF,wBAAwB,EAAElE,WAAW,CAACC,CAAC,CAAC,CAAC,CAACL,IAAI,CAAC,UAASF,QAAQ,EAAE;QAC9E;QACA0D,cAAc,CAACC,KAAK,GAAG3D,QAAQ,CAAC4D,MAAM,CAACC,QAAQ;QAC/CH,cAAc,CAACK,SAAS,GAAG/D,QAAQ,CAAC4D,MAAM,CAACE,YAAY;QACvD,IAAIZ,OAAO,IAAI,IAAI,IAAIA,OAAO,IAAIc,SAAS,EAAE;UACzC;QACJ;QACAd,OAAO,CAACuB,+BAA+B,CAACzE,QAAQ,CAAC4D,MAAM,CAAC;QACxDnC,qBAAqB,CAACzB,QAAQ,CAAC4D,MAAM,CAAC;MAC1C,CAAC,EAAE,UAAS7B,KAAK,EAAE;QACf,IAAImB,OAAO,IAAI,IAAI,IAAIA,OAAO,IAAIc,SAAS,EAAE;UACzC;QACJ;QACAd,OAAO,CAACuB,+BAA+B,CAAC1C,KAAK,CAAC/B,QAAQ,CAAC;QACvDyB,qBAAqB,CAACM,KAAK,CAAC/B,QAAQ,CAAC;MACzC,CAAC,CAAC;IACN,CAAC;IAED;AACR;AACA;AACA;AACA;IAJQ,IAKS0E,aAAa,GAAtB,SAASA,aAAaA,CAACC,GAAG,EAAEC,IAAI,EAAE;MAC9BhE,QAAQ,CAACrB,MAAM,CAACmF,aAAa,EAAE;QAC3BC,GAAG,EAAEA,GAAG;QACRC,IAAI,EAAEA;MACV,CAAC,CAAC,CAAC1E,IAAI,CAAC,UAASF,QAAQ,EAAE;QACvByB,qBAAqB,CAACzB,QAAQ,CAAC;MACnC,CAAC,EAAE,UAAS+B,KAAK,EAAE;QACf,IAAI;UACAmB,OAAO,CAAC2B,KAAK,CAAC,CAAC;QACnB,CAAC,CAAC,OAAOtE,CAAC,EAAE;UACR;QACJ;QACAkB,qBAAqB,CAACM,KAAK,CAAC/B,QAAQ,CAAC;QACrCsB,UAAU,CAAC,CAAC;MAChB,CAAC,CAAC;IACN,CAAC;IAAA,IAEQwD,yBAAyB,GAAlC,SAASA,yBAAyBA,CAACvE,CAAC,EAAE;MAClCK,QAAQ,CAACrB,MAAM,CAACwF,kBAAkB,EAAEC,MAAM,CAACC,MAAM,CAAC3E,WAAW,CAACC,CAAC,CAAC,EAAE;QAC9D2E,QAAQ,EAAExF,MAAM,CAACF,QAAQ,CAAC0F;MAC9B,CAAC,CAAC,CAAC,CAAChF,IAAI,CAAC,UAASF,QAAQ,EAAE;QACxB,IAAIkD,OAAO,IAAI,IAAI,IAAIA,OAAO,IAAIc,SAAS,EAAE;UACzC;QACJ;QACAd,OAAO,CAACiC,0BAA0B,CAACnF,QAAQ,CAACkD,OAAO,CAAC;MACxD,CAAC,EAAE,YAAW;QACVA,OAAO,CAAC2B,KAAK,CAAC,CAAC;MACnB,CAAC,CAAC;IACN,CAAC;IAAA,IAEQ/B,UAAU,GAAnB,SAASA,UAAUA,CAACsC,CAAC,EAAE;MACnB,IAAIlC,OAAO,EAAE;QACTA,OAAO,CAACmC,QAAQ,GAAG,IAAI;QACvBnC,OAAO,CAACD,mBAAmB,GAAG,IAAI;QAClCC,OAAO,CAACO,uBAAuB,GAAG,IAAI;QACtCP,OAAO,CAACiB,yBAAyB,GAAG,IAAI;QACxCjB,OAAO,CAACsB,wBAAwB,GAAG,IAAI;QACvCtB,OAAO,CAAC6B,kBAAkB,GAAG,IAAI;MACrC;MAEA7B,OAAO,GAAGkC,CAAC;MAEX,IAAIlC,OAAO,EAAE;QACTA,OAAO,CAACmC,QAAQ,GAAGxC,eAAe;QAClCK,OAAO,CAACD,mBAAmB,GAAGD,0BAA0B;QACxDE,OAAO,CAACO,uBAAuB,GAAGD,8BAA8B;QAChEN,OAAO,CAACiB,yBAAyB,GAAGD,gCAAgC;QACpEhB,OAAO,CAACsB,wBAAwB,GAAGD,+BAA+B;QAClErB,OAAO,CAAC6B,kBAAkB,GAAGD,yBAAyB;MAC1D;IACJ,CAAC;IAED;AACR;AACA;IAFQ,IAGSQ,UAAU,GAAnB,SAASA,UAAUA,CAAA,EAAG;MAClB5D,OAAO,CAACnC,MAAM,CAAC+F,UAAU,CAAC,CAACpF,IAAI,CAAC,UAASF,QAAQ,EAAE;QAC/CuF,OAAO,GAAGP,MAAM,CAACC,MAAM,CAAC,CAAC,CAAC,EAAEjF,QAAQ,CAACwF,WAAW,CAAC;QACjD,IAAIC,iBAAiB,EAAE;UACnBA,iBAAiB,CAACC,IAAI,CAAC,CAAC;QAC5B;MACJ,CAAC,CAAC;IACN,CAAC;IAlRD,IAAIH,OAAO;IACX,IAAII,iBAAiB,GAAGjG,MAAM,CAACC,IAAI,CAACC,eAAe,CAACgG,eAAe;IACnE,IAAIrE,QAAQ;IACZ,IAAImC,cAAc;IAClB,IAAIR,OAAO;IACX,IAAI2C,QAAQ,GAAG,KAAK;IACpB,IAAIC,SAAS,GAAG,MAAM;IACtB,IAAIL,iBAAiB,GAAGM,CAAC,CAAC,uBAAuB,CAAC;IAElD,IAAIvG,QAAQ,CAACwG,QAAQ,KAAK,QAAQ,IAAI,CAACvG,eAAe,CAACwG,eAAe,CAACN,iBAAiB,CAAC,EAAE;MACvF;IACJ;IA0QA,IAAIF,iBAAiB,EAAE;MACnBA,iBAAiB,CAACS,IAAI,CAAC,CAAC;MACxBT,iBAAiB,CAACU,GAAG,CAAC,CAAC,CAACC,EAAE,CAAC,OAAO,EAAE,YAAW;QAC3C;QACA,IAAI,CAACC,SAAS,CAACC,GAAG,CAAC,UAAU,CAAC;QAC9B,IAAI,CAACC,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC;QACnCC,UAAU,CAAC,YAAW;UAClBf,iBAAiB,CAACgB,WAAW,CAAC,UAAU,CAAC;UACzChB,iBAAiB,CAACiB,UAAU,CAAC,UAAU,CAAC;QAC5C,CAAC,EAAE,IAAI,CAAC;QACRhC,aAAa,CAACe,iBAAiB,CAACkB,IAAI,CAACd,QAAQ,CAAC,EAAEJ,iBAAiB,CAACkB,IAAI,CAACb,SAAS,CAAC,CAAC;QAClF,IAAIc,UAAU,CAACrB,OAAO,CAAC5B,KAAK,CAACkD,MAAM,CAAC,KAAK,CAAC,EAAE;UACxCtB,OAAO,CAAC5B,KAAK,CAACkD,MAAM,GAAG,MAAM;QACjC;QACA;QACA/D,UAAU,CAAC,IAAIrD,eAAe,CAACkG,iBAAiB,EAAEJ,OAAO,CAAC,CAAC;QAC3D;QACArC,OAAO,CAAC4D,KAAK,CAAC,CAAC;QACfpD,cAAc,GAAGsB,MAAM,CAACC,MAAM,CAAC,CAAC,CAAC,EAAEM,OAAO,CAAC;MAC/C,CAAC,CAAC;IACN;IACAD,UAAU,CAAC/F,MAAM,CAAC;EACtB;AACJ;AAEO,SAASwH,IAAIA,CAAA,EAAG;EACnBzH,cAAc,CAACI,MAAM,CAACC,IAAI,CAACqH,IAAI,CAACC,gBAAgB,CAAC1H,MAAM,EAAEG,MAAM,CAACF,QAAQ,EAAEE,MAAM,CAACD,eAAe,CAAC;AACrG,C;;;;;;;;;;;;;;;;;;;;;;ACtTA;AACA;AACA;;AAEoF;AAAA,IAE/DyH,QAAQ;EACzB,SAAAA,SAAYC,OAAO,EAAE;IAAAC,eAAA,OAAAF,QAAA;IACjB;IACA,IAAI,CAACG,eAAe,GAAGF,OAAO;;IAE9B;IACA,IAAI,CAACA,OAAO,GAAGG,8EAAY,CAAC,CAAC,CAAC,EAAE,IAAI,CAACD,eAAe,CAAC;IAErD,IAAI,CAACE,aAAa,CAAC,CAAC;IAEpB,IAAI,CAACC,IAAI,GAAG,OAAO,IAAI,CAACL,OAAO,CAACM,YAAY,KAAK,QAAQ,GAAGhF,QAAQ,CAACiF,aAAa,CAAC,IAAI,CAACP,OAAO,CAACM,YAAY,CAAC,GAAG,IAAI,CAACN,OAAO,CAACM,YAAY;IAEzI,IAAI,CAAC,IAAI,CAACD,IAAI,EAAE;MACZG,OAAO,CAACC,IAAI,CAAC,+BAA+B,CAAC;MAE7C;IACJ;;IAEA;IACA,IAAI,CAACC,gBAAgB,GAAG,IAAI,CAACL,IAAI,CAACM,SAAS;IAE3C,IAAI,IAAI,CAACX,OAAO,CAACY,wBAAwB,EAAE;MACvCrI,MAAM,CAACsI,gBAAgB,CAAC,QAAQ,EAAE,YAAW;QACzC,IAAI,CAACtI,MAAM,CAACuI,UAAU,CAAC,IAAI,CAACC,iBAAiB,CAACC,UAAU,CAAC,CAACC,OAAO,EAAE;UAC/D,IAAI,CAACC,YAAY,CAAC,CAAC;QACvB;MACJ,CAAC,CAACC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjB;IAEA,IAAI,CAACC,iBAAiB,CAAC,CAAC;EAC5B;;EAEA;AACJ;AACA;EAFI,OAAAC,YAAA,CAAAtB,QAAA;IAAAuB,GAAA;IAAAC,KAAA,EAGA,SAAAC,OAAOA,CAAA,EAAG;MACN,IAAI,CAACnB,IAAI,CAACoB,WAAW,GAAG,EAAE;MAE1B,IAAI,CAACC,0BAA0B,CAAC,IAAI,CAAC;MAErC,IAAI,CAACrB,IAAI,CAACsB,kBAAkB,CAAC,YAAY,EAAE,IAAI,CAACjB,gBAAgB,CAAC;IACrE;EAAC;IAAAY,GAAA;IAAAC,KAAA,EAED,SAAAL,YAAYA,CAAA,EAAG;MACX,IAAI,CAACM,OAAO,CAAC,CAAC;;MAEd;MACA,IAAI,CAACxB,OAAO,GAAGG,8EAAY,CAAC,CAAC,CAAC,EAAE,IAAI,CAACD,eAAe,CAAC;MAErD,IAAI,CAACE,aAAa,CAAC,CAAC;MAEpB,IAAI,CAACgB,iBAAiB,CAAC,CAAC;IAC5B;EAAC;IAAAE,GAAA;IAAAC,KAAA,EAED,SAAAH,iBAAiBA,CAAA,EAAG;MAChB,IAAI,CAACQ,mBAAmB,CAAC,CAAC;MAE1B,IAAI,CAACvB,IAAI,CAACwB,QAAQ,GAAG,IAAI,CAACxB,IAAI,CAACyB,gBAAgB,CAAC,IAAI,CAAC9B,OAAO,CAAC+B,eAAe,CAAC;MAE7E,EAAE,CAACpH,OAAO,CAACqH,IAAI,CAAC,IAAI,CAAC3B,IAAI,CAACwB,QAAQ,EAAE,IAAI,CAACI,iBAAiB,CAACd,IAAI,CAAC,IAAI,CAAC,CAAC;MAEtE,IAAI,CAACe,yBAAyB,CAAC,CAAC;IACpC;EAAC;IAAAZ,GAAA;IAAAC,KAAA,EAED,SAAAK,mBAAmBA,CAAA,EAAG;MAClB,IAAI,CAACO,mBAAmB,GAAG,IAAI,CAACnC,OAAO,CAACoC,kBAAkB,IAAI,YAAW,CAAC,CAAC;MAC3E,IAAI,CAACC,gBAAgB,GAAG,IAAI,CAACrC,OAAO,CAACsC,eAAe,IAAI,YAAW,CAAC,CAAC;MAErE,IAAI,CAACC,aAAa,GAAG,IAAI,CAACvC,OAAO,CAACwC,YAAY,IAAI,YAAW,CAAC,CAAC;MAC/D,IAAI,CAACC,kBAAkB,GAAG,IAAI,CAACzC,OAAO,CAAC0C,iBAAiB,IAAI,YAAW,CAAC,CAAC;MACzE,IAAI,CAACC,eAAe,GAAG,IAAI,CAAC3C,OAAO,CAAC4C,cAAc,IAAI,YAAW,CAAC,CAAC;IACvE;;IAEA;AACJ;AACA;AACA;AACA;AACA;EALI;IAAAtB,GAAA;IAAAC,KAAA,EAMA,SAAAG,0BAA0BA,CAACmB,MAAM,EAAE;MAC/BhF,MAAM,CAACiF,IAAI,CAAC,IAAI,CAACC,aAAa,CAAC,CAACpI,OAAO,CAAC,UAAS2G,GAAG,EAAE;QAClD,IAAI,CAACjB,IAAI,CAACwC,MAAM,GAAG,qBAAqB,GAAG,kBAAkB,CAAC,CAAC,IAAI,CAACE,aAAa,CAACzB,GAAG,CAAC,CAAC0B,IAAI,EAAE,IAAI,CAACD,aAAa,CAACzB,GAAG,CAAC,CAAC2B,OAAO,CAAC;MACjI,CAAC,CAAC9B,IAAI,CAAC,IAAI,CAAC,CAAC;IACjB;;IAEA;AACJ;AACA;EAFI;IAAAG,GAAA;IAAAC,KAAA,EAGA,SAAA2B,0BAA0BA,CAAA,EAAG;MACzB,IAAIC,IAAI,GAAG,IAAI;MAEf,IAAI,CAACJ,aAAa,GAAG;QACjBK,cAAc,EAAE;UACZJ,IAAI,EAAE,WAAW;UACjBC,OAAO,EAAEE,IAAI,CAACC,cAAc,CAACjC,IAAI,CAACgC,IAAI;QAC1C,CAAC;QACDE,YAAY,EAAE;UACVL,IAAI,EAAE,OAAO;UACb;UACAC,OAAO,EAAE,UAASK,GAAG,EAAE;YACnBH,IAAI,CAACI,eAAe,GAAG,KAAK;YAE5BJ,IAAI,CAACK,mBAAmB,CAACF,GAAG,CAAC;UACjC,CAAC,CAACnC,IAAI,CAACgC,IAAI;QACf,CAAC;QACDM,cAAc,EAAE;UACZT,IAAI,EAAE,SAAS;UACf;UACAC,OAAO,EAAE,UAASK,GAAG,EAAE;YACnBH,IAAI,CAACI,eAAe,GAAG,IAAI;YAE3BJ,IAAI,CAACK,mBAAmB,CAACF,GAAG,CAAC;UACjC,CAAC,CAACnC,IAAI,CAACgC,IAAI;QACf;MACJ,CAAC;;MAED;MACA,IAAI,IAAI,CAACnD,OAAO,CAAC0D,iBAAiB,EAAE;QAChC,IAAI,CAACX,aAAa,CAACW,iBAAiB,GAAG;UACnCV,IAAI,EAAE,YAAY;UAClBC,OAAO,EAAE,IAAI,CAACU,aAAa,CAACxC,IAAI,CAAC,IAAI;QACzC,CAAC;MACL;IACJ;EAAC;IAAAG,GAAA;IAAAC,KAAA,EAED,SAAAW,yBAAyBA,CAAA,EAAG;MACxB,IAAI,CAACgB,0BAA0B,CAAC,CAAC;MAEjC,IAAI,CAACxB,0BAA0B,CAAC,CAAC;;MAEjC;MACA;MACA,IAAI,IAAI,CAAC1B,OAAO,CAAC4D,sBAAsB,EAAE;QACrCtI,QAAQ,CAACuF,gBAAgB,CAAC,SAAS,EAAE,YAAW;UAC5C;UACA;UACA,IAAI,IAAI,CAACR,IAAI,CAACwD,QAAQ,IAAI,IAAI,CAACN,eAAe,EAAE;YAC5C,IAAIO,iBAAiB,GAAG,IAAI,CAACC,oBAAoB,CAAC,CAAC;YAEnD,IAAIzI,QAAQ,CAAC0I,aAAa,CAACC,QAAQ,IAAIH,iBAAiB,IAAI,IAAI,CAACI,gBAAgB,CAAC5I,QAAQ,CAAC0I,aAAa,EAAEF,iBAAiB,CAAC,EAAE;cAC1H,IAAI,CAACH,aAAa,CAACrI,QAAQ,CAAC0I,aAAa,CAAC;YAC9C,CAAC,MAAM,IAAI,CAACF,iBAAiB,CAACG,QAAQ,CAACE,MAAM,CAACC,QAAQ,CAAC9I,QAAQ,CAAC0I,aAAa,CAAC,EAAE;cAC5E,IAAI,CAACL,aAAa,CAAC,CAAC;YACxB;UACJ;QACJ,CAAC,CAACxC,IAAI,CAAC,IAAI,CAAC,CAAC;MACjB;;MAEA;MACA,IAAI,IAAI,CAACnB,OAAO,CAACqE,eAAe,EAAE;QAC9B/I,QAAQ,CAACuF,gBAAgB,CAAC,OAAO,EAAE,UAASyC,GAAG,EAAE;UAC7C,IAAI,IAAI,CAACjD,IAAI,CAACwD,QAAQ,IAAI,CAAC,IAAI,CAACxD,IAAI,CAAC+D,QAAQ,CAACd,GAAG,CAACa,MAAM,CAAC,EAAE;YACvD,IAAI,CAACR,aAAa,CAAC,CAAC;UACxB;QACJ,CAAC,CAACxC,IAAI,CAAC,IAAI,CAAC,CAAC;MACjB;IACJ;;IAEA;AACJ;AACA;AACA;AACA;EAJI;IAAAG,GAAA;IAAAC,KAAA,EAKA,SAAA6B,cAAcA,CAACE,GAAG,EAAE;MAChB,IAAIgB,IAAI,GAAGC,IAAI,CAACC,GAAG,CAAClB,GAAG,CAACmB,OAAO,CAAC;QAC5BC,IAAI,GAAGH,IAAI,CAACC,GAAG,CAAClB,GAAG,CAACqB,OAAO,CAAC;QAC5BC,KAAK,GAAGL,IAAI,CAACC,GAAG,CAAE,CAAC,IAAI,CAACK,MAAM,IAAI,CAAC,IAAIP,IAAK,CAAC;QAC7CQ,KAAK,GAAGP,IAAI,CAACC,GAAG,CAAE,CAAC,IAAI,CAACO,MAAM,IAAI,CAAC,IAAIL,IAAK,CAAC;MAEjD,IAAI,CAACG,MAAM,GAAGP,IAAI;MAClB,IAAI,CAACS,MAAM,GAAGL,IAAI;MAElB,IAAI,CAACM,eAAe,GAAIJ,KAAK,GAAGE,KAAK,IAAI,GAAG,GAAI,IAAI,GAAG,KAAK;IAChE;;IAEA;AACJ;AACA;EAFI;IAAAxD,GAAA;IAAAC,KAAA,EAGA,SAAAnB,aAAaA,CAAA,EAAG;MACZ,IAAI,CAACJ,OAAO,CAACiF,MAAM,GAAG,IAAI,CAACjF,OAAO,CAACiF,MAAM,IAAI,0BAA0B;MACvE,IAAI,CAACjF,OAAO,CAACkF,eAAe,GAAG,IAAI,CAAClF,OAAO,CAACkF,eAAe,IAAI,cAAc;MAC7E,IAAI,CAAClF,OAAO,CAACmF,eAAe,GAAG,IAAI,CAACnF,OAAO,CAACmF,eAAe,IAAI,mBAAmB;MAElF,IAAI,CAACnF,OAAO,CAACoF,iBAAiB,GAAG,IAAI,CAACpF,OAAO,CAACxG,cAAc,CAAC,mBAAmB,CAAC,GAAG,IAAI,CAACwG,OAAO,CAACoF,iBAAiB,GAAG,CAAC,CAAC;;MAEvH;MACA,IAAI,IAAI,CAACpF,OAAO,CAACoF,iBAAiB,EAAE;QAChC,IAAI,CAACpF,OAAO,CAACoF,iBAAiB,CAACC,QAAQ,GAAG,IAAI,CAACrF,OAAO,CAACoF,iBAAiB,CAACC,QAAQ,IAAI,IAAI,CAACrF,OAAO,CAACsF,cAAc;QAChH,IAAI,CAACtF,OAAO,CAACoF,iBAAiB,CAACG,QAAQ,GAAG,IAAI,CAACvF,OAAO,CAACoF,iBAAiB,CAACG,QAAQ,IAAI,KAAK;MAC9F;MAEA,IAAI,CAACvF,OAAO,CAAC0D,iBAAiB,GAAG,IAAI,CAAC1D,OAAO,CAACxG,cAAc,CAAC,mBAAmB,CAAC,GAAG,IAAI,CAACwG,OAAO,CAAC0D,iBAAiB,GAAG,KAAK;MAC1H,IAAI,CAAC1D,OAAO,CAACqE,eAAe,GAAG,IAAI,CAACrE,OAAO,CAACxG,cAAc,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAACwG,OAAO,CAACqE,eAAe,GAAG,IAAI;MACnH,IAAI,CAACrE,OAAO,CAACwF,gBAAgB,GAAG,IAAI,CAACxF,OAAO,CAACwF,gBAAgB,IAAI,IAAI;MACrE,IAAI,CAACxF,OAAO,CAACyF,UAAU,GAAG,IAAI,CAACzF,OAAO,CAACyF,UAAU,IAAI,CAAC;;MAEtD;MACA,IAAI,IAAI,CAACzF,OAAO,CAAC0F,UAAU,EAAE;QACzB,IAAI,CAAC1F,OAAO,CAAC0F,UAAU,CAACC,IAAI,CAACC,iBAAiB,CAAC;;QAE/C;QACA,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,IAAI,CAAC7F,OAAO,CAAC0F,UAAU,CAAChL,MAAM,EAAEmL,CAAC,EAAE,EAAE;UACrD,IAAIC,0BAA0B,CAAC9D,IAAI,CAAC,IAAI,EAAE,IAAI,CAAChC,OAAO,CAAC0F,UAAU,CAACG,CAAC,CAAC,CAAC,EAAE;YACnE,IAAI,CAAC9E,iBAAiB,GAAG,IAAI,CAACf,OAAO,CAAC0F,UAAU,CAACG,CAAC,CAAC;YAEnD;UACJ;QACJ;MACJ;;MAEA;MACA;MACA,IAAI,CAAC7F,OAAO,CAAC+F,kBAAkB,GAAG5F,8EAAY,CAAC;QAAC0B,QAAQ,EAAE,CAAE,EAAE,EAAE,EAAE,CAAE;QAAEmE,UAAU,EAAE,GAAG;QAAEC,QAAQ,EAAE,KAAK;QAAEC,cAAc,EAAE;MAAK,CAAC,EAAE,IAAI,CAAClG,OAAO,CAAC+F,kBAAkB,CAAC;;MAEhK;AACR;AACA;AACA;AACA;MACQ,SAASD,0BAA0BA,CAACK,cAAc,EAAE;QAChD,IAAI5N,MAAM,CAACuI,UAAU,CAACqF,cAAc,CAACnF,UAAU,CAAC,CAACC,OAAO,EAAE;UACtD,OAAOd,8EAAY,CAAC,IAAI,CAACH,OAAO,EAAEmG,cAAc,CAACC,QAAQ,CAAC;QAC9D;QAEA,OAAO,KAAK;MAChB;MAEA,SAASR,iBAAiBA,CAACS,CAAC,EAAEC,CAAC,EAAE;QAC7B,OAAOD,CAAC,CAACrF,UAAU,GAAGsF,CAAC,CAACtF,UAAU;MACtC;IACJ;;IAEA;AACJ;AACA;AACA;EAHI;IAAAM,GAAA;IAAAC,KAAA,EAIA,SAAAU,iBAAiBA,CAACsE,OAAO,EAAEC,KAAK,EAAE;MAC9B,IAAIC,UAAU,GAAGF,OAAO,CAACG,EAAE,IAAI,IAAI,CAACC,aAAa,CAAC,CAAC;MAEnDJ,OAAO,CAACtC,QAAQ,GAAG;QACfuB,gBAAgB,EAAE,IAAI,CAACxF,OAAO,CAACwF,gBAAgB,GAAI,OAAO,IAAI,CAACxF,OAAO,CAACwF,gBAAgB,KAAK,QAAQ,GAAGe,OAAO,CAACtF,OAAO,CAAC,IAAI,CAACjB,OAAO,CAACwF,gBAAgB,CAAC,GAAG,IAAI,GAAI;MACpK,CAAC;MAEDe,OAAO,CAACtC,QAAQ,CAAC2C,MAAM,GAAG,IAAI,CAACC,gBAAgB,CAACN,OAAO,CAAC;MACxDA,OAAO,CAACtC,QAAQ,CAAC6C,QAAQ,GAAG,IAAI,CAACC,kBAAkB,CAACR,OAAO,CAAC;MAC5DA,OAAO,CAACtC,QAAQ,CAACuC,KAAK,GAAGD,OAAO,CAACtC,QAAQ,CAAC6C,QAAQ,CAACE,OAAO,CAACT,OAAO,CAAC;;MAEnE;MACA;MACA,IAAI,CAACA,OAAO,CAACU,YAAY,CAAC,iBAAiB,CAAC,EAAE;QAC1CV,OAAO,CAACtC,QAAQ,CAACE,MAAM,GAAG,IAAI,CAAC+C,gBAAgB,CAACX,OAAO,CAAC;MAC5D;MAEA,IAAI,IAAI,CAACvG,OAAO,CAAC+F,kBAAkB,CAACG,cAAc,EAAE;QAChD,IAAI,CAACiB,kBAAkB,CAACZ,OAAO,EAAEC,KAAK,CAAC;MAC3C;MAEA,IAAI,CAACY,qBAAqB,CAACb,OAAO,CAAC;MAEnC,IAAIA,OAAO,CAACtC,QAAQ,CAACE,MAAM,EAAE;QACzB,IAAIkD,uBAAuB;;QAE3B;QACAd,OAAO,CAACtC,QAAQ,CAACqD,QAAQ,GAAG,IAAI,CAACC,kBAAkB,CAAChB,OAAO,CAACtC,QAAQ,CAACE,MAAM,CAAC;QAE5E,IAAI,CAACqD,uBAAuB,CAACjB,OAAO,CAAC;;QAErC;QACAA,OAAO,CAACG,EAAE,GAAGD,UAAU;QACvBF,OAAO,CAACtC,QAAQ,CAACE,MAAM,CAACuC,EAAE,GAAGH,OAAO,CAACtC,QAAQ,CAACE,MAAM,CAACuC,EAAE,OAAAe,MAAA,CAAOhB,UAAU,aAAU;QAElFY,uBAAuB,GAAG,OAAO,IAAI,CAACrH,OAAO,CAAC0H,gBAAgB,KAAK,UAAU,GAAG,IAAI,CAAC1H,OAAO,CAAC0H,gBAAgB,CAACnB,OAAO,CAAC,GAAG,IAAI,CAACvG,OAAO,CAAC0H,gBAAgB;QAEtJnB,OAAO,CAACtC,QAAQ,CAACyD,gBAAgB,GAAGvH,8EAAY,CAAC,IAAI,CAACwH,mBAAmB,CAACpB,OAAO,CAAC,EAAEc,uBAAuB,CAAC;QAE5G,IAAI,CAACO,gBAAgB,CAACrB,OAAO,CAAC;MAClC;;MAEA;MACA,IAAIA,OAAO,CAACtF,OAAO,CAAC,IAAI,CAACjB,OAAO,CAAC6H,qBAAqB,CAAC,EAAE;QACrD,IAAIC,WAAW,GAAG,IAAI,CAACC,cAAc,CAACxB,OAAO,CAAC;QAE9CuB,WAAW,CAACnN,OAAO,CAAC,UAASqN,UAAU,EAAE;UACrCzB,OAAO,CAAC1F,gBAAgB,CAACmH,UAAU,EAAE,YAAW;YAC5C,IAAI,CAACrE,aAAa,CAAC4C,OAAO,CAAC;UAC/B,CAAC,CAACpF,IAAI,CAAC,IAAI,CAAC,CAAC;QACjB,CAAC,CAACA,IAAI,CAAC,IAAI,CAAC,CAAC;MACjB;IACJ;EAAC;IAAAG,GAAA;IAAAC,KAAA,EAED,SAAA4F,kBAAkBA,CAACZ,OAAO,EAAEC,KAAK,EAAE;MAC/BD,OAAO,CAAC0B,QAAQ,GAAGzB,KAAK,KAAK,CAAC,GAAG,GAAG,GAAG,IAAI;;MAE3C;MACA,IAAI,CAAC0B,cAAc,GAAG1B,KAAK,KAAK,CAAC,GAAGD,OAAO,GAAG,IAAI,CAAC2B,cAAc;IACrE;;IAEA;AACJ;AACA;EAFI;IAAA5G,GAAA;IAAAC,KAAA,EAGA,SAAA4G,UAAUA,CAAC5B,OAAO,EAAE6B,YAAY,EAAEC,WAAW,EAAE;MAC3C,IAAI,IAAI,CAACH,cAAc,IAAI,IAAI,CAAClI,OAAO,CAAC+F,kBAAkB,CAACG,cAAc,EAAE;QACvE,IAAI,CAACgC,cAAc,CAACD,QAAQ,GAAG,IAAI;MACvC;MAEA,IAAI1B,OAAO,EAAE;QACT;QACA;QACA;QACA,IAAI6B,YAAY,IAAI7B,OAAO,CAACtC,QAAQ,CAAC6C,QAAQ,CAACpM,MAAM,GAAG,CAAC,EAAE;UACtD,IAAI4N,cAAc,GAAG,CAAC;;UAEtB;UACA;UACA,OAAO,CAAC,IAAI,CAACC,eAAe,CAAChC,OAAO,CAAC,IAAI+B,cAAc,IAAI/B,OAAO,CAACtC,QAAQ,CAAC6C,QAAQ,CAACpM,MAAM,EAAE;YACzF4N,cAAc,EAAE;YAEhB/B,OAAO,GAAG,IAAI,CAACiC,mBAAmB,CAACjC,OAAO,EAAE8B,WAAW,CAAC;UAC5D;QACJ;;QAEA;QACA,IAAI,CAACH,cAAc,GAAG3B,OAAO;QAE7B,IAAI,IAAI,CAACvG,OAAO,CAAC+F,kBAAkB,CAACG,cAAc,EAAE;UAChDK,OAAO,CAAC0B,QAAQ,GAAG,GAAG;QAC1B;QAEAQ,4EAAU,CAAClC,OAAO,CAAC;MACvB;IACJ;;IAEA;AACJ;AACA;AACA;AACA;AACA;EALI;IAAAjF,GAAA;IAAAC,KAAA,EAMA,SAAAgH,eAAeA,CAACG,EAAE,EAAE;MAChB,OAAOA,EAAE,CAACC,YAAY,IAAKD,EAAE,CAACE,iBAAiB,IAAIF,EAAE,CAACE,iBAAiB,CAACC,YAAY,GAAG,CAAE;IAC7F;;IAEA;AACJ;AACA;AACA;EAHI;IAAAvH,GAAA;IAAAC,KAAA,EAIA,SAAAoF,aAAaA,CAAA,EAAG;MACZ,IAAImC,YAAY,GAAGvE,IAAI,CAACwE,KAAK,CAAC,IAAIC,IAAI,CAAC,CAAC,CAACC,OAAO,CAAC,CAAC,GAAG1E,IAAI,CAAC2E,MAAM,CAAC,CAAC,CAAC,CAACC,QAAQ,CAAC,CAAC,CAACC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;MAE3F,qBAAA3B,MAAA,CAAqBqB,YAAY;IACrC;;IAEA;AACJ;AACA;AACA;AACA;AACA;EALI;IAAAxH,GAAA;IAAAC,KAAA,EAMA,SAAAoG,mBAAmBA,CAACpB,OAAO,EAAE;MACzB;MACA;MACA;MACA,OAAO;QACH,eAAe,EAAE;UACbhF,KAAK,EAAE,CAAE,OAAO,EAAE,MAAM,CAAE;UAC1BgF,OAAO,EAAE;QACb,CAAC;QACD,iBAAiB,EAAE;UACfhF,KAAK,EAAEgF,OAAO,CAACG,EAAE;UACjBvC,MAAM,EAAE;QACZ,CAAC;QACD,eAAe,EAAE;UACb5C,KAAK,EAAEgF,OAAO,CAACtC,QAAQ,CAACE,MAAM,CAACuC,EAAE;UACjCH,OAAO,EAAE;QACb;MACJ,CAAC;IACL;;IAEA;AACJ;AACA;AACA;AACA;AACA;AACA;EANI;IAAAjF,GAAA;IAAAC,KAAA,EAOA,SAAAqG,gBAAgBA,CAACrB,OAAO,EAAE1C,QAAQ,EAAE;MAChC,IAAI6D,gBAAgB,GAAGnB,OAAO,CAACtC,QAAQ,CAACyD,gBAAgB;MAExD,KAAK,IAAI2B,OAAO,IAAI3B,gBAAgB,EAAE;QAClC,IAAIA,gBAAgB,CAAC2B,OAAO,CAAC,EAAE;UAC3B,IAAI3B,gBAAgB,CAAC2B,OAAO,CAAC,CAAC9C,OAAO,EAAE;YACnC,IAAI,CAAC+C,iBAAiB,CAAC/C,OAAO,EAAE8C,OAAO,EAAE3B,gBAAgB,CAAC2B,OAAO,CAAC,EAAExF,QAAQ,CAAC;UACjF,CAAC,MAAM,IAAI6D,gBAAgB,CAAC2B,OAAO,CAAC,CAAClF,MAAM,EAAE;YACzC,IAAI,CAACmF,iBAAiB,CAAC/C,OAAO,CAACtC,QAAQ,CAACE,MAAM,EAAEkF,OAAO,EAAE3B,gBAAgB,CAAC2B,OAAO,CAAC,EAAExF,QAAQ,CAAC;UACjG,CAAC,MAAM;YACH,IAAI,CAACyF,iBAAiB,CAAC/C,OAAO,EAAE8C,OAAO,EAAE3B,gBAAgB,CAAC2B,OAAO,CAAC,EAAExF,QAAQ,CAAC;YAC7E,IAAI,CAACyF,iBAAiB,CAAC/C,OAAO,CAACtC,QAAQ,CAACE,MAAM,EAAEkF,OAAO,EAAE3B,gBAAgB,CAAC2B,OAAO,CAAC,EAAExF,QAAQ,CAAC;UACjG;QACJ;MACJ;IACJ;;IAEA;AACJ;AACA;AACA;EAHI;IAAAvC,GAAA;IAAAC,KAAA,EAIA,SAAA+H,iBAAiBA,CAACZ,EAAE,EAAEa,QAAQ,EAAEC,UAAU,EAAE3F,QAAQ,EAAE;MAClD,IAAItC,KAAK,GAAG,OAAOiI,UAAU,CAACjI,KAAK,KAAK,QAAQ,GAAGiI,UAAU,CAACjI,KAAK,GAAIsC,QAAQ,GAAG2F,UAAU,CAACjI,KAAK,CAAC,CAAC,CAAC,GAAGiI,UAAU,CAACjI,KAAK,CAAC,CAAC,CAAE;MAE5HmH,EAAE,CAACtJ,YAAY,CAACmK,QAAQ,EAAEhI,KAAK,CAAC;IACpC;;IAEA;AACJ;AACA;AACA;AACA;EAJI;IAAAD,GAAA;IAAAC,KAAA,EAKA,SAAAsF,gBAAgBA,CAACN,OAAO,EAAE;MACtB,OAAOA,OAAO,CAACkD,OAAO,CAAClD,OAAO,CAACmD,YAAY,CAAC,kBAAkB,CAAC,CAAC,IAAInD,OAAO,CAACoD,UAAU;IAC1F;;IAEA;AACJ;AACA;AACA;AACA;EAJI;IAAArI,GAAA;IAAAC,KAAA,EAKA,SAAA2F,gBAAgBA,CAACX,OAAO,EAAE;MACtB,OAAOA,OAAO,CAACtC,QAAQ,CAAC2C,MAAM,CAACrG,aAAa,CAACgG,OAAO,CAACmD,YAAY,CAAC,kBAAkB,CAAC,IAAI,IAAI,CAAC1J,OAAO,CAACsF,cAAc,CAAC;IACzH;EAAC;IAAAhE,GAAA;IAAAC,KAAA,EAED,SAAAgG,kBAAkBA,CAACpD,MAAM,EAAE;MACvB,OAAOA,MAAM,CAACrC,gBAAgB,CAAC,IAAI,CAAC9B,OAAO,CAAC+B,eAAe,CAAC;IAChE;EAAC;IAAAT,GAAA;IAAAC,KAAA,EAED,SAAAwF,kBAAkBA,CAACR,OAAO,EAAE;MACxB,IAAIqD,sBAAsB,GAAG,IAAI,CAACC,wBAAwB,CAACtD,OAAO,CAAC;MAEnE,OAAO,EAAE,CAACuD,MAAM,CAAC9H,IAAI,CAAC,IAAI,CAAC3B,IAAI,CAACwB,QAAQ,EAAE,UAASkI,cAAc,EAAE;QAC/D,OAAOH,sBAAsB,CAACxF,QAAQ,CAAC2F,cAAc,CAAC,IAAI,IAAI,CAAC7F,gBAAgB,CAACqC,OAAO,EAAEwD,cAAc,CAAC;MAC5G,CAAC,CAAC5I,IAAI,CAAC,IAAI,CAAC,CAAC;IACjB;EAAC;IAAAG,GAAA;IAAAC,KAAA,EAED,SAAAsI,wBAAwBA,CAACtD,OAAO,EAAE;MAC9B,IAAIA,OAAO,IAAIA,OAAO,CAACyD,QAAQ,EAAE;QAC7B,OAAOzD,OAAO,CAACkD,OAAO,CAAClD,OAAO,CAACmD,YAAY,CAAC,kBAAkB,CAAC,IAAI,IAAI,CAAC1J,OAAO,CAACsF,cAAc,CAAC,IAAI,IAAI,CAACjF,IAAI;MAChH,CAAC,MAAM,IAAI,CAACkG,OAAO,IAAKA,OAAO,CAAC0D,aAAa,IAAI1D,OAAO,CAAC0D,aAAa,KAAK,IAAK,EAAE;QAC9E,OAAO,IAAI,CAAC5J,IAAI;MACpB,CAAC,MAAM;QACH;MACJ;IACJ;EAAC;IAAAiB,GAAA;IAAAC,KAAA,EAED,SAAA2C,gBAAgBA,CAAC6F,cAAc,EAAEG,WAAW,EAAE;MAC1C,OAAOH,cAAc,CAACL,YAAY,CAAC,IAAI,CAAC1J,OAAO,CAACmK,yBAAyB,CAAC,KAAKD,WAAW,CAACR,YAAY,CAAC,IAAI,CAAC1J,OAAO,CAACmK,yBAAyB,CAAC;IACnJ;EAAC;IAAA7I,GAAA;IAAAC,KAAA,EAED,SAAA6I,eAAeA,CAAC7D,OAAO,EAAE;MACrB,OAAOA,OAAO,CAACtC,QAAQ,CAACJ,QAAQ;IACpC;;IAEA;AACJ;AACA;AACA;EAHI;IAAAvC,GAAA;IAAAC,KAAA,EAIA,SAAAiH,mBAAmBA,CAACjC,OAAO,EAAE8B,WAAW,EAAE;MACtC,IAAIgC,gBAAgB,GAAG,IAAI;MAE3B,IAAIhC,WAAW,EAAE;QACbgC,gBAAgB,GAAG9D,OAAO,CAACtC,QAAQ,CAAC6C,QAAQ,CAACP,OAAO,CAACtC,QAAQ,CAACuC,KAAK,GAAG,CAAC,CAAC,IAAID,OAAO,CAACtC,QAAQ,CAAC6C,QAAQ,CAAC,CAAC,CAAC;MAC5G,CAAC,MAAM;QACHuD,gBAAgB,GAAG9D,OAAO,CAACtC,QAAQ,CAAC6C,QAAQ,CAACP,OAAO,CAACtC,QAAQ,CAACuC,KAAK,GAAG,CAAC,CAAC,IAAID,OAAO,CAACtC,QAAQ,CAAC6C,QAAQ,CAACP,OAAO,CAACtC,QAAQ,CAAC6C,QAAQ,CAACpM,MAAM,GAAG,CAAC,CAAC;MAC/I;MAEA,OAAO2P,gBAAgB;IAC3B;;IAEA;AACJ;AACA;EAFI;IAAA/I,GAAA;IAAAC,KAAA,EAGA,SAAA+I,sBAAsBA,CAAC/D,OAAO,EAAEgE,QAAQ,EAAE;MACtC,IAAIC,eAAe,GAAG,IAAI;MAE1B,KAAK,IAAI3E,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGU,OAAO,CAACtC,QAAQ,CAAC6C,QAAQ,CAACpM,MAAM,EAAEmL,CAAC,EAAE,EAAE;QACvD,IAAIU,OAAO,CAACtC,QAAQ,CAAC6C,QAAQ,CAACjB,CAAC,CAAC,CAACpE,WAAW,CAACgJ,WAAW,CAAC,CAAC,CAACC,IAAI,CAAC,CAAC,CAACC,UAAU,CAAC,CAAC,CAAC,KAAKJ,QAAQ,IAAIhE,OAAO,CAACtC,QAAQ,CAAC6C,QAAQ,CAACjB,CAAC,CAAC,KAAKU,OAAO,EAAE;UACtIiE,eAAe,GAAGjE,OAAO,CAACtC,QAAQ,CAAC6C,QAAQ,CAACjB,CAAC,CAAC;UAE9C;QACJ;MACJ;MAEA,OAAO2E,eAAe;IAC1B;;IAEA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EAbI;IAAAlJ,GAAA;IAAAC,KAAA,EAcA,SAAAwG,cAAcA,CAACxB,OAAO,EAAE;MACpB,IAAIuB,WAAW,GAAG,EAAE;MAEpB,IAAI,OAAO,IAAI,CAAC9H,OAAO,CAACiF,MAAM,KAAK,QAAQ,EAAE;QACzC6C,WAAW,GAAG,IAAI,CAAC9H,OAAO,CAACiF,MAAM,CAAC2F,KAAK,CAAC,GAAG,CAAC;MAChD,CAAC,MAAM,IAAIC,KAAK,CAACC,OAAO,CAAC,IAAI,CAAC9K,OAAO,CAACiF,MAAM,CAAC,EAAE;QAC3C,IAAI,CAACjF,OAAO,CAACiF,MAAM,CAACtK,OAAO,CAAC,UAASoQ,iBAAiB,EAAE;UACpD,IAAIxE,OAAO,CAACtF,OAAO,CAAC8J,iBAAiB,CAAC1F,QAAQ,CAAC,EAAE;YAC7CyC,WAAW,GAAGA,WAAW,CAACL,MAAM,CAACsD,iBAAiB,CAAC9F,MAAM,CAAC2F,KAAK,CAAC,GAAG,CAAC,CAAC;UACzE;QACJ,CAAC,CAAC;MACN;MAEA,OAAO9C,WAAW;IACtB;;IAEA;AACJ;AACA;AACA;EAHI;IAAAxG,GAAA;IAAAC,KAAA,EAIA,SAAAiG,uBAAuBA,CAACjB,OAAO,EAAE;MAC7B,IAAIyE,KAAK,GAAG,IAAI;QACZlD,WAAW,GAAG,IAAI,CAACC,cAAc,CAACxB,OAAO,CAAC;MAE9CuB,WAAW,CAACnN,OAAO,CAAC,UAASqN,UAAU,EAAE;QACrCzB,OAAO,CAAC1F,gBAAgB,CAACmH,UAAU,EAAE,UAAS1E,GAAG,EAAE;UAC/C,IAAI2H,OAAO,GAAG3H,GAAG,CAACN,IAAI;YAClBkI,OAAO,GAAGD,OAAO,CAACjE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;YACvCmE,UAAU,GAAGF,OAAO,KAAK,SAAS,IAAIA,OAAO,KAAK,OAAO;YACzDG,iBAAiB,GAAGJ,KAAK,CAAChL,OAAO,CAACqL,oBAAoB,IAAI9E,OAAO,CAACtF,OAAO,CAAC+J,KAAK,CAAChL,OAAO,CAACqL,oBAAoB,CAAC;;UAEjH;UACA,IAAIH,OAAO,IAAK,CAAE3E,OAAO,CAACyD,QAAQ,KAAK,GAAG,IAAI1G,GAAG,CAACa,MAAM,CAAC6F,QAAQ,KAAK,GAAG,KAAK,CAACoB,iBAAiB,IAAI,CAACD,UAAW,EAAE;YAC9G7H,GAAG,CAACgI,cAAc,CAAC,CAAC;UACxB;UAEA,IAAI,CAACL,OAAO,KAAK,YAAY,IAAIA,OAAO,KAAK,WAAW,KAAKA,OAAO,IAAI,WAAW,EAAE;YACjF,IAAIM,QAAQ,GAAGP,KAAK,CAAChG,eAAe,IAAI,CAACgG,KAAK,CAAChL,OAAO,CAACyF,UAAU,GAAG,GAAG,GAAGuF,KAAK,CAAChL,OAAO,CAACyF,UAAU;;YAElG;YACA,IAAIuF,KAAK,CAAChG,eAAe,IAAIgG,KAAK,CAAChL,OAAO,CAACyF,UAAU,EAAE;cACnDuF,KAAK,CAACQ,QAAQ,GAAGjT,MAAM,CAAC8G,UAAU,CAAC,YAAW;gBAC1C2L,KAAK,CAACS,mBAAmB,CAAC,IAAI,EAAE,IAAI,CAAC;cACzC,CAAC,CAACtK,IAAI,CAAC,IAAI,CAAC,EAAEoK,QAAQ,CAAC;cAEvB;YACJ,CAAC,MAAM;cACH;YACJ;UACJ,CAAC,MAAM,IAAIJ,UAAU,EAAE;YACnB;YACA,IAAIH,KAAK,CAAChL,OAAO,CAAC+F,kBAAkB,CAAClE,QAAQ,CAACmF,OAAO,CAAC1D,GAAG,CAACoI,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAACN,iBAAiB,EAAE;cAC7F9H,GAAG,CAACgI,cAAc,CAAC,CAAC;cACpBN,KAAK,CAACS,mBAAmB,CAAC,IAAI,CAAC;;cAE/B;cACAT,KAAK,CAAC7C,UAAU,CAAC5B,OAAO,CAACtC,QAAQ,CAACqD,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC;YAC9D;;YAEJ;UACA,CAAC,MAAM,IAAIhE,GAAG,CAACN,IAAI,KAAK,OAAO,IAAI,CAACoI,iBAAiB,EAAE;YACnDJ,KAAK,CAACS,mBAAmB,CAAC,IAAI,CAAC;YAE/BT,KAAK,CAAC7C,UAAU,CAAC,IAAI,CAAC;UAC1B;;UAEA;UACA,IAAI+C,OAAO,EAAE;YACT5H,GAAG,CAACqI,wBAAwB,CAAC,CAAC;UAClC;QACJ,CAAC,CAAC;MACN,CAAC,CAAC;MAEFpF,OAAO,CAACtC,QAAQ,CAAC2C,MAAM,CAAC/F,gBAAgB,CAAC,YAAY,EAAE,YAAW;QAC9D+K,aAAa,CAACZ,KAAK,CAACQ,QAAQ,CAAC;MACjC,CAAC,CAAC;MAEF,EAAE,CAAC7Q,OAAO,CAACqH,IAAI,CAACuE,OAAO,CAACtC,QAAQ,CAACqD,QAAQ,EAAE,UAASuE,IAAI,EAAE;QACtDA,IAAI,CAAChL,gBAAgB,CAAC,YAAY,EAAE,YAAW;UAC3C+K,aAAa,CAACZ,KAAK,CAACQ,QAAQ,CAAC;QACjC,CAAC,CAAC;MACN,CAAC,CAAC;IACN;;IAEA;AACJ;AACA;EAFI;IAAAlK,GAAA;IAAAC,KAAA,EAGA,SAAA6F,qBAAqBA,CAACb,OAAO,EAAE;MAC3BA,OAAO,CAAC1F,gBAAgB,CAAC,SAAS,EAAE,UAASyC,GAAG,EAAE;QAC9C,IAAIwI,WAAW,GAAGxI,GAAG,CAACoI,OAAO,KAAK,EAAE;UAChCK,SAAS,GAAGzI,GAAG,CAACoI,OAAO,KAAK,EAAE;UAC9BM,YAAY,GAAG1I,GAAG,CAACoI,OAAO,KAAK,EAAE;UACjCO,WAAW,GAAG3I,GAAG,CAACoI,OAAO,KAAK,EAAE;;QAEpC;QACA;QACA,IAAII,WAAW,IAAIC,SAAS,IAAIC,YAAY,IAAIC,WAAW,EAAE;UACzD;UACA,IAAIC,iBAAiB,GAAG,IAAI,CAAClM,OAAO,CAAC+F,kBAAkB,CAACC,UAAU,IAAIO,OAAO,CAACtF,OAAO,CAAC,IAAI,CAACjB,OAAO,CAAC+F,kBAAkB,CAACC,UAAU,CAAC;YAC7HmG,eAAe,GAAG,IAAI,CAACnM,OAAO,CAAC+F,kBAAkB,CAACE,QAAQ,IAAIM,OAAO,CAACtF,OAAO,CAAC,IAAI,CAACjB,OAAO,CAAC+F,kBAAkB,CAACE,QAAQ,CAAC;YACvHmG,sBAAsB,GAAG,CAACN,WAAW,IAAIE,YAAY,KAAKE,iBAAiB;YAC3EG,oBAAoB,GAAG,CAACN,SAAS,IAAIE,WAAW,KAAKE,eAAe;UAExE7I,GAAG,CAACgI,cAAc,CAAC,CAAC;UAEpB,IAAIc,sBAAsB,IAAIC,oBAAoB,EAAE;YAChD,IAAIhE,WAAW,GAAG2D,YAAY,IAAIC,WAAW;cACzCK,gBAAgB,GAAG,IAAI,CAAC9D,mBAAmB,CAACxG,IAAI,CAAC,IAAI,EAAEuE,OAAO,EAAE8B,WAAW,CAAC;YAEhF,IAAI,CAACF,UAAU,CAACmE,gBAAgB,EAAE,IAAI,EAAEjE,WAAW,CAAC;UACxD,CAAC,MAAM;YACH,IAAI,CAAE6D,iBAAiB,IAAID,WAAW,IAAME,eAAe,IAAIH,YAAa,KAAKzF,OAAO,CAACtC,QAAQ,CAACE,MAAM,EAAE;cACtG,IAAIoI,eAAe,GAAG,IAAI,CAACnC,eAAe,CAAC7D,OAAO,CAAC;;cAEnD;cACA;cACA;cACA,IAAI,CAACgG,eAAe,EAAE;gBAClB,IAAI,CAACd,mBAAmB,CAAClF,OAAO,CAAC;cACrC;;cAEA;cACA,IAAI,CAAC4B,UAAU,CAAC5B,OAAO,CAACtC,QAAQ,CAACqD,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC;YAC7D,CAAC,MAAM,IAAI6E,eAAe,KAAKH,YAAY,IAAIF,WAAW,CAAC,EAAE;cACzD,IAAIhI,iBAAiB,GAAG,IAAI,CAACC,oBAAoB,CAAC,CAAC;gBAC/CyI,aAAa,GAAG1I,iBAAiB;gBACjCsE,YAAY,GAAG,KAAK;gBACpBC,YAAW,GAAG,KAAK;cAEvB,IAAI2D,YAAY,IAAI,CAACzF,OAAO,CAACtC,QAAQ,CAACE,MAAM,EAAE;gBAC1CiE,YAAY,GAAG,IAAI;gBACnBC,YAAW,GAAG,IAAI;gBAElBmE,aAAa,GAAG,IAAI,CAAChE,mBAAmB,CAACxG,IAAI,CAAC,IAAI,EAAE8B,iBAAiB,EAAE,IAAI,CAAC;gBAE5E0I,aAAa,CAACvI,QAAQ,CAACE,MAAM,GAAG,IAAI,CAACsH,mBAAmB,CAACe,aAAa,CAAC,GAAG,IAAI,CAAC7I,aAAa,CAAC6I,aAAa,CAAC;cAC/G,CAAC,MAAM,IAAIV,WAAW,EAAE;gBACpB,IAAI,CAACnI,aAAa,CAACG,iBAAiB,CAAC;cACzC;cAEA,IAAI,CAACqE,UAAU,CAACqE,aAAa,EAAEpE,YAAY,EAAEC,YAAW,CAAC;YAC7D;UACJ;QACJ,CAAC,MAAM,IAAI/E,GAAG,CAACoI,OAAO,IAAI,EAAE,IAAIpI,GAAG,CAACoI,OAAO,IAAI,EAAE,EAAE;UAC/C;UACA,IAAIlB,eAAe,GAAG,IAAI,CAACF,sBAAsB,CAACtI,IAAI,CAAC,IAAI,EAAEuE,OAAO,EAAEjD,GAAG,CAACoI,OAAO,CAAC;UAElF,IAAI,CAACvD,UAAU,CAACqC,eAAe,CAAC;QACpC,CAAC,MAAM,IAAIlH,GAAG,CAACoI,OAAO,KAAK,EAAE,EAAE;UAC3B;UACA,IAAI,CAACvD,UAAU,CAAC5B,OAAO,CAACtC,QAAQ,CAAC6C,QAAQ,CAACP,OAAO,CAACtC,QAAQ,CAAC6C,QAAQ,CAACpM,MAAM,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC;QACjG,CAAC,MAAM,IAAI4I,GAAG,CAACoI,OAAO,KAAK,EAAE,EAAE;UAC3B;UACA,IAAI,CAACvD,UAAU,CAAC5B,OAAO,CAACtC,QAAQ,CAAC6C,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC;QAC7D;MAEJ,CAAC,CAAC3F,IAAI,CAAC,IAAI,CAAC,CAAC;IACjB;;IAEA;AACJ;AACA;AACA;AACA;AACA;EALI;IAAAG,GAAA;IAAAC,KAAA,EAMA,SAAAkK,mBAAmBA,CAAClF,OAAO,EAAEkG,YAAY,EAAE;MACvC,IAAI,IAAI,CAACrC,eAAe,CAAC7D,OAAO,CAAC,EAAE;QAC/B,IAAI,CAACkG,YAAY,IAAI,CAAClG,OAAO,CAACtC,QAAQ,CAACuB,gBAAgB,EAAE;UACrD,IAAI,CAAC7B,aAAa,CAAC4C,OAAO,CAAC;QAC/B;MACJ,CAAC,MAAM;QACH,IAAI,CAACpE,mBAAmB,CAACoE,OAAO,EAAE,IAAI,CAAC;QACvC,IAAI,CAAC5C,aAAa,CAAC4C,OAAO,EAAE,IAAI,CAACmG,gBAAgB,CAACvL,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7D,IAAI,CAACkB,gBAAgB,CAACkE,OAAO,EAAE,IAAI,CAAC;MACxC;IACJ;;IAEA;AACJ;AACA;AACA;AACA;AACA;EALI;IAAAjF,GAAA;IAAAC,KAAA,EAMA,SAAAmL,gBAAgBA,CAACnG,OAAO,EAAE;MACtB,IAAIoG,KAAK,GAAG,IAAI;;MAEhB;MACApG,OAAO,CAACtC,QAAQ,CAACJ,QAAQ,GAAG,IAAI;MAEhC0C,OAAO,CAACrH,SAAS,CAACC,GAAG,CAAC,IAAI,CAACa,OAAO,CAACmF,eAAe,CAAC;MACnDoB,OAAO,CAACtC,QAAQ,CAACE,MAAM,CAACjF,SAAS,CAACC,GAAG,CAAC,IAAI,CAACa,OAAO,CAACmF,eAAe,CAAC;MACnEoB,OAAO,CAACtC,QAAQ,CAAC2C,MAAM,CAAC1H,SAAS,CAACC,GAAG,CAAC,IAAI,CAACa,OAAO,CAACmF,eAAe,CAAC;MAEnE,IAAI,CAACyC,gBAAgB,CAACrB,OAAO,EAAE,IAAI,CAAC;;MAEpC;MACA,IAAI,CAAC,IAAI,CAAClG,IAAI,CAACwD,QAAQ,EAAE;QACrB,IAAI+I,YAAY,GAAG,IAAI,CAAC5M,OAAO,CAACoF,iBAAiB,GAAG,IAAI,CAAC/E,IAAI,CAACE,aAAa,IAAAkH,MAAA,CAAI,IAAI,CAACzH,OAAO,CAACoF,iBAAiB,CAACC,QAAQ,OAAAoC,MAAA,CAAI,IAAI,CAACzH,OAAO,CAACmF,eAAe,CAAE,CAAC,GAAG,KAAK;QAEjK,IAAI,IAAI,CAAC0H,mBAAmB,CAACD,YAAY,CAAC,EAAE;UACxCA,YAAY,CAAC/L,gBAAgB,CAACiM,iFAAe,CAAC,CAAC,EAAEC,qBAAqB,CAAC;QAC3E,CAAC,MAAM;UACH,IAAI,CAACC,aAAa,CAAC,CAAC;QACxB;MACJ;MAEA,SAASD,qBAAqBA,CAACzJ,GAAG,EAAE;QAChC,IAAIqJ,KAAK,CAAC3M,OAAO,CAACoF,iBAAiB,CAACG,QAAQ,KAAKjC,GAAG,CAAC2J,YAAY,IAAIN,KAAK,CAAC3M,OAAO,CAACoF,iBAAiB,CAACG,QAAQ,KAAK,KAAK,EAAE;UACrHoH,KAAK,CAACK,aAAa,CAAC,CAAC;UAErB,IAAI,CAACE,mBAAmB,CAACJ,iFAAe,CAAC,CAAC,EAAEC,qBAAqB,CAAC;QACtE;MACJ;IACJ;;IAEA;AACJ;AACA;AACA;AACA;EAJI;IAAAzL,GAAA;IAAAC,KAAA,EAKA,SAAAiC,mBAAmBA,CAACF,GAAG,EAAE;MACrB,IAAI6J,QAAQ,GAAG7J,GAAG,CAACoI,OAAO,KAAK,EAAE;MAEjC,IAAIyB,QAAQ,IAAK,CAAC7J,GAAG,CAACoI,OAAO,KAAK,EAAE,IAAI,CAACpI,GAAG,CAACoI,OAAO,KAAKpI,GAAG,CAACa,MAAM,CAAC8C,YAAY,CAAC,iBAAiB,CAAE,EAAE;QAClG,IAAInD,iBAAiB,GAAG,IAAI,CAACC,oBAAoB,CAAC,CAAC;QAEnDT,GAAG,CAACgI,cAAc,CAAC,CAAC;;QAEpB;QACA;QACA,IAAIhI,GAAG,CAACa,MAAM,IAAI,IAAI,CAAC0F,wBAAwB,CAACvG,GAAG,CAACa,MAAM,CAAC,EAAE;UACzD,IAAIiJ,qBAAqB,GAAG9J,GAAG,CAACa,MAAM,CAACuF,YAAY,CAAC,iBAAiB,CAAC;YAClE;YACA2D,UAAU,GAAG,CAACF,QAAQ,IAAKrJ,iBAAiB,IAAI,CAACA,iBAAiB,CAACG,QAAQ,CAACuB,gBAAiB;;UAEjG;UACA1B,iBAAiB,GAAGsJ,qBAAqB,GAAI,IAAI,CAACE,wBAAwB,CAACF,qBAAqB,CAAC,IAAItJ,iBAAiB,GAAIA,iBAAiB;UAE3I,IAAIuJ,UAAU,EAAE;YACZ,IAAI,CAAC1J,aAAa,CAACG,iBAAiB,CAAC;UACzC,CAAC,MAAM,IAAIR,GAAG,CAACa,MAAM,KAAKL,iBAAiB,EAAE;YACzC;YACAA,iBAAiB,GAAG,IAAI,CAACC,oBAAoB,CAAC,CAAC,CAAC;YAEhD,IAAI,CAACJ,aAAa,CAACG,iBAAiB,CAAC;UACzC;;UAEA;UACA,IAAIA,iBAAiB,EAAE;YACnBR,GAAG,CAACiK,eAAe,CAAC,CAAC;UACzB;QACJ,CAAC,MAAM;UACH,IAAI,CAAC5J,aAAa,CAAC,CAAC;QACxB;;QAEA;QACA,IAAIG,iBAAiB,EAAE;UACnB,IAAI,CAACqE,UAAU,CAACrE,iBAAiB,CAAC;QACtC;MACJ;IACJ;EAAC;IAAAxC,GAAA;IAAAC,KAAA,EAED,SAAAsL,mBAAmBA,CAACW,QAAQ,EAAE;MAC1B,OAAOA,QAAQ,IAAIjV,MAAM,CAACkV,gBAAgB,CAACD,QAAQ,CAAC,CAACE,kBAAkB,KAAK,IAAI;IACpF;;IAEA;AACJ;AACA;AACA;AACA;AACA;EALI;IAAApM,GAAA;IAAAC,KAAA,EAMA,SAAAwC,oBAAoBA,CAAA,EAAY;MAAA,IAAXyC,KAAK,GAAAmH,SAAA,CAAAjT,MAAA,QAAAiT,SAAA,QAAA9Q,SAAA,GAAA8Q,SAAA,MAAG,CAAC;MAC1B,IAAIC,cAAc,GAAG,IAAI,CAACC,iBAAiB,CAAC,CAAC;MAE7C,OAAOD,cAAc,CAACA,cAAc,CAAClT,MAAM,GAAG8L,KAAK,CAAC;IACxD;;IAEA;AACJ;AACA;AACA;EAHI;IAAAlF,GAAA;IAAAC,KAAA,EAIA,SAAAsM,iBAAiBA,CAAA,EAAG;MAChB,OAAO,EAAE,CAAC/D,MAAM,CAAC9H,IAAI,CAAC,IAAI,CAAC3B,IAAI,CAACwB,QAAQ,EAAE,IAAI,CAACuI,eAAe,CAACjJ,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9E;;IAEA;AACJ;AACA;AACA;EAHI;IAAAG,GAAA;IAAAC,KAAA,EAIA,SAAA+L,wBAAwBA,CAACjI,QAAQ,EAAE;MAC/B,OAAO,IAAI,CAAChF,IAAI,CAACE,aAAa,IAAAkH,MAAA,CAAIpC,QAAQ,OAAAoC,MAAA,CAAI,IAAI,CAACzH,OAAO,CAACmF,eAAe,CAAE,CAAC;IACjF;;IAEA;AACJ;AACA;EAFI;IAAA7D,GAAA;IAAAC,KAAA,EAGA,SAAAyL,aAAaA,CAAA,EAAG;MACZ,IAAI,IAAI,CAACa,iBAAiB,CAAC,CAAC,CAACnT,MAAM,EAAE;QACjC,IAAI,CAAC2F,IAAI,CAACwD,QAAQ,GAAG,IAAI;QACzB,IAAI,CAACxD,IAAI,CAACnB,SAAS,CAACC,GAAG,CAAC,IAAI,CAACa,OAAO,CAACkF,eAAe,CAAC;QACrD,IAAI,CAAC3C,aAAa,CAAC,IAAI,CAAClC,IAAI,EAAE,IAAI,CAAC;MACvC;IACJ;EAAC;IAAAiB,GAAA;IAAAC,KAAA,EAED,SAAAuM,eAAeA,CAAA,EAAG;MACd,IAAI,CAAC,IAAI,CAACD,iBAAiB,CAAC,CAAC,CAACnT,MAAM,EAAE;QAClC,IAAI,CAAC2F,IAAI,CAACwD,QAAQ,GAAG,KAAK;QAC1B,IAAI,CAACxD,IAAI,CAACnB,SAAS,CAAC6O,MAAM,CAAC,IAAI,CAAC/N,OAAO,CAACkF,eAAe,CAAC;QACxD,IAAI,CAACvC,eAAe,CAAC,IAAI,CAACtC,IAAI,EAAE,IAAI,CAAC;MACzC;IACJ;;IAEA;AACJ;AACA;EAFI;IAAAiB,GAAA;IAAAC,KAAA,EAGA,SAAAoC,aAAaA,CAAC4C,OAAO,EAAEyH,QAAQ,EAAE;MAC7B,IAAIC,eAAe,GAAG,IAAI,CAACpE,wBAAwB,CAACtD,OAAO,CAAC,IAAI,IAAI,CAAClG,IAAI;QACrE6N,cAAc,GAAGD,eAAe,CAACnM,gBAAgB,CAAC,GAAG,GAAG,IAAI,CAAC9B,OAAO,CAACmF,eAAe,CAAC;MAEzF,EAAE,CAACxK,OAAO,CAACqH,IAAI,CAACkM,cAAc,EAAE,UAASxF,EAAE,EAAE;QACzCA,EAAE,CAACxJ,SAAS,CAAC6O,MAAM,CAAC,IAAI,CAAC/N,OAAO,CAACmF,eAAe,CAAC;;QAEjD;QACA,IAAIuD,EAAE,CAACzE,QAAQ,EAAE;UACbyE,EAAE,CAACzE,QAAQ,CAACJ,QAAQ,GAAG,KAAK;UAE5B,IAAI,CAACpB,kBAAkB,CAACiG,EAAE,EAAE,IAAI,CAAC;;UAEjC;UACA,IAAIA,EAAE,CAACzE,QAAQ,CAACE,MAAM,EAAE;YACpB,IAAI,CAACyD,gBAAgB,CAACc,EAAE,CAAC;UAC7B;QACJ;MACJ,CAAC,CAACvH,IAAI,CAAC,IAAI,CAAC,CAAC;;MAEb;MACA,IAAI,OAAO6M,QAAQ,KAAK,UAAU,EAAE;QAChCA,QAAQ,CAACzH,OAAO,CAAC;MACrB;;MAEA;MACA,IAAI,CAACuH,eAAe,CAAC,CAAC;IAC1B;EAAC;AAAA;;;;;;;;;;;;;ACx1BL;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAa;;AAEmE;AAC3B;AAE9C,IACHK,aAAa,GAAG,0CAA0C;EAC1DC,cAAc,GAAG,yBAAyB;EAC1CC,mBAAmB,GAAG,YAAY;EAClCC,sBAAsB,GAAG,kBAAkB;EAC3CC,sBAAsB,GAAG,kBAAkB;EAC3CC,yBAAyB,GAAG,cAAc;EAC1CC,eAAe,GAAG,CAAC,CAAC;EACpBC,mBAAmB,GAAG,CAAC,CAAC;;AAE5B;AACA;AACA,IAAIC,mBAAmB,GAAG,IAAI;;AAE9B;AACA;AACA;AACA,SAASC,eAAeA,CAAClG,EAAE,EAAE;EACzB,OAAO,OAAOA,EAAE,KAAK,QAAQ,GAAGpN,QAAQ,CAACiF,aAAa,CAACmI,EAAE,CAAC,GAAGA,EAAE;AACnE;;AAEA;AACA;AACA;AACA;AACA,SAASmG,cAAcA,CAACC,WAAW,EAAE;EACjC,OAAOF,eAAe,CAACE,WAAW,CAAC,CAAChN,gBAAgB,CAACsM,cAAc,CAAC;AACxE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAASW,aAAaA,CAACzL,GAAG,EAAE;EACxB,IAAI0L,KAAK,GAAG,IAAI;EAEhB,IAAI,CAACC,iBAAiB,CAAC,IAAI,CAAC,EAAE;IAC1BD,KAAK,GAAG,KAAK;IAEb,IAAI1L,GAAG,EAAE;MACLA,GAAG,CAACgI,cAAc,CAAC,CAAC;MACpBhI,GAAG,CAACiK,eAAe,CAAC,CAAC;MACrBjK,GAAG,CAACqI,wBAAwB,CAAC,CAAC;IAClC;EACJ;EAEA,OAAOqD,KAAK;AAChB;AAEA,SAASE,cAAcA,CAACC,KAAK,EAAE;EAC3B,IAAIC,aAAa,GAAGD,KAAK,CAACzF,YAAY,CAAC,kBAAkB,CAAC;EAE1D,OAAOpO,QAAQ,CAACiF,aAAa,KAAAkH,MAAA,CAAK2H,aAAa,CAAE,CAAC,IAAIC,mFAAiB,CAACF,KAAK,CAACxF,UAAU,EAAE;IAACjD,EAAE,EAAE0I,aAAa;IAAEE,KAAK,EAAEf,sBAAsB;IAAEgB,IAAI,EAAE;EAAO,CAAC,CAAC;AAChK;;AAEA;AACA;AACA;AACA,SAASC,mBAAmBA,CAACL,KAAK,EAAE;EAChC,IAAI,CAACA,KAAK,CAACzF,YAAY,CAAC,kBAAkB,CAAC,EAAE;IACzC;IACA,IAAI+F,OAAO,GAAG,CAACN,KAAK,CAACO,IAAI,IAAIP,KAAK,CAACzI,EAAE,IAAI,EAAE,EAAEiJ,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;IAE/DR,KAAK,CAAC/P,YAAY,CAAC,kBAAkB,KAAAqI,MAAA,CAAKgI,OAAO,IAAI,YAAY,OAAAhI,MAAA,CAAIlD,IAAI,CAACwE,KAAK,CAAC,IAAIC,IAAI,CAAC,CAAC,CAACC,OAAO,CAAC,CAAC,GAAG1E,IAAI,CAAC2E,MAAM,CAAC,CAAC,CAAC,CAACC,QAAQ,CAAC,CAAC,CAAE,CAAC;;IAEnI;IACA+F,cAAc,CAACC,KAAK,CAAC;EACzB;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAASS,0BAA0BA,CAACtM,GAAG,EAAE;EACrCA,GAAG,CAACgI,cAAc,CAAC,CAAC;;EAEpB;EACA;EACA;EACAuE,aAAa,CAAC,IAAI,EAAE;IAACC,eAAe,EAAE;EAAI,CAAC,CAAC;AAChD;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASC,kBAAkBA,CAAA,EAAG;EAC1B,IAAI,IAAI,CAAC7Q,SAAS,CAACkF,QAAQ,CAACiK,mBAAmB,CAAC,EAAE;IAC9CwB,aAAa,CAAC,IAAI,CAAC;EACvB;AACJ;;AAEA;AACA;AACA;AACA,SAASG,0BAA0BA,CAACb,KAAK,EAAEc,cAAc,EAAE;EACvD,OAAOd,KAAK,CAACjQ,SAAS,CAACkF,QAAQ,CAAC6L,cAAc,CAAC,IAAId,KAAK,CAAClI,YAAY,CAACgJ,cAAc,CAAC,IAAId,KAAK,CAAClO,OAAO,CAACgP,cAAc,CAAC;AAC1H;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASC,uBAAuBA,CAACpB,WAAW,EAAEqB,UAAU,EAAE;EACtD,KAAK,IAAIC,SAAS,IAAID,UAAU,EAAE;IAC9B,IAAIE,SAAS,GAAGvB,WAAW,CAACvO,aAAa,YAAAkH,MAAA,CAAW2I,SAAS,QAAI,CAAC;IAElEE,eAAe,CAACD,SAAS,EAAEF,UAAU,CAACC,SAAS,CAAC,CAAC;EACrD;AACJ;;AAEA;AACA;AACA;AACA,SAASG,6BAA6BA,CAACpB,KAAK,EAAE;EAC1C,IAAIqB,iBAAiB;EAErB,IAAIrB,KAAK,CAACsB,QAAQ,CAACC,eAAe,KAAKvB,KAAK,CAACzF,YAAY,CAAC,uBAAuB,CAAC,IAAIgF,mBAAmB,CAAC,iBAAiB,CAAC,CAAC,EAAE;IAC3H8B,iBAAiB,GAAGrB,KAAK,CAACzF,YAAY,CAAC,uBAAuB,CAAC,IAAIgF,mBAAmB,CAAC,iBAAiB,CAAC;EAC7G;EACA,IAAI,CAACS,KAAK,CAACsB,QAAQ,CAACE,aAAa,IAAIxB,KAAK,CAACsB,QAAQ,CAACG,cAAc,MAAMzB,KAAK,CAACzF,YAAY,CAAC,kBAAkB,CAAC,IAAIgF,mBAAmB,CAAC,YAAY,CAAC,CAAC,EAAE;IAClJ8B,iBAAiB,GAAGrB,KAAK,CAACzF,YAAY,CAAC,kBAAkB,CAAC,IAAIgF,mBAAmB,CAAC,YAAY,CAAC;EACnG;EACA,IAAI,CAACS,KAAK,CAACsB,QAAQ,CAACI,OAAO,IAAI1B,KAAK,CAACsB,QAAQ,CAACK,QAAQ,MAAM3B,KAAK,CAACzF,YAAY,CAAC,kBAAkB,CAAC,IAAIgF,mBAAmB,CAAC,YAAY,CAAC,CAAC,EAAE;IACtI8B,iBAAiB,GAAGrB,KAAK,CAACzF,YAAY,CAAC,kBAAkB,CAAC,IAAIgF,mBAAmB,CAAC,YAAY,CAAC;EACnG;EACA,IAAIS,KAAK,CAACsB,QAAQ,CAACM,YAAY,KAAK5B,KAAK,CAACzF,YAAY,CAAC,iBAAiB,CAAC,IAAIgF,mBAAmB,CAAC,cAAc,CAAC,IAAIA,mBAAmB,CAAC,cAAc,CAAC,CAAC,EAAE;IACtJ8B,iBAAiB,GAAGrB,KAAK,CAACzF,YAAY,CAAC,MAAM,CAAC,KAAK,OAAO,GAAGgF,mBAAmB,CAAC,cAAc,CAAC,GAAGS,KAAK,CAACzF,YAAY,CAAC,iBAAiB,CAAC,IAAIgF,mBAAmB,CAAC,cAAc,CAAC;EACnL;EACA,IAAIS,KAAK,CAACsB,QAAQ,CAACO,YAAY,KAAK7B,KAAK,CAACzF,YAAY,CAAC,oBAAoB,CAAC,IAAIgF,mBAAmB,CAAC,cAAc,CAAC,IAAIA,mBAAmB,CAAC,YAAY,CAAC,CAAC,EAAE;IACvJ8B,iBAAiB,GAAGrB,KAAK,CAACzF,YAAY,CAAC,MAAM,CAAC,KAAK,OAAO,GAAGgF,mBAAmB,CAAC,YAAY,CAAC,GAAGS,KAAK,CAACzF,YAAY,CAAC,oBAAoB,CAAC,IAAIgF,mBAAmB,CAAC,cAAc,CAAC;EACpL;EAEA,OAAO8B,iBAAiB;AAC5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASS,iBAAiBA,CAAC9B,KAAK,EAAE;EAC9B,OAAOA,KAAK,CAAClI,YAAY,CAAC,sBAAsB,CAAC,IAAIsB,0EAAe,CAAC4G,KAAK,CAAC;AAC/E;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAASU,aAAaA,CAACV,KAAK,EAAgB;EAAA,IAAdnP,OAAO,GAAA2N,SAAA,CAAAjT,MAAA,QAAAiT,SAAA,QAAA9Q,SAAA,GAAA8Q,SAAA,MAAG,CAAC,CAAC;EAC7CwB,KAAK,CAAC+B,iBAAiB,CAAC,EAAE,CAAC;;EAE3B;EACAC,mBAAmB,CAAChC,KAAK,CAAC;EAE1B,IAAI,CAACA,KAAK,CAACsB,QAAQ,CAACzB,KAAK,IAAIiC,iBAAiB,CAAC9B,KAAK,CAAC,EAAE;IACnD,IAAIqB,iBAAiB,GAAGrB,KAAK,CAACqB,iBAAiB;;IAE/C;IACAY,gBAAgB,CAACjC,KAAK,CAAC9T,IAAI,CAAC;IAE5B,IAAI,CAAC8T,KAAK,CAACsB,QAAQ,CAACY,WAAW,EAAE;MAC7Bb,iBAAiB,GAAGD,6BAA6B,CAACpB,KAAK,CAAC,IAAIqB,iBAAiB;IACjF;IAEA,IAAI,CAACxQ,OAAO,CAACsR,MAAM,EAAE;MACjBhB,eAAe,CAACnB,KAAK,EAAEqB,iBAAiB,CAAC;IAC7C;;IAEA;AACR;AACA;AACA;IACQ,IAAIxQ,OAAO,CAACuR,QAAQ,IAAKvR,OAAO,CAAC8P,eAAe,IAAInB,mBAAoB,EAAE;MACtE;MACAA,mBAAmB,GAAG,KAAK;MAE3BQ,KAAK,CAACqC,KAAK,CAAC,CAAC;;MAEb;MACAjZ,MAAM,CAAC8G,UAAU,CAAC,YAAW;QACzBsP,mBAAmB,GAAG,IAAI;MAC9B,CAAC,EAAE,EAAE,CAAC;IACV;IAEA,OAAO,KAAK;EAChB,CAAC,MAAM;IACH8C,aAAa,CAACtC,KAAK,CAAC;IAEpB,OAAO,IAAI;EACf;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACO,SAASuC,eAAeA,CAACrW,IAAI,EAAE;EAClC,IAAIA,IAAI,EAAE;IACN,IAAIsW,aAAa,GAAGtW,IAAI,CAACyG,gBAAgB,KAAA2F,MAAA,CAAK4G,mBAAmB,CAAE,CAAC;IAEpE,EAAE,CAAC1T,OAAO,CAACqH,IAAI,CAAC2P,aAAa,EAAEF,aAAa,CAAC;EACjD;AACJ;;AAEA;AACA;AACA;AACO,SAASL,gBAAgBA,CAAC/V,IAAI,EAAE;EACnC,IAAIA,IAAI,EAAE;IACN,IAAIuW,kBAAkB,GAAGvW,IAAI,CAACyG,gBAAgB,KAAA2F,MAAA,CAAK6G,sBAAsB,CAAE,CAAC;IAE5E,EAAE,CAAC3T,OAAO,CAACqH,IAAI,CAAC4P,kBAAkB,EAAE,UAAAC,eAAe;MAAA,OAAIA,eAAe,CAAC3S,SAAS,CAAC6O,MAAM,CAACS,yBAAyB,CAAC;IAAA,EAAC;EACvH;AACJ;;AAEA;AACA;AACA;AACO,SAAS8B,eAAeA,CAACnB,KAAK,EAAElU,OAAO,EAAE;EAC5C,IAAI6W,UAAU,GAAG5C,cAAc,CAACC,KAAK,CAAC;EAEtCA,KAAK,CAACjQ,SAAS,CAACC,GAAG,CAACkP,mBAAmB,CAAC;EAExCyD,UAAU,CAACrQ,WAAW,GAAGxG,OAAO;EAChC6W,UAAU,CAAC5S,SAAS,CAACC,GAAG,CAACqP,yBAAyB,CAAC;AACvD;;AAEA;AACA;AACA;AACO,SAASiD,aAAaA,CAACtC,KAAK,EAAE;EACjCA,KAAK,CAACjQ,SAAS,CAAC6O,MAAM,CAACM,mBAAmB,CAAC;EAC3Cc,KAAK,CAAC+B,iBAAiB,CAAC,EAAE,CAAC;EAE3BhC,cAAc,CAACC,KAAK,CAAC,CAACjQ,SAAS,CAAC6O,MAAM,CAACS,yBAAyB,CAAC;AACrE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAASS,iBAAiBA,CAAC5T,IAAI,EAAE;EACpC,IAAI0W,OAAO,GAAG,IAAI;EAElB,EAAE,CAACpX,OAAO,CAACqH,IAAI,CAAC6M,cAAc,CAACxT,IAAI,CAAC,EAAE,UAAS2W,YAAY,EAAE;IACzD,IAAIf,iBAAiB,CAACe,YAAY,CAAC,EAAE;MACjCD,OAAO,GAAGlC,aAAa,CAACmC,YAAY,EAAE;QAAClC,eAAe,EAAE;MAAI,CAAC,CAAC,IAAIiC,OAAO;IAC7E;EACJ,CAAC,CAAC;EAEF,IAAI1W,IAAI,CAAC6D,SAAS,CAACkF,QAAQ,CAAC,sBAAsB,CAAC,EAAE;IACjD,IAAKxF,CAAC,CAAC,QAAQ,CAAC,CAAClE,MAAM,GAAG,CAAC,IAAIkE,CAAC,CAAC,QAAQ,CAAC,CAACqT,EAAE,CAAC,UAAU,CAAC,KAAM,CAACrT,CAAC,CAAC,QAAQ,CAAC,CAACsT,GAAG,CAAC,CAAC,IAAItT,CAAC,CAAC,QAAQ,CAAC,CAACuT,QAAQ,CAAC,YAAY,CAAC,CAAC,EAAE;MACtHvT,CAAC,CAAC,QAAQ,CAAC,CAACwT,IAAI,CAAC,CAAC,CAACZ,KAAK,CAAC,CAAC;MAC1BO,OAAO,GAAG,KAAK;IACnB;EACJ;EAEA,OAAOA,OAAO;AAClB;;AAEA;AACA;AACA;AACO,SAASM,YAAYA,CAAChX,IAAI,EAAEiI,GAAG,EAAE;EACpC,OAAOyL,aAAa,CAAC/M,IAAI,CAAC3G,IAAI,EAAEiI,GAAG,CAAC;AACxC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASgP,eAAeA,CAACxD,WAAW,EAAEyD,SAAS,EAAE;EACpD,IAAIA,SAAS,YAAY1H,KAAK,EAAE;IAC5B0H,SAAS,CAAC5X,OAAO,CAAC,UAAAwV,UAAU;MAAA,OAAID,uBAAuB,CAACpB,WAAW,EAAEqB,UAAU,CAAC;IAAA,EAAC;EACrF,CAAC,MAAM;IACHD,uBAAuB,CAACpB,WAAW,EAAEyD,SAAS,CAAC;EACnD;AACJ;;AAEA;AACA;AACA;AACA;AACO,SAASpB,mBAAmBA,CAAChC,KAAK,EAAE;EACvC,KAAK,IAAIc,cAAc,IAAIxB,eAAe,EAAE;IACxC,IAAIuB,0BAA0B,CAACb,KAAK,EAAEc,cAAc,CAAC,EAAE;MACnD;MACA,IAAI,CAACxB,eAAe,CAACwB,cAAc,CAAC,CAAClW,MAAM,CAACoV,KAAK,CAAC5N,KAAK,EAAE4N,KAAK,EAAEV,eAAe,CAACwB,cAAc,CAAC,CAAC,EAAE;QAC9F;QACA,IAAIuC,iBAAiB,GAAG,OAAO/D,eAAe,CAACwB,cAAc,CAAC,CAAChV,OAAO,KAAK,UAAU;UACjFuV,iBAAiB,GAAGgC,iBAAiB,GAAG/D,eAAe,CAACwB,cAAc,CAAC,CAAChV,OAAO,CAACkU,KAAK,CAAC5N,KAAK,EAAE4N,KAAK,CAAC,GAAGV,eAAe,CAACwB,cAAc,CAAC,CAAChV,OAAO;;QAEjJ;QACA;QACAkU,KAAK,CAAC+B,iBAAiB,CAACV,iBAAiB,CAAC;QAE1C;MACJ;IACJ;EACJ;AACJ;;AAEA;AACA;AACA;AACO,SAASiC,aAAaA,CAACxC,cAAc,EAAEyC,gBAAgB,EAAElC,iBAAiB,EAAE;EAC/E/B,eAAe,CAACwB,cAAc,CAAC,GAAG;IAC9BlW,MAAM,EAAE2Y,gBAAgB;IACxBzX,OAAO,EAAEuV;EACb,CAAC;AACL;;AAEA;AACA;AACA;AACO,SAASmC,kBAAkBA,CAACC,aAAa,EAAE;EAC9C,KAAK,IAAItR,GAAG,IAAIsR,aAAa,EAAE;IAC3BlE,mBAAmB,CAACpN,GAAG,CAAC,GAAGsR,aAAa,CAACtR,GAAG,CAAC;EACjD;AACJ;;AAEA;AACA;AACA;AACO,SAASuR,SAASA,CAACxX,IAAI,EAAE;EAC5B,IAAIA,IAAI,CAACyX,OAAO,KAAK,MAAM,EAAE;IACzBzX,IAAI,CAACwF,gBAAgB,CAAC,QAAQ,EAAEkO,aAAa,CAAC;EAClD;EAEA,EAAE,CAACpU,OAAO,CAACqH,IAAI,CAAC6M,cAAc,CAACxT,IAAI,CAAC,EAAE,UAAS2W,YAAY,EAAE;IACzDxC,mBAAmB,CAACwC,YAAY,CAAC;IAEjCA,YAAY,CAACnR,gBAAgB,CAAC,MAAM,EAAEgP,aAAa,CAAC1O,IAAI,CAAC,IAAI,EAAE6Q,YAAY,CAAC,CAAC;IAC7EA,YAAY,CAACnR,gBAAgB,CAAC,QAAQ,EAAEgP,aAAa,CAAC1O,IAAI,CAAC,IAAI,EAAE6Q,YAAY,CAAC,CAAC;IAC/EA,YAAY,CAACnR,gBAAgB,CAAC,SAAS,EAAE+O,0BAA0B,CAAC;IACpEoC,YAAY,CAACnR,gBAAgB,CAAC,OAAO,EAAEkP,kBAAkB,CAAC;EAC9D,CAAC,CAAC;AACN;;AAEA;AACA;AACA;AACA;AACO,SAASgD,aAAaA,CAAA,EAA2B;EAAA,IAA1BC,QAAQ,GAAArF,SAAA,CAAAjT,MAAA,QAAAiT,SAAA,QAAA9Q,SAAA,GAAA8Q,SAAA,MAAGQ,aAAa;EAClD8E,oFAAkB,CAACD,QAAQ,EAAEH,SAAS,CAAC;AAC3C;AACA;AACA;AACA;AACO,SAASK,oBAAoBA,CAAC3R,KAAK,EAAE;EACxC,IAAI4R,WAAW,GAAG7X,QAAQ,CAAC8X,cAAc,CAAC,UAAU,CAAC;IACjDC,aAAa,GAAG/X,QAAQ,CAAC8X,cAAc,CAAC,YAAY,CAAC;IACrDE,YAAY,GAAGhY,QAAQ,CAAC8X,cAAc,CAAC,WAAW,CAAC;IACnDG,WAAW,GAAG,IAAIvK,IAAI,CAAC,CAAC;EAC5B,IAAImK,WAAW,IAAIE,aAAa,IAAIC,YAAY,IAAI/R,KAAK,EAAE;IACvD,IAAIiS,QAAQ,GAAGL,WAAW,CAAC5R,KAAK;MAC5BkS,UAAU,GAAGJ,aAAa,CAAC9R,KAAK;MAChCmS,SAAS,GAAGJ,YAAY,CAAC/R,KAAK;IAClC,IAAIiS,QAAQ,IAAI,EAAE,IAAIC,UAAU,IAAI,EAAE,IAAIC,SAAS,IAAI,EAAE,EAAE;MACvD,OAAO,IAAI;IACf;IAEAD,UAAU,GAAG,CAACE,QAAQ,CAACF,UAAU,CAAC,GAAG,CAAC,EAAEtK,QAAQ,CAAC,CAAC;IAElD,IAAIyK,GAAG,GAAGD,QAAQ,CAACH,QAAQ,CAAC;IAC5B,IAAIK,KAAK,GAAGF,QAAQ,CAACF,UAAU,CAAC;IAChC,IAAIK,IAAI,GAAGH,QAAQ,CAACD,SAAS,CAAC;IAC9B;IACA,IAAIK,UAAU,GAAG,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE;IACnE,IAAIF,KAAK,IAAI,CAAC,IAAIA,KAAK,GAAG,CAAC,EAAE;MACzB,IAAID,GAAG,GAAGG,UAAU,CAACF,KAAK,GAAG,CAAC,CAAC,EAAE;QAC7B,OAAO,KAAK;MAChB;IACJ;IACA,IAAIA,KAAK,IAAI,CAAC,EAAE;MACZ,IAAIG,KAAK,GAAG,KAAK;MACjB,IAAM,EAAEF,IAAI,GAAG,CAAC,CAAC,IAAIA,IAAI,GAAG,GAAG,IAAK,EAAEA,IAAI,GAAG,GAAG,CAAC,EAAE;QAC/CE,KAAK,GAAG,IAAI;MAChB;MACA,IAAKA,KAAK,IAAI,KAAK,IAAMJ,GAAG,IAAI,EAAG,EAAE;QACjC,OAAO,KAAK;MAChB;MACA,IAAKI,KAAK,IAAI,IAAI,IAAMJ,GAAG,GAAG,EAAG,EAAE;QAC/B,OAAO,KAAK;MAChB;IACJ;IACA,IAAIK,SAAS,GAAG,IAAIjL,IAAI,IAAAvB,MAAA,CAAIgM,UAAU,OAAAhM,MAAA,CAAI+L,QAAQ,OAAA/L,MAAA,CAAIiM,SAAS,CAAE,CAAC;IAElE,IAAIO,SAAS,GAAGV,WAAW,EAAE;MACzB,OAAO,KAAK;IAChB;EACJ;EACA,OAAO,IAAI;AACf,C;;;;;;;;;;;;AClaA;AAAA;AAAA;AAAA;AAAa;;AAAA,SAAAW,2BAAAC,CAAA,EAAA/a,CAAA,QAAAgb,CAAA,yBAAArc,MAAA,IAAAoc,CAAA,CAAApc,MAAA,CAAAC,QAAA,KAAAmc,CAAA,qBAAAC,CAAA,QAAAvJ,KAAA,CAAAC,OAAA,CAAAqJ,CAAA,MAAAC,CAAA,GAAAC,2BAAA,CAAAF,CAAA,MAAA/a,CAAA,IAAA+a,CAAA,uBAAAA,CAAA,CAAAzZ,MAAA,IAAA0Z,CAAA,KAAAD,CAAA,GAAAC,CAAA,OAAAE,EAAA,MAAAC,CAAA,YAAAA,EAAA,eAAAtW,CAAA,EAAAsW,CAAA,EAAAC,CAAA,WAAAA,EAAA,WAAAF,EAAA,IAAAH,CAAA,CAAAzZ,MAAA,KAAA+Z,IAAA,WAAAA,IAAA,MAAAlT,KAAA,EAAA4S,CAAA,CAAAG,EAAA,UAAAlb,CAAA,WAAAA,EAAA+a,CAAA,UAAAA,CAAA,KAAAO,CAAA,EAAAH,CAAA,gBAAAI,SAAA,iJAAA7c,CAAA,EAAAuO,CAAA,OAAAuO,CAAA,gBAAA3W,CAAA,WAAAA,EAAA,IAAAmW,CAAA,GAAAA,CAAA,CAAApS,IAAA,CAAAmS,CAAA,MAAAK,CAAA,WAAAA,EAAA,QAAAL,CAAA,GAAAC,CAAA,CAAAS,IAAA,WAAAxO,CAAA,GAAA8N,CAAA,CAAAM,IAAA,EAAAN,CAAA,KAAA/a,CAAA,WAAAA,EAAA+a,CAAA,IAAAS,CAAA,OAAA9c,CAAA,GAAAqc,CAAA,KAAAO,CAAA,WAAAA,EAAA,UAAArO,CAAA,YAAA+N,CAAA,CAAAU,MAAA,IAAAV,CAAA,CAAAU,MAAA,oBAAAF,CAAA,QAAA9c,CAAA;AAAA,SAAAuc,4BAAAF,CAAA,EAAA9N,CAAA,QAAA8N,CAAA,2BAAAA,CAAA,SAAAY,iBAAA,CAAAZ,CAAA,EAAA9N,CAAA,OAAA+N,CAAA,MAAAjL,QAAA,CAAAnH,IAAA,CAAAmS,CAAA,EAAAa,KAAA,6BAAAZ,CAAA,IAAAD,CAAA,CAAAlc,WAAA,KAAAmc,CAAA,GAAAD,CAAA,CAAAlc,WAAA,CAAAyX,IAAA,aAAA0E,CAAA,cAAAA,CAAA,GAAAvJ,KAAA,CAAAoK,IAAA,CAAAd,CAAA,oBAAAC,CAAA,+CAAAc,IAAA,CAAAd,CAAA,IAAAW,iBAAA,CAAAZ,CAAA,EAAA9N,CAAA;AAAA,SAAA0O,kBAAAZ,CAAA,EAAA9N,CAAA,aAAAA,CAAA,IAAAA,CAAA,GAAA8N,CAAA,CAAAzZ,MAAA,MAAA2L,CAAA,GAAA8N,CAAA,CAAAzZ,MAAA,YAAAtB,CAAA,MAAAob,CAAA,GAAA3J,KAAA,CAAAxE,CAAA,GAAAjN,CAAA,GAAAiN,CAAA,EAAAjN,CAAA,IAAAob,CAAA,CAAApb,CAAA,IAAA+a,CAAA,CAAA/a,CAAA,UAAAob,CAAA;AAEuC;AACM;AAE1D,IACIW,eAAe,GAAG;IACdC,KAAK,EAAE,uQAAuQ;IAC9QC,UAAU,EAAE;MACRC,EAAE,EAAE;QACAC,KAAK,EAAE,cAAc;QACrBC,MAAM,EAAE;MACZ,CAAC;MACDC,EAAE,EAAE;QACAF,KAAK,EAAE,SAAS;QAChBC,MAAM,EAAE;MACZ,CAAC;MACDE,EAAE,EAAE;QACAH,KAAK,EAAE,cAAc;QACrBC,MAAM,EAAE;MACZ,CAAC;MACDG,EAAE,EAAE;QACAJ,KAAK,EAAE,6BAA6B;QACpCC,MAAM,EAAE;MACZ,CAAC;MACDI,EAAE,EAAE;QACAL,KAAK,EAAE,2BAA2B;QAClCC,MAAM,EAAE;MACZ,CAAC;MACDK,EAAE,EAAE;QACAN,KAAK,EAAE,2BAA2B;QAClCC,MAAM,EAAE;MACZ,CAAC;MACDM,EAAE,EAAE;QACAP,KAAK,EAAE,iDAAiD;QACxDC,MAAM,EAAE;MACZ,CAAC;MACDO,EAAE,EAAE;QACAR,KAAK,EAAE,eAAe;QACtBC,MAAM,EAAE;MACZ,CAAC;MACDQ,EAAE,EAAE;QACAT,KAAK,EAAE,cAAc;QACrBC,MAAM,EAAE;MACZ,CAAC;MACDS,EAAE,EAAE;QACAV,KAAK,EAAE,SAAS;QAChBC,MAAM,EAAE;MACZ,CAAC;MACDU,EAAE,EAAE;QACAX,KAAK,EAAE,eAAe;QACtBC,MAAM,EAAE;MACZ,CAAC;MACDW,EAAE,EAAE;QACAZ,KAAK,EAAE,SAAS;QAChBC,MAAM,EAAE;MACZ,CAAC;MACDY,EAAE,EAAE;QACAb,KAAK,EAAE,SAAS;QAChBC,MAAM,EAAE;MACZ,CAAC;MACDa,EAAE,EAAE;QACAd,KAAK,EAAE,qBAAqB;QAC5BC,MAAM,EAAE;MACZ,CAAC;MACDc,EAAE,EAAE;QACAf,KAAK,EAAE,mCAAmC;QAC1CC,MAAM,EAAE;MACZ,CAAC;MACDe,EAAE,EAAE;QACAhB,KAAK,EAAE,SAAS;QAChBC,MAAM,EAAE;MACZ,CAAC;MACDgB,EAAE,EAAE;QACAjB,KAAK,EAAE,eAAe;QACtBC,MAAM,EAAE;MACZ,CAAC;MACDiB,EAAE,EAAE;QACAlB,KAAK,EAAE,SAAS;QAChBC,MAAM,EAAE;MACZ,CAAC;MACDkB,EAAE,EAAE;QACAnB,KAAK,EAAE,iBAAiB;QACxBC,MAAM,EAAE;MACZ,CAAC;MACDmB,EAAE,EAAE;QACApB,KAAK,EAAE,aAAa;QACpBC,MAAM,EAAE;MACZ,CAAC;MACDoB,EAAE,EAAE;QACArB,KAAK,EAAE,SAAS;QAChBC,MAAM,EAAE;MACZ,CAAC;MACDqB,EAAE,EAAE;QACAtB,KAAK,EAAE,SAAS;QAChBC,MAAM,EAAE;MACZ,CAAC;MACDsB,EAAE,EAAE;QACAvB,KAAK,EAAE,SAAS;QAChBC,MAAM,EAAE;MACZ,CAAC;MACDuB,EAAE,EAAE;QACAxB,KAAK,EAAE,kBAAkB;QACzBC,MAAM,EAAE;MACZ,CAAC;MACDwB,EAAE,EAAE;QACAzB,KAAK,EAAE,iEAAiE;QACxEC,MAAM,EAAE;MACZ,CAAC;MACDyB,EAAE,EAAE;QACA1B,KAAK,EAAE,SAAS;QAChBC,MAAM,EAAE;MACZ,CAAC;MACD0B,EAAE,EAAE;QACA3B,KAAK,EAAE,gDAAgD;QACvDC,MAAM,EAAE;MACZ,CAAC;MACD2B,EAAE,EAAE;QACA5B,KAAK,EAAE,qBAAqB;QAC5BC,MAAM,EAAE;MACZ,CAAC;MACD4B,EAAE,EAAE;QACA7B,KAAK,EAAE,eAAe;QACtBC,MAAM,EAAE;MACZ,CAAC;MACD6B,EAAE,EAAE;QACA9B,KAAK,EAAE,oBAAoB;QAC3BC,MAAM,EAAE;MACZ,CAAC;MACD8B,EAAE,EAAE;QACA/B,KAAK,EAAE,SAAS;QAChBC,MAAM,EAAE;MACZ,CAAC;MACD+B,EAAE,EAAE;QACAhC,KAAK,EAAE,SAAS;QAChBC,MAAM,EAAE;MACZ,CAAC;MACDgC,EAAE,EAAE;QACAjC,KAAK,EAAE,SAAS;QAChBC,MAAM,EAAE;MACZ,CAAC;MACDiC,EAAE,EAAE;QACAlC,KAAK,EAAE,SAAS;QAChBC,MAAM,EAAE;MACZ,CAAC;MACDkC,EAAE,EAAE;QACAnC,KAAK,EAAE,SAAS;QAChBC,MAAM,EAAE;MACZ,CAAC;MACDmC,EAAE,EAAE;QACApC,KAAK,EAAE,WAAW;QAClBC,MAAM,EAAE;MACZ,CAAC;MACDoC,EAAE,EAAE;QACArC,KAAK,EAAE,SAAS;QAChBC,MAAM,EAAE;MACZ,CAAC;MACDqC,EAAE,EAAE;QACAtC,KAAK,EAAE,gBAAgB;QACvBC,MAAM,EAAE;MACZ,CAAC;MACDsC,EAAE,EAAE;QACAvC,KAAK,EAAE,oBAAoB;QAC3BC,MAAM,EAAE;MACZ,CAAC;MACDuC,EAAE,EAAE;QACAxC,KAAK,EAAE,SAAS;QAChBC,MAAM,EAAE;MACZ,CAAC;MACDvD,EAAE,EAAE;QACAsD,KAAK,EAAE,SAAS;QAChBC,MAAM,EAAE;MACZ,CAAC;MACD9O,EAAE,EAAE;QACA6O,KAAK,EAAE,SAAS;QAChBC,MAAM,EAAE;MACZ,CAAC;MACDwC,EAAE,EAAE;QACAzC,KAAK,EAAE,UAAU;QACjBC,MAAM,EAAE;MACZ,CAAC;MACDyC,EAAE,EAAE;QACA1C,KAAK,EAAE,SAAS;QAChBC,MAAM,EAAE;MACZ,CAAC;MACD0C,EAAE,EAAE;QACA3C,KAAK,EAAE,gBAAgB;QACvBC,MAAM,EAAE;MACZ,CAAC;MACD2C,EAAE,EAAE;QACA5C,KAAK,EAAE,SAAS;QAChBC,MAAM,EAAE;MACZ,CAAC;MACD4C,EAAE,EAAE;QACA7C,KAAK,EAAE,gBAAgB;QACvBC,MAAM,EAAE;MACZ,CAAC;MACD6C,EAAE,EAAE;QACA9C,KAAK,EAAE,SAAS;QAChBC,MAAM,EAAE;MACZ,CAAC;MACD8C,EAAE,EAAE;QACA/C,KAAK,EAAE,SAAS;QAChBC,MAAM,EAAE;MACZ,CAAC;MACD+C,EAAE,EAAE;QACAhD,KAAK,EAAE,kBAAkB;QACzBC,MAAM,EAAE;MACZ,CAAC;MACDgD,EAAE,EAAE;QACAjD,KAAK,EAAE,SAAS;QAChBC,MAAM,EAAE;MACZ,CAAC;MACDiD,EAAE,EAAE;QACAlD,KAAK,EAAE,SAAS;QAChBC,MAAM,EAAE;MACZ,CAAC;MACDkD,EAAE,EAAE;QACAnD,KAAK,EAAE,qBAAqB;QAC5BC,MAAM,EAAE;MACZ,CAAC;MACDmD,EAAE,EAAE;QACApD,KAAK,EAAE,yBAAyB;QAChCC,MAAM,EAAE;MACZ,CAAC;MACDoD,EAAE,EAAE;QACArD,KAAK,EAAE,SAAS;QAChBC,MAAM,EAAE;MACZ,CAAC;MACDqD,EAAE,EAAE;QACAtD,KAAK,EAAE,SAAS;QAChBC,MAAM,EAAE;MACZ,CAAC;MACDsD,EAAE,EAAE;QACAvD,KAAK,EAAE,SAAS;QAChBC,MAAM,EAAE;MACZ,CAAC;MACDuD,EAAE,EAAE;QACAxD,KAAK,EAAE,kBAAkB;QACzBC,MAAM,EAAE;MACZ,CAAC;MACDwD,EAAE,EAAE;QACAzD,KAAK,EAAE,SAAS;QAChBC,MAAM,EAAE;MACZ,CAAC;MACDyD,EAAE,EAAE;QACA1D,KAAK,EAAE,SAAS;QAChBC,MAAM,EAAE;MACZ,CAAC;MACD0D,EAAE,EAAE;QACA3D,KAAK,EAAE,mBAAmB;QAC1BC,MAAM,EAAE;MACZ,CAAC;MACD2D,EAAE,EAAE;QACA5D,KAAK,EAAE,SAAS;QAChBC,MAAM,EAAE;MACZ,CAAC;MACD4D,EAAE,EAAE;QACA7D,KAAK,EAAE,eAAe;QACtBC,MAAM,EAAE;MACZ,CAAC;MACD6D,EAAE,EAAE;QACA9D,KAAK,EAAE,SAAS;QAChBC,MAAM,EAAE;MACZ,CAAC;MACD8D,EAAE,EAAE;QACA/D,KAAK,EAAE,SAAS;QAChBC,MAAM,EAAE;MACZ,CAAC;MACD+D,EAAE,EAAE;QACAhE,KAAK,EAAE,SAAS;QAChBC,MAAM,EAAE;MACZ,CAAC;MACDgE,EAAE,EAAE;QACAjE,KAAK,EAAE,eAAe;QACtBC,MAAM,EAAE;MACZ,CAAC;MACDiE,EAAE,EAAE;QACAlE,KAAK,EAAE,SAAS;QAChBC,MAAM,EAAE;MACZ,CAAC;MACDkE,EAAE,EAAE;QACAnE,KAAK,EAAE,qBAAqB;QAC5BC,MAAM,EAAE;MACZ,CAAC;MACDmE,EAAE,EAAE;QACApE,KAAK,EAAE,SAAS;QAChBC,MAAM,EAAE;MACZ,CAAC;MACDoE,EAAE,EAAE;QACArE,KAAK,EAAE,uBAAuB;QAC9BC,MAAM,EAAE;MACZ,CAAC;MACDqE,EAAE,EAAE;QACAtE,KAAK,EAAE,SAAS;QAChBC,MAAM,EAAE;MACZ,CAAC;MACDsE,EAAE,EAAE;QACAvE,KAAK,EAAE,SAAS;QAChBC,MAAM,EAAE;MACZ,CAAC;MACDuE,EAAE,EAAE;QACAxE,KAAK,EAAE,SAAS;QAChBC,MAAM,EAAE;MACZ,CAAC;MACDwE,EAAE,EAAE;QACAzE,KAAK,EAAE,SAAS;QAChBC,MAAM,EAAE;MACZ,CAAC;MACDyE,OAAO,EAAE;QACL1E,KAAK,EAAE,YAAY;QACnBC,MAAM,EAAE;MACZ;IACJ,CAAC;IACD0E,OAAO,EAAE;MACLjE,EAAE,EAAE;QACAV,KAAK,EAAE;MACX,CAAC;MACD0E,OAAO,EAAE;QACL1E,KAAK,EAAE;MACX;IACJ;EACJ,CAAC;EACD4E,MAAM,GAAG,IAAIC,SAAS,CAAC,CAAC;AAE5BC,mEAAuB,CAAC,CAAC;AAEzB,SAASC,uBAAuBA,CAACC,WAAW,EAAE;EAC1C,IAAIC,iBAAiB,GAAGD,WAAW,CAACE,UAAU,CAAC,yBAAyB,CAAC,IAAIF,WAAW,CAACE,UAAU,CAAC,yBAAyB,CAAC,CAAClZ,KAAK,IAAI,IAAI;IACxImZ,eAAe,GAAGF,iBAAiB,GAAG,GAAG,GAAGA,iBAAiB,GAAG,SAAS,GAAG,wBAAwB;IACpGG,cAAc,GAAGJ,WAAW,CAAClf,IAAI,CAACkF,aAAa,CAACma,eAAe,CAAC;IAChEE,iBAAiB,GAAGD,cAAc,IAAIA,cAAc,CAACpZ,KAAK,GAAGoZ,cAAc,CAACpZ,KAAK,GAAGhJ,MAAM,CAACC,IAAI,CAACqiB,SAAS,CAACC,cAAc;EAE5H,OAAO3F,eAAe,CAACE,UAAU,CAACuF,iBAAiB,CAACG,WAAW,CAAC,CAAC,CAAC,IAAI5F,eAAe,CAACE,UAAU,CAAC4E,OAAO;AAC5G;AAEA,SAASe,oBAAoBA,CAAC7L,KAAK,EAAE;EACjC,IAAI8L,eAAe,GAAG9L,KAAK,CAAC9T,IAAI,CAACkF,aAAa,CAAC,wBAAwB,CAAC;IACpEqa,iBAAiB,GAAGK,eAAe,IAAIA,eAAe,CAAC1Z,KAAK,GAAG0Z,eAAe,CAAC1Z,KAAK,GAAGhJ,MAAM,CAACC,IAAI,CAACqiB,SAAS,CAACC,cAAc;EAE/H,OAAO3F,eAAe,CAAC+E,OAAO,CAACU,iBAAiB,CAACG,WAAW,CAAC,CAAC,CAAC,IAAI5F,eAAe,CAAC+E,OAAO,CAACD,OAAO;AACtG;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASiB,aAAaA,CAAC3Z,KAAK,EAAE;EAC1B,OAAO,CAACA,KAAK,IAAI4T,eAAe,CAACC,KAAK,CAACF,IAAI,CAAC3T,KAAK,CAACmJ,IAAI,CAAC,CAAC,CAAC;AAC7D;AAEA,SAASyQ,qBAAqBA,CAAC5Z,KAAK,EAAE;EAClC,IAAI6Z,WAAW,GAAG,IAAIC,MAAM,CAAC9iB,MAAM,CAACC,IAAI,CAACC,eAAe,CAAC6iB,yBAAyB,CAAC;EACnF,OAAO,CAAC/Z,KAAK,IAAI6Z,WAAW,CAAClG,IAAI,CAAC3T,KAAK,CAACmJ,IAAI,CAAC,CAAC,CAAC;AACnD;AAEA,SAAS6Q,iBAAiBA,CAACha,KAAK,EAAE4N,KAAK,EAAE;EACrC,IAAI,CAAC5W,MAAM,CAACijB,mBAAmB,EAAE;IAC7B,OAAON,aAAa,CAAC3Z,KAAK,CAAC;EAC/B;EAEA,IAAIka,YAAY,GAAGljB,MAAM,CAACijB,mBAAmB,CAACE,WAAW,CAACvM,KAAK,CAAC;EAEhE,OAAO,CAAC5N,KAAK,IAAIka,YAAY,CAACE,aAAa,CAAC,CAAC;AACjD;;AAEA;AACA;AACA;AACA;AACA,SAASC,oBAAoBA,CAACC,WAAW,EAAEtB,WAAW,EAAE;EACpD,IAAIuB,eAAe,GAAGxB,uBAAuB,CAACC,WAAW,CAAC;IACtDxI,OAAO,GAAG,IAAI;EAElB,IAAI+J,eAAe,EAAE;IACjB/J,OAAO,GAAG+J,eAAe,CAACvG,KAAK,CAACL,IAAI,CAAC2G,WAAW,CAACnR,IAAI,CAAC,CAAC,CAAC;EAC5D;EAEA,OAAO,CAACmR,WAAW,IAAI9J,OAAO;AAClC;;AAEA;AACA;AACA;AACA;AACA,SAASgK,iBAAiBA,CAACC,QAAQ,EAAEC,QAAQ,EAAE;EAC3C,IAAIC,YAAY,GAAGlB,oBAAoB,CAACiB,QAAQ,CAAC;IAC7ClK,OAAO,GAAG,IAAI;EAElB,IAAImK,YAAY,EAAE;IACdnK,OAAO,GAAGmK,YAAY,CAAC3G,KAAK,CAACL,IAAI,CAAC8G,QAAQ,CAACtR,IAAI,CAAC,CAAC,CAAC;EACtD;EAEA,OAAO,CAACsR,QAAQ,IAAIjK,OAAO;AAC/B;;AAEA;AACA;AACA;AACA,SAASoK,eAAeA,CAAC5a,KAAK,EAAE;EAC5B,OAAO,SAAS,CAAC2T,IAAI,CAAC3T,KAAK,CAACmJ,IAAI,CAAC,CAAC,CAAC;AACvC;;AAEA;AACA;AACA;AACA,SAAS0R,cAAcA,CAAC7a,KAAK,EAAE;EAC3B,IAAIyN,KAAK,GAAG,IAAI;EAChB,IAAIzN,KAAK,CAAC7G,MAAM,GAAG,CAAC,EAAE;IAClB,OAAO,CAACsU,KAAK;EACjB;EAEA,OAAOA,KAAK;AAChB;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASqN,sBAAsBA,CAAC9a,KAAK,EAAE;EACnC,IAAI+a,cAAc,GAAG1d,CAAC,CAAC,kBAAkB,CAAC,CAACjF,IAAI,CAAC,iBAAiB,CAAC;IAC9D4iB,kBAAkB,GAAG3d,CAAC,CAAC,iCAAiC,CAAC,CAACjF,IAAI,CAAC,qBAAqB,CAAC;IACrF6iB,eAAe,GAAGjb,KAAK,CAACoO,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;IAC1C8M,4BAA4B,GAAG,IAAIpB,MAAM,CAAC,6BAAuC,EAAE,GAAG,CAAC;IACvFqB,6BAA6B,GAAG,IAAIrB,MAAM,CAAC,8BAAwC,EAAE,GAAG,CAAC;IACzFsB,cAAc,GAAGF,4BAA4B,CAACvH,IAAI,CAACsH,eAAe,CAAC,IAAI,CAACE,6BAA6B,CAACxH,IAAI,CAACsH,eAAe,CAAC;EAC/H,IAAIF,cAAc,KAAK,WAAW,IAAIA,cAAc,KAAK,WAAW,IAAIC,kBAAkB,KAAK,mBAAmB,EAAE;IAChH,OAAOI,cAAc,KAAK,KAAK,GAAG,KAAK,GAAG,IAAI;EAClD,CAAC,MAAM;IACH,OAAO,CAACpb,KAAK,IAAI,uGAAuG,CAAC2T,IAAI,CAAC3T,KAAK,CAACmJ,IAAI,CAAC,CAAC,CAAC;EAC/I;AACJ;;AAEA;AACA;AACA;AACA,SAASkS,cAAcA,CAACrb,KAAK,EAAE;EAC3B,OAAO,CAACA,KAAK,IAAI,8EAA8E,CAAC2T,IAAI,CAAC3T,KAAK,CAACmJ,IAAI,CAAC,CAAC,CAAC;AACtH;;AAEA;AACA;AACA;AACA,SAASmS,yBAAyBA,CAACtb,KAAK,EAAE;EACtC,OAAO,CAACA,KAAK,IAAI,8EAA8E,CAAC2T,IAAI,CAAC3T,KAAK,CAACmJ,IAAI,CAAC,CAAC,CAAC;AACtH;AACA;AACA;AACA;AACA,SAASoS,oBAAoBA,CAACvb,KAAK,EAAE;EACjC,OAAO,CAACA,KAAK,IAAI,sCAAsC,CAAC2T,IAAI,CAAC3T,KAAK,CAACmJ,IAAI,CAAC,CAAC,CAAC;AAC9E;;AAEA;AACA;AACA;AACA,SAASqS,mBAAmBA,CAACxb,KAAK,EAAE;EAChC,OAAO,CAACA,KAAK,IAAI,yGAAyG,CAAC2T,IAAI,CAAC3T,KAAK,CAACmJ,IAAI,CAAC,CAAC,CAAC;AACjJ;;AAEA;AACA;AACA;AACA,SAASsS,aAAaA,CAACzb,KAAK,EAAE;EAC1B,OAAO,CAACA,KAAK,IAAI,mFAAmF,CAAC2T,IAAI,CAAC3T,KAAK,CAACmJ,IAAI,CAAC,CAAC,CAAC;AAC3H;;AAEA;AACA;AACA;AACA,SAASuS,gBAAgBA,CAAC1b,KAAK,EAAE;EAC7B,OAAO,CAACA,KAAK,IAAI,CAAC,sBAAsB,CAAC2T,IAAI,CAAC3T,KAAK,CAACmJ,IAAI,CAAC,CAAC,CAAC;AAC/D;;AAEA;AACA;AACA;AACA,SAASwS,wBAAwBA,CAAC3b,KAAK,EAAE;EACrC,IAAImZ,eAAe,GAAGpf,QAAQ,CAACiF,aAAa,CAAC,uCAAuC,CAAC;IACjF4c,UAAU,GAAG7hB,QAAQ,CAACiF,aAAa,CAAC,mCAAmC,CAAC;IACxE6c,aAAa,GAAGD,UAAU,IAAIA,UAAU,CAAC1C,UAAU,CAAC,iCAAiC,CAAC,CAAClZ,KAAK,IAAI,IAAI;EAExG,IAAI6b,aAAa,IAAI,IAAI,IAAIA,aAAa,IAAI,IAAI,EAAE;IAChD,OAAO,EAAE,CAAC1C,eAAe,CAACnZ,KAAK,KAAK,IAAI,IAAImZ,eAAe,CAACnZ,KAAK,KAAK,IAAI,KAAK,CAACA,KAAK,CAACmJ,IAAI,CAAC,CAAC,CAAC;EACjG,CAAC,MAAM;IACH,OAAO,EAAEgQ,eAAe,CAACnZ,KAAK,KAAK6b,aAAa,IAAI,CAAC7b,KAAK,CAACmJ,IAAI,CAAC,CAAC,CAAC;EACtE;AACJ;;AAEA;AACA;AACA;AACA,SAAS2S,aAAaA,CAAC9b,KAAK,EAAE4N,KAAK,EAAE;EACjC,IAAImO,UAAU,GAAGnO,KAAK,CAAC9T,IAAI,CAACkF,aAAa,CAAC4O,KAAK,CAACzF,YAAY,CAAC,qBAAqB,CAAC,CAAC;IAChF6T,eAAe,GAAGD,UAAU,CAAC/b,KAAK;EAEtC,OAAOA,KAAK,CAACwZ,WAAW,CAAC,CAAC,KAAKwC,eAAe,CAACxC,WAAW,CAAC,CAAC;AAChE;AAEA,SAASyC,gBAAgBA,CAACjc,KAAK,EAAE;EAC7B,OAAO,CAAC,CAACA,KAAK,CAACmJ,IAAI,CAAC,CAAC;AACzB;;AAEA;AACA;AACA;AACA,SAAS+S,mBAAmBA,CAAClc,KAAK,EAAE4N,KAAK,EAAE;EACvC,IAAIuO,eAAe,GAAG9jB,IAAI,CAAC+jB,KAAK,CAACxO,KAAK,CAACzF,YAAY,CAAC,2BAA2B,CAAC,CAAC;IAC7EqI,OAAO,GAAG,IAAI;EAElB,KAAK,IAAIzQ,GAAG,IAAIoc,eAAe,EAAE;IAC7B,IAAIA,eAAe,CAACpc,GAAG,CAAC,CAACC,KAAK,EAAE;MAC5B,IAAIqc,YAAY,GAAG,IAAIvC,MAAM,MAAA5T,MAAA,CAAMiW,eAAe,CAACpc,GAAG,CAAC,CAACiU,KAAK,OAAI,CAAC;MAElE,IAAI,CAACqI,YAAY,CAAC1I,IAAI,CAAC/F,KAAK,CAAC5N,KAAK,CAAC,EAAE;QACjC4N,KAAK,CAAC0O,OAAO,CAACC,aAAa,GAAGxc,GAAG;QACjC6N,KAAK,CAAC0O,OAAO,CAACE,eAAe,GAAGL,eAAe,CAACpc,GAAG,CAAC,CAACC,KAAK;QAE1DwQ,OAAO,GAAG,KAAK;MACnB;IACJ;EACJ;EAEA,OAAOA,OAAO;AAClB;;AAEA;AACA;AACA;AACA;AACA,SAASiM,wBAAwBA,CAACC,YAAY,EAAEC,WAAW,EAAE;EACzD,EAAE,CAACvjB,OAAO,CAACqH,IAAI,CAACic,YAAY,EAAE,UAASE,YAAY,EAAE;IACjDA,YAAY,CAACC,QAAQ,GAAGF,WAAW;;IAEnC;IACA,IAAI,CAACA,WAAW,EAAE;MACd7D,mEAAuB,CAAC8D,YAAY,CAAC;IACzC;;IAEA;IACA,IAAIA,YAAY,CAACjf,SAAS,CAACkF,QAAQ,CAACiW,yEAA6B,CAAC,EAAE;MAChEA,mEAAuB,CAAC8D,YAAY,CAAC;IACzC;EACJ,CAAC,CAAC;AACN;;AAEA;AACA;AACA;AACA,SAASE,kBAAkBA,CAACJ,YAAY,EAAE;EAAA,IAAAK,SAAA,GAAApK,0BAAA,CACd+J,YAAY;IAAAM,KAAA;EAAA;IAApC,KAAAD,SAAA,CAAArgB,CAAA,MAAAsgB,KAAA,GAAAD,SAAA,CAAA9J,CAAA,IAAAC,IAAA,GAAsC;MAAA,IAA7B+J,WAAW,GAAAD,KAAA,CAAAhd,KAAA;MAChB,IAAIid,WAAW,CAACjd,KAAK,IAAIid,WAAW,CAACC,OAAO,EAAE;QAC1C,OAAO,IAAI;MACf;IACJ;EAAC,SAAAxlB,GAAA;IAAAqlB,SAAA,CAAAllB,CAAA,CAAAH,GAAA;EAAA;IAAAqlB,SAAA,CAAA5J,CAAA;EAAA;EAED,OAAO,KAAK;AAChB;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASgK,uBAAuBA,CAACC,MAAM,EAAE;EACrC,IAAIC,kBAAkB,GAAG,CAACD,MAAM,IAAIrjB,QAAQ,EAAEwG,gBAAgB,CAAC,yBAAyB,CAAC;EAEzF,EAAE,CAACnH,OAAO,CAACqH,IAAI,CAAC4c,kBAAkB,EAAE,UAASC,YAAY,EAAE;IACvD,IAAIZ,YAAY,GAAGY,YAAY,CAAC/c,gBAAgB,CAAC,qCAAqC,CAAC;IAEvFgd,+EAAoB,CAACb,YAAY,EAAE,aAAa,EAAE,YAAW;MACzDD,wBAAwB,CAACC,YAAY,EAAEI,kBAAkB,CAACJ,YAAY,CAAC,CAAC;IAC5E,CAAC,CAAC;EACN,CAAC,CAAC;AACN;;AAEA;AACA;AACA;AACA;AACA,SAASc,iBAAiBA,CAACxd,KAAK,EAAE4N,KAAK,EAAE;EACrC,IAAI5N,KAAK,KAAK4N,KAAK,CAACnF,QAAQ,KAAK,UAAU,IAAKmF,KAAK,CAACnM,IAAI,IAAImM,KAAK,CAACnM,IAAI,KAAK,MAAO,CAAC,EAAE;IACnF,IAAIgc,UAAU,GAAG7E,MAAM,CAAC8E,eAAe,CAAC1d,KAAK,EAAE,WAAW,CAAC;IAE3D4N,KAAK,CAAC5N,KAAK,GAAGyd,UAAU,CAAC9kB,IAAI,CAACuH,WAAW;EAC7C;EAEA,OAAO,IAAI;AACf;AAEA,SAASyd,iBAAiBA,CAAC3d,KAAK,EAAE4N,KAAK,EAAE;EACrC,IAAIgQ,SAAS,GAAGhQ,KAAK,CAACzF,YAAY,CAAC,mBAAmB,CAAC,IAAI,EAAE;EAE7D,OAAOnI,KAAK,CAACmJ,IAAI,CAAC,CAAC,CAAChQ,MAAM,IAAIykB,SAAS;AAC3C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,uBAAuBA,CAAC7d,KAAK,EAAE4N,KAAK,EAAE;EAC3C,IAAMkQ,QAAQ,GAAGC,mBAAmB,CAACnQ,KAAK,CAAC;EAC3C,OAAOkQ,QAAQ,CAACZ,OAAO;AAC3B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAASa,mBAAmBA,CAACnQ,KAAK,EAAE;EAChC,OAAO7T,QAAQ,CAACiF,aAAa,KAAAkH,MAAA,CAAK0H,KAAK,CAACzI,EAAE,CAACiJ,OAAO,CAAC,aAAa,EAAE,MAAM,CAAC,CAAE,CAAC;AAChF;AAEA,SAAS4P,2BAA2BA,CAAChe,KAAK,EAAE4N,KAAK,EAAE;EAC/C,IAAIoG,KAAK,GAAG,IAAI8F,MAAM,CAAClM,KAAK,CAACsL,UAAU,CAAC+E,OAAO,CAACje,KAAK,EAAE,GAAG,CAAC;EAC3D,OAAOgU,KAAK,CAACL,IAAI,CAAC3T,KAAK,CAAC;AAC5B;AAEA,SAASke,gBAAgBA,CAACle,KAAK,EAAE4N,KAAK,EAAE;EACpC,OAAOA,KAAK,CAACzF,YAAY,CAAC,uBAAuB,CAAC,IAAInR,MAAM,CAACC,IAAI,CAACknB,SAAS,CAAChP,eAAe;AAC/F;AAEA,SAASiP,2BAA2BA,CAACpe,KAAK,EAAE;EACxC,IAAIiU,MAAM,GAAG,yCAAyC;EACtD,OAAO,CAACjU,KAAK,IAAI,CAAEiU,MAAM,CAACN,IAAI,CAAC3T,KAAK,CAACmJ,IAAI,CAAC,CAAC,CAAE;AACjD;AACA2P,mEAAuB,CAAC,mBAAmB,EAAEkF,2BAA2B,EAAEE,gBAAgB,CAAC;AAE3FpF,mEAAuB,CAAC,qBAAqB,EAAEgD,aAAa,EAAE9kB,MAAM,CAACC,IAAI,CAACknB,SAAS,CAACE,cAAc,CAAC;AAEnGvF,mEAAuB,CAAC,qBAAqB,EAAEa,aAAa,EAAE3iB,MAAM,CAACC,IAAI,CAACknB,SAAS,CAACG,WAAW,CAAC;AAEhGxF,mEAAuB,CAAC,0BAA0B,EAAEkB,iBAAiB,EAAEhjB,MAAM,CAACC,IAAI,CAACknB,SAAS,CAACG,WAAW,CAAC;AAEzGxF,mEAAuB,CAAC,uBAAuB,EAAE8B,eAAe,EAAE5jB,MAAM,CAACC,IAAI,CAACknB,SAAS,CAACI,aAAa,CAAC;AAEtGzF,mEAAuB,CAAC,4BAA4B,EAAEgC,sBAAsB,EAAE9jB,MAAM,CAACC,IAAI,CAACknB,SAAS,CAACK,cAAc,CAAC;AAEnH1F,mEAAuB,CAAC,sBAAsB,EAAEuC,cAAc,EAAErkB,MAAM,CAACC,IAAI,CAACknB,SAAS,CAACM,YAAY,CAAC;AAEnG3F,mEAAuB,CAAC,iCAAiC,EAAEwC,yBAAyB,EAAEtkB,MAAM,CAACC,IAAI,CAACknB,SAAS,CAACM,YAAY,CAAC;AAEzH3F,mEAAuB,CAAC,uBAAuB,EAAE0B,iBAAiB,EAAExjB,MAAM,CAACC,IAAI,CAACknB,SAAS,CAACO,aAAa,CAAC;AAExG5F,mEAAuB,CAAC,4BAA4B,EAAEyC,oBAAoB,EAAEvkB,MAAM,CAACC,IAAI,CAACknB,SAAS,CAACQ,kBAAkB,CAAC;AAErH7F,mEAAuB,CAAC,2BAA2B,EAAE0C,mBAAmB,EAAExkB,MAAM,CAACC,IAAI,CAACknB,SAAS,CAACS,iBAAiB,CAAC;AAElH9F,mEAAuB,CAAC,qBAAqB,EAAE2C,aAAa,EAAEzkB,MAAM,CAACC,IAAI,CAACknB,SAAS,CAACU,WAAW,CAAC;AAEhG/F,mEAAuB,CAAC,oBAAoB,EAAEgG,iBAAiB,EAAE9nB,MAAM,CAACC,IAAI,CAACknB,SAAS,CAACY,UAAU,CAAC;AAElGjG,mEAAuB,CAAC,yBAAyB,EAAE4C,gBAAgB,EAAE1kB,MAAM,CAACC,IAAI,CAACknB,SAAS,CAACa,cAAc,CAAC;AAE1GlG,mEAAuB,CAAC,uBAAuB,EAAE+B,cAAc,EAAE7jB,MAAM,CAACC,IAAI,CAACknB,SAAS,CAACc,YAAY,CAAC;AAEpGnG,mEAAuB,CAAC,yBAAyB,EAAEA,0EAA8B,EAAE9hB,MAAM,CAACC,IAAI,CAACknB,SAAS,CAACe,gBAAgB,CAAC;AAE1HpG,mEAAuB,CAAC,0BAA0B,EAAEA,0EAA8B,EAAE9hB,MAAM,CAACC,IAAI,CAACknB,SAAS,CAACe,gBAAgB,CAAC;AAE3HpG,mEAAuB,CAAC,2BAA2B,EAAEA,0EAA8B,EAAE9hB,MAAM,CAACC,IAAI,CAACknB,SAAS,CAACe,gBAAgB,CAAC;AAE5HpG,mEAAuB,CAAC,oCAAoC,EAAEsF,2BAA2B,EAAEpnB,MAAM,CAACC,IAAI,CAACknB,SAAS,CAACgB,4BAA4B,CAAC;AAE9I,IAAInoB,MAAM,CAACC,IAAI,CAACC,eAAe,CAACkoB,+BAA+B,EAAE;EAC7DtG,mEAAuB,CAAC,8BAA8B,EAAEc,qBAAqB,EAAE5iB,MAAM,CAACC,IAAI,CAACknB,SAAS,CAACG,WAAW,CAAC;AACrH;AACAxF,mEAAuB,CAAC,kCAAkC,EAAE6C,wBAAwB,EAAE,UAAS3b,KAAK,EAAE4N,KAAK,EAAE;EACzG,OAAOA,KAAK,CAACzF,YAAY,CAAC,oBAAoB,CAAC,IAAInR,MAAM,CAACC,IAAI,CAACknB,SAAS,CAACkB,aAAa,CAACpL,MAAM,CAACrG,KAAK,CAAC0R,MAAM,IAAI1R,KAAK,CAAC0R,MAAM,CAAC,CAAC,CAAC,GAAG1R,KAAK,CAAC0R,MAAM,CAAC,CAAC,CAAC,CAACpf,WAAW,CAACiJ,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;AAC5K,CAAC,CAAC;AAEF2P,mEAAuB,CAAC,mBAAmB,EAAE6E,iBAAiB,EAAE,UAAS3d,KAAK,EAAE4N,KAAK,EAAE;EACnF,IAAI2R,eAAe,GAAG3R,KAAK,CAACzF,YAAY,CAAC,mBAAmB,CAAC,IAAI,EAAE;EACnE,OAAOnR,MAAM,CAACC,IAAI,CAACknB,SAAS,CAACP,SAAS,CAAC3J,MAAM,CAACsL,eAAe,CAAC;AAClE,CAAC,CAAC;AAEFzG,mEAAuB,CAAC,2BAA2B,EAAEoD,mBAAmB,EAAE,UAASlc,KAAK,EAAE4N,KAAK,EAAE;EAC7F,OAAO5W,MAAM,CAACC,IAAI,CAACknB,SAAS,CAACqB,WAAW,CAAC5R,KAAK,CAAC0O,OAAO,CAACC,aAAa,CAAC,CAACtI,MAAM,CAACrG,KAAK,CAAC0O,OAAO,CAACE,eAAe,CAAC;AAC/G,CAAC,CAAC;AAEF1D,mEAAuB,CAAC,2BAA2B,EAAEuB,oBAAoB,EAAE,UAASra,KAAK,EAAE4N,KAAK,EAAE;EAC9F,IAAI2M,eAAe,GAAGxB,uBAAuB,CAACnL,KAAK,CAAC;EAEpD,OAAO2M,eAAe,GAAGvjB,MAAM,CAACC,IAAI,CAACknB,SAAS,CAACsB,aAAa,CAACxL,MAAM,CAACsG,eAAe,CAACtG,MAAM,CAAC,GAAGjd,MAAM,CAACC,IAAI,CAACknB,SAAS,CAACuB,YAAY;AACpI,CAAC,CAAC;AAEF5G,mEAAuB,CAAC,UAAU,EAAEmD,gBAAgB,EAAE,UAASjc,KAAK,EAAE4N,KAAK,EAAE;EACzE,OAAOA,KAAK,CAACzF,YAAY,CAAC,oBAAoB,CAAC,IAAInR,MAAM,CAACC,IAAI,CAACknB,SAAS,CAACkB,aAAa,CAACpL,MAAM,CAACrG,KAAK,CAAC0R,MAAM,IAAI1R,KAAK,CAAC0R,MAAM,CAAC,CAAC,CAAC,GAAG1R,KAAK,CAAC0R,MAAM,CAAC,CAAC,CAAC,CAACpf,WAAW,CAACiJ,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;AAC5K,CAAC,CAAC;AAEF2P,mEAAuB,CAAC,GAAG,EAAE0E,iBAAiB,EAAE,EAAE,CAAC;AAEnD1E,wEAA4B,CAAC;EACzB,YAAY,EAAE9hB,MAAM,CAACC,IAAI,CAACknB,SAAS,CAACwB,UAAU;EAC9C,cAAc,EAAE3oB,MAAM,CAACC,IAAI,CAACknB,SAAS,CAACyB,YAAY;EAClD,iBAAiB,EAAE5oB,MAAM,CAACC,IAAI,CAACknB,SAAS,CAAChP;AAC7C,CAAC,CAAC;AAEF2J,mEAAuB,CAAC,gCAAgC,EAAE+E,uBAAuB,EAAE,UAAS7d,KAAK,EAAE4N,KAAK,EAAE;EACtG,IAAMkQ,QAAQ,GAAGC,mBAAmB,CAACnQ,KAAK,CAAC;EAC3C,IAAMiS,KAAK,GAAG/B,QAAQ,CAACwB,MAAM,IAAIxB,QAAQ,CAACwB,MAAM,CAAC,CAAC,CAAC;EACnD,OAAOxB,QAAQ,CAAC3V,YAAY,CAAC,oBAAoB,CAAC,IAAInR,MAAM,CAACC,IAAI,CAACknB,SAAS,CAACkB,aAAa,CAACpL,MAAM,CAAC4L,KAAK,GAAGA,KAAK,CAAC3f,WAAW,CAACiJ,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;AAC3I,CAAC,CAAC;AAEFgU,uBAAuB,CAAC,CAAC;;AAEzB;AACA;AACA;AACA;AACA;AACA;AACO,SAAS9e,IAAIA,CAACyhB,UAAU,EAAE;EAC7B,IAAIC,aAAa,GAAGD,UAAU,GAAGA,UAAU,CAACvf,gBAAgB,CAACuY,mEAAuB,CAAC,GAAGA,mEAAuB;EAE/GqE,uBAAuB,CAAC2C,UAAU,CAAC;EAEnChH,mEAAuB,CAACiH,aAAa,CAAC;AAC1C;AAEA,SAASjB,iBAAiBA,CAAC9e,KAAK,EAAE;EAC9B,IAAIgU,KAAK,GAAG,gBAAgB;EAC5B,IAAI,CAACA,KAAK,CAACL,IAAI,CAAC3T,KAAK,CAAC,EAAE;IACpB,OAAO,KAAK;EAChB;EACA,OAAO,IAAI;AACf,C;;;;;;;;;;;;AC5tBA;AAAa;;AAEb;AACA;AACA;AACA;AACA,SAASggB,eAAeA,CAAA,EAAG;EACvBjmB,QAAQ,CAACpB,IAAI,CAAC2G,gBAAgB,CAAC,WAAW,EAAE2gB,eAAe,CAAC;EAC5DlmB,QAAQ,CAACpB,IAAI,CAAC2G,gBAAgB,CAAC,SAAS,EAAE2gB,eAAe,CAAC;AAC9D;AAEA,SAASA,eAAeA,CAACle,GAAG,EAAE;EAC1B,IAAIA,GAAG,CAACN,IAAI,KAAK,WAAW,EAAE;IAC1B,IAAI,CAAC9D,SAAS,CAACC,GAAG,CAAC,uBAAuB,CAAC;EAC/C,CAAC,MAAM;IACH,IAAI,CAACD,SAAS,CAAC6O,MAAM,CAAC,uBAAuB,CAAC;EAClD;AACJ;AAEewT,8EAAe,E;;;;;;;;;;;;ACnB9B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAuC;AAC4G;AACvF;AACS;AACR;AACT;AACb;AACK;AACc;AACnB;AACO;AACS;AACN;;AAEjD;AACA;AACA;AACA;AACA;AACA,SAASE,cAAcA,CAACC,GAAG,EAAE;EACzB,IAAIA,GAAG,EAAE;IACLC,qEAAU,CAAC;MAACpb,OAAO,EAAE;IAAU,CAAC,CAAC;EACrC,CAAC,MAAM,IAAIhO,MAAM,CAACqpB,UAAU,GAAGC,8DAAW,CAACC,KAAK,EAAE;IAC9CC,uEAAY,CAAC;MAACxb,OAAO,EAAE;IAAU,CAAC,CAAC;EACvC;AACJ;AAEA,SAASyb,cAAcA,CAACC,SAAS,EAAE;EAC/B,OAAOA,SAAS,CAACvY,YAAY,CAAC,oBAAoB,CAAC,KAAK,UAAU;AACtE;AAEA,SAASwY,wBAAwBA,CAAA,EAAG;EAChC,IAAID,SAAS,GAAG3mB,QAAQ,CAACiF,aAAa,CAAC,gCAAgC,CAAC;EAExE,IAAI0hB,SAAS,IAAIA,SAAS,CAACE,MAAM,EAAE;IAC/BF,SAAS,CAACE,MAAM,CAACC,QAAQ,GAAG,YAAW;MACnCC,sEAAW,CAAC,gBAAgB,EAAE,IAAI,CAAC;MAEnCC,0EAAiB,CAACL,SAAS,CAACE,MAAM,CAAC3U,QAAQ,EAAE;QAAC+U,cAAc,EAAEC,uEAAoBA;MAAA,CAAC,CAAC;IACxF,CAAC;IAEDP,SAAS,CAACE,MAAM,CAACM,UAAU,GAAG,YAAW;MACrCJ,sEAAW,CAAC,gBAAgB,CAAC;MAC7BK,yEAAgB,CAACT,SAAS,CAACE,MAAM,CAAC3U,QAAQ,CAAC;IAC/C,CAAC;EACL;AACJ;;AAEA;AACA;AACA;AACA;AACA,SAASmV,iBAAiBA,CAACV,SAAS,EAAE;EAClC,IAAIW,UAAU,GAAGX,SAAS,CAAChe,QAAQ,CAACE,MAAM,CAACrC,gBAAgB,CAAC,2BAA2B,CAAC;IACpF+gB,aAAa,GAAG,IAAI;EAExB,KAAK,IAAIhd,CAAC,GAAG,CAAC,EAAEA,CAAC,IAAI+c,UAAU,CAACloB,MAAM,EAAEmL,CAAC,EAAE,EAAE;IACzC,IAAI+c,UAAU,CAAC/c,CAAC,CAAC,IAAI+c,UAAU,CAAC/c,CAAC,CAAC,CAAC5B,QAAQ,IAAI2e,UAAU,CAAC/c,CAAC,CAAC,CAAC5B,QAAQ,CAACqD,QAAQ,EAAE;MAC5Eub,aAAa,GAAGD,UAAU,CAAC/c,CAAC,CAAC;MAE7B;IACJ;EACJ;EAEA,OAAOgd,aAAa;AACxB;;AAEA;AACA;AACA;AACA,SAASC,kBAAkBA,CAACb,SAAS,EAAEc,QAAQ,EAAE;EAC7C,IAAIF,aAAa,GAAGF,iBAAiB,CAACV,SAAS,CAAC;EAEhD,IAAIY,aAAa,EAAE;IACfE,QAAQ,CAACtX,mBAAmB,CAACoX,aAAa,CAAC;IAE3CG,6DAAU,CAACH,aAAa,EAAE,IAAI,CAAC;EACnC,CAAC,MAAM,IAAIZ,SAAS,CAAChhB,OAAO,CAAC,gBAAgB,CAAC,EAAE;IAC5C+hB,6DAAU,CAACf,SAAS,CAAC;IAErBgB,iFAAiB,CAAChB,SAAS,CAAChe,QAAQ,CAACE,MAAM,CAAC;EAChD;AACJ;;AAEA;AACA;AACA;AACA;AACA,SAAS+e,aAAaA,CAAA,EAAG;EACrB,OAAO,IAAIC,sDAAQ,CAAC;IAChB7iB,YAAY,EAAE,gBAAgB;IAC9BgF,cAAc,EAAE,2BAA2B;IAC3C6E,yBAAyB,EAAE,oBAAoB;IAC/CtC,qBAAqB,EAAE,cAAc;IACrCnC,UAAU,EAAE,CACR;MACI1E,UAAU,iBAAAyG,MAAA,CAAiBoa,8DAAW,CAACC,KAAK,GAAGD,8DAAW,CAACuB,IAAI,QAAK;MACpEhd,QAAQ,EAAE;QACNnB,MAAM,EAAE,CACJ;UACII,QAAQ,EAAE,UAAU;UACpBJ,MAAM,EAAE;QACZ,CAAC,EACD;UACII,QAAQ,EAAE,gBAAgB;UAC1BJ,MAAM,EAAE;QACZ,CAAC,CACJ;QACDQ,UAAU,EAAE,GAAG;QACf/B,iBAAiB,EAAE,IAAI;QACvB3B,eAAe,EAAE,gCAAgC;QACjDsJ,oBAAoB,EAAE,iCAAiC;QACvD7F,gBAAgB,EAAE,2BAA2B;QAC7CkC,gBAAgB,EAAE,SAAlBA,gBAAgBA,CAAWua,SAAS,EAAE;UAClC,IAAIoB,QAAQ,GAAGrB,cAAc,CAACC,SAAS,CAAC;UAExC,OAAO;YACH,eAAe,EAAEoB,QAAQ,GAAG;cAAC9hB,KAAK,EAAE0gB,SAAS,CAAChe,QAAQ,CAACE,MAAM,CAACuC,EAAE;cAAEH,OAAO,EAAE;YAAI,CAAC,GAAG,KAAK;YACxF,eAAe,EAAE8c,QAAQ,GAAG;cAAC9hB,KAAK,EAAE,CAAE,OAAO,EAAE,MAAM,CAAE;cAAEgF,OAAO,EAAE;YAAI,CAAC,GAAG;UAC9E,CAAC;QACL,CAAC;QACD/D,YAAY,EAAE,SAAdA,YAAYA,CAAA,EAAa;UACrBif,cAAc,CAAC,IAAI,CAAC;UACpBnmB,QAAQ,CAACwG,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC5C,SAAS,CAACC,GAAG,CAAC,aAAa,CAAC;UACjE7D,QAAQ,CAACwG,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAACwhB,KAAK,CAACC,WAAW,GAAG,MAAM;;UAE/D;UACA,IAAIC,2DAAQ,CAACtkB,SAAS,CAACkF,QAAQ,CAAC,iBAAiB,CAAC,EAAE;YAChDqf,uEAAY,CAAC,OAAO,EAAE,uBAAuB,EAAED,2DAAQ,EAAE;cAACE,eAAe,EAAE;YAAI,CAAC,CAAC;UACrF;QACJ,CAAC;QACD9gB,cAAc,EAAE,SAAhBA,cAAcA,CAAA,EAAa;UACvB6e,cAAc,CAAC,KAAK,CAAC;UACrBnmB,QAAQ,CAACwG,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC5C,SAAS,CAAC6O,MAAM,CAAC,aAAa,CAAC;UACpEzS,QAAQ,CAACwG,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAACwhB,KAAK,CAACC,WAAW,GAAG,GAAG;QAChE,CAAC;QACDjhB,eAAe,EAAE,SAAjBA,eAAeA,CAAW2f,SAAS,EAAEc,QAAQ,EAAE;UAC3CY,2DAAW,CAAC,CAAC;UAEbb,kBAAkB,CAACb,SAAS,EAAEc,QAAQ,CAAC;QAC3C;MACJ;IACJ,CAAC,EACD;MACI/hB,UAAU,iBAAAyG,MAAA,CAAiBoa,8DAAW,CAACC,KAAK,QAAK;MACjD1b,QAAQ,EAAE;QACNnB,MAAM,EAAE,eAAe;QACvBlD,eAAe,EAAE,gEAAgE;QACjFgE,kBAAkB,EAAE;UAChBC,UAAU,EAAE,KAAK;UACjBC,QAAQ,EAAE;QACd,CAAC;QACD3D,eAAe,EAAE,SAAjBA,eAAeA,CAAW2f,SAAS,EAAE;UACjC,IAAI,CAACA,SAAS,CAAChhB,OAAO,CAAC,gBAAgB,CAAC,EAAE;YACtCohB,sEAAW,CAACJ,SAAS,CAAChe,QAAQ,CAAC6C,QAAQ,EAAE,IAAI,CAAC;UAClD,CAAC,MAAM;YACHmc,iFAAiB,CAAChB,SAAS,CAAChe,QAAQ,CAACE,MAAM,CAAC;UAChD;QACJ,CAAC;QACDzB,iBAAiB,EAAE,SAAnBA,iBAAiBA,CAAEuf,SAAS;UAAA,OAAII,sEAAW,CAACJ,SAAS,CAAChe,QAAQ,CAAC6C,QAAQ,CAAC;QAAA;MAC5E;IACJ,CAAC;EAET,CAAC,CAAC;AACN;AAEA,SAAS8c,cAAcA,CAAA,EAAG;EACtBC,iEAAS,CAAC,iBAAiB,EAAE,UAASlqB,IAAI,EAAE;IACxC,IAAImqB,gBAAgB,GAAGxoB,QAAQ,CAACiF,aAAa,CAAC,iBAAiB,CAAC;IAEhE,IAAIujB,gBAAgB,EAAE;MAClB,IAAInqB,IAAI,CAACd,QAAQ,CAACkrB,gBAAgB,EAAE;QAChCD,gBAAgB,CAAC5kB,SAAS,CAACC,GAAG,CAAC,cAAc,CAAC;MAClD,CAAC,MAAM;QACH2kB,gBAAgB,CAAC5kB,SAAS,CAAC6O,MAAM,CAAC,cAAc,CAAC;MACrD;IACJ;EACJ,CAAC,CAAC;AACN;AAEA,SAASiW,cAAcA,CAACC,SAAS,EAAE;EAC/B,IAAIC,cAAc,GAAG,GAAG;EACxB,IAAIC,SAAS,GAAGvlB,CAAC,CAACqlB,SAAS,CAAC,CAACG,IAAI,CAAC,4BAA4B,CAAC;EAC/D,IAAIC,UAAU,GAAGzlB,CAAC,CAACqlB,SAAS,CAAC,CAACG,IAAI,CAAC,6BAA6B,CAAC;EACjE;EACA,IAAIE,QAAQ,GAAG1lB,CAAC,CAACqlB,SAAS,CAAC,CAACG,IAAI,CAAC,0BAA0B,CAAC,CAAC9c,QAAQ,CAAC,0BAA0B,CAAC;EACjG;EACA,IAAIid,SAAS,GAAG,CAAC;EACjB3lB,CAAC,CAAC4lB,IAAI,CAACF,QAAQ,EAAE,UAASze,CAAC,EAAEtE,KAAK,EAAE;IAChCgjB,SAAS,GAAGhjB,KAAK,CAACkjB,WAAW,GAAGF,SAAS;EAC7C,CAAC,CAAC;EACF,IAAIG,YAAY,GAAG,EAAE;;EAErB;EACA,IAAIC,kBAAkB,GAAG,SAArBA,kBAAkBA,CAAA,EAAc;IAChC,OAAO/lB,CAAC,CAAC,gCAAgC,CAAC,CAACgmB,UAAU,CAAC,CAAC;EAC3D,CAAC;EACD,IAAIC,eAAe,GAAGF,kBAAkB,CAAC,CAAC;EAE1CpsB,MAAM,CAACsI,gBAAgB,CAAC,QAAQ,EAAE,YAAW;IACzCgkB,eAAe,GAAGF,kBAAkB,CAAC,CAAC;EAC1C,CAAC,CAAC;EACF;EACA,IAAIG,WAAW,GAAG,SAAdA,WAAWA,CAAA,EAAc;IACzB,OAAOP,SAAS;EACpB,CAAC;EACD,IAAIQ,QAAQ,GAAGD,WAAW,CAAC,CAAC;EAC5B;EACA,IAAIE,iBAAiB,GAAGD,QAAQ,GAAGF,eAAe;;EAElD;EACA,IAAII,eAAe,GAAG,SAAlBA,eAAeA,CAAA,EAAc;IAC7B,OAAOrmB,CAAC,CAACqlB,SAAS,CAAC,CAACG,IAAI,CAAC,0BAA0B,CAAC,CAACc,UAAU,CAAC,CAAC;EACrE,CAAC;;EAED;EACAtmB,CAAC,CAACqlB,SAAS,CAAC,CAACG,IAAI,CAAC,0BAA0B,CAAC,CAACnlB,EAAE,CAAC,QAAQ,EAAE,YAAW;IAClE;IACA+lB,iBAAiB,GAAGD,QAAQ,GAAGF,eAAe;IAC9C;IACA,IAAIM,YAAY,GAAG5gB,IAAI,CAACC,GAAG,CAACygB,eAAe,CAAC,CAAC,CAAC;IAE9C,IAAIG,aAAa,GAAGJ,iBAAiB,GAAGN,YAAY;IAEpD,IAAIS,YAAY,IAAIT,YAAY,EAAE;MAC9BP,SAAS,CAACkB,QAAQ,CAAC,QAAQ,CAAC;MAC5BhB,UAAU,CAAC/kB,WAAW,CAAC,QAAQ,CAAC;IACpC,CAAC,MAAM,IAAI6lB,YAAY,GAAGC,aAAa,EAAE;MACrC;MACAjB,SAAS,CAAC7kB,WAAW,CAAC,QAAQ,CAAC;MAC/B+kB,UAAU,CAAC/kB,WAAW,CAAC,QAAQ,CAAC;IACpC,CAAC,MAAM,IAAI6lB,YAAY,IAAIC,aAAa,EAAE;MACtCjB,SAAS,CAAC7kB,WAAW,CAAC,QAAQ,CAAC;MAC/B+kB,UAAU,CAACgB,QAAQ,CAAC,QAAQ,CAAC;IACjC;EAEJ,CAAC,CAAC;EAEF,IAAIR,eAAe,GAAGN,SAAS,IAAIF,UAAU,IAAI,CAACzlB,CAAC,CAACylB,UAAU,CAAC,CAAClS,QAAQ,CAAC,QAAQ,CAAC,EAAE;IAChFvT,CAAC,CAACylB,UAAU,CAAC,CAACgB,QAAQ,CAAC,QAAQ,CAAC;EACpC,CAAC,MAAM,IAAIR,eAAe,GAAGN,SAAS,IAAIF,UAAU,IAAIzlB,CAAC,CAACylB,UAAU,CAAC,CAAClS,QAAQ,CAAC,QAAQ,CAAC,EAAE;IACtFvT,CAAC,CAACylB,UAAU,CAAC,CAAC/kB,WAAW,CAAC,QAAQ,CAAC;EACvC;;EAEA;EACAV,CAAC,CAACylB,UAAU,CAAC,CAACplB,EAAE,CAAC,OAAO,EAAE,YAAW;IACjC,IAAIL,CAAC,CAAC,MAAM,CAAC,CAACY,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,EAAE;MAChCZ,CAAC,CAACqlB,SAAS,CAAC,CAACG,IAAI,CAAC,0BAA0B,CAAC,CAACkB,OAAO,CAAC;QAClDJ,UAAU,EAAED,eAAe,CAAC,CAAC,GAAG;MACpC,CAAC,EAAEf,cAAc,CAAC;IACtB,CAAC,MAAM;MACHtlB,CAAC,CAACqlB,SAAS,CAAC,CAACG,IAAI,CAAC,0BAA0B,CAAC,CAACkB,OAAO,CAAC;QAClDJ,UAAU,EAAED,eAAe,CAAC,CAAC,GAAG;MACpC,CAAC,EAAEf,cAAc,CAAC;IACtB;EACJ,CAAC,CAAC;;EAEF;EACAtlB,CAAC,CAACulB,SAAS,CAAC,CAACllB,EAAE,CAAC,OAAO,EAAE,YAAW;IAChC,IAAIL,CAAC,CAAC,MAAM,CAAC,CAACY,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,EAAE;MAChCZ,CAAC,CAACqlB,SAAS,CAAC,CAACG,IAAI,CAAC,0BAA0B,CAAC,CAACkB,OAAO,CAAC;QAClDJ,UAAU,EAAED,eAAe,CAAC,CAAC,GAAG;MACpC,CAAC,EAAEf,cAAc,CAAC;IACtB,CAAC,MAAM;MACHtlB,CAAC,CAACqlB,SAAS,CAAC,CAACG,IAAI,CAAC,0BAA0B,CAAC,CAACkB,OAAO,CAAC;QAClDJ,UAAU,EAAED,eAAe,CAAC,CAAC,GAAG;MACpC,CAAC,EAAEf,cAAc,CAAC;IACtB;EACJ,CAAC,CAAC;AACN;AAEA,IAAIqB,WAAW,GAAG3mB,CAAC,CAAC,iCAAiC,CAAC;AAEtD2mB,WAAW,CAACtmB,EAAE,CAAC,uBAAuB,EAAE,YAAW;EAC/C+kB,cAAc,CAAC,IAAI,CAACva,OAAO,CAAC,sBAAsB,CAAC,CAAC;AACxD,CAAC,CAAC;AAEF,SAAS+b,YAAYA,CAAC9c,EAAE,EAAE;EACtB,IAAI+c,GAAG,GAAG/c,EAAE,CAACgd,SAAS;EACtB,IAAIC,IAAI,GAAGjd,EAAE,CAACkd,UAAU;EACxB,IAAIC,KAAK,GAAGnd,EAAE,CAAC+b,WAAW;EAC1B,IAAIqB,MAAM,GAAGpd,EAAE,CAACG,YAAY;EAE5B,OAAOH,EAAE,CAACC,YAAY,EAAE;IACpBD,EAAE,GAAGA,EAAE,CAACC,YAAY;IACpB8c,GAAG,IAAI/c,EAAE,CAACgd,SAAS;IACnBC,IAAI,IAAIjd,EAAE,CAACkd,UAAU;EACzB;EAEA,OACIH,GAAG,GAAIltB,MAAM,CAACwtB,WAAW,GAAGxtB,MAAM,CAACytB,WAAY,IAC/CL,IAAI,GAAIptB,MAAM,CAAC0tB,WAAW,GAAG1tB,MAAM,CAACqpB,UAAW,IAC9C6D,GAAG,GAAGK,MAAM,GAAIvtB,MAAM,CAACwtB,WAAW,IAClCJ,IAAI,GAAGE,KAAK,GAAIttB,MAAM,CAAC0tB,WAAW;AAE3C;AAEA,SAASC,aAAaA,CAAA,EAAG;EACrB,IAAIC,KAAK,GAAG7qB,QAAQ,CAACiF,aAAa,CAAC,iCAAiC,CAAC;IACjE6lB,UAAU,GAAG9qB,QAAQ,CAACiF,aAAa,CAAC,mBAAmB,CAAC;EAC5D,IAAI4lB,KAAK,IAAIX,YAAY,CAACW,KAAK,CAAC,IAAIC,UAAU,IAAI,CAACD,KAAK,CAACjnB,SAAS,CAACkF,QAAQ,CAAC,oBAAoB,CAAC,EAAE;IAC/FgiB,UAAU,CAACC,KAAK,CAAC,CAAC;EACtB,CAAC,MAAM,IAAIF,KAAK,IAAI,CAACX,YAAY,CAACW,KAAK,CAAC,IAAIC,UAAU,IAAID,KAAK,CAACjnB,SAAS,CAACkF,QAAQ,CAAC,oBAAoB,CAAC,EAAE;IACtGgiB,UAAU,CAACC,KAAK,CAAC,CAAC;EACtB;AACJ;AAEA,CAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAE,CAAC1rB,OAAO,CAAC,UAAS2I,GAAG,EAAE;EACjD/K,MAAM,CAACsI,gBAAgB,CAACyC,GAAG,EAAE4iB,aAAa,CAAC;AAC/C,CAAC,CAAC;AAEF,SAASI,qBAAqBA,CAAA,EAAG;EAC7B,IAAIC,gBAAgB,GAAGhuB,MAAM,CAACC,IAAI,CAACC,eAAe,CAAC+tB,4BAA4B;EAC/E,IAAIC,aAAa,GAAGluB,MAAM,CAACC,IAAI,CAACqiB,SAAS,CAAC6L,eAAe;EAEzD,IAAI;IACA,IAAIC,oBAAoB,GAAGJ,gBAAgB,GAAG3sB,IAAI,CAAC+jB,KAAK,CAAC4I,gBAAgB,CAAC,GAAG,IAAI;IACjF,OAAOI,oBAAoB,GAAGA,oBAAoB,CAACF,aAAa,CAAC,GAAG,sBAAsB;EAC9F,CAAC,CAAC,OAAOrtB,CAAC,EAAE;IACR,OAAO,sBAAsB;EACjC;AACJ;AAEA,SAASwtB,gBAAgBA,CAAA,EAAG;EACxB,IAAIC,eAAe,GAAGtuB,MAAM,CAACC,IAAI,CAACC,eAAe,CAACouB,eAAe;EACjE,IAAIJ,aAAa,GAAGluB,MAAM,CAACC,IAAI,CAACqiB,SAAS,CAAC6L,eAAe;EACzD,IAAI;IACA,IAAII,mBAAmB,GAAGD,eAAe,GAAGjtB,IAAI,CAAC+jB,KAAK,CAACkJ,eAAe,CAAC,GAAG,IAAI;IAC9E,OAAOC,mBAAmB,GAAGA,mBAAmB,CAACL,aAAa,CAAC,GAAG,QAAQ;EAC9E,CAAC,CAAC,OAAOrtB,CAAC,EAAE;IACR,OAAO,QAAQ;EACnB;AACJ;AACA,SAAS2tB,oBAAoBA,CAACC,aAAa,EAAE;EACzC,IAAIC,YAAY,GAAGD,aAAa,CAACE,OAAO,IAAIF,aAAa,CAACG,IAAI;IAC1DC,aAAa;EAEjB,IAAIH,YAAY,EAAE;IACd,IAAII,gBAAgB;IAEpBL,aAAa,CAAChnB,OAAO,GAAGG,+EAAY,CAAC,CAAC,CAAC,EAAE6mB,aAAa,CAAChnB,OAAO,CAAC;IAC/DgnB,aAAa,CAACM,QAAQ,GAAGnnB,+EAAY,CAAC,CAAC,CAAC,EAAE6mB,aAAa,CAACM,QAAQ,CAAC;IACjEN,aAAa,CAAChnB,OAAO,CAACknB,OAAO,GAAGD,YAAY;IAE5CI,gBAAgB,GAAGL,aAAa,CAAChZ,QAAQ,IAAIgZ,aAAa,CAAChnB,OAAO,CAACunB,mBAAmB;IAEtFP,aAAa,CAAChnB,OAAO,CAACunB,mBAAmB,GAAG,UAASC,KAAK,EAAE;MACxD,IAAI,OAAOH,gBAAgB,KAAK,UAAU,EAAE;QACxCA,gBAAgB,CAACG,KAAK,CAAC;MAC3B;MAEAC,sEAAW,CAACD,KAAK,CAAC;MAClBE,uDAAe,CAAC,CAAC;IACrB,CAAC;IAEDN,aAAa,GAAG,IAAIO,6DAAS,CAACX,aAAa,CAAChnB,OAAO,CAAC;IAEpD,OAAOgnB,aAAa,CAAChnB,OAAO,CAACunB,mBAAmB;IAEhD,OAAOH,aAAa;EACxB;AACJ;AAEA,SAASQ,UAAUA,CAACC,WAAW,EAAE;EAC7B,IAAIC,kBAAkB;EAEtBD,WAAW,CAAC7nB,OAAO,GAAG6nB,WAAW,CAAC7nB,OAAO,IAAI,CAAC,CAAC;EAE/C8nB,kBAAkB,GAAGH,6DAAS,CAACI,QAAQ,CAACF,WAAW,CAAC7nB,OAAO,CAACgoB,OAAO,CAAC;;EAEpE;EACA,IAAIF,kBAAkB,EAAE;IACpB;IACAA,kBAAkB,CAACN,KAAK,CAACS,iBAAiB,GAAGJ,WAAW,CAAC7nB,OAAO,CAACioB,iBAAiB,IAAI,YAAW;MAC7F,OAAO,KAAK;IAChB,CAAC;IAEDH,kBAAkB,CAACN,KAAK,CAACU,IAAI,CAAC,CAAC;EACnC,CAAC,MAAM;IACH,IAAIL,WAAW,CAACnuB,GAAG,EAAE;MACjByuB,oDAAmB,CAAC,CAAC;MAErBvpB,CAAC,CAACwpB,IAAI,CAAC;QACHC,QAAQ,EAAER,WAAW,CAAC7kB,IAAI,IAAI,MAAM;QACpCtJ,GAAG,EAAEmuB,WAAW,CAACnuB,GAAG;QACpBC,IAAI,EAAEkuB,WAAW,CAACluB,IAAI;QACtB2uB,SAAS,EAAE;UACPC,eAAe,EAAE;QACrB;MACJ,CAAC,CAAC,CACG9T,IAAI,CAAC,UAAS5b,QAAQ,EAAE;QACrBsvB,oDAAmB,CAAC,CAAC;QAErBN,WAAW,CAACX,OAAO,GAAG,OAAOruB,QAAQ,KAAK,QAAQ,GAAGA,QAAQ,GAAIA,QAAQ,CAAC2vB,gBAAgB,IAAI3vB,QAAQ,CAACquB,OAAQ;QAE/GH,oBAAoB,CAACc,WAAW,CAAC;MAErC,CAAC,CAAC,CACDY,IAAI,CAAC,UAASC,GAAG,EAAEC,UAAU,EAAE;QAC5B;QACA,IAAIA,UAAU,KAAK,aAAa,EAAE;UAC9BnoB,OAAO,CAACooB,GAAG,CAAC,gFAAgF,CAAC;QACjG;MACJ,CAAC,CAAC;IACV;EACJ;AACJ;AAEA,IAAIrwB,MAAM,CAACC,IAAI,CAACC,eAAe,CAACowB,gCAAgC,EAAE;EAC9DvtB,QAAQ,CAACuF,gBAAgB,CAAC,kBAAkB,EAAE,YAAW;IACrD,IAAIioB,UAAU,GAAGvwB,MAAM,CAACF,QAAQ,CAACgC,IAAI,CAAC2M,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAIzO,MAAM,CAACF,QAAQ,CAACgC,IAAI,CAAC2M,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC;IAC9G,IAAI+hB,8BAA8B,GAAGzC,qBAAqB,CAAC,CAAC;IAC5D,IAAIwC,UAAU,IAAIC,8BAA8B,IAAIxwB,MAAM,CAACF,QAAQ,CAACgC,IAAI,CAAC2M,OAAO,CAACgiB,SAAS,CAACD,8BAA8B,CAAC,CAAC,IAAI,CAAC,EAAE;MAC9H,IAAIE,YAAY,GAAG;QACfC,UAAU,EAAE,+BAA+B;QAC3ClB,OAAO,EAAE,2BAA2B;QACpCmB,aAAa,EAAE;MACnB,CAAC;MACDvB,UAAU,CAAC;QACPluB,GAAG,EAAE0vB,+EAAiB,CAAC7wB,MAAM,CAACC,IAAI,CAACqH,IAAI,CAACwpB,sBAAsB,EAAE;UAACC,mBAAmB,EAAE;QAAI,CAAC,CAAC;QAC5FtmB,IAAI,EAAE,MAAM;QACZhD,OAAO,EAAEipB;MACb,CAAC,CAAC;IACN;EACJ,CAAC,CAAC;AACN;AAEA,IAAI1wB,MAAM,CAACC,IAAI,CAACC,eAAe,CAAC8wB,eAAe,EAAE;EAC7CjuB,QAAQ,CAACuF,gBAAgB,CAAC,kBAAkB,EAAE,YAAW;IACrD,IAAIioB,UAAU,GAAGvwB,MAAM,CAACF,QAAQ,CAACgC,IAAI,CAAC2M,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAIzO,MAAM,CAACF,QAAQ,CAACgC,IAAI,CAAC2M,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC;IAC9G,IAAIwiB,iBAAiB,GAAG5C,gBAAgB,CAAC,CAAC;IAC1C,IAAIkC,UAAU,IAAIU,iBAAiB,IAAIjxB,MAAM,CAACF,QAAQ,CAACgC,IAAI,CAAC2M,OAAO,CAACgiB,SAAS,CAACQ,iBAAiB,CAAC,CAAC,IAAI,CAAC,EAAE;MACpG,IAAIjxB,MAAM,CAACC,IAAI,CAACixB,WAAW,CAACC,QAAQ,EAAE;QAClCnxB,MAAM,CAACF,QAAQ,CAACgC,IAAI,GAAG9B,MAAM,CAACC,IAAI,CAACqH,IAAI,CAAC8pB,WAAW;MACvD,CAAC,MAAM;QACH,IAAIC,SAAS;UACTC,aAAa,GAAG,MAAM;UACtBC,gBAAgB,GAAG,qCAAqC;QAC5DF,SAAS,GAAGR,+EAAiB,CAAC7wB,MAAM,CAACC,IAAI,CAACqH,IAAI,CAACkqB,SAAS,EAAE;UACtDC,IAAI,EAAE,CAAC;UACPC,UAAU,EAAE,OAAO;UACnBX,mBAAmB,EAAE;QACzB,CAAC,CAAC;QACF1B,UAAU,CAAC;UACPluB,GAAG,EAAEkwB,SAAS;UACd5mB,IAAI,EAAE,MAAM;UACZhD,OAAO,EAAE;YACLgoB,OAAO,EAAE6B,aAAa;YACtBX,UAAU,EAAEY,gBAAgB;YAC5BI,SAAS,EAAE,KAAK;YAChBf,aAAa,EAAE;UACnB;QACJ,CAAC,CAAC;MACN;IACJ;EACJ,CAAC,CAAC;AACN;AAEA,SAASgB,eAAeA,CAAA,EAAG;EACvB,IAAIC,iBAAiB,GAAG9uB,QAAQ,CAACiF,aAAa,CAAC,4CAA4C,CAAC;IACxF8pB,WAAW,GAAG/uB,QAAQ,CAACiF,aAAa,CAAC,iCAAiC,CAAC;IACvE+pB,WAAW,GAAGhvB,QAAQ,CAACiF,aAAa,CAAC,kCAAkC,CAAC;IACxEgqB,mBAAmB,GAAGjvB,QAAQ,CAACwG,gBAAgB,CAAC,uBAAuB,CAAC;IACxE0oB,cAAc,GAAGlvB,QAAQ,CAACwG,gBAAgB,CAAC,oBAAoB,CAAC;IAChE2oB,aAAa,GAAGnvB,QAAQ,CAACiF,aAAa,CAAC,mBAAmB,CAAC;IAC3DmqB,YAAY;IACZC,eAAe;EACnB,IAAIN,WAAW,EAAE;IACb,IAAIA,WAAW,CAACzhB,iBAAiB,EAAE;MAC/B8hB,YAAY,GAAG9rB,CAAC,CAACyrB,WAAW,CAAC,CAACjG,IAAI,CAAC,sCAAsC,CAAC,CAACwG,WAAW,CAAC,CAAC,GAAGN,WAAW,CAACO,YAAY;IACvH,CAAC,MAAM;MACHH,YAAY,GAAGN,iBAAiB,CAACS,YAAY;IACjD;EACJ,CAAC,MAAM;IACHH,YAAY,GAAGN,iBAAiB,CAACS,YAAY;EACjD;EACAF,eAAe,GAAG/rB,CAAC,CAAC6rB,aAAa,CAAC,CAACG,WAAW,CAAC,CAAC;EAChDhsB,CAAC,CAAC2rB,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAACnG,IAAI,CAACoG,cAAc,CAAC,CAAC,CAAC,CAAC,CAACnF,QAAQ,CAAC,gCAAgC,CAAC;EAC5FzmB,CAAC,CAAC,iCAAiC,CAAC,CAACksB,GAAG,CAAC,0BAA0B,EAAEJ,YAAY,GAAG,IAAI,CAAC;EACzF9rB,CAAC,CAAC,iCAAiC,CAAC,CAACksB,GAAG,CAAC,uBAAuB,EAAEH,eAAe,GAAG,IAAI,CAAC;AAC7F;AAEe,2EAAW;EACtBzH,aAAa,CAAC,CAAC;EACf6H,uDAAW,CAAC,CAAC;EACb7I,wBAAwB,CAAC,CAAC;EAC1B8I,mEAAgB,CAAC,CAAC;EAClBpH,cAAc,CAAC,CAAC;EAChBsC,aAAa,CAAC,CAAC;EACfiE,eAAe,CAAC,CAAC;AACrB,C;;;;;;;;;;;;AC1eA;AAAA;AAAA;AAA8C;AAE9C,IACIc,cAAc,GAAGzH,2DAAQ,CAACjjB,aAAa,CAAC,kCAAkC,CAAC;EAC3E2qB,mBAAmB,GAAG1H,2DAAQ,CAAC1hB,gBAAgB,CAAC,yCAAyC,CAAC;;AAE9F;AACA;AACA;AACe,SAASkpB,gBAAgBA,CAAA,EAAG;EACvCxH,2DAAQ,CAAC3iB,gBAAgB,CAAC,SAAS,EAAEsqB,mBAAmB,CAAC;EACzD3H,2DAAQ,CAAC3iB,gBAAgB,CAAC,UAAU,EAAEsqB,mBAAmB,CAAC;EAC1D;EACA7vB,QAAQ,CAACuF,gBAAgB,CAAC,OAAO,EAAEsqB,mBAAmB,CAAC;AAC3D;;AAEA;AACA;AACA;AACA;AACA,SAASA,mBAAmBA,CAAA,EAAG;EAC3B;EACA;EACA,IAAI7vB,QAAQ,CAAC0I,aAAa,CAACyF,OAAO,CAAC,kCAAkC,CAAC,EAAE;IACpE+Z,2DAAQ,CAACtkB,SAAS,CAACC,GAAG,CAAC,cAAc,CAAC;EAC1C,CAAC,MAAM,IAAI,CAACisB,wBAAwB,CAAC,CAAC,EAAE;IACpC;IACA;IACA5H,2DAAQ,CAACtkB,SAAS,CAAC6O,MAAM,CAAC,cAAc,CAAC;EAC7C;AACJ;;AAEA;AACA;AACA;AACA;AACA,SAASqd,wBAAwBA,CAAA,EAAG;EAChC,IAAIH,cAAc,IAAIA,cAAc,CAAC/rB,SAAS,CAACkF,QAAQ,CAAC,cAAc,CAAC,EAAE;IACrE,OAAO,IAAI;EACf,CAAC,MAAM;IACH,KAAK,IAAIyB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGqlB,mBAAmB,CAACxwB,MAAM,EAAEmL,CAAC,EAAE,EAAE;MACjD,IAAIqlB,mBAAmB,CAACrlB,CAAC,CAAC,CAACsc,MAAM,IAAI+I,mBAAmB,CAACrlB,CAAC,CAAC,CAACsc,MAAM,CAACkJ,KAAK,EAAE;QACtE,OAAO,IAAI;MACf;IACJ;EACJ;EAEA,OAAO,KAAK;AAChB,C;;;;;;;;;;;;AChDA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAa;;AAE0B;AACE;AACkC;AACC;AACf;AACf;AAE9C,IAAIC,eAAe,EACfC,gBAAgB;AAEpB,SAASC,uBAAuBA,CAAC3yB,QAAQ,EAAE;EACvCsvB,oDAAmB,CAAC,CAAC;EAErB,IAAIsD,iCAAiC,GAAGlzB,MAAM,CAACC,IAAI,CAACC,eAAe,CAACgzB,iCAAiC;IACjGC,kBAAkB,GAAGnzB,MAAM,CAACC,IAAI,CAACixB,WAAW,CAACC,QAAQ;EAEzD,IAAI+B,iCAAiC,IAAI,CAACC,kBAAkB,EAAE;IAC1DnzB,MAAM,CAACF,QAAQ,CAACgC,IAAI,GAAG9B,MAAM,CAACC,IAAI,CAACqH,IAAI,CAACkqB,SAAS;EACrD,CAAC,MAAM;IACHwB,gBAAgB,CAAC9pB,WAAW,GAAG,EAAE;IACjC8pB,gBAAgB,CAAC5qB,SAAS,GAAG9H,QAAQ;IACrC8yB,iDAAgB,CAAC,CAAC;IAElB,siBAAqE,CAAC5yB,IAAI,CAAC,UAAS6yB,QAAQ,EAAE;MAC1FC,sEAAW,CAACC,wDAAO,EAAEP,gBAAgB,CAAC;MACtCK,QAAQ,CAAChsB,IAAI,CAAC2rB,gBAAgB,CAAC;MAE/BA,gBAAgB,CAACrsB,SAAS,CAACC,GAAG,CAAC,aAAa,CAAC;MAC7CmjB,0EAAiB,CAACiJ,gBAAgB,CAAChrB,aAAa,CAAC,mCAAmC,CAAC,CAAC;MAEtF3B,CAAC,CAAC,MAAM,CAAC,CAAC2H,OAAO,CAAC,oBAAoB,EAAE;QACpC0d,SAAS,EAAEsH,gBAAgB;QAC3B1yB,QAAQ,EAAEA;MACd,CAAC,CAAC;IACN,CAAC,CAAC;EACN;AACJ;AAEA,SAASkzB,mBAAmBA,CAAChiB,cAAc,EAAE;EACzC,IAAIrQ,GAAG,GAAGqQ,cAAc,CAACL,YAAY,CAAC,iBAAiB,CAAC;EAExDiY,qEAAU,CAAC;IAACpb,OAAO,EAAEwD,cAAc;IAAEiiB,aAAa,EAAE;EAAI,CAAC,CAAC;EAE1D7D,oDAAmB,CAACoD,gBAAgB,CAAC;EAErC3sB,CAAC,CAAC,MAAM,CAAC,CAAC2H,OAAO,CAAC,qBAAqB,CAAC;EAExC3H,CAAC,CAACqtB,GAAG,CAACvyB,GAAG,EAAE8xB,uBAAuB,CAAC;EAEnC,OAAO,IAAI;AACf;AAEA,SAASU,eAAeA,CAAA,EAAG;EACvB,IAAIC,qBAAqB,GAAGZ,gBAAgB,CAAChrB,aAAa,CAAC,iCAAiC,CAAC;IACzF6rB,oBAAoB,GAAGb,gBAAgB,CAAChrB,aAAa,CAAC,yCAAyC,CAAC;IAChG8rB,cAAc,GAAGd,gBAAgB,CAAChrB,aAAa,CAAC,2CAA2C,CAAC;EAChGgrB,gBAAgB,CAAC1qB,gBAAgB,CAAC,SAAS,EAAE,UAASzH,CAAC,EAAE;IACrD,IAAIkzB,YAAY,GAAIlzB,CAAC,CAACkI,GAAG,KAAK,KAAK,IAAIlI,CAAC,CAACsS,OAAO,KAAK,CAAE;IACvD,IAAI,CAAC4gB,YAAY,EAAE;MACf;IACJ;IAEA,IAAIA,YAAY,EAAE;MACd,IAAIhxB,QAAQ,CAAC0I,aAAa,KAAKooB,oBAAoB,IAAIC,cAAc,IAAI,CAACztB,CAAC,CAACytB,cAAc,CAAC,CAACpa,EAAE,CAAC,UAAU,CAAC,EAAE;QACxG7Y,CAAC,CAACkS,cAAc,CAAC,CAAC;QAClB6gB,qBAAqB,CAAC3a,KAAK,CAAC,CAAC;MACjC;IACJ;EACJ,CAAC,CAAC;AACN;AAEA,IAAIlW,QAAQ,CAACiF,aAAa,CAAC,qCAAqC,CAAC,IAAI,IAAI,EAAE;EACvEjF,QAAQ,CAACiF,aAAa,CAAC,qCAAqC,CAAC,CAACM,gBAAgB,CAAC,YAAY,EAAE,YAAW;IACpG,IAAK,4CAA4C,CAACqU,IAAI,CAACqX,SAAS,CAACC,SAAS,CAAC,EAAE;MACzE,OAAO,KAAK;IAChB,CAAC,MAAM;MACHlB,eAAe,CAACnJ,MAAM,CAACT,GAAG,CAAC,CAAC;IAChC;EACJ,CAAC,CAAC;EAEFpmB,QAAQ,CAACiF,aAAa,CAAC,qCAAqC,CAAC,CAACM,gBAAgB,CAAC,SAAS,EAAE,UAASzH,CAAC,EAAE;IAClG,IAAIqzB,UAAU,GAAIrzB,CAAC,CAACsS,OAAO,IAAI,EAAG;IAClC,IAAI+gB,UAAU,EAAE;MACZnB,eAAe,CAACnJ,MAAM,CAACC,QAAQ,GAAG,YAAW;QACzC/iB,UAAU,CAAC,YAAW;UAClB,IAAIqtB,YAAY,GAAGnB,gBAAgB,CAAChrB,aAAa,CAAC,iCAAiC,CAAC;UACpF,IAAImsB,YAAY,EAAE;YACdA,YAAY,CAAClb,KAAK,CAAC,CAAC;YACpB0a,eAAe,CAAC,CAAC;UACrB;QACJ,CAAC,EAAE,IAAI,CAAC;MACZ,CAAC;IACL;EACJ,CAAC,CAAC;AACN;AAEA,IAAI5wB,QAAQ,CAACiF,aAAa,CAAC,qCAAqC,CAAC,IAAI,IAAI,EAAE;EACvEjF,QAAQ,CAACiF,aAAa,CAAC,qCAAqC,CAAC,CAACM,gBAAgB,CAAC,YAAY,EAAE,YAAW;IACpGjC,CAAC,CAAC,qCAAqC,CAAC,CAACK,EAAE,CAAC,YAAY,EAAE,UAASqE,GAAG,EAAE;MACpE,IAAIA,GAAG,CAAC2G,aAAa,IAAI,IAAI,IAAI,CAAC3G,GAAG,CAAC2G,aAAa,CAAC/K,SAAS,CAACkF,QAAQ,CAAC,qBAAqB,CAAC,IAAIknB,eAAe,CAAC5hB,YAAY,CAAC,eAAe,CAAC,EAAE;QAC5I4hB,eAAe,CAACnJ,MAAM,CAACwK,KAAK,CAAC,CAAC;QAC9B/tB,CAAC,CAAC,qCAAqC,CAAC,CAACI,GAAG,CAAC,YAAY,CAAC;MAC9D;IACJ,CAAC,CAAC;EACN,CAAC,CAAC;AACN;AAEO,SAAS4tB,mBAAmBA,CAACC,QAAQ,EAAE;EAC1C,IAAI,CAACC,KAAK,CAACD,QAAQ,CAAC,EAAE;IAClB,IAAIE,mBAAmB,GAAGzxB,QAAQ,CAACiF,aAAa,CAAC,uCAAuC,CAAC;MACrFysB,0BAA0B,GAAG,CAACH,QAAQ,KAAK,CAAC,GAAGt0B,MAAM,CAACC,IAAI,CAACknB,SAAS,CAACuN,cAAc,GAAG10B,MAAM,CAACC,IAAI,CAACknB,SAAS,CAACwN,oBAAoB,EAAE1X,MAAM,CAACqX,QAAQ,CAAC;;IAEtJ;IACA5Z,oFAAkB,CAAC,iCAAiC,EAAE,UAASka,SAAS,EAAE;MACtE,IAAIA,SAAS,CAAClmB,YAAY,CAAC,uBAAuB,CAAC,IAAI4lB,QAAQ,KAAK,CAAC,EAAE;QACnEM,SAAS,CAAC1rB,WAAW,GAAG0rB,SAAS,CAACzjB,YAAY,CAAC,uBAAuB,CAAC,CAAC8L,MAAM,CAACqX,QAAQ,CAAC;MAC5F,CAAC,MAAM,IAAIM,SAAS,CAAClmB,YAAY,CAAC,gBAAgB,CAAC,EAAE;QACjDkmB,SAAS,CAAC1rB,WAAW,GAAG0rB,SAAS,CAACzjB,YAAY,CAAC,gBAAgB,CAAC,CAAC8L,MAAM,CAACqX,QAAQ,CAAC;MACrF,CAAC,MAAM;QACHM,SAAS,CAAC1rB,WAAW,GAAGorB,QAAQ;MACpC;IACJ,CAAC,CAAC;IAEF,IAAIvB,eAAe,EAAE;MACjBA,eAAe,CAAClsB,YAAY,CAAC,YAAY,EAAE4tB,0BAA0B,CAAC;MACtE1B,eAAe,CAAClsB,YAAY,CAAC,OAAO,EAAE4tB,0BAA0B,CAAC;IACrE;IAEA,IAAIH,QAAQ,GAAG,CAAC,EAAE;MACdE,mBAAmB,CAAC7tB,SAAS,CAACC,GAAG,CAAC,gBAAgB,CAAC;IACvD,CAAC,MAAM;MACH4tB,mBAAmB,CAAC7tB,SAAS,CAAC6O,MAAM,CAAC,gBAAgB,CAAC;IAC1D;EACJ;AACJ;;AAEA;AACA;AACA;AACA;AACO,SAASqf,YAAYA,CAAA,EAAG;EAC3B,IAAI9B,eAAe,IAAIA,eAAe,CAACnJ,MAAM,EAAE;IAC3CmJ,eAAe,CAACnJ,MAAM,CAACT,GAAG,CAAC,CAAC;IAC5B,IAAI9iB,CAAC,CAAC,iBAAiB,CAAC,CAAClE,MAAM,GAAG,CAAC,EAAE;MACjCkE,CAAC,CAAC,oBAAoB,CAAC,CAACU,WAAW,CAAC,SAAS,CAAC;MAC9CV,CAAC,CAAC,eAAe,CAAC,CAACU,WAAW,CAAC,yBAAyB,CAAC;MACzDV,CAAC,CAAC,iBAAiB,CAAC,CAACU,WAAW,CAAC,eAAe,CAAC;MACjDV,CAAC,CAAC,0BAA0B,CAAC,CAACU,WAAW,CAAC,OAAO,CAAC;MAClDhE,QAAQ,CAACpB,IAAI,CAACgF,SAAS,CAAC6O,MAAM,CAAC,sBAAsB,CAAC;IAC1D;;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;IAEA;IACA;IACA;;IAEA;IACA;EACJ;AACJ;;AAEA;AACA;AACA;AACA;AACO,SAASsf,aAAaA,CAAA,EAAG;EAC5B,IAAI/B,eAAe,IAAIA,eAAe,CAACnJ,MAAM,EAAE;IAC3CmJ,eAAe,CAACnJ,MAAM,CAACwK,KAAK,CAAC,CAAC;EAClC;AACJ;AAEO,IAAM/sB,IAAI,GAAG;EAEhB0tB,aAAa,EAAE,SAAfA,aAAaA,CAAA,EAAa;IACtBhC,eAAe,GAAGhwB,QAAQ,CAACiF,aAAa,CAAC,qCAAqC,CAAC;IAC/EgrB,gBAAgB,GAAGjwB,QAAQ,CAACiF,aAAa,CAAC,qCAAqC,CAAC;IAChF,IAAI+qB,eAAe,IAAIA,eAAe,CAACnJ,MAAM,EAAE;MAC3CmJ,eAAe,CAACnJ,MAAM,CAACoL,SAAS,GAAGxB,mBAAmB;MACtDT,eAAe,CAACnJ,MAAM,CAACM,UAAU,GAAG,YAAW;QAC3C+K,gFAAuB,CAAC,CAAC;QACzBzL,uEAAY,CAAC;UAACxb,OAAO,EAAE+kB,eAAe;UAAEU,aAAa,EAAE;QAAI,CAAC,CAAC;QAC7DptB,CAAC,CAAC,MAAM,CAAC,CAAC2H,OAAO,CAAC,sBAAsB,CAAC;MAC7C,CAAC;IACL;EACJ;AACJ,CAAC,C;;;;;;;;;;;;ACpMD;AAAA;AAAA;AAAA;AAAA;AAAa;;AAE+C;AAE5D,IAAIknB,QAAQ,EACRC,eAAe,EACfC,eAAe,EACfC,eAAe,EACfC,UAAU,EACVC,cAAc,EACdC,cAAc,EACdC,aAAa;;AAEjB;AACApvB,CAAC,CAACqvB,EAAE,CAACC,OAAO,GAAG,YAAW;EACtB,IAAIC,OAAO,GAAG,IAAI;IACdC,EAAE,GAAG,SAALA,EAAEA,CAAA,EAAc;MACZ,IAAI,CAACC,KAAK,GAAGC,UAAU,CAACntB,IAAI,CAAC,IAAI,EAAEgtB,OAAO,CAAC;MAC3C,IAAI,CAACI,IAAI,GAAGC,UAAU;IAC1B,CAAC;EAEL,OAAO,IAAIJ,EAAE,CAAC,CAAC;AACnB,CAAC;;AAED;AACAxvB,CAAC,CAACsvB,OAAO,GAAG,YAAW;EACnB,IAAIE,EAAE,GAAG,SAALA,EAAEA,CAAA,EAAc;IAChB,IAAI,CAACC,KAAK,GAAGC,UAAU;IACvB,IAAI,CAACC,IAAI,GAAGC,UAAU;EAC1B,CAAC;EAED,OAAO,IAAIJ,EAAE,CAAC,CAAC;AACnB,CAAC;;AAED;AACA;AACA;AACA;AACA;AACO,SAASE,UAAUA,CAACxf,WAAW,EAAE2f,MAAM,EAAExzB,OAAO,EAAE;EACrD,IAAIyzB,kBAAkB,GAAG,CAAC,OAAO5f,WAAW,KAAK,QAAQ,GAAGxT,QAAQ,CAACiF,aAAa,CAACuO,WAAW,CAAC,GAAGA,WAAW,KAAK,KAAK;IACnHtB,QAAQ,GAAGkhB,kBAAkB,YAAYC,WAAW,GAAGD,kBAAkB,GAAGpzB,QAAQ,CAACpB,IAAI;EAE7FuzB,QAAQ,GAAGA,QAAQ,IAAInyB,QAAQ,CAACiF,aAAa,CAAC,SAAS,CAAC;;EAExD;EACA;EACA;EACA,IAAI,CAACktB,QAAQ,EAAE;IACXO,aAAa,GAAG,01DAA01D;IAE12DP,QAAQ,GAAGpe,mFAAiB,CAAC,KAAK,EAAE;MAACC,KAAK,EAAE;IAA4B,CAAC,CAAC;IAC1Eoe,eAAe,GAAGre,mFAAiB,CAACoe,QAAQ,EAAE;MAAC,OAAO,EAAE;IAAkB,CAAC,EAAE;MAAC3a,OAAO,EAAE,KAAK;MAAE8b,SAAS,EAAE;IAAK,CAAC,CAAC;IAChHjB,eAAe,GAAGte,mFAAiB,CAACqe,eAAe,EAAE;MAAC,OAAO,EAAE;IAAM,CAAC,EAAE;MAAC5a,OAAO,EAAE,GAAG;MAAE8b,SAAS,EAAE;IAAK,CAAC,CAAC;IACzGhB,eAAe,GAAGve,mFAAiB,CAACqe,eAAe,EAAE;MAAC,OAAO,EAAE;IAAM,CAAC,EAAE;MAAC5a,OAAO,EAAE,GAAG;MAAE8b,SAAS,EAAE;IAAK,CAAC,CAAC;IACzGf,UAAU,GAAGxe,mFAAiB,CAACoe,QAAQ,EAAE;MAAC,OAAO,EAAE;IAAM,CAAC,EAAE;MAAC3a,OAAO,EAAE,KAAK;MAAE8b,SAAS,EAAE;IAAK,CAAC,CAAC;IAC/Fd,cAAc,GAAGze,mFAAiB,CAACwe,UAAU,EAAE,CAAC,CAAC,EAAE;MAAC/a,OAAO,EAAE,MAAM;MAAE8b,SAAS,EAAE;IAAK,CAAC,CAAC;IACvFb,cAAc,GAAG1e,mFAAiB,CAACye,cAAc,EAAE;MAACpnB,EAAE,EAAE;IAAe,CAAC,EAAE;MAACoM,OAAO,EAAE,UAAU;MAAE8b,SAAS,EAAE;IAAK,CAAC,CAAC;;IAElH;IACAvf,mFAAiB,CACb0e,cAAc,EAAE;MACZc,CAAC,EAAEb;IACP,CAAC,EACD;MAAClb,OAAO,EAAE,MAAM;MAAE8b,SAAS,EAAE;IAAK,CACtC,CAAC;IACDvf,mFAAiB,CACboe,QAAQ,EAAE;MACNne,KAAK,EAAE;IACX,CACJ,CAAC;IACDD,mFAAiB,CACbue,eAAe,EAAE;MACblnB,EAAE,EAAE,QAAQ;MACZooB,MAAM,EAAE;IACZ,CAAC,EACD;MAAChc,OAAO,EAAE,SAAS;MAAE8b,SAAS,EAAE;IAAK,CACzC,CAAC;IACDvf,mFAAiB,CACbue,eAAe,EAAE;MACblnB,EAAE,EAAE,QAAQ;MACZooB,MAAM,EAAE;IACZ,CAAC,EACD;MAAChc,OAAO,EAAE,SAAS;MAAE8b,SAAS,EAAE;IAAK,CACzC,CAAC;IACDvf,mFAAiB,CACbse,eAAe,EACf;MACIre,KAAK,EAAE,wBAAwB;MAC/Buf,CAAC,EAAEb;IACP,CAAC,EACD;MAAClb,OAAO,EAAE,MAAM;MAAE8b,SAAS,EAAE;IAAK,CACtC,CAAC;EACL;EAEA,IAAI3zB,OAAO,EAAE;IACToU,mFAAiB,CAACoe,QAAQ,EAAE;MAACne,KAAK,EAAE;IAAgB,CAAC,EAAE,GAAG,EAAErU,OAAO,CAAC;EACxE,CAAC,MAAM;IACH;IACA;IACA,IAAI8zB,SAAS,GAAGtB,QAAQ,CAACltB,aAAa,CAAC,iBAAiB,CAAC;IAEzD,IAAIwuB,SAAS,EAAE;MACXtB,QAAQ,CAACuB,WAAW,CAACD,SAAS,CAAC;IACnC;EACJ;EAEA,IAAIN,MAAM,EAAE;IACRhB,QAAQ,CAACvuB,SAAS,CAACC,GAAG,CAAC,UAAU,CAAC;EACtC,CAAC,MAAM;IACHsuB,QAAQ,CAACvuB,SAAS,CAAC6O,MAAM,CAAC,UAAU,CAAC;EACzC;;EAEA;EACA;EACA,IAAI,CAACe,WAAW,EAAE;IACd2e,QAAQ,CAACvuB,SAAS,CAACC,GAAG,CAAC,YAAY,CAAC;EACxC,CAAC,MAAM;IACHsuB,QAAQ,CAACvuB,SAAS,CAAC6O,MAAM,CAAC,YAAY,CAAC;EAC3C;EAEAP,QAAQ,CAAChS,WAAW,CAACiyB,QAAQ,CAAC;EAC9BA,QAAQ,CAACvuB,SAAS,CAACC,GAAG,CAAC,cAAc,CAAC;EAEtC,OAAOsuB,QAAQ;AACnB;;AAEA;AACA;AACA;AACA;AACO,SAASe,UAAUA,CAAA,EAAG;EACzB,IAAIf,QAAQ,EAAE;IACVA,QAAQ,CAACvuB,SAAS,CAAC6O,MAAM,CAAC,cAAc,CAAC;EAC7C;AACJ,C;;;;;;;;;;;;ACvIA;AAAA;AAAa;;AAEb;AACA;AACA;AACO,SAASiV,UAAUA,CAACxV,QAAQ,EAAEyhB,iBAAiB,EAAE;EACpD,IAAIC,aAAa,GAAG1hB,QAAQ,GAAIA,QAAQ,CAAC/D,OAAO,CAAC,mCAAmC,CAAC,IAAI+D,QAAQ,CAAC7D,UAAU,GAAI,IAAI;IAChHwlB,MAAM,GAAGD,aAAa,GAAGA,aAAa,CAAC3uB,aAAa,CAAC,8BAA8B,CAAC,GAAG,IAAI;EAE/F,IAAI4uB,MAAM,EAAE;IACR,IAAIC,iBAAiB,GAAGF,aAAa,CAACG,qBAAqB,CAAC,CAAC,CAAC1J,IAAI;MAC9D2J,YAAY,GAAG9hB,QAAQ,CAAC6hB,qBAAqB,CAAC,CAAC;MAC/CE,gBAAgB,GAAGh3B,MAAM,CAACkV,gBAAgB,CAACD,QAAQ,CAAC;MACpDgiB,mBAAmB,GAAG/vB,UAAU,CAAC8vB,gBAAgB,CAAC,cAAc,CAAC,CAAC;MAClEE,oBAAoB,GAAGhwB,UAAU,CAAC8vB,gBAAgB,CAAC,eAAe,CAAC,CAAC;MACpEG,OAAO,GAAGnrB,IAAI,CAACC,GAAG,CAAC4qB,iBAAiB,GAAGE,YAAY,CAAC3J,IAAI,GAAG6J,mBAAmB,CAAC;;IAEnF;IACA;IACA,IAAIP,iBAAiB,EAAE;MACnBE,MAAM,CAACjwB,SAAS,CAACC,GAAG,CAAC,yBAAyB,CAAC;IACnD,CAAC,MAAM;MACHgwB,MAAM,CAACjwB,SAAS,CAAC6O,MAAM,CAAC,yBAAyB,CAAC;IACtD;IAEAohB,MAAM,CAAC7L,KAAK,CAACqM,SAAS,iBAAAloB,MAAA,CAAiBioB,OAAO,QAAK;IACnDP,MAAM,CAAC7L,KAAK,CAACuC,KAAK,MAAApe,MAAA,CAAM6nB,YAAY,CAACzJ,KAAK,GAAG2J,mBAAmB,GAAGC,oBAAoB,OAAI;EAC/F;AACJ,C;;;;;;;;;;;;AC5BA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAa;;AAAA,SAAA53B,QAAAC,CAAA,sCAAAD,OAAA,wBAAAE,MAAA,uBAAAA,MAAA,CAAAC,QAAA,aAAAF,CAAA,kBAAAA,CAAA,gBAAAA,CAAA,WAAAA,CAAA,yBAAAC,MAAA,IAAAD,CAAA,CAAAG,WAAA,KAAAF,MAAA,IAAAD,CAAA,KAAAC,MAAA,CAAAG,SAAA,qBAAAJ,CAAA,KAAAD,OAAA,CAAAC,CAAA;AAE0B;AACA;AACU;AAC2B;AAC8B;AACrC;AACR;AACpB;AAC0B;AAEnE,IACI83B,kBAAkB,GAAGt0B,QAAQ,CAACiF,aAAa,CAAC,wBAAwB,CAAC;EACrEsvB,QAAQ,GAAGD,kBAAkB,GAAGA,kBAAkB,CAAClmB,YAAY,CAAC,sBAAsB,CAAC,GAAG,EAAE;EAC5FomB,SAAS,GAAG,CAAC;;AAEjB;AACA;AACA;AACA,SAASC,kBAAkBA,CAAC/kB,KAAK,EAAE;EAC/B,IAAI3F,QAAQ,GAAG,qCAAqC;EAEpD,OAAO2F,KAAK,GAAGA,KAAK,CAACvB,OAAO,CAACpE,QAAQ,CAAC,GAAG/J,QAAQ,CAACiF,aAAa,CAAC8E,QAAQ,CAAC;AAC7E;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS2qB,uBAAuBA,CAAChlB,KAAK,EAAEilB,cAAc,EAAE;EACpD,IAAIC,eAAe,GAAGH,kBAAkB,CAAC/kB,KAAK,CAAC;IAC3CmlB,oBAAoB,GAAGD,eAAe,GAAGA,eAAe,CAAC3vB,aAAa,CAAC,iDAAiD,CAAC,GAAG,KAAK;EAErI,IAAI0vB,cAAc,IAAIE,oBAAoB,EAAE;IACxCA,oBAAoB,CAAC1uB,WAAW,GAAG,EAAE;IAErCyuB,eAAe,CAAChxB,SAAS,CAAC6O,MAAM,CAAC,kBAAkB,CAAC;EACxD;EAEA,OAAOoiB,oBAAoB;AAC/B;AAEA,SAASC,qBAAqBA,CAACpwB,OAAO,EAAE;EACpC,IAAIA,OAAO,CAACqwB,OAAO,EAAE;IACjB,IAAIC,eAAe,GAAGtwB,OAAO,CAACuwB,aAAa,GAAG,IAAI,GAAG,CAAC;;IAEtD;IACAC,sDAAQ,CAAC,YAAW;MAChB1E,wDAAO,CAACxE,QAAQ,CAAC1nB,IAAI,CAAC,IAAI,EAAE;QACxB6wB,UAAU,EAAE,iBAAiB;QAC7BC,WAAW,EAAE;UACTC,QAAQ,EAAEp4B,MAAM,CAACC,IAAI,CAACqH,IAAI,CAAC+wB,cAAc;UACzCC,OAAO,EAAEzH,+EAAiB,CAAC7wB,MAAM,CAACC,IAAI,CAACqH,IAAI,CAACixB,UAAU,EAAE;YAACC,KAAK,EAAE/wB,OAAO,CAACgxB,UAAU;YAAEC,QAAQ,EAAEjxB,OAAO,CAACkxB;UAAc,CAAC,CAAC;UACtHC,OAAO,EAAEnxB,OAAO,CAACgxB,UAAU;UAC3BI,WAAW,EAAE;YACTC,YAAY,EAAE;UAClB;QACJ;MACJ,CAAC,CAAC;IACN,CAAC,EAAEf,eAAe,CAAC,CAAC,CAAC;IACrBgB,yEAAmB,CAAC,CAAC;EACzB;EAEAxF,wDAAO,CAACxE,QAAQ,CAAC1nB,IAAI,CAAC,IAAI,EAAE;IACxB6wB,UAAU,EAAE,QAAQ;IACpBC,WAAW,EAAE;MACTM,UAAU,EAAEhxB,OAAO,CAACgxB,UAAU;MAC9BE,cAAc,EAAElxB,OAAO,CAACkxB,cAAc,IAAI;IAC9C;EACJ,CAAC,CAAC;AACN;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAASK,eAAeA,CAAC14B,QAAQ,EAAEw3B,OAAO,EAAEW,UAAU,EAAE;EACpD,IAAIb,oBAAoB,GAAGH,uBAAuB,CAAC,IAAI,CAAC;IACpDE,eAAe,GAAGH,kBAAkB,CAAC,IAAI,CAAC;EAE9C,IAAIl4B,OAAA,CAAOgB,QAAQ,MAAK,QAAQ,EAAE;IAC9Bs3B,oBAAoB,CAACxvB,SAAS,GAAG9H,QAAQ;IACzC4uB,sEAAW,CAAC0I,oBAAoB,CAAC;IAEjCD,eAAe,CAAChxB,SAAS,CAACC,GAAG,CAAC,kBAAkB,CAAC;IACjDgxB,oBAAoB,CAACjxB,SAAS,CAAC6O,MAAM,CAAC,gBAAgB,CAAC;IAEvDqiB,qBAAqB,CAAC;MAACC,OAAO,EAAPA,OAAO;MAAEW,UAAU,EAAVA,UAAU;MAAEE,cAAc,EAAE,eAAe;MAAEX,aAAa,EAAE;IAAI,CAAC,CAAC;EACtG,CAAC,MAAM;IACHJ,oBAAoB,CAACjxB,SAAS,CAACC,GAAG,CAAC,gBAAgB,CAAC;EACxD;EAEAgpB,oDAAmB,CAAC,CAAC;AACzB;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASqJ,cAAcA,CAAA,EAAG;EACtB,IAAIR,UAAU,GAAG,IAAI,CAAC31B,IAAI,CAAC,GAAG,CAAC,CAACkG,KAAK;EAErC,IAAIyvB,UAAU,CAACt2B,MAAM,IAAIo1B,SAAS,EAAE;IAChC,IAAIO,OAAO,GAAGoB,8EAAgB,CAAC5B,QAAQ,EAAE,GAAG,EAAEmB,UAAU,CAAC;IAEzD7I,oDAAmB,CAAC6H,uBAAuB,CAAC,IAAI,CAAC,CAAC;IAElD,IAAI,IAAI,CAAC30B,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAACA,IAAI,CAAC,MAAM,CAAC,CAACojB,OAAO,EAAE;MAChD4R,OAAO,GAAGoB,8EAAgB,CAACpB,OAAO,EAAE,MAAM,EAAE,IAAI,CAACh1B,IAAI,CAAC,MAAM,CAAC,CAACkG,KAAK,CAAC;IACxE;IAEA3C,CAAC,CAACwpB,IAAI,CAAC;MACHsJ,OAAO,EAAE,IAAI;MACbh4B,GAAG,EAAE22B,OAAO;MACZt2B,MAAM,EAAE,KAAK;MACb43B,OAAO,EAAE,SAATA,OAAOA,CAAG94B,QAAQ;QAAA,OAAK04B,eAAe,CAAC14B,QAAQ,EAAEw3B,OAAO,EAAEW,UAAU,CAAC;MAAA;IACzE,CAAC,CAAC;EACN,CAAC,MAAM;IACHhB,uBAAuB,CAAC,IAAI,EAAE,IAAI,CAAC;EACvC;AACJ;;AAEA;AACA;AACA;AACA;AACA,SAAS4B,kBAAkBA,CAAA,EAAG;EAC1B9S,+EAAoB,CAAC,gCAAgC,EAAE,QAAQ,EAAE,UAASxb,GAAG,EAAE;IAC3E,IAAI6a,YAAY,GAAG,IAAI,CAAC5d,aAAa,CAAC,uCAAuC,CAAC;IAE9E,IAAI,CAAC4d,YAAY,CAAC5c,KAAK,CAACmJ,IAAI,CAAC,CAAC,EAAE;MAC5BpH,GAAG,CAACgI,cAAc,CAAC,CAAC;MAEpB,OAAO,KAAK;IAChB,CAAC,MAAM;MACH8kB,qBAAqB,CAAC;QAACY,UAAU,EAAE7S,YAAY,CAAC5c;MAAK,CAAC,CAAC;IAC3D;EACJ,CAAC,CAAC;AACN;AAEA,SAASswB,kBAAkBA,CAAA,EAAG;EAC1B5e,oFAAkB,CAAC,mCAAmC,EAAE,UAASlJ,cAAc,EAAE;IAC7E,IAAIA,cAAc,IAAIA,cAAc,CAACoY,MAAM,EAAE;MACzCpY,cAAc,CAACoY,MAAM,CAACC,QAAQ,GAAG,YAAW;QACxC,IAAI0P,YAAY,GAAG/nB,cAAc,CAACoY,MAAM,CAAC3U,QAAQ,CAACjN,aAAa,CAAC,uCAAuC,CAAC;QAExG+hB,0EAAiB,CAACvY,cAAc,CAACoY,MAAM,CAAC3U,QAAQ,EAAE;UAAC+U,cAAc,EAAEC,uEAAoBA;QAAA,CAAC,CAAC;QAEzFb,qEAAU,CAAC;UAACpb,OAAO,EAAE;QAAW,CAAC,CAAC;QAElCirB,cAAc,CAACxvB,IAAI,CAAC8vB,YAAY,CAAC;MACrC,CAAC;MAED/nB,cAAc,CAACoY,MAAM,CAACM,UAAU,GAAG,YAAW;QAC1CC,yEAAgB,CAAC3Y,cAAc,CAACoY,MAAM,CAAC3U,QAAQ,CAAC;QAEhDuU,uEAAY,CAAC;UAACxb,OAAO,EAAE;QAAW,CAAC,CAAC;MACxC,CAAC;IACL;EACJ,CAAC,CAAC;EACFwrB,mEAAa,CAAC,CAAC;AACnB;;AAEA;AACA;AACA;AACO,SAASpO,WAAWA,CAAA,EAAG;EAC1B,IAAIqO,aAAa,GAAG12B,QAAQ,CAACiF,aAAa,CAAC,kDAAkD,CAAC;EAE9F,IAAIyxB,aAAa,IAAIA,aAAa,CAAC7P,MAAM,EAAE;IACvC6P,aAAa,CAAC7P,MAAM,CAACwK,KAAK,CAAC,CAAC;EAChC;AACJ;AAEe,2EAAW;EACtB,IAAIsF,YAAY,GAAG32B,QAAQ,CAACwG,gBAAgB,CAAC,4DAA4D,CAAC;IACtG;AACR;AACA;AACA;AACA;IACQowB,mBAAmB,GAAG1B,sDAAQ,CAACgB,cAAc,EAAE,GAAG,CAAC;EAEvD,EAAE,CAAC72B,OAAO,CAACqH,IAAI,CAACiwB,YAAY,EAAE,UAAS9T,YAAY,EAAE;IACjDA,YAAY,CAACtd,gBAAgB,CAAC,OAAO,EAAEqxB,mBAAmB,CAAC;EAC/D,CAAC,CAAC;EAEFN,kBAAkB,CAAC,CAAC;EACpBC,kBAAkB,CAAC,CAAC;EAEpBv2B,QAAQ,CAACpB,IAAI,CAAC2G,gBAAgB,CAAC,OAAO,EAAE,UAASyC,GAAG,EAAE;IAClD,IAAI,CAACA,GAAG,CAACa,MAAM,CAACsF,OAAO,CAAC,qCAAqC,CAAC,EAAE;MAC5DumB,uBAAuB,CAAC,KAAK,EAAE,IAAI,CAAC;IACxC;EACJ,CAAC,CAAC;AACN,C;;;;;;;;;;;;ACzMA;AAAA;AAAA;AAAA;AAAa;;AAC0B;AACY;AACnD,IAAImC,YAAY,GAAG,KAAK;AACxB,IAAIC,oBAAoB,GAAG,IAAI;AAC/B,IAAIC,gBAAgB,GAAG,IAAI;AAC3B,IAAIC,WAAW,GAAG,KAAK;AACvB,IAAIC,YAAY,GAAG,CAAC,CAAC;AACoB;;AAEzC;AACA,SAASC,WAAWA,CAACC,eAAe,EAAEC,iBAAiB,EAAEzO,SAAS,EAAE;EAChE,IAAIwO,eAAe,IAAIC,iBAAiB,EAAE;IACtC,IAAIC,cAAc,GAAGF,eAAe,CAACrO,IAAI,CAAC,4BAA4B,CAAC;IACvE,IAAIwO,cAAc,GAAGH,eAAe,CAACrO,IAAI,CAAC,4BAA4B,CAAC;IACvE,IAAIyO,WAAW,GAAG5O,SAAS,CAACzkB,IAAI,CAAC,IAAI,CAAC;IACtCozB,cAAc,CAACzL,IAAI,CAAClD,SAAS,CAACzkB,IAAI,CAAC,YAAY,CAAC,CAAC;IACjDizB,eAAe,CAACpN,QAAQ,CAAC,MAAM,CAAC;IAChCqN,iBAAiB,CAACrN,QAAQ,CAAC,MAAM,CAAC;IAClCzmB,CAAC,CAAC,MAAM,CAAC,CAACksB,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC;IACnC,IAAIqH,YAAY,EAAE;MACd;IACJ;IACA,IAAIU,WAAW,IAAIN,YAAY,EAAE;MAC7BI,cAAc,CAACxL,IAAI,CAACoL,YAAY,CAACM,WAAW,CAAC,CAAC;MAC9CpL,sEAAW,CAAC,CAAC;MACb;IACJ;IACAkL,cAAc,CAACxL,IAAI,CAAC,EAAE,CAAC;IACvBgB,oDAAmB,CAACsK,eAAe,CAACxG,GAAG,CAAC,CAAC,CAAC,CAAC;IAC3C6G,sBAAsB,CAACH,cAAc,EAAE1O,SAAS,EAAE4O,WAAW,CAAC;EAClE;AACJ;;AAEA;AACA,SAASE,YAAYA,CAACN,eAAe,EAAEC,iBAAiB,EAAE;EACtD,IAAID,eAAe,IAAIC,iBAAiB,EAAE;IACtCD,eAAe,CAACnzB,WAAW,CAAC,MAAM,CAAC;IACnCozB,iBAAiB,CAACpzB,WAAW,CAAC,MAAM,CAAC;IACrCV,CAAC,CAAC,MAAM,CAAC,CAACksB,GAAG,CAAC,UAAU,EAAE,EAAE,CAAC;IAC7BqH,YAAY,GAAG,KAAK;EACxB;AACJ;AAEA,SAASa,cAAcA,CAAC/O,SAAS,EAAE;EAC/B,IAAIA,SAAS,CAAC9R,QAAQ,CAAC,QAAQ,CAAC,EAAE;IAC9B8R,SAAS,CAAC3kB,WAAW,CAAC,QAAQ,CAAC;EACnC;AACJ;AAEA,SAASwzB,sBAAsBA,CAACH,cAAc,EAAE1O,SAAS,EAAEvd,EAAE,EAAE;EAC3D,IAAI,CAACud,SAAS,IAAIA,SAAS,CAACvpB,MAAM,KAAK,CAAC,EAAE;IACtC;EACJ;EACA,IAAIu4B,GAAG,GAAGhP,SAAS,CAACzkB,IAAI,CAAC,UAAU,CAAC;EACpC,IAAI0zB,QAAQ,GAAGt0B,CAAC,CAACrG,MAAM,CAAC,CAACstB,KAAK,CAAC,CAAC,IAAI,GAAG,GAAG,IAAI,GAAG,KAAK;EAEtDjnB,CAAC,CAACwpB,IAAI,CAAC;IACH1uB,GAAG,EAAEu5B,GAAG;IACRjwB,IAAI,EAAE,KAAK;IACXrJ,IAAI,EAAE;MACFu5B,QAAQ,EAAEA;IACd,CAAC;IACDvB,OAAO,EAAE,SAASA,OAAOA,CAACh4B,IAAI,EAAE;MAC5B44B,YAAY,CAAC7rB,EAAE,CAAC,GAAG/M,IAAI;MACvBg5B,cAAc,CAACxL,IAAI,CAACxtB,IAAI,CAAC;MACzB8tB,sEAAW,CAAC,CAAC;MACbU,oDAAmB,CAAC,CAAC;IACzB;EACJ,CAAC,CAAC;AACN;AAEA,SAASgL,sBAAsBA,CAACC,YAAY,EAAEnP,SAAS,EAAEwO,eAAe,EAAEC,iBAAiB,EAAE;EACzF;EACA,IAAIU,YAAY,EAAE;IACdd,WAAW,GAAG,IAAI;IAClBD,gBAAgB,GAAGe,YAAY,CAACnH,GAAG,CAAC,CAAC,CAAC;IACtCmH,YAAY,CAACnH,GAAG,CAAC,CAAC,CAAC,CAACoH,KAAK,CAAC,CAAC;EAC/B;EACAC,aAAa,CAACrP,SAAS,CAAC;EACxBuO,WAAW,CAACC,eAAe,EAAEC,iBAAiB,EAAEzO,SAAS,CAAC;EAC1D+O,cAAc,CAAC/O,SAAS,CAAC;AAC7B;;AAEA;AACA,SAASsP,wBAAwBA,CAACpF,OAAO,EAAE;EACvC,IAAMqF,UAAU,GAAGrF,OAAO,CAAC,CAAC,CAAC,CAACkB,qBAAqB,CAAC,CAAC;EACrD,OACImE,UAAU,CAAC/N,GAAG,IAAI,CAAC,IACnB+N,UAAU,CAAC7N,IAAI,IAAI,CAAC,IACpB6N,UAAU,CAACC,MAAM,KAAKl7B,MAAM,CAACytB,WAAW,IAAI1qB,QAAQ,CAACo4B,eAAe,CAAC7I,YAAY,CAAC,IAClF2I,UAAU,CAACG,KAAK,KAAKp7B,MAAM,CAACqpB,UAAU,IAAItmB,QAAQ,CAACo4B,eAAe,CAACE,WAAW,CAAC;AAEvF;AAEA,SAASC,kBAAkBA,CAACnrB,EAAE,EAAEsF,QAAQ,EAAE;EACtC,IAAI8lB,WAAW;EACf,OAAO,YAAW;IACd,IAAIC,OAAO,GAAGR,wBAAwB,CAAC7qB,EAAE,CAAC;IAC1C,IAAIqrB,OAAO,IAAID,WAAW,EAAE;MACxBA,WAAW,GAAGC,OAAO;MACrB,IAAI,OAAO/lB,QAAQ,IAAI,UAAU,EAAE;QAC/BA,QAAQ,CAAC,CAAC;MACd;IACJ;EACJ,CAAC;AACL;AAEA,SAASslB,aAAaA,CAACrP,SAAS,EAAE;EAC9B,IAAI+P,cAAc,GAAG/P,SAAS,CAACzkB,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE;EAChE,IAAIw0B,cAAc,EAAE;IAChBlI,wDAAO,CAACxE,QAAQ,CAAC1nB,IAAI,CAAC,IAAI,EAAE;MACxB6wB,UAAU,EAAE,eAAe;MAC3BC,WAAW,EAAE;QACTuD,mBAAmB,EAAED;MACzB;IACJ,CAAC,CAAC;EACN;AACJ;;AAEA;AACA,SAASE,qBAAqBA,CAAA,EAAG;EAC7B,IAAIC,qBAAqB,GAAGv1B,CAAC,CAAC,0BAA0B,CAAC;EACzD,IAAI6zB,eAAe,GAAG7zB,CAAC,CAAC,oBAAoB,CAAC;EAC7C,IAAI8zB,iBAAiB,GAAG9zB,CAAC,CAAC,+BAA+B,CAAC;EAC1D,IAAIw1B,6BAA6B,GAAG3B,eAAe,GAAGA,eAAe,CAACrO,IAAI,CAAC,4BAA4B,CAAC,GAAG,IAAI;EAC/G,IAAIiQ,aAAa,GAAG,KAAK;EACzB,IAAIF,qBAAqB,IAAIA,qBAAqB,CAACz5B,MAAM,GAAG,CAAC,EAAE;IAC3Dy5B,qBAAqB,CAAC3P,IAAI,CAAC,YAAW;MAClC,IAAIP,SAAS,GAAGrlB,CAAC,CAAC,IAAI,CAAC;MACvB,IAAI01B,iBAAiB,GAAGrQ,SAAS,CAACG,IAAI,CAAC,yBAAyB,CAAC;MACjE,IAAIgP,YAAY,GAAGnP,SAAS,CAACsQ,IAAI,CAAC,CAAC,IAAItQ,SAAS,CAACsQ,IAAI,CAAC,CAAC,CAACpiB,QAAQ,CAAC,aAAa,CAAC,GAAG8R,SAAS,CAACsQ,IAAI,CAAC,CAAC,GAAG,IAAI;MAEzG,IAAItQ,SAAS,IAAIqQ,iBAAiB,EAAE;QAChCrQ,SAAS,CAAChlB,EAAE,CAAC,OAAO,EAAE,UAASu1B,KAAK,EAAE;UAClCpC,oBAAoB,GAAGoC,KAAK,CAACrwB,MAAM;UACnCkwB,aAAa,GAAG,IAAI;UACpBlB,sBAAsB,CAACC,YAAY,EAAEnP,SAAS,EAAEwO,eAAe,EAAEC,iBAAiB,CAAC;QACvF,CAAC,CAAC;QACF4B,iBAAiB,CAACr1B,EAAE,CAAC,OAAO,EAAE,UAASu1B,KAAK,EAAE;UAC1C;UACApC,oBAAoB,GAAGoC,KAAK,CAACrwB,MAAM,CAACswB,aAAa,CAACA,aAAa;UAC/DJ,aAAa,GAAG,IAAI;UACpBlB,sBAAsB,CAACC,YAAY,EAAEnP,SAAS,EAAEwO,eAAe,EAAEC,iBAAiB,CAAC;UACnF8B,KAAK,CAACjnB,eAAe,CAAC,CAAC;QAC3B,CAAC,CAAC;MACN;;MAEA;MACA3O,CAAC,CAAC,MAAM,CAAC,CAACK,EAAE,CAAC,qBAAqB,EAAE,YAAW;QAC3C8zB,YAAY,CAACN,eAAe,EAAEC,iBAAiB,CAAC;QAChD,IAAI2B,aAAa,EAAE;UACflC,YAAY,GAAG,IAAI;QACvB;MACJ,CAAC,CAAC;;MAEF;MACAvzB,CAAC,CAAC,MAAM,CAAC,CAACK,EAAE,CAAC,sBAAsB,EAAE,YAAW;QAC5C,IAAIo1B,aAAa,EAAE;UACfA,aAAa,GAAG,IAAI;UACpB7B,WAAW,CAACC,eAAe,EAAEC,iBAAiB,EAAEzO,SAAS,CAAC;QAC9D;MACJ,CAAC,CAAC;MAEF,IAAIrlB,CAAC,CAACrG,MAAM,CAAC,CAACstB,KAAK,CAAC,CAAC,IAAI,GAAG,EAAE;QAE1B,IAAI5iB,OAAO,GAAG4wB,kBAAkB,CAAC5P,SAAS,EAAE,YAAW;UACnD,IAAIA,SAAS,CAAC9R,QAAQ,CAAC,QAAQ,CAAC,EAAE;YAC9B9S,UAAU,CAAC,YAAW;cAClB4kB,SAAS,CAAC3kB,WAAW,CAAC,QAAQ,CAAC;YACnC,CAAC,EAAE,IAAI,CAAC;UACZ,CAAC,MAAM;YACH,IAAI,CAAC2kB,SAAS,CAAC9R,QAAQ,CAAC,QAAQ,CAAC,EAAE;cAC/B8R,SAAS,CAACoB,QAAQ,CAAC,QAAQ,CAAC;YAChC;YACAhmB,UAAU,CAAC,YAAW;cAClB4kB,SAAS,CAAC3kB,WAAW,CAAC,QAAQ,CAAC;YACnC,CAAC,EAAE,IAAI,CAAC;UACZ;QACJ,CAAC,CAAC;QAEFV,CAAC,CAACrG,MAAM,CAAC,CAAC0G,EAAE,CAAC,qCAAqC,EAAEgE,OAAO,CAAC;QAC5DrE,CAAC,CAACqlB,SAAS,CAAC,CAACxa,OAAO,CAAC,kBAAkB,CAAC,CAACxK,EAAE,CAAC,aAAa,EAAEgE,OAAO,CAAC;QAEnErE,CAAC,CAAC,MAAM,CAAC,CAACK,EAAE,CAAC,gCAAgC,EAAE,YAAW;UACtDL,CAAC,CAAC,+CAA+C,CAAC,CAACksB,GAAG,CAAC,YAAY,EAAE,QAAQ,CAAC;UAC9EsJ,6BAA6B,CAACr1B,IAAI,CAAC,CAAC;QACxC,CAAC,CAAC;QAEFH,CAAC,CAAC,MAAM,CAAC,CAACK,EAAE,CAAC,0CAA0C,EAAE,YAAW;UAChEL,CAAC,CAAC,+CAA+C,CAAC,CAACksB,GAAG,CAAC,YAAY,EAAE,SAAS,CAAC;UAC/EsJ,6BAA6B,CAAC71B,IAAI,CAAC,CAAC;QACxC,CAAC,CAAC;MACN;IACJ,CAAC,CAAC;EACN;EAEA,IAAI61B,6BAA6B,EAAE;IAC/BA,6BAA6B,CAACn1B,EAAE,CAAC,OAAO,EAAE,YAAW;MACjDo1B,aAAa,GAAG,KAAK;MACrBtB,YAAY,CAACN,eAAe,EAAEC,iBAAiB,CAAC;MAChD;MACA,IAAIJ,WAAW,IAAID,gBAAgB,EAAE;QACjCA,gBAAgB,CAACqC,IAAI,CAAC,CAAC;QACvBrC,gBAAgB,GAAG,IAAI;QACvBC,WAAW,GAAG,KAAK;MACvB;;MAEA;MACA,IAAI1zB,CAAC,CAACrG,MAAM,CAAC,CAACstB,KAAK,CAAC,CAAC,IAAI,GAAG,EAAE;QAC1BuM,oBAAoB,CAAClzB,SAAS,CAACC,GAAG,CAAC,QAAQ,CAAC;QAC5C,IAAIg1B,qBAAqB,CAAChiB,QAAQ,CAAC,QAAQ,CAAC,EAAE;UAC1CgiB,qBAAqB,CAAC70B,WAAW,CAAC,QAAQ,CAAC;QAC/C;MACJ;IACJ,CAAC,CAAC;EACN;EAEA,IAAIozB,iBAAiB,EAAE;IACnBA,iBAAiB,CAACzzB,EAAE,CAAC,OAAO,EAAE,UAASu1B,KAAK,EAAE;MAC1C,IAAIA,KAAK,CAACrwB,MAAM,KAAKuuB,iBAAiB,CAAC,CAAC,CAAC,EAAE;QACvC2B,aAAa,GAAG,KAAK;QACrBtB,YAAY,CAACN,eAAe,EAAEC,iBAAiB,CAAC;MACpD;MACA;MACA,IAAIJ,WAAW,IAAID,gBAAgB,EAAE;QACjCA,gBAAgB,CAACqC,IAAI,CAAC,CAAC;QACvBrC,gBAAgB,GAAG,IAAI;QACvBC,WAAW,GAAG,KAAK;MACvB;IACJ,CAAC,CAAC;EACN;AACJ;AAEe4B,oFAAqB,E;;;;;;;;;;;;AC1OpC;AAAA;AAAA;AAAA;AAAa;;AAAA,SAAAr8B,QAAAC,CAAA,sCAAAD,OAAA,wBAAAE,MAAA,uBAAAA,MAAA,CAAAC,QAAA,aAAAF,CAAA,kBAAAA,CAAA,gBAAAA,CAAA,WAAAA,CAAA,yBAAAC,MAAA,IAAAD,CAAA,CAAAG,WAAA,KAAAF,MAAA,IAAAD,CAAA,KAAAC,MAAA,CAAAG,SAAA,qBAAAJ,CAAA,KAAAD,OAAA,CAAAC,CAAA;AAAA,SAAAoc,2BAAAC,CAAA,EAAA/a,CAAA,QAAAgb,CAAA,yBAAArc,MAAA,IAAAoc,CAAA,CAAApc,MAAA,CAAAC,QAAA,KAAAmc,CAAA,qBAAAC,CAAA,QAAAvJ,KAAA,CAAAC,OAAA,CAAAqJ,CAAA,MAAAC,CAAA,GAAAC,2BAAA,CAAAF,CAAA,MAAA/a,CAAA,IAAA+a,CAAA,uBAAAA,CAAA,CAAAzZ,MAAA,IAAA0Z,CAAA,KAAAD,CAAA,GAAAC,CAAA,OAAAE,EAAA,MAAAC,CAAA,YAAAA,EAAA,eAAAtW,CAAA,EAAAsW,CAAA,EAAAC,CAAA,WAAAA,EAAA,WAAAF,EAAA,IAAAH,CAAA,CAAAzZ,MAAA,KAAA+Z,IAAA,WAAAA,IAAA,MAAAlT,KAAA,EAAA4S,CAAA,CAAAG,EAAA,UAAAlb,CAAA,WAAAA,EAAA+a,CAAA,UAAAA,CAAA,KAAAO,CAAA,EAAAH,CAAA,gBAAAI,SAAA,iJAAA7c,CAAA,EAAAuO,CAAA,OAAAuO,CAAA,gBAAA3W,CAAA,WAAAA,EAAA,IAAAmW,CAAA,GAAAA,CAAA,CAAApS,IAAA,CAAAmS,CAAA,MAAAK,CAAA,WAAAA,EAAA,QAAAL,CAAA,GAAAC,CAAA,CAAAS,IAAA,WAAAxO,CAAA,GAAA8N,CAAA,CAAAM,IAAA,EAAAN,CAAA,KAAA/a,CAAA,WAAAA,EAAA+a,CAAA,IAAAS,CAAA,OAAA9c,CAAA,GAAAqc,CAAA,KAAAO,CAAA,WAAAA,EAAA,UAAArO,CAAA,YAAA+N,CAAA,CAAAU,MAAA,IAAAV,CAAA,CAAAU,MAAA,oBAAAF,CAAA,QAAA9c,CAAA;AAAA,SAAAuc,4BAAAF,CAAA,EAAA9N,CAAA,QAAA8N,CAAA,2BAAAA,CAAA,SAAAY,iBAAA,CAAAZ,CAAA,EAAA9N,CAAA,OAAA+N,CAAA,MAAAjL,QAAA,CAAAnH,IAAA,CAAAmS,CAAA,EAAAa,KAAA,6BAAAZ,CAAA,IAAAD,CAAA,CAAAlc,WAAA,KAAAmc,CAAA,GAAAD,CAAA,CAAAlc,WAAA,CAAAyX,IAAA,aAAA0E,CAAA,cAAAA,CAAA,GAAAvJ,KAAA,CAAAoK,IAAA,CAAAd,CAAA,oBAAAC,CAAA,+CAAAc,IAAA,CAAAd,CAAA,IAAAW,iBAAA,CAAAZ,CAAA,EAAA9N,CAAA;AAAA,SAAA0O,kBAAAZ,CAAA,EAAA9N,CAAA,aAAAA,CAAA,IAAAA,CAAA,GAAA8N,CAAA,CAAAzZ,MAAA,MAAA2L,CAAA,GAAA8N,CAAA,CAAAzZ,MAAA,YAAAtB,CAAA,MAAAob,CAAA,GAAA3J,KAAA,CAAAxE,CAAA,GAAAjN,CAAA,GAAAiN,CAAA,EAAAjN,CAAA,IAAAob,CAAA,CAAApb,CAAA,IAAA+a,CAAA,CAAA/a,CAAA,UAAAob,CAAA;AAEgB;AAE7B,IAAImgB,KAAK,GAAG,CAAC;AACb,IAAIC,iBAAiB,GAAG,CAAC;AACzB,IAAIC,YAAY,GAAG,EAAE;AACrB,IAAIC,iBAAiB,GAAG,CAAC,CAAC;AAE1B,SAASC,kBAAkBA,CAAC5G,OAAO,EAAE;EACjC0G,YAAY,GAAGA,YAAY,CAAC7f,KAAK,CAAC,CAAC,EAAE8f,iBAAiB,GAAG,CAAC,CAAC;EAC3DD,YAAY,CAAC35B,IAAI,CAACizB,OAAO,CAAC5sB,KAAK,CAAC;EAChCuzB,iBAAiB,EAAE;AACvB;AACA,SAASE,SAASA,CAAC57B,CAAC,EAAE;EAClB,IAAI67B,MAAM;EACV,IAAI18B,MAAM,CAACi8B,KAAK,EAAE;IACdS,MAAM,GAAG77B,CAAC,CAACsS,OAAO;EACtB,CAAC,MAAM,IAAItS,CAAC,CAAC87B,KAAK,EAAE;IAChBD,MAAM,GAAG77B,CAAC,CAAC87B,KAAK;EACpB;EACA,OAAOD,MAAM;AACjB;AACA,IAAIE,UAAU,GAAG,SAAbA,UAAUA,CAAY/7B,CAAC,EAAE;EACzBw7B,iBAAiB,GAAGr8B,MAAM,CAACC,IAAI,CAACC,eAAe,CAAC28B,4BAA4B,IAAI,IAAI,CAACC,IAAI;EACzF,IAAIJ,MAAM,GAAGD,SAAS,CAAC57B,CAAC,CAAC;EACzB,IAAIA,CAAC,CAACk8B,OAAO,KAAKl8B,CAAC,CAACkI,GAAG,KAAK,GAAG,IAAIlI,CAAC,CAACkI,GAAG,KAAK,GAAG,CAAC,IAAI,IAAI,CAACC,KAAK,CAAC7G,MAAM,KAAK,GAAG,EAAE;IAC5EtB,CAAC,CAACkS,cAAc,CAAC,CAAC;IAClB,IAAIiqB,QAAQ,GAAG,IAAI,CAACC,cAAc;IAClC,IAAIC,MAAM,GAAG,IAAI,CAACC,YAAY;IAC9B,IAAI,CAACn0B,KAAK,GAAG,IAAI,CAACA,KAAK,CAACo0B,SAAS,CAAC,CAAC,EAAEJ,QAAQ,CAAC,GAAG,IAAI,CAACh0B,KAAK,CAACo0B,SAAS,CAACF,MAAM,CAAC;IAC7E,IAAI,CAACD,cAAc,GAAG,IAAI,CAACE,YAAY,GAAGH,QAAQ;IAClDV,YAAY,CAAC35B,IAAI,CAAC,IAAI,CAACqG,KAAK,CAAC;IAC7BuzB,iBAAiB,EAAE;EACvB;EACA;EACA,IAAI,IAAI,CAACvzB,KAAK,CAAC7G,MAAM,IAAI,GAAG,IAAIu6B,MAAM,KAAK,CAAC,IAAIA,MAAM,KAAK,EAAE,IAAIA,MAAM,KAAK,EAAE,IAAIA,MAAM,KAAK,EAAE,IAAIA,MAAM,KAAK,EAAE,IAAIA,MAAM,KAAK,EAAE,IAAIA,MAAM,KAAK,EAAE,EAAE;IAAE;IAClJ77B,CAAC,CAACmU,eAAe,CAAC,CAAC;IACnBnU,CAAC,CAACkS,cAAc,CAAC,CAAC;EACtB,CAAC,MAAM,IAAI2pB,MAAM,KAAK,EAAE,EAAE;IAAE;IACxB,IAAIN,KAAK,IAAIC,iBAAiB,EAAE;MAC5Bx7B,CAAC,CAACmU,eAAe,CAAC,CAAC;MACnBnU,CAAC,CAACkS,cAAc,CAAC,CAAC;IACtB,CAAC,MAAM;MACHqpB,KAAK,EAAE;IACX;EACJ;AACJ,CAAC;AACD,IAAIiB,gBAAgB,GAAG,SAAnBA,gBAAgBA,CAAA,EAAc;EAC9BjB,KAAK,GAAGkB,gBAAgB,CAAC,IAAI,CAACt0B,KAAK,CAAC;AACxC,CAAC;AACD,SAASu0B,qBAAqBA,CAAC3H,OAAO,EAAE4H,aAAa,EAAE;EACnD,IAAI1H,KAAK,GAAGF,OAAO,CAACqH,cAAc;EAClC,IAAIQ,GAAG,GAAG7H,OAAO,CAACuH,YAAY;EAC9B,IAAIO,SAAS,GAAGC,mBAAmB,CAAC/H,OAAO,CAAC5sB,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC;EAC9D,IAAI40B,IAAI,GAAG,CAAC;IACRC,UAAU,GAAG,EAAE;IACfC,SAAS,GAAG,GAAG;EACnB,IAAIC,aAAa,GAAGJ,mBAAmB,CAACH,aAAa,EAAE,GAAG,EAAE,IAAI,CAAC;EACjE,IAAI5H,OAAO,CAAC5sB,KAAK,CAAC7G,MAAM,IAAI,CAAC,IAAI47B,aAAa,IAAI,CAAC,EAAE;IACjDF,UAAU,GAAGL,aAAa,CAACrrB,IAAI,CAAC,CAAC,CAACirB,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC;IACnDU,SAAS,GAAGD,UAAU,CAAC17B,MAAM;EACjC,CAAC,MAAM,IAAIyzB,OAAO,CAAC5sB,KAAK,CAAC7G,MAAM,IAAI,CAAC,IAAI47B,aAAa,GAAG,CAAC,EAAE;IACvDF,UAAU,GAAGL,aAAa,CAACrrB,IAAI,CAAC,CAAC,CAACirB,SAAS,CAAC,CAAC,EAAE,GAAG,GAAIW,aAAa,GAAG,CAAE,CAAC;IACzED,SAAS,GAAGD,UAAU,CAAC17B,MAAM;EACjC,CAAC,MAAM,IAAIyzB,OAAO,CAAC5sB,KAAK,CAAC7G,MAAM,IAAI,CAAC,IAAIyzB,OAAO,CAAC5sB,KAAK,CAAC7G,MAAM,IAAI,GAAG,EAAE;IACjE,IAAI2zB,KAAK,IAAI,CAAC,IAAI2H,GAAG,IAAI7H,OAAO,CAAC5sB,KAAK,CAAC7G,MAAM,IAAI2zB,KAAK,IAAI2H,GAAG,IAAIC,SAAS,IAAI,CAAC,IAAIK,aAAa,IAAI,CAAC,EAAE;MACnGF,UAAU,GAAGL,aAAa,CAACrrB,IAAI,CAAC,CAAC,CAACirB,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC;MACnDU,SAAS,GAAGD,UAAU,CAAC17B,MAAM;IACjC,CAAC,MAAM,IAAI2zB,KAAK,IAAI,CAAC,IAAI2H,GAAG,IAAI7H,OAAO,CAAC5sB,KAAK,CAAC7G,MAAM,IAAI2zB,KAAK,IAAI2H,GAAG,IAAIC,SAAS,IAAI,CAAC,IAAIK,aAAa,GAAG,CAAC,EAAE;MACzGF,UAAU,GAAGL,aAAa,CAACr7B,MAAM,IAAI,GAAG,GAAGq7B,aAAa,GAAGA,aAAa,CAACrrB,IAAI,CAAC,CAAC,CAACirB,SAAS,CAAC,CAAC,EAAE,GAAG,GAAIW,aAAa,GAAG,CAAE,CAAC;MACvHD,SAAS,GAAGD,UAAU,CAAC17B,MAAM;IACjC,CAAC,MAAM,IAAI2zB,KAAK,IAAI2H,GAAG,IAAIC,SAAS,IAAI,CAAC,IAAIK,aAAa,IAAI,CAAC,EAAE;MAC7DH,IAAI,GAAG,GAAG,GAAGhI,OAAO,CAAC5sB,KAAK,CAAC7G,MAAM;MACjC07B,UAAU,GAAGjI,OAAO,CAAC5sB,KAAK,CAACo0B,SAAS,CAAC,CAAC,EAAEtH,KAAK,CAAC,GAAG0H,aAAa,CAACrrB,IAAI,CAAC,CAAC,CAACirB,SAAS,CAAC,CAAC,EAAEQ,IAAI,CAAC,GAAGhI,OAAO,CAAC5sB,KAAK,CAACo0B,SAAS,CAACK,GAAG,CAAC;MACvHK,SAAS,GAAGhI,KAAK,IAAI0H,aAAa,CAACrrB,IAAI,CAAC,CAAC,CAAChQ,MAAM,IAAIy7B,IAAI,GAAGA,IAAI,GAAGJ,aAAa,CAACrrB,IAAI,CAAC,CAAC,CAAChQ,MAAM,CAAC;IAClG,CAAC,MAAM,IAAI2zB,KAAK,IAAI2H,GAAG,IAAIC,SAAS,IAAI,CAAC,IAAIK,aAAa,GAAG,CAAC,EAAE;MAC5D,IAAIC,aAAa,GAAG,GAAG,GAAGpI,OAAO,CAAC5sB,KAAK,CAAC7G,MAAM;MAC9C,IAAI87B,cAAc,GAAGN,mBAAmB,CAACH,aAAa,CAACJ,SAAS,CAAC,CAAC,EAAEY,aAAa,CAAC,EAAEA,aAAa,EAAE,IAAI,CAAC;MACxGJ,IAAI,GAAGK,cAAc,IAAI,CAAC,GAAGD,aAAa,GAAGA,aAAa,GAAIN,SAAS,GAAG,CAAE;MAC5EG,UAAU,GAAGjI,OAAO,CAAC5sB,KAAK,CAACo0B,SAAS,CAAC,CAAC,EAAEtH,KAAK,CAAC,GAAG0H,aAAa,CAACrrB,IAAI,CAAC,CAAC,CAACirB,SAAS,CAAC,CAAC,EAAEQ,IAAI,CAAC,GAAGhI,OAAO,CAAC5sB,KAAK,CAACo0B,SAAS,CAACK,GAAG,CAAC;MACvHK,SAAS,GAAGhI,KAAK,IAAI0H,aAAa,CAACrrB,IAAI,CAAC,CAAC,CAAChQ,MAAM,IAAIy7B,IAAI,GAAGA,IAAI,GAAGJ,aAAa,CAACrrB,IAAI,CAAC,CAAC,CAAChQ,MAAM,CAAC;IAClG,CAAC,MAAM,IAAI2zB,KAAK,IAAI2H,GAAG,IAAIC,SAAS,GAAG,CAAC,IAAIK,aAAa,IAAI,CAAC,EAAE;MAC5DH,IAAI,GAAG,GAAG,GAAGhI,OAAO,CAAC5sB,KAAK,CAAC7G,MAAM;MACjC07B,UAAU,GAAGjI,OAAO,CAAC5sB,KAAK,CAACo0B,SAAS,CAAC,CAAC,EAAEtH,KAAK,CAAC,GAAG0H,aAAa,CAACrrB,IAAI,CAAC,CAAC,CAACirB,SAAS,CAAC,CAAC,EAAEQ,IAAI,CAAC,GAAGhI,OAAO,CAAC5sB,KAAK,CAACo0B,SAAS,CAACK,GAAG,CAAC;MACvHK,SAAS,GAAGhI,KAAK,IAAI0H,aAAa,CAACrrB,IAAI,CAAC,CAAC,CAAChQ,MAAM,IAAIy7B,IAAI,GAAGA,IAAI,GAAGJ,aAAa,CAACrrB,IAAI,CAAC,CAAC,CAAChQ,MAAM,CAAC;IAClG,CAAC,MAAM,IAAI2zB,KAAK,IAAI2H,GAAG,IAAIC,SAAS,GAAG,CAAC,IAAIK,aAAa,GAAG,CAAC,EAAE;MAC3D,IAAIG,YAAY,GAAGR,SAAS,GAAGrB,iBAAiB,IAAKqB,SAAS,GAAG,CAAC,IAAKrB,iBAAiB,GAAG,GAAG,GAAGzG,OAAO,CAAC5sB,KAAK,CAAC7G,MAAM,GAAG,GAAG,GAAGyzB,OAAO,CAAC5sB,KAAK,CAAC7G,MAAM,IAAIk6B,iBAAiB,IAAIqB,SAAS,GAAG,CAAC,CAAC,CAAC;MAC1L,IAAIO,eAAc,GAAGN,mBAAmB,CAACH,aAAa,CAACJ,SAAS,CAAC,CAAC,EAAEc,YAAY,CAAC,EAAEA,YAAY,EAAE,IAAI,CAAC;MACtG,IAAID,eAAc,IAAI,CAAC,EAAE;QACrBJ,UAAU,GAAGjI,OAAO,CAAC5sB,KAAK,CAACo0B,SAAS,CAAC,CAAC,EAAEtH,KAAK,CAAC,GAAG0H,aAAa,CAACrrB,IAAI,CAAC,CAAC,CAACirB,SAAS,CAAC,CAAC,EAAEc,YAAY,CAAC,GAAGtI,OAAO,CAAC5sB,KAAK,CAACo0B,SAAS,CAACK,GAAG,CAAC;QAC/HK,SAAS,GAAGhI,KAAK,IAAI0H,aAAa,CAACrrB,IAAI,CAAC,CAAC,CAAChQ,MAAM,IAAI+7B,YAAY,GAAGA,YAAY,GAAGV,aAAa,CAACrrB,IAAI,CAAC,CAAC,CAAChQ,MAAM,CAAC;MAClH;MACA,IAAI07B,UAAU,IAAI,EAAE,IAAKH,SAAS,GAAG1xB,IAAI,CAACmyB,IAAI,CAACF,eAAc,GAAG,CAAC,CAAC,GAAI5B,iBAAiB,EAAE;QACrFwB,UAAU,GAAGjI,OAAO,CAAC5sB,KAAK,CAACo0B,SAAS,CAAC,CAAC,EAAEtH,KAAK,CAAC,GAAG0H,aAAa,CAACrrB,IAAI,CAAC,CAAC,CAACirB,SAAS,CAAC,CAAC,EAAGc,YAAY,GAAGlyB,IAAI,CAACmyB,IAAI,CAACF,eAAc,GAAG,CAAC,CAAE,CAAC,GAAGrI,OAAO,CAAC5sB,KAAK,CAACo0B,SAAS,CAACK,GAAG,CAAC;QACjKK,SAAS,GAAGhI,KAAK,IAAIoI,YAAY,GAAGlyB,IAAI,CAACmyB,IAAI,CAACF,eAAc,GAAG,CAAC,CAAC,CAAC;MACtE,CAAC,MAAM,IAAIJ,UAAU,IAAI,EAAE,IAAKH,SAAS,GAAG1xB,IAAI,CAACmyB,IAAI,CAACF,eAAc,GAAG,CAAC,CAAC,IAAK5B,iBAAiB,EAAE;QAC7FwB,UAAU,GAAGjI,OAAO,CAAC5sB,KAAK,CAACo0B,SAAS,CAAC,CAAC,EAAEtH,KAAK,CAAC,GAAG0H,aAAa,CAACrrB,IAAI,CAAC,CAAC,CAACirB,SAAS,CAAC,CAAC,EAAEI,aAAa,CAACJ,SAAS,CAAC,CAAC,EAAEc,YAAY,CAAC,CAACzvB,OAAO,CAAC,MAAM,CAAC,CAAC,GAAGmnB,OAAO,CAAC5sB,KAAK,CAACo0B,SAAS,CAACK,GAAG,CAAC;QAC3KK,SAAS,GAAGhI,KAAK,GAAG0H,aAAa,CAACrrB,IAAI,CAAC,CAAC,CAAC1D,OAAO,CAAC,MAAM,CAAC;MAC5D;IACJ,CAAC,MAAM,IAAIqnB,KAAK,IAAI2H,GAAG,IAAIC,SAAS,IAAI,CAAC,IAAIK,aAAa,IAAI,CAAC,EAAE;MAC7DH,IAAI,GAAG,GAAG,GAAGhI,OAAO,CAAC5sB,KAAK,CAAC7G,MAAM,IAAIs7B,GAAG,GAAG3H,KAAK,CAAC;MACjD+H,UAAU,GAAGjI,OAAO,CAAC5sB,KAAK,CAACo0B,SAAS,CAAC,CAAC,EAAEtH,KAAK,CAAC,GAAG0H,aAAa,CAACrrB,IAAI,CAAC,CAAC,CAACirB,SAAS,CAAC,CAAC,EAAEQ,IAAI,CAAC,GAAGhI,OAAO,CAAC5sB,KAAK,CAACo0B,SAAS,CAACK,GAAG,CAAC;MACvHK,SAAS,GAAGhI,KAAK,IAAI0H,aAAa,CAACrrB,IAAI,CAAC,CAAC,CAAChQ,MAAM,IAAIy7B,IAAI,GAAGA,IAAI,GAAGJ,aAAa,CAACrrB,IAAI,CAAC,CAAC,CAAChQ,MAAM,CAAC;IAClG,CAAC,MAAM,IAAI2zB,KAAK,IAAI2H,GAAG,IAAIC,SAAS,IAAI,CAAC,IAAIK,aAAa,GAAG,CAAC,EAAE;MAC5D,IAAIC,cAAa,GAAG,GAAG,GAAGpI,OAAO,CAAC5sB,KAAK,CAAC7G,MAAM,IAAIs7B,GAAG,GAAG3H,KAAK,CAAC;MAC9D,IAAImI,gBAAc,GAAGN,mBAAmB,CAACH,aAAa,CAACJ,SAAS,CAAC,CAAC,EAAEY,cAAa,CAAC,EAAEA,cAAa,EAAE,IAAI,CAAC;MACxGJ,IAAI,GAAGK,gBAAc,IAAI,CAAC,GAAGD,cAAa,GAAGA,cAAa,GAAGhyB,IAAI,CAACmyB,IAAI,CAACT,SAAS,GAAG,CAAC,CAAC;MACrFG,UAAU,GAAGjI,OAAO,CAAC5sB,KAAK,CAACo0B,SAAS,CAAC,CAAC,EAAEtH,KAAK,CAAC,GAAG0H,aAAa,CAACrrB,IAAI,CAAC,CAAC,CAACirB,SAAS,CAAC,CAAC,EAAEQ,IAAI,CAAC,GAAGhI,OAAO,CAAC5sB,KAAK,CAACo0B,SAAS,CAACK,GAAG,CAAC;MACvHK,SAAS,GAAGhI,KAAK,IAAI0H,aAAa,CAACrrB,IAAI,CAAC,CAAC,CAAChQ,MAAM,IAAIy7B,IAAI,GAAGA,IAAI,GAAGJ,aAAa,CAACrrB,IAAI,CAAC,CAAC,CAAChQ,MAAM,CAAC;IAClG,CAAC,MAAM,IAAI2zB,KAAK,IAAI2H,GAAG,IAAIC,SAAS,GAAG,CAAC,IAAIK,aAAa,IAAI,CAAC,EAAE;MAC5DH,IAAI,GAAG,GAAG,GAAGhI,OAAO,CAAC5sB,KAAK,CAAC7G,MAAM,IAAIs7B,GAAG,GAAG3H,KAAK,CAAC;MACjD+H,UAAU,GAAGjI,OAAO,CAAC5sB,KAAK,CAACo0B,SAAS,CAAC,CAAC,EAAEtH,KAAK,CAAC,GAAG0H,aAAa,CAACrrB,IAAI,CAAC,CAAC,CAACirB,SAAS,CAAC,CAAC,EAAEQ,IAAI,CAAC,GAAGhI,OAAO,CAAC5sB,KAAK,CAACo0B,SAAS,CAACK,GAAG,CAAC;MACvHK,SAAS,GAAGhI,KAAK,IAAI0H,aAAa,CAACrrB,IAAI,CAAC,CAAC,CAAChQ,MAAM,IAAIy7B,IAAI,GAAGA,IAAI,GAAGJ,aAAa,CAACrrB,IAAI,CAAC,CAAC,CAAChQ,MAAM,CAAC;IAClG,CAAC,MAAM,IAAI2zB,KAAK,IAAI2H,GAAG,IAAIC,SAAS,GAAG,CAAC,IAAIK,aAAa,GAAG,CAAC,EAAE;MAC3D,IAAIK,mBAAmB,GAAGT,mBAAmB,CAAC/H,OAAO,CAAC5sB,KAAK,CAACo0B,SAAS,CAACtH,KAAK,EAAE2H,GAAG,CAAC,CAAC;MAClF,IAAIY,cAAc,GAAGX,SAAS,GAAGU,mBAAmB;MACpD,IAAIF,aAAY,GAAGG,cAAc,GAAGhC,iBAAiB,IAAKgC,cAAc,GAAG,CAAC,IAAKhC,iBAAiB,GAAG,GAAG,GAAGzG,OAAO,CAAC5sB,KAAK,CAAC7G,MAAM,IAAIs7B,GAAG,GAAG3H,KAAK,CAAC,GAAG,GAAG,GAAGF,OAAO,CAAC5sB,KAAK,CAAC7G,MAAM,IAAIs7B,GAAG,GAAG3H,KAAK,CAAC,IAAIuG,iBAAiB,IAAIgC,cAAc,GAAG,CAAC,CAAC,CAAC;MACzO,IAAIJ,gBAAc,GAAGN,mBAAmB,CAACH,aAAa,CAACJ,SAAS,CAAC,CAAC,EAAEc,aAAY,CAAC,EAAEA,aAAY,EAAE,IAAI,CAAC;MAEtG,IAAID,gBAAc,IAAI,CAAC,EAAG;QACtBJ,UAAU,GAAGjI,OAAO,CAAC5sB,KAAK,CAACo0B,SAAS,CAAC,CAAC,EAAEtH,KAAK,CAAC,GAAG0H,aAAa,CAACrrB,IAAI,CAAC,CAAC,CAACirB,SAAS,CAAC,CAAC,EAAEc,aAAY,CAAC,GAAGtI,OAAO,CAAC5sB,KAAK,CAACo0B,SAAS,CAACK,GAAG,CAAC;QAC/HK,SAAS,GAAGhI,KAAK,IAAI0H,aAAa,CAACrrB,IAAI,CAAC,CAAC,CAAChQ,MAAM,IAAI+7B,aAAY,GAAGA,aAAY,GAAGV,aAAa,CAACrrB,IAAI,CAAC,CAAC,CAAChQ,MAAM,CAAC;MAClH,CAAC,MAAM,IAAKk8B,cAAc,GAAGryB,IAAI,CAACmyB,IAAI,CAACF,gBAAc,GAAG,CAAC,CAAC,GAAI5B,iBAAiB,EAAE;QAC7EuB,IAAI,GAAGM,aAAY,GAAGlyB,IAAI,CAACmyB,IAAI,CAACF,gBAAc,GAAG,CAAC,CAAC;QACnDJ,UAAU,GAAGjI,OAAO,CAAC5sB,KAAK,CAACo0B,SAAS,CAAC,CAAC,EAAEtH,KAAK,CAAC,GAAG0H,aAAa,CAACrrB,IAAI,CAAC,CAAC,CAACirB,SAAS,CAAC,CAAC,EAAEQ,IAAI,CAAC,GAAGhI,OAAO,CAAC5sB,KAAK,CAACo0B,SAAS,CAACK,GAAG,CAAC;QACvHK,SAAS,GAAGhI,KAAK,IAAI0H,aAAa,CAACrrB,IAAI,CAAC,CAAC,CAAChQ,MAAM,IAAIy7B,IAAI,GAAGA,IAAI,GAAGJ,aAAa,CAACrrB,IAAI,CAAC,CAAC,CAAChQ,MAAM,CAAC;MAClG,CAAC,MAAM,IAAKk8B,cAAc,GAAGryB,IAAI,CAACmyB,IAAI,CAACF,gBAAc,GAAG,CAAC,CAAC,IAAK5B,iBAAiB,EAAE;QAC9EuB,IAAI,GAAGM,aAAY,GAAGD,gBAAc;QACpCJ,UAAU,GAAGjI,OAAO,CAAC5sB,KAAK,CAACo0B,SAAS,CAAC,CAAC,EAAEtH,KAAK,CAAC,GAAG0H,aAAa,CAACrrB,IAAI,CAAC,CAAC,CAACirB,SAAS,CAAC,CAAC,EAAEQ,IAAI,CAAC,GAAGhI,OAAO,CAAC5sB,KAAK,CAACo0B,SAAS,CAACK,GAAG,CAAC;QACvHK,SAAS,GAAGhI,KAAK,IAAI0H,aAAa,CAACrrB,IAAI,CAAC,CAAC,CAAChQ,MAAM,IAAIy7B,IAAI,GAAGA,IAAI,GAAGJ,aAAa,CAACrrB,IAAI,CAAC,CAAC,CAAChQ,MAAM,CAAC;MAClG;IACJ;EACJ;EACAm8B,kBAAkB,CAAC1I,OAAO,EAAEiI,UAAU,EAAEC,SAAS,CAAC;AACtD;AACA,SAASH,mBAAmBA,CAAC30B,KAAK,EAAEu1B,UAAU,EAAEC,IAAI,EAAE;EAClD,IAAId,SAAS,GAAG,CAAC;EACjB,IAAIpwB,CAAC,GAAG,CAAC;EAAC,IAAAyY,SAAA,GAAApK,0BAAA,CACK3S,KAAK;IAAAgd,KAAA;EAAA;IAApB,KAAAD,SAAA,CAAArgB,CAAA,MAAAsgB,KAAA,GAAAD,SAAA,CAAA9J,CAAA,IAAAC,IAAA,GAAsB;MAAA,IAAba,EAAE,GAAAiJ,KAAA,CAAAhd,KAAA;MACP,IAAIw1B,IAAI,KAAKzhB,EAAE,KAAK,IAAI,IAAIA,EAAE,KAAK,IAAI,CAAC,IAAIzP,CAAC,IAAIixB,UAAU,EAAE;QACzDb,SAAS,EAAE;MACf,CAAC,MAAM,IAAI,CAACc,IAAI,IAAIzhB,EAAE,KAAK,IAAI,IAAIzP,CAAC,IAAIixB,UAAU,EAAE;QAChDb,SAAS,EAAE;MACf;MACApwB,CAAC,EAAE;IACP;EAAC,SAAA5M,GAAA;IAAAqlB,SAAA,CAAAllB,CAAA,CAAAH,GAAA;EAAA;IAAAqlB,SAAA,CAAA5J,CAAA;EAAA;EACD,OAAOuhB,SAAS;AACpB;AACA,IAAIe,cAAc,GAAG,SAAjBA,cAAcA,CAAY59B,CAAC,EAAE;EAC7B,IAAI69B,aAAa;IACblB,aAAa,GAAG,EAAE;EACtB;EACA38B,CAAC,CAACmU,eAAe,CAAC,CAAC;EACnBnU,CAAC,CAACkS,cAAc,CAAC,CAAC;EAClB2rB,aAAa,GAAG79B,CAAC,CAAC69B,aAAa,IAAI1+B,MAAM,CAAC0+B,aAAa;EACvD,IAAIp/B,OAAA,CAAOo/B,aAAa,MAAKp6B,SAAS,EAAE;IACpCk5B,aAAa,GAAGkB,aAAa,CAACC,OAAO,CAAC,MAAM,CAAC;EACjD,CAAC,MAAM;IACH3K,SAAS,CAAC4K,SAAS,CAACC,QAAQ,CAAC,CAAC,CACzBr+B,IAAI,CAAC,UAAAs+B,IAAI,EAAI;MACVtB,aAAa,GAAGsB,IAAI;IACxB,CAAC,CAAC,CACDC,KAAK,CAAC,UAAAr+B,GAAG,EAAI;MACVuH,OAAO,CAAC5F,KAAK,CAAC,qCAAqC,EAAE3B,GAAG,CAAC;IAC7D,CAAC,CAAC;EACV;EACA,IAAI88B,aAAa,EAAE;IACfD,qBAAqB,CAAC,IAAI,EAAEC,aAAa,CAAC;EAC9C;AACJ,CAAC;AACD,SAASc,kBAAkBA,CAAC1I,OAAO,EAAEiI,UAAU,EAAEmB,aAAa,EAAE;EAC5D,IAAInB,UAAU,CAAC17B,MAAM,GAAG,GAAG,EAAE;IACzB07B,UAAU,GAAGA,UAAU,CAACT,SAAS,CAAC,CAAC,EAAE,GAAG,GAAIhiB,QAAQ,CAACuiB,mBAAmB,CAACE,UAAU,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,GAAG,CAAE,CAAC;EAC1G;EACA,IAAIoB,WAAW,GAAG3B,gBAAgB,CAACO,UAAU,CAAC;EAC9C,IAAIoB,WAAW,IAAI5C,iBAAiB,EAAE;IAClCD,KAAK,GAAG6C,WAAW;IACnBrJ,OAAO,CAAC5sB,KAAK,GAAG60B,UAAU;IAC1B;IACAjI,OAAO,CAACqH,cAAc,GAAGrH,OAAO,CAACuH,YAAY,GAAG6B,aAAa;IAC7D1C,YAAY,CAAC35B,IAAI,CAACizB,OAAO,CAAC5sB,KAAK,CAAC;IAChCuzB,iBAAiB,EAAE;EACvB,CAAC,MAAM,IAAI0C,WAAW,GAAG5C,iBAAiB,EAAE;IACxCzG,OAAO,CAAC5sB,KAAK,GAAG60B,UAAU,CACrBxrB,KAAK,CAAC,YAAY,CAAC,CACnBoK,KAAK,CAAC,CAAC,EAAE4f,iBAAiB,CAAC,CAC3B6C,IAAI,CAAC,KAAK,CAAC;IAChB5C,YAAY,CAAC35B,IAAI,CAACizB,OAAO,CAAC5sB,KAAK,CAAC;IAChCuzB,iBAAiB,EAAE;EACvB;AACJ;AACA,SAASe,gBAAgBA,CAAC6B,GAAG,EAAE;EAC3B,IAAIA,GAAG,EAAE;IACL,OAAOA,GAAG,CAAC9sB,KAAK,CAAC,YAAY,CAAC,CAAClQ,MAAM;EACzC;EACA,OAAO,CAAC;AACZ;AAEO,SAASi9B,kCAAkCA,CAAA,EAAG;EACjD,IAAIC,eAAe,GAAGt8B,QAAQ,CAACu8B,sBAAsB,CAAC,gCAAgC,CAAC;EACvF,IAAID,eAAe,EAAE;IACjB/sB,KAAK,CAACoK,IAAI,CAAC2iB,eAAe,CAAC,CAACj9B,OAAO,CAAC,UAASwzB,OAAO,EAAE;MAClD;MACA4G,kBAAkB,CAAC5G,OAAO,CAAC;MAE3BA,OAAO,CAACttB,gBAAgB,CAAC,SAAS,EAAEs0B,UAAU,CAAC;MAC/ChH,OAAO,CAACttB,gBAAgB,CAAC,OAAO,EAAE+0B,gBAAgB,CAAC;MACnDzH,OAAO,CAACttB,gBAAgB,CAAC,KAAK,EAAE+0B,gBAAgB,CAAC;MACjDzH,OAAO,CAACttB,gBAAgB,CAAC,OAAO,EAAEm2B,cAAc,CAAC;;MAEjD;MACA7I,OAAO,CAACttB,gBAAgB,CAAC,SAAS,EAAE,UAASzH,CAAC,EAAE;QAC5C,IAAIA,CAAC,CAACk8B,OAAO,KAAKl8B,CAAC,CAACkI,GAAG,KAAK,GAAG,IAAIlI,CAAC,CAACkI,GAAG,KAAK,GAAG,CAAC,EAAE;UAC/ClI,CAAC,CAACkS,cAAc,CAAC,CAAC;UAClB6iB,OAAO,CAAC2J,MAAM,CAAC,CAAC;QACpB;MACJ,CAAC,CAAC;MACF3J,OAAO,CAACttB,gBAAgB,CAAC,SAAS,EAAE,UAASzH,CAAC,EAAE;QAC5C,IAAIm8B,QAAQ,GAAGpH,OAAO,CAACqH,cAAc;QACrC,IAAIC,MAAM,GAAGtH,OAAO,CAACuH,YAAY;QACjC,IAAIvH,OAAO,IAAIA,OAAO,CAAC5sB,KAAK,EAAE;UAC1B,IAAIg0B,QAAQ,IAAI,CAAC,IAAIpH,OAAO,CAAC5sB,KAAK,CAAC7G,MAAM,IAAI+6B,MAAM,IAAIr8B,CAAC,CAACk8B,OAAO,KAAKl8B,CAAC,CAACkI,GAAG,KAAK,GAAG,IAAIlI,CAAC,CAACkI,GAAG,KAAK,GAAG,CAAC,EAAE;YAClGlI,CAAC,CAACkS,cAAc,CAAC,CAAC;YAClBupB,YAAY,CAAC35B,IAAI,CAACizB,OAAO,CAAC5sB,KAAK,CAAC;YAChCuzB,iBAAiB,EAAE;YACnBvI,SAAS,CAAC4K,SAAS,CAACC,QAAQ,CAAC,CAAC,CACzBr+B,IAAI,CAAC,UAAAs+B,IAAI,EAAI;cACVR,kBAAkB,CAAC1I,OAAO,EAAEkJ,IAAI,EAAE5B,MAAM,CAAC;YAC7C,CAAC,CAAC,CACD6B,KAAK,CAAC,UAAAr+B,GAAG,EAAI;cACVuH,OAAO,CAAC5F,KAAK,CAAC,qCAAqC,EAAE3B,GAAG,CAAC;YAC7D,CAAC,CAAC;UACV,CAAC,MAAM,IAAIs8B,QAAQ,IAAIE,MAAM,IAAKA,MAAM,GAAGF,QAAQ,IAAK,GAAG,IAAIpH,OAAO,CAAC5sB,KAAK,CAAC7G,MAAM,IAAI,GAAG,IAAItB,CAAC,CAACk8B,OAAO,KAAKl8B,CAAC,CAACkI,GAAG,KAAK,GAAG,IAAIlI,CAAC,CAACkI,GAAG,KAAK,GAAG,CAAC,EAAE;YACzIlI,CAAC,CAACkS,cAAc,CAAC,CAAC;YAClBihB,SAAS,CAAC4K,SAAS,CAACC,QAAQ,CAAC,CAAC,CACzBr+B,IAAI,CAAC,UAAAs+B,IAAI,EAAI;cACVvB,qBAAqB,CAAC3H,OAAO,EAAEkJ,IAAI,CAAC;YACxC,CAAC,CAAC,CACDC,KAAK,CAAC,UAAAr+B,GAAG,EAAI;cACVuH,OAAO,CAAC5F,KAAK,CAAC,qCAAqC,EAAE3B,GAAG,CAAC;YAC7D,CAAC,CAAC;UAEV;QACJ;MACJ,CAAC,CAAC;MACF;MACAk1B,OAAO,CAACttB,gBAAgB,CAAC,SAAS,EAAE,UAASzH,CAAC,EAAE;QAC5C,IAAIA,CAAC,CAACk8B,OAAO,KAAKl8B,CAAC,CAACkI,GAAG,KAAK,GAAG,IAAIlI,CAAC,CAACkI,GAAG,KAAK,GAAG,CAAC,EAAE;UAC/ClI,CAAC,CAACkS,cAAc,CAAC,CAAC;UAClB,IAAIwpB,iBAAiB,GAAG,CAAC,EAAE;YACvBA,iBAAiB,EAAE;YACnB3G,OAAO,CAAC5sB,KAAK,GAAGszB,YAAY,CAACC,iBAAiB,CAAC;UACnD;QACJ;MACJ,CAAC,CAAC;MACF3G,OAAO,CAACttB,gBAAgB,CAAC,SAAS,EAAE,UAASzH,CAAC,EAAE;QAC5C,IAAIA,CAAC,CAACk8B,OAAO,KAAKl8B,CAAC,CAACkI,GAAG,KAAK,GAAG,IAAIlI,CAAC,CAACkI,GAAG,KAAK,GAAG,CAAC,EAAE;UAC/ClI,CAAC,CAACkS,cAAc,CAAC,CAAC;UAClB,IAAIwpB,iBAAiB,GAAGD,YAAY,CAACn6B,MAAM,GAAG,CAAC,EAAE;YAC7Co6B,iBAAiB,EAAE;YACnB3G,OAAO,CAAC5sB,KAAK,GAAGszB,YAAY,CAACC,iBAAiB,CAAC;UACnD;QACJ;MACJ,CAAC,CAAC;MACF3G,OAAO,CAACttB,gBAAgB,CAAC,SAAS,EAAE,UAASzH,CAAC,EAAE;QAC5C,IAAIA,CAAC,CAACk8B,OAAO,KAAKl8B,CAAC,CAACkI,GAAG,KAAK,GAAG,IAAIlI,CAAC,CAACkI,GAAG,KAAK,GAAG,CAAC,EAAE;UAC/CirB,SAAS,CAAC4K,SAAS,CAACY,SAAS,CAAC5J,OAAO,CAAC5sB,KAAK,CAACo0B,SAAS,CAACxH,OAAO,CAACqH,cAAc,EAAErH,OAAO,CAACuH,YAAY,CAAC,CAAC;QACxG;MACJ,CAAC,CAAC;MACFvH,OAAO,CAACttB,gBAAgB,CAAC,OAAO,EAAE,YAAW;QACzCk0B,kBAAkB,CAAC5G,OAAO,CAAC;MAC/B,CAAC,CAAC;IACN,CAAC,CAAC;EACN;AACJ,C;;;;;;;;;;;;ACnRA;AAAA;AAAa;;AAEb;AACA;AACA;AACA;AACA;AACO,SAASlL,iBAAiBA,CAACnU,WAAW,EAAiC;EAAA,IAA/BkpB,YAAY,GAAArqB,SAAA,CAAAjT,MAAA,QAAAiT,SAAA,QAAA9Q,SAAA,GAAA8Q,SAAA,MAAG,cAAc;EACxE,EAAE,CAAChT,OAAO,CAACqH,IAAI,CAAC8M,WAAW,CAAChN,gBAAgB,4BAAA2F,MAAA,CAA2BuwB,YAAY,yBAAqB,CAAC,EAAE,UAASC,YAAY,EAAE;IAC9H1/B,MAAM,CAAC2/B,SAAS,CAACC,MAAM,CAACC,MAAM,CAACH,YAAY,CAAC;EAChD,CAAC,CAAC;AACN,C;;;;;;;;;;;;ACXA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAC4C;AACc;AACG;AAE7D,IAAInM,OAAO,GAAG;EACVuM,OAAO,EAAE;IACLpe,OAAO,EAAE,eAAe;IACxBra,IAAI,EAAE,SAANA,IAAIA,CAAW04B,KAAK,EAAE;MAClB,OAAO,IAAIC,6DAAM,CAAC;QACd12B,QAAQ,EAAEy2B,KAAK,IAAI,IAAI,CAACre,OAAO;QAC/B4H,WAAW,EAAE2W,2DAAgBA;MACjC,CAAC,CAAC;IACN;EACJ,CAAC;EACDC,SAAS,EAAE;IACPxe,OAAO,EAAE,cAAc;IACvBra,IAAI,EAAE,SAANA,IAAIA,CAAW04B,KAAK,EAAE;MAAA,IAAAI,KAAA;MAClB,OAAO,+OAA+E,CAAC3/B,IAAI,CAAC,UAAA4/B,QAAQ,EAAI;QACpG,OAAO,IAAIA,QAAQ,CAAC1e,OAAO,CAACqe,KAAK,IAAII,KAAI,CAACze,OAAO,CAAC;MACtD,CAAC,CAAC;IACN;EACJ,CAAC;EACD2e,YAAY,EAAE;IACV3e,OAAO,EAAE,sBAAsB;IAC/Bra,IAAI,EAAE,SAANA,IAAIA,CAAW04B,KAAK,EAAiB;MAAA,IAAAO,MAAA;MAAA,IAAfzyB,QAAQ,GAAAuH,SAAA,CAAAjT,MAAA,QAAAiT,SAAA,QAAA9Q,SAAA,GAAA8Q,SAAA,MAAG,CAAC,CAAC;MAC/B,OAAO,iQAAwF,CAAC5U,IAAI,CAAC,UAAA+/B,YAAY,EAAI;QACjH,OAAO,IAAIA,YAAY,CAAC7e,OAAO,CAAC;UAAC8e,QAAQ,EAAET,KAAK,IAAIO,MAAI,CAAC5e,OAAO;UAAE7T,QAAQ,EAAEA;QAAQ,CAAC,CAAC;MAC1F,CAAC,CAAC;IACN;EACJ,CAAC;EACD4yB,YAAY,EAAE;IACV/e,OAAO,EAAE,sBAAsB;IAC/Bra,IAAI,EAAE,SAANA,IAAIA,CAAW04B,KAAK,EAAE;MAAA,IAAAW,MAAA;MAClB,OAAO,iQAAwF,CAAClgC,IAAI,CAAC,UAAAmgC,YAAY,EAAI;QACjH,OAAO,IAAIA,YAAY,CAACjf,OAAO,CAAC;UAAC8e,QAAQ,EAAET,KAAK,IAAIW,MAAI,CAAChf;QAAO,CAAC,CAAC;MACtE,CAAC,CAAC;IACN;EACJ,CAAC;EACDkf,SAAS,EAAE;IACPlf,OAAO,EAAE,0BAA0B;IACnCra,IAAI,EAAE,SAANA,IAAIA,CAAA,EAAa;MACb,OAAO,8yBAAkF,CAAC7G,IAAI,CAAC,UAAAqgC,SAAS,EAAI;QACxG,OAAOvN,8DAAW,CAACuN,SAAS,CAACx5B,IAAI,CAAC;MACtC,CAAC,CAAC;IACN;EACJ,CAAC;EACDy5B,QAAQ,EAAE;IACNpf,OAAO,EAAE,yBAAyB;IAClCra,IAAI,EAAE,SAANA,IAAIA,CAAA,EAAa;MACb,OAAO,0yBAAgF,CAAC7G,IAAI,CAAC,UAAAugC,QAAQ,EAAI;QACrG,OAAOA,QAAQ,CAAC15B,IAAI,CAAC,CAAC;MAC1B,CAAC,CAAC;IACN;EACJ,CAAC;EACD25B,aAAa,EAAE;IACXtf,OAAO,EAAE,sBAAsB;IAC/Bra,IAAI,EAAE,SAANA,IAAIA,CAAW04B,KAAK,EAAE;MAAA,IAAAkB,MAAA;MAClB,OAAO,iQAAwF,CAACzgC,IAAI,CAAC,UAAA0gC,YAAY,EAAI;QACjH,OAAO,IAAIA,YAAY,CAACxf,OAAO,CAACqe,KAAK,IAAIkB,MAAI,CAACvf,OAAO,CAAC;MAC1D,CAAC,CAAC;IACN;EACJ,CAAC;EACDyf,eAAe,EAAE;IACbzf,OAAO,EAAE,yBAAyB;IAClCra,IAAI,EAAE,SAANA,IAAIA,CAAW04B,KAAK,EAAE;MAAA,IAAAqB,MAAA;MAClB,OAAO,6QAA8F,CAAC5gC,IAAI,CAAC,UAAA6gC,eAAe,EAAI;QAC1H,OAAOA,eAAe,CAACh6B,IAAI,CAAC;UAACm5B,QAAQ,EAAET,KAAK,IAAIqB,MAAI,CAAC1f;QAAO,CAAC,CAAC;MAClE,CAAC,CAAC;IACN;EACJ,CAAC;EACD4f,mBAAmB,EAAE;IACjB5f,OAAO,EAAE,6BAA6B;IACtCra,IAAI,EAAE,SAANA,IAAIA,CAAW04B,KAAK,EAAE;MAAA,IAAAwB,MAAA;MAClB,IAAIvhC,MAAM,CAACC,IAAI,CAACC,eAAe,CAACshC,kBAAkB,EAAE;QAChD,OAAO,8uBAAsG,CAAChhC,IAAI,CAAC,UAAAihC,mBAAmB,EAAI;UACtI,OAAOA,mBAAmB,CAACp6B,IAAI,CAAC;YAACm5B,QAAQ,EAAET,KAAK,IAAIwB,MAAI,CAAC7f;UAAO,CAAC,CAAC;QACtE,CAAC,CAAC;MACN;IACJ;EACJ,CAAC;EACDggB,WAAW,EAAE;IACThgB,OAAO,EAAE,qBAAqB;IAC9Bra,IAAI,EAAE,SAANA,IAAIA,CAAW04B,KAAK,EAAE;MAAA,IAAA4B,MAAA;MAClB,OAAO,szBAAsF,CAACnhC,IAAI,CAAC,UAAAohC,WAAW,EAAI;QAC9G,OAAO,IAAIA,WAAW,CAAClgB,OAAO,CAAC;UAAC8e,QAAQ,EAAET,KAAK,IAAI4B,MAAI,CAACjgB;QAAO,CAAC,CAAC;MACrE,CAAC,CAAC;IACN;EACJ,CAAC;EACDmgB,oBAAoB,EAAE;IAClBngB,OAAO,EAAE,0BAA0B;IACnCra,IAAI,EAAE,SAANA,IAAIA,CAAA,EAAa;MACb,OAAO,6MAAqC,CAAC7G,IAAI,CAAC,UAAAqhC,oBAAoB,EAAI;QACtE,OAAO,IAAIA,oBAAoB,CAACC,mBAAmB,CAAC,CAAC;MACzD,CAAC,CAAC;IACN;EACJ,CAAC;EACDC,uBAAuB,EAAE;IACrBrgB,OAAO,EAAE,yCAAyC;IAClDra,IAAI,EAAE,SAANA,IAAIA,CAAA,EAAa;MACb,OAAO,2NAA4C,CAAC7G,IAAI,CAAC,UAAAuhC,uBAAuB,EAAI;QAChF,OAAO,IAAIA,uBAAuB,CAACC,2BAA2B,CAAC,CAAC;MACpE,CAAC,CAAC;IACN;EACJ,CAAC;EACDC,oBAAoB,EAAE;IAClBvgB,OAAO,EAAE,0BAA0B;IACnCra,IAAI,EAAE,SAANA,IAAIA,CAAA,EAAa;MACb,OAAO,6MAAqC,CAAC7G,IAAI,CAAC,UAAAyhC,oBAAoB,EAAI;QACtE,OAAO,IAAIA,oBAAoB,CAACC,IAAI,CAAC,CAAC;MAC1C,CAAC,CAAC;IACN;EACJ,CAAC;EACDC,QAAQ,EAAE;IACNzgB,OAAO,EAAE,kBAAkB;IAC3Bra,IAAI,EAAE,SAANA,IAAIA,CAAW04B,KAAK,EAAE;MAAA,IAAAqC,MAAA;MAClB,OAAO,uYAAgF,CAAC5hC,IAAI,CAAC,UAAA6hC,QAAQ,EAAI;QACrG,OAAOA,QAAQ,CAACh7B,IAAI,CAAC;UAACm5B,QAAQ,EAAET,KAAK,IAAIqC,MAAI,CAAC1gB;QAAO,CAAC,CAAC;MAC3D,CAAC,CAAC;IACN;EACJ,CAAC;EACD4gB,aAAa,EAAE;IACX5gB,OAAO,EAAE,uBAAuB;IAChCra,IAAI,EAAE,SAANA,IAAIA,CAAW04B,KAAK,EAAE;MAAA,IAAAwC,MAAA;MAClB,OAAO,oXAA0F,CAAC/hC,IAAI,CAAC,UAAAgiC,aAAa,EAAI;QACpH,OAAOA,aAAa,CAACn7B,IAAI,CAAC;UAACm5B,QAAQ,EAAET,KAAK,IAAIwC,MAAI,CAAC7gB;QAAO,CAAC,CAAC;MAChE,CAAC,CAAC;IACN;EACJ,CAAC;EACD+gB,MAAM,EAAE;IACJ/gB,OAAO,EAAE,cAAc;IACvBra,IAAI,EAAE,SAANA,IAAIA,CAAW04B,KAAK,EAAE;MAAA,IAAA2C,OAAA;MAClB,OAAO,iOAAwE,CAACliC,IAAI,CAAC,UAAAmiC,KAAK,EAAI;QAC1F,OAAO,IAAIA,KAAK,CAACjhB,OAAO,CAACqe,KAAK,IAAI2C,OAAI,CAAChhB,OAAO,CAAC;MACnD,CAAC,CAAC;IACN;EACJ,CAAC;EACDkhB,YAAY,EAAE;IACVlhB,OAAO,EAAE,gBAAgB;IACzBra,IAAI,EAAE,SAANA,IAAIA,CAAW04B,KAAK,EAAEt4B,OAAO,EAAE;MAAA,IAAAo7B,OAAA;MAC3B,OAAO,4iBAAwF,CAACriC,IAAI,CAAC,UAAAsiC,YAAY,EAAI;QACjH,OAAOA,YAAY,CAACz7B,IAAI,CAAC04B,KAAK,IAAI8C,OAAI,CAACnhB,OAAO,EAAEja,OAAO,CAAC;MAC5D,CAAC,CAAC;IACN;EACJ,CAAC;EACDs7B,WAAW,EAAE;IACTrhB,OAAO,EAAE,qBAAqB;IAC9Bra,IAAI,EAAE,SAANA,IAAIA,CAAW04B,KAAK,EAAE;MAAA,IAAAiD,OAAA;MAClB,OAAO,mZAAsF,CAACxiC,IAAI,CAAC,UAAAyiC,WAAW,EAAI;QAC9G,OAAO,IAAIA,WAAW,CAACvhB,OAAO,CAACqe,KAAK,IAAIiD,OAAI,CAACthB,OAAO,CAAC;MACzD,CAAC,CAAC;IACN;EACJ,CAAC;EACDwhB,UAAU,EAAE;IACRxhB,OAAO,EAAE,oBAAoB;IAC7Bra,IAAI,EAAE,SAANA,IAAIA,CAAW04B,KAAK,EAAE;MAAA,IAAAoD,OAAA;MAClB,OAAO,yPAAoF,CAAC3iC,IAAI,CAAC,UAAA4iC,UAAU,EAAI;QAC3G,OAAO,IAAIA,UAAU,CAAC1hB,OAAO,CAAC;UAAC8e,QAAQ,EAAET,KAAK,IAAIoD,OAAI,CAACzhB;QAAO,CAAC,CAAC;MACpE,CAAC,CAAC;IACN;EACJ,CAAC;EACD2hB,WAAW,EAAE;IACT3hB,OAAO,EAAE,qBAAqB;IAC9Bra,IAAI,EAAE,SAANA,IAAIA,CAAW04B,KAAK,EAAE;MAAA,IAAAuD,OAAA;MAClB,OAAO,6NAAsE,CAAC9iC,IAAI,CAAC,UAAA+iC,IAAI,EAAI;QACvF,OAAOA,IAAI,CAACl8B,IAAI,CAAC;UAACm5B,QAAQ,EAAET,KAAK,IAAIuD,OAAI,CAAC5hB;QAAO,CAAC,CAAC;MACvD,CAAC,CAAC;IACN;EACJ,CAAC;EACD8hB,mBAAmB,EAAE;IACjB9hB,OAAO,EAAE,6BAA6B;IACtCra,IAAI,EAAE,SAANA,IAAIA,CAAW04B,KAAK,EAAE;MAAA,IAAA0D,OAAA;MAClB,IAAIzjC,MAAM,CAACC,IAAI,CAACC,eAAe,CAACwjC,0BAA0B,EAAE;QACxD,OAAO,sdAAsG,CAACljC,IAAI,CAAC,UAAAmjC,mBAAmB,EAAI;UACtI,OAAOA,mBAAmB,CAACt8B,IAAI,CAAC;YAACm5B,QAAQ,EAAET,KAAK,IAAI0D,OAAI,CAAC/hB;UAAO,CAAC,CAAC;QACtE,CAAC,CAAC;MACN;IACJ;EACJ,CAAC;EACDkiB,iBAAiB,EAAE;IACfliB,OAAO,EAAE,2BAA2B;IACpCra,IAAI,EAAE,SAANA,IAAIA,CAAW04B,KAAK,EAAE;MAAA,IAAA8D,OAAA;MAClB,OAAO,oYAAkG,CAACrjC,IAAI,CAAC,UAAAsjC,iBAAiB,EAAI;QAChIppB,oFAAkB,CAACqlB,KAAK,IAAI8D,OAAI,CAACniB,OAAO,EAAE,UAACvR,EAAE;UAAA,OAAK,IAAI2zB,iBAAiB,CAACpiB,OAAO,CAACvR,EAAE,CAAC;QAAA,EAAC;MACxF,CAAC,CAAC;IACN;EACJ,CAAC;EACD4zB,mBAAmB,EAAE;IACjBriB,OAAO,EAAE,6BAA6B;IACtCra,IAAI,EAAE,SAANA,IAAIA,CAAW04B,KAAK,EAAE;MAAA,IAAAiE,OAAA;MAClB,IAAIhkC,MAAM,CAACC,IAAI,CAACC,eAAe,CAAC+jC,0BAA0B,EAAE;QACxD,OAAO,qRAAsG,CAACzjC,IAAI,CAAC,UAAA0jC,eAAe,EAAI;UAClI,OAAOA,eAAe,CAAC78B,IAAI,CAAC;YAACm5B,QAAQ,EAAET,KAAK,IAAIiE,OAAI,CAACtiB;UAAO,CAAC,CAAC;QAClE,CAAC,CAAC;MACN;IACJ;EACJ,CAAC;EACDyiB,cAAc,EAAE;IACZziB,OAAO,EAAE,uBAAuB;IAChCra,IAAI,EAAE,SAANA,IAAIA,CAAW04B,KAAK,EAAE;MAAA,IAAAqE,OAAA;MAClB,OAAO,yQAA4F,CAAC5jC,IAAI,CAAC,UAAA6jC,cAAc,EAAI;QACvH,OAAO,IAAIA,cAAc,CAAC3iB,OAAO,CAACqe,KAAK,IAAIqE,OAAI,CAAC1iB,OAAO,CAAC;MAC5D,CAAC,CAAC;IACN;EACJ,CAAC;EACDqN,QAAQ,EAAE;IACNrN,OAAO,EAAE,iBAAiB;IAC1Bra,IAAI,EAAE,SAANA,IAAIA,CAAW04B,KAAK,EAAEt4B,OAAO,EAAE;MAAA,IAAA68B,OAAA;MAC3B,OAAO,qQAA0F,CAAC9jC,IAAI,CAAC,UAAA+jC,aAAa,EAAI;QACpH,IAAI98B,OAAO,EAAE;UACT,IAAI5H,MAAM,GAAG4H,OAAO,CAAC5H,MAAM,IAAI,UAAU;UAEzC,OAAO0kC,aAAa,CAAC7iB,OAAO,CAAC7hB,MAAM,CAAC,CAAC4H,OAAO,CAACywB,UAAU,EAAEzwB,OAAO,CAAC0wB,WAAW,CAAC;QACjF,CAAC,MAAM;UACH,OAAO,IAAIoM,aAAa,CAAC7iB,OAAO,CAAC;YAAC8e,QAAQ,EAAET,KAAK,IAAIuE,OAAI,CAAC5iB;UAAO,CAAC,CAAC;QACvE;MACJ,CAAC,CAAC;IACN;EACJ,CAAC;EACD8iB,YAAY,EAAE;IACV9iB,OAAO,EAAE,gCAAgC;IACzCra,IAAI,EAAE,SAANA,IAAIA,CAAW04B,KAAK,EAAE;MAAA,IAAA0E,OAAA;MAClB,OAAO,iQAAwF,CAACjkC,IAAI,CAAC,UAAAkkC,YAAY,EAAI;QACjH,OAAOA,YAAY,CAACr9B,IAAI,CAAC;UAACm5B,QAAQ,EAAET,KAAK,IAAI0E,OAAI,CAAC/iB;QAAO,CAAC,CAAC;MAC/D,CAAC,CAAC;IACN;EACJ,CAAC;EACDijB,SAAS,EAAE;IACPjjB,OAAO,EAAE,mBAAmB;IAC5Bra,IAAI,EAAE,SAANA,IAAIA,CAAW04B,KAAK,EAAE;MAAA,IAAA6E,OAAA;MAClB,OAAO,qPAAkF,CAACpkC,IAAI,CAAC,UAAAqkC,SAAS,EAAI;QACxG,OAAOA,SAAS,CAACx9B,IAAI,CAAC;UAACm5B,QAAQ,EAAET,KAAK,IAAI6E,OAAI,CAACljB;QAAO,CAAC,CAAC;MAC5D,CAAC,CAAC;IACN;EACJ,CAAC;EACDojB,WAAW,EAAE;IACTpjB,OAAO,EAAE,sBAAsB;IAC/Bra,IAAI,EAAE,SAANA,IAAIA,CAAW04B,KAAK,EAAE;MAAA,IAAAgF,OAAA;MAClB,OAAO,6PAAsF,CAACvkC,IAAI,CAAC,UAAAwkC,WAAW,EAAI;QAC9G,OAAO,IAAIA,WAAW,CAACtjB,OAAO,CAACqe,KAAK,IAAIgF,OAAI,CAACrjB,OAAO,CAAC;MACzD,CAAC,CAAC;IACN;EACJ,CAAC;EACDujB,YAAY,EAAE;IACVvjB,OAAO,EAAE,sBAAsB;IAC/Bra,IAAI,EAAE,SAANA,IAAIA,CAAW04B,KAAK,EAAE;MAAA,IAAAmF,OAAA;MAClB,OAAO,iQAAwF,CAAC1kC,IAAI,CAAC,UAAA2kC,YAAY,EAAI;QACjH,OAAOA,YAAY,CAAC99B,IAAI,CAAC;UAACm5B,QAAQ,EAAET,KAAK,IAAImF,OAAI,CAACxjB;QAAO,CAAC,CAAC;MAC/D,CAAC,CAAC;IACN;EACJ,CAAC;EACDS,eAAe,EAAE;IACbT,OAAO,EAAE,uBAAuB;IAChCra,IAAI,EAAE,SAANA,IAAIA,CAAA,EAAa;MACb,OAAO,6QAA8F,CAAC7G,IAAI,CAAC,UAAA4kC,eAAe,EAAI;QAC1H,OAAO9R,8DAAW,CAAC8R,eAAe,CAAC/9B,IAAI,CAAC;MAC5C,CAAC,CAAC;IACN;EACJ,CAAC;EACDg+B,gBAAgB,EAAE;IACd3jB,OAAO,EAAE,0BAA0B;IACnCra,IAAI,EAAE,SAANA,IAAIA,CAAW04B,KAAK,EAAE;MAAA,IAAAuF,OAAA;MAClB,OAAO,iRAAgG,CAAC9kC,IAAI,CAAC,UAAA+kC,gBAAgB,EAAI;QAC7H7qB,oFAAkB,CAACqlB,KAAK,IAAIuF,OAAI,CAAC5jB,OAAO,EAAE,UAACvR,EAAE;UAAA,OAAK,IAAIo1B,gBAAgB,CAAC7jB,OAAO,CAACvR,EAAE,CAAC;QAAA,EAAC;MACvF,CAAC,CAAC;IACN;EACJ,CAAC;EACDq1B,cAAc,EAAE;IACZ9jB,OAAO,EAAE,yBAAyB;IAClCra,IAAI,EAAE,SAANA,IAAIA,CAAW04B,KAAK,EAAE;MAAA,IAAA0F,OAAA;MAClB,OAAO,6QAA8F,CAACjlC,IAAI,CAAC,UAAAklC,cAAc,EAAI;QACzHhrB,oFAAkB,CAACqlB,KAAK,IAAI0F,OAAI,CAAC/jB,OAAO,EAAE,UAACvR,EAAE;UAAA,OAAK,IAAIu1B,cAAc,CAAChkB,OAAO,CAACvR,EAAE,CAAC;QAAA,EAAC;MACrF,CAAC,CAAC;IACN;EACJ,CAAC;EACDw1B,OAAO,EAAE;IACLjkB,OAAO,EAAE,gBAAgB;IACzBra,IAAI,EAAE,SAANA,IAAIA,CAAA,EAAa;MACb,OAAO,iMAA+B,CAAC7G,IAAI,CAAC,UAAAmlC,OAAO,EAAI;QACnD,OAAO,IAAIA,OAAO,CAACC,WAAW,CAAC,CAAC;MACpC,CAAC,CAAC;IACN;EACJ,CAAC;EACDC,0BAA0B,EAAE;IACxBnkB,OAAO,EAAE,qCAAqC;IAC9Cra,IAAI,EAAE,SAANA,IAAIA,CAAA,EAAa;MACb,OAAO,0tBAA2F,CAAC7G,IAAI,CAAC,UAAAslC,oBAAoB,EAAI;QAC5H,OAAO,IAAIA,oBAAoB,CAACpkB,OAAO,CAAC,CAAC;MAC7C,CAAC,CAAC;IACN;EACJ,CAAC;EACDqkB,SAAS,EAAE;IACPrkB,OAAO,EAAE,mBAAmB;IAC5Bra,IAAI,EAAE,SAANA,IAAIA,CAAA,EAAa;MACb,OAAO,yOAA2E,CAAC7G,IAAI,CAAC,UAAAulC,SAAS,EAAI;QACjG,OAAO,IAAIA,SAAS,CAACC,aAAa,CAAC,CAAC;MACxC,CAAC,CAAC;IACN;EACJ,CAAC;EACDC,cAAc,EAAE;IACZvkB,OAAO,EAAE,2BAA2B;IACpCra,IAAI,EAAE,SAANA,IAAIA,CAAA,EAAa;MACb,OAAO,6PAAqF,CAAC7G,IAAI,CAAC,UAAAylC,cAAc,EAAI;QAChH,OAAO,IAAIA,cAAc,CAACC,kBAAkB,CAAC,CAAC;MAClD,CAAC,CAAC;IACN;EACJ;AACJ,CAAC;AAEc3S,sEAAO,E;;;;;;;;;;;;ACzTtB;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEwC;AAEzB;EACX4S,UAAU,EAAE;IACRzkB,OAAO,EAAE,iCAAiC;IAC1Cra,IAAI,EAAE,SAANA,IAAIA,CAAA,EAAa;MACb,OAAO,yNAAiE,CAAC7G,IAAI,CAAC,UAAS4lC,UAAU,EAAE;QAC/F,OAAOA,UAAU,CAAC1kB,OAAO,CAAC,CAAC;MAC/B,CAAC,CAAC;IACN;EACJ,CAAC;EACD2kB,MAAM,EAAE;IACJ3kB,OAAO,EAAE,6BAA6B;IACtCra,IAAI,EAAE,SAANA,IAAIA,CAAA,EAAa;MACb,OAAO,uKAAyD,CAAC7G,IAAI,CAAC,UAAS8lC,MAAM,EAAE;QACnF,OAAOhT,8DAAW,CAACgT,MAAM,CAAC5kB,OAAO,CAAC;MACtC,CAAC,CAAC;IACN;EACJ,CAAC;EACD6kB,OAAO,EAAE;IACL7kB,OAAO,EAAE,8BAA8B;IACvCra,IAAI,EAAE,SAANA,IAAIA,CAAA,EAAa;MACb,OAAO,w9BAA2D,CAAC7G,IAAI,CAAC,UAASgmC,OAAO,EAAE;QACtF,OAAOlT,8DAAW,CAACkT,OAAO,CAAC9kB,OAAO,CAAC;MACvC,CAAC,CAAC;IACN;EACJ,CAAC;EACD+kB,IAAI,EAAE;IACF/kB,OAAO,EAAE,2BAA2B;IACpCra,IAAI,EAAE,SAANA,IAAIA,CAAA,EAAa;MACb,OAAO,+gCAAqD,CAAC7G,IAAI,CAAC,UAASkmC,IAAI,EAAE;QAC7E,OAAOpT,8DAAW,CAACoT,IAAI,CAAChlB,OAAO,CAAC;MACpC,CAAC,CAAC;IACN;EACJ,CAAC;EACDilB,OAAO,EAAE;IACLjlB,OAAO,EAAE,yEAAyE;IAClFra,IAAI,EAAE,SAANA,IAAIA,CAAA,EAAa;MACb,OAAO,kYAA2D,CAAC7G,IAAI,CAAC,UAASomC,OAAO,EAAE;QACtF,OAAOtT,8DAAW,CAACsT,OAAO,CAACllB,OAAO,CAAC;MACvC,CAAC,CAAC;IACN;EACJ,CAAC;EACDmlB,QAAQ,EAAE;IACNnlB,OAAO,EAAE,gCAAgC;IACzCra,IAAI,EAAE,SAANA,IAAIA,CAAA,EAAa;MACb,OAAO,2yBAA6D,CAAC7G,IAAI,CAAC,UAASsmC,QAAQ,EAAE;QACzF,OAAOxT,8DAAW,CAACwT,QAAQ,CAACplB,OAAO,CAAC;MACxC,CAAC,CAAC;IACN;EACJ,CAAC;EACDqlB,QAAQ,EAAE;IACNrlB,OAAO,EAAE,kGAAkG;IAC3Gra,IAAI,EAAE,SAANA,IAAIA,CAAA,EAAa;MACb,OAAO,uWAA6D,CAAC7G,IAAI,CAAC,UAASwmC,QAAQ,EAAE;QACzF,OAAO1T,8DAAW,CAAC0T,QAAQ,CAACtlB,OAAO,CAAC;MACxC,CAAC,CAAC;IACN;EACJ,CAAC;EACDulB,YAAY,EAAE;IACVvlB,OAAO,EAAE,+BAA+B;IACxCra,IAAI,EAAE,SAANA,IAAIA,CAAA,EAAa;MACb,OAAO,+NAAuE,CAAC7G,IAAI,CAAC,UAAS0mC,YAAY,EAAE;QACvG,OAAO5T,8DAAW,CAAC4T,YAAY,CAACxlB,OAAO,CAAC;MAC5C,CAAC,CAAC;IACN;EACJ,CAAC;EACDylB,YAAY,EAAE;IACVzlB,OAAO,EAAE,kCAAkC;IAC3Cra,IAAI,EAAE,SAANA,IAAIA,CAAA,EAAa;MACb,OAAO,6OAA2E,CAAC7G,IAAI,CAAC,UAAS4mC,YAAY,EAAE;QAC3G,OAAO9T,8DAAW,CAAC8T,YAAY,CAAC1lB,OAAO,CAAC;MAC5C,CAAC,CAAC;IACN;EACJ,CAAC;EACD2lB,oBAAoB,EAAE;IAClB3lB,OAAO,EAAE,mCAAmC;IAC5Cra,IAAI,EAAE,SAANA,IAAIA,CAAA,EAAa;MACb,OAAO,6PAAsF,CAAC7G,IAAI,CAAC,UAAS8mC,gBAAgB,EAAE;QAC1H,OAAOhU,8DAAW,CAACgU,gBAAgB,CAAC5lB,OAAO,CAAC;MAChD,CAAC,CAAC;IACN;EACJ,CAAC;EACD6lB,OAAO,EAAE;IACL7lB,OAAO,EAAE,mCAAmC;IAC5Cra,IAAI,EAAE,SAANA,IAAIA,CAAA,EAAa;MACb,OAAO,6MAA2D,CAAC7G,IAAI,CAAC,UAASgnC,OAAO,EAAE;QACtF,OAAOA,OAAO,CAAC9lB,OAAO,CAAC,CAAC;MAC5B,CAAC,CAAC;IACN;EACJ,CAAC;EACD+lB,gBAAgB,EAAE;IACd/lB,OAAO,EAAE,mDAAmD;IAC5Dra,IAAI,EAAE,SAANA,IAAIA,CAAA,EAAa;MACb,OAAO,mOAAsE,CAAC7G,IAAI,CAAC,UAASknC,gBAAgB,EAAE;QAC1G,OAAOpU,8DAAW,CAACoU,gBAAgB,CAAChmB,OAAO,CAAC;MAChD,CAAC,CAAC;IACN;EACJ,CAAC;EACDimB,YAAY,EAAE;IACVjmB,OAAO,EAAE,4DAA4D;IACrEra,IAAI,EAAE,SAANA,IAAIA,CAAA,EAAa;MACb,OAAO,+NAAuE,CAAC7G,IAAI,CAAC,UAASonC,YAAY,EAAE;QACvG,OAAOtU,8DAAW,CAACsU,YAAY,CAAClmB,OAAO,CAAC;MAC5C,CAAC,CAAC;IACN;EACJ,CAAC;EACDmmB,WAAW,EAAE;IACTnmB,OAAO,EAAE,6CAA6C;IACtDra,IAAI,EAAE,SAANA,IAAIA,CAAA,EAAa;MACb,OAAO,6PAAmF,CAAC7G,IAAI,CAAC,UAASsnC,WAAW,EAAE;QAClH,OAAOxU,8DAAW,CAACwU,WAAW,CAACpmB,OAAO,CAAC;MAC3C,CAAC,CAAC;IACN;EACJ,CAAC;EACDqmB,eAAe,EAAE;IACbrmB,OAAO,EAAE,qCAAqC;IAC9Cra,IAAI,EAAE,SAANA,IAAIA,CAAA,EAAa;MACb,OAAO,iPAAgF,CAAC7G,IAAI,CAAC,UAASunC,eAAe,EAAE;QACnH,OAAOA,eAAe,CAACrmB,OAAO,CAAC,CAAC;MACpC,CAAC,CAAC;IACN;EACJ;AACJ,CAAC,E;;;;;;;;;;;;ACnID;AAAA;AAAA;AAAA;AAAA;AACA;AACA;;AAEA,IACIsmB,MAAM,GAAGhU,SAAS,CAACiU,UAAU,CAACx5B,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;EACvDy5B,kBAAkB,GAAGloC,MAAM,CAACuI,UAAU,CAAC,6BAA6B,CAAC,CAACG,OAAO;AAE1E,SAASy/B,cAAcA,CAAA,EAAG;EAC7B;AACJ;AACA;EACI,IAAK,CAAC,CAACnoC,MAAM,CAACooC,oBAAoB,IAAI,CAAC,CAACrlC,QAAQ,CAACslC,YAAY,IAAKL,MAAM,EAAE;IACtE;AACR;AACA;IACQ,iLAA2D,CAACxnC,IAAI,CAAC,UAAC8nC,WAAW,EAAK;MAC9EA,WAAW,CAAC5mB,OAAO,CAAC,CAAC;IACzB,CAAC,CAAC,CAACqd,KAAK,CAAC,UAAAr+B,GAAG,EAAI;MACZuH,OAAO,CAAC5F,KAAK,CAAC,+BAA+B,GAAG3B,GAAG,CAAC;IACxD,CAAC,CAAC;;IAEF;IACA;IACA,IAAI,CAACwnC,kBAAkB,EAAE;MACrB;AACZ;AACA;AACA;AACA;MACY,6NAAgF,CAAC1nC,IAAI,CAAC,UAAC+nC,eAAe,EAAK;QACvG,IAAIC,SAAS,GAAGzlC,QAAQ,CAACwG,gBAAgB,CAAC,KAAK,CAAC;UAC5Ck/B,WAAW,GAAG1lC,QAAQ,CAACwG,gBAAgB,CAAC,gDAAgD,CAAC;QAE7Fg/B,eAAe,CAAC7mB,OAAO,CAAC8mB,SAAS,EAAE;UAACE,OAAO,EAAE;QAAI,CAAC,CAAC;;QAEnD;QACA,EAAE,CAACtmC,OAAO,CAACqH,IAAI,CAACg/B,WAAW,EAAE,UAAA/I,YAAY;UAAA,OAAIA,YAAY,CAAC/4B,SAAS,CAACC,GAAG,CAAC,YAAY,CAAC;QAAA,EAAC;MAC1F,CAAC,CAAC;IACN;EACJ;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS+hC,YAAYA,CAAA,EAAG;EAC3B,IAAI,CAACC,MAAM,CAACjpC,SAAS,CAACsd,MAAM,EAAE;IAC1B2rB,MAAM,CAACjpC,SAAS,CAACsd,MAAM,GAAG,YAAW;MACjC,IAAI4rB,MAAM,GAAG,IAAI;MAEjB,KAAK,IAAIv7B,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG8H,SAAS,CAACjT,MAAM,EAAEmL,CAAC,EAAE,EAAE;QACvCu7B,MAAM,GAAGA,MAAM,CAACzxB,OAAO,CAAC,IAAI0L,MAAM,CAAC,KAAK,GAAGxV,CAAC,GAAG,KAAK,EAAE,IAAI,CAAC,EAAE8H,SAAS,CAAC9H,CAAC,CAAC,CAAC;MAC9E;MAEA,OAAOu7B,MAAM;IACjB,CAAC;EACL;AACJ;;AAEA;AACO,SAASC,wBAAwBA,CAAA,EAAG;EACvC9oC,MAAM,CAACC,IAAI,GAAGD,MAAM,CAACC,IAAI,IAAI,CAAC,CAAC;EAE/B,IAAI;IACA8C,QAAQ,CAACpB,IAAI,CAAC+G,OAAO,CAAC,oBAAoB,CAAC;IAE3C1I,MAAM,CAACC,IAAI,CAAC6oC,wBAAwB,GAAG,IAAI;EAC/C,CAAC,CAAC,OAAOjoC,CAAC,EAAE;IACRb,MAAM,CAACC,IAAI,CAAC6oC,wBAAwB,GAAG,KAAK;EAChD;AACJ;AAEe,2EAAW;EACtBX,cAAc,CAAC,CAAC;EAChBQ,YAAY,CAAC,CAAC;EACdG,wBAAwB,CAAC,CAAC;AAC9B,C;;;;;;;;;;;;AChFA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS5P,gBAAgBA,CAAC/3B,GAAG,EAAEgW,IAAI,EAAEnO,KAAK,EAAE+/B,YAAY,EAAE;EAC7D5nC,GAAG,GAAG4nC,YAAY,GAAGC,kBAAkB,CAAC7nC,GAAG,EAAEgW,IAAI,CAAC,GAAGhW,GAAG;;EAExD;EACA,IAAK,CAACgW,IAAI,IAAI,CAACnO,KAAK,IAAK7H,GAAG,CAACsN,OAAO,CAAC0I,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,OAAOnO,KAAK,KAAK,WAAW,EAAE;IACrF,OAAO7H,GAAG;EACd;EAEA,IAAI8nC,SAAS,GAAG9nC,GAAG,CAACsN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG;EAEnD,OAAOtN,GAAG,GAAG8nC,SAAS,GAAG9xB,IAAI,GAAG,GAAG,GAAG+xB,kBAAkB,CAAClgC,KAAK,CAAC;AACnE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAASggC,kBAAkBA,CAAC7nC,GAAG,EAAEgW,IAAI,EAAE;EAC1C,IAAIhW,GAAG,CAACsN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAItN,GAAG,CAACsN,OAAO,CAAC0I,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;IAC3D,OAAOhW,GAAG;EACd;EAEA,IAAIgoC,IAAI;IACJC,MAAM;IACNC,MAAM,GAAGloC,GAAG,CAACkR,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC1Bi3B,QAAQ,GAAGnoC,GAAG,CAACkR,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC5Bk3B,SAAS,GAAG,EAAE;;EAElB;EACA,IAAID,QAAQ,CAAC76B,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE;IAC5B06B,IAAI,GAAGG,QAAQ,CAACj3B,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;IACnCi3B,QAAQ,GAAGA,QAAQ,CAACj3B,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EACrC;EAEA+2B,MAAM,GAAGE,QAAQ,CAACj3B,KAAK,CAAC,GAAG,CAAC;EAE5B,KAAK,IAAI/E,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG87B,MAAM,CAACjnC,MAAM,EAAEmL,CAAC,EAAE,EAAE;IACpC;IACA,IAAI87B,MAAM,CAAC97B,CAAC,CAAC,CAAC+E,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK8E,IAAI,EAAE;MAClCoyB,SAAS,CAAC5mC,IAAI,CAACymC,MAAM,CAAC97B,CAAC,CAAC,CAAC;IAC7B;EACJ;EAEA,OAAO+7B,MAAM,GAAG,GAAG,GAAGE,SAAS,CAACrK,IAAI,CAAC,GAAG,CAAC,IAAIiK,IAAI,GAAG,GAAG,GAAGA,IAAI,GAAG,EAAE,CAAC;AACxE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAAStY,iBAAiBA,CAAC1vB,GAAG,EAAEioC,MAAM,EAAEL,YAAY,EAAE;EACzD,IAAIS,IAAI,GAAGroC,GAAG;EAEd,KAAK,IAAI4H,GAAG,IAAIqgC,MAAM,EAAE;IACpBI,IAAI,GAAGtQ,gBAAgB,CAACsQ,IAAI,EAAEzgC,GAAG,EAAEqgC,MAAM,CAACrgC,GAAG,CAAC,EAAEggC,YAAY,CAAC;EACjE;EAEA,OAAOS,IAAI;AACf;;AAEA;AACA;AACA;AACA;AACA;AACO,SAASC,aAAaA,CAACtoC,GAAG,EAAE;EAC/B,IAAIA,GAAG,CAACsN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAItN,GAAG,CAACuoC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;IACpDvoC,GAAG,GAAG,GAAG,GAAGA,GAAG;EACnB;EAEA,OAAOA,GAAG;AACd;;AAEA;AACA;AACA;AACA;AACA;AACO,SAASwoC,oBAAoBA,CAACC,EAAE,EAA4B;EAAA,IAA1BC,YAAY,GAAAz0B,SAAA,CAAAjT,MAAA,QAAAiT,SAAA,QAAA9Q,SAAA,GAAA8Q,SAAA,MAAG9Q,SAAS;EAC7D,IAAI,CAACslC,EAAE,IAAIA,EAAE,CAACznC,MAAM,KAAK,CAAC,EAAE;IACxB,OAAO,CAAC,CAAC;EACb;EAEA,IAAIinC,MAAM,GAAG,CAAC,CAAC;;EAEf;EACA;EACAQ,EAAE,CAACxyB,OAAO,CAAC,IAAI0L,MAAM,CAAC,sBAAsB,EAAE,GAAG,CAAC,EAC9C,UAASgnB,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAE;IACrB;IACAb,MAAM,CAACW,EAAE,CAAC,GAAGE,EAAE,GAAGC,kBAAkB,CAACD,EAAE,CAAC,GAAGJ,YAAY;EAC3D,CACJ,CAAC;EAED,OAAOT,MAAM;AACjB;;AAEA;AACA;AACA;AACA;AACA;AACO,SAASe,eAAeA,CAACrnC,IAAI,EAAE;EAClC,IAAIsnC,MAAM,GAAG,CAAC,CAAC;EAEftnC,IAAI,CAACyG,gBAAgB,CAAC,QAAQ,CAAC,CAACnH,OAAO,CAAC,UAASwU,KAAK,EAAE;IACpDwzB,MAAM,CAACxzB,KAAK,CAACO,IAAI,CAAC,GAAGP,KAAK,CAAC5N,KAAK;EACpC,CAAC,CAAC;EAEF,OAAOohC,MAAM;AACjB;;AAEA;AACA;AACA;AACA;AACA;AACO,SAASC,UAAUA,CAAClpC,GAAG,EAAE;EAC5B,OAAOkF,CAAC,CAAC,WAAW,CAAC,CAACikC,QAAQ,CAACjkC,CAAC,CAAC,MAAM,CAAC,CAAC,CAACY,IAAI,CAAC;IAC3CwD,IAAI,EAAE;EACV,CAAC,CAAC,CAACxD,IAAI,CAAC,KAAK,EAAE9F,GAAG,CAAC;AACvB;AAEO,SAASopC,mBAAmBA,CAACC,iBAAiB,EAAE;EACnD,IAAIC,iBAAiB,GAAG1nC,QAAQ,CAACiF,aAAa,CAAC,oBAAoB,CAAC;EAEpE,IAAIyiC,iBAAiB,EAAE;IACnB,IAAIC,cAAc,GAAG7Z,iBAAiB,CAAC,EAAE,EAAE2Z,iBAAiB,CAAC;IAE7DE,cAAc,GAAGA,cAAc,CAAChB,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,GAAGgB,cAAc,CAACtN,SAAS,CAAC,CAAC,CAAC,GAAGsN,cAAc;IAEhGD,iBAAiB,CAAC5jC,YAAY,CAAC,kBAAkB,EAAE6jC,cAAc,CAAC;EACtE;AACJ;AAEO,SAASC,kBAAkBA,CAACtZ,SAAS,EAAEuZ,cAAc,EAAqE;EAAA,IAAnEppC,MAAM,GAAA4T,SAAA,CAAAjT,MAAA,QAAAiT,SAAA,QAAA9Q,SAAA,GAAA8Q,SAAA,MAAG,cAAc;EAAA,IAAEy1B,WAAW,GAAAz1B,SAAA,CAAAjT,MAAA,QAAAiT,SAAA,QAAA9Q,SAAA,GAAA8Q,SAAA,MAAG9Q,SAAS;EAAA,IAAEwmC,UAAU,GAAA11B,SAAA,CAAAjT,MAAA,QAAAiT,SAAA,QAAA9Q,SAAA,GAAA8Q,SAAA,MAAG,EAAE;EAC3H,IAAI21B,OAAO,GAAG/qC,MAAM,CAACF,QAAQ,CAACkrC,MAAM,IAAIJ,cAAc,IAAI5qC,MAAM,CAACF,QAAQ,CAACmrC,QAAQ,CAAC;IAC/ET,iBAAiB,GAAGnZ,SAAS,GAAGsY,oBAAoB,CAACtY,SAAS,CAAC,GAAG,CAAC,CAAC;IACpE6Z,MAAM,GAAG7Z,SAAS,GAAGR,iBAAiB,CAACka,OAAO,EAAEP,iBAAiB,CAAC,GAAGO,OAAO;EAEhF,IAAI1Z,SAAS,EAAE;IACXkZ,mBAAmB,CAACC,iBAAiB,CAAC;EAC1C;EAEAxqC,MAAM,CAACmrC,OAAO,CAAC3pC,MAAM,CAAC,CAACqpC,WAAW,EAAEC,UAAU,EAAEI,MAAM,CAAC;AAC3D,C;;;;;;;;;;;;AC9JA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAa;;AAEgB;AACmD;AAChD;AACJ;AACuB;AAC+B;AAElF,IAAIE,kBAAkB;AAEf,IACHC,aAAa,GAAGtoC,QAAQ,CAACiF,aAAa,CAAC,OAAO,CAAC;EAC/CijB,QAAQ,GAAGloB,QAAQ,CAACiF,aAAa,CAAC,kCAAkC,CAAC;EACrE6pB,iBAAiB,GAAG9uB,QAAQ,CAACiF,aAAa,CAAC,4CAA4C,CAAC;EACxF;EACA;EACAshB,WAAW,GAAG;IACVuB,IAAI,EAAE,CAAC;IACPygB,OAAO,EAAE,GAAG;IACZC,MAAM,EAAE,GAAG;IACXhiB,KAAK,EAAE,GAAG;IACViiB,MAAM,EAAE,IAAI;IACZC,OAAO,EAAE,IAAI;IACbC,KAAK,EAAE;EACX,CAAC;EACDzL,gBAAgB,GAAG;IACf,OAAO,EAAE;MAAC0L,GAAG,EAAEriB,WAAW,CAACC;IAAK,CAAC;IACjC,UAAU,EAAE;MAACqiB,GAAG,EAAEtiB,WAAW,CAACC,KAAK,GAAGD,WAAW,CAACuB;IAAI,CAAC;IACvD,WAAW,EAAE;MAAC+gB,GAAG,EAAEtiB,WAAW,CAACkiB,MAAM,GAAGliB,WAAW,CAACuB;IAAI;EAC5D,CAAC;;AAEL;AACA;AACA;AACA;AACO,SAASyI,WAAWA,CAACuY,GAAG,EAAEC,eAAe,EAAE;EAC9C,IAAIC,sBAAsB,GAAGhpC,QAAQ,CAACiF,aAAa,CAAC,iCAAiC,CAAC;EACtF,IAAI+jC,sBAAsB,IAAI/rC,MAAM,CAACC,IAAI,CAACC,eAAe,CAAC8rC,iCAAiC,EAAE;IACzF5M,uGAAkC,CAAC,CAAC;EACxC;EACA,KAAM,IAAIr2B,GAAG,IAAI8iC,GAAG,EAAG;IACnB,IAAII,eAAe,GAAGJ,GAAG,CAAC9iC,GAAG,CAAC;;IAE9B;IACA,IAAI,OAAOkjC,eAAe,KAAK,UAAU,EAAE;MACvCA,eAAe,CAAC,CAAC;IACrB,CAAC,MAAM;MACH,IAAIlM,KAAK,GAAGkM,eAAe,CAACvqB,OAAO,IAAI3Y,GAAG;MAE1C,IAAI,CAAC+iC,eAAe,IAAI/oC,QAAQ,EAAEiF,aAAa,CAAC+3B,KAAK,CAAC,EAAE;QACpDkM,eAAe,CAAC5kC,IAAI,CAAE04B,KAAM,CAAC;MACjC;IACJ;EACJ;AACJ;AAEO,SAAS7Q,WAAWA,CAAC4c,eAAe,EAAE;EACzCxY,WAAW,CAACC,gDAAO,EAAEuY,eAAe,CAAC;AACzC;AAEO,SAASI,SAASA,CAACJ,eAAe,EAAE;EACvCxY,WAAW,CAAC6Y,8CAAK,EAAEL,eAAe,CAAC;AACvC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS5gB,YAAYA,CAACkhB,UAAU,EAAEC,SAAS,EAAEzgC,MAAM,EAAE0gC,MAAM,EAAE;EAChE,IAAIrQ,KAAK;IACLmN,MAAM,GAAG;MAAEmD,OAAO,EAAE,IAAI;MAAEC,UAAU,EAAE,IAAI;MAAEF,MAAM,EAANA;IAAO,CAAC;IACpDG,WAAW,GAAGL,UAAU,IAAIC,SAAS,MAAAn9B,MAAA,CAAMk9B,UAAU,OAAAl9B,MAAA,CAAIm9B,SAAS,IAAMD,UAAU,IAAIC,SAAU;;EAEpG;EACA,IAAI,OAAOrsC,MAAM,CAAC0sC,WAAW,KAAK,UAAU,EAAE;IAC1CzQ,KAAK,GAAGl5B,QAAQ,CAAC4pC,WAAW,CAAC,aAAa,CAAC;IAC3C1Q,KAAK,CAAC2Q,eAAe,CAACH,WAAW,EAAErD,MAAM,CAACmD,OAAO,EAAEnD,MAAM,CAACoD,UAAU,EAAE,IAAI,CAAC;EAC/E,CAAC,MAAM;IACHvQ,KAAK,GAAG,IAAIyQ,WAAW,CAACD,WAAW,EAAErD,MAAM,CAAC;EAChD;EAEA,IAAI,OAAOx9B,MAAM,CAACihC,aAAa,KAAK,UAAU,EAAE;IAC5CjhC,MAAM,CAACihC,aAAa,CAAC5Q,KAAK,CAAC;EAC/B;AACJ;;AAEA;AACA;AACA;AACO,SAAS4Q,aAAaA,CAACjhC,MAAM,EAAEygC,SAAS,EAAE;EAC7C,IAAIpQ,KAAK;EAET,IAAI,OAAOj8B,MAAM,CAACgB,KAAK,KAAK,UAAU,EAAE;IACpCi7B,KAAK,GAAG,IAAIj7B,KAAK,CAACqrC,SAAS,CAAC;EAChC,CAAC,MAAM;IACHpQ,KAAK,GAAGl5B,QAAQ,CAAC4pC,WAAW,CAAC,OAAO,CAAC;IACrC1Q,KAAK,CAAC6Q,SAAS,CAACT,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC;EAC1C;EAEAzgC,MAAM,CAACihC,aAAa,CAAC5Q,KAAK,CAAC;AAC/B;AAEA,SAAS8Q,iBAAiBA,CAACC,aAAa,EAAE;EACtC,OAAOA,aAAa,IAAI,OAAOA,aAAa,KAAK,QAAQ,GAAGjqC,QAAQ,CAACiF,aAAa,CAACglC,aAAa,CAAC,GAAIA,aAAa,IAAI3B,aAAc;AACxI;;AAEA;AACA;AACA;AACA;AACO,SAASjiB,UAAUA,CAAA,EAAgB;EAAA,IAAd3hB,OAAO,GAAA2N,SAAA,CAAAjT,MAAA,QAAAiT,SAAA,QAAA9Q,SAAA,GAAA8Q,SAAA,MAAG,CAAC,CAAC;EACpC,IAAIH,QAAQ,GAAG83B,iBAAiB,CAACtlC,OAAO,CAACulC,aAAa,CAAC;EAEvD5B,kBAAkB,GAAG3jC,OAAO,CAACuG,OAAO;EAEpCiH,QAAQ,CAACtO,SAAS,CAACC,GAAG,CAAE,cAAe,CAAC;EAExC,IAAIa,OAAO,CAACwlC,QAAQ,EAAE;IAClBh4B,QAAQ,CAACtO,SAAS,CAACC,GAAG,CAAE,kBAAmB,CAAC;EAChD;;EAEA;EACA;EACA;EACA,IAAIa,OAAO,CAACgsB,aAAa,IAAIhsB,OAAO,CAACulC,aAAa,KAAKnb,iBAAiB,EAAE;IACtE,IAAIqb,aAAa,GAAGtlC,YAAY,CAAC,CAAC,CAAC,EAAEH,OAAO,CAAC;IAE7CylC,aAAa,CAACF,aAAa,GAAGnb,iBAAiB;IAE/CzI,UAAU,CAAC8jB,aAAa,CAAC;EAC7B;AACJ;;AAEA;AACA;AACA;AACA;AACO,SAAS1jB,YAAYA,CAAA,EAAiB;EAAA,IAAf/hB,OAAO,GAAA2N,SAAA,CAAAjT,MAAA,QAAAiT,SAAA,QAAA9Q,SAAA,GAAA8Q,SAAA,MAAG,CAAC,CAAC;EACtC,IAAIH,QAAQ,GAAG83B,iBAAiB,CAACtlC,OAAO,CAACulC,aAAa,CAAC;;EAEvD;EACA;EACA;EACA,IAAI,CAAC5B,kBAAkB,IAAI,CAAC3jC,OAAO,CAACuG,OAAO,IAAKo9B,kBAAkB,KAAK3jC,OAAO,CAACuG,OAAQ,EAAE;IACrFiH,QAAQ,CAACtO,SAAS,CAAC6O,MAAM,CAAE,cAAe,CAAC;IAC3Cqc,iBAAiB,CAAClrB,SAAS,CAAC6O,MAAM,CAAE,cAAe,CAAC;IACpDP,QAAQ,CAACtO,SAAS,CAAC6O,MAAM,CAAE,kBAAmB,CAAC;EACnD;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS+Q,oBAAoBA,CAACia,QAAQ,EAAgC;EAAA,IAA9B6L,SAAS,GAAAj3B,SAAA,CAAAjT,MAAA,QAAAiT,SAAA,QAAA9Q,SAAA,GAAA8Q,SAAA,MAAG,OAAO;EAAA,IAAE1K,OAAO,GAAA0K,SAAA,CAAAjT,MAAA,OAAAiT,SAAA,MAAA9Q,SAAA;EACvEoW,oFAAkB,CAAC8lB,QAAQ,EAAE,UAAS5L,SAAS,EAAE;IAC7C,IAAIA,SAAS,YAAYwB,WAAW,EAAE;MAClCiW,SAAS,CAACh6B,KAAK,CAAC,GAAG,CAAC,CAACjQ,OAAO,CAAC,UAAA+qC,YAAY;QAAA,OAAIvY,SAAS,CAACtsB,gBAAgB,CAAC6kC,YAAY,EAAEziC,OAAO,CAAC;MAAA,EAAC;IACnG;EACJ,CAAC,CAAC;AACN;;AAEA;AACA;AACO,SAAS9C,YAAYA,CAACgE,MAAM,EAAE;EACjC,KAAK,IAAI0B,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG8H,SAAS,CAACjT,MAAM,EAAEmL,CAAC,EAAE,EAAE;IACvC,IAAI8/B,MAAM,GAAGh4B,SAAS,CAAC9H,CAAC,CAAC;IAEzB,KAAK,IAAIvE,GAAG,IAAIqkC,MAAM,EAAE;MACpB,IAAIA,MAAM,CAACnsC,cAAc,CAAC8H,GAAG,CAAC,EAAE;QAC5B6C,MAAM,CAAC7C,GAAG,CAAC,GAAGqkC,MAAM,CAACrkC,GAAG,CAAC;MAC7B;IACJ;EACJ;EAEA,OAAO6C,MAAM;AACjB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAASoE,eAAeA,CAACG,EAAE,EAAE;EAChC,OAAOA,EAAE,CAACC,YAAY,IAAKD,EAAE,CAACE,iBAAiB,IAAIF,EAAE,CAACE,iBAAiB,CAACC,YAAY,GAAG,CAAE;AAC7F;;AAEA;AACA;AACA;AACA;AACO,SAAS+8B,uBAAuBA,CAAC3qC,OAAO,EAA+D;EAAA,IAA7D6T,WAAW,GAAAnB,SAAA,CAAAjT,MAAA,QAAAiT,SAAA,QAAA9Q,SAAA,GAAA8Q,SAAA,MAAG,6CAA6C;EACxGsF,oFAAkB,CAACnE,WAAW,EAAE,UAASqe,SAAS,EAAE;IAChDA,SAAS,CAAC1rB,WAAW,GAAG,EAAE;;IAE1B;IACA,IAAIxG,OAAO,EAAE;MACToU,mFAAiB,CAAC8d,SAAS,EAAE;QAAC7d,KAAK,EAAE,wCAAwC;QAAEC,IAAI,EAAE;MAAO,CAAC,EAAE,GAAG,EAAEtU,OAAO,CAAC;IAChH;EACJ,CAAC,CAAC;AACN;AAEO,SAAS4qC,WAAWA,CAAC5sC,GAAG,EAAE;EAC7B,IAAIA,GAAG,CAAC6sC,YAAY,CAACC,WAAW,EAAE;IAC9BxtC,MAAM,CAACF,QAAQ,CAACgC,IAAI,GAAGpB,GAAG,CAAC6sC,YAAY,CAACC,WAAW;EACvD,CAAC,MAAM;IACH,IAAIC,YAAY,GAAI/sC,GAAG,IAAKA,GAAG,CAACO,cAAc,CAAC,cAAc,CAAC,IAAIP,GAAG,CAAC6sC,YAAY,CAACtsC,cAAc,CAAC,cAAc,CAAE,GAAIP,GAAG,CAAC6sC,YAAY,CAACE,YAAY,GAAGztC,MAAM,CAACC,IAAI,CAACknB,SAAS,CAACumB,mBAAmB;IAC/LL,uBAAuB,CAACI,YAAY,CAAC;IAErC7d,+DAAmB,CAAC,CAAC;EACzB;AACJ;;AAEA;AACA;AACA;AACO,SAAS3F,oBAAoBA,CAAC9Z,EAAE,EAAE;EACrC,OAAOA,EAAE,IAAIA,EAAE,KAAKpN,QAAQ,CAACpB,IAAI,EAAE;IAC/B,IAAIwO,EAAE,CAACzB,YAAY,CAAC,iBAAiB,CAAC,EAAE;MACpC,OAAO,IAAI;IACf;IAEAyB,EAAE,GAAGA,EAAE,CAACiB,UAAU;EACtB;AACJ;;AAEA;AACA;AACA;AACO,SAAS0Y,WAAWA,CAAC0W,QAAQ,EAAEmN,KAAK,EAAE;EACzCjzB,oFAAkB,CAAC8lB,QAAQ,EAAE,UAAS5L,SAAS,EAAE;IAC7C+Y,KAAK,GAAG/Y,SAAS,CAAC/tB,YAAY,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG+tB,SAAS,CAACgZ,eAAe,CAAC,OAAO,EAAE,EAAE,CAAC;EACxF,CAAC,CAAC;AACN;;AAEA;AACA;AACA;AACO,SAASC,iBAAiBA,CAAA,EAAG;EAChC,IAAIC,UAAU,GAAG/qC,QAAQ,CAACiF,aAAa,CAAC,oBAAoB,CAAC;EAE7D,OAAO8lC,UAAU,GAAG;IAChBjuC,MAAM,EAAEiuC,UAAU,CAAC38B,YAAY,CAAC,aAAa,CAAC;IAC9C48B,WAAW,EAAED,UAAU,CAAC38B,YAAY,CAAC,kBAAkB;EAC3D,CAAC,GAAG,IAAI;AACZ,C;;;;;;;;;;;;AChQA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA0C;AACoC;;AAE9E;AACA;AACA;AACA;AACA;AACO,SAAS68B,iBAAiBA,CAACC,eAAe,EAAE;EAC/C,OAAO7yB,QAAQ,CAAC6yB,eAAe,CAAC3oB,OAAO,CAAC4oB,UAAU,CAAC,GAAG,CAAC;AAC3D;;AAEA;AACA;AACA;AACA;AACA;AACO,SAASC,iBAAiBA,CAACC,cAAc,EAAE;EAC9C,IAAIC,IAAI,GAAGtrC,QAAQ,CAACiF,aAAa,CAAC,aAAa,CAAC;IAC5CsmC,SAAS,GAAG;MAACppC,IAAI,EAAEkpC;IAAc,CAAC;;EAEtC;EACA,IAAIC,IAAI,EAAE;IACNC,SAAS,CAACD,IAAI,GAAGA,IAAI,CAACrlC,KAAK;EAC/B;EAEA2hC,gFAAkB,CAAC9Z,+EAAiB,CAAC,EAAE,EAAEyd,SAAS,EAAE,IAAI,CAAC,CAAC;AAC9D;;AAEA;AACA;AACA;AACO,SAASC,mBAAmBA,CAACN,eAAe,EAAEO,kBAAkB,EAAkB;EAAA,IAAhBC,QAAQ,GAAAr5B,SAAA,CAAAjT,MAAA,QAAAiT,SAAA,QAAA9Q,SAAA,GAAA8Q,SAAA,MAAG,GAAG;EACnF,IAAIs5B,eAAe,GAAGC,oDAAa,CAACC,MAAM,CAACX,eAAe,EAAEQ,QAAQ,CAAC;IACjEL,cAAc,GAAGJ,iBAAiB,CAACC,eAAe,CAAC;EAEvDS,eAAe,CAACG,GAAG,CAAC,eAAe,EAAE,YAAW;IAC5C;IACA,IAAI9rC,QAAQ,CAAC8I,QAAQ,CAACoiC,eAAe,CAAC,EAAE;MACpCE,iBAAiB,CAACC,cAAc,CAAC;MAEjCI,kBAAkB,CAAC,CAAC;IACxB;EACJ,CAAC,CAAC;AACN,C;;;;;;;;;;;;AC5CA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAa;;AAEmE;;AAEhF;AACA;AACA;AACA;AACA;AACA;AACO,SAASM,gBAAgBA,CAACpjB,SAAS,EAAE;EACxC,IAAIqjB,WAAW,GAAGC,cAAc,CAACtjB,SAAS,CAAC;IACvCujB,YAAY,GAAGF,WAAW,KAAK,KAAK;IACpCG,WAAW,GAAG,EAAE;IAChBC,WAAW,GAAGzjB,SAAS,CAACniB,gBAAgB,8BAAA2F,MAAA,CAA6B6/B,WAAW,aAAS,CAAC;EAE9F,EAAE,CAAC3sC,OAAO,CAACqH,IAAI,CAAC0lC,WAAW,EAAE,UAASC,WAAW,EAAE;IAC/C,IAAIC,cAAc,GAAGC,mBAAmB,CAACF,WAAW,CAAC;MACjDG,eAAe,GAAG;QACdC,GAAG,EAAEC,WAAW,CAACL,WAAW,CAAC;QAC7B3nC,OAAO,EAAEioC,UAAU,CAACN,WAAW,EAAE,IAAI;MACzC,CAAC;;IAEL;IACAG,eAAe,CAACN,YAAY,GAAG,KAAK,GAAG,UAAU,CAAC,GAAGI,cAAc;IAEnEH,WAAW,CAACvsC,IAAI,CAAC4sC,eAAe,CAAC;EACrC,CAAC,CAAC;EAEF,OAAO;IACHI,IAAI,EAAER,WAAW;IACjB/tC,IAAI,EAAEC,IAAI,CAACC,SAAS,CAAC4tC,WAAW;EACpC,CAAC;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAASQ,UAAUA,CAACE,WAAW,EAAEtuC,SAAS,EAAE;EAC/C,IAAIuuC,gBAAgB,GAAGC,mBAAmB,CAACF,WAAW,CAAC;IACnDnoC,OAAO,GAAG,EAAE,CAACsoC,GAAG,CAACtmC,IAAI,CAAComC,gBAAgB,CAACtmC,gBAAgB,CAAC,kBAAkB,CAAC,EAAE,UAAS6lC,WAAW,EAAE;MAC/F,IAAIY,SAAS,GAAGZ,WAAW,CAACpnC,aAAa,CAAC,6CAA6C,CAAC;QACpFioC,eAAe,GAAGD,SAAS,GAAGA,SAAS,CAACvoC,OAAO,CAACuoC,SAAS,CAACE,aAAa,CAAC,CAAC/+B,YAAY,CAAC,eAAe,CAAC,GAAGi+B,WAAW,CAACj+B,YAAY,CAAC,sBAAsB,CAAC;MAE7J,IAAI,CAAC8+B,eAAe,EAAE;QAClB,EAAE,CAACF,GAAG,CAACtmC,IAAI,CAAComC,gBAAgB,CAACtmC,gBAAgB,CAAC,yBAAyB,CAAC,EAAE,UAAS6lC,WAAW,EAAE;UAC5F,IAAIA,WAAW,CAACzoC,SAAS,CAACkF,QAAQ,CAAC,qBAAqB,CAAC,EAAE;YACvDokC,eAAe,GAAGb,WAAW,CAACj+B,YAAY,CAAC,uBAAuB,CAAC;UACvE,CAAC,MAAM,IAAIi+B,WAAW,CAACzoC,SAAS,CAACkF,QAAQ,CAAC,iBAAiB,CAAC,EAAE;YAC1DokC,eAAe,GAAGb,WAAW,CAACj+B,YAAY,CAAC,uBAAuB,CAAC;UACvE;QACJ,CAAC,CAAC;MACN;MAEA,OAAO;QACHg/B,QAAQ,EAAEf,WAAW,CAACj+B,YAAY,CAAC,gBAAgB,CAAC;QACpD8+B,eAAe,EAAEA;MACrB,CAAC;IACL,CAAC,CAAC;EAEN,OAAO3uC,SAAS,GAAGD,IAAI,CAACC,SAAS,CAACmG,OAAO,CAAC,GAAGA,OAAO;AACxD;;AAEA;AACA;AACA;AACO,SAASgoC,WAAWA,CAACt/B,EAAE,EAAE;EAC5B,OAAO2/B,mBAAmB,CAAC3/B,EAAE,CAAC,CAACgB,YAAY,CAAC,UAAU,CAAC;AAC3D;;AAEA;AACA;AACA;AACO,SAAS69B,cAAcA,CAAC7+B,EAAE,EAAE;EAC/B,OAAO2/B,mBAAmB,CAAC3/B,EAAE,CAAC,CAACgB,YAAY,CAAC,wBAAwB,CAAC;AACzE;AAEO,SAASi/B,cAAcA,CAACC,KAAK,EAAEp7B,QAAQ,EAAE46B,gBAAgB,EAAES,YAAY,EAAE;EAC5E;EACA;EACA,IAAI,CAACT,gBAAgB,IAAIA,gBAAgB,KAAKC,mBAAmB,CAAC76B,QAAQ,CAAC,EAAE;IACzEA,QAAQ,CAACpO,YAAY,CAAC,UAAU,EAAEwpC,KAAK,CAAC;IAExC,IAAIC,YAAY,EAAE;MACdr7B,QAAQ,CAAC/L,WAAW,GAAGmnC,KAAK;IAChC;EACJ;AACJ;AAEO,SAASE,UAAUA,CAACF,KAAK,EAAER,gBAAgB,EAAE;EAChDO,cAAc,CAACC,KAAK,EAAER,gBAAgB,CAAC;EAEvC,EAAE,CAACztC,OAAO,CAACqH,IAAI,CAAComC,gBAAgB,CAACtmC,gBAAgB,CAAC,YAAY,CAAC,EAAE,UAAAqrB,SAAS;IAAA,OAAIwb,cAAc,CAACC,KAAK,EAAEzb,SAAS,EAAEib,gBAAgB,CAAC;EAAA,EAAC;EACjI,EAAE,CAACztC,OAAO,CAACqH,IAAI,CAAComC,gBAAgB,CAACtmC,gBAAgB,CAAC,gCAAgC,CAAC,EAAE,UAAAqrB,SAAS;IAAA,OAAIwb,cAAc,CAACC,KAAK,EAAEzb,SAAS,EAAEib,gBAAgB,EAAE,IAAI,CAAC;EAAA,EAAC;AAC/J;;AAEA;AACA;AACA;AACO,SAASW,UAAUA,CAACC,OAAO,EAAEZ,gBAAgB,EAAE;EAClD,EAAE,CAACztC,OAAO,CAACqH,IAAI,CAAComC,gBAAgB,CAACtmC,gBAAgB,CAAC,iCAAiC,CAAC,EAAE,UAAAqrB,SAAS;IAAA,OAAIA,SAAS,CAACxsB,SAAS,GAAGqoC,OAAO;EAAA,EAAC;AACrI;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,YAAYA,CAACC,cAAc,EAAEd,gBAAgB,EAA8E;EAAA,IAA5Ee,aAAa,GAAAx7B,SAAA,CAAAjT,MAAA,QAAAiT,SAAA,QAAA9Q,SAAA,GAAA8Q,SAAA,MAAG,mCAAmC;EAAA,IAAEy7B,qBAAqB,GAAAz7B,SAAA,CAAAjT,MAAA,OAAAiT,SAAA,MAAA9Q,SAAA;EACrI,IAAIusC,qBAAqB,EAAE;IACvBC,eAAe,CAACH,cAAc,EAAEd,gBAAgB,CAAC;EACrD;EAEA,EAAE,CAACztC,OAAO,CAACqH,IAAI,CAAComC,gBAAgB,CAACtmC,gBAAgB,CAACqnC,aAAa,CAAC,EAAE,UAAShc,SAAS,EAAE;IAClFmc,iBAAiB,CAACJ,cAAc,CAAC/b,SAAS,CAACzjB,YAAY,CAAC,kBAAkB,CAAC,CAAC,EAAEyjB,SAAS,CAAC;EAC5F,CAAC,CAAC;AACN;;AAGA;AACA;AACA;AACA;AACO,SAASkc,eAAeA,CAACH,cAAc,EAAEd,gBAAgB,EAAE;EAC9D,IAAImB,cAAc,GAAGnB,gBAAgB,CAACtmC,gBAAgB,CAAC,sCAAsC,CAAC;EAE9F,EAAE,CAACnH,OAAO,CAACqH,IAAI,CAACunC,cAAc,EAAE,UAASC,aAAa,EAAE;IACpD,IAAIC,mBAAmB,GAAGD,aAAa,CAACviC,YAAY,CAAC,sBAAsB,CAAC,GAAGrI,CAAC,CAAC4qC,aAAa,CAAC,CAACE,KAAK,CAAC,UAAU,CAAC,GAAG,IAAI;MACpHC,eAAe,GAAGF,mBAAmB,IAAI,CAACA,mBAAmB,CAACG,SAAS;MACvEC,mBAAmB,GAAGF,eAAe,GAAGF,mBAAmB,CAACK,UAAU,GAAGN,aAAa,CAACO,iBAAiB;MACxGC,oBAAoB,GAAId,cAAc,CAACxuC,MAAM,GAAGmvC,mBAAmB,GAAI,CAAC,GAAGX,cAAc,CAACxuC,MAAM,GAAGmvC,mBAAmB,GAAG,CAAC;MAC1HI,YAAY,GAAGf,cAAc,CAACxuC,MAAM,GAAGmvC,mBAAmB;;IAE9D;IACA,KAAK,IAAIhkC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGmkC,oBAAoB,EAAEnkC,CAAC,EAAE,EAAE;MAC3C;MACA,IAAIokC,YAAY,EAAE;QACd,IAAIC,aAAa,GAAG9B,gBAAgB,CAAC7nC,aAAa,2BAAAkH,MAAA,CAA0B+hC,aAAa,CAAC9/B,YAAY,CAAC,wBAAwB,CAAC,QAAI,CAAC,CAACygC,SAAS,CAAC,IAAI,CAAC;QAErJD,aAAa,CAAC3pC,aAAa,CAAC,oBAAoB,CAAC,CAACnB,YAAY,CAAC,kBAAkB,EAAEyqC,mBAAmB,EAAE,CAAC;QACzGK,aAAa,CAAC/D,eAAe,CAAC,qBAAqB,CAAC;;QAEpD;QACA,IAAIwD,eAAe,EAAE;UACjB/qC,CAAC,CAAC4qC,aAAa,CAAC,CAACE,KAAK,CAAC,UAAU,EAAEQ,aAAa,CAAC;QACrD,CAAC,MAAM;UACHV,aAAa,CAAChuC,WAAW,CAAC0uC,aAAa,CAAC;QAC5C;MACJ,CAAC,MAAM;QACH;QACA;QACA,IAAIP,eAAe,EAAE;UACjB/qC,CAAC,CAAC4qC,aAAa,CAAC,CAACE,KAAK,CAAC,aAAa,EAAE,EAAEG,mBAAmB,CAAC;QAChE,CAAC,MAAM;UACHL,aAAa,CAACxa,WAAW,CAACwa,aAAa,CAACY,gBAAgB,CAAC;QAC7D;MACJ;IACJ;IAEAxrC,CAAC,CAAC,MAAM,CAAC,CAAC2H,OAAO,CAAC,yBAAyB,EACvC;MACI0d,SAAS,EAAEmkB,gBAAgB;MAC3BiC,cAAc,EAAEb,aAAa;MAC7BxmC,IAAI,EAAEwmC,aAAa,CAAC9/B,YAAY,CAAC,wBAAwB;IAC7D,CACJ,CAAC;EACL,CAAC,CAAC;AACN;AAEO,SAAS4/B,iBAAiBA,CAACgB,aAAa,EAAEC,YAAY,EAAE;EAC3D,IAAIC,6BAA6B,GAAGD,YAAY,CAAC9gC,OAAO,CAAC,yBAAyB,CAAC,IAAI,IAAI;EAC3F,IAAI6gC,aAAa,IAAI,CAACE,6BAA6B,EAAE;IACjDD,YAAY,CAACE,GAAG,GAAGH,aAAa,CAAC5wC,GAAG;IACpC6wC,YAAY,CAACG,KAAK,GAAGJ,aAAa,CAACI,KAAK;IACxCH,YAAY,CAACI,GAAG,GAAGL,aAAa,CAACK,GAAG;EACxC;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,UAAUA,CAACnH,MAAM,EAAE2E,gBAAgB,EAAE;EACjD,IAAIyC,MAAM,GAAGzC,gBAAgB,CAACtmC,gBAAgB,CAAC,oBAAoB,CAAC;IAChEgpC,WAAW,GAAG5I,kFAAoB,CAACuB,MAAM,CAAC;EAE9C,EAAE,CAAC9oC,OAAO,CAACqH,IAAI,CAAC6oC,MAAM,EAAE,UAAS1d,SAAS,EAAE;IACxC,IAAI4d,OAAO,GAAG5d,SAAS,CAACzjB,YAAY,CAAC,kBAAkB,CAAC;MACpDshC,cAAc,GAAG7d,SAAS,CAACzjB,YAAY,CAAC,oBAAoB,CAAC;MAC7DuhC,eAAe,GAAG3vC,QAAQ,CAACiF,aAAa,CAAC,2CAA2C,CAAC;MACrF;MACA;MACA;MACA;MACA2qC,UAAU,GAAGH,OAAO,GAAG3hB,+EAAiB,CAAC7wB,MAAM,CAACC,IAAI,CAACqH,IAAI,CAACkrC,OAAO,CAAC,EAAED,WAAW,CAAC,GAAGrH,MAAM;IAE7F,IAAItW,SAAS,CAACra,OAAO,KAAK,GAAG,EAAE;MAC3B,IAAIm4B,eAAe,KAAK,IAAI,IAAID,cAAc,KAAK,IAAI,EAAE;QACrD7d,SAAS,CAAC9yB,IAAI,GAAG8yB,SAAS,CAAC9yB,IAAI,GAAG8yB,SAAS,CAAC9yB,IAAI,GAAG6wC,UAAU;MACjE,CAAC,MAAM;QACH/d,SAAS,CAAC9yB,IAAI,GAAG6wC,UAAU;MAC/B;IACJ,CAAC,MAAM;MACH/d,SAAS,CAAC/tB,YAAY,CAAC,UAAU,EAAE8rC,UAAU,CAAC;IAClD;EACJ,CAAC,CAAC;AACN;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,kBAAkBA,CAAClI,cAAc,EAAEmF,gBAAgB,EAAE;EACjEA,gBAAgB,CAAChpC,YAAY,CAAC,0BAA0B,EAAE6jC,cAAc,CAAC;AAC7E;;AAEA;AACA;AACA;AACO,SAASmI,kBAAkBA,CAAChD,gBAAgB,EAAEtJ,OAAO,EAAE;EAC1D,IAAIuM,OAAO,GAAGjD,gBAAgB,CAAC7nC,aAAa,CAAC,kCAAkC,CAAC;IAC5E+qC,UAAU,GAAG1sC,CAAC,CAAC,kDAAkD,CAAC;EACtE0sC,UAAU,CAACjmB,QAAQ,CAAC,QAAQ,CAAC;EAE7B,IAAIyZ,OAAO,IAAIuM,OAAO,EAAE;IACpBA,OAAO,CAACE,SAAS,GAAGzM,OAAO,CAAC0M,KAAK,CAACrkB,IAAI;IACtC,IAAI2X,OAAO,CAAC2M,SAAS,IAAI3M,OAAO,CAAC4M,QAAQ,IAAK5M,OAAO,CAAC0M,KAAK,IAAI1M,OAAO,CAAC0M,KAAK,CAACxoC,IAAI,KAAK,OAAO,IAAI87B,OAAO,CAAC0M,KAAK,CAACG,KAAK,IAAI7M,OAAO,CAAC0M,KAAK,CAACG,KAAK,CAACpqC,KAAM,EAAE;MAChJ+pC,UAAU,CAAChsC,WAAW,CAAC,QAAQ,CAAC;IACpC;EACJ;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACO,SAASssC,mBAAmBA,CAACljC,EAAE,EAAE;EACpC,OAAO2/B,mBAAmB,CAAC3/B,EAAE,CAAC,CAACnI,aAAa,CAAC,gCAAgC,CAAC;AAClF;;AAEA;AACA;AACA;AACA;AACA;AACO,SAASsnC,mBAAmBA,CAACn/B,EAAE,EAAE;EACpC,IAAImjC,gBAAgB,GAAGD,mBAAmB,CAACljC,EAAE,CAAC;EAE9C,OAAOmjC,gBAAgB,GAAGA,gBAAgB,CAACtqC,KAAK,GAAG,CAAC;AACxD;AAEO,SAAS8mC,mBAAmBA,CAAC3/B,EAAE,EAAE;EACpC,OAAOA,EAAE,CAACe,OAAO,CAAC,0BAA0B,CAAC;AACjD;AAEO,SAASqiC,aAAaA,CAAA,EAAG;EAC5B,IAAIC,UAAU,GAAGzwC,QAAQ,CAACiF,aAAa,CAAC,gCAAgC,CAAC;EACzE,IAAIwrC,UAAU,IAAI,IAAI,EAAE;IACpBA,UAAU,CAACC,OAAO,GAAG,YAAW;MAC5B,IAAItyC,GAAG,GAAGnB,MAAM,CAACF,QAAQ,CAACgC,IAAI;MAC9B,IAAI4xC,UAAU,GAAGvyC,GAAG,CAACiW,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC;MAEzC,IAAIu8B,QAAQ,GAAGttC,CAAC,CAAC,uBAAuB,CAAC,CAACY,IAAI,CAAC,MAAM,CAAC;MACtD,IAAI2sC,WAAW,GAAGD,QAAQ,CAACthC,KAAK,CAAC,OAAO,CAAC;MACzC,IAAIwhC,aAAa,GAAGD,WAAW,CAAC,CAAC,CAAC,GAAGF,UAAU;MAC/CrtC,CAAC,CAAC,uBAAuB,CAAC,CAACY,IAAI,CAAC,MAAM,EAAE4sC,aAAa,CAAC;MAEtD,IAAIC,WAAW,GAAGztC,CAAC,CAAC,0BAA0B,CAAC,CAACY,IAAI,CAAC,MAAM,CAAC;MAC5D,IAAI8sC,cAAc,GAAGD,WAAW,CAACzhC,KAAK,CAAC,OAAO,CAAC;MAC/C,IAAI2hC,gBAAgB,GAAG,OAAO,GAAGD,cAAc,CAAC,CAAC,CAAC,GAAGL,UAAU;MAC/DrtC,CAAC,CAAC,0BAA0B,CAAC,CAACY,IAAI,CAAC,MAAM,EAAE+sC,gBAAgB,CAAC;MAE5D,IAAIC,UAAU,GAAG5tC,CAAC,CAAC,yBAAyB,CAAC,CAACY,IAAI,CAAC,MAAM,CAAC;MAC1D,IAAIitC,aAAa,GAAGD,UAAU,CAAC5hC,KAAK,CAAC,OAAO,CAAC;MAC7C,IAAI8hC,eAAe,GAAG,OAAO,GAAGD,aAAa,CAAC,CAAC,CAAC,GAAGR,UAAU;MAC7DrtC,CAAC,CAAC,yBAAyB,CAAC,CAACY,IAAI,CAAC,MAAM,EAAEktC,eAAe,CAAC;MAC1D,IAAI9tC,CAAC,CAAC,2BAA2B,CAAC,CAACY,IAAI,CAAC,MAAM,CAAC,EAAE;QAC7C,IAAImtC,YAAY,GAAG/tC,CAAC,CAAC,2BAA2B,CAAC,CAACY,IAAI,CAAC,MAAM,CAAC;MAClE,CAAC,MAAM;QACHmtC,YAAY,GAAG/tC,CAAC,CAAC,iCAAiC,CAAC,CAACY,IAAI,CAAC,MAAM,CAAC;MACpE;MAEA,IAAIotC,eAAe,GAAGD,YAAY,CAAC/hC,KAAK,CAAC,OAAO,CAAC;MACjD,IAAIiiC,iBAAiB,GAAG,OAAO,GAAGD,eAAe,CAAC,CAAC,CAAC,GAAGX,UAAU;MACjErtC,CAAC,CAAC,2BAA2B,CAAC,CAACY,IAAI,CAAC,MAAM,EAAEqtC,iBAAiB,CAAC;MAE9D,IAAIC,WAAW,GAAGluC,CAAC,CAAC,0BAA0B,CAAC,CAACY,IAAI,CAAC,MAAM,CAAC;MAC5D,IAAIutC,cAAc,GAAGD,WAAW,CAACliC,KAAK,CAAC,OAAO,CAAC;MAC/C,IAAIoiC,gBAAgB,GAAG,OAAO,GAAGD,cAAc,CAAC,CAAC,CAAC,GAAGd,UAAU;MAC/DrtC,CAAC,CAAC,0BAA0B,CAAC,CAACY,IAAI,CAAC,MAAM,EAAEwtC,gBAAgB,CAAC;IAChE,CAAC;EACL;AACJ;AAEO,SAASC,oBAAoBA,CAAA,EAAG;EACnC,IAAIC,mBAAmB,GAAG5xC,QAAQ,CAACiF,aAAa,CAAC,sBAAsB,CAAC;IACpE4sC,kBAAkB,GAAG7xC,QAAQ,CAACiF,aAAa,CAAC,6BAA6B,CAAC;IAC1E6sC,SAAS,GAAG9xC,QAAQ,CAACiF,aAAa,CAAC,uCAAuC,CAAC;IAC3E8sC,iBAAiB,GAAG/xC,QAAQ,CAACiF,aAAa,CAAC,sDAAsD,CAAC;IAClG+sC,kBAAkB,GAAGhyC,QAAQ,CAACwG,gBAAgB,CAAC,gDAAgD,CAAC;IAChGyrC,wBAAwB,GAAGjyC,QAAQ,CAACiF,aAAa,CAAC,2DAA2D,CAAC;IAC9GitC,UAAU,GAAGlyC,QAAQ,CAACiF,aAAa,CAAC,sDAAsD,CAAC;IAC3FktC,gBAAgB,GAAGnyC,QAAQ,CAACiF,aAAa,CAAC,uDAAuD,CAAC;IAClGmtC,cAAc,GAAG,MAAM;EAE3B,IAAID,gBAAgB,IAAIA,gBAAgB,IAAI,IAAI,EAAE;IAC9CC,cAAc,GAAGD,gBAAgB,CAAC5vB,OAAO,CAAC8vB,oBAAoB;EAClE;EAEA,IAAIT,mBAAmB,IAAIA,mBAAmB,IAAI,IAAI,EAAE;IACpD,IAAIA,mBAAmB,CAACrvB,OAAO,CAAC+vB,YAAY,KAAK,MAAM,IAAIF,cAAc,KAAK,MAAM,EAAE;MAClF,IAAIN,SAAS,IAAIA,SAAS,IAAI,IAAI,IAAII,UAAU,IAAIA,UAAU,IAAI,IAAI,IAAIJ,SAAS,CAACluC,SAAS,CAACkF,QAAQ,CAAC,QAAQ,CAAC,EAAE;QAC9GgpC,SAAS,CAACluC,SAAS,CAAC6O,MAAM,CAAC,QAAQ,CAAC;QACpCy/B,UAAU,CAACtuC,SAAS,CAACC,GAAG,CAAC,QAAQ,CAAC;MACtC;MACA,IAAIiuC,SAAS,CAACS,QAAQ,EAAE;QACpBT,SAAS,CAACS,QAAQ,GAAG,KAAK;MAC9B;MACA,IAAIN,wBAAwB,IAAIA,wBAAwB,IAAI,IAAI,EAAE;QAC9DA,wBAAwB,CAACruC,SAAS,CAACC,GAAG,CAAC,QAAQ,CAAC;MACpD;MACA,IAAIkuC,iBAAiB,IAAIA,iBAAiB,IAAI,IAAI,IAAIC,kBAAkB,IAAIA,kBAAkB,IAAI,IAAI,EAAE;QACpGD,iBAAiB,CAACnuC,SAAS,CAACC,GAAG,CAAC,QAAQ,CAAC;QACzC,EAAE,CAACxE,OAAO,CAACqH,IAAI,CAACsrC,kBAAkB,EAAE,UAASngB,SAAS,EAAE;UACpDA,SAAS,CAACjuB,SAAS,CAACC,GAAG,CAAC,QAAQ,CAAC;QACrC,CAAC,CAAC;MACN;IACJ,CAAC,MAAM;MACH,IAAIuuC,cAAc,KAAK,OAAO,IAAIN,SAAS,IAAIA,SAAS,IAAI,IAAI,IAAII,UAAU,IAAIA,UAAU,IAAI,IAAI,IAAIA,UAAU,CAACtuC,SAAS,CAACkF,QAAQ,CAAC,QAAQ,CAAC,EAAE;QAC7IopC,UAAU,CAACtuC,SAAS,CAAC6O,MAAM,CAAC,QAAQ,CAAC;QACrCq/B,SAAS,CAACluC,SAAS,CAACC,GAAG,CAAC,QAAQ,CAAC;MACrC;MACA,IAAIkuC,iBAAiB,IAAIA,iBAAiB,IAAI,IAAI,IAAIA,iBAAiB,CAACnuC,SAAS,CAACkF,QAAQ,CAAC,QAAQ,CAAC,IAAIkpC,kBAAkB,IAAIA,kBAAkB,IAAI,IAAI,EAAE;QACtJD,iBAAiB,CAACnuC,SAAS,CAAC6O,MAAM,CAAC,QAAQ,CAAC;QAC5C,EAAE,CAACpT,OAAO,CAACqH,IAAI,CAACsrC,kBAAkB,EAAE,UAASngB,SAAS,EAAE;UACpD,IAAKA,SAAS,CAACjuB,SAAS,CAACkF,QAAQ,CAAC,QAAQ,CAAC,EAAE;YACzC+oB,SAAS,CAACjuB,SAAS,CAAC6O,MAAM,CAAC,QAAQ,CAAC;UACxC;QACJ,CAAC,CAAC;MACN;MACA,IAAIw/B,wBAAwB,IAAIA,wBAAwB,IAAI,IAAI,IAAIA,wBAAwB,CAACruC,SAAS,CAACkF,QAAQ,CAAC,QAAQ,CAAC,EAAE;QACvHmpC,wBAAwB,CAACruC,SAAS,CAAC6O,MAAM,CAAC,QAAQ,CAAC;MACvD;IACJ;EACJ,CAAC,MAAM;IACH,IAAIo/B,kBAAkB,IAAIA,kBAAkB,IAAI,IAAI,EAAE;MAClD,IAAIC,SAAS,CAACS,QAAQ,EAAE;QACpBT,SAAS,CAACS,QAAQ,GAAG,KAAK;MAC9B;MACA,IAAIR,iBAAiB,IAAIA,iBAAiB,IAAI,IAAI,IAAIC,kBAAkB,IAAIA,kBAAkB,IAAI,IAAI,EAAE;QACpGD,iBAAiB,CAACnuC,SAAS,CAACC,GAAG,CAAC,QAAQ,CAAC;QACzC,EAAE,CAACxE,OAAO,CAACqH,IAAI,CAACsrC,kBAAkB,EAAE,UAASngB,SAAS,EAAE;UACpDA,SAAS,CAACjuB,SAAS,CAACC,GAAG,CAAC,QAAQ,CAAC;QACrC,CAAC,CAAC;MACN;MACA,IAAIouC,wBAAwB,IAAIA,wBAAwB,IAAI,IAAI,EAAE;QAC9DA,wBAAwB,CAACruC,SAAS,CAACC,GAAG,CAAC,QAAQ,CAAC;MACpD;MACA,IAAIiuC,SAAS,IAAIA,SAAS,IAAI,IAAI,IAAII,UAAU,IAAIA,UAAU,IAAI,IAAI,IAAIL,kBAAkB,CAACtvB,OAAO,CAAC+vB,YAAY,KAAK,MAAM,IAAIF,cAAc,IAAI,MAAM,EAAE;QACtJ,IAAIN,SAAS,CAACluC,SAAS,CAACkF,QAAQ,CAAC,QAAQ,CAAC,EAAE;UACxCgpC,SAAS,CAACluC,SAAS,CAAC6O,MAAM,CAAC,QAAQ,CAAC;UACpCy/B,UAAU,CAACtuC,SAAS,CAACC,GAAG,CAAC,QAAQ,CAAC;QACtC;MACJ,CAAC,MAAM;QACH,IAAIuuC,cAAc,KAAK,OAAO,IAAIN,SAAS,IAAIA,SAAS,IAAI,IAAI,IAAII,UAAU,IAAIA,UAAU,IAAI,IAAI,IAAIA,UAAU,CAACtuC,SAAS,CAACkF,QAAQ,CAAC,QAAQ,CAAC,EAAE;UAC7IopC,UAAU,CAACtuC,SAAS,CAAC6O,MAAM,CAAC,QAAQ,CAAC;UACrCq/B,SAAS,CAACluC,SAAS,CAACC,GAAG,CAAC,QAAQ,CAAC;QACrC;QACA,IAAIkuC,iBAAiB,IAAIA,iBAAiB,IAAI,IAAI,IAAIA,iBAAiB,CAACnuC,SAAS,CAACkF,QAAQ,CAAC,QAAQ,CAAC,IAAIkpC,kBAAkB,IAAIA,kBAAkB,IAAI,IAAI,EAAG;UACvJD,iBAAiB,CAACnuC,SAAS,CAAC6O,MAAM,CAAC,QAAQ,CAAC;UAC5C,EAAE,CAACpT,OAAO,CAACqH,IAAI,CAACsrC,kBAAkB,EAAE,UAASngB,SAAS,EAAE;YACpD,IAAKA,SAAS,CAACjuB,SAAS,CAACkF,QAAQ,CAAC,QAAQ,CAAC,EAAE;cACzC+oB,SAAS,CAACjuB,SAAS,CAAC6O,MAAM,CAAC,QAAQ,CAAC;YACxC;UACJ,CAAC,CAAC;QACN;QACA,IAAIw/B,wBAAwB,IAAIA,wBAAwB,IAAI,IAAI,IAAIA,wBAAwB,CAACruC,SAAS,CAACkF,QAAQ,CAAC,QAAQ,CAAC,EAAE;UACvHmpC,wBAAwB,CAACruC,SAAS,CAAC6O,MAAM,CAAC,QAAQ,CAAC;QACvD;MACJ;IACJ;EACJ;AACJ;AAEO,SAAS+/B,iBAAiBA,CAAA,EAAG;EAChC,IAAIC,oBAAoB,GAAGnvC,CAAC,CAAC,4CAA4C,CAAC;EAC1E,IAAIovC,YAAY,GAAGpvC,CAAC,CAAC,yCAAyC,CAAC;EAC/D,IAAIlF,GAAG,GAAGs0C,YAAY,CAACxuC,IAAI,CAAC,QAAQ,CAAC;EACrC,IAAIyuC,QAAQ,GAAGD,YAAY,CAACE,SAAS,CAAC,CAAC;EACvC,IAAInG,GAAG;EACP,IAAIoG,cAAc,GAAG7yC,QAAQ,CAACiF,aAAa,CAAC,8BAA8B,CAAC;EAC3E,IAAI4tC,cAAc,EAAE;IAChBpG,GAAG,GAAGoG,cAAc,CAACtwB,OAAO,CAACkqB,GAAG;EACpC;EAEAkG,QAAQ,GAAGlG,GAAG,GAAIkG,QAAQ,GAAG,OAAO,GAAGlG,GAAG,GAAG,qBAAqB,GAAIkG,QAAQ;EAC9E,IAAIrnC,MAAM,GAAGonC,YAAY,CAACI,OAAO,CAAC,8CAA8C,CAAC;EACjF,IAAIL,oBAAoB,IAAIC,YAAY,IAAIt0C,GAAG,IAAIu0C,QAAQ,IAAIrnC,MAAM,EAAE;IACnEhI,CAAC,CAACwpB,IAAI,CAAC;MACH1uB,GAAG,EAAEA,GAAG;MACRsJ,IAAI,EAAE,MAAM;MACZqrC,KAAK,EAAE,KAAK;MACZC,KAAK,EAAE,KAAK;MACZ30C,IAAI,EAAE;QAAC,UAAU,EAAEs0C;MAAQ,CAAC;MAC5Btc,OAAO,EAAE,SAATA,OAAOA,CAAWh4B,IAAI,EAAE;QACpB,IAAIA,IAAI,CAACg4B,OAAO,EAAE;UACd,IAAItF,cAAc,GAAGzlB,MAAM,CAACwd,IAAI,CAAC,oBAAoB,CAAC;UACtDxd,MAAM,CAACwd,IAAI,CAAC,mDAAmD,CAAC,CAAC+C,IAAI,CAACxtB,IAAI,CAAC40C,cAAc,CAAC;UAC1F3nC,MAAM,CAACwd,IAAI,CAAC,2DAA2D,CAAC,CAAC9kB,WAAW,CAAC,QAAQ,CAAC;UAC9F,IAAI3F,IAAI,CAAC60C,gBAAgB,IAAI70C,IAAI,CAAC60C,gBAAgB,CAACC,WAAW,EAAE;YAC5DpiB,cAAc,CAAC/sB,WAAW,CAAC,QAAQ,CAAC;YACpC+sB,cAAc,CAAC/sB,WAAW,CAAC,UAAU,CAAC;YACtC+sB,cAAc,CAAC9sB,UAAU,CAAC,UAAU,CAAC;UACzC,CAAC,MAAM;YACH8sB,cAAc,CAAC/sB,WAAW,CAAC,QAAQ,CAAC;YACpC+sB,cAAc,CAAChH,QAAQ,CAAC,UAAU,CAAC;YACnCgH,cAAc,CAAC7sB,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC;UACzC;QACJ,CAAC,MAAM;UACHoH,MAAM,CAACwd,IAAI,CAAC,4CAA4C,CAAC,CAACiT,IAAI,CAAC19B,IAAI,CAAC+0C,QAAQ,CAAC;QACjF;MACJ,CAAC;MACD9zC,KAAK,EAAE,SAAPA,KAAKA,CAAWjB,IAAI,EAAE;QAClB6G,OAAO,CAACooB,GAAG,CAAChvB,IAAI,CAACC,SAAS,CAACF,IAAI,CAAC,CAAC;MACrC;IACJ,CAAC,CAAC;EACN;AACJ,C;;;;;;;;;;;;ACrbA;AAAA;AAAA;AAAyC;AAElC,SAASg1C,qBAAqBA,CAAA,EAAG;EACpC,IAAIC,MAAM,GAAGtzC,QAAQ,CAACiF,aAAa,CAAC,sBAAsB,CAAC;IACvDsuC,MAAM,GAAGvzC,QAAQ,CAACwG,gBAAgB,CAAC,iCAAiC,CAAC;IACrEgtC,YAAY,GAAGxzC,QAAQ,CAACiF,aAAa,CAAC,gCAAgC,CAAC;IACvEwuC,aAAa,GAAGzzC,QAAQ,CAACiF,aAAa,CAAC,iCAAiC,CAAC;IACzEyuC,SAAS,GAAG1zC,QAAQ,CAACwG,gBAAgB,CAAC,mBAAmB,CAAC;IAC1DmtC,UAAU,GAAG3zC,QAAQ,CAACwG,gBAAgB,CAAC,yBAAyB,CAAC;IACjEotC,aAAa,GAAG5zC,QAAQ,CAACwG,gBAAgB,CAAC,wBAAwB,CAAC;IACnEqtC,WAAW,GAAG7zC,QAAQ,CAACwG,gBAAgB,CAAC,0BAA0B,CAAC;IACnEstC,QAAQ,GAAG9zC,QAAQ,CAACwG,gBAAgB,CAAC,oCAAoC,CAAC;IAC1EutC,eAAe,GAAG/zC,QAAQ,CAACiF,aAAa,CAAC,+BAA+B,CAAC;IACzE+uC,eAAe,GAAGh0C,QAAQ,CAACiF,aAAa,CAAC,gCAAgC,CAAC;IAC1EgvC,UAAU,GAAGj0C,QAAQ,CAACiF,aAAa,CAAC,6BAA6B,CAAC;IAClEivC,cAAc,GAAGl0C,QAAQ,CAACwG,gBAAgB,CAAC,yBAAyB,CAAC;IACrE2tC,cAAc,GAAGn0C,QAAQ,CAACwG,gBAAgB,CAAC,yBAAyB,CAAC;IACrE4tC,UAAU,GAAGp0C,QAAQ,CAACiF,aAAa,CAAC,oBAAoB,CAAC;IACzDovC,aAAa,GAAGr0C,QAAQ,CAACwG,gBAAgB,CAAC,wBAAwB,CAAC;IACnE8tC,eAAe,GAAGt0C,QAAQ,CAACwG,gBAAgB,CAAC,8BAA8B,CAAC;IAC3E+tC,UAAU,GAAGv0C,QAAQ,CAACiF,aAAa,CAAC,oCAAoC,CAAC;IACzEuvC,YAAY,GAAGx0C,QAAQ,CAACu8B,sBAAsB,CAAC,KAAK,CAAC;IACrDkY,MAAM,GAAGz0C,QAAQ,CAACwG,gBAAgB,CAAC,iCAAiC,CAAC;IACrEkuC,SAAS,GAAGF,YAAY,IAAIA,YAAY,CAACp1C,MAAM,GAAG,CAAC;EAEvD,IAAMu1C,kBAAkB,GAAG,WAAW;IAClCC,kBAAkB,GAAG,WAAW;IAChCC,oBAAoB,GAAG,aAAa;IACpCC,sBAAsB,GAAG,SAAS;IAClCC,yBAAyB,GAAG,iBAAiB;EAGjD,SAASC,WAAWA,CAACr1C,OAAO,EAAE;IAC1B,IAAI2zC,MAAM,EAAE;MACR,IAAI1nB,OAAO,GAAG0nB,MAAM,CAAC2B,aAAa;MAClCrpB,OAAO,CAACspB,WAAW,CAAC52C,IAAI,CAACC,SAAS,CAACoB,OAAO,CAAC,EAAE,GAAG,CAAC;IACrD;EACJ;EAEA,SAASw1C,uBAAuBA,CAACjc,KAAK,EAAE;IACpC,IAAI;MACA,IAAI76B,IAAI,GAAG,OAAO66B,KAAK,CAAC76B,IAAI,KAAK,QAAQ,GAAGC,IAAI,CAAC+jB,KAAK,CAAC6W,KAAK,CAAC76B,IAAI,CAAC,GAAG66B,KAAK,CAAC76B,IAAI;MAC/E,IAAKA,IAAI,CAAC+2C,YAAY,IAAIN,sBAAsB,EAAG;QAC/CE,WAAW,CAAC;UAACK,OAAO,EAAEnc,KAAK,CAACoc,aAAa,CAACC;QAAO,CAAC,CAAC;QACnDjyC,CAAC,CAAC,gCAAgC,CAAC,CAACymB,QAAQ,CAAC,eAAe,CAAC;MACjE;IACJ,CAAC,CAAC,OAAOjsB,CAAC,EAAE;MACRoH,OAAO,CAACooB,GAAG,CAAC,CAAC;IACjB;EACJ;EAEA,SAASkoB,cAAcA,CAACtc,KAAK,EAAE;IAC3B,IAAI;MACA,IAAI76B,IAAI,GAAG,OAAO66B,KAAK,CAAC76B,IAAI,KAAK,QAAQ,GAAGC,IAAI,CAAC+jB,KAAK,CAAC6W,KAAK,CAAC76B,IAAI,CAAC,GAAG66B,KAAK,CAAC76B,IAAI;MAC/E,IAAKA,IAAI,CAAC+2C,YAAY,IAAIN,sBAAsB,EAAG;QAC/CW,YAAY,CAAC,CAAC;MAClB;MACA,IAAKp3C,IAAI,CAAC+2C,YAAY,IAAIN,sBAAsB,IAAIz2C,IAAI,CAACq3C,QAAQ,IAAIX,yBAAyB,EAAG;QAC7FY,gBAAgB,CAAC,CAAC;MACtB;IACJ,CAAC,CAAC,OAAO73C,CAAC,EAAE;MACR,OAAO,KAAK;IAChB;IACA,IAAI2uC,GAAG,GAAGnpC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC8K,YAAY,CAAC,UAAU,CAAC;IACpD,IAAIwnC,QAAQ,GAAG,EAAE;IACjB,IAAIv3C,IAAI,CAAC66B,KAAK,KAAK33B,SAAS,KAAKlD,IAAI,CAAC66B,KAAK,KAAK,8BAA8B,IAAI76B,IAAI,CAAC66B,KAAK,KAAK,gBAAgB,CAAC,EAAE;MAChH0c,QAAQ,GAAGv3C,IAAI,CAAC66B,KAAK;IACzB,CAAC,MAAM,IAAI76B,IAAI,CAACq3C,QAAQ,KAAKn0C,SAAS,IAAIlD,IAAI,CAACq3C,QAAQ,KAAK,iBAAiB,EAAE;MAC3EE,QAAQ,GAAG,WAAW;IAC1B;IAEA,IAAIA,QAAQ,IAAI,EAAE,EAAE;MAChBplB,wDAAO,CAACxE,QAAQ,CAAC1nB,IAAI,CAAC,IAAI,EAAE;QACxB6wB,UAAU,EAAEygB,QAAQ;QACpBxgB,WAAW,EAAE;UACTC,QAAQ,EAAEp4B,MAAM,CAACC,IAAI,CAACqH,IAAI,CAACsxC,YAAY;UACvC/f,WAAW,EAAE;YACT2W,GAAG,EAAEA;UACT;QACJ;MACJ,CAAC,CAAC;IACN;EACJ;EAEA,IAAIiI,SAAS,EAAE;IACXz3C,MAAM,CAACsI,gBAAgB,CAAC,SAAS,EAAEiwC,cAAc,EAAE,KAAK,CAAC;EAC7D;EAEA,SAASC,YAAYA,CAAA,EAAG;IACpB,IAAI7pB,OAAO,GAAG0nB,MAAM,CAAC2B,aAAa;MAC9Ba,eAAe,GAAGxyC,CAAC,CAACgwC,MAAM,CAAC,CAACpvC,IAAI,CAAC,sBAAsB,CAAC;IAE5D,IAAI4xC,eAAe,IAAIv0C,SAAS,IAAIu0C,eAAe,CAAC12C,MAAM,GAAG,CAAC,EAAE;MAC5DwsB,OAAO,CAACspB,WAAW,CAAC52C,IAAI,CAACC,SAAS,CAAC;QAACu3C,eAAe,EAAEA;MAAe,CAAC,CAAC,EAAE,GAAG,CAAC;IAChF;EAEJ;EAEA,SAASH,gBAAgBA,CAAA,EAAG;IACxB,IAAI/pB,OAAO,GAAG0nB,MAAM,CAAC2B,aAAa;MAC9Bc,aAAa,GAAGzyC,CAAC,CAACgwC,MAAM,CAAC,CAACpvC,IAAI,CAAC,2BAA2B,CAAC;IAE/D,IAAI6xC,aAAa,IAAIx0C,SAAS,IAAIw0C,aAAa,CAAC32C,MAAM,GAAG,CAAC,EAAE;MACxDwsB,OAAO,CAACspB,WAAW,CAAC52C,IAAI,CAACC,SAAS,CAAC;QAACy3C,aAAa,EAAED;MAAa,CAAC,CAAC,EAAE,GAAG,CAAC;IAC5E;EAEJ;EAEA,SAASE,YAAYA,CAACt2C,OAAO,EAAE+H,IAAI,EAAEwuC,KAAK,EAAE;IACxC,IAAI5yC,CAAC,CAAC,YAAY,CAAC,CAACuT,QAAQ,CAAC,YAAY,CAAC,EAAE;MACxCvT,CAAC,CAAC,YAAY,CAAC,CAACU,WAAW,CAAC,YAAY,CAAC;IAC7C;IACA,IAAImyC,KAAK,GAAGD,KAAK,CAACE,UAAU,CAACjoC,OAAO,CAAC,oBAAoB,CAAC;MACtDkoC,OAAO,GAAG/yC,CAAC,CAAC6yC,KAAK,CAAC,CAACrtB,IAAI,CAAC,sBAAsB,CAAC;MAC/CwtB,YAAY;MACZ1qB,OAAO;IACXyqB,OAAO,CAACtsB,QAAQ,CAAC,YAAY,CAAC;IAC9BusB,YAAY,GAAGt2C,QAAQ,CAACiF,aAAa,CAAC,aAAa,CAAC,EACpD2mB,OAAO,GAAG0qB,YAAY,CAACrB,aAAa;IACpCrpB,OAAO,CAACspB,WAAW,CAAC52C,IAAI,CAACC,SAAS,CAACmJ,IAAI,CAAC,EAAE,GAAG,CAAC;IAC9CkkB,OAAO,CAACspB,WAAW,CAAC52C,IAAI,CAACC,SAAS,CAACoB,OAAO,CAAC,EAAE,GAAG,CAAC;EACrD;EACA,SAAS42C,wBAAwBA,CAACrd,KAAK,EAAE;IACrC,IAAI;MACA,IAAI76B,IAAI,GAAG,OAAO66B,KAAK,CAAC76B,IAAI,KAAK,QAAQ,GAAGC,IAAI,CAAC+jB,KAAK,CAAC6W,KAAK,CAAC76B,IAAI,CAAC,GAAG66B,KAAK,CAAC76B,IAAI;MAC/E,IAAIm4C,OAAO;MACX,IAAIjD,MAAM,CAAC,CAAC,CAAC,CAAChxB,OAAO,CAACk0B,OAAO,KAAK9B,kBAAkB,IAAIt2C,IAAI,CAAC+2C,YAAY,KAAKN,sBAAsB,EAAE;QAClGE,WAAW,CAAC;UAAC0B,IAAI,EAAE;QAAW,CAAC,CAAC;QAChC1B,WAAW,CAAC;UAAC2B,cAAc,EAAE1C,UAAU,CAAChuC;QAAK,CAAC,CAAC;QAC/C2wC,WAAW,CAAC1C,cAAc,EAAE,MAAM,EAAES,kBAAkB,CAAC;QACvDkC,iBAAiB,CAAC1C,cAAc,EAAE,MAAM,CAAC;QACzC,IAAIC,UAAU,CAACjxB,OAAO,EAAE;UACpB,IAAI8wB,UAAU,CAAChuC,KAAK,CAAC7G,MAAM,GAAG,CAAC,IAAIg1C,UAAU,CAACjxB,OAAO,EAAE;YACnDqzB,OAAO,GAAGvC,UAAU,CAAChuC,KAAK,CAACqJ,KAAK,CAAC,EAAE,CAAC,CAAC6sB,IAAI,CAAC,GAAG,CAAC;UAClD,CAAC,MAAM,IAAI8X,UAAU,CAAChuC,KAAK,CAAC7G,MAAM,IAAI,CAAC,IAAI,CAACg1C,UAAU,CAACjxB,OAAO,EAAE;YAC5DqzB,OAAO,GAAGvC,UAAU,CAAChuC,KAAK;UAC9B,CAAC,MAAM,IAAI,IAAI,CAACA,KAAK,CAAC7G,MAAM,IAAI,CAAC,IAAI,CAACg1C,UAAU,CAACjxB,OAAO,EAAE;YACtDqzB,OAAO,GAAGvC,UAAU,CAAChuC,KAAK;UAC9B;UACA+uC,WAAW,CAAC;YAAC2B,cAAc,EAAEH;UAAO,CAAC,CAAC;QAC1C;MACJ,CAAC,MAAM,IAAIjD,MAAM,CAAC,CAAC,CAAC,CAAChxB,OAAO,CAACk0B,OAAO,KAAK7B,kBAAkB,IAAIv2C,IAAI,CAAC+2C,YAAY,KAAKN,sBAAsB,EAAE;QACzGE,WAAW,CAAC;UAAC0B,IAAI,EAAE;QAAW,CAAC,CAAC;QAChC1B,WAAW,CAAC;UAAC8B,cAAc,EAAE/C,eAAe,CAAC9tC;QAAK,CAAC,CAAC;QACpD+uC,WAAW,CAAC;UAAC+B,cAAc,EAAE/C,eAAe,CAAC/tC;QAAK,CAAC,CAAC;QACpD2wC,WAAW,CAAC9C,QAAQ,EAAE,MAAM,EAAEc,kBAAkB,CAAC;MACrD,CAAC,MAAM,IAAIrB,MAAM,CAAC,CAAC,CAAC,CAAChxB,OAAO,CAACk0B,OAAO,KAAK5B,oBAAoB,IAAIx2C,IAAI,CAAC+2C,YAAY,KAAKN,sBAAsB,EAAE;QAC3GE,WAAW,CAAC;UAAC0B,IAAI,EAAE;QAAO,CAAC,CAAC;MAChC;IACJ,CAAC,CAAC,OAAO54C,CAAC,EAAE;MACRoH,OAAO,CAACooB,GAAG,CAAC,CAAC;IACjB;EACJ;EACA,IAAIimB,MAAM,KAAK,IAAI,IAAIA,MAAM,CAACn0C,MAAM,GAAG,CAAC,EAAE;IACtCnC,MAAM,CAACsI,gBAAgB,CAAC,SAAS,EAAEgxC,wBAAwB,EAAE,KAAK,CAAC;EACvE;EAEA,SAASK,WAAWA,CAAC9C,QAAQ,EAAE5a,KAAK,EAAE8d,OAAO,EAAE;IAC3C,IAAI9d,KAAK,KAAK,MAAM,EAAE;MAClB,KAAK,IAAI3uB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGupC,QAAQ,CAAC10C,MAAM,EAAE,EAAEmL,CAAC,EAAE;QACtC,IAAIupC,QAAQ,CAACvpC,CAAC,CAAC,CAAC4Y,OAAO,KAAK,IAAI,EAAE;UAC9B,IAAI8zB,QAAQ,GAAGnD,QAAQ,CAACvpC,CAAC,CAAC,CAACtE,KAAK;QACpC;MACJ;MACA,IAAI+wC,OAAO,KAAKpC,kBAAkB,EAAE;QAChC,IAAIqC,QAAQ,IAAI,SAAS,EAAE;UACvBjC,WAAW,CAAC;YAACkC,aAAa,EAAE;UAAO,CAAC,CAAC;QACzC,CAAC,MAAM;UACHlC,WAAW,CAAC;YAACkC,aAAa,EAAE;UAAW,CAAC,CAAC;QAC7C;MACJ,CAAC,MAAM,IAAIF,OAAO,KAAKrC,kBAAkB,EAAE;QACvCK,WAAW,CAAC;UAACmC,aAAa,EAAEF;QAAQ,CAAC,CAAC;MAC1C;IACJ,CAAC,MAAM;MACH,IAAID,OAAO,KAAKpC,kBAAkB,EAAE;QAChC,IAAId,QAAQ,CAAC7tC,KAAK,IAAI,SAAS,EAAE;UAC7B+uC,WAAW,CAAC;YAACkC,aAAa,EAAE;UAAO,CAAC,CAAC;QACzC,CAAC,MAAM;UACHlC,WAAW,CAAC;YAACkC,aAAa,EAAE;UAAW,CAAC,CAAC;QAC7C;MACJ;IACJ;EACJ;EAEA,SAASL,iBAAiBA,CAACO,QAAQ,EAAEle,KAAK,EAAE;IACxC,IAAIA,KAAK,KAAK,MAAM,EAAE;MAClB,KAAK,IAAI3uB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG6sC,QAAQ,CAACh4C,MAAM,EAAE,EAAEmL,CAAC,EAAE;QACtC,IAAI6sC,QAAQ,CAAC7sC,CAAC,CAAC,CAAC4Y,OAAO,KAAK,IAAI,EAAE;UAC9B,IAAI0zB,iBAAiB,GAAGO,QAAQ,CAAC7sC,CAAC,CAAC,CAACtE,KAAK;QAC7C;MACJ;MACA,IAAI4wC,iBAAiB,IAAI,MAAM,EAAE;QAC7B7B,WAAW,CAAC;UAACqC,cAAc,EAAE;QAAM,CAAC,CAAC;MACzC,CAAC,MAAM;QACHrC,WAAW,CAAC;UAACqC,cAAc,EAAE;QAAS,CAAC,CAAC;MAC5C;IACJ,CAAC,MAAM;MACH,IAAID,QAAQ,CAACnxC,KAAK,IAAI,MAAM,EAAE;QAC1B+uC,WAAW,CAAC;UAACqC,cAAc,EAAE;QAAM,CAAC,CAAC;MACzC,CAAC,MAAM;QACHrC,WAAW,CAAC;UAACqC,cAAc,EAAE;QAAS,CAAC,CAAC;MAC5C;IACJ;EACJ;EAEA,SAASC,sBAAsBA,CAACC,eAAe,EAAE;IAC7C,IAAIC,eAAe,GAAGx3C,QAAQ,CAACiF,aAAa,CAAC,4BAA4B,CAAC;IAC1E,IAAIuyC,eAAe,IAAIA,eAAe,CAACppC,YAAY,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE;MACnE,IAAIqpC,eAAe,GAAGz3C,QAAQ,CAACiF,aAAa,CAAC,6CAA6C,CAAC;MAC3F,IAAIwyC,eAAe,KAAKA,eAAe,CAACnqC,iBAAiB,IAAI,IAAI,IAAImqC,eAAe,CAACnqC,iBAAiB,IAAImqC,eAAe,CAACnqC,iBAAiB,CAACc,YAAY,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC,EAAE;QAClLmpC,eAAe,CAAC3zC,SAAS,CAAC6O,MAAM,CAAC,QAAQ,CAAC;MAC9C,CAAC,MAAM;QACH8kC,eAAe,CAAC3zC,SAAS,CAACC,GAAG,CAAC,QAAQ,CAAC;MAC3C;IACJ,CAAC,MAAM;MACH0zC,eAAe,CAAC3zC,SAAS,CAACC,GAAG,CAAC,QAAQ,CAAC;IAC3C;IACA,OAAO0zC,eAAe;EAC1B;EAEA,EAAE,CAACl4C,OAAO,CAACqH,IAAI,CAAC6sC,MAAM,EAAE,UAAAlH,WAAW;IAAA,OAAIA,WAAW,CAAC9mC,gBAAgB,CAAC,OAAO,EAAE,UAASzH,CAAC,EAAE;MACrF,IAAIA,CAAC,CAAC+K,MAAM,CAAClD,OAAO,CAAC,eAAe,CAAC,IAAI0mC,WAAW,CAACzoC,SAAS,CAACkF,QAAQ,CAAC,0BAA0B,CAAC,EAAE;QACjG,OAAO,KAAK;MAChB,CAAC,MAAM;QACH,IAAIyrC,UAAU,KAAK,IAAI,EAAE;UACrB,IAAI,IAAI,CAAChyB,OAAO,CAACm1B,KAAK,IAAI,aAAa,IAAI,IAAI,CAACn1B,OAAO,CAACo1B,aAAa,KAAK,MAAM,IAAI,CAAC,IAAI,CAAC/zC,SAAS,CAACkF,QAAQ,CAAC,0BAA0B,CAAC,EAAE;YACtIksC,WAAW,CAAC;cAAC0B,IAAI,EAAE;YAAW,CAAC,CAAC;YAChCnC,UAAU,GAAG+C,sBAAsB,CAAC/C,UAAU,CAAC;UACnD,CAAC,MAAM,IAAI,IAAI,CAAChyB,OAAO,CAACm1B,KAAK,IAAI,YAAY,EAAE;YAC3C1C,WAAW,CAAC;cAAC0B,IAAI,EAAE;YAAW,CAAC,CAAC;YAChCnC,UAAU,GAAG+C,sBAAsB,CAAC/C,UAAU,CAAC;UACnD,CAAC,MAAM;YACHA,UAAU,CAAC3wC,SAAS,CAAC6O,MAAM,CAAC,QAAQ,CAAC;UACzC;QACJ;QACA,IAAI,IAAI,CAAC8P,OAAO,CAACm1B,KAAK,IAAI,iBAAiB,EAAE;UACzC,IAAIE,aAAa,GAAG53C,QAAQ,CAACiF,aAAa,CAAC,0DAA0D,CAAC;UACtG,IAAI2yC,aAAa,EAAE;YACf5C,WAAW,CAAC;cAACK,OAAO,EAAEuC,aAAa,CAACr1B,OAAO,CAACoxB;YAAU,CAAC,CAAC;UAC5D;QACJ;MACJ;IACJ,CAAC,CAAC;EAAA,EAAC;EAEH,EAAE,CAACt0C,OAAO,CAACqH,IAAI,CAAC+tC,MAAM,EAAE,UAAApI,WAAW;IAAA,OAAIA,WAAW,CAAC9mC,gBAAgB,CAAC,OAAO,EAAE,UAASzH,CAAC,EAAE;MACrF,IAAIA,CAAC,CAAC+K,MAAM,CAAClD,OAAO,CAAC,eAAe,CAAC,EAAE;QACnC,OAAO,KAAK;MAChB,CAAC,MAAM;QACH,IAAI4uC,UAAU,KAAK,IAAI,EAAE;UACrB,IAAI,IAAI,CAAChyB,OAAO,CAACm1B,KAAK,IAAI,iBAAiB,EAAE;YACzC1C,WAAW,CAAC;cAAC0B,IAAI,EAAE;YAAO,CAAC,CAAC;YAC5BnC,UAAU,CAAC3wC,SAAS,CAACC,GAAG,CAAC,QAAQ,CAAC;UACtC,CAAC,MAAM;YACH0wC,UAAU,CAAC3wC,SAAS,CAAC6O,MAAM,CAAC,QAAQ,CAAC;UACzC;QACJ;MACJ;IACJ,CAAC,CAAC;EAAA,EAAC;EAEH,EAAE,CAACpT,OAAO,CAACqH,IAAI,CAAC2tC,aAAa,EAAE,UAAAhI,WAAW;IAAA,OAAIA,WAAW,CAAC9mC,gBAAgB,CAAC,OAAO,EAAE,YAAW;MAC3F,IAAI,IAAI,CAACgd,OAAO,CAACm1B,KAAK,IAAI,qBAAqB,EAAE;QAC7C1C,WAAW,CAAC;UAAC0B,IAAI,EAAE;QAAS,CAAC,CAAC;QAC9BnC,UAAU,CAAC3wC,SAAS,CAAC6O,MAAM,CAAC,QAAQ,CAAC;MACzC,CAAC,MAAM;QACH8hC,UAAU,CAAC3wC,SAAS,CAACC,GAAG,CAAC,QAAQ,CAAC;MACtC;IACJ,CAAC,CAAC;EAAA,EAAC;EAEH,EAAE,CAACxE,OAAO,CAACqH,IAAI,CAACgtC,SAAS,EAAE,UAAArH,WAAW;IAAA,OAAIA,WAAW,CAAC9mC,gBAAgB,CAAC,OAAO,EAAE,YAAW;MACvFvF,QAAQ,CAACwG,gBAAgB,CAAC,qBAAqB,CAAC,CAACnB,SAAS,GAAG,QAAQ;MACrE2vC,WAAW,CAAC,IAAI,CAACzyB,OAAO,CAAC;IAC7B,CAAC,CAAC;EAAA,EAAC;EAEH,EAAE,CAACljB,OAAO,CAACqH,IAAI,CAACitC,UAAU,EAAE,UAAAtH,WAAW;IAAA,OAAIA,WAAW,CAAC9mC,gBAAgB,CAAC,OAAO,EAAE,YAAW;MACxFvF,QAAQ,CAACwG,gBAAgB,CAAC,qBAAqB,CAAC,CAACnB,SAAS,GAAG,sBAAsB;MACnF,IAAK/B,CAAC,CAAC,gCAAgC,CAAC,CAACuT,QAAQ,CAAC,eAAe,CAAC,IAAMvT,CAAC,CAACrG,MAAM,CAAC,CAACstB,KAAK,CAAC,CAAC,GAAG,GAAI,EAAE;QAC9FyqB,WAAW,CAAC;UAACK,OAAO,EAAE,IAAI,CAAC9yB,OAAO,CAACoxB;QAAU,CAAC,CAAC;MACnD,CAAC,MAAM,IAAIrwC,CAAC,CAACrG,MAAM,CAAC,CAACstB,KAAK,CAAC,CAAC,GAAG,GAAG,EAAE;QAChCttB,MAAM,CAACsI,gBAAgB,CAAC,SAAS,EAAE4vC,uBAAuB,EAAE,KAAK,CAAC;QAClEl4C,MAAM,CAACs4C,OAAO,GAAG,IAAI,CAAChzB,OAAO,CAACoxB,UAAU;MAC5C,CAAC,MAAM;QACHqB,WAAW,CAAC;UAACK,OAAO,EAAE,IAAI,CAAC9yB,OAAO,CAACoxB;QAAU,CAAC,CAAC;MACnD;IACJ,CAAC,CAAC;EAAA,EAAC;EAEH,EAAE,CAACt0C,OAAO,CAACqH,IAAI,CAACktC,aAAa,EAAE,UAAAvH,WAAW;IAAA,OAAIA,WAAW,CAAC9mC,gBAAgB,CAAC,OAAO,EAAE,YAAW;MAC3FyvC,WAAW,CAAC;QAACK,OAAO,EAAE,IAAI,CAAC9yB,OAAO,CAACoxB;MAAU,CAAC,CAAC;IACnD,CAAC,CAAC;EAAA,EAAC;EAEH,EAAE,CAACt0C,OAAO,CAACqH,IAAI,CAACktC,aAAa,EAAE,UAAAvH,WAAW;IAAA,OAAIA,WAAW,CAAC9mC,gBAAgB,CAAC,UAAU,EAAE,YAAW;MAC9F,IAAIsyC,SAAS,GAAGv0C,CAAC,CAAC,IAAI,CAAC,CAACwlB,IAAI,CAAC,6BAA6B,CAAC;MAC3D+uB,SAAS,CAAC9sB,KAAK,CAAC,CAAC;IACrB,CAAC,CAAC;EAAA,EAAC;EAEH,EAAE,CAAC1rB,OAAO,CAACqH,IAAI,CAACmtC,WAAW,EAAE,UAAAxH,WAAW;IAAA,OAAIA,WAAW,CAAC9mC,gBAAgB,CAAC,OAAO,EAAE,YAAW;MACzF,IAAIuyC,OAAO,GAAG,IAAI,CAAC3pC,OAAO,CAAC,oBAAoB,CAAC;MAChD7K,CAAC,CAACw0C,OAAO,CAAC,CAAChvB,IAAI,CAAC,mBAAmB,CAAC,CAAC9kB,WAAW,CAAC,QAAQ,CAAC;MAC1D,IAAI,CAACJ,SAAS,CAACC,GAAG,CAAC,QAAQ,CAAC;MAC5B7D,QAAQ,CAACwG,gBAAgB,CAAC,qBAAqB,CAAC,CAACnB,SAAS,GAAG,sBAAsB;MACnF4wC,YAAY,CAAC;QAACZ,OAAO,EAAE,IAAI,CAAC9yB,OAAO,CAACoxB;MAAU,CAAC,EAAE;QAACD,SAAS,EAAE,IAAI,CAACnxB,OAAO,CAACmxB;MAAS,CAAC,EAAE;QAAC0C,UAAU,EAAE,IAAI,CAACjoC,OAAO,CAAC,uBAAuB;MAAC,CAAC,CAAC;IAC9I,CAAC,CAAC;EAAA,EAAC;EAEH,EAAE,CAAC9O,OAAO,CAACqH,IAAI,CAACotC,QAAQ,EAAE,UAAAzH,WAAW;IAAA,OAAIA,WAAW,CAAC9mC,gBAAgB,CAAC,QAAQ,EAAE,YAAW;MACvFqxC,WAAW,CAACvK,WAAW,EAAE,QAAQ,EAAEuI,kBAAkB,CAAC;IAC1D,CAAC,CAAC;EAAA,EAAC;EAEH,EAAE,CAACv1C,OAAO,CAACqH,IAAI,CAAC4tC,eAAe,EAAE,UAAAjI,WAAW;IAAA,OAAIA,WAAW,CAAC9mC,gBAAgB,CAAC,OAAO,EAAE,YAAW;MAC7F,IAAI,CAAC4I,OAAO,CAAC,uBAAuB,CAAC,CAACvK,SAAS,CAAC6O,MAAM,CAAC,gBAAgB,CAAC;MACxE8hC,UAAU,CAAC3wC,SAAS,CAAC6O,MAAM,CAAC,QAAQ,CAAC;MACrC,EAAE,CAACpT,OAAO,CAACqH,IAAI,CAAC6sC,MAAM,EAAE,UAAAlH,WAAW,EAAI;QACnCA,WAAW,CAACzoC,SAAS,CAAC6O,MAAM,CAAC,gBAAgB,CAAC;MAClD,CAAC,CAAC;IACN,CAAC,CAAC;EAAA,EAAC;EAEH,IAAI+gC,YAAY,EAAE;IACdA,YAAY,CAACjuC,gBAAgB,CAAC,OAAO,EAAE,YAAM;MACzCjC,CAAC,CAAC,4BAA4B,CAAC,CAAC8qC,KAAK,CAAC,SAAS,CAAC;IACpD,CAAC,EAAE;MAAC2J,IAAI,EAAE;IAAI,CAAC,CAAC;EACpB;EAEA,IAAItE,aAAa,EAAE;IACfA,aAAa,CAACluC,gBAAgB,CAAC,OAAO,EAAE,YAAM;MAC1CjC,CAAC,CAAC,6BAA6B,CAAC,CAAC8qC,KAAK,CAAC,SAAS,CAAC;IACrD,CAAC,EAAE;MAAC2J,IAAI,EAAE;IAAI,CAAC,CAAC;EACpB;EAEA,IAAIhE,eAAe,EAAE;IACjBA,eAAe,CAACxuC,gBAAgB,CAAC,OAAO,EAAE,YAAW;MACjDyvC,WAAW,CAAC;QAAC8B,cAAc,EAAE,IAAI,CAAC7wC;MAAK,CAAC,CAAC;MACzC2wC,WAAW,CAAC9C,QAAQ,EAAE,MAAM,EAAEc,kBAAkB,CAAC;IACrD,CAAC,CAAC;EACN;EAEA,IAAIZ,eAAe,EAAE;IACjBA,eAAe,CAACzuC,gBAAgB,CAAC,OAAO,EAAE,YAAW;MACjDyvC,WAAW,CAAC;QAAC+B,cAAc,EAAE,IAAI,CAAC9wC;MAAK,CAAC,CAAC;MACzC2wC,WAAW,CAAC9C,QAAQ,EAAE,MAAM,EAAEc,kBAAkB,CAAC;IACrD,CAAC,CAAC;EACN;EAEA,IAAIX,UAAU,EAAE;IACZA,UAAU,CAAC1uC,gBAAgB,CAAC,OAAO,EAAE,YAAW;MAC5C,IAAIyyC,YAAY,EACZC,cAAc;MAClB,IAAI7D,UAAU,CAACjxB,OAAO,EAAE;QACpB60B,YAAY,GAAG,KAAK;MACxB,CAAC,MAAM;QACHA,YAAY,GAAG,IAAI;MACvB;MACA,IAAI,IAAI,CAAC/xC,KAAK,CAAC7G,MAAM,GAAG,CAAC,IAAI,CAAC44C,YAAY,EAAE;QACxCC,cAAc,GAAG,IAAI,CAAChyC,KAAK,CAACqJ,KAAK,CAAC,EAAE,CAAC,CAAC6sB,IAAI,CAAC,GAAG,CAAC;MACnD,CAAC,MAAM,IAAI,IAAI,CAACl2B,KAAK,CAAC7G,MAAM,IAAI,CAAC,IAAI,CAAC44C,YAAY,EAAE;QAChDC,cAAc,GAAG,IAAI,CAAChyC,KAAK;MAC/B,CAAC,MAAM,IAAI,IAAI,CAACA,KAAK,CAAC7G,MAAM,IAAI,CAAC,IAAI44C,YAAY,EAAE;QAC/CC,cAAc,GAAG,IAAI,CAAChyC,KAAK;MAC/B;MACA+uC,WAAW,CAAC;QAAC2B,cAAc,EAAEsB;MAAc,CAAC,CAAC;MAC7C,KAAK,IAAI1tC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG2pC,cAAc,CAAC90C,MAAM,EAAE,EAAEmL,CAAC,EAAE;QAC5C,IAAI2pC,cAAc,CAAC3pC,CAAC,CAAC,CAAC4Y,OAAO,KAAK,IAAI,EAAE;UACpC,IAAI+0B,WAAW,GAAGhE,cAAc,CAAC3pC,CAAC,CAAC,CAACtE,KAAK;QAC7C;MACJ;MACA,KAAKsE,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG4pC,cAAc,CAAC/0C,MAAM,EAAE,EAAEmL,CAAC,EAAE;QACxC,IAAI4pC,cAAc,CAAC5pC,CAAC,CAAC,CAAC4Y,OAAO,KAAK,IAAI,EAAE;UACpC,IAAIg1B,WAAW,GAAGhE,cAAc,CAAC5pC,CAAC,CAAC,CAACtE,KAAK;QAC7C;MACJ;MACA+uC,WAAW,CAAC;QAACmC,aAAa,EAAEe;MAAW,CAAC,CAAC;MACzClD,WAAW,CAAC;QAACqC,cAAc,EAAEc;MAAW,CAAC,CAAC;IAC9C,CAAC,CAAC;EACN;EAEA,EAAE,CAAC94C,OAAO,CAACqH,IAAI,CAACwtC,cAAc,EAAE,UAAA7H,WAAW;IAAA,OAAIA,WAAW,CAAC9mC,gBAAgB,CAAC,QAAQ,EAAE,YAAW;MAC7FyvC,WAAW,CAAC;QAACmC,aAAa,EAAE,IAAI,CAAClxC;MAAK,CAAC,CAAC;IAC5C,CAAC,CAAC;EAAA,EAAC;EAEH,EAAE,CAAC5G,OAAO,CAACqH,IAAI,CAACytC,cAAc,EAAE,UAAA9H,WAAW;IAAA,OAAIA,WAAW,CAAC9mC,gBAAgB,CAAC,QAAQ,EAAE,YAAW;MAC7FsxC,iBAAiB,CAACxK,WAAW,EAAE,QAAQ,CAAC;IAC5C,CAAC,CAAC;EAAA,EAAC;EACH,IAAI+H,UAAU,EAAE;IACZA,UAAU,CAAC7uC,gBAAgB,CAAC,QAAQ,EAAE,YAAW;MAC7C,IAAIixC,OAAO;MACX,IAAIpC,UAAU,CAACjxB,OAAO,EAAE;QACpB,IAAI8wB,UAAU,CAAChuC,KAAK,CAAC7G,MAAM,GAAG,CAAC,IAAIg1C,UAAU,CAACjxB,OAAO,EAAE;UACnDqzB,OAAO,GAAGvC,UAAU,CAAChuC,KAAK,CAACqJ,KAAK,CAAC,EAAE,CAAC,CAAC6sB,IAAI,CAAC,GAAG,CAAC;QAClD,CAAC,MAAM,IAAI8X,UAAU,CAAChuC,KAAK,CAAC7G,MAAM,IAAI,CAAC,IAAI,CAACg1C,UAAU,CAACjxB,OAAO,EAAE;UAC5DqzB,OAAO,GAAGvC,UAAU,CAAChuC,KAAK;QAC9B,CAAC,MAAM,IAAI,IAAI,CAACA,KAAK,CAAC7G,MAAM,IAAI,CAAC,IAAI,CAACg1C,UAAU,CAACjxB,OAAO,EAAE;UACtDqzB,OAAO,GAAGvC,UAAU,CAAChuC,KAAK;QAC9B;MACJ,CAAC,MAAM;QACHuwC,OAAO,GAAGvC,UAAU,CAAChuC,KAAK;MAC9B;MACA+uC,WAAW,CAAC;QAAC2B,cAAc,EAAEH;MAAO,CAAC,CAAC;IAC1C,CAAC,CAAC;EACN;AACJ,C;;;;;;;;;;;;AC5YA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAa;;AAAA,SAAA4B,mBAAAv/B,CAAA,WAAAw/B,kBAAA,CAAAx/B,CAAA,KAAAy/B,gBAAA,CAAAz/B,CAAA,KAAAE,2BAAA,CAAAF,CAAA,KAAA0/B,kBAAA;AAAA,SAAAA,mBAAA,cAAAl/B,SAAA;AAAA,SAAAN,4BAAAF,CAAA,EAAA9N,CAAA,QAAA8N,CAAA,2BAAAA,CAAA,SAAAY,iBAAA,CAAAZ,CAAA,EAAA9N,CAAA,OAAA+N,CAAA,MAAAjL,QAAA,CAAAnH,IAAA,CAAAmS,CAAA,EAAAa,KAAA,6BAAAZ,CAAA,IAAAD,CAAA,CAAAlc,WAAA,KAAAmc,CAAA,GAAAD,CAAA,CAAAlc,WAAA,CAAAyX,IAAA,aAAA0E,CAAA,cAAAA,CAAA,GAAAvJ,KAAA,CAAAoK,IAAA,CAAAd,CAAA,oBAAAC,CAAA,+CAAAc,IAAA,CAAAd,CAAA,IAAAW,iBAAA,CAAAZ,CAAA,EAAA9N,CAAA;AAAA,SAAAutC,iBAAAz/B,CAAA,8BAAApc,MAAA,YAAAoc,CAAA,CAAApc,MAAA,CAAAC,QAAA,aAAAmc,CAAA,uBAAAtJ,KAAA,CAAAoK,IAAA,CAAAd,CAAA;AAAA,SAAAw/B,mBAAAx/B,CAAA,QAAAtJ,KAAA,CAAAC,OAAA,CAAAqJ,CAAA,UAAAY,iBAAA,CAAAZ,CAAA;AAAA,SAAAY,kBAAAZ,CAAA,EAAA9N,CAAA,aAAAA,CAAA,IAAAA,CAAA,GAAA8N,CAAA,CAAAzZ,MAAA,MAAA2L,CAAA,GAAA8N,CAAA,CAAAzZ,MAAA,YAAAtB,CAAA,MAAAob,CAAA,GAAA3J,KAAA,CAAAxE,CAAA,GAAAjN,CAAA,GAAAiN,CAAA,EAAAjN,CAAA,IAAAob,CAAA,CAAApb,CAAA,IAAA+a,CAAA,CAAA/a,CAAA,UAAAob,CAAA;AAEyF;AACF;AACjD;AACsC;AACqB;AACrD;AACG;AACT;;AAEnD;AACA;AACA;AACA;AACA;AACA,SAASs/B,sBAAsBA,CAAA,EAAG;EAC9B,IAAIC,kBAAkB,GAAG,EAAE;EAE3B9gC,oFAAkB,CAAC,8CAA8C,EAAE,UAASlJ,cAAc,EAAE;IACxF,IAAIA,cAAc,CAACoY,MAAM,IAAIpY,cAAc,CAAC7K,SAAS,CAACkF,QAAQ,CAAC,oBAAoB,CAAC,EAAE;MAClF2vC,kBAAkB,CAAC74C,IAAI,CAAC6O,cAAc,CAACN,OAAO,CAAC,wBAAwB,CAAC,CAACC,YAAY,CAAC,sBAAsB,CAAC,CAAC;IAClH;EACJ,CAAC,CAAC;EAEF,OAAOqqC,kBAAkB;AAC7B;AAEA,SAASC,mBAAmBA,CAAA,EAAG;EAC3B,IAAIC,cAAc,GAAG34C,QAAQ,CAACiF,aAAa,CAAC,wDAAwD,CAAC;EAErG,IAAI0zC,cAAc,EAAE;IAChB,OAAOA,cAAc,CAACvqC,YAAY,CAAC,oBAAoB,CAAC;EAC5D;AACJ;AAEA,SAASwqC,uBAAuBA,CAAA,EAAG;EAC/Bp1B,+EAAoB,CAAC,6BAA6B,EAAE,OAAO,EAAE,YAAW;IACpE,IAAIq1B,QAAQ,GAAGv1C,CAAC,CAAC,IAAI,CAAC,CAACjF,IAAI,CAAC,sBAAsB,CAAC;MAC/Cy6C,SAAS,GAAGx1C,CAAC,CAAC,IAAI,CAAC,CAACgI,MAAM,CAAC,CAAC,CAACE,QAAQ,CAAC,wBAAwB,CAAC;IAEnE,IAAIqtC,QAAQ,IAAI,IAAI,EAAE;MAClBC,SAAS,CAAC90C,WAAW,CAAC,QAAQ,CAAC;MAC/BV,CAAC,CAAC,IAAI,CAAC,CAACjF,IAAI,CAAC,sBAAsB,EAAE,KAAK,CAAC;MAE3C,IAAI06C,QAAQ,GAAGz1C,CAAC,CAAC,IAAI,CAAC,CAACjF,IAAI,CAAC,WAAW,CAAC;MACxCiF,CAAC,CAAC,IAAI,CAAC,CAACy4B,IAAI,CAACgd,QAAQ,CAAC;IAC1B,CAAC,MAAM;MACHD,SAAS,CAAC/uB,QAAQ,CAAC,QAAQ,CAAC;MAC5BzmB,CAAC,CAAC,IAAI,CAAC,CAACjF,IAAI,CAAC,sBAAsB,EAAE,IAAI,CAAC;MAE1C,IAAI26C,QAAQ,GAAG11C,CAAC,CAAC,IAAI,CAAC,CAACjF,IAAI,CAAC,WAAW,CAAC;MACxCiF,CAAC,CAAC,IAAI,CAAC,CAACy4B,IAAI,CAACid,QAAQ,CAAC;IAC1B;EACJ,CAAC,CAAC;AACN;;AAEA;AACA;AACA;AACA;AACA,SAASC,sBAAsBA,CAAA,EAAG;EAC9B,IAAIC,gBAAgB,GAAGl5C,QAAQ,CAACiF,aAAa,CAAC,kDAAkD,CAAC;EAEjG,OAAOi0C,gBAAgB,IAAIA,gBAAgB,CAACryB,MAAM,IAAIqyB,gBAAgB,CAACryB,MAAM,CAACkJ,KAAK;AACvF;AAEA,SAASopB,yBAAyBA,CAAA,EAAG;EACjC,IAAIC,oBAAoB,GAAGp5C,QAAQ,CAACiF,aAAa,CAAC,4BAA4B,CAAC;EAE/E,IAAIm0C,oBAAoB,EAAE;IACtBjxB,uEAAY,CAAC,YAAY,EAAE,KAAK,EAAEixB,oBAAoB,CAAC;EAC3D;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,cAAcA,CAAA,EAAoB;EAAA,IAAnB30C,OAAO,GAAA2N,SAAA,CAAAjT,MAAA,QAAAiT,SAAA,QAAA9Q,SAAA,GAAA8Q,SAAA,MAAG,CAAC,CAAC;EAAA,IAAErK,GAAG,GAAAqK,SAAA,CAAAjT,MAAA,OAAAiT,SAAA,MAAA9Q,SAAA;EACrC,IAAI+3C,UAAU,GAAG50C,OAAO,CAACtG,GAAG,IAAI,IAAI,CAACgQ,YAAY,CAAC,UAAU,CAAC,IAAI,IAAI,CAACrP,IAAI,IAAI,IAAI,CAACkH,KAAK;IACpFszC,gBAAgB,GAAGN,sBAAsB,CAAC,CAAC;EAC/C,IAAIO,kBAAkB,GAAGx5C,QAAQ,CAACwG,gBAAgB,CAAC,6BAA6B,CAAC;EAEjF,IAAIwB,GAAG,EAAE;IACLA,GAAG,CAACgI,cAAc,CAAC,CAAC;IACpBhI,GAAG,CAACiK,eAAe,CAAC,CAAC;EACzB;EAEA,IAAI,IAAI,YAAYohB,WAAW,KAAK,IAAI,CAACkf,QAAQ,IAAI,IAAI,CAAC3uC,SAAS,CAACkF,QAAQ,CAAC,UAAU,CAAC,CAAC,EAAE;IACvF,OAAO,KAAK;EAChB;EAEApE,OAAO,CAAC+0C,WAAW,GAAG/0C,OAAO,CAAC+0C,WAAW,IAAI,CAAC,CAAC;EAC/C/0C,OAAO,CAAC+0C,WAAW,CAACC,WAAW,GAAGJ,UAAU;;EAE5C;EACA,IAAIC,gBAAgB,EAAE;IAClB70C,OAAO,CAAC+0C,WAAW,CAACF,gBAAgB,GAAGA,gBAAgB;EAC3D;EAEA70C,OAAO,CAAC+0C,WAAW,CAAChB,kBAAkB,GAAGD,sBAAsB,CAAC,CAAC;EAEjEc,UAAU,GAAGxrB,+EAAiB,CAACwrB,UAAU,EAAE;IAAE,gBAAgB,EAAEZ,mBAAmB,CAAC;EAAE,CAAC,CAAC;EAEvF,IAAIh0C,OAAO,CAACw0B,KAAK,IAAIx0B,OAAO,CAACmE,MAAM,EAAE;IACjCsf,uEAAY,CAAC,QAAQ,EAAEzjB,OAAO,CAACw0B,KAAK,EAAEx0B,OAAO,CAACmE,MAAM,CAAC;EACzD;EAEAgkB,+DAAmB,CAACnoB,OAAO,CAACi1C,gBAAgB,CAAC;EAE7C,OAAOr2C,CAAC,CAACqtB,GAAG,CACR2oB,UAAU,EACV50C,OAAO,CAAC+0C,WAAW,EACnB,UAASl8C,QAAQ,EAAE;IACf,IAAImH,OAAO,CAACk1C,UAAU,EAAE;MACpBt2C,CAAC,CAACoB,OAAO,CAACmE,MAAM,CAAC,CAACgjB,IAAI,CAACtuB,QAAQ,CAAC;IACpC,CAAC,MAAM,IAAImH,OAAO,CAACm1C,UAAU,EAAE;MAC3Bv2C,CAAC,CAACoB,OAAO,CAACmE,MAAM,CAAC,CAACixC,MAAM,CAACv8C,QAAQ,CAAC;IACtC,CAAC,MAAM;MACH+F,CAAC,CAACoB,OAAO,CAACmE,MAAM,CAAC,CAACkxC,WAAW,CAACx8C,QAAQ,CAAC;IAC3C;IAEA,IAAImH,OAAO,CAACs1C,aAAa,EAAE;MACvBpS,gFAAkB,CAAC0R,UAAU,EAAE,EAAE,EAAE,WAAW,CAAC;IACnD;;IAEA;IACAt5C,QAAQ,CAACpB,IAAI,CAACuqB,WAAW;IAEzBgD,sEAAW,CAAC,CAAC;;IAEb;IACAiZ,4EAAc,CAAC,CAAC;;IAEhB;IACA,IAAI1gC,OAAO,CAACu1C,WAAW,EAAE;MACrBtiC,oFAAkB,CAACjT,OAAO,CAACu1C,WAAW,EAAE,UAAApoB,SAAS;QAAA,OAAIA,SAAS,CAAC3b,KAAK,CAAC;UAAEgkC,aAAa,EAAE;QAAK,CAAC,CAAC;MAAA,EAAC;IAClG;IAEA,IAAI,OAAOx1C,OAAO,CAACgO,QAAQ,KAAK,UAAU,EAAE;MACxChO,OAAO,CAACgO,QAAQ,CAACnV,QAAQ,CAAC;IAC9B,CAAC,MAAM;MACHgzB,sEAAW,CAAC7rB,OAAO,CAACgO,QAAQ,CAAC;IACjC;IAEAkmC,uBAAuB,CAAC,CAAC;IACzB,IAAIY,kBAAkB,IAAIA,kBAAkB,CAACp6C,MAAM,GAAG,CAAC,EAAE;MACrDq3B,aAAa,CAAC,CAAC;MACf4c,+EAAqB,CAAC,CAAC;IAC3B;IACArd,mBAAmB,CAAC,CAAC;IACrB,IAAI/4B,MAAM,CAACC,IAAI,CAACC,eAAe,CAACg9C,YAAY,IAAIl9C,MAAM,CAACm9C,KAAK,EAAE;MAC1Dn9C,MAAM,CAACm9C,KAAK,CAACC,WAAW,CAAC,CAAC;IAC9B;IAEAxtB,+DAAmB,CAAC,CAAC;EACzB,CACJ,CAAC,CAACpvB,IAAI,CAAC,YAAW;IACd,IAAIiH,OAAO,CAACw0B,KAAK,KAAK,QAAQ,IAAIx0B,OAAO,CAACw0B,KAAK,KAAK,MAAM,EAAE;MACxDigB,yBAAyB,CAAC,CAAC;IAC/B;EACJ,CAAC,CAAC;AACN;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAASmB,kBAAkBA,CAAC/8C,QAAQ,EAAE;EAClC,IAAIshB,MAAM,GAAG,IAAIC,SAAS,CAAC,CAAC;IACxBy7B,aAAa,GAAG17B,MAAM,CAAC8E,eAAe,CAACpmB,QAAQ,EAAE,WAAW,CAAC,CAAC0H,aAAa,CAAC,qBAAqB,CAAC;IAClGu1C,WAAW,GAAGD,aAAa,GAAGj8C,IAAI,CAAC+jB,KAAK,CAACk4B,aAAa,CAACnsC,YAAY,CAAC,mBAAmB,CAAC,CAAC,CAAC1J,OAAO,GAAG,EAAE;EAE1G81C,WAAW,CAACn7C,OAAO,CAAC,UAASo7C,MAAM,EAAE;IACjC,IAAIC,gBAAgB,GAAG16C,QAAQ,CAACwG,gBAAgB,2BAAA2F,MAAA,CAA0BsuC,MAAM,CAACrvC,EAAE,QAAI,CAAC;IAExF,EAAE,CAAC/L,OAAO,CAACqH,IAAI,CAACg0C,gBAAgB,EAAE,UAAAC,eAAe;MAAA,OAAIA,eAAe,CAAC57C,IAAI,GAAG07C,MAAM,CAACr8C,GAAG;IAAA,EAAC;EAC3F,CAAC,CAAC;AACN;AAEA,IAAIw8C,SAAS,GAAGC,4EAAU,CAAC,WAAW,CAAC,GAAGv8C,IAAI,CAAC+jB,KAAK,CAAC8kB,kBAAkB,CAAC0T,4EAAU,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,EAAE;AAEtG,SAASC,gBAAgBA,CAACC,UAAU,EAAEC,YAAY,EAAE;EAChD,IAAIC,OAAO,GAAG;IACVF,UAAU,EAAEA,UAAU;IACtBC,YAAY,EAAEA;EAClB,CAAC;EACDJ,SAAS,CAACh7C,IAAI,CAACq7C,OAAO,CAAC;EACvB,IAAMC,MAAM,GAAG,IAAIC,GAAG,CAAC,CAAC;EACxBP,SAAS,CAACv7C,OAAO,CAAC,UAACkR,IAAI;IAAA,OAAK2qC,MAAM,CAAC90B,GAAG,CAAC7V,IAAI,CAACwqC,UAAU,EAAExqC,IAAI,CAAC;EAAA,EAAC;EAC9D,IAAI6qC,MAAM,GAAAhD,kBAAA,CAAQ8C,MAAM,CAACG,MAAM,CAAC,CAAC,CAAE;EACnCC,8EAAY,CAAC,WAAW,EAAEnV,kBAAkB,CAAC7nC,IAAI,CAACC,SAAS,CAAC68C,MAAM,CAAC,CAAC,CAAC;AACzE;AAEA,SAASG,aAAaA,CAACC,MAAM,EAAE;EAC3B,IAAIC,SAAS,GAAGx+C,MAAM,CAACw+C,SAAS;EAChC,IAAIC,QAAQ,GAAGD,SAAS,CAACjtC,MAAM,CAAC,UAAStD,KAAK,EAAE;IAC5C,OAAOA,KAAK,CAACguB,KAAK,IAAI,YAAY,GAAGhuB,KAAK,GAAG,EAAE;EACnD,CAAC,CAAC;EACF,IAAIwwC,QAAQ,CAACt8C,MAAM,GAAG,CAAC,EAAE;IAErB,IAAIu8C,WAAW,GAAGD,QAAQ,CAAC,CAAC,CAAC,CAACE,QAAQ,CAAC,CAAC,CAAC,CAACC,QAAQ;IAClDf,gBAAgB,CAACU,MAAM,EAAEG,WAAW,CAAC;EACzC;AAEJ;AAEA,SAASG,WAAWA,CAACC,iBAAiB,EAAEC,GAAG,EAAE;EACzCA,GAAG,CAAC7tC,OAAO,CAAC,oBAAoB,CAAC,CAAC2a,IAAI,CAAC,uCAAuC,CAAC,CAAC9qB,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC+9C,iBAAiB,CAAC;AACzH;AAEO,SAAStlB,aAAaA,CAAA,EAAG;EAC5B,IAAIwlB,UAAU,GAAGj8C,QAAQ,CAACwG,gBAAgB,CAAC,oBAAoB,CAAC;IAC5D01C,UAAU,GAAGl8C,QAAQ,CAACwG,gBAAgB,CAAC,oBAAoB,CAAC;IAC5D21C,WAAW,GAAGn8C,QAAQ,CAACwG,gBAAgB,CAAC,kBAAkB,CAAC;IAC3D41C,kBAAkB,GAAGp8C,QAAQ,CAACwG,gBAAgB,CAAC,0BAA0B,CAAC;IAC1E61C,SAAS,GAAG/4C,CAAC,CAAC,mBAAmB,CAAC;IAClCg5C,MAAM;IACNC,OAAO;IACPC,SAAS;IACTC,SAAS;IACTC,WAAW;IACXtf,KAAK;IACLuf,QAAQ;EAEZ,EAAE,CAACt9C,OAAO,CAACqH,IAAI,CAACu1C,UAAU,EAAE,UAAA5P,WAAW;IAAA,OAAIA,WAAW,CAAC9mC,gBAAgB,CAAC,OAAO,EAAE,YAAW;MACxFo3C,QAAQ,GAAGr5C,CAAC,CAAC,IAAI,CAAC,CAACgI,MAAM,CAAC,CAAC,CAACwd,IAAI,CAAC,oBAAoB,CAAC;MACtD,IAAM8zB,sBAAsB,GAAGt5C,CAAC,CAAC44C,UAAU,CAAC,CAAC/tC,OAAO,CAAC,oBAAoB,CAAC;MAC1EnO,QAAQ,CAACpB,IAAI,CAACgF,SAAS,CAACC,GAAG,CAAC,sBAAsB,CAAC;MACnDP,CAAC,CAAC,IAAI,CAAC,CAAC6K,OAAO,CAAC,qBAAqB,CAAC,CAAC4b,QAAQ,CAAC,OAAO,CAAC;MACxD6yB,sBAAsB,CAAC54C,WAAW,CAAC,SAAS,CAAC;MAC7CV,CAAC,CAAC44C,UAAU,CAAC,CAAC/tC,OAAO,CAAC,eAAe,CAAC,CAACnK,WAAW,CAAC,yBAAyB,CAAC;MAC7EV,CAAC,CAACq5C,QAAQ,CAAC,CAAC5yB,QAAQ,CAAC,SAAS,CAAC;MAC/BzmB,CAAC,CAAC,IAAI,CAAC,CAAC6K,OAAO,CAAC,eAAe,CAAC,CAAC4b,QAAQ,CAAC,yBAAyB,CAAC;MACpEzmB,CAAC,CAAC,IAAI,CAAC,CAACgI,MAAM,CAAC,CAAC,CAACwd,IAAI,CAAC,iBAAiB,CAAC,CAACiB,QAAQ,CAAC,eAAe,CAAC;MAClEzmB,CAAC,CAAC,4BAA4B,CAAC,CAACymB,QAAQ,CAAC,OAAO,CAAC;MACjDzmB,CAAC,CAAC,uBAAuB,CAAC,CAAC8qC,KAAK,CAAC,eAAe,CAAC;;MAEjD;MACA,IAAMyO,cAAc,GAAGD,sBAAsB,CAAC9zB,IAAI,CAAC,kBAAkB,CAAC;MACtE+zB,cAAc,CAAC34C,IAAI,CAAC,KAAK,EAAE,aAAa,CAAC;;MAEzC;MACA,IAAM44C,OAAO,GAAGH,QAAQ,CAAC7zB,IAAI,CAAC,kBAAkB,CAAC;MACjDg0B,OAAO,CAAC54C,IAAI,CAAC,KAAK,EAAE44C,OAAO,CAACz+C,IAAI,CAAC,KAAK,CAAC,CAAC;MACxC,IAAM0+C,QAAQ,GAAGJ,QAAQ,CAAC7zB,IAAI,CAAC,SAAS,CAAC;MACzC,IAAMk0B,OAAO,GAAGL,QAAQ,CAAC7zB,IAAI,CAAC,iBAAiB,CAAC;MAChDxlB,CAAC,CAACy5C,QAAQ,CAAC,CAAC/4C,WAAW,CAAC,uBAAuB,CAAC;MAChDV,CAAC,CAAC05C,OAAO,CAAC,CAACjzB,QAAQ,CAAC,uBAAuB,CAAC;IAChD,CAAC,CAAC;EAAA,EAAC;EAEH,EAAE,CAAC1qB,OAAO,CAACqH,IAAI,CAACw1C,UAAU,EAAE,UAAA7P,WAAW;IAAA,OAAIA,WAAW,CAAC9mC,gBAAgB,CAAC,OAAO,EAAE,YAAW;MACxFvF,QAAQ,CAACpB,IAAI,CAACgF,SAAS,CAAC6O,MAAM,CAAC,sBAAsB,CAAC;MACtDnP,CAAC,CAAC,IAAI,CAAC,CAAC6K,OAAO,CAAC,qBAAqB,CAAC,CAACnK,WAAW,CAAC,OAAO,CAAC;MAC3DV,CAAC,CAAC,IAAI,CAAC,CAAC6K,OAAO,CAAC,oBAAoB,CAAC,CAACnK,WAAW,CAAC,SAAS,CAAC;MAC5DV,CAAC,CAAC,IAAI,CAAC,CAAC6K,OAAO,CAAC,eAAe,CAAC,CAACnK,WAAW,CAAC,yBAAyB,CAAC;MACvEV,CAAC,CAAC,iBAAiB,CAAC,CAACU,WAAW,CAAC,eAAe,CAAC;MACjDV,CAAC,CAAC,4BAA4B,CAAC,CAACymB,QAAQ,CAAC,OAAO,CAAC;IACrD,CAAC,CAAC;EAAA,EAAC;EAEH,EAAE,CAAC1qB,OAAO,CAACqH,IAAI,CAACy1C,WAAW,EAAE,UAAA9P,WAAW;IAAA,OAAIA,WAAW,CAAC9mC,gBAAgB,CAAC,OAAO,EAAE,YAAW;MACzFi3C,SAAS,GAAGl5C,CAAC,CAAC,IAAI,CAAC,CAACwlB,IAAI,CAAC,kBAAkB,CAAC,CAACiT,IAAI,CAAC,CAAC,EACnD2gB,WAAW,GAAGp5C,CAAC,CAAC,IAAI,CAAC,CAACwvC,OAAO,CAAC,oBAAoB,CAAC,CAAChqB,IAAI,CAAC,aAAa,CAAC,EACvEsU,KAAK,GAAG95B,CAAC,CAAC,IAAI,CAAC;MACf,IAAI25C,cAAc,GAAG,IAAI,CAACv4C,OAAO,IAAI,IAAI,CAACA,OAAO,CAAC,IAAI,CAACyoC,aAAa,CAAC,CAAC/+B,YAAY,CAAC,oBAAoB,CAAC,GAAG,IAAI,CAACA,YAAY,CAAC,oBAAoB,CAAC,GAAG,KAAK;MAC1J,IAAI8uC,gBAAgB,GAAG,IAAI,CAACx4C,OAAO,GAAG,IAAI,CAACA,OAAO,CAAC,IAAI,CAACyoC,aAAa,CAAC,CAAC/+B,YAAY,CAAC,oBAAoB,CAAC,GAAG,IAAI,CAACA,YAAY,CAAC,oBAAoB,CAAC;MACnJ,IAAIkkC,YAAY,GAAG2K,cAAc,IAAIA,cAAc,KAAK,MAAM,GAAGA,cAAc,GAAGC,gBAAgB;MAElG,IAAInB,iBAAiB,GAAGzJ,YAAY,IAAIA,YAAY,IAAI,OAAO,GAAG,IAAI,GAAG,KAAK;MAC9EhvC,CAAC,CAACo5C,WAAW,CAAC,CAACS,KAAK,CAAC,CAAC;MACtB75C,CAAC,CAACo5C,WAAW,CAAC,CAAC7wB,IAAI,CAAC2wB,SAAS,CAAC;MAC9B,IAAIlxC,MAAM,GAAGhI,CAAC,CAAC,IAAI,CAAC,CAACwvC,OAAO,CAAC,iCAAiC,CAAC;QAC3DrG,GAAG,GAAGnhC,MAAM,GAAGhI,CAAC,CAACgI,MAAM,CAAC,CAACjN,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE;QACzC++C,UAAU,GAAG95C,CAAC,CAAC,qBAAqB,GAAGmpC,GAAG,GAAG,IAAI,CAAC;QAClDruC,GAAG,GAAGkF,CAAC,CAAC,IAAI,CAAC,CAACY,IAAI,CAAC,MAAM,CAAC;QAC1BujC,iBAAiB,GAAGb,kFAAoB,CAACxoC,GAAG,CAAC;QAC7Ci/C,OAAO,GAAGD,UAAU,CAACl5C,IAAI,CAAC,MAAM,CAAC;QACjCQ,OAAO,GAAGioC,wEAAU,CAAC,IAAI,CAAC;MAE9BjoC,OAAO,CAACrF,OAAO,CAAC,UAASo7C,MAAM,EAAE;QAC7B,IAAI6C,SAAS,GAAG,CAAC,CAAC;QAClBA,SAAS,CAAC7C,MAAM,CAACrN,QAAQ,CAAC,GAAGqN,MAAM,CAACvN,eAAe;QACnDzF,iBAAiB,GAAGllC,MAAM,CAACC,MAAM,CAAC86C,SAAS,EAAE7V,iBAAiB,CAAC;MACnE,CAAC,CAAC;MAEF,IAAI2V,UAAU,IAAIC,OAAO,IAAI5V,iBAAiB,EAAE;QAC5C4V,OAAO,GAAGA,OAAO,CAAC/tC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC/B8tC,UAAU,CAACl5C,IAAI,CAAC,MAAM,EAAE4pB,+EAAiB,CAACuvB,OAAO,EAAE5V,iBAAiB,CAAC,CAAC;MAC1E;MACA,IAAInkC,CAAC,CAAC,IAAI,CAAC,CAACY,IAAI,CAAC,oBAAoB,CAAC,IAAI,MAAM,EAAE;QAC9Ck5C,UAAU,CAACl5C,IAAI,CAAC,MAAM,EAAE9F,GAAG,CAAC;QAE5BkF,CAAC,CAAC84C,kBAAkB,CAAC,CAAClzB,IAAI,CAAC,YAAW;UAClC,IAAI5lB,CAAC,CAAC,IAAI,CAAC,CAACuT,QAAQ,CAAC,gBAAgB,CAAC,EAAE;YACpCvT,CAAC,CAAC,IAAI,CAAC,CAACU,WAAW,CAAC,gBAAgB,CAAC;UACzC;QACJ,CAAC,CAAC;MACN;MACAV,CAAC,CAAC+4C,SAAS,CAAC,CAACnzB,IAAI,CAAC,YAAW;QACzB,IAAI5lB,CAAC,CAAC,IAAI,CAAC,CAACuT,QAAQ,CAAC,qBAAqB,CAAC,EAAE;UACzCvT,CAAC,CAAC,IAAI,CAAC,CAACU,WAAW,CAAC,qBAAqB,CAAC;QAC9C;QACA,IAAIV,CAAC,CAAC,IAAI,CAAC,CAACuT,QAAQ,CAAC,gBAAgB,CAAC,EAAE;UACpCvT,CAAC,CAAC,IAAI,CAAC,CAACymB,QAAQ,CAAC,qBAAqB,CAAC;QAC3C;MACJ,CAAC,CAAC;MAEF+xB,WAAW,CAACC,iBAAiB,EAAE3e,KAAK,CAAC;IACzC,CAAC,CAAC;EAAA,EAAC;EAEH95B,CAAC,CAAC+4C,SAAS,CAAC,CAACnzB,IAAI,CAAC,YAAW;IACzB,IAAI5lB,CAAC,CAAC,IAAI,CAAC,CAACuT,QAAQ,CAAC,gBAAgB,CAAC,EAAE;MACpCvT,CAAC,CAAC,IAAI,CAAC,CAACymB,QAAQ,CAAC,uBAAuB,CAAC;MACzCuyB,MAAM,GAAGh5C,CAAC,CAAC,IAAI,CAAC,CAACwlB,IAAI,CAAC,kBAAkB,CAAC,CAACiT,IAAI,CAAC,CAAC;MAChDwgB,OAAO,GAAGj5C,CAAC,CAAC,IAAI,CAAC,CAACwvC,OAAO,CAAC,oBAAoB,CAAC,CAAChqB,IAAI,CAAC,aAAa,CAAC;MACnExlB,CAAC,CAACi5C,OAAO,CAAC,CAAC1wB,IAAI,CAACywB,MAAM,CAAC;IAC3B;EACJ,CAAC,CAAC;EAEFh5C,CAAC,CAAC24C,UAAU,CAAC,CAAC/yB,IAAI,CAAC,YAAW;IAC1B5lB,CAAC,CAAC,IAAI,CAAC,CAACwvC,OAAO,CAAC,eAAe,CAAC,CAAC/oB,QAAQ,CAAC,SAAS,CAAC;EACxD,CAAC,CAAC;EAEFzmB,CAAC,CAAC24C,UAAU,CAAC,CAAClxB,KAAK,CAAC,UAASjtB,CAAC,EAAE;IAC5B,IAAIwF,CAAC,CAACxF,CAAC,CAAC+K,MAAM,CAAC,CAACsF,OAAO,CAAC,eAAe,CAAC,CAAC/O,MAAM,GAAG,CAAC,EAAE;MACjD,OAAO,KAAK;IAChB,CAAC,MAAM;MACH,IAAIkE,CAAC,CAAC,oBAAoB,CAAC,CAACuT,QAAQ,CAAC,SAAS,CAAC,EAAE;QAC7C7W,QAAQ,CAACpB,IAAI,CAACgF,SAAS,CAAC6O,MAAM,CAAC,sBAAsB,CAAC;QACtDnP,CAAC,CAAC,qBAAqB,CAAC,CAACU,WAAW,CAAC,OAAO,CAAC;QAC7CV,CAAC,CAAC,oBAAoB,CAAC,CAACU,WAAW,CAAC,SAAS,CAAC;QAC9CV,CAAC,CAAC,eAAe,CAAC,CAACU,WAAW,CAAC,yBAAyB,CAAC;QACzDV,CAAC,CAAC,iBAAiB,CAAC,CAACU,WAAW,CAAC,eAAe,CAAC;QACjDV,CAAC,CAAC,0BAA0B,CAAC,CAACU,WAAW,CAAC,OAAO,CAAC;MACtD;IACJ;EACJ,CAAC,CAAC;EAEF,IAAIV,CAAC,CAAC,eAAe,CAAC,CAACuT,QAAQ,CAAC,WAAW,CAAC,EAAE;IAC1C4lC,SAAS,GAAG,MAAM;EACtB,CAAC,MAAM;IACHA,SAAS,GAAG,MAAM;EACtB;EACA14C,UAAU,CAAC,YAAW;IAClBw5C,iBAAiB,CAACd,SAAS,CAAC;EAChC,CAAC,EAAE,IAAI,CAAC;EACRzmB,mBAAmB,CAAC,CAAC;AACzB;AAEO,SAASwnB,aAAaA,CAAA,EAAG;EAC5B,IAAIC,WAAW,GAAGz9C,QAAQ,CAACwG,gBAAgB,CAAC,qBAAqB,CAAC;IAC9Dk3C,mBAAmB,GAAG19C,QAAQ,CAACwG,gBAAgB,CAAC,0CAA0C,CAAC;IAC3Fm3C,oBAAoB,GAAG39C,QAAQ,CAACwG,gBAAgB,CAAC,2CAA2C,CAAC;EACjG,IAAIo3C,gBAAgB,GAAG,CAAEH,WAAW,EAAEC,mBAAmB,EAAEC,oBAAoB,CAAE;EAEjFC,gBAAgB,CAACv+C,OAAO,CAAC,UAAS0K,QAAQ,EAAE;IACxCA,QAAQ,CAAC1K,OAAO,CAAC,UAASwzB,OAAO,EAAE;MAC/BA,OAAO,CAACttB,gBAAgB,CAAC,OAAO,EAAE,YAAW;QACzC,IAAIi2C,MAAM,GAAG,IAAI,CAACrtC,OAAO,CAAC,eAAe,CAAC,CAACC,YAAY,CAAC,kBAAkB,CAAC;QAC3EmtC,aAAa,CAACC,MAAM,CAAC;MACzB,CAAC,CAAC;IACN,CAAC,CAAC;EACN,CAAC,CAAC;AACN;;AAEA;AACA;AACA;AACA;AACA,SAASqC,sBAAsBA,CAAA,EAAG;EAC9BC,iBAAiB,CAAC,CAAC;EACnBC,qBAAqB,CAAC,CAAC;EACvBC,oBAAoB,CAAC,CAAC;EACtBC,uBAAuB,CAAC,CAAC;EACzBC,cAAc,CAAC,CAAC;AACpB;;AAEA;AACA;AACA;AACA;AACO,SAASC,gBAAgBA,CAAA,EAAG;EAC/BlhD,MAAM,CAACsI,gBAAgB,CAAC,UAAU,EAAE,YAAW;IAC3C,IAAI64C,UAAU,GAAGp+C,QAAQ,CAACiF,aAAa,CAAC,uCAAuC,CAAC;MAC5EqmC,IAAI,GAAG8S,UAAU,CAACn5C,aAAa,CAAC,aAAa,CAAC;MAC9Co5C,aAAa,GAAGzX,kFAAoB,CAAC3pC,MAAM,CAACF,QAAQ,CAACumC,MAAM,CAAC;;IAEhE;IACA;IACA,IAAIgI,IAAI,EAAE;MACN+S,aAAa,CAAC/S,IAAI,GAAGA,IAAI,CAACrlC,KAAK;IACnC;IAEAozC,cAAc,CAAC;MACXj7C,GAAG,EAAE0vB,+EAAiB,CAAC7wB,MAAM,CAACC,IAAI,CAACqH,IAAI,CAAC+5C,cAAc,EAAED,aAAa,CAAC;MACtEnlB,KAAK,EAAE,YAAY;MACnBrwB,MAAM,EAAEu1C,UAAU;MAClB1rC,QAAQ,EAAEmrC;IACd,CAAC,CAAC;EACN,CAAC,CAAC;AACN;;AAEA;AACA;AACA;AACA;AACA;AACO,SAASC,iBAAiBA,CAAA,EAAG;EAChC,IAAIM,UAAU,GAAGp+C,QAAQ,CAACiF,aAAa,CAAC,uCAAuC,CAAC;EAEhF0S,oFAAkB,CAAC,uCAAuC,EAAE,UAAS4mC,aAAa,EAAE;IAChF,IAAIC,aAAa,GAAGD,aAAa,CAAC/3C,gBAAgB,CAAC,8CAA8C,CAAC;IAElG,EAAE,CAACnH,OAAO,CAACqH,IAAI,CAAC83C,aAAa,EAAE,UAASC,iBAAiB,EAAE;MACvDA,iBAAiB,CAACl5C,gBAAgB,CAAC,OAAO,EAAE8zC,cAAc,CAACxzC,IAAI,CAAC44C,iBAAiB,EAAE;QAC/E51C,MAAM,EAAEu1C,UAAU;QAClBllB,KAAK,EAAE,MAAM;QACb0gB,UAAU,EAAE,IAAI;QAChBI,aAAa,EAAE,IAAI;QACnBtnC,QAAQ,EAAEmrC,sBAAsB;QAChC5D,WAAW,EAAE;MACjB,CAAC,CAAC,CAAC;IACP,CAAC,CAAC;EACN,CAAC,CAAC;AACN;;AAEA;AACO,SAAS8D,qBAAqBA,CAAA,EAAG;EACpC,IAAIW,WAAW,GAAG1+C,QAAQ,CAACiF,aAAa,CAAC,yCAAyC,CAAC;IAC/E05C,UAAU,GAAG3+C,QAAQ,CAACiF,aAAa,CAAC,+CAA+C,CAAC;;EAExF;EACA,IAAIy5C,WAAW,IAAI,CAACA,WAAW,CAACnM,QAAQ,EAAE;IACtC,IAAIkK,SAAS;IACb,IAAImC,QAAQ,GAAGvF,cAAc,CAACxzC,IAAI,CAAC64C,WAAW,EAAE;MAC5C71C,MAAM,EAAE81C,UAAU;MAClBzlB,KAAK,EAAE,UAAU;MACjBygB,gBAAgB,EAAE+E,WAAW,CAACvwC,OAAO,CAAC,+CAA+C,CAAC;MACtFuE,QAAQ,EAAE,SAAVA,QAAQA,CAAWnV,QAAQ,EAAE;QACzB+8C,kBAAkB,CAAC/8C,QAAQ,CAAC;QAC5Bq7C,uBAAuB,CAAC,CAAC;QACzBmF,qBAAqB,CAAC,CAAC;QACvBtnB,aAAa,CAAC,CAAC;QACf4c,+EAAqB,CAAC,CAAC;QACvB,IAAI/vC,CAAC,CAAC,eAAe,CAAC,CAACuT,QAAQ,CAAC,WAAW,CAAC,EAAE;UAC1C4lC,SAAS,GAAG,MAAM;QACtB,CAAC,MAAM;UACHA,SAAS,GAAG,MAAM;QACtB;QACA14C,UAAU,CAAC,YAAW;UAClBw5C,iBAAiB,CAACd,SAAS,CAAC;QAChC,CAAC,EAAE,IAAI,CAAC;MACZ;IACJ,CAAC,CAAC;IAEFiC,WAAW,CAACn5C,gBAAgB,CAAC,OAAO,EAAE,YAAW;MAC7C6lC,yFAAiB,CAACH,yFAAiB,CAAC,IAAI,CAAC,CAAC;MAC1C2T,QAAQ,CAAC,CAAC;IACd,CAAC,CAAC;IAEF,IAAI3hD,MAAM,CAACC,IAAI,CAACC,eAAe,CAAC0hD,oBAAoB,EAAE;MAClDrT,2FAAmB,CAACkT,WAAW,EAAEE,QAAQ,CAAC;IAC9C;EACJ;AACJ;;AAEA;AACO,SAASZ,oBAAoBA,CAAA,EAAG;EACnC,IAAII,UAAU,GAAGp+C,QAAQ,CAACiF,aAAa,CAAC,uCAAuC,CAAC;IAC5E65C,YAAY,GAAG9+C,QAAQ,CAACiF,aAAa,CAAC,oBAAoB,CAAC;IAC3DkmC,UAAU,GAAG2T,YAAY,GAAGzmC,QAAQ,CAACymC,YAAY,CAAC1wC,YAAY,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC;IACvF2wC,iBAAiB,GAAG/+C,QAAQ,CAACwG,gBAAgB,CAAC,0BAA0B,CAAC;EAE7E,EAAE,CAACnH,OAAO,CAACqH,IAAI,CAACq4C,iBAAiB,EAAE,UAASC,aAAa,EAAE;IACvD,IAAIC,gBAAgB,GAAGD,aAAa,CAAC5wC,YAAY,CAAC,wBAAwB,CAAC;MACvE8wC,YAAY,GAAGF,aAAa,CAAC5wC,YAAY,CAAC,oBAAoB,CAAC;IAEnE4wC,aAAa,CAACz5C,gBAAgB,CAAC,OAAO,EAAE8zC,cAAc,CAACxzC,IAAI,CAACm5C,aAAa,EAAE;MACvEn2C,MAAM,EAAEu1C,UAAU;MAClBllB,KAAK,EAAE,QAAQ;MACfugB,WAAW,EAAE;QAAEt3C,IAAI,EAAEgpC;MAAW,CAAC;MACjC6O,aAAa,EAAE,IAAI;MACnBtnC,QAAQ,EAAEmrC,sBAAsB;MAChC5D,WAAW,EAAEiF,YAAY,4BAAA/yC,MAAA,CAA2B+yC,YAAY,uCAAA/yC,MAAA,CAAkC8yC,gBAAgB;IACtH,CAAC,CAAC,CAAC;EACP,CAAC,CAAC;AACN;;AAEA;AACO,SAAShB,uBAAuBA,CAAA,EAAG;EACtC,IAAIkB,oBAAoB,GAAGn/C,QAAQ,CAACiF,aAAa,CAAC,2CAA2C,CAAC;IAC1Fm6C,qBAAqB,GAAGp/C,QAAQ,CAACiF,aAAa,CAAC,wCAAwC,CAAC;IACxFy5C,WAAW,GAAG1+C,QAAQ,CAACiF,aAAa,CAAC,wCAAwC,CAAC;EAElF,IAAIk6C,oBAAoB,IAAIA,oBAAoB,CAACt4B,MAAM,EAAE;IACrDs4B,oBAAoB,CAACt4B,MAAM,CAACC,QAAQ,GAAG,UAAS7b,OAAO,EAAE;MACrD,IAAI,CAACA,OAAO,CAACU,YAAY,CAAC,4BAA4B,CAAC,EAAE;QACrDV,OAAO,CAACnH,YAAY,CAAC,4BAA4B,EAAE,IAAI,CAAC;QAExDu1C,cAAc,CAAC3yC,IAAI,CAACuE,OAAO,EAAE;UACzBpC,MAAM,EAAEu2C,qBAAqB;UAC7BxF,UAAU,EAAE,IAAI;UAChB1gB,KAAK,EAAE;QACX,CAAC,CAAC;MACN;IACJ,CAAC;EACL;EAEA,IAAIwlB,WAAW,EAAE;IACbA,WAAW,CAACn5C,gBAAgB,CAAC,OAAO,EAAE8zC,cAAc,CAACxzC,IAAI,CAAC64C,WAAW,EAAE;MACnE71C,MAAM,EAAEu2C,qBAAqB;MAC7BvF,UAAU,EAAE,IAAI;MAChB3gB,KAAK,EAAE;IACX,CAAC,CAAC,CAAC;EACP;AACJ;AAEA,SAASqkB,iBAAiBA,CAACd,SAAS,EAAE;EAClC,IAAI4C,YAAY,GAAGr/C,QAAQ,CAACwG,gBAAgB,CAAC,uBAAuB,CAAC;EACrE,IAAI64C,YAAY,CAACjgD,MAAM,GAAG,CAAC,EAAE;IACzB,IAAIq9C,SAAS,KAAK,MAAM,EAAE;MACtBn5C,CAAC,CAAC+7C,YAAY,CAAC,CAACjR,KAAK,CAAC,gBAAgB,EAAE;QACpCkR,YAAY,EAAE,CAAC;QACfC,cAAc,EAAE;MACpB,CAAC,EAAE,IAAI,CAAC;IACZ,CAAC,MAAM;MACHj8C,CAAC,CAAC+7C,YAAY,CAAC,CAACjR,KAAK,CAAC,gBAAgB,EAAE;QACpCkR,YAAY,EAAE,CAAC;QACfC,cAAc,EAAE;MACpB,CAAC,EAAE,IAAI,CAAC;IACZ;EACJ;AACJ;AAEO,SAASvpB,mBAAmBA,CAAA,EAAG;EAClC,IAAIwpB,UAAU,GAAGx/C,QAAQ,CAACwG,gBAAgB,CAAC,uBAAuB,CAAC;EACnE,EAAE,CAACnH,OAAO,CAACqH,IAAI,CAAC84C,UAAU,EAAE,UAASC,aAAa,EAAE;IAChDA,aAAa,CAACl6C,gBAAgB,CAAC,OAAO,EAAE,YAAW;MAC/CtI,MAAM,CAACF,QAAQ,GAAG,IAAI,CAACgC,IAAI;IAC/B,CAAC,CAAC;EACN,CAAC,CAAC;AACN;;AAEA;AACO,SAASm/C,cAAcA,CAAA,EAAG;EAC7B,IAAIwB,iBAAiB,GAAG1/C,QAAQ,CAACwG,gBAAgB,CAAC,4CAA4C,CAAC;IAC3Fm5C,aAAa,GAAG3/C,QAAQ,CAACiF,aAAa,CAAC,wCAAwC,CAAC;IAChFyxC,IAAI;EACR,EAAE,CAACr3C,OAAO,CAACqH,IAAI,CAACg5C,iBAAiB,EAAE,UAASE,cAAc,EAAE;IACxDA,cAAc,CAACr6C,gBAAgB,CAAC,OAAO,EAAE,YAAW;MAChD,EAAE,CAAClG,OAAO,CAACqH,IAAI,CAACg5C,iBAAiB,EAAE,UAAAtyC,EAAE;QAAA,OAAIA,EAAE,CAACxJ,SAAS,CAAC6O,MAAM,CAAC,aAAa,CAAC;MAAA,EAAC;MAE5E,IAAI,CAAC7O,SAAS,CAACC,GAAG,CAAC,aAAa,CAAC;MAEjC,IAAI,IAAI,CAAC0e,OAAO,CAACs9B,YAAY,KAAK,MAAM,EAAE;QACtCnJ,IAAI,GAAG,IAAI,CAACn0B,OAAO,CAACs9B,YAAY;QAChCF,aAAa,CAAC/7C,SAAS,CAACC,GAAG,CAAC,WAAW,CAAC;QACxC05C,iBAAiB,CAAC7G,IAAI,CAAC;MAE3B,CAAC,MAAM;QACHA,IAAI,GAAG,IAAI,CAACn0B,OAAO,CAACs9B,YAAY;QAChCF,aAAa,CAAC/7C,SAAS,CAAC6O,MAAM,CAAC,WAAW,CAAC;QAC3C8qC,iBAAiB,CAAC7G,IAAI,CAAC;MAC3B;MAEA,IAAIpzC,CAAC,CAAC,eAAe,CAAC,EAAE;QACpBA,CAAC,CAAC,eAAe,CAAC,CAAC8qC,KAAK,CAAC,eAAe,CAAC;QACzC9qC,CAAC,CAAC,eAAe,CAAC,CAAC8qC,KAAK,CAAC,aAAa,CAAC;MAC3C;MAEAxG,gFAAkB,CAAC9Z,+EAAiB,CAAC,EAAE,EAAE;QAAE,gBAAgB,EAAE,IAAI,CAACvL,OAAO,CAACs9B;MAAa,CAAC,EAAE,IAAI,CAAC,CAAC;IACpG,CAAC,CAAC;EACN,CAAC,CAAC;AACN;AAEO,SAASC,yBAAyBA,CAAA,EAAG;EACxC,IAAIC,cAAc,GAAG//C,QAAQ,CAACiF,aAAa,CAAC,gCAAgC,CAAC;IACzE+6C,WAAW,GAAGhgD,QAAQ,CAACiF,aAAa,CAAC,0BAA0B,CAAC;IAChEg7C,WAAW,GAAGjgD,QAAQ,CAACiF,aAAa,CAAC,0BAA0B,CAAC;EACpE,IAAI86C,cAAc,EAAE;IAChB,IAAKA,cAAc,CAACxyC,YAAY,GAAGwyC,cAAc,CAACG,YAAY,IAAMH,cAAc,CAAC52B,WAAW,GAAG42B,cAAc,CAACI,WAAY,EAAE;MAC1HH,WAAW,CAACh4B,KAAK,CAACo4B,OAAO,GAAG,cAAc;IAC9C,CAAC,MAAM;MACHJ,WAAW,CAACh4B,KAAK,CAACo4B,OAAO,GAAG,MAAM;MAClCH,WAAW,CAACj4B,KAAK,CAACo4B,OAAO,GAAG,MAAM;IACtC;IAEAJ,WAAW,CAACz6C,gBAAgB,CAAC,OAAO,EAAE,YAAW;MAC7Cw6C,cAAc,CAACn8C,SAAS,CAAC6O,MAAM,CAAC,iBAAiB,CAAC;MAClD,IAAI,CAACuV,KAAK,CAACo4B,OAAO,GAAG,MAAM;MAC3BH,WAAW,CAACj4B,KAAK,CAACo4B,OAAO,GAAG,cAAc;IAC9C,CAAC,CAAC;IACFH,WAAW,CAAC16C,gBAAgB,CAAC,OAAO,EAAE,YAAW;MAC7Cw6C,cAAc,CAACn8C,SAAS,CAACC,GAAG,CAAC,iBAAiB,CAAC;MAC/C,IAAI,CAACmkB,KAAK,CAACo4B,OAAO,GAAG,MAAM;MAC3BJ,WAAW,CAACh4B,KAAK,CAACo4B,OAAO,GAAG,cAAc;IAC9C,CAAC,CAAC;EACN;AACJ;AAEAnjD,MAAM,CAACsI,gBAAgB,CAAC,QAAQ,EAAEu6C,yBAAyB,CAAC;AAE7C;EACXO,SAAS,EAAEvC,iBAAiB;EAC5BwC,aAAa,EAAEvC,qBAAqB;EACpCwC,YAAY,EAAEvC,oBAAoB;EAClCwC,eAAe,EAAEvC,uBAAuB;EACxCE,gBAAgB,EAAEA,gBAAgB;EAClCD,cAAc,EAAEA,cAAc;EAC9BtF,uBAAuB,EAAEA,uBAAuB;EAChDkH,yBAAyB,EAAEA,yBAAyB;EACpDzM,qBAAqB,EAAEA,uEAAqB;EAC5CmK,aAAa,EAAEA,aAAa;EAC5B/mB,aAAa,EAAEA,aAAa;EAC5BT,mBAAmB,EAAEA;AACzB,CAAC,E;;;;;;;;;;;;AC5mBD;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;;AAEA;AAC6D;AACzB;AAEpCyqB,gDAAW,CAACC,aAAa,GAAG;EACxB/hC,OAAO,EAAE,2BAA2B;EACpCra,IAAI,EAAE,SAANA,IAAIA,CAAW04B,KAAK,EAAE;IAAA,IAAAI,KAAA;IAClB,OAAO,6PAA0F,CAAC3/B,IAAI,CAAC,UAAAkjD,aAAa,EAAI;MACpHhpC,oFAAkB,CAACqlB,KAAK,IAAII,KAAI,CAACze,OAAO,EAAE,UAACvR,EAAE;QAAA,OAAK,IAAIuzC,aAAa,CAAChiC,OAAO,CAACvR,EAAE,CAAC;MAAA,EAAC;IACpF,CAAC,CAAC;EACN;AACJ,CAAC;AAEDqzC,gDAAW,CAACG,oBAAoB,GAAG;EAC/BjiC,OAAO,EAAE,8BAA8B;EACvCra,IAAI,EAAE,SAANA,IAAIA,CAAW04B,KAAK,EAAE;IAAA,IAAAO,MAAA;IAClB,IAAItgC,MAAM,CAACC,IAAI,CAACC,eAAe,CAAC+jC,0BAA0B,IAAIjkC,MAAM,CAACC,IAAI,CAACC,eAAe,CAAC0jD,0BAA0B,EAAE;MAClH,OAAO,6VAAwG,CAACpjD,IAAI,CAAC,UAAAmjD,oBAAoB,EAAI;QACzI,OAAOA,oBAAoB,CAACt8C,IAAI,CAAC;UAACm5B,QAAQ,EAAET,KAAK,IAAIO,MAAI,CAAC5e;QAAO,CAAC,CAAC;MACvE,CAAC,CAAC;IACN;EACJ;AACJ,CAAC;AAEc8hC,+GAAW,E;;;;;;;;;;;;AC7B1B;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEgC;AAEhCK,8CAAS,CAACC,WAAW,GAAG;EACpBpiC,OAAO,EAAE,qCAAqC;EAC9Cra,IAAI,EAAE,SAANA,IAAIA,CAAA,EAAa;IACb,OAAO,uNAAuE,CAAC7G,IAAI,CAAC,UAASsjD,WAAW,EAAE;MACtG,OAAOA,WAAW,CAACpiC,OAAO,CAAC,CAAC;IAChC,CAAC,CAAC;EACN;AACJ,CAAC;AAEDmiC,8CAAS,CAACE,aAAa,GAAG;EACtBriC,OAAO,EAAE,uCAAuC;EAChDra,IAAI,EAAE,SAANA,IAAIA,CAAA,EAAa;IACb,OAAO,6OAAkF,CAAC7G,IAAI,CAAC,UAASujD,aAAa,EAAE;MACnH,OAAOA,aAAa,CAACriC,OAAO,CAAC,CAAC;IAClC,CAAC,CAAC;EACN;AACJ,CAAC;AAEDmiC,8CAAS,CAACG,YAAY,GAAG;EACrBtiC,OAAO,EAAE,2DAA2D;EACpEra,IAAI,EAAE,SAANA,IAAIA,CAAA,EAAa;IACb,OAAO,2MAA8D,CAAC7G,IAAI,CAAC,UAASyyC,KAAK,EAAE;MACvF,OAAOA,KAAK,CAACvxB,OAAO,CAAC,CAAC;IAC1B,CAAC,CAAC;EACN;AACJ,CAAC;AAEcmiC,6GAAS,E;;;;;;;;;;;;ACrCxB;AAAA;AAAA;AAAA;AAAa;;AAEN,IAAMI,WAAW,GAAG,CAAC,CAAC;AAEtB,SAAS34B,SAASA,CAAC2Q,KAAK,EAAExmB,QAAQ,EAAE;EACvC,IAAIxH,KAAK;EAETg2C,WAAW,CAAChoB,KAAK,CAAC,GAAGgoB,WAAW,CAAChoB,KAAK,CAAC,IAAI,EAAE;EAE7ChuB,KAAK,GAAGg2C,WAAW,CAAChoB,KAAK,CAAC,CAACt5B,IAAI,CAAC8S,QAAQ,CAAC,GAAG,CAAC;EAE7C,OAAO;IACHyuC,WAAW,WAAXA,WAAWA,CAAA,EAAG;MACVD,WAAW,CAAChoB,KAAK,CAAC,CAACkoB,MAAM,CAACl2C,KAAK,EAAE,CAAC,CAAC;IACvC;EACJ,CAAC;AACL;AAEO,SAASm2C,OAAOA,CAACnoB,KAAK,EAAE76B,IAAI,EAAE;EACjC,IAAI6iD,WAAW,CAAChoB,KAAK,CAAC,EAAE;IACpBgoB,WAAW,CAAChoB,KAAK,CAAC,CAAC75B,OAAO,CAAC,UAAAiiD,kBAAkB;MAAA,OAAIA,kBAAkB,CAACjjD,IAAI,CAAC;IAAA,EAAC;EAC9E;AACJ,C;;;;;;;;;;;;ACtBa;;AAAA,SAAAkjD,eAAA1oC,CAAA,EAAA/a,CAAA,WAAA0jD,eAAA,CAAA3oC,CAAA,KAAA4oC,qBAAA,CAAA5oC,CAAA,EAAA/a,CAAA,KAAAib,2BAAA,CAAAF,CAAA,EAAA/a,CAAA,KAAA4jD,gBAAA;AAAA,SAAAA,iBAAA,cAAAroC,SAAA;AAAA,SAAAN,4BAAAF,CAAA,EAAA9N,CAAA,QAAA8N,CAAA,2BAAAA,CAAA,SAAAY,iBAAA,CAAAZ,CAAA,EAAA9N,CAAA,OAAA+N,CAAA,MAAAjL,QAAA,CAAAnH,IAAA,CAAAmS,CAAA,EAAAa,KAAA,6BAAAZ,CAAA,IAAAD,CAAA,CAAAlc,WAAA,KAAAmc,CAAA,GAAAD,CAAA,CAAAlc,WAAA,CAAAyX,IAAA,aAAA0E,CAAA,cAAAA,CAAA,GAAAvJ,KAAA,CAAAoK,IAAA,CAAAd,CAAA,oBAAAC,CAAA,+CAAAc,IAAA,CAAAd,CAAA,IAAAW,iBAAA,CAAAZ,CAAA,EAAA9N,CAAA;AAAA,SAAA0O,kBAAAZ,CAAA,EAAA9N,CAAA,aAAAA,CAAA,IAAAA,CAAA,GAAA8N,CAAA,CAAAzZ,MAAA,MAAA2L,CAAA,GAAA8N,CAAA,CAAAzZ,MAAA,YAAAtB,CAAA,MAAAob,CAAA,GAAA3J,KAAA,CAAAxE,CAAA,GAAAjN,CAAA,GAAAiN,CAAA,EAAAjN,CAAA,IAAAob,CAAA,CAAApb,CAAA,IAAA+a,CAAA,CAAA/a,CAAA,UAAAob,CAAA;AAAA,SAAAuoC,sBAAA5oC,CAAA,EAAA8oC,CAAA,QAAA7oC,CAAA,WAAAD,CAAA,gCAAApc,MAAA,IAAAoc,CAAA,CAAApc,MAAA,CAAAC,QAAA,KAAAmc,CAAA,4BAAAC,CAAA,QAAAhb,CAAA,EAAAob,CAAA,EAAA3O,CAAA,EAAA+O,CAAA,EAAAvO,CAAA,OAAAqO,CAAA,OAAA5c,CAAA,iBAAA+N,CAAA,IAAAuO,CAAA,GAAAA,CAAA,CAAApS,IAAA,CAAAmS,CAAA,GAAAU,IAAA,QAAAooC,CAAA,QAAAp/C,MAAA,CAAAuW,CAAA,MAAAA,CAAA,UAAAM,CAAA,uBAAAA,CAAA,IAAAtb,CAAA,GAAAyM,CAAA,CAAA7D,IAAA,CAAAoS,CAAA,GAAAK,IAAA,MAAApO,CAAA,CAAAnL,IAAA,CAAA9B,CAAA,CAAAmI,KAAA,GAAA8E,CAAA,CAAA3L,MAAA,KAAAuiD,CAAA,GAAAvoC,CAAA,iBAAAP,CAAA,IAAArc,CAAA,OAAA0c,CAAA,GAAAL,CAAA,yBAAAO,CAAA,YAAAN,CAAA,CAAAU,MAAA,KAAAF,CAAA,GAAAR,CAAA,CAAAU,MAAA,IAAAjX,MAAA,CAAA+W,CAAA,MAAAA,CAAA,2BAAA9c,CAAA,QAAA0c,CAAA,aAAAnO,CAAA;AAAA,SAAAy2C,gBAAA3oC,CAAA,QAAAtJ,KAAA,CAAAC,OAAA,CAAAqJ,CAAA,UAAAA,CAAA;AAEb,IAAM+oC,+BAA+B,GAAG,SAAlCA,+BAA+BA,CAAYC,IAAI,EAAE;EACnD5wB,SAAS,CAAC6wB,aAAa,CAACC,KAAK,CAACtkD,IAAI,CAAC,UAASukD,YAAY,EAAE;IACtDA,YAAY,CAACC,MAAM,CAAC/M,WAAW,CAAC;MAC5BxtC,IAAI,EAAE,cAAc;MACpB0+B,IAAI,EAAEyb,IAAI,CAACzb,IAAI;MACf8b,UAAU,EAAEL,IAAI,CAACM;IACrB,CAAC,CAAC;EACN,CAAC,CAAC;AACN,CAAC;AAED,IAAMC,SAAS,GAAG,SAAZA,SAASA,CAAYC,UAAU,EAAE;EACnC,IAAIC,MAAM,GAAG,CAAC,CAAC;EACftiD,QAAQ,CAACsiD,MAAM,CAAChzC,KAAK,CAAC,GAAG,CAAC,CAACjQ,OAAO,CAAC,UAAS+N,EAAE,EAAE;IAC5C,IAAAm1C,SAAA,GAAqBn1C,EAAE,CAACkC,KAAK,CAAC,GAAG,CAAC;MAAAkzC,UAAA,GAAAjB,cAAA,CAAAgB,SAAA;MAA5Bv8C,GAAG,GAAAw8C,UAAA;MAAEv8C,KAAK,GAAAu8C,UAAA;IAChBF,MAAM,CAACt8C,GAAG,CAACoJ,IAAI,CAAC,CAAC,CAAC,GAAGnJ,KAAK;EAC9B,CAAC,CAAC;EACF,OAAOq8C,MAAM,CAACD,UAAU,CAAC;AAC7B,CAAC;AAED,SAASI,wBAAwBA,CAAA,EAAG;EAChC,IAAI,eAAe,IAAIxxB,SAAS,EAAE;IAC9B;IACA,IAAIyxB,QAAQ,GAAG;MACXtc,IAAI,EAAEgc,SAAS,CAAC,aAAa,CAAC;MAC9BD,cAAc,EAAEC,SAAS,CAAC,WAAW;IACzC,CAAC;IACDR,+BAA+B,CAACc,QAAQ,CAAC;EAC7C;AACJ;AAEA,SAASp+C,IAAIA,CAAA,EAAG;EACZhB,CAAC,CAAC,MAAM,CAAC,CAACK,EAAE,CAAC,wBAAwB,EAAE8+C,wBAAwB,CAAC;EAChEn/C,CAAC,CAAC,MAAM,CAAC,CAACK,EAAE,CAAC,8BAA8B,EAAE8+C,wBAAwB,CAAC;AAC1E;AAEAE,MAAM,CAACC,OAAO,GAAG;EACbt+C,IAAI,EAAEA;AACV,CAAC,C;;;;;;;;;;;;ACvCD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA+C;AAEK;AACoB;AACb;AACzB;AACoB;AAEb;AACS;AACX;AAC8B;AAErEu+C,qBAAuB,MAAA12C,MAAA,CAAMlP,MAAM,CAACC,IAAI,CAACqH,IAAI,CAACu+C,UAAU,QAAK;AAE7D,IAAI7lD,MAAM,CAACC,IAAI,CAACC,eAAe,CAAC4lD,6BAA6B,IAAI9lD,MAAM,CAACC,IAAI,CAACC,eAAe,CAAC6lD,mBAAmB,IAAI/lD,MAAM,CAACC,IAAI,CAAC+lD,uBAAuB,IAAIhmD,MAAM,CAACC,IAAI,CAAC+lD,uBAAuB,CAACC,aAAa,IAAI,eAAe,IAAIjyB,SAAS,EAAE;EAC1OkyB,iEAAwB,CAAC,CAAC;AAC9B;AAEAC,qEAAS,CAAC,CAAC;AAEXxmB,gDAAS,CAACt4B,IAAI,CAAC,CAAC;AAChB2hB,2EAAe,CAAC,CAAC;AAEjBkG,sEAAW,CAAC,CAAC;AACbgd,oEAAS,CAAC,CAAC;AAEXka,kEAAM,CAAC,CAAC;AACR9yB,sEAAW,CAAC+yB,yDAAa,CAAC;AAC1B,IAAIrmD,MAAM,CAACC,IAAI,CAACC,eAAe,CAAComD,iBAAiB,EAAE;EAC/CC,0EAAW,CAAC,CAAC;AACjB;;AAEA;AACA;AACA;AACAvmD,MAAM,CAACC,IAAI,GAAGD,MAAM,CAACC,IAAI,IAAI,CAAC,CAAC;AAE/BD,MAAM,CAACC,IAAI,CAACmkD,OAAO,GAAGA,uDAAO;AAE7B94B,iEAAS,CAAC,cAAc,EAAE4D,8DAAW,CAAC,C;;;;;;;;;;;;ACxCtC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAa;;AAEmE;AACjC;;AAE/C;AACA;AACA;AACA;AACA;AACA;AACO,SAAS4f,gBAAgBA,CAACpjB,SAAS,EAAE;EACxC,IAAIqjB,WAAW,GAAGC,cAAc,CAACtjB,SAAS,CAAC;IACvCujB,YAAY,GAAGF,WAAW,KAAK,KAAK;IACpCG,WAAW,GAAG,EAAE;IAChBC,WAAW,GAAGzjB,SAAS,CAACniB,gBAAgB,8BAAA2F,MAAA,CAA6B6/B,WAAW,aAAS,CAAC;EAE9F,EAAE,CAAC3sC,OAAO,CAACqH,IAAI,CAAC0lC,WAAW,EAAE,UAASC,WAAW,EAAE;IAC/C,IAAIC,cAAc,GAAGC,mBAAmB,CAACF,WAAW,CAAC;MACjDG,eAAe,GAAG;QACdC,GAAG,EAAEC,WAAW,CAACL,WAAW,CAAC;QAC7B3nC,OAAO,EAAEioC,UAAU,CAACN,WAAW,EAAE,IAAI;MACzC,CAAC;;IAEL;IACAG,eAAe,CAACN,YAAY,GAAG,KAAK,GAAG,UAAU,CAAC,GAAGI,cAAc;IAEnEH,WAAW,CAACvsC,IAAI,CAAC4sC,eAAe,CAAC;EACrC,CAAC,CAAC;EAEF,OAAO;IACHI,IAAI,EAAER,WAAW;IACjB/tC,IAAI,EAAEC,IAAI,CAACC,SAAS,CAAC4tC,WAAW;EACpC,CAAC;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAASQ,UAAUA,CAACE,WAAW,EAAEtuC,SAAS,EAAE;EAC/C,IAAIuuC,gBAAgB,GAAGC,mBAAmB,CAACF,WAAW,CAAC;IACnDnoC,OAAO,GAAG,EAAE,CAACsoC,GAAG,CAACtmC,IAAI,CAAComC,gBAAgB,CAACtmC,gBAAgB,CAAC,kBAAkB,CAAC,EAAE,UAAS6lC,WAAW,EAAE;MAC/F,IAAIY,SAAS,GAAGZ,WAAW,CAACpnC,aAAa,CAAC,6CAA6C,CAAC;QACpFioC,eAAe,GAAGD,SAAS,GAAGA,SAAS,CAACvoC,OAAO,CAACuoC,SAAS,CAACE,aAAa,CAAC,CAAC/+B,YAAY,CAAC,eAAe,CAAC,GAAGi+B,WAAW,CAACj+B,YAAY,CAAC,sBAAsB,CAAC;MAE7J,IAAI,CAAC8+B,eAAe,EAAE;QAClB,EAAE,CAACF,GAAG,CAACtmC,IAAI,CAAComC,gBAAgB,CAACtmC,gBAAgB,CAAC,yBAAyB,CAAC,EAAE,UAAS6lC,WAAW,EAAE;UAC5F,IAAIA,WAAW,CAACzoC,SAAS,CAACkF,QAAQ,CAAC,qBAAqB,CAAC,EAAE;YACvDokC,eAAe,GAAGb,WAAW,CAACj+B,YAAY,CAAC,uBAAuB,CAAC;UACvE,CAAC,MAAM,IAAIi+B,WAAW,CAACzoC,SAAS,CAACkF,QAAQ,CAAC,iBAAiB,CAAC,EAAE;YAC1DokC,eAAe,GAAGb,WAAW,CAACj+B,YAAY,CAAC,uBAAuB,CAAC;UACvE;QACJ,CAAC,CAAC;MACN;MAEA,OAAO;QACHg/B,QAAQ,EAAEf,WAAW,CAACj+B,YAAY,CAAC,gBAAgB,CAAC;QACpD8+B,eAAe,EAAEA;MACrB,CAAC;IACL,CAAC,CAAC;EAEN,OAAO3uC,SAAS,GAAGD,IAAI,CAACC,SAAS,CAACmG,OAAO,CAAC,GAAGA,OAAO;AACxD;;AAEA;AACA;AACA;AACO,SAASgoC,WAAWA,CAACt/B,EAAE,EAAE;EAC5B,OAAO2/B,mBAAmB,CAAC3/B,EAAE,CAAC,CAACgB,YAAY,CAAC,UAAU,CAAC;AAC3D;;AAEA;AACA;AACA;AACO,SAAS69B,cAAcA,CAAC7+B,EAAE,EAAE;EAC/B,OAAO2/B,mBAAmB,CAAC3/B,EAAE,CAAC,CAACgB,YAAY,CAAC,wBAAwB,CAAC;AACzE;AAEO,SAASi/B,cAAcA,CAACC,KAAK,EAAEp7B,QAAQ,EAAE46B,gBAAgB,EAAES,YAAY,EAAE;EAC5E;EACA;EACA,IAAI,CAACT,gBAAgB,IAAIA,gBAAgB,KAAKC,mBAAmB,CAAC76B,QAAQ,CAAC,EAAE;IACzEA,QAAQ,CAACpO,YAAY,CAAC,UAAU,EAAEwpC,KAAK,CAAC;IAExC,IAAIC,YAAY,EAAE;MACdr7B,QAAQ,CAAC/L,WAAW,GAAGmnC,KAAK;IAChC;EACJ;AACJ;AAEO,SAASE,UAAUA,CAACF,KAAK,EAAER,gBAAgB,EAAE;EAChDO,cAAc,CAACC,KAAK,EAAER,gBAAgB,CAAC;EAEvC,EAAE,CAACztC,OAAO,CAACqH,IAAI,CAAComC,gBAAgB,CAACtmC,gBAAgB,CAAC,YAAY,CAAC,EAAE,UAAAqrB,SAAS;IAAA,OAAIwb,cAAc,CAACC,KAAK,EAAEzb,SAAS,EAAEib,gBAAgB,CAAC;EAAA,EAAC;EACjI,EAAE,CAACztC,OAAO,CAACqH,IAAI,CAAComC,gBAAgB,CAACtmC,gBAAgB,CAAC,gCAAgC,CAAC,EAAE,UAAAqrB,SAAS;IAAA,OAAIwb,cAAc,CAACC,KAAK,EAAEzb,SAAS,EAAEib,gBAAgB,EAAE,IAAI,CAAC;EAAA,EAAC;AAC/J;;AAEA;AACA;AACA;AACO,SAASW,UAAUA,CAACC,OAAO,EAAEZ,gBAAgB,EAAE;EAClD,EAAE,CAACztC,OAAO,CAACqH,IAAI,CAAComC,gBAAgB,CAACtmC,gBAAgB,CAAC,iCAAiC,CAAC,EAAE,UAAAqrB,SAAS;IAAA,OAAIA,SAAS,CAACxsB,SAAS,GAAGqoC,OAAO;EAAA,EAAC;AACrI;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,YAAYA,CAACC,cAAc,EAAEd,gBAAgB,EAA8E;EAAA,IAA5Ee,aAAa,GAAAx7B,SAAA,CAAAjT,MAAA,QAAAiT,SAAA,QAAA9Q,SAAA,GAAA8Q,SAAA,MAAG,mCAAmC;EAAA,IAAEy7B,qBAAqB,GAAAz7B,SAAA,CAAAjT,MAAA,OAAAiT,SAAA,MAAA9Q,SAAA;EACrI,IAAIusC,qBAAqB,EAAE;IACvBC,eAAe,CAACH,cAAc,EAAEd,gBAAgB,CAAC;EACrD;EAEA,EAAE,CAACztC,OAAO,CAACqH,IAAI,CAAComC,gBAAgB,CAACtmC,gBAAgB,CAACqnC,aAAa,CAAC,EAAE,UAAShc,SAAS,EAAE;IAClFmc,iBAAiB,CAACJ,cAAc,CAAC/b,SAAS,CAACzjB,YAAY,CAAC,kBAAkB,CAAC,CAAC,EAAEyjB,SAAS,CAAC;EAC5F,CAAC,CAAC;AACN;;AAGA;AACA;AACA;AACA;AACO,SAASkc,eAAeA,CAACH,cAAc,EAAEd,gBAAgB,EAAE;EAC9D,IAAImB,cAAc,GAAGnB,gBAAgB,CAACtmC,gBAAgB,CAAC,sCAAsC,CAAC;EAE9F,EAAE,CAACnH,OAAO,CAACqH,IAAI,CAACunC,cAAc,EAAE,UAASC,aAAa,EAAE;IACpD,IAAIC,mBAAmB,GAAGD,aAAa,CAACviC,YAAY,CAAC,sBAAsB,CAAC,GAAGrI,CAAC,CAAC4qC,aAAa,CAAC,CAACE,KAAK,CAAC,UAAU,CAAC,GAAG,IAAI;MACpHC,eAAe,GAAGF,mBAAmB,IAAI,CAACA,mBAAmB,CAACG,SAAS;MACvEC,mBAAmB,GAAGF,eAAe,GAAGF,mBAAmB,CAACK,UAAU,GAAGN,aAAa,CAACO,iBAAiB;MACxGC,oBAAoB,GAAId,cAAc,CAACxuC,MAAM,GAAGmvC,mBAAmB,GAAI,CAAC,GAAGX,cAAc,CAACxuC,MAAM,GAAGmvC,mBAAmB,GAAG,CAAC;MAC1HI,YAAY,GAAGf,cAAc,CAACxuC,MAAM,GAAGmvC,mBAAmB;;IAE9D;IACA,KAAK,IAAIhkC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGmkC,oBAAoB,EAAEnkC,CAAC,EAAE,EAAE;MAC3C;MACA,IAAIokC,YAAY,EAAE;QACd,IAAIC,aAAa,GAAG9B,gBAAgB,CAAC7nC,aAAa,2BAAAkH,MAAA,CAA0B+hC,aAAa,CAAC9/B,YAAY,CAAC,wBAAwB,CAAC,QAAI,CAAC,CAACygC,SAAS,CAAC,IAAI,CAAC;QAErJD,aAAa,CAAC3pC,aAAa,CAAC,oBAAoB,CAAC,CAACnB,YAAY,CAAC,kBAAkB,EAAEyqC,mBAAmB,EAAE,CAAC;QACzGK,aAAa,CAAC/D,eAAe,CAAC,qBAAqB,CAAC;;QAEpD;QACA,IAAIwD,eAAe,EAAE;UACjB/qC,CAAC,CAAC4qC,aAAa,CAAC,CAACE,KAAK,CAAC,UAAU,EAAEQ,aAAa,CAAC;QACrD,CAAC,MAAM;UACHV,aAAa,CAAChuC,WAAW,CAAC0uC,aAAa,CAAC;QAC5C;MACJ,CAAC,MAAM;QACH;QACA;QACA,IAAIP,eAAe,EAAE;UACjB/qC,CAAC,CAAC4qC,aAAa,CAAC,CAACE,KAAK,CAAC,aAAa,EAAE,EAAEG,mBAAmB,CAAC;QAChE,CAAC,MAAM;UACHL,aAAa,CAACxa,WAAW,CAACwa,aAAa,CAACY,gBAAgB,CAAC;QAC7D;MACJ;IACJ;IAEAxrC,CAAC,CAAC,MAAM,CAAC,CAAC2H,OAAO,CAAC,yBAAyB,EACvC;MACI0d,SAAS,EAAEmkB,gBAAgB;MAC3BiC,cAAc,EAAEb,aAAa;MAC7BxmC,IAAI,EAAEwmC,aAAa,CAAC9/B,YAAY,CAAC,wBAAwB;IAC7D,CACJ,CAAC;EACL,CAAC,CAAC;AACN;AAEO,SAAS4/B,iBAAiBA,CAACgB,aAAa,EAAEC,YAAY,EAAE;EAC3D,IAAIC,6BAA6B,GAAGD,YAAY,CAAC9gC,OAAO,CAAC,yBAAyB,CAAC,IAAI,IAAI;EAC3F,IAAI6gC,aAAa,IAAI,CAACE,6BAA6B,EAAE;IACjDD,YAAY,CAACE,GAAG,GAAGH,aAAa,CAAC5wC,GAAG;IACpC6wC,YAAY,CAACG,KAAK,GAAGJ,aAAa,CAACI,KAAK;IACxCH,YAAY,CAACI,GAAG,GAAGL,aAAa,CAACK,GAAG;EACxC;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,UAAUA,CAACnH,MAAM,EAAE2E,gBAAgB,EAAE;EACjD,IAAIyC,MAAM,GAAGzC,gBAAgB,CAACtmC,gBAAgB,CAAC,oBAAoB,CAAC;IAChEgpC,WAAW,GAAG5I,kFAAoB,CAACuB,MAAM,CAAC;EAE9C,EAAE,CAAC9oC,OAAO,CAACqH,IAAI,CAAC6oC,MAAM,EAAE,UAAS1d,SAAS,EAAE;IACxC,IAAI4d,OAAO,GAAG5d,SAAS,CAACzjB,YAAY,CAAC,kBAAkB,CAAC;MACpDshC,cAAc,GAAG7d,SAAS,CAACzjB,YAAY,CAAC,oBAAoB,CAAC;MAC7DuhC,eAAe,GAAG3vC,QAAQ,CAACiF,aAAa,CAAC,2CAA2C,CAAC;MACrF;MACA;MACA;MACA;MACA2qC,UAAU,GAAGH,OAAO,GAAG3hB,+EAAiB,CAAC7wB,MAAM,CAACC,IAAI,CAACqH,IAAI,CAACkrC,OAAO,CAAC,EAAED,WAAW,CAAC,GAAGrH,MAAM;IAC7F,IAAItW,SAAS,CAACra,OAAO,KAAK,GAAG,EAAE;MAC3B,IAAIm4B,eAAe,KAAK,IAAI,IAAID,cAAc,KAAK,IAAI,EAAE;QACrD7d,SAAS,CAAC9yB,IAAI,GAAG8yB,SAAS,CAAC9yB,IAAI,GAAG8yB,SAAS,CAAC9yB,IAAI,GAAG6wC,UAAU;MACjE,CAAC,MAAM;QACH/d,SAAS,CAAC9yB,IAAI,GAAG6wC,UAAU;MAC/B;IACJ,CAAC,MAAM;MACH/d,SAAS,CAAC/tB,YAAY,CAAC,UAAU,EAAE8rC,UAAU,CAAC;IAClD;EACJ,CAAC,CAAC;AACN;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,kBAAkBA,CAAClI,cAAc,EAAEmF,gBAAgB,EAAE;EACjEA,gBAAgB,CAAChpC,YAAY,CAAC,0BAA0B,EAAE6jC,cAAc,CAAC;AAC7E;;AAEA;AACA;AACA;AACO,SAASmI,kBAAkBA,CAAChD,gBAAgB,EAAEtJ,OAAO,EAAE;EAC1D,IAAIuM,OAAO,GAAGjD,gBAAgB,CAAC7nC,aAAa,CAAC,kCAAkC,CAAC;IAC5E+qC,UAAU,GAAG1sC,CAAC,CAAC,kDAAkD,CAAC;EACtE0sC,UAAU,CAACjmB,QAAQ,CAAC,QAAQ,CAAC;EAE7B,IAAIyZ,OAAO,IAAIuM,OAAO,EAAE;IACpBA,OAAO,CAACE,SAAS,GAAGzM,OAAO,CAAC0M,KAAK,CAACrkB,IAAI;IACtC,IAAI2X,OAAO,CAAC2M,SAAS,IAAI3M,OAAO,CAAC4M,QAAQ,IAAK5M,OAAO,CAAC0M,KAAK,IAAI1M,OAAO,CAAC0M,KAAK,CAACxoC,IAAI,KAAK,OAAO,IAAI87B,OAAO,CAAC0M,KAAK,CAACG,KAAK,IAAI7M,OAAO,CAAC0M,KAAK,CAACG,KAAK,CAACpqC,KAAM,EAAE;MAChJ+pC,UAAU,CAAChsC,WAAW,CAAC,QAAQ,CAAC;IACpC;EACJ;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACO,SAASssC,mBAAmBA,CAACljC,EAAE,EAAE;EACpC,OAAO2/B,mBAAmB,CAAC3/B,EAAE,CAAC,CAACnI,aAAa,CAAC,gCAAgC,CAAC;AAClF;;AAEA;AACA;AACA;AACA;AACA;AACO,SAASsnC,mBAAmBA,CAACn/B,EAAE,EAAE;EACpC,IAAImjC,gBAAgB,GAAGD,mBAAmB,CAACljC,EAAE,CAAC;EAE9C,OAAOmjC,gBAAgB,GAAGA,gBAAgB,CAACtqC,KAAK,GAAG,CAAC;AACxD;AAEO,SAAS8mC,mBAAmBA,CAAC3/B,EAAE,EAAE;EACpC,OAAOA,EAAE,CAACe,OAAO,CAAC,0BAA0B,CAAC;AACjD;AAEO,SAASwjC,oBAAoBA,CAAA,EAAG;EACnC,IAAIC,mBAAmB,GAAG5xC,QAAQ,CAACiF,aAAa,CAAC,sBAAsB,CAAC;IACpE4sC,kBAAkB,GAAG7xC,QAAQ,CAACiF,aAAa,CAAC,6BAA6B,CAAC;IAC1E6sC,SAAS,GAAG9xC,QAAQ,CAACiF,aAAa,CAAC,uCAAuC,CAAC;IAC3E8sC,iBAAiB,GAAG/xC,QAAQ,CAACiF,aAAa,CAAC,sDAAsD,CAAC;IAClG+sC,kBAAkB,GAAGhyC,QAAQ,CAACwG,gBAAgB,CAAC,gDAAgD,CAAC;IAChGyrC,wBAAwB,GAAGjyC,QAAQ,CAACiF,aAAa,CAAC,2DAA2D,CAAC;IAC9GitC,UAAU,GAAGlyC,QAAQ,CAACiF,aAAa,CAAC,sDAAsD,CAAC;IAC3FktC,gBAAgB,GAAGnyC,QAAQ,CAACiF,aAAa,CAAC,uDAAuD,CAAC;IAClGmtC,cAAc,GAAG,MAAM;EAE3B,IAAID,gBAAgB,IAAIA,gBAAgB,IAAI,IAAI,EAAE;IAC9CC,cAAc,GAAGD,gBAAgB,CAAC5vB,OAAO,CAAC8vB,oBAAoB;EAClE;EAEA,IAAIT,mBAAmB,IAAIA,mBAAmB,IAAI,IAAI,EAAE;IACpD,IAAIA,mBAAmB,CAACrvB,OAAO,CAAC+vB,YAAY,KAAK,MAAM,IAAIF,cAAc,KAAK,MAAM,EAAE;MAClF,IAAIN,SAAS,IAAIA,SAAS,IAAI,IAAI,IAAII,UAAU,IAAIA,UAAU,IAAI,IAAI,IAAIJ,SAAS,CAACluC,SAAS,CAACkF,QAAQ,CAAC,QAAQ,CAAC,EAAE;QAC9GgpC,SAAS,CAACluC,SAAS,CAAC6O,MAAM,CAAC,QAAQ,CAAC;QACpCy/B,UAAU,CAACtuC,SAAS,CAACC,GAAG,CAAC,QAAQ,CAAC;MACtC;MACA,IAAIiuC,SAAS,CAACS,QAAQ,EAAE;QACpBT,SAAS,CAACS,QAAQ,GAAG,KAAK;MAC9B;MACA,IAAIN,wBAAwB,IAAIA,wBAAwB,IAAI,IAAI,EAAE;QAC9DA,wBAAwB,CAACruC,SAAS,CAACC,GAAG,CAAC,QAAQ,CAAC;MACpD;MACA,IAAIkuC,iBAAiB,IAAIA,iBAAiB,IAAI,IAAI,IAAIC,kBAAkB,IAAIA,kBAAkB,IAAI,IAAI,EAAE;QACpGD,iBAAiB,CAACnuC,SAAS,CAACC,GAAG,CAAC,QAAQ,CAAC;QACzC,EAAE,CAACxE,OAAO,CAACqH,IAAI,CAACsrC,kBAAkB,EAAE,UAASngB,SAAS,EAAE;UACpDA,SAAS,CAACjuB,SAAS,CAACC,GAAG,CAAC,QAAQ,CAAC;QACrC,CAAC,CAAC;MACN;IACJ,CAAC,MAAM;MACH,IAAIuuC,cAAc,KAAK,OAAO,IAAIN,SAAS,IAAIA,SAAS,IAAI,IAAI,IAAII,UAAU,IAAIA,UAAU,IAAI,IAAI,IAAIA,UAAU,CAACtuC,SAAS,CAACkF,QAAQ,CAAC,QAAQ,CAAC,EAAE;QAC7IopC,UAAU,CAACtuC,SAAS,CAAC6O,MAAM,CAAC,QAAQ,CAAC;QACrCq/B,SAAS,CAACluC,SAAS,CAACC,GAAG,CAAC,QAAQ,CAAC;MACrC;MACA,IAAIkuC,iBAAiB,IAAIA,iBAAiB,IAAI,IAAI,IAAIA,iBAAiB,CAACnuC,SAAS,CAACkF,QAAQ,CAAC,QAAQ,CAAC,IAAIkpC,kBAAkB,IAAIA,kBAAkB,IAAI,IAAI,EAAE;QACtJD,iBAAiB,CAACnuC,SAAS,CAAC6O,MAAM,CAAC,QAAQ,CAAC;QAC5C,EAAE,CAACpT,OAAO,CAACqH,IAAI,CAACsrC,kBAAkB,EAAE,UAASngB,SAAS,EAAE;UACpD,IAAKA,SAAS,CAACjuB,SAAS,CAACkF,QAAQ,CAAC,QAAQ,CAAC,EAAE;YACzC+oB,SAAS,CAACjuB,SAAS,CAAC6O,MAAM,CAAC,QAAQ,CAAC;UACxC;QACJ,CAAC,CAAC;MACN;MACA,IAAIw/B,wBAAwB,IAAIA,wBAAwB,IAAI,IAAI,IAAIA,wBAAwB,CAACruC,SAAS,CAACkF,QAAQ,CAAC,QAAQ,CAAC,EAAE;QACvHmpC,wBAAwB,CAACruC,SAAS,CAAC6O,MAAM,CAAC,QAAQ,CAAC;MACvD;IACJ;EACJ,CAAC,MAAM;IACH,IAAIo/B,kBAAkB,IAAIA,kBAAkB,IAAI,IAAI,EAAE;MAClD,IAAIC,SAAS,CAACS,QAAQ,EAAE;QACpBT,SAAS,CAACS,QAAQ,GAAG,KAAK;MAC9B;MACA,IAAIR,iBAAiB,IAAIA,iBAAiB,IAAI,IAAI,IAAIC,kBAAkB,IAAIA,kBAAkB,IAAI,IAAI,EAAE;QACpGD,iBAAiB,CAACnuC,SAAS,CAACC,GAAG,CAAC,QAAQ,CAAC;QACzC,EAAE,CAACxE,OAAO,CAACqH,IAAI,CAACsrC,kBAAkB,EAAE,UAASngB,SAAS,EAAE;UACpDA,SAAS,CAACjuB,SAAS,CAACC,GAAG,CAAC,QAAQ,CAAC;QACrC,CAAC,CAAC;MACN;MACA,IAAIouC,wBAAwB,IAAIA,wBAAwB,IAAI,IAAI,EAAE;QAC9DA,wBAAwB,CAACruC,SAAS,CAACC,GAAG,CAAC,QAAQ,CAAC;MACpD;MACA,IAAIiuC,SAAS,IAAIA,SAAS,IAAI,IAAI,IAAII,UAAU,IAAIA,UAAU,IAAI,IAAI,IAAIL,kBAAkB,CAACtvB,OAAO,CAAC+vB,YAAY,KAAK,MAAM,IAAIF,cAAc,IAAI,MAAM,EAAE;QACtJ,IAAIN,SAAS,CAACluC,SAAS,CAACkF,QAAQ,CAAC,QAAQ,CAAC,EAAE;UACxCgpC,SAAS,CAACluC,SAAS,CAAC6O,MAAM,CAAC,QAAQ,CAAC;UACpCy/B,UAAU,CAACtuC,SAAS,CAACC,GAAG,CAAC,QAAQ,CAAC;QACtC;MACJ,CAAC,MAAM;QACH,IAAIuuC,cAAc,KAAK,OAAO,IAAIN,SAAS,IAAIA,SAAS,IAAI,IAAI,IAAII,UAAU,IAAIA,UAAU,IAAI,IAAI,IAAIA,UAAU,CAACtuC,SAAS,CAACkF,QAAQ,CAAC,QAAQ,CAAC,EAAE;UAC7IopC,UAAU,CAACtuC,SAAS,CAAC6O,MAAM,CAAC,QAAQ,CAAC;UACrCq/B,SAAS,CAACluC,SAAS,CAACC,GAAG,CAAC,QAAQ,CAAC;QACrC;QACA,IAAIkuC,iBAAiB,IAAIA,iBAAiB,IAAI,IAAI,IAAIA,iBAAiB,CAACnuC,SAAS,CAACkF,QAAQ,CAAC,QAAQ,CAAC,IAAIkpC,kBAAkB,IAAIA,kBAAkB,IAAI,IAAI,EAAG;UACvJD,iBAAiB,CAACnuC,SAAS,CAAC6O,MAAM,CAAC,QAAQ,CAAC;UAC5C,EAAE,CAACpT,OAAO,CAACqH,IAAI,CAACsrC,kBAAkB,EAAE,UAASngB,SAAS,EAAE;YACpD,IAAKA,SAAS,CAACjuB,SAAS,CAACkF,QAAQ,CAAC,QAAQ,CAAC,EAAE;cACzC+oB,SAAS,CAACjuB,SAAS,CAAC6O,MAAM,CAAC,QAAQ,CAAC;YACxC;UACJ,CAAC,CAAC;QACN;QACA,IAAIw/B,wBAAwB,IAAIA,wBAAwB,IAAI,IAAI,IAAIA,wBAAwB,CAACruC,SAAS,CAACkF,QAAQ,CAAC,QAAQ,CAAC,EAAE;UACvHmpC,wBAAwB,CAACruC,SAAS,CAAC6O,MAAM,CAAC,QAAQ,CAAC;QACvD;MACJ;IACJ;EACJ;AACJ;AAIAnP,CAAC,CAAC,kCAAkC,CAAC,CAACK,EAAE,CAAC,OAAO,EAAE,UAASu1B,KAAK,EAAE;EAC9D,IAAIuqB,IAAI,GAAGngD,CAAC,CAAC41B,KAAK,CAACoc,aAAa,CAAC;IAC7BoO,eAAe,GAAGD,IAAI,CAAC3Q,OAAO,CAAC,eAAe,CAAC;IAC/C6Q,iBAAiB,GAAGF,IAAI,CAAC3Q,OAAO,CAAC,0BAA0B,CAAC,CAAChqB,IAAI,CAAC,kCAAkC,CAAC;EAEzG46B,eAAe,CAAC35B,QAAQ,CAAC,mBAAmB,CAAC;EAC7C05B,IAAI,CAAC15B,QAAQ,CAAC,QAAQ,CAAC;EACvB45B,iBAAiB,CAAC3/C,WAAW,CAAC,QAAQ,CAAC;AAC3C,CAAC,CAAC;AAEFV,CAAC,CAAC,4CAA4C,CAAC,CAACK,EAAE,CAAC,OAAO,EAAE,UAASu1B,KAAK,EAAE;EACxE,IAAIuqB,IAAI,GAAGngD,CAAC,CAAC41B,KAAK,CAACoc,aAAa,CAAC;IAC7BoO,eAAe,GAAGD,IAAI,CAAC3Q,OAAO,CAAC,eAAe,CAAC;IAC/C8Q,gBAAgB,GAAGH,IAAI,CAAC3Q,OAAO,CAAC,kCAAkC,CAAC;IACnE6Q,iBAAiB,GAAGF,IAAI,CAAC3Q,OAAO,CAAC,0BAA0B,CAAC,CAAChqB,IAAI,CAAC,kCAAkC,CAAC;EAEzG46B,eAAe,CAAC1/C,WAAW,CAAC,mBAAmB,CAAC;EAChD4/C,gBAAgB,CAAC5/C,WAAW,CAAC,QAAQ,CAAC;EACtC2/C,iBAAiB,CAAC55B,QAAQ,CAAC,QAAQ,CAAC;AACxC,CAAC,CAAC;AAEK,IAAIymB,aAAa,GAAGqT,2DAA0B,C;;;;;;;;;;;;AC1XxC,4CAA4C,WAAW,EAAE,0BAA0B,mBAAmB,mBAAO,CAAC,sGAA2B,EAAE,oBAAoB,mBAAO,CAAC,sHAAkB,EAAE,sBAAsB,0BAA0B,kEAAkE,8BAA8B,mBAAmB,KAAK,8BAA8B,8GAA8G,oBAAoB,+CAA+C,uCAAuC,0DAA0D,yCAAyC,YAAY,eAAe,KAAK,wBAAwB,mDAAmD,6BAA6B,iDAAiD,yDAAyD,0DAA0D,kEAAkE,0DAA0D,mBAAmB,qBAAqB,wBAAwB,4BAA4B,yBAAyB,6GAA6G,sEAAsE,8GAA8G,wGAAwG,uHAAuH,8GAA8G,+IAA+I,gDAAgD,6CAA6C,sEAAsE,uDAAuD,8CAA8C,KAAK,sDAAsD,0CAA0C,oBAAoB,KAAK,uCAAuC,qBAAqB,iDAAiD,eAAe,yDAAyD,iFAAiF,EAAE,sBAAsB,8EAA8E,4CAA4C,EAAE,wCAAwC,oDAAoD,kGAAkG,kFAAkF,aAAa,kFAAkF,oFAAoF,aAAa,oFAAoF,sFAAsF,8FAA8F,2EAA2E,qDAAqD,iFAAiF,yBAAyB,uDAAuD,iDAAiD,wDAAwD,kBAAkB,0CAA0C,0BAA0B,kCAAkC,oCAAoC,kCAAkC,+BAA+B,oKAAoK,sCAAsC,uDAAuD,6BAA6B,2BAA2B,MAAM,EAAE,0EAA0E,kKAAkK,mCAAmC,gFAAgF,qCAAqC,iFAAiF,OAAO,MAAM,2BAA2B,iCAAiC,kCAAkC,yCAAyC,mCAAmC,qBAAqB,4BAA4B,IAAI,yDAAyD,uEAAuE,EAAE,8EAA8E,6LAA6L,2CAA2C,8BAA8B,6CAA6C,YAAY,mBAAmB,IAAI,4CAA4C,yBAAyB,wDAAwD,EAAE,mDAAmD,8CAA8C,2CAA2C,uCAAuC,oCAAoC,wDAAwD,KAAK,oCAAoC,kDAAkD,uBAAuB,oFAAoF,EAAE,sDAAsD,uCAAuC,wCAAwC,8BAA8B,aAAa,2DAA2D,4FAA4F,8DAA8D,yBAAyB,6CAA6C,uBAAuB,qBAAqB,gDAAgD,iDAAiD,0CAA0C,mDAAmD,uCAAuC,sCAAsC,sEAAsE,mDAAmD,EAAE,0EAA0E,+DAA+D,uDAAuD,yDAAyD,4CAA4C,2DAA2D,wFAAwF,EAAE,wDAAwD,0BAA0B,EAAE,6EAA6E,gEAAgE,qCAAqC,8BAA8B,uCAAuC,0CAA0C,8FAA8F,KAAK,kGAAkG,EAAE,0FAA0F,+GAA+G,iCAAiC,EAAE,wDAAwD,kCAAkC,+CAA+C,2CAA2C,EAAE,wEAAwE,wCAAwC,sDAAsD,UAAU,8BAA8B,YAAY,2EAA2E,gCAAgC,yCAAyC,8CAA8C,mCAAmC,mDAAmD,mDAAmD,EAAE,qDAAqD,yCAAyC,oDAAoD,6BAA6B,GAAG,EAAE,qEAAqE,oFAAoF,iBAAiB,OAAO,4BAA4B,qYAAqY,0EAA0E,wEAAwE,yFAAyF,yCAAyC,2BAA2B,8DAA8D,2DAA2D,yDAAyD,yCAAyC,8DAA8D,uBAAuB,6CAA6C,iDAAiD,4CAA4C,qCAAqC,8FAA8F,oDAAoD,4HAA4H,4DAA4D,wCAAwC,uIAAuI,kEAAkE,4EAA4E,iCAAiC,sFAAsF,oDAAoD,EAAE,iDAAiD,6CAA6C,yFAAyF,iDAAiD,EAAE,gEAAgE,oHAAoH,8DAA8D,iHAAiH,YAAY,EAAE,sEAAsE,8BAA8B,mEAAmE,wCAAwC,+CAA+C,8CAA8C,EAAE,uDAAuD,sEAAsE,EAAE,qDAAqD,yCAAyC,4CAA4C,EAAE,oDAAoD,wIAAwI,iBAAiB,oBAAoB,4CAA4C,mBAAmB,KAAK,eAAe,GAAG,aAAa,GAAG,yB;;;;;;;;;;;ACA/xZ,+GAAe,GAAG,IAAqC,CAAC,iCAAO,CAAC,OAAS,CAAC,oCAAC,CAAC;AAAA;AAAA;AAAA,oGAAC,CAAC,KAAK,UAAgF,CAAC,wBAAwB,aAAa,cAAc,qBAAqB,8BAA8B,WAAW,cAAc,SAAS,qBAAqB,4CAA4C,SAAS,EAAE,SAAS,+BAA+B,OAAO,cAAc,OAAO,+FAA+F,cAAc,0BAA0B,iEAAiE,EAAE,cAAc,sBAAsB,qFAAqF,aAAa,sBAAsB,gHAAgH,EAAE,8OAA8O,wCAAwC,MAAM,kJAAkJ,0BAA0B,2BAA2B,GAAG,OAAO,+BAA+B,iDAAiD,2DAA2D,2BAA2B,YAAY,6LAA6L,gDAAgD,WAAW,gBAAgB,KAAK,0BAA0B,eAAe,+FAA+F,qFAAqF,mFAAmF,EAAE,OAAO,+BAA+B,sBAAsB,MAAM,4CAA4C,yBAAyB,mEAAmE,oDAAoD,WAAW,qCAAqC,sCAAsC,MAAM,gJAAgJ,8DAA8D,2BAA2B,kEAAkE,WAAW,eAAe,4BAA4B,2BAA2B,gBAAgB;;;;;;;;;;;;;ACA30F,4CAA4C,WAAW,EAAE,uBAAuB,mBAAmB,mBAAO,CAAC,sGAA2B,EAAE,+CAA+C,uCAAuC,0DAA0D,yCAAyC,YAAY,eAAe,KAAK,wBAAwB,mDAAmD,6BAA6B,iDAAiD,yDAAyD,0DAA0D,kEAAkE,0DAA0D,mBAAmB,sBAAsB,yBAAyB,6BAA6B,yBAAyB,qEAAqE,sFAAsF,6DAA6D,0DAA0D,sBAAsB,0DAA0D,8FAA8F,gEAAgE,yDAAyD,EAAE,0DAA0D,+DAA+D,kCAAkC,iDAAiD,iDAAiD,iDAAiD,6BAA6B,sEAAsE,aAAa,2DAA2D,qBAAqB,uFAAuF,mJAAmJ,8BAA8B,4BAA4B,6BAA6B,iCAAiC,gCAAgC,wCAAwC,6EAA6E,uDAAuD,oEAAoE,oBAAoB,kCAAkC,4EAA4E,8KAA8K,oBAAoB,KAAK,8BAA8B,KAAK,qBAAqB,qDAAqD,EAAE,4EAA4E,uFAAuF,wCAAwC,EAAE,sDAAsD,2HAA2H,+EAA+E,EAAE,iFAAiF,wEAAwE,kGAAkG,wGAAwG,8GAA8G,+FAA+F,qGAAqG,uBAAuB,EAAE,+DAA+D,IAAI,8BAA8B,SAAS,WAAW,EAAE,sEAAsE,OAAO,iBAAiB,oCAAoC,oBAAoB,6BAA6B,kBAAkB,iDAAiD,EAAE,oDAAoD,kIAAkI,EAAE,oDAAoD,oGAAoG,4FAA4F,EAAE,8DAA8D,4FAA4F,+GAA+G,EAAE,8DAA8D,0EAA0E,aAAa,wEAAwE,aAAa,gFAAgF,aAAa,sEAAsE,aAAa,oEAAoE,cAAc,EAAE,0DAA0D,uDAAuD,yDAAyD,iDAAiD,qDAAqD,qEAAqE,uEAAuE,yEAAyE,6EAA6E,2EAA2E,qEAAqE,0EAA0E,EAAE,4DAA4D,+DAA+D,qCAAqC,+DAA+D,aAAa,6DAA6D,IAAI,yEAAyE,6DAA6D,qCAAqC,8BAA8B,sCAAsC,6EAA6E,0CAA0C,6FAA6F,KAAK,6EAA6E,iGAAiG,EAAE,0FAA0F,+GAA+G,iCAAiC,EAAE,gEAAgE,2CAA2C,iCAAiC,qBAAqB,wBAAwB,YAAY,iCAAiC,EAAE,gDAAgD,4BAA4B,mEAAmE,6DAA6D,6BAA6B,KAAK,kCAAkC,EAAE,uDAAuD,kDAAkD,2IAA2I,6DAA6D,6EAA6E,6EAA6E,kFAAkF,mCAAmC,iDAAiD,2BAA2B,4CAA4C,iCAAiC,iBAAiB,mBAAmB,EAAE,0CAA0C,gDAAgD,2EAA2E,qDAAqD,+EAA+E,yBAAyB,0DAA0D,0EAA0E,0EAA0E,0BAA0B,+CAA+C,sCAAsC,iCAAiC,4DAA4D,oCAAoC,gEAAgE,mEAAmE,yEAAyE,8DAA8D,qCAAqC,sDAAsD,+EAA+E,+CAA+C,mCAAmC,EAAE,wDAAwD,2CAA2C,yCAAyC,8CAA8C,EAAE,sEAAsE,iOAAiO,gGAAgG,yCAAyC,EAAE,oEAAoE,YAAY,mEAAmE,EAAE,wEAAwE,cAAc,uGAAuG,uHAAuH,mFAAmF,8BAA8B,yFAAyF,KAAK,8FAA8F,EAAE,oEAAoE,cAAc,mGAAmG,qBAAqB,8EAA8E,6BAA6B,+EAA+E,KAAK,oFAAoF,EAAE,4EAA4E,cAAc,wGAAwG,qFAAqF,4BAA4B,qGAAqG,KAAK,0GAA0G,EAAE,gDAAgD,qNAAqN,wDAAwD,oJAAoJ,oCAAoC,GAAG,EAAE,wDAAwD,gFAAgF,uCAAuC,uHAAuH,kBAAkB,EAAE,gFAAgF,6EAA6E,wFAAwF,yKAAyK,EAAE,mFAAmF,kBAAkB,2CAA2C,qGAAqG,2CAA2C,0CAA0C,yEAAyE,KAAK,0CAA0C,6BAA6B,GAAG,cAAc,GAAG,uB;;;;;;;;;;;;ACA5/b,4CAA4C,WAAW,EAAE,oBAAoB,wCAAwC,4CAA4C,8CAA8C,wCAAwC,wCAAwC,kCAAkC,0CAA0C,kCAAkC,kCAAkC,8BAA8B,gCAAgC,8BAA8B,4BAA4B,kCAAkC,wBAAwB,sBAAsB,0BAA0B,kEAAkE,8BAA8B,mBAAmB,KAAK,8BAA8B,8GAA8G,oBAAoB,YAAY,+BAA+B,8DAA8D,+BAA+B,uCAAuC,IAAI,+BAA+B,mBAAmB,+CAA+C,2CAA2C,4BAA4B,qCAAqC,iBAAiB,+BAA+B,aAAa,cAAc,2BAA2B,6CAA6C,kCAAkC,gDAAgD,oBAAoB,sDAAsD,wBAAwB,gDAAgD,4BAA4B,uFAAuF,oBAAoB,yGAAyG,0BAA0B,iBAAiB,uEAAuE,2BAA2B,yDAAyD,8HAA8H,4BAA4B,mCAAmC,0BAA0B,qEAAqE,OAAO,6BAA6B,qGAAqG,+DAA+D,KAAK,uCAAuC,2BAA2B,qCAAqC,gBAAgB,kBAAkB,gDAAgD,iBAAiB,6BAA6B,UAAU,sDAAsD,gBAAgB,2BAA2B,sCAAsC,uDAAuD,KAAK,4BAA4B,iDAAiD,KAAK,qCAAqC,+BAA+B,sDAAsD,oFAAoF,2EAA2E,+BAA+B,kCAAkC,0EAA0E,yCAAyC,wBAAwB,gDAAgD,yEAAyE,EAAE,yBAAyB,kCAAkC,uEAAuE,8DAA8D,4uBAA4uB,kCAAkC,4BAA4B,8BAA8B,YAAY,mBAAmB,KAAK,wBAAwB,uBAAuB,+BAA+B,0BAA0B,cAAc,8CAA8C,YAAY,gBAAgB,mBAAmB,SAAS,kBAAkB,+CAA+C,UAAU,8BAA8B,KAAK,WAAW,gDAAgD,SAAS,0BAA0B,uDAAuD,GAAG,YAAY,oBAAoB,KAAK,gCAAgC,oCAAoC,8DAA8D,sCAAsC,oEAAoE,YAAY,2BAA2B,yBAAyB,kBAAkB,iCAAiC,oBAAoB,oCAAoC,4CAA4C,kCAAkC,oCAAoC,KAAK,qBAAqB,KAAK,gCAAgC,oBAAoB,0CAA0C,0CAA0C,wDAAwD,wDAAwD,8BAA8B,yIAAyI,wCAAwC,gEAAgE,yBAAyB,mCAAmC,uCAAuC,yCAAyC,uCAAuC,8BAA8B,6IAA6I,wEAAwE,qBAAqB,8BAA8B,mCAAmC,2EAA2E,+CAA+C,wDAAwD,oDAAoD,EAAE,oEAAoE,uDAAuD,E;;;;;;;;;;;;ACAnnO;AAAA;AAAA;AAAA;AAAA,kCAAkC,0BAA0B,0CAA0C,gBAAgB,OAAO,kBAAkB,EAAE,aAAa,EAAE,OAAO,wBAAwB,EAAE;;AAEjM;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;;AAEA;AACA;;AAEA;AACA,+EAA+E,iBAAiB;AAChG;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iFAAiF,iBAAiB;AAClG;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,oFAAoF,iBAAiB;AACrG;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA,oFAAoF,iBAAiB;AACrG;AACA;AACA,GAAG;AACH;AACA;AACA;;;;;;;;;;;;;AClNA,iBAAiB,mBAAO,CAAC,mEAAa;;;;;;;;;;;;ACAtC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,IAAI,KAA4D;AAChE,IAAI,SAC+B;AACnC,CAAC,qBAAqB;;AAEtB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,iFAAiF;;AAEjF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,0BAA0B,sBAAsB;;AAEhD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,SAAS;AAC1B;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,gBAAgB,mBAAC,CAAC,cAAO;AACzB;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,CAAC;AACD;AACA,CAAC,yCAAyC,UAAc;AACxD;AACA,CAAC;AACD;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA,UAAU,IAAI;AACd;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,iBAAiB,wBAAwB;AACzC;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,iBAAiB,uCAAuC;AACxD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;;AAEA;AACA;AACA,UAAU,MAAM;AAChB,UAAU,OAAO;AACjB;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,UAAU,MAAM;AAChB;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA,qBAAqB,YAAY;AACjC;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;;AAEA;AACA;AACA,UAAU,IAAI;AACd;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;;AAEA;AACA,UAAU,SAAS;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;;AAEA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;;AAEA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,eAAe;AACf;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;;AAEA;AACA,YAAY,SAAS;AACrB,YAAY,SAAS;AACrB;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA,YAAY,SAAS;AACrB;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA,CAAC;AACD,oC;;;;;;;;;;;;ACjoCA;AACA;AACA;AACA,IAAI,KAAyB;AAC7B;AACA;AACA,CAAC;AACD,iBAAiB;AACjB;AACA;AACA,aAAa,4DAA4D;AACzE;AACA,oCAAoC;AACpC;AACA;;AAEA;AACA;AACA,YAAY;AACZ;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,uBAAuB;AACvB;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA,gBAAgB;AAChB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,gBAAgB;AAChB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,gBAAgB;AAChB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA,iBAAiB;AACjB,iBAAiB;AACjB,mBAAmB;AACnB,sBAAsB;AACtB,yBAAyB;AACzB,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,iCAAiC;AAC9C,GAAG;AACH;AACA;AACA;;AAEA;AACA,4CAA4C;AAC5C;;AAEA;AACA;AACA,iBAAiB;AACjB,mBAAmB;AACnB,oBAAoB;AACpB,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,oBAAoB;;AAElD;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,IAAI;AACJ;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA,SAAS,WAAW;;AAEpB,yDAAyD;;AAEzD,sGAAsG,gCAAgC;;AAEtI;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,iBAAiB;AAC7C;;AAEA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA,aAAa;;AAEb;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA,2BAA2B,SAAS;AACpC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,IAAI;AACJ,GAAG;;AAEH;AACA;AACA,kBAAkB;AAClB;AACA;AACA,wBAAwB;AACxB;;AAEA;;AAEA;AACA;AACA;;AAEA,iMAAiM;;AAEjM;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;;;AAGA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,QAAQ;AACR;AACA;AACA,KAAK;;AAEL;AACA,uEAAuE,iDAAiD;AACxH,KAAK;AACL;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA,EAAE;;;AAGF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,oCAAoC,SAAS;AAC7C;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,kBAAkB;AAClB;AACA,qBAAqB;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA,mDAAmD,mCAAmC;;AAEtF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,SAAS,SAAS;AAClB;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;AC7yBA,WAAW,mBAAO,CAAC,+CAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;;ACLA,aAAa,mBAAO,CAAC,mDAAW;AAChC,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,qBAAqB,mBAAO,CAAC,mEAAmB;;AAEhD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC3BA,sBAAsB,mBAAO,CAAC,qEAAoB;;AAElD;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AClBA;AACA;;AAEA;;;;;;;;;;;;;ACHA,aAAa,mBAAO,CAAC,mDAAW;;AAEhC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC7CA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACrBA,iBAAiB,mBAAO,CAAC,2DAAe;;AAExC;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;;ACRA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;;;;;;;;;;AClBA,eAAe,mBAAO,CAAC,qDAAY;AACnC,UAAU,mBAAO,CAAC,2CAAO;AACzB,eAAe,mBAAO,CAAC,qDAAY;;AAEnC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,WAAW,OAAO,YAAY;AAC9B,WAAW,QAAQ;AACnB;AACA,WAAW,OAAO;AAClB;AACA,WAAW,QAAQ;AACnB;AACA,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,8CAA8C,kBAAkB;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC9LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC5BA,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,mBAAmB,mBAAO,CAAC,6DAAgB;;AAE3C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC5BA,WAAW,mBAAO,CAAC,+CAAS;;AAE5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACtBA,eAAe,mBAAO,CAAC,uDAAa;AACpC,eAAe,mBAAO,CAAC,qDAAY;AACnC,eAAe,mBAAO,CAAC,qDAAY;;AAEnC;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC/DA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,qCAAqC;;AAErC;AACA;AACA;;AAEA,2BAA2B;AAC3B;AACA;AACA;AACA,4BAA4B,UAAU;;;;;;;;;;;;ACvLtC,eAAe,KAAiD,oBAAoB,SAAyI,CAAC,iBAAiB,mBAAmB,cAAc,4BAA4B,YAAY,UAAU,iBAAiB,gEAAgE,SAAS,+BAA+B,kBAAkB,aAAa,gEAAgE,gFAAgF,eAAe,aAAa,+dAA+d,gBAAgB,iBAAiB,aAAa,gBAAgB,8EAA8E,cAAc,sGAAsG,cAAc,8NAA8N,cAAc,mJAAmJ,qEAAqE,SAAS,8BAA8B,YAAY,eAAe,MAAM,EAAE,uCAAuC,UAAU,YAAY,sBAAsB,cAAc,gBAAgB,aAAa,kHAAkH,wBAAwB,IAAI,qCAAqC,oBAAoB,aAAa,wBAAwB,IAAI,wBAAwB,wBAAwB,IAAI,kCAAkC,UAAU,WAAW,0JAA0J,2CAA2C,0DAA0D,UAAU,uBAAuB,QAAQ,sCAAsC,qCAAqC,0CAA0C,+ZAA+Z,gdAAgd,EAAE,iCAAiC,qCAAqC,wBAAwB,yCAAyC,iDAAiD,uBAAuB,wCAAwC,sDAAsD,6IAA6I,IAAI,wCAAwC,iCAAiC,kDAAkD,+BAA+B,IAAI,2BAA2B,2BAA2B,IAAI,sCAAsC,8CAA8C,aAAa,yCAAyC,uEAAuE,oBAAoB,6CAA6C,kCAAkC,uEAAuE,sBAAsB,+BAA+B,iCAAiC,wBAAwB,GAAG,GAAG,YAAY,iBAAiB,aAAa,kBAAkB,gBAAgB,+BAA+B,IAAI,sDAAsD,WAAW,yDAAyD,eAAe,eAAe,2CAA2C,kCAAkC,uBAAuB,IAAI,yBAAyB,eAAe,gBAAgB,kCAAkC,ydAAyd,8IAA8I,2FAA2F,qCAAqC,iBAAiB,6BAA6B,4BAA4B,mCAAmC,8CAA8C,6BAA6B,mBAAmB,mGAAmG,6CAA6C,2IAA2I,6NAA6N,+KAA+K,qIAAqI,yLAAyL,aAAa,mBAAmB,WAAW,wRAAwR,+HAA+H,wBAAwB,uBAAuB,EAAE,mBAAmB,kIAAkI,cAAc,uBAAuB,uBAAuB,8BAA8B,OAAO,mBAAmB,gBAAgB,4BAA4B,8GAA8G,mBAAmB,6WAA6W,oBAAoB,mDAAmD,oCAAoC,uBAAuB,IAAI,+BAA+B,iBAAiB,eAAe,mBAAmB,iBAAiB,sBAAsB,qBAAqB,0BAA0B,gBAAgB,IAAI,KAAK,WAAW,oBAAoB,YAAY,GAAG;AACxtR,yC;;;;;;;;;;;ACDA;;AAEA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;;AAEA;AACA;AACA,4CAA4C;;AAE5C;;;;;;;;;;;;;;;;;;;;;;;;ACnBA,e;;;;;;;;;;;ACAA,wB","file":"main.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t};\n\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"main\": 0\n \t};\n\n\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"\" + ({\"account-subscriptions\":\"account-subscriptions\",\"module-address-autocomplete\":\"module-address-autocomplete\",\"module-loqateAddress-capture\":\"module-loqateAddress-capture\",\"module-auth\":\"module-auth\",\"module-carousels\":\"module-carousels\",\"module-country-selector\":\"module-country-selector\",\"module-custom-select\":\"module-custom-select\",\"module-fixit-trigger\":\"module-fixit-trigger\",\"module-floating-labels\":\"module-floating-labels\",\"module-formfield-binding\":\"module-formfield-binding\",\"module-giftmsg-font\":\"module-giftmsg-font\",\"module-intl-phone\":\"module-intl-phone\",\"module-line-item~module-product-tile~module-quick-add~module-quick-view~module-saveforlater-trigger~~1c15e46c\":\"module-line-item~module-product-tile~module-quick-add~module-quick-view~module-saveforlater-trigger~~1c15e46c\",\"module-line-item~module-store-locator~page-address~page-cart~page-checkout~page-product\":\"module-line-item~module-store-locator~page-address~page-cart~page-checkout~page-product\",\"module-line-item~page-cart~page-checkout\":\"module-line-item~page-cart~page-checkout\",\"module-line-item\":\"module-line-item\",\"page-wishlist\":\"page-wishlist\",\"page-address~page-checkout\":\"page-address~page-checkout\",\"page-address\":\"page-address\",\"module-modal-trigger\":\"module-modal-trigger\",\"module-name-converter\":\"module-name-converter\",\"module-page-motion\":\"module-page-motion\",\"module-password-show\":\"module-password-show\",\"module-tracking-layer\":\"module-tracking-layer\",\"module-video\":\"module-video\",\"module-window-scroll\":\"module-window-scroll\",\"module-wishlist-trigger\":\"module-wishlist-trigger\",\"module.cmsSearch\":\"module.cmsSearch\",\"module.input-auto-apply\":\"module.input-auto-apply\",\"module.langEnablement\":\"module.langEnablement\",\"page-PaymentLinkCheckout\":\"page-PaymentLinkCheckout\",\"page-contact\":\"page-contact\",\"page-email-unsubscription\":\"page-email-unsubscription\",\"page-order-details\":\"page-order-details\",\"page-order-history\":\"page-order-history\",\"page-page-designer-edit\":\"page-page-designer-edit\",\"page-requestprice\":\"page-requestprice\",\"page-stores-assignment\":\"page-stores-assignment\",\"page-styleguide\":\"page-styleguide\",\"picturefill\":\"picturefill\",\"polyfill-object-fit-images\":\"polyfill-object-fit-images\",\"profile-edit\":\"profile-edit\",\"profile-edit-capi\":\"profile-edit-capi\",\"vendors~adyen-checkout~module-address-suggestion~module-recaptcha-form\":\"vendors~adyen-checkout~module-address-suggestion~module-recaptcha-form\",\"module-address-suggestion\":\"module-address-suggestion\",\"module-recaptcha-form\":\"module-recaptcha-form\",\"vendors~module-address-verification~module-ajax-form~module-input-format~module-product-tile~module-~a19776a2\":\"vendors~module-address-verification~module-ajax-form~module-input-format~module-product-tile~module-~a19776a2\",\"module-ajax-form\":\"module-ajax-form\",\"module-address-verification\":\"module-address-verification\",\"module-store-locator\":\"module-store-locator\",\"page-checkout\":\"page-checkout\",\"module-product-tile~module-quick-add~module-quick-view~module-saveforlater-trigger~module.personalis~2a76bba0\":\"module-product-tile~module-quick-add~module-quick-view~module-saveforlater-trigger~module.personalis~2a76bba0\",\"module-product-tile~module-quick-add~module-quick-view~page-cart~page-product\":\"module-product-tile~module-quick-add~module-quick-view~page-cart~page-product\",\"page-cart~page-product\":\"page-cart~page-product\",\"page-cart\":\"page-cart\",\"page-product\":\"page-product\",\"module-product-tile\":\"module-product-tile\",\"module-quick-add\":\"module-quick-add\",\"module-quick-view\":\"module-quick-view\",\"module-saveforlater-trigger\":\"module-saveforlater-trigger\",\"module.personalisation\":\"module.personalisation\",\"module-input-format\":\"module-input-format\",\"adyen-checkout\":\"adyen-checkout\"}[chunkId]||chunkId) + \".js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n","/* eslint-disable no-inner-declarations */\n'use strict';\n\nfunction launchApplePay(action, location, ApplePaySession) {\n // Check if the session is available\n if (window.SFRA.SitePreferences.enableApplePayApi && window.ApplePaySession && window.ApplePaySession.canMakePayments()) {\n var request;\n var APPLE_PAY_VERSION = window.SFRA.SitePreferences.applePayVersion;\n var redirect;\n var updatedRequest;\n var session;\n var ATTR_SKU = 'sku';\n var ATTR_PAGE = 'page';\n var applePayApiButton = $('.apple-pay-api-button');\n\n if (location.protocol !== 'https:' || !ApplePaySession.supportsVersion(APPLE_PAY_VERSION)) {\n return;\n }\n\n function handleResponse(response) {\n return response.json()\n .then(function(json) {\n if (response.status >= 200 && response.status < 300) {\n // Return success JSON response\n return json;\n }\n // Throw error with response status\n var err = new Error(json ? json.status : 'Request error');\n err.response = json;\n throw err;\n });\n }\n\n /* Filter out properties that are not from Event prototype,\n * and include all others as ownProperty to a new object.\n * @param {Event} e\n * @return {Object} object with relevant properties as ownProperty\n */\n function filterEvent(e) {\n var filteredEvent = {};\n for (var prop in e) {\n if (!Event.prototype.hasOwnProperty(prop)) {\n filteredEvent[prop] = e[prop];\n }\n }\n return filteredEvent;\n }\n\n function postJson(url, data) {\n var json = data;\n if (typeof data === 'object') {\n json = JSON.stringify(data);\n } else if (typeof data !== 'string') {\n throw new Error('Data must be an object or a JSON string.');\n }\n return fetch(url, {\n method: 'POST',\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n 'Accept': 'application/json'\n },\n body: json\n }).then(handleResponse);\n }\n\n function doRedirect() {\n if (redirect) {\n // Redirect to last responded redirect\n location.href = redirect;\n }\n }\n\n function processServerResponse(response) {\n if (!response) {\n return;\n }\n // redirect could be an empty string\n if (typeof response.redirect !== 'undefined') {\n // set redirect URL\n redirect = response.redirect;\n }\n }\n\n function getJson(url) {\n return fetch(url, {\n credentials: 'include',\n headers: {\n 'Accept': 'application/json'\n }\n }).then(handleResponse);\n }\n\n function updateAppleErrorObject(response) {\n if (response.ApplePayErrors && response.ApplePayErrors.length > 0) {\n response['errors'] = [];\n response.ApplePayErrors.forEach(function(error) {\n // eslint-disable-next-line no-undef\n var applePayError = new ApplePayError(error.code, error.contactField, error.message);\n response['errors'].push(applePayError);\n })\n delete response.ApplePayErrors;\n return response;\n }\n return response;\n }\n\n /**\n * On successful creation of an order, submit it through a form\n * @param {String} formAction URL to which to POST form to\n */\n function submitOrder(formAction) {\n var form = document.createElement('form');\n form.action = formAction;\n form.method = 'post';\n\n document.body.appendChild(form);\n form.submit();\n }\n\n function oncancelHandler() {\n setSession(null);\n\n postJson(action.cancel, {}).then(function(response) {\n processServerResponse(response);\n doRedirect();\n }, function(error) {\n processServerResponse(error.response);\n doRedirect();\n })\n }\n\n function onpaymentauthorizedHandler(e) {\n postJson(action.onpaymentauthorized, filterEvent(e)).then(function(response) {\n session.completePayment(ApplePaySession.STATUS_SUCCESS);\n setSession(null);\n submitOrder(response.result.redirect);\n }, function(error) {\n error.response = updateAppleErrorObject(error.response.result);\n if (error.response.errors && error.response.errors.length > 0) {\n session.completePayment(error.response);\n } else {\n session.completePayment({\n status: ApplePaySession.STATUS_FAILURE\n })\n }\n processServerResponse(error.response);\n doRedirect();\n })\n }\n\n function onpaymentmethodselectedHandler(e) {\n postJson(action.onpaymentmethodselected, filterEvent(e)).then(function(response) {\n // update updatedRequest with new server response\n updatedRequest.total = response.update.newTotal;\n if (response.update.newLineItems && response.update.newLineItems.length > 0) {\n updatedRequest.lineItems = response.update.newLineItems;\n }\n if (session == null || session == undefined) {\n return;\n }\n session.completePaymentMethodSelection(response.update);\n processServerResponse(response);\n }, function(error) {\n // No way to communicate error status on this event to Apple Pay\n if (session == null || session == undefined) {\n return;\n }\n session.completePaymentMethodSelection(error.response);\n processServerResponse(error.response);\n })\n }\n\n function onshippingcontactselectedHandler(e) {\n postJson(action.onshippingcontactselected, filterEvent(e)).then(function(response) {\n // update updatedRequest with new server response\n updatedRequest.total = response.update.newTotal;\n updatedRequest.lineItems = response.update.newLineItems;\n updatedRequest.shippingMethods = response.update.newShippingMethods;\n if (session == null || session == undefined) {\n return;\n }\n session.completeShippingContactSelection(response.update);\n processServerResponse(response.update);\n }, function(error) {\n error.response = updateAppleErrorObject(error.response.update);\n if (session == null || session == undefined) {\n return;\n }\n session.completeShippingContactSelection(error.response);\n processServerResponse(error.response);\n })\n }\n\n function onshippingmethodselectedHandler(e) {\n postJson(action.onshippingmethodselected, filterEvent(e)).then(function(response) {\n // update updatedRequest with new server response\n updatedRequest.total = response.update.newTotal;\n updatedRequest.lineItems = response.update.newLineItems;\n if (session == null || session == undefined) {\n return;\n }\n session.completeShippingMethodSelection(response.update);\n processServerResponse(response.update);\n }, function(error) {\n if (session == null || session == undefined) {\n return;\n }\n session.completeShippingMethodSelection(error.response);\n processServerResponse(error.response);\n })\n }\n\n /**\n\t\t * Prepares an Apple Pay basket, optionally\n\t\t * containing exclusively the product with the given SKU to buy.\n\t\t * @param {String} [sku] SKU of product to buy\n\t\t */\n function prepareBasket(sku, page) {\n postJson(action.prepareBasket, {\n sku: sku,\n page: page\n }).then(function(response) {\n processServerResponse(response);\n }, function(error) {\n try {\n session.abort();\n } catch (e) {\n return;\n }\n processServerResponse(error.response);\n doRedirect();\n })\n }\n\n function onvalidatemerchantHandler(e) {\n postJson(action.onvalidatemerchant, Object.assign(filterEvent(e), {\n hostname: window.location.hostname\n })).then(function(response) {\n if (session == null || session == undefined) {\n return;\n }\n session.completeMerchantValidation(response.session);\n }, function() {\n session.abort();\n })\n }\n\n function setSession(s) {\n if (session) {\n session.oncancel = null;\n session.onpaymentauthorized = null;\n session.onpaymentmethodselected = null;\n session.onshippingcontactselected = null;\n session.onshippingmethodselected = null;\n session.onvalidatemerchant = null;\n }\n\n session = s;\n\n if (session) {\n session.oncancel = oncancelHandler;\n session.onpaymentauthorized = onpaymentauthorizedHandler;\n session.onpaymentmethodselected = onpaymentmethodselectedHandler;\n session.onshippingcontactselected = onshippingcontactselectedHandler;\n session.onshippingmethodselected = onshippingmethodselectedHandler;\n session.onvalidatemerchant = onvalidatemerchantHandler;\n }\n }\n\n /**\n * Retrieves Apple Pay request info from the server.\n */\n function getRequest() {\n getJson(action.getRequest).then(function(response) {\n request = Object.assign({}, response.responseObj);\n if (applePayApiButton) {\n applePayApiButton.show();\n }\n })\n }\n\n\n if (applePayApiButton) {\n applePayApiButton.hide();\n applePayApiButton.off().on('click', function() {\n // handling multiple clicks\n this.classList.add('disabled');\n this.setAttribute('disabled', true);\n setTimeout(function() {\n applePayApiButton.removeClass('disabled');\n applePayApiButton.removeAttr('disabled');\n }, 3000)\n prepareBasket(applePayApiButton.attr(ATTR_SKU), applePayApiButton.attr(ATTR_PAGE));\n if (parseFloat(request.total.amount) === 0) {\n request.total.amount = '0.01';\n }\n // Start the payment session\n setSession(new ApplePaySession(APPLE_PAY_VERSION, request));\n // Begin session\n session.begin();\n updatedRequest = Object.assign({}, request);\n });\n }\n getRequest(action)\n }\n}\n\nexport function init() {\n launchApplePay(window.SFRA.Urls.applePayRedirect.action, window.location, window.ApplePaySession);\n}\n","/**\n * Module allows to create mega menu functionality, including events, and callbacks.\n */\n\nimport {whichTransition, objectAssign, forceFocus} from '@borngroup/born-utilities';\n\nexport default class Megamenu {\n constructor(options) {\n //Keep track of the original set of options for easy referencing or restore later.\n this.originalOptions = options;\n\n //Clone options to prevent mutations.\n this.options = objectAssign({}, this.originalOptions);\n\n this.setProperties();\n\n this.menu = typeof this.options.menuSelector === 'string' ? document.querySelector(this.options.menuSelector) : this.options.menuSelector;\n\n if (!this.menu) {\n console.warn('Could not find target element');\n\n return;\n }\n\n //Store the original HTML so that we can retrieve it later if the `` option is enabled.\n this.menuOriginalHTML = this.menu.innerHTML;\n\n if (this.options.reInitOnBreakpointChange) {\n window.addEventListener('resize', function() {\n if (!window.matchMedia(this.currentBreakpoint.breakpoint).matches) {\n this.reInitialize();\n }\n }.bind(this));\n }\n\n this.setupInteractions();\n }\n\n /**\n * Resets Megamenu by restoring the HTML to its original state, and removes all events attached to the Menu DOM element.\n */\n destroy() {\n this.menu.textContent = '';\n\n this.manageMenuControlListeners(true);\n\n this.menu.insertAdjacentHTML('afterbegin', this.menuOriginalHTML);\n }\n\n reInitialize() {\n this.destroy();\n\n //Clone options to prevent mutations.\n this.options = objectAssign({}, this.originalOptions);\n\n this.setProperties();\n\n this.setupInteractions();\n }\n\n setupInteractions() {\n this.setupEventCallbacks();\n\n this.menu.triggers = this.menu.querySelectorAll(this.options.triggerSelector);\n\n [].forEach.call(this.menu.triggers, this.setupMenuTriggers.bind(this));\n\n this.setupMenuControlListeners();\n }\n\n setupEventCallbacks() {\n this._beforeTriggerUnset = this.options.beforeTriggerUnset || function() {};\n this._afterTriggerSet = this.options.afterTriggerSet || function() {};\n\n this._afterMenuSet = this.options.afterMenuSet || function() {};\n this._afterTriggerUnset = this.options.afterTriggerUnset || function() {};\n this._afterMenuUnset = this.options.afterMenuUnset || function() {};\n }\n\n /**\n * Loop through all of the available menu listeners and either attach or detach events.\n * This is useful to quickly destroy all bound events in the case the menu should be re-initialized without replacing the main Menu DOM element.\n * @param {[type]} detach [description]\n * @return {[type]} [description]\n */\n manageMenuControlListeners(detach) {\n Object.keys(this.menuListeners).forEach(function(key) {\n this.menu[detach ? 'removeEventListener' : 'addEventListener'](this.menuListeners[key].type, this.menuListeners[key].handler);\n }.bind(this));\n }\n\n /**\n * Create a list of event/handlers that are attached to the Menu DOM element, so that it is easy to detach later on if the MegaMenu is destroyed or re-initialized.\n */\n createMenuControlListeners() {\n let self = this;\n\n this.menuListeners = {\n getCursorSpeed: {\n type: 'mousemove',\n handler: self.getCursorSpeed.bind(self)\n },\n unsetOnClick: {\n type: 'click',\n //Leverage unsetCurrentSubmenu() and listen to clicks or keyboard events to close the menu.\n handler: function(evt) {\n self.isKeyboardEvent = false;\n\n self.unsetCurrentSubmenu(evt);\n }.bind(self)\n },\n unsetOnKeydown: {\n type: 'keydown',\n //Set a separate keydown events to handle keyboard-only navigation focus shifting.\n handler: function(evt) {\n self.isKeyboardEvent = true;\n\n self.unsetCurrentSubmenu(evt);\n }.bind(self)\n },\n };\n\n //Determines if 'menu' should be closed when hovering out of it.\n if (this.options.unsetOnMouseleave) {\n this.menuListeners.unsetOnMouseleave = {\n type: 'mouseleave',\n handler: this.unsetSiblings.bind(this)\n };\n }\n }\n\n setupMenuControlListeners() {\n this.createMenuControlListeners();\n\n this.manageMenuControlListeners();\n\n //Listen to whenever a trigger gains focus. If the focused trigger is not active, unset all of its siblings.\n //This prevents a navigation panel from staying open when using the keyboard (Tab) to navigate around.\n if (this.options.unsetSubmenuOnFocusOut) {\n document.addEventListener('focusin', function() {\n //Only proceed if the menu is active AND the event is keyboard in order to prevent clashing with mouse events.\n //This prevents setting an active trigger twice when clicking on it.\n if (this.menu.isActive && this.isKeyboardEvent) {\n let lastActiveTrigger = this.getLastActiveTrigger();\n\n if (document.activeElement.megamenu && lastActiveTrigger && this.isSiblingTrigger(document.activeElement, lastActiveTrigger)) {\n this.unsetSiblings(document.activeElement);\n } else if (!lastActiveTrigger.megamenu.target.contains(document.activeElement)) {\n this.unsetSiblings();\n }\n }\n }.bind(this));\n }\n\n //Unsets the menu whenever the user clicks outside of it.\n if (this.options.unsetOnClickOut) {\n document.addEventListener('click', function(evt) {\n if (this.menu.isActive && !this.menu.contains(evt.target)) {\n this.unsetSiblings();\n }\n }.bind(this));\n }\n }\n\n /**\n * Calculates the speed at which the cursor is moving inside the 'menu'.\n * If the curve is too fast and skewed (meaning not vertical/horizontal), then the hover action will be ignored.\n * @param {[Object]} evt ['mousemove' event object]\n */\n getCursorSpeed(evt) {\n var newX = Math.abs(evt.clientX),\n newY = Math.abs(evt.clientY),\n diffX = Math.abs( (this._origX || 0) - newX ),\n diffY = Math.abs( (this._origY || 0) - newY );\n\n this._origX = newX;\n this._origY = newY;\n\n this.isMouseMoveFast = (diffX / diffY >= 0.5) ? true : false;\n }\n\n /**\n * Sets up the properties for the menu. These can be configured on a breakpoint basis.\n */\n setProperties() {\n this.options.events = this.options.events || 'touchstart click keydown';\n this.options.menuActiveClass = this.options.menuActiveClass || 'mega--active';\n this.options.itemActiveClass = this.options.itemActiveClass || 'mega-item--active';\n\n this.options.waitForTransition = this.options.hasOwnProperty('waitForTransition') ? this.options.waitForTransition : {};\n\n //Only attach properties to `waitForTransition` object if it's available.\n if (this.options.waitForTransition) {\n this.options.waitForTransition.selector = this.options.waitForTransition.selector || this.options.targetSelector;\n this.options.waitForTransition.property = this.options.waitForTransition.property || 'all';\n }\n\n this.options.unsetOnMouseleave = this.options.hasOwnProperty('unsetOnMouseleave') ? this.options.unsetOnMouseleave : false;\n this.options.unsetOnClickOut = this.options.hasOwnProperty('unsetOnClickOut') ? this.options.unsetOnClickOut : true;\n this.options.disableUnsetSelf = this.options.disableUnsetSelf || null;\n this.options.hoverDelay = this.options.hoverDelay || 0;\n\n //Loops through the responsive array to replace default settings with breakpoint specific settings.\n if (this.options.responsive) {\n this.options.responsive.sort(_lowestBreakpoint);\n\n //Not using forEach cause can't kill the loop.\n for (var i = 0; i < this.options.responsive.length; i++) {\n if (_mergeBreakpointProperties.call(this, this.options.responsive[i])) {\n this.currentBreakpoint = this.options.responsive[i];\n\n break;\n }\n }\n }\n\n //Some settings contain properties that are too deep, and since our pathetic attemp at an `objectAssign` method does not support deep copies,\n //we just re-set them here after the fact.\n this.options.keyboardNavigation = objectAssign({triggers: [ 13, 32 ], horizontal: '*', vertical: false, manageTabIndex: false}, this.options.keyboardNavigation);\n\n /**\n * Updates properties with those coming from a matching breakpoint.\n * @param {[Object]} breakpointOpts literal with all breakpoint specific settings\n * @return {[Boolean]}\n */\n function _mergeBreakpointProperties(breakpointOpts) {\n if (window.matchMedia(breakpointOpts.breakpoint).matches) {\n return objectAssign(this.options, breakpointOpts.settings);\n }\n\n return false;\n }\n\n function _lowestBreakpoint(a, b) {\n return a.breakpoint > b.breakpoint;\n }\n }\n\n /**\n * Sets item/trigger specific settings and handlers\n * @param {[Node]} trigger [Node to which the settings are going to be applied to]\n */\n setupMenuTriggers(trigger, index) {\n let menuItemID = trigger.id || this.getMenuItemID();\n\n trigger.megamenu = {\n disableUnsetSelf: this.options.disableUnsetSelf ? (typeof this.options.disableUnsetSelf === 'string' ? trigger.matches(this.options.disableUnsetSelf) : true) : false\n };\n\n trigger.megamenu.parent = this.getTriggerParent(trigger);\n trigger.megamenu.siblings = this.getTriggerSiblings(trigger);\n trigger.megamenu.index = trigger.megamenu.siblings.indexOf(trigger);\n\n //Only add a .target property to the trigger if it doesn't have a 'data-menu-close' attribute.\n //Sometimes an element with this attribute may also be a trigger in case it should be part of the keyboard navigation.\n if (!trigger.hasAttribute('data-menu-close')) {\n trigger.megamenu.target = this.getTriggerTarget(trigger);\n }\n\n if (this.options.keyboardNavigation.manageTabIndex) {\n this.setInitialTabIndex(trigger, index);\n }\n\n this.setupKeyboardHandlers(trigger);\n\n if (trigger.megamenu.target) {\n let optionsCustomAttributes;\n\n //Only set children triggers if the current trigger has a target.\n trigger.megamenu.children = this.getTriggerChildren(trigger.megamenu.target);\n\n this.setupActivationHandlers(trigger);\n\n //Set DOM IDs to the trigger and target elements for proper aria-attribute tagging.\n trigger.id = menuItemID;\n trigger.megamenu.target.id = trigger.megamenu.target.id || `${menuItemID}--target`;\n\n optionsCustomAttributes = typeof this.options.customAttributes === 'function' ? this.options.customAttributes(trigger) : this.options.customAttributes;\n\n trigger.megamenu.customAttributes = objectAssign(this.getCustomAttributes(trigger), optionsCustomAttributes);\n\n this.updateAttributes(trigger);\n }\n\n //Unsets the sibling items when the listener is fired on elements with the 'unsetSiblingsSelector' class\n if (trigger.matches(this.options.unsetSiblingsSelector)) {\n let eventsArray = this.getEventsArray(trigger);\n\n eventsArray.forEach(function(currentEvt) {\n trigger.addEventListener(currentEvt, function() {\n this.unsetSiblings(trigger);\n }.bind(this));\n }.bind(this));\n }\n }\n\n setInitialTabIndex(trigger, index) {\n trigger.tabIndex = index === 0 ? '0' : '-1';\n\n //Set the initial `this._previousFocus` element.\n this._previousFocus = index === 0 ? trigger : this._previousFocus;\n }\n\n /**\n * Checks if trigger is able to be focused, for example the target trigger may only appear after a transition.\n */\n shiftFocus(trigger, setDirection, moveForward) {\n if (this._previousFocus && this.options.keyboardNavigation.manageTabIndex) {\n this._previousFocus.tabIndex = '-1';\n }\n\n if (trigger) {\n //Check whenever focus should be shifted in a specific direction.\n //Should be ignored if focus is shifted to a specific element, i.e. by using keyboard characters.\n //And only do so if the current trigger has at least one sibling.\n if (setDirection && trigger.megamenu.siblings.length > 1) {\n let consumedChecks = 0;\n\n //Check wether the provided `trigger` is visible, if it's not, skip to the next visible one.\n //Short-circuit if the loop went through all avaiable items, prevents infinite loops.\n while (!this.elConsumesSpace(trigger) && consumedChecks <= trigger.megamenu.siblings.length) {\n consumedChecks++;\n\n trigger = this.getDirectionTrigger(trigger, moveForward);\n }\n }\n\n //Update the `this._previousFocus` element with the provided `trigger` element.\n this._previousFocus = trigger;\n\n if (this.options.keyboardNavigation.manageTabIndex) {\n trigger.tabIndex = '0';\n }\n\n forceFocus(trigger);\n }\n }\n\n /**\n * Checks if an element is currently consuming space in the DOM.\n * An element with, or a child of, display: none; will consume no space.\n * @param {[type]} el [description]\n * @return {[type]} [description]\n */\n elConsumesSpace(el) {\n return el.offsetParent || (el.firstElementChild && el.firstElementChild.offsetHeight > 0);\n }\n\n /**\n * Generate a random MenuItemID string to be used in the trigger and target elements in case they don't have an ID.\n * @return {[type]} [description]\n */\n getMenuItemID() {\n let randomString = Math.floor(new Date().getTime() * Math.random()).toString().substr(0, 4);\n\n return `menuItemID-${randomString}`;\n }\n\n /**\n * Setup custom attributes for the megamenu trigger and the target.\n * Default to setting a few aria-attributes to give more context to the browser.\n * @param {[type]} trigger [description]\n * @return {[type]} [description]\n */\n getCustomAttributes(trigger) {\n //`value`: [String | Array] If Array, index 0 is used when megamenu is unset, and index 1 is used when it's set.\n //`trigger`: [Boolean] Set to true to only attach the attribute to the trigger element.\n //`target`: [Boolean] Set to true to only attach the attribute to the target element.\n return {\n 'aria-expanded': {\n value: [ 'false', 'true' ],\n trigger: true\n },\n 'aria-labelledby': {\n value: trigger.id,\n target: true\n },\n 'aria-controls': {\n value: trigger.megamenu.target.id,\n trigger: true\n }\n };\n }\n\n /**\n * Loop through the `trigger.megamenu.customAttributes` object and update the configured attributes.\n * This method is also called whenever the megamenu is set or unset, in case the attributes should change.\n * @param {[type]} trigger [description]\n * @param {Boolean} isActive [description]\n * @return {[type]} [description]\n */\n updateAttributes(trigger, isActive) {\n let customAttributes = trigger.megamenu.customAttributes;\n\n for (let attrKey in customAttributes) {\n if (customAttributes[attrKey]) {\n if (customAttributes[attrKey].trigger) {\n this.setAttributeValue(trigger, attrKey, customAttributes[attrKey], isActive);\n } else if (customAttributes[attrKey].target) {\n this.setAttributeValue(trigger.megamenu.target, attrKey, customAttributes[attrKey], isActive);\n } else {\n this.setAttributeValue(trigger, attrKey, customAttributes[attrKey], isActive);\n this.setAttributeValue(trigger.megamenu.target, attrKey, customAttributes[attrKey], isActive);\n }\n }\n }\n }\n\n /**\n * Updates a single MegaItem element with the custom attributes provided in `attrName` and `attrObject`\n * Set the `isActive` argument to TRUE to swap the attribute value when `attrObject.value` is an Array.\n */\n setAttributeValue(el, attrName, attrObject, isActive) {\n let value = typeof attrObject.value === 'string' ? attrObject.value : (isActive ? attrObject.value[1] : attrObject.value[0]);\n\n el.setAttribute(attrName, value);\n }\n\n /**\n * Gets the parent of the passed Node\n * @param {[HTMLNode]} trigger [Node where we're getting the parent Node from]\n * @return {[HTMLNode]} [Parent of the passed element]\n */\n getTriggerParent(trigger) {\n return trigger.closest(trigger.getAttribute('data-menu-parent')) || trigger.parentNode;\n }\n\n /**\n * Gets the target of the passed Node (the first matching Node from the query)\n * @param {[HTMLNode]} trigger [Node where we're getting the target Node from]\n * @return {[HTMLNode]} [Target of the passed element]\n */\n getTriggerTarget(trigger) {\n return trigger.megamenu.parent.querySelector(trigger.getAttribute('data-menu-target') || this.options.targetSelector);\n }\n\n getTriggerChildren(target) {\n return target.querySelectorAll(this.options.triggerSelector);\n }\n\n getTriggerSiblings(trigger) {\n let closestParentContainer = this.getClosestSiblingsParent(trigger);\n\n return [].filter.call(this.menu.triggers, function(currentTrigger) {\n return closestParentContainer.contains(currentTrigger) && this.isSiblingTrigger(trigger, currentTrigger);\n }.bind(this));\n }\n\n getClosestSiblingsParent(trigger) {\n if (trigger && trigger.nodeName) {\n return trigger.closest(trigger.getAttribute('data-menu-parent') || this.options.targetSelector) || this.menu;\n } else if (!trigger || (trigger.relatedTarget && trigger.relatedTarget !== null)) {\n return this.menu;\n } else {\n return;\n }\n }\n\n isSiblingTrigger(currentTrigger, testTrigger) {\n return currentTrigger.getAttribute(this.options.matchingSiblingsAttribute) === testTrigger.getAttribute(this.options.matchingSiblingsAttribute);\n }\n\n isTriggerActive(trigger) {\n return trigger.megamenu.isActive;\n }\n\n /**\n * Find the next trigger in the MegaMenu's trigger list that appears after the currently focused trigger,\n * and that matches the currently focused trigger's `matchingSiblingsAttribute` attribute value.\n */\n getDirectionTrigger(trigger, moveForward) {\n let followingTrigger = null;\n\n if (moveForward) {\n followingTrigger = trigger.megamenu.siblings[trigger.megamenu.index + 1] || trigger.megamenu.siblings[0];\n } else {\n followingTrigger = trigger.megamenu.siblings[trigger.megamenu.index - 1] || trigger.megamenu.siblings[trigger.megamenu.siblings.length - 1];\n }\n\n return followingTrigger;\n }\n\n /**\n * Returns the trigger element whose label's first character code matches the provided `charCode`.\n */\n getMatchingCharTrigger(trigger, charCode) {\n let matchingTrigger = null;\n\n for (let i = 0; i < trigger.megamenu.siblings.length; i++) {\n if (trigger.megamenu.siblings[i].textContent.toUpperCase().trim().charCodeAt(0) === charCode && trigger.megamenu.siblings[i] !== trigger) {\n matchingTrigger = trigger.megamenu.siblings[i];\n\n break;\n }\n }\n\n return matchingTrigger;\n }\n\n /**\n * Returns the event list based on the current trigger configuration.\n * This allows attaching events on a per-selector-match basis, using the following sample format:\n * events: [\n * {\n * selector: '.level-1',\n * events: 'touchstart mouseenter keydown'\n * },\n * {\n * selector: ':not(.level-1)',\n * events: 'touchstart click keydown'\n * }\n * ]\n */\n getEventsArray(trigger) {\n let eventsArray = [];\n\n if (typeof this.options.events === 'string') {\n eventsArray = this.options.events.split(' ');\n } else if (Array.isArray(this.options.events)) {\n this.options.events.forEach(function(currentEventGroup) {\n if (trigger.matches(currentEventGroup.selector)) {\n eventsArray = eventsArray.concat(currentEventGroup.events.split(' '));\n }\n });\n }\n\n return eventsArray;\n }\n\n /**\n * Uses 'this.options.events' to set up handlers on per item/trigger basis.\n * @param {[Node]} trigger [Node where we're setting handlers to]\n */\n setupActivationHandlers(trigger) {\n let scope = this,\n eventsArray = this.getEventsArray(trigger);\n\n eventsArray.forEach(function(currentEvt) {\n trigger.addEventListener(currentEvt, function(evt) {\n let evtType = evt.type,\n isTouch = evtType.indexOf('touch') >= 0,\n isKeyboard = evtType === 'keydown' || evtType === 'keyup',\n allowClickThrough = scope.options.clickThroughSelector && trigger.matches(scope.options.clickThroughSelector);\n\n //Check if click was on an allowed element, if so allow link through.\n if (isTouch || (( trigger.nodeName === 'A' || evt.target.nodeName === 'A') && !allowClickThrough && !isKeyboard)) {\n evt.preventDefault();\n }\n\n if ((evtType === 'mouseenter' || evtType === 'mouseover') && evtType != 'mousemove') {\n let minDelay = scope.isMouseMoveFast && !scope.options.hoverDelay ? 100 : scope.options.hoverDelay;\n\n //Add a delay before toggleTriggerActive if isMouseMoveFast is true or hoverDelay is set and the menu is not yet active\n if (scope.isMouseMoveFast || scope.options.hoverDelay) {\n scope.overstay = window.setTimeout(function() {\n scope.toggleTriggerActive(this, true);\n }.bind(this), minDelay);\n\n return;\n } else {\n return;\n }\n } else if (isKeyboard) {\n //If the keyCode matches an item on the options.keyboardNavigation.triggers Array, toggle the submenu.\n if (scope.options.keyboardNavigation.triggers.indexOf(evt.keyCode) !== -1 && !allowClickThrough) {\n evt.preventDefault();\n scope.toggleTriggerActive(this);\n\n //Move the focus to the first trigger in the submenu\n scope.shiftFocus(trigger.megamenu.children[0], true, true);\n }\n\n //Prevent clicks/Enter key on \"allowClickThrough\" elements from opening the submenu.\n } else if (evt.type !== 'click' || !allowClickThrough) {\n scope.toggleTriggerActive(this);\n\n scope.shiftFocus(this);\n }\n\n //Making sure further events are not fired after touch\n if (isTouch) {\n evt.stopImmediatePropagation();\n }\n });\n });\n\n trigger.megamenu.parent.addEventListener('mouseleave', function() {\n clearInterval(scope.overstay);\n });\n\n [].forEach.call(trigger.megamenu.children, function(item) {\n item.addEventListener('mouseleave', function() {\n clearInterval(scope.overstay);\n })\n })\n }\n\n /**\n * Handles keyboard events for arrows, character keys, home/end, etc.\n */\n setupKeyboardHandlers(trigger) {\n trigger.addEventListener('keydown', function(evt) {\n let isLeftArrow = evt.keyCode === 37,\n isUpArrow = evt.keyCode === 38,\n isRightArrow = evt.keyCode === 39,\n isDownArrow = evt.keyCode === 40;\n\n //I'm sorry about this, but the W3.org has A TON of requirements for a fully ADA compliant navigation: https://www.w3.org/TR/wai-aria-practices-1.1/examples/menubar/menubar-1/menubar-1.html\n //So be ready for this messy if/else pizza party.\n if (isLeftArrow || isUpArrow || isRightArrow || isDownArrow) {\n //Shift focus to previous or next sibling/submenu trigger when pressing the Arrow keys.\n let matchesHorizontal = this.options.keyboardNavigation.horizontal && trigger.matches(this.options.keyboardNavigation.horizontal),\n matchesVertical = this.options.keyboardNavigation.vertical && trigger.matches(this.options.keyboardNavigation.vertical),\n isHorizontalNavigation = (isLeftArrow || isRightArrow) && matchesHorizontal,\n isVerticalNavigation = (isUpArrow || isDownArrow) && matchesVertical;\n\n evt.preventDefault();\n\n if (isHorizontalNavigation || isVerticalNavigation) {\n let moveForward = isRightArrow || isDownArrow,\n directionTrigger = this.getDirectionTrigger.call(this, trigger, moveForward);\n\n this.shiftFocus(directionTrigger, true, moveForward);\n } else {\n if (((matchesHorizontal && isDownArrow) || (matchesVertical && isRightArrow)) && trigger.megamenu.target) {\n let triggerIsActive = this.isTriggerActive(trigger);\n\n //Avoid untoggling the trigger if it was already activated.\n //This scenario only happens when both keyboard and mouse/touch are used at the same time.\n //It's not a necessity, but the lack of it was keeping me up at night.\n if (!triggerIsActive) {\n this.toggleTriggerActive(trigger);\n }\n\n //Move the focus to the first trigger in the submenu.\n this.shiftFocus(trigger.megamenu.children[0], true, true);\n } else if (matchesVertical && (isRightArrow || isLeftArrow)) {\n let lastActiveTrigger = this.getLastActiveTrigger(),\n targetTrigger = lastActiveTrigger,\n setDirection = false,\n moveForward = false;\n\n if (isRightArrow && !trigger.megamenu.target) {\n setDirection = true;\n moveForward = true;\n\n targetTrigger = this.getDirectionTrigger.call(this, lastActiveTrigger, true);\n\n targetTrigger.megamenu.target ? this.toggleTriggerActive(targetTrigger) : this.unsetSiblings(targetTrigger);\n } else if (isLeftArrow) {\n this.unsetSiblings(lastActiveTrigger);\n }\n\n this.shiftFocus(targetTrigger, setDirection, moveForward);\n }\n }\n } else if (evt.keyCode >= 65 && evt.keyCode <= 90) {\n //Shift focus to matching sibling trigger when pressing a character key.\n let matchingTrigger = this.getMatchingCharTrigger.call(this, trigger, evt.keyCode);\n\n this.shiftFocus(matchingTrigger);\n } else if (evt.keyCode === 35) {\n //Shift focus to last sibling trigger when pressing the \"End\" key.\n this.shiftFocus(trigger.megamenu.siblings[trigger.megamenu.siblings.length - 1], true, false);\n } else if (evt.keyCode === 36) {\n //Shift focus to first sibling trigger when pressing the \"Home\" key.\n this.shiftFocus(trigger.megamenu.siblings[0], true, true);\n }\n\n }.bind(this));\n }\n\n /**\n * If the targeted item/trigger is active, and can be closed, removes the active status.\n * Otherwise trigger is activated and the corresponding callbacks are fired.\n * @param {[Node]} trigger [description]\n * @param {[boolean]} isMousehover [description]\n */\n toggleTriggerActive(trigger, isMousehover) {\n if (this.isTriggerActive(trigger)) {\n if (!isMousehover && !trigger.megamenu.disableUnsetSelf) {\n this.unsetSiblings(trigger);\n }\n } else {\n this._beforeTriggerUnset(trigger, this);\n this.unsetSiblings(trigger, this.setTriggerActive.bind(this));\n this._afterTriggerSet(trigger, this);\n }\n }\n\n /**\n * [setTriggerActive description]\n waitForTransition: [Boolean | Object] Used to determine when to set the 'active' state on the menu.\n Thist activation will wait until all transitions are complete on the targeted element.\n * @param {[Node]} trigger [item/trigger to set active]\n */\n setTriggerActive(trigger) {\n let SCOPE = this;\n\n //Set an `isActive` flag on the individual triggers for easier control on the frontend.\n trigger.megamenu.isActive = true;\n\n trigger.classList.add(this.options.itemActiveClass);\n trigger.megamenu.target.classList.add(this.options.itemActiveClass);\n trigger.megamenu.parent.classList.add(this.options.itemActiveClass);\n\n this.updateAttributes(trigger, true);\n\n //This needs revision.\n if (!this.menu.isActive) {\n let activeWaitEl = this.options.waitForTransition ? this.menu.querySelector(`${this.options.waitForTransition.selector}.${this.options.itemActiveClass}`) : false;\n\n if (this.canDetectTransition(activeWaitEl)) {\n activeWaitEl.addEventListener(whichTransition(), _transitionEndHandler);\n } else {\n this.setMenuActive();\n }\n }\n\n function _transitionEndHandler(evt) {\n if (SCOPE.options.waitForTransition.property === evt.propertyName || SCOPE.options.waitForTransition.property === 'all') {\n SCOPE.setMenuActive();\n\n this.removeEventListener(whichTransition(), _transitionEndHandler);\n }\n }\n }\n\n /**\n * [Unsets the active state on the trigger]\n * @param {[type]} evt [description]\n * @param {[type]} trigger [description]\n */\n unsetCurrentSubmenu(evt) {\n let isEscKey = evt.keyCode === 27;\n\n if (isEscKey || ((evt.keyCode === 13 || !evt.keyCode) && evt.target.hasAttribute('data-menu-close'))) {\n let lastActiveTrigger = this.getLastActiveTrigger();\n\n evt.preventDefault();\n\n //If this element exists inside a MegaMenu target, close that target.\n //Otherwise close the full menu.\n if (evt.target && this.getClosestSiblingsParent(evt.target)) {\n let targetTriggerSelector = evt.target.getAttribute('data-menu-close'),\n //Set a flag to prevent unsetting the last active trigger when pressing the ESC key AND if disableUnsetSelf is TRUE for the last trigger..\n allowUnset = !isEscKey || (lastActiveTrigger && !lastActiveTrigger.megamenu.disableUnsetSelf);\n\n //If the data-menu-close element specifies a target selector, use that selector to determine which trigger to unset.\n lastActiveTrigger = targetTriggerSelector ? (this.getMatchingActiveTrigger(targetTriggerSelector) || lastActiveTrigger) : lastActiveTrigger;\n\n if (allowUnset) {\n this.unsetSiblings(lastActiveTrigger);\n } else if (evt.target === lastActiveTrigger) {\n //Re-assign `lastActiveTrigger` to the trigger before the last one.\n lastActiveTrigger = this.getLastActiveTrigger(2);\n\n this.unsetSiblings(lastActiveTrigger);\n }\n\n //Prevent the event from bubbling if there's an active trigger.\n if (lastActiveTrigger) {\n evt.stopPropagation();\n }\n } else {\n this.unsetSiblings();\n }\n\n //Sets the focus back to the original trigger.\n if (lastActiveTrigger) {\n this.shiftFocus(lastActiveTrigger);\n }\n }\n }\n\n canDetectTransition(targetEl) {\n return targetEl && window.getComputedStyle(targetEl).transitionDuration !== '0s'\n }\n\n /**\n * Returns the trigger that was activated last.\n * This is mostly used to determine where to set the focus to when the user is\n * navigating back in the MegaMenu tree, when closing submenus, etc.\n * @return {HTMLNode} [description]\n */\n getLastActiveTrigger(index = 1) {\n let activeTriggers = this.getActiveTriggers();\n\n return activeTriggers[activeTriggers.length - index];\n }\n\n /**\n * Returns an Array of all the currently active triggers within the MegaMenu.\n * @return {Array} [description]\n */\n getActiveTriggers() {\n return [].filter.call(this.menu.triggers, this.isTriggerActive.bind(this));\n }\n\n /**\n * Returns a currently active trigger that matches a specified `selector`.\n * @return {HTMLNode} [description]\n */\n getMatchingActiveTrigger(selector) {\n return this.menu.querySelector(`${selector}.${this.options.itemActiveClass}`);\n }\n\n /**\n * Sets 'this.menu' to active only if it has any active items, then '_afterMenuSet' is fired.\n */\n setMenuActive() {\n if (this.getActiveTriggers().length) {\n this.menu.isActive = true;\n this.menu.classList.add(this.options.menuActiveClass);\n this._afterMenuSet(this.menu, this);\n }\n }\n\n setMenuInactive() {\n if (!this.getActiveTriggers().length) {\n this.menu.isActive = false;\n this.menu.classList.remove(this.options.menuActiveClass);\n this._afterMenuUnset(this.menu, this);\n }\n }\n\n /**\n * Unsets all of the `trigger`'s siblings, then '_afterMenuUnset' is fired\n */\n unsetSiblings(trigger, callback) {\n let commonContainer = this.getClosestSiblingsParent(trigger) || this.menu,\n activeElements = commonContainer.querySelectorAll('.' + this.options.itemActiveClass);\n\n [].forEach.call(activeElements, function(el) {\n el.classList.remove(this.options.itemActiveClass);\n\n //If this element is a trigger, fire _afterTriggerUnset.\n if (el.megamenu) {\n el.megamenu.isActive = false;\n\n this._afterTriggerUnset(el, this);\n\n //Remove custom attributes if the current element is a Megamenu trigger.\n if (el.megamenu.target) {\n this.updateAttributes(el);\n }\n }\n }.bind(this));\n\n //Run callback after all sibling menu items have been unset.\n if (typeof callback === 'function') {\n callback(trigger);\n }\n\n //If there are no more active items, unset the MegaMenu.\n this.setMenuInactive();\n }\n}\n","'use strict';\n\nimport {createElWithAttrs, callbackOnElements} from '@borngroup/born-utilities';\nimport {elConsumesSpace} from '../helpers/utilities';\n\nexport const\n FORM_SELECTOR = 'form, [data-validation-component=\"form\"]',\n FIELD_SELECTOR = 'input, textarea, select',\n FIELD_INVALID_CLASS = 'is-invalid',\n FEEDBACK_SUCCESS_CLASS = 'success-feedback',\n FEEDBACK_INVALID_CLASS = 'invalid-feedback',\n FEEDBACK_VISIBILITY_CLASS = 'set--visible',\n VALIDATION_LIST = {},\n VALIDATION_MESSAGES = {};\n\n//Set a global flag to handle when a group of fields are validated at the same time.\n//Use this flag to mark the first field that was validated and focus on it.\nlet isFirstInvalidField = true;\n\n/**\n * Return the matching selector `el` form if it is a string.\n */\nfunction _getFormElement(el) {\n return typeof el === 'string' ? document.querySelector(el) : el;\n}\n\n/**\n * Returns the list of form input fields within a given container.\n * This fixes cases where a non-HTMLFormElement is used, which does not have access to the `form.elements` property.\n */\nfunction _getFormFields(containerEl) {\n return _getFormElement(containerEl).querySelectorAll(FIELD_SELECTOR);\n}\n\n/**\n * Validates all input fields within the provided form by calling validator.checkFormValidity(form),\n * with the intention of displaying any error styles and messages.\n * @param {event} evt - Event to be canceled if form is invalid.\n * @returns {boolean} - Flag to indicate if form is valid\n */\nfunction _validateForm(evt) {\n let valid = true;\n\n if (!checkFormValidity(this)) {\n valid = false;\n\n if (evt) {\n evt.preventDefault();\n evt.stopPropagation();\n evt.stopImmediatePropagation();\n }\n }\n\n return valid;\n}\n\nfunction _getFeedbackEl(field) {\n let describedByID = field.getAttribute('aria-describedby');\n\n return document.querySelector(`#${describedByID}`) || createElWithAttrs(field.parentNode, {id: describedByID, class: FEEDBACK_INVALID_CLASS, role: 'alert'});\n}\n\n/**\n * Set an `aria-describedby` attribute if none is present.\n */\nfunction _generateFeedbackEl(field) {\n if (!field.getAttribute('aria-describedby')) {\n //Prevent generating an ID off of an invalid input name.\n let cleanID = (field.name || field.id || '').replace(/\\W/g, '');\n\n field.setAttribute('aria-describedby', `${cleanID || 'inputField'}-${Math.floor(new Date().getTime() * Math.random()).toString()}`);\n\n //Append the feedback element if it doesn't already exist.\n _getFeedbackEl(field);\n }\n}\n\n/**\n * This method should only be called by the browser when an entire form's validation fails.\n * Prevents displaying browser's native error tooltip/bubble.\n * The other purpose of this additional private method is to prevent\n * re-attaching the same handler when re-initializing validation.\n */\nfunction _validateAndPreventDefault(evt) {\n evt.preventDefault();\n\n //Ensure focus is set to the first invalid field.\n //This is necessary since this method is called after a form is attempted to be submited,\n //and there doesn't seem to be an OOTB form event for this.\n validateField(this, {setFocusOnFirst: true});\n}\n\n/**\n * Validate on user input if `currentField` is already invalid.\n * The other purpose of this additional private method is to prevent\n * re-attaching the same handler when re-initializing validation.\n */\nfunction _validateIfInvalid() {\n if (this.classList.contains(FIELD_INVALID_CLASS)) {\n validateField(this);\n }\n}\n\n/**\n * Checks if a `validationName` matches a field's class, attribute, or selector.\n */\nfunction _matchesValidationSelector(field, validationName) {\n return field.classList.contains(validationName) || field.hasAttribute(validationName) || field.matches(validationName);\n}\n\n/**\n * Actual custom error object validation.\n * containerEl: the form or field container.\n * errorGroup: an object literal.\n */\nfunction _setCustomErrorsByGroup(containerEl, errorGroup) {\n for (let fieldName in errorGroup) {\n let matchedEl = containerEl.querySelector(`[name=\"${fieldName}\"]`);\n\n displayValidity(matchedEl, errorGroup[fieldName]);\n }\n}\n\n/**\n * Configure override validation messaging at the element level.\n */\nfunction _getOverrideValidationMessage(field) {\n let validationMessage;\n\n if (field.validity.patternMismatch && (field.getAttribute('data-pattern-mismatch') || VALIDATION_MESSAGES['patternMismatch'])) {\n validationMessage = field.getAttribute('data-pattern-mismatch') || VALIDATION_MESSAGES['patternMismatch'];\n }\n if ((field.validity.rangeOverflow || field.validity.rangeUnderflow) && (field.getAttribute('data-range-error') || VALIDATION_MESSAGES['rangeError'])) {\n validationMessage = field.getAttribute('data-range-error') || VALIDATION_MESSAGES['rangeError'];\n }\n if ((field.validity.tooLong || field.validity.tooShort) && (field.getAttribute('data-range-error') || VALIDATION_MESSAGES['rangeError'])) {\n validationMessage = field.getAttribute('data-range-error') || VALIDATION_MESSAGES['rangeError'];\n }\n if (field.validity.typeMismatch && (field.getAttribute('data-type-error') || VALIDATION_MESSAGES['typeMismatch'] || VALIDATION_MESSAGES['invalidEmail'])) {\n validationMessage = field.getAttribute('type') === 'email' ? VALIDATION_MESSAGES['invalidEmail'] : field.getAttribute('data-type-error') || VALIDATION_MESSAGES['typeMismatch'];\n }\n if (field.validity.valueMissing && (field.getAttribute('data-missing-error') || VALIDATION_MESSAGES['valueMissing'] || VALIDATION_MESSAGES['emptyRadio'])) {\n validationMessage = field.getAttribute('type') === 'radio' ? VALIDATION_MESSAGES['emptyRadio'] : field.getAttribute('data-missing-error') || VALIDATION_MESSAGES['valueMissing'];\n }\n\n return validationMessage;\n}\n\n/**\n * Checks wether or not a field should be validated, fields are skipped if they're set to display: none; or if they occopy no space.\n * For example, this prevents validating field containers that are inside a hidden tab in a tabbed interface.\n *\n * If you'd still like to process validation for hidden fields, add the `data-validate-hidden` attribute said fields.\n * @param {[type]} field [description]\n * @return {[type]} [description]\n */\nfunction _canValidateField(field) {\n return field.hasAttribute('data-validate-hidden') || elConsumesSpace(field);\n}\n\n/**\n * Check an individual field's validity.\n * If the field has custom error messages, display them.\n * If field is valid, clear all errors.\n * @return {[type]} [description]\n */\nexport function validateField(field, options = {}) {\n field.setCustomValidity('');\n\n //Checks if there are any custom validations that match the current field.\n getCustomValidation(field);\n\n if (!field.validity.valid && _canValidateField(field)) {\n let validationMessage = field.validationMessage;\n\n //Ensures the form's success feedback elements are hidden whenever there's an error.\n clearFormSuccess(field.form);\n\n if (!field.validity.customError) {\n validationMessage = _getOverrideValidationMessage(field) || validationMessage;\n }\n\n if (!options.silent) {\n displayValidity(field, validationMessage);\n }\n\n /**\n * options.setFocus: will make the current `field` gain focus.\n * options.setFocusOnFirst: will only set focus on the first invalid `field`.\n */\n if (options.setFocus || (options.setFocusOnFirst && isFirstInvalidField)) {\n //Set the flag to FALSE to prevent other inputs in the same form from gaining focus.\n isFirstInvalidField = false;\n\n field.focus();\n\n //Set a wait period after the first element has been validated, then reset the `isFirstInvalidField` flag.\n window.setTimeout(function() {\n isFirstInvalidField = true;\n }, 25);\n }\n\n return false;\n } else {\n clearValidity(field);\n\n return true;\n }\n}\n\n/**\n * Remove all validation. Should be called every time before revalidating form\n * @param {element} form - Form to be cleared\n * @returns {void}\n */\nexport function clearFormErrors(form) {\n if (form) {\n let invalidFields = form.querySelectorAll(`.${FIELD_INVALID_CLASS}`);\n\n [].forEach.call(invalidFields, clearValidity);\n }\n}\n\n/**\n * Hides the form's success feedback elements.\n */\nexport function clearFormSuccess(form) {\n if (form) {\n let successFeedbackEls = form.querySelectorAll(`.${FEEDBACK_SUCCESS_CLASS}`);\n\n [].forEach.call(successFeedbackEls, currentFeedback => currentFeedback.classList.remove(FEEDBACK_VISIBILITY_CLASS));\n }\n}\n\n/**\n * Displays validity `message` and styles for the provided `field`.\n */\nexport function displayValidity(field, message) {\n let feedbackEl = _getFeedbackEl(field);\n\n field.classList.add(FIELD_INVALID_CLASS);\n\n feedbackEl.textContent = message;\n feedbackEl.classList.add(FEEDBACK_VISIBILITY_CLASS);\n}\n\n/**\n * Removes all validation error messages and classes from the specified field.\n */\nexport function clearValidity(field) {\n field.classList.remove(FIELD_INVALID_CLASS);\n field.setCustomValidity('');\n\n _getFeedbackEl(field).classList.remove(FEEDBACK_VISIBILITY_CLASS);\n}\n\n/**\n * Loops through individual input fields within a provided `form` in search for validity.\n * Just calling `form.checkValidity()` may not always work cause it is not aware of custom validations that are set in the application.\n * @param {[HTMLFormElement]} form [description]\n * @return {[Boolean]} [description]\n */\nexport function checkFormValidity(form) {\n let isValid = true;\n\n [].forEach.call(_getFormFields(form), function(currentField) {\n if (_canValidateField(currentField)) {\n isValid = validateField(currentField, {setFocusOnFirst: true}) && isValid;\n }\n });\n\n if (form.classList.contains('checkout-stage__form')) {\n if (($('#email').length > 0 && $('#email').is(':visible')) && (!$('#email').val() || $('#email').hasClass('is-invalid'))) {\n $('#email').blur().focus();\n isValid = false;\n }\n }\n\n return isValid;\n}\n\n/**\n * Wrapper for _validateForm to avoid having to use `.call()` every time.\n */\nexport function validateForm(form, evt) {\n return _validateForm.call(form, evt);\n}\n\n/**\n * Provide an array of key-value pairs with the field's name as the key, and the error message as the value.\n * This key-value pair is used to set servser-side custom messages on the fields within the provided `containerEl`.\n * Example:\n * {\"user_email\": \"This email is already in use.\"}\n * @param {[type]} containerEl [description]\n * @param {[type]} errorList [description]\n */\nexport function setCustomErrors(containerEl, errorList) {\n if (errorList instanceof Array) {\n errorList.forEach(errorGroup => _setCustomErrorsByGroup(containerEl, errorGroup));\n } else {\n _setCustomErrorsByGroup(containerEl, errorList)\n }\n}\n\n/**\n * Loops through VALIDATION_LIST and attempts to confirm if the `field` is a match.\n * If a `validationName` is found, run it and set a custom message if the validaiton fails.\n */\nexport function getCustomValidation(field) {\n for (let validationName in VALIDATION_LIST) {\n if (_matchesValidationSelector(field, validationName)) {\n //End the loop if the validation failed.\n if (!VALIDATION_LIST[validationName].method(field.value, field, VALIDATION_LIST[validationName])) {\n //Check if the provided validation message is a function, in which case run it, otherwise use the message as-is.\n let messageIsFunction = typeof VALIDATION_LIST[validationName].message === 'function',\n validationMessage = messageIsFunction ? VALIDATION_LIST[validationName].message(field.value, field) : VALIDATION_LIST[validationName].message;\n\n //When a field stores a message through `setCustomValidity()`,\n //that field is automatically marked as invalid by the Validity API.\n field.setCustomValidity(validationMessage);\n\n break;\n }\n }\n }\n}\n\n/**\n * Adds a custom validation method and message to the VALIDATION_LIST object.\n */\nexport function addValidation(validationName, validationMethod, validationMessage) {\n VALIDATION_LIST[validationName] = {\n method: validationMethod,\n message: validationMessage\n };\n}\n\n/**\n * Configure custom messages to override the default ones from the browser.\n */\nexport function setDefaultMessages(messageObject) {\n for (let key in messageObject) {\n VALIDATION_MESSAGES[key] = messageObject[key];\n }\n}\n\n/**\n * Initializes event listening and validation for a single HTMLElement container in `form`.\n */\nexport function setupForm(form) {\n if (form.tagName === 'FORM') {\n form.addEventListener('submit', _validateForm);\n }\n\n [].forEach.call(_getFormFields(form), function(currentField) {\n _generateFeedbackEl(currentField);\n\n currentField.addEventListener('blur', validateField.bind(this, currentField));\n currentField.addEventListener('change', validateField.bind(this, currentField));\n currentField.addEventListener('invalid', _validateAndPreventDefault);\n currentField.addEventListener('input', _validateIfInvalid);\n });\n}\n\n/**\n * Calls `setupForm()` for each HTMLElement container available in `formList`.\n * @param {[type]} formList [A DOM Selector or NodeList]\n */\nexport function setupFormList(formList = FORM_SELECTOR) {\n callbackOnElements(formList, setupForm);\n}\n/**\n * Call to Validate the BirthDay Date\n */\nexport function validateBirthDayDate(value) {\n let birthDayEle = document.getElementById('birthDay'),\n birthMonthEle = document.getElementById('birthMonth'),\n birthYearEle = document.getElementById('birthYear'),\n currentDate = new Date();\n if (birthDayEle && birthMonthEle && birthYearEle && value) {\n let birthDay = birthDayEle.value,\n birthMonth = birthMonthEle.value,\n birthYear = birthYearEle.value;\n if (birthDay == '' || birthMonth == '' || birthYear == '') {\n return true;\n }\n\n birthMonth = (parseInt(birthMonth) + 1).toString();\n\n let day = parseInt(birthDay);\n let month = parseInt(birthMonth);\n let year = parseInt(birthYear);\n // Create list of days of a month [assume there is no leap year by default]\n let listOfDays = [ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ];\n if (month == 1 || month > 2) {\n if (day > listOfDays[month - 1]) {\n return false;\n }\n }\n if (month == 2) {\n var lyear = false;\n if ( (!(year % 4) && year % 100) || !(year % 400)) {\n lyear = true;\n }\n if ((lyear == false) && (day >= 29)) {\n return false;\n }\n if ((lyear == true) && (day > 29)) {\n return false;\n }\n }\n let birthDate = new Date(`${birthMonth}/${birthDay}/${birthYear}`);\n\n if (birthDate > currentDate) {\n return false;\n }\n }\n return true;\n}\n","'use strict';\n\nimport * as validator from './clientSideValidation';\nimport {addEventListenerList} from '../helpers/utilities';\n\nconst\n validationRegEx = {\n phone: /^(?:(?:\\+?1\\s*(?:[.-]\\s*)?)?(?:\\(\\s*([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9])\\s*\\)|([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9]))\\s*(?:[.-]\\s*)?)?([2-9]1[02-9]|[2-9][02-9]1|[2-9][02-9]{2})\\s*(?:[.-]\\s*)?([0-9]{4})(?:\\s*(?:#|x\\.?|ext\\.?|extension)\\s*(\\d+))?$/,\n postalCode: {\n ch: {\n regex: /^[1-9]\\d{3}$/,\n format: '1234'\n },\n de: {\n regex: /^\\d{5}$/,\n format: '12345'\n },\n at: {\n regex: /^[1-9]\\d{3}$/,\n format: '1234'\n },\n cz: {\n regex: /(^\\d{5}$)|(^(\\d{3} \\d{2})$)/,\n format: '123 45'\n },\n fr: {\n regex: /^(?:[0-8]\\d|9[0-8])\\d{3}$/,\n format: '12345'\n },\n mc: {\n regex: /^(?:[0-8]\\d|9[0-8])\\d{3}$/,\n format: '12345'\n },\n gb: {\n regex: /^([A-Z]{1,2}\\d{1,2}[A-Z]?)( {0,1})(\\d[A-Z]{2})$/,\n format: 'AA12 3BB'\n },\n jp: {\n regex: /^\\d{3}-\\d{4}$/,\n format: '123-4567'\n },\n in: {\n regex: /^[1-9]\\d{5}$/,\n format: '123456'\n },\n it: {\n regex: /^\\d{5}$/,\n format: '12345'\n },\n gr: {\n regex: /^\\d{3} \\d{2}$/,\n format: '123 45'\n },\n tr: {\n regex: /^\\d{5}$/,\n format: '12345'\n },\n be: {\n regex: /^\\d{4}$/,\n format: '1234'\n },\n nl: {\n regex: /^\\d{4} [A-Za-z]{2}$/,\n format: '1234 AB'\n },\n lu: {\n regex: /(^[A-Za-z]{1}[-]\\d{4}$)|(^\\d{4}$)/,\n format: 'A-1234 | 1234'\n },\n dk: {\n regex: /^\\d{4}$/,\n format: '1234'\n },\n se: {\n regex: /^\\d{3} \\d{2}$/,\n format: '123 45'\n },\n es: {\n regex: /^\\d{5}$/,\n format: '12345'\n },\n pt: {\n regex: /^\\d{4}[-]\\d{3}$/,\n format: '1234-123'\n },\n sg: {\n regex: /^[\\d]{1,6}$/,\n format: '123456'\n },\n my: {\n regex: /^\\d{5}$/,\n format: '12345'\n },\n th: {\n regex: /^\\d{5}$/,\n format: '12345'\n },\n au: {\n regex: /^\\d{4}$/,\n format: '1234'\n },\n us: {\n regex: /^\\d{5}(-\\d{4})?$/,\n format: '12345'\n },\n ca: {\n regex: /^[abceghjklmnprstvxyABCEGHJKLMNPRSTVXY]\\d[A-Za-z] \\d[A-Za-z]\\d$/,\n format: 'A1A 1A1'\n },\n dz: {\n regex: /^\\d{5}$/,\n format: '12345'\n },\n ar: {\n regex: /^[a-zA-Z]?\\d{4}$|^[a-zA-Z]{1}\\d{4}[a-zA-Z]{3}$/,\n format: '12345 | A1234 | A1234ABC'\n },\n bm: {\n regex: /^[a-zA-Z]{2} \\d{2}$/,\n format: 'AB 12'\n },\n br: {\n regex: /^\\d{5}-\\d{3}$/,\n format: '12345-678'\n },\n bn: {\n regex: /^[a-zA-Z]{2}\\d{4}$/,\n format: 'AB1234'\n },\n cl: {\n regex: /^\\d{7}$/,\n format: '1234567'\n },\n cn: {\n regex: /^\\d{6}$/,\n format: '123456'\n },\n cr: {\n regex: /^\\d{4}$/,\n format: '1234'\n },\n hr: {\n regex: /^\\d{5}$/,\n format: '12345'\n },\n cy: {\n regex: /^\\d{4}$/,\n format: '1234'\n },\n ec: {\n regex: /^EC\\d{6}$/,\n format: 'EC123456'\n },\n fi: {\n regex: /^\\d{5}$/,\n format: '12345'\n },\n gg: {\n regex: /^[\\w\\s-]{1,9}$/,\n format: 'A-Z 0-9'\n },\n hn: {\n regex: /^[a-zA-Z]{2}\\d{4}$/,\n format: 'AB1234'\n },\n hu: {\n regex: /^\\d{4}$/,\n format: '1234'\n },\n is: {\n regex: /^\\d{3}$/,\n format: '123'\n },\n id: {\n regex: /^\\d{5}$/,\n format: '12345'\n },\n ir: {\n regex: /^\\d{10}$/,\n format: '1234567890'\n },\n il: {\n regex: /^\\d{5}$/,\n format: '12345'\n },\n je: {\n regex: /^[\\w\\s-]{1,9}$/,\n format: 'A-Z 0-9'\n },\n kz: {\n regex: /^\\d{6}$/,\n format: '123456'\n },\n kp: {\n regex: /^[\\w\\s-]{1,7}$/,\n format: 'A-Z 0-9'\n },\n kr: {\n regex: /^\\d{5}$/,\n format: '12345'\n },\n kw: {\n regex: /^\\d{5}$/,\n format: '12345'\n },\n lb: {\n regex: /^\\d{4}( \\d{4})?$/,\n format: '1234'\n },\n ls: {\n regex: /^\\d{3}$/,\n format: '123'\n },\n li: {\n regex: /^\\d{4}$/,\n format: '1234'\n },\n mt: {\n regex: /^[a-zA-Z]{3} \\d{4}$/,\n format: 'ABC 1234'\n },\n mu: {\n regex: /^\\d{3}[a-zA-Z]{2}\\d{3}$/,\n format: '123AB456'\n },\n mx: {\n regex: /^\\d{5}$/,\n format: '12345'\n },\n np: {\n regex: /^\\d{5}$/,\n format: '12345'\n },\n nz: {\n regex: /^\\d{4}$/,\n format: '1234'\n },\n ni: {\n regex: /^\\d{3}-\\d{3}-\\d$/,\n format: '123-456-7'\n },\n no: {\n regex: /^\\d{4}$/,\n format: '1234'\n },\n ps: {\n regex: /^\\d{5}$/,\n format: '12345'\n },\n pa: {\n regex: /^0\\d{3}(-\\d{5})?$/,\n format: '0123'\n },\n ph: {\n regex: /^\\d{4}$/,\n format: '1234'\n },\n pl: {\n regex: /^\\d{2}-\\d{3}$/,\n format: '12-345'\n },\n ro: {\n regex: /^\\d{6}$/,\n format: '123456'\n },\n ru: {\n regex: /^\\d{6}$/,\n format: '123456'\n },\n sa: {\n regex: /^\\d{5}$/,\n format: '12345'\n },\n sk: {\n regex: /^\\d{3} \\d{2}$/,\n format: '123 45'\n },\n si: {\n regex: /^\\d{4}$/,\n format: '1234'\n },\n so: {\n regex: /^[a-zA-Z]{2} \\d{5}$/,\n format: 'AB 12345'\n },\n za: {\n regex: /^\\d{4}$/,\n format: '1234'\n },\n tw: {\n regex: /^\\d{3}(\\d{2}|\\d{3})?$/,\n format: '1234'\n },\n tn: {\n regex: /^\\d{4}$/,\n format: '1234'\n },\n ua: {\n regex: /^\\d{5}$/,\n format: '12345'\n },\n ve: {\n regex: /^\\d{4}$/,\n format: '1234'\n },\n vn: {\n regex: /^\\d{6}$/,\n format: '123456'\n },\n default: {\n regex: /^[\\w\\s-]*$/,\n format: 'A-Z 0-9'\n }\n },\n taxCode: {\n it: {\n regex: /^([A-Z]{3})([A-Z]{3})([0-9]{2})([A-Z]{1})([0-9]{2})([A-Z]{1})([0-9]{3})([A-Z]{1})$/\n },\n default: {\n regex: /^([A-Z]{3})([A-Z]{3})([0-9]{2})([A-Z]{1})([0-9]{2})([A-Z]{1})([0-9]{3})([A-Z]{1})$/\n }\n }\n },\n parser = new DOMParser();\n\nvalidator.setupFormList();\n\nfunction _getPostalCodeStructure(postalField) {\n let validationContext = postalField.attributes['data-validation-context'] && postalField.attributes['data-validation-context'].value || null,\n countrySelector = validationContext ? '#' + validationContext + 'Country' : '[name*=\"_countryCode\"]',\n choosedCountry = postalField.form.querySelector(countrySelector),\n selectedCountryID = choosedCountry && choosedCountry.value ? choosedCountry.value : window.SFRA.Constants.LOCALE_COUNTRY;\n\n return validationRegEx.postalCode[selectedCountryID.toLowerCase()] || validationRegEx.postalCode.default;\n}\n\nfunction _getTaxCodeStructure(field) {\n let selectedCountry = field.form.querySelector('[name*=\"_countryCode\"]'),\n selectedCountryID = selectedCountry && selectedCountry.value ? selectedCountry.value : window.SFRA.Constants.LOCALE_COUNTRY;\n\n return validationRegEx.taxCode[selectedCountryID.toLowerCase()] || validationRegEx.taxCode.default;\n}\n\n/**\n * @function\n * @description Validates a given phone number against the countries phone regex\n * @param {String} value The phone number which will be validated\n */\nfunction validatePhone(value) {\n return !value || validationRegEx.phone.test(value.trim());\n}\n\nfunction validateSuppliedPhone(value) {\n var regSupPhone = new RegExp(window.SFRA.SitePreferences.suppliedPhoneNumberRegExp);\n return !value || regSupPhone.test(value.trim());\n}\n\nfunction validateIntlPhone(value, field) {\n if (!window.intlTelInputGlobals) {\n return validatePhone(value);\n }\n\n let intlInstance = window.intlTelInputGlobals.getInstance(field);\n\n return !value || intlInstance.isValidNumber();\n}\n\n/**\n * Use the postalCode regex table to verify a provided code against it.\n * If no country matches, then use the default regex.\n */\nfunction postalCodeValidation(postalValue, postalField) {\n let postalStructure = _getPostalCodeStructure(postalField),\n isValid = true;\n\n if (postalStructure) {\n isValid = postalStructure.regex.test(postalValue.trim());\n }\n\n return !postalValue || isValid;\n}\n\n/**\n * Use the postalCode regex table to verify a provided code against it.\n * If no country matches, then use the default regex.\n */\nfunction taxCodeValidation(taxValue, taxField) {\n let taxStructure = _getTaxCodeStructure(taxField),\n isValid = true;\n\n if (taxStructure) {\n isValid = taxStructure.regex.test(taxValue.trim());\n }\n\n return !taxValue || isValid;\n}\n\n/**\n * Returns true only if the value is a digit\n */\nfunction validateNumeric(value) {\n return /^(\\d+)$/.test(value.trim());\n}\n\n/**\n * Returns true only if the value lenght is 8 digit\n */\nfunction validateCaseId(value) {\n let valid = true;\n if (value.length < 8) {\n return !valid;\n }\n\n return valid;\n}\n\n/**\n * Validates latin characters, non-control characters, and Arabic alphabet characters.\n * @param {[type]} value [description]\n * @return {[type]} [description]\n */\nfunction validateArabicAndLatin(value) {\n var $currentSiteId = $('.current-site-id').data('current-site-id'),\n $isGiftCardMessage = $('.personalisation__card-textarea').data('line-item-component'),\n whiteSpaceStrip = value.replace(/\\s/g, ''),\n koreanAndEnglishPatternMatch = new RegExp('[\\u3131-\\uD79DA-Za-z0-9\\u0021-\\u0040]', 'g'),\n noKoreanNoEnglishPatternMatch = new RegExp('[^\\u3131-\\uD79DA-Za-z0-9\\u0021-\\u0040]', 'g'),\n acceptableText = koreanAndEnglishPatternMatch.test(whiteSpaceStrip) && !noKoreanNoEnglishPatternMatch.test(whiteSpaceStrip);\n if ($currentSiteId !== 'undefined' && $currentSiteId === 'CartierKR' && $isGiftCardMessage === 'gift-msg-textarea') {\n return acceptableText === false ? false : true;\n } else {\n return !value || /^[\\u0020-\\u007E\\u00A0\\u00A7\\u00AD\\u0600-\\u06FF\\u0750-\\u077F\\u08A0-\\u08FF\\uFB50-\\uFDFF\\uFE70-\\uFEFF]+$/.test(value.trim());\n }\n}\n\n/**\n * Validate Arabic characters only + spaces.\n */\nfunction validateArabic(value) {\n return !value || /^[\\u0020\\u0600-\\u06FF\\u0750-\\u077F\\u08A0-\\u08FF\\uFB50-\\uFDFF\\uFE70-\\uFEFF]+$/.test(value.trim());\n}\n\n/**\n * Validate Arabic characters, numbers and punctuation, spaces.\n */\nfunction validateArabicForUAEOrKSA(value) {\n return !value || /^[\\u0600-\\u06FF\\d\\s\\-\\_\\.\\,\\;\\:\\!\\؟\\(\\)\\[\\]\\{\\}\\،\\.\\؛\\:\\(\\)\\?\\!\\\"\\'\\`\\/\\\\]+$/.test(value.trim());\n}\n/**\n * Validate A-Z characters, numbers, and punctuation only.\n */\nfunction validateAlphanumeric(value) {\n return !value || /^[\\u0020-\\u007E\\u00A0\\u00A7\\u00AD]+$/.test(value.trim());\n}\n\n/**\n * validate A-Z characters, numbers, punctuation, nextline\n */\nfunction validateGiftmessage(value) {\n return !value || /^[\\u0020-\\u007E\\u00A0\\u00A7\\u00AD\\u0600-\\u06FF\\u0750-\\u077F\\u08A0-\\u08FF\\uFB50-\\uFDFF\\uFE70-\\uFEFF\\n]+$/.test(value.trim());\n}\n\n/**\n * Validate English characters and accent characters only + spaces, apostrophe and hyphen.\n */\nfunction validateLatin(value) {\n return !value || /^[a-zA-Z\\u0020\\u0027\\u002D\\u00C0-\\u00FF\\u0100-\\u017F\\u0180-\\u024F\\u1E00-\\u1EFF]+$/.test(value.trim());\n}\n\n/**\n * Validate that address line is not a PO Box.\n */\nfunction validateNonPoBox(value) {\n return !value || !/\\bp\\.? *o\\.? *box\\b/i.test(value.trim());\n}\n\n/**\n * Validate that state code is set when required for US or CA.\n */\nfunction validateBillingStateCode(value) {\n let countrySelector = document.querySelector('[data-billing-address=\"country-code\"]'),\n stateField = document.querySelector('[data-billing-address-state-code]'),\n localeCountry = stateField && stateField.attributes['data-billing-address-state-code'].value || 'US';\n\n if (localeCountry == 'CA' || localeCountry == 'US') {\n return !((countrySelector.value === 'US' || countrySelector.value === 'CA') && !value.trim());\n } else {\n return !(countrySelector.value === localeCountry && !value.trim());\n }\n}\n\n/**\n * Checks if two field values match.\n */\nfunction validateMatch(value, field) {\n let matchingEl = field.form.querySelector(field.getAttribute('data-validate-match')),\n matchingElValue = matchingEl.value;\n\n return value.toLowerCase() === matchingElValue.toLowerCase();\n}\n\nfunction validateRequired(value) {\n return !!value.trim();\n}\n\n/**\n * Validates if all constraints available in the \"data-validate-constraints\" attribute pass their individual validations.\n */\nfunction validateConstraints(value, field) {\n let validationRules = JSON.parse(field.getAttribute('data-validate-constraints')),\n isValid = true;\n\n for (let key in validationRules) {\n if (validationRules[key].value) {\n let currentRegex = new RegExp(`.*${validationRules[key].regex}.*`);\n\n if (!currentRegex.test(field.value)) {\n field.dataset.constraintKey = key;\n field.dataset.constraintValue = validationRules[key].value;\n\n isValid = false;\n }\n }\n }\n\n return isValid;\n}\n\n/**\n * Toggles the necessary states for each field within `dependentEls`.\n * The `setRequired` flag is used to determine wether or not the field should be required.\n */\nfunction _toggleDependentRequired(dependentEls, setRequired) {\n [].forEach.call(dependentEls, function(currentInput) {\n currentInput.required = setRequired;\n\n //If nothing is required, clear all validity.\n if (!setRequired) {\n validator.clearValidity(currentInput);\n }\n\n //If an error is currently visible, ensure that field gets re-validated after a sibling is changed.\n if (currentInput.classList.contains(validator.FIELD_INVALID_CLASS)) {\n validator.validateField(currentInput);\n }\n });\n}\n\n/**\n * Checks wether or not any field has a value, and returns TRUE if so.\n */\nfunction _hasDependentValue(dependentEls) {\n for (let dependentEl of dependentEls) {\n if (dependentEl.value || dependentEl.checked) {\n return true;\n }\n }\n\n return false;\n}\n\n/**\n * Sets up two or more fields that are dependent on each other.\n * That is, if one field has a value, the other(s) are automatically set as required.\n * If no fields have values, then non are required.\n */\nfunction setupRequiredDependency(formEl) {\n let dependencyGroupEls = (formEl || document).querySelectorAll('[data-dependency-group]');\n\n [].forEach.call(dependencyGroupEls, function(currentGroup) {\n let dependentEls = currentGroup.querySelectorAll('[data-validate-required-dependency]');\n\n addEventListenerList(dependentEls, 'change blur', function() {\n _toggleDependentRequired(dependentEls, _hasDependentValue(dependentEls));\n });\n });\n}\n\n/**\n * Removes any unwanted HTML tags from input elements, preventing hypothetical attacks.\n * @param {NodeElement} el [description]\n */\nfunction cleanInputScripts(value, field) {\n if (value && (field.nodeName === 'TEXTAREA' || (field.type && field.type !== 'file'))) {\n let parsedHTML = parser.parseFromString(value, 'text/html');\n\n field.value = parsedHTML.body.textContent;\n }\n\n return true;\n}\n\nfunction validateMaxLength(value, field) {\n let maxLength = field.getAttribute('data-validate-max') || 49;\n\n return value.trim().length <= maxLength;\n}\n\n/**\n * Validates that required consent is accepted.\n * @param value - Field Value.\n * @param field - Consent input field.\n * @returns {boolean} Consent validity.\n */\nfunction validateRequiredConsent(value, field) {\n const yesField = _getConsentYesField(field);\n return yesField.checked;\n}\n\n/**\n * @function\n * @description Retrieves the yes input field by given consent field.\n * @param {HTMLInputElement} field - Yes/No input field.\n * @returns {HTMLInputElement} Yes input field.\n */\nfunction _getConsentYesField(field) {\n return document.querySelector(`#${field.id.replace(/-(yes|no)$/i, '-yes')}`);\n}\n\nfunction validateTextareaWithPattern(value, field) {\n var regex = new RegExp(field.attributes.pattern.value, 'g');\n return regex.test(value);\n}\n\nfunction usePattenMessage(value, field) {\n return field.getAttribute('data-pattern-mismatch') || window.SFRA.Resources.patternMismatch;\n}\n\nfunction validateSpecialCharsAddress(value) {\n var format = /[`!@#$%^&*()_+\\-=\\[\\]{};':\"\\\\|,.<>\\/?~]/;\n return !value || !(format.test(value.trim()));\n}\nvalidator.addValidation('textarea[pattern]', validateTextareaWithPattern, usePattenMessage);\n\nvalidator.addValidation('data-validate-match', validateMatch, window.SFRA.Resources.matchingFormat);\n\nvalidator.addValidation('data-validate-phone', validatePhone, window.SFRA.Resources.phoneFormat);\n\nvalidator.addValidation('data-validate-intl-phone', validateIntlPhone, window.SFRA.Resources.phoneFormat);\n\nvalidator.addValidation('data-validate-numeric', validateNumeric, window.SFRA.Resources.numericFormat);\n\nvalidator.addValidation('data-validate-latin-arabic', validateArabicAndLatin, window.SFRA.Resources.alphabetFormat);\n\nvalidator.addValidation('data-validate-arabic', validateArabic, window.SFRA.Resources.arabicFormat);\n\nvalidator.addValidation('data-validate-arabic-characters', validateArabicForUAEOrKSA, window.SFRA.Resources.arabicFormat);\n\nvalidator.addValidation('data-validate-taxCode', taxCodeValidation, window.SFRA.Resources.taxCodeFormat);\n\nvalidator.addValidation('data-validate-alphanumeric', validateAlphanumeric, window.SFRA.Resources.alphanumericFormat);\n\nvalidator.addValidation('data-validate-giftmessage', validateGiftmessage, window.SFRA.Resources.giftmessageFormat);\n\nvalidator.addValidation('data-validate-latin', validateLatin, window.SFRA.Resources.latinFormat);\n\nvalidator.addValidation('data-validate-area', validateAreaInput, window.SFRA.Resources.areaFormat);\n\nvalidator.addValidation('data-validate-non-pobox', validateNonPoBox, window.SFRA.Resources.nonPoBoxFormat);\n\nvalidator.addValidation('data-validate-case-id', validateCaseId, window.SFRA.Resources.caseIdLength);\n\nvalidator.addValidation('data-birth-day-validate', validator.validateBirthDayDate, window.SFRA.Resources.invalidBirthDate);\n\nvalidator.addValidation('data-birth-year-validate', validator.validateBirthDayDate, window.SFRA.Resources.invalidBirthDate);\n\nvalidator.addValidation('data-birth-month-validate', validator.validateBirthDayDate, window.SFRA.Resources.invalidBirthDate);\n\nvalidator.addValidation('data-validate-address-specialchars', validateSpecialCharsAddress, window.SFRA.Resources.invalidSpecialCharsInAddress);\n\nif (window.SFRA.SitePreferences.enableContactUsEmailPhoneNumber) {\n validator.addValidation('data-validate-supplied-phone', validateSuppliedPhone, window.SFRA.Resources.phoneFormat);\n}\nvalidator.addValidation('data-validate-billing-state-code', validateBillingStateCode, function(value, field) {\n return field.getAttribute('data-missing-error') || window.SFRA.Resources.requiredField.format(field.labels && field.labels[0] ? field.labels[0].textContent.trim() : '');\n});\n\nvalidator.addValidation('data-validate-max', validateMaxLength, function(value, field) {\n let dataValidateMax = field.getAttribute('data-validate-max') || 49;\n return window.SFRA.Resources.maxLength.format(dataValidateMax);\n});\n\nvalidator.addValidation('data-validate-constraints', validateConstraints, function(value, field) {\n return window.SFRA.Resources.constraints[field.dataset.constraintKey].format(field.dataset.constraintValue);\n});\n\nvalidator.addValidation('data-validate-postal-code', postalCodeValidation, function(value, field) {\n let postalStructure = _getPostalCodeStructure(field);\n\n return postalStructure ? window.SFRA.Resources.postalFormatX.format(postalStructure.format) : window.SFRA.Resources.postalFormat;\n});\n\nvalidator.addValidation('required', validateRequired, function(value, field) {\n return field.getAttribute('data-missing-error') || window.SFRA.Resources.requiredField.format(field.labels && field.labels[0] ? field.labels[0].textContent.trim() : '');\n});\n\nvalidator.addValidation('*', cleanInputScripts, '');\n\nvalidator.setDefaultMessages({\n 'emptyRadio': window.SFRA.Resources.emptyRadio,\n 'invalidEmail': window.SFRA.Resources.invalidEmail,\n 'patternMismatch': window.SFRA.Resources.patternMismatch\n});\n\nvalidator.addValidation('data-validate-required-consent', validateRequiredConsent, function(value, field) {\n const yesField = _getConsentYesField(field);\n const label = yesField.labels && yesField.labels[0];\n return yesField.getAttribute('data-missing-error') || window.SFRA.Resources.requiredField.format(label ? label.textContent.trim() : '');\n});\n\nsetupRequiredDependency();\n\n/**\n * Setup validation listeners.\n * Useful to re-initialize validation after a dynamic component loads, i.e. a modal.\n * @param {[type]} targetForm [description]\n * @return {[type]} [description]\n */\nexport function init(targetForm) {\n let matchingForms = targetForm ? targetForm.querySelectorAll(validator.FORM_SELECTOR) : validator.FORM_SELECTOR;\n\n setupRequiredDependency(targetForm);\n\n validator.setupFormList(matchingForms);\n}\n\nfunction validateAreaInput(value) {\n var regex = /^[a-zA-Z, -]*$/;\n if (!regex.test(value)) {\n return false;\n }\n return true;\n}\n","'use strict';\n\n/**\n * Detect if the user is clicking/tapping and adds a special class to the body.\n * This class is used to display element :focus styles differently depending on the medium used.\n */\nfunction detectFocusType() {\n document.body.addEventListener('mousedown', toggleFocusType);\n document.body.addEventListener('keydown', toggleFocusType);\n}\n\nfunction toggleFocusType(evt) {\n if (evt.type === 'mousedown') {\n this.classList.add('set--hide-click-focus');\n } else {\n this.classList.remove('set--hide-click-focus');\n }\n}\n\nexport default detectFocusType;\n","import MegaMenu from './born-megamenu';\nimport {breakpoints, setOverlay, unsetOverlay, allowScrollableAreas, toggleInert, publishEvent, headerEl, initModules} from '../helpers/utilities';\nimport {loadOnDemandImage} from '../helpers/imageUtilities';\nimport {disableBodyScroll, enableBodyScroll} from 'body-scroll-lock';\nimport {default as setupSearch, closeSearch} from './search';\nimport setupHeaderFocus from './headerFocusManager';\nimport {updatePuck} from './puckSizer';\nimport {subscribe} from '../helpers/pubSub';\nimport {appendParamsToURL} from '../helpers/urlUtilities';\nimport * as progress from './progress';\nimport BornModal from '@borngroup/born-modal';\nimport {objectAssign} from '@borngroup/born-utilities';\nimport * as validation from './customValidation';\n\n/**\n * Displays an overlay if the current viewport is larger than `breakpoints.small`.\n * @param {[type]} set [description]\n * @return {[type]} [description]\n */\nfunction _toggleOverlay(set) {\n if (set) {\n setOverlay({trigger: 'megamenu'});\n } else if (window.innerWidth > breakpoints.small) {\n unsetOverlay({trigger: 'megamenu'});\n }\n}\n\nfunction _checkIsLevel1(triggerEl) {\n return triggerEl.getAttribute('data-nav-component') === 'anchor-1';\n}\n\nfunction setupMobileFlyoutTrigger() {\n let triggerEl = document.querySelector('[data-nav-component=\"trigger\"]');\n\n if (triggerEl && triggerEl.toggle) {\n triggerEl.toggle.afterSet = function() {\n toggleInert('.main, .footer', true);\n\n disableBodyScroll(triggerEl.toggle.targetEl, {allowTouchMove: allowScrollableAreas});\n };\n\n triggerEl.toggle.afterUnset = function() {\n toggleInert('.main, .footer');\n enableBodyScroll(triggerEl.toggle.targetEl);\n };\n }\n}\n\n/**\n * Returns the first flyout tab that has a configured subnavigation.\n * @return {HTMLElement} a flyout anchor matching the `[data-nav-tab=\"anchor-2\"]` attribute.\n */\nfunction _getFirstTabMatch(triggerEl) {\n let tabAnchors = triggerEl.megamenu.target.querySelectorAll('[data-nav-tab=\"anchor-2\"]'),\n firstTabMatch = null;\n\n for (let i = 0; i <= tabAnchors.length; i++) {\n if (tabAnchors[i] && tabAnchors[i].megamenu && tabAnchors[i].megamenu.children) {\n firstTabMatch = tabAnchors[i];\n\n break;\n }\n }\n\n return firstTabMatch;\n}\n\n/**\n * Sets up flyout states when opening up the top-level item, and when toggling between tabs.\n */\nfunction _updateFlyoutState(triggerEl, megaMenu) {\n let firstTabMatch = _getFirstTabMatch(triggerEl);\n\n if (firstTabMatch) {\n megaMenu.toggleTriggerActive(firstTabMatch);\n\n updatePuck(firstTabMatch, true);\n } else if (triggerEl.matches('[data-nav-tab]')) {\n updatePuck(triggerEl);\n\n loadOnDemandImage(triggerEl.megamenu.target);\n }\n}\n\n/**\n * Initializes Megamenu functionality.\n * @return {[Class]} [description]\n */\nfunction setupMegamenu() {\n return new MegaMenu({\n menuSelector: '.header-flyout',\n targetSelector: '.header-flyout__container',\n matchingSiblingsAttribute: 'data-nav-component',\n unsetSiblingsSelector: '.no--submenu',\n responsive: [\n {\n breakpoint: `(min-width: ${breakpoints.small + breakpoints.unit}px)`,\n settings: {\n events: [\n {\n selector: '.level-1',\n events: 'touchstart mouseenter keydown'\n },\n {\n selector: ':not(.level-1)',\n events: 'touchstart mouseenter keydown'\n }\n ],\n hoverDelay: 150,\n unsetOnMouseleave: true,\n triggerSelector: '[data-nav-component*=\"anchor\"]',\n clickThroughSelector: '[data-nav-component=\"anchor-3\"]',\n disableUnsetSelf: '[data-nav-tab=\"anchor-2\"]',\n customAttributes: function(triggerEl) {\n let isLevel1 = _checkIsLevel1(triggerEl);\n\n return {\n 'aria-controls': isLevel1 ? {value: triggerEl.megamenu.target.id, trigger: true} : false,\n 'aria-expanded': isLevel1 ? {value: [ 'false', 'true' ], trigger: true} : false\n };\n },\n afterMenuSet: function() {\n _toggleOverlay(true);\n document.querySelectorAll('html')[0].classList.add('blockScroll');\n document.querySelectorAll('html')[0].style.marginRight = '15px';\n\n //Ensure scroll direction is set when the menu opens to prevent the navigation from going away once the user focuses out of it.\n if (headerEl.classList.contains('fixit--scrolled')) {\n publishEvent('fixit', 'updateScrollDirection', headerEl, {scrollDirection: 'up'});\n }\n },\n afterMenuUnset: function() {\n _toggleOverlay(false);\n document.querySelectorAll('html')[0].classList.remove('blockScroll');\n document.querySelectorAll('html')[0].style.marginRight = '0';\n },\n afterTriggerSet: function(triggerEl, megaMenu) {\n closeSearch();\n\n _updateFlyoutState(triggerEl, megaMenu);\n },\n }\n },\n {\n breakpoint: `(max-width: ${breakpoints.small}px)`,\n settings: {\n events: 'click keydown',\n triggerSelector: '[data-nav-component*=\"anchor\"], .header-flyout__secondary-link',\n keyboardNavigation: {\n horizontal: false,\n vertical: '[data-nav-component*=\"anchor\"], .header-flyout__anchor--parent'\n },\n afterTriggerSet: function(triggerEl) {\n if (!triggerEl.matches('[data-nav-tab]')) {\n toggleInert(triggerEl.megamenu.siblings, true);\n } else {\n loadOnDemandImage(triggerEl.megamenu.target);\n }\n },\n afterTriggerUnset: triggerEl => toggleInert(triggerEl.megamenu.siblings)\n }\n }\n ]\n });\n}\n\nfunction loginFormError() {\n subscribe('loginForm:error', function(data) {\n var notificationElem = document.querySelector('.mi-cust-notify');\n\n if (notificationElem) {\n if (data.response.migratedCustomer) {\n notificationElem.classList.add('set--visible');\n } else {\n notificationElem.classList.remove('set--visible');\n }\n }\n });\n}\n\nfunction sliderMegaMenu(container) {\n var scrollDuration = 200;\n var leftArrow = $(container).find('.header-flyout__left-arrow');\n var rightArrow = $(container).find('.header-flyout__right-arrow');\n // get items dimensions\n let menuItem = $(container).find('.header-flyout__tab-list').children('.header-flyout__tab-item');\n //var itemsLength = menuItem.length;\n let itemWidth = 0;\n $.each(menuItem, function(i, value) {\n itemWidth = value.offsetWidth + itemWidth;\n });\n var paddleMargin = 20;\n\n // get wrapper width\n var getMenuWrapperSize = function() {\n return $('.header-flyout__list--sections').outerWidth();\n }\n var menuWrapperSize = getMenuWrapperSize();\n\n window.addEventListener('resize', function() {\n menuWrapperSize = getMenuWrapperSize();\n });\n // get total width of all menu items\n var getMenuSize = function() {\n return itemWidth;\n };\n var menuSize = getMenuSize();\n // get how much of menu is invisible\n var menuInvisibleSize = menuSize - menuWrapperSize;\n\n // get how much have we scrolled to the left\n var getMenuPosition = function() {\n return $(container).find('.header-flyout__tab-list').scrollLeft();\n };\n\n // finally, what happens when we are actually scrolling the menu\n $(container).find('.header-flyout__tab-list').on('scroll', function() {\n // get how much of menu is invisible\n menuInvisibleSize = menuSize - menuWrapperSize;\n // get how much have we scrolled so far\n var menuPosition = Math.abs(getMenuPosition());\n\n var menuEndOffset = menuInvisibleSize - paddleMargin;\n\n if (menuPosition <= paddleMargin) {\n leftArrow.addClass('hidden');\n rightArrow.removeClass('hidden');\n } else if (menuPosition < menuEndOffset) {\n // show both paddles in the middle\n leftArrow.removeClass('hidden');\n rightArrow.removeClass('hidden');\n } else if (menuPosition >= menuEndOffset) {\n leftArrow.removeClass('hidden');\n rightArrow.addClass('hidden');\n }\n\n });\n\n if (menuWrapperSize > itemWidth && rightArrow && !$(rightArrow).hasClass('hidden')) {\n $(rightArrow).addClass('hidden');\n } else if (menuWrapperSize < itemWidth && rightArrow && $(rightArrow).hasClass('hidden')) {\n $(rightArrow).removeClass('hidden');\n }\n\n // scroll to left\n $(rightArrow).on('click', function() {\n if ($('html').attr('dir') == 'rtl') {\n $(container).find('.header-flyout__tab-list').animate({\n scrollLeft: getMenuPosition() - 250\n }, scrollDuration);\n } else {\n $(container).find('.header-flyout__tab-list').animate({\n scrollLeft: getMenuPosition() + 250\n }, scrollDuration);\n }\n });\n\n // scroll to right\n $(leftArrow).on('click', function() {\n if ($('html').attr('dir') == 'rtl') {\n $(container).find('.header-flyout__tab-list').animate({\n scrollLeft: getMenuPosition() + 250\n }, scrollDuration);\n } else {\n $(container).find('.header-flyout__tab-list').animate({\n scrollLeft: getMenuPosition() - 250\n }, scrollDuration);\n }\n });\n}\n\nlet menuHandler = $('[data-nav-component=\"anchor-1\"]');\n\nmenuHandler.on('mouseenter touchstart', function() {\n sliderMegaMenu(this.closest('.header-flyout__item'));\n});\n\nfunction isInViewport(el) {\n var top = el.offsetTop;\n var left = el.offsetLeft;\n var width = el.offsetWidth;\n var height = el.offsetHeight;\n\n while (el.offsetParent) {\n el = el.offsetParent;\n top += el.offsetTop;\n left += el.offsetLeft;\n }\n\n return (\n top < (window.pageYOffset + window.innerHeight) &&\n left < (window.pageXOffset + window.innerWidth) &&\n (top + height) > window.pageYOffset &&\n (left + width) > window.pageXOffset\n );\n}\n\nfunction checkAutoplay() {\n let video = document.querySelector('[data-video-component=\"parent\"]'),\n playButton = document.querySelector('.vjs-play-control');\n if (video && isInViewport(video) && playButton && !video.classList.contains('set--video-playing')) {\n playButton.click();\n } else if (video && !isInViewport(video) && playButton && video.classList.contains('set--video-playing')) {\n playButton.click();\n }\n}\n\n[ 'load', 'resize', 'scroll' ].forEach(function(evt) {\n window.addEventListener(evt, checkAutoplay);\n});\n\nfunction getNewsLetterLinkText() {\n let newsLetterConfig = window.SFRA.SitePreferences.newsLetterSubscriptionConfig;\n let currentLocale = window.SFRA.Constants.LOCALE_XML_CODE;\n\n try {\n let newsLetterConfigJSON = newsLetterConfig ? JSON.parse(newsLetterConfig) : null;\n return newsLetterConfigJSON ? newsLetterConfigJSON[currentLocale] : '#NewsletterSubscribe';\n } catch (e) {\n return '#NewsletterSubscribe';\n }\n}\n\nfunction getLoginLinkText() {\n let loginTextConfig = window.SFRA.SitePreferences.loginTextConfig;\n let currentLocale = window.SFRA.Constants.LOCALE_XML_CODE;\n try {\n let loginTextConfigJSON = loginTextConfig ? JSON.parse(loginTextConfig) : null;\n return loginTextConfigJSON ? loginTextConfigJSON[currentLocale] : '#login';\n } catch (e) {\n return '#login';\n }\n}\nfunction modalOpenWithContent(paramsContent) {\n let modalContent = paramsContent.content || paramsContent.html,\n modalInstance;\n\n if (modalContent) {\n let originalCallback;\n\n paramsContent.options = objectAssign({}, paramsContent.options);\n paramsContent.tracking = objectAssign({}, paramsContent.tracking);\n paramsContent.options.content = modalContent;\n\n originalCallback = paramsContent.callback || paramsContent.options.afterCreateCallback;\n\n paramsContent.options.afterCreateCallback = function(modal) {\n if (typeof originalCallback === 'function') {\n originalCallback(modal);\n }\n\n initModules(modal);\n validation.init();\n };\n\n modalInstance = new BornModal(paramsContent.options);\n\n delete paramsContent.options.afterCreateCallback;\n\n return modalInstance;\n }\n}\n\nfunction dialogOpen(modalParams) {\n let targetModalContent;\n\n modalParams.options = modalParams.options || {};\n\n targetModalContent = BornModal.getModal(modalParams.options.modalID);\n\n //Avoid making unnecessary requests if modal was already loaded once.\n if (targetModalContent) {\n //Makes sure the afterOpenCallback is taken from the object every time, in case the values change.\n targetModalContent.modal.afterOpenCallback = modalParams.options.afterOpenCallback || function() {\n return false;\n };\n\n targetModalContent.modal.open();\n } else {\n if (modalParams.url) {\n progress.showLoader();\n\n $.ajax({\n dataType: modalParams.type || 'json',\n url: modalParams.url,\n data: modalParams.data,\n xhrFields: {\n withCredentials: true\n }\n })\n .done(function(response) {\n progress.hideLoader();\n\n modalParams.content = typeof response === 'string' ? response : (response.renderedTemplate || response.content);\n\n modalOpenWithContent(modalParams);\n\n })\n .fail(function(xhr, textStatus) {\n // failed\n if (textStatus === 'parsererror') {\n console.log('Bad response type. Check if your `dataType` request matches the response type.');\n }\n })\n }\n }\n}\n\nif (window.SFRA.SitePreferences.enableNewsletterSubscriptionLink) {\n document.addEventListener('DOMContentLoaded', function() {\n let isHomePage = window.location.href.indexOf('/home') >= 0 || window.location.href.indexOf('/Home-Show') >= 0;\n let newsLetterSubscriptionLinkText = getNewsLetterLinkText();\n if (isHomePage && newsLetterSubscriptionLinkText && window.location.href.indexOf(encodeURI(newsLetterSubscriptionLinkText)) >= 0) {\n let modalOptions = {\n modalClass: 'modal--base modal--newsletter',\n modalID: 'footerNewsletterSubscribe',\n overlayOthers: true\n }\n dialogOpen({\n url: appendParamsToURL(window.SFRA.Urls.newsLetterSubscribeUrl, {isModalLoadFromLink: true}),\n type: 'html',\n options: modalOptions\n })\n }\n });\n}\n\nif (window.SFRA.SitePreferences.enableLoginLink) {\n document.addEventListener('DOMContentLoaded', function() {\n let isHomePage = window.location.href.indexOf('/home') >= 0 || window.location.href.indexOf('/Home-Show') >= 0;\n let loginPageLinkText = getLoginLinkText();\n if (isHomePage && loginPageLinkText && window.location.href.indexOf(encodeURI(loginPageLinkText)) >= 0) {\n if (window.SFRA.sessionData.loggedin) {\n window.location.href = window.SFRA.Urls.accountShow;\n } else {\n let targetURL,\n targetModalID = 'auth',\n targetModalClass = 'modal--auth modal--base modal--flex';\n targetURL = appendParamsToURL(window.SFRA.Urls.loginShow, {\n rurl: 1,\n renderView: 'modal',\n isModalLoadFromLink: true\n });\n dialogOpen({\n url: targetURL,\n type: 'html',\n options: {\n modalID: targetModalID,\n modalClass: targetModalClass,\n keepAlive: false,\n overlayOthers: true\n }\n })\n }\n }\n });\n}\n\nfunction setHeaderHeight() {\n let headerContainerEl = document.querySelector('[data-header-component=\"header-container\"]'),\n headerPromo = document.querySelector('[data-header-component=\"promo\"]'),\n headerNavEl = document.querySelector('[data-header-component=\"header\"]'),\n experienceComponent = document.querySelectorAll('.experience-component'),\n moduleGridItem = document.querySelectorAll('.module-grid__item'),\n headerMainNav = document.querySelector('.header__main-nav'),\n headerHeight,\n headerNavHeight;\n if (headerPromo) {\n if (headerPromo.firstElementChild) {\n headerHeight = $(headerPromo).find('.promo-banner-list__item:first-child').outerHeight() + headerNavEl.clientHeight;\n } else {\n headerHeight = headerContainerEl.clientHeight;\n }\n } else {\n headerHeight = headerContainerEl.clientHeight;\n }\n headerNavHeight = $(headerMainNav).outerHeight();\n $(experienceComponent[0]).find(moduleGridItem[0]).addClass('hero-fullscreen__first-element');\n $('.hero__aspect-ratio--fullscreen').css('--header-floating-height', headerHeight + 'px');\n $('.hero__aspect-ratio--fullscreen').css('--header-fixed-height', headerNavHeight + 'px');\n}\n\nexport default function() {\n setupMegamenu();\n setupSearch();\n setupMobileFlyoutTrigger();\n setupHeaderFocus();\n loginFormError();\n checkAutoplay();\n setHeaderHeight();\n}\n","import {headerEl} from '../helpers/utilities';\n\nconst\n headerFlyoutEl = headerEl.querySelector('[data-header-component=\"flyout\"]'),\n headerFocusManagers = headerEl.querySelectorAll('[data-header-component=\"focus-manager\"]');\n\n/**\n * Attach listener to the `headerEl` element for whenever the focus is swapped within the element.\n */\nexport default function setupHeaderFocus() {\n headerEl.addEventListener('focusin', _headerFocusHandler);\n headerEl.addEventListener('focusout', _headerFocusHandler);\n //Ensure clicks are tracked as well, so that when user clicks outside a header panel it checks if there still are active panels.\n document.addEventListener('click', _headerFocusHandler);\n}\n\n/**\n * Handles focus management when interacting with header elements.\n * Toggles a \"focus-within\" class whenever an element within the header gains or loses focus.\n */\nfunction _headerFocusHandler() {\n //Set the \"focus-within\" class whenever an element within the `[data-header-component=\"header\"]` container gains focus.\n //Since focus is managed with born-megamenu and born-toggle, this takes care of ensuring the class is present when necessary.\n if (document.activeElement.closest('[data-header-component=\"header\"]')) {\n headerEl.classList.add('focus-within');\n } else if (!_hasVisibleFocusManagers()) {\n //Remove the \"focus-within\" class only when there's no born-megamenu or born-toggle triggers active.\n //This prevents removing the state in case the container loses focus, i.e. if a toggle is triggered but the user clicks on its target container (which sets the focus to the `body` element).\n headerEl.classList.remove('focus-within');\n }\n}\n\n/**\n * Determines wether or not there are currently visible \"panels\" in the header.\n * That is, whenver there's an active born-toggle or born-megamenu, or something else that is expanded within the header.\n */\nfunction _hasVisibleFocusManagers() {\n if (headerFlyoutEl && headerFlyoutEl.classList.contains('mega--active')) {\n return true;\n } else {\n for (let i = 0; i < headerFocusManagers.length; i++) {\n if (headerFocusManagers[i].toggle && headerFocusManagers[i].toggle.isSet) {\n return true;\n }\n }\n }\n\n return false;\n}\n","'use strict';\n\nimport * as progress from './progress';\nimport modules from '../helpers/modules';\nimport {initMethods, setOverlay, unsetOverlay} from '../helpers/utilities';\nimport {disableBodyScroll, clearAllBodyScrollLocks} from 'body-scroll-lock';\nimport {callbackOnElements} from '@borngroup/born-utilities';\nimport * as applepayapi from '../applepayapi';\n\nlet minicartTrigger,\n minicartDropdown;\n\nfunction _renderMinicartDropdown(response) {\n progress.hideLoader();\n\n let restrictSiteAccessForLoggedInUser = window.SFRA.SitePreferences.restrictSiteAccessForLoggedInUser,\n isCustomerLoggedIn = window.SFRA.sessionData.loggedin;\n\n if (restrictSiteAccessForLoggedInUser && !isCustomerLoggedIn) {\n window.location.href = window.SFRA.Urls.loginShow;\n } else {\n minicartDropdown.textContent = '';\n minicartDropdown.innerHTML = response;\n applepayapi.init();\n\n import(/* webpackChunkName: \"module-line-item\" */ '../cart/lineItem').then(function(LineItem) {\n initMethods(modules, minicartDropdown);\n LineItem.init(minicartDropdown);\n\n minicartDropdown.classList.add('set--loaded');\n disableBodyScroll(minicartDropdown.querySelector('[data-minicart-component=\"items\"]'));\n\n $('body').trigger('miniCart:afterLoad', {\n container: minicartDropdown,\n response: response\n });\n });\n }\n}\n\nfunction _handleMinicartLoad(currentTrigger) {\n let url = currentTrigger.getAttribute('data-action-url');\n\n setOverlay({trigger: currentTrigger, includeHeader: true});\n\n progress.showLoader(minicartDropdown);\n\n $('body').trigger('miniCart:beforeLoad');\n\n $.get(url, _renderMinicartDropdown);\n\n return true;\n}\n\nfunction handleFocusTrap() {\n let firstFocusableElement = minicartDropdown.querySelector('[data-minicart-component=\"qty\"]'),\n lastFocusableElement = minicartDropdown.querySelector('[data-cart-component=\"checkout-action\"]'),\n applePayButton = minicartDropdown.querySelector('[data-applepay-instant-checkout=\"button\"]');\n minicartDropdown.addEventListener('keydown', function(e) {\n let isTabPressed = (e.key === 'Tab' || e.keyCode === 9);\n if (!isTabPressed) {\n return;\n }\n\n if (isTabPressed) {\n if (document.activeElement === lastFocusableElement && applePayButton && !$(applePayButton).is(':visible')) {\n e.preventDefault();\n firstFocusableElement.focus();\n }\n }\n })\n}\n\nif (document.querySelector('[data-minicart-component=\"trigger\"]') != null) {\n document.querySelector('[data-minicart-component=\"trigger\"]').addEventListener('mouseenter', function() {\n if ( /Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent)) {\n return false;\n } else {\n minicartTrigger.toggle.set();\n }\n });\n\n document.querySelector('[data-minicart-component=\"trigger\"]').addEventListener('keydown', function(e) {\n let keyPressed = (e.keyCode == 13);\n if (keyPressed) {\n minicartTrigger.toggle.afterSet = function() {\n setTimeout(function() {\n let firstElement = minicartDropdown.querySelector('.utility-overlay__header-anchor');\n if (firstElement) {\n firstElement.focus();\n handleFocusTrap();\n }\n }, 2000);\n }\n }\n })\n}\n\nif (document.querySelector('[data-minicart-component=\"overlay\"]') != null) {\n document.querySelector('[data-minicart-component=\"overlay\"]').addEventListener('mouseenter', function() {\n $('[data-minicart-component=\"overlay\"]').on('mouseleave', function(evt) {\n if (evt.relatedTarget != null && !evt.relatedTarget.classList.contains('product-add__button') && minicartTrigger.getAttribute('aria-expanded')) {\n minicartTrigger.toggle.unset();\n $('[data-minicart-component=\"overlay\"]').off('mouseleave');\n }\n });\n });\n}\n\nexport function updateMinicartCount(qtyTotal) {\n if (!isNaN(qtyTotal)) {\n let minicartContainerEl = document.querySelector('[data-minicart-component=\"container\"]'),\n minicartTriggerDescription = (qtyTotal === 1 ? window.SFRA.Resources.cartCountLabel : window.SFRA.Resources.cartCountLabelPlural).format(qtyTotal);\n\n //Update minicart trigger's labels\n callbackOnElements('[data-minicart-component=\"qty\"]', function(currentEl) {\n if (currentEl.hasAttribute('data-qty-label-single') && qtyTotal === 1) {\n currentEl.textContent = currentEl.getAttribute('data-qty-label-single').format(qtyTotal);\n } else if (currentEl.hasAttribute('data-qty-label')) {\n currentEl.textContent = currentEl.getAttribute('data-qty-label').format(qtyTotal);\n } else {\n currentEl.textContent = qtyTotal;\n }\n });\n\n if (minicartTrigger) {\n minicartTrigger.setAttribute('aria-label', minicartTriggerDescription);\n minicartTrigger.setAttribute('title', minicartTriggerDescription);\n }\n\n if (qtyTotal > 0) {\n minicartContainerEl.classList.add('set--has-items');\n } else {\n minicartContainerEl.classList.remove('set--has-items');\n }\n }\n}\n\n/**\n * Opens minicart.\n * @return {[type]} [description]\n */\nexport function openMinicart() {\n if (minicartTrigger && minicartTrigger.toggle) {\n minicartTrigger.toggle.set();\n if ($('.search-results').length > 0) {\n $('.strap-bar__dailog').removeClass('opacity');\n $('.product-tile').removeClass('index strap-view-active');\n $('.window-overlay').removeClass('strap-overlay');\n $('.search-results__toolbar').removeClass('index');\n document.body.classList.remove('strap-dialog-overlay');\n }\n\n //***If using a transform property, uncomment these lines:***\n //Wait until full navigation is visible before opening minicart.\n //This prevents some odd animations from the minicart transition-in.\n // if (!headerEl.classList.contains('fixit--scrolled') || headerEl.classList.contains('fixit--scroll-up')) {\n // minicartTrigger.toggle.set();\n // } else {\n // headerEl.addEventListener(whichTransition(), function waitForHeaderMotion(evt) {\n // if (evt.propertyName === 'margin-top') {\n // minicartTrigger.toggle.set();\n\n // this.removeEventListener(whichTransition(), waitForHeaderMotion);\n // }\n // });\n\n // publishEvent('fixit', 'updateScrollDirection', headerEl, {scrollDirection: 'up'});\n // }\n }\n}\n\n/**\n * I think this closes minicart?\n * @return {[type]} [description]\n */\nexport function closeMinicart() {\n if (minicartTrigger && minicartTrigger.toggle) {\n minicartTrigger.toggle.unset();\n }\n}\n\nexport const init = {\n\n setupMiniCart: function() {\n minicartTrigger = document.querySelector('[data-minicart-component=\"trigger\"]');\n minicartDropdown = document.querySelector('[data-minicart-component=\"overlay\"]');\n if (minicartTrigger && minicartTrigger.toggle) {\n minicartTrigger.toggle.beforeSet = _handleMinicartLoad;\n minicartTrigger.toggle.afterUnset = function() {\n clearAllBodyScrollLocks();\n unsetOverlay({trigger: minicartTrigger, includeHeader: true});\n $('body').trigger('miniCart:afterUnLoad');\n };\n }\n }\n};\n","'use strict';\n\nimport {createElWithAttrs} from '@borngroup/born-utilities';\n\nlet loaderEl,\n loaderIndicator,\n loaderGroupFace,\n loaderGroupEyes,\n loaderClip,\n loaderClipDefs,\n loaderClipPath,\n clipPathValue;\n\n// element level spinner:\n$.fn.spinner = function() {\n let element = this,\n Fn = function() {\n this.start = showLoader.bind(this, element);\n this.stop = hideLoader;\n };\n\n return new Fn();\n};\n\n// page-level spinner:\n$.spinner = function() {\n let Fn = function() {\n this.start = showLoader;\n this.stop = hideLoader;\n };\n\n return new Fn();\n};\n\n/**\n * @function\n * @description Shows an AJAX-loader on top of a given containerEl\n * @param {Element} containerEl The Element on top of which the AJAX-Loader will be shown\n */\nexport function showLoader(containerEl, setAlt, message) {\n let matchedContainerEl = (typeof containerEl === 'string' ? document.querySelector(containerEl) : containerEl) || false,\n targetEl = matchedContainerEl instanceof HTMLElement ? matchedContainerEl : document.body;\n\n loaderEl = loaderEl || document.querySelector('.loader');\n\n //Render a loading SVG.\n //Animation is controlled through CSS.\n //This prevents having to wait for the loader to render before displaying it.\n if (!loaderEl) {\n clipPathValue = 'M57.89,40.39l-7.18-5,3.71-6.73h0L59.74,19l.93,4.89Zm-6.1,8.74L40.52,39.45,50,36.06l7.55,5.31ZM32.32,70c-5.08-.21-7.21-2.8-7.88-3.88l7.83-2.74,7.81,2.73C37.29,69.93,32.35,70,32.32,70ZM3.92,23.86l.93-4.92,5.33,9.67h0l3.72,6.73-7.2,5ZM1.09,4.65a.43.43,0,0,0,0-.12,3,3,0,0,1,.54-1.08C5.15,1.07,13.33,6.76,16.85,9.67l-12,7.1C.09,7.14,1.09,4.66,1.09,4.65Zm15.13.11L17,8.47C14.75,6.71,9.68,3,5.44,2.07c4.09,0,9.62,2.2,10.78,2.69ZM34.05,1c.09,0,5.51,0,13.27,3.67L42.55,31,32.8,28V1c.42,0,.83,0,1.25,0ZM59.23,2.08C55,3,49.8,6.79,47.64,8.52l.68-3.74C49.4,4.32,55.09,2,59.23,2.08ZM53.65,28l-10.07,3,3.7-20.39,12,7.14ZM21.6,32l2.53,6.39L14.9,35.09l-3.26-5.91Zm-.26-1.12L11,28,5.29,17.67l12.06-7.14ZM31.8,28l-9.44,3L17.23,4.7A49.12,49.12,0,0,1,31.8,1.07Zm1,8.53V29.05l9.46,2.88-3,6.72Zm-7.3,3.09,6.8-2.2L39,39.63V53.41H25.5Zm6.3-3.09-6.51,2.1-2.66-6.71,9.17-2.88Zm.49,22.3-5.81-4.43H38.07ZM7.05,41.35l7.57-5.29L24,39.44,12.79,49.11ZM13.25,50,24.5,40.35V53.61L15,58.71ZM23.8,65.28l-8.25-5.75,9.4-5,6.85,5.22v2.77Zm17,0-8-2.79V59.72l6.79-5.22,9.45,5Zm8.85-6.58L40,53.61V40.35l11.29,9.71Zm.08-23.62L40.48,38.4,43.31,32,53,29.19Zm10-18.32L47.82,9.67C51.3,6.76,59.43,1.1,62.92,3.46a3,3,0,0,1,.53,1.07l0,.1s1,2.51-3.73,12.14Zm.74.79c4.9-9.87,4.14-12.8,3.9-13.33a3.72,3.72,0,0,0-.69-1.36.22.22,0,0,0-.05-.08,3.92,3.92,0,0,0-1.41-1.11C58-.32,49.44,3.21,47.94,3.85,39.82,0,34.3,0,34.05,0,33.51,0,33,0,32.42,0L32.3,0a.58.58,0,0,0-.19,0A48.54,48.54,0,0,0,16.66,3.86C15.18,3.22,6.56-.32,2.34,1.68A4.16,4.16,0,0,0,.92,2.79l0,0a3.86,3.86,0,0,0-.71,1.4c-.24.53-1,3.46,3.9,13.32L2.92,23.76a.49.49,0,0,0,0,.17L5.84,41.31h0a.39.39,0,0,0,.08.2h0L12.24,50l1.87,9.53a.15.15,0,0,0,0,.07.64.64,0,0,0,0,.07h0a.43.43,0,0,0,.14.16l9,6.29c.39.79,2.58,4.56,9,4.83.24,0,5.94,0,8.94-4.81l9-6.31a.54.54,0,0,0,.14-.16h0a.1.1,0,0,0,0-.07.21.21,0,0,0,0-.07L52.35,50l6.31-8.51a.85.85,0,0,0,.09-.22l2.92-17.38a.49.49,0,0,0,0-.17Z'\n\n loaderEl = createElWithAttrs(false, {class: 'loader face-loader-wrapper'});\n loaderIndicator = createElWithAttrs(loaderEl, {'class': 'loader-indicator'}, {tagName: 'svg', nameSpace: 'svg'});\n loaderGroupFace = createElWithAttrs(loaderIndicator, {'class': 'face'}, {tagName: 'g', nameSpace: 'svg'});\n loaderGroupEyes = createElWithAttrs(loaderIndicator, {'class': 'eyes'}, {tagName: 'g', nameSpace: 'svg'});\n loaderClip = createElWithAttrs(loaderEl, {'class': 'hide'}, {tagName: 'svg', nameSpace: 'svg'});\n loaderClipDefs = createElWithAttrs(loaderClip, {}, {tagName: 'defs', nameSpace: 'svg'});\n loaderClipPath = createElWithAttrs(loaderClipDefs, {id: 'clipping-face'}, {tagName: 'clipPath', nameSpace: 'svg'});\n\n //Manage the look and feel of your loader here.\n createElWithAttrs(\n loaderClipPath, {\n d: clipPathValue\n },\n {tagName: 'path', nameSpace: 'svg'}\n );\n createElWithAttrs(\n loaderEl, {\n class: 'face-loader face-loader--reverse'\n },\n );\n createElWithAttrs(\n loaderGroupEyes, {\n id: 'eye-sx',\n points: '14.9 35.09 11.64 29.18 21.6 32.03 24.13 38.42 14.9 35.09'\n },\n {tagName: 'polygon', nameSpace: 'svg'}\n );\n createElWithAttrs(\n loaderGroupEyes, {\n id: 'eye-dx',\n points: '40.48 38.4 43.31 32.03 52.96 29.19 49.71 35.09 40.48 38.4'\n },\n {tagName: 'polygon', nameSpace: 'svg'}\n );\n createElWithAttrs(\n loaderGroupFace,\n {\n class: 'loader-indicator__path',\n d: clipPathValue\n },\n {tagName: 'path', nameSpace: 'svg'}\n );\n }\n\n if (message) {\n createElWithAttrs(loaderEl, {class: 'loader-message'}, 'p', message);\n } else {\n //If loaderEl already exists, and it has a message but the new Lodader invocation has none,\n //then delete the message element to prevent displaying the previeous message.\n let messageEl = loaderEl.querySelector('.loader-message');\n\n if (messageEl) {\n loaderEl.removeChild(messageEl);\n }\n }\n\n if (setAlt) {\n loaderEl.classList.add('set--alt');\n } else {\n loaderEl.classList.remove('set--alt');\n }\n\n //loader element is sometimes moved around the DOM,\n //this toggles the set--fixed class when no containerEl is provided.\n if (!containerEl) {\n loaderEl.classList.add('set--fixed');\n } else {\n loaderEl.classList.remove('set--fixed');\n }\n\n targetEl.appendChild(loaderEl);\n loaderEl.classList.add('set--visible');\n\n return loaderEl;\n}\n\n/**\n * @function\n * @description Hides an AJAX-loader\n */\nexport function hideLoader() {\n if (loaderEl) {\n loaderEl.classList.remove('set--visible');\n }\n}\n","'use strict';\n\n/**\n * Simple helper method to update a \"puck\" element to match a targetEl's left-position and width.\n */\nexport function updatePuck(targetEl, cancelTransitions) {\n let puckContainer = targetEl ? (targetEl.closest('[data-puck-component=\"container\"]') || targetEl.parentNode) : null,\n puckEl = puckContainer ? puckContainer.querySelector('[data-puck-component=\"puck\"]') : null;\n\n if (puckEl) {\n let puckContainerPosX = puckContainer.getBoundingClientRect().left,\n targetElRect = targetEl.getBoundingClientRect(),\n targetElComputed = window.getComputedStyle(targetEl),\n targetElPaddingLeft = parseFloat(targetElComputed['padding-left']),\n targetElPaddingRight = parseFloat(targetElComputed['padding-right']),\n newPosX = Math.abs(puckContainerPosX - targetElRect.left - targetElPaddingLeft);\n\n //Disable animations when `cancelTransitions` is present so that the puck\n //can display the correct styles on module or page load.\n if (cancelTransitions) {\n puckEl.classList.add('set--cancel-transitions');\n } else {\n puckEl.classList.remove('set--cancel-transitions');\n }\n\n puckEl.style.transform = `translateX(${newPosX}px)`;\n puckEl.style.width = `${targetElRect.width - targetElPaddingLeft - targetElPaddingRight}px`;\n }\n}\n","'use strict';\n\nimport debounce from 'lodash/debounce';\nimport * as progress from './progress';\nimport {initModules} from '../helpers/utilities';\nimport {appendParamsToURL, appendParamToURL} from '../helpers/urlUtilities';\nimport {setOverlay, unsetOverlay, allowScrollableAreas, addEventListenerList} from '../helpers/utilities';\nimport {disableBodyScroll, enableBodyScroll} from 'body-scroll-lock';\nimport {callbackOnElements} from '@borngroup/born-utilities';\nimport modules from '../helpers/modules';\nimport {plpColorStrap, resetProductAnchors} from '../search/index';\n\nconst\n SUGGESTIONS_URL_EL = document.querySelector('[data-suggestions-url]'),\n ENDPOINT = SUGGESTIONS_URL_EL ? SUGGESTIONS_URL_EL.getAttribute('data-suggestions-url') : '',\n MIN_CHARS = 3;\n\n/**\n * Retrieves the closest search container, or the currently available one.\n */\nfunction getSearchContainer(scope) {\n let selector = '[data-search-component=\"container\"]';\n\n return scope ? scope.closest(selector) : document.querySelector(selector);\n}\n\n/**\n * Retrieves Suggestions element relative to scope\n *\n * @param {Object} scope - Search input field DOM element\n * @return {JQuery} - [data-search-component=\"suggestions-container\"] element\n */\nfunction getSuggestionsContainer(scope, emptyContainer) {\n let searchContainer = getSearchContainer(scope),\n suggestionsContainer = searchContainer ? searchContainer.querySelector('[data-search-component=\"suggestions-container\"]') : false;\n\n if (emptyContainer && suggestionsContainer) {\n suggestionsContainer.textContent = '';\n\n searchContainer.classList.remove('set--has-results');\n }\n\n return suggestionsContainer;\n}\n\nfunction _handleSearchTracking(options) {\n if (options.formUrl) {\n let delayedPageView = options.delayPageView ? 1500 : 0;\n\n //Delay tracking instant search results to prevent logging \"false\" page views.\n debounce(function() {\n modules.tracking.init(null, {\n trackEvent: 'virtualPageview',\n trackObject: {\n asyncURL: window.SFRA.Urls.GTMVirtualView,\n reqPath: appendParamsToURL(window.SFRA.Urls.searchShow, {kwCAR: options.searchTerm, category: options.searchCategory}),\n qString: options.searchTerm,\n asyncParams: {\n pageTemplate: 'Instantsearchpages'\n }\n }\n });\n }, delayedPageView)();\n resetProductAnchors();\n }\n\n modules.tracking.init(null, {\n trackEvent: 'search',\n trackObject: {\n searchTerm: options.searchTerm,\n searchCategory: options.searchCategory || 'search'\n }\n });\n}\n\n/**\n * Process Ajax response for SearchServices-GetSuggestions\n *\n * @param {Object|string} response - Empty object literal if null response or string with rendered\n * suggestions template contents\n */\nfunction processResponse(response, formUrl, searchTerm) {\n let suggestionsContainer = getSuggestionsContainer(this),\n searchContainer = getSearchContainer(this);\n\n if (typeof response !== 'object') {\n suggestionsContainer.innerHTML = response;\n initModules(suggestionsContainer);\n\n searchContainer.classList.add('set--has-results');\n suggestionsContainer.classList.remove('set--invisible');\n\n _handleSearchTracking({formUrl, searchTerm, searchCategory: 'instantSearch', delayPageView: true});\n } else {\n suggestionsContainer.classList.add('set--invisible');\n }\n\n progress.hideLoader();\n}\n\n/**\n * Retrieve suggestions\n *\n * @param {Object} scope - Search field DOM element\n */\nfunction getSuggestions() {\n let searchTerm = this.form['q'].value;\n\n if (searchTerm.length >= MIN_CHARS) {\n let formUrl = appendParamToURL(ENDPOINT, 'q', searchTerm);\n\n progress.showLoader(getSuggestionsContainer(this));\n\n if (this.form['cgid'] && this.form['cgid'].checked) {\n formUrl = appendParamToURL(formUrl, 'cgid', this.form['cgid'].value);\n }\n\n $.ajax({\n context: this,\n url: formUrl,\n method: 'GET',\n success: (response) => processResponse(response, formUrl, searchTerm),\n });\n } else {\n getSuggestionsContainer(this, true);\n }\n}\n\n/**\n * Prevents submitting an empty search from the searchbar.\n * @return {[type]} [description]\n */\nfunction preventEmptySearch() {\n addEventListenerList('[data-search-component=\"form\"]', 'submit', function(evt) {\n let currentInput = this.querySelector('[data-search-component=\"query-input\"]');\n\n if (!currentInput.value.trim()) {\n evt.preventDefault();\n\n return false;\n } else {\n _handleSearchTracking({searchTerm: currentInput.value});\n }\n });\n}\n\nfunction setupSearchTrigger() {\n callbackOnElements('[data-search-component=\"trigger\"]', function(currentTrigger) {\n if (currentTrigger && currentTrigger.toggle) {\n currentTrigger.toggle.afterSet = function() {\n let queryInputEl = currentTrigger.toggle.targetEl.querySelector('[data-search-component=\"query-input\"]');\n\n disableBodyScroll(currentTrigger.toggle.targetEl, {allowTouchMove: allowScrollableAreas});\n\n setOverlay({trigger: 'searchbar'});\n\n getSuggestions.call(queryInputEl);\n };\n\n currentTrigger.toggle.afterUnset = function() {\n enableBodyScroll(currentTrigger.toggle.targetEl);\n\n unsetOverlay({trigger: 'searchbar'});\n };\n }\n });\n plpColorStrap();\n}\n\n/**\n * Toggle search bar off when megamenu is opened.\n */\nexport function closeSearch() {\n let searchTrigger = document.querySelector('[data-search-component=\"trigger\"].toggle--active');\n\n if (searchTrigger && searchTrigger.toggle) {\n searchTrigger.toggle.unset();\n }\n}\n\nexport default function() {\n let searchInputs = document.querySelectorAll('[data-search-suggestions] [data-search-component*=\"input\"]'),\n /**\n * Use debounce to avoid making an Ajax call on every single key press by waiting a few\n * hundred milliseconds before making the request. Without debounce, the user sees the\n * browser blink with every key press.\n */\n debounceSuggestions = debounce(getSuggestions, 300);\n\n [].forEach.call(searchInputs, function(currentInput) {\n currentInput.addEventListener('input', debounceSuggestions);\n });\n\n preventEmptySearch();\n setupSearchTrigger();\n\n document.body.addEventListener('click', function(evt) {\n if (!evt.target.closest('[data-search-component=\"container\"]')) {\n getSuggestionsContainer(false, true);\n }\n });\n}\n","'use strict';\nimport * as progress from './progress';\nimport { initModules } from '../helpers/utilities';\nvar miniCartOpen = false;\nvar lastContainerClicked = null;\nvar lastVideoElement = null;\nvar videoPaused = false;\nvar cacheStorage = {};\nimport modules from '../helpers/modules';\n\n// open the product overlay\nfunction openOverlay(shopLookOverlay, overlayBackground, container) {\n if (shopLookOverlay && overlayBackground) {\n var overlayContent = shopLookOverlay.find('.shop-look-overlay-content');\n var overlayHeading = shopLookOverlay.find('.shop-look-overlay-heading');\n var containerID = container.attr('id');\n overlayHeading.html(container.attr('data-title'));\n shopLookOverlay.addClass('open');\n overlayBackground.addClass('open');\n $('body').css('overflow', 'hidden');\n if (miniCartOpen) {\n return;\n }\n if (containerID in cacheStorage) {\n overlayContent.html(cacheStorage[containerID]);\n initModules();\n return;\n }\n overlayContent.html('');\n progress.showLoader(shopLookOverlay.get(0));\n renderFeaturedProducts(overlayContent, container, containerID);\n }\n}\n\n// close the product overlay\nfunction closeOverlay(shopLookOverlay, overlayBackground) {\n if (shopLookOverlay && overlayBackground) {\n shopLookOverlay.removeClass('open');\n overlayBackground.removeClass('open');\n $('body').css('overflow', '');\n miniCartOpen = false;\n }\n}\n\nfunction toggleDeactive(container) {\n if (container.hasClass('active')) {\n container.removeClass('active');\n }\n}\n\nfunction renderFeaturedProducts(overlayContent, container, id) {\n if (!container || container.length === 0) {\n return;\n }\n var URL = container.attr('data-url');\n var isMobile = $(window).width() <= 480 ? true : false;\n\n $.ajax({\n url: URL,\n type: 'get',\n data: {\n isMobile: isMobile\n },\n success: function success(data) {\n cacheStorage[id] = data;\n overlayContent.html(data);\n initModules();\n progress.hideLoader();\n }\n })\n}\n\nfunction handleShopTheLookClick(videoElement, container, shopLookOverlay, overlayBackground) {\n //Pause video when shop the look button is clicked\n if (videoElement) {\n videoPaused = true;\n lastVideoElement = videoElement.get(0);\n videoElement.get(0).pause();\n }\n dataLayerPush(container);\n openOverlay(shopLookOverlay, overlayBackground, container);\n toggleDeactive(container);\n}\n\n// check if element is fully in viewport\nfunction isElementFullyInViewport(element) {\n const clientRect = element[0].getBoundingClientRect();\n return (\n clientRect.top >= 0 &&\n clientRect.left >= 0 &&\n clientRect.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&\n clientRect.right <= (window.innerWidth || document.documentElement.clientWidth)\n );\n}\n\nfunction onVisibilityChange(el, callback) {\n var old_visible;\n return function() {\n var visible = isElementFullyInViewport(el);\n if (visible != old_visible) {\n old_visible = visible;\n if (typeof callback == 'function') {\n callback();\n }\n }\n }\n}\n\nfunction dataLayerPush(container) {\n var dataLayerValue = container.attr('data-tracking-value') || '';\n if (dataLayerValue) {\n modules.tracking.init(null, {\n trackEvent: 'shop_the_look',\n trackObject: {\n shop_the_look_title: dataLayerValue\n }\n });\n }\n}\n\n// initialize shop the look feature\nfunction initializeShopTheLook() {\n var miniCartIconContainer = $('.minicart-icon-container');\n var shopLookOverlay = $('.shop-look-overlay');\n var overlayBackground = $('.shop-look-overlay-background');\n var shopTheLookOverlayCloseButton = shopLookOverlay ? shopLookOverlay.find('.shop-overlay-close-button') : null;\n var overlayOpened = false;\n if (miniCartIconContainer && miniCartIconContainer.length > 0) {\n miniCartIconContainer.each(function() {\n var container = $(this);\n var shopTheLookButton = container.find('.shop-look-overlay-text');\n var videoElement = container.prev() && container.prev().hasClass('video-asset') ? container.prev() : null;\n\n if (container && shopTheLookButton) {\n container.on('click', function(event) {\n lastContainerClicked = event.target\n overlayOpened = true;\n handleShopTheLookClick(videoElement, container, shopLookOverlay, overlayBackground);\n });\n shopTheLookButton.on('click', function(event) {\n // Pause video when shop the look button is clicked\n lastContainerClicked = event.target.parentElement.parentElement;\n overlayOpened = true;\n handleShopTheLookClick(videoElement, container, shopLookOverlay, overlayBackground);\n event.stopPropagation();\n });\n }\n\n // close overlay when mini cart is opened\n $('body').on('miniCart:beforeLoad', function() {\n closeOverlay(shopLookOverlay, overlayBackground);\n if (overlayOpened) {\n miniCartOpen = true;\n }\n });\n\n // open overlay when mini cart is closed\n $('body').on('miniCart:afterUnLoad', function() {\n if (overlayOpened) {\n overlayOpened = true;\n openOverlay(shopLookOverlay, overlayBackground, container);\n }\n });\n\n if ($(window).width() <= 480) {\n\n var handler = onVisibilityChange(container, function() {\n if (container.hasClass('active')) {\n setTimeout(function() {\n container.removeClass('active');\n }, 2000);\n } else {\n if (!container.hasClass('active')) {\n container.addClass('active');\n }\n setTimeout(function() {\n container.removeClass('active');\n }, 2000);\n }\n });\n\n $(window).on('DOMContentLoaded load resize scroll', handler);\n $(container).closest('.module-carousel').on('afterChange', handler);\n\n $('body').on('product:afterSelectSizeClicked', function() {\n $('.shop-look-overlay-product-grid > .slick-dots').css('visibility', 'hidden');\n shopTheLookOverlayCloseButton.hide();\n })\n\n $('body').on('product:afterQuickShopCloseButtonClicked', function() {\n $('.shop-look-overlay-product-grid > .slick-dots').css('visibility', 'visible');\n shopTheLookOverlayCloseButton.show();\n })\n }\n })\n }\n\n if (shopTheLookOverlayCloseButton) {\n shopTheLookOverlayCloseButton.on('click', function() {\n overlayOpened = false;\n closeOverlay(shopLookOverlay, overlayBackground);\n // Play video when shop the look overlay is closed\n if (videoPaused && lastVideoElement) {\n lastVideoElement.play();\n lastVideoElement = null;\n videoPaused = false;\n }\n\n // For mobile always expand shop the look button\n if ($(window).width() <= 480) {\n lastContainerClicked.classList.add('active');\n if (miniCartIconContainer.hasClass('active')) {\n miniCartIconContainer.removeClass('active');\n }\n }\n });\n }\n\n if (overlayBackground) {\n overlayBackground.on('click', function(event) {\n if (event.target === overlayBackground[0]) {\n overlayOpened = false;\n closeOverlay(shopLookOverlay, overlayBackground);\n }\n // Play video when shop the look overlay is closed\n if (videoPaused && lastVideoElement) {\n lastVideoElement.play();\n lastVideoElement = null;\n videoPaused = false;\n }\n });\n }\n}\n\nexport default initializeShopTheLook;\n","'use strict';\n\nimport 'es6-promise-promise';\n\nvar lines = 1;\nvar numOfAllowedLines = 1;\nlet valueHistory = [];\nlet currentValueIndex = -1;\n\nfunction saveValueToHistory(element) {\n valueHistory = valueHistory.slice(0, currentValueIndex + 1);\n valueHistory.push(element.value);\n currentValueIndex++;\n}\nfunction getKeyNum(e) {\n var keynum;\n if (window.event) {\n keynum = e.keyCode;\n } else if (e.which) {\n keynum = e.which;\n }\n return keynum;\n}\nvar limitLines = function(e) {\n numOfAllowedLines = window.SFRA.SitePreferences.giftMessageAllowedLinesCount || this.rows;\n var keynum = getKeyNum(e);\n if (e.ctrlKey && (e.key === 'x' || e.key === 'X') && this.value.length === 125) {\n e.preventDefault();\n let startInd = this.selectionStart;\n let endInd = this.selectionEnd;\n this.value = this.value.substring(0, startInd) + this.value.substring(endInd);\n this.selectionStart = this.selectionEnd = startInd;\n valueHistory.push(this.value);\n currentValueIndex++;\n }\n // Check if the total number of characters exceeds 125 characters\n if (this.value.length >= 125 && keynum !== 8 && keynum !== 13 && keynum !== 37 && keynum !== 38 && keynum !== 39 && keynum !== 40 && keynum !== 46) { // Allow backspace, keyup, keydown, enter and delete keys\n e.stopPropagation();\n e.preventDefault();\n } else if (keynum === 13) { // Enter key\n if (lines >= numOfAllowedLines) {\n e.stopPropagation();\n e.preventDefault();\n } else {\n lines++;\n }\n }\n}\nvar setNumberOfLines = function() {\n lines = getNumberOfLines(this.value);\n}\nfunction getPasteDataToElement(element, clipPasteData) {\n let start = element.selectionStart;\n let end = element.selectionEnd;\n let charCount = countBackSlashChars(element.value, 125, false);\n var size = 0,\n pastedData = '',\n cursorPos = 125;\n let newLnChrCount = countBackSlashChars(clipPasteData, 125, true);\n if (element.value.length == 0 && newLnChrCount == 0) {\n pastedData = clipPasteData.trim().substring(0, 125);\n cursorPos = pastedData.length;\n } else if (element.value.length == 0 && newLnChrCount > 0) {\n pastedData = clipPasteData.trim().substring(0, 125 + (newLnChrCount / 2));\n cursorPos = pastedData.length;\n } else if (element.value.length >= 1 && element.value.length <= 125) {\n if (start == 0 && end == element.value.length && start != end && charCount == 0 && newLnChrCount == 0) {\n pastedData = clipPasteData.trim().substring(0, 125);\n cursorPos = pastedData.length;\n } else if (start == 0 && end == element.value.length && start != end && charCount == 0 && newLnChrCount > 0) {\n pastedData = clipPasteData.length <= 125 ? clipPasteData : clipPasteData.trim().substring(0, 125 + (newLnChrCount / 2));\n cursorPos = pastedData.length;\n } else if (start == end && charCount == 0 && newLnChrCount == 0) {\n size = 125 - element.value.length;\n pastedData = element.value.substring(0, start) + clipPasteData.trim().substring(0, size) + element.value.substring(end);\n cursorPos = start + (clipPasteData.trim().length >= size ? size : clipPasteData.trim().length);\n } else if (start == end && charCount == 0 && newLnChrCount > 0) {\n let reqCharsCount = 125 - element.value.length;\n let clipNewLineCnt = countBackSlashChars(clipPasteData.substring(0, reqCharsCount), reqCharsCount, true);\n size = clipNewLineCnt == 0 ? reqCharsCount : reqCharsCount + (charCount / 2);\n pastedData = element.value.substring(0, start) + clipPasteData.trim().substring(0, size) + element.value.substring(end);\n cursorPos = start + (clipPasteData.trim().length >= size ? size : clipPasteData.trim().length);\n } else if (start == end && charCount > 0 && newLnChrCount == 0) {\n size = 125 - element.value.length;\n pastedData = element.value.substring(0, start) + clipPasteData.trim().substring(0, size) + element.value.substring(end);\n cursorPos = start + (clipPasteData.trim().length >= size ? size : clipPasteData.trim().length);\n } else if (start == end && charCount > 0 && newLnChrCount > 0) {\n let reqCharCount = charCount < numOfAllowedLines && (charCount + 1) == numOfAllowedLines ? 125 - element.value.length : 125 - element.value.length + (numOfAllowedLines - (charCount + 1));\n let clipNewLineCnt = countBackSlashChars(clipPasteData.substring(0, reqCharCount), reqCharCount, true);\n if (clipNewLineCnt == 0) {\n pastedData = element.value.substring(0, start) + clipPasteData.trim().substring(0, reqCharCount) + element.value.substring(end);\n cursorPos = start + (clipPasteData.trim().length >= reqCharCount ? reqCharCount : clipPasteData.trim().length);\n }\n if (pastedData == '' && (charCount + Math.ceil(clipNewLineCnt / 2)) < numOfAllowedLines) {\n pastedData = element.value.substring(0, start) + clipPasteData.trim().substring(0, (reqCharCount + Math.ceil(clipNewLineCnt / 2))) + element.value.substring(end)\n cursorPos = start + (reqCharCount + Math.ceil(clipNewLineCnt / 2))\n } else if (pastedData == '' && (charCount + Math.ceil(clipNewLineCnt / 2)) >= numOfAllowedLines) {\n pastedData = element.value.substring(0, start) + clipPasteData.trim().substring(0, clipPasteData.substring(0, reqCharCount).indexOf('\\r\\n')) + element.value.substring(end);\n cursorPos = start + clipPasteData.trim().indexOf('\\r\\n');\n }\n } else if (start != end && charCount == 0 && newLnChrCount == 0) {\n size = 125 - element.value.length + (end - start);\n pastedData = element.value.substring(0, start) + clipPasteData.trim().substring(0, size) + element.value.substring(end);\n cursorPos = start + (clipPasteData.trim().length >= size ? size : clipPasteData.trim().length);\n } else if (start != end && charCount == 0 && newLnChrCount > 0) {\n let reqCharsCount = 125 - element.value.length + (end - start);\n let clipNewLineCnt = countBackSlashChars(clipPasteData.substring(0, reqCharsCount), reqCharsCount, true);\n size = clipNewLineCnt == 0 ? reqCharsCount : reqCharsCount + Math.ceil(charCount / 2);\n pastedData = element.value.substring(0, start) + clipPasteData.trim().substring(0, size) + element.value.substring(end);\n cursorPos = start + (clipPasteData.trim().length >= size ? size : clipPasteData.trim().length);\n } else if (start != end && charCount > 0 && newLnChrCount == 0) {\n size = 125 - element.value.length + (end - start);\n pastedData = element.value.substring(0, start) + clipPasteData.trim().substring(0, size) + element.value.substring(end);\n cursorPos = start + (clipPasteData.trim().length >= size ? size : clipPasteData.trim().length);\n } else if (start != end && charCount > 0 && newLnChrCount > 0) {\n let newLineCntSelectTxt = countBackSlashChars(element.value.substring(start, end));\n let existLineCount = charCount - newLineCntSelectTxt;\n let reqCharCount = existLineCount < numOfAllowedLines && (existLineCount + 1) == numOfAllowedLines ? 125 - element.value.length + (end - start) : 125 - element.value.length + (end - start) + (numOfAllowedLines - (existLineCount + 1));\n let clipNewLineCnt = countBackSlashChars(clipPasteData.substring(0, reqCharCount), reqCharCount, true);\n\n if (clipNewLineCnt == 0 ) {\n pastedData = element.value.substring(0, start) + clipPasteData.trim().substring(0, reqCharCount) + element.value.substring(end);\n cursorPos = start + (clipPasteData.trim().length >= reqCharCount ? reqCharCount : clipPasteData.trim().length);\n } else if ((existLineCount + Math.ceil(clipNewLineCnt / 2)) < numOfAllowedLines) {\n size = reqCharCount + Math.ceil(clipNewLineCnt / 2);\n pastedData = element.value.substring(0, start) + clipPasteData.trim().substring(0, size) + element.value.substring(end);\n cursorPos = start + (clipPasteData.trim().length >= size ? size : clipPasteData.trim().length);\n } else if ((existLineCount + Math.ceil(clipNewLineCnt / 2)) >= numOfAllowedLines) {\n size = reqCharCount - clipNewLineCnt;\n pastedData = element.value.substring(0, start) + clipPasteData.trim().substring(0, size) + element.value.substring(end);\n cursorPos = start + (clipPasteData.trim().length >= size ? size : clipPasteData.trim().length);\n }\n }\n }\n pasteDataToElement(element, pastedData, cursorPos);\n}\nfunction countBackSlashChars(value, allowChars, flag) {\n let charCount = 0;\n let i = 1;\n for (let ch of value) {\n if (flag && (ch === '\\n' || ch === '\\r') && i <= allowChars) {\n charCount++;\n } else if (!flag && ch === '\\n' && i <= allowChars) {\n charCount++;\n }\n i++;\n }\n return charCount;\n}\nvar limitPasteData = function(e) {\n var clipboardData,\n clipPasteData = '';\n // Stop data actually being pasted into div\n e.stopPropagation();\n e.preventDefault();\n clipboardData = e.clipboardData || window.clipboardData;\n if (typeof clipboardData !== undefined) {\n clipPasteData = clipboardData.getData('Text');\n } else {\n navigator.clipboard.readText()\n .then(text => {\n clipPasteData = text;\n })\n .catch(err => {\n console.error('Failed to read clipboard contents: ', err);\n });\n }\n if (clipPasteData) {\n getPasteDataToElement(this, clipPasteData);\n }\n}\nfunction pasteDataToElement(element, pastedData, pasteEndIndex) {\n if (pastedData.length > 125) {\n pastedData = pastedData.substring(0, 125 + (parseInt(countBackSlashChars(pastedData, 125, true)) / 2));\n }\n var pastedLines = getNumberOfLines(pastedData);\n if (pastedLines <= numOfAllowedLines) {\n lines = pastedLines;\n element.value = pastedData;\n // Move the cursor to the end of the pasted data\n element.selectionStart = element.selectionEnd = pasteEndIndex;\n valueHistory.push(element.value);\n currentValueIndex++;\n } else if (pastedLines > numOfAllowedLines) {\n element.value = pastedData\n .split(/\\r\\n|\\r|\\n/)\n .slice(0, numOfAllowedLines)\n .join('\\n ');\n valueHistory.push(element.value);\n currentValueIndex++;\n }\n}\nfunction getNumberOfLines(str) {\n if (str) {\n return str.split(/\\r\\n|\\r|\\n/).length;\n }\n return 1;\n}\n\nexport function ristrictNumberOfLinesInGiftMessage() {\n var limitedElements = document.getElementsByClassName('personalisation__card-textarea');\n if (limitedElements) {\n Array.from(limitedElements).forEach(function(element) {\n // Save the initial value to the history\n saveValueToHistory(element);\n\n element.addEventListener('keydown', limitLines);\n element.addEventListener('keyup', setNumberOfLines);\n element.addEventListener('cut', setNumberOfLines);\n element.addEventListener('paste', limitPasteData);\n\n // Add event listener for Ctrl+A to select all text\n element.addEventListener('keydown', function(e) {\n if (e.ctrlKey && (e.key === 'a' || e.key === 'A')) {\n e.preventDefault();\n element.select();\n }\n });\n element.addEventListener('keydown', function(e) {\n let startInd = element.selectionStart;\n let endInd = element.selectionEnd;\n if (element && element.value) {\n if (startInd == 0 && element.value.length == endInd && e.ctrlKey && (e.key === 'v' || e.key === 'V')) {\n e.preventDefault();\n valueHistory.push(element.value);\n currentValueIndex++;\n navigator.clipboard.readText()\n .then(text => {\n pasteDataToElement(element, text, endInd);\n })\n .catch(err => {\n console.error('Failed to read clipboard contents: ', err);\n });\n } else if (startInd != endInd && (endInd - startInd) != 125 && element.value.length <= 125 && e.ctrlKey && (e.key === 'v' || e.key === 'V')) {\n e.preventDefault();\n navigator.clipboard.readText()\n .then(text => {\n getPasteDataToElement(element, text);\n })\n .catch(err => {\n console.error('Failed to read clipboard contents: ', err);\n });\n\n }\n }\n });\n // Add event listener for Ctrl+Z to undo\n element.addEventListener('keydown', function(e) {\n if (e.ctrlKey && (e.key === 'z' || e.key === 'Z')) {\n e.preventDefault();\n if (currentValueIndex > 0) {\n currentValueIndex--;\n element.value = valueHistory[currentValueIndex];\n }\n }\n });\n element.addEventListener('keydown', function(e) {\n if (e.ctrlKey && (e.key === 'y' || e.key === 'Y')) {\n e.preventDefault();\n if (currentValueIndex < valueHistory.length - 1) {\n currentValueIndex++;\n element.value = valueHistory[currentValueIndex];\n }\n }\n });\n element.addEventListener('keydown', function(e) {\n if (e.ctrlKey && (e.key === 'c' || e.key === 'C')) {\n navigator.clipboard.writeText(element.value.substring(element.selectionStart, element.selectionEnd));\n }\n });\n element.addEventListener('input', function() {\n saveValueToHistory(element);\n });\n });\n }\n}\n","'use strict';\n\n/**\n * Loads all matching images within a given `containerEl`.\n * lazyLoadType: The type of \"lazy load\" image to target:\n * \"ondemandload\": images will not load until manually called through a script.\n */\nexport function loadOnDemandImage(containerEl, lazyLoadType = 'ondemandload') {\n [].forEach.call(containerEl.querySelectorAll(`[data-image-component=\"${lazyLoadType}\"]:not(.lazyloaded)`), function(currentImage) {\n window.lazySizes.loader.unveil(currentImage);\n });\n}\n","/**\n * [Modules] Reusable methods shared across the site. Typically, methods defined here _should_ be used across several pages.\n * As opposed to utilities, these methods are ran on document ready if its query is available.\n */\n// Modules\nimport Toggle from '@borngroup/born-toggle';\nimport {breakpointRanges, initMethods} from './utilities';\nimport {callbackOnElements} from '@borngroup/born-utilities';\n\nlet modules = {\n toggles: {\n default: '[data-toggle]',\n init: function(query) {\n return new Toggle({\n triggers: query || this.default,\n breakpoints: breakpointRanges\n });\n }\n },\n carousels: {\n default: '[data-slick]',\n init: function(query) {\n return import(/* webpackChunkName: \"module-carousels\" */ '../modules/module.carousel').then(Carousel => {\n return new Carousel.default(query || this.default);\n });\n }\n },\n fixitTrigger: {\n default: '[data-fixit-trigger]',\n init: function(query, settings = {}) {\n return import(/* webpackChunkName: \"module-fixit-trigger\" */ '../modules/module.fixit-trigger').then(FixitTrigger => {\n return new FixitTrigger.default({elements: query || this.default, settings: settings});\n });\n }\n },\n modalTrigger: {\n default: '[data-modal-trigger]',\n init: function(query) {\n return import(/* webpackChunkName: \"module-modal-trigger\" */ '../modules/module.modal-trigger').then(ModalTrigger => {\n return new ModalTrigger.default({elements: query || this.default});\n });\n }\n },\n quickView: {\n default: '[data-quickview-trigger]',\n init: function() {\n return import(/* webpackChunkName: \"module-quick-view\" */ '../modules/module.quick-view').then(QuickView => {\n return initMethods(QuickView.init);\n });\n }\n },\n quickAdd: {\n default: '[data-quickadd-trigger]',\n init: function() {\n return import(/* webpackChunkName: \"module-quick-add\" */ '../modules/module.quick-add').then(QuickAdd => {\n return QuickAdd.init();\n });\n }\n },\n windowScrolls: {\n default: '[data-window-scroll]',\n init: function(query) {\n return import(/* webpackChunkName: \"module-window-scroll\" */ '../modules/module.window-scroll').then(WindowScroll => {\n return new WindowScroll.default(query || this.default);\n });\n }\n },\n wishlistTrigger: {\n default: '[data-wishlist-trigger]',\n init: function(query) {\n return import(/* webpackChunkName: \"module-wishlist-trigger\" */ '../modules/module.wishlist-trigger').then(WishlistTrigger => {\n return WishlistTrigger.init({elements: query || this.default});\n });\n }\n },\n saveForLaterTrigger: {\n default: '[data-saveforlater-trigger]',\n init: function(query) {\n if (window.SFRA.SitePreferences.enableSaveForLater) {\n return import(/* webpackChunkName: \"module-saveforlater-trigger\" */ '../modules/module.saveforlater-trigger').then(SaveForLaterTrigger => {\n return SaveForLaterTrigger.init({elements: query || this.default});\n });\n }\n }\n },\n productTile: {\n default: '[data-product-tile]',\n init: function(query) {\n return import(/* webpackChunkName: \"module-product-tile\" */ '../modules/module.product-tile').then(ProductTile => {\n return new ProductTile.default({elements: query || this.default});\n });\n }\n },\n productTilePackshots: {\n default: '[data-product-packshots]',\n init: function() {\n return import('../product/productPackshots').then(productTilePackshots => {\n return new productTilePackshots.productPackshotInit();\n });\n }\n },\n productImageGalleryItem: {\n default: '[data-product-component=\"gallery-item\"]',\n init: function() {\n return import('../product/productImageGalleryItem').then(productImageGalleryItem => {\n return new productImageGalleryItem.productImageGalleryItemInit();\n });\n }\n },\n productTileQuickShop: {\n default: '[data-product-quickshop]',\n init: function() {\n return import('../product/productQuickshop').then(productTileQuickShop => {\n return new productTileQuickShop.Init();\n });\n }\n },\n ajaxForm: {\n default: '[data-ajax-form]',\n init: function(query) {\n return import(/* webpackChunkName: \"module-ajax-form\" */ '../modules/module.ajax-form').then(AJAXForm => {\n return AJAXForm.init({elements: query || this.default});\n });\n }\n },\n recaptchaForm: {\n default: '[data-recaptcha-form]',\n init: function(query) {\n return import(/* webpackChunkName: \"module-recaptcha-form\" */ '../modules/module.recaptcha-form').then(RecaptchaForm => {\n return RecaptchaForm.init({elements: query || this.default});\n });\n }\n },\n videos: {\n default: '[data-video]',\n init: function(query) {\n return import(/* webpackChunkName: \"module-video\" */ '../modules/module.video').then(Video => {\n return new Video.default(query || this.default);\n });\n }\n },\n storeLocator: {\n default: '[data-locator]',\n init: function(query, options) {\n return import(/* webpackChunkName: \"module-store-locator\" */ '../modules/module.store-locator').then(StoreLocator => {\n return StoreLocator.init(query || this.default, options);\n });\n }\n },\n inputFormat: {\n default: '[data-input-format]',\n init: function(query) {\n return import(/* webpackChunkName: \"module-input-format\" */ '../modules/module.input-format').then(InputFormat => {\n return new InputFormat.default(query || this.default);\n });\n }\n },\n pageMotion: {\n default: '[data-page-motion]',\n init: function(query) {\n return import(/* webpackChunkName: \"module-page-motion\" */ '../modules/module.page-motion').then(PageMotion => {\n return new PageMotion.default({elements: query || this.default});\n });\n }\n },\n authTrigger: {\n default: '[data-auth-trigger]',\n init: function(query) {\n return import(/* webpackChunkName: \"module-auth\" */ '../modules/module.auth').then(Auth => {\n return Auth.init({elements: query || this.default});\n });\n }\n },\n addressVerification: {\n default: '[data-address-verification]',\n init: function(query) {\n if (window.SFRA.SitePreferences.addressVerificationEnabled) {\n return import(/* webpackChunkName: \"module-address-verification\" */ '../modules/module.address-verification').then(AddressVerification => {\n return AddressVerification.init({elements: query || this.default});\n });\n }\n }\n },\n addressSuggestion: {\n default: '[data-address-suggestion]',\n init: function(query) {\n return import(/* webpackChunkName: \"module-address-suggestion\" */ '../modules/module.address-suggestion').then(AddressSuggestion => {\n callbackOnElements(query || this.default, (el) => new AddressSuggestion.default(el));\n });\n }\n },\n addressAutocomplete: {\n default: '[data-address-autocomplete]',\n init: function(query) {\n if (window.SFRA.SitePreferences.addressAutocompleteEnabled) {\n return import(/* webpackChunkName: \"module-address-autocomplete\" */ '../modules/module.address-autocomplete').then(AddressAutofill => {\n return AddressAutofill.init({elements: query || this.default});\n });\n }\n }\n },\n floatingLabels: {\n default: '[data-floating-label]',\n init: function(query) {\n return import(/* webpackChunkName: \"module-floating-labels\" */ '../modules/module.floating-labels').then(FloatingLabels => {\n return new FloatingLabels.default(query || this.default);\n });\n }\n },\n tracking: {\n default: '[data-tracking]',\n init: function(query, options) {\n return import(/* webpackChunkName: \"module-tracking-layer\" */ '../modules/module.tracking-layer').then(TrackingLayer => {\n if (options) {\n let action = options.action || 'pushData';\n\n return TrackingLayer.default[action](options.trackEvent, options.trackObject);\n } else {\n return new TrackingLayer.default({elements: query || this.default});\n }\n });\n }\n },\n passwordShow: {\n default: '[data-password-show=\"trigger\"]',\n init: function(query) {\n return import(/* webpackChunkName: \"module-password-show\" */ '../modules/module.password-show').then(PasswordShow => {\n return PasswordShow.init({elements: query || this.default});\n });\n }\n },\n intlPhone: {\n default: '[data-intl-phone]',\n init: function(query) {\n return import(/* webpackChunkName: \"module-intl-phone\" */ '../modules/module.intl-phone').then(IntlPhone => {\n return IntlPhone.init({elements: query || this.default});\n });\n }\n },\n giftMsgFont: {\n default: '[data-gift-msg-font]',\n init: function(query) {\n return import(/* webpackChunkName: \"module-giftmsg-font\" */ '../modules/module.giftmsg-font').then(GiftMsgFont => {\n return new GiftMsgFont.default(query || this.default);\n });\n }\n },\n customSelect: {\n default: '[data-custom-select]',\n init: function(query) {\n return import(/* webpackChunkName: \"module-custom-select\" */ '../modules/module.custom-select').then(CustomSelect => {\n return CustomSelect.init({elements: query || this.default});\n });\n }\n },\n countrySelector: {\n default: '[data-select-country]',\n init: function() {\n return import(/* webpackChunkName: \"module-country-selector\" */ '../modules/module.country-selector').then(CountrySelector => {\n return initMethods(CountrySelector.init);\n });\n }\n },\n formfieldBinding: {\n default: '[data-formfield-binding]',\n init: function(query) {\n return import(/* webpackChunkName: \"module-formfield-binding\" */ '../modules/module.formfield-binding').then(FormfieldBinding => {\n callbackOnElements(query || this.default, (el) => new FormfieldBinding.default(el));\n });\n }\n },\n inputAutoApply: {\n default: '[data-input-auto-apply]',\n init: function(query) {\n return import(/* webpackChunkName: \"module.input-auto-apply\" */ '../modules/module.input-auto-apply').then(InputAutoApply => {\n callbackOnElements(query || this.default, (el) => new InputAutoApply.default(el));\n });\n }\n },\n navTabs: {\n default: '[data-navTabs]',\n init: function() {\n return import('../components/navTabs').then(navTabs => {\n return new navTabs.navTabsInit();\n });\n }\n },\n personalisationModalHelper: {\n default: '[data-personalisation-modal-helper]',\n init: function() {\n return import(/* webpackChunkName: \"module.personalisation\" */'../modules/module.personalisation').then(personalisationModal => {\n return new personalisationModal.default();\n });\n }\n },\n cmsSearch: {\n default: '[data-cms-search]',\n init: function() {\n return import(/* webpackChunkName: \"module.cmsSearch\" */'../components/cmsSearch').then(cmsSearch => {\n return new cmsSearch.cmsSearchInit();\n });\n }\n },\n langEnablement: {\n default: '[data-turkish-enablement]',\n init: function() {\n return import(/* webpackChunkName: \"module.langEnablement\" */'../components/langEnablement').then(langEnablement => {\n return new langEnablement.langEnablementInit();\n });\n }\n }\n};\n\nexport default modules;\n","/**\n * Add page/section specific features here.\n *\n * To load a feature on more than one page,\n * separate each class name with a comma and a space\n * @type {Object}\n */\n\nimport {initMethods} from './utilities';\n\nexport default {\n styleguide: {\n default: '[data-action=\"Styleguide-Show\"]',\n init: function() {\n return import(/* webpackChunkName: \"page-styleguide\" */ '../styleguide').then(function(Styleguide) {\n return Styleguide.default();\n });\n }\n },\n search: {\n default: '[data-action=\"Search-Show\"]',\n init: function() {\n return import(/* webpackChunkName: \"page-search\" */ '../search').then(function(Search) {\n return initMethods(Search.default);\n });\n }\n },\n product: {\n default: '[data-action=\"Product-Show\"]',\n init: function() {\n return import(/* webpackChunkName: \"page-product\" */ '../product').then(function(Product) {\n return initMethods(Product.default);\n });\n }\n },\n cart: {\n default: '[data-action=\"Cart-Show\"]',\n init: function() {\n return import(/* webpackChunkName: \"page-cart\" */ '../cart').then(function(Cart) {\n return initMethods(Cart.default);\n });\n }\n },\n account: {\n default: '[data-action=\"Address-EditAddress\"], [data-action=\"Address-AddAddress\"]',\n init: function() {\n return import(/* webpackChunkName: \"page-address\" */ '../account').then(function(Account) {\n return initMethods(Account.default);\n });\n }\n },\n checkout: {\n default: '[data-action=\"Checkout-Begin\"]',\n init: function() {\n return import(/* webpackChunkName: \"page-checkout\" */ '../checkout').then(function(Checkout) {\n return initMethods(Checkout.default);\n });\n }\n },\n wishlist: {\n default: '[data-action=\"Wishlist-Show\"], [data-action=\"Wishlist-ShowOthers\"], [data-action=\"Account-Show\"]',\n init: function() {\n return import(/* webpackChunkName: \"page-wishlist\" */ '../wishlist').then(function(Wishlist) {\n return initMethods(Wishlist.default);\n });\n }\n },\n orderHistory: {\n default: '[data-action=\"Order-History\"]',\n init: function() {\n return import(/* webpackChunkName: \"page-order-history\" */ '../order/history').then(function(OrderHistory) {\n return initMethods(OrderHistory.default);\n });\n }\n },\n pageDesigner: {\n default: '[data-page-designer=\"Edit-Mode\"]',\n init: function() {\n return import(/* webpackChunkName: \"page-page-designer-edit\" */ '../pageDesigner').then(function(PageDesigner) {\n return initMethods(PageDesigner.default);\n });\n }\n },\n storesAssignmentPage: {\n default: '[data-action=\"Stores-Assignment\"]',\n init: function() {\n return import(/* webpackChunkName: \"page-stores-assignment\" */ '../account/storesAssignment').then(function(StoresAssignment) {\n return initMethods(StoresAssignment.default);\n });\n }\n },\n contact: {\n default: '[data-action=\"ContactUs-Landing\"]',\n init: function() {\n return import(/* webpackChunkName: \"page-contact\" */ '../contact').then(function(Contact) {\n return Contact.default();\n });\n }\n },\n emailUnsubscribe: {\n default: '[data-action=\"EmailSubscribe-UnsubscriptionPage\"]',\n init: function() {\n return import(/* webpackChunkName: \"page-email-unsubscription\" */ '../email').then(function(EmailUnsubscribe) {\n return initMethods(EmailUnsubscribe.default);\n });\n }\n },\n orderDetails: {\n default: '[data-action=\"Order-Details\"], [data-action=\"Order-Track\"]',\n init: function() {\n return import(/* webpackChunkName: \"page-order-details\" */ '../order/details').then(function(OrderDetails) {\n return initMethods(OrderDetails.default);\n });\n }\n },\n paymentLink: {\n default: '[data-action=\"PaymentLinkCheckout-Payment\"]',\n init: function() {\n return import(/* webpackChunkName: \"page-PaymentLinkCheckout\" */ '../PaymentLinkCheckout').then(function(PaymentLink) {\n return initMethods(PaymentLink.default);\n });\n }\n },\n profileEditCAPI: {\n default: '[data-action=\"Account-EditProfile\"]',\n init: function() {\n return import(/* webpackChunkName: \"profile-edit-capi\" */ '../account/profileEditCAPI').then(function(profileEditCAPI) {\n return profileEditCAPI.default();\n });\n }\n }\n};\n","/**\n * Polyfills for missing functionality. Mostly IE.\n */\n\nconst\n isIE10 = navigator.appVersion.indexOf('MSIE 10') !== -1,\n isHighContrastMode = window.matchMedia('(-ms-high-contrast: active)').matches;\n\nexport function IEImageSupport() {\n /*\n * Selects IE10 and IE11\n */\n if ((!!window.MSInputMethodContext && !!document.documentMode) || isIE10) {\n /*\n * IE11 does not support picture at all so picturefill to the rescue.\n */\n import(/* webpackChunkName: \"picturefill\" */ 'picturefill').then((picturefill) => {\n picturefill.default()\n }).catch(err => {\n console.error('Error during loading module: ' + err)\n });\n\n //Avoid setting this polyfill on high-contrast mode, as it turns images into background-images, which do not render in Windows High Contrast Mode.\n //You do get some warped images here and there, but that's better than no images.\n if (!isHighContrastMode) {\n /*\n * There is also a postcss plugin to add the font-family declarations\n * but at the time of writing it duplicates the values twice and hasn't\n * been updated in years.\n */\n import(/* webpackChunkName: \"polyfill-object-fit-images\" */ 'object-fit-images').then((objectFitImages) => {\n let allImages = document.querySelectorAll('img'),\n readyImages = document.querySelectorAll('img:not([data-image-component=\"ondemandload\"])');\n\n objectFitImages.default(allImages, {watchMQ: true});\n\n //Only loop through images that aren't set to load on demand.\n [].forEach.call(readyImages, currentImage => currentImage.classList.add('lazyloaded'));\n });\n }\n }\n}\n\n/**\n * Provides a `format` method on String types.\n * This can be used to replace literals within a string, for example:\n * A string: \"This is a {0} test, {1}.\".format(\"good\", \"happy\");\n * Will output: \"This is a good test, happy.\"\n */\nexport function stringFormat() {\n if (!String.prototype.format) {\n String.prototype.format = function() {\n let string = this;\n\n for (let i = 0; i < arguments.length; i++) {\n string = string.replace(new RegExp('\\\\{' + i + '\\\\}', 'gm'), arguments[i]);\n }\n\n return string;\n };\n }\n}\n\n//Detecs if `:placeholder-shown` is supported, cause otherwise attempting to access it creates a silent error on some browsers.\nexport function supportsPlaceholderShown() {\n window.SFRA = window.SFRA || {};\n\n try {\n document.body.matches(':placeholder-shown');\n\n window.SFRA.supportsPlaceholderShown = true;\n } catch (e) {\n window.SFRA.supportsPlaceholderShown = false;\n }\n}\n\nexport default function() {\n IEImageSupport();\n stringFormat();\n supportsPlaceholderShown();\n}\n","'use strict';\n\n/**\n * @function\n * @description appends the parameter with the given name and value to the given url and returns the changed url\n * @param {String} url the url to which the parameter will be added\n * @param {String} name the name of the parameter\n * @param {String} value the value of the parameter\n */\nexport function appendParamToURL(url, name, value, replaceParam) {\n url = replaceParam ? removeParamFromURL(url, name) : url;\n\n // quit if the param already exists or if value is empty\n if ((!name || !value) || url.indexOf(name + '=') !== -1 || typeof value === 'undefined') {\n return url;\n }\n\n let separator = url.indexOf('?') !== -1 ? '&' : '?';\n\n return url + separator + name + '=' + encodeURIComponent(value);\n}\n\n/**\n * @function\n * @description remove the parameter and its value from the given url and returns the changed url\n * @param {String} url the url from which the parameter will be removed\n * @param {String} name the name of parameter that will be removed from url\n */\nexport function removeParamFromURL(url, name) {\n if (url.indexOf('?') === -1 || url.indexOf(name + '=') === -1) {\n return url;\n }\n\n let hash,\n params,\n domain = url.split('?')[0],\n paramUrl = url.split('?')[1],\n newParams = [];\n\n // if there is a hash at the end, store the hash\n if (paramUrl.indexOf('#') > -1) {\n hash = paramUrl.split('#')[1] || '';\n paramUrl = paramUrl.split('#')[0];\n }\n\n params = paramUrl.split('&');\n\n for (let i = 0; i < params.length; i++) {\n // put back param to newParams array if it is not the one to be removed\n if (params[i].split('=')[0] !== name) {\n newParams.push(params[i]);\n }\n }\n\n return domain + '?' + newParams.join('&') + (hash ? '#' + hash : '');\n}\n\n/**\n * @function\n * @description appends the parameters to the given url and returns the changed url\n * @param {String} url the url to which the parameters will be added\n * @param {Object} params\n */\nexport function appendParamsToURL(url, params, replaceParam) {\n let _url = url;\n\n for (let key in params) {\n _url = appendParamToURL(_url, key, params[key], replaceParam);\n }\n\n return _url;\n}\n\n/**\n * @function\n * @description\n * @param {String} url\n */\nexport function toAbsoluteUrl(url) {\n if (url.indexOf('http') !== 0 && url.charAt(0) !== '/') {\n url = '/' + url;\n }\n\n return url;\n}\n\n/**\n * @function\n * @description Extracts all parameters from a given query string into an object\n * @param {String} qs The query string from which the parameters will be extracted\n */\nexport function getQueryStringParams(qs, defaultValue = undefined) {\n if (!qs || qs.length === 0) {\n return {};\n }\n\n let params = {};\n\n // Use the String::replace method to iterate over each\n // name-value pair in the string.\n qs.replace(new RegExp('([^?=&]+)(=([^&]*))?', 'g'),\n function($0, $1, $2, $3) {\n //Ensure an empty parameter value is set to `undefined` and not processed using `decodeURIComponent()`.\n params[$1] = $3 ? decodeURIComponent($3) : defaultValue;\n }\n );\n\n return params;\n}\n\n/**\n * @function\n * @description Serializes a form to an object\n * @param {HTMLNodeEl} form The form which is being submitted.\n */\nexport function serializeObject(form) {\n let object = {};\n\n form.querySelectorAll('[name]').forEach(function(field) {\n object[field.name] = field.value;\n });\n\n return object;\n}\n\n/**\n * @function\n * @description Loads JS file dynamically from given url\n * @param {String} url The url from which JS file will be dynamically loaded.\n */\nexport function loadJsFile(url) {\n return $('').appendTo($('head')).attr({\n type: 'text/javascript',\n }).attr('src', url);\n}\n\nexport function updateQueryStringEl(queryStringParams) {\n let pageQueryStringEl = document.querySelector('[data-querystring]');\n\n if (pageQueryStringEl) {\n let newQueryString = appendParamsToURL('', queryStringParams);\n\n newQueryString = newQueryString.charAt(0) === '?' ? newQueryString.substring(1) : newQueryString;\n\n pageQueryStringEl.setAttribute('data-querystring', newQueryString);\n }\n}\n\nexport function updateHistoryState(targetURL, customPathName, method = 'replaceState', stateObject = undefined, stateTitle = '') {\n let baseURL = window.location.origin + (customPathName || window.location.pathname),\n queryStringParams = targetURL ? getQueryStringParams(targetURL) : {},\n newURL = targetURL ? appendParamsToURL(baseURL, queryStringParams) : baseURL;\n\n if (targetURL) {\n updateQueryStringEl(queryStringParams);\n }\n\n window.history[method](stateObject, stateTitle, newURL);\n}\n","'use strict';\n\nimport 'es6-promise-promise';\nimport {callbackOnElements, createElWithAttrs} from '@borngroup/born-utilities';\nimport modules from './modules';\nimport pages from './pages';\nimport * as progress from '../components/progress';\nimport {ristrictNumberOfLinesInGiftMessage} from '../helpers/giftMessageValidate';\n\nlet lastOverlayTrigger;\n\nexport const\n globalWrapper = document.querySelector('.page'),\n headerEl = document.querySelector('[data-header-component=\"header\"]'),\n headerContainerEl = document.querySelector('[data-header-component=\"header-container\"]'),\n //Change these if needed.\n //These should be always synced with your \"_variables.scss\" file.\n breakpoints = {\n unit: 1,\n xxsmall: 320,\n xsmall: 480,\n small: 767,\n medium: 1024,\n xmedium: 1240,\n large: 1440\n },\n breakpointRanges = {\n 'small': {max: breakpoints.small},\n 'small-up': {min: breakpoints.small + breakpoints.unit},\n 'medium-up': {min: breakpoints.medium + breakpoints.unit}\n };\n\n/**\n * Loops and initializes all methods from an object, by running their 'init' property.\n * @param {[Object]} obj [object literal with the methods to run]\n */\nexport function initMethods(obj, targetContainer) {\n var giftMsgTextAreaElement = document.querySelector('.personalisation__card-textarea');\n if (giftMsgTextAreaElement && window.SFRA.SitePreferences.enableGiftMessageLinesRestriction) {\n ristrictNumberOfLinesInGiftMessage();\n }\n for ( let key in obj ) {\n let currentProperty = obj[key];\n\n //If property is a function, run it immediately.\n if (typeof currentProperty === 'function') {\n currentProperty();\n } else {\n let query = currentProperty.default || key;\n\n if ((targetContainer || document).querySelector(query)) {\n currentProperty.init( query );\n }\n }\n }\n}\n\nexport function initModules(targetContainer) {\n initMethods(modules, targetContainer);\n}\n\nexport function initPages(targetContainer) {\n initMethods(pages, targetContainer);\n}\n\n/**\n * Publish an event at the specific target element scope\n * for other modules to subscribe.\n * The subscribe method can be a standard\n * .addEventListener('moduleName:eventName') method\n *\n * @param {String} moduleName\n * @param {String} eventName\n * @param {HTMLElement} target\n * @param {Object} detail object of arbitrary structure to pass to the event.\n */\nexport function publishEvent(moduleName, eventName, target, detail) {\n let event,\n params = { bubbles: true, cancelable: true, detail },\n eventString = moduleName && eventName ? `${moduleName}:${eventName}` : (moduleName || eventName);\n\n // IE >= 9, CustomEvent() constructor does not exist\n if (typeof window.CustomEvent !== 'function') {\n event = document.createEvent('CustomEvent');\n event.initCustomEvent(eventString, params.bubbles, params.cancelable, null);\n } else {\n event = new CustomEvent(eventString, params);\n }\n\n if (typeof target.dispatchEvent === 'function') {\n target.dispatchEvent(event);\n }\n}\n\n/**\n * Dispatches OOTB browser events.\n */\nexport function dispatchEvent(target, eventName) {\n let event;\n\n if (typeof window.Event === 'function') {\n event = new Event(eventName);\n } else {\n event = document.createEvent('Event');\n event.initEvent(eventName, true, true);\n }\n\n target.dispatchEvent(event);\n}\n\nfunction _getOverlayTarget(targetElement) {\n return targetElement && typeof targetElement === 'string' ? document.querySelector(targetElement) : (targetElement || globalWrapper);\n}\n\n/**\n * Helper function to set the 'set--overlay' class on a target element.\n * @param {[HTMLElement]} element\n */\nexport function setOverlay( options = {}) {\n let targetEl = _getOverlayTarget(options.targetElement);\n\n lastOverlayTrigger = options.trigger;\n\n targetEl.classList.add( 'set--overlay' );\n\n if (options.coverAll) {\n targetEl.classList.add( 'set--overlay-all' );\n }\n\n //Add an additional overlay in the main header element.\n //This is often desired in the case `options.coverAll` wouldn't work due to z-index constrains.\n //For example, `options.coverAll` sets a very high z-index, increasing the header element's z-index at this point wouldn't work, removing its z-index would work to \"punch through\", however if your header turns sticky while scrolling, it messes up the effect.\n if (options.includeHeader && options.targetElement !== headerContainerEl) {\n let headerOptions = objectAssign({}, options);\n\n headerOptions.targetElement = headerContainerEl;\n\n setOverlay(headerOptions);\n }\n}\n\n/**\n * Helper function to unset the 'set--overlay' class on a `targetElement`.\n * @param {[HTMLElement]} targetElement\n */\nexport function unsetOverlay( options = {} ) {\n let targetEl = _getOverlayTarget(options.targetElement);\n\n //Sometimes you want the overlay to stay on even when toggling between different functionalities (i.e. megamenu and search).\n //This conditional makes sure that if an `options.trigger` is available, it will only unset the overlay if\n //called with the same `options.trigger` value as previously set on `setOverlay()` on `lastOverlayTrigger`.\n if (!lastOverlayTrigger || !options.trigger || (lastOverlayTrigger === options.trigger)) {\n targetEl.classList.remove( 'set--overlay' );\n headerContainerEl.classList.remove( 'set--overlay' );\n targetEl.classList.remove( 'set--overlay-all' );\n }\n}\n\n/**\n * Attaches an event listener to a NodeList, list of elements, or if `elementList` is a query string generates a NodeList.\n * @param {[type]} elementList [description]\n * @param {[type]} eventName [description]\n * @param {[type]} handler [description]\n */\nexport function addEventListenerList(elements, eventName = 'click', handler) {\n callbackOnElements(elements, function(currentEl) {\n if (currentEl instanceof HTMLElement) {\n eventName.split(' ').forEach(currentEvent => currentEl.addEventListener(currentEvent, handler));\n }\n });\n}\n\n//Sorta polyfill for the Object.assign method, which is not supported in IE11.\n//\"inspired\" by https://github.com/Raynos/xtend/blob/master/mutable.js\nexport function objectAssign(target) {\n for (let i = 1; i < arguments.length; i++) {\n let source = arguments[i];\n\n for (let key in source) {\n if (source.hasOwnProperty(key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n}\n\n/**\n * Checks if an element is currently consuming space in the DOM.\n * An element with, or a child of, display: none; will consume no space.\n * @param {[type]} el [description]\n * @return {[type]} [description]\n */\nexport function elConsumesSpace(el) {\n return el.offsetParent || (el.firstElementChild && el.firstElementChild.offsetHeight > 0);\n}\n\n/**\n * Create an alert to display the error message\n * @param {Object} message - Error message to display\n */\nexport function createErrorNotification(message, containerEl = '[data-checkout-component=\"error-container\"]') {\n callbackOnElements(containerEl, function(currentEl) {\n currentEl.textContent = '';\n\n //if no message is provided, don't proceed and just clear the container.\n if (message) {\n createElWithAttrs(currentEl, {class: 'feedback-banner feedback-banner--error', role: 'alert'}, 'p', message);\n }\n });\n}\n\nexport function handleError(err) {\n if (err.responseJSON.redirectUrl) {\n window.location.href = err.responseJSON.redirectUrl;\n } else {\n var errorMessage = (err && (err.hasOwnProperty('responseJSON') && err.responseJSON.hasOwnProperty('errorMessage'))) ? err.responseJSON.errorMessage : window.SFRA.Resources.genericErrorMessage;\n createErrorNotification(errorMessage);\n\n progress.hideLoader();\n }\n}\n\n/**\n * body-scroll-lock utility to allow scrolling within \"locked\" containers.\n */\nexport function allowScrollableAreas(el) {\n while (el && el !== document.body) {\n if (el.hasAttribute('data-scrollable')) {\n return true;\n }\n\n el = el.parentNode;\n }\n}\n\n/**\n * Toggles the `inert` attribute on the provided `elements`.\n */\nexport function toggleInert(elements, inert) {\n callbackOnElements(elements, function(currentEl) {\n inert ? currentEl.setAttribute('inert', '') : currentEl.removeAttribute('inert', '');\n });\n}\n\n/**\n * Export the current page's action and queryString data, since it might not always be available directly in the URL.\n */\nexport function getPageActionData() {\n let pageDataEl = document.querySelector('[data-querystring]');\n\n return pageDataEl ? {\n action: pageDataEl.getAttribute('data-action'),\n queryString: pageDataEl.getAttribute('data-querystring')\n } : null;\n}\n\n","import scrollMonitor from 'scrollmonitor';\nimport {updateHistoryState, appendParamsToURL} from '../helpers/urlUtilities';\n\n/**\n * Grabs the next page number from the provided trigger.\n * @param {[type]} infiniteTrigger [description]\n * @return {[type]} [description]\n */\nexport function getNextPageNumber(infiniteTrigger) {\n return parseInt(infiniteTrigger.dataset.pageNumber) + 1;\n}\n\n/**\n * Update the page's URL with the pagination location the user is in, i.e. \"page=1\", \"page=3\", etc.\n * @param {[type]} nextPageNumber [description]\n * @return {[type]} [description]\n */\nexport function updatePageHistory(nextPageNumber) {\n let cgid = document.querySelector('[data-cgid]'),\n urlParams = {page: nextPageNumber};\n\n //Ensure a category ID is always passed when loading new pages.\n if (cgid) {\n urlParams.cgid = cgid.value;\n }\n\n updateHistoryState(appendParamsToURL('', urlParams, true));\n}\n\n/**\n * Very simple wrapper to leverage scrollMonitor and trigger the next page load.\n */\nexport function setupInfiniteScroll(infiniteTrigger, pageInsertCallback, distance = 600) {\n let infiniteWatcher = scrollMonitor.create(infiniteTrigger, distance),\n nextPageNumber = getNextPageNumber(infiniteTrigger);\n\n infiniteWatcher.one('enterViewport', function() {\n //Process page only if trigger element is still available in the DOM.\n if (document.contains(infiniteTrigger)) {\n updatePageHistory(nextPageNumber);\n\n pageInsertCallback();\n }\n });\n}\n","'use strict';\n\nimport {getQueryStringParams, appendParamsToURL} from '../helpers/urlUtilities';\n\n/**\n * Retrieves the product data from the children of the current container.\n * Used by backend to determine what to add to cart.\n *\n * @return {string[]} - List of selected bundle product item ID's\n */\nexport function getChildProducts(container) {\n let productType = getProductType(container),\n isProductSet = productType === 'set',\n productData = [],\n productList = container.querySelectorAll(`[data-product-container=\"${productType}-item\"]`);\n\n [].forEach.call(productList, function(currentItem) {\n let currentItemQty = getQuantitySelected(currentItem),\n currentItemData = {\n pid: getPidValue(currentItem),\n options: getOptions(currentItem, true)\n };\n\n //SFCC checks for different properties depending if item is a Product Set or not (quantity vs qty).\n currentItemData[isProductSet ? 'qty' : 'quantity'] = currentItemQty;\n\n productData.push(currentItemData);\n });\n\n return {\n list: productList,\n data: JSON.stringify(productData)\n };\n}\n\n/**\n * Retrieve product options\n *\n * @param {HTMLNodeEl} referenceEl - DOM element to use as a reference to find the closest productConatiner.\n * @return {string} - Product options and their selected values\n */\nexport function getOptions(referenceEl, stringify) {\n let productContainer = getProductContainer(referenceEl),\n options = [].map.call(productContainer.querySelectorAll('[data-option-id]'), function(currentItem) {\n let optionsEl = currentItem.querySelector('[data-product-component=\"option-selection\"]'),\n selectedValueId = optionsEl ? optionsEl.options[optionsEl.selectedIndex].getAttribute('data-value-id') : currentItem.getAttribute('data-option-value-id');\n\n if (!selectedValueId) {\n [].map.call(productContainer.querySelectorAll('[data-static-option-id]'), function(currentItem) {\n if (currentItem.classList.contains('selectedStrapOption')) {\n selectedValueId = currentItem.getAttribute('data-static-option-id');\n } else if (currentItem.classList.contains('plpSlectedStrap')) {\n selectedValueId = currentItem.getAttribute('data-static-option-id');\n }\n });\n }\n\n return {\n optionId: currentItem.getAttribute('data-option-id'),\n selectedValueId: selectedValueId\n };\n });\n\n return stringify ? JSON.stringify(options) : options;\n}\n\n/**\n * Retrieves the relevant Product ID value.\n */\nexport function getPidValue(el) {\n return getProductContainer(el).getAttribute('data-pid');\n}\n\n/**\n * Retrieves the relevant product type value (pdp, quickview, tile, set, set-item, bundle, bundle-item).\n */\nexport function getProductType(el) {\n return getProductContainer(el).getAttribute('data-product-container');\n}\n\nexport function updateSingleID(newID, targetEl, productContainer, updateIDText) {\n //If a `productContainer` is provided, do not update the PIDs for children of sub-products.\n //This is necessary to prevent a product bundle overriding its items PIDs.\n if (!productContainer || productContainer === getProductContainer(targetEl)) {\n targetEl.setAttribute('data-pid', newID);\n\n if (updateIDText) {\n targetEl.textContent = newID;\n }\n }\n}\n\nexport function updatePIDs(newID, productContainer) {\n updateSingleID(newID, productContainer);\n\n [].forEach.call(productContainer.querySelectorAll('[data-pid]'), currentEl => updateSingleID(newID, currentEl, productContainer));\n [].forEach.call(productContainer.querySelectorAll('[data-product-component=\"pid\"]'), currentEl => updateSingleID(newID, currentEl, productContainer, true));\n}\n\n/**\n * Update any matches of \"[data-product-component=\"name\"]\" within a `productContainer` with the `newName` value.\n */\nexport function updateName(newName, productContainer) {\n [].forEach.call(productContainer.querySelectorAll('[data-product-component=\"name\"]'), currentEl => currentEl.innerHTML = newName);\n}\n\n/**\n * Update the product images elements with the provided `responseImages`.\n * @param {Array} responseImages [List of images that the view should be updated with]\n * @param {HTMLElement} productContainer [The container for the product. Provides context for image selection]\n * @param {String} imageSelector [The image selector to use to get a give image list.]\n * @param {Boolean} updateImageDifference [If TRUE, updates the view so that it matches the amount of images available in `responseImages`]\n */\nexport function updateImages(responseImages, productContainer, imageSelector = '[data-product-component*=\"image\"]', updateImageDifference) {\n if (updateImageDifference) {\n updateImageList(responseImages, productContainer);\n }\n\n [].forEach.call(productContainer.querySelectorAll(imageSelector), function(currentEl) {\n updateSingleImage(responseImages[currentEl.getAttribute('data-image-index')], currentEl);\n });\n}\n\n\n/**\n * Checks wether the `responseImages` object matches the current list of viewable images.\n * If it doesn't, updates the view so that viewable images are displayed or hidden.\n */\nexport function updateImageList(responseImages, productContainer) {\n let imageCarousels = productContainer.querySelectorAll('[data-product-component*=\"-gallery\"]');\n\n [].forEach.call(imageCarousels, function(imageCarousel) {\n let imageCarouselConfig = imageCarousel.hasAttribute('data-carousel-config') ? $(imageCarousel).slick('getSlick') : null,\n carouselEnabled = imageCarouselConfig && !imageCarouselConfig.unslicked,\n imageCarouselLength = carouselEnabled ? imageCarouselConfig.slideCount : imageCarousel.childElementCount,\n imageCountDifference = (responseImages.length - imageCarouselLength) > 0 ? responseImages.length - imageCarouselLength : 0,\n hasNewImages = responseImages.length > imageCarouselLength;\n\n //Loop through however many counts of images are either missing or additional.\n for (let i = 0; i < imageCountDifference; i++) {\n //If there are missing images, clone the image template and insert it in the current gallery container.\n if (hasNewImages) {\n let imageTemplate = productContainer.querySelector(`[data-image-template=\"${imageCarousel.getAttribute('data-product-component')}\"]`).cloneNode(true);\n\n imageTemplate.querySelector('[data-image-index]').setAttribute('data-image-index', imageCarouselLength++);\n imageTemplate.removeAttribute('data-image-template');\n\n //Either use the native `appendChild` or the carousel's \"add\" method to insert the new images.\n if (carouselEnabled) {\n $(imageCarousel).slick('slickAdd', imageTemplate);\n } else {\n imageCarousel.appendChild(imageTemplate);\n }\n } else {\n //If there are additional images in the DOM, remove them.\n //Check wether or not there's a carousel enabled before removing the elements.\n if (carouselEnabled) {\n $(imageCarousel).slick('slickRemove', --imageCarouselLength);\n } else {\n imageCarousel.removeChild(imageCarousel.lastElementChild);\n }\n }\n }\n\n $('body').trigger('product:imageListUpdate',\n {\n container: productContainer,\n imageContainer: imageCarousel,\n type: imageCarousel.getAttribute('data-product-component'),\n }\n );\n });\n}\n\nexport function updateSingleImage(currentImgObj, currentImgEl) {\n var isPdpRelatedVariationsProduct = currentImgEl.closest('.pdp-related-variations') != null;\n if (currentImgObj && !isPdpRelatedVariationsProduct) {\n currentImgEl.src = currentImgObj.url;\n currentImgEl.title = currentImgObj.title;\n currentImgEl.alt = currentImgObj.alt;\n }\n}\n\n/**\n * Update URLs within the provided `productContainer`.\n * Elements matching the `[data-product-url]` selector will get their `.href` property updated.\n * @param {[type]} newURL [The desired new URL]\n * @param {[type]} productContainer [The target container]\n */\nexport function updateURLs(newURL, productContainer) {\n let urlEls = productContainer.querySelectorAll('[data-product-url]'),\n queryParams = getQueryStringParams(newURL);\n\n [].forEach.call(urlEls, function(currentEl) {\n let urlType = currentEl.getAttribute('data-product-url'),\n variationGroup = currentEl.getAttribute('data-product-group'),\n productGrouping = document.querySelector('[data-product-grouping=\"productGrouping\"]'),\n //A URL \"type\" may be set in the 'data-product-url' attribute.\n //When available, it will look in `window.SFRA.Urls` for a URL type match.\n //This is useful for when you need to update several URLs within a container\n //that may target different Product presentation views, for example a PDP, QuickView, or QuickAdd, etc.\n updatedURL = urlType ? appendParamsToURL(window.SFRA.Urls[urlType], queryParams) : newURL;\n\n if (currentEl.tagName === 'A') {\n if (productGrouping !== null && variationGroup !== null) {\n currentEl.href = currentEl.href ? currentEl.href : updatedURL;\n } else {\n currentEl.href = updatedURL;\n }\n } else {\n currentEl.setAttribute('data-url', updatedURL);\n }\n });\n}\n\n/**\n * Updates matching elements with the new querystring value.\n * This value is used for things like easy requesting data from the current product configuration on demand, like loading a zoom modal.\n * @param {[type]} newQueryString [description]\n * @param {[type]} productContainer [description]\n */\nexport function updateQueryStrings(newQueryString, productContainer) {\n productContainer.setAttribute('data-product-querystring', newQueryString);\n}\n\n/**\n * Updates the current product's price with the provided HTML.\n */\nexport function updateProductPrice(productContainer, product) {\n let priceEl = productContainer.querySelector('[data-product-component=\"price\"]'),\n priceTaxEl = $('[data-product-component=\"pdp-price-tax-element\"]');\n priceTaxEl.addClass('hidden');\n\n if (product && priceEl) {\n priceEl.outerHTML = product.price.html;\n if (product.available && product.sellable && (product.price && product.price.type !== 'range' && product.price.sales && product.price.sales.value)) {\n priceTaxEl.removeClass('hidden');\n }\n }\n}\n\n/**\n * Retrieve contextual quantity selector\n * @param {jquery} $el - DOM container for the relevant quantity\n * @return {jquery} - quantity selector DOM container\n */\nexport function getQuantitySelector(el) {\n return getProductContainer(el).querySelector('[data-product-component=\"qty\"]');\n}\n\n/**\n * Retrieves the value associated with the Quantity pull-down menu\n * @param {jquery} $el - DOM container for the relevant quantity\n * @return {string} - value found in the quantity input\n */\nexport function getQuantitySelected(el) {\n let quantitySelector = getQuantitySelector(el);\n\n return quantitySelector ? quantitySelector.value : 1;\n}\n\nexport function getProductContainer(el) {\n return el.closest('[data-product-container]');\n}\n\nexport function initShareLink() {\n var shareLinks = document.querySelector('.product-common__share-trigger');\n if (shareLinks != null) {\n shareLinks.onclick = function() {\n var url = window.location.href;\n var encodedUrl = url.replace(/&/g, '%26');\n\n var urlEmail = $('.addthis_button_email').attr('href');\n var urlArrEmail = urlEmail.split('https');\n var finalUrlEmail = urlArrEmail[0] + encodedUrl;\n $('.addthis_button_email').attr('href', finalUrlEmail);\n\n var urlFacebook = $('.addthis_button_facebook').attr('href');\n var urlArrFacebook = urlFacebook.split('https');\n var finalUrlFacebook = 'https' + urlArrFacebook[1] + encodedUrl;\n $('.addthis_button_facebook').attr('href', finalUrlFacebook);\n\n var urlTwitter = $('.addthis_button_twitter').attr('href');\n var urlArrTwitter = urlTwitter.split('https');\n var finalUrlTwitter = 'https' + urlArrTwitter[1] + encodedUrl;\n $('.addthis_button_twitter').attr('href', finalUrlTwitter);\n if ($('.addthis_button_pinterest').attr('href')) {\n var urlPinterest = $('.addthis_button_pinterest').attr('href');\n } else {\n urlPinterest = $('.addthis_button_pinterest_share').attr('href');\n }\n\n var urlArrPinterest = urlPinterest.split('https');\n var finalUrlPinterest = 'https' + urlArrPinterest[1] + encodedUrl;\n $('.addthis_button_pinterest').attr('href', finalUrlPinterest);\n\n var urlWhatsapp = $('.addthis_button_whatsapp').attr('href');\n var urlArrWhatsapp = urlWhatsapp.split('https');\n var finalUrlWhatsapp = 'https' + urlArrWhatsapp[1] + encodedUrl;\n $('.addthis_button_whatsapp').attr('href', finalUrlWhatsapp);\n }\n }\n}\n\nexport function chooseColorBackToPdp() {\n let selectedStrapOption = document.querySelector('.selectedStrapOption'),\n defaultStrapOption = document.querySelector('[data-default-strap=\"true\"]'),\n addToCart = document.querySelector('[data-product-component=\"add-button\"]'),\n stockAvailability = document.querySelector('[data-product-component=\"stock-availability-status\"]'),\n availabilityStatus = document.querySelectorAll('[data-product-component=\"availability-status\"]'),\n availabilityNotification = document.querySelector('[data-notification-component=\"stock-availability-status\"]'),\n showNotify = document.querySelector('[data-product-component=\"stock-availability-status\"]'),\n backToProductBtn = document.querySelector('[data-choose-color-back-to-product=\"back-to-product\"]'),\n productInStock = 'true';\n\n if (backToProductBtn && backToProductBtn != null) {\n productInStock = backToProductBtn.dataset.parentProductInstock;\n }\n\n if (selectedStrapOption && selectedStrapOption != null) {\n if (selectedStrapOption.dataset.strapInstock === 'true' && productInStock === 'true') {\n if (addToCart && addToCart != null && showNotify && showNotify != null && addToCart.classList.contains('hidden')) {\n addToCart.classList.remove('hidden');\n showNotify.classList.add('hidden');\n }\n if (addToCart.disabled) {\n addToCart.disabled = false;\n }\n if (availabilityNotification && availabilityNotification != null) {\n availabilityNotification.classList.add('hidden');\n }\n if (stockAvailability && stockAvailability != null && availabilityStatus && availabilityStatus != null) {\n stockAvailability.classList.add('hidden');\n [].forEach.call(availabilityStatus, function(currentEl) {\n currentEl.classList.add('hidden');\n });\n }\n } else {\n if (productInStock === 'false' && addToCart && addToCart != null && showNotify && showNotify != null && showNotify.classList.contains('hidden')) {\n showNotify.classList.remove('hidden');\n addToCart.classList.add('hidden');\n }\n if (stockAvailability && stockAvailability != null && stockAvailability.classList.contains('hidden') && availabilityStatus && availabilityStatus != null) {\n stockAvailability.classList.remove('hidden');\n [].forEach.call(availabilityStatus, function(currentEl) {\n if ( currentEl.classList.contains('hidden')) {\n currentEl.classList.remove('hidden');\n }\n });\n }\n if (availabilityNotification && availabilityNotification != null && availabilityNotification.classList.contains('hidden')) {\n availabilityNotification.classList.remove('hidden');\n }\n }\n } else {\n if (defaultStrapOption && defaultStrapOption != null) {\n if (addToCart.disabled) {\n addToCart.disabled = false;\n }\n if (stockAvailability && stockAvailability != null && availabilityStatus && availabilityStatus != null) {\n stockAvailability.classList.add('hidden');\n [].forEach.call(availabilityStatus, function(currentEl) {\n currentEl.classList.add('hidden');\n });\n }\n if (availabilityNotification && availabilityNotification != null) {\n availabilityNotification.classList.add('hidden');\n }\n if (addToCart && addToCart != null && showNotify && showNotify != null && defaultStrapOption.dataset.strapInstock === 'true' && productInStock == 'true') {\n if (addToCart.classList.contains('hidden')) {\n addToCart.classList.remove('hidden');\n showNotify.classList.add('hidden');\n }\n } else {\n if (productInStock === 'false' && addToCart && addToCart != null && showNotify && showNotify != null && showNotify.classList.contains('hidden')) {\n showNotify.classList.remove('hidden');\n addToCart.classList.add('hidden');\n }\n if (stockAvailability && stockAvailability != null && stockAvailability.classList.contains('hidden') && availabilityStatus && availabilityStatus != null ) {\n stockAvailability.classList.remove('hidden');\n [].forEach.call(availabilityStatus, function(currentEl) {\n if ( currentEl.classList.contains('hidden')) {\n currentEl.classList.remove('hidden');\n }\n });\n }\n if (availabilityNotification && availabilityNotification != null && availabilityNotification.classList.contains('hidden')) {\n availabilityNotification.classList.remove('hidden');\n }\n }\n }\n }\n}\n\nexport function updateApplePayETA() {\n var applePayButtonButton = $('[data-applepay-instant-checkout=\"proceed\"]');\n var applePayForm = $('[data-applepay-instant-checkout=\"form\"]');\n var url = applePayForm.attr('action');\n var formData = applePayForm.serialize();\n var pid;\n var addToBagButton = document.querySelector('.apple-pay-add-to-bag-button');\n if (addToBagButton) {\n pid = addToBagButton.dataset.pid;\n }\n\n formData = pid ? (formData + '&pid=' + pid + '&variantChange=true') : formData;\n var parent = applePayForm.parents('[data-applepay-instant-checkout=\"container\"]');\n if (applePayButtonButton && applePayForm && url && formData && parent) {\n $.ajax({\n url: url,\n type: 'POST',\n cache: false,\n async: false,\n data: {'formData': formData},\n success: function(data) {\n if (data.success) {\n var applePayButton = parent.find('.button--apple-pay');\n parent.find('[data-applepay-instant-checkout=\"addressSummary\"]').html(data.addressSummary);\n parent.find('[data-applepay-instant-checkout=\"shippingAddressSummary\"]').removeClass('hidden');\n if (data.availabilityData && data.availabilityData.isAvailable) {\n applePayButton.removeClass('hidden');\n applePayButton.removeClass('disabled');\n applePayButton.removeAttr('disabled');\n } else {\n applePayButton.removeClass('hidden');\n applePayButton.addClass('disabled');\n applePayButton.attr('disabled', true);\n }\n } else {\n parent.find('[data-applepay-instant-checkout=\"errorMsg\"').text(data.errorMsg);\n }\n },\n error: function(data) {\n console.log(JSON.stringify(data));\n }\n });\n }\n}\n\n","import modules from '../helpers/modules';\r\n\r\nexport function widget3DConfiguration() {\r\n let iFrame = document.querySelector('[data-id=\"3DWidget\"]'),\r\n tabNav = document.querySelectorAll('[data-auth-component=\"tab-nav\"]'),\r\n tabStrapType = document.querySelector('[data-tab-id=\"tab-strap-type\"]'),\r\n tabStrapColor = document.querySelector('[data-tab-id=\"tab-strap-color\"]'),\r\n strapType = document.querySelectorAll('[data-strap-type]'),\r\n strapColor = document.querySelectorAll('[data-static-option-id]'),\r\n addStrapColor = document.querySelectorAll('[data-add-strap-color]'),\r\n strapColors = document.querySelectorAll('[data-static-option-ids]'),\r\n fontType = document.querySelectorAll('[name$=\"engrav_engravMessageFont\"]'),\r\n engravLine1Elem = document.querySelector('[data-engrave-msg=\"line-one\"]'),\r\n engravLine2Elem = document.querySelector('[data-engrave-msg1=\"line-two\"]'),\r\n embossElem = document.querySelector('[data-emboss-msg=\"message\"]'),\r\n embossFontType = document.querySelectorAll('[data-emboss-font-type]'),\r\n embossFoilType = document.querySelectorAll('[data-emboss-foil-type]'),\r\n embossDots = document.querySelector('[data-emboss-dots]'),\r\n backToProduct = document.querySelectorAll('[data-back-to-product]'),\r\n collapseButtons = document.querySelectorAll('[data-strap-section-colapse]'),\r\n ctaWrapper = document.querySelector('[data-product-component=\"actions\"]'),\r\n pdpContainer = document.getElementsByClassName('pdp'),\r\n tabAdj = document.querySelectorAll('[data-auth-component=\"tab-adj\"]'),\r\n isPdpPage = pdpContainer && pdpContainer.length > 0;\r\n\r\n const VAS_TYPE_EMBOSSING = 'embossing',\r\n VAS_TYPE_ENGRAVING = 'engraving',\r\n VAS_TYPE_BRACELETADJ = 'braceletAdj',\r\n IFRAME_MESSAGE_SUCCESS = 'SUCCESS',\r\n IFRAME_MESSAGE_AR_CLICKED = 'click_AR_Button';\r\n\r\n\r\n function sendMessage(message) {\r\n if (iFrame) {\r\n let content = iFrame.contentWindow;\r\n content.postMessage(JSON.stringify(message), '*');\r\n }\r\n }\r\n\r\n function strapFrameLoadForMobile(event) {\r\n try {\r\n var data = typeof event.data === 'string' ? JSON.parse(event.data) : event.data;\r\n if ( data.iframeStates == IFRAME_MESSAGE_SUCCESS ) {\r\n sendMessage({strapId: event.currentTarget.myParam});\r\n $('#productStrapChooseColorSlider').addClass('iframe-loaded');\r\n }\r\n } catch (e) {\r\n console.log();\r\n }\r\n }\r\n\r\n function receiveMessage(event) {\r\n try {\r\n var data = typeof event.data === 'string' ? JSON.parse(event.data) : event.data;\r\n if ( data.iframeStates == IFRAME_MESSAGE_SUCCESS ) {\r\n setVTOButton();\r\n }\r\n if ( data.iframeStates == IFRAME_MESSAGE_SUCCESS || data.arStates == IFRAME_MESSAGE_AR_CLICKED ) {\r\n setQrCodeMessage();\r\n }\r\n } catch (e) {\r\n return false;\r\n }\r\n var pid = $('.pdp-main')[0].getAttribute('data-pid');\r\n var gtmEvent = '';\r\n if (data.event !== undefined && (data.event === 'productInterchangeableStraps' || data.event === 'virtual_try_on')) {\r\n gtmEvent = data.event;\r\n } else if (data.arStates !== undefined && data.arStates === 'click_AR_Button') {\r\n gtmEvent = 'productAR';\r\n }\r\n\r\n if (gtmEvent != '') {\r\n modules.tracking.init(null, {\r\n trackEvent: gtmEvent,\r\n trackObject: {\r\n asyncURL: window.SFRA.Urls.GTMEventView,\r\n asyncParams: {\r\n pid: pid\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n if (isPdpPage) {\r\n window.addEventListener('message', receiveMessage, false);\r\n }\r\n\r\n function setVTOButton() {\r\n let content = iFrame.contentWindow,\r\n vto_button_text = $(iFrame).attr('data-vto-button-text');\r\n\r\n if (vto_button_text != undefined && vto_button_text.length > 0) {\r\n content.postMessage(JSON.stringify({vto_button_text: vto_button_text}), '*');\r\n }\r\n\r\n }\r\n\r\n function setQrCodeMessage() {\r\n let content = iFrame.contentWindow,\r\n qrCodeMessage = $(iFrame).attr('data-scan-qr-code-message');\r\n\r\n if (qrCodeMessage != undefined && qrCodeMessage.length > 0) {\r\n content.postMessage(JSON.stringify({qrCodeContent: qrCodeMessage}), '*');\r\n }\r\n\r\n }\r\n\r\n function sendMessages(message, type, strap) {\r\n if ($('.webgl-img').hasClass('strapframe')) {\r\n $('.webgl-img').removeClass('strapframe');\r\n }\r\n let frame = strap.strapFrame.closest('.strap-bar__dailog'),\r\n iframes = $(frame).find('[data-id=\"3DWidget\"]'),\r\n currentFrame,\r\n content;\r\n iframes.addClass('strapframe');\r\n currentFrame = document.querySelector('.strapframe'),\r\n content = currentFrame.contentWindow;\r\n content.postMessage(JSON.stringify(type), '*');\r\n content.postMessage(JSON.stringify(message), '*');\r\n }\r\n function receiveMessageFromIframe(event) {\r\n try {\r\n var data = typeof event.data === 'string' ? JSON.parse(event.data) : event.data;\r\n var getDots;\r\n if (tabNav[0].dataset.vasName === VAS_TYPE_EMBOSSING && data.iframeStates === IFRAME_MESSAGE_SUCCESS) {\r\n sendMessage({view: 'EMBOSSING'});\r\n sendMessage({embossingMsg_1: embossElem.value});\r\n vasFontType(embossFontType, 'load', VAS_TYPE_EMBOSSING);\r\n embossingFoilType(embossFoilType, 'load');\r\n if (embossDots.checked) {\r\n if (embossElem.value.length > 1 && embossDots.checked) {\r\n getDots = embossElem.value.split('').join('.');\r\n } else if (embossElem.value.length == 0 && !embossDots.checked) {\r\n getDots = embossElem.value;\r\n } else if (this.value.length == 1 || !embossDots.checked) {\r\n getDots = embossElem.value;\r\n }\r\n sendMessage({embossingMsg_1: getDots});\r\n }\r\n } else if (tabNav[0].dataset.vasName === VAS_TYPE_ENGRAVING && data.iframeStates === IFRAME_MESSAGE_SUCCESS) {\r\n sendMessage({view: 'ENGRAVING'});\r\n sendMessage({engravingMsg_1: engravLine1Elem.value});\r\n sendMessage({engravingMsg_2: engravLine2Elem.value});\r\n vasFontType(fontType, 'load', VAS_TYPE_ENGRAVING);\r\n } else if (tabNav[0].dataset.vasName === VAS_TYPE_BRACELETADJ && data.iframeStates === IFRAME_MESSAGE_SUCCESS) {\r\n sendMessage({view: 'STRAP'});\r\n }\r\n } catch (e) {\r\n console.log();\r\n }\r\n }\r\n if (tabNav !== null && tabNav.length > 0) {\r\n window.addEventListener('message', receiveMessageFromIframe, false);\r\n }\r\n\r\n function vasFontType(fontType, event, vasType) {\r\n if (event === 'load') {\r\n for (var i = 0; i < fontType.length; ++i) {\r\n if (fontType[i].checked === true) {\r\n var FontType = fontType[i].value;\r\n }\r\n }\r\n if (vasType === VAS_TYPE_ENGRAVING) {\r\n if (FontType == 'Regular') {\r\n sendMessage({engravingFont: 'AVANT'});\r\n } else {\r\n sendMessage({engravingFont: 'SCRIPT412'});\r\n }\r\n } else if (vasType === VAS_TYPE_EMBOSSING) {\r\n sendMessage({embossingFont: FontType});\r\n }\r\n } else {\r\n if (vasType === VAS_TYPE_ENGRAVING) {\r\n if (fontType.value == 'Regular') {\r\n sendMessage({engravingFont: 'AVANT'});\r\n } else {\r\n sendMessage({engravingFont: 'SCRIPT412'});\r\n }\r\n }\r\n }\r\n }\r\n\r\n function embossingFoilType(foilType, event) {\r\n if (event === 'load') {\r\n for (var i = 0; i < foilType.length; ++i) {\r\n if (foilType[i].checked === true) {\r\n var embossingFoilType = foilType[i].value;\r\n }\r\n }\r\n if (embossingFoilType == 'true') {\r\n sendMessage({embossingColor: 'GOLD'});\r\n } else {\r\n sendMessage({embossingColor: 'NEUTRAL'});\r\n }\r\n } else {\r\n if (foilType.value == 'true') {\r\n sendMessage({embossingColor: 'GOLD'});\r\n } else {\r\n sendMessage({embossingColor: 'NEUTRAL'});\r\n }\r\n }\r\n }\r\n\r\n function addOrRemoveHiddenClass(ctaWrapperClass) {\r\n var addRefillButton = document.querySelector('.product-addrefill__button');\r\n if (addRefillButton && addRefillButton.getAttribute('data-pid') != '') {\r\n var refillContainer = document.querySelector('[data-product-component=\"selected-refills\"]');\r\n if (refillContainer && (refillContainer.firstElementChild == null || refillContainer.firstElementChild && refillContainer.firstElementChild.getAttribute('data-sel-refillid') == '')) {\r\n ctaWrapperClass.classList.remove('hidden');\r\n } else {\r\n ctaWrapperClass.classList.add('hidden');\r\n }\r\n } else {\r\n ctaWrapperClass.classList.add('hidden');\r\n }\r\n return ctaWrapperClass;\r\n }\r\n\r\n [].forEach.call(tabNav, currentItem => currentItem.addEventListener('click', function(e) {\r\n if (e.target.matches('.removeButton') || currentItem.classList.contains('disable--personalisation')) {\r\n return false;\r\n } else {\r\n if (ctaWrapper !== null) {\r\n if (this.dataset.tabId == 'tab-engrave' && this.dataset.disableconfig !== 'true' && !this.classList.contains('disable--personalisation')) {\r\n sendMessage({view: 'ENGRAVING'});\r\n ctaWrapper = addOrRemoveHiddenClass(ctaWrapper);\r\n } else if (this.dataset.tabId == 'tab-emboss') {\r\n sendMessage({view: 'EMBOSSING'});\r\n ctaWrapper = addOrRemoveHiddenClass(ctaWrapper);\r\n } else {\r\n ctaWrapper.classList.remove('hidden');\r\n }\r\n }\r\n if (this.dataset.tabId == 'tab-strap-color') {\r\n let selectedColor = document.querySelector('[data-auth-component=\"strap-colors-tab\"] .toggle--active');\r\n if (selectedColor) {\r\n sendMessage({strapId: selectedColor.dataset.strapColor});\r\n }\r\n }\r\n }\r\n }));\r\n\r\n [].forEach.call(tabAdj, currentItem => currentItem.addEventListener('click', function(e) {\r\n if (e.target.matches('.removeButton')) {\r\n return false;\r\n } else {\r\n if (ctaWrapper !== null) {\r\n if (this.dataset.tabId == 'tab-braceletAdj') {\r\n sendMessage({view: 'STRAP'});\r\n ctaWrapper.classList.add('hidden');\r\n } else {\r\n ctaWrapper.classList.remove('hidden');\r\n }\r\n }\r\n }\r\n }));\r\n\r\n [].forEach.call(backToProduct, currentItem => currentItem.addEventListener('click', function() {\r\n if (this.dataset.tabId == 'tab-back-to-product') {\r\n sendMessage({view: 'DEFAULT'});\r\n ctaWrapper.classList.remove('hidden');\r\n } else {\r\n ctaWrapper.classList.add('hidden');\r\n }\r\n }));\r\n\r\n [].forEach.call(strapType, currentItem => currentItem.addEventListener('click', function() {\r\n document.querySelectorAll('[data-complementry]').innerHTML = 'Straps';\r\n sendMessage(this.dataset);\r\n }));\r\n\r\n [].forEach.call(strapColor, currentItem => currentItem.addEventListener('click', function() {\r\n document.querySelectorAll('[data-complementry]').innerHTML = 'Complimentory Straps';\r\n if (($('#productStrapChooseColorSlider').hasClass('iframe-loaded')) && ($(window).width() < 768)) {\r\n sendMessage({strapId: this.dataset.strapColor});\r\n } else if ($(window).width() < 768) {\r\n window.addEventListener('message', strapFrameLoadForMobile, false);\r\n window.myParam = this.dataset.strapColor;\r\n } else {\r\n sendMessage({strapId: this.dataset.strapColor});\r\n }\r\n }));\r\n\r\n [].forEach.call(addStrapColor, currentItem => currentItem.addEventListener('click', function() {\r\n sendMessage({strapId: this.dataset.strapColor});\r\n }));\r\n\r\n [].forEach.call(addStrapColor, currentItem => currentItem.addEventListener('dblclick', function() {\r\n let thisStrap = $(this).find('[data-additionalstrap-name]');\r\n thisStrap.click();\r\n }));\r\n\r\n [].forEach.call(strapColors, currentItem => currentItem.addEventListener('click', function() {\r\n let _toggle = this.closest('.strap-bar__dailog');\r\n $(_toggle).find('.pdp-straps__item').removeClass('toggle');\r\n this.classList.add('toggle');\r\n document.querySelectorAll('[data-complementry]').innerHTML = 'Complimentory Straps';\r\n sendMessages({strapId: this.dataset.strapColor}, {strapType: this.dataset.strapType}, {strapFrame: this.closest('.pdp-straps__carousel')});\r\n }));\r\n\r\n [].forEach.call(fontType, currentItem => currentItem.addEventListener('change', function() {\r\n vasFontType(currentItem, 'change', VAS_TYPE_ENGRAVING);\r\n }));\r\n\r\n [].forEach.call(collapseButtons, currentItem => currentItem.addEventListener('click', function() {\r\n this.closest('[data-auth-component]').classList.remove('toggle--active');\r\n ctaWrapper.classList.remove('hidden');\r\n [].forEach.call(tabNav, currentItem => {\r\n currentItem.classList.remove('toggle--active');\r\n });\r\n }));\r\n\r\n if (tabStrapType) {\r\n tabStrapType.addEventListener('click', () => {\r\n $('[data-strap-type-carousel]').slick('refresh');\r\n }, {once: true});\r\n }\r\n\r\n if (tabStrapColor) {\r\n tabStrapColor.addEventListener('click', () => {\r\n $('[data-strap-color-carousel]').slick('refresh');\r\n }, {once: true});\r\n }\r\n\r\n if (engravLine1Elem) {\r\n engravLine1Elem.addEventListener('input', function() {\r\n sendMessage({engravingMsg_1: this.value});\r\n vasFontType(fontType, 'load', VAS_TYPE_ENGRAVING);\r\n });\r\n }\r\n\r\n if (engravLine2Elem) {\r\n engravLine2Elem.addEventListener('input', function() {\r\n sendMessage({engravingMsg_2: this.value});\r\n vasFontType(fontType, 'load', VAS_TYPE_ENGRAVING);\r\n });\r\n }\r\n\r\n if (embossElem) {\r\n embossElem.addEventListener('input', function() {\r\n let isWithoutDot,\r\n embossDotValue;\r\n if (embossDots.checked) {\r\n isWithoutDot = false;\r\n } else {\r\n isWithoutDot = true;\r\n }\r\n if (this.value.length > 1 && !isWithoutDot) {\r\n embossDotValue = this.value.split('').join('.');\r\n } else if (this.value.length == 0 && !isWithoutDot) {\r\n embossDotValue = this.value;\r\n } else if (this.value.length == 1 || isWithoutDot) {\r\n embossDotValue = this.value;\r\n }\r\n sendMessage({embossingMsg_1: embossDotValue});\r\n for (var i = 0; i < embossFontType.length; ++i) {\r\n if (embossFontType[i].checked === true) {\r\n var getFontType = embossFontType[i].value;\r\n }\r\n }\r\n for (i = 0; i < embossFoilType.length; ++i) {\r\n if (embossFoilType[i].checked === true) {\r\n var getFoilType = embossFoilType[i].value;\r\n }\r\n }\r\n sendMessage({embossingFont: getFontType});\r\n sendMessage({embossingColor: getFoilType});\r\n });\r\n }\r\n\r\n [].forEach.call(embossFontType, currentItem => currentItem.addEventListener('change', function() {\r\n sendMessage({embossingFont: this.value});\r\n }));\r\n\r\n [].forEach.call(embossFoilType, currentItem => currentItem.addEventListener('change', function() {\r\n embossingFoilType(currentItem, 'change')\r\n }));\r\n if (embossDots) {\r\n embossDots.addEventListener('change', function() {\r\n var getDots;\r\n if (embossDots.checked) {\r\n if (embossElem.value.length > 1 && embossDots.checked) {\r\n getDots = embossElem.value.split('').join('.');\r\n } else if (embossElem.value.length == 0 && !embossDots.checked) {\r\n getDots = embossElem.value;\r\n } else if (this.value.length == 1 || !embossDots.checked) {\r\n getDots = embossElem.value;\r\n }\r\n } else {\r\n getDots = embossElem.value;\r\n }\r\n sendMessage({embossingMsg_1: getDots});\r\n });\r\n }\r\n}\r\n","'use strict';\n\nimport { updateHistoryState, getQueryStringParams, appendParamsToURL } from '../helpers/urlUtilities';\nimport { publishEvent, initMethods, initModules, addEventListenerList } from '../helpers/utilities';\nimport * as progress from '../components/progress';\nimport { callbackOnElements, createCookie, readCookie } from '@borngroup/born-utilities';\nimport { setupInfiniteScroll, getNextPageNumber, updatePageHistory } from '../modules/module.infinite-scroll';\nimport { IEImageSupport } from '../helpers/polyfills.js';\nimport { widget3DConfiguration } from '../product/widget3D';\nimport {getOptions} from '../product/productUtils';\n\n/**\n * Returns an Array containing the list of toggled refinement triggers.\n * This is then used in the template to re-toggle the same triggers.\n * @return {[type]} [description]\n */\nfunction _getToggledRefinements() {\n let toggledRefinements = [];\n\n callbackOnElements('[data-search-component=\"refinement-trigger\"]', function(currentTrigger) {\n if (currentTrigger.toggle && currentTrigger.classList.contains('refinement--active')) {\n toggledRefinements.push(currentTrigger.closest('[data-refinement-type]').getAttribute('data-refinement-type'));\n }\n });\n\n return toggledRefinements;\n}\n\nfunction _getToggledGridFeed() {\n let selectedLayout = document.querySelector('[data-search-component=\"grid-feed-toggle\"].set--active');\n\n if (selectedLayout) {\n return selectedLayout.getAttribute('data-search-layout');\n }\n}\n\nfunction toggleHiddenRefinements() {\n addEventListenerList('[data-refinement-show-more]', 'click', function() {\n let showMore = $(this).data('refinement-show-more'),\n sibilings = $(this).parent().siblings('[data-refinement-hide]');\n\n if (showMore == true) {\n sibilings.removeClass('hidden');\n $(this).data('refinement-show-more', false);\n\n let lessText = $(this).data('less-text');\n $(this).text(lessText);\n } else {\n sibilings.addClass('hidden');\n $(this).data('refinement-show-more', true);\n\n let moreText = $(this).data('more-text');\n $(this).text(moreText);\n }\n });\n}\n\n/**\n * Returns TRUE if the refinement-bar is currently active (typically this only applies on mobile)\n * @return {[type]} [description]\n */\nfunction _getRefineBarIsToggled() {\n let refineBarTrigger = document.querySelector('[data-search-component=\"refinement-bar-trigger\"]');\n\n return refineBarTrigger && refineBarTrigger.toggle && refineBarTrigger.toggle.isSet;\n}\n\nfunction _handleRefinementTracking() {\n let refinementTrackingEl = document.querySelector('[data-refinement-tracking]');\n\n if (refinementTrackingEl) {\n publishEvent('actiondone', false, refinementTrackingEl);\n }\n}\n\n/**\n * Sends a Search-Results request using the `options.url` value, or from an attribute in the triggered element.\n * @param {Object} options [description]\n * @param {[type]} evt [description]\n * @return {[type]} [description]\n */\nfunction _updateResults(options = {}, evt) {\n let requestUrl = options.url || this.getAttribute('data-url') || this.href || this.value,\n refineBarToggled = _getRefineBarIsToggled();\n let strapColorCarousel = document.querySelectorAll('[data-strap-color-carousel]');\n\n if (evt) {\n evt.preventDefault();\n evt.stopPropagation();\n }\n\n if (this instanceof HTMLElement && (this.disabled || this.classList.contains('disabled'))) {\n return false;\n }\n\n options.requestData = options.requestData || {};\n options.requestData.selectedUrl = requestUrl;\n\n //Avoid passing this parameter at all if it's empty.\n if (refineBarToggled) {\n options.requestData.refineBarToggled = refineBarToggled;\n }\n\n options.requestData.toggledRefinements = _getToggledRefinements();\n\n requestUrl = appendParamsToURL(requestUrl, { 'toggleGridFeed': _getToggledGridFeed() });\n\n if (options.event && options.target) {\n publishEvent('search', options.event, options.target);\n }\n\n progress.showLoader(options.loadingContainer);\n\n return $.get(\n requestUrl,\n options.requestData,\n function(response) {\n if (options.updateHTML) {\n $(options.target).html(response);\n } else if (options.appendHTML) {\n $(options.target).append(response);\n } else {\n $(options.target).replaceWith(response);\n }\n\n if (options.updateHistory) {\n updateHistoryState(requestUrl, '', 'pushState');\n }\n\n //Hax https://stackoverflow.com/questions/24148403/trigger-css-transition-on-appended-element\n document.body.offsetWidth;\n\n initModules();\n\n //Re-run the image scaling polyfills after PLP renders through AJAX.\n IEImageSupport();\n\n //Attempt to set the focus back to the last refinement selected, if any.\n if (options.targetFocus) {\n callbackOnElements(options.targetFocus, currentEl => currentEl.focus({ preventScroll: true }));\n }\n\n if (typeof options.callback === 'function') {\n options.callback(response);\n } else {\n initMethods(options.callback);\n }\n\n toggleHiddenRefinements();\n if (strapColorCarousel && strapColorCarousel.length > 0) {\n plpColorStrap();\n widget3DConfiguration();\n }\n resetProductAnchors();\n if (window.SFRA.SitePreferences.yotpoEnabled && window.yotpo) {\n window.yotpo.initWidgets();\n }\n\n progress.hideLoader();\n }\n ).then(function() {\n if (options.event === 'refine' || options.event === 'sort') {\n _handleRefinementTracking();\n }\n });\n}\n\n/**\n * Update sort option URLs from Ajax response\n *\n * @param {string} response - Ajax response HTML code\n * @return {undefined}\n */\nfunction _updateSortOptions(response) {\n let parser = new DOMParser(),\n sortOptionsEl = parser.parseFromString(response, 'text/html').querySelector('[data-sort-options]'),\n sortOptions = sortOptionsEl ? JSON.parse(sortOptionsEl.getAttribute('data-sort-options')).options : [];\n\n sortOptions.forEach(function(option) {\n let matchedOptionEls = document.querySelectorAll(`[data-sort-option-id=\"${option.id}\"]`);\n\n [].forEach.call(matchedOptionEls, currentOptionEl => currentOptionEl.href = option.url);\n });\n}\n\nlet itemArray = readCookie('item-list') ? JSON.parse(decodeURIComponent(readCookie('item-list'))) : [];\n\nfunction _setItemListName(itemListid, itemListName) {\n let itemObj = {\n itemListid: itemListid,\n itemListName: itemListName\n };\n itemArray.push(itemObj);\n const newMap = new Map();\n itemArray.forEach((item) => newMap.set(item.itemListid, item));\n let newArr = [ ...newMap.values() ];\n createCookie('item-list', encodeURIComponent(JSON.stringify(newArr)));\n}\n\nfunction pushDataLayer(itemId) {\n let dataLayer = window.dataLayer;\n let listView = dataLayer.filter(function(index) {\n return index.event == 'eeListView' ? index : '';\n });\n if (listView.length > 0) {\n\n let getListName = listView[0].products[0].listName;\n _setItemListName(itemId, getListName);\n }\n\n}\n\nfunction strapStatus(isStrapUnvailable, _ev) {\n _ev.closest('.strap-bar__dailog').find('[data-product-component=\"add-button\"]').prop('disabled', !!isStrapUnvailable);\n}\n\nexport function plpColorStrap() {\n let strapCount = document.querySelectorAll('[data-strap-count]'),\n closeStrap = document.querySelectorAll('[data-close-strap]'),\n _colorStrap = document.querySelectorAll('[data-strap-plp]'),\n _colorStrapOptions = document.querySelectorAll('[data-strap-plp-options]'),\n strapName = $('.pdp-straps__item'),\n _strap,\n _parent,\n _starpVal,\n strapView,\n _parentNode,\n _this,\n starpBar;\n\n [].forEach.call(strapCount, currentItem => currentItem.addEventListener('click', function() {\n starpBar = $(this).parent().find('.strap-bar__dailog');\n const $strapBarDialogToClose = $(closeStrap).closest('.strap-bar__dailog');\n document.body.classList.add('strap-dialog-overlay');\n $(this).closest('.product-grid__item').addClass('index');\n $strapBarDialogToClose.removeClass('opacity');\n $(closeStrap).closest('.product-tile').removeClass('index strap-view-active');\n $(starpBar).addClass('opacity');\n $(this).closest('.product-tile').addClass('index strap-view-active');\n $(this).parent().find('.window-overlay').addClass('strap-overlay');\n $('.search-results__container').addClass('index');\n $('.pdp-straps__carousel').slick('setDimensions');\n\n // Remove the source of the previously open iframe to offload resources.\n const $iframeToReset = $strapBarDialogToClose.find('iframe.webgl-img');\n $iframeToReset.attr('src', 'about:blank');\n\n // Load iframe with 3d visualisation for the current product.\n const $iframe = starpBar.find('iframe.webgl-img');\n $iframe.attr('src', $iframe.data('src'));\n const _lastVal = starpBar.find('.toggle');\n const _active = starpBar.find('.default-active');\n $(_lastVal).removeClass('toggle--active toggle');\n $(_active).addClass('toggle--active toggle');\n }));\n\n [].forEach.call(closeStrap, currentItem => currentItem.addEventListener('click', function() {\n document.body.classList.remove('strap-dialog-overlay');\n $(this).closest('.product-grid__item').removeClass('index');\n $(this).closest('.strap-bar__dailog').removeClass('opacity');\n $(this).closest('.product-tile').removeClass('index strap-view-active');\n $('.window-overlay').removeClass('strap-overlay');\n $('.search-results__container').addClass('index');\n }));\n\n [].forEach.call(_colorStrap, currentItem => currentItem.addEventListener('click', function() {\n _starpVal = $(this).find('.starpcolor-name').text(),\n _parentNode = $(this).parents('.strap-bar__dailog').find('.strap-name'),\n _this = $(this);\n let isDefaultStrap = this.options && this.options[this.selectedIndex].getAttribute('data-default-strap') ? this.getAttribute('data-default-strap') : false;\n let dataStrapInstock = this.options ? this.options[this.selectedIndex].getAttribute('data-strap-instock') : this.getAttribute('data-strap-instock');\n let strapInstock = isDefaultStrap && isDefaultStrap === 'true' ? isDefaultStrap : dataStrapInstock;\n\n let isStrapUnvailable = strapInstock && strapInstock == 'false' ? true : false;\n $(_parentNode).empty();\n $(_parentNode).html(_starpVal);\n let parent = $(this).parents('[data-product-container=\"tile\"]'),\n pid = parent ? $(parent).data('pid') : '',\n pdpLinkEle = $('[data-pdp-link-of=\"' + pid + '\"]'),\n url = $(this).attr('href'),\n queryStringParams = getQueryStringParams(url),\n pdpLink = pdpLinkEle.attr('href'),\n options = getOptions(this);\n\n options.forEach(function(option) {\n let optionObj = {};\n optionObj[option.optionId] = option.selectedValueId;\n queryStringParams = Object.assign(optionObj, queryStringParams);\n });\n\n if (pdpLinkEle && pdpLink && queryStringParams) {\n pdpLink = pdpLink.split('?')[0];\n pdpLinkEle.attr('href', appendParamsToURL(pdpLink, queryStringParams));\n }\n if ($(this).attr('data-default-strap') == 'true') {\n pdpLinkEle.attr('href', url);\n\n $(_colorStrapOptions).each(function() {\n if ($(this).hasClass('toggle--active')) {\n $(this).removeClass('toggle--active');\n }\n })\n }\n $(strapName).each(function() {\n if ($(this).hasClass('selectedStrapOption')) {\n $(this).removeClass('selectedStrapOption');\n }\n if ($(this).hasClass('toggle--active')) {\n $(this).addClass('selectedStrapOption');\n }\n })\n\n strapStatus(isStrapUnvailable, _this);\n }));\n\n $(strapName).each(function() {\n if ($(this).hasClass('toggle--active')) {\n $(this).addClass('toggle default-active');\n _strap = $(this).find('.starpcolor-name').text();\n _parent = $(this).parents('.strap-bar__dailog').find('.strap-name');\n $(_parent).html(_strap);\n }\n })\n\n $(strapCount).each(function() {\n $(this).parents('.product-tile').addClass('overlay');\n })\n\n $(strapCount).click(function(e) {\n if ($(e.target).closest('.product-tile').length > 0) {\n return false;\n } else {\n if ($('.strap-bar__dailog').hasClass('opacity')) {\n document.body.classList.remove('strap-dialog-overlay');\n $('.product-grid__item').removeClass('index');\n $('.strap-bar__dailog').removeClass('opacity');\n $('.product-tile').removeClass('index strap-view-active');\n $('.window-overlay').removeClass('strap-overlay');\n $('.search-results__toolbar').removeClass('index');\n }\n }\n });\n\n if ($('.product-grid').hasClass('feed-view')) {\n strapView = 'feed'\n } else {\n strapView = 'grid'\n }\n setTimeout(function() {\n strapCarouselView(strapView);\n }, 2000);\n resetProductAnchors();\n}\n\nexport function addItemCookie() {\n let productShow = document.querySelectorAll('[data-product-tile]'),\n productShowQuickAdd = document.querySelectorAll('[data-product-url=\"productShowQuickAdd\"]'),\n productShowQuickView = document.querySelectorAll('[data-product-url=\"productShowQuickView\"]');\n let selectorElements = [ productShow, productShowQuickAdd, productShowQuickView ];\n\n selectorElements.forEach(function(selector) {\n selector.forEach(function(element) {\n element.addEventListener('click', function() {\n let itemId = this.closest('.product-tile').getAttribute('data-tracking-id');\n pushDataLayer(itemId);\n })\n })\n })\n}\n\n/**\n * Re-inits all listeners for elements and toggles on the page.\n * @return {[type]} [description]\n */\nfunction _resetElementListeners() {\n setupSortListener();\n setupShowMoreListener();\n setupFiltersListener();\n setupContentTabListener();\n toggleGridFeed();\n}\n\n/**\n * Initializes a `popstate`` listener, that is whenever the user uses the browser's navigation arrows.\n * @return {[type]} [description]\n */\nexport function setupPopListener() {\n window.addEventListener('popstate', function() {\n let searchMain = document.querySelector('[data-search-component=\"search-main\"]'),\n cgid = searchMain.querySelector('[data-cgid]'),\n requestParams = getQueryStringParams(window.location.search);\n\n //Always attempt to set the category ID if available.\n //This prevents loading into a blank page if SEO friendly URLs are enabled.\n if (cgid) {\n requestParams.cgid = cgid.value;\n }\n\n _updateResults({\n url: appendParamsToURL(window.SFRA.Urls.searchShowAjax, requestParams),\n event: 'navigation',\n target: searchMain,\n callback: _resetElementListeners\n });\n });\n}\n\n/**\n * Initializes sort listener.\n * Leverages Toggle functionality to update the state of toggle.\n * @return {[type]} [description]\n */\nexport function setupSortListener() {\n let searchMain = document.querySelector('[data-search-component=\"search-main\"]');\n\n callbackOnElements('[data-search-component=\"search-sort\"]', function(currentSortEl) {\n let sortElAnchors = currentSortEl.querySelectorAll('[data-search-component=\"search-sort-anchor\"]');\n\n [].forEach.call(sortElAnchors, function(currentSortAnchor) {\n currentSortAnchor.addEventListener('click', _updateResults.bind(currentSortAnchor, {\n target: searchMain,\n event: 'sort',\n updateHTML: true,\n updateHistory: true,\n callback: _resetElementListeners,\n targetFocus: '[data-search-component=\"search-sort-trigger\"]'\n }));\n });\n });\n}\n\n// Show more products\nexport function setupShowMoreListener() {\n let showMoreBtn = document.querySelector('[data-search-component=\"more-products\"]'),\n gridFooter = document.querySelector('[data-search-component=\"product-grid-footer\"]');\n\n //showMoreBtn is not always present.\n if (showMoreBtn && !showMoreBtn.disabled) {\n let strapView;\n let loadMore = _updateResults.bind(showMoreBtn, {\n target: gridFooter,\n event: 'showMore',\n loadingContainer: showMoreBtn.closest('[data-search-component=\"product-grid-footer\"]'),\n callback: function(response) {\n _updateSortOptions(response);\n toggleHiddenRefinements();\n setupShowMoreListener();\n plpColorStrap();\n widget3DConfiguration();\n if ($('.product-grid').hasClass('feed-view')) {\n strapView = 'feed'\n } else {\n strapView = 'grid'\n }\n setTimeout(function() {\n strapCarouselView(strapView);\n }, 1000);\n }\n });\n\n showMoreBtn.addEventListener('click', function() {\n updatePageHistory(getNextPageNumber(this));\n loadMore();\n });\n\n if (window.SFRA.SitePreferences.enableInfiniteScroll) {\n setupInfiniteScroll(showMoreBtn, loadMore);\n }\n }\n}\n\n// Handle refinement value selection and reset click\nexport function setupFiltersListener() {\n let searchMain = document.querySelector('[data-search-component=\"search-main\"]'),\n pageNumberEl = document.querySelector('[data-page-number]'),\n pageNumber = pageNumberEl ? parseInt(pageNumberEl.getAttribute('data-page-number')) : 1,\n refinementActions = document.querySelectorAll('[data-refinement-action]');\n\n [].forEach.call(refinementActions, function(currentAction) {\n let refinementAction = currentAction.getAttribute('data-refinement-action'),\n refinementID = currentAction.getAttribute('data-refinement-id');\n\n currentAction.addEventListener('click', _updateResults.bind(currentAction, {\n target: searchMain,\n event: 'refine',\n requestData: { page: pageNumber },\n updateHistory: true,\n callback: _resetElementListeners,\n targetFocus: refinementID ? `[data-refinement-id=\"${refinementID}\"]` : `[data-refinement-type*=\"${refinementAction}\"]`\n }));\n });\n}\n\n// Display content results from the search\nexport function setupContentTabListener() {\n let contentSearchTrigger = document.querySelector('[data-search-component=\"content-trigger\"]'),\n contenSearchResultsEl = document.querySelector('[data-search-component=\"content-list\"]'),\n showMoreBtn = document.querySelector('[data-search-component=\"content-more\"]');\n\n if (contentSearchTrigger && contentSearchTrigger.toggle) {\n contentSearchTrigger.toggle.afterSet = function(trigger) {\n if (!trigger.hasAttribute('data-search-content-loaded')) {\n trigger.setAttribute('data-search-content-loaded', true);\n\n _updateResults.call(trigger, {\n target: contenSearchResultsEl,\n updateHTML: true,\n event: 'contentUpdate'\n });\n }\n };\n }\n\n if (showMoreBtn) {\n showMoreBtn.addEventListener('click', _updateResults.bind(showMoreBtn, {\n target: contenSearchResultsEl,\n appendHTML: true,\n event: 'contentUpdate'\n }));\n }\n}\n\nfunction strapCarouselView(strapView) {\n let productStrap = document.querySelectorAll('[data-strap-carousel]');\n if (productStrap.length > 0) {\n if (strapView === 'feed') {\n $(productStrap).slick('slickSetOption', {\n slidesToShow: 3,\n slidesToScroll: 1\n }, true);\n } else {\n $(productStrap).slick('slickSetOption', {\n slidesToShow: 2,\n slidesToScroll: 1\n }, true);\n }\n }\n}\n\nexport function resetProductAnchors() {\n let allAnchors = document.querySelectorAll('.product-tile__anchor');\n [].forEach.call(allAnchors, function(currentAnchor) {\n currentAnchor.addEventListener('click', function() {\n window.location = this.href;\n })\n })\n}\n\n//Toggle Grid and Feed view\nexport function toggleGridFeed() {\n let gridFeedToggleEls = document.querySelectorAll('[data-search-component=\"grid-feed-toggle\"]'),\n productGridEl = document.querySelector('[data-search-component=\"product-grid\"]'),\n view;\n [].forEach.call(gridFeedToggleEls, function(gridFeedToggle) {\n gridFeedToggle.addEventListener('click', function() {\n [].forEach.call(gridFeedToggleEls, el => el.classList.remove('set--active'));\n\n this.classList.add('set--active');\n\n if (this.dataset.searchLayout === 'feed') {\n view = this.dataset.searchLayout\n productGridEl.classList.add('feed-view');\n strapCarouselView(view);\n\n } else {\n view = this.dataset.searchLayout\n productGridEl.classList.remove('feed-view');\n strapCarouselView(view);\n }\n\n if ($('.slick-slider')) {\n $('.slick-slider').slick('setDimensions');\n $('.slick-slider').slick('setPosition');\n }\n\n updateHistoryState(appendParamsToURL('', { 'toggleGridFeed': this.dataset.searchLayout }, true));\n });\n });\n}\n\nexport function descriptionMobileTruncate() {\n let plpDescription = document.querySelector('.descriptive-card__description'),\n readMoreBtn = document.querySelector('.read-more-btn.read-more'),\n readLessBtn = document.querySelector('.read-more-btn.read-less');\n if (plpDescription) {\n if ((plpDescription.offsetHeight < plpDescription.scrollHeight) || (plpDescription.offsetWidth < plpDescription.scrollWidth)) {\n readMoreBtn.style.display = 'inline-block';\n } else {\n readMoreBtn.style.display = 'none';\n readLessBtn.style.display = 'none';\n }\n\n readMoreBtn.addEventListener('click', function() {\n plpDescription.classList.remove('text-line-clamp');\n this.style.display = 'none';\n readLessBtn.style.display = 'inline-block';\n });\n readLessBtn.addEventListener('click', function() {\n plpDescription.classList.add('text-line-clamp');\n this.style.display = 'none';\n readMoreBtn.style.display = 'inline-block';\n });\n }\n}\n\nwindow.addEventListener('resize', descriptionMobileTruncate);\n\nexport default {\n setupSort: setupSortListener,\n setupShowMore: setupShowMoreListener,\n setupFilters: setupFiltersListener,\n setupContentTab: setupContentTabListener,\n setupPopListener: setupPopListener,\n toggleGridFeed: toggleGridFeed,\n toggleHiddenRefinements: toggleHiddenRefinements,\n descriptionMobileTruncate: descriptionMobileTruncate,\n widget3DConfiguration: widget3DConfiguration,\n addItemCookie: addItemCookie,\n plpColorStrap: plpColorStrap,\n resetProductAnchors: resetProductAnchors\n}\n","/**\n * [Modules] Reusable methods shared across the site. Typically, methods defined here _should_ be used across several pages.\n * As opposed to utilities, these methods are ran on document ready if its query is available.\n */\n\n// Modules\nimport {callbackOnElements} from '@borngroup/born-utilities';\nimport coreModules from '*/modules';\n\ncoreModules.nameConverter = {\n default: '[data-name-converter-url]',\n init: function(query) {\n return import(/* webpackChunkName: \"module-name-converter\" */ '../modules/module.name-converter').then(NameConverter => {\n callbackOnElements(query || this.default, (el) => new NameConverter.default(el));\n });\n }\n}\n\ncoreModules.loqateAddressCapture = {\n default: '[data-loqateaddress-capture]',\n init: function(query) {\n if (window.SFRA.SitePreferences.addressAutocompleteEnabled && window.SFRA.SitePreferences.enableLoqateAddressCapture) {\n return import(/* webpackChunkName: \"module-loqateAddress-capture\" */ '../modules/module.loqateAddress-capture').then(loqateAddressCapture => {\n return loqateAddressCapture.init({elements: query || this.default});\n });\n }\n }\n}\n\nexport default coreModules;\n","/**\n * Add page/section specific features here.\n *\n * To load a feature on more than one page,\n * separate each class name with a comma and a space\n * @type {Object}\n */\n\nimport corePages from '*/pages';\n\ncorePages.profileEdit = {\n default: '[data-action=\"Account-EditProfile\"]',\n init: function() {\n return import(/* webpackChunkName: \"profile-edit\" */ '../account/profileEdit').then(function(profileEdit) {\n return profileEdit.default();\n });\n }\n}\n\ncorePages.subscriptions = {\n default: '[data-action=\"Account-Subscriptions\"]',\n init: function() {\n return import(/* webpackChunkName: \"account-subscriptions\" */ '../account/subscriptions').then(function(subscriptions) {\n return subscriptions.default();\n });\n }\n}\n\ncorePages.requestprice = {\n default: '[data-action=\"Product-Show\"], [data-action=\"Search-Show\"]',\n init: function() {\n return import(/* webpackChunkName: \"page-requestprice\" */ '../price').then(function(price) {\n return price.default();\n });\n }\n}\n\nexport default corePages;\n","'use strict';\n\nexport const subscribers = {};\n\nexport function subscribe(event, callback) {\n let index;\n\n subscribers[event] = subscribers[event] || [];\n\n index = subscribers[event].push(callback) - 1;\n\n return {\n unsubscribe() {\n subscribers[event].splice(index, 1);\n }\n }\n}\n\nexport function publish(event, data) {\n if (subscribers[event]) {\n subscribers[event].forEach(subscriberCallback => subscriberCallback(data));\n }\n}\n","'use strict';\n\nconst sendCustomerHashToServiceWorker = function(info) {\n navigator.serviceWorker.ready.then(function(registration) {\n registration.active.postMessage({\n type: 'customerHash',\n hash: info.hash,\n loginState: info.userLoginState\n });\n })\n}\n\nconst getCookie = function(cookieName) {\n let cookie = {};\n document.cookie.split(';').forEach(function(el) {\n let [ key, value ] = el.split('=');\n cookie[key.trim()] = value;\n });\n return cookie[cookieName];\n}\n\nfunction getHashFromCookieAndSend() {\n if ('serviceWorker' in navigator) {\n // this time we can fetch customer hash data from cookie\n var hashData = {\n hash: getCookie('X-SF-CC-PGI'),\n userLoginState: getCookie('X-SF-CC-A')\n };\n sendCustomerHashToServiceWorker(hashData);\n }\n}\n\nfunction init() {\n $('body').on('product:afterAddToCart', getHashFromCookieAndSend);\n $('body').on('lineItem:afterRemoveFromCart', getHashFromCookieAndSend);\n}\n\nmodule.exports = {\n init: init\n}\n","import polyfills from './helpers/polyfills.js';\n\nimport {subscribe, publish} from './helpers/pubSub';\nimport {initMethods, initModules, initPages} from './helpers/utilities';\nimport detectFocusType from './components/detectFocusType';\nimport lazySizes from 'lazysizes';\nimport ShopTheLook from './components/shopTheLook.js';\n\nimport header from './components/header';\nimport * as miniCart from './components/miniCart';\nimport './components/customValidation';\nimport * as serviceWorkerEvents from './helpers/serviceWorkerEvents';\n\n__webpack_public_path__ = `${window.SFRA.Urls.staticPath}js/`;\n\nif (window.SFRA.SitePreferences.serviceWorkerCartridgeEnabled && window.SFRA.SitePreferences.enableServiceWorker && window.SFRA.ServiceWorkerPreference && window.SFRA.ServiceWorkerPreference.akamaiEnabled && 'serviceWorker' in navigator) {\n serviceWorkerEvents.init();\n}\n\npolyfills();\n\nlazySizes.init();\ndetectFocusType();\n\ninitModules();\ninitPages();\n\nheader();\ninitMethods(miniCart.init);\nif (window.SFRA.SitePreferences.enableShopTheLook) {\n ShopTheLook();\n}\n\n//Provide an easy way to initialize modules from a template.\n//This is useful for setting up JS functionality for content that renders outside of our domain, like Einsten.\n//`window.SFRA` is initially set in \"/common/clientResources.isml\", ensure it is picked up before adding a new property.\nwindow.SFRA = window.SFRA || {};\n\nwindow.SFRA.publish = publish;\n\nsubscribe('init:modules', initModules);\n","'use strict';\n\nimport {getQueryStringParams, appendParamsToURL} from '../helpers/urlUtilities';\nimport * as productUtils from '*/productUtils';\n\n/**\n * Retrieves the product data from the children of the current container.\n * Used by backend to determine what to add to cart.\n *\n * @return {string[]} - List of selected bundle product item ID's\n */\nexport function getChildProducts(container) {\n let productType = getProductType(container),\n isProductSet = productType === 'set',\n productData = [],\n productList = container.querySelectorAll(`[data-product-container=\"${productType}-item\"]`);\n\n [].forEach.call(productList, function(currentItem) {\n let currentItemQty = getQuantitySelected(currentItem),\n currentItemData = {\n pid: getPidValue(currentItem),\n options: getOptions(currentItem, true)\n };\n\n //SFCC checks for different properties depending if item is a Product Set or not (quantity vs qty).\n currentItemData[isProductSet ? 'qty' : 'quantity'] = currentItemQty;\n\n productData.push(currentItemData);\n });\n\n return {\n list: productList,\n data: JSON.stringify(productData)\n };\n}\n\n/**\n * Retrieve product options\n *\n * @param {HTMLNodeEl} referenceEl - DOM element to use as a reference to find the closest productConatiner.\n * @return {string} - Product options and their selected values\n */\nexport function getOptions(referenceEl, stringify) {\n let productContainer = getProductContainer(referenceEl),\n options = [].map.call(productContainer.querySelectorAll('[data-option-id]'), function(currentItem) {\n let optionsEl = currentItem.querySelector('[data-product-component=\"option-selection\"]'),\n selectedValueId = optionsEl ? optionsEl.options[optionsEl.selectedIndex].getAttribute('data-value-id') : currentItem.getAttribute('data-option-value-id');\n\n if (!selectedValueId) {\n [].map.call(productContainer.querySelectorAll('[data-static-option-id]'), function(currentItem) {\n if (currentItem.classList.contains('selectedStrapOption')) {\n selectedValueId = currentItem.getAttribute('data-static-option-id');\n } else if (currentItem.classList.contains('plpSlectedStrap')) {\n selectedValueId = currentItem.getAttribute('data-static-option-id');\n }\n });\n }\n\n return {\n optionId: currentItem.getAttribute('data-option-id'),\n selectedValueId: selectedValueId\n };\n });\n\n return stringify ? JSON.stringify(options) : options;\n}\n\n/**\n * Retrieves the relevant Product ID value.\n */\nexport function getPidValue(el) {\n return getProductContainer(el).getAttribute('data-pid');\n}\n\n/**\n * Retrieves the relevant product type value (pdp, quickview, tile, set, set-item, bundle, bundle-item).\n */\nexport function getProductType(el) {\n return getProductContainer(el).getAttribute('data-product-container');\n}\n\nexport function updateSingleID(newID, targetEl, productContainer, updateIDText) {\n //If a `productContainer` is provided, do not update the PIDs for children of sub-products.\n //This is necessary to prevent a product bundle overriding its items PIDs.\n if (!productContainer || productContainer === getProductContainer(targetEl)) {\n targetEl.setAttribute('data-pid', newID);\n\n if (updateIDText) {\n targetEl.textContent = newID;\n }\n }\n}\n\nexport function updatePIDs(newID, productContainer) {\n updateSingleID(newID, productContainer);\n\n [].forEach.call(productContainer.querySelectorAll('[data-pid]'), currentEl => updateSingleID(newID, currentEl, productContainer));\n [].forEach.call(productContainer.querySelectorAll('[data-product-component=\"pid\"]'), currentEl => updateSingleID(newID, currentEl, productContainer, true));\n}\n\n/**\n * Update any matches of \"[data-product-component=\"name\"]\" within a `productContainer` with the `newName` value.\n */\nexport function updateName(newName, productContainer) {\n [].forEach.call(productContainer.querySelectorAll('[data-product-component=\"name\"]'), currentEl => currentEl.innerHTML = newName);\n}\n\n/**\n * Update the product images elements with the provided `responseImages`.\n * @param {Array} responseImages [List of images that the view should be updated with]\n * @param {HTMLElement} productContainer [The container for the product. Provides context for image selection]\n * @param {String} imageSelector [The image selector to use to get a give image list.]\n * @param {Boolean} updateImageDifference [If TRUE, updates the view so that it matches the amount of images available in `responseImages`]\n */\nexport function updateImages(responseImages, productContainer, imageSelector = '[data-product-component*=\"image\"]', updateImageDifference) {\n if (updateImageDifference) {\n updateImageList(responseImages, productContainer);\n }\n\n [].forEach.call(productContainer.querySelectorAll(imageSelector), function(currentEl) {\n updateSingleImage(responseImages[currentEl.getAttribute('data-image-index')], currentEl);\n });\n}\n\n\n/**\n * Checks wether the `responseImages` object matches the current list of viewable images.\n * If it doesn't, updates the view so that viewable images are displayed or hidden.\n */\nexport function updateImageList(responseImages, productContainer) {\n let imageCarousels = productContainer.querySelectorAll('[data-product-component*=\"-gallery\"]');\n\n [].forEach.call(imageCarousels, function(imageCarousel) {\n let imageCarouselConfig = imageCarousel.hasAttribute('data-carousel-config') ? $(imageCarousel).slick('getSlick') : null,\n carouselEnabled = imageCarouselConfig && !imageCarouselConfig.unslicked,\n imageCarouselLength = carouselEnabled ? imageCarouselConfig.slideCount : imageCarousel.childElementCount,\n imageCountDifference = (responseImages.length - imageCarouselLength) > 0 ? responseImages.length - imageCarouselLength : 0,\n hasNewImages = responseImages.length > imageCarouselLength;\n\n //Loop through however many counts of images are either missing or additional.\n for (let i = 0; i < imageCountDifference; i++) {\n //If there are missing images, clone the image template and insert it in the current gallery container.\n if (hasNewImages) {\n let imageTemplate = productContainer.querySelector(`[data-image-template=\"${imageCarousel.getAttribute('data-product-component')}\"]`).cloneNode(true);\n\n imageTemplate.querySelector('[data-image-index]').setAttribute('data-image-index', imageCarouselLength++);\n imageTemplate.removeAttribute('data-image-template');\n\n //Either use the native `appendChild` or the carousel's \"add\" method to insert the new images.\n if (carouselEnabled) {\n $(imageCarousel).slick('slickAdd', imageTemplate);\n } else {\n imageCarousel.appendChild(imageTemplate);\n }\n } else {\n //If there are additional images in the DOM, remove them.\n //Check wether or not there's a carousel enabled before removing the elements.\n if (carouselEnabled) {\n $(imageCarousel).slick('slickRemove', --imageCarouselLength);\n } else {\n imageCarousel.removeChild(imageCarousel.lastElementChild);\n }\n }\n }\n\n $('body').trigger('product:imageListUpdate',\n {\n container: productContainer,\n imageContainer: imageCarousel,\n type: imageCarousel.getAttribute('data-product-component'),\n }\n );\n });\n}\n\nexport function updateSingleImage(currentImgObj, currentImgEl) {\n var isPdpRelatedVariationsProduct = currentImgEl.closest('.pdp-related-variations') != null;\n if (currentImgObj && !isPdpRelatedVariationsProduct) {\n currentImgEl.src = currentImgObj.url;\n currentImgEl.title = currentImgObj.title;\n currentImgEl.alt = currentImgObj.alt;\n }\n}\n\n/**\n * Update URLs within the provided `productContainer`.\n * Elements matching the `[data-product-url]` selector will get their `.href` property updated.\n * @param {[type]} newURL [The desired new URL]\n * @param {[type]} productContainer [The target container]\n */\nexport function updateURLs(newURL, productContainer) {\n let urlEls = productContainer.querySelectorAll('[data-product-url]'),\n queryParams = getQueryStringParams(newURL);\n\n [].forEach.call(urlEls, function(currentEl) {\n let urlType = currentEl.getAttribute('data-product-url'),\n variationGroup = currentEl.getAttribute('data-product-group'),\n productGrouping = document.querySelector('[data-product-grouping=\"productGrouping\"]'),\n //A URL \"type\" may be set in the 'data-product-url' attribute.\n //When available, it will look in `window.SFRA.Urls` for a URL type match.\n //This is useful for when you need to update several URLs within a container\n //that may target different Product presentation views, for example a PDP, QuickView, or QuickAdd, etc.\n updatedURL = urlType ? appendParamsToURL(window.SFRA.Urls[urlType], queryParams) : newURL;\n if (currentEl.tagName === 'A') {\n if (productGrouping !== null && variationGroup !== null) {\n currentEl.href = currentEl.href ? currentEl.href : updatedURL;\n } else {\n currentEl.href = updatedURL;\n }\n } else {\n currentEl.setAttribute('data-url', updatedURL);\n }\n });\n}\n\n/**\n * Updates matching elements with the new querystring value.\n * This value is used for things like easy requesting data from the current product configuration on demand, like loading a zoom modal.\n * @param {[type]} newQueryString [description]\n * @param {[type]} productContainer [description]\n */\nexport function updateQueryStrings(newQueryString, productContainer) {\n productContainer.setAttribute('data-product-querystring', newQueryString);\n}\n\n/**\n * Updates the current product's price with the provided HTML.\n */\nexport function updateProductPrice(productContainer, product) {\n let priceEl = productContainer.querySelector('[data-product-component=\"price\"]'),\n priceTaxEl = $('[data-product-component=\"pdp-price-tax-element\"]');\n priceTaxEl.addClass('hidden');\n\n if (product && priceEl) {\n priceEl.outerHTML = product.price.html;\n if (product.available && product.sellable && (product.price && product.price.type !== 'range' && product.price.sales && product.price.sales.value)) {\n priceTaxEl.removeClass('hidden');\n }\n }\n}\n\n/**\n * Retrieve contextual quantity selector\n * @param {jquery} $el - DOM container for the relevant quantity\n * @return {jquery} - quantity selector DOM container\n */\nexport function getQuantitySelector(el) {\n return getProductContainer(el).querySelector('[data-product-component=\"qty\"]');\n}\n\n/**\n * Retrieves the value associated with the Quantity pull-down menu\n * @param {jquery} $el - DOM container for the relevant quantity\n * @return {string} - value found in the quantity input\n */\nexport function getQuantitySelected(el) {\n let quantitySelector = getQuantitySelector(el);\n\n return quantitySelector ? quantitySelector.value : 1;\n}\n\nexport function getProductContainer(el) {\n return el.closest('[data-product-container]');\n}\n\nexport function chooseColorBackToPdp() {\n let selectedStrapOption = document.querySelector('.selectedStrapOption'),\n defaultStrapOption = document.querySelector('[data-default-strap=\"true\"]'),\n addToCart = document.querySelector('[data-product-component=\"add-button\"]'),\n stockAvailability = document.querySelector('[data-product-component=\"stock-availability-status\"]'),\n availabilityStatus = document.querySelectorAll('[data-product-component=\"availability-status\"]'),\n availabilityNotification = document.querySelector('[data-notification-component=\"stock-availability-status\"]'),\n showNotify = document.querySelector('[data-product-component=\"stock-availability-status\"]'),\n backToProductBtn = document.querySelector('[data-choose-color-back-to-product=\"back-to-product\"]'),\n productInStock = 'true';\n\n if (backToProductBtn && backToProductBtn != null) {\n productInStock = backToProductBtn.dataset.parentProductInstock;\n }\n\n if (selectedStrapOption && selectedStrapOption != null) {\n if (selectedStrapOption.dataset.strapInstock === 'true' && productInStock === 'true') {\n if (addToCart && addToCart != null && showNotify && showNotify != null && addToCart.classList.contains('hidden')) {\n addToCart.classList.remove('hidden');\n showNotify.classList.add('hidden');\n }\n if (addToCart.disabled) {\n addToCart.disabled = false;\n }\n if (availabilityNotification && availabilityNotification != null) {\n availabilityNotification.classList.add('hidden');\n }\n if (stockAvailability && stockAvailability != null && availabilityStatus && availabilityStatus != null) {\n stockAvailability.classList.add('hidden');\n [].forEach.call(availabilityStatus, function(currentEl) {\n currentEl.classList.add('hidden');\n });\n }\n } else {\n if (productInStock === 'false' && addToCart && addToCart != null && showNotify && showNotify != null && showNotify.classList.contains('hidden')) {\n showNotify.classList.remove('hidden');\n addToCart.classList.add('hidden');\n }\n if (stockAvailability && stockAvailability != null && stockAvailability.classList.contains('hidden') && availabilityStatus && availabilityStatus != null) {\n stockAvailability.classList.remove('hidden');\n [].forEach.call(availabilityStatus, function(currentEl) {\n if ( currentEl.classList.contains('hidden')) {\n currentEl.classList.remove('hidden');\n }\n });\n }\n if (availabilityNotification && availabilityNotification != null && availabilityNotification.classList.contains('hidden')) {\n availabilityNotification.classList.remove('hidden');\n }\n }\n } else {\n if (defaultStrapOption && defaultStrapOption != null) {\n if (addToCart.disabled) {\n addToCart.disabled = false;\n }\n if (stockAvailability && stockAvailability != null && availabilityStatus && availabilityStatus != null) {\n stockAvailability.classList.add('hidden');\n [].forEach.call(availabilityStatus, function(currentEl) {\n currentEl.classList.add('hidden');\n });\n }\n if (availabilityNotification && availabilityNotification != null) {\n availabilityNotification.classList.add('hidden');\n }\n if (addToCart && addToCart != null && showNotify && showNotify != null && defaultStrapOption.dataset.strapInstock === 'true' && productInStock == 'true') {\n if (addToCart.classList.contains('hidden')) {\n addToCart.classList.remove('hidden');\n showNotify.classList.add('hidden');\n }\n } else {\n if (productInStock === 'false' && addToCart && addToCart != null && showNotify && showNotify != null && showNotify.classList.contains('hidden')) {\n showNotify.classList.remove('hidden');\n addToCart.classList.add('hidden');\n }\n if (stockAvailability && stockAvailability != null && stockAvailability.classList.contains('hidden') && availabilityStatus && availabilityStatus != null ) {\n stockAvailability.classList.remove('hidden');\n [].forEach.call(availabilityStatus, function(currentEl) {\n if ( currentEl.classList.contains('hidden')) {\n currentEl.classList.remove('hidden');\n }\n });\n }\n if (availabilityNotification && availabilityNotification != null && availabilityNotification.classList.contains('hidden')) {\n availabilityNotification.classList.remove('hidden');\n }\n }\n }\n }\n}\n\n\n\n$('.product-tile__quickshop-trigger').on('click', function(event) {\n let _ele = $(event.currentTarget),\n _eleProductTile = _ele.parents('.product-tile'),\n _quickshopOptions = _ele.parents('.product-tile__quickshop').find('.product-tile__quickshop-options');\n\n _eleProductTile.addClass('quick-shop-active');\n _ele.addClass('hidden');\n _quickshopOptions.removeClass('hidden');\n})\n\n$('.product-tile__quickshop-options-close-btn').on('click', function(event) {\n let _ele = $(event.currentTarget),\n _eleProductTile = _ele.parents('.product-tile'),\n _eleQuichShopBtn = _ele.parents('.product-tile__quickshop-trigger'),\n _quickshopOptions = _ele.parents('.product-tile__quickshop').find('.product-tile__quickshop-options');\n\n _eleProductTile.removeClass('quick-shop-active');\n _eleQuichShopBtn.removeClass('hidden');\n _quickshopOptions.addClass('hidden');\n})\n\nexport var initShareLink = productUtils.initShareLink;\n","\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});exports[\"default\"]=void 0;var _bornUtilities=require(\"@borngroup/born-utilities\");var _bodyScrollLock=require(\"body-scroll-lock\");function _typeof(obj){\"@babel/helpers - typeof\";if(typeof Symbol===\"function\"&&typeof Symbol.iterator===\"symbol\"){_typeof=function _typeof(obj){return typeof obj}}else{_typeof=function _typeof(obj){return obj&&typeof Symbol===\"function\"&&obj.constructor===Symbol&&obj!==Symbol.prototype?\"symbol\":typeof obj}}return _typeof(obj)}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError(\"Cannot call a class as a function\")}}function _defineProperties(target,props){for(var i=0;i=25){clearInterval(checkReady)}},10)}},{key:\"getCustomAttributes\",value:function getCustomAttributes(targetModal){var labelledByEl=targetModal.querySelector('[data-modal-component=\"labelledby\"]'),describedByEl=targetModal.querySelector('[data-modal-component=\"describedby\"]');if(labelledByEl&&!labelledByEl.id){labelledByEl.id=\"ID_\"+Math.floor((new Date).getTime()*Math.random()).toString()}if(describedByEl&&!describedByEl.id){describedByEl.id=\"ID_\"+Math.floor((new Date).getTime()*Math.random()).toString()}return{role:{value:\"dialog\",target:true},\"aria-labelledby\":labelledByEl?{value:labelledByEl.id,target:true}:false,\"aria-describedby\":describedByEl?{value:describedByEl.id,target:true}:false,\"aria-modal\":{value:\"true\",target:true}}}}],[{key:\"setModalPosition\",value:function setModalPosition(){Modal.positionTop=Math.abs(document.body.getBoundingClientRect().top)}},{key:\"toggleModalScroll\",value:function toggleModalScroll(targetModal,disable){var scrollableEls=targetModal.querySelectorAll(\"[data-modal-scrollable]\"),toggleBodyScroll=disable?_bodyScrollLock.disableBodyScroll:_bodyScrollLock.enableBodyScroll,scrollOptions=disable?{allowTouchMove:function allowTouchMove(el){while(el&&el!==document.body){if(el.hasAttribute(\"data-modal-scrollable\")){return true}el=el.parentNode}}}:{};toggleBodyScroll(targetModal,scrollOptions);targetModal.scrollHeight;targetModal.modal.afterScrollLockCallback(targetModal)}},{key:\"setModalShown\",value:function setModalShown(){(0,_bodyScrollLock.clearAllBodyScrollLocks)();if(this.hasAttribute(\"data-modal-active\")){if(!this.modal.options.allowScrolling){if(this.modal.options.lockViewport){document.documentElement.classList.add(\"cancel-scroll\")}else{Modal.toggleModalScroll(this,true)}}this.modal.container.classList.add(\"modal-shown\")}Modal.focusModal(this);this.removeEventListener((0,_bornUtilities.whichTransition)(),Modal.setModalShown)}},{key:\"openModal\",value:function openModal(targetModal){var activeModal=Modal.getActiveModal();targetModal=Modal.getModal(targetModal);if(targetModal===activeModal){return false}else if(targetModal.modal.beforeOpenCallback(targetModal)){var targetModalIndex=activeModal?parseInt(activeModal.getAttribute(\"data-modal-index\"))+1:0;targetModal.setAttribute(\"data-modal-index\",targetModalIndex);Modal.setModalPosition();if(!targetModal.modal.options.overlayOthers){Modal.closeAllModals()}else if(activeModal){targetModal.modal.modalInBackground=activeModal;activeModal.classList.add(\"modal-in-background\")}targetModal.classList.add(\"modal-active\");targetModal.setAttribute(\"data-modal-active\",true);Modal.setupEventListeners(targetModal);if(targetModal.modal.options.timeOut){window.setTimeout(Modal.closeModal,targetModal.modal.options.timeOut)}targetModal.modal.afterOpenCallback(targetModal)}}},{key:\"setupEventListeners\",value:function setupEventListeners(targetModal){targetModal.addEventListener(\"mousedown\",Modal.storeLastEvent);targetModal.addEventListener(\"click\",Modal.closeModal);targetModal.addEventListener(\"mouseup\",Modal.closeModal);if(targetModal.modal.options.allowEscClose){document.body.addEventListener(\"keydown\",Modal.closeModal)}targetModal.addEventListener((0,_bornUtilities.whichTransition)(),Modal.setModalShown)}},{key:\"storeLastEvent\",value:function storeLastEvent(evt){this.modal.lastEvent=evt}},{key:\"updateAttributes\",value:function updateAttributes(targetModal,isActive){var customAttributes=targetModal.modal.options.customAttributes;for(var attrKey in customAttributes){if(customAttributes[attrKey]){if(customAttributes[attrKey].trigger){}else if(customAttributes[attrKey].target){Modal.setAttributeValue(targetModal.modal.content,attrKey,customAttributes[attrKey],isActive)}else{Modal.setAttributeValue(targetModal.modal.content,attrKey,customAttributes[attrKey],isActive)}}}}},{key:\"setAttributeValue\",value:function setAttributeValue(el,attrName,attrObject,isActive){var value=typeof attrObject.value===\"string\"?attrObject.value:isActive?attrObject.value[1]:attrObject.value[0];el.setAttribute(attrName,value)}},{key:\"focusModal\",value:function focusModal(targetModal){targetModal.modal.content.focus();targetModal.modal.content.style.outline=\"none\";(0,_bornUtilities.focusTrap)(targetModal)}},{key:\"updateModal\",value:function updateModal(targetModal,content,newID){targetModal=Modal.getModal(targetModal);if(targetModal.modal.beforeOpenCallback(targetModal)){if(newID){targetModal.id=\"modal-\"+newID}if(content){var targetModalContent=targetModal.querySelector(\".window-modal__content\");targetModalContent.innerHTML=\"\";Modal.insertContent(targetModal,content);if(targetModal.modal.options.allowCrossClose){Modal.insertCloseBtn(targetModal)}}targetModal.modal.afterCreateCallback(targetModal);targetModal.modal.afterOpenCallback(targetModal)}}},{key:\"closeAllModals\",value:function closeAllModals(){var activeModals=Modal.getActiveModals();[].forEach.call(activeModals,function(currentModal){Modal.closeModal(false,true)})}},{key:\"closeModal\",value:function closeModal(evt,ignoreBeforeCallback){var targetModal=Modal.getActiveModal(),canClose=true,isCloseAllTarget,isCloseTarget;if(!targetModal){return}if(_typeof(evt)===\"object\"){var isOverlayTarget=targetModal.modal.options.allowClickOutClose&&evt.type===\"mouseup\"&&evt.target===targetModal&&targetModal.modal.lastEvent.target===targetModal&&evt.button===0,evtIsClick=evt.type===\"click\",evtIsEscKey=document.activeElement.tagName!==\"INPUT\"&&evt.keyCode===27&&targetModal.modal.options.allowEscClose,_isCloseTarget=evtIsClick&&evt.target.closest(\"[data-modal-close]\");isCloseAllTarget=evtIsClick&&evt.target.closest(\"[data-modal-close-all]\");canClose=isOverlayTarget||_isCloseTarget||isCloseAllTarget||evtIsEscKey}if(canClose&&(ignoreBeforeCallback||targetModal.modal.beforeCloseCallback(targetModal))){var activeModals=Modal.getActiveModals();if(activeModals.length<=1){document.body.removeEventListener(\"keydown\",Modal.closeModal);document.documentElement.classList.remove(\"cancel-scroll\");if(targetModal.modal.options.resetScrollPositionOnClose){window.scrollTo(0,Modal.positionTop||0)}}else if(targetModal.modal.options.closeAll||isCloseAllTarget){Modal.closeAllModals()}targetModal.classList.remove(\"modal-active\");targetModal.removeAttribute(\"data-modal-active\");if(!targetModal.modal.options.lockViewport){Modal.toggleModalScroll(targetModal)}if(targetModal.modal.options.afterCloseFocusEl&&targetModal.contains(document.activeElement)){targetModal.modal.options.afterCloseFocusEl.focus()}if(!targetModal.modal.modalInBackground||targetModal.modal.modalInBackground.modal.container!==targetModal.modal.container){targetModal.modal.container.classList.remove(\"modal-shown\")}if(targetModal.modal.modalInBackground){if(!targetModal.modal.modalInBackground.modal.options.lockViewport&&!targetModal.modal.modalInBackground.modal.options.allowScrolling){Modal.toggleModalScroll(targetModal.modal.modalInBackground,true)}targetModal.modal.modalInBackground.classList.remove(\"modal-in-background\")}if(!targetModal.modal.keepAlive){targetModal.addEventListener((0,_bornUtilities.whichTransition)(),Modal.destroyModal)}targetModal.modal.afterCloseCallback(targetModal)}}},{key:\"destroyModal\",value:function destroyModal(){var targetModal=this||Modal.getActiveModal();targetModal.removeEventListener((0,_bornUtilities.whichTransition)(),Modal.destroyModal);targetModal.parentNode.removeChild(targetModal)}},{key:\"insertCloseBtn\",value:function insertCloseBtn(targetModal){var closeBtnContainer=targetModal.modal.options.crossCloseContainer===\"modal\"?targetModal:targetModal.modal.content;return(0,_bornUtilities.createElWithAttrs)(closeBtnContainer,{class:\"window-modal__close\",\"data-modal-close\":true,title:\"Close modal\",\"aria-label\":\"Close modal\",type:\"button\"},\"button\")}},{key:\"insertContent\",value:function insertContent(targetModal,content){if(typeof content===\"string\"){targetModal.modal.content.insertAdjacentHTML(\"afterbegin\",content)}else if(content instanceof HTMLElement){targetModal.modal.content.appendChild(content)}(0,_bornUtilities.parseScripts)(targetModal)}},{key:\"getActiveModals\",value:function getActiveModals(){return document.querySelectorAll(\".window-modal[data-modal-active]\")}},{key:\"getActiveModal\",value:function getActiveModal(){var activeModals=Modal.getActiveModals();return activeModals[activeModals.length-1]}},{key:\"getModal\",value:function getModal(targetModal){var matchedModal=typeof targetModal===\"string\"?document.querySelector(\"#modal-\"+targetModal)||document.querySelector(targetModal):false;if(matchedModal){return matchedModal}else if(targetModal instanceof HTMLElement){return targetModal}else{return false}}}]);return Modal}();exports[\"default\"]=Modal;","!function(e,t){if(\"function\"==typeof define&&define.amd)define([\"exports\"],t);else if(\"undefined\"!=typeof exports)t(exports);else{var o={};t(o),e.bodyScrollLock=o}}(this,function(exports){\"use strict\";function i(e){if(Array.isArray(e)){for(var t=0,o=Array(e.length);t=matchedBreakpoint.min)&&(!matchedBreakpoint.max||document.body.offsetWidth<=matchedBreakpoint.max)){Toggle.set(trigger)}else{Toggle.unset(trigger,false)}}}else{Toggle.set(trigger)}}trigger.removeAttribute(this.options.dataAttribute)}},{key:\"generateCustomToggleID\",value:function generateCustomToggleID(trigger){var randomString=Math.floor((new Date).getTime()*Math.random()).toString().substr(0,4);return\"toggleID-\".concat(randomString)}},{key:\"_getOptions\",value:function _getOptions(trigger){var triggerOptionsString=trigger.getAttribute(this.options.dataAttribute),triggerOptions=(0,_bornUtilities.objectAssign)({},this.options,triggerOptionsString?this._safeJSONParse(triggerOptionsString):{});triggerOptions.closeSelector=triggerOptions.closeSelector||\"[data-toggle-close]\";triggerOptions.activeClass=triggerOptions.activeClass||\"toggle--active\";triggerOptions.unsetSelf=triggerOptions.hasOwnProperty(\"unsetSelf\")?triggerOptions.unsetSelf:true;triggerOptions.unsetOthers=triggerOptions.hasOwnProperty(\"unsetOthers\")?triggerOptions.unsetOthers:true;triggerOptions.allowEscClose=triggerOptions.hasOwnProperty(\"allowEscClose\")?triggerOptions.allowEscClose:true;triggerOptions.allowSet=triggerOptions.hasOwnProperty(\"allowSet\")?triggerOptions.allowSet:true;triggerOptions.allowUnset=triggerOptions.hasOwnProperty(\"allowUnset\")?triggerOptions.allowUnset:true;return triggerOptions}},{key:\"_safeJSONParse\",value:function _safeJSONParse(JSONString){try{return JSON.parse(JSONString)}catch(e){return{}}}},{key:\"getCustomAttributes\",value:function getCustomAttributes(trigger){return{\"aria-expanded\":{value:[\"false\",\"true\"],trigger:true},\"aria-labelledby\":{value:trigger.id,target:true},\"aria-controls\":{value:trigger.toggle.targetEl.id,trigger:true}}}},{key:\"_getParent\",value:function _getParent(trigger){return trigger.closest(trigger.toggle.options.parent)||document.querySelector(trigger.toggle.options.parent)||trigger.parentNode}},{key:\"_getTarget\",value:function _getTarget(trigger){var targetSelector=trigger.toggle.options.target,targetEl=document.querySelectorAll(targetSelector);return targetEl.length>1?trigger.toggle.parentEl.querySelector(targetSelector):targetEl[0]}},{key:\"_getTargetFocus\",value:function _getTargetFocus(trigger){var targetFocus=trigger.toggle.options.targetFocus,isSelector=typeof targetFocus===\"string\";return isSelector?trigger.toggle.targetEl.querySelector(targetFocus):targetFocus?trigger.toggle.targetEl:null}},{key:\"_setupCallbacks\",value:function _setupCallbacks(trigger){trigger.toggle.beforeUnset=trigger.toggle.options.beforeUnset||function(){return true};trigger.toggle.afterUnset=trigger.toggle.options.afterUnset||function(){return true};trigger.toggle.beforeUnsetAll=trigger.toggle.options.beforeUnsetAll||function(){return true};trigger.toggle.beforeSet=trigger.toggle.options.beforeSet||function(){return true};trigger.toggle.afterSet=trigger.toggle.options.afterSet||function(){return true}}},{key:\"_setupMethods\",value:function _setupMethods(trigger){trigger.toggle.toggle=Toggle.toggle.bind(this,trigger);trigger.toggle.persist=Toggle.persist.bind(this,trigger);trigger.toggle.set=Toggle.set.bind(this,trigger);trigger.toggle.unset=Toggle.unset.bind(this,trigger);trigger.toggle.unsetOnEscKey=Toggle.unsetOnEscKey.bind(this,trigger);trigger.toggle.unsetOnTimeout=Toggle.unsetOnTimeout.bind(this,trigger);trigger.toggle.unsetOnClickOut=Toggle.unsetOnClickOut.bind(this,trigger);trigger.toggle.unsetOnMouseLeave=Toggle.unsetOnMouseLeave.bind(this,trigger);trigger.addEventListener(\"toggle:toggle\",Toggle.toggle.bind(this,trigger));trigger.addEventListener(\"toggle:set\",Toggle.set.bind(this,trigger));trigger.addEventListener(\"toggle:unset\",Toggle.unset.bind(this,trigger))}},{key:\"_setupHandlers\",value:function _setupHandlers(trigger){var evtType=(trigger.toggle.options.event||\"click\").split(\" \");evtType.forEach(function(currentEvt){trigger.addEventListener(currentEvt,Toggle.toggleEventHandler)}.bind(this));trigger.toggle.tempHandlers=trigger.toggle.tempHandlers||{}}}],[{key:\"updateAttributes\",value:function updateAttributes(trigger,isActive){var customAttributes=trigger.toggle.options.customAttributes;for(var attrKey in customAttributes){if(customAttributes[attrKey]){if(customAttributes[attrKey].trigger){Toggle.setAttributeValue(trigger,attrKey,customAttributes[attrKey],isActive)}else if(customAttributes[attrKey].target){Toggle.setAttributeValue(trigger.toggle.targetEl,attrKey,customAttributes[attrKey],isActive)}else{Toggle.setAttributeValue(trigger,attrKey,customAttributes[attrKey],isActive);Toggle.setAttributeValue(trigger.toggle.targetEl,attrKey,customAttributes[attrKey],isActive)}}}}},{key:\"setAttributeValue\",value:function setAttributeValue(el,attrName,attrObject,isActive){var value=typeof attrObject.value===\"string\"?attrObject.value:isActive?attrObject.value[1]:attrObject.value[0];el.setAttribute(attrName,value)}},{key:\"toggleEventHandler\",value:function toggleEventHandler(evt){var isTouch=evt.type.indexOf(\"touch\")!==-1;if(this.nodeName===\"A\"||isTouch){evt.preventDefault()}Toggle.toggle(this,evt);if(isTouch){evt.stopImmediatePropagation()}}},{key:\"toggle\",value:function toggle(trigger,evt){var evtType=evt?evt.type:\"\";if(trigger.classList.contains(trigger.toggle.options.activeClass)){if(trigger.toggle.options.unsetSelf&&evtType!==\"mouseenter\"){Toggle.unset(trigger,false)}}else{Toggle.set(trigger,evt,evtType)}}},{key:\"unset\",value:function unset(trigger,focusTrigger){Toggle.publishToggleEvents(trigger,\"beforeUnset\");if(trigger.classList.contains(trigger.toggle.options.activeClass)&&trigger.toggle.beforeUnset(trigger)&&trigger.toggle.options.allowUnset){trigger.classList.remove(trigger.toggle.options.activeClass);trigger.toggle.parentEl.classList.remove(trigger.toggle.options.activeClass);trigger.toggle.targetEl.classList.remove(trigger.toggle.options.activeClass);trigger.toggle.targetEl.removeEventListener(\"click\",Toggle.unsetOnTriggerHandler);trigger.toggle.afterUnset(trigger);Toggle.publishToggleEvents(trigger,\"afterUnset\");trigger.toggle.isSet=false;trigger.toggle.targetEl.currentTrigger=null;Toggle.updateAttributes(trigger);if(focusTrigger){trigger.focus()}}}},{key:\"set\",value:function set(trigger,evt){Toggle.publishToggleEvents(trigger,\"beforeSet\");if(trigger.toggle.beforeSet(trigger,evt)&&trigger.toggle.options.allowSet){Toggle.publishToggleEvents(trigger,\"beforeUnsetAll\");if(trigger.toggle.beforeUnsetAll(trigger)&&trigger.toggle.options.unsetOthers){Toggle.unsetAll(trigger)}trigger.classList.add(trigger.toggle.options.activeClass);trigger.toggle.parentEl.classList.add(trigger.toggle.options.activeClass);trigger.toggle.targetEl.classList.add(trigger.toggle.options.activeClass);trigger.toggle.isSet=true;trigger.toggle.targetEl.currentTrigger=trigger;Toggle.updateAttributes(trigger,true);if(trigger.toggle.targetFocusEl){(0,_bornUtilities.forceFocus)(trigger.toggle.targetFocusEl)}if(!trigger.toggle.options.persist){Toggle.unsetOnClickOut(trigger,!trigger.toggle.options.persist);Toggle.unsetOnEscKey(trigger,trigger.toggle.options.allowEscClose);Toggle.unsetOnMouseLeave(trigger,trigger.toggle.options.unsetOnHoverOut)}Toggle.unsetOnTimeout(trigger,trigger.toggle.options.timeout);if(trigger.toggle.options.focusTrap){(0,_bornUtilities.focusTrap)(trigger.toggle.targetEl)}trigger.toggle.targetEl.addEventListener(\"click\",Toggle.unsetOnTriggerHandler);Toggle.publishToggleEvents(trigger,\"afterSet\");trigger.toggle.afterSet(trigger)}}},{key:\"persist\",value:function persist(trigger,isEnabled){Toggle.unsetOnClickOut(trigger,!isEnabled);Toggle.unsetOnEscKey(trigger,!isEnabled);Toggle.unsetOnMouseLeave(trigger,!isEnabled)}},{key:\"unsetOnTriggerHandler\",value:function unsetOnTriggerHandler(evt){var targetCloseEl=evt.target.closest(this.currentTrigger.toggle.options.closeSelector),targetTriggerSelector=targetCloseEl&&targetCloseEl.getAttribute(\"data-toggle-close\")?targetCloseEl.getAttribute(\"data-toggle-close\"):null;if(targetCloseEl&&(this.currentTrigger.matches(targetTriggerSelector)||!targetTriggerSelector)){Toggle.unset(this.currentTrigger,true)}}},{key:\"unsetOnTimeout\",value:function unsetOnTimeout(trigger,timeout){if(timeout){window.setTimeout(Toggle.unset.bind(this,trigger,false),timeout)}}},{key:\"unsetOnClickOut\",value:function unsetOnClickOut(trigger,isEnabled){if(isEnabled){trigger.toggle.tempHandlers.unsetOnClickOut=trigger.toggle.tempHandlers.unsetOnClickOut||function(evt){if(!trigger.toggle.targetEl.contains(evt.target)&&!trigger.toggle.parentEl.contains(evt.target)&&evt.target!==trigger){this.removeEventListener(\"click\",trigger.toggle.tempHandlers.unsetOnClickOut,true);Toggle.unset(trigger,false)}};document.body.addEventListener(\"click\",trigger.toggle.tempHandlers.unsetOnClickOut,true)}else{document.body.removeEventListener(\"click\",trigger.toggle.tempHandlers.unsetOnClickOut,true)}}},{key:\"unsetOnEscKey\",value:function unsetOnEscKey(trigger,isEnabled){if(isEnabled){trigger.toggle.tempHandlers.unsetOnEscKey=trigger.toggle.tempHandlers.unsetOnEscKey||function(evt){if(evt.keyCode===27){this.removeEventListener(\"keydown\",trigger.toggle.tempHandlers.unsetOnEscKey);Toggle.unset(trigger,true)}};document.addEventListener(\"keydown\",trigger.toggle.tempHandlers.unsetOnEscKey)}else{document.removeEventListener(\"keydown\",trigger.toggle.tempHandlers.unsetOnEscKey)}}},{key:\"unsetOnMouseLeave\",value:function unsetOnMouseLeave(trigger,isEnabled){if(isEnabled){trigger.toggle.tempHandlers.unsetOnMouseLeave=trigger.toggle.tempHandlers.unsetOnMouseLeave||function(){this.removeEventListener(\"mouseleave\",trigger.toggle.tempHandlers.unsetOnMouseLeave);Toggle.unset(trigger,true)};trigger.toggle.parentEl.addEventListener(\"mouseleave\",trigger.toggle.tempHandlers.unsetOnMouseLeave)}else{trigger.toggle.parentEl.removeEventListener(\"mouseleave\",trigger.toggle.tempHandlers.unsetOnMouseLeave)}}},{key:\"unsetAll\",value:function unsetAll(trigger){var activeClass=trigger.toggle.options.activeClass,siblingSelector=trigger.toggle.options.siblingSelector,skipSelector=trigger.toggle.options.skipSelector,activeTriggers=document.querySelectorAll(\".\"+activeClass);[].forEach.call(activeTriggers,function(currentTrigger){if(currentTrigger.toggle&&!currentTrigger.matches(skipSelector)&&(!currentTrigger.toggle.options.persist||currentTrigger.matches(siblingSelector))){Toggle.unset(currentTrigger,false)}})}},{key:\"getEventData\",value:function getEventData(trigger){var additionalData=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};return(0,_bornUtilities.objectAssign)({trigger:trigger,targetEl:trigger.toggle.targetEl,parentEl:trigger.toggle.parentEl,toggleOptions:trigger.toggle.options},additionalData)}},{key:\"publishToggleEvents\",value:function publishToggleEvents(trigger,eventType){Toggle.publishEvent(\"toggle\",eventType,trigger,Toggle.getEventData(trigger));if(trigger.toggle.options.customEvents&&trigger.toggle.options.customEvents[eventType]){Toggle.publishEvent(null,trigger.toggle.options.customEvents[eventType].name,trigger,Toggle.getEventData(trigger,trigger.toggle.options.customEvents[eventType].data))}}},{key:\"publishEvent\",value:function publishEvent(moduleName,eventName,target,detail){var event,params={bubbles:true,cancelable:true,detail:detail},eventString=moduleName&&eventName?\"\".concat(moduleName,\":\").concat(eventName):moduleName||eventName;if(typeof window.CustomEvent!==\"function\"){event=document.createEvent(\"CustomEvent\");event.initCustomEvent(eventString,params.bubbles,params.cancelable,null)}else{event=new CustomEvent(eventString,params)}target.dispatchEvent(event)}}]);return Toggle}();exports.default=Toggle;","\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});exports.isRTL=isRTL;exports.whichTransition=whichTransition;exports.createElWithAttrs=createElWithAttrs;exports.callbackOnElements=callbackOnElements;exports.getUrlParameter=getUrlParameter;exports.hasURLParameter=hasURLParameter;exports.getTotalRect=getTotalRect;exports.scrollToPosition=scrollToPosition;exports.objectAssign=objectAssign;exports.createCookie=createCookie;exports.readCookie=readCookie;exports.eraseCookie=eraseCookie;exports.forceFocus=forceFocus;exports.focusTrap=focusTrap;exports.parseScripts=parseScripts;exports.isMobile=void 0;function _typeof(obj){\"@babel/helpers - typeof\";if(typeof Symbol===\"function\"&&typeof Symbol.iterator===\"symbol\"){_typeof=function _typeof(obj){return typeof obj}}else{_typeof=function _typeof(obj){return obj&&typeof Symbol===\"function\"&&obj.constructor===Symbol&&obj!==Symbol.prototype?\"symbol\":typeof obj}}return _typeof(obj)}(function(){if(!Element.prototype.matches){Element.prototype.matches=Element.prototype.msMatchesSelector}if(!Element.prototype.closest){Element.prototype.closest=_getClosest}})();function _getClosest(selector){var currentEl=this;while(currentEl.constructor!==HTMLHtmlElement){if(currentEl.parentNode.matches(selector)){return currentEl.parentNode}else if(currentEl.matches(selector)){return currentEl}currentEl=currentEl.parentNode}return false}var isMobile={Android:function Android(){return navigator.userAgent.match(/Android/i)},BlackBerry:function BlackBerry(){return navigator.userAgent.match(/BlackBerry/i)},iOS:function iOS(){return navigator.userAgent.match(/iPhone|iPad|iPod/i)},Opera:function Opera(){return navigator.userAgent.match(/Opera Mini/i)},Windows:function Windows(){return navigator.userAgent.match(/IEMobile/i)||navigator.userAgent.match(/WPDesktop/i)},any:function any(){return isMobile.Android()||isMobile.BlackBerry()||isMobile.iOS()||isMobile.Opera()||isMobile.Windows()}};exports.isMobile=isMobile;function isRTL(){return document.documentElement.getAttribute(\"dir\")===\"rtl\"?true:false}function whichTransition(){var dummyEl=document.createElement(\"dummy\"),transitions={transition:\"transitionend\",OTransition:\"oTransitionEnd\",MozTransition:\"transitionend\",WebkitTransition:\"webkitTransitionEnd\"};for(var key in transitions){if(dummyEl.style[key]!==undefined){return transitions[key]}}}function createElWithAttrs(appendTarget,attributes,type,textContent){var el;if(_typeof(type)===\"object\"){var fullNameSpace=type.nameSpace===\"svg\"?\"http://www.w3.org/2000/svg\":\"http://www.w3.org/1999/xhtml\";el=document.createElementNS(fullNameSpace,type.tagName||\"div\")}else{el=document.createElement(type||\"div\")}for(var key in attributes){el.setAttribute(key,attributes[key])}if(textContent){el.textContent=\"\";el.insertAdjacentHTML(\"afterbegin\",textContent)}if(appendTarget){appendTarget.appendChild(el)}return el}function callbackOnElements(elementSelector,callback){var elementList;if(elementSelector.length){if(typeof elementSelector===\"string\"){elementList=document.querySelectorAll(elementSelector)}else{elementList=elementSelector}[].forEach.call(elementList,callback.bind(this))}else{callback.call(this,elementSelector)}}function getUrlParameter(name){name=name.replace(/[\\[]/,\"\\\\[\").replace(/[\\]]/,\"\\\\]\");var regex=new RegExp(\"[\\\\?&]\"+name+\"=([^]*)\"),results=regex.exec(location.search);return results===null?\"\":decodeURIComponent(results[1].replace(/\\+/g,\" \"))}function hasURLParameter(name){var regex=new RegExp(\"[?&]\"+name);return\"#\"+name===window.location.hash||regex.test(window.location.search)}function getTotalRect(elements,property){var totalOffsetHeight=0;callbackOnElements(elements,function(currentEl){totalOffsetHeight+=currentEl.getBoundingClientRect()[property||\"height\"]});return totalOffsetHeight}function scrollToPosition(target){var offset=arguments.length>1&&arguments[1]!==undefined?arguments[1]:0;var scrollContainer=arguments.length>2?arguments[2]:undefined;var documentHeight=scrollContainer?scrollContainer.scrollHeight:Math.max(document.body.scrollHeight,document.body.offsetHeight,document.documentElement.clientHeight,document.documentElement.scrollHeight,document.documentElement.offsetHeight),documentScrollTop=scrollContainer?scrollContainer.scrollTop:window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop,windowHeight=scrollContainer?scrollContainer.offsetHeight:document.documentElement.clientHeight,totalOffset=typeof offset===\"number\"?offset:getTotalRect(offset),targetOffset=typeof target===\"number\"?target:getTotalRect(target,\"top\")+documentScrollTop,targetOffsetToScroll=Math.round(documentHeight-targetOffset 1);\n\n\nvar locks = [];\nvar documentListenerAdded = false;\nvar initialClientY = -1;\nvar previousBodyOverflowSetting = void 0;\nvar previousBodyPaddingRight = void 0;\n\n// returns true if `el` should be allowed to receive touchmove events.\nvar allowTouchMove = function allowTouchMove(el) {\n return locks.some(function (lock) {\n if (lock.options.allowTouchMove && lock.options.allowTouchMove(el)) {\n return true;\n }\n\n return false;\n });\n};\n\nvar preventDefault = function preventDefault(rawEvent) {\n var e = rawEvent || window.event;\n\n // For the case whereby consumers adds a touchmove event listener to document.\n // Recall that we do document.addEventListener('touchmove', preventDefault, { passive: false })\n // in disableBodyScroll - so if we provide this opportunity to allowTouchMove, then\n // the touchmove event on document will break.\n if (allowTouchMove(e.target)) {\n return true;\n }\n\n // Do not prevent if the event has more than one touch (usually meaning this is a multi touch gesture like pinch to zoom).\n if (e.touches.length > 1) return true;\n\n if (e.preventDefault) e.preventDefault();\n\n return false;\n};\n\nvar setOverflowHidden = function setOverflowHidden(options) {\n // If previousBodyPaddingRight is already set, don't set it again.\n if (previousBodyPaddingRight === undefined) {\n var _reserveScrollBarGap = !!options && options.reserveScrollBarGap === true;\n var scrollBarGap = window.innerWidth - document.documentElement.clientWidth;\n\n if (_reserveScrollBarGap && scrollBarGap > 0) {\n previousBodyPaddingRight = document.body.style.paddingRight;\n document.body.style.paddingRight = scrollBarGap + 'px';\n }\n }\n\n // If previousBodyOverflowSetting is already set, don't set it again.\n if (previousBodyOverflowSetting === undefined) {\n previousBodyOverflowSetting = document.body.style.overflow;\n document.body.style.overflow = 'hidden';\n }\n};\n\nvar restoreOverflowSetting = function restoreOverflowSetting() {\n if (previousBodyPaddingRight !== undefined) {\n document.body.style.paddingRight = previousBodyPaddingRight;\n\n // Restore previousBodyPaddingRight to undefined so setOverflowHidden knows it\n // can be set again.\n previousBodyPaddingRight = undefined;\n }\n\n if (previousBodyOverflowSetting !== undefined) {\n document.body.style.overflow = previousBodyOverflowSetting;\n\n // Restore previousBodyOverflowSetting to undefined\n // so setOverflowHidden knows it can be set again.\n previousBodyOverflowSetting = undefined;\n }\n};\n\n// https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollHeight#Problems_and_solutions\nvar isTargetElementTotallyScrolled = function isTargetElementTotallyScrolled(targetElement) {\n return targetElement ? targetElement.scrollHeight - targetElement.scrollTop <= targetElement.clientHeight : false;\n};\n\nvar handleScroll = function handleScroll(event, targetElement) {\n var clientY = event.targetTouches[0].clientY - initialClientY;\n\n if (allowTouchMove(event.target)) {\n return false;\n }\n\n if (targetElement && targetElement.scrollTop === 0 && clientY > 0) {\n // element is at the top of its scroll.\n return preventDefault(event);\n }\n\n if (isTargetElementTotallyScrolled(targetElement) && clientY < 0) {\n // element is at the bottom of its scroll.\n return preventDefault(event);\n }\n\n event.stopPropagation();\n return true;\n};\n\nexport var disableBodyScroll = function disableBodyScroll(targetElement, options) {\n // targetElement must be provided\n if (!targetElement) {\n // eslint-disable-next-line no-console\n console.error('disableBodyScroll unsuccessful - targetElement must be provided when calling disableBodyScroll on IOS devices.');\n return;\n }\n\n // disableBodyScroll must not have been called on this targetElement before\n if (locks.some(function (lock) {\n return lock.targetElement === targetElement;\n })) {\n return;\n }\n\n var lock = {\n targetElement: targetElement,\n options: options || {}\n };\n\n locks = [].concat(_toConsumableArray(locks), [lock]);\n\n if (isIosDevice) {\n targetElement.ontouchstart = function (event) {\n if (event.targetTouches.length === 1) {\n // detect single touch.\n initialClientY = event.targetTouches[0].clientY;\n }\n };\n targetElement.ontouchmove = function (event) {\n if (event.targetTouches.length === 1) {\n // detect single touch.\n handleScroll(event, targetElement);\n }\n };\n\n if (!documentListenerAdded) {\n document.addEventListener('touchmove', preventDefault, hasPassiveEvents ? { passive: false } : undefined);\n documentListenerAdded = true;\n }\n } else {\n setOverflowHidden(options);\n }\n};\n\nexport var clearAllBodyScrollLocks = function clearAllBodyScrollLocks() {\n if (isIosDevice) {\n // Clear all locks ontouchstart/ontouchmove handlers, and the references.\n locks.forEach(function (lock) {\n lock.targetElement.ontouchstart = null;\n lock.targetElement.ontouchmove = null;\n });\n\n if (documentListenerAdded) {\n document.removeEventListener('touchmove', preventDefault, hasPassiveEvents ? { passive: false } : undefined);\n documentListenerAdded = false;\n }\n\n // Reset initial clientY.\n initialClientY = -1;\n } else {\n restoreOverflowSetting();\n }\n\n locks = [];\n};\n\nexport var enableBodyScroll = function enableBodyScroll(targetElement) {\n if (!targetElement) {\n // eslint-disable-next-line no-console\n console.error('enableBodyScroll unsuccessful - targetElement must be provided when calling enableBodyScroll on IOS devices.');\n return;\n }\n\n locks = locks.filter(function (lock) {\n return lock.targetElement !== targetElement;\n });\n\n if (isIosDevice) {\n targetElement.ontouchstart = null;\n targetElement.ontouchmove = null;\n\n if (documentListenerAdded && locks.length === 0) {\n document.removeEventListener('touchmove', preventDefault, hasPassiveEvents ? { passive: false } : undefined);\n documentListenerAdded = false;\n }\n } else if (!locks.length) {\n restoreOverflowSetting();\n }\n};\n\n","module.exports = require('es6-promise').Promise;\n","/*!\n * @overview es6-promise - a tiny implementation of Promises/A+.\n * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)\n * @license Licensed under MIT license\n * See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE\n * @version 3.3.1\n */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global.ES6Promise = factory());\n}(this, (function () { 'use strict';\n\nfunction objectOrFunction(x) {\n return typeof x === 'function' || typeof x === 'object' && x !== null;\n}\n\nfunction isFunction(x) {\n return typeof x === 'function';\n}\n\nvar _isArray = undefined;\nif (!Array.isArray) {\n _isArray = function (x) {\n return Object.prototype.toString.call(x) === '[object Array]';\n };\n} else {\n _isArray = Array.isArray;\n}\n\nvar isArray = _isArray;\n\nvar len = 0;\nvar vertxNext = undefined;\nvar customSchedulerFn = undefined;\n\nvar asap = function asap(callback, arg) {\n queue[len] = callback;\n queue[len + 1] = arg;\n len += 2;\n if (len === 2) {\n // If len is 2, that means that we need to schedule an async flush.\n // If additional callbacks are queued before the queue is flushed, they\n // will be processed by this flush that we are scheduling.\n if (customSchedulerFn) {\n customSchedulerFn(flush);\n } else {\n scheduleFlush();\n }\n }\n};\n\nfunction setScheduler(scheduleFn) {\n customSchedulerFn = scheduleFn;\n}\n\nfunction setAsap(asapFn) {\n asap = asapFn;\n}\n\nvar browserWindow = typeof window !== 'undefined' ? window : undefined;\nvar browserGlobal = browserWindow || {};\nvar BrowserMutationObserver = browserGlobal.MutationObserver || browserGlobal.WebKitMutationObserver;\nvar isNode = typeof self === 'undefined' && typeof process !== 'undefined' && ({}).toString.call(process) === '[object process]';\n\n// test for web worker but not in IE10\nvar isWorker = typeof Uint8ClampedArray !== 'undefined' && typeof importScripts !== 'undefined' && typeof MessageChannel !== 'undefined';\n\n// node\nfunction useNextTick() {\n // node version 0.10.x displays a deprecation warning when nextTick is used recursively\n // see https://github.com/cujojs/when/issues/410 for details\n return function () {\n return process.nextTick(flush);\n };\n}\n\n// vertx\nfunction useVertxTimer() {\n return function () {\n vertxNext(flush);\n };\n}\n\nfunction useMutationObserver() {\n var iterations = 0;\n var observer = new BrowserMutationObserver(flush);\n var node = document.createTextNode('');\n observer.observe(node, { characterData: true });\n\n return function () {\n node.data = iterations = ++iterations % 2;\n };\n}\n\n// web worker\nfunction useMessageChannel() {\n var channel = new MessageChannel();\n channel.port1.onmessage = flush;\n return function () {\n return channel.port2.postMessage(0);\n };\n}\n\nfunction useSetTimeout() {\n // Store setTimeout reference so es6-promise will be unaffected by\n // other code modifying setTimeout (like sinon.useFakeTimers())\n var globalSetTimeout = setTimeout;\n return function () {\n return globalSetTimeout(flush, 1);\n };\n}\n\nvar queue = new Array(1000);\nfunction flush() {\n for (var i = 0; i < len; i += 2) {\n var callback = queue[i];\n var arg = queue[i + 1];\n\n callback(arg);\n\n queue[i] = undefined;\n queue[i + 1] = undefined;\n }\n\n len = 0;\n}\n\nfunction attemptVertx() {\n try {\n var r = require;\n var vertx = r('vertx');\n vertxNext = vertx.runOnLoop || vertx.runOnContext;\n return useVertxTimer();\n } catch (e) {\n return useSetTimeout();\n }\n}\n\nvar scheduleFlush = undefined;\n// Decide what async method to use to triggering processing of queued callbacks:\nif (isNode) {\n scheduleFlush = useNextTick();\n} else if (BrowserMutationObserver) {\n scheduleFlush = useMutationObserver();\n} else if (isWorker) {\n scheduleFlush = useMessageChannel();\n} else if (browserWindow === undefined && typeof require === 'function') {\n scheduleFlush = attemptVertx();\n} else {\n scheduleFlush = useSetTimeout();\n}\n\nfunction then(onFulfillment, onRejection) {\n var _arguments = arguments;\n\n var parent = this;\n\n var child = new this.constructor(noop);\n\n if (child[PROMISE_ID] === undefined) {\n makePromise(child);\n }\n\n var _state = parent._state;\n\n if (_state) {\n (function () {\n var callback = _arguments[_state - 1];\n asap(function () {\n return invokeCallback(_state, child, callback, parent._result);\n });\n })();\n } else {\n subscribe(parent, child, onFulfillment, onRejection);\n }\n\n return child;\n}\n\n/**\n `Promise.resolve` returns a promise that will become resolved with the\n passed `value`. It is shorthand for the following:\n\n ```javascript\n let promise = new Promise(function(resolve, reject){\n resolve(1);\n });\n\n promise.then(function(value){\n // value === 1\n });\n ```\n\n Instead of writing the above, your code now simply becomes the following:\n\n ```javascript\n let promise = Promise.resolve(1);\n\n promise.then(function(value){\n // value === 1\n });\n ```\n\n @method resolve\n @static\n @param {Any} value value that the returned promise will be resolved with\n Useful for tooling.\n @return {Promise} a promise that will become fulfilled with the given\n `value`\n*/\nfunction resolve(object) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (object && typeof object === 'object' && object.constructor === Constructor) {\n return object;\n }\n\n var promise = new Constructor(noop);\n _resolve(promise, object);\n return promise;\n}\n\nvar PROMISE_ID = Math.random().toString(36).substring(16);\n\nfunction noop() {}\n\nvar PENDING = void 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\n\nvar GET_THEN_ERROR = new ErrorObject();\n\nfunction selfFulfillment() {\n return new TypeError(\"You cannot resolve a promise with itself\");\n}\n\nfunction cannotReturnOwn() {\n return new TypeError('A promises callback cannot return that same promise.');\n}\n\nfunction getThen(promise) {\n try {\n return promise.then;\n } catch (error) {\n GET_THEN_ERROR.error = error;\n return GET_THEN_ERROR;\n }\n}\n\nfunction tryThen(then, value, fulfillmentHandler, rejectionHandler) {\n try {\n then.call(value, fulfillmentHandler, rejectionHandler);\n } catch (e) {\n return e;\n }\n}\n\nfunction handleForeignThenable(promise, thenable, then) {\n asap(function (promise) {\n var sealed = false;\n var error = tryThen(then, thenable, function (value) {\n if (sealed) {\n return;\n }\n sealed = true;\n if (thenable !== value) {\n _resolve(promise, value);\n } else {\n fulfill(promise, value);\n }\n }, function (reason) {\n if (sealed) {\n return;\n }\n sealed = true;\n\n _reject(promise, reason);\n }, 'Settle: ' + (promise._label || ' unknown promise'));\n\n if (!sealed && error) {\n sealed = true;\n _reject(promise, error);\n }\n }, promise);\n}\n\nfunction handleOwnThenable(promise, thenable) {\n if (thenable._state === FULFILLED) {\n fulfill(promise, thenable._result);\n } else if (thenable._state === REJECTED) {\n _reject(promise, thenable._result);\n } else {\n subscribe(thenable, undefined, function (value) {\n return _resolve(promise, value);\n }, function (reason) {\n return _reject(promise, reason);\n });\n }\n}\n\nfunction handleMaybeThenable(promise, maybeThenable, then$$) {\n if (maybeThenable.constructor === promise.constructor && then$$ === then && maybeThenable.constructor.resolve === resolve) {\n handleOwnThenable(promise, maybeThenable);\n } else {\n if (then$$ === GET_THEN_ERROR) {\n _reject(promise, GET_THEN_ERROR.error);\n } else if (then$$ === undefined) {\n fulfill(promise, maybeThenable);\n } else if (isFunction(then$$)) {\n handleForeignThenable(promise, maybeThenable, then$$);\n } else {\n fulfill(promise, maybeThenable);\n }\n }\n}\n\nfunction _resolve(promise, value) {\n if (promise === value) {\n _reject(promise, selfFulfillment());\n } else if (objectOrFunction(value)) {\n handleMaybeThenable(promise, value, getThen(value));\n } else {\n fulfill(promise, value);\n }\n}\n\nfunction publishRejection(promise) {\n if (promise._onerror) {\n promise._onerror(promise._result);\n }\n\n publish(promise);\n}\n\nfunction fulfill(promise, value) {\n if (promise._state !== PENDING) {\n return;\n }\n\n promise._result = value;\n promise._state = FULFILLED;\n\n if (promise._subscribers.length !== 0) {\n asap(publish, promise);\n }\n}\n\nfunction _reject(promise, reason) {\n if (promise._state !== PENDING) {\n return;\n }\n promise._state = REJECTED;\n promise._result = reason;\n\n asap(publishRejection, promise);\n}\n\nfunction subscribe(parent, child, onFulfillment, onRejection) {\n var _subscribers = parent._subscribers;\n var length = _subscribers.length;\n\n parent._onerror = null;\n\n _subscribers[length] = child;\n _subscribers[length + FULFILLED] = onFulfillment;\n _subscribers[length + REJECTED] = onRejection;\n\n if (length === 0 && parent._state) {\n asap(publish, parent);\n }\n}\n\nfunction publish(promise) {\n var subscribers = promise._subscribers;\n var settled = promise._state;\n\n if (subscribers.length === 0) {\n return;\n }\n\n var child = undefined,\n callback = undefined,\n detail = promise._result;\n\n for (var i = 0; i < subscribers.length; i += 3) {\n child = subscribers[i];\n callback = subscribers[i + settled];\n\n if (child) {\n invokeCallback(settled, child, callback, detail);\n } else {\n callback(detail);\n }\n }\n\n promise._subscribers.length = 0;\n}\n\nfunction ErrorObject() {\n this.error = null;\n}\n\nvar TRY_CATCH_ERROR = new ErrorObject();\n\nfunction tryCatch(callback, detail) {\n try {\n return callback(detail);\n } catch (e) {\n TRY_CATCH_ERROR.error = e;\n return TRY_CATCH_ERROR;\n }\n}\n\nfunction invokeCallback(settled, promise, callback, detail) {\n var hasCallback = isFunction(callback),\n value = undefined,\n error = undefined,\n succeeded = undefined,\n failed = undefined;\n\n if (hasCallback) {\n value = tryCatch(callback, detail);\n\n if (value === TRY_CATCH_ERROR) {\n failed = true;\n error = value.error;\n value = null;\n } else {\n succeeded = true;\n }\n\n if (promise === value) {\n _reject(promise, cannotReturnOwn());\n return;\n }\n } else {\n value = detail;\n succeeded = true;\n }\n\n if (promise._state !== PENDING) {\n // noop\n } else if (hasCallback && succeeded) {\n _resolve(promise, value);\n } else if (failed) {\n _reject(promise, error);\n } else if (settled === FULFILLED) {\n fulfill(promise, value);\n } else if (settled === REJECTED) {\n _reject(promise, value);\n }\n}\n\nfunction initializePromise(promise, resolver) {\n try {\n resolver(function resolvePromise(value) {\n _resolve(promise, value);\n }, function rejectPromise(reason) {\n _reject(promise, reason);\n });\n } catch (e) {\n _reject(promise, e);\n }\n}\n\nvar id = 0;\nfunction nextId() {\n return id++;\n}\n\nfunction makePromise(promise) {\n promise[PROMISE_ID] = id++;\n promise._state = undefined;\n promise._result = undefined;\n promise._subscribers = [];\n}\n\nfunction Enumerator(Constructor, input) {\n this._instanceConstructor = Constructor;\n this.promise = new Constructor(noop);\n\n if (!this.promise[PROMISE_ID]) {\n makePromise(this.promise);\n }\n\n if (isArray(input)) {\n this._input = input;\n this.length = input.length;\n this._remaining = input.length;\n\n this._result = new Array(this.length);\n\n if (this.length === 0) {\n fulfill(this.promise, this._result);\n } else {\n this.length = this.length || 0;\n this._enumerate();\n if (this._remaining === 0) {\n fulfill(this.promise, this._result);\n }\n }\n } else {\n _reject(this.promise, validationError());\n }\n}\n\nfunction validationError() {\n return new Error('Array Methods must be provided an Array');\n};\n\nEnumerator.prototype._enumerate = function () {\n var length = this.length;\n var _input = this._input;\n\n for (var i = 0; this._state === PENDING && i < length; i++) {\n this._eachEntry(_input[i], i);\n }\n};\n\nEnumerator.prototype._eachEntry = function (entry, i) {\n var c = this._instanceConstructor;\n var resolve$$ = c.resolve;\n\n if (resolve$$ === resolve) {\n var _then = getThen(entry);\n\n if (_then === then && entry._state !== PENDING) {\n this._settledAt(entry._state, i, entry._result);\n } else if (typeof _then !== 'function') {\n this._remaining--;\n this._result[i] = entry;\n } else if (c === Promise) {\n var promise = new c(noop);\n handleMaybeThenable(promise, entry, _then);\n this._willSettleAt(promise, i);\n } else {\n this._willSettleAt(new c(function (resolve$$) {\n return resolve$$(entry);\n }), i);\n }\n } else {\n this._willSettleAt(resolve$$(entry), i);\n }\n};\n\nEnumerator.prototype._settledAt = function (state, i, value) {\n var promise = this.promise;\n\n if (promise._state === PENDING) {\n this._remaining--;\n\n if (state === REJECTED) {\n _reject(promise, value);\n } else {\n this._result[i] = value;\n }\n }\n\n if (this._remaining === 0) {\n fulfill(promise, this._result);\n }\n};\n\nEnumerator.prototype._willSettleAt = function (promise, i) {\n var enumerator = this;\n\n subscribe(promise, undefined, function (value) {\n return enumerator._settledAt(FULFILLED, i, value);\n }, function (reason) {\n return enumerator._settledAt(REJECTED, i, reason);\n });\n};\n\n/**\n `Promise.all` accepts an array of promises, and returns a new promise which\n is fulfilled with an array of fulfillment values for the passed promises, or\n rejected with the reason of the first passed promise to be rejected. It casts all\n elements of the passed iterable to promises as it runs this algorithm.\n\n Example:\n\n ```javascript\n let promise1 = resolve(1);\n let promise2 = resolve(2);\n let promise3 = resolve(3);\n let promises = [ promise1, promise2, promise3 ];\n\n Promise.all(promises).then(function(array){\n // The array here would be [ 1, 2, 3 ];\n });\n ```\n\n If any of the `promises` given to `all` are rejected, the first promise\n that is rejected will be given as an argument to the returned promises's\n rejection handler. For example:\n\n Example:\n\n ```javascript\n let promise1 = resolve(1);\n let promise2 = reject(new Error(\"2\"));\n let promise3 = reject(new Error(\"3\"));\n let promises = [ promise1, promise2, promise3 ];\n\n Promise.all(promises).then(function(array){\n // Code here never runs because there are rejected promises!\n }, function(error) {\n // error.message === \"2\"\n });\n ```\n\n @method all\n @static\n @param {Array} entries array of promises\n @param {String} label optional string for labeling the promise.\n Useful for tooling.\n @return {Promise} promise that is fulfilled when all `promises` have been\n fulfilled, or rejected if any of them become rejected.\n @static\n*/\nfunction all(entries) {\n return new Enumerator(this, entries).promise;\n}\n\n/**\n `Promise.race` returns a new promise which is settled in the same way as the\n first passed promise to settle.\n\n Example:\n\n ```javascript\n let promise1 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 1');\n }, 200);\n });\n\n let promise2 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 2');\n }, 100);\n });\n\n Promise.race([promise1, promise2]).then(function(result){\n // result === 'promise 2' because it was resolved before promise1\n // was resolved.\n });\n ```\n\n `Promise.race` is deterministic in that only the state of the first\n settled promise matters. For example, even if other promises given to the\n `promises` array argument are resolved, but the first settled promise has\n become rejected before the other promises became fulfilled, the returned\n promise will become rejected:\n\n ```javascript\n let promise1 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 1');\n }, 200);\n });\n\n let promise2 = new Promise(function(resolve, reject){\n setTimeout(function(){\n reject(new Error('promise 2'));\n }, 100);\n });\n\n Promise.race([promise1, promise2]).then(function(result){\n // Code here never runs\n }, function(reason){\n // reason.message === 'promise 2' because promise 2 became rejected before\n // promise 1 became fulfilled\n });\n ```\n\n An example real-world use case is implementing timeouts:\n\n ```javascript\n Promise.race([ajax('foo.json'), timeout(5000)])\n ```\n\n @method race\n @static\n @param {Array} promises array of promises to observe\n Useful for tooling.\n @return {Promise} a promise which settles in the same way as the first passed\n promise to settle.\n*/\nfunction race(entries) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (!isArray(entries)) {\n return new Constructor(function (_, reject) {\n return reject(new TypeError('You must pass an array to race.'));\n });\n } else {\n return new Constructor(function (resolve, reject) {\n var length = entries.length;\n for (var i = 0; i < length; i++) {\n Constructor.resolve(entries[i]).then(resolve, reject);\n }\n });\n }\n}\n\n/**\n `Promise.reject` returns a promise rejected with the passed `reason`.\n It is shorthand for the following:\n\n ```javascript\n let promise = new Promise(function(resolve, reject){\n reject(new Error('WHOOPS'));\n });\n\n promise.then(function(value){\n // Code here doesn't run because the promise is rejected!\n }, function(reason){\n // reason.message === 'WHOOPS'\n });\n ```\n\n Instead of writing the above, your code now simply becomes the following:\n\n ```javascript\n let promise = Promise.reject(new Error('WHOOPS'));\n\n promise.then(function(value){\n // Code here doesn't run because the promise is rejected!\n }, function(reason){\n // reason.message === 'WHOOPS'\n });\n ```\n\n @method reject\n @static\n @param {Any} reason value that the returned promise will be rejected with.\n Useful for tooling.\n @return {Promise} a promise rejected with the given `reason`.\n*/\nfunction reject(reason) {\n /*jshint validthis:true */\n var Constructor = this;\n var promise = new Constructor(noop);\n _reject(promise, reason);\n return promise;\n}\n\nfunction needsResolver() {\n throw new TypeError('You must pass a resolver function as the first argument to the promise constructor');\n}\n\nfunction needsNew() {\n throw new TypeError(\"Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.\");\n}\n\n/**\n Promise objects represent the eventual result of an asynchronous operation. The\n primary way of interacting with a promise is through its `then` method, which\n registers callbacks to receive either a promise's eventual value or the reason\n why the promise cannot be fulfilled.\n\n Terminology\n -----------\n\n - `promise` is an object or function with a `then` method whose behavior conforms to this specification.\n - `thenable` is an object or function that defines a `then` method.\n - `value` is any legal JavaScript value (including undefined, a thenable, or a promise).\n - `exception` is a value that is thrown using the throw statement.\n - `reason` is a value that indicates why a promise was rejected.\n - `settled` the final resting state of a promise, fulfilled or rejected.\n\n A promise can be in one of three states: pending, fulfilled, or rejected.\n\n Promises that are fulfilled have a fulfillment value and are in the fulfilled\n state. Promises that are rejected have a rejection reason and are in the\n rejected state. A fulfillment value is never a thenable.\n\n Promises can also be said to *resolve* a value. If this value is also a\n promise, then the original promise's settled state will match the value's\n settled state. So a promise that *resolves* a promise that rejects will\n itself reject, and a promise that *resolves* a promise that fulfills will\n itself fulfill.\n\n\n Basic Usage:\n ------------\n\n ```js\n let promise = new Promise(function(resolve, reject) {\n // on success\n resolve(value);\n\n // on failure\n reject(reason);\n });\n\n promise.then(function(value) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Advanced Usage:\n ---------------\n\n Promises shine when abstracting away asynchronous interactions such as\n `XMLHttpRequest`s.\n\n ```js\n function getJSON(url) {\n return new Promise(function(resolve, reject){\n let xhr = new XMLHttpRequest();\n\n xhr.open('GET', url);\n xhr.onreadystatechange = handler;\n xhr.responseType = 'json';\n xhr.setRequestHeader('Accept', 'application/json');\n xhr.send();\n\n function handler() {\n if (this.readyState === this.DONE) {\n if (this.status === 200) {\n resolve(this.response);\n } else {\n reject(new Error('getJSON: `' + url + '` failed with status: [' + this.status + ']'));\n }\n }\n };\n });\n }\n\n getJSON('/posts.json').then(function(json) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Unlike callbacks, promises are great composable primitives.\n\n ```js\n Promise.all([\n getJSON('/posts'),\n getJSON('/comments')\n ]).then(function(values){\n values[0] // => postsJSON\n values[1] // => commentsJSON\n\n return values;\n });\n ```\n\n @class Promise\n @param {function} resolver\n Useful for tooling.\n @constructor\n*/\nfunction Promise(resolver) {\n this[PROMISE_ID] = nextId();\n this._result = this._state = undefined;\n this._subscribers = [];\n\n if (noop !== resolver) {\n typeof resolver !== 'function' && needsResolver();\n this instanceof Promise ? initializePromise(this, resolver) : needsNew();\n }\n}\n\nPromise.all = all;\nPromise.race = race;\nPromise.resolve = resolve;\nPromise.reject = reject;\nPromise._setScheduler = setScheduler;\nPromise._setAsap = setAsap;\nPromise._asap = asap;\n\nPromise.prototype = {\n constructor: Promise,\n\n /**\n The primary way of interacting with a promise is through its `then` method,\n which registers callbacks to receive either a promise's eventual value or the\n reason why the promise cannot be fulfilled.\n \n ```js\n findUser().then(function(user){\n // user is available\n }, function(reason){\n // user is unavailable, and you are given the reason why\n });\n ```\n \n Chaining\n --------\n \n The return value of `then` is itself a promise. This second, 'downstream'\n promise is resolved with the return value of the first promise's fulfillment\n or rejection handler, or rejected if the handler throws an exception.\n \n ```js\n findUser().then(function (user) {\n return user.name;\n }, function (reason) {\n return 'default name';\n }).then(function (userName) {\n // If `findUser` fulfilled, `userName` will be the user's name, otherwise it\n // will be `'default name'`\n });\n \n findUser().then(function (user) {\n throw new Error('Found user, but still unhappy');\n }, function (reason) {\n throw new Error('`findUser` rejected and we're unhappy');\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // if `findUser` fulfilled, `reason` will be 'Found user, but still unhappy'.\n // If `findUser` rejected, `reason` will be '`findUser` rejected and we're unhappy'.\n });\n ```\n If the downstream promise does not specify a rejection handler, rejection reasons will be propagated further downstream.\n \n ```js\n findUser().then(function (user) {\n throw new PedagogicalException('Upstream error');\n }).then(function (value) {\n // never reached\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // The `PedgagocialException` is propagated all the way down to here\n });\n ```\n \n Assimilation\n ------------\n \n Sometimes the value you want to propagate to a downstream promise can only be\n retrieved asynchronously. This can be achieved by returning a promise in the\n fulfillment or rejection handler. The downstream promise will then be pending\n until the returned promise is settled. This is called *assimilation*.\n \n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // The user's comments are now available\n });\n ```\n \n If the assimliated promise rejects, then the downstream promise will also reject.\n \n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // If `findCommentsByAuthor` fulfills, we'll have the value here\n }, function (reason) {\n // If `findCommentsByAuthor` rejects, we'll have the reason here\n });\n ```\n \n Simple Example\n --------------\n \n Synchronous Example\n \n ```javascript\n let result;\n \n try {\n result = findResult();\n // success\n } catch(reason) {\n // failure\n }\n ```\n \n Errback Example\n \n ```js\n findResult(function(result, err){\n if (err) {\n // failure\n } else {\n // success\n }\n });\n ```\n \n Promise Example;\n \n ```javascript\n findResult().then(function(result){\n // success\n }, function(reason){\n // failure\n });\n ```\n \n Advanced Example\n --------------\n \n Synchronous Example\n \n ```javascript\n let author, books;\n \n try {\n author = findAuthor();\n books = findBooksByAuthor(author);\n // success\n } catch(reason) {\n // failure\n }\n ```\n \n Errback Example\n \n ```js\n \n function foundBooks(books) {\n \n }\n \n function failure(reason) {\n \n }\n \n findAuthor(function(author, err){\n if (err) {\n failure(err);\n // failure\n } else {\n try {\n findBoooksByAuthor(author, function(books, err) {\n if (err) {\n failure(err);\n } else {\n try {\n foundBooks(books);\n } catch(reason) {\n failure(reason);\n }\n }\n });\n } catch(error) {\n failure(err);\n }\n // success\n }\n });\n ```\n \n Promise Example;\n \n ```javascript\n findAuthor().\n then(findBooksByAuthor).\n then(function(books){\n // found books\n }).catch(function(reason){\n // something went wrong\n });\n ```\n \n @method then\n @param {Function} onFulfilled\n @param {Function} onRejected\n Useful for tooling.\n @return {Promise}\n */\n then: then,\n\n /**\n `catch` is simply sugar for `then(undefined, onRejection)` which makes it the same\n as the catch block of a try/catch statement.\n \n ```js\n function findAuthor(){\n throw new Error('couldn't find that author');\n }\n \n // synchronous\n try {\n findAuthor();\n } catch(reason) {\n // something went wrong\n }\n \n // async with promises\n findAuthor().catch(function(reason){\n // something went wrong\n });\n ```\n \n @method catch\n @param {Function} onRejection\n Useful for tooling.\n @return {Promise}\n */\n 'catch': function _catch(onRejection) {\n return this.then(null, onRejection);\n }\n};\n\nfunction polyfill() {\n var local = undefined;\n\n if (typeof global !== 'undefined') {\n local = global;\n } else if (typeof self !== 'undefined') {\n local = self;\n } else {\n try {\n local = Function('return this')();\n } catch (e) {\n throw new Error('polyfill failed because global object is unavailable in this environment');\n }\n }\n\n var P = local.Promise;\n\n if (P) {\n var promiseToString = null;\n try {\n promiseToString = Object.prototype.toString.call(P.resolve());\n } catch (e) {\n // silently ignored\n }\n\n if (promiseToString === '[object Promise]' && !P.cast) {\n return;\n }\n }\n\n local.Promise = Promise;\n}\n\npolyfill();\n// Strange compat..\nPromise.polyfill = polyfill;\nPromise.Promise = Promise;\n\nreturn Promise;\n\n})));\n//# sourceMappingURL=es6-promise.map","(function(window, factory) {\n\tvar lazySizes = factory(window, window.document, Date);\n\twindow.lazySizes = lazySizes;\n\tif(typeof module == 'object' && module.exports){\n\t\tmodule.exports = lazySizes;\n\t}\n}(typeof window != 'undefined' ?\n window : {}, \n/**\n * import(\"./types/global\")\n * @typedef { import(\"./types/lazysizes-config\").LazySizesConfigPartial } LazySizesConfigPartial\n */\nfunction l(window, document, Date) { // Pass in the window Date function also for SSR because the Date class can be lost\n\t'use strict';\n\t/*jshint eqnull:true */\n\n\tvar lazysizes,\n\t\t/**\n\t\t * @type { LazySizesConfigPartial }\n\t\t */\n\t\tlazySizesCfg;\n\n\t(function(){\n\t\tvar prop;\n\n\t\tvar lazySizesDefaults = {\n\t\t\tlazyClass: 'lazyload',\n\t\t\tloadedClass: 'lazyloaded',\n\t\t\tloadingClass: 'lazyloading',\n\t\t\tpreloadClass: 'lazypreload',\n\t\t\terrorClass: 'lazyerror',\n\t\t\t//strictClass: 'lazystrict',\n\t\t\tautosizesClass: 'lazyautosizes',\n\t\t\tfastLoadedClass: 'ls-is-cached',\n\t\t\tiframeLoadMode: 0,\n\t\t\tsrcAttr: 'data-src',\n\t\t\tsrcsetAttr: 'data-srcset',\n\t\t\tsizesAttr: 'data-sizes',\n\t\t\t//preloadAfterLoad: false,\n\t\t\tminSize: 40,\n\t\t\tcustomMedia: {},\n\t\t\tinit: true,\n\t\t\texpFactor: 1.5,\n\t\t\thFac: 0.8,\n\t\t\tloadMode: 2,\n\t\t\tloadHidden: true,\n\t\t\tricTimeout: 0,\n\t\t\tthrottleDelay: 125,\n\t\t};\n\n\t\tlazySizesCfg = window.lazySizesConfig || window.lazysizesConfig || {};\n\n\t\tfor(prop in lazySizesDefaults){\n\t\t\tif(!(prop in lazySizesCfg)){\n\t\t\t\tlazySizesCfg[prop] = lazySizesDefaults[prop];\n\t\t\t}\n\t\t}\n\t})();\n\n\tif (!document || !document.getElementsByClassName) {\n\t\treturn {\n\t\t\tinit: function () {},\n\t\t\t/**\n\t\t\t * @type { LazySizesConfigPartial }\n\t\t\t */\n\t\t\tcfg: lazySizesCfg,\n\t\t\t/**\n\t\t\t * @type { true }\n\t\t\t */\n\t\t\tnoSupport: true,\n\t\t};\n\t}\n\n\tvar docElem = document.documentElement;\n\n\tvar supportPicture = window.HTMLPictureElement;\n\n\tvar _addEventListener = 'addEventListener';\n\n\tvar _getAttribute = 'getAttribute';\n\n\t/**\n\t * Update to bind to window because 'this' becomes null during SSR\n\t * builds.\n\t */\n\tvar addEventListener = window[_addEventListener].bind(window);\n\n\tvar setTimeout = window.setTimeout;\n\n\tvar requestAnimationFrame = window.requestAnimationFrame || setTimeout;\n\n\tvar requestIdleCallback = window.requestIdleCallback;\n\n\tvar regPicture = /^picture$/i;\n\n\tvar loadEvents = ['load', 'error', 'lazyincluded', '_lazyloaded'];\n\n\tvar regClassCache = {};\n\n\tvar forEach = Array.prototype.forEach;\n\n\t/**\n\t * @param ele {Element}\n\t * @param cls {string}\n\t */\n\tvar hasClass = function(ele, cls) {\n\t\tif(!regClassCache[cls]){\n\t\t\tregClassCache[cls] = new RegExp('(\\\\s|^)'+cls+'(\\\\s|$)');\n\t\t}\n\t\treturn regClassCache[cls].test(ele[_getAttribute]('class') || '') && regClassCache[cls];\n\t};\n\n\t/**\n\t * @param ele {Element}\n\t * @param cls {string}\n\t */\n\tvar addClass = function(ele, cls) {\n\t\tif (!hasClass(ele, cls)){\n\t\t\tele.setAttribute('class', (ele[_getAttribute]('class') || '').trim() + ' ' + cls);\n\t\t}\n\t};\n\n\t/**\n\t * @param ele {Element}\n\t * @param cls {string}\n\t */\n\tvar removeClass = function(ele, cls) {\n\t\tvar reg;\n\t\tif ((reg = hasClass(ele,cls))) {\n\t\t\tele.setAttribute('class', (ele[_getAttribute]('class') || '').replace(reg, ' '));\n\t\t}\n\t};\n\n\tvar addRemoveLoadEvents = function(dom, fn, add){\n\t\tvar action = add ? _addEventListener : 'removeEventListener';\n\t\tif(add){\n\t\t\taddRemoveLoadEvents(dom, fn);\n\t\t}\n\t\tloadEvents.forEach(function(evt){\n\t\t\tdom[action](evt, fn);\n\t\t});\n\t};\n\n\t/**\n\t * @param elem { Element }\n\t * @param name { string }\n\t * @param detail { any }\n\t * @param noBubbles { boolean }\n\t * @param noCancelable { boolean }\n\t * @returns { CustomEvent }\n\t */\n\tvar triggerEvent = function(elem, name, detail, noBubbles, noCancelable){\n\t\tvar event = document.createEvent('Event');\n\n\t\tif(!detail){\n\t\t\tdetail = {};\n\t\t}\n\n\t\tdetail.instance = lazysizes;\n\n\t\tevent.initEvent(name, !noBubbles, !noCancelable);\n\n\t\tevent.detail = detail;\n\n\t\telem.dispatchEvent(event);\n\t\treturn event;\n\t};\n\n\tvar updatePolyfill = function (el, full){\n\t\tvar polyfill;\n\t\tif( !supportPicture && ( polyfill = (window.picturefill || lazySizesCfg.pf) ) ){\n\t\t\tif(full && full.src && !el[_getAttribute]('srcset')){\n\t\t\t\tel.setAttribute('srcset', full.src);\n\t\t\t}\n\t\t\tpolyfill({reevaluate: true, elements: [el]});\n\t\t} else if(full && full.src){\n\t\t\tel.src = full.src;\n\t\t}\n\t};\n\n\tvar getCSS = function (elem, style){\n\t\treturn (getComputedStyle(elem, null) || {})[style];\n\t};\n\n\t/**\n\t *\n\t * @param elem { Element }\n\t * @param parent { Element }\n\t * @param [width] {number}\n\t * @returns {number}\n\t */\n\tvar getWidth = function(elem, parent, width){\n\t\twidth = width || elem.offsetWidth;\n\n\t\twhile(width < lazySizesCfg.minSize && parent && !elem._lazysizesWidth){\n\t\t\twidth = parent.offsetWidth;\n\t\t\tparent = parent.parentNode;\n\t\t}\n\n\t\treturn width;\n\t};\n\n\tvar rAF = (function(){\n\t\tvar running, waiting;\n\t\tvar firstFns = [];\n\t\tvar secondFns = [];\n\t\tvar fns = firstFns;\n\n\t\tvar run = function(){\n\t\t\tvar runFns = fns;\n\n\t\t\tfns = firstFns.length ? secondFns : firstFns;\n\n\t\t\trunning = true;\n\t\t\twaiting = false;\n\n\t\t\twhile(runFns.length){\n\t\t\t\trunFns.shift()();\n\t\t\t}\n\n\t\t\trunning = false;\n\t\t};\n\n\t\tvar rafBatch = function(fn, queue){\n\t\t\tif(running && !queue){\n\t\t\t\tfn.apply(this, arguments);\n\t\t\t} else {\n\t\t\t\tfns.push(fn);\n\n\t\t\t\tif(!waiting){\n\t\t\t\t\twaiting = true;\n\t\t\t\t\t(document.hidden ? setTimeout : requestAnimationFrame)(run);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\trafBatch._lsFlush = run;\n\n\t\treturn rafBatch;\n\t})();\n\n\tvar rAFIt = function(fn, simple){\n\t\treturn simple ?\n\t\t\tfunction() {\n\t\t\t\trAF(fn);\n\t\t\t} :\n\t\t\tfunction(){\n\t\t\t\tvar that = this;\n\t\t\t\tvar args = arguments;\n\t\t\t\trAF(function(){\n\t\t\t\t\tfn.apply(that, args);\n\t\t\t\t});\n\t\t\t}\n\t\t;\n\t};\n\n\tvar throttle = function(fn){\n\t\tvar running;\n\t\tvar lastTime = 0;\n\t\tvar gDelay = lazySizesCfg.throttleDelay;\n\t\tvar rICTimeout = lazySizesCfg.ricTimeout;\n\t\tvar run = function(){\n\t\t\trunning = false;\n\t\t\tlastTime = Date.now();\n\t\t\tfn();\n\t\t};\n\t\tvar idleCallback = requestIdleCallback && rICTimeout > 49 ?\n\t\t\tfunction(){\n\t\t\t\trequestIdleCallback(run, {timeout: rICTimeout});\n\n\t\t\t\tif(rICTimeout !== lazySizesCfg.ricTimeout){\n\t\t\t\t\trICTimeout = lazySizesCfg.ricTimeout;\n\t\t\t\t}\n\t\t\t} :\n\t\t\trAFIt(function(){\n\t\t\t\tsetTimeout(run);\n\t\t\t}, true)\n\t\t;\n\n\t\treturn function(isPriority){\n\t\t\tvar delay;\n\n\t\t\tif((isPriority = isPriority === true)){\n\t\t\t\trICTimeout = 33;\n\t\t\t}\n\n\t\t\tif(running){\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\trunning = true;\n\n\t\t\tdelay = gDelay - (Date.now() - lastTime);\n\n\t\t\tif(delay < 0){\n\t\t\t\tdelay = 0;\n\t\t\t}\n\n\t\t\tif(isPriority || delay < 9){\n\t\t\t\tidleCallback();\n\t\t\t} else {\n\t\t\t\tsetTimeout(idleCallback, delay);\n\t\t\t}\n\t\t};\n\t};\n\n\t//based on http://modernjavascript.blogspot.de/2013/08/building-better-debounce.html\n\tvar debounce = function(func) {\n\t\tvar timeout, timestamp;\n\t\tvar wait = 99;\n\t\tvar run = function(){\n\t\t\ttimeout = null;\n\t\t\tfunc();\n\t\t};\n\t\tvar later = function() {\n\t\t\tvar last = Date.now() - timestamp;\n\n\t\t\tif (last < wait) {\n\t\t\t\tsetTimeout(later, wait - last);\n\t\t\t} else {\n\t\t\t\t(requestIdleCallback || run)(run);\n\t\t\t}\n\t\t};\n\n\t\treturn function() {\n\t\t\ttimestamp = Date.now();\n\n\t\t\tif (!timeout) {\n\t\t\t\ttimeout = setTimeout(later, wait);\n\t\t\t}\n\t\t};\n\t};\n\n\tvar loader = (function(){\n\t\tvar preloadElems, isCompleted, resetPreloadingTimer, loadMode, started;\n\n\t\tvar eLvW, elvH, eLtop, eLleft, eLright, eLbottom, isBodyHidden;\n\n\t\tvar regImg = /^img$/i;\n\t\tvar regIframe = /^iframe$/i;\n\n\t\tvar supportScroll = ('onscroll' in window) && !(/(gle|ing)bot/.test(navigator.userAgent));\n\n\t\tvar shrinkExpand = 0;\n\t\tvar currentExpand = 0;\n\n\t\tvar isLoading = 0;\n\t\tvar lowRuns = -1;\n\n\t\tvar resetPreloading = function(e){\n\t\t\tisLoading--;\n\t\t\tif(!e || isLoading < 0 || !e.target){\n\t\t\t\tisLoading = 0;\n\t\t\t}\n\t\t};\n\n\t\tvar isVisible = function (elem) {\n\t\t\tif (isBodyHidden == null) {\n\t\t\t\tisBodyHidden = getCSS(document.body, 'visibility') == 'hidden';\n\t\t\t}\n\n\t\t\treturn isBodyHidden || !(getCSS(elem.parentNode, 'visibility') == 'hidden' && getCSS(elem, 'visibility') == 'hidden');\n\t\t};\n\n\t\tvar isNestedVisible = function(elem, elemExpand){\n\t\t\tvar outerRect;\n\t\t\tvar parent = elem;\n\t\t\tvar visible = isVisible(elem);\n\n\t\t\teLtop -= elemExpand;\n\t\t\teLbottom += elemExpand;\n\t\t\teLleft -= elemExpand;\n\t\t\teLright += elemExpand;\n\n\t\t\twhile(visible && (parent = parent.offsetParent) && parent != document.body && parent != docElem){\n\t\t\t\tvisible = ((getCSS(parent, 'opacity') || 1) > 0);\n\n\t\t\t\tif(visible && getCSS(parent, 'overflow') != 'visible'){\n\t\t\t\t\touterRect = parent.getBoundingClientRect();\n\t\t\t\t\tvisible = eLright > outerRect.left &&\n\t\t\t\t\t\teLleft < outerRect.right &&\n\t\t\t\t\t\teLbottom > outerRect.top - 1 &&\n\t\t\t\t\t\teLtop < outerRect.bottom + 1\n\t\t\t\t\t;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn visible;\n\t\t};\n\n\t\tvar checkElements = function() {\n\t\t\tvar eLlen, i, rect, autoLoadElem, loadedSomething, elemExpand, elemNegativeExpand, elemExpandVal,\n\t\t\t\tbeforeExpandVal, defaultExpand, preloadExpand, hFac;\n\t\t\tvar lazyloadElems = lazysizes.elements;\n\n\t\t\tif((loadMode = lazySizesCfg.loadMode) && isLoading < 8 && (eLlen = lazyloadElems.length)){\n\n\t\t\t\ti = 0;\n\n\t\t\t\tlowRuns++;\n\n\t\t\t\tfor(; i < eLlen; i++){\n\n\t\t\t\t\tif(!lazyloadElems[i] || lazyloadElems[i]._lazyRace){continue;}\n\n\t\t\t\t\tif(!supportScroll || (lazysizes.prematureUnveil && lazysizes.prematureUnveil(lazyloadElems[i]))){unveilElement(lazyloadElems[i]);continue;}\n\n\t\t\t\t\tif(!(elemExpandVal = lazyloadElems[i][_getAttribute]('data-expand')) || !(elemExpand = elemExpandVal * 1)){\n\t\t\t\t\t\telemExpand = currentExpand;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!defaultExpand) {\n\t\t\t\t\t\tdefaultExpand = (!lazySizesCfg.expand || lazySizesCfg.expand < 1) ?\n\t\t\t\t\t\t\tdocElem.clientHeight > 500 && docElem.clientWidth > 500 ? 500 : 370 :\n\t\t\t\t\t\t\tlazySizesCfg.expand;\n\n\t\t\t\t\t\tlazysizes._defEx = defaultExpand;\n\n\t\t\t\t\t\tpreloadExpand = defaultExpand * lazySizesCfg.expFactor;\n\t\t\t\t\t\thFac = lazySizesCfg.hFac;\n\t\t\t\t\t\tisBodyHidden = null;\n\n\t\t\t\t\t\tif(currentExpand < preloadExpand && isLoading < 1 && lowRuns > 2 && loadMode > 2 && !document.hidden){\n\t\t\t\t\t\t\tcurrentExpand = preloadExpand;\n\t\t\t\t\t\t\tlowRuns = 0;\n\t\t\t\t\t\t} else if(loadMode > 1 && lowRuns > 1 && isLoading < 6){\n\t\t\t\t\t\t\tcurrentExpand = defaultExpand;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcurrentExpand = shrinkExpand;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif(beforeExpandVal !== elemExpand){\n\t\t\t\t\t\teLvW = innerWidth + (elemExpand * hFac);\n\t\t\t\t\t\telvH = innerHeight + elemExpand;\n\t\t\t\t\t\telemNegativeExpand = elemExpand * -1;\n\t\t\t\t\t\tbeforeExpandVal = elemExpand;\n\t\t\t\t\t}\n\n\t\t\t\t\trect = lazyloadElems[i].getBoundingClientRect();\n\n\t\t\t\t\tif ((eLbottom = rect.bottom) >= elemNegativeExpand &&\n\t\t\t\t\t\t(eLtop = rect.top) <= elvH &&\n\t\t\t\t\t\t(eLright = rect.right) >= elemNegativeExpand * hFac &&\n\t\t\t\t\t\t(eLleft = rect.left) <= eLvW &&\n\t\t\t\t\t\t(eLbottom || eLright || eLleft || eLtop) &&\n\t\t\t\t\t\t(lazySizesCfg.loadHidden || isVisible(lazyloadElems[i])) &&\n\t\t\t\t\t\t((isCompleted && isLoading < 3 && !elemExpandVal && (loadMode < 3 || lowRuns < 4)) || isNestedVisible(lazyloadElems[i], elemExpand))){\n\t\t\t\t\t\tunveilElement(lazyloadElems[i]);\n\t\t\t\t\t\tloadedSomething = true;\n\t\t\t\t\t\tif(isLoading > 9){break;}\n\t\t\t\t\t} else if(!loadedSomething && isCompleted && !autoLoadElem &&\n\t\t\t\t\t\tisLoading < 4 && lowRuns < 4 && loadMode > 2 &&\n\t\t\t\t\t\t(preloadElems[0] || lazySizesCfg.preloadAfterLoad) &&\n\t\t\t\t\t\t(preloadElems[0] || (!elemExpandVal && ((eLbottom || eLright || eLleft || eLtop) || lazyloadElems[i][_getAttribute](lazySizesCfg.sizesAttr) != 'auto')))){\n\t\t\t\t\t\tautoLoadElem = preloadElems[0] || lazyloadElems[i];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif(autoLoadElem && !loadedSomething){\n\t\t\t\t\tunveilElement(autoLoadElem);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tvar throttledCheckElements = throttle(checkElements);\n\n\t\tvar switchLoadingClass = function(e){\n\t\t\tvar elem = e.target;\n\n\t\t\tif (elem._lazyCache) {\n\t\t\t\tdelete elem._lazyCache;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tresetPreloading(e);\n\t\t\taddClass(elem, lazySizesCfg.loadedClass);\n\t\t\tremoveClass(elem, lazySizesCfg.loadingClass);\n\t\t\taddRemoveLoadEvents(elem, rafSwitchLoadingClass);\n\t\t\ttriggerEvent(elem, 'lazyloaded');\n\t\t};\n\t\tvar rafedSwitchLoadingClass = rAFIt(switchLoadingClass);\n\t\tvar rafSwitchLoadingClass = function(e){\n\t\t\trafedSwitchLoadingClass({target: e.target});\n\t\t};\n\n\t\tvar changeIframeSrc = function(elem, src){\n\t\t\tvar loadMode = elem.getAttribute('data-load-mode') || lazySizesCfg.iframeLoadMode;\n\n\t\t\t// loadMode can be also a string!\n\t\t\tif (loadMode == 0) {\n\t\t\t\telem.contentWindow.location.replace(src);\n\t\t\t} else if (loadMode == 1) {\n\t\t\t\telem.src = src;\n\t\t\t}\n\t\t};\n\n\t\tvar handleSources = function(source){\n\t\t\tvar customMedia;\n\n\t\t\tvar sourceSrcset = source[_getAttribute](lazySizesCfg.srcsetAttr);\n\n\t\t\tif( (customMedia = lazySizesCfg.customMedia[source[_getAttribute]('data-media') || source[_getAttribute]('media')]) ){\n\t\t\t\tsource.setAttribute('media', customMedia);\n\t\t\t}\n\n\t\t\tif(sourceSrcset){\n\t\t\t\tsource.setAttribute('srcset', sourceSrcset);\n\t\t\t}\n\t\t};\n\n\t\tvar lazyUnveil = rAFIt(function (elem, detail, isAuto, sizes, isImg){\n\t\t\tvar src, srcset, parent, isPicture, event, firesLoad;\n\n\t\t\tif(!(event = triggerEvent(elem, 'lazybeforeunveil', detail)).defaultPrevented){\n\n\t\t\t\tif(sizes){\n\t\t\t\t\tif(isAuto){\n\t\t\t\t\t\taddClass(elem, lazySizesCfg.autosizesClass);\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem.setAttribute('sizes', sizes);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tsrcset = elem[_getAttribute](lazySizesCfg.srcsetAttr);\n\t\t\t\tsrc = elem[_getAttribute](lazySizesCfg.srcAttr);\n\n\t\t\t\tif(isImg) {\n\t\t\t\t\tparent = elem.parentNode;\n\t\t\t\t\tisPicture = parent && regPicture.test(parent.nodeName || '');\n\t\t\t\t}\n\n\t\t\t\tfiresLoad = detail.firesLoad || (('src' in elem) && (srcset || src || isPicture));\n\n\t\t\t\tevent = {target: elem};\n\n\t\t\t\taddClass(elem, lazySizesCfg.loadingClass);\n\n\t\t\t\tif(firesLoad){\n\t\t\t\t\tclearTimeout(resetPreloadingTimer);\n\t\t\t\t\tresetPreloadingTimer = setTimeout(resetPreloading, 2500);\n\t\t\t\t\taddRemoveLoadEvents(elem, rafSwitchLoadingClass, true);\n\t\t\t\t}\n\n\t\t\t\tif(isPicture){\n\t\t\t\t\tforEach.call(parent.getElementsByTagName('source'), handleSources);\n\t\t\t\t}\n\n\t\t\t\tif(srcset){\n\t\t\t\t\telem.setAttribute('srcset', srcset);\n\t\t\t\t} else if(src && !isPicture){\n\t\t\t\t\tif(regIframe.test(elem.nodeName)){\n\t\t\t\t\t\tchangeIframeSrc(elem, src);\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem.src = src;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif(isImg && (srcset || isPicture)){\n\t\t\t\t\tupdatePolyfill(elem, {src: src});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(elem._lazyRace){\n\t\t\t\tdelete elem._lazyRace;\n\t\t\t}\n\t\t\tremoveClass(elem, lazySizesCfg.lazyClass);\n\n\t\t\trAF(function(){\n\t\t\t\t// Part of this can be removed as soon as this fix is older: https://bugs.chromium.org/p/chromium/issues/detail?id=7731 (2015)\n\t\t\t\tvar isLoaded = elem.complete && elem.naturalWidth > 1;\n\n\t\t\t\tif( !firesLoad || isLoaded){\n\t\t\t\t\tif (isLoaded) {\n\t\t\t\t\t\taddClass(elem, lazySizesCfg.fastLoadedClass);\n\t\t\t\t\t}\n\t\t\t\t\tswitchLoadingClass(event);\n\t\t\t\t\telem._lazyCache = true;\n\t\t\t\t\tsetTimeout(function(){\n\t\t\t\t\t\tif ('_lazyCache' in elem) {\n\t\t\t\t\t\t\tdelete elem._lazyCache;\n\t\t\t\t\t\t}\n\t\t\t\t\t}, 9);\n\t\t\t\t}\n\t\t\t\tif (elem.loading == 'lazy') {\n\t\t\t\t\tisLoading--;\n\t\t\t\t}\n\t\t\t}, true);\n\t\t});\n\n\t\t/**\n\t\t *\n\t\t * @param elem { Element }\n\t\t */\n\t\tvar unveilElement = function (elem){\n\t\t\tif (elem._lazyRace) {return;}\n\t\t\tvar detail;\n\n\t\t\tvar isImg = regImg.test(elem.nodeName);\n\n\t\t\t//allow using sizes=\"auto\", but don't use. it's invalid. Use data-sizes=\"auto\" or a valid value for sizes instead (i.e.: sizes=\"80vw\")\n\t\t\tvar sizes = isImg && (elem[_getAttribute](lazySizesCfg.sizesAttr) || elem[_getAttribute]('sizes'));\n\t\t\tvar isAuto = sizes == 'auto';\n\n\t\t\tif( (isAuto || !isCompleted) && isImg && (elem[_getAttribute]('src') || elem.srcset) && !elem.complete && !hasClass(elem, lazySizesCfg.errorClass) && hasClass(elem, lazySizesCfg.lazyClass)){return;}\n\n\t\t\tdetail = triggerEvent(elem, 'lazyunveilread').detail;\n\n\t\t\tif(isAuto){\n\t\t\t\t autoSizer.updateElem(elem, true, elem.offsetWidth);\n\t\t\t}\n\n\t\t\telem._lazyRace = true;\n\t\t\tisLoading++;\n\n\t\t\tlazyUnveil(elem, detail, isAuto, sizes, isImg);\n\t\t};\n\n\t\tvar afterScroll = debounce(function(){\n\t\t\tlazySizesCfg.loadMode = 3;\n\t\t\tthrottledCheckElements();\n\t\t});\n\n\t\tvar altLoadmodeScrollListner = function(){\n\t\t\tif(lazySizesCfg.loadMode == 3){\n\t\t\t\tlazySizesCfg.loadMode = 2;\n\t\t\t}\n\t\t\tafterScroll();\n\t\t};\n\n\t\tvar onload = function(){\n\t\t\tif(isCompleted){return;}\n\t\t\tif(Date.now() - started < 999){\n\t\t\t\tsetTimeout(onload, 999);\n\t\t\t\treturn;\n\t\t\t}\n\n\n\t\t\tisCompleted = true;\n\n\t\t\tlazySizesCfg.loadMode = 3;\n\n\t\t\tthrottledCheckElements();\n\n\t\t\taddEventListener('scroll', altLoadmodeScrollListner, true);\n\t\t};\n\n\t\treturn {\n\t\t\t_: function(){\n\t\t\t\tstarted = Date.now();\n\n\t\t\t\tlazysizes.elements = document.getElementsByClassName(lazySizesCfg.lazyClass);\n\t\t\t\tpreloadElems = document.getElementsByClassName(lazySizesCfg.lazyClass + ' ' + lazySizesCfg.preloadClass);\n\n\t\t\t\taddEventListener('scroll', throttledCheckElements, true);\n\n\t\t\t\taddEventListener('resize', throttledCheckElements, true);\n\n\t\t\t\taddEventListener('pageshow', function (e) {\n\t\t\t\t\tif (e.persisted) {\n\t\t\t\t\t\tvar loadingElements = document.querySelectorAll('.' + lazySizesCfg.loadingClass);\n\n\t\t\t\t\t\tif (loadingElements.length && loadingElements.forEach) {\n\t\t\t\t\t\t\trequestAnimationFrame(function () {\n\t\t\t\t\t\t\t\tloadingElements.forEach( function (img) {\n\t\t\t\t\t\t\t\t\tif (img.complete) {\n\t\t\t\t\t\t\t\t\t\tunveilElement(img);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif(window.MutationObserver){\n\t\t\t\t\tnew MutationObserver( throttledCheckElements ).observe( docElem, {childList: true, subtree: true, attributes: true} );\n\t\t\t\t} else {\n\t\t\t\t\tdocElem[_addEventListener]('DOMNodeInserted', throttledCheckElements, true);\n\t\t\t\t\tdocElem[_addEventListener]('DOMAttrModified', throttledCheckElements, true);\n\t\t\t\t\tsetInterval(throttledCheckElements, 999);\n\t\t\t\t}\n\n\t\t\t\taddEventListener('hashchange', throttledCheckElements, true);\n\n\t\t\t\t//, 'fullscreenchange'\n\t\t\t\t['focus', 'mouseover', 'click', 'load', 'transitionend', 'animationend'].forEach(function(name){\n\t\t\t\t\tdocument[_addEventListener](name, throttledCheckElements, true);\n\t\t\t\t});\n\n\t\t\t\tif((/d$|^c/.test(document.readyState))){\n\t\t\t\t\tonload();\n\t\t\t\t} else {\n\t\t\t\t\taddEventListener('load', onload);\n\t\t\t\t\tdocument[_addEventListener]('DOMContentLoaded', throttledCheckElements);\n\t\t\t\t\tsetTimeout(onload, 20000);\n\t\t\t\t}\n\n\t\t\t\tif(lazysizes.elements.length){\n\t\t\t\t\tcheckElements();\n\t\t\t\t\trAF._lsFlush();\n\t\t\t\t} else {\n\t\t\t\t\tthrottledCheckElements();\n\t\t\t\t}\n\t\t\t},\n\t\t\tcheckElems: throttledCheckElements,\n\t\t\tunveil: unveilElement,\n\t\t\t_aLSL: altLoadmodeScrollListner,\n\t\t};\n\t})();\n\n\n\tvar autoSizer = (function(){\n\t\tvar autosizesElems;\n\n\t\tvar sizeElement = rAFIt(function(elem, parent, event, width){\n\t\t\tvar sources, i, len;\n\t\t\telem._lazysizesWidth = width;\n\t\t\twidth += 'px';\n\n\t\t\telem.setAttribute('sizes', width);\n\n\t\t\tif(regPicture.test(parent.nodeName || '')){\n\t\t\t\tsources = parent.getElementsByTagName('source');\n\t\t\t\tfor(i = 0, len = sources.length; i < len; i++){\n\t\t\t\t\tsources[i].setAttribute('sizes', width);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(!event.detail.dataAttr){\n\t\t\t\tupdatePolyfill(elem, event.detail);\n\t\t\t}\n\t\t});\n\t\t/**\n\t\t *\n\t\t * @param elem {Element}\n\t\t * @param dataAttr\n\t\t * @param [width] { number }\n\t\t */\n\t\tvar getSizeElement = function (elem, dataAttr, width){\n\t\t\tvar event;\n\t\t\tvar parent = elem.parentNode;\n\n\t\t\tif(parent){\n\t\t\t\twidth = getWidth(elem, parent, width);\n\t\t\t\tevent = triggerEvent(elem, 'lazybeforesizes', {width: width, dataAttr: !!dataAttr});\n\n\t\t\t\tif(!event.defaultPrevented){\n\t\t\t\t\twidth = event.detail.width;\n\n\t\t\t\t\tif(width && width !== elem._lazysizesWidth){\n\t\t\t\t\t\tsizeElement(elem, parent, event, width);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tvar updateElementsSizes = function(){\n\t\t\tvar i;\n\t\t\tvar len = autosizesElems.length;\n\t\t\tif(len){\n\t\t\t\ti = 0;\n\n\t\t\t\tfor(; i < len; i++){\n\t\t\t\t\tgetSizeElement(autosizesElems[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tvar debouncedUpdateElementsSizes = debounce(updateElementsSizes);\n\n\t\treturn {\n\t\t\t_: function(){\n\t\t\t\tautosizesElems = document.getElementsByClassName(lazySizesCfg.autosizesClass);\n\t\t\t\taddEventListener('resize', debouncedUpdateElementsSizes);\n\t\t\t},\n\t\t\tcheckElems: debouncedUpdateElementsSizes,\n\t\t\tupdateElem: getSizeElement\n\t\t};\n\t})();\n\n\tvar init = function(){\n\t\tif(!init.i && document.getElementsByClassName){\n\t\t\tinit.i = true;\n\t\t\tautoSizer._();\n\t\t\tloader._();\n\t\t}\n\t};\n\n\tsetTimeout(function(){\n\t\tif(lazySizesCfg.init){\n\t\t\tinit();\n\t\t}\n\t});\n\n\tlazysizes = {\n\t\t/**\n\t\t * @type { LazySizesConfigPartial }\n\t\t */\n\t\tcfg: lazySizesCfg,\n\t\tautoSizer: autoSizer,\n\t\tloader: loader,\n\t\tinit: init,\n\t\tuP: updatePolyfill,\n\t\taC: addClass,\n\t\trC: removeClass,\n\t\thC: hasClass,\n\t\tfire: triggerEvent,\n\t\tgW: getWidth,\n\t\trAF: rAF,\n\t};\n\n\treturn lazysizes;\n}\n));\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","var trimmedEndIndex = require('./_trimmedEndIndex');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nmodule.exports = baseTrim;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nmodule.exports = trimmedEndIndex;\n","var isObject = require('./isObject'),\n now = require('./now'),\n toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nmodule.exports = debounce;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nmodule.exports = now;\n","var baseTrim = require('./_baseTrim'),\n isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(\"scrollMonitor\",[],e):\"object\"==typeof exports?exports.scrollMonitor=e():t.scrollMonitor=e()}(this,function(){return function(t){function e(o){if(i[o])return i[o].exports;var s=i[o]={exports:{},id:o,loaded:!1};return t[o].call(s.exports,s,s.exports,e),s.loaded=!0,s.exports}var i={};return e.m=t,e.c=i,e.p=\"\",e(0)}([function(t,e,i){\"use strict\";var o=i(1),s=o.isInBrowser,n=i(2),r=new n(s?document.body:null);r.setStateFromDOM(null),r.listenToDOM(),s&&(window.scrollMonitor=r),t.exports=r},function(t,e){\"use strict\";e.VISIBILITYCHANGE=\"visibilityChange\",e.ENTERVIEWPORT=\"enterViewport\",e.FULLYENTERVIEWPORT=\"fullyEnterViewport\",e.EXITVIEWPORT=\"exitViewport\",e.PARTIALLYEXITVIEWPORT=\"partiallyExitViewport\",e.LOCATIONCHANGE=\"locationChange\",e.STATECHANGE=\"stateChange\",e.eventTypes=[e.VISIBILITYCHANGE,e.ENTERVIEWPORT,e.FULLYENTERVIEWPORT,e.EXITVIEWPORT,e.PARTIALLYEXITVIEWPORT,e.LOCATIONCHANGE,e.STATECHANGE],e.isOnServer=\"undefined\"==typeof window,e.isInBrowser=!e.isOnServer,e.defaultOffsets={top:0,bottom:0}},function(t,e,i){\"use strict\";function o(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function s(t){return c?0:t===document.body?window.innerHeight||document.documentElement.clientHeight:t.clientHeight}function n(t){return c?0:t===document.body?Math.max(document.body.scrollHeight,document.documentElement.scrollHeight,document.body.offsetHeight,document.documentElement.offsetHeight,document.documentElement.clientHeight):t.scrollHeight}function r(t){return c?0:t===document.body?window.pageYOffset||document.documentElement&&document.documentElement.scrollTop||document.body.scrollTop:t.scrollTop}var h=i(1),c=h.isOnServer,a=h.isInBrowser,l=h.eventTypes,p=i(3),u=!1;if(a)try{var w=Object.defineProperty({},\"passive\",{get:function(){u=!0}});window.addEventListener(\"test\",null,w)}catch(t){}var d=!!u&&{capture:!1,passive:!0},f=function(){function t(e,i){function h(){if(a.viewportTop=r(e),a.viewportBottom=a.viewportTop+a.viewportHeight,a.documentHeight=n(e),a.documentHeight!==p){for(u=a.watchers.length;u--;)a.watchers[u].recalculateLocation();p=a.documentHeight}}function c(){for(w=a.watchers.length;w--;)a.watchers[w].update();for(w=a.watchers.length;w--;)a.watchers[w].triggerCallbacks()}o(this,t);var a=this;this.item=e,this.watchers=[],this.viewportTop=null,this.viewportBottom=null,this.documentHeight=n(e),this.viewportHeight=s(e),this.DOMListener=function(){t.prototype.DOMListener.apply(a,arguments)},this.eventTypes=l,i&&(this.containerWatcher=i.create(e));var p,u,w;this.update=function(){h(),c()},this.recalculateLocations=function(){this.documentHeight=0,this.update()}}return t.prototype.listenToDOM=function(){a&&(window.addEventListener?(this.item===document.body?window.addEventListener(\"scroll\",this.DOMListener,d):this.item.addEventListener(\"scroll\",this.DOMListener,d),window.addEventListener(\"resize\",this.DOMListener)):(this.item===document.body?window.attachEvent(\"onscroll\",this.DOMListener):this.item.attachEvent(\"onscroll\",this.DOMListener),window.attachEvent(\"onresize\",this.DOMListener)),this.destroy=function(){window.addEventListener?(this.item===document.body?(window.removeEventListener(\"scroll\",this.DOMListener,d),this.containerWatcher.destroy()):this.item.removeEventListener(\"scroll\",this.DOMListener,d),window.removeEventListener(\"resize\",this.DOMListener)):(this.item===document.body?(window.detachEvent(\"onscroll\",this.DOMListener),this.containerWatcher.destroy()):this.item.detachEvent(\"onscroll\",this.DOMListener),window.detachEvent(\"onresize\",this.DOMListener))})},t.prototype.destroy=function(){},t.prototype.DOMListener=function(t){this.setStateFromDOM(t)},t.prototype.setStateFromDOM=function(t){var e=r(this.item),i=s(this.item),o=n(this.item);this.setState(e,i,o,t)},t.prototype.setState=function(t,e,i,o){var s=e!==this.viewportHeight||i!==this.contentHeight;if(this.latestEvent=o,this.viewportTop=t,this.viewportHeight=e,this.viewportBottom=t+e,this.contentHeight=i,s)for(var n=this.watchers.length;n--;)this.watchers[n].recalculateLocation();this.updateAndTriggerWatchers(o)},t.prototype.updateAndTriggerWatchers=function(t){for(var e=this.watchers.length;e--;)this.watchers[e].update();for(e=this.watchers.length;e--;)this.watchers[e].triggerCallbacks(t)},t.prototype.createCustomContainer=function(){return new t},t.prototype.createContainer=function(e){\"string\"==typeof e?e=document.querySelector(e):e&&e.length>0&&(e=e[0]);var i=new t(e,this);return i.setStateFromDOM(),i.listenToDOM(),i},t.prototype.create=function(t,e){\"string\"==typeof t?t=document.querySelector(t):t&&t.length>0&&(t=t[0]);var i=new p(this,t,e);return this.watchers.push(i),i},t.prototype.beget=function(t,e){return this.create(t,e)},t}();t.exports=f},function(t,e,i){\"use strict\";function o(t,e,i){function o(t,e){if(0!==t.length)for(E=t.length;E--;)y=t[E],y.callback.call(s,e,s),y.isOne&&t.splice(E,1)}var s=this;this.watchItem=e,this.container=t,i?i===+i?this.offsets={top:i,bottom:i}:this.offsets={top:i.top||w.top,bottom:i.bottom||w.bottom}:this.offsets=w,this.callbacks={};for(var d=0,f=u.length;d0?this.top=this.bottom=this.watchItem:this.top=this.bottom=this.container.documentHeight-this.watchItem:(this.top=this.watchItem.top,this.bottom=this.watchItem.bottom);this.top-=this.offsets.top,this.bottom+=this.offsets.bottom,this.height=this.bottom-this.top,void 0===t&&void 0===e||this.top===t&&this.bottom===e||o(this.callbacks[l],null)}},this.recalculateLocation(),this.update(),m=this.isInViewport,v=this.isFullyInViewport,b=this.isAboveViewport,I=this.isBelowViewport}var s=i(1),n=s.VISIBILITYCHANGE,r=s.ENTERVIEWPORT,h=s.FULLYENTERVIEWPORT,c=s.EXITVIEWPORT,a=s.PARTIALLYEXITVIEWPORT,l=s.LOCATIONCHANGE,p=s.STATECHANGE,u=s.eventTypes,w=s.defaultOffsets;o.prototype={on:function(t,e,i){switch(!0){case t===n&&!this.isInViewport&&this.isAboveViewport:case t===r&&this.isInViewport:case t===h&&this.isFullyInViewport:case t===c&&this.isAboveViewport&&!this.isInViewport:case t===a&&this.isInViewport&&this.isAboveViewport:if(e.call(this,this.container.latestEvent,this),i)return}if(!this.callbacks[t])throw new Error(\"Tried to add a scroll monitor listener of type \"+t+\". Your options are: \"+u.join(\", \"));this.callbacks[t].push({callback:e,isOne:i||!1})},off:function(t,e){if(!this.callbacks[t])throw new Error(\"Tried to remove a scroll monitor listener of type \"+t+\". Your options are: \"+u.join(\", \"));for(var i,o=0;i=this.callbacks[t][o];o++)if(i.callback===e){this.callbacks[t].splice(o,1);break}},one:function(t,e){this.on(t,e,!0)},recalculateSize:function(){this.height=this.watchItem.offsetHeight+this.offsets.top+this.offsets.bottom,this.bottom=this.top+this.height},update:function(){this.isAboveViewport=this.topthis.container.viewportBottom,this.isInViewport=this.topthis.container.viewportTop,this.isFullyInViewport=this.top>=this.container.viewportTop&&this.bottom<=this.container.viewportBottom||this.isAboveViewport&&this.isBelowViewport},destroy:function(){var t=this.container.watchers.indexOf(this),e=this;this.container.watchers.splice(t,1);for(var i=0,o=u.length;i