{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./cartridges/app_urbanelectric/cartridge/client/default/js/components/carousel.js","webpack:///./cartridges/app_urbanelectric/cartridge/client/default/js/components/utils.js","webpack:///./cartridges/app_urbanelectric/cartridge/client/default/js/config/carousel.js","webpack:///./cartridges/app_urbanelectric/cartridge/client/default/js/configurator.js","webpack:///./cartridges/app_storefront_base/cartridge/client/default/js/util.js","webpack:///./cartridges/app_urbanelectric/cartridge/client/default/js/components/reCaptcha.js","webpack:///./cartridges/app_urbanelectric/cartridge/client/default/js/components/configurator.js"],"names":["installedModules","__webpack_require__","moduleId","module","i","l","exports","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","carouselConfig","require","type","selector","this","$element","config","settings","moduleName","initialized","setConfig","newConfig","$","extend","defaultSettings","init","activate","data","length","slick","getParameter","paramName","val","params","window","location","search","substring","split","removeParam","sourceURL","rtn","paramsArr","queryString","indexOf","splice","join","updateQueryStringParameter","uri","re","RegExp","separator","match","replace","arraymove","arr","fromIndex","toIndex","element","dots","infinite","mobileFirst","arrows","adaptiveHeight","pdpImageCarousel","slidesToShow","fade","slidesToScroll","pdpProductSetImageCarousel","pdpImageThumbnailsCarousel","asNavFor","variableWidth","focusOnSelect","bundleImageCarousel","responsive","breakpoint","globalConfig","bp","large","bundlepdpImageThumbnailsCarousel","editModalImageCarousel","bonusImageCarousel","quickViewImageCarousel","productTileCarousel","small","featureCarousel","customPaging","slider","$slides","heroBannerCarouselAutoplay","speed","cssEase","touchThreshold","autoplay","autoplaySpeed","heroBannerCarousel","pauseOnHover","imageZoomCarousel","topBannerPlpCarousel","portfolioCarousel","medium","xlarge","portfolioModalCarousel","swipe","pdpLifestyleGalleryCarousel","pdpLifestyleGalleryModalCarousel","productConfiguratorSwatches","gridComponentCarousel","processInclude","_typeof","iterator","constructor","include","keys","forEach","recaptchaData","recaptchaEventsHolder","recaptchaCallbacksArr","onRecaptchaLoad","url","script","grecaptcha","SitePreferences","RECAPTCHA_API_URL","document","createElement","async","src","getElementsByTagName","appendChild","attach","form","callback","invisible","$holder","find","sitekey","RECAPTCHA_SITE_KEY","theme","size","badge","isolated","push","holderId","render","attr","showReCaptcha","formName","execute","reset","Carousel","utils","recaptcha","$cache","tileContainer","swatchTooltip","resultImage","panelTitle","sidemarkWrapper","sidemarkPlaceholder","sidemarkInput","mailHelpSection","overallHeightDropdown","optionDescription","resultValue","swatchSlider","dropdownsWrapper","configuratorForm","saveConfiguratorBtn","editNotLoggedinPopup","priceSummaryFigure","optionName","configuratorQuantity","modalAnimationBackground","panelModal","swatchModal","dropdownContainer","variationDropdownCtnr","resultsWrapper","configuratorPageWrapper","invalidPopup","global","shareConfObj","shareCustomForms","popupSwatchImages","activateSliderId","itemPriceVal","swatchPrice","isSubmitPressed","isSwatchSelected","openCustomSwatchPopup","isUserLoggedIn","grayBlockSrc","variant","variation","sidemark","saveAndReview","swatch","overallHeight","animationTimeout","param","pid","isSharedLink","sharedQty","sharedSidemark","customForm","CONST","CUSTOM_COLOR","POWDER_COAT","PAINT_SELECTION","COM","BUTTON_TYPE","DEFAULT","VARIATION","comFormGroup","comSubmit","comBackButton","comNextButton","numberWithCommas","x","parts","toString","getActiveDropdownById","id","activeDropdownEl","deleteIdFromShareConfObj","clearDisplay","empty","isObjEmpty","obj","updateCharCounter","$el","charsTyped","maxChars","siblings","addClass","removeClass","text","buildPanelView","displayType","fadeOut","fadeIn","buildTile","v","className","addParens","showMobileCaption","groupDisplayName","_tileButton$classList2","newTile","imgSrc","includes","images","startImage","swatchImage","image","tileImage","displayName","textContent","classList","add","textblock","setAttribute","test","optionid","addEventListener","e","target","concat","naturalWidth","tileName","buttonType","displayValue","description","note","tileDetails","append","caption","tileDetailsCaption","swatchDetails","tileDetailsSwatch","hasGroup","children","tileButton","_tileButton$classList","apply","dataset","optionVal","attrid","buildDesignMatrix","prodAttrsJson","$matrixItem","$matrixItemMobile","options","item","selectedId","selectedValueId","optionOrder","each","opId","idx","optionId","colorId","values","j","colorObj","$designMatrix","$designMatrixMobile","hide","eq","prepend","buildAndAppendMainImage","img","mainImage","html","processGroupPricing","op","valueGroupPricing","currentDropdownMenu","closest","valueGroups","entries","group","valueGroupName","valueGroupObj","Values","groupItem","groupPricing","groupPrice","itemData","filter","customerVisible","hasClass","parseInt","priceValue","firstChildId","firstChildOp","findIndex","groupItemName","groupItemObj","DisplayName","currentOp","currentSwatchId","itemName","dropdownItem","selectedOp","selectedValueGroupName","currentHeader","trim","buildAndAppendSwatchPanel","index","currentSwatch","tiles","groupTitle","swatchObj","selectedVal","$activeDropdown","groupClassList","tile","updateExcludedSwatches","excludedSwatches","thisId","idData","$thisDropdown","optionValueRules","optionValueExclusions","Exclude","el","globalI","globalEl","parent","removeAttr","change","itemIndex","numNonTBDSwatchesLeft","tbdSwatch","tbdSwatchId","title","swatchesLeftVisibleInSection","swatchId","header","count","first","groupSwatchText","swatchName","popupImg","swatchImg","buildAndAppendSwatchTiles","buildAndAppendTiles","defaultDisplay","displayClass","next","after","price","salesPrice","formatted","updateVariationDropdownValues","reqData","maps","attrId","configurator","baseProductId","ajax","Urls","CONFIGURATOR_VARIATION_VALUES_UPDATE","headers","method","dataType","JSON","stringify","done","resp","configuratorJSON","variationImages","parse","valuesUpdate","attrID","$menu","$select","$selectedOpt","selectedValue","remove","valObj","opt","selected","prop","trigger","buildAndAppendVariantTiles","tileInfo","alreadyBuilt","btn","getCustomColorString","dropdownID","customOption","selectedCustomVal","initialValue","targetCustomValueMarker","customData","reduce","accumulator","currentFormValue","buildAndAppendSaveAndReview","$resultListItem","$excludedDropdowns","$item","selectedVariant","buildDisplayBasedOnType","isVariationAttribute","$activeOverallClone","last","clone","overallHeightText","overallHeightTitle","updateAttrForDisplayedPanel","option","buildDisplay","rel","descriptionLink","href","enableOption","disableOption","updateDisplay","tileSelectedOption","result","manageSaveButton","disabledSelects","invalidSelectes","emptySelects","updateOptions","optionData","hideOption","showOption","matchExclusionRules","exclusions","optionRules","Include","container","dropdownchildren","mobileselect","updateActiveOptionAttr","triggerChange","observer","MutationObserver","mutations","mutation","selectedOption","$customToggle","modal","prevSelectedVal","selectPopupSwatch","findNextShownSiblingEl","headerHeight","activeSwatch","isShownDropdown","dropdown","height","animate","scrollTop","offset","top","setTimeout","comShadeLoadInputs","updateSwatchPopupDisplay","activeID","swatchInfo","$swatchName","activeSwatchName","$openedForm","swatchDetail","detail","modalId","optionToSelect","selectElement","comModal","enableNextDropdown","findNextShownSibling","nextDD","nextAll","updatePriceOnChangeSelect","select","ddData","additionalPrice","Math","abs","itemPriceWithSwatches","hideIncludedExcludedDropdowns","included","excluded","getOptions","map","String","custom","toArray","getCustomFormOptions","customFormOptionsArr","initRecaptcha","formContainer","recaptchaResponseEl","SHARE_MODAL_RECAPTCHA_ENABLED","shareFormSubmit","$invelidMessage","spinner","start","serialize","success","stop","error","err","responseJSON","redirectUrl","initConfigurator","currentVariation","configData","initialOp","$ddMenus","pathname","menu","items","applyCustomsToGlobal","dropdownData","objectKeyNames","ralColorDefault","colorName","colorBrand","colorCode","comManufacturer","comName","comColorway","comMaterial","comOrientation","comSpecialNotes","optionValues","currentValue","objectKeys","valueId","dropdownId","customValue","selectedCustomValues","toLowerCase","selectedCustomVals","customKeys","selectedValueDisplayValue","enableOptions","enablePrevSibling","prev","enableNext","on","$this","dropdownmenu","currentOptionID","isCusstomSwatch","Number","updateQuantityPrice","updateTotalPrice","leadTimeData","currentVal","totalPrice","longLeadQty","Resources","LEAD_TIME_SPECIALIST_MSG","updateVariationPrice","updateCharCounters","swatchModalOpen","swatchModalShown","activeImageType","activeIndex","swatchModalHide","mobileSelectMenu","curDropdownID","swatchModalSlider","$activeSwatch","swatchModalSelectSwatch","swatchCustomModalSubmit","preventDefault","$form","$selectEls","activeId","activeName","formdataArr","serializeArray","swatchCustomModalDismiss","mobileSelectClick","querySelector","parents","oahNoteDisplay","curOAHSelection","mobileModalHide","mobileModalHidden","mobileModalSelectOption","ddItem","mobileModalSelectOverallOption","$thisVal","$thisId","sidemarkFocusEvents","sidemarkApply","sidemarkPopupVal","sidemarkPlaceholderClick","focus","saveReviewSubmit","contains","dd","newEl","dropdownName","before","editDropdownsClick","printReview","print","shareModalOpen","$subjectInput","base","quantity","sizeParam","userInfoText","k","encodeURIComponent","productName","prefillDropdownsWithParams","enableNextSibling","sidemarkVal","decodeURIComponent","customFormObj","$selectedOptions","$customOption","firstUnselectedDropdown","invalidOptionsEvent","ready","dataValue","invalidId","$invalidDropdown","nonInvalidatingOptions","addToCart","addToCartUrl","pidsObj","sideMark","customOptions","response","messageType","ADD_TO_CART_ACTION","renderedTemplate","outerWidth","message","toastTimeout","updateCart","updateProductUrl","selectedQuantity","uuid","handleComShadeInputs","watchShowClass","observe","attributes","attributeFilter","handleVariationDropdown","selects","$ctnr","querystring","URLSearchParams","querySelectorAll","Array","from","every","variations","valueID","CONFIGURATOR_GET_VARIANT","CONFIGURATOR_VARIATION_AJAX","ddHtml","insertAfter","fail","variants","clearNextSibling","mobileSelect","opHasVal"],"mappings":"KACE,IAAIA,EAAmB,GAGvB,SAASC,EAAoBC,GAG5B,IAIIC,EAJJ,OAAGH,EAAiBE,KAIhBC,EAASH,EAAiBE,GAAY,CACzCE,EAAGF,EACHG,EAAG,GACHC,QAAS,EACV,EAGAC,EAAQL,GAAUM,KAAKL,EAAOG,QAASH,EAAQA,EAAOG,QAASL,CAAmB,EAGlFE,EAAOE,EAAI,GAGJF,IAhB4BG,OAiBpC,CAIAL,EAAoBQ,EAAIF,EAGxBN,EAAoBS,EAAIV,EAGxBC,EAAoBU,EAAI,SAASL,EAASM,EAAMC,GAC3CZ,EAAoBa,EAAER,EAASM,CAAI,GACtCG,OAAOC,eAAeV,EAASM,EAAM,CAAEK,WAAY,GAAMC,IAAKL,CAAO,CAAC,CAExE,EAGAZ,EAAoBkB,EAAI,SAASb,GACX,aAAlB,OAAOc,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAeV,EAASc,OAAOC,YAAa,CAAEC,MAAO,QAAS,CAAC,EAEvEP,OAAOC,eAAeV,EAAS,aAAc,CAAEgB,MAAO,EAAK,CAAC,CAC7D,EAOArB,EAAoBsB,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQrB,EAAoBqB,CAAK,GACpC,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,UAAjB,OAAOF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,IAAI,EAG3B,GAFA1B,EAAoBkB,EAAEO,CAAE,EACxBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,WAAY,GAAMK,MAAOA,CAAM,CAAC,EAC7D,EAAPE,GAA4B,UAAhB,OAAOF,EAAmB,IAAI,IAAIM,KAAON,EAAOrB,EAAoBU,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,EAAM,EAAEC,KAAK,KAAMD,CAAG,CAAC,EAClJ,OAAOF,CACR,EAGAzB,EAAoB6B,EAAI,SAAS3B,GAChC,IAAIU,EAASV,GAAUA,EAAOsB,WAC7B,WAAwB,OAAOtB,EAAgB,OAAG,EAClD,WAA8B,OAAOA,CAAQ,EAE9C,OADAF,EAAoBU,EAAEE,EAAQ,IAAKA,CAAM,EAClCA,CACR,EAGAZ,EAAoBa,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,CAAQ,CAAG,EAGpH/B,EAAoBkC,EAAI,GAIjBlC,EAAoBA,EAAoBmC,EAAI,GAAG,C,uBChFxD,IAAIC,EAAiBC,EAAQ,EAAoB,EAWjDnC,EAAOG,QAAU,SAAUiC,EAAMC,GAgD7B,OA/CAC,KAAKF,KAAOA,EACZE,KAAKD,SAAWA,GAAY,KAC5BC,KAAKC,SAAW,KAChBD,KAAKE,OAAS,GAEdF,KAAKG,SAAW,CACZC,WAAY,WACZC,YAAa,EACjB,EAEAL,KAAKM,UAAY,SAAUJ,GACvB,IAAIK,EAAY,GAEZA,EADqB,UAArB,OAAOP,KAAKF,KACAU,EAAEC,OAAOP,EAAQN,EAAec,gBAAiBd,EAAeI,KAAKF,MAAMK,QAAQ,EAEnFK,EAAEC,OAAOP,EAAQN,EAAec,eAAe,EAG/DV,KAAKE,OAASK,CAClB,EAEAP,KAAKW,KAAO,WASR,OARAX,KAAKK,YAAc,GAEM,UAArB,OAAOL,KAAKF,MAAqBF,EAAeH,eAAeO,KAAKF,IAAI,GAAK,CAACE,KAAKD,SACnFC,KAAKC,SAAWO,EAAEZ,EAAeE,GAAMC,QAAQ,EACnB,UAArB,OAAOC,KAAKF,MAAqBF,EAAeH,eAAeO,KAAKF,IAAI,GAAKE,KAAKD,WACzFC,KAAKC,SAAWO,EAAER,KAAKD,QAAQ,GAG5BC,IACX,EAEAA,KAAKY,SAAW,WACPZ,KAAKK,aACNL,KAAKW,KAAK,EAGgC,KAA1CX,KAAKC,SAASY,KAAK,iBAAiB,GAAeb,KAAKC,SAASa,QAAU,IAI/Ed,KAAKM,UAAUN,KAAKE,MAAM,EAE1BF,KAAKC,SAASc,MAAMf,KAAKE,MAAM,EACnC,EAEOF,KAAKW,KAAK,CACrB,C,mBC9DAjD,EAAOG,QAAU,CACbmD,aAAc,SAAUC,GAMpB,IALA,IAEIC,EACAC,EAHeC,OAAOC,SAASC,OAAOC,UAAU,CAAC,EAG3BC,MAAM,GAAG,EAE9B7D,EAAI,EAAGA,EAAIwD,EAAOL,OAAQnD,CAAC,GAG5B,IAFAuD,EAAMC,EAAOxD,GAAG6D,MAAM,GAAG,GAEjB,KAAOP,EACX,OAAOC,EAAI,GAGnB,OAAO,IACX,EACAO,YAAa,SAAUtC,EAAKuC,GACxB,IAAIC,EAAMD,EAAUF,MAAM,GAAG,EAAE,GAE3BI,EAAY,GACZC,EAA0C,CAAC,IAA5BH,EAAUI,QAAQ,GAAG,EAAYJ,EAAUF,MAAM,GAAG,EAAE,GAAK,GAC9E,GAAoB,KAAhBK,EAAoB,CAEpB,IAAK,IAAIlE,GAAIiE,EADDC,EAAYL,MAAM,GAAG,GACVV,OAAS,EAAQ,GAALnD,EAAQA,IAC/BiE,EAAUjE,GAAG6D,MAAM,GAAG,EAAE,KAClBrC,GACVyC,EAAUG,OAAOpE,EAAG,CAAC,EAG7BgE,EAAMA,EAAM,IAAMC,EAAUI,KAAK,GAAG,CACxC,CACA,OAAOL,CACX,EACAM,2BAA4B,SAAUC,EAAK/C,EAAKN,GAC5C,IAAIsD,EAAK,IAAIC,OAAO,SAAWjD,EAAM,YAAa,GAAG,EACjDkD,EAAiC,CAAC,IAAtBH,EAAIJ,QAAQ,GAAG,EAAW,IAAM,IAChD,OAAII,EAAII,MAAMH,CAAE,EACLD,EAAIK,QAAQJ,EAAI,KAAOhD,EAAM,IAAMN,EAAQ,IAAI,EAEnDqD,EAAMG,EAAYlD,EAAM,IAAMN,CACzC,EAEA2D,UAAW,SAAUC,EAAKC,EAAWC,GACjC,IAAIC,EAAUH,EAAIC,GAClBD,EAAIV,OAAOW,EAAW,CAAC,EACvBD,EAAIV,OAAOY,EAAS,EAAGC,CAAO,CAClC,CACJ,C,qBC7CAlF,EAAOG,QAAU,CACb6C,gBAAiB,CACbmC,KAAM,GACNC,SAAU,GACVC,YAAa,GACbC,OAAQ,GACRC,eAAgB,EACpB,EACAC,iBAAkB,CACdnD,SAAU,mDACVI,SAAU,CACN2C,SAAU,GACVK,aAAc,EACdN,KAAM,GACNO,KAAM,GACNC,eAAgB,CACpB,CACJ,EACAC,2BAA4B,CACxBvD,SAAU,2CACVI,SAAU,CACN2C,SAAU,GACVK,aAAc,EACdN,KAAM,GACNO,KAAM,GACNC,eAAgB,CACpB,CACJ,EACAE,2BAA4B,CACxBxD,SAAU,yDACVI,SAAU,CACN2C,SAAU,GACVK,aAAc,EACdE,eAAgB,EAChBG,SAAU,mDACVC,cAAe,GACfC,cAAe,EACnB,CACJ,EACAC,oBAAqB,CACjB5D,SAAU,wDACVI,SAAU,CACN2C,SAAU,GACVK,aAAc,EACdN,KAAM,GACNO,KAAM,GACNC,eAAgB,EAChBO,WAAY,CACR,CACIC,WAAYC,aAAaC,GAAGC,MAC5B7D,SAAU,CACNqD,SAAU,8DACVX,KAAM,GACNG,OAAQ,EACZ,CACJ,EAER,CACJ,EACAiB,iCAAkC,CAC9BlE,SAAU,8DACVI,SAAU,CACN2C,SAAU,GACVK,aAAc,EACdE,eAAgB,EAChBG,SAAU,wDACVC,cAAe,GACfC,cAAe,EACnB,CACJ,EACAQ,uBAAwB,CACpBnE,SAAU,iDACVI,SAAU,CACN2C,SAAU,GACVK,aAAc,EACdN,KAAM,GACNO,KAAM,GACNC,eAAgB,CACpB,CACJ,EACAc,mBAAoB,CAChBpE,SAAU,0CACVI,SAAU,CACN2C,SAAU,GACVK,aAAc,EACdN,KAAM,GACNO,KAAM,GACNC,eAAgB,CACpB,CACJ,EACAe,uBAAwB,CACpBrE,SAAU,iDACVI,SAAU,CACN2C,SAAU,GACVK,aAAc,EACdN,KAAM,GACNO,KAAM,GACNC,eAAgB,CACpB,CACJ,EACAgB,oBAAqB,CACjBtE,SAAU,0BACVI,SAAU,CACNgD,aAAc,EACdE,eAAgB,EAChBO,WAAY,CACR,CACIC,WAAYC,aAAaC,GAAGO,MAC5BnE,SAAU,CACNgD,aAAc,EACdE,eAAgB,CACpB,CACJ,EACA,CACIQ,WAAYC,aAAaC,GAAGC,MAC5B7D,SAAU,CACNgD,aAAc,EACdE,eAAgB,CACpB,CACJ,EAER,CACJ,EACAkB,gBAAiB,CACbxE,SAAU,2BACVI,SAAU,CACN2C,SAAU,GACVD,KAAM,GACN2B,aAAc,SAAUC,EAAQ9G,GAC5B,OAAQA,EAAI,EAAK,MAAQ8G,EAAOC,QAAQ5D,MAC5C,CACJ,CACJ,EACA6D,2BAA4B,CACxB5E,SAAU,0CACVI,SAAU,CACN2C,SAAU,GACVM,KAAM,GACNwB,MAAO,IACPC,QAAS,cACTC,eAAgB,KAChBC,SAAU,GACVC,cAAe,IACf/B,eAAgB,EACpB,CACJ,EACAgC,mBAAoB,CAChBlF,SAAU,kCACVI,SAAU,CACN2C,SAAU,GACVM,KAAM,GACNwB,MAAO,IACPC,QAAS,cACTC,eAAgB,KAChBC,SAAU,GACVG,aAAc,GACdF,cAAe,IACf/B,eAAgB,EACpB,CACJ,EACAkC,kBAAmB,CACfpF,SAAU,uBACVI,SAAU,CACN2C,SAAU,GACVK,aAAc,EACdC,KAAM,GACNC,eAAgB,EAChBR,KAAM,EACV,CACJ,EACAuC,qBAAsB,CAClBrF,SAAU,mCACVI,SAAU,CACN2C,SAAU,GACVK,aAAc,EACdC,KAAM,GACNC,eAAgB,EAChBR,KAAM,EACV,CACJ,EACAwC,kBAAmB,CACftF,SAAU,+BACVI,SAAU,CACNgD,aAAc,EACdL,SAAU,GACVD,KAAM,GACNE,YAAa,GACbC,OAAQ,GACRU,cAAe,GACfD,cAAe,GACfD,SAAU,qCACVI,WAAY,CACR,CACIC,WAAYC,aAAaC,GAAGuB,OAC5BnF,SAAU,CACNgD,aAAc,EACdH,OAAQ,GACRS,cAAe,EACnB,CACJ,EACA,CACII,WAAYC,aAAaC,GAAGwB,OAC5BpF,SAAU,CACNgD,aAAc,EACdH,OAAQ,GACRS,cAAe,EACnB,CACJ,EAER,CACJ,EACA+B,uBAAwB,CACpBzF,SAAU,qCACVI,SAAU,CACN2C,SAAU,GACVK,aAAc,EACdC,KAAM,GACNwB,MAAO,EACPvB,eAAgB,EAChBO,WAAY,CACR,CACIC,WAAYC,aAAaC,GAAGC,MAC5B7D,SAAU,CACNsF,MAAO,EACX,CACJ,EAER,CACJ,EACAC,4BAA6B,CACzB3F,SAAU,qBACVI,SAAU,CACN2C,SAAU,GACVK,aAAc,EACdE,eAAgB,EAChBR,KAAM,GACNe,WAAY,CACR,CACIC,WAAYC,aAAaC,GAAGuB,OAC5BnF,SAAU,CACNgD,aAAc,EACdE,eAAgB,CACpB,CACJ,EAER,CACJ,EACAsC,iCAAkC,CAC9B5F,SAAU,2BACVI,SAAU,CACN2C,SAAU,GACVK,aAAc,EACdE,eAAgB,EAChBR,KAAM,GACNI,eAAgB,GAChB2B,MAAO,EACPxB,KAAM,GACNQ,WAAY,CACR,CACIC,WAAYC,aAAaC,GAAGC,MAC5B7D,SAAU,CACNsF,MAAO,EACX,CACJ,EAER,CACJ,EACAG,4BAA6B,CACzB7F,SAAU,iBACVI,SAAU,CACN2C,SAAU,GACVK,aAAc,EACdE,eAAgB,EAChBuB,MAAO,IACP/B,KAAM,GACNI,eAAgB,GAChBG,KAAM,EACV,CACJ,EACAyC,sBAAuB,CACnB9F,SAAU,yBACVI,SAAU,CACN2C,SAAU,GACVK,aAAc,EACdE,eAAgB,EAChBR,KAAM,GACN+B,MAAO,IACP5B,OAAQ,GACR+B,SAAU,GACVG,aAAc,GACdF,cAAe,IACfpB,WAAY,CACR,CACIC,WAAYC,aAAaC,GAAGuB,OAC5BnF,SAAU,CACNgD,aAAc,EACdE,eAAgB,CACpB,CACJ,EAER,CACJ,CACJ,C,sBC/SA,IAAIyC,EAAiBjG,EAAQ,CAAW,EAExCW,EAAE,WACEsF,EAAejG,EAAQ,EAA2B,CAAC,CACvD,CAAC,C,oBCLY,SAAAkG,EAAA1H,GAAA,OAAA0H,EAAA,mBAAApH,QAAA,iBAAAA,OAAAqH,SAAA,SAAA3H,GAAA,cAAAA,CAAA,WAAAA,GAAA,OAAAA,GAAA,mBAAAM,QAAAN,EAAA4H,cAAAtH,QAAAN,IAAAM,OAAAa,UAAA,gBAAAnB,CAAA,GAAAA,CAAA,EAEbX,EAAOG,QAAU,SAAUqI,GACA,YAAnB,OAAOA,EACPA,EAAQ,EACkB,WAAnBH,EAAOG,CAAO,GACrB5H,OAAO6H,KAAKD,CAAO,EAAEE,QAAQ,SAAUjH,GACP,YAAxB,OAAO+G,EAAQ/G,IACf+G,EAAQ/G,GAAK,CAErB,CAAC,CAET,C,mBCXC,IAAUiC,KAeTA,QAdSiF,cAAgBjF,EAAOiF,eAAiB,GAC/CjF,EAAOiF,cAAcC,sBAAwBlF,EAAOiF,cAAcC,uBAAyB,GAC3FlF,EAAOiF,cAAcE,sBAAwBnF,EAAOiF,cAAcE,uBAAyB,GAE3FnF,EAAOoF,gBAAkB,WAErB,IADA,IAAID,EAAwBnF,EAAOiF,cAAcE,sBACxC5I,EAAI,EAAGA,EAAI4I,EAAsBzF,OAAQnD,GAAK,EACX,YAApC,OAAO4I,EAAsB5I,IAC7B4I,EAAsB5I,GAAG,EAIjCyD,EAAOiF,cAAcE,sBAAwB,EACjD,EAIJ7I,EAAOG,QAAU,CACb8C,KAAM,WACF,IACQ8F,EACAC,EAFHtF,OAAOuF,aACJF,EAAMrF,OAAOwF,gBAAgBC,mBAC7BH,EAASI,SAASC,cAAc,QAAQ,GAErCjH,KAAO,kBACd4G,EAAOM,MAAQ,GACfN,EAAOO,IAAMR,EACbK,SAASI,qBAAqB,MAAM,EAAE,GAAGC,YAAYT,CAAM,EAEnE,EAEAU,OAAQ,SAAUC,EAAMC,EAAUC,GAC9B,IAAIC,EAAUH,EAAKI,KAAK,qBAAqB,EAAE,GAC3CpB,EAAgB,CAChBqB,QAAStG,OAAOwF,gBAAgBe,mBAChCL,SAA8B,YAApB,OAAOA,EAA0BA,EAAW,IAC1D,EAEIC,IACAlB,EAAcuB,MAAQ,QACtBvB,EAAcwB,KAAO,YACrBxB,EAAcyB,MAAQ,cACtBzB,EAAc0B,SAAW,IAE7B3G,OAAOiF,cAAcE,sBAAsByB,KAAK,WAC5C,IAAIC,EAAW7G,OAAOuF,WAAWuB,OAAOV,EAASnB,CAAa,EAC9DjF,OAAOiF,cAAcC,sBAAsBe,EAAKc,KAAK,MAAM,GAAKF,CACpE,CAAC,EAED7G,OAAOoF,gBAAgB,CAC3B,EAEA4B,cAAe,SAAUC,GACjBjH,OAAOuF,YAAc0B,GAAYA,KAAYjH,OAAOiF,cAAcC,uBAClElF,OAAOuF,WAAW2B,QAAQlH,OAAOiF,cAAcC,sBAAsB+B,EAAS,CAEtF,EAEAE,MAAO,SAAUlB,GACbjG,OAAOuF,WAAW4B,MAAMnH,OAAOiF,cAAcC,sBAAsBe,EAAKc,KAAK,MAAM,EAAE,CACzF,CAEJ,C,qBC3DA,IAAIK,EAAW3I,EAAQ,EAAY,EAC/B4I,EAAQ5I,EAAQ,EAAqB,EACrC6I,EAAY7I,EAAQ,EAAyB,EAG7C8I,EAAS,CACTC,cAAepI,EAAE,yBAAyB,EAC1CqI,cAAerI,EAAE,2BAA2B,EAC5CsI,YAAatI,EAAE,6BAA6B,EAC5CuI,WAAYvI,EAAE,cAAc,EAC5BwI,gBAAiBxI,EAAE,yBAAyB,EAC5CyI,oBAAqBzI,EAAE,uBAAuB,EAC9C0I,cAAe1I,EAAE,iBAAiB,EAClC2I,gBAAiB3I,EAAE,qBAAqB,EACxC4I,sBAAuB5I,EAAE,wBAAwB,EACjD6I,kBAAmB7I,EAAE,4BAA4B,EACjD8I,YAAa9I,EAAE,eAAe,EAC9B+I,aAAc/I,EAAE,gBAAgB,EAChCgJ,iBAAkBhJ,EAAE,oBAAoB,EACxCiJ,iBAAkBjJ,EAAE,oBAAoB,EACxCkJ,oBAAqBlJ,EAAE,oBAAoB,EAC3CmJ,qBAAsBnJ,EAAE,uBAAuB,EAC/CoJ,mBAAoBpJ,EAAE,8BAA8B,EACpDqJ,WAAYrJ,EAAE,qBAAqB,EACnCsJ,qBAAsBtJ,EAAE,wBAAwB,EAChDuJ,yBAA0BvJ,EAAE,6BAA6B,EACzDwJ,WAAYxJ,EAAE,cAAc,EAC5ByJ,YAAazJ,EAAE,eAAe,EAC9B0J,kBAAmB1J,EAAE,4BAA4B,EACjD2J,sBAAuB3J,EAAE,sCAAsC,EAC/D4J,eAAgB5J,EAAE,+BAA+B,EACjD6J,wBAAyB7J,EAAE,oBAAoB,EAC/C8J,aAAc9J,EAAE,qBAAqB,CACzC,EAGI+J,EAAS,CACTC,aAAc,GACdC,iBAAkB,GAClBC,kBAAmB,GACnBC,iBAAkB,GAClBC,aAAc,GACdC,YAAa,GACbC,gBAAiB,GACjBC,iBAAkB,GAClBC,sBAAuB,GACvBC,eAAgBzK,EAAE,oBAAoB,EAAEK,KAAK,aAAa,EAC1DqK,aAAc,oEAClB,EAGI/E,EAAO,CACPgF,QAAS,UACTC,UAAW,eACXC,SAAU,WACVC,cAAe,gBACfC,OAAQ,SACRC,cAAe,MACfC,iBAAkB,GACtB,EAGIC,EAAQ,CACRC,IAAKlD,EAAMzH,aAAa,KAAK,EAC7B4K,aAAcnD,EAAMzH,aAAa,QAAQ,EACzC6K,UAAWpD,EAAMzH,aAAa,UAAU,EACxC8K,eAAgBrD,EAAMzH,aAAa,UAAU,EAC7C+K,WAAYtD,EAAMzH,aAAa,QAAQ,CAC3C,EAEIgL,EAAQ,CACRC,aAAc,CACVC,YAAa,cACbC,gBAAiB,kBACjBC,IAAK,KACT,EACAC,YAAa,CACTC,QAAS,UACTC,UAAW,WACf,CACJ,EAGIC,EAAehM,EAAE,wDAAwD,EACzEiM,EAAYjM,EAAE,gDAAgD,EAC9DkM,EAAgBlM,EAAE,6CAA6C,EAC/DmM,EAAgBnM,EAAE,6CAA6C,EAOnE,SAASoM,EAAiBC,GAClBC,EAAQD,EAAEE,SAAS,EAAEvL,MAAM,GAAG,EAElC,OADAsL,EAAM,GAAKA,EAAM,GAAGvK,QAAQ,wBAAyB,GAAG,EACjDuK,EAAM9K,KAAK,GAAG,CACzB,CAOA,SAASgL,EAAsBC,GAC3B,IAAIC,EAAmB1M,EAAE,gDAAkDyM,EAAK,IAAI,EAKpF,OAHIC,EADCA,EAAiBpM,OAIfoM,EAHgB1M,EAAE,0DAA4DyM,EAAK,IAAI,CAIlG,CAMA,SAASE,EAAyBF,GAC9B,OAAO1C,EAAOC,aAAayC,EAC/B,CAKA,SAASG,IACLzE,EAAOC,cAAcyE,MAAM,CAC/B,CAOA,SAASC,EAAWC,GAChB,MAAO,CAACjP,OAAO6H,KAAKoH,CAAG,EAAEzM,MAC7B,CAMA,SAAS0M,EAAkBC,GACvB,IAAIC,EAAaD,EAAIvM,IAAI,EAAEJ,OACvB6M,EAAWF,EAAItF,KAAK,WAAW,EACjBwF,GAAdD,EACAD,EAAIG,SAAS,eAAe,EAAEC,SAAS,OAAO,EAE9CJ,EAAIG,SAAS,eAAe,EAAEE,YAAY,OAAO,EAErDL,EAAIG,SAAS,eAAe,EAAEG,KAAKL,EAAa,MAAQC,CAAQ,CACpE,CAMA,SAASK,EAAeC,GAWpB,OAVKzN,EAAE,yBAAyB,EAAE2H,KAAK,OAAO,GAC1C3H,EAAE,yBAAyB,EAAE0N,QAAQ,CAAC,EAG1CvF,EAAOS,sBAAsBiE,MAAM,EACnC1E,EAAOI,WAAW8E,SAAS,QAAQ,EACnCrN,EAAE,4BAA4B,EAAEiH,KAAK,4BAA4B,EAAEoG,SAAS,QAAQ,EACpFlF,EAAOK,gBAAgB6E,SAAS,QAAQ,EACxClF,EAAOQ,gBAAgB0E,SAAS,QAAQ,EAEhCI,GACJ,KAAK9H,EAAKoF,OACN5C,EAAOI,WAAW+E,YAAY,QAAQ,EACtCtN,EAAE,4BAA4B,EAAEiH,KAAK,4BAA4B,EAAEqG,YAAY,QAAQ,EACvFvD,EAAOG,kBAAoB,GAC3B/B,EAAOY,aAAa8D,MAAM,EAC1B1E,EAAOY,aAAauE,YAAY,gCAAgC,EAChEnF,EAAOC,cAAciF,SAAS,uBAAuB,EACrD,MACJ,KAAK1H,EAAKqF,cACN7C,EAAOU,kBAAkB0E,KAAK,EAAE,EAChC,MACJ,KAAK5H,EAAKkF,SACN1C,EAAOK,gBAAgB8E,YAAY,QAAQ,EAC3C,MACJ,KAAK3H,EAAKmF,cACN8B,EAAa,EACbzE,EAAOa,iBAAiBqE,SAAS,QAAQ,EACzClF,EAAOyB,eAAe0D,YAAY,QAAQ,EAC1CnF,EAAO0B,wBAAwBwD,SAAS,wBAAwB,EAChElF,EAAOW,YAAYuE,SAAS,QAAQ,EACpC,MACJ,QACIlF,EAAOQ,gBAAgB2E,YAAY,QAAQ,CAEnD,CAEAtN,EAAE,yBAAyB,EAAE2N,OAAO,GAAG,CAC3C,CAWA,SAASC,EAAUC,EAAGC,EAAWC,EAAWC,EAAmBC,GAAkB,IAAAC,EACzEC,EAAU7H,SAASC,cAAc,KAAK,EACtC6H,EAAS,GAGTA,EADAN,GAAaA,EAAUO,SAAS,mBAAmB,GAAKR,EAAES,OAAO7H,IACxDoH,EAAES,OAAO7H,IACXoH,EAAES,QAAUT,EAAES,OAAOC,YAAsC,WAAxBV,EAAES,OAAOC,WAC1CV,EAAES,OAAOC,WAETV,EAAEW,aAAeX,EAAEY,MAW5BC,GAPAT,KACIU,EAAcrI,SAASC,cAAc,KAAK,GAClCqI,YAAcX,EAC1BU,EAAYE,UAAUC,IAAI,oBAAoB,EAC9CX,EAAQxH,YAAYgI,CAAW,GAGnBrI,SAASC,cAAc,KAAK,GAexCwI,GAdJL,EAAUM,aAAa,MAAOZ,GAAUrE,EAAOW,YAAY,EAC3DgE,EAAUM,aAAa,YAAanB,EAAEpB,EAAE,EAEpCwB,GACAS,EAAUG,UAAUC,IAAI,yBAAyB,GAGjD,OAAOG,KAAKpB,EAAEqB,QAAQ,GAAK,UAAUD,KAAKpB,EAAEpB,EAAE,IAC9CiC,EAAUS,iBAAiB,OAAQ,SAACC,GAChCA,EAAEC,OAAOL,aAAa,QAAS,UAAFM,OAAYF,EAAEC,OAAOE,aAAY,KAAI,CACtE,CAAC,EAIWjJ,SAASC,cAAc,KAAK,GAIxCiJ,GAHJT,EAAUF,UAAUC,IAAI,gBAAgB,EAGzBxI,SAASC,cAAc,GAAG,GAwDzC,GAtDAvG,EAAEwP,CAAQ,EAAEnC,SAAS,WAAW,EAE5BQ,EAAE4B,aAAejE,EAAMK,YAAYE,WAAa8B,EAAExP,MAClDmR,EAASZ,YAAcf,EAAExP,MAEzBmR,EAASZ,YAAcf,EAAE6B,cAAgC7B,EAAE8B,YAI3DvB,GACAD,EAAQxH,YAAY+H,CAAS,EAC7BP,EAAQa,aAAa,QAASlB,CAAS,GAEvCK,EAAQa,aAAa,QAASlB,EAAY,YAAY,EAG1DiB,EAAUpI,YAAY6I,CAAQ,EAC9BT,EAAUC,aAAa,YAAanB,EAAEpB,EAAE,EAEpCoB,EAAE+B,MAAQxB,KACNyB,EAAcvJ,SAASC,cAAc,GAAG,GAEhCsI,UAAUC,IAAI,WAAW,EAEhCf,GACD8B,EAAYhB,UAAUC,IAAI,eAAe,EAG7Ce,EAAYjB,YAAcf,EAAE+B,KAC5Bb,EAAUe,OAAOD,CAAW,GAG5BhC,EAAEkC,SAAW3B,IACT4B,EAAqB1J,SAASC,cAAc,GAAG,EAC/CyH,GACAhO,EAAEgQ,CAAkB,EAAE3C,SAAS,sBAAsB,EAChDU,GACD/N,EAAEgQ,CAAkB,EAAE3C,SAAS,eAAe,GAGlDrN,EAAEgQ,CAAkB,EAAE3C,SAAS,gCAAgC,EAGnE2C,EAAmBpB,YAAcf,EAAEkC,QACnChB,EAAUe,OAAOE,CAAkB,GAGnCnC,EAAEoC,eAAiB7B,IACf8B,EAAoB5J,SAASC,cAAc,GAAG,EAClDvG,EAAEkQ,CAAiB,EAAE7C,SAAS,cAAc,EAC5C6C,EAAkBtB,YAAcf,EAAEoC,cAClC9B,EAAQ2B,OAAOI,CAAiB,GAGhCrC,EAAE4B,WAAY,CACd,IAAIZ,EAAYT,EAAS,CAAC,MAAO,cAAe,uBAAwB,aAAe,CAAC,MAAO,cAAe,uBAAwB,YAAa,mBAC/I+B,EAAW,CAAC,CAACnQ,EAAEmO,CAAO,EAAEiC,SAAS,qBAAqB,EAAE9P,OACxD+P,EAAa,KAEjB,OAAQxC,EAAE4B,YACN,KAAKjE,EAAMK,YAAYE,WAGnBuE,GAFAD,EAAa/J,SAASC,cAAc,QAAQ,GAEjCsI,WAAUC,IAAGyB,MAAAD,EAAIzB,CAAS,EACrCwB,EAAWhS,MAAQwP,EAAExP,MACrBgS,EAAWG,QAAQC,UAAY5C,EAAExP,MACjCgS,EAAWG,QAAQE,OAAS7C,EAAEpB,GAC9B4D,EAAWzB,YAAcf,EAAE6B,cAAgB7B,EAAExP,MAE7C,MACJ,KAAKmN,EAAMK,YAAYC,SAInBoC,GAHAmC,EAAa/J,SAASC,cAAc,QAAQ,GAGjCsI,WAAUC,IAAGyB,MAAArC,EAAIW,CAAS,EACrCwB,EAAWhS,MAAQwP,EAAEpB,GACrB4D,EAAWG,QAAQC,UAAY5C,EAAEpB,GACjC4D,EAAWzB,YAAcf,EAAE6B,cAAgBvB,EAAQS,WAK3D,CAEIuB,GACAE,EAAWxB,UAAUC,IAAI,0BAA0B,EAGvDX,EAAQ2B,OAAOO,CAAU,CAC7B,CAKA,OAJAlC,EAAQ2B,OAAOf,CAAS,EAExB5G,EAAOC,cAAc0H,OAAO3B,CAAO,EAE5BA,CACX,CAoBA,SAASwC,IACL,IAAIC,EAAgB5Q,EAAE,yBAAyB,EAAEK,KAAK,aAAa,EAC/DwQ,EAAc,GACdC,EAAoB,GACpBC,EAAU/Q,EAAE,iBAAiB,EAAEM,QAjBVsQ,IAEzB,IADA,IAAIG,EAAU,GACL5T,EAAI,EAAGA,EAAIyT,EAActQ,OAAQnD,CAAC,GAAI,CAC3C,IAAI6T,EAAOJ,EAAczT,GACzB6T,EAAKC,WAAaD,EAAKE,gBACvBH,EAAQC,EAAKvE,IAAMuE,CACvB,CACA,OAAOD,CACX,GASoEH,CAAa,EAAI7G,EAAOC,aAEpFmH,EAAc,GAElBnR,EAAE,6CAA6C,EAAEoR,KAAK,WAClD,IAAIC,EAAOrR,EAAER,IAAI,EAAEa,KAAK,WAAW,EACnC8Q,EAAY3J,KAAK6J,CAAI,CACzB,CAAC,EAEDrR,EAAE,kDAAkD,EAAEoR,KAAK,WACvD,IAAIC,EAAOrR,EAAER,IAAI,EAAEa,KAAK,WAAW,EAC/B8Q,EAAY7P,QAAQ+P,CAAI,EAAI,GAC5BF,EAAY3J,KAAK6J,CAAI,CAE7B,CAAC,EAED,IAAK,IAAIC,EAAM,EAAGA,EAAMH,EAAY7Q,OAAQgR,CAAG,GAAI,CAC/C,IAAIC,EAAWJ,EAAYG,GAAK/E,SAAS,EACzC,GAAIzO,OAAOkB,UAAUC,eAAe1B,KAAKwT,EAASQ,CAAQ,EAAG,CACzD,IAAIC,EAAUT,EAAQQ,GAAUN,WAChC,GAAIM,GAAYC,EACZ,IAAK,IAAIrU,EAAI,EAAGA,EAAIyT,EAActQ,OAAQnD,CAAC,GAAI,CAC3C,IAAI6T,EAAOJ,EAAczT,GACzB,GAAI6T,GAAQA,EAAKvE,IAAMuE,EAAKvE,KAAO8E,GAAYP,EAAKvD,aAAoC,WAArBuD,EAAKvD,aAA4BuD,EAAKS,QAAUT,EAAKS,OAAOnR,OAC3H,IAAK,IAAIoR,EAAI,EAAGA,EAAIV,EAAKS,OAAOnR,OAAQoR,CAAC,GAAI,CACzC,IAAIC,EAAWX,EAAKS,OAAOC,GACvBF,IAAYG,EAASlF,KACrBoE,GAAe,sHAAwHc,EAASnD,YAAc,gBAAkBgD,EAAU,oDAAsDR,EAAKrT,KAAO,SAAWgU,EAASjC,aAAe,eAC/RoB,GAAqB,uGAAyGa,EAASnD,YAAc,gBAAkBgD,EAAU,oDAAsDR,EAAKrT,KAAO,SAAWgU,EAASjC,aAAe,eAE9R,CAER,CAER,CACJ,CAEA,IAAIkC,EAAgB5R,EAAE,kKAAoK6Q,EAAc,cAAc,EAClNgB,EAAsB7R,EAAE,4KAA8K8Q,EAAoB,cAAc,EAGxO9Q,EAAE,2BAA2B,EAAEM,SAC/BN,EAAE,iBAAiB,EAAE8R,KAAK,EAC1B9R,EAAE,2BAA2B,EAAE+R,GAAG,CAAC,EAAEC,QAAQJ,CAAa,EAC1D5R,EAAE,2BAA2B,EAAE+R,GAAG,CAAC,EAAEC,QAAQH,CAAmB,EAExE,CAOA,SAASI,EAAwBpE,GAK7B,IAAIC,EAAYD,EAAEJ,cAAgB9H,EAAKoF,OAAS,oBAAsB,wBAClEmH,EAAMlS,EAAE,sBAAsB,EAAEK,KAAK,aAAa,EAClD8R,EAAY,4DACNrE,EAAY,WACI,kBAAdA,GAAkCoE,EAAOA,EAAMrE,EAAEY,OAAS,UAC5DZ,EAAElQ,KAAO,WAEnBwK,EAAOC,cAAc4J,QAAQG,CAAS,EACtChK,EAAOE,cAAc+J,KAAKD,CAAS,EAE/BtE,EAAEJ,cAAgB9H,EAAKmF,eACvB3C,EAAOG,YAAY8J,KAAKD,CAAS,EAGjCnS,EAAE,yBAAyB,EAAEM,QAC7BqQ,EAAkB,CAE1B,CAmDA,SAAS0B,EAAoBC,GACzB,IAAIC,EAAoB,GACpBC,EAAsBxS,EAAE,QAAUsS,EAAG7F,EAAE,EAAEgG,QAAQ,kBAAkB,EAAExL,KAAK,gBAAgB,EAE1FqL,EAAGI,aACH5U,OAAO6U,QAAQL,EAAGI,WAAW,EAAE9M,QAAQ,SAAUgN,GAC7C,IAAIC,EAAiBD,EAAM,GACvBE,EAAgBF,EAAM,GAEtBE,EAAcC,OAAOzS,SACrBiS,EAAkBM,IAtClC,CAA+BP,EAAIU,KAI/B,IAHA,IAAIC,EACAC,EAEK/V,EAAI,EAAGA,EAAI6V,EAAUD,OAAOzS,OAAQnD,CAAC,GAAI,CAC9C,IAAIgW,EAAWb,EAAGb,OAAO2B,OAAO,SAAU/G,GAAK,OAAOA,EAAEI,KAAOuG,EAAUD,OAAO5V,EAAG,CAAC,EAAE,GACtF,GAAIgW,GAAYA,EAASE,gBAErB,GAAI,CADWrT,EAAE,sBAAwBmT,EAAS1G,GAAK,IAAI,EAAE6G,SAAS,QAAQ,EAE1E,GAAKL,GAGE,GAAIM,SAASJ,EAASK,UAAU,IAAMN,EAAY,CACrDA,EAAa,KACbD,EAAe,GACf,KACJ,OANIC,EAAaK,SAASJ,EAASK,UAAU,EACzCP,EAAe,EAQ/B,CAEA,MAAO,CAAEA,aAAcA,EAAcC,WAAYA,CAAW,CAChE,GAgB0EZ,EAAIQ,CAAa,EAEnF,CAAC,EAKDR,EAAG7E,cAAgB9H,EAAKoF,OACxB/K,EAAE,yBAAyB,EAAEiH,KAAK,kCAAkC,EAAEmK,KAAK,WAEvE,IAAIqC,EAAezT,EAAER,IAAI,EAAEiT,QAAQ,qBAAqB,EAAExL,KAAK,iBAAiB,EAAEU,KAAK,WAAW,EAC9F+L,EAAepB,EAAGb,OAAO2B,OAAO,SAAUvF,GAAK,OAAOA,EAAEpB,KAAOgH,CAAc,CAAC,EAAE,GAChFT,EAAYlV,OAAO6U,QAAQL,EAAGI,WAAW,EAAEU,OAAO,SAAUR,GAC5D,MAEK,CAAC,EAFCA,EAAM,GAAGG,OAAOY,UAAU,SAAUjT,GACvC,OAAOA,IAAQgT,EAAajH,EAChC,CAAC,CACL,CAAC,EAAE,GACCmH,EAAgBZ,EAAU,GAC1Ba,EAAeb,EAAU,GAGzBT,EAAkBqB,GAAeX,aACjCjT,EAAER,IAAI,EAAE+N,KAAmD,EAA9CgF,EAAkBqB,GAAeV,WAAiBW,EAAaC,YAAc,OAAS1H,EAAiBmG,EAAkBqB,GAAeV,UAAU,EAAI,IAAMW,EAAaC,WAAW,EAC1LvB,GACPvS,EAAER,IAAI,EAAE+N,KAAKsG,EAAaC,WAAW,EAIzCD,EAAad,OAAOnN,QAAQ,SAAUlF,GAClC,IAAIqT,EAAYzB,EAAGb,OAAOxK,KAAK,SAAU4G,GACrC,OAAOA,EAAEpB,KAAO/L,CACpB,CAAC,EACG8O,EAAWxP,EAAE,6BAA+B+T,EAAUtH,GAAK,KAAK,EAChEmC,EAAcmF,EAAUrE,cAAwCqE,EAAUpE,YAC1E4C,EAAkBqB,IAAkB,CAACrB,EAAkBqB,GAAeX,cAAgBc,EAAUP,YAAqC,EAAvBO,EAAUP,aACxH5E,EAAcA,EAAc,OAASxC,EAAiBmH,SAASQ,EAAUP,UAAU,CAAC,EAAI,KAE5FhE,EAASjC,KAAKqB,CAAW,CAC7B,CAAC,CACL,CAAC,EAEM0D,EAAG7F,KAAO9G,EAAKiF,WAAa0H,EAAG7E,cAAgB9H,EAAKqF,eAAiBsH,EAAG7E,cAAgB9H,EAAKkF,UAAYyH,EAAG7E,cAAgB9H,EAAKmF,eACxI9K,EAAE,yBAAyB,EAAEiH,KAAK,sBAAsB,EAAEmK,KAAK,WAC3D,IAAI4C,EAAkBhU,EAAER,IAAI,EAAEyH,KAAK,iBAAiB,EAAEU,KAAK,WAAW,EAClEqL,EAAYlV,OAAO6U,QAAQL,EAAGI,WAAW,EAAEU,OAAO,SAAUR,GAC5D,MAEK,CAAC,EAFCA,EAAM,GAAGG,OAAOY,UAAU,SAAUjT,GACvC,OAAOA,IAAQsT,CACnB,CAAC,CACL,CAAC,EAAE,GACCJ,EAAgBZ,EAAU,GAC1Ba,EAAeb,EAAU,GAGzBT,EAAkBqB,GAAeX,aACjCjT,EAAER,IAAI,EAAEyH,KAAK,qBAAqB,EAAEsG,KAAmD,EAA9CgF,EAAkBqB,GAAeV,WAAiBW,EAAaC,YAAc,OAAS1H,EAAiBmG,EAAkBqB,GAAeV,UAAU,EAAI,IAAMW,EAAaC,WAAW,EACtNvB,GACPvS,EAAER,IAAI,EAAEyH,KAAK,qBAAqB,EAAEsG,KAAKsG,EAAaC,WAAW,EAIrED,EAAad,OAAOnN,QAAQ,SAAUlF,GAClC,IAAIqT,EAAYzB,EAAGb,OAAOxK,KAAK,SAAU4G,GACrC,OAAOA,EAAEpB,KAAO/L,CACpB,CAAC,EACGuT,EAAWjU,EAAE,6BAA+B+T,EAAUtH,GAAK,cAAc,EACzEmC,EAAcmF,EAAUrE,cAAwCqE,EAAUpE,YAC1E4C,EAAkBqB,IAAkB,CAACrB,EAAkBqB,GAAeX,cAAgBc,EAAUP,YAAqC,EAAvBO,EAAUP,aACxH5E,EAAcA,EAAc,OAASxC,EAAiBmH,SAASQ,EAAUP,UAAU,CAAC,EAAI,KAE5FS,EAAS1G,KAAKqB,CAAW,CAC7B,CAAC,CACL,CAAC,EAKD0D,EAAG7F,KAAO9G,EAAKiF,WAAa0H,EAAG7E,cAAgB9H,EAAKqF,eAAiBsH,EAAG7E,cAAgB9H,EAAKkF,UAAYyH,EAAG7E,cAAgB9H,EAAKmF,gBACjI0H,EAAoBvL,KAAK,4BAA4B,EAAEmK,KAAK,WACxD,IAAI8C,EAAelU,EAAER,IAAI,EACrB2U,EAAa7B,EAAGb,OAAO2B,OAAO,SAAUvF,GAAK,OAAOA,EAAEpB,KAAOyH,EAAavM,KAAK,IAAI,CAAG,CAAC,EAAE,GACzFyM,EAAyBtW,OAAO6U,QAAQL,EAAGI,WAAW,EAAEU,OAAO,SAAUR,GACzE,MAEK,CAAC,EAFCA,EAAM,GAAGG,OAAOY,UAAU,SAAUjT,GACvC,OAAOA,IAAQyT,EAAW1H,EAC9B,CAAC,CACL,CAAC,EAAE,GAAG,GACF8F,EAAkB6B,IAA2B7B,EAAkB6B,GAAwBnB,aACvFjT,EAAER,IAAI,EAAE+N,KAAK4G,EAAWzE,YAAY,EAC7B6C,EAAkB6B,IAA2BD,EAAWX,YAAsC,EAAxBW,EAAWX,YACxFxT,EAAER,IAAI,EAAE+N,KAAK4G,EAAWzE,aAAe,OAAStD,EAAiBmH,SAASY,EAAWX,UAAU,CAAC,EAAI,GAAG,CAE/G,CAAC,EAGDxT,EAAEwS,CAAmB,EAAEvL,KAAK,kBAAkB,EAAEmK,KAAK,WACjD,IAAIiD,EAAgBrU,EAAER,IAAI,EACtBwT,EAAYlV,OAAO6U,QAAQL,EAAGI,WAAW,EAAEU,OAAO,SAAUR,GAC5D,OAAOyB,EAAc9G,KAAK,EAAE+G,KAAK,EAAEhU,QAA8J,IAApJ+T,EAAc9G,KAAK,EAAE+G,KAAK,EAAEvS,QAAQ,qBAAsB,EAAE,EAAEA,QAAQ6Q,EAAM,GAAGkB,YAAYQ,KAAK,EAAEvS,QAAQ,qBAAsB,EAAE,EAAG,EAAE,EAAEzB,MAC1L,CAAC,EAAE,GACCsT,EAAgBZ,EAAU,GAC1Ba,EAAeb,EAAU,GAEzBT,EAAkBqB,GAAeX,aACjCjT,EAAER,IAAI,EAAE+N,KAAmD,EAA9CgF,EAAkBqB,GAAeV,WAAiBW,EAAaC,YAAc,OAAS1H,EAAiBmG,EAAkBqB,GAAeV,UAAU,EAAI,IAAMW,EAAaC,WAAW,EAC1LvB,GACPvS,EAAER,IAAI,EAAE+N,KAAKsG,EAAaC,WAAW,CAE7C,CAAC,EAET,CAUA,SAASS,EAA0BjC,EAAIxE,EAAWkF,EAAWwB,EAAOC,GAChE,IAAIC,EAAQ,GAGRC,EAAa,yCACX3B,EAAUc,YACV,6CAGN3L,EAAOC,cAAc0H,OANG,gBADR,4CAA8C0E,GACT,UAMR,EAG7CxU,EAAE,gBAAkBwU,CAAU,EAAE1E,OAAO6E,CAAU,EAGjD3B,EAAUD,OAAOnN,QAAQ,SAAUiI,GAC/B,IA1LiByE,EAAIsC,EAAW9G,EAEhC+G,EAyLID,EADatC,EAAGb,OAAO2B,OAAO,SAAU/G,GAAK,OAAOA,EAAEI,KAAOoB,CAAG,CAAC,EAC1C,GAEvB+G,GAAaA,EAAUvB,kBA7LNuB,EA+LwBA,EA/Lb9G,EA+LwBA,EA7LxD+G,GAAcC,EADItI,GADD8F,EA+LwBA,GA9LE7F,EAAE,GACfxF,KAAK,QAAQ,EAAEvG,IAAI,EACjDuQ,EAAa6D,EAAgB7N,KAAK,kDAAkD,EAAEU,KAAK,IAAI,EA4LvFoN,EA3LCH,EAAUlF,eAAiBmF,GAAeD,EAAUnI,KAAOwE,EACxDnD,EAAY,iBAAmBA,EA4LnC8G,EAAUpG,eACVzE,EAAOG,kBAAkB1C,KAAK,CAAEoN,UAAWA,EAAWH,cAAeA,CAAc,CAAC,EACpFC,EAAMlN,KAAKoG,EAAUgH,EAAWG,EAAiB,GAAG,CAAC,EAGjE,CAAC,EAGGL,EAAMpU,QAAU,IAChBN,EAAE,gBAAkBwU,CAAU,EAAEvN,KAAK,qBAAqB,EAAEoG,SAAS,QAAQ,EACzEmF,EAAsBxS,EAAE,QAAUsS,EAAG7F,EAAE,EAAEgG,QAAQ,kBAAkB,EAAExL,KAAK,gBAAgB,EAC9FjH,EAAEwS,CAAmB,EAAEvL,KAAK,kBAAkB,EAAEmK,KAAK,WAC7BpR,EAAER,IAAI,EAAE+N,KAAK,IACXyF,EAAUc,aAC5B9T,EAAER,IAAI,EAAE6N,SAAS,mBAAmB,CAE5C,CAAC,GAILqH,EAAM9O,QAAQ,SAAUoP,GACpBhV,EAAE,gBAAkBwU,CAAU,EAAE1E,OAAOkF,CAAI,CAC/C,CAAC,CACL,CAiBA,SAASC,EAAuB3C,GAC5B,IAAI4C,EACAJ,EAAkBtI,EAAsB8F,EAAG7F,EAAE,EAEjDqI,EAAgB7N,KAAK,gBAAgB,EAAEqG,YAAY,QAAQ,EAC3DwH,EAAgB7N,KAAK,kBAAkB,EAAEqG,YAAY,QAAQ,EAE7DtN,EAAE,4BAA4B,EAAEoR,KAAK,SAAUoD,EAAOpS,GAClD,IAIQ+S,EACAC,EALJ/U,EAAOL,EAAEoC,CAAO,EAAE/B,KAAK,eAAe,EAEtCA,GAAQA,EAAKoN,cAAgB9H,EAAKkF,WAC9BwK,EAAgB7I,EAAsBnM,EAAKoM,EAAE,EAC7C0I,EAASE,EAAcpO,KAAK,iBAAiB,EAAEU,KAAK,IAAI,GAAK0N,EAAcpO,KAAK,2BAA2B,EAAEU,KAAK,IAAI,EACtHyN,EAAS/U,EAAKoR,QAAUpR,EAAKoR,OAAO2B,OAAO,SAAUrG,GACrD,OAAOA,EAAIN,KAAO0I,CACtB,CAAC,EACDD,EAAmBE,GAAUA,EAAO9U,QAAU8U,EAAO,GAAGnW,eAAe,kBAAkB,EAAImW,EAAO,GAAGE,iBAAmB,KAElGJ,EAAiB5C,EAAG7F,MACpC8I,EAAwBL,EAAiB5C,EAAG7F,IAAI+I,SAAW,GAC/DxV,EAAEoR,KAAKmE,EAAuB,SAAUjE,EAAKmE,GAEzCzV,EAAEoR,KAAKrH,EAAOG,kBAAmB,SAAUwL,EAASC,GAC5CA,GAAYA,EAASf,WAAce,EAASf,UAAUnI,KAAOgJ,GAC7D1L,EAAOG,kBAAkB3I,OAAOmU,EAAS,CAAC,CAElD,CAAC,EACD,IAAIb,EAAcC,EAAgB7N,KAAK,iBAAiB,EAAEU,KAAK,IAAI,GAAKmN,EAAgB7N,KAAK,2BAA2B,EAAEU,KAAK,IAAI,EAGnImN,EAAgB7N,KAAK,mBAAqBwO,CAAO,EAAEpI,SAAS,QAAQ,GAEhEiF,EAAG7E,cAAgB9H,EAAKoF,OACxB5C,EAAOC,cAAcnB,KAAK,gCAAkCwO,EAAK,IAAI,GAErEtN,EAAOC,cAAcnB,KAAK,uCAAyCwO,EAAK,IAAI,EAAEG,OAAO,EAAEvI,SAAS,QAAQ,EACxGlF,EAAOC,cAAcnB,KAAK,uCAAyCwO,EAAK,IAAI,IAHLG,OAAO,EAAEvI,SAAS,QAAQ,EAOjGoI,IAAOZ,IACPC,EAAgB7N,KAAK,QAAQ,EAAEvG,IAAI,EAAE,EACjCoU,EAAgB7N,KAAK,iBAAiB,EAAEU,KAAK,IAAI,GACjDmN,EAAgB7N,KAAK,iBAAiB,EAAE4O,WAAW,UAAU,EAE7Df,EAAgB7N,KAAK,2BAA2B,EAAEU,KAAK,IAAI,GAC3DmN,EAAgB7N,KAAK,2BAA2B,EAAE4O,WAAW,UAAU,EAE3Ef,EAAgB7N,KAAK,QAAQ,EAAE6O,OAAO,EAE9C,CAAC,EAID9V,EAAE,qBAAqB,EAAEoR,KAAK,SAAU2E,EAAW/E,GAC/C,IAOQgF,EACAC,EACAC,EATJC,EAAQnW,EAAEgR,CAAI,EAAE/J,KAAK,qBAAqB,EAE1CmP,EAA+BpW,EAAEgR,CAAI,EAAE/J,KAAK,4BAA4B,EACtDmP,EAA6B9V,QAG5B,IACf0V,EAAwB,EAK5BhW,EAAEoW,CAA4B,EAAEhF,KAAK,WACjC,IAAIiF,EAAWrW,EAAER,IAAI,EAAEyH,KAAK,KAAK,EAAEU,KAAK,WAAW,EACnB,CAAC,IAA7B0O,EAAS/U,QAAQ,KAAK,GACtB2U,EAAYjW,EAAER,IAAI,EAClB0W,EAAcG,GAIdL,GAAyB,CAEjC,CAAC,EAG6B,IAA1BA,KACAhW,EAAEiW,CAAS,EAAE5I,SAAS,QAAQ,EAC9ByH,EAAgB7N,KAAK,mBAAqBiP,CAAgB,EAAE7I,SAAS,QAAQ,GAIjFrN,EAAEgR,CAAI,EAAE/J,KAAK,4BAA4B,EAAE3G,OAC3C6V,EAAM7I,YAAY,QAAQ,GAE1B6I,EAAM9I,SAAS,QAAQ,EACvByH,EAAgB7N,KAAK,kBAAkB,EAAEmK,KAAK,WACtC+E,EAAM5I,KAAK,EAAE+G,KAAK,IAAMtU,EAAER,IAAI,EAAE+N,KAAK,EAAE+G,KAAK,GAC5CtU,EAAER,IAAI,EAAE6N,SAAS,QAAQ,CAEjC,CAAC,EAET,CAAC,EAGGiF,EAAG7E,cAAgB9H,EAAKoF,UACxB+J,EAAgB7N,KAAK,kBAAkB,EAAEmK,KAAK,WAC1C,IAAIkF,EAAStW,EAAER,IAAI,EACf+W,EAAQ,EACZvW,EAAE,yBAAyB,EAAEiH,KAAK,mCAAmC,EAAEmK,KAAK,WACpEpR,EAAER,IAAI,EAAEyH,KAAK,qBAAqB,EAAEsG,KAAK,EAAE+G,KAAK,EAAEvS,QAAQ,qBAAsB,EAAE,IAAMuU,EAAO/I,KAAK,EAAE+G,KAAK,EAAEvS,QAAQ,qBAAsB,EAAE,IAC7IwU,GAAS,EAEjB,CAAC,EAEGA,GAAS,GACTvW,EAAER,IAAI,EAAE6N,SAAS,QAAQ,CAEjC,CAAC,EACDyH,EAAgB7N,KAAK,kBAAkB,EAAE4O,WAAW,OAAO,EACvDf,EAAgB7N,KAAK,kBAAkB,EAAEuP,MAAM,EAAElD,SAAS,QAAQ,IAClEtT,EAAE8U,EAAgB7N,KAAK,0BAA0B,EAAEuP,MAAM,CAAC,EAAE7O,KAAK,QAAS,iBAAiB,CAK/G,CAAC,EAGD3H,EAAE+J,EAAOG,iBAAiB,EAAEkH,KAAK,SAAUoD,EAAOpS,GAC9C,IAAIqU,EAA2C,iBAAzBrU,EAAQwS,UAAUnI,IAAkD,qBAAzBrK,EAAQwS,UAAUnI,GAA4B,SAAWrK,EAAQqS,cAC9HiC,EAAatU,EAAQwS,UAAUlF,aAC/BiH,EAAWvU,EAAQwS,UAAUnG,OAAS1E,EAAOW,aAC7CkM,EAAY,8BAAgCH,EACtC,UAAYE,EACZ,qBAAuBvU,EAAQwS,UAAUnI,GACzC,wBAA0BiK,EAC1B,KAENC,GACAxO,EAAOY,aAAa+G,OAAO8G,CAAS,CAE5C,CAAC,CACL,CAOA,SAASC,EAA0BvE,EAAIxE,GA3JvC,IAA+BwE,EA6J3B9E,EAAe8E,EAAG7E,WAAW,EAG7BwE,EAAwBK,CAAE,EAE1BxU,OAAO6U,QAAQL,EAAGI,WAAW,EAAE9M,QAAQ,SAAUgN,EAAO4B,GACpD,IAAI3B,EAAiBD,EAAM,GAI3B2B,EAA0BjC,EAAIxE,EAHV8E,EAAM,GAG8B4B,EAAO3B,CAAc,CACjF,CAAC,EAxK0BP,EA0KLA,EAzKtBtS,EAAE,qBAAqB,EAAEoS,KAAKE,EAAG3U,IAAI,EACrCqC,EAAE,qBAAqB,EAAEoS,KAAKE,EAAG3U,IAAI,EACrCqC,EAAE,oBAAoB,EAAEoS,KAAKE,EAAG3C,WAAW,EAC3C3P,EAAE,mBAAmB,EAAE2H,KAAK,MAAO2K,EAAG7D,KAAK,EAyK3CwG,EAAuB3C,CAAE,EAEzBD,EAAoBC,CAAE,CAC1B,CAkCA,SAASwE,EAAoBxE,EAAIxE,GAC7B,IAAI4G,EAAQ,GACRqC,EAAoC,EAAnBzE,EAAGb,OAAOnR,OAAa,+BAAiC,gCACzE0W,EAAelJ,GAAaiJ,EAC5BhJ,EAAYuE,EAAGvE,UACfC,EAAoBsE,EAAGtE,kBAE3BR,EAAe8E,EAAG7E,WAAW,EAE7B6E,EAAGb,OAAO7L,QAAQ,SAAUiI,GACxB,IAAII,EAEAqE,EAAGI,aACH5U,OAAO6H,KAAK2M,EAAGI,WAAW,EAAE9M,QAAQ,SAAUjH,GACtC2T,EAAGI,YAAY/T,GAAKoU,QAC2B,CAAC,EAA5CT,EAAGI,YAAY/T,GAAKoU,OAAOzR,QAAQuM,EAAEpB,EAAE,IACvCwB,EAAmBqE,EAAGI,YAAY/T,GAAKmV,YAGnD,CAAC,EAGLjG,EAAE4B,WAAajE,EAAMK,YAAYC,QAEjC4I,EAAMlN,KAAKoG,EAAUC,EAAGmJ,EAAcjJ,EAAWC,EAAmBC,CAAgB,CAAC,CACzF,CAAC,EAGDgH,EAAuB3C,CAAE,EAEzBD,EAAoBC,CAAE,EAElBA,EAAG7F,KAAO9G,EAAKiF,WACf0H,EAAGb,OAAO7L,QAAQ,SAAU6P,GACxBzV,EAAE,uCAAyCyV,EAAGhJ,GAAK,IAAI,EAClDmJ,OAAO,EACPqB,KAAK,EACLC,MAAM,sCAAwCzB,EAAG0B,MAAMC,WAAWC,UAAY,SAAS,CAChG,CAAC,CAET,CA2BA,SAASC,IACL,IAAIC,EAAU,CAEdA,KAAe,EAFA,EAIfvX,EAAE,0CAA0C,EAAEoR,KAAK,SAACE,EAAKmE,GACjDA,EAAGjF,QAAQE,QAAU+E,EAAGpX,OACxBkZ,EAAQC,KAAKhQ,KAAK,CAAEiQ,OAAQhC,EAAGjF,QAAQE,OAAQrS,MAAOoX,EAAGpX,KAAM,CAAC,CAExE,CAAC,EAEDkZ,EAAQpM,IAAMvK,OAAO8W,cAAgB9W,OAAO8W,aAAaC,cAEzD3X,EAAE4X,KAAK,CACH3R,IAAKrF,OAAOiX,KAAKC,qCACjBC,QAAS,CAAE,eAAgB,kBAAmB,EAC9CC,OAAQ,OACRC,SAAU,OACV5X,KAAM6X,KAAKC,UAAUZ,CAAO,EAC5B/Q,MAAO,EACX,CAAC,EACI4R,KAAK,SAAAC,GACF,IAAIhY,EAAO,KAGPgY,GAAQA,EAAKC,mBACb1X,OAAO8W,aAAaa,gBAAkBL,KAAKM,MAAMH,EAAKC,gBAAgB,EAAEC,iBAExEF,GAAQA,EAAKI,eACbpY,EAAOgY,EAAKI,aAEZ3a,OAAO6H,KAAKtF,CAAI,EAAEuF,QAAQ,SAAA8S,GACtB,IAAIC,EAAQ3Y,EAAE,8BAADsP,OAA+BoJ,EAAM,IAAG,EACjDE,EAAU5Y,EAAE,wCAADsP,OAAyCoJ,EAAM,IAAG,EAC7DG,EAAeD,EAAQ3R,KAAK,iBAAiB,EAC7C6R,EAAgBD,EAAavY,OAASuY,EAAanY,IAAI,EAAI,KAE/DiY,EAAM1R,KAAK,gBAAgB,EAAE8R,OAAO,EACpCH,EAAQ3R,KAAK,QAAQ,EAAEmM,OAAO,SAAA9B,GAAS,OAAa,EAANA,CAAS,CAAC,EAAEyH,OAAO,EAC5DJ,EAAMvL,SAAS,QAAQ,EAAEnG,KAAK,MAAM,EAAE3G,QACvCqY,EAAMvL,SAAS,QAAQ,EAAEG,KAAK,GAAG,EAGrClN,EAAKqY,GAAQ9S,QAAQ,SAAAoT,GACjB,IAAIC,EAAM3S,SAASC,cAAc,QAAQ,EACrCyK,EAAO1K,SAASC,cAAc,KAAK,EAEvCyK,EAAKnC,UAAUC,IAAI,eAAe,EAClCkC,EAAKR,QAAQE,OAASgI,EACtB1H,EAAKR,QAAQC,UAAYuI,EAAO3a,MAChC2S,EAAKpC,YAAcoK,EAAOtJ,aAE1BuJ,EAAIzI,QAAQE,OAASgI,EACrBO,EAAI5a,MAAQ2a,EAAO3a,MACnB4a,EAAI1L,KAAOyL,EAAO3a,MAEd2a,EAAOE,WACPP,EAAMvL,SAAS,QAAQ,EAAE1M,IAAIsY,EAAO3a,KAAK,EAAEkP,KAAKyL,EAAO3a,KAAK,EAC5D4a,EAAIC,SAAW,GACflZ,EAAEiZ,CAAG,EAAEtR,KAAK,WAAY,EAAI,EAExBiR,EAAQO,KAAK,UAAU,IACvBP,EAAQQ,QAAQ,QAAQ,EAIhCT,EAAM7I,OAAOkB,CAAI,EACjB4H,EAAQ9I,OAAOmJ,CAAG,CACtB,CAAC,EAEIL,EAAQ3R,KAAK,iBAAiB,EAAE3G,OAOQ,IAAlCsY,EAAQ3R,KAAK,QAAQ,EAAE3G,SAC9BsY,EAAQ3R,KAAK,QAAQ,EAAEkS,KAAK,WAAY,EAAI,EAC5CP,EAAQ3R,KAAK,QAAQ,EAAEU,KAAK,WAAY,EAAI,IAR5CkR,EAAeD,EAAQ3R,KAAK,gBAADqI,OAAiBwJ,EAAa,IAAG,GAE3CxY,SACbuY,EAAaM,KAAK,WAAY,EAAI,EAClCN,EAAalR,KAAK,WAAY,EAAI,EAM9C,CAAC,EAET,CAAC,CACT,CAsBA,SAAS0R,EAA2B/G,EAAIxE,GACpC,IAAIiJ,EAAoC,EAAnBzE,EAAGb,OAAOnR,OAAa,iDAAmD,kDAC3F0W,EAAelJ,GAAaiJ,EAChCC,GAAgB,qBAEhBxJ,EAAe8E,EAAG7E,WAAW,EAE7B6J,EAA8B,EAE9BtX,EAAE,+BAADsP,OAAgCgD,EAAG7F,GAAE,KAAI,EAAE2E,KAAK,SAACE,EAAKmE,GACnD,IAzBkB6D,EAClBC,EAwBI1L,EAAI,GAERA,EAAEpB,GAAK6F,EAAG7F,GACVoB,EAAES,OAAS1N,OAAO8W,aAAaa,gBAAgBjG,EAAG7F,IAAIgJ,EAAGjF,QAAQC,WACjE5C,EAAExP,MAAQoX,EAAGjF,QAAQC,UACrB5C,EAAE6B,aAAe+F,EAAG7G,YACpBf,EAAE4B,WAAajE,EAAMK,YAAYE,UAG7B8B,EAAEpB,KAAOtE,EAAOC,cAAc,GAAGoI,QAAQS,aAlC3BqI,EAkC2DzL,EAjC7E0L,EAAe,GACnBpR,EAAOC,cAAcnB,KAAK,6BAA6B,EAAEmK,KAAK,SAAUE,EAAKkI,GACrExZ,EAAEwZ,CAAG,EAAEnZ,KAAK,QAAQ,IAAMiZ,EAAS7M,IAAMzM,EAAEwZ,CAAG,EAAE7R,KAAK,OAAO,IAAM2R,EAASjb,QAC3Ekb,EAAe,GAEvB,CAAC,EACMA,IA4BC3L,EAAUC,EAAGmJ,CAAY,CAEjC,CAAC,EAGD/B,EAAuB3C,CAAE,CAC7B,CAgBA,SAASmH,EAAqBC,GAC1B,IAAIC,EAAe5P,EAAOE,iBAAiByP,GAE3C,GAAI,CAACC,GAAgB,CAACA,EAAa9E,YAC/B,MAAO,GAGX,IAGI+E,EAHAC,EAAe,GAEfC,EAA0B,iBAG9B,OAAQH,EAAa9E,aAEjB,KAAKrJ,EAAMC,aAAaE,gBAIxB,KAAKH,EAAMC,aAAaC,YACpBmO,EAAe,MAAQC,EACvBF,EAAoBD,EAAaC,kBACjC,MACJ,KAAKpO,EAAMC,aAAaG,IACpBiO,EAAe,MAAQC,EAEvBF,EAAoBD,EAAaC,kBAAkBxG,OAAO,SAAU1S,GAChE,OAA0B,EAAnBA,EAAIrC,MAAMiC,MACrB,CAAC,CAIT,CAEIyZ,EAAaH,EAAkBI,OAAO,SAAUC,EAAaC,GAC7D,MAAuB,KAAhBD,EAAqBA,EA1BT,MA0B0CC,EAAiB7b,MAAQ6b,EAAiB7b,KAC3G,EAAG,EAAE,EAEL,OAAOwb,EAAa9X,QAAQ+X,EAAyBC,CAAU,CACnE,CA6CA,SAASI,EAA4B7H,GACjC,IAxCS4B,EAwCLkG,EAAkBpa,EAAE,mBAAmB,EACvCqa,EAAqBra,EAAE,mCAAmC,EAzC9D,IAASkU,KA4CTnK,EAAOO,gBAAkB,GAGzBP,EAAOC,aAAarE,EAAKgF,SAAW,CAChCkK,YAAalP,EAAKgF,QAClBsG,WAAYjR,EAAE,+BAA+B,EAAE2H,KAAK,IAAI,CAC5D,EAGA0S,EAAmBjJ,KAAK,SAAUoD,EAAOiB,GACjChJ,EAAKzM,EAAEyV,CAAE,EAAE9N,KAAK,kBAAkB,EAEtC3H,EAAE,iCAAmCyM,EAAK,IAAI,EAAEY,SAAS,QAAQ,EACjEV,EAAyBF,CAAE,CAC/B,CAAC,EAGD1C,EAAOC,aAAarE,EAAKkF,UAAY,CACjCgK,YAAalP,EAAKkF,SAClBoG,WAAY9I,EAAOO,cAAchI,IAAI,CACzC,EAGA8M,EAAe8E,EAAG7E,WAAW,EAG7BwE,EAAwBK,CAAE,EAG1B8H,EAAgBrB,OAAO,EAzEEhP,EAAOC,aAAc,CAC1C,IAAIsQ,EAAQta,EAAE,iCAAmCkU,EAAe,IAAI,EAChExT,EAAM,KAENqJ,EAAOC,aAAakK,GAAcW,cAAgBlP,EAAKgF,SACvDjK,EAAME,OAAO8W,cAAgB9W,OAAO8W,aAAa6C,gBAAkB3Z,OAAO8W,aAAa6C,gBAAgB9N,GAAK,OAIxGzM,EAAE,YAAY,EAAEK,KAAK,eAAe,EAAEoR,OAAO7L,QAAQ,SAAUiI,GACvDA,EAAEpB,KAAO/L,IACTV,EAAE,sBAAsB,EAAE8P,OAAO,kCAAoCjC,EAAE6B,aAAe,SAAS,EAC/F1P,EAAE,sBAAsB,EAAEsN,YAAY,QAAQ,EAEtD,CAAC,EAGL5M,EADOqJ,EAAOC,aAAakK,GAAcW,cAAgBlP,EAAKkF,SACxDd,EAAOC,aAAakK,GAAcjD,WAElClH,EAAOC,aAAakK,GAAcW,YAAc4E,EAAqBvF,CAAY,EAGvFxT,GAAOA,EAAIJ,SACXga,EAAMxK,OAAO,kCAAoCpP,EAAM,SAAS,EAChE4Z,EAAMhN,YAAY,QAAQ,EAElC,CAEAtN,EAAE,sBAAsB,EAAEuN,KAAKvN,EAAE,sBAAsB,EAAEU,IAAI,CAAC,EAC9DV,EAAE,4BAA4B,EAAEuN,KAAKvN,EAAE,0BAA0B,EAAEuN,KAAK,CAAC,EACzEvN,EAAE,gCAAgC,EAAEuN,KAAKvN,EAAE,oCAAoC,EAAEU,IAAI,CAAC,EACtFV,EAAE,6BAA6B,EAAEuN,KAAKvN,EAAE,2BAA2B,EAAEuN,KAAK,CAAC,CA4C/E,CAMA,SAASiN,EAAwBlI,GAC7B,GAAIA,EAAGmI,qBACH,OAAQnI,EAAG7E,aACP,IAAK,aACD4L,EAA2B/G,EAAI,uCAAuC,EACtE,MACJ,IAAK,aACD+G,EAA2B/G,EAAI,8BAA8B,EAC7D,MACJ,IAAK,aACD+G,EAA2B/G,EAAI,8BAA8B,EAC7D,MACJ,IAAK,aACD+G,EAA2B/G,EAAI,sDAAsD,EACrF,MACJ,IAAK,yBACD+G,EAA2B/G,EAAI,yDAAyD,EACxF,MACJ,IAAK,yBACD+G,EAA2B/G,EAAI,gDAAgD,EAC/E,MACJ,IAAK,yBACD+G,EAA2B/G,EAAI,gDAAgD,EAC/E,MACJ,IAAK,yBACD+G,EAA2B/G,EAAI,wEAAwE,EACvG,MACJ,KAAK3M,EAAKoF,OACN8L,EAA0BvE,EAAI,sCAAsC,EACpE,MAIJ,QACI+G,EAA2B/G,CAAE,CAErC,MAEA,OAAQA,EAAG7E,aACP,IAAK,aACDqJ,EAAoBxE,EAAI,uCAAuC,EAC/D,MACJ,IAAK,aACDwE,EAAoBxE,EAAI,8BAA8B,EACtD,MACJ,IAAK,aACDwE,EAAoBxE,EAAI,8BAA8B,EACtD,MACJ,IAAK,aACDwE,EAAoBxE,EAAI,sDAAsD,EAC9E,MACJ,IAAK,yBACDwE,EAAoBxE,EAAI,yDAAyD,EACjF,MACJ,IAAK,yBACDwE,EAAoBxE,EAAI,gDAAgD,EACxE,MACJ,IAAK,yBACDwE,EAAoBxE,EAAI,gDAAgD,EACxE,MACJ,IAAK,yBACDwE,EAAoBxE,EAAI,wEAAwE,EAChG,MACJ,KAAK3M,EAAKqF,cA9amB8C,EA+aO,gDA7axC4M,EADkBlO,GADW8F,EA+aOA,GA9aO7F,EAAE,EACPkO,KAAK,EAAEC,MAAM,EAEnDC,EAAoB7a,EAAE,gDAAkDsS,EAAG7F,GAAK,IAAI,EAAE2D,SAAS,2BAA2B,EAAEoG,MAAM,EAAEnW,KAAK,eAAe,EACxJya,EAAqB,2BAA6BD,EAAoB,QACtExK,EAAa/J,SAASC,cAAc,QAAQ,EAEhDiH,EAAe8E,EAAG7E,WAAW,EAG7BtF,EAAOS,sBAAsBwJ,KAAKsI,CAAmB,EACrDvS,EAAOS,sBAAsB3B,KAAK,4BAA4B,EAAE+K,QAAQ8I,CAAkB,EAC1F3S,EAAOC,cAAc0H,OAAOlC,EAAU0E,EAAIxE,CAAS,CAAC,EAGpD9N,EAAEqQ,CAAU,EAAEhD,SAAS,mEAAmE,EAE1FgD,EAAWzB,YAAciM,EACzB1S,EAAOS,sBAAsBkH,OAAOO,CAAU,EA6ZlC,MACJ,KAAK1K,EAAKoF,OACN8L,EAA0BvE,EAAI,sCAAsC,EACpE,MACJ,KAAK3M,EAAKkF,SA3MlB2C,GAD4B8E,EA6MOA,GA5MjB7E,WAAW,EAC7BwE,EAAwBK,CAAE,EA4Md,MACJ,KAAK3M,EAAKmF,cACNqP,EAA4B7H,CAA0D,EACtF,MACJ,QACIwE,EAAoBxE,CAAE,CAE9B,CArNR,IAxOqCA,EAAIxE,EAEjC4M,EAEAG,EACAC,EACAzK,CAybR,CAQA,SAAS0K,EAA4BxN,EAAMyN,EAAQvO,GAC/CtE,EAAOkB,WAAWkE,KAAKA,CAAI,EAC3BpF,EAAOkB,WAAW1B,KAAK,UAAW8E,CAAE,EACpCtE,EAAOC,cAAcT,KAAK,uBAAwBqT,CAAM,EACxD7S,EAAOC,cAAcT,KAAK,mBAAoB8E,CAAE,CACpD,CAMA,SAASwO,EAAa3I,GACbA,IAIDA,EAAG7F,IAAM6F,EAAG7F,KAAO9G,EAAKkF,SACxBkQ,EAA4BzI,EAAG3U,KAAM2U,EAAG3U,KAAM2U,EAAG7F,EAAE,EAC5C6F,EAAG7F,IAAM6F,EAAG7F,KAAO9G,EAAKmF,cAC/BiQ,EAA4B,GAAIzI,EAAG3U,KAAM2U,EAAG7F,EAAE,EACvC6F,EAAG3U,KACVod,EAA4BzI,EAAG3U,KAAM2U,EAAG3U,KAAM2U,EAAG7F,EAAE,EAEnDsO,EAA4BzI,EAAG3C,YAAa2C,EAAG7F,GAAI6F,EAAG7F,EAAE,EAGxD6F,EAAGmI,qBACHtS,EAAOU,kBAAkBuJ,KAAK,EAAE,GAEhCjK,EAAOU,kBAAkBuJ,KAAKE,EAAG3C,aAAe,EAAE,EAC9CxH,EAAOU,kBAAkB5B,KAAK,GAAG,EAAE3G,SACnC6H,EAAOU,kBAAkB5B,KAAK,GAAG,EAAEU,KAAK,CACpC0H,OAAQ,SACR6L,IAAK,UACT,CAAC,EAEG5I,EAAG6I,kBACHhT,EAAOU,kBAAkB5B,KAAK,GAAG,EAAEU,KAAK,CACpCyT,KAAM9I,EAAG6I,eACb,CAAC,GAKbX,EAAwBlI,CAAE,EAC9B,CAMA,SAAS+I,EAAa/I,GAClBA,EAAGhF,YAAY,UAAU,EACzBgF,EAAG3K,KAAK,gBAAiB,EAAK,EAC9B2K,EAAGlC,SAAS,kBAAkB,EAAEA,SAAS,yBAAyB,EAAEzI,KAAK,cAAe,UAAU,EAClG2K,EAAGlC,SAAS,0BAA0B,EAAEA,SAAS,gBAAgB,EAAEzI,KAAK,WAAY,EAAK,CAC7F,CAMA,SAAS2T,EAAchJ,GACnBA,EAAGjF,SAAS,UAAU,EACtBiF,EAAG3K,KAAK,gBAAiB,EAAI,EAC7B2K,EAAGlC,SAAS,kBAAkB,EAAEA,SAAS,yBAAyB,EAAEzI,KAAK,cAAe,UAAU,EAClG2K,EAAGlC,SAAS,0BAA0B,EAAEA,SAAS,gBAAgB,EAAEzI,KAAK,WAAY,EAAI,CAC5F,CA4DoB,SAAhB4T,EAA0B9F,GAC1B,IACQpV,EACAmb,EACAC,EAFApb,EAAOoV,EAAGpV,KAAK,eAAe,EAC9Bmb,EAAqBrT,EAAOC,cAAcT,KAAK,kBAAkB,EACjE8T,EAAS,IAILA,EAFR,EAAiC,SAA7BhG,EAAG9N,KAAK,eAAe,GACnBtH,IAASA,EAAKoM,KAAO+O,GAAsBnb,GAAKoa,uBAKjDgB,KAMP7O,EAAa,EAEbqO,EAAaxF,EAAGpV,KAAK,eAAe,CAAC,EAE7C,CAKA,SAASqb,IACL,IAAIC,EAAkB3b,EAAE,oDAAoD,EAAEM,OAC1Esb,EAAkBzT,EAAOc,iBAAiBhC,KAAK,mBAAmB,EAAE3G,OACpEub,EAAe7b,EAAE,2CAA2C,EAAEiH,KAAK,kCAAkC,EAAE3G,OAEvGsb,GAAmBD,GAAmBE,GAAgB,CAAC9R,EAAOU,eAC9DtC,EAAOe,oBAAoBvB,KAAK,WAAY,EAAI,EAEhDQ,EAAOe,oBAAoBvB,KAAK,WAAY,EAAK,CAEzD,CA+CA,SAASmU,EAAcrL,EAAWsL,GAC9B,IAsEoCrb,EAtEhCsb,EAAa,SAAUhB,GAClBA,EAAO1H,SAAS,QAAQ,IACzB0H,EAAO3N,SAAS,QAAQ,EAExB2N,EAAO/T,KAAK,QAAQ,EAAE4O,WAAW,UAAU,EAC3CmF,EAAO/T,KAAK,yBAAyB,EAAEsG,KAAK,GAAG,EAEvD,EACI0O,EAAa,SAAUjB,GACnBA,EAAO1H,SAAS,QAAQ,GACxB0H,EAAO1N,YAAY,QAAQ,CAEnC,EACI4O,EAAsB,SAAUC,EAAY7c,GAC5C6c,EAAWvW,QAAQ,SAAUyG,GACzBrM,EAAE,4BAA4B,EAAEoR,KAAK,WACjC,IAAI/Q,EAAOL,EAAER,IAAI,EAAEa,KAAK,eAAe,EACnCA,GAAQA,EAAKoM,IAAMpM,EAAKoM,KAAOJ,IAClB,YAAT/M,EACA0c,EAAWhc,EAAER,IAAI,CAAC,EACF,YAATF,GACP2c,EAAWjc,EAAER,IAAI,CAAC,EAG9B,CAAC,CACL,CAAC,CACL,EAwDIuc,EAAWtK,SAZqB/Q,EAaZ+P,EAAWsL,EAAWtK,OAZnC7L,QAAQ,SAAUiI,GAnCA,IAAUyH,EATL8G,EA6CtBvO,EAAEpB,KAAO/L,IACLmN,EAAEuO,eA9CgBA,EA+CAvO,EAAEuO,aA9ChB5G,SACZ0G,EAAoBE,EAAY5G,QAAS,SAAS,EAElD4G,EAAYC,UACZH,EAAoBE,EAAYC,QAAS,SAAS,EA4C1CxO,EAAEyH,oBAxCqBA,EAyCAzH,EAAEyH,iBAxCrCxX,OAAO6H,KAAK2P,CAAgB,EAAE1P,QAAQ,SAAUjH,GAC5C,IACQwd,EADJ7G,EAAiB3W,GAAK6W,UAClB2G,EAAa7G,EAAiB3W,GAAK6W,QACvCxV,EAAE,4BAA4B,EAAEoR,KAAK,WACjC,IAAI/Q,EAAOL,EAAER,IAAI,EAAEa,KAAK,eAAe,EACnCic,EAAYtc,EAAER,IAAI,EAClBa,GAAQA,EAAKoM,IAAMpM,EAAKoM,KAAO9N,IAE3B4d,EADeD,EAAUrV,KAAK,gBAAgB,EACdmJ,SAAS,IAEzCmM,EAAiBnL,KAAK,WAClB,IASYoL,EATiC,CAAC,EAA1CL,EAAW7a,QAAQtB,EAAER,IAAI,EAAEmI,KAAK,IAAI,CAAC,IAGrC3H,EAAER,IAAI,EAAE6N,SAAS,QAAQ,EAIrB4D,EAAaqL,EAAUrV,KAAK,iBAAiB,EAAEU,KAAK,IAAI,EACvB,CAAC,EAAlCwU,EAAW7a,QAAQ2P,CAAU,MACzBuL,EAAeF,EAAUrV,KAAK,gBAAgB,GACrCvG,IAAI,EAAE,EACnB8b,EAAapD,QAAQ,QAAQ,EAGzC,CAAC,CAGb,CAAC,EAET,CAAC,EAaD,CAAC,EAKT,CASA,SAASqD,EAAuB/P,EAAkBhM,EAAKgc,EAAerL,GAC9DqL,GAAiBrL,GACjB3E,EAAiBzF,KAAK,kDAADqI,OAAmD+B,EAAI,KAAI,EAAE+H,QAAQ,OAAO,CAEzG,CAMA,IAAIuD,EAAW,IAAIC,iBAAiB,SAAUC,GAC1CA,EAAUjX,QAAQ,SAAUkX,GACxB,IAUYC,EACAlI,EAXRmI,EAAgBhd,EAAE8c,EAASzN,MAAM,EAAEpI,KAAK,yBAAyB,EAGrEyU,EAAiB,EAtJjB,CAAC3R,EAAOU,gBAAkBS,EAAME,cAChCjD,EAAOgB,qBAAqB8T,MAAM,MAAM,EAyJnCjd,GAAE8c,EAASzN,MAAM,EAAEiE,SAAS,MAAM,GAAKtT,GAAE8c,EAASzN,MAAM,EAAEiE,SAAS,cAAc,GAAOtT,EAAE8c,EAASzN,MAAM,EAAEiE,SAAS,kBAAkB,GAYvItT,EAAE8c,EAASzN,MAAM,EAAEpI,KAAK,8BAA8B,EAAE8R,OAAO,EAEL,cAAtD/Y,EAAE8c,EAASzN,MAAM,EAAEuG,OAAO,EAAEvV,KAAK,eAAe,IAE3C6c,KADiBld,EAAE8c,EAASzN,MAAM,EAAEpI,KAAK,yBAAyB,EAAEsG,KAAK,IAExDvN,EAAE8c,EAASzN,MAAM,EAAEpI,KAAK,yBAAyB,EAAEvG,IAAI,EAEzEV,EAAE8c,EAASzN,MAAM,EAAEjC,SAAS,0BAA0B,EAAEnG,KAAK,iBAAiB,EAAEvG,IAAI,IAAMwc,IAC1FT,EAAuBzc,EAAE8c,EAASzN,MAAM,EAAEuG,OAAO,EAAGsH,EAAiB,GAAMA,CAAe,IAlBxC,cAAtDld,EAAE8c,EAASzN,MAAM,EAAEuG,OAAO,EAAEvV,KAAK,eAAe,IAE5CwU,GADAkI,EAAiB/c,EAAE8c,EAASzN,MAAM,EAAEjC,SAAS,0BAA0B,EAAEnG,KAAK,iBAAiB,GAClEvG,IAAI,EAErCqc,EAAepV,KAAK,WAAY,EAAK,EAAEwR,KAAK,WAAY,EAAK,EAC7DnZ,EAAE8c,EAASzN,MAAM,EAAEpI,KAAK,yBAAyB,EAAEsG,KAAKsH,CAAW,GAEvEmI,EAAclN,OAAO,SAAWkN,EAAc3c,KAAK,mBAAmB,EAAI,SAAS,EACnFkb,EAAcvb,EAAE8c,EAASzN,MAAM,EAAEuG,OAAO,4BAA4B,CAAC,EAc7E,CAAC,CACL,CAAC,EAiBD,SAASuH,IAKwB,SAAzBC,EAAmChb,GAC/B,OAAIA,EAAQkR,SAAS,QAAQ,GACrBlR,EAAQ6U,KAAK,EAAE3W,OACR8c,EAAuBhb,EAAQ6U,KAAK,CAAC,EAE3C7U,CACb,CAVJ,IAXIib,EAYAvI,EAAkBtI,EADPrE,EAAOC,cAAcT,KAAK,kBAAkB,CACP,EAChD2V,EAAenV,EAAOY,aAAa9B,KAAK,eAAe,EAAEU,KAAK,gBAAgB,EAS9E4V,GARczI,EAAgB7N,KAAK,6BAA+BqW,EAAe,IAAI,EAAE5c,IAAI,EAQzE0c,EAAuBtI,EAAgBmC,KAAK,CAAC,GAEnElN,EAAOQ,iBAAmB,GAE1BpC,EAAOY,aAAauE,YAAY,aAAa,EAC7CnF,EAAOsB,YAAYwT,MAAM,MAAM,EAC/B9U,EAAOqB,WAAWyT,MAAM,MAAM,EA7BRO,EA8BLD,EA7BbF,EAAerd,EAAE,QAAQ,EAAEM,OAASN,EAAE,QAAQ,EAAEyd,OAAO,EAAI,EAE/Dzd,EAAE,YAAY,EAAE0d,QAAQ,CACpBC,UAAWH,EAASI,OAAO,EAAEC,IAAMR,CACvC,EAAG,GAAG,EA4BNS,WAAW,WACPrB,EAAuB3H,EAAiBD,EAAa,GAAMyI,CAAY,EACvE5B,EAAiB,CACrB,EAAG,CAAC,CACR,CAuEA,SAASqC,IACL/R,EAAa+F,GAAG,CAAC,CAAC,EAAE1E,SAAS,eAAe,EAC5CrB,EAAa+F,GAAG,CAAC,CAAC,EAAE1E,SAAS,eAAe,EAC5CrB,EAAa+F,GAAG,CAAC,CAAC,EAAE1E,SAAS,eAAe,EAC5CrB,EAAa+F,GAAG,CAAC,EAAEzE,YAAY,eAAe,EAC9CtB,EAAa+F,GAAG,CAAC,EAAEzE,YAAY,eAAe,EAC9CtB,EAAa+F,GAAG,CAAC,EAAEzE,YAAY,eAAe,EAC9CpB,EAAcmB,SAAS,QAAQ,EAC/BlB,EAAcmB,YAAY,QAAQ,EAClCrB,EAAUoB,SAAS,eAAe,EAClCrN,EAAE,sBAAsB,EAAEoS,KAAK,eAAe,CAClD,CAiDA,SAAS4L,EAAyB1e,EAAMmN,GACpC,IA3C0BA,EAAI5F,EAC1BoX,EAsBAC,EAvE0BrX,EAlCD4F,EAAI5F,EAC7BoX,EA4HAE,EAAcne,EAAE,oBAAoB,EACpCoe,EAAmBpe,EAAE,gCAAkCyM,EAAK,IAAI,EAAEwK,KAAK,EAAE1J,KAAK,EAC9E8Q,EAAcre,EAAE,qBAAqB,EAMrCse,GAJJH,EAAY/L,KAAKgM,CAAgB,EACjCpe,EAAEsG,QAAQ,EAAEW,KAAK,oBAAoB,EAAEoG,SAAS,QAAQ,EAGrCtD,EAAOG,kBAAkBjD,KAAK,SAAUsX,GACvD,OAAOA,EAAO3J,UAAUnI,KAAOA,CACnC,CAAC,GAGD,OAAQnN,EAFGgf,GAAgBA,EAAa1J,UAAU4J,QAAUF,EAAa1J,UAAU4J,QAAUlf,GAGzF,IAAK,cACL,IAAK,IA5IoBmN,EA6IGA,EA7IC5F,EA6IGwX,EA5IhCJ,EAAW9V,EAAOC,cAAcT,KAAK,kBAAkB,GACvCoC,EAAOE,iBAAiBhL,eAAegf,CAAQ,EACjClU,EAAOE,iBAAiBgU,GAAUhN,aAAexE,GAAM1C,EAAOE,iBAAiBgU,GAAUrE,kBAAqB,IAG5I7P,EAAOE,iBAAiBgU,GAAUrE,kBAAkBhU,QAAQ,SAAUxD,GAClE,IAAIwW,EAAU/R,EAAKI,KAAK,eAAiB7E,EAAQzE,KAAO,GAAG,EACvDib,EAAQtY,QACRsY,EAAQlY,IAAI0B,EAAQ/D,KAAK,EACzBua,EAAQQ,QAAQ,QAAQ,GAExBvS,EAAKI,KAAK,cAAgB7E,EAAQzE,KAAO,GAAG,EAAE+C,IAAI0B,EAAQ/D,KAAK,CAEvE,CAAC,GAEDwI,EAAKI,KAAK,OAAO,EAAEvG,IAAI,EAAE,EACzBmG,EAAKI,KAAK,QAAQ,EAAEvG,IAAI,EAAE,EAC1BmG,EAAKI,KAAK,QAAQ,EAAEmS,QAAQ,QAAQ,GAIxCpZ,EAAEsG,QAAQ,EAAEW,KAAK,2BAA2B,EAAEA,KAAK,kBAAkB,EAAEmK,KAAK,WACxEpE,EAAkBhN,EAAER,IAAI,CAAC,CAC7B,CAAC,EAEDQ,EAAEsG,QAAQ,EAAEW,KAAK,2BAA2B,EAAEqG,YAAY,QAAQ,EAoH1D,MACJ,IAAK,WACL,IAAK,IA9GiBb,EA+GGA,EA/GC5F,EA+GGwX,EA9G7BJ,EAAW9V,EAAOC,cAAcT,KAAK,kBAAkB,EACvCoC,EAAOE,iBAAiBhL,eAAegf,CAAQ,GAE7ClU,EAAOE,iBAAiBgU,GAAUhN,aAAexE,GAAO1C,EAAOE,iBAAiBgU,GAAUhf,eAAe,mBAAmB,EAC9I8K,EAAOE,iBAAiBgU,GAAUrE,kBAAkBhU,QAAQ,SAAUxD,GAClEyE,EAAKI,KAAK,eAAiB7E,EAAQzE,KAAO,GAAG,EAAE+C,IAAI0B,EAAQ/D,KAAK,EAChEwI,EAAKI,KAAK,eAAiB7E,EAAQzE,KAAO,GAAG,EAAEyb,QAAQ,QAAQ,CACnE,CAAC,GAEGqF,EAAiB5X,EAAKI,KAAK,qBAAqB,EAAEvG,IAAI,EAE/B,GADvBge,EAAgB1e,EAAE,kBAAkB,GACtBM,QAAcoe,EAAcre,KAAK,iBAAiB,GAA+F,EAA1FL,EAAE,+BAAiC0e,EAAcre,KAAK,iBAAiB,EAAI,IAAI,EAAEC,SACtJme,EAAiBC,EAAcre,KAAK,iBAAiB,GAEzDwG,EAAKI,KAAK,QAAQ,EAAEvG,IAAI+d,CAAc,EACtC5X,EAAKI,KAAK,QAAQ,EAAEmS,QAAQ,QAAQ,GAIxCpZ,EAAEsG,QAAQ,EAAEW,KAAK,wBAAwB,EAAEA,KAAK,kBAAkB,EAAEmK,KAAK,WACrEpE,EAAkBhN,EAAER,IAAI,CAAC,CAC7B,CAAC,EAEDQ,EAAEsG,QAAQ,EAAEW,KAAK,wBAAwB,EAAEqG,YAAY,QAAQ,EAwFvD,MACJ,IAAK,IAjEiBb,EAkEGA,EAlEC5F,EAkEGwX,EAjE7BJ,EAAW9V,EAAOC,cAAcT,KAAK,kBAAkB,GACvCoC,EAAOE,iBAAiBhL,eAAegf,CAAQ,EACjClU,EAAOE,iBAAiBgU,GAAUhN,aAAexE,GAAM1C,EAAOE,iBAAiBgU,GAAUrE,kBAAqB,IAG5I7P,EAAOE,iBAAiBgU,GAAUrE,kBAAkBhU,QAAQ,SAAUxD,GAClE,IAAIwW,EAAU/R,EAAKI,KAAK,eAAiB7E,EAAQzE,KAAO,GAAG,EACvDib,EAAQtY,QACRsY,EAAQlY,IAAI0B,EAAQ/D,KAAK,EACzBua,EAAQQ,QAAQ,QAAQ,GAExBvS,EAAKI,KAAK,cAAgB7E,EAAQzE,KAAO,GAAG,EAAE+C,IAAI0B,EAAQ/D,KAAK,CAEvE,CAAC,GAEDwI,EAAKI,KAAK,OAAO,EAAEvG,IAAI,EAAE,EACzBmG,EAAKI,KAAK,QAAQ,EAAEvG,IAAI,EAAE,EAC1BmG,EAAKI,KAAK,QAAQ,EAAEmS,QAAQ,QAAQ,GAIpCuF,EAAW3e,EAAEsG,QAAQ,EAAEW,KAAK,wBAAwB,EACpDiX,EAAanU,EAAOG,kBAAkBjD,KAAK,SAAUwO,GACrD,OAAOA,EAAGb,UAAUnI,KAAOA,CAC/B,CAAC,EACDkS,EAAS1X,KAAK,qBAAqB,EAAEmL,KAAK8L,EAAWtJ,UAAUlF,aAAe,QAAQ,EAGtFiP,EAAS1X,KAAK,kBAAkB,EAAEmK,KAAK,WACnCpE,EAAkBhN,EAAER,IAAI,CAAC,CAC7B,CAAC,EAEDue,EAAmB,EACnBY,EAASrR,YAAY,QAAQ,EAiCrB,MACJ,QACItN,EAAEsG,QAAQ,EAAEW,KAAK,uBAAuB,EAAEqG,YAAY,QAAQ,CAEtE,CACJ,CAOA,SAASsR,EAAmBnS,EAAI+Q,GACxB/Q,GACAqP,EAAcrP,EAAI+Q,EAASnd,KAAK,eAAe,CAAC,EAGzB,SAAvBwe,EAAiCzc,GACjC,OAAIA,EAAQ9B,QAAU8B,EAAQkR,SAAS,QAAQ,GACvClR,EAAQ6U,KAAK,EAAE3W,OACRue,EAAqBzc,EAAQ6U,KAAK,CAAC,EAI3C7U,CACX,CACI0c,EAASD,EAAqBrB,EAASuB,QAAQ,kCAAkC,CAAC,EAElFD,EAAOxe,SACUwe,EAAOxL,SAAS,UAAU,GAIvC+H,EAAayD,CAAM,EAIvBlS,EAAa,EAGbqO,EAAa6D,EAAOze,KAAK,eAAe,CAAC,EAEzCqb,EAAiB,EAEzB,CAMA,SAASsD,EAA0BC,GAC/B,IAEIpK,EAFAqK,EAASD,EAASA,EAAO5e,KAAK,eAAe,EAAI,KAGjD8e,EAAkB,EAIjBD,GAAUD,GAAOrJ,OAAO,EAAEtC,SAAS,uBAAuB,IAE/DuB,EAAcoK,EAAOhY,KAAK,kDAAkD,EAAEU,KAAK,IAAI,EAC1EsX,EAAO5e,KAAK,eAAe,EAAEoR,OAE/B7L,QAAQ,SAAUxD,GACpBA,EAAQqK,KAAOoI,GAAgBzS,EAAQoR,aACxC2L,GAAmBC,KAAKC,IAAIjd,EAAQoR,UAAU,EAEtD,CAAC,EAEDzJ,EAAOM,aAAe8U,EAEtBG,EAAwB/L,SAAS3S,OAAOwJ,YAAY,EAAIL,EAAOM,YAE/DlC,EAAOiB,mBAAmBzB,KAAK,aAAc2X,CAAqB,EAClEnX,EAAOiB,mBAAmBmE,KAAK,IAAMnB,EAAiBkT,CAAqB,EAAI,KAAK,EACxF,CAKA,SAASC,IACL,IAAIC,EACAC,EAEJzf,EAAE,4BAA4B,EAAEoR,KAAK,SAAUoD,EAAOpS,GAC9C/B,EAAOL,EAAEoC,CAAO,EAAE/B,KAAK,eAAe,EAEtCA,GACAL,EAAEoR,KAAK/Q,EAAKoR,OAAQ,SAAUH,EAAKmE,GAC3BA,EAAGxW,eAAe,aAAa,IAC/BugB,EAAW/J,EAAG2G,YAAYnd,eAAe,SAAS,EAAIwW,EAAG2G,YAAYC,QAAU,GAC/EoD,EAAWhK,EAAG2G,YAAYnd,eAAe,SAAS,EAAIwW,EAAG2G,YAAY5G,QAAU,GAEvF,CAAC,EAGLxV,EAAEoR,KAAKoO,EAAU,SAAUlO,EAAKmE,GACJjJ,EAAsBiJ,CAAE,EAC9BpI,SAAS,QAAQ,CACvC,CAAC,EAEDrN,EAAEoR,KAAKqO,EAAU,SAAUnO,EAAKmE,GACJjJ,EAAsBiJ,CAAE,EAC9BpI,SAAS,QAAQ,CACvC,CAAC,CACL,CAAC,CACL,CAwCA,SAASqS,IACL,IAAI3O,EAAU/Q,EAAE,+DAA+D,EAAE2f,IAAI,WACjF,IAAIpO,EAAWvR,EAAER,IAAI,EAAEa,KAAK,aAAa,EACrC6Q,EAAkBlR,EAAER,IAAI,EAAEyH,KAAK,0CAA0C,EAAEU,KAAK,IAAI,GAAK3H,EAAER,IAAI,EAAEyH,KAAK,gCAAgC,EAAEU,KAAK,IAAI,EACjJiS,EAAoB7P,EAAOE,iBAAiBsH,GAChD,MAAO,CACHA,SAAUqO,OAAOrO,CAAQ,EACzBL,gBAAiB0O,OAAO1O,CAAe,EACvC2O,OAAQjG,CACZ,CACJ,CAAC,EAAEkG,QAAQ,EACX,OAAO5H,KAAKC,UAAUpH,CAAO,CACjC,CAMA,SAASgP,KACL,IACShhB,EADLihB,EAAuB,GAC3B,IAASjhB,KAAYgL,EAAOE,iBACxB+V,EAAqBxY,KAAK,CACtB+J,SAAUqO,OAAO7gB,CAAQ,EACzBmS,gBAAiB0O,OAAO7V,EAAOE,iBAAiBlL,GAAUkS,UAAU,EACpE2I,kBAAmB7P,EAAOE,iBAAiBlL,GAAU6a,iBACzD,CAAC,EAGL,OAAO1B,KAAKC,UAAU6H,CAAoB,CAC9C,CA+DA,SAASC,EAAcnZ,GACnB,IAAIoZ,EAAgBlgB,EAAE,aAAa,EAE/BmgB,EADqBD,EAAcjZ,KAAK,qBAAqB,EACpBA,KAAK,QAAQ,EAEtDb,gBAAgBga,+BAAwD,EAAvBF,EAAc5f,SAC5B,IAA/B6f,EAAoB7f,OACpB4H,EAAUtB,OAAOsZ,EAAepZ,EAAU,EAAI,EAE9CoB,EAAUH,MAAMmY,CAAa,GAIrChY,EAAU/H,KAAK,CACnB,CAOA,SAASkgB,IACL,IAAIC,EAAkBtgB,EAAE,sBAAsB,EAC1C6G,EAAO7G,EAAE,aAAa,EACtBiG,EAAMY,EAAKc,KAAK,QAAQ,EAiC5B,OAhCAd,EAAK0Z,QAAQ,EAAEC,MAAM,EAErBxgB,EAAE4X,KAAK,CACH3R,IAAKA,EACL3G,KAAM,OACN2Y,SAAU,OACV5X,KAAMwG,EAAK4Z,UAAU,EACrBC,QAAS,SAAUrgB,GACfwG,EAAK0Z,QAAQ,EAAEI,KAAK,EACftgB,EAAKqgB,SAGN1gB,EAAE,mBAAmB,EAAEU,IAAI,EAAE,EAC7BV,EAAE,mBAAmB,EAAEU,IAAI,EAAE,EAC7BV,EAAE,wBAAwB,EAAEU,IAAI,EAAE,EAClCV,EAAE,aAAa,EAAEid,MAAM,MAAM,EAC7Bjd,EAAE,yBAAyB,EAAEid,MAAM,MAAM,EACzCa,WAAW,WACP9d,EAAE,yBAAyB,EAAEid,MAAM,MAAM,CAC7C,EAAG,GAAI,EACPqD,EAAgBhT,YAAY,SAAS,GAVrCgT,EAAgBjT,SAAS,SAAS,EAYtC4S,EAAcI,CAAe,CACjC,EACAO,MAAO,SAAUC,GACTA,EAAIC,aAAaC,cACjBngB,OAAOC,SAASua,KAAOyF,EAAIC,aAAaC,aAE5Cla,EAAK0Z,QAAQ,EAAEI,KAAK,EACpBV,EAAcI,CAAe,CACjC,CACJ,CAAC,EACM,EACX,CA6DAnjB,EAAOG,QAAU,CACb2jB,iBAAkB,WACd,IAkBQC,EACJ9M,EAnBA+M,EAAa/Y,EAAOC,cAAc/H,KAAK,aAAa,EACpD8gB,EAAYhZ,EAAOC,cAAc/H,KAAK,iBAAiB,EAGvD8gB,EACIA,IAAcxb,EAAK0B,KAEnB8M,EAAa+M,EAAW,GAExBA,EAAWtb,QAAQ,SAAU0M,GACrBA,EAAG3U,OAASwjB,IACZhN,EAAa7B,EAGrB,CAAC,GAGL6O,EAAYD,EAAW,GACnBD,EAAmBnjB,OAAO6H,KAAKwb,CAAS,EAAE,GAC9ChN,EAAagN,EAAUF,GAGa,EAAhCnjB,OAAO6H,KAAKwb,CAAS,EAAE7gB,SA11BnC6H,EAAOwB,sBAAsByH,KAAK,WAC9BkK,EAActb,EAAER,IAAI,CAAC,CACzB,CAAC,EA01BW2I,EAAOwB,sBAAsByH,KAAK,WAC1BpR,EAAER,IAAI,EAAEa,KAAK,aAAa,IAAM,aAAe4gB,GAC/C5F,EAAarb,EAAER,IAAI,CAAC,CAE5B,CAAC,IAKTse,WAAW,WACP,IAEIsD,EAAWphB,EAAE,0BAA0B,EAC/B,IAAI4B,OAHK,CAAC,oBAAqB,yBAA0B,uBAGjCJ,KAAK,GAAG,EAAG,IAAI,EAExCyN,KAAKrO,OAAOC,SAASwgB,QAAQ,GACpCD,EAAShQ,KAAK,SAACE,EAAKgQ,GACZC,EAAQvhB,EAAEshB,CAAI,EAAElR,SAAS,gBAAgB,EAExB,IAAjBmR,EAAMjhB,QACNN,EAAEuhB,CAAK,EAAEnI,QAAQ,OAAO,CAEhC,CAAC,CAET,EAAG,CAAC,EAEJ6B,EAAa9G,CAAU,EACvBoL,EAA8B,EAC1Bvf,EAAE,iBAAiB,EAAEM,QACrBqQ,EAAkB,CAE1B,EAEA6Q,qBAAsB,WAClBxhB,EAAE,0DAA0D,EAAEoR,KAAK,SAAUoD,EAAOgJ,GAChF,IAAIiE,EAAezhB,EAAEwd,CAAQ,EAAEnd,KAAK,eAAe,EAC/CkR,EAAWvR,EAAEwd,CAAQ,EAAEnd,KAAK,aAAa,EAE7CohB,GAtHwBA,IAChC,IAAIC,EAAiB,CAAEC,gBAAiB,WAAYC,UAAW,YAAaC,WAAY,aAAcC,UAAW,YAAaC,gBAAiB,kBAAmBC,QAAS,UAAWC,YAAa,cAAeC,YAAa,cAAeC,eAAgB,iBAAkBC,gBAAiB,iBAAkB,EAC/SlR,EAAkBuQ,EAAeA,EAAavQ,gBAAkB,KAChEmR,EAAeZ,GAAgBA,EAAaxiB,eAAe,QAAQ,EAAIwiB,EAAahQ,OAAS,KACjG,GAAuB,MAAnBP,GAA2C,MAAhBmR,EAC3B,IAAK,IAAIllB,EAAI,EAAGA,EAAIklB,EAAa/hB,OAAQnD,CAAC,GAAI,CAC1C,IAAImlB,EAAeD,EAAallB,GAChC,GAAImlB,EAAa7V,GAAGF,SAAS,IAAM2E,EAAgB3E,SAAS,EAExD,IADA,IAAIgW,EAAazkB,OAAO6H,KAAK+b,CAAc,EAClChQ,EAAI,EAAGA,EAAI6Q,EAAWjiB,OAAQoR,CAAC,GAAI,CACxC,IAAI8Q,EAAUD,EAAW7Q,GACrB+Q,EAAaf,EAAec,GAC5BE,EAAcJ,EAAaE,GACX,KAAhBE,GAAsC,OAAhBA,IACjBjB,EAAaxiB,eAAe,sBAAsB,IAAGwiB,EAAakB,qBAAuB,IAC3E,aAAfF,IACAC,EAAcA,EAAY3gB,QAAQ,IAAK,EAAE,EAKzC2gB,EAHmB1iB,EAAE,wBAAwB,EAAEiH,KAAK,gBAAgB,EAAEmM,OAAO,WACzE,OAAOpT,EAAER,IAAI,EAAEmI,KAAK,iBAAiB,EAAEib,YAAY,IAAMF,EAAYE,YAAY,CACrF,CAAC,EAC0Bjb,KAAK,iBAAiB,GAErD8Z,EAAakB,qBAAqBF,GAAcC,EAExD,CAER,CAEJ,OAAOjB,CACX,GAwFsDA,CAAY,EAEtD,GAAIA,GAAgBA,EAAakB,sBACQ,KAAjClB,EAAavQ,iBAA2D,OAAjCuQ,EAAavQ,gBAA0B,CAG9E,IAFA,IAAI2R,EAAqB,GACrBC,EAAahlB,OAAO6H,KAAK8b,EAAakB,oBAAoB,EACrDjR,EAAI,EAAGA,EAAIoR,EAAWxiB,OAAQoR,CAAC,GACpCmR,EAAmBrb,KAAK,CACpB7J,KAAMmlB,EAAWpR,GACjBrT,MAAOojB,EAAakB,qBAAqBG,EAAWpR,GACxD,CAAC,EAG2B,EAA5BmR,EAAmBviB,SACnByJ,EAAOE,iBAAiBsH,GAAY,CAChCN,WAAYwQ,EAAavQ,gBACzB2D,YAAa4M,EAAasB,0BAC1BnJ,kBAAmBiJ,CACvB,EAER,CAER,CAAC,CACL,EAEAG,cAAe,WACX7a,EAAOuB,kBAAkB0H,KAAK,WACtBpR,EAAER,IAAI,EAAEa,KAAK,UAAU,IACvBgb,EAAarb,EAAER,IAAI,CAAC,EAt5BpC,SAASyjB,EAAkB3Q,GACnBA,EAAG4Q,KAAK,GAAK5Q,EAAG4Q,KAAK,EAAE5P,SAAS,UAAU,IAI1C+H,EAAa/I,EAAG4Q,KAAK,CAAC,EACtBD,EAAkB3Q,EAAG4Q,KAAK,CAAC,EAEnC,EA+4BkCljB,EAAER,IAAI,CAAC,EAEjC,CAAC,CACL,EAEA2jB,WAAY,WACRnjB,EAAEsG,QAAQ,EAAE8c,GAAG,SAAU,gCAAiC,WACtD,IAEInS,EAFAoS,EAAQrjB,EAAER,IAAI,EACd8jB,EAAeD,EAAM5Q,QAAQ,4BAA4B,EAEzD8Q,EAAkBF,EAAM5Q,QAAQ,4BAA4B,EAAEpS,KAAK,aAAa,EAkBpF,GAhBA0J,EAAOM,YAAc,EAGjB4G,EADAqS,EAAahQ,SAAS,WAAW,EACpB+P,EAAMpc,KAAK,2BAA2B,EAAE5G,KAAK,QAAQ,GAAKgjB,EAAMpc,KAAK,iBAAiB,EAAE5G,KAAK,QAAQ,EAErGgjB,EAAMpc,KAAK,2BAA2B,EAAEU,KAAK,IAAI,GAAK0b,EAAMpc,KAAK,iBAAiB,EAAEU,KAAK,IAAI,EAG9G3H,EAAE,kDAAkD,EAAEoR,KAAK,WACvD4N,EAA0Bhf,EAAER,IAAI,CAAC,CACrC,CAAC,EAGDQ,EAAE,yBAAyB,EAAEoZ,QAAQ,QAAQ,EAGzC,CAACrP,EAAOO,iBAAmBP,EAAOS,sBAClC,IAAK,IAAIgK,EAAQ,EAAGA,EAAQzK,EAAOG,kBAAkB5J,OAAQkU,CAAK,GAAI,CAClE,IAAIiB,EAAK1L,EAAOG,kBAAkBsK,GAC9BgP,GAAwC,gBAArB/N,EAAGhB,eAAwD,aAArBgB,EAAGhB,eAAgCgB,EAAGb,UAAU4J,UAAgC,iBAApB/I,EAAGb,UAAUnI,IAA6C,qBAApBgJ,EAAGb,UAAUnI,GAC5K,GAAIgJ,EAAGb,UAAUnI,KAAOwE,GAAcsS,IAAoBE,OAAOhO,EAAGb,UAAU1F,QAAQ,GAAKsU,EAUvF,OATAzZ,EAAOI,iBAAmBsL,EAAGb,UAAUnI,GAEjC1C,EAAOC,aAAa/K,eAAeskB,CAAe,GAAMvjB,GAAER,IAAI,EAAEkB,IAAI,GACtEyH,EAAOsB,YAAYwT,MAAM,MAAM,EAE/Bjd,EAAER,IAAI,EAAEkB,IAAI,IACZob,EAAc7K,EAAYqS,CAAY,EACtC5H,EAAiB,GAEd,GACA3R,GAAOC,aAAa/K,eAAeskB,CAAe,GAAK9N,EAAGb,UAAUnI,KAAOwE,GAAoC,gBAArBwE,EAAGhB,eAAwD,aAArBgB,EAAGhB,eAAiCgB,EAAGb,UAAU4J,SACxL7R,EAAyB4W,CAAe,CAEhD,CAGJxZ,EAAOC,aAAauZ,GAAmB,CACnC1O,YAAawO,EAAM3iB,IAAI,EACvBuQ,WAAYA,CAChB,EAGIlH,EAAOE,iBAAiBsZ,IAAoBxZ,EAAOE,iBAAiBsZ,GAAiBtS,aAAelH,EAAOC,aAAauZ,GAAiBtS,YACzI,OAAOlH,EAAOE,iBAAiBsZ,GAG/BvjB,EAAER,IAAI,EAAEkB,IAAI,GACZke,EAAmB3N,EAAYqS,CAAY,CAEnD,CAAC,CACL,EAEAI,oBAAqB,WACjB1jB,EAAEsG,QAAQ,EAAE8c,GAAG,SAAU,uCAAwC,WAC7DO,IAt2BJC,EAfyBC,EAq3BJ7jB,EAAER,IAAI,EAAEkB,IAAI,EAn3BjCojB,EADevQ,SAASpL,EAAOiB,mBAAmBzB,KAAK,YAAY,CAAC,EACxC4L,SAASsQ,CAAU,EACnD7jB,EAAE,oCAAoC,EAAEuN,KAAK,IAAMnB,EAAiB0X,CAAU,EAAI,KAAK,EAEnF9jB,EAAE,iBAAiB,EAAEM,QACrBN,EAAE,6BAA6B,EAAEuN,KAAK,IAAMnB,EAAiB0X,CAAU,EAAI,KAAK,EAQzDD,EAw2BJ7jB,EAAER,IAAI,EAAEkB,IAAI,GAv2B/BkjB,EAAe5jB,EAAE,kCAAkC,EAAEK,KAAK,cAAc,GAAK,QAEzEwjB,GAAcD,EAAaG,YAC3B/jB,EAAE,kCAAkC,EAAEuN,KAAKqW,EAAalU,YAAY,EAEpE1P,EAAE,kCAAkC,EAAEuN,KAAK3M,OAAOojB,UAAUC,wBAAwB,EAm2BxF,CAAC,CACL,EAEAC,qBAAsB,WAClB,IACQJ,EADJljB,OAAO3B,eAAe,cAAc,GAAK2B,OAAO8W,aAAa6C,iBAAmB3Z,OAAO8W,aAAa6C,gBAAgBpD,QAChH2M,EAAavQ,SAASpL,EAAOmB,qBAAqB5I,IAAI,CAAC,EAAI6S,SAAS3S,OAAO8W,aAAa6C,gBAAgBpD,MAAM9Y,KAAK,EAEvHuC,OAAOwJ,aAAexJ,OAAO8W,aAAa6C,gBAAgBpD,MAAM9Y,MAEhE8J,EAAOiB,mBAAmBzB,KAAK,aAAc/G,OAAO8W,aAAa6C,gBAAgBpD,MAAM9Y,KAAK,EAC5F8J,EAAOiB,mBAAmBmE,KAAK,IAAMnB,EAAiBxL,OAAO8W,aAAa6C,gBAAgBpD,MAAM9Y,KAAK,EAAI,KAAK,EAE9G2B,EAAE,oCAAoC,EAAEuN,KAAK,IAAMnB,EAAiB0X,CAAU,EAAI,KAAK,EAE/F,EAEAK,mBAAoB,WAChBnkB,EAAEsG,QAAQ,EAAE8c,GAAG,QAAS,mBAAoB,WACxCpW,EAAkBhN,EAAER,IAAI,CAAC,CAC7B,CAAC,CACL,EAEA4kB,gBAAiB,WACbpkB,EAAEsG,QAAQ,EAAE8c,GAAG,QAAS,oBAAqB,WAC6B,EAA3CpjB,EAAER,IAAI,EAAEiT,QAAQ,gBAAgB,EAAEnS,SAEzDyJ,EAAOI,iBAAmBnK,EAAER,IAAI,EAAEmI,KAAK,WAAW,EAClDQ,EAAOsB,YAAYwT,MAAM,MAAM,EAC/BlT,EAAOQ,iBAAmB,GAE1BuT,WAAW,WACP3V,EAAOqB,WAAWyT,MAAM,MAAM,CAClC,EAAGtX,EAAKsF,gBAAgB,EAEhC,CAAC,CACL,EAEAoZ,iBAAkB,WACdlc,EAAOsB,YAAY2Z,GAAG,iBAAkB,WAC/Bjb,EAAOY,aAAauK,SAAS,mBAAmB,GACd,IAAItL,EAAS,6BAA6B,EAEhD5H,SAAS,EAH1C,IAMIkkB,EAAkBnc,EAAOY,aAAa9B,KAAK,eAAe,EAAEU,KAAK,sBAAsB,EAEvF4c,EADepc,EAAOY,aAAa9B,KAAK,uBAAyB8C,EAAOI,iBAAmB,IAAI,EACpE9J,KAAK,aAAa,EAEjD8H,EAAOY,aAAaxI,MAAM,YAAagkB,CAAW,EAClDvG,EAAyBsG,EAAiBva,EAAOI,gBAAgB,EAGjE2T,WAAW,WACP3V,EAAOY,aAAasE,SAAS,aAAa,CAC9C,EAAG1H,EAAKsF,gBAAgB,CAC5B,CAAC,CACL,EAEAuZ,gBAAiB,WAEbrc,EAAOsB,YAAY2Z,GAAG,gBAAiB,WACnC,IAAIE,EAAetjB,EAAE,kDAAoDmI,EAAOkB,WAAWkE,KAAK,EAAI,IAAI,EACpGkX,EAAmBnB,EAAarc,KAAK,QAAQ,EAC7Cyd,EAAgBvc,EAAOC,cAAcT,KAAK,kBAAkB,EAEhEQ,EAAOY,aAAauE,YAAY,aAAa,EAExCvD,EAAOQ,kBACRpC,EAAOqB,WAAWyT,MAAM,MAAM,EAI7BlT,EAAOC,aAAa0a,IAWrBjI,EAAuB6G,EAAcvZ,EAAOC,aAAa0a,GAAe7P,YAAa,GAAO9K,EAAOC,aAAa0a,GAAezT,UAAU,EACzIqS,EAAarc,KAAK,kBAAkB,EAAEsG,KAAKxD,EAAOC,aAAa0a,GAAe7P,WAAW,IAXzF4P,EAAiB/jB,IAAI,EAAE,EACnB+jB,EAAiBxd,KAAK,iBAAiB,EAAEU,KAAK,IAAI,GAClD8c,EAAiBxd,KAAK,iBAAiB,EAAE4O,WAAW,UAAU,EAE9D4O,EAAiBxd,KAAK,2BAA2B,EAAEU,KAAK,IAAI,GAC5D8c,EAAiBxd,KAAK,2BAA2B,EAAE4O,WAAW,UAAU,EAE5EyN,EAAarc,KAAK,kBAAkB,EAAEsG,KAAK,GAAG,EAC9CxD,EAAOQ,iBAAmB,GAKlC,CAAC,CACL,EAEAoa,kBAAmB,WACfxc,EAAOY,aAAaqa,GAAG,cAAe,WAClC,IAAIwB,EAAgBzc,EAAOY,aAAa9B,KAAK,eAAe,EACxDqW,EAAesH,EAAcjd,KAAK,gBAAgB,EAGtDqW,EAFsB4G,EAAcjd,KAAK,sBAAsB,EAErB2V,CAAY,CAC1D,CAAC,CACL,EAEAuH,wBAAyB,WACrB7kB,EAAEsG,QAAQ,EAAEW,KAAK,gBAAgB,EAAEmc,GAAG,QAAS,WAC3CjG,EAAkB,EAElB,IAAIuH,EAAgBvc,EAAOC,cAAcT,KAAK,kBAAkB,EAC5DoC,EAAOC,aAAa/K,eAAeylB,CAAa,GAChD/X,EAAyB+X,CAAa,CAE9C,CAAC,CACL,EAEAI,wBAAyB,WACrB9kB,EAAEsG,QAAQ,EAAE8c,GAAG,SAAU,sBAAuB,SAAUhU,GACtDA,EAAE2V,eAAe,EACjB,IAAIC,EAAQhlB,EAAER,IAAI,EACdylB,EAAaD,EAAM/d,KAAK,gBAAgB,EACxCie,EAAW/c,EAAOY,aAAa9B,KAAK,eAAe,EAAEU,KAAK,gBAAgB,EAC1Ewd,EAAanlB,EAAE,eAAe,EAAE2H,KAAK,mBAAmB,EACxD2b,EAAetjB,EAAE,kDAAoDmI,EAAOkB,WAAWkE,KAAK,EAAI,IAAI,EACpGmX,EAAgBvc,EAAOC,cAAcT,KAAK,kBAAkB,EAQ5Dyd,GALJH,EAAW7T,KAAK,WACRpR,EAAER,IAAI,EAAEkB,IAAI,GAAqC,WAAhCV,EAAER,IAAI,EAAEkB,IAAI,EAAEkiB,YAAY,GAC3C5iB,EAAER,IAAI,EAAEkB,IAAI,EAAE,CAEtB,CAAC,EACiBskB,EAAMK,eAAe,GAEvCtb,EAAOC,aAAa0a,GAAiB,CACjC7P,YAAasQ,EACblU,WAAYiU,CAChB,EAEAnb,EAAOE,iBAAiBya,GAAiB,CACrC7P,YAAasQ,EACblU,WAAYiU,EACZtL,kBAAmBwL,CACvB,EAEAjI,EAAkB,EAElByB,EAAmBsG,EAAU5B,CAAY,CAC7C,CAAC,CACL,EAEAgC,yBAA0B,WACtBtlB,EAAE,oCAAoC,EAAEojB,GAAG,QAAS,WAChD,IAAIE,EAAetjB,EAAE,kDAAoDmI,EAAOkB,WAAWkE,KAAK,EAAI,IAAI,EACpGkX,EAAmBnB,EAAarc,KAAK,QAAQ,EAC7Cyd,EAAgBvc,EAAOC,cAAcT,KAAK,kBAAkB,EAE3DoC,EAAOC,aAAa0a,IAWrBjI,EAAuB6G,EAAcvZ,EAAOC,aAAa0a,GAAe7P,YAAa,GAAO9K,EAAOC,aAAa0a,GAAezT,UAAU,EACzIqS,EAAarc,KAAK,kBAAkB,EAAEsG,KAAKxD,EAAOC,aAAa0a,GAAe7P,WAAW,IAXzF4P,EAAiB/jB,IAAI,EAAE,EACnB+jB,EAAiBxd,KAAK,iBAAiB,EAAEU,KAAK,IAAI,GAClD8c,EAAiBxd,KAAK,iBAAiB,EAAE4O,WAAW,UAAU,EAE9D4O,EAAiBxd,KAAK,2BAA2B,EAAEU,KAAK,IAAI,GAC5D8c,EAAiBxd,KAAK,2BAA2B,EAAE4O,WAAW,UAAU,EAE5EyN,EAAarc,KAAK,kBAAkB,EAAEsG,KAAK,GAAG,EAC9CxD,EAAOQ,iBAAmB,IAK9BpC,EAAOY,aAAauE,YAAY,aAAa,EAC7CnF,EAAOsB,YAAYwT,MAAM,MAAM,EAC/B9U,EAAOqB,WAAWyT,MAAM,MAAM,EAC9BvB,EAAiB,CACrB,CAAC,CACL,EAEA6J,kBAAmB,WACfvlB,EAAEsG,QAAQ,EAAE8c,GAAG,QAAS,kDAAmD,WACvE,IAAInE,EAASzf,KAAKgmB,cAAc,QAAQ,EAEpCvG,EAAOzO,QAAQE,QAAUuO,EAAOzO,QAAQE,SAAWvI,EAAOC,cAAcT,KAAK,sBAAsB,IACnGiF,EAAa,EACbqO,EAAajb,EAAER,IAAI,EAAEimB,QAAQ,4BAA4B,EAAEplB,KAAK,eAAe,CAAC,GAIpFL,EAAER,IAAI,EAAE4N,SAAS,kBAAkB,EAAEC,SAAS,mBAAmB,EAE7DnC,EAAME,cAAgB,CAACrB,EAAOU,gBAI7BzK,EAAER,IAAI,EAAE8T,SAAS,4BAA4B,GAC9CnL,EAAOqB,WAAWyT,MAAM,MAAM,CAEtC,CAAC,CACL,EAEAyI,eAAgB,WACZ1lB,EAAEsG,QAAQ,EAAE8c,GAAG,SAAU,0DAA2D,WAEhF,IACIuC,EAAkB3lB,EAAER,IAAI,EAAE4Q,SAAS,WAAW,EAAEzI,KAAK,IAAI,EACR,CAAC,EAF1B,CAAC,KAAM,OAETrG,QAAQqkB,CAAe,EAC7C3lB,EAAE,WAAW,EAAEsN,YAAY,QAAQ,EAEnCtN,EAAE,WAAW,EAAEqN,SAAS,QAAQ,CAExC,CAAC,CACL,EAEAuY,gBAAiB,WACbzd,EAAOqB,WAAW4Z,GAAG,gBAAiB,WAClCpjB,EAAE,kBAAkB,EAAEsN,YAAY,mBAAmB,EACjDtN,EAAE,iBAAiB,EAAEM,QACrBN,EAAE,iBAAiB,EAAE+Y,OAAO,CAEpC,CAAC,CACL,EAEA8M,kBAAmB,WACf1d,EAAOqB,WAAW4Z,GAAG,kBAAmB,WACpCpjB,EAAE,kBAAkB,EAAEsN,YAAY,MAAM,EACpCtN,EAAE,iBAAiB,EAAEM,QACrBN,EAAE,iBAAiB,EAAE+Y,OAAO,CAEpC,CAAC,CACL,EAEA+M,wBAAyB,WACrB9lB,EAAEsG,QAAQ,EAAE8c,GAAG,QAAS,wBAAyB,WAC7C,IAEI2C,EADkBvZ,EADPrE,EAAOC,cAAcT,KAAK,kBAAkB,CACP,EACvBV,KAAK,kDAADqI,OAAmD9P,KAAKnB,MAAK,KAAI,EAE9F0nB,EAAOzlB,QACPylB,EAAO3M,QAAQ,OAAO,EAG1BjR,EAAOqB,WAAWyT,MAAM,MAAM,CAClC,CAAC,CACL,EAEA+I,+BAAgC,WAC5BhmB,EAAEsG,QAAQ,EAAE8c,GAAG,QAAS,yBAA0B,WAC9C,IAAI6C,EAAWjmB,EAAE,uCAAuC,EAAEU,IAAI,EAC1DwlB,EAAUlmB,EAAE,+DAAiEimB,EAAW,IAAI,EAAEte,KAAK,IAAI,EAEvGoe,EADyB/lB,EAAE,uBAAuB,EAAE2a,KAAK,EACzB1T,KAAK,kDAADqI,OAAmD4W,EAAO,KAAI,EAElGH,EAAOzlB,QACPylB,EAAO3M,QAAQ,OAAO,EAE1BjR,EAAOqB,WAAWyT,MAAM,MAAM,CAClC,CAAC,CACL,EAEAkJ,oBAAqB,WACjBnmB,EAAEsG,QAAQ,EAAE8c,GAAG,QAAS,kBAAmB,WACvCpjB,EAAER,IAAI,EAAEoW,OAAO,EAAEvI,SAAS,MAAM,CACpC,CAAC,EAAE+V,GAAG,WAAY,kBAAmB,WACjC,IAAIC,EAAQrjB,EAAER,IAAI,EAElB6jB,EAAMzN,OAAO,EAAEtI,YAAY,MAAM,EAE7B+V,EAAM3iB,IAAI,EAAEJ,OACZ6H,EAAOM,oBAAoB4E,SAAS,QAAQ,EAE5ClF,EAAOM,oBAAoB6E,YAAY,QAAQ,CAEvD,CAAC,EAEGnF,EAAOO,cAAchI,IAAI,GAAKyH,EAAOO,cAAchI,IAAI,EAAEJ,QACzD6H,EAAOM,oBAAoB4E,SAAS,QAAQ,CAEpD,EAEA+Y,cAAe,WACXpmB,EAAEsG,QAAQ,EAAE8c,GAAG,QAAS,kBAAmB,WACvC,IAAIiD,EAAmBrmB,EAAE,uBAAuB,EAAEU,IAAI,EAEtDyH,EAAOO,cAAchI,IAAI2lB,CAAgB,EAErCle,EAAOO,cAAchI,IAAI,GAAKyH,EAAOO,cAAchI,IAAI,EAAEJ,OACzD6H,EAAOM,oBAAoB4E,SAAS,QAAQ,EAE5ClF,EAAOM,oBAAoB6E,YAAY,QAAQ,EAGnDnF,EAAOqB,WAAWyT,MAAM,MAAM,EAC9B9U,EAAOO,cAAc0Q,QAAQ,UAAU,CAC3C,CAAC,CACL,EAEAkN,yBAA0B,WACtBtmB,EAAEsG,QAAQ,EAAE8c,GAAG,QAAS,wBAAyB,WAC7C,IAAIC,EAAQrjB,EAAER,IAAI,EAElB6jB,EAAMhW,SAAS,QAAQ,EACvBgW,EAAMpM,KAAK,EAAEsP,MAAM,CACvB,CAAC,EAEDvmB,EAAEsG,QAAQ,EAAE8c,GAAG,QAAS,kBAAmB,WACvCjb,EAAOM,oBAAoB4E,SAAS,QAAQ,CAChD,CAAC,CACL,EAEAmZ,iBAAkB,WACdre,EAAOc,iBAAiBma,GAAG,SAAU,SAAUhU,GAC3CA,EAAE2V,eAAe,EAvezB/kB,EAAE,eAAe,EAAE8f,QAAQ,EAAEla,QAAQ,SAAU6V,GACtCA,EAAO5M,UAAU4X,SAAS,SAAS,GAAMhL,EAAO5M,UAAU4X,SAAS,qBAAqB,GAAMhL,EAAO5M,UAAU4X,SAAS,iBAAiB,GAC1IzmB,EAAEyb,CAAM,EAAE1C,OAAO,CAEzB,CAAC,EAED/Y,EAAE,uBAAuB,EAAE4O,YAAchO,OAAO8W,aAAa6C,gBAAgB9N,GAE7EzM,EAAE,mCAAmC,EAAE8f,QAAQ,EAAEla,QAAQ,SAAU8gB,GAC/D,IAAIC,EAAQrgB,SAASC,cAAc,GAAG,EAEtCogB,EAAM9X,UAAUC,IAAI,eAAgB,cAAc,EAClD6X,EAAM3X,aAAa,iBAAkB0X,EAAGlW,QAAQiS,UAAU,EAC1DkE,EAAM/X,YAAc,IAAM8X,EAAGlW,QAAQoW,aAAe,KAEpD5mB,EAAE,+BAA+B,EAAE6mB,OAAOF,CAAK,CACnD,CAAC,EAydO3mB,EAAE,YAAY,EAAE0d,QAAQ,CAAEC,UAAW,CAAE,EAAG,GAAG,EAC7C1C,EAAajb,EAAER,IAAI,EAAEa,KAAK,eAAe,CAAC,CAC9C,CAAC,CACL,EAEAymB,mBAAoB,WAChB9mB,EAAE,oBAAoB,EAAEojB,GAAG,QAAS,WAChCjb,EAAOyB,eAAeyD,SAAS,QAAQ,EACvClF,EAAOa,iBAAiBsE,YAAY,QAAQ,EAC5CnF,EAAO0B,wBAAwByD,YAAY,wBAAwB,EAEnEvD,EAAOO,gBAAkB,EAC7B,CAAC,CACL,EAEAyc,YAAa,WACT/mB,EAAE,qBAAqB,EAAEojB,GAAG,QAAS,WACjCxiB,OAAOomB,MAAM,CACjB,CAAC,CACL,EAEAC,eAAgB,WACZjnB,EAAE,qBAAqB,EAAEojB,GAAG,QAAS,WACjC,IAAI8D,EAAgBlnB,EAAE,qBAAqB,EAEvCmnB,GADJnnB,EAAE,aAAa,EAAEid,MAAM,MAAM,EAClBjd,EAAER,IAAI,EAAEa,KAAK,KAAK,GAC7B4f,EAAcI,CAAe,EAE7BtW,EAAOC,aAAaod,SAAW,CAC3BnW,WAAYjR,EAAE,0CAA0C,EAAEU,IAAI,CAClE,EAPA,IAUK2mB,KADWtd,EAAOC,aAAarE,EAAKgF,UAAYZ,EAAOC,aAAarE,EAAKgF,SAASsG,aAEvErQ,OAAO8W,aAAa6C,gBAAgB9N,GAGpD0a,GADAA,GAAQ,QAAUE,IACVrnB,EAAER,IAAI,EAAEa,KAAK,YAAY,EAAI,aAAe,IAchDinB,GAZJxpB,OAAO6H,KAAKoE,EAAOC,YAAY,EAAEpE,QAAQ,SAAU2hB,GACrC,aAANA,GAA0B,aAANA,EACpBJ,GAAQ,IAAMI,EAAI,IAAMC,mBAAmBzd,EAAOC,aAAaud,GAAGtW,UAAU,EACrEsW,IAAM5hB,EAAKgF,UAClBwc,GAAQ,UAAYE,EAAY,IAAME,EAAI,IAAMxd,EAAOC,aAAaud,GAAGtW,WAE/E,CAAC,EAEInE,EAAW/C,EAAOE,gBAAgB,IACnCkd,GAAQ,WAAajP,KAAKC,UAAUpO,EAAOE,gBAAgB,GAG5CjK,EAAE,qBAAqB,EAAEK,KAAK,WAAW,GAExDonB,GADJznB,EAAE,2BAA2B,EAAEmZ,KAAK,UAAW,EAAI,EACjCnZ,EAAE,8BAA8B,EAAEU,IAAI,GAAKV,EAAE,+BAA+B,EAAEK,KAAK,cAAc,GAAKL,EAAE,+BAA+B,EAAEiH,KAAK,qDAAqD,EAAEsG,KAAK,GAC5NvN,EAAE,qBAAqB,EAAEuN,KAAK+Z,CAAY,EAC1CtnB,EAAE,WAAW,EAAEU,IAAIymB,CAAI,EACvBnnB,EAAE,eAAe,EAAEU,IAAIV,EAAE,2BAA2B,EAAEoS,KAAK,CAAC,EAE5D8U,EAAcxmB,IAAI+mB,EAAc,IAAMP,EAAc7mB,KAAK,cAAc,CAAC,CAC5E,CAAC,CACL,EAEAggB,gBAAiB,WACbrgB,EAAE,aAAa,EAAEojB,GAAG,SAAU,SAAUhU,GACpCA,EAAE2V,eAAe,EAEb3e,gBAAgBga,8BAChBlY,EAAUN,cAAc,YAAY,EAEpCyY,EAAgB,CAExB,CAAC,CACL,EAEAqH,2BAA4B,YACpBxc,EAAME,cAAgBpL,EAAE,iBAAiB,EAAEM,UACtCyJ,EAAOU,iBACRzK,EAAE,6BAA6B,EAAEqN,SAAS,QAAQ,EAClDlF,EAAOK,gBAAgB6E,SAAS,QAAQ,EACxCrN,EAAE,eAAe,EAAEqN,SAAS,QAAQ,EAEpClF,EAAOe,oBAAoBvB,KAAK,WAAY,EAAI,GAGpD3H,EAAE,WACEmI,EAAOwB,sBAAsByH,KAAK,WAC9B,IAAI4J,EAAShb,EAAER,IAAI,EAAEyH,KAAK,iBAAiB,EAEvC+T,EAAO1a,QACPN,EAAER,IAAI,EAAEyH,KAAK,QAAQ,EAAEvG,IAAIsa,EAAOta,IAAI,CAAC,EAAE6M,KAAKyN,EAAOzN,KAAK,CAAC,CAEnE,CAAC,EAEGpF,EAAOuB,kBAAkBpJ,QACzB6H,EAAOuB,kBAAkB0H,KAAK,SAAUoD,EAAOiB,GAC3C1L,EAAOS,sBAAwB,GAl2CvD,SAASmd,EAAkBrV,GACnBA,EAAG2E,KAAK,GAAK3E,EAAG2E,KAAK,EAAE3D,SAAS,UAAU,IAI1C+H,EAAa/I,EAAG2E,KAAK,CAAC,EACtB0Q,EAAkBrV,EAAG2E,KAAK,CAAC,EAEnC,EA41C0CjX,EAAER,IAAI,CAAC,EAErBQ,EAAEyV,CAAE,EAAEnC,SAAS,QAAQ,GACvBtT,EAAEyV,CAAE,EAAExO,KAAK,QAAQ,EAAEmS,QAAQ,QAAQ,CAE7C,CAAC,EAGLrP,EAAOS,sBAAwB,GAE3BU,EAAMG,WACNlD,EAAOmB,qBAAqB5I,IAAIwK,EAAMG,SAAS,EAEnDlD,EAAOmB,qBAAqB8P,QAAQ,QAAQ,EAExClO,EAAMI,gBAAkBJ,EAAMI,eAAehL,SACzCsnB,EAAcC,oBAAoB3c,EAAMI,eAAiB,IAAIvJ,QAAQ,MAAO,KAAK,CAAC,EACtF/B,EAAE,iBAAiB,EAAEU,IAAIknB,CAAW,EACpC5nB,EAAE,uBAAuB,EAAEqN,SAAS,QAAQ,GAG5CnC,EAAMK,aACFuc,EAAgBD,oBAAoB3c,EAAMK,WAAa,IAAIxJ,QAAQ,MAAO,KAAK,CAAC,EACpFgI,EAAOE,iBAAmBiO,KAAKM,MAAMsP,CAAa,EAE9CC,EAAmB/nB,EAAE,uBAAuB,EAEhDlC,OAAO6H,KAAKoE,EAAOE,gBAAgB,EAAErE,QAAQ,SAAU8T,GACnD,IAAIsO,EAAgBD,EAAiB9gB,KAAK,oCAAsCyS,EAAa,GAAG,EAChGsO,EAAcza,KAAKya,EAAcza,KAAK,EAAIkM,EAAqBC,CAAU,CAAC,CAC9E,CAAC,GAfL,IAUQqO,EASJE,EAA0BjoB,EAAE,+DAA+D,EAAEoT,OAAO,WACpG,MAAO,CAACpT,EAAER,IAAI,EAAEyH,KAAK,0CAA0C,EAAEU,KAAK,IAAI,GAAK,CAAC3H,EAAER,IAAI,EAAEyH,KAAK,gCAAgC,EAAEU,KAAK,IAAI,CAC5I,CAAC,EAAE,GAGCsgB,GACArb,EAAa,EACbqO,EAAajb,EAAEioB,CAAuB,EAAE5nB,KAAK,eAAe,CAAC,GACtDL,EAAE,wEAAwE,EAAEM,SACnFsM,EAAa,EACbqO,EAAajb,EAAE,wEAAwE,EAAE2a,KAAK,EAAEta,KAAK,eAAe,CAAC,EAE7H,CAAC,EAET,EAEA6nB,oBAAqB,WACjBloB,EAAEsG,QAAQ,EAAE6hB,MAAM,WACd,IAAIC,EAAYjgB,EAAOc,iBAAiB5I,KAAK,iBAAiB,EAE1D8H,EAAOc,kBAAoBmf,GAAaA,EAAUrX,QAAQzQ,QAC1D8nB,EAAUrX,QAAQnL,QAAQ,SAAU6P,EAAIjB,GAChC6T,EAAYD,EAAUrX,QAAQyD,GAAOxT,MAAM,IAAI,EAAE,GACjDsnB,EAAmBtoB,EAAE,gDAAkDqoB,EAAY,IAAI,EAE3FC,EAAiBjb,SAAS,kBAAkB,EAC5Cib,EAAiBrhB,KAAK,QAAQ,EAAE4O,WAAW,UAAU,EACrDyS,EAAiBrhB,KAAK,yBAAyB,EAAEsG,KAAK,GAAG,CAC7D,CAAC,EAEDpF,EAAO2B,aAAamT,MAAM,MAAM,EAChC9U,EAAOe,oBAAoBvB,KAAK,WAAY,EAAI,GACzCQ,EAAOc,kBAAoBmf,GAAaA,EAAUG,uBAAuBjoB,OAChF8nB,EAAUG,uBAAuB3iB,QAAQ,SAAU6P,EAAIjB,GAC/C6T,EAAYD,EAAUG,uBAAuB/T,GAAOxT,MAAM,IAAI,EAAE,GAChEsnB,EAAmBtoB,EAAE,gDAAkDqoB,EAAY,IAAI,EAE3FC,EAAiBrhB,KAAK,QAAQ,EAAE4O,WAAW,UAAU,EACrDyS,EAAiBrhB,KAAK,yBAAyB,EAAEsG,KAAK,GAAG,CAC7D,CAAC,EACMxD,EAAOU,iBACdtC,EAAOe,oBAAoBvB,KAAK,WAAY,EAAK,EACjD+T,EAAiB,GAGjBvT,EAAOc,kBAAoBd,EAAOc,iBAAiB5I,KAAK,oBAAoB,GAC5E8H,EAAO2B,aAAamT,MAAM,MAAM,CAExC,CAAC,CACL,EACAuL,UAAW,WACPxoB,EAAEsG,QAAQ,EAAE8c,GAAG,QAAS,gDAAiD,WACrE,IAAIqF,EACAtd,EAAM,KAKVA,GAFAnL,EAAE,MAAM,EAAEoZ,QAAQ,0BAA2B5Z,IAAI,EAE3CQ,EAAE,4BAA4B,EAAEuN,KAAK,GASvC1G,GAPoB7G,EAAER,IAAI,EAAEiT,QAAQ,iBAAiB,EAClCnS,QACCN,EAAER,IAAI,EAAEiT,QAAQ,oBAAoB,EAAExL,KAAK,iBAAiB,EAGpFwhB,EAAezoB,EAAE,oBAAoB,EAAE2H,KAAK,QAAQ,EAEzC,CACPwD,IAAKA,EACLud,QAfU,KAgBVtB,SAAUjf,EAAOmB,qBAAqB5I,IAAI,CAC9C,GAYIioB,GAVC3oB,EAAE,cAAc,EAAEM,OAGnBuG,EAAKkK,SAp1BbA,EAAU/Q,EAAE,eAAe,EAAE2f,IAAI,WACjC,IAAIpO,EAAWvR,EAAER,IAAI,EAAEa,KAAK,aAAa,EACrC6Q,EAAkBlR,EAAER,IAAI,EAAEa,KAAK,OAAO,EAC1C,MAAO,CACHkR,SAAUqO,OAAOrO,CAAQ,EACzBL,gBAAiB0O,OAAO1O,CAAe,CAC3C,CACJ,CAAC,EAAE4O,QAAQ,EACJ5H,KAAKC,UAAUpH,CAAO,GA00BjBlK,EAAKkK,QAAU2O,EAAW,EAKzB5S,EAAW/C,EAAOE,gBAAgB,IACnCpD,EAAK+hB,cAAgB7I,GAAqB,GAG/B/f,EAAE,+CAA+C,GAE5D2oB,IACA9hB,EAAKgE,SAAW8d,EAASpb,KAAK,GAK9Bkb,GACAzoB,EAAE4X,KAAK,CACH3R,IAAKwiB,EACLzQ,OAAQ,OACR3X,KAAMwG,EACN6Z,QAAS,SAAUrgB,GAx1BvC,IAA2BwoB,EAEnBC,EAFmBD,EAy1BexoB,EAx1BtCL,EAAE,WAAW,EAAEoZ,QAAQ,eAAgByP,CAAQ,EAC3CC,EAAcD,EAASjI,MAAQ,eAAiB,gBACF,cAA9ChgB,OAAOwF,gBAAgB2iB,oBAAsCF,EAASG,kBAAoBhpB,EAAEY,MAAM,EAAEqoB,WAAW,EAAI3lB,aAAaC,GAAGuB,QAEnI9E,EAAE,iBAAiB,EAAE+Y,OAAO,EAC5B/Y,EAAE,MAAM,EAAE8P,OAAO+Y,EAASG,gBAAgB,EAAE3b,SAAS,QAAQ,EAC7DrN,EAAE,iBAAiB,EAAEid,MAAM,MAAM,EAEjCjd,EAAE,uCAAuC,EAAEojB,GAAG,QAAS,WACnDpjB,EAAE,iBAAiB,EAAEid,MAAM,MAAM,CACrC,CAAC,GACoD,iBAA9Crc,OAAOwF,gBAAgB2iB,mBAC9B/oB,EAAE,WAAW,EAAEoZ,QAAQ,cAAeyP,CAAQ,GAGJ,IAAtC7oB,EAAE,uBAAuB,EAAEM,QAC3BN,EAAE,MAAM,EAAE8P,OACN,0CACJ,EAGJ9P,EAAE,uBAAuB,EAAE8P,OACvB,qBAAuBgZ,EAAc,kDACnCD,EAASK,QACT,QACN,EAEApL,WAAW,WACP9d,EAAE,sBAAsB,EAAEwW,MAAM,EAAE9I,QAAQ,WACtClO,KAAKuZ,OAAO,CAChB,CAAC,CACL,EAAGzV,aAAa6lB,YAAY,GA2zBZnpB,EAAE,MAAM,EAAEoZ,QAAQ,yBAA0B/Y,CAAI,EAEhDL,EAAEugB,QAAQ,EAAEI,KAAK,CACrB,EACAC,MAAO,WACH5gB,EAAEugB,QAAQ,EAAEI,KAAK,CACrB,CACJ,CAAC,CAET,CAAC,CACL,EAEAyI,WAAY,WACRppB,EAAE,MAAM,EAAEojB,GAAG,QAAS,uBAAwB,SAAUhU,GACpDA,EAAE2V,eAAe,EAEjB,IAAIsE,EAAmBrpB,EAAER,IAAI,EAAEa,KAAK,oBAAoB,EACpDipB,EAAmBnhB,EAAOmB,qBAAqB5I,IAAI,EACnDioB,EAAW3oB,EAAE,+CAA+C,EAE5DupB,EAAOvpB,EAAER,IAAI,EAAEa,KAAK,MAAM,EAE1BwG,EAAO,CACP0iB,KAAMA,EACNpe,IAAKnL,EAAE,4BAA4B,EAAEuN,KAAK,EAC1C6Z,SAAUkC,CACd,EACAziB,EAAKkK,QAAU2O,EAAW,EAEtB6J,IACA1iB,EAAK0iB,KAAOA,GAGZZ,IACA9hB,EAAKgE,SAAW8d,EAASpb,KAAK,GAG7BT,EAAW/C,EAAOE,gBAAgB,IACnCpD,EAAK+hB,cAAgB7I,GAAqB,GAG1CsJ,IACArpB,EAAEugB,QAAQ,EAAEC,MAAM,EAClBxgB,EAAE4X,KAAK,CACH3R,IAAKojB,EACL/pB,KAAM,OACNe,KAAMwG,EACNoR,SAAU,OACVyI,QAAS,SAAUrgB,GACfL,EAAE,MAAM,EAAEoZ,QAAQ,qBAAsB/Y,CAAI,EACxCA,EAAK0gB,cACLngB,OAAOC,SAASua,KAAO/a,EAAK0gB,aAEhC/gB,EAAEugB,QAAQ,EAAEI,KAAK,CACrB,EACAC,MAAO,WACH5gB,EAAEugB,QAAQ,EAAEI,KAAK,CACrB,CACJ,CAAC,EAET,CAAC,CACL,EAEA6I,qBAAsB,WAClBzL,EAAmB,EAEnB/d,EAAE,gCAAgC,EAAEojB,GAAG,QAAS,WACzB,SAAf5jB,KAAKnB,OACL2N,EAAa+F,GAAG,CAAC,CAAC,EAAEzE,YAAY,eAAe,EAC/CtB,EAAa+F,GAAG,CAAC,CAAC,EAAEzE,YAAY,eAAe,EAC/CtB,EAAa+F,GAAG,CAAC,CAAC,EAAEzE,YAAY,eAAe,EAC/CtB,EAAa+F,GAAG,CAAC,EAAE1E,SAAS,eAAe,EAC3CrB,EAAa+F,GAAG,CAAC,EAAE1E,SAAS,eAAe,EAC3CrB,EAAa+F,GAAG,CAAC,EAAE1E,SAAS,eAAe,EAC3CnB,EAAcoB,YAAY,QAAQ,EAClCnB,EAAckB,SAAS,QAAQ,EAC/BpB,EAAUqB,YAAY,eAAe,EACrCtN,EAAE,sBAAsB,EAAEoS,KAAK,eAAe,GAE9C2L,EAAmB,CAE3B,CAAC,CACL,EAEA0L,eAAgB,WACZthB,EAAOuB,kBAAkB0H,KAAK,WAC1BuL,EAAS+M,QAAQ1pB,EAAER,IAAI,EAAE4Q,SAAS,kBAAkB,EAAE,GAAI,CACtDuZ,WAAY,GACZC,gBAAiB,CAAC,QACtB,CAAC,CACL,CAAC,CACL,EAEAC,wBAAyB,WACrB7pB,EAAEsG,QAAQ,EAAE8c,GAAG,QAAS,0CAA2C,WAC/D,IAliEJ0G,EAkiEQC,EAAQ/pB,EAAER,IAAI,EAAEimB,QAAQ,4BAA4B,EACpD7M,EAAUmR,EAAM9iB,KAAK,QAAQ,EAC7B+iB,EAAc,IAAIC,gBAAgB3jB,SAASzF,SAASC,MAAM,EAE9D8X,EAAQlY,IAAIlB,KAAKgR,QAAQC,SAAS,EAClCsZ,EAAM9iB,KAAK,QAAQ,EAAEvG,IAAIkY,EAAQlY,IAAI,CAAC,EAAE6M,KAAKqL,EAAQlY,IAAI,CAAC,EAE1D4W,EAA8B,EAxiEzB,EADTwS,EAAUxjB,SAAS4jB,iBAAiB,0BAA0B,GAC5C5pB,SAGlBwpB,EAAUK,MAAMC,KAAKN,CAAO,GAEXO,MAAM,SAAA5U,GACfwD,EAAMxD,EAAG+P,cAAc,gBAAgB,EAE3C,MAAO,WAAWvW,KAAKgK,EAAI5a,KAAK,CACpC,CAAC,GAmiEOkZ,EAAU,CACNpM,IAAK6e,EAAY/rB,IAAI,KAAK,EAC1BqsB,WAAYtqB,EAAE,+CAA+C,EAAE8f,QAAQ,EAAEH,IAAI,SAAAlK,GACzE,MAAO,CAAEiD,OAAQ1Y,EAAEyV,CAAE,EAAEpV,KAAK,QAAQ,EAAGkqB,QAAS9U,EAAGpX,KAAM,CAC7D,CAAC,CACL,EAEA2B,EAAE4X,KAAK,CACH3R,IAAKrF,OAAOiX,KAAK2S,yBACjBzS,QAAS,CAAE,eAAgB,kBAAmB,EAC9CC,OAAQ,OACRC,SAAU,OACV5X,KAAM6X,KAAKC,UAAUZ,CAAO,EAC5B/Q,MAAO,EACX,CAAC,EACA4R,KAAK,SAAA/X,GACEA,GACAL,EAAE4X,KAAK,CACH3R,IAAKrF,OAAOiX,KAAK4S,4BACjBpqB,KAAM,CAAE8K,IAAK9K,EAAKoM,EAAG,EACrBwL,SAAU,OACVzR,MAAO,EACX,CAAC,EACI4R,KAAK,SAAAsS,GACF,IAnjCxBlL,EACAC,EAojCwBnZ,SAAS4jB,iBAAiB,mCAAmC,EAAEtkB,QAAQ,SAAA6P,GACnEA,EAAGsD,OAAO,CACd,CAAC,EAED/Y,EAAE0qB,CAAM,EAAEC,YAAY,2CAA2C,GAEvD,uBAAuB1b,KAAKpO,SAASwgB,QAAQ,EAAIrhB,EAAE,4CAA4C,EAAIA,EAAE,4CAA4C,EAAE+R,GAAG,CAAC,GACzJX,KAAK,SAACE,EAAK2H,GACfoC,EAAarb,EAAEiZ,CAAG,CAAC,CACvB,CAAC,EAGD3S,SAAS4jB,iBAAiB,oDAAoD,EAAEtkB,QAAQ,SAAA6P,GACpFkH,EAAS+M,QAAQjU,EAAI,CACjBkU,WAAY,GACZC,gBAAiB,CAAC,QACtB,CAAC,CACL,CAAC,EAGD5pB,EAAEsG,QAAQ,EAAE8S,QAAQ,sBAAsB,EAC1CmG,EAA8B,EAvkC1Dvf,EAAE,4BAA4B,EAAEoR,KAAK,SAAUoD,EAAOpS,GAClD,IAAI/B,EAAOL,EAAEoC,CAAO,EAAE/B,KAAK,eAAe,EAEtCA,GAAQA,EAAKoR,SACTqH,EAAgBzY,EAAKoR,OAAOxK,KAAK,SAAUvG,GAAO,OAAOA,EAAIwY,QAAU,CAAC,GAAK,OAC5DJ,EAAc7Z,eAAe,aAAa,IAC3DugB,EAAW1G,EAAcsD,YAAYnd,eAAe,SAAS,EAAI6Z,EAAcsD,YAAYC,QAAU,GACrGoD,EAAW3G,EAAcsD,YAAYnd,eAAe,SAAS,EAAI6Z,EAAcsD,YAAY5G,QAAU,IAIzGgK,GAA8B,EAAlBA,EAASlf,QACrBN,EAAEoR,KAAKoO,EAAU,SAAUlO,EAAKmE,GACJjJ,EAAsBiJ,CAAE,EAC9BnI,YAAY,QAAQ,CAC1C,CAAC,EAGDmS,GAA8B,EAAlBA,EAASnf,QACrBN,EAAEoR,KAAKqO,EAAU,SAAUnO,EAAKmE,GACJjJ,EAAsBiJ,CAAE,EAC9BpI,SAAS,QAAQ,CACvC,CAAC,CAET,CAAC,EAkjC2BuL,EAAQQ,QAAQ,QAAQ,EAExBrP,EAAOO,gBAAkB,GAGzBnC,EAAOe,oBAAoBvB,KAAK,WAAY,EAAI,EAGhD+T,EAAiB,CACrB,CAAC,EACAkP,KAAK,WACFziB,EAAO2B,aAAamT,MAAM,MAAM,CACpC,CAAC,EAGL5c,IACA8H,EAAOC,cAAc/H,KAAK,cAAe,CAACA,EAAKqX,aAAamT,UAAUvb,OAAOjP,EAAK0Q,OAAO,CAAC,EAC1FnQ,OAAO8W,aAAa6C,gBAAkBva,EAAEC,OAAOW,OAAO8W,aAAa6C,gBAAiBla,CAAI,EACxFhB,EAAQ,EAAgB,EAAE6kB,qBAAqB,EAEvD,CAAC,IA1oDjB,SAAS4G,EAAiBxY,EAAI3U,GAC1B,IAAIotB,EAAezY,EAAGlC,SAAS,0BAA0B,EAAEA,SAAS,gBAAgB,EAChF4a,EAAkC,KAAvBD,EAAarqB,IAAI,EAC5B/C,IAASgI,EAAKiF,WAAc0H,EAAGgB,SAAS,UAAU,GAClDgI,EAAchJ,CAAE,EAEhB0Y,IACAD,EAAarqB,IAAI,EAAE,EACnBqqB,EAAajV,OAAO,GAEpBxD,EAAG2E,KAAK,GAAK3E,EAAG2E,KAAK,EAAE3D,SAAS,2BAA2B,GAC3DwX,EAAiBxY,EAAG2E,KAAK,CAAC,CAElC,EA+nDiC8S,EAAM9S,KAAK,EAAGtR,EAAKiF,SAAS,EAC7CgO,EAAQQ,QAAQ,QAAQ,EAEhC,CAAC,CACL,EAEA4F,0BAA2BA,CAC/B,C","file":"cartridges/app_urbanelectric/cartridge/static/default/js/configurator.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\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\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\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 188);\n","'use strict';\n\nvar carouselConfig = require('../config/carousel');\n\n/**\n * @package Blueacorn/Carousel\n * @version 1.0\n * @author Jamie Smith \n * @copyright Copyright © 2019 Blue Acorn.\n * @param {string} type - type of carousel to load, pulled from carousel.js config\n * @param {string} selector - selector class used to overwrite the carousel config selector value\n * @return {Object} Carousel\n */\nmodule.exports = function (type, selector) {\n this.type = type;\n this.selector = selector || null;\n this.$element = null;\n this.config = {};\n\n this.settings = {\n moduleName: 'Carousel',\n initialized: false\n };\n\n this.setConfig = function (config) {\n var newConfig = {};\n if (typeof this.type === 'string') {\n newConfig = $.extend(config, carouselConfig.defaultSettings, carouselConfig[this.type].settings);\n } else {\n newConfig = $.extend(config, carouselConfig.defaultSettings);\n }\n\n this.config = newConfig;\n };\n\n this.init = function () {\n this.initialized = true;\n\n if (typeof this.type === 'string' && carouselConfig.hasOwnProperty(this.type) && !this.selector) {\n this.$element = $(carouselConfig[type].selector);\n } else if (typeof this.type === 'string' && carouselConfig.hasOwnProperty(this.type) && this.selector) {\n this.$element = $(this.selector);\n }\n\n return this;\n };\n\n this.activate = function () {\n if (!this.initialized) {\n this.init();\n }\n\n if (this.$element.data('carouselEnabled') === false || this.$element.length <= 0) {\n return;\n }\n\n this.setConfig(this.config);\n\n this.$element.slick(this.config);\n };\n\n return this.init();\n};\n","module.exports = {\n getParameter: function (paramName) {\n var searchString = window.location.search.substring(1),\n i,\n val,\n params = searchString.split('&');\n\n for (i = 0; i < params.length; i++) {\n val = params[i].split('=');\n\n if (val[0] === paramName) {\n return val[1];\n }\n }\n return null;\n },\n removeParam: function (key, sourceURL) {\n var rtn = sourceURL.split('?')[0],\n param,\n paramsArr = [],\n queryString = (sourceURL.indexOf('?') !== -1) ? sourceURL.split('?')[1] : '';\n if (queryString !== '') {\n paramsArr = queryString.split('&');\n for (var i = paramsArr.length - 1; i >= 0; i -= 1) {\n param = paramsArr[i].split('=')[0];\n if (param === key) {\n paramsArr.splice(i, 1);\n }\n }\n rtn = rtn + '?' + paramsArr.join('&');\n }\n return rtn;\n },\n updateQueryStringParameter: function (uri, key, value) {\n var re = new RegExp('([?&])' + key + '=.*?(&|$)', 'i');\n var separator = uri.indexOf('?') !== -1 ? '&' : '?';\n if (uri.match(re)) {\n return uri.replace(re, '$1' + key + '=' + value + '$2');\n }\n return uri + separator + key + '=' + value;\n },\n\n arraymove: function (arr, fromIndex, toIndex) {\n var element = arr[fromIndex];\n arr.splice(fromIndex, 1);\n arr.splice(toIndex, 0, element);\n }\n};\n","'use strict';\n\nmodule.exports = {\n defaultSettings: {\n dots: false,\n infinite: false,\n mobileFirst: true,\n arrows: true,\n adaptiveHeight: true\n },\n pdpImageCarousel: {\n selector: '.variation-simple .primary-images .carousel.main',\n settings: {\n infinite: true,\n slidesToShow: 1,\n dots: false,\n fade: true,\n slidesToScroll: 1\n }\n },\n pdpProductSetImageCarousel: {\n selector: '.set-item .primary-images .carousel.main',\n settings: {\n infinite: false,\n slidesToShow: 1,\n dots: true,\n fade: true,\n slidesToScroll: 1\n }\n },\n pdpImageThumbnailsCarousel: {\n selector: '.variation-simple .primary-images .carousel.thumbnails',\n settings: {\n infinite: false,\n slidesToShow: 4,\n slidesToScroll: 1,\n asNavFor: '.variation-simple .primary-images .carousel.main',\n variableWidth: true,\n focusOnSelect: true\n }\n },\n bundleImageCarousel: {\n selector: '.product-detail.bundle .primary-images .carousel.main',\n settings: {\n infinite: false,\n slidesToShow: 1,\n dots: true,\n fade: true,\n slidesToScroll: 1,\n responsive: [\n {\n breakpoint: globalConfig.bp.large,\n settings: {\n asNavFor: '.product-detail.bundle .primary-images .carousel.thumbnails',\n dots: false,\n arrows: false\n }\n }\n ]\n }\n },\n bundlepdpImageThumbnailsCarousel: {\n selector: '.product-detail.bundle .primary-images .carousel.thumbnails',\n settings: {\n infinite: false,\n slidesToShow: 4,\n slidesToScroll: 1,\n asNavFor: '.product-detail.bundle .primary-images .carousel.main',\n variableWidth: true,\n focusOnSelect: true\n }\n },\n editModalImageCarousel: {\n selector: '#edickViewModal .primary-images .carousel.main',\n settings: {\n infinite: false,\n slidesToShow: 1,\n dots: true,\n fade: true,\n slidesToScroll: 1\n }\n },\n bonusImageCarousel: {\n selector: '#chooseBonusProductModal .carousel.main',\n settings: {\n infinite: false,\n slidesToShow: 1,\n dots: false,\n fade: true,\n slidesToScroll: 1\n }\n },\n quickViewImageCarousel: {\n selector: '#quickViewModal .primary-images .carousel.main',\n settings: {\n infinite: false,\n slidesToShow: 1,\n dots: true,\n fade: true,\n slidesToScroll: 1\n }\n },\n productTileCarousel: {\n selector: '.product-listing.slider',\n settings: {\n slidesToShow: 2,\n slidesToScroll: 1,\n responsive: [\n {\n breakpoint: globalConfig.bp.small,\n settings: {\n slidesToShow: 3,\n slidesToScroll: 2\n }\n },\n {\n breakpoint: globalConfig.bp.large,\n settings: {\n slidesToShow: 4,\n slidesToScroll: 3\n }\n }\n ]\n }\n },\n featureCarousel: {\n selector: '.carousel.feature-slider',\n settings: {\n infinite: true,\n dots: true,\n customPaging: function (slider, i) {\n return (i + 1) + ' / ' + slider.$slides.length;\n }\n }\n },\n heroBannerCarouselAutoplay: {\n selector: '.carousel.page-builder:not(\".autoplay\")',\n settings: {\n infinite: true,\n fade: true,\n speed: 1000,\n cssEase: 'ease-in-out',\n touchThreshold: '50',\n autoplay: false,\n autoplaySpeed: 4000,\n adaptiveHeight: false\n }\n },\n heroBannerCarousel: {\n selector: '.carousel.page-builder.autoplay',\n settings: {\n infinite: true,\n fade: true,\n speed: 1000,\n cssEase: 'ease-in-out',\n touchThreshold: '50',\n autoplay: true,\n pauseOnHover: false,\n autoplaySpeed: 4000,\n adaptiveHeight: false\n }\n },\n imageZoomCarousel: {\n selector: '.carousel.image-zoom',\n settings: {\n infinite: false,\n slidesToShow: 1,\n fade: true,\n slidesToScroll: 1,\n dots: false\n }\n },\n topBannerPlpCarousel: {\n selector: '.carousel.banner-custom-carousel',\n settings: {\n infinite: true,\n slidesToShow: 1,\n fade: true,\n slidesToScroll: 1,\n dots: false\n }\n },\n portfolioCarousel: {\n selector: '.carousel.portfolio-carousel',\n settings: {\n slidesToShow: 1,\n infinite: true,\n dots: false,\n mobileFirst: true,\n arrows: false,\n focusOnSelect: false,\n variableWidth: true,\n asNavFor: '.carousel.portfolio-modal-carousel',\n responsive: [\n {\n breakpoint: globalConfig.bp.medium,\n settings: {\n slidesToShow: 3,\n arrows: true,\n variableWidth: true\n }\n },\n {\n breakpoint: globalConfig.bp.xlarge,\n settings: {\n slidesToShow: 4,\n arrows: true,\n variableWidth: false\n }\n }\n ]\n }\n },\n portfolioModalCarousel: {\n selector: '.carousel.portfolio-modal-carousel',\n settings: {\n infinite: true,\n slidesToShow: 1,\n fade: true,\n speed: 1,\n slidesToScroll: 1,\n responsive: [\n {\n breakpoint: globalConfig.bp.large,\n settings: {\n swipe: false\n }\n }\n ]\n }\n },\n pdpLifestyleGalleryCarousel: {\n selector: '.lifestyle-gallery',\n settings: {\n infinite: true,\n slidesToShow: 2,\n slidesToScroll: 1,\n dots: false,\n responsive: [\n {\n breakpoint: globalConfig.bp.medium,\n settings: {\n slidesToShow: 3,\n slidesToScroll: 1\n }\n }\n ]\n }\n },\n pdpLifestyleGalleryModalCarousel: {\n selector: '.lifestyle-gallery-modal',\n settings: {\n infinite: true,\n slidesToShow: 1,\n slidesToScroll: 1,\n dots: false,\n adaptiveHeight: true,\n speed: 1,\n fade: true,\n responsive: [\n {\n breakpoint: globalConfig.bp.large,\n settings: {\n swipe: false\n }\n }\n ]\n }\n },\n productConfiguratorSwatches: {\n selector: '.swatch-slider',\n settings: {\n infinite: true,\n slidesToShow: 1,\n slidesToScroll: 1,\n speed: 300,\n dots: false,\n adaptiveHeight: true,\n fade: true\n }\n },\n gridComponentCarousel: {\n selector: '.gridcomponentcarousel',\n settings: {\n infinite: true,\n slidesToShow: 2,\n slidesToScroll: 1,\n dots: false,\n speed: 750,\n arrows: true,\n autoplay: true,\n pauseOnHover: false,\n autoplaySpeed: 4000,\n responsive: [\n {\n breakpoint: globalConfig.bp.medium,\n settings: {\n slidesToShow: 3,\n slidesToScroll: 1\n }\n }\n ]\n }\n }\n};\n","'use strict';\nvar processInclude = require('base/util');\n\n$(function () {\n processInclude(require('./components/configurator'));\n});\n\n","'use strict';\n\nmodule.exports = function (include) {\n if (typeof include === 'function') {\n include();\n } else if (typeof include === 'object') {\n Object.keys(include).forEach(function (key) {\n if (typeof include[key] === 'function') {\n include[key]();\n }\n });\n }\n};\n","/* eslint-disable */\n(function (window) {\n window.recaptchaData = window.recaptchaData || {};\n window.recaptchaData.recaptchaEventsHolder = window.recaptchaData.recaptchaEventsHolder || {};\n window.recaptchaData.recaptchaCallbacksArr = window.recaptchaData.recaptchaCallbacksArr || [];\n\n window.onRecaptchaLoad = function () {\n var recaptchaCallbacksArr = window.recaptchaData.recaptchaCallbacksArr;\n for (var i = 0; i < recaptchaCallbacksArr.length; i += 1) {\n if (typeof recaptchaCallbacksArr[i] === 'function') {\n recaptchaCallbacksArr[i]();\n }\n }\n\n window.recaptchaData.recaptchaCallbacksArr = [];\n };\n}(window));\n/* eslint-enable */\n\nmodule.exports = {\n init: function () {\n if (!window.grecaptcha) {\n var url = window.SitePreferences.RECAPTCHA_API_URL;\n var script = document.createElement('script');\n\n script.type = 'text/javascript';\n script.async = true;\n script.src = url;\n document.getElementsByTagName('head')[0].appendChild(script);\n }\n },\n\n attach: function (form, callback, invisible) {\n var $holder = form.find('.js-recaptcha-input')[0];\n var recaptchaData = {\n sitekey: window.SitePreferences.RECAPTCHA_SITE_KEY,\n callback: typeof callback === 'function' ? callback : null\n };\n\n if (invisible) {\n recaptchaData.theme = 'light';\n recaptchaData.size = 'invisible';\n recaptchaData.badge = 'bottomright';\n recaptchaData.isolated = true;\n }\n window.recaptchaData.recaptchaCallbacksArr.push(function () {\n var holderId = window.grecaptcha.render($holder, recaptchaData);\n window.recaptchaData.recaptchaEventsHolder[form.attr('name')] = holderId;\n });\n\n window.onRecaptchaLoad();\n },\n\n showReCaptcha: function (formName) {\n if (window.grecaptcha && formName && formName in window.recaptchaData.recaptchaEventsHolder) {\n window.grecaptcha.execute(window.recaptchaData.recaptchaEventsHolder[formName]);\n }\n },\n\n reset: function (form) {\n window.grecaptcha.reset(window.recaptchaData.recaptchaEventsHolder[form.attr('name')]);\n }\n\n};\n","'use strict';\n\n// const { outputJSON } = require('fs-extra');\n// const configurator = require('../../../../models/configurator');\nvar Carousel = require('./carousel'),\n utils = require('../components/utils'),\n recaptcha = require('../components/reCaptcha');\n\n// DOM Elements\nvar $cache = {\n tileContainer: $('.display-tile-container'),\n swatchTooltip: $('.main-swatch-tooltip-icon'),\n resultImage: $('.configurator-results-image'),\n panelTitle: $('.panel-title'),\n sidemarkWrapper: $('.sidemark-popup-wrapper'),\n sidemarkPlaceholder: $('.sidemark-placeholder'),\n sidemarkInput: $('.sidemark-input'),\n mailHelpSection: $('.modal-contact-info'),\n overallHeightDropdown: $('.overall-height-select'),\n optionDescription: $('.config-option-description'),\n resultValue: $('.result-value'),\n swatchSlider: $('.swatch-slider'),\n dropdownsWrapper: $('.dropdowns-wrapper'),\n configuratorForm: $('.configurator-form'),\n saveConfiguratorBtn: $('.save-configurator'),\n editNotLoggedinPopup: $('#editNotLoggedinPopup'),\n priceSummaryFigure: $('.configurator-summary-figure'),\n optionName: $('.config-option-name'),\n configuratorQuantity: $('.configurator-quantity'),\n modalAnimationBackground: $('.modal-animation-background'),\n panelModal: $('#panel-modal'),\n swatchModal: $('#swatch-modal'),\n dropdownContainer: $('.custom-dropdown-container'),\n variationDropdownCtnr: $('.custom-dropdown-container.variation'),\n resultsWrapper: $('.configurator-results-wrapper'),\n configuratorPageWrapper: $('.configurator-page'),\n invalidPopup: $('#invalidOptionPopup')\n};\n\n// Dynamic product configurator items that can be changed due to events\nvar global = {\n shareConfObj: {},\n shareCustomForms: {},\n popupSwatchImages: [],\n activateSliderId: '',\n itemPriceVal: '',\n swatchPrice: '',\n isSubmitPressed: false,\n isSwatchSelected: false,\n openCustomSwatchPopup: true,\n isUserLoggedIn: $('.configurator-page').data('is-loggedin'),\n grayBlockSrc: 'https://upload.wikimedia.org/wikipedia/commons/8/86/Solid_grey.svg'\n};\n\n// Keys items\nvar keys = {\n variant: 'variant',\n variation: 'variationKey',\n sidemark: 'sidemark',\n saveAndReview: 'saveAndReview',\n swatch: 'swatch',\n overallHeight: 'oah',\n animationTimeout: 500\n};\n\n// Parameters values\nvar param = {\n pid: utils.getParameter('pid'),\n isSharedLink: utils.getParameter('shared'),\n sharedQty: utils.getParameter('quantity'),\n sharedSidemark: utils.getParameter('sidemark'),\n customForm: utils.getParameter('custom')\n};\n\nvar CONST = {\n CUSTOM_COLOR: {\n POWDER_COAT: 'Powder Coat',\n PAINT_SELECTION: 'Paint Selection',\n COM: 'COM'\n },\n BUTTON_TYPE: {\n DEFAULT: 'default',\n VARIATION: 'variation'\n }\n};\n\n// Com Shade Modal Items\nvar comFormGroup = $('.popup-swatch-comShade .custom-swatch-form .form-group');\nvar comSubmit = $('.popup-swatch-comShade button.save-customPaint');\nvar comBackButton = $('.popup-swatch-comShade button.back-comShade');\nvar comNextButton = $('.popup-swatch-comShade button.next-comShade');\n\n/**\n * format numbers to include commas\n * @param {number} x - number\n * @returns {string} formatted number\n */\nfunction numberWithCommas(x) {\n var parts = x.toString().split('.');\n parts[0] = parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\n return parts.join('.');\n}\n\n/**\n * get active dropdown element\n * @param {string} id - active dropdown id\n * @returns {Object} active dropdown element\n */\nfunction getActiveDropdownById(id) {\n var activeDropdownEl = $('.custom-dropdown-container[data-dropdown-id=\"' + id + '\"]');\n if (!activeDropdownEl.length) {\n activeDropdownEl = $('.custom-dropdown-container[data-dropdown-id=\"variation-' + id + '\"]');\n }\n\n return activeDropdownEl;\n}\n\n/**\n * remove selected id from shareConfObj object\n * @param {string} id - selected id\n */\nfunction deleteIdFromShareConfObj(id) {\n delete global.shareConfObj[id];\n}\n\n/**\n * clears the display\n */\nfunction clearDisplay() {\n $cache.tileContainer.empty();\n}\n\n/**\n * returns true if object is an empty\n * @param {Object} obj - selected id\n * @returns {boolean} is object empty\n */\nfunction isObjEmpty(obj) {\n return !Object.keys(obj).length;\n}\n\n/**\n * updates counter for inputs that have a character limit\n * @param {Object} $el - current input element\n */\nfunction updateCharCounter($el) {\n var charsTyped = $el.val().length;\n var maxChars = $el.attr('maxlength');\n if (charsTyped >= maxChars) {\n $el.siblings('.char-counter').addClass('maxed');\n } else {\n $el.siblings('.char-counter').removeClass('maxed');\n }\n $el.siblings('.char-counter').text(charsTyped + ' / ' + maxChars);\n}\n\n/**\n * show / hide Panel sections according to active display type\n * @param {string} displayType - active dropdown id\n */\nfunction buildPanelView(displayType) {\n if (!$('.display-tile-container').attr('style')) {\n $('.display-tile-container').fadeOut(0);\n }\n\n $cache.overallHeightDropdown.empty();\n $cache.panelTitle.addClass('d-none');\n $('.panel-modal-close-wrapper').find('.configurator-option-title').addClass('d-none');\n $cache.sidemarkWrapper.addClass('d-none');\n $cache.mailHelpSection.addClass('d-none');\n\n switch (displayType) {\n case keys.swatch:\n $cache.panelTitle.removeClass('d-none');\n $('.panel-modal-close-wrapper').find('.configurator-option-title').removeClass('d-none');\n global.popupSwatchImages = [];\n $cache.swatchSlider.empty();\n $cache.swatchSlider.removeClass('slick-initialized slick-slider');\n $cache.tileContainer.addClass('no-top-spacing-mobile');\n break;\n case keys.overallHeight:\n $cache.optionDescription.text('');\n break;\n case keys.sidemark:\n $cache.sidemarkWrapper.removeClass('d-none');\n break;\n case keys.saveAndReview:\n clearDisplay();\n $cache.dropdownsWrapper.addClass('d-none');\n $cache.resultsWrapper.removeClass('d-none');\n $cache.configuratorPageWrapper.addClass('saveand-review-display');\n $cache.resultValue.addClass('d-none');\n break;\n default:\n $cache.mailHelpSection.removeClass('d-none');\n break;\n }\n\n $('.display-tile-container').fadeIn(500);\n}\n\n/**\n * builds out the tile\n * @param {Object} v - option value\n * @param {string} className - class to use for the tile, based on displayType\n * @param {boolean} addParens - add parenthesis on mobile tile display\n * @param {boolean} showMobileCaption - show caption text on mobile tile display\n * @param {string} groupDisplayName - descriptor copy representing the valueGroup display name\n * @returns {Object} newTile DOM element\n */\nfunction buildTile(v, className, addParens, showMobileCaption, groupDisplayName) {\n var newTile = document.createElement('div'),\n imgSrc = '';\n\n if (className && className.includes('variant-tile-item') && v.images.src) {\n imgSrc = v.images.src;\n } else if (v.images && v.images.startImage && v.images.startImage !== 'string') {\n imgSrc = v.images.startImage;\n } else {\n imgSrc = v.swatchImage || v.image;\n }\n\n // create descriptor text\n if (groupDisplayName) {\n var displayName = document.createElement('div');\n displayName.textContent = groupDisplayName;\n displayName.classList.add('group-display-name');\n newTile.appendChild(displayName);\n }\n\n var tileImage = document.createElement('img');\n tileImage.setAttribute('src', imgSrc || global.grayBlockSrc);\n tileImage.setAttribute('swatch-id', v.id);\n\n if (groupDisplayName) {\n tileImage.classList.add('group-name-image-margin');\n }\n\n if (/^29$/.test(v.optionid) || /^shade$/.test(v.id)) {\n tileImage.addEventListener('load', (e) => {\n e.target.setAttribute('style', `width: ${e.target.naturalWidth}px`);\n });\n }\n\n // create text block\n var textblock = document.createElement('div');\n textblock.classList.add('item-textblock');\n\n // create name\n var tileName = document.createElement('p');\n\n $(tileName).addClass('item-name');\n\n if (v.buttonType === CONST.BUTTON_TYPE.VARIATION && v.value) {\n tileName.textContent = v.value;\n } else {\n tileName.textContent = v.displayValue ? v.displayValue : v.description;\n }\n\n // append image and name\n if (imgSrc) {\n newTile.appendChild(tileImage);\n newTile.setAttribute('class', className);\n } else {\n newTile.setAttribute('class', className + ' d-md-none');\n }\n\n textblock.appendChild(tileName);\n textblock.setAttribute('swatch-id', v.id);\n\n if (v.note && imgSrc) {\n var tileDetails = document.createElement('p');\n\n tileDetails.classList.add('item-note');\n\n if (!addParens) {\n tileDetails.classList.add('remove-parens');\n }\n\n tileDetails.textContent = v.note;\n textblock.append(tileDetails);\n }\n\n if (v.caption && imgSrc) {\n var tileDetailsCaption = document.createElement('p');\n if (showMobileCaption) {\n $(tileDetailsCaption).addClass('item-caption d-block');\n if (!addParens) {\n $(tileDetailsCaption).addClass('remove-parens');\n }\n } else {\n $(tileDetailsCaption).addClass('item-caption d-none d-md-block');\n }\n\n tileDetailsCaption.textContent = v.caption;\n textblock.append(tileDetailsCaption);\n }\n\n if (v.swatchDetails && imgSrc) {\n var tileDetailsSwatch = document.createElement('p');\n $(tileDetailsSwatch).addClass('item-details');\n tileDetailsSwatch.textContent = v.swatchDetails;\n newTile.append(tileDetailsSwatch);\n }\n\n if (v.buttonType) {\n var classList = imgSrc ? ['btn', 'btn-lt-gray', 'select-mobile-option', 'd-md-none'] : ['btn', 'btn-lt-gray', 'select-mobile-option', 'd-md-none', 'no-image-option'],\n hasGroup = !!$(newTile).children('.group-display-name').length,\n tileButton = null;\n\n switch (v.buttonType) {\n case CONST.BUTTON_TYPE.VARIATION:\n tileButton = document.createElement('button');\n\n tileButton.classList.add(...classList);\n tileButton.value = v.value;\n tileButton.dataset.optionVal = v.value;\n tileButton.dataset.attrid = v.id;\n tileButton.textContent = v.displayValue || v.value;\n\n break;\n case CONST.BUTTON_TYPE.DEFAULT:\n tileButton = document.createElement('button');\n\n // Build tile button to be displayed for mobile\n tileButton.classList.add(...classList);\n tileButton.value = v.id;\n tileButton.dataset.optionVal = v.id;\n tileButton.textContent = v.displayValue || newTile.textContent;\n\n break;\n default:\n // noop\n }\n\n if (hasGroup) {\n tileButton.classList.add('group-name-button-margin');\n }\n\n newTile.append(tileButton);\n }\n newTile.append(textblock);\n\n $cache.tileContainer.append(newTile);\n\n return newTile;\n}\n\n/**\n * Creates a list of options for share page\n * @param {Object} prodAttrsJson - json payload of selection data\n * @returns {string} options selected by user\n */\nfunction createOptionsObject(prodAttrsJson) {\n var options = {};\n for (var i = 0; i < prodAttrsJson.length; i++) {\n var item = prodAttrsJson[i];\n item.selectedId = item.selectedValueId;\n options[item.id] = item;\n }\n return options;\n}\n\n/**\n * builds out the design matrix based on user selections\n */\nfunction buildDesignMatrix() {\n var prodAttrsJson = $('.display-tile-container').data('config-data');\n var $matrixItem = '';\n var $matrixItemMobile = '';\n var options = $('.is-shared-page').length ? createOptionsObject(prodAttrsJson) : global.shareConfObj;\n\n var optionOrder = [];\n // applies to configurator SaveAndReview options\n $('.configurator-results-wrapper .result-value').each(function () {\n var opId = $(this).data('result-id');\n optionOrder.push(opId);\n });\n // applies to shared configurator options\n $('.configurator-results-wrapper p.result-list-item').each(function () {\n var opId = $(this).data('result-id');\n if (optionOrder.indexOf(opId) < 0) {\n optionOrder.push(opId);\n }\n });\n\n for (var idx = 0; idx < optionOrder.length; idx++) { // eslint-disable-line\n var optionId = optionOrder[idx].toString();\n if (Object.prototype.hasOwnProperty.call(options, optionId)) {\n var colorId = options[optionId].selectedId;\n if (optionId && colorId) {\n for (var i = 0; i < prodAttrsJson.length; i++) {\n var item = prodAttrsJson[i];\n if (item && item.id && item.id === optionId && item.displayType && item.displayType === 'swatch' && item.values && item.values.length) {\n for (var j = 0; j < item.values.length; j++) {\n var colorObj = item.values[j];\n if (colorId === colorObj.id) {\n $matrixItem += '
' + item.name + ':
' + colorObj.displayValue + '
';\n $matrixItemMobile += '
' + item.name + ':
' + colorObj.displayValue + '
';\n }\n }\n }\n }\n }\n }\n }\n\n var $designMatrix = $('
Design Selections
' + $matrixItem + '
');\n var $designMatrixMobile = $('
Design Selections
' + $matrixItemMobile + '
');\n\n\n if ($('.sidemark-image-container').length) {\n $('.sidemark-image').hide();\n $('.sidemark-image-container').eq(0).prepend($designMatrix);\n $('.sidemark-image-container').eq(1).prepend($designMatrixMobile);\n }\n}\n\n\n/**\n * builds out the tile image display\n * @param {Object} v - currently selected configurator option\n */\nfunction buildAndAppendMainImage(v) {\n /**\n * ECOMM-511: Product Configurator. Per ticket Added d-none class when at\n * endImage (sidemark-image), so last image is hidden.\n */\n var className = v.displayType === keys.swatch ? 'main-swatch-image' : 'sidemark-image d-none',\n img = $('.hidden-detail-image').data('details-img'),\n mainImage = '
\"'\n
';\n\n $cache.tileContainer.prepend(mainImage);\n $cache.swatchTooltip.html(mainImage);\n\n if (v.displayType === keys.saveAndReview) {\n $cache.resultImage.html(mainImage);\n }\n\n if ($('.saveand-review-display').length) {\n buildDesignMatrix();\n }\n}\n\n/**\n * create list of classes for swatch depending on its state\n * @param {Object} op - currently selected configurator option\n * @param {Object} swatchObj - swatch object\n * @param {string} className - class based on displayType\n * @returns {string} list of classes\n */\nfunction swatchClassList(op, swatchObj, className) {\n var $activeDropdown = getActiveDropdownById(op.id),\n selectedVal = $activeDropdown.find('select').val(),\n selectedId = $activeDropdown.find('option[selected=true], option[selected=selected]').attr('id'),\n active = swatchObj.displayValue === selectedVal && swatchObj.id === selectedId;\n return active ? className + ' active-swatch' : className;\n}\n\n/**\n * determines if all ValueGroup values are the same price and, if so, calculates price\n * @param {Object} op - currently selected configurator option\n * @param {Object} groupItem - current option ValueGroup\n * @returns {Object} pricing details\n */\nfunction calculateGroupPricing(op, groupItem) {\n var groupPricing;\n var groupPrice;\n\n for (var i = 0; i < groupItem.Values.length; i++) {\n var itemData = op.values.filter(function (x) { return x.id === groupItem.Values[i] })[0]; // eslint-disable-line\n if (itemData && itemData.customerVisible) {\n var excluded = $('.dropdown-item[id=\"' + itemData.id + '\"]').hasClass('d-none');\n if (!excluded) {\n if (!groupPricing) {\n groupPrice = parseInt(itemData.priceValue);\n groupPricing = true;\n } else if (parseInt(itemData.priceValue) !== groupPrice) {\n groupPrice = null;\n groupPricing = false;\n break;\n }\n }\n }\n }\n\n return { groupPricing: groupPricing, groupPrice: groupPrice };\n}\n\n/**\n * modify display panel and dropdowns based on visible swatches - to be called after updateExcludedSwatches()\n * @param {Object} op - currently selected configurator option\n */\nfunction processGroupPricing(op) {\n var valueGroupPricing = {};\n var currentDropdownMenu = $('#new-' + op.id).closest('.custom-dropdown').find('.dropdown-menu');\n\n if (op.valueGroups) {\n Object.entries(op.valueGroups).forEach(function (group) {\n var valueGroupName = group[0];\n var valueGroupObj = group[1];\n\n if (valueGroupObj.Values.length) {\n valueGroupPricing[valueGroupName] = calculateGroupPricing(op, valueGroupObj);\n }\n });\n }\n\n // UPDATE DISPLAY PANEL\n // for swatches\n if (op.displayType === keys.swatch) {\n $('.display-tile-container').find('.swatch-group-title:not(.d-none)').each(function () {\n // use first child to reliably determine current valueGroup\n var firstChildId = $(this).closest('.swatch-value-group').find('.item-textblock').attr('swatch-id');\n var firstChildOp = op.values.filter(function (v) { return v.id === firstChildId; })[0];\n var groupItem = Object.entries(op.valueGroups).filter(function (group) {\n return group[1].Values.findIndex(function (val) {\n return val === firstChildOp.id;\n }) > -1;\n })[0];\n var groupItemName = groupItem[0];\n var groupItemObj = groupItem[1];\n\n // update headers\n if (valueGroupPricing[groupItemName].groupPricing) {\n $(this).text(valueGroupPricing[groupItemName].groupPrice > 0 ? groupItemObj.DisplayName + ' (+$' + numberWithCommas(valueGroupPricing[groupItemName].groupPrice) + ')' : groupItemObj.DisplayName);\n } else if (valueGroupPricing) {\n $(this).text(groupItemObj.DisplayName);\n }\n\n // update all swatches under the header\n groupItemObj.Values.forEach(function (val) {\n var currentOp = op.values.find(function (v) {\n return v.id === val;\n });\n var tileName = $('.item-textblock[swatch-id=' + currentOp.id + '] p');\n var textContent = currentOp.displayValue ? currentOp.displayValue : currentOp.description;\n if (valueGroupPricing[groupItemName] && !valueGroupPricing[groupItemName].groupPricing && currentOp.priceValue && currentOp.priceValue > 0) {\n textContent = textContent + ' (+$' + numberWithCommas(parseInt(currentOp.priceValue)) + ')';\n }\n tileName.text(textContent);\n });\n });\n // for non-swatches\n } else if (op.id !== keys.variation && op.displayType !== keys.overallHeight && op.displayType !== keys.sidemark && op.displayType !== keys.saveAndReview) {\n $('.display-tile-container').find('.tile-container-item').each(function () {\n var currentSwatchId = $(this).find('.item-textblock').attr('swatch-id');\n var groupItem = Object.entries(op.valueGroups).filter(function (group) {\n return group[1].Values.findIndex(function (val) {\n return val === currentSwatchId;\n }) > -1;\n })[0];\n var groupItemName = groupItem[0];\n var groupItemObj = groupItem[1];\n\n // update headers\n if (valueGroupPricing[groupItemName].groupPricing) {\n $(this).find('.group-display-name').text(valueGroupPricing[groupItemName].groupPrice > 0 ? groupItemObj.DisplayName + ' (+$' + numberWithCommas(valueGroupPricing[groupItemName].groupPrice) + ')' : groupItemObj.DisplayName);\n } else if (valueGroupPricing) {\n $(this).find('.group-display-name').text(groupItemObj.DisplayName);\n }\n\n // update all swatches under the header\n groupItemObj.Values.forEach(function (val) {\n var currentOp = op.values.find(function (v) {\n return v.id === val;\n });\n var itemName = $('.item-textblock[swatch-id=' + currentOp.id + '] .item-name');\n var textContent = currentOp.displayValue ? currentOp.displayValue : currentOp.description;\n if (valueGroupPricing[groupItemName] && !valueGroupPricing[groupItemName].groupPricing && currentOp.priceValue && currentOp.priceValue > 0) {\n textContent = textContent + ' (+$' + numberWithCommas(parseInt(currentOp.priceValue)) + ')';\n }\n itemName.text(textContent);\n });\n });\n }\n\n // UPDATE DROPDOWNS\n // update selections\n if (op.id !== keys.variation && op.displayType !== keys.overallHeight && op.displayType !== keys.sidemark && op.displayType !== keys.saveAndReview) {\n currentDropdownMenu.find('.dropdown-item:not(d-none)').each(function () {\n var dropdownItem = $(this);\n var selectedOp = op.values.filter(function (v) { return v.id === dropdownItem.attr('id'); })[0];\n var selectedValueGroupName = Object.entries(op.valueGroups).filter(function (group) {\n return group[1].Values.findIndex(function (val) {\n return val === selectedOp.id;\n }) > -1;\n })[0][0];\n if (valueGroupPricing[selectedValueGroupName] && valueGroupPricing[selectedValueGroupName].groupPricing) {\n $(this).text(selectedOp.displayValue);\n } else if (valueGroupPricing[selectedValueGroupName] && selectedOp.priceValue && selectedOp.priceValue > 0) {\n $(this).text(selectedOp.displayValue + ' (+$' + numberWithCommas(parseInt(selectedOp.priceValue)) + ')');\n }\n });\n\n // update headers\n $(currentDropdownMenu).find('.dropdown-header').each(function () {\n var currentHeader = $(this);\n var groupItem = Object.entries(op.valueGroups).filter(function (group) {\n return currentHeader.text().trim().length && currentHeader.text().trim().replace(/ (\\(\\+\\$[\\d,]+\\))/g, '').replace(group[1].DisplayName.trim().replace(/ (\\(\\+\\$[\\d,]+\\))/g, ''), '').length === 0;\n })[0];\n var groupItemName = groupItem[0];\n var groupItemObj = groupItem[1];\n\n if (valueGroupPricing[groupItemName].groupPricing) {\n $(this).text(valueGroupPricing[groupItemName].groupPrice > 0 ? groupItemObj.DisplayName + ' (+$' + numberWithCommas(valueGroupPricing[groupItemName].groupPrice) + ')' : groupItemObj.DisplayName);\n } else if (valueGroupPricing) {\n $(this).text(groupItemObj.DisplayName);\n }\n });\n }\n}\n\n/**\n * builds out swatch panel\n * @param {Object} op - currently selected configurator option\n * @param {string} className - list of classes\n * @param {Object} groupItem - swatches group\n * @param {string} index - swatch index\n * @param {Object} currentSwatch - current swatch element\n */\nfunction buildAndAppendSwatchPanel(op, className, groupItem, index, currentSwatch) {\n var tiles = [];\n var classList = 'row swatch-value-group w-100 value-group-' + index + '';\n var valueGroupWrapper = '
'; // wrapper for swatches group\n var groupTitle = '

'\n + groupItem.DisplayName\n + '

';\n\n // append group wrappers\n $cache.tileContainer.append(valueGroupWrapper);\n\n // Append title for each group\n $('.value-group-' + index + '').append(groupTitle);\n\n // build tiles for each swatch item\n groupItem.Values.forEach(function (v) {\n var swatchItem = op.values.filter(function (x) { return x.id === v; });\n var swatchObj = swatchItem[0]; // swatch assigned to the same group\n\n if (swatchObj && swatchObj.customerVisible) {\n // add active state for swatch\n var groupClassList = swatchClassList(op, swatchObj, className);\n\n if (swatchObj.swatchImage) {\n global.popupSwatchImages.push({ swatchObj: swatchObj, currentSwatch: currentSwatch });\n tiles.push(buildTile(swatchObj, groupClassList + ' '));\n }\n }\n });\n\n // remove dropdown-headers for empty price types\n if (tiles.length <= 0) {\n $('.value-group-' + index + '').find('.swatch-group-title').addClass('d-none');\n var currentDropdownMenu = $('#new-' + op.id).closest('.custom-dropdown').find('.dropdown-menu');\n $(currentDropdownMenu).find('.dropdown-header').each(function () {\n var selectionText = $(this).text();\n if (selectionText === groupItem.DisplayName) {\n $(this).addClass('cust-group-hidden');\n }\n });\n }\n\n // push swatches from the same group to wrapper\n tiles.forEach(function (tile) {\n $('.value-group-' + index + '').append(tile);\n });\n}\n\n/**\n * update swatch popup info\n * @param {Object} op - currently selected configurator option\n */\nfunction updateSwatchPopupInfo(op) {\n $('.popup-swatch-title').html(op.name);\n $('.select-swatch span').html(op.name);\n $('.popup-swatch-info').html(op.description);\n $('.popup-swatch-img').attr('src', op.image);\n}\n\n/**\n * hide excluded swatches\n * @param {Object} op - currently selected configurator option\n */\nfunction updateExcludedSwatches(op) {\n var excludedSwatches;\n var $activeDropdown = getActiveDropdownById(op.id);\n\n $activeDropdown.find('.dropdown-item').removeClass('d-none');\n $activeDropdown.find('.dropdown-header').removeClass('d-none');\n\n $('.custom-dropdown-container').each(function (index, element) {\n var data = $(element).data('dropdown-data');\n\n if (data && data.displayType !== keys.sidemark) {\n var $thisDropdown = getActiveDropdownById(data.id);\n var thisId = $thisDropdown.find('option:selected').attr('id') || $thisDropdown.find('option[selected=selected]').attr('id');\n var idData = data.values && data.values.filter(function (obj) {\n return obj.id === thisId;\n });\n excludedSwatches = idData && idData.length && idData[0].hasOwnProperty('optionValueRules') ? idData[0].optionValueRules : '';\n\n if (excludedSwatches && excludedSwatches[op.id]) {\n var optionValueExclusions = excludedSwatches[op.id].Exclude || [];\n $.each(optionValueExclusions, function (idx, el) {\n // loop over the global.popupSwatchImages obj and remove excluded swatches\n $.each(global.popupSwatchImages, function (globalI, globalEl) {\n if (globalEl && globalEl.swatchObj && (globalEl.swatchObj.id === el)) {\n global.popupSwatchImages.splice(globalI, 1);\n }\n });\n var selectedVal = $activeDropdown.find('option:selected').attr('id') || $activeDropdown.find('option[selected=selected]').attr('id');\n\n // hide excluded values from dropdown\n $activeDropdown.find('.dropdown-menu #' + el + '').addClass('d-none');\n // hide excluded images/swatches from left pane\n if (op.displayType === keys.swatch) {\n $cache.tileContainer.find('.swatch-modal img[swatch-id=\"' + el + '\"]').parent().addClass('d-none');\n } else {\n $cache.tileContainer.find('.tile-container-item img[swatch-id=\"' + el + '\"]').parent().addClass('d-none');\n $cache.tileContainer.find('.tile-container-item div[swatch-id=\"' + el + '\"]').parent().addClass('d-none');\n }\n\n // remove selection from dropdown if it's an excluded option\n if (el === selectedVal) {\n $activeDropdown.find('select').val('');\n if ($activeDropdown.find('option:selected').attr('id')) {\n $activeDropdown.find('option:selected').removeAttr('selected');\n }\n if ($activeDropdown.find('option[selected=selected]').attr('id')) {\n $activeDropdown.find('option[selected=selected]').removeAttr('selected');\n }\n $activeDropdown.find('select').change();\n }\n });\n\n // var totalNumSwatchesLeft = 0;\n // var lastSwatchId = 0;\n $('.swatch-value-group').each(function (itemIndex, item) {\n var title = $(item).find('.swatch-group-title');\n\n var swatchesLeftVisibleInSection = $(item).find('.swatch-modal:not(.d-none)');\n var numSwatchesLeft = swatchesLeftVisibleInSection.length;\n // totalNumSwatchesLeft += numSwatchesLeft;\n\n if (numSwatchesLeft <= 2) { // No need to do this processing if more than two swatches left in section\n var numNonTBDSwatchesLeft = 0;\n var tbdSwatch;\n var tbdSwatchId;\n\n // Check to see if there are remaining swatches besides tbd\n $(swatchesLeftVisibleInSection).each(function () {\n var swatchId = $(this).find('img').attr('swatch-id');\n if (swatchId.indexOf('tbd') !== -1) {\n tbdSwatch = $(this);\n tbdSwatchId = swatchId;\n // totalNumSwatchesLeft--;\n } else {\n // lastSwatchId = swatchId;\n numNonTBDSwatchesLeft += 1;\n }\n });\n\n // If only tbd swatch is left, do not display\n if (numNonTBDSwatchesLeft === 0) {\n $(tbdSwatch).addClass('d-none');\n $activeDropdown.find('.dropdown-menu #' + tbdSwatchId + '').addClass('d-none');\n }\n }\n\n if ($(item).find('.swatch-modal:not(.d-none)').length) {\n title.removeClass('d-none');\n } else {\n title.addClass('d-none');\n $activeDropdown.find('.dropdown-header').each(function () {\n if (title.text().trim() === $(this).text().trim()) {\n $(this).addClass('d-none');\n }\n });\n }\n });\n\n // remove empty headers from dropdown for non-swatch options\n if (op.displayType !== keys.swatch) {\n $activeDropdown.find('.dropdown-header').each(function () {\n var header = $(this);\n var count = 0;\n $('.display-tile-container').find('.tile-container-item:not(.d-none)').each(function () {\n if ($(this).find('.group-display-name').text().trim().replace(/ (\\(\\+\\$[\\d,]+\\))/g, '') === header.text().trim().replace(/ (\\(\\+\\$[\\d,]+\\))/g, '')) { // eslint-disable-line\n count += 1;\n }\n });\n\n if (count <= 0) {\n $(this).addClass('d-none');\n }\n });\n $activeDropdown.find('.dropdown-header').removeAttr('style');\n if ($activeDropdown.find('.dropdown-header').first().hasClass('d-none')) {\n $($activeDropdown.find('.dropdown-header:visible').first()).attr('style', 'margin-top: 0px');\n }\n }\n }\n }\n });\n\n // build swatch slider\n $(global.popupSwatchImages).each(function (index, element) {\n var groupSwatchText = element.swatchObj.id === 'tbd-ralcolor' || element.swatchObj.id === 'tbd-custom-paint' ? 'Custom' : element.currentSwatch;\n var swatchName = element.swatchObj.displayValue;\n var popupImg = element.swatchObj.image || global.grayBlockSrc,\n swatchImg = '';\n\n if (popupImg) {\n $cache.swatchSlider.append(swatchImg);\n }\n });\n}\n\n/**\n * builds out the swatch display on the left\n * @param {Object} op - currently selected configurator option\n * @param {string} className - class based on displayType\n */\nfunction buildAndAppendSwatchTiles(op, className) {\n // Sections that should be hidden/displayed fot this displayType\n buildPanelView(op.displayType);\n\n // append main image for swatch Panel\n buildAndAppendMainImage(op);\n\n Object.entries(op.valueGroups).forEach(function (group, index) {\n var valueGroupName = group[0];\n var valueGroupObj = group[1];\n\n // Build list of swatches in the left panel\n buildAndAppendSwatchPanel(op, className, valueGroupObj, index, valueGroupName);\n });\n\n updateSwatchPopupInfo(op);\n\n // hide excluded swatches\n updateExcludedSwatches(op);\n\n processGroupPricing(op);\n}\n\n/**\n * builds out the Overall Height section on the left\n * @param {Object} op - currently selected configurator option\n * @param {string} className - class based on displayType\n */\nfunction buildAndAppendOverallHeight(op, className) {\n var $activeDropdown = getActiveDropdownById(op.id),\n $activeOverallClone = $activeDropdown.last().clone();\n\n var overallHeightText = $('.custom-dropdown-container[data-dropdown-id=\"' + op.id + '\"]').children('.dropdown-overall-wrapper').first().data('overall-title'),\n overallHeightTitle = '
' + overallHeightText + '
',\n tileButton = document.createElement('button');\n\n buildPanelView(op.displayType);\n\n // Show dropdown overall height info\n $cache.overallHeightDropdown.html($activeOverallClone);\n $cache.overallHeightDropdown.find('.custom-dropdown-container').prepend(overallHeightTitle);\n $cache.tileContainer.append(buildTile(op, className));\n\n // Build tile button to be displayed for mobile\n $(tileButton).addClass('btn btn-lt-gray select-overall-option d-md-none w-100 text-center');\n\n tileButton.textContent = overallHeightText;\n $cache.overallHeightDropdown.append(tileButton);\n}\n\n/**\n * builds out the default tile display\n * @param {Object} op - currently selected configurator option\n * @param {string} className - class based on displayType\n */\nfunction buildAndAppendTiles(op, className) {\n var tiles = [],\n defaultDisplay = op.values.length > 1 ? 'col-md-6 tile-container-item' : 'col-md-12 tile-container-item',\n displayClass = className || defaultDisplay,\n addParens = op.addParens,\n showMobileCaption = op.showMobileCaption;\n\n buildPanelView(op.displayType);\n\n op.values.forEach(function (v) {\n var groupDisplayName;\n\n if (op.valueGroups) {\n Object.keys(op.valueGroups).forEach(function (key) {\n if (op.valueGroups[key].Values) {\n if (op.valueGroups[key].Values.indexOf(v.id) > -1) {\n groupDisplayName = op.valueGroups[key].DisplayName;\n }\n }\n });\n }\n\n v.buttonType = CONST.BUTTON_TYPE.DEFAULT;\n\n tiles.push(buildTile(v, displayClass, addParens, showMobileCaption, groupDisplayName));\n });\n\n // hide excluded selections from left pane\n updateExcludedSwatches(op);\n\n processGroupPricing(op);\n\n if (op.id === keys.variation) {\n op.values.forEach(function (el) {\n $('.tile-container-item img[swatch-id=\"' + el.id + '\"]')\n .parent()\n .next()\n .after('' + el.price.salesPrice.formatted + '');\n });\n }\n}\n\n/**\n * Determine a value has been selected on all variation dropdowns within Configurator-Show/Variation\n * @returns {boolean} true, if all variation dropdowns have a selected value, otherwise false\n */\nfunction isVariationSelected() {\n var selects = document.querySelectorAll('.mobile-select.variation'),\n result = !selects.length;\n\n if (!result) {\n selects = Array.from(selects);\n\n result = selects.every(el => {\n let opt = el.querySelector('option:checked');\n\n return /^[^-].+$/.test(opt.value);\n });\n }\n\n return result;\n}\n\n/**\n * Update the variation dropdowns with values based on the most recent variation attribute/value selection\n * @returns {void} No return\n */\nfunction updateVariationDropdownValues() {\n var reqData = {};\n\n reqData.maps = [];\n\n $('.mobile-select.variation option:selected').each((idx, el) => {\n if (el.dataset.attrid && el.value) {\n reqData.maps.push({ attrId: el.dataset.attrid, value: el.value });\n }\n });\n\n reqData.pid = window.configurator && window.configurator.baseProductId;\n\n $.ajax({\n url: window.Urls.CONFIGURATOR_VARIATION_VALUES_UPDATE,\n headers: { 'Content-Type': 'application/json' },\n method: 'post',\n dataType: 'json',\n data: JSON.stringify(reqData),\n async: false\n })\n .done(resp => {\n var data = null;\n\n // rebuild variationImages stored in window.configurator\n if (resp && resp.configuratorJSON) {\n window.configurator.variationImages = JSON.parse(resp.configuratorJSON).variationImages;\n }\n if (resp && resp.valuesUpdate) {\n data = resp.valuesUpdate;\n\n Object.keys(data).forEach(attrID => {\n var $menu = $(`.dropdown-menu[data-attrid=${attrID}]`),\n $select = $(`.mobile-select.variation[data-attrid=${attrID}]`),\n $selectedOpt = $select.find('option:selected'),\n selectedValue = $selectedOpt.length ? $selectedOpt.val() : null;\n\n $menu.find('.dropdown-item').remove();\n $select.find('option').filter(idx => { return idx > 0; }).remove();\n if (!$menu.siblings('button').find('span').length) {\n $menu.siblings('button').text('-');\n }\n\n data[attrID].forEach(valObj => {\n var opt = document.createElement('option'),\n item = document.createElement('div');\n\n item.classList.add('dropdown-item');\n item.dataset.attrid = attrID;\n item.dataset.optionVal = valObj.value;\n item.textContent = valObj.displayValue;\n\n opt.dataset.attrid = attrID;\n opt.value = valObj.value;\n opt.text = valObj.value;\n\n if (valObj.selected) {\n $menu.siblings('button').val(valObj.value).text(valObj.value);\n opt.selected = true;\n $(opt).attr('selected', true);\n\n if ($select.prop('disabled')) {\n $select.trigger('change');\n }\n }\n\n $menu.append(item);\n $select.append(opt);\n });\n\n if (!$select.find('option:selected').length) {\n $selectedOpt = $select.find(`option[value=${selectedValue}]`);\n\n if ($selectedOpt.length) {\n $selectedOpt.prop('selected', true);\n $selectedOpt.attr('selected', true);\n }\n } else if ($select.find('option').length === 1) {\n $select.find('option').prop('selected', true);\n $select.find('option').attr('selected', true);\n }\n });\n }\n });\n}\n\n/**\n * Checks if a tile has already been added to DOM to avoid duplication\n * @param {Object} tileInfo object containing tile info\n * @returns {boolean} return true if there is already a matching tile\n */\nfunction tileAlreadyBuilt(tileInfo) {\n var alreadyBuilt = false;\n $cache.tileContainer.find('.tile-container-item button').each(function (idx, btn) {\n if ($(btn).data('attrid') === tileInfo.id && $(btn).attr('value') === tileInfo.value) {\n alreadyBuilt = true;\n }\n });\n return alreadyBuilt;\n}\n\n/**\n * builds out the variant tile display\n * @param {Object} op - currently selected configurator option\n * @param {string} className - class based on displayType (determines display settings)\n */\nfunction buildAndAppendVariantTiles(op, className) {\n var defaultDisplay = op.values.length > 1 ? 'col-md-6 tile-container-item native-image-size' : 'col-md-12 tile-container-item native-image-size';\n var displayClass = className || defaultDisplay;\n displayClass += ' variant-tile-item';\n\n buildPanelView(op.displayType);\n\n updateVariationDropdownValues();\n\n $(`.dropdown-item[data-attrid=\"${op.id}\"]`).each((idx, el) => {\n let v = {};\n\n v.id = op.id;\n v.images = window.configurator.variationImages[op.id][el.dataset.optionVal];\n v.value = el.dataset.optionVal;\n v.displayValue = el.textContent;\n v.buttonType = CONST.BUTTON_TYPE.VARIATION;\n\n // prevent async building of downstream variationAttr tiles as well as tile duplication due to async processing\n if (v.id === $cache.tileContainer[0].dataset.selectedId && !tileAlreadyBuilt(v)) {\n buildTile(v, displayClass);\n }\n });\n\n // hide excluded selections from left pane\n updateExcludedSwatches(op);\n}\n\n/**\n * builds out the sidemark display\n * @param {Object} op - currently selected configurator option\n */\nfunction buildAndAppendSidemark(op) {\n buildPanelView(op.displayType);\n buildAndAppendMainImage(op);\n}\n\n/**\n * Build the custom selected input data based on the type of the custom dropdown\n * @param {number} dropdownID - drop down ID\n * @returns {string} custom data built as a string to be appended to the original value\n */\nfunction getCustomColorString(dropdownID) {\n var customOption = global.shareCustomForms[dropdownID];\n\n if (!customOption || !customOption.selectedVal) {\n return '';\n }\n\n var initialValue = '';\n var initialSeparator = ' / ';\n var targetCustomValueMarker = '{{CUSTOM_VAL}}';\n var selectedCustomVal;\n\n switch (customOption.selectedVal) {\n // if different custom values needs to be formated differently, we can change this initial value\n case CONST.CUSTOM_COLOR.PAINT_SELECTION:\n initialValue = ' - ' + targetCustomValueMarker;\n selectedCustomVal = customOption.selectedCustomVal;\n break;\n case CONST.CUSTOM_COLOR.POWDER_COAT:\n initialValue = ' - ' + targetCustomValueMarker;\n selectedCustomVal = customOption.selectedCustomVal;\n break;\n case CONST.CUSTOM_COLOR.COM:\n initialValue = ' - ' + targetCustomValueMarker;\n // Only display non-blank keys on productSummary\n selectedCustomVal = customOption.selectedCustomVal.filter(function (val) {\n return val.value.length > 0;\n });\n break;\n default:\n break;\n }\n\n var customData = selectedCustomVal.reduce(function (accumulator, currentFormValue) {\n return accumulator !== '' ? accumulator + initialSeparator + currentFormValue.value : currentFormValue.value;\n }, '');\n\n return initialValue.replace(targetCustomValueMarker, customData);\n}\n\n/**\n * Update save and review displayed data for all resolutions\n */\nfunction updateReviewData() {\n for (var dropdownItem in global.shareConfObj) { // eslint-disable-line\n var $item = $(\".result-value[data-result-id='\" + dropdownItem + \"']\"),\n val = null;\n\n if (global.shareConfObj[dropdownItem].selectedVal === keys.variant) {\n val = window.configurator && window.configurator.selectedVariant ? window.configurator.selectedVariant.id : null;\n\n if (val) {\n // eslint-disable-next-line no-loop-func\n $('.variation').data('dropdown-data').values.forEach(function (v) {\n if (v.id === val) {\n $('.variation-key-value').append('' + v.displayValue + '');\n $('.variation-key-value').removeClass('d-none');\n }\n });\n }\n } else if (global.shareConfObj[dropdownItem].selectedVal === keys.sidemark) {\n val = global.shareConfObj[dropdownItem].selectedId;\n } else {\n val = global.shareConfObj[dropdownItem].selectedVal + getCustomColorString(dropdownItem);\n }\n\n if (val && val.length) {\n $item.append('' + val + '');\n $item.removeClass('d-none');\n }\n }\n\n $('.review-product-name').text($('.sizedropdown select').val());\n $('.review-product-item-price').text($('.configurator-item-price').text());\n $('.review-product-quantity-value').text($('.configurator-item-quantity select').val());\n $('.review-product-total-price').text($('.configurator-total-price').text());\n}\n\n/**\n * builds out the save and review display\n * @param {Object} op - currently selected configurator option\n * @param {string} className - class based on displayType\n */\nfunction buildAndAppendSaveAndReview(op) {\n var $resultListItem = $('.result-list-item'),\n $excludedDropdowns = $('.custom-dropdown-container.d-none');\n\n // to not fire ajax call once form is submitted\n global.isSubmitPressed = true;\n\n // Update size object\n global.shareConfObj[keys.variant] = {\n selectedVal: keys.variant,\n selectedId: $('.sizedropdown option:selected').attr('id')\n };\n\n // remove excluded items from global.shareConfObj\n $excludedDropdowns.each(function (index, el) {\n var id = $(el).attr('data-dropdown-id');\n\n $(\".result-value[data-result-id='\" + id + \"']\").addClass('d-none');\n deleteIdFromShareConfObj(id);\n });\n\n // Update sidemark object\n global.shareConfObj[keys.sidemark] = {\n selectedVal: keys.sidemark,\n selectedId: $cache.sidemarkInput.val()\n };\n\n // Sections that should be hidden/displayed fot this displayType\n buildPanelView(op.displayType);\n\n // Add main image for save and review Panel\n buildAndAppendMainImage(op);\n\n // update displayed data for desktop and mobile\n $resultListItem.remove();\n updateReviewData();\n}\n\n/**\n * determines which displaytype to build\n * @param {Object} op - currently selected configurator option\n */\nfunction buildDisplayBasedOnType(op) {\n if (op.isVariationAttribute) {\n switch (op.displayType) {\n case '4per-image':\n buildAndAppendVariantTiles(op, 'col-md-6 col-xl-3 tile-container-item');\n break;\n case '3per-image':\n buildAndAppendVariantTiles(op, 'col-md-4 tile-container-item');\n break;\n case '2per-image':\n buildAndAppendVariantTiles(op, 'col-md-6 tile-container-item');\n break;\n case '1per-image':\n buildAndAppendVariantTiles(op, 'col-md-12 justify-content-center tile-container-item');\n break;\n case '4per-image-native-size':\n buildAndAppendVariantTiles(op, 'col-md-6 col-xl-3 tile-container-item native-image-size');\n break;\n case '3per-image-native-size':\n buildAndAppendVariantTiles(op, 'col-md-4 tile-container-item native-image-size');\n break;\n case '2per-image-native-size':\n buildAndAppendVariantTiles(op, 'col-md-6 tile-container-item native-image-size');\n break;\n case '1per-image-native-size':\n buildAndAppendVariantTiles(op, 'col-md-12 justify-content-center native-image-size tile-container-item');\n break;\n case keys.swatch:\n buildAndAppendSwatchTiles(op, 'col-4 col-lg-3 col-xl-2 swatch-modal');\n break;\n case 'variant':\n buildAndAppendVariantTiles(op);\n break;\n default:\n buildAndAppendVariantTiles(op);\n break;\n }\n } else {\n switch (op.displayType) {\n case '4per-image':\n buildAndAppendTiles(op, 'col-md-6 col-xl-3 tile-container-item');\n break;\n case '3per-image':\n buildAndAppendTiles(op, 'col-md-4 tile-container-item');\n break;\n case '2per-image':\n buildAndAppendTiles(op, 'col-md-6 tile-container-item');\n break;\n case '1per-image':\n buildAndAppendTiles(op, 'col-md-12 justify-content-center tile-container-item');\n break;\n case '4per-image-native-size':\n buildAndAppendTiles(op, 'col-md-6 col-xl-3 tile-container-item native-image-size');\n break;\n case '3per-image-native-size':\n buildAndAppendTiles(op, 'col-md-4 tile-container-item native-image-size');\n break;\n case '2per-image-native-size':\n buildAndAppendTiles(op, 'col-md-6 tile-container-item native-image-size');\n break;\n case '1per-image-native-size':\n buildAndAppendTiles(op, 'col-md-12 justify-content-center tile-container-item native-image-size');\n break;\n case keys.overallHeight:\n buildAndAppendOverallHeight(op, 'col-md-12 justify-content-center overall-tile');\n break;\n case keys.swatch:\n buildAndAppendSwatchTiles(op, 'col-4 col-lg-3 col-xl-2 swatch-modal');\n break;\n case keys.sidemark:\n buildAndAppendSidemark(op, 'col-md-12 justify-content-center sidemark-wrapper');\n break;\n case keys.saveAndReview:\n buildAndAppendSaveAndReview(op, 'col-md-12 justify-content-center save-review-wrapper');\n break;\n default:\n buildAndAppendTiles(op);\n break;\n }\n }\n}\n\n/**\n * update text and attributes for active panel wrapper\n * @param {string} text - currently selected configurator name\n * @param {string} option - currently selected configurator option\n * @param {string} id - currently selected configurator id\n */\nfunction updateAttrForDisplayedPanel(text, option, id) {\n $cache.optionName.text(text);\n $cache.optionName.attr('data-id', id);\n $cache.tileContainer.attr('data-selected-option', option);\n $cache.tileContainer.attr('data-selected-id', id);\n}\n\n/**\n * builds out the configurator display panel based on option\n * @param {Object} op - currently selected configurator option\n */\nfunction buildDisplay(op) {\n if (!op) {\n return;\n }\n\n if (op.id && op.id === keys.sidemark) {\n updateAttrForDisplayedPanel(op.name, op.name, op.id);\n } else if (op.id && op.id === keys.saveAndReview) {\n updateAttrForDisplayedPanel('', op.name, op.id);\n } else if (op.name) {\n updateAttrForDisplayedPanel(op.name, op.name, op.id);\n } else {\n updateAttrForDisplayedPanel(op.description, op.id, op.id);\n }\n\n if (op.isVariationAttribute) {\n $cache.optionDescription.html('');\n } else {\n $cache.optionDescription.html(op.description || '');\n if ($cache.optionDescription.find('a').length) {\n $cache.optionDescription.find('a').attr({\n target: '_blank',\n rel: 'noopener'\n });\n\n if (op.descriptionLink) {\n $cache.optionDescription.find('a').attr({\n href: op.descriptionLink\n });\n }\n }\n }\n\n buildDisplayBasedOnType(op);\n}\n\n/**\n * removes disabled classes\n * @param {jQuery} op - configurator option\n */\nfunction enableOption(op) {\n op.removeClass('disabled');\n op.attr('data-disabled', false);\n op.children('.custom-dropdown').children('.custom-dropdown-toggle').attr('data-toggle', 'dropdown');\n op.children('.mobile-select-container').children('.mobile-select').attr('disabled', false);\n}\n\n/**\n * adds disabled classes\n * @param {jQuery} op - configurator option\n */\nfunction disableOption(op) {\n op.addClass('disabled');\n op.attr('data-disabled', true);\n op.children('.custom-dropdown').children('.custom-dropdown-toggle').attr('data-toggle', 'dropdown');\n op.children('.mobile-select-container').children('.mobile-select').attr('disabled', true);\n}\n/**\n * Function to disable all Variation Options\n */\nfunction disableVariationOptions() {\n $cache.variationDropdownCtnr.each(function () {\n disableOption($(this));\n });\n}\n/**\n * enables preceding siblings\n * @param {jQuery} op - configurator option\n */\nfunction enablePrevSibling(op) {\n if (op.prev() && op.prev().hasClass('disabled')) {\n // if there is a sibling preceeding the current option\n // enable the previous sibling\n // rerun this function on the previous sibling to continue the chain\n enableOption(op.prev());\n enablePrevSibling(op.prev());\n }\n}\n/**\n * enables preceding siblings\n * @param {jQuery} op - configurator option\n */\nfunction enableNextSibling(op) {\n if (op.next() && op.next().hasClass('disabled')) {\n // if there is a sibling preceeding the current option\n // enable the previous sibling\n // rerun this function on the previous sibling to continue the chain\n enableOption(op.next());\n enableNextSibling(op.next());\n }\n}\n\n/**\n * clears the value of the next sibling and conditionally sets disabled\n * @param {jQuery} op - configurator option\n * @param {string} name - name of option\n */\nfunction clearNextSibling(op, name) {\n var mobileSelect = op.children('.mobile-select-container').children('.mobile-select');\n var opHasVal = mobileSelect.val() !== '';\n if (name !== keys.variation && !op.hasClass('disabled')) {\n disableOption(op);\n }\n if (opHasVal) {\n mobileSelect.val('');\n mobileSelect.change();\n }\n if (op.next() && op.next().hasClass('custom-dropdown-container')) {\n clearNextSibling(op.next());\n }\n}\n\n/**\n * update Panel view once dropdown is clicked / opened\n * @param {Object} el - dropdown item\n */\nvar updateDisplay = function (el) {\n let isEnabledAndDifferent = function () {\n let data = el.data('dropdown-data'),\n tileSelectedOption = $cache.tileContainer.attr('data-selected-id'),\n result = false;\n\n if (el.attr('data-disabled') !== 'true') {\n if (data && (data.id !== tileSelectedOption || data.isVariationAttribute)) {\n result = true;\n }\n }\n\n return result;\n };\n\n // check if clicked option is not the current option and not disabled\n if (isEnabledAndDifferent()) {\n // clear the display\n clearDisplay();\n // build the display\n buildDisplay(el.data('dropdown-data'));\n }\n};\n\n/**\n * disable saveAndReview button if invalid/disabled selects exist\n */\nfunction manageSaveButton() {\n var disabledSelects = $('.custom-dropdown-container.disabled:not(\".d-none\")').length,\n invalidSelectes = $cache.configuratorForm.find('.invalid-dropdown').length,\n emptySelects = $('.custom-dropdown-container:not(\".d-none\")').find('select option:selected[value=\"\"]').length;\n\n if (invalidSelectes || disabledSelects || emptySelects || !global.isUserLoggedIn) {\n $cache.saveConfiguratorBtn.attr('disabled', true);\n } else {\n $cache.saveConfiguratorBtn.attr('disabled', false);\n }\n}\n\n/**\n * Open not login popup if user is not logged in\n * @returns {boolean} display not logged in\n */\nfunction openNotLoggedinPopup() { // eslint-disable-line\n if (!global.isUserLoggedIn && param.isSharedLink) {\n $cache.editNotLoggedinPopup.modal('show');\n return false;\n }\n}\n\n/**\n * Event that is fired once dropdown is clicked / opened\n * @param {string} currentVal - current price Value\n */\nvar updateTotalPrice = function (currentVal) {\n var currentPrice = parseInt($cache.priceSummaryFigure.attr('data-price'));\n var totalPrice = currentPrice * parseInt(currentVal);\n $('.configurator-total-summary-figure').text('$' + numberWithCommas(totalPrice) + '.00');\n\n if ($('.is-shared-page').length) {\n $('.review-product-total-price').text('$' + numberWithCommas(totalPrice) + '.00');\n }\n};\n\n/**\n * Event fired on quantity update to update estimated lead time\n * @param {string} currentVal - current price Value\n */\nvar updateLeadTime = function (currentVal) {\n var leadTimeData = $('.config-estimate-lead-time-range').data('prod-default') || null;\n if (leadTimeData) {\n if (currentVal <= leadTimeData.longLeadQty) {\n $('.config-estimate-lead-time-range').text(leadTimeData.displayValue);\n } else {\n $('.config-estimate-lead-time-range').text(window.Resources.LEAD_TIME_SPECIALIST_MSG);\n }\n }\n};\n\n/**\n * updates displays based on exclusion rules\n * @param {Object} optionVal - currently selected configurator option value\n * @param {Object} optionData - currently selected configurator option data\n */\nfunction updateOptions(optionVal, optionData) {\n var hideOption = function (option) {\n if (!option.hasClass('d-none')) {\n option.addClass('d-none');\n\n option.find('option').removeAttr('selected');\n option.find('.custom-dropdown-toggle').text('-');\n }\n };\n var showOption = function (option) {\n if (option.hasClass('d-none')) {\n option.removeClass('d-none');\n }\n };\n var matchExclusionRules = function (exclusions, type) {\n exclusions.forEach(function (x) {\n $('.custom-dropdown-container').each(function () {\n var data = $(this).data('dropdown-data');\n if (data && data.id && data.id === x) {\n if (type === 'exclude') {\n hideOption($(this));\n } else if (type === 'include') {\n showOption($(this));\n }\n }\n });\n });\n };\n var handleOptionRules = function (optionRules) {\n if (optionRules.Exclude) {\n matchExclusionRules(optionRules.Exclude, 'exclude');\n }\n if (optionRules.Include) {\n matchExclusionRules(optionRules.Include, 'include');\n }\n };\n\n var handleOptionValueRules = function (optionValueRules) {\n Object.keys(optionValueRules).forEach(function (key) {\n if (optionValueRules[key].Exclude) {\n var exclusions = optionValueRules[key].Exclude;\n $('.custom-dropdown-container').each(function () {\n var data = $(this).data('dropdown-data');\n var container = $(this);\n if (data && data.id && data.id === key) {\n var dropdownmenu = container.find('.dropdown-menu');\n var dropdownchildren = dropdownmenu.children();\n if (dropdownchildren) {\n dropdownchildren.each(function () {\n if (exclusions.indexOf($(this).attr('id')) > -1) {\n // if the option exists in the exclusion rules\n // hide the option value in the dropdown\n $(this).addClass('d-none');\n\n // check if the currently selected option is in the exclusions rules\n // if so, clear the mobile select and trigger a change\n var selectedId = container.find('option:selected').attr('id');\n if (exclusions.indexOf(selectedId) > -1) {\n var mobileselect = container.find('.mobile-select');\n mobileselect.val('');\n mobileselect.trigger('change');\n }\n }\n });\n }\n }\n });\n }\n });\n };\n\n var checkForMatchingVal = function (val, values) {\n values.forEach(function (v) {\n if (v.id === val) {\n if (v.optionRules) {\n handleOptionRules(v.optionRules);\n }\n if (v.optionValueRules) {\n handleOptionValueRules(v.optionValueRules);\n }\n }\n });\n };\n if (optionData.values) {\n checkForMatchingVal(optionVal, optionData.values);\n }\n}\n\n/**\n * Update dropdown attributes due to selected option\n * @param {Object} activeDropdownEl - active dropdown element\n * @param {string} val - select value\n * @param {boolean} triggerChange - trigger change for active select\n * @param {string} opId - option Id\n */\nfunction updateActiveOptionAttr(activeDropdownEl, val, triggerChange, opId) {\n if (triggerChange && opId) {\n activeDropdownEl.find(`.dropdown-menu .dropdown-item[data-option-val=\"${opId}\"]`).trigger('click');\n }\n}\n\n/**\n * Event that is fired once dropdown is clicked / opened\n * @param {Object} mutations - mutations\n */\nvar observer = new MutationObserver(function (mutations) {\n mutations.forEach(function (mutation) {\n var $customToggle = $(mutation.target).find('.custom-dropdown-toggle');\n\n // disable save button if errors appear\n manageSaveButton();\n // Open popup if user is not logged in\n openNotLoggedinPopup();\n\n if (($(mutation.target).hasClass('show') || $(mutation.target).hasClass('displayModal')) && !$(mutation.target).hasClass('quantity-desktop')) {\n // Deselect existing value so the image configurator doesn't filter unselected options out\n if ($(mutation.target).parent().data('dropdown-type') === 'variation') {\n var selectedOption = $(mutation.target).siblings('.mobile-select-container').find('option:selected');\n var selectedVal = selectedOption.val();\n\n selectedOption.attr('selected', false).prop('selected', false);\n $(mutation.target).find('.custom-dropdown-toggle').text(selectedVal);\n }\n $customToggle.append('' + $customToggle.data('activetext-select') + '');\n updateDisplay($(mutation.target).parent('.custom-dropdown-container'));\n } else {\n $(mutation.target).find('.custom-dropdown-toggle span').remove();\n // Add back existing selection, no change was made\n if ($(mutation.target).parent().data('dropdown-type') === 'variation') {\n var prevSelectedVal = $(mutation.target).find('.custom-dropdown-toggle').text();\n if (!prevSelectedVal) {\n prevSelectedVal = $(mutation.target).find('.custom-dropdown-toggle').val();\n }\n if ($(mutation.target).siblings('.mobile-select-container').find('option:selected').val() !== prevSelectedVal) {\n updateActiveOptionAttr($(mutation.target).parent(), prevSelectedVal, true, prevSelectedVal);\n }\n }\n }\n });\n});\n\n/**\n * scroll to the dropdown\n * @param {Object} dropdown - current size select\n */\nfunction scrollToDropdown(dropdown) {\n var headerHeight = $('header').length ? $('header').height() : 0;\n\n $('html, body').animate({\n scrollTop: dropdown.offset().top - headerHeight\n }, 300);\n}\n\n/**\n * Swatch popup click event for desktop\n */\nfunction selectPopupSwatch() {\n var activeID = $cache.tileContainer.attr('data-selected-id'),\n $activeDropdown = getActiveDropdownById(activeID),\n activeSwatch = $cache.swatchSlider.find('.slick-active').attr('popup-slide-id'),\n selectedVal = $activeDropdown.find('select .dropdown-item[id=\"' + activeSwatch + '\"]').val(),\n findNextShownSiblingEl = function (element) {\n if (element.hasClass('d-none')) {\n if (element.next().length) {\n return findNextShownSiblingEl(element.next());\n }\n } return element;\n },\n isShownDropdown = findNextShownSiblingEl($activeDropdown.next());\n\n global.isSwatchSelected = true;\n\n $cache.swatchSlider.removeClass('slider-fade');\n $cache.swatchModal.modal('hide');\n $cache.panelModal.modal('hide');\n scrollToDropdown(isShownDropdown);\n\n // add function at the end of queue so the next dropdown is triggered after modals are completely closed\n setTimeout(function () {\n updateActiveOptionAttr($activeDropdown, selectedVal, true, activeSwatch);\n manageSaveButton();\n }, 0);\n}\n\n/**\n * updates popup display for PaintSwatch and fill it with data\n * @param {Object} id - displayed swatch id in popup\n * @param {Object} form - displayed form in popup\n */\nfunction updateCustomPaintSwatch(id, form) {\n var activeID = $cache.tileContainer.attr('data-selected-id'),\n containsAnyId = global.shareCustomForms.hasOwnProperty(activeID),\n haveSameId = containsAnyId ? (global.shareCustomForms[activeID].selectedId === id && global.shareCustomForms[activeID].selectedCustomVal) : '';\n\n if (haveSameId) {\n global.shareCustomForms[activeID].selectedCustomVal.forEach(function (element) {\n var $select = form.find('select[name=' + element.name + ']');\n if ($select.length) {\n $select.val(element.value);\n $select.trigger('change');\n } else {\n form.find('input[name=' + element.name + ']').val(element.value);\n }\n });\n } else {\n form.find('input').val('');\n form.find('select').val('');\n form.find('select').trigger('change');\n }\n\n // Add char-counters\n $(document).find('.popup-swatch-customPaint').find('input[maxlength]').each(function () {\n updateCharCounter($(this));\n });\n\n $(document).find('.popup-swatch-customPaint').removeClass('d-none');\n}\n\n/**\n * updates popup display for RalColor and fill it with data\n * @param {Object} id - displayed swatch id in popup\n * @param {Object} form - displayed form in popup\n */\nfunction updateCustomRalColor(id, form) {\n var activeID = $cache.tileContainer.attr('data-selected-id'),\n containsAnyId = global.shareCustomForms.hasOwnProperty(activeID);\n\n if (containsAnyId && (global.shareCustomForms[activeID].selectedId === id) && global.shareCustomForms[activeID].hasOwnProperty('selectedCustomVal')) {\n global.shareCustomForms[activeID].selectedCustomVal.forEach(function (element) {\n form.find('select[name=' + element.name + ']').val(element.value);\n form.find('select[name=' + element.name + ']').trigger('change');\n });\n } else {\n var optionToSelect = form.find('select option:first').val();\n var selectElement = $('.select-RALColor');\n if (selectElement.length > 0 && selectElement.data('selected-option') && $(\".select-RALColor option[id='\" + selectElement.data('selected-option') + \"']\").length > 0) {\n optionToSelect = selectElement.data('selected-option');\n }\n form.find('select').val(optionToSelect);\n form.find('select').trigger('change');\n }\n\n // Add char-counters\n $(document).find('.popup-swatch-RALColor').find('input[maxlength]').each(function () {\n updateCharCounter($(this));\n });\n\n $(document).find('.popup-swatch-RALColor').removeClass('d-none');\n}\n\n/**\n * Com Shade Inputs on Modal Show\n */\nfunction comShadeLoadInputs() {\n comFormGroup.eq(-1).addClass('d-show-mobile');\n comFormGroup.eq(-2).addClass('d-show-mobile');\n comFormGroup.eq(-3).addClass('d-show-mobile');\n comFormGroup.eq(0).removeClass('d-show-mobile');\n comFormGroup.eq(1).removeClass('d-show-mobile');\n comFormGroup.eq(2).removeClass('d-show-mobile');\n comBackButton.addClass('d-none');\n comNextButton.removeClass('d-none');\n comSubmit.addClass('d-show-mobile');\n $('.modal-action-number').html('

1 of 2

');\n}\n\n/**\n * updates popup display for COMShadeSwatch and fill it with data\n * @param {Object} id - displayed swatch id in popup\n * @param {Object} form - displayed form in popup\n */\nfunction updateCOMShadeSwatch(id, form) {\n var activeID = $cache.tileContainer.attr('data-selected-id'),\n containsAnyId = global.shareCustomForms.hasOwnProperty(activeID),\n haveSameId = containsAnyId ? (global.shareCustomForms[activeID].selectedId === id && global.shareCustomForms[activeID].selectedCustomVal) : '';\n\n if (haveSameId) {\n global.shareCustomForms[activeID].selectedCustomVal.forEach(function (element) {\n var $select = form.find('select[name=' + element.name + ']');\n if ($select.length) {\n $select.val(element.value);\n $select.trigger('change');\n } else {\n form.find('input[name=' + element.name + ']').val(element.value);\n }\n });\n } else {\n form.find('input').val('');\n form.find('select').val('');\n form.find('select').trigger('change');\n }\n\n // Build COM-only Modal Title\n var comModal = $(document).find('.popup-swatch-comShade');\n var swatchInfo = global.popupSwatchImages.find(function (el) {\n return el.swatchObj.id === id;\n });\n comModal.find('.popup-swatch-title').html(swatchInfo.swatchObj.displayValue + ' Shade');\n\n // Add char-counters\n comModal.find('input[maxlength]').each(function () {\n updateCharCounter($(this));\n });\n\n comShadeLoadInputs();\n comModal.removeClass('d-none');\n}\n\n/**\n * updates swatch popup display according to its type\n * @param {Object} type - currently swatch type\n * @param {Object} id - currently swatch id\n */\nfunction updateSwatchPopupDisplay(type, id) {\n var $swatchName = $('.popup-swatch-name'),\n activeSwatchName = $('.swatch-modal img[swatch-id=\"' + id + '\"]').next().text(),\n $openedForm = $('.custom-swatch-form');\n\n $swatchName.html(activeSwatchName);\n $(document).find('.popup-swatch-data').addClass('d-none');\n\n // find type based on ModalId in productOptionsJSON. Fall back to passed in type (needed for paint or RAL until ModalId is added)\n var swatchDetail = global.popupSwatchImages.find(function (detail) {\n return detail.swatchObj.id === id;\n });\n var type = swatchDetail && swatchDetail.swatchObj.modalId ? swatchDetail.swatchObj.modalId : type; // eslint-disable-line\n\n switch (type) {\n case 'customPaint':\n case '1':\n updateCustomPaintSwatch(id, $openedForm);\n break;\n case 'RALColor':\n case '2':\n updateCustomRalColor(id, $openedForm);\n break;\n case '3':\n updateCOMShadeSwatch(id, $openedForm);\n break;\n default:\n $(document).find('.popup-swatch-default').removeClass('d-none');\n break;\n }\n}\n\n/**\n * Enable next dropdown\n * @param {Object} id - active ID\n * @param {Object} dropdown - active dropdown\n */\nfunction enableNextDropdown(id, dropdown) {\n if (id) {\n updateOptions(id, dropdown.data('dropdown-data'));\n }\n\n var findNextShownSibling = function (element) {\n if (element.length && element.hasClass('d-none')) {\n if (element.next().length) {\n return findNextShownSibling(element.next());\n }\n }\n\n return element;\n };\n var nextDD = findNextShownSibling(dropdown.nextAll('.custom-dropdown-container:first'));\n\n if (nextDD.length) {\n var isDisabled = nextDD.hasClass('disabled');\n\n if (isDisabled) {\n // remove the disabled class from the next dropdown\n enableOption(nextDD);\n }\n\n // clear the display\n clearDisplay();\n // set the next option dropdown as selected\n // build the display based on the next option dropdown\n buildDisplay(nextDD.data('dropdown-data'));\n // required for mobile experience\n manageSaveButton();\n }\n}\n\n/**\n * Update price item on change event\n * @param {Object} select - current select\n */\nfunction updatePriceOnChangeSelect(select) {\n var ddData = select ? select.data('dropdown-data') : null,\n thisValues = null,\n selectedVal = null,\n additionalPrice = 0,\n itemPriceWithSwatches = 0;\n\n // account for oah dropdown being duplicated underneath .display-tile-container when active\n if (!ddData || select.parent().hasClass('overall-height-select')) { return; }\n\n selectedVal = select.find('option[selected=selected], option[selected=true]').attr('id');\n thisValues = select.data('dropdown-data').values;\n\n thisValues.forEach(function (element) {\n if ((element.id === selectedVal) && element.priceValue) {\n additionalPrice += Math.abs(element.priceValue);\n }\n });\n\n global.swatchPrice += additionalPrice;\n\n itemPriceWithSwatches = parseInt(window.itemPriceVal) + global.swatchPrice;\n\n $cache.priceSummaryFigure.attr('data-price', itemPriceWithSwatches);\n $cache.priceSummaryFigure.text('$' + numberWithCommas(itemPriceWithSwatches) + '.00');\n}\n\n/**\n * hide all included / excluded dropdowns (preparation for updateOptions() to add back included dropdowns)\n */\nfunction hideIncludedExcludedDropdowns() {\n var included;\n var excluded;\n\n $('.custom-dropdown-container').each(function (index, element) {\n var data = $(element).data('dropdown-data');\n\n if (data) {\n $.each(data.values, function (idx, el) {\n if (el.hasOwnProperty('optionRules')) {\n included = el.optionRules.hasOwnProperty('Include') ? el.optionRules.Include : '';\n excluded = el.optionRules.hasOwnProperty('Exclude') ? el.optionRules.Exclude : '';\n }\n });\n }\n\n $.each(included, function (idx, el) {\n var $includedDropdown = getActiveDropdownById(el);\n $includedDropdown.addClass('d-none');\n });\n\n $.each(excluded, function (idx, el) {\n var $excludedDropdown = getActiveDropdownById(el);\n $excludedDropdown.addClass('d-none');\n });\n });\n}\n\n/**\n * manage included / excluded dropdowns for handleVariationDropdown\n */\nfunction hideExcludedDropdowns() {\n var included;\n var excluded;\n\n $('.custom-dropdown-container').each(function (index, element) {\n var data = $(element).data('dropdown-data');\n\n if (data && data.values) {\n var selectedValue = data.values.find(function (val) { return val.selected; }) || null;\n if (selectedValue && selectedValue.hasOwnProperty('optionRules')) {\n included = selectedValue.optionRules.hasOwnProperty('Include') ? selectedValue.optionRules.Include : '';\n excluded = selectedValue.optionRules.hasOwnProperty('Exclude') ? selectedValue.optionRules.Exclude : '';\n }\n }\n\n if (included && included.length > 0) {\n $.each(included, function (idx, el) {\n var $includedDropdown = getActiveDropdownById(el);\n $includedDropdown.removeClass('d-none');\n });\n }\n\n if (excluded && excluded.length > 0) {\n $.each(excluded, function (idx, el) {\n var $excludedDropdown = getActiveDropdownById(el);\n $excludedDropdown.addClass('d-none');\n });\n }\n });\n}\n\n/**\n * Get selected options\n * @returns {string} - Options string\n */\nfunction getOptions() {\n var options = $('.custom-dropdown-container.option:not(.disabled):not(.d-none)').map(function () {\n var optionId = $(this).data('dropdown-id');\n var selectedValueId = $(this).find('.mobile-select option[selected=selected]').attr('id') || $(this).find('.mobile-select option:selected').attr('id');\n var selectedCustomVal = global.shareCustomForms[optionId];\n return {\n optionId: String(optionId),\n selectedValueId: String(selectedValueId),\n custom: selectedCustomVal\n };\n }).toArray();\n return JSON.stringify(options);\n}\n\n/**\n * Get selected custom form values\n * @returns {string} - Options string\n */\nfunction getCustomFormOptions() {\n var customFormOptionsArr = [];\n for (var property in global.shareCustomForms) { // eslint-disable-line\n customFormOptionsArr.push({\n optionId: String(property),\n selectedValueId: String(global.shareCustomForms[property].selectedId),\n selectedCustomVal: global.shareCustomForms[property].selectedCustomVal\n });\n }\n\n return JSON.stringify(customFormOptionsArr);\n}\n\n/**\n * Get selected options\n * @returns {string} - Options string\n */\nfunction getSharedOptions() {\n var options = $('.sharedOption').map(function () {\n var optionId = $(this).data('dropdown-id');\n var selectedValueId = $(this).data('value');\n return {\n optionId: String(optionId),\n selectedValueId: String(selectedValueId)\n };\n }).toArray();\n return JSON.stringify(options);\n}\n\n\n/**\n * Updates the Mini-Cart quantity value after the customer has pressed the \"Add to Cart\" button\n * @param {string} response - ajax response from clicking the add to cart button\n */\nfunction handlePostCartAdd(response) {\n $('.minicart').trigger('count:update', response);\n var messageType = response.error ? 'alert-danger' : 'alert-success';\n if (window.SitePreferences.ADD_TO_CART_ACTION === 'showModal' && response.renderedTemplate && $(window).outerWidth() > globalConfig.bp.medium) {\n // show added to cart modal\n $('#addToCartModal').remove();\n $('body').append(response.renderedTemplate).addClass('static');\n $('#addToCartModal').modal('show');\n\n $('#addToCartModal .bonus-product-button').on('click', function () {\n $('#addToCartModal').modal('hide');\n });\n } else if (window.SitePreferences.ADD_TO_CART_ACTION === 'openMiniCart') {\n $('.minicart').trigger('cart:update', response);\n } else {\n // show add to cart toast\n if ($('.add-to-cart-messages').length === 0) {\n $('body').append(\n '
'\n );\n }\n\n $('.add-to-cart-messages').append(\n '
'\n + response.message\n + '
'\n );\n\n setTimeout(function () {\n $('.add-to-basket-alert').first().fadeOut(function () {\n this.remove();\n });\n }, globalConfig.toastTimeout);\n }\n}\n\n/**\n * Inits the captcha if it was not initiated, if it was resets it so i t can be used again\n * @param {function} callback - callback function to be called on captcha success\n */\nfunction initRecaptcha(callback) {\n var formContainer = $('.share-form');\n var recaptchaContainer = formContainer.find('.js-recaptcha-input');\n var recaptchaResponseEl = recaptchaContainer.find('iframe');\n\n if (SitePreferences.SHARE_MODAL_RECAPTCHA_ENABLED && formContainer.length > 0) {\n if (recaptchaResponseEl.length === 0) {\n recaptcha.attach(formContainer, callback, true);\n } else {\n recaptcha.reset(formContainer);\n }\n }\n\n recaptcha.init();\n}\n\n/**\n * Share configurator submit function to be called if captcha is disabled, and\n * to be passed as callback function to captcha if it is enabled\n * @returns {boolean} always returns false\n */\nfunction shareFormSubmit() {\n var $invelidMessage = $('.invalid-share-error');\n var form = $('.share-form');\n var url = form.attr('action');\n form.spinner().start();\n\n $.ajax({\n url: url,\n type: 'post',\n dataType: 'json',\n data: form.serialize(),\n success: function (data) {\n form.spinner().stop();\n if (!data.success) {\n $invelidMessage.addClass('d-block');\n } else {\n $('.js-share-send-to').val('');\n $('.js-share-send-cc').val('');\n $('.js-share-send-message').val('');\n $('#shareModal').modal('hide');\n $('#confirmationShareModal').modal('show');\n setTimeout(function () {\n $('#confirmationShareModal').modal('hide');\n }, 5000);\n $invelidMessage.removeClass('d-block');\n }\n initRecaptcha(shareFormSubmit);\n },\n error: function (err) {\n if (err.responseJSON.redirectUrl) {\n window.location.href = err.responseJSON.redirectUrl;\n }\n form.spinner().stop();\n initRecaptcha(shareFormSubmit);\n }\n });\n return false;\n}\n\n/**\n * Function to apply custom paint & powder defaults\n * @param {Object} dropdownData - json string from html data element\n * @returns {Object} - dropdownData with some additions\n */\nfunction getCustomsFromDropdownData(dropdownData) {\n var objectKeyNames = { ralColorDefault: 'ralColor', colorName: 'colorName', colorBrand: 'colorBrand', colorCode: 'colorCode', comManufacturer: 'comManufacturer', comName: 'comName', comColorway: 'comColorway', comMaterial: 'comMaterial', comOrientation: 'comOrientation', comSpecialNotes: 'comSpecialNotes' };\n var selectedValueId = dropdownData ? dropdownData.selectedValueId : null;\n var optionValues = dropdownData && dropdownData.hasOwnProperty('values') ? dropdownData.values : null;\n if (selectedValueId != null && optionValues != null) {\n for (var i = 0; i < optionValues.length; i++) {\n var currentValue = optionValues[i];\n if (currentValue.id.toString() === selectedValueId.toString()) {\n var objectKeys = Object.keys(objectKeyNames);\n for (var j = 0; j < objectKeys.length; j++) {\n var valueId = objectKeys[j];\n var dropdownId = objectKeyNames[valueId];\n var customValue = currentValue[valueId];\n if (customValue !== '' && customValue !== null) {\n if (!dropdownData.hasOwnProperty('selectedCustomValues')) dropdownData.selectedCustomValues = {};\n if (dropdownId === 'ralColor') {\n customValue = customValue.replace('#', '');\n // eslint-disable-next-line no-loop-func\n var dropdownItem = $('.popup-swatch-RALColor').find('.dropdown-item').filter(function () {\n return $(this).attr('data-option-val').toLowerCase() === customValue.toLowerCase();\n });\n customValue = dropdownItem.attr('data-option-val');\n }\n dropdownData.selectedCustomValues[dropdownId] = customValue;\n }\n }\n }\n }\n }\n return dropdownData;\n}\n/**\n * Function to update configurator-results section with options from current variationProduct, instead of defaultVariation\n */\nfunction refreshConfigResults() {\n $('.result-value').toArray().forEach(function (result) {\n if (!result.classList.contains('variant') && !result.classList.contains('variation-key-value') && !result.classList.contains('option-sidemark')) {\n $(result).remove();\n }\n });\n\n $('.result-value.variant').textContent = window.configurator.selectedVariant.id;\n\n $('.custom-dropdown-container.option').toArray().forEach(function (dd) {\n var newEl = document.createElement('p');\n\n newEl.classList.add('result-value', 'option-value');\n newEl.setAttribute('data-result-id', dd.dataset.dropdownId);\n newEl.textContent = ' ' + dd.dataset.dropdownName + ': ';\n\n $('.result-value.option-sidemark').before(newEl);\n });\n}\n\nmodule.exports = {\n initConfigurator: function () {\n var configData = $cache.tileContainer.data('config-data'),\n initialOp = $cache.tileContainer.data('selected-option'),\n selectedOp;\n\n if (initialOp) {\n if (initialOp === keys.size) {\n // if set to initial, select the first option which should be size\n selectedOp = configData[0];\n } else {\n configData.forEach(function (op) {\n if (op.name === initialOp) {\n selectedOp = op;\n }\n return;\n });\n }\n } else {\n initialOp = configData[0];\n var currentVariation = Object.keys(initialOp)[0];\n selectedOp = initialOp[currentVariation];\n\n // Disable all variation keys except the first\n if (Object.keys(initialOp).length > 1) {\n disableVariationOptions();\n $cache.variationDropdownCtnr.each(function () {\n if ($(this).data('dropdown-id') === 'variation-' + currentVariation) {\n enableOption($(this));\n }\n });\n }\n }\n\n // auto-select variations dropdowns if only one value exists\n setTimeout(function () {\n const excludedURLs = ['configurator-edit', 'configurator-variation', 'configurator-shared'];\n\n let $ddMenus = $('.dropdown-menu.variation'),\n regex = new RegExp(excludedURLs.join('|'), 'gi');\n\n if (!regex.test(window.location.pathname)) {\n $ddMenus.each((idx, menu) => {\n let items = $(menu).children('.dropdown-item');\n\n if (items.length === 1) {\n $(items).trigger('click');\n }\n });\n }\n }, 0);\n\n buildDisplay(selectedOp);\n hideIncludedExcludedDropdowns();\n if ($('.is-shared-page').length) {\n buildDesignMatrix();\n }\n },\n\n applyCustomsToGlobal: function () {\n $('div[data-dropdown-type=\"configurator\"][data-dropdown-id]').each(function (index, dropdown) {\n var dropdownData = $(dropdown).data('dropdown-data'),\n optionId = $(dropdown).data('dropdown-id');\n\n dropdownData = getCustomsFromDropdownData(dropdownData);\n\n if (dropdownData && dropdownData.selectedCustomValues) {\n if (dropdownData.selectedValueId !== '' && dropdownData.selectedValueId !== null) {\n var selectedCustomVals = [];\n var customKeys = Object.keys(dropdownData.selectedCustomValues);\n for (var j = 0; j < customKeys.length; j++) {\n selectedCustomVals.push({\n name: customKeys[j],\n value: dropdownData.selectedCustomValues[customKeys[j]]\n });\n }\n\n if (selectedCustomVals.length > 0) {\n global.shareCustomForms[optionId] = {\n selectedId: dropdownData.selectedValueId,\n selectedVal: dropdownData.selectedValueDisplayValue,\n selectedCustomVal: selectedCustomVals\n };\n }\n }\n }\n });\n },\n\n enableOptions: function () {\n $cache.dropdownContainer.each(function () {\n if ($(this).data('selected')) {\n enableOption($(this));\n enablePrevSibling($(this));\n }\n });\n },\n\n enableNext: function () {\n $(document).on('change', '.mobile-select:not(.quantity)', function () { // eslint-disable-line\n var $this = $(this),\n dropdownmenu = $this.closest('.custom-dropdown-container'),\n selectedId,\n currentOptionID = $this.closest('.custom-dropdown-container').data('dropdown-id');\n\n global.swatchPrice = 0;\n\n if (dropdownmenu.hasClass('variation')) {\n selectedId = $this.find('option[selected=selected]').data('attrid') || $this.find('option:selected').data('attrid');\n } else {\n selectedId = $this.find('option[selected=selected]').attr('id') || $this.find('option:selected').attr('id');\n }\n\n $('.custom-dropdown-container.option:not(.disabled)').each(function () {\n updatePriceOnChangeSelect($(this));\n });\n\n // Trigger quantity to update total price\n $('.quantity.mobile-select').trigger('change');\n\n // Show popup with custom swatches to fill data\n if (!global.isSubmitPressed && global.openCustomSwatchPopup) {\n for (var index = 0; index < global.popupSwatchImages.length; index++) {\n var el = global.popupSwatchImages[index],\n isCusstomSwatch = (el.currentSwatch === 'customPaint' || el.currentSwatch === 'RALColor' || el.swatchObj.modalId) && el.swatchObj.id !== 'tbd-ralcolor' && el.swatchObj.id !== 'tbd-custom-paint';\n if (el.swatchObj.id === selectedId && currentOptionID === Number(el.swatchObj.optionid) && isCusstomSwatch) {\n global.activateSliderId = el.swatchObj.id;\n // Don't show modal if the selected value has been cleared due to previous option change\n if (!(global.shareConfObj.hasOwnProperty(currentOptionID) && !$(this).val())) {\n $cache.swatchModal.modal('show');\n }\n if ($(this).val()) {\n updateOptions(selectedId, dropdownmenu);\n manageSaveButton();\n }\n return false;\n } else if (global.shareConfObj.hasOwnProperty(currentOptionID) && el.swatchObj.id === selectedId && (el.currentSwatch !== 'customPaint' || el.currentSwatch !== 'RALColor' || !el.swatchObj.modalId)) {\n deleteIdFromShareConfObj(currentOptionID);\n }\n }\n }\n\n global.shareConfObj[currentOptionID] = {\n selectedVal: $this.val(),\n selectedId: selectedId\n };\n\n // When select is changed remove not custom item from global.shareCustomForms object\n if (global.shareCustomForms[currentOptionID] && global.shareCustomForms[currentOptionID].selectedId !== global.shareConfObj[currentOptionID].selectedId) {\n delete global.shareCustomForms[currentOptionID];\n }\n\n if ($(this).val()) {\n enableNextDropdown(selectedId, dropdownmenu);\n }\n });\n },\n\n updateQuantityPrice: function () {\n $(document).on('change', '.mobile-select.configurator-quantity', function () {\n updateTotalPrice($(this).val());\n updateLeadTime($(this).val());\n });\n },\n\n updateVariationPrice: function () {\n if (window.hasOwnProperty('configurator') && window.configurator.selectedVariant && window.configurator.selectedVariant.price) {\n var totalPrice = parseInt($cache.configuratorQuantity.val()) * parseInt(window.configurator.selectedVariant.price.value);\n\n window.itemPriceVal = window.configurator.selectedVariant.price.value;\n\n $cache.priceSummaryFigure.attr('data-price', window.configurator.selectedVariant.price.value);\n $cache.priceSummaryFigure.text('$' + numberWithCommas(window.configurator.selectedVariant.price.value) + '.00');\n\n $('.configurator-total-summary-figure').text('$' + numberWithCommas(totalPrice) + '.00');\n }\n },\n\n updateCharCounters: function () {\n $(document).on('keyup', 'input[maxlength]', function () {\n updateCharCounter($(this));\n });\n },\n\n swatchModalOpen: function () {\n $(document).on('click', '.swatch-modal img', function () {\n var isPartOfDesignMatrix = $(this).closest('.design-matrix').length > 0;\n if (!isPartOfDesignMatrix) {\n global.activateSliderId = $(this).attr('swatch-id');\n $cache.swatchModal.modal('show');\n global.isSwatchSelected = false;\n\n setTimeout(function () {\n $cache.panelModal.modal('hide');\n }, keys.animationTimeout);\n }\n });\n },\n\n swatchModalShown: function () {\n $cache.swatchModal.on('shown.bs.modal', function () {\n if (!$cache.swatchSlider.hasClass('slick-initialized')) {\n var $productConfiguratorSwatches = new Carousel('productConfiguratorSwatches');\n\n $productConfiguratorSwatches.activate();\n }\n\n var activeImageType = $cache.swatchSlider.find('.slick-active').attr('current-group-swatch'),\n $activeImgId = $cache.swatchSlider.find('img[popup-slide-id=\"' + global.activateSliderId + '\"]'),\n activeIndex = $activeImgId.data('slick-index');\n\n $cache.swatchSlider.slick('slickGoTo', activeIndex);\n updateSwatchPopupDisplay(activeImageType, global.activateSliderId);\n\n // Animation for modals\n setTimeout(function () {\n $cache.swatchSlider.addClass('slider-fade');\n }, keys.animationTimeout);\n });\n },\n\n swatchModalHide: function () {\n // Animation for modals and handle closing without saving\n $cache.swatchModal.on('hide.bs.modal', function () {\n var dropdownmenu = $('.custom-dropdown-container[data-dropdown-name=\"' + $cache.optionName.text() + '\"]'),\n mobileSelectMenu = dropdownmenu.find('select'),\n curDropdownID = $cache.tileContainer.attr('data-selected-id');\n\n $cache.swatchSlider.removeClass('slider-fade');\n\n if (!global.isSwatchSelected) {\n $cache.panelModal.modal('show');\n }\n\n // if modal is cancelled, reset selection as if the modal was never opened\n if (!global.shareConfObj[curDropdownID]) {\n mobileSelectMenu.val('');\n if (mobileSelectMenu.find('option:selected').attr('id')) {\n mobileSelectMenu.find('option:selected').removeAttr('selected');\n }\n if (mobileSelectMenu.find('option[selected=selected]').attr('id')) {\n mobileSelectMenu.find('option[selected=selected]').removeAttr('selected');\n }\n dropdownmenu.find('.dropdown-toggle').text('-');\n global.isSwatchSelected = false;\n } else {\n updateActiveOptionAttr(dropdownmenu, global.shareConfObj[curDropdownID].selectedVal, false, global.shareConfObj[curDropdownID].selectedId);\n dropdownmenu.find('.dropdown-toggle').text(global.shareConfObj[curDropdownID].selectedVal);\n }\n });\n },\n\n swatchModalSlider: function () {\n $cache.swatchSlider.on('afterChange', function () {\n var $activeSwatch = $cache.swatchSlider.find('.slick-active'),\n activeSwatch = $activeSwatch.attr('popup-slide-id'),\n activeImageType = $activeSwatch.attr('current-group-swatch');\n\n updateSwatchPopupDisplay(activeImageType, activeSwatch);\n });\n },\n\n swatchModalSelectSwatch: function () {\n $(document).find('.select-swatch').on('click', function () {\n selectPopupSwatch();\n\n var curDropdownID = $cache.tileContainer.attr('data-selected-id');\n if (global.shareConfObj.hasOwnProperty(curDropdownID)) {\n deleteIdFromShareConfObj(curDropdownID);\n }\n });\n },\n\n swatchCustomModalSubmit: function () {\n $(document).on('submit', '.custom-swatch-form', function (e) {\n e.preventDefault();\n var $form = $(this),\n $selectEls = $form.find('.mobile-select'),\n activeId = $cache.swatchSlider.find('.slick-active').attr('popup-slide-id'),\n activeName = $('.slick-active').attr('popup-swatch-name'),\n dropdownmenu = $('.custom-dropdown-container[data-dropdown-name=\"' + $cache.optionName.text() + '\"]'),\n curDropdownID = $cache.tileContainer.attr('data-selected-id');\n\n // clear custom-dropdown placeholder 'select' values from form\n $selectEls.each(function () {\n if ($(this).val() && $(this).val().toLowerCase() === 'select') {\n $(this).val('');\n }\n });\n var formdataArr = $form.serializeArray();\n\n global.shareConfObj[curDropdownID] = {\n selectedVal: activeName,\n selectedId: activeId\n };\n\n global.shareCustomForms[curDropdownID] = {\n selectedVal: activeName,\n selectedId: activeId,\n selectedCustomVal: formdataArr\n };\n\n selectPopupSwatch();\n\n enableNextDropdown(activeId, dropdownmenu);\n });\n },\n\n swatchCustomModalDismiss: function () {\n $('.swatch-popup-close-wrapper button').on('click', function () {\n var dropdownmenu = $('.custom-dropdown-container[data-dropdown-name=\"' + $cache.optionName.text() + '\"]'),\n mobileSelectMenu = dropdownmenu.find('select'),\n curDropdownID = $cache.tileContainer.attr('data-selected-id');\n // if modal is cancelled, reset selection as if the modal was never opened\n if (!global.shareConfObj[curDropdownID]) {\n mobileSelectMenu.val('');\n if (mobileSelectMenu.find('option:selected').attr('id')) {\n mobileSelectMenu.find('option:selected').removeAttr('selected');\n }\n if (mobileSelectMenu.find('option[selected=selected]').attr('id')) {\n mobileSelectMenu.find('option[selected=selected]').removeAttr('selected');\n }\n dropdownmenu.find('.dropdown-toggle').text('-');\n global.isSwatchSelected = false;\n } else {\n updateActiveOptionAttr(dropdownmenu, global.shareConfObj[curDropdownID].selectedVal, false, global.shareConfObj[curDropdownID].selectedId);\n dropdownmenu.find('.dropdown-toggle').text(global.shareConfObj[curDropdownID].selectedVal);\n }\n $cache.swatchSlider.removeClass('slider-fade');\n $cache.swatchModal.modal('hide');\n $cache.panelModal.modal('hide');\n manageSaveButton();\n });\n },\n\n mobileSelectClick: function () {\n $(document).on('click', '.mobile-select-container:not(.quantity-wrapper)', function () {\n let select = this.querySelector('select');\n\n if (select.dataset.attrid && select.dataset.attrid !== $cache.tileContainer.attr('data-selected-option')) {\n clearDisplay();\n buildDisplay($(this).parents('.custom-dropdown-container').data('dropdown-data'));\n }\n\n // Adding 'show' to trigger mutation so data in popup is updated\n $(this).siblings('.custom-dropdown').addClass('show displayModal');\n\n if (param.isSharedLink && !global.isUserLoggedIn) {\n return;\n }\n\n if (!$(this).hasClass('custom-modal-mobile-select')) {\n $cache.panelModal.modal('show');\n }\n });\n },\n\n oahNoteDisplay: function () {\n $(document).on('change', '.custom-dropdown-container[data-dropdown-id=\"7\"] select', function () {\n // Display OAH only when \"CHAIN\" or \"Angled Chain\" is selected at Mounting\n var noteDisplaySelections = ['71', '299'];\n var curOAHSelection = $(this).children(':selected').attr('id');\n if (noteDisplaySelections.indexOf(curOAHSelection) > -1) {\n $('.oah-note').removeClass('d-none');\n } else {\n $('.oah-note').addClass('d-none');\n }\n });\n },\n\n mobileModalHide: function () {\n $cache.panelModal.on('hide.bs.modal', function () {\n $('.custom-dropdown').removeClass('show displayModal');\n if ($('.modal-backdrop').length) {\n $('.modal-backdrop').remove();\n }\n });\n },\n\n mobileModalHidden: function () {\n $cache.panelModal.on('hidden.bs.modal', function () {\n $('.custom-dropdown').removeClass('show');\n if ($('.modal-backdrop').length) {\n $('.modal-backdrop').remove();\n }\n });\n },\n\n mobileModalSelectOption: function () {\n $(document).on('click', '.select-mobile-option', function () {\n let activeID = $cache.tileContainer.attr('data-selected-id'),\n $activeDropdown = getActiveDropdownById(activeID),\n ddItem = $activeDropdown.find(`.dropdown-menu .dropdown-item[data-option-val=\"${this.value}\"]`);\n\n if (ddItem.length) {\n ddItem.trigger('click');\n }\n\n $cache.panelModal.modal('hide'); // Trigger close button so mutation is fired\n });\n },\n\n mobileModalSelectOverallOption: function () {\n $(document).on('click', '.select-overall-option', function () {\n var $thisVal = $('.overall-height-select .mobile-select').val(),\n $thisId = $('.overall-height-select .mobile-select .dropdown-item[value=\"' + $thisVal + '\"]').attr('id'),\n $activeOverallDropdown = $('.custom-dropdown.show').last(),\n ddItem = $activeOverallDropdown.find(`.dropdown-menu .dropdown-item[data-option-val=\"${$thisId}\"]`);\n\n if (ddItem.length) {\n ddItem.trigger('click');\n }\n $cache.panelModal.modal('hide'); // Trigger close button so mutation is fired\n });\n },\n\n sidemarkFocusEvents: function () {\n $(document).on('focus', '.sidemark-input', function () {\n $(this).parent().addClass('show');\n }).on('focusout', '.sidemark-input', function () {\n var $this = $(this);\n\n $this.parent().removeClass('show');\n\n if ($this.val().length) {\n $cache.sidemarkPlaceholder.addClass('d-none');\n } else {\n $cache.sidemarkPlaceholder.removeClass('d-none');\n }\n });\n\n if ($cache.sidemarkInput.val() && $cache.sidemarkInput.val().length) {\n $cache.sidemarkPlaceholder.addClass('d-none');\n }\n },\n\n sidemarkApply: function () {\n $(document).on('click', '.apply-sidemark', function () {\n var sidemarkPopupVal = $('.sidemark-popup-input').val();\n\n $cache.sidemarkInput.val(sidemarkPopupVal);\n\n if ($cache.sidemarkInput.val() && $cache.sidemarkInput.val().length) {\n $cache.sidemarkPlaceholder.addClass('d-none');\n } else {\n $cache.sidemarkPlaceholder.removeClass('d-none');\n }\n\n $cache.panelModal.modal('hide'); // Trigger close button so mutation is fired\n $cache.sidemarkInput.trigger('focusout');\n });\n },\n\n sidemarkPlaceholderClick: function () {\n $(document).on('click', '.sidemark-placeholder', function () {\n var $this = $(this);\n\n $this.addClass('d-none');\n $this.next().focus();\n });\n\n $(document).on('focus', '.sidemark-input', function () {\n $cache.sidemarkPlaceholder.addClass('d-none');\n });\n },\n\n saveReviewSubmit: function () {\n $cache.configuratorForm.on('submit', function (e) {\n e.preventDefault();\n refreshConfigResults();\n $('html, body').animate({ scrollTop: 0 }, 500);\n buildDisplay($(this).data('dropdown-data'));\n });\n },\n\n editDropdownsClick: function () {\n $('.edit-configurator').on('click', function () {\n $cache.resultsWrapper.addClass('d-none');\n $cache.dropdownsWrapper.removeClass('d-none');\n $cache.configuratorPageWrapper.removeClass('saveand-review-display');\n\n global.isSubmitPressed = false;\n });\n },\n\n printReview: function () {\n $('.order-print-button').on('click', function () {\n window.print();\n });\n },\n\n shareModalOpen: function () {\n $('.share-configurator').on('click', function () {\n var $subjectInput = $('.share-send-subject');\n $('#shareModal').modal('show');\n var base = $(this).data('url');\n initRecaptcha(shareFormSubmit);\n // Add quantity\n global.shareConfObj.quantity = {\n selectedId: $('.quantity-wrapper .configurator-quantity').val()\n };\n\n var sizeParam = global.shareConfObj[keys.variant] && global.shareConfObj[keys.variant].selectedId;\n if (!sizeParam) {\n sizeParam = window.configurator.selectedVariant.id;\n }\n base += '?pid=' + sizeParam;\n base += $(this).data('restricted') ? '&s_share=1' : '';\n\n Object.keys(global.shareConfObj).forEach(function (k) {\n if (k === 'sidemark' || k === 'quantity') {\n base += '&' + k + '=' + encodeURIComponent(global.shareConfObj[k].selectedId);\n } else if (k !== keys.variant) {\n base += '&dwopt_' + sizeParam + '_' + k + '=' + global.shareConfObj[k].selectedId;\n }\n });\n\n if (!isObjEmpty(global.shareCustomForms)) {\n base += '&custom=' + JSON.stringify(global.shareCustomForms);\n }\n\n var userInfoText = $('.share-send-message').data('user-info');\n $('.share-send-without-price').prop('checked', true);\n var productName = $('.sizedropdown .mobile-select').val() || $('.configurator-results-wrapper').data('product-name') || $('.configurator-results-wrapper').find('.result-value.variation-key-value .result-list-item').text();\n $('.share-send-message').text(userInfoText);\n $('.shareURL').val(base);\n $('.sharePricing').val($('.configurator-total-price').html());\n\n $subjectInput.val(productName + ' ' + $subjectInput.data('company-name'));\n });\n },\n\n shareFormSubmit: function () {\n $('.share-form').on('submit', function (e) {\n e.preventDefault();\n\n if (SitePreferences.SHARE_MODAL_RECAPTCHA_ENABLED) {\n recaptcha.showReCaptcha('share-form');\n } else {\n shareFormSubmit();\n }\n });\n },\n\n prefillDropdownsWithParams: function () {\n if (param.isSharedLink || $('.is-shared-page').length) {\n if (!global.isUserLoggedIn) {\n $('.configurator-total-wrapper').addClass('d-none');\n $cache.sidemarkWrapper.addClass('d-none');\n $('.swatch-popup').addClass('d-none');\n\n $cache.saveConfiguratorBtn.attr('disabled', true);\n }\n\n $(function () {\n $cache.variationDropdownCtnr.each(function () {\n var option = $(this).find('option:selected');\n\n if (option.length) {\n $(this).find('button').val(option.val()).text(option.text());\n }\n });\n\n if ($cache.dropdownContainer.length) {\n $cache.dropdownContainer.each(function (index, el) {\n global.openCustomSwatchPopup = false;\n\n enableNextSibling($(this));\n\n if ($(el).hasClass('option')) {\n $(el).find('select').trigger('change');\n }\n });\n }\n\n global.openCustomSwatchPopup = true;\n\n if (param.sharedQty) {\n $cache.configuratorQuantity.val(param.sharedQty);\n }\n $cache.configuratorQuantity.trigger('change');\n\n if (param.sharedSidemark && param.sharedSidemark.length) {\n var sidemarkVal = decodeURIComponent((param.sharedSidemark + '').replace(/\\+/g, '%20'));\n $('.sidemark-input').val(sidemarkVal);\n $('.sidemark-placeholder').addClass('d-none');\n }\n\n if (param.customForm) {\n var customFormObj = decodeURIComponent((param.customForm + '').replace(/\\+/g, '%20'));\n global.shareCustomForms = JSON.parse(customFormObj);\n // include the custom prefs in the original form so we can render it under selected options\n var $selectedOptions = $('.configurator-results');\n\n Object.keys(global.shareCustomForms).forEach(function (dropdownID) {\n var $customOption = $selectedOptions.find('.result-list-item[data-result-id=' + dropdownID + ']');\n $customOption.text($customOption.text() + getCustomColorString(dropdownID));\n });\n }\n\n // determine first unselected dropdown\n var firstUnselectedDropdown = $('.custom-dropdown-container.option:not(.disabled):not(.d-none)').filter(function () {\n return !$(this).find('.mobile-select option[selected=selected]').attr('id') && !$(this).find('.mobile-select option:selected').attr('id');\n })[0];\n\n // Build the display based on the next option dropdown\n if (firstUnselectedDropdown) {\n clearDisplay();\n buildDisplay($(firstUnselectedDropdown).data('dropdown-data'));\n } else if ($('.custom-dropdown-container.dropdown-inited:not(.disabled):not(.d-none)').length) {\n clearDisplay();\n buildDisplay($('.custom-dropdown-container.dropdown-inited:not(.disabled):not(.d-none)').last().data('dropdown-data'));\n }\n });\n }\n },\n\n invalidOptionsEvent: function () {\n $(document).ready(function () {\n var dataValue = $cache.configuratorForm.data('invalid-options');\n\n if ($cache.configuratorForm && dataValue && dataValue.options.length) {\n dataValue.options.forEach(function (el, index) {\n var invalidId = dataValue.options[index].split('__')[0],\n $invalidDropdown = $('.custom-dropdown-container[data-dropdown-id=\"' + invalidId + '\"]');\n\n $invalidDropdown.addClass('invalid-dropdown');\n $invalidDropdown.find('option').removeAttr('selected');\n $invalidDropdown.find('.custom-dropdown-toggle').text('-');\n });\n\n $cache.invalidPopup.modal('show');\n $cache.saveConfiguratorBtn.attr('disabled', true);\n } else if ($cache.configuratorForm && dataValue && dataValue.nonInvalidatingOptions.length) {\n dataValue.nonInvalidatingOptions.forEach(function (el, index) {\n var invalidId = dataValue.nonInvalidatingOptions[index].split('__')[0],\n $invalidDropdown = $('.custom-dropdown-container[data-dropdown-id=\"' + invalidId + '\"]');\n\n $invalidDropdown.find('option').removeAttr('selected');\n $invalidDropdown.find('.custom-dropdown-toggle').text('-');\n });\n } else if (global.isUserLoggedIn) {\n $cache.saveConfiguratorBtn.attr('disabled', false);\n manageSaveButton();\n }\n\n if ($cache.configuratorForm && $cache.configuratorForm.data('configurator-error')) {\n $cache.invalidPopup.modal('show');\n }\n });\n },\n addToCart: function () {\n $(document).on('click', 'button.add-to-cart, button.add-to-cart-global', function () {\n var addToCartUrl = null,\n pid = null,\n pidsObj = null;\n\n $('body').trigger('product:beforeAddToCart', this);\n\n pid = $('.variant .result-list-item').text();\n\n var $productContainer = $(this).closest('.product-detail');\n if (!$productContainer.length) {\n $productContainer = $(this).closest('.quick-view-dialog').find('.product-detail');\n }\n\n addToCartUrl = $('.configurator-form').attr('action');\n\n var form = {\n pid: pid,\n pidsObj: pidsObj,\n quantity: $cache.configuratorQuantity.val()\n };\n\n if (!$('.shared-link').length) {\n form.options = getOptions();\n } else {\n form.options = getSharedOptions();\n }\n\n if (!isObjEmpty(global.shareCustomForms)) {\n form.customOptions = getCustomFormOptions();\n }\n\n var sideMark = $('[data-result-id=\"sidemark\"] .result-list-item');\n\n if (sideMark) {\n form.sidemark = sideMark.text();\n }\n\n // $(this).trigger('updateAddToCartFormData', form);\n\n if (addToCartUrl) {\n $.ajax({\n url: addToCartUrl,\n method: 'POST',\n data: form,\n success: function (data) {\n handlePostCartAdd(data);\n\n $('body').trigger('product:afterAddToCart', data);\n\n $.spinner().stop();\n },\n error: function () {\n $.spinner().stop();\n }\n });\n }\n });\n },\n\n updateCart: function () {\n $('body').on('click', '.update-cart-product', function (e) {\n e.preventDefault();\n\n var updateProductUrl = $(this).data('update-product-url');\n var selectedQuantity = $cache.configuratorQuantity.val();\n var sideMark = $('[data-result-id=\"sidemark\"] .result-list-item');\n\n var uuid = $(this).data('uuid');\n\n var form = {\n uuid: uuid,\n pid: $('.variant .result-list-item').text(),\n quantity: selectedQuantity\n };\n form.options = getOptions();\n\n if (uuid) {\n form.uuid = uuid;\n }\n\n if (sideMark) {\n form.sidemark = sideMark.text();\n }\n\n if (!isObjEmpty(global.shareCustomForms)) {\n form.customOptions = getCustomFormOptions();\n }\n\n if (updateProductUrl) {\n $.spinner().start();\n $.ajax({\n url: updateProductUrl,\n type: 'post',\n data: form,\n dataType: 'json',\n success: function (data) {\n $('body').trigger('gtm:eec:updateItem', data);\n if (data.redirectUrl) {\n window.location.href = data.redirectUrl;\n }\n $.spinner().stop();\n },\n error: function () {\n $.spinner().stop();\n }\n });\n }\n });\n },\n\n handleComShadeInputs: function () {\n comShadeLoadInputs();\n\n $('.next-comShade, .back-comShade').on('click', function () {\n if (this.value === 'next') {\n comFormGroup.eq(-1).removeClass('d-show-mobile');\n comFormGroup.eq(-2).removeClass('d-show-mobile');\n comFormGroup.eq(-3).removeClass('d-show-mobile');\n comFormGroup.eq(0).addClass('d-show-mobile');\n comFormGroup.eq(1).addClass('d-show-mobile');\n comFormGroup.eq(2).addClass('d-show-mobile');\n comBackButton.removeClass('d-none');\n comNextButton.addClass('d-none');\n comSubmit.removeClass('d-show-mobile');\n $('.modal-action-number').html('

2 of 2

');\n } else {\n comShadeLoadInputs();\n }\n });\n },\n\n watchShowClass: function () {\n $cache.dropdownContainer.each(function () {\n observer.observe($(this).children('.custom-dropdown')[0], {\n attributes: true,\n attributeFilter: ['class']\n });\n });\n },\n\n handleVariationDropdown: function () {\n $(document).on('click', '.dropdown-menu.variation .dropdown-item', function () {\n let $ctnr = $(this).parents('.custom-dropdown-container'),\n $select = $ctnr.find('select'),\n querystring = new URLSearchParams(document.location.search);\n\n $select.val(this.dataset.optionVal);\n $ctnr.find('button').val($select.val()).text($select.val());\n\n updateVariationDropdownValues();\n var reqData = null;\n\n if (isVariationSelected()) {\n reqData = {\n pid: querystring.get('pid'),\n variations: $('select.mobile-select.variation option:checked').toArray().map(el => {\n return { attrID: $(el).data('attrid'), valueID: el.value };\n })\n };\n\n $.ajax({\n url: window.Urls.CONFIGURATOR_GET_VARIANT,\n headers: { 'Content-Type': 'application/json' },\n method: 'post',\n dataType: 'json',\n data: JSON.stringify(reqData),\n async: false\n }) /* eslint-disable */\n .done(data => {\n if (data) {\n $.ajax({\n url: window.Urls.CONFIGURATOR_VARIATION_AJAX,\n data: { pid: data.id },\n dataType: 'html',\n async: false\n })\n .done(ddHtml => {\n var optCtrn = null;\n\n document.querySelectorAll('.custom-dropdown-container.option').forEach(el => {\n el.remove();\n });\n\n $(ddHtml).insertAfter('.custom-dropdown-container.variation:last');\n\n optCtrn = /.*-[edit|variation]/i.test(location.pathname) ? $('.custom-dropdown-container.option.disabled') : $('.custom-dropdown-container.option.disabled').eq(0);\n optCtrn.each((idx, opt) => {\n enableOption($(opt));\n });\n\n // Reinit observer\n document.querySelectorAll('.custom-dropdown-container.option .custom-dropdown').forEach(el => {\n observer.observe(el, {\n attributes: true,\n attributeFilter: ['class']\n });\n });\n\n // Reinit dropdowns\n $(document).trigger('initDropDowns:reinit');\n hideIncludedExcludedDropdowns();\n hideExcludedDropdowns();\n\n $select.trigger('change');\n\n global.isSubmitPressed = false;\n\n // Disable save and review cta\n $cache.saveConfiguratorBtn.attr('disabled', true);\n\n // Re-enable save and review cta if all fields are completed\n manageSaveButton();\n })\n .fail(() => {\n $cache.invalidPopup.modal('show');\n });\n }\n\n if (data) {\n $cache.tileContainer.data('config-data', [data.configurator.variants].concat(data.options));\n window.configurator.selectedVariant = $.extend(window.configurator.selectedVariant, data);\n require('./configurator').updateVariationPrice();\n }\n }); /* eslint-enable */\n } else {\n clearNextSibling($ctnr.next(), keys.variation);\n $select.trigger('change');\n }\n });\n },\n\n updatePriceOnChangeSelect: updatePriceOnChangeSelect\n};\n"],"sourceRoot":""}