{"version":3,"sources":["webpack:///src/modules/content-block/components/additional-content.tsx?1a32","webpack:///src/modules/content-block/components/links.tsx?5056","webpack:///src/modules/content-block/content-block.tsx?8675","webpack:///./src/modules/mands-cookies/components/accept-button.tsx?09ec","webpack:///./src/modules/mands-cookies/components/reject-button.tsx?ea44","webpack:///./src/modules/mands-cookies/components/links.tsx?f175","webpack:///./src/modules/mands-cookies/mands-cookies.tsx?d4c7","webpack:///src/modules/site-picker/site-picker.view.tsx?dcff","webpack:///src/modules/account-invoice-tile/components/account-invoice-tile-description.tsx?0029","webpack:///src/modules/account-invoice-tile/components/account-invoice-tile-links.tsx?d307","webpack:///src/modules/account-invoice-tile/account-invoice-tile.tsx?9a78","webpack:///src/modules/accordion-item/accordion-item.view.tsx?b04f","webpack:///src/modules/accordion-item/accordion-item.tsx?fc54","webpack:///src/modules/fabrikam/views/cart.view.tsx?8115","webpack:///src/modules/aad-generic/aad-generic.view.tsx?ecad","webpack:///src/modules/catalog-picker/catalog-picker.view.tsx?d632","webpack:///src/modules/accordion/accordion.view.tsx?8c70","webpack:///./src/themes/mands/views/checkout-delivery-options.view.tsx?24f6","webpack:///./src/modules/mands-cookies/mands-cookies.view.tsx?8f68","webpack:///src/modules/aad-generic/aad-generic.tsx?d537","webpack:///src/modules/catalog-picker/catalog-picker.tsx?dde5","webpack:///src/modules/navigation-menu/navigation-menu.data.ts?a9f0","webpack:///src/modules/navigation-menu/navigation-menu.tsx?390c","webpack:///src/modules/organization-users-tile/organization-users-tile.view.tsx?d92a","webpack:///src/modules/footer-item/footer-item.tsx?f8b4","webpack:///src/modules/site-picker/site-picker.tsx?35ca","webpack:///src/modules/accordion/accordion.tsx?45c1","webpack:///src/modules/navigation-menu/navigation-menu.view.tsx?df40","webpack:///src/modules/account-invoice-tile/account-invoice-tile.view.tsx?4620","webpack:///src/index.ts?c6ae","webpack:///src/modules/footer-item/footer-item.view.tsx?235e","webpack:///src/modules/content-block/content-block.view.tsx?a86e","webpack:///src/modules/organization-users-tile/components/account-organization-users-tile-description.tsx?8d2f","webpack:///src/modules/organization-users-tile/components/account-organization-users-tile-links.tsx?2a03","webpack:///src/modules/organization-users-tile/organization-users-tile.tsx?9c60","webpack:///src/modules/account-customer-balance/account-customer-balance.view.tsx?35d2"],"names":["assembleNode","item","props","itemIndex","_item$links","heading","renderHeading","additionalContentHeading","requestContext","React","Msdyn365","text","tag","className","editProps","onEdit","event","handleAdditionalTextChange","subtext","renderParagraph","additionalContentParagraphText","links","map","ctaLink","index","renderLinks","linkIndex","editableLink","ariaLabel","linkText","linkUrl","destinationUrl","openInNewTab","role","key","link","onTextChange","handleAdditionalLinkTextChange","additionalContentItemContainer","additionalContentItemLinks","contentBlockAdditionalContent","additionalContent","reactNodes","push","additionalContentNode","additionalContentItems","ContentCardLinks","constructor","_mapEditableLinks","linkdata","length","editableLinks","forEach","payLoad","getPayloadObject","this","telemetryContent","contentAction","etext","attributes","getTelemetryAttributes","btnClass","additionalProperties","onClick","onTelemetryClick","render","ContentBlock","getTelemetryObject","context","request","telemetryPageName","friendlyName","telemetry","handleTextChange","config","target","value","handleParagraphChange","paragraph","handleLinkTextChange","Number","_heading$tag","_this$props$context$r","_this$props$config$im","image","imageAriaLabel","contentBlockTitle","imageProps","gridSettings","imageSettings","contentBlockLinks","ArrayExtensions","hasElements","LinksComponent","Object","assign","msdyn365__moduleLayout","contentBlockText","contentBlockImage","preserveImageSpace","moduleType","typeName","imagePropertyName","moduleId","id","layout","shouldSkipToMainImage","error","contentBlockviewProps","_objectSpread","title","moduleClass","contentBlockContainer","moduleProps","classnames","imageContainer","detailsContainer","contentBlockAnchorTag","imageLink","_getImageLink","handleAdditionalParagraphChange","handleAdditionalText","handleAdditionalParagraph","renderView","additionalContentObject","actionableRegion","CookieComplianceAcceptButton","_ref","acceptCookiesButtonText","acceptCookiesButtonAriaLabel","onClose","cookies","type","handleAccept","get","set","CookieComplianceRejectButton","rejectCookiesButtonText","rejectCookiesButtonAriaLabel","handleReject","CookieComplianceLinks","CookieCompliance","_this$cookies","_this$cookies2","_props$config$cookies","_props$config$forceFu","super","_this$props$config$ac","actionLinks","handleContentChange","content","state","visible","cookieRef","_onDismiss","bind","Cookies","isRejected","isAccepted","listOfCookies","cookiesList","split","forceFullyRemoveCookiesList","MsDyn365","isBrowser","handleCookies","componentDidMount","isConsentGiven","setState","removeCookies","resources","acceptCookiesAriaLabel","rejectCookiesAriaLabel","moduleConfig","viewProps","onDismiss","CookieComplianceBanner","ref","AlertProps","color","fade","Content","RichTextComponent","acceptButton","rejectButton","setConsentCookie","location","reload","data","cookieName","trim","document","cookie","remove","expires","Date","setTime","getTime","toUTCString","_renderSitePicker","_renderSiteOptionsList","SitePickerMenuList","SitePickerMenuListItem","SitePickerMenuListItemArray","options","Node","onMouseLeave","resetSiteOptionsState","isMobileView","SitePicker","Module","_props$SitePickerMenu","SitePickerMobileContainer","renderSiteOptions","_renderMobileView","_props$config$heading","SitePickerMenu","SitePickerMenuSpan","siteOptionsState","_renderDesktopView","AccountInvoiceTileDescription","description","AccountInvoiceTileLinks","AccountInvoiceTile","handleHeadingChange","_data$customerBalance","cultureFormatter","formatCurrency","currencyCode","accountInvoiceTileDescription","invoiceTotalAmount","customerBalance","result","OpenInvoiceBalance","toFixed","format","_renderAccordionItemContent","items","AccordionItemView","drawer","accordionSlots","AccordionItemContainer","AccordionItemContent","accordionItemContent","AccordionItem","moduleClassName","accordionItemTitle","_onToggle","shouldComponentUpdate","nextProps","slots","accordionExpandedStateResult","accordionExpandedState","expanded","undefined","isAllExpanded","isExpandedOnInitialLoad","ControlledDrawer","toggleButtonText","collapseProps","isOpen","onToggle","interactionStyle","accordionState","actionContext","update","createAccordionStateInput","__decorate","observer","_renderPromotions","promotions","promotionMessageWrapper","promotionMessage","promotionSeeAllLink","promotionDialog","_renderCartlines","cartLines","storeSelector","backToShoppingButton","waitingComponent","cartLoadingStatus","cartDataResult","mulitplePickUp","emailDeliveryModeCode","emptyCartText","cartLine","toString","cartline","_renderBOPISBlock","_renderGroupBOPISBlock","addToOrderTemplate","addToWishlist","onToggleBopisHandler","isBopisSelected","pickUpInStore","callbacks","toggleBopis","onChangeStoreHandler","_cartLine$data","DeliveryMode","shipInsteadDisplayText","shipToAddressDisplayText","pickItUpDisplayText","pickUpAtStoreWithLocationText","changeStoreDisplayText","TelemetryConstant","PickupInStore","puckUpinStoreAttribute","ContainerProps","orgUnitName","Button","_renderErrorBlock","errorData","errors","Wrapper","header","_renderOrderSummarylines","orderSummaryLines","OrderSummaryItems","promoCode","subtotal","shipping","otherCharge","tax","totalDiscounts","orderTotal","_renderInvoiceSummarylines","invoiceSummaryLines","invoices","giftCard","loyalty","_renderCartLinesGroup","cartLinesGroup","cartlines","_props$context$action2","_props$context$action3","cartlineId","_renderCartLinesGroupHeader","_countItems","channel","EmailDeliveryModeCode","multiplePickUpEnabled","count","_cartLine$pickUpInSto","pickUpText","shippingText","emailshippingText","payInvoicesDisplayText","groupTitle","IsInvoiceLine","StringExtensions","isNullOrEmpty","toLowerCase","_renderCartLinesGroupTitle","_cartLine$data2","countItem","reduce","_item$data","Quantity","_cartLine$pickUpInSto2","_cartLine$pickUpInSto3","_cartLine$pickUpInSto4","itemLabel","itemsLabel","suffix","deliveryOption","CartView","_props$cart","_props$context$action","_props$cart2","renderModuleAttributes","promotionOptions","cart","hasInvoiceLine","CartlinesWrapper","orderSummaryHeading","OrderSummaryWrapper","invoiceSummaryLineitems","orderSummaryLineitems","OrderSummaryErrors","checkoutAsSignInUserButton","checkoutAsGuestButton","expressCheckoutButton","ExpressCheckoutSectionWrapper","createTemplateFromCartButton","aadGeneric","aadConainer","aadAPIConainer","CatalogPickerViewFunctionComponent","catalogPicker","catalogs","accordionView","AccordionContainer","accordionItems","accordionButtons","HeaderSection","HeadingWrapper","accordianButtonsContainer","accordionItemContainer","DeliveryOptionList","DeliveryOptionsList","list","DeliveryOption","code","radioButton","price","DeliveryOptionSelected","_ref2","ErrorMessage","_ref3","Error","message","CheckoutDeliveryOptionsView","CheckoutDeliveryOptions","viewState","deliveryOptions","deliveryOptionSelected","errorMessage","waiting","saveButton","editButton","cancelButton","isLoading","isError","isShowList","isShowSelected","isShowSaveButton","isShowEditButton","isShowCancelButton","CookieComplianceView","Alert","AadGeneric","$i2e","$element","window","insertServiceContent","getElementContent","initialize","CatalogPicker","PureComponent","_this$props$data$cata","catalogPickerHeading","createElement","Text","_moduleClassName","isCatalogsAvailable","catalogPickerParagraph","catalogValidationText","handleText","_renderCatalogPicker","_renderCatalogPickerButton","catalogId","RecordId","getCatalogId","currentCatalogText","linkToCatalog","_getUrlSync","catalogUrl","getUrlSync","fullUrl","URL","href","searchParams","changeCatalogButtonText","_this$props$data$cata2","reactKey","JSON","stringify","String","firstOrDefault","Images","tabIndex","Name","Image","src","generateImageUrl","apiSettings","Uri","galleryImageSettings","altText","AltText","loadFailureBehavior","MenuTypeIndexId","MenuSource","NavigationMenu","isRetail","isCMS","_setNavigationSource","sourceType","_updateViewport","viewport","device","Type","navigationMenuSource","isMobile","menuItemList","locale","nameTranslations","nameTranslation","find","Language","resizeThrottledEventHandler","addThrottledEvent","componentWillUnmount","removeEventListener","_this$props$config$di","_this$props$config$di2","_mapData","isEmptyOrNullObject","viewports","xs","q","w","h","xl","lazyload","Navigation","MenuList","ListItem","showCategoryImage","displayCategoryImage","showPromotionalContent","displayPromotionalImage","Link","DivContainer","ImageDivContainer","ImageContainer","Span","MobileDescriptionContainer","MobileBackButton","backButtonAriaLabel","MobileDescriptionLabel","menuItemData","mergedData","categories","_constructMenuItemData","cmsNavItems","idx","_constructTopMenuItemData","_this$props$config$en","_this$props$config$ro","enabletopMenu","mergedRootMenuData","topMenu","rootMenuNavigation","linkURL","imageSource","subMenu","retailItem","cmsItem","addedAllMenu","categoryPromotionalContent","cmsItemText","menuAriaLabel","promotionalData","filter","promoItem","_promoItem$categoryNa","_retailItem$Name","categoryName","_NavigationMenu$getFr","_NavigationMenu$getFr2","RSItemIdInit","getFriendlyName","NameTranslations","Url","_getNestedChildren","promotionalContent","menuSource","Retail","CMSItemIdInit","imageDestinationURL","_getCMSNestedChildren","Cms","shouldOpenNewTab","category","imageSourceUrl","arguments","nestedChildren","Children","allCategoryMenuText","getCategoryUrl","subMenus","_getViewport","innerWidth","sm","md","lg","observable","computed","OrganizationUsersTileView","OrganizationUsersTile","FooterItem","footerItemClassName","_createHeading","_createImageMarkup","_createText","_createLinkText","EditableLink","_createLink","HeadingContainer","ItemContainer","ariaHiddenAttr","_cookieName","_cookieExpirationInSeconds","_escFunction","keyCode","expandSiteOptions","KeyCodes","Escape","setTimeout","_this$_sitePickerMenu","_this$_sitePickerMenu2","nextFocus","activeElement","_this$_sitePickerMenu3","_sitePickerMenuButton","current","contains","_sitePickerMenuNode","_resetSiteOptionsState","focus","Tab","_this$_sitePickerMenu4","_this$_sitePickerMenu5","_handleOutsideClick","_this$_sitePickerMenu6","_this$_sitePickerMenu7","_handleChange","createRef","_renderSiteOptions","_document","_document2","addEventListener","body","_document3","_document4","_this$props$config$he","_this$props$config$he2","Drawer","openGlyph","closeGlyph","glyphPlacement","_renderSitePickerImage","expandSiteOptionsState","e","preventDefault","currentTarget","cookieConfig","maxAge","defaultImageSettings","siteOptions","_image$imageSettings","_item$siteRedirectUrl","siteImage","siteRedirectUrl","siteName","Accordion","expandAllButtonRef","collapseAllButtonRef","_onExpandAll","_onCollapseAll","isDisabled","headingComponent","accordionViewProps","_renderAccordionButton","_getAccordionItem","ExpandAll","attributeExpandAll","CollapseAll","attributeCollapseAll","showToggleAll","disabled","expandAllText","toggleAllSeparator","collapseAllText","_this$collapseAllButt","_this$expandAllButton","NavigationMenuView","currentLevel","_updateCategoryImage","categoryImageSrc","option","promotionalImage","imageSrc","promotionalItemImageSettings","categoryImage","categoryImageAltText","_handleDropdownToggle","parentId","isBackTrack","activeMenu","mobileViewLabelText","parentMenu","_handleGoBack","_handleClickOutside","menuNode","_handleFocusOutside","relatedTarget","_closeSubmenu","_shouldAddFocusMenuRef","optionLinkText","_getCategoryImage","_categoryImage$imageS","categoryImageSettings","menuItemRef","componentDidUpdate","_this$menuItemRef$cur","children","_renderDisplay","menuItem","menuItemDatum","_getFromSubMenu","_createMenuItemList","i","found","_renderSubMenu","_renderButtonMenuItem","_renderLinkMenuItem","_renderSpanMenuItem","IsSubMenu","enableMultiSupportMenu","enableMultilevelMenu","multiLevelSupportedMenu","menuLevelSupport","levelClassName","menuOptions","hasOptions","haveSubmenu","Math","round","_renderMenu","onFocus","hoverEffect","isParent","imagesource","onMouseOver","_renderPromotionalLink","level","currentItem","submenu","categoryImageDisplay","promotionalContentDisplay","DivContainerClass","_item$additionalPrope","FooterItemView","_renderElement","renderAdditionalContent","_additionalContent$ad","ContentBlockView","AccountOrganizationUsersTileDescription","AccountOrganizationUsersTileLinks","accountOrganizationUsersTileDescriptionForSingleUser","accountOrganizationUsersTileDescriptionForMultipleUsers","numUsers","users","accountOrganizationUsersTileDescription","customerInformation","IsB2bAdmin","accountSectionHeading","creditSummarySectionHeading","accountLabels","accountValues","creditSummaryLabels","creditSummaryValues","homeButton","actions","requestStatementModal","availableCredit","balanceOwed","creditExcess"],"mappings":";uQAmDA,MA4FMA,EAAeA,CACjBC,EACAC,EACAC,KAC6C,IAAAC,EAO7C,MAAO,CACHC,QAPgBJ,EAAKI,SAjGPC,EAACC,EAAkCL,EAA4CC,KACjG,MAAMK,EAAiBN,EAAMM,eAC7B,OACIC,gBAACC,IAAa,CACVC,KAAMJ,EACNK,IAAI,IACJC,UAAU,sDACVC,UAAW,CAKPC,OAAQC,IACJd,EAAMe,2BAA2Bd,EAAWa,IAEhDR,qBAkFwBF,CAAcL,EAAKI,QAASH,EAAOC,GAQnEQ,KAPkBV,EAAKiB,SAtEPC,EAACC,EAAwClB,EAA4CC,KACzG,MAAMK,EAAiBN,EAAMM,eAC7B,OACIC,gBAACC,IAAa,CACVC,KAAMS,EACNR,IAAI,IACJC,UAAU,2DACVC,UAAW,CAKPC,OAAQC,IACJd,EAAMe,2BAA2Bd,EAAWa,IAEhDR,qBAuD0BW,CAAgBlB,EAAKiB,QAAShB,EAAOC,GAQvEkB,MAPwB,QAAbjB,EAAGH,EAAKoB,aAAK,IAAAjB,OAAA,EAAVA,EAAYkB,IAAI,CAACC,EAAqBC,IA1CxCC,EAACF,EAAqBrB,EAA4CC,EAAmBuB,KACrG,MAAMC,EAAoC,CACtCC,UAAWL,EAAQK,UACnBf,UAAW,0DACXgB,SAAUN,EAAQM,SAClBC,QAASP,EAAQO,QAAQC,eACzBC,aAAcT,EAAQS,aACtBC,KAAM,QAEJzB,EAAiBN,EAAMM,eAC7B,OACIC,gBAACC,IAAa,CACVwB,IAAKR,EACLS,KAAMR,EACNb,UAAW,CAKPsB,aAAcpB,IACVd,EAAMmC,+BAA+BX,EAAWvB,EAAWa,IAE/DR,qBAqBDiB,CAAYF,EAASrB,EAAOC,EAAWqB,IAO9Cc,+BAAgC,CAAEzB,UAAW,4DAC7C0B,2BAA4B,CAAE1B,UAAW,uDASpC2B,EACTtC,IAEA,MAAM,kBAAEuC,GAAsBvC,EAC9B,IAAKuC,EACD,OAGJ,MAAMC,EAA4D,GAKlE,OAJAD,EAAkBnB,IAAI,CAACrB,EAAMuB,IAClBkB,EAAWC,KAAK3C,EAAaC,EAAMC,EAAOsB,KAG9C,CACHoB,sBAAuB,CAAE/B,UAAW,iDACpCgC,uBAAwBH,IC/JzB,MAAMI,UAAyBrC,gBAAtCsC,c,oBAeqB,KAAAC,kBAAqBC,IAClC,IAAKA,GAAgC,IAApBA,EAASC,OACtB,OAAO,KAEX,MAAMC,EAAuC,GAqB7C,OApBAF,EAASG,QAAQ,CAACjB,EAAMX,KAEpB,MAAM6B,EAAUC,2BAAiB,QAASC,KAAKrD,MAAMsD,iBAAkB,GAAI,IACrE3B,EAAWM,EAAKN,SAAWM,EAAKN,SAAW,GACjDwB,EAAQI,cAAcC,MAAQ7B,EAC9B,MAAM8B,EAAaC,iCAAuBL,KAAKrD,MAAMsD,iBAAkBH,GACjEQ,EAAqB,IAAVrC,EAAc,mBAAqB,qBAC9CG,EAAoC,CACtCC,UAAWO,EAAKP,UAChBf,UAAWgD,EACXhC,SAAUM,EAAKN,SACfC,QAASK,EAAKL,QAAQC,eACtBC,aAAcG,EAAKH,aACnBC,KAAMsB,KAAKrD,MAAM+B,KACjB6B,qBAAsBH,EACtBI,QAASC,2BAAiBT,KAAKrD,MAAMsD,iBAAkBH,EAASxB,IAEpEsB,EAAcR,KAAKhB,KAGhBwB,GAvCJc,SACH,MAAMd,EAAgBI,KAAKP,kBAAkBO,KAAKrD,MAAMmB,OACxD,OACIZ,gBAAA,OAAKI,UAAU,yBACVsC,GAAiBA,EAAcD,OAAS,EACrCzC,gBAACC,IAAc,CACXW,MAAO8B,EACPrC,UAAW,CAAEsB,aAAcmB,KAAKrD,MAAMkC,aAAc5B,eAAgB+C,KAAKrD,MAAMM,kBAEnF,OAiCLsC,Q,ykBCtBR,MAAMoB,UAAqBzD,gBAAlCsC,c,oBACqB,KAAAS,iBAAsCW,6BACnDZ,KAAKrD,MAAMkE,QAAQC,QAAQC,kBAC3Bf,KAAKrD,MAAMqE,aACXhB,KAAKrD,MAAMsE,WAmGR,KAAAC,iBAAoBzD,GAA0CuC,KAAKrD,MAAMwE,OAAOrE,QAASM,KAAOK,EAAM2D,OAAOC,MAS7G,KAAAC,sBAAyB7D,GAA0CuC,KAAKrD,MAAMwE,OAAOI,UAAY9D,EAAM2D,OAAOC,MAO9G,KAAAG,qBAAwBrD,GAAuBV,IAC9CuC,KAAKrD,MAAMwE,OAAOrD,OAASkC,KAAKrD,MAAMwE,OAAOrD,MAAM2D,OAAOtD,MAC1D6B,KAAKrD,MAAMwE,OAAOrD,MAAM2D,OAAOtD,IAAYG,SAAWb,EAAM2D,OAAOC,QAlHpEX,SAAM,IAAAgB,EAAAC,EAAAC,EACT,MAAM,QAAE9E,EAAO,UAAEyE,EAAS,MAAEM,EAAK,MAAE/D,EAAK,UAAER,EAAS,eAAEwE,GAAmB9B,KAAKrD,MAAMwE,OAC7EY,EAAoBjF,GACtBI,gBAACC,IAAa,CACVG,UAAU,0BACVD,IAAgB,QAAbqE,EAAE5E,EAAQO,WAAG,IAAAqE,IAAI,KACpBtE,KAAMN,EAAQM,KACdG,UAAW,CAAEC,OAAQwC,KAAKkB,iBAAkBjE,eAAgB+C,KAAKrD,MAAMkE,QAAQC,WAGjFkB,EAAa,CACfC,aAAqD,QAAzCN,EAAE3B,KAAKrD,MAAMkE,QAAQC,QAAQmB,oBAAY,IAAAN,IAAI,GACzDO,cAAeL,aAAK,EAALA,EAAOK,eAEpBC,EAAoBrE,GAASsE,kBAAgBC,YAAYvE,IAC3DZ,gBAACoF,EAAcC,OAAAC,OAAA,GACP,CACA1E,QACAe,aAAcmB,KAAKwB,qBACnBvE,eAAgB+C,KAAKrD,MAAMkE,QAAQC,QACnCb,iBAAkBD,KAAKC,iBACvBvB,KAAgF,SAAzEsB,KAAKrD,MAAMwE,OAAmCsB,uBAAoC,OAAS,YAIxGC,EAAmBnB,GACrBrE,gBAACC,IAA0B,CACvBC,KAAMmE,EACNjE,UAAU,yBACVC,UAAW,CAAEC,OAAQwC,KAAKsB,sBAAuBrE,eAAgB+C,KAAKrD,MAAMkE,QAAQC,WAGtF6B,EACFzF,gBAACC,IAAcoF,OAAAC,OAAA,GACPX,EACAG,EAAU,CACd/E,eAAgB+C,KAAKrD,MAAMkE,QAAQC,QACnC8B,oBAAoB,EACpBrF,UAAW,CACPoB,IAA4B,QAAzBiD,EAAE5B,KAAKrD,MAAMwE,OAAOU,aAAK,IAAAD,IAAI,GAChC3E,eAAgB+C,KAAKrD,MAAMkE,QAAQC,QACnC+B,WAAY7C,KAAKrD,MAAMmG,SACvBC,kBAAmB,QACnBC,SAAUhD,KAAKrD,MAAMsG,GACrBC,OAASlD,KAAKrD,MAAMwE,OAAmCsB,wBAE3DU,uBAAqB,KAI7B,IAAKpB,IAAsBW,IAAqBP,EAE5C,OADAnC,KAAKrD,MAAMkE,QAAQI,UAAUmC,MAAM,uDAC5B,KAEX,MAAMC,EAAqBC,IAAA,GACpBtD,KAAKrD,OAAK,IACb4G,MAAOxB,EACP3E,KAAMsF,EACNb,MAAOc,EACP7E,MAAOqE,EACPqB,YAAaxD,KAAKrD,MAAMwE,OAAO7D,UAC/BmG,sBAAuB,CACnBC,YAAa1D,KAAKrD,MAClBW,UAAWqG,IAAW,mBAAoBrG,IAE9CsG,eAAgB,CAAEtG,UAAW,2BAC7BuG,iBAAkB,CAAEvG,UAAW,6BAC/BwG,sBAAuB,CACnBzG,IAAK,IACLC,UAAW,yBACXoB,KAAM,QAEVqF,UAAW/D,KAAKgE,gBAChBlC,iBACA5C,kBAAmBD,EAA8B,CAC7ChC,eAAgB+C,KAAKrD,MAAMkE,QAAQC,QACnC5B,kBAAmBc,KAAKrD,MAAMwE,OAAOjC,kBACrCxB,2BAA4BsC,KAAKtC,2BACjCuG,gCAAiCjE,KAAKiE,gCACtCnF,+BAAgCkB,KAAKlB,iCAEzCoF,qBAAsBlE,KAAKtC,2BAC3ByG,0BAA2BnE,KAAKiE,gCAChCnF,+BAAgCkB,KAAKlB,iCAGzC,OAAOkB,KAAKrD,MAAMyH,WAAWf,GAgC1B3F,2BAA2BO,EAAeR,GACzCuC,KAAKrD,MAAMwE,OAAOjC,oBAClBc,KAAKrD,MAAMwE,OAAOjC,kBAAkBuC,OAAOxD,IAAQnB,QAAUW,EAAM2D,OAAOC,OAI3EvC,+BAA+BX,EAAmBF,EAAeR,GACpE,MAAM4G,EACDrE,KAAKrD,MAAMwE,OAAOjC,mBACfkD,kBAAgBC,YAAYrC,KAAKrD,MAAMwE,OAAOjC,oBAC9Cc,KAAKrD,MAAMwE,OAAOjC,kBAAkBuC,OAAOxD,KAC/C,GACAoG,EAAwBvG,QACxBuG,EAAwBvG,MAAM2D,OAAOtD,IAAYG,SAAWb,EAAM2D,OAAOC,OAI1E4C,gCAAgChG,EAAeR,GAC9CuC,KAAKrD,MAAMwE,OAAOjC,oBAClBc,KAAKrD,MAAMwE,OAAOjC,kBAAkBuC,OAAOxD,IAAQN,QAAUF,EAAM2D,OAAOC,OAI1E2C,gBACJ,MAAM,UAAED,EAAS,MAAEjG,EAAK,iBAAEwG,GAAqBtE,KAAKrD,MAAMwE,OAC1D,MAAoB,kBAAhBmD,EACIP,WAAWvF,eACJuF,EAAUvF,eACVV,GAASsE,kBAAgBC,YAAYvE,IAAUA,EAAM,GAAGS,QACxDT,EAAM,GAAGS,QAAQC,eAErB,KAEJ,MAIAmC,a,kKCzLR,MAAM4D,EAAwEC,IAMhF,IANiF,wBAClFC,EAAuB,6BACvBC,EAA4B,iBAC5BzE,EAAgB,QAChB0E,EAAO,QACPC,GACHJ,EACG,MAAM1E,EAAoBC,2BAAiB,QAASE,EAAmB,kBACjEG,EAAaC,iCAAuBJ,EAAmBH,GAO7D,OACI5C,gBAAA,SAAAqF,OAAAC,OAAA,CACIqC,KAAK,SACLvH,UAAU,8CAA6C,aAC3CoH,EACZlE,QAXasE,KACZF,WAASG,IAAI,WACdH,WAASI,IAAI,UAAU,GAE3BL,MAQQvE,GAEHqE,ICvBAQ,EAAyET,IAMjF,IANkF,wBACnFU,EAAuB,6BACvBC,EAA4B,iBAC5BlF,EAAgB,QAChB0E,EAAO,QACPC,GACHJ,EACG,MAAM1E,EAAoBC,2BAAiB,QAASE,EAAmB,kBACjEG,EAAaC,iCAAuBJ,EAAmBH,GAO7D,OACI5C,gBAAA,SAAAqF,OAAAC,OAAA,CACIqC,KAAK,SACLvH,UAAU,8CAA6C,aAC3C6H,EACZ3E,QAXa4E,KACZR,WAASG,IAAI,WACdH,WAASI,IAAI,UAAU,GAE3BL,MAQQvE,GAEH8E,I,UCrBP,MAAOG,UAA8BnI,gBAA3CsC,c,oBAeqB,KAAAC,kBAAqBC,IAClC,IAAKA,GAAgC,IAApBA,EAASC,OACtB,OAAO,KAEX,MAAMC,EAAuC,GAoB7C,OAnBAF,EAASG,QAAQ,CAACjB,EAAMX,KAEpB,MAAM6B,EAAUC,2BAAiB,QAASC,KAAKrD,MAAMsD,iBAAkB,GAAI,IACrE3B,EAAWM,EAAKN,SAAWM,EAAKN,SAAW,GACjDwB,EAAQI,cAAcC,MAAQ7B,EAC9B,MAAM8B,EAAaC,iCAAuBL,KAAKrD,MAAMsD,iBAAkBH,GACjE1B,EAAoC,CACtCC,UAAWO,EAAKP,UAChBf,UAAW,OACXgB,SAAUM,EAAKN,SACfC,QAASK,EAAKL,QAAQC,eACtBC,aAAcG,EAAKH,aACnBC,KAAM,OACN6B,qBAAsBH,EACtBI,QAASC,2BAAiBT,KAAKrD,MAAMsD,iBAAkBH,EAASxB,IAEpEsB,EAAcR,KAAKhB,KAGhBwB,GAtCJc,SACH,MAAMd,EAAgBI,KAAKP,kBAAkBO,KAAKrD,MAAMmB,OACxD,OACIZ,gBAAA,QAAMI,UAAU,mCACXsC,GAAiBA,EAAcD,OAAS,EACrCzC,gBAACC,IAAc,CACXW,MAAO8B,EACPrC,UAAW,CAAEsB,aAAcmB,KAAKrD,MAAMkC,aAAc5B,eAAgB+C,KAAKrD,MAAMM,kBAEnF,O,ykBCYpB,MAAMqI,UAAyBpI,gBAa3BsC,YAAmB7C,GAA8C,IAAA4I,EAAAC,EAAAC,EAAAC,EAC7DC,MAAMhJ,GAPO,KAAAsD,iBAAsCW,6BACnDZ,KAAKrD,MAAMkE,QAAQC,QAAQC,kBAC3Bf,KAAKrD,MAAMqE,aACXhB,KAAKrD,MAAMsE,WA8GR,KAAAO,qBAAwBrD,GAAuBV,IAAqC,IAAAmI,EAEtD,QAAjCA,EAAI5F,KAAKrD,MAAMwE,OAAO0E,mBAAW,IAAAD,GAA7BA,EAAgCzH,KAEhC6B,KAAKrD,MAAMwE,OAAO0E,YAAY1H,GAAWG,SAAWb,EAAM2D,OAAOC,QAQlE,KAAAyE,oBAAuBrI,IAC1BuC,KAAKrD,MAAMwE,OAAO4E,QAAUtI,EAAM2D,OAAOC,OAtHzCrB,KAAKgG,MAAQ,CAAEC,SAAS,GACxBjG,KAAKkG,UAAYhJ,cACjB8C,KAAKmG,WAAanG,KAAKmG,WAAWC,KAAKpG,MACvCA,KAAK4E,QAAU,IAAIyB,IACnBrG,KAAKsG,aAAyB,QAAZf,EAAAvF,KAAK4E,eAAO,IAAAW,IAAZA,EAAcR,IAAI,WACpC/E,KAAKuG,aAAyB,QAAZf,EAAAxF,KAAK4E,eAAO,IAAAY,IAAZA,EAAcT,IAAI,WACpC/E,KAAKwG,cAAwC,QAA3Bf,EAAG9I,EAAMwE,OAAOsF,mBAAW,IAAAhB,OAAA,EAAxBA,EAA0BiB,MAAM,KACrD1G,KAAK2G,4BAAsE,QAA3CjB,EAAG/I,EAAMwE,OAAOwF,mCAA2B,IAAAjB,OAAA,EAAxCA,EAA0CgB,MAAM,MAE/EE,IAASC,WAAc7G,KAAKsG,YAAetG,KAAKuG,YAChDvG,KAAK8G,cAAc9G,KAAKwG,cAAe7J,EAAMkE,SAG9CkG,oBACH,MAAM,QAAElG,GAAYb,KAAKrD,MACrBkE,GAAWA,EAAQC,SAAWD,EAAQC,QAAQ8D,UAAY/D,EAAQC,QAAQ8D,QAAQoC,kBAClFhH,KAAKiH,SAAS,CAAEhB,SAAS,IAEzBjG,KAAKsG,YAAcM,IAASC,YAAc7G,KAAKuG,aAC/CvG,KAAKkH,cAAclH,KAAK2G,4BAA6B9F,GACrDb,KAAK8G,cAAc9G,KAAKwG,cAAe3F,IAIxCH,SACH,MAAM,OAAES,EAAM,QAAEN,EAAO,UAAEsG,EAAS,UAAElG,GAAcjB,KAAKrD,OACjD,wBAAE8H,EAAuB,uBAAE2C,EAAsB,wBAAElC,EAAuB,uBAAEmC,GAA2BF,GACvG,QAAElB,GAAYjG,KAAKgG,MACnBgB,EAAiBnG,GAAWA,EAAQC,SAAWD,EAAQC,QAAQ8D,SAAW/D,EAAQC,QAAQ8D,QAAQoC,iBACxG,IAAIM,EACJ,IACIA,EAAenG,EACjB,MAAOiC,GAEL,OADAnC,EAAUmC,MAAM,+DAA+DA,GACxElG,gBAAA,WAAMkG,GAGjB,GAAI4D,IAAmBf,EAEnB,OADAjG,KAAKrD,MAAMkE,QAAQI,UAAUmC,MAAM,2DAC5B,KAGX,IAAKwD,IAASC,UACV,OAAO3J,2BAAA,MAGX,MAAMqK,EAASjE,IAAA,GACRtD,KAAKrD,OAAK,IACb6K,UAAWxH,KAAKmG,WAChBsB,uBAAwB,CACpB/D,YAAa1D,KAAKrD,MAClBW,UAAWqG,IAAW,uBAAwB2D,EAAahK,WAC3DoK,IAAK1H,KAAKkG,WAEdyB,WAAY,CACRrK,UAAW,kCACXsK,MAAO,QACPC,MAAM,GAEVC,QAAS,CACLxK,UAAW,iCAEfF,KAAMkK,EAAavB,SACf7I,gBAAC6K,IAAiB,CACdzK,UAAU,6BACVF,KAAMkK,EAAavB,QACnBxI,UAAW,CAAEC,OAAQwC,KAAK8F,oBAAqB7I,eAAgB+C,KAAKrD,MAAMkE,QAAQC,WAG1FhD,MAAOsE,kBAAgBC,YAAYiF,EAAazB,cAC5C3I,gBAACmI,EAAqB,CAClBvH,MAAOwJ,EAAazB,YACpBhH,aAAcmB,KAAKwB,qBACnBvE,eAAgB+C,KAAKrD,MAAMkE,QAAQC,QACnCb,iBAAkBD,KAAKC,mBAG/B+H,aACI9K,gBAACqH,EAA4B,CACzBI,QAAS3E,KAAKmG,WACd1B,wBAAyBA,EACzBC,6BAA8B0C,EAC9BnH,iBAAkBD,KAAKC,iBACvB2E,QAAS5E,KAAK4E,UAGtBqD,aACI/K,gBAAC+H,EAA4B,CACzBN,QAAS3E,KAAKmG,WACdjB,wBAAyBA,EACzBC,6BAA8BkC,EAC9BpH,iBAAkBD,KAAKC,iBACvB2E,QAAS5E,KAAK4E,YAK1B,OAAO5E,KAAKrD,MAAMyH,WAAWmD,GAwBzBpB,aACJ,MAAM,QAAEtF,GAAYb,KAAKrD,MAErBkE,GAAWA,EAAQC,SAAWD,EAAQC,QAAQ8D,UAC9C/D,EAAQC,QAAQ8D,QAAQsD,mBACxBC,SAASC,UAEbpI,KAAKiH,SAAS,CAAEhB,SAAS,IAGrBa,cACJuB,EACAxH,GAIAwH,EAAKxI,QAAQyI,IACLzH,EAAQC,QAAQ8D,QAAQG,IAAIuD,EAAWC,UACvCC,SAASC,OAAYH,EAAWC,OAAd,wBAClB1H,EAAQC,QAAQ8D,QAAQ8D,OAAOJ,EAAWC,WAI9CrB,cACJmB,EACAxH,GAIAwH,EAAKxI,QAAQyI,IACT,GAAIzH,EAAQC,QAAQ8D,QAAQG,IAAIuD,EAAWC,QAAS,CAChD,MAAMI,EAAU,IAAIC,KACpBD,EAAQE,QAAQF,EAAQG,UAAY,GACpCN,SAASC,OAAS,GAAGH,EAAWC,oBAAoBI,EAAQI,wBAC5DlI,EAAQC,QAAQ8D,QAAQ8D,OAAOJ,EAAWC,YAM3CjD,a,iFCpNC3I,aACLO,2BAAA,KAAG8L,EAAkBrM,IAGhC,MAaMsM,EAA0BtM,IAC5B,MAAM,mBAAEuM,EAAkB,uBAAEC,EAAsB,4BAAEC,GAAgCzM,EAC9E0M,EAAUD,EAA6BrL,IAAI,CAACrB,EAAMuB,IAEhDf,gBAACoM,OAAI/G,OAAAC,OAAA,GAAK2G,EAAsB,CAAExK,IAAKV,IAClCvB,IAIb,OACIQ,gBAACoM,OAAI/G,OAAAC,OAAA,GAAK0G,EAAkB,CAAEK,aAAc5M,EAAM6M,wBAC7CH,IAkBPL,EAAqBrM,IACvB,MAAM,aAAE8M,EAAY,WAAEC,GAAe/M,EACrC,OAAOO,gBAACyM,SAAMpH,OAAAC,OAAA,GAAKkH,GAAaD,EAfT9M,KAAgD,IAAAiN,EACvE,MAAM,0BAAEC,GAA8BlN,EACtC,OACIO,gBAACoM,OAAI/G,OAAAC,OAAA,GAAKqH,EAAyB,CAAErJ,QAAS7D,EAAMmN,oBAChD5M,gBAAA,WACsC,QADtC0M,EACKjN,EAAMyM,mCAA2B,IAAAQ,OAAA,EAAjCA,EAAmC7L,IAAI,CAACrB,EAAMuB,IACpCf,gBAAA,OAAKyB,IAAKV,GAAQvB,OASMqN,CAAkBpN,GA5CzCA,KAA+B,IAAAqN,EACvD,MAAM,eAAEC,EAAc,mBAAEC,GAAuBvN,EAC/C,OACIO,2BAAA,KACIA,gBAACoM,OAAI/G,OAAAC,OAAA,GAAKyH,EAAc,CAAEzJ,QAAS7D,EAAMmN,oBAChB,QADiCE,EACrDrN,EAAMwE,OAAOrE,eAAO,IAAAkN,OAAA,EAApBA,EAAsB5M,KACvBF,gBAACoM,OAAI/G,OAAAC,OAAA,GAAK0H,KAEbvN,EAAMwN,iBAAmBlB,EAAuBtM,GAAS,OAoCQyN,CAAmBzN,M,4JC/C1F,MAAM0N,EAA0E7F,IAAA,IAAC,YAAE8F,GAAa9F,EAAA,OACnGtH,gBAAA,KAAGI,UAAU,wCAAwCgN,ICwBnD7K,EAAoBA,CAACC,EAAwBO,KAC/C,IAAKP,GAAgC,IAApBA,EAASC,OACtB,OAAO,KAEX,MAAMC,EAAuC,GACvCE,EAAUC,2BAAiB,QAASE,EAAmB,IAgB7D,OAfAP,EAASG,QAAQ,CAACjB,EAAMX,KACpB6B,EAAQI,cAAcC,MAAQvB,EAAKN,SACnC,MAAM8B,EAAaC,iCAAuBJ,EAAmBH,GACvD1B,EAAoC,CACtCC,UAAWO,EAAKP,UAChBf,UAAW,gCACXgB,SAAUM,EAAKN,SACfC,QAASK,EAAKL,QAAQC,eACtBC,aAAcG,EAAKH,aACnBC,KAAM,OACN6B,qBAAsBH,GAE1BR,EAAcR,KAAKhB,KAGhBwB,GAGI2K,MAtCqD/F,IAA8D,IAA7D,MAAE1G,EAAK,iBAAEmC,EAAgB,eAAEhD,EAAc,aAAE4B,GAAc2F,EAC1H,GAAqB,IAAjB1G,EAAM6B,OACN,OAAO,KAEX,MAAMC,EAAgBH,EAAkB3B,EAAOmC,GAC/C,OACI/C,gBAAA,OAAKI,UAAU,kCACVsC,GAAiBA,EAAcD,OAAS,EACrCzC,gBAACC,IAAc,CAACW,MAAO8B,EAAerC,UAAW,CAAEsB,eAAc5B,oBACjE,O,ykBCHhB,MAAMuN,UAA2BtN,gBAG7BsC,YAAY7C,GACRgJ,MAAMhJ,GA6DH,KAAA8N,oBAAuBhN,GAA0CuC,KAAKrD,MAAMwE,OAAOrE,QAAQM,KAAOK,EAAM2D,OAAOC,MAE/G,KAAAG,qBAAwBrD,GAAuBV,IAC9CuC,KAAKrD,MAAMwE,OAAOrD,OAASkC,KAAKrD,MAAMwE,OAAOrD,MAAMK,KACnD6B,KAAKrD,MAAMwE,OAAOrD,MAAMK,GAAWG,SAAWb,EAAM2D,OAAOC,QAhE/DrB,KAAKC,iBAAmBW,6BACpBZ,KAAKrD,MAAMkE,QAAQC,QAAQC,kBAC3Bf,KAAKrD,MAAMqE,aACXhB,KAAKrD,MAAMsE,WAIZP,SAAM,IAAAgK,EACT,MAAM,OACFvJ,EAAM,KACNkH,EAAI,UACJlB,EACAtG,SACI8J,kBAAkB,eACdC,EAAc,aAGdC,KAGR7K,KAAKrD,OACH,UAAEW,EAAS,QAAER,EAAO,MAAEgB,GAAUqD,GAChC,8BAAE2J,GAAkC3D,EAGpC4D,EAAyCH,IADM,QAA3BF,EAAArC,EAAK2C,gBAAgBC,cAAM,IAAAP,OAAA,EAA3BA,EAA6BQ,qBAAsB,GACGC,QAAQ,GAAIN,GAEtFP,EAAcS,GAAsBK,iBAAON,EAA+BC,GAE1ExD,EAASjE,IAAA,GACRtD,KAAKrD,OAAK,IACbW,YACAkN,mBAAoB,CAChB9G,YAAa1D,KAAKrD,MAClBW,UAAWqG,IAAW,0BAA2BxC,EAAO7D,YAE5DR,QAASA,GAAWA,EAAQM,MACxBF,gBAACC,IAAa,CACVG,UAAU,mCACVD,IAAKP,EAAQO,KAAO,KACpBD,KAAMN,EAAQM,KACdG,UAAW,CAAEC,OAAQwC,KAAKyK,oBAAqBxN,eAAgB+C,KAAKrD,MAAMkE,QAAQC,WAG1FhD,MAAOA,GAASA,EAAM6B,OAAS,GAC3BzC,gBAACoF,EAAcC,OAAAC,OAAA,GACP,CACA1E,QACAe,aAAcmB,KAAKwB,qBACnBvE,eAAgB+C,KAAKrD,MAAMkE,QAAQC,QACnCb,iBAAkBD,KAAKC,oBAInCqK,YAAaA,GAAepN,gBAACmN,EAA6B,CAACC,YAAaA,MAG5E,OAAOtK,KAAKrD,MAAMyH,WAAWmD,IAYtBiD,a,+EC5Ff,MAgBMa,EAA+BC,GAE7BpO,2BAAA,KACKoO,GAASA,EAAM3L,OAAS,EACnB2L,EAAMvN,IAAI,CAACrB,EAAuBuB,IACvBf,gBAACA,WAAc,CAACyB,IAAKV,GAAQvB,IAExC,MAIH6O,UA3B8C5O,IACzD,MAAM,OAAE6O,EAAM,eAAEC,EAAc,uBAAEC,EAAsB,qBAAEC,GAAyBhP,EACjF,OACIO,gBAACyM,SAAMpH,OAAAC,OAAA,GAAKkJ,GACRxO,gBAACoM,OAAI/G,OAAAC,OAAA,GAAKgJ,GACNtO,gBAACoM,OAAI/G,OAAAC,OAAA,GAAKmJ,GACLF,GACGA,EAAeG,sBACfH,EAAeG,qBAAqBjM,QACpC0L,EAA4BI,EAAeG,2B,6tBCenE,IAAMC,EAAN,cAA4B3O,YAKxBsC,YAAY7C,GACRgJ,MAAMhJ,GALO,KAAAmP,gBAA0B,oBAoDpC,KAAArB,oBAAuBhN,GAA0CuC,KAAKrD,MAAMwE,OAAO4K,mBAAqBtO,EAAM2D,OAAOC,MA9CxHrB,KAAKgM,UAAYhM,KAAKgM,UAAU5F,KAAKpG,MACrCA,KAAKC,iBAAmBW,6BACpBZ,KAAKrD,MAAMkE,QAAQC,QAAQC,kBAC3Bf,KAAKrD,MAAMqE,aACXhB,KAAKrD,MAAMsE,WAIZgL,sBAAsBC,GACzB,OAAIlM,KAAKrD,MAAM0L,OAAS6D,EAAU7D,KAM/B3H,SACH,MAAM,MAAEyL,EAAK,WAAE/H,EAAU,OAAEjD,EAAM,KAAEkH,GAASrI,KAAKrD,MAC3CyP,EAA+B/D,GAAQA,EAAKgE,wBAA0BhE,EAAKgE,uBAAuBpB,OAClGqB,EACFF,QAA+EG,IAA/CH,EAA6BI,cACvDnE,GAAQlH,EAAOsL,wBACfL,GAAgCA,EAA6BI,cAsBvE,OAAOpI,EArBQd,IAAA,GACRtD,KAAKrD,OAAK,IACb+O,uBAAwB,CACpBhI,YAAa1D,KAAKrD,MAClBW,UAAWqG,IAAW3D,KAAK8L,gBAAiB3K,EAAO7D,YAEvDqO,qBAAsB,CAClBrO,UAAW,6BAEfkO,OAAQ,CACJnO,IAAKqP,mBACLpP,UAAc0C,KAAK8L,gBAAR,WACXa,iBAAmBxL,EAAO4K,oBAAsB5K,EAAO4K,oBAAuB,GAC9Ea,cAAe,CAAEC,OAAQP,GACzBQ,SAAU9M,KAAKgM,UACfnN,aAAcmB,KAAKyK,oBACnBxN,eAAgB+C,KAAKrD,MAAMkE,QAAQC,QACnCb,iBAAkBD,KAAKC,kBAE3BwL,eAAgBU,KAOhBH,UAAUhG,GACd,IAAKA,EAAM6G,QAAqC,sBAA3B7M,KAAKrD,MAAMoQ,iBAAyD,CACrF,MAAMC,EAAiB,CAAER,eAAe,GACxCxM,KAAKrD,MAAMkE,QAAQoM,cAAcC,OAAOC,YAA0BH,GAAiBA,MA1DzFnB,EAAauB,YAAA,CADlBC,KACKxB,GA8DSA,a,iHC1Ef,MA0CMyB,EAAqBC,GAEnBrQ,2BAAA,KACIA,gBAACoM,OAAI/G,OAAAC,OAAA,GAAK+K,EAAWC,yBAChBD,EAAWE,iBACXF,EAAWG,oBACXH,EAAWI,kBAMtBC,EAAmBA,CACrBC,EACA1G,EACA2G,EACAC,EACAC,EACAC,EACAC,EACAjO,EACAkO,EACAC,KAEA,MAAM,cAAEC,GAAkBlH,EAE1B,OAAI8G,EACO/Q,2BAAA,KAAG+Q,GAEVJ,EACOA,EAAU9P,IAAI,CAACuQ,EAAUrQ,IAExBf,gBAAA,OAAKI,UAAU,sBAAsBqB,IAAK,GAAGV,KAAS2I,IAASC,UAAU0H,cACpED,EAASE,SACTL,EAAiB,KAAOM,EAAkBH,EAAUnH,EAAW2G,EAAe7N,EAAkBmO,GAChGD,EACGjR,gBAACoM,OAAI,CAAChM,UAAU,sCACXoR,EAAuBJ,EAAUnH,EAAW2G,EAAe7N,EAAkBmO,GAC7EE,EAASK,mBACTL,EAASM,cACTN,EAAS5F,QAEd4F,EAASK,mBACTzR,gBAACoM,OAAI,CAAChM,UAAU,gCACXgR,EAASK,mBACTL,EAASM,cACTN,EAAS5F,QAGdxL,2BAAA,KACKoR,EAASM,cACTN,EAAS5F,UAO3BwF,EACHhR,gBAAA,OAAKI,UAAU,wBACXJ,gBAAA,KAAGI,UAAU,iBAAiB+Q,GAC7BN,GAGL7Q,2BAAA,KAAG8Q,IAULa,EAAuBA,CAACP,EAA+BQ,IAA6B,KACtFR,EAASS,eAAiBT,EAASS,cAAcC,UAAUC,aAAaH,IAQtEI,EAAwBZ,GAAkC,KAC5DA,EAASS,eAAiBT,EAASS,cAAcC,UAAUC,aAAY,IAGrER,EAAoBA,CACtBH,EACAnH,EACA2G,EACA7N,EACAmO,KACoB,IAAAe,EAEpB,IAAKb,EAASS,gBAAkBjB,IAA8B,QAAbqB,EAAAb,EAASjG,YAAI,IAAA8G,OAAA,EAAbA,EAAeX,SAASY,gBAAiBhB,EACtF,OAAO,KAGX,MAAM,uBACFiB,EAAsB,yBACtBC,EAAwB,oBACxBC,EAAmB,8BACnBC,EAA6B,uBAC7BC,GACAtI,EAEE2H,EAAkBR,EAASS,cAAcD,gBAEzChP,EAAUC,2BAAiB,QAASE,EAAmByP,oBAAkBC,eACzEC,EAAyBvP,iCAAuBJ,EAAmBH,GAEzE,OACI5C,gBAACoM,OAAI/G,OAAAC,OAAA,GAAK8L,EAASS,cAAcc,gBAC7B3S,gBAAA,OAAKI,UAAU,+BACVwR,EACG5R,gBAAA,QAAMI,UAAU,WAAWkS,GAE3BtS,gBAAA,QAAMI,UAAU,QAAQgS,IAG/BR,GACG5R,gBAAA,OAAKI,UAAU,oCACXJ,gBAAA,QAAMI,UAAU,0CAA0CgR,EAASS,cAAce,aACjF5S,gBAAC6S,SAAM,CAACrR,KAAK,OAAOpB,UAAU,mCAAmCkD,QAAS0O,EAAqBZ,IAC1FmB,IAIbvS,gBAAC6S,SAAMxN,OAAAC,OAAA,CACHlF,UAAU,4BACNsS,EAAsB,CAC1BpP,QAASqO,EAAqBP,EAAUQ,KAEvCA,EAAkBO,EAAyBE,KAMtDS,EAAqBC,GAClBA,GAAyC,IAA5BA,EAAUC,OAAOvQ,OAI/BzC,gBAACoM,OAAI/G,OAAAC,OAAA,GAAKyN,EAAUE,SACfF,EAAUG,OACVH,EAAUC,QALR,KAUTG,EAA2BA,CAC7BC,EACAC,EACA5T,IAEK2T,EAIDpT,gBAACoM,OAAI/G,OAAAC,OAAA,GAAK+N,GACL5T,EAAM6T,UACNF,EAAkBG,SAClBH,EAAkBI,SAClBJ,EAAkBK,YAClBL,EAAkBM,IAClBN,EAAkBO,eAAiBP,EAAkBO,eAAiB,KACtEP,EAAkBQ,YAVhB,KAeTC,EAA6BA,CAC/BC,EACAT,EACA5T,IAEKqU,EAKD9T,gBAACoM,OAAI/G,OAAAC,OAAA,GAAK+N,GACLS,EAAoBC,SACpBD,EAAoBE,SACpBF,EAAoBG,QACpBH,EAAoBF,aARzBnU,EAAMkE,QAAQI,UAAUmC,MAAM,uDACvB,MAYTgO,EAAwBA,CAACzU,EAAuBwK,IAC9CxK,EAAM0U,gBAAkB1U,EAAM0U,eAAe1R,OAAS,EAElDzC,gBAAA,OAAKI,UAAU,wBACVX,EAAM0U,eAAetT,IAAIuT,IAAY,IAAAC,EAAAC,EAClC,OACItU,gBAAA,OAAKyB,IAAK2S,EAAU,GAAGG,WAAYnU,UAAU,+BACxCoU,EACGJ,EAAU,GACV3U,EAAMmR,cACN3G,EACAwK,EAAYL,GACsC,QAD5BC,EACtB5U,EAAMkE,QAAQoM,cAAchQ,eAAe2U,eAAO,IAAAL,OAAA,EAAlDA,EAAoDM,uBAEvDjE,EACG0D,EACA3U,EAAMwK,UACNxK,EAAMmR,cACNnR,EAAMoR,qBACNpR,EAAMqR,iBACNrR,EAAMsR,kBACNtR,EAAMuR,eACNvR,EAAMsD,iBACNtD,EAAMmV,sBAC4C,QADvBN,EAC3B7U,EAAMkE,QAAQoM,cAAchQ,eAAe2U,eAAO,IAAAJ,OAAA,EAAlDA,EAAoDK,2BAQzElV,EAAMuR,eACThR,gBAAA,OAAKI,UAAU,uBACXJ,gBAAA,OAAKI,UAAU,wBACXJ,gBAAA,KAAGI,UAAU,iBAAiBX,EAAMwK,UAAUkH,eAC7C1R,EAAMoR,uBAIf7Q,2BAAA,KAAGP,EAAMqR,kBAGX0D,EAA8BA,CAChCpD,EACAR,EACA3G,EACA4K,EACA3D,KACA,IAAA4D,EACA,MAAMlD,EAAwC,QAAzBkD,EAAG1D,EAASS,qBAAa,IAAAiD,OAAA,EAAtBA,EAAwBlD,iBAC1C,WAAEmD,EAAU,aAAEC,EAAY,kBAAEC,EAAiB,uBAAEC,GAA2BjL,EAChF,IAAIkL,EASJ,OAPAA,EAAavD,EAAkBmD,EAAaC,EACxC5D,EAASjG,MAAQiG,EAASjG,KAAKmG,SAAS8D,cACxCD,EAAaD,EACLG,mBAAiBC,cAAcpE,KACvCiE,EAAa/D,EAASjG,MAAQiG,EAASjG,KAAKmG,SAASY,eAAiBhB,EAAwB+D,EAAoBE,GAIlHnV,2BAAA,KACIA,gBAAA,OAAKI,UAAU,8CACXJ,gBAAA,KAAGI,UAAW,8CAA8C+U,EAAWI,uBACvEvV,gBAAA,KAAGI,UAAW,8CAA8C+U,EAAWI,eAAkBJ,GACxFK,EAA2BpE,EAAUnH,EAAW4K,MAM3DrD,EAAyBA,CAC3BJ,EACAnH,EACA2G,EACA7N,EACAmO,KACoB,IAAAuE,EAEpB,IAAKrE,EAASS,gBAAkBjB,IAA8B,QAAb6E,EAAArE,EAASjG,YAAI,IAAAsK,OAAA,EAAbA,EAAenE,SAASY,gBAAiBhB,EACtF,OAAO,KAGX,MAAM,uBAAEqB,EAAsB,uBAAEJ,EAAsB,oBAAEE,GAAwBpI,EAE1E2H,EAAkBR,EAASS,cAAcD,gBAEzChP,EAAUC,2BAAiB,QAASE,EAAmByP,oBAAkBC,eACzEC,EAAyBvP,iCAAuBJ,EAAmBH,GAEzE,OACI5C,2BAAA,KACK4R,EACG5R,gBAAC6S,SAAM,CAACzS,UAAU,qCAAqCkD,QAAS0O,EAAqBZ,GAAS,YAAY,UACrGmB,GAEL,KACJvS,gBAAC6S,SAAMxN,OAAAC,OAAA,CACHlF,UAAU,sCACNsS,EAAsB,CAC1BpP,QAASqO,EAAqBP,EAAUQ,KAEvCA,EAAkBO,EAAyBE,KAMtDoC,EAAerD,IACjB,IAAIsE,EAAY,EAIhB,OAHAA,EAAYtE,EAASuE,OAAO,CAACd,EAAOrV,KAAQ,IAAAoW,EACxC,OAAOf,IAAkB,QAATe,EAAApW,EAAK2L,YAAI,IAAAyK,OAAA,EAATA,EAAWtE,SAASuE,WAAY,IACjD,GACIH,GAGLF,EAA6BA,CAACpE,EAA+BnH,EAA2B4K,KAAiB,IAAAiB,EAAAC,EAAAC,EAC3G,MAAMpE,EAAwC,QAAzBkE,EAAG1E,EAASS,qBAAa,IAAAiE,OAAA,EAAtBA,EAAwBlE,iBAC1C,UAAEqE,EAAS,WAAEC,GAAejM,EAC5BkM,EAAStB,EAAQ,EAAIqB,EAAaD,EACxC,OACIjW,2BAAA,KACIA,gBAACoM,OAAI,CAAChM,UAAU,oDACXwR,EACG5R,gBAAA,KAAGI,UAAU,uDACc,QADuC2V,EAC7D3E,EAASS,qBAAa,IAAAkE,OAAA,EAAtBA,EAAwBK,eACxB,KACsB,QADlBJ,EACJ5E,EAASS,qBAAa,IAAAmE,OAAA,EAAtBA,EAAwBpD,aAE7B,KACJ5S,gBAAA,KAAGI,UAAU,uD,IACPyU,EACD,IACAsB,E,QAONE,UAvX6B5W,IAAqB,IAAA6W,EAAAC,EAAAC,EAAA,OAC7DxW,gBAAA,MAAAqF,OAAAC,OAAA,CAAKlF,UAAWX,EAAMW,UAAW2F,GAAItG,EAAMsG,IAAQtG,EAAMgX,uBAAuBhX,IAC3EA,EAAM4G,MACN5G,EAAMiX,kBAAoBtG,EAAkB3Q,EAAMiX,kBACxC,QAAVJ,EAAA7W,EAAMkX,YAAI,IAAAL,GAAVA,EAAYM,gBAAkBnX,EAAMmV,sBACjCV,EAAsBzU,EAAOA,EAAMwK,WAEnCjK,gBAACoM,OAAI/G,OAAAC,OAAA,GAAK7F,EAAMoX,kBACXnG,EACGjR,EAAM2U,UACN3U,EAAMwK,UACNxK,EAAMmR,cACNnR,EAAMoR,qBACNpR,EAAMqR,iBACNrR,EAAMsR,kBACNtR,EAAMuR,eACNvR,EAAMsD,iBACNtD,EAAMmV,sBAC4C,QADvB2B,EAC3B9W,EAAMkE,QAAQoM,cAAchQ,eAAe2U,eAAO,IAAA6B,OAAA,EAAlDA,EAAoD5B,wBAI/DlV,EAAMqX,qBACH9W,gBAACoM,OAAI/G,OAAAC,OAAA,GAAK7F,EAAMsX,qBACXtX,EAAMqX,oBACI,QAAVN,EAAA/W,EAAMkX,YAAI,IAAAH,GAAVA,EAAYI,eACP/C,EAA2BpU,EAAMuX,wBAAyBvX,EAAM4T,kBAAmB5T,GACnF0T,EAAyB1T,EAAMwX,sBAAuBxX,EAAM4T,kBAAmB5T,GACpFqT,EAAkBrT,EAAMyX,oBACxBzX,EAAM0X,2BACN1X,EAAM2X,sBACN3X,EAAM4X,uBAAyBnS,kBAAgBC,YAAY1F,EAAM4X,uBAC9DrX,gBAACoM,OAAI/G,OAAAC,OAAA,GAAK7F,EAAM6X,+BAAgC7X,EAAM4X,uBACtD,KACH5X,EAAMoR,qBACNpR,EAAM8X,8BAGd9X,EAAMmR,iB,+EClDCnR,cACZ,MAAM,WAAE+X,EAAU,YAAEC,EAAW,eAAEC,EAAc,QAAE9X,GAAYH,EAE7D,OACIO,gBAACyM,SAAMpH,OAAAC,OAAA,GAAKkS,GACRxX,gBAACoM,OAAI/G,OAAAC,OAAA,GAAKmS,GACL7X,EACA8X,M,kJCFV,MAAMC,EAAwElY,IACjF,MAAM,cAAEmY,GAAkBnY,EAC1B,OACIO,gBAACyM,SAAMpH,OAAAC,OAAA,GAAKsS,GACPnY,EAAMG,QACNH,EAAM4E,UACN5E,EAAMoY,WAKJF,a,iFCCAG,UAjBsCrY,IACjD,MAAM,QAAEG,EAAO,mBAAEmY,EAAkB,eAAEC,GAAmBvY,EACxD,OAAKA,EAAMG,SAAYH,EAAMwY,kBAAqBxY,EAAMuY,eAKpDhY,gBAACyM,SAAMpH,OAAAC,OAAA,GAAKyS,GACR/X,gBAACoM,OAAI/G,OAAAC,OAAA,GAAK7F,EAAMyY,eACZlY,gBAACoM,OAAI/G,OAAAC,OAAA,GAAK7F,EAAM0Y,gBAAiBvY,GAChCH,EAAMwY,kBAAoBjY,gBAACoM,OAAI/G,OAAAC,OAAA,GAAK7F,EAAM2Y,2BAA4B3Y,EAAMwY,mBAEjFjY,gBAACoM,OAAI/G,OAAAC,OAAA,GAAK7F,EAAM4Y,wBAAyBL,KAT7CvY,EAAMkE,QAAQI,UAAUmC,MAAM,kDACvB,Q,yFCAf,MAAMoS,EAA6DhR,IAAkC,IAAjC,oBAAEiR,EAAmB,KAAEC,GAAMlR,EAC7F,OAAKkR,GAAwB,IAAhBA,EAAK/V,OAIdzC,gBAACoM,OAAI/G,OAAAC,OAAA,GAAKiT,GACLC,EAAK3X,IAAKuV,GAEHpW,gBAACoM,OAAI/G,OAAAC,OAAA,GAAK8Q,EAAeqC,eAAc,CAAEhX,IAAK2U,EAAesC,OACzD1Y,gBAAA,OAAKI,UAAU,mBACVgW,EAAeuC,YAChB3Y,gBAAA,QAAMI,UAAU,gBAEnBgW,EAAehJ,YACfgJ,EAAewC,SAZzB,MAoBTC,EAA4DC,IAA2C,IAA1C,eAAEL,EAAc,YAAErL,EAAW,MAAEwL,GAAOE,EACrG,OACI9Y,gBAACoM,OAAI/G,OAAAC,OAAA,GAAKmT,GACNzY,gBAAA,QAAMI,UAAU,eACfgN,EACAwL,IAKPG,EAAwDC,IAA8B,IAA7B,MAAEC,EAAK,MAAE5S,EAAK,QAAE6S,GAASF,EACpF,OACIhZ,gBAACoM,OAAI/G,OAAAC,OAAA,GAAK2T,GACL5S,EACA6S,IAgCEC,UA3BkE1Z,IAC7E,MAAM,wBACF2Z,EAAuB,UACvBC,EAAS,gBACTC,EAAe,uBACfC,EAAsB,aACtBC,EAAY,QACZC,EAAO,WACPC,EAAU,WACVC,EAAU,aACVC,GACAna,EAEJ,OAEIO,gBAACyM,SAAMpH,OAAAC,OAAA,GAAK8T,GACPC,EAAUQ,WAAaJ,EACvBJ,EAAUS,SAAWN,GAAgBxZ,gBAAC+Y,EAAY1T,OAAAC,OAAA,GAAKkU,IACvDH,EAAUU,YAAcT,GAAmBtZ,gBAACsY,EAAkBjT,OAAAC,OAAA,GAAKgU,IACnED,EAAUW,gBAAkBT,GAA0BvZ,gBAAC6Y,EAAsBxT,OAAAC,OAAA,GAAKiU,IAClFF,EAAUY,kBAAoBP,EAC9BL,EAAUa,kBAAoBP,EAC9BN,EAAUc,oBAAsBP,K,+EChD9BQ,UAlBoD3a,IAC/D,MAAM,uBAAE8K,EAAsB,WAAEE,EAAU,QAAEG,EAAO,aAAEE,EAAY,KAAE5K,EAAI,MAAEU,EAAK,aAAEmK,GAAiBtL,EACjG,OACIO,gBAACyM,SAAMpH,OAAAC,OAAA,GAAKiF,GACRvK,gBAACqa,QAAK,CAACja,UAAWqK,EAAWrK,UAAWsK,MAAOD,EAAWC,MAAOC,KAAMF,EAAWE,MAC9E3K,gBAACoM,OAAI/G,OAAAC,OAAA,GAAKsF,GACL1K,EACAU,GAELZ,gBAACoM,OAAI,CAAChM,UAAU,WACX2K,EACA,IACAD,O,+sBCErB,MAAMwP,UAAmBta,YAAzBsC,c,oBACqB,KAAAsM,gBAA0B,iBA4CpC,KAAArB,oBAAuBhN,IACtBuC,KAAKrD,MAAMwE,OAAOrE,UAClBkD,KAAKrD,MAAMwE,OAAOrE,QAAQM,KAAOK,EAAM2D,OAAOC,QA5C/C0F,oBAEH,MAAM,KAAE0Q,EAAI,SAAEC,GAAaC,QAAU,GAEjCF,GAAQC,IACRD,EAAKG,qBAAqBF,EAASG,qBACnCH,EAASI,cAIV7L,sBAAsBC,GACzB,OAAIA,EAAU/K,OAAOrE,UAAYkD,KAAKrD,MAAMwE,OAAOrE,QAMhD4D,SACH,MAAM,UAAEpD,EAAS,QAAER,GAAYkD,KAAKrD,MAAMwE,OAEpCoG,EAASjE,IAAA,GACRtD,KAAKrD,OAAK,IACb+X,WAAY,CACRhR,YAAa1D,KAAKrD,MAClBW,UAAWqG,IAAW3D,KAAK8L,gBAAiBxO,IAEhDqX,YAAa,CACTrX,UAAc0C,KAAK8L,gBAAR,eAEf8I,eAAgB1X,gBAAA,OAAK+F,GAAG,QACxBnG,QAASA,GACLI,gBAACC,IAAaoF,OAAAC,OAAA,CACVlF,UAAc0C,KAAK8L,gBAAR,aACPhP,EAAO,CACXS,UAAW,CAAEC,OAAQwC,KAAKyK,oBAAqBxN,eAAgB+C,KAAKrD,MAAMkE,QAAQC,cAK9F,OAAOd,KAAKrD,MAAMyH,WAAWmD,IAUtBiQ,a,mxBCzCR,MAAMO,UAAsB7a,IAAM8a,cAGrCxY,YAAmB7C,GACfgJ,MAAMhJ,GA0CH,KAAAuE,iBAAoBzD,IACvBuC,KAAKrD,MAAMwE,OAAOrE,QAASM,KAAOK,EAAM2D,OAAOC,OAO5C,KAAAC,sBAAyB7D,IAC5BuC,KAAKrD,MAAMwE,OAAOI,UAAY9D,EAAM2D,OAAOC,OAhDxCX,SAAM,IAAAgB,EAAAuW,EACT,MAAM,QAAEnb,EAAO,UAAEyE,GAAcvB,KAAKrD,MAAMwE,OAEpC+W,EAAuBpb,GACzBI,IAAAib,cAACC,IAAI,CACD9a,UAAcya,EAAcM,iBAAjB,kBACXhb,IAAgB,QAAbqE,EAAE5E,EAAQO,WAAG,IAAAqE,IAAI,KACpBtE,KAAMN,EAAQM,KACdG,UAAW,CAAEC,OAAQwC,KAAKkB,iBAAkBjE,eAAgB+C,KAAKrD,MAAMkE,QAAQC,WAIjFwX,EAA+BlW,kBAAgBC,YAAoC,QAAzB4V,EAACjY,KAAKrD,MAAM0L,KAAK0M,gBAAQ,IAAAkD,OAAA,EAAxBA,EAA0BhN,QACrFsN,EAAyBhX,GAC3BrE,IAAAib,cAACpQ,IAAiB,CACdzK,UAAcya,EAAcM,iBAAjB,qBACXjb,KAAMkb,EAAsB/W,EAAYvB,KAAKrD,MAAMwK,UAAUqR,sBAC7Djb,UAAW,CAAEC,OAAQwC,KAAKsB,sBAAuBrE,eAAgB+C,KAAKrD,MAAMkE,QAAQC,WAGtFyG,EAASjE,IAAA,GACRtD,KAAKrD,OAAK,IACb8b,WAAYzY,KAAKkB,iBACjB4T,cAAe,CACXpR,YAAa1D,KAAKrD,MAClBW,UAAWya,EAAcM,kBAE7Bvb,QAASob,EACT3W,UAAWgX,EACXxD,SAAUuD,EAAsBtY,KAAK0Y,uBAAyB,KAGlE,OAAO1Y,KAAKrD,MAAMyH,WAAWmD,GAmBzBoR,2BAA2Bjc,GAC/B,MAAMkc,EAAYlc,EAAKmc,SAEvB,GADyBC,YAAa9Y,KAAKrD,MAAMkE,QAAQC,WAChC8X,EACrB,OAAO1b,IAAAib,cAAA,OAAK7a,UAAcya,EAAcM,iBAAjB,qBAAuDrY,KAAKrD,MAAMwK,UAAU4R,oBAEvG,IAAIC,EAAgB,GACpB,GAAI7b,IAAS0J,UAAW,CAAC,IAADoS,EACpB,MAAMC,EAAiE,QAAvDD,EAAGE,YAAW,OAAQnZ,KAAKrD,MAAMkE,QAAQoM,sBAAc,IAAAgM,IAAI,GACrEG,EAAU,IAAIC,IAAIH,EAAYvB,OAAOxP,SAASmR,MACpDF,EAAQG,aAAavU,IAAI,YAAa,GAAG4T,GACzCI,EAAgBI,EAAQE,KAE5B,OACIpc,IAAAib,cAACpI,SAAM,CACHzS,UAAcya,EAAcM,iBAAjB,WAA2C,aAC1CrY,KAAKrD,MAAMwK,UAAUqS,wBACjCF,KAAMN,GAELhZ,KAAKrD,MAAMwK,UAAUqS,yBAK1Bd,uBAAoB,IAAAe,EACxB,MAAM1E,EAAmC,QAA3B0E,EAAGzZ,KAAKrD,MAAM0L,KAAK0M,gBAAQ,IAAA0E,OAAA,EAAxBA,EAA0BxO,OAErCpE,EAAY1J,IAAS0J,UAE3B,OACI3J,IAAAib,cAAA,OAAK7a,UAAcya,EAAcM,iBAAjB,kBAAoD3Z,KAAK,QACpEqW,aAAQ,EAARA,EAAUhX,IAAIrB,IACX,MAAMgd,EAAW,GAAGC,KAAKC,UAAUld,MAASmd,OAAOhT,KAC7ChF,EAAmCO,kBAAgB0X,eAAepd,EAAKqd,QAC7E,OACI7c,IAAAib,cAAA,OACIxZ,IAAK+a,EACLpc,UAAcya,EAAcM,iBAAjB,wBACX2B,SAAU,EAAC,aACCtd,EAAKud,KACjBvb,KAAK,YAELxB,IAAAib,cAAA,MAAI7a,UAAcya,EAAcM,iBAAjB,sBAAwD3b,EAAKud,MAC5E/c,IAAAib,cAAA,OAAK7a,UAAcya,EAAcM,iBAAjB,yBACZnb,IAAAib,cAAC+B,IAAK,CACFjd,eAAgB+C,KAAKrD,MAAMkE,QAAQC,QACnCxD,UAAcya,EAAcM,iBAAjB,oBACX1Z,IAAK+a,EACLS,IAAKC,YAAiBpa,KAAKrD,MAAMkE,QAAQC,QAAQuZ,YAAaxY,aAAK,EAALA,EAAOyY,KACrErY,aAAcjC,KAAKrD,MAAMkE,QAAQC,QAAQmB,aACzCC,cAAelC,KAAKrD,MAAMwE,OAAOoZ,qBACjCC,QAAS3Y,aAAK,EAALA,EAAO4Y,QAChBC,oBAAoB,SAExBxd,IAAAib,cAAA,OAAK7a,UAAcya,EAAcM,iBAAjB,qBACXrY,KAAK2Y,2BAA2Bjc,UAhHzCqb,EAAAM,iBAAmB,oBA2HhCN,a,uDCjIH4C,EASAC,E,mrBATZ,SAAYD,GACRA,IAAA,eACAA,IAAA,qBAFJ,CAAYA,MAAe,KAS3B,SAAYC,GACRA,EAAA,UACAA,EAAA,gBAFJ,CAAYA,MAAU,KCUtB,MAAMC,UAAuB3d,gBAyBzBsC,YAAY7C,GACRgJ,MAAMhJ,GAjBF,KAAAme,UAAoB,EAEpB,KAAAC,OAAiB,EAmPR,KAAAC,qBAAwBC,IACrC,OAAQA,GACJ,IAAI,mBACAjb,KAAK8a,UAAW,EAChB9a,KAAK+a,OAAQ,EACb,MACJ,IAAI,UACA/a,KAAK8a,UAAW,EAChB9a,KAAK+a,OAAQ,EACb,MACJ,IAAI,MACA/a,KAAK8a,UAAW,EAChB9a,KAAK+a,OAAQ,IA/OrB/a,KAAKkb,gBAAkBlb,KAAKkb,gBAAgB9U,KAAKpG,MACjDA,KAAKmb,SACDxe,EAAMkE,QAAQC,SAAWnE,EAAMkE,QAAQC,QAAQsa,QAAgD,WAAtCze,EAAMkE,QAAQC,QAAQsa,OAAOC,KAAoB,KAAO,KACrHrb,KAAKgb,qBAAqBhb,KAAKrD,MAAMwE,QAAUnB,KAAKrD,MAAMwE,OAAOma,sBACjEtb,KAAKgG,MAAQ,CAAEuV,SAAUvb,KAAKub,UAC9Bvb,KAAKwb,aAAe,GAhBjB,uBAAuBC,EAAgBC,GAC1C,IAAIC,EAKJ,OAJIF,GAAUC,GAAoBA,EAAiB/b,OAAS,IACxDgc,EAAkBD,EAAiBE,KAAKlf,GAAQA,EAAKmf,SAAUpJ,gBAAkBgJ,EAAOhJ,gBAGrFkJ,GAAmBA,EAAgBvD,KAapC,eACN,MAAyB,OAAlBpY,KAAKmb,UAAuC,OAAlBnb,KAAKmb,SAGnCpU,oBACCH,IAASC,YACT7G,KAAK8b,4BAA8BC,4BAAkBpE,OAAQ,SAAU3X,KAAKkb,kBAEhFlb,KAAKkb,kBAGFc,uBACCpV,IAASC,WACT8Q,OAAOsE,oBAAoB,SAAUjc,KAAK8b,6BAA8B,GAIzEpb,SAAM,IAAAwb,EAAAC,EAET,GADAnc,KAAKwb,aAAexb,KAAKoc,WACrBC,YAAoBrc,KAAKrD,MAAM0L,MAE/B,OADArI,KAAKrD,MAAMsE,UAAUmC,MAAM,+BACpB,KAGX,MAQMmE,EAASjE,MAAA,GACRtD,KAAKrD,OACLqD,KAAKgG,OAAK,IACb9D,cAXyC,CACzCoa,UAAW,CACPC,GAAI,CAAEC,EAAG,kBAAmBC,EAAG,EAAGC,EAAG,GACrCC,GAAI,CAAEH,EAAG,kBAAmBC,EAAG,EAAGC,EAAG,IAEzCE,UAAU,GAOV3a,aAAcjC,KAAKrD,MAAMkE,QAAQC,QAAQmB,aACzC4a,WAAY,CACRnZ,YAAa1D,KAAKrD,MAClBW,UAAWqG,IAAW,SAAU3D,KAAKrD,MAAMwE,OAAO7D,UAAW0C,KAAKgG,MAAMuV,SAAW,YAAc,cACjGle,IAAK,MACLqB,KAAMsB,KAAKub,SAAW,UAAY,cAEtCuB,SAAU,CACNxf,UAAW,eACXD,IAAK,KACLqB,KAAMsB,KAAKub,SAAW,UAAY,QAEtCwB,SAAU,CACNzf,UAAW,qBACXoB,KAAM,eACNrB,IAAK,MAET2f,kBAAyD,QAAxCd,EAAElc,KAAKrD,MAAMwE,OAAO8b,4BAAoB,IAAAf,KACzDgB,uBAAiE,QAA3Cf,EAAEnc,KAAKrD,MAAMwE,OAAOgc,+BAAuB,IAAAhB,KACjEiB,KAAM,CACF/f,IAAK,IACLC,UAAW,2BACXoB,KAAMsB,KAAKub,SAAW,SAAW,YAErC8B,aAAc,CACVhgB,IAAK,MACLC,UAAW,mBAEfggB,kBAAmB,CACfjgB,IAAK,MACLC,UAAW,iBACXoB,KAAM,YAEVqR,OAAQ,CACJzS,UAAW,6BACXD,IAAK,SACLqB,KAAMsB,KAAKub,SAAW,SAAW,WACjC/a,QAASR,KAAKrD,OAElB4gB,eAAgB,CACZjgB,UAAW,6BAEfkgB,KAAM,CACFlgB,UAAW,2BACXD,IAAK,QAETogB,2BAA4B,CACxBngB,UAAW,mCAEfogB,iBAAkB,CACdpgB,UAAW,0CACXD,IAAK,SACL,aAAc2C,KAAKrD,MAAMwK,UAAUwW,oBACnCnd,QAASR,KAAKrD,OAElBihB,uBAAwB,CACpBtgB,UAAW,wCACXD,IAAK,QAEToM,aAAczJ,KAAKgG,MAAMuV,SACzBsC,aAAc7d,KAAKwb,aACnBle,UAAWqG,IAAW,SAAU3D,KAAKrD,MAAMwE,OAAO7D,aAGtD,OAAO0C,KAAKrD,MAAMyH,WAAWmD,GAGzB6U,WACJ,MAAM,KAAE/T,EAAI,OAAElH,GAAWnB,KAAKrD,MACxBmhB,EAA8B,GAYpC,OAXI9d,KAAK8a,UAAYzS,GAAQA,EAAK0V,YAAc1V,EAAK0V,WAAW9S,QAAU5C,EAAK0V,WAAW9S,OAAOtL,OAAS,GACtG0I,EAAK0V,WAAW9S,OAAOlN,IAAI,CAACrB,EAAyBuB,IACjD6f,EAAW1e,KAAKY,KAAKge,uBAAuBthB,OAAM6P,GAAW,EAAMtO,GAAO,KAI9E+B,KAAK+a,OAAS5Z,EAAO8c,aAAe9c,EAAO8c,YAAYte,OAAS,GAChEwB,EAAO8c,YAAYlgB,IAAI,CAACrB,EAAwBwhB,IAC5CJ,EAAW1e,KAAKY,KAAKge,4BAAuBzR,EAAW7P,GAAM,EAAOwhB,EAAM,KAG3Ele,KAAKme,0BAA0BL,GAGlCK,0BAA0BL,GAA2B,IAAAM,EAAAC,EAEzD,KAD0D,QAAlCD,EAAGpe,KAAKrD,MAAMwE,OAAOmd,qBAAa,IAAAF,MAEtD,OAAON,EAEX,MAAMS,EAAsC,GACtCC,EAAU,CACZvb,GAAI,EACJ3E,SAA8C,QAAtC+f,EAAEre,KAAKrD,MAAMwE,OAAOsd,0BAAkB,IAAAJ,IAAI,MAClDK,QAAS,IACTC,iBAAapS,EACbqS,QAASd,GAIb,OAFAS,EAAmBnf,KAAKof,GAEjBD,EAGHP,uBACJa,EACAC,EACAhE,EACAoD,EACAa,GAEA,MAAMtD,EACFzb,KAAKrD,MAAMkE,SAAWb,KAAKrD,MAAMkE,QAAQC,SAAWd,KAAKrD,MAAMkE,QAAQC,QAAQ2a,OACzEzb,KAAKrD,MAAMkE,QAAQC,QAAQ2a,OAC3B,SACJ,2BAAEuD,GAA+Bhf,KAAKrD,MAAMwE,OAC5C8d,EAAeH,GAAWA,EAAQxgB,UAAa,IAC/C,cAAE4gB,GAAkBlf,KAAKrD,MAAMwK,UAG/BgY,EACFN,IACAG,aAA0B,EAA1BA,EAA4BI,OAAOC,IAAS,IAAAC,EAAAC,EAAA,OAA0B,QAAtBD,EAAAD,EAAUG,oBAAY,IAAAF,OAAA,EAAtBA,EAAwB7M,kBAAkBoM,SAAgB,QAANU,EAAVV,EAAY5E,YAAI,IAAAsF,OAAA,EAAhBA,EAAkB9M,kBAGhH,IAAIkM,EAAsB,QAIX,IAADc,EAAAC,EAAd,OAHItd,kBAAgBC,YAAYwc,aAAU,EAAVA,EAAY9E,SAAW8E,EAAY9E,OAAO,GAAGO,MACzEqE,EAAcE,EAAY9E,OAAO,GAAGO,KAEpCQ,EACO,CACH7X,GAAI4X,EAAe8E,eACnBrhB,SAA8E,QAAtEmhB,EAAE5E,EAAe+E,gBAAgBnE,EAAQoD,aAAU,EAAVA,EAAYgB,yBAAiB,IAAAJ,IAAI,GAClFf,QAASG,aAAU,EAAVA,EAAYiB,IACrBnB,cACAC,QAAS5e,KAAK+f,mBAAmBlB,EAAYF,EAAaI,GAC1DiB,mBAAoBhgB,KAAKrD,MAAMwE,OAAOgc,yBAA2BgC,EACjEc,WAAYrF,EAAWsF,OACvB7hB,UAAW,GAAuE,QAAvEqhB,EAAG7E,EAAe+E,gBAAgBnE,EAAQoD,aAAU,EAAVA,EAAYgB,yBAAiB,IAAAH,IAAI,MAAMR,KAG7F,CACHjc,GAAI4X,EAAesF,gBACnB7hB,SAAU2gB,EACVP,QAAUI,GAAWA,EAAQvgB,SAAWugB,EAAQvgB,QAAQC,gBAAmB,GAC3E4hB,oBAAsBtB,GAAWA,EAAQ/a,WAAa+a,EAAQ/a,UAAUvF,gBAAmB,GAC3FmgB,YAAcG,GAAWA,EAAQjd,OAASid,EAAQjd,MAAMsY,KAAQ,GAChEyE,QAAS5e,KAAKqgB,sBAAsBvB,GACpCmB,WAAYrF,EAAW0F,IACvBC,iBAAkBzB,aAAO,EAAPA,EAASrgB,aAC3BJ,UAAW,GAAG4gB,KAAeC,KAI7Ba,mBAAmBS,EAA8BC,GAAsD,IAA7B1B,EAAA2B,UAAA/gB,OAAA,QAAA4M,IAAAmU,UAAA,IAAAA,UAAA,GAC9E,MAAMC,EAAkC,GACxC,OAAKH,GAAaA,EAASI,UAAyC,IAA7BJ,EAASI,SAASjhB,SAGpDK,KAAKrD,MAAMwE,OAAOmd,eAAiBS,GACpC4B,EAAevhB,KAAK,CAChBd,SAAU0B,KAAKrD,MAAMwK,UAAU0Z,oBAC/BlC,YAAa8B,EACb/B,QAASoC,yBAAeN,EAAWxgB,KAAKrD,MAAMkE,QAAuC,MAG7F2f,EAASI,SAAS7iB,IAAI,CAACrB,EAAyBuB,KAC5C0iB,EAAevhB,KAAKY,KAAKge,uBAAuBthB,OAAM6P,GAAW,EAAMtO,GAAO,MAE3E0iB,GAZI,GAePN,sBAAsBG,GAC1B,MAAMG,EAAkC,GAExC,OAAKH,GAAaA,EAASO,UAAyC,IAA7BP,EAASO,SAASphB,QAIzD6gB,EAASO,SAAShjB,IAAI,CAACrB,EAAqBwhB,KACxCyC,EAAevhB,KAAKY,KAAKge,4BAAuBzR,EAAW7P,GAAM,EAAOwhB,MAErEyC,GANI,GA2BPzF,kBACJlb,KAAKmb,SAAWnb,KAAKghB,eACrBhhB,KAAKiH,SAAS,CAAEsU,SAAUvb,KAAKub,WAG3ByF,eACJ,MAAM,QAAEngB,GAAYb,KAAKrD,MAGzB,GAAIkE,EAAQC,SAAWD,EAAQC,QAAQsa,QAA0C,WAAhCva,EAAQC,QAAQsa,OAAOC,KACpE,MAAO,KAGX,GAAIzU,IAASC,WAAa8Q,OAAOsJ,WAAY,CACzC,MAAMhf,EAAepB,EAAQC,QAAQmB,aACrC,GAAIA,EACA,OAAIA,EAAasa,IAAM5E,OAAOsJ,YAAchf,EAAasa,GAAGE,EACjD,KACAxa,EAAaif,IAAMvJ,OAAOsJ,YAAchf,EAAaif,GAAGzE,EACxD,KACAxa,EAAakf,IAAMxJ,OAAOsJ,YAAchf,EAAakf,GAAG1E,EACxD,KACAxa,EAAamf,IAAMzJ,OAAOsJ,YAAchf,EAAamf,GAAG3E,EACxD,KAEJ,KAIf,MAAO,MA5SI5B,EAAAsF,cAAwBxF,EAAgB2F,IAExCzF,EAAA8E,aAAuBhF,EAAgBuF,OAWtD9S,YAAA,CADCiU,K,+BAsBSjU,YAAA,CAATkU,K,6BA8QUzG,a,yFC7UA0G,UAZ8D5kB,IACzE,MAAM,sBAAE6kB,EAAqB,QAAE1kB,EAAO,YAAEwN,EAAW,MAAExM,GAAUnB,EAE/D,OACIO,gBAACyM,SAAMpH,OAAAC,OAAA,GAAKgf,GACP1kB,EACAwN,EACAxM,K,8vBCsBN,MAAM2jB,UAAmBvkB,gBAO5BsC,YAAY7C,GACRgJ,MAAMhJ,GA0DH,KAAA8N,oBAAuBhN,GAA0CuC,KAAKrD,MAAMwE,OAAOrE,QAASM,KAAOK,EAAM2D,OAAOC,MAEhH,KAAAH,iBAAoBzD,GAA0CuC,KAAKrD,MAAMwE,OAAO/D,KAAOK,EAAM2D,OAAOC,MAEpG,KAAAG,qBAAwB/D,GAA0CuC,KAAKrD,MAAMwE,OAAOvC,KAAMN,SAAWb,EAAM2D,OAAOC,MA7DrHrB,KAAKC,iBAAmBW,6BACpBZ,KAAKrD,MAAMkE,QAAQC,QAAQC,kBAC3Bf,KAAKrD,MAAMqE,aACXhB,KAAKrD,MAAMsE,WAIfjB,KAAKF,QAAUC,2BAAiB,QAASC,KAAKC,iBAAkB,GAAI,IAGjES,SACH,MAAM,QAAE5D,EAAO,MAAE+E,EAAK,KAAEjD,EAAI,KAAExB,GAAS4C,KAAKrD,MAAMwE,OAC5CugB,EAAsB/d,IAAW,kBAAmB3D,KAAKrD,MAAMwE,OAAO7D,WACtEgB,EAAWM,GAAQA,EAAKN,SAAWM,EAAKN,SAAW,GACzD0B,KAAKF,QAAQI,cAAcC,MAAQ7B,EACnC0B,KAAKI,WAAaC,iCAAuBL,KAAKC,iBAAkBD,KAAKF,SACrE,MAAMyH,EAASjE,IAAA,GACRtD,KAAKrD,OAAK,IACbG,QAASkD,KAAK2hB,eAAe7kB,GAC7B+E,MAAO7B,KAAK4hB,mBAAmB/f,GAC/BzE,KAAM4C,KAAK6hB,YAAYzkB,GACvBkB,SAAU0B,KAAK8hB,gBAAgBljB,GAC/BmjB,aAAc/hB,KAAKgiB,YAAYpjB,GAE/B6iB,WAAY,CACR/d,YAAa1D,KAAKrD,MAClBW,UAAWokB,GAGfO,iBAAkB,CACd3kB,UAAW,sBAGf4kB,cAAe,CACX5kB,UAAW,8BAIf8f,KAAMxe,GACFA,EAAKL,SACLK,EAAKL,QAAQC,gBAAc8E,EAAA,CACvBjG,IAAK,IACLqB,KAAM,OACNpB,UAAW,kBACXgc,KAAM1a,EAAKL,QAAQC,eACnB+E,MAAOjF,EACP,aAAcM,EAAKP,UACnB+C,OAAQxC,EAAKH,aAAe,cAAW8N,EACvC/L,QAASC,2BAAiBT,KAAKC,iBAAkBD,KAAKF,QAASxB,IAC5D0B,KAAKI,YAEhB9C,UAAWokB,IAGf,OAAO1hB,KAAKrD,MAAMyH,WAAWmD,GASzBya,YAAYpjB,GAChB,GAAIA,EAAM,CACN,MAAMN,EAAWM,EAAKN,SAAWM,EAAKN,SAAW,GAG3CF,EAAoC,CACtCC,UAAWO,EAAKP,UAChBf,UAAW,kBACXgB,WACAC,QAASK,EAAKL,QAAQC,eACtBC,aAAcG,EAAKH,aACnBC,KAAM,OACN6B,qBAAsBP,KAAKI,WAC3BI,QAASC,2BAAiBT,KAAKC,iBAAkBD,KAAKF,QAASxB,IAEnE,OACIpB,gBAACC,IAAa,CACVyB,KAAMR,EACNb,UAAW,CAAEsB,aAAcmB,KAAKwB,qBAAsBvE,eAAgB+C,KAAKrD,MAAMkE,QAAQC,WAIrG,OAAO,KAGHghB,gBAAgBljB,GACpB,OAAKA,GAASA,EAAKN,SAIZpB,gBAAA,QAAMI,UAAU,yBAAyBsB,EAAKN,UAH1C,KAMPqjB,eAAe7kB,GACnB,OAAKA,GAAYA,EAAQM,MAAgC,IAAxBN,EAAQM,KAAKuC,OAK1CzC,gBAACC,IAAa,CACVE,IAAKP,EAAQO,KAAO,KACpBD,KAAMN,EAAQM,KACdE,UAAU,4BACVC,UAAW,CAAEC,OAAQwC,KAAKyK,oBAAqBxN,eAAgB+C,KAAKrD,MAAMkE,QAAQC,WAR/E,KAaP+gB,YAAYzkB,GAChB,OAAKA,EAIDF,gBAACC,IAAa,CACVE,IAAI,MACJD,KAAMA,EACNE,UAAU,uBACVC,UAAW,CAAEC,OAAQwC,KAAKkB,iBAAkBjE,eAAgB+C,KAAKrD,MAAMkE,QAAQC,WAP5E,KAYP8gB,mBAAmBllB,EAA2BylB,GAClD,IAAKzlB,IAASA,EAAKyd,KAA2B,IAApBzd,EAAKyd,IAAIxa,OAC/B,OAAO,KAUX,OACIzC,gBAACC,IAAcoF,OAAAC,OAAA,GACP9F,EAAI,CACRO,eAAgB+C,KAAKrD,MAAMkE,QAAQC,QACnCmB,aAAcjC,KAAKrD,MAAMkE,QAAQC,QAAQmB,aACzCC,cAAexF,EAAKwF,eAZ0B,CAClDoa,UAAW,CACPC,GAAI,CAAEC,EAAG,gBAAiBC,EAAG,EAAGC,EAAG,GACnC0E,GAAI,CAAE5E,EAAG,gBAAiBC,EAAG,EAAGC,EAAG,IAEvCE,UAAU,GAQNlC,oBAAoB,UAAS,cAChByH,EACb5kB,UAAW,CAAEoB,IAAKqB,KAAKrD,MAAMwE,OAAOU,OAAS,GAAI5E,eAAgB+C,KAAKrD,MAAMkE,QAAQC,SACpFqC,uBAAqB,MAMtBse,a,suBCjKf,MAAM/X,UAAmBxM,IAAM8a,cAc3BxY,YAAmB7C,GACfgJ,MAAMhJ,GAdO,KAAAylB,YAAsB,oBAEtB,KAAAC,2BAAqC,OAgHrC,KAAAC,aAAgB7kB,IAC7B,MAAMkB,EAAMlB,EAAM8kB,QAClB,GAAIviB,KAAKgG,MAAMwc,kBACX,OAAQ7jB,GACJ,KAAK8jB,WAASC,OACVC,WAAW,KAAK,IAAAC,EAAAC,EACZ,MAAMC,EAAYta,UAAYA,SAASua,cAIpC,IAADC,GAF4B,QAA1BJ,EAAA5iB,KAAKijB,6BAAqB,IAAAL,GAAS,QAATA,EAA1BA,EAA4BM,eAAO,IAAAN,GAAnCA,EAAqCO,SAASL,IACtB,QADgCD,EACxD7iB,KAAKojB,2BAAmB,IAAAP,GAAS,QAATA,EAAxBA,EAA0BK,eAAO,IAAAL,GAAjCA,EAAmCM,SAASL,MAE5C9iB,KAAKqjB,yBACqB,QAA1BL,EAAAhjB,KAAKijB,6BAAqB,IAAAD,GAAS,QAATA,EAA1BA,EAA4BE,eAAO,IAAAF,GAAnCA,EAAqCM,UAE1C,IACH,MAEJ,KAAKb,WAASc,IACVZ,WAAW,KAAK,IAAAa,EAAAC,EACZ,MAAMX,EAAYta,UAAYA,SAASua,cAER,QAA3BS,EAACxjB,KAAKijB,6BAAqB,IAAAO,GAAS,QAATA,EAA1BA,EAA4BN,eAAO,IAAAM,GAAnCA,EAAqCL,SAASL,IACtB,QAAzBW,EAACzjB,KAAKojB,2BAAmB,IAAAK,GAAS,QAATA,EAAxBA,EAA0BP,eAAO,IAAAO,GAAjCA,EAAmCN,SAASL,IAE7C9iB,KAAKqjB,0BAEV,IACH,MAEJ,QACI,SAMC,KAAAK,oBAAuBjmB,IAAc,IAAAkmB,EAAAC,EAEX,QAAlCD,EAAA3jB,KAAKijB,sBAAsBC,eAAO,IAAAS,GAAlCA,EAAoCR,SAAS1lB,EAAM2D,SAAWpB,KAAKgG,MAAMwc,mBACzC,QAAhCoB,EAAA5jB,KAAKojB,oBAAoBF,eAAO,IAAAU,GAAhCA,EAAkCT,SAAS1lB,EAAM2D,SAAWpB,KAAKgG,MAAMwc,mBAI5ExiB,KAAKqjB,0BA9ILrjB,KAAK6jB,cAAgB7jB,KAAK6jB,cAAczd,KAAKpG,MAC7CA,KAAKojB,oBAAsBlmB,IAAM4mB,YACjC9jB,KAAKijB,sBAAwB/lB,IAAM4mB,YACnC9jB,KAAK+jB,mBAAqB/jB,KAAK+jB,mBAAmB3d,KAAKpG,MACvDA,KAAKqjB,uBAAyBrjB,KAAKqjB,uBAAuBjd,KAAKpG,MAC/DA,KAAKsiB,aAAetiB,KAAKsiB,aAAalc,KAAKpG,MAC3CA,KAAK0jB,oBAAsB1jB,KAAK0jB,oBAAoBtd,KAAKpG,MACzDA,KAAKkb,gBAAkBlb,KAAKkb,gBAAgB9U,KAAKpG,MACjDA,KAAKmb,SACDxe,EAAMkE,QAAQC,SAAWnE,EAAMkE,QAAQC,QAAQsa,QAAgD,WAAtCze,EAAMkE,QAAQC,QAAQsa,OAAOC,KAAoB,KAAO,KACrHrb,KAAKgG,MAAQ,CACTwc,mBAAmB,EACnBjH,SAAUvb,KAAKub,UAIb,eACN,MAAyB,OAAlBvb,KAAKmb,UAAuC,OAAlBnb,KAAKmb,SAGnCpU,oBACsB,IAADid,EAAAC,EAApBrd,IAASC,YACD,QAARmd,EAAAxb,gBAAQ,IAAAwb,GAARA,EAAUE,iBAAiB,UAAYlkB,KAAKsiB,cAA2C,GAC/E,QAAR2B,EAAAzb,gBAAQ,IAAAyb,GAAM,QAANA,EAARA,EAAUE,YAAI,IAAAF,GAAdA,EAAgBC,iBAAiB,YAAalkB,KAAK0jB,qBACnD1jB,KAAK8b,4BAA8BnE,QAAUoE,4BAAkBpE,OAAQ,SAAU3X,KAAKkb,iBACtFlb,KAAKkb,mBAINc,uBACsB,IAADoI,EAAAC,EAApBzd,IAASC,YACD,QAARud,EAAA5b,gBAAQ,IAAA4b,GAARA,EAAUnI,oBAAoB,UAAYjc,KAAKsiB,cAA2C,GAClF,QAAR+B,EAAA7b,gBAAQ,IAAA6b,GAAM,QAANA,EAARA,EAAUF,YAAI,IAAAE,GAAdA,EAAgBpI,oBAAoB,YAAajc,KAAK0jB,qBAAqB,GAC3E/L,QAAUA,OAAOsE,oBAAoB,SAAUjc,KAAK8b,6BAA8B,IAInFpb,SAAM,IAAA4jB,EAAAC,EACT,MAAMhd,EAASjE,IAAA,GACPtD,KAAKrD,OAA6C,IACtD+M,WAAY,CACRhG,YAAa1D,KAAKrD,MAClBW,UAAWqG,IAAW,iBAAkB3D,KAAKrD,MAAMwE,OAAO7D,UAAW0C,KAAKgG,MAAMuV,SAAW,cAAgB,gBAC3Gle,IAAK,OAET4M,eAAgB,CACZ5M,IAAK,SACLC,UAAW,yBACX,aAAuC,QAA3BgnB,EAAEtkB,KAAKrD,MAAMwE,OAAOrE,eAAO,IAAAwnB,OAAA,EAAzBA,EAA2BlnB,KACzC,gBAAiB4C,KAAKgG,MAAMwc,kBAC5BhiB,QAASR,KAAKrD,MACd+K,IAAK1H,KAAKijB,uBAEd/Y,mBAAoB,CAChB5M,UAAW,uBACXD,IAAK,QAET6L,mBAAoB,CAChB5L,UAAW,uBACXoB,KAAM,OACNrB,IAAK,KACLqK,IAAK1H,KAAKojB,qBAEdja,uBAAwB,CACpB7L,UAAW,6BACXoB,KAAM,eACNrB,IAAK,MAETwM,0BAA2B,CACvBxM,IAAKmnB,SACLlnB,UAAW,yBACXqP,iBAA2C,QAA3B4X,EAAEvkB,KAAKrD,MAAMwE,OAAOrE,eAAO,IAAAynB,OAAA,EAAzBA,EAA2BnnB,KAC7CqnB,UAAW,8BACXC,WAAY,+BACZC,eAAgB,OAEpBlb,aAAczJ,KAAKgG,MAAMuV,SACzBnS,4BAA6BpJ,KAAK4kB,yBAClC9a,kBAAmB9J,KAAK+jB,mBACxBva,sBAAuBxJ,KAAKqjB,uBAC5BlZ,iBAAkBnK,KAAKgG,MAAMwc,oBAEjC,OAAOxiB,KAAKrD,MAAMyH,WAAWmD,GAGzBwc,qBACJ,MAAMc,EAAyB7kB,KAAKgG,MAAMwc,kBAC1CxiB,KAAKiH,SAAS,CACVub,mBAAoBqC,IAIpBxB,yBACJrjB,KAAKiH,SAAS,CACVub,mBAAmB,IAmDnBqB,cAAciB,GAElB,GADAA,EAAEC,iBACED,EAAEE,cAAc1L,MAAQwL,EAAEE,cAAc1L,KAAK3Z,OAAS,GAAKgY,OAAQ,CACnE,GAAI3X,KAAKrD,MAAMkE,QAAQC,QAAQ8D,QAAQoC,iBAAkB,CACrD,MAAMie,EAAe,CAAEC,OAAQllB,KAAKqiB,4BACpCriB,KAAKrD,MAAMkE,QAAQC,QAAQ8D,QAAQI,IAAIhF,KAAKoiB,YAAa0C,EAAEE,cAAc1L,KAAM2L,GAEnFtN,OAAOxP,SAAS3F,OAAOsiB,EAAEE,cAAc1L,OAIvCsL,yBACJ,MAAMO,EAAuC,CACzC7I,UAAW,CACPC,GAAI,CAAEC,EAAG,gBAAiBC,EAAG,EAAGC,EAAG,GACnCwE,GAAI,CAAE1E,EAAG,gBAAiBC,EAAG,EAAGC,EAAG,GACnCyE,GAAI,CAAE3E,EAAG,gBAAiBC,EAAG,EAAGC,EAAG,GACnC0E,GAAI,CAAE5E,EAAG,gBAAiBC,EAAG,EAAGC,EAAG,GACnCC,GAAI,CAAEH,EAAG,gBAAiBC,EAAG,EAAGC,EAAG,IAEvCE,UAAU,GAERwI,EAAcplB,KAAKrD,MAAMwE,OAAOikB,aAAeplB,KAAKrD,MAAMwE,OAAOikB,YACvE,OACIA,GACAA,EAAYrnB,IAAI,CAACrB,EAAMuB,KAAS,IAAAonB,EAAAC,EAC5B,MAAMzjB,EAAQnF,aAAI,EAAJA,EAAM6oB,UACdvjB,EAAa,CACfC,aAAcjC,KAAKrD,MAAMkE,QAAQC,QAAQmB,aACzCC,cAAeL,SAAoB,QAAfwjB,EAALxjB,EAAOK,qBAAa,IAAAmjB,GAApBA,EAAsB/I,UAAYza,EAAMK,cAAgBijB,GAE3E,OACIjoB,IAAAib,cAAA,KACIxZ,IAAKV,EACLX,UAAU,mCACV0c,SAAU,EACVV,KAAM5c,SAAqB,QAAjB4oB,EAAJ5oB,EAAM8oB,uBAAe,IAAAF,OAAA,EAArBA,EAAuB9mB,eAAc,aAC/B9B,aAAI,EAAJA,EAAM+oB,SAClBjlB,QAASR,KAAK6jB,cACdnlB,KAAK,YAELxB,IAAAib,cAAA,QAAM7a,UAAU,oCAAoCZ,aAAI,EAAJA,EAAM+oB,UAC1DvoB,IAAAib,cAAC+B,IAAK,CACFjd,eAAgB+C,KAAKrD,MAAMkE,QAAQC,QACnCxD,UAAU,kCACVqB,IAAKV,EACLkc,KAAKtY,aAAK,EAALA,EAAOsY,MAAO,GACnBlY,aAAcD,EAAWC,aACzBC,cAAeF,EAAWE,cAC1BsY,QAAS3Y,aAAK,EAALA,EAAO2Y,QAChBE,oBAAoB,OACpBvX,uBAAqB,OAQrC+X,kBACJlb,KAAKmb,SAAWnb,KAAKghB,eACrBhhB,KAAKiH,SAAS,CAAEsU,SAAUvb,KAAKub,WAG3ByF,eACJ,MAAM,QAAEngB,GAAYb,KAAKrD,MACzB,GAAIkE,EAAQC,SAAWD,EAAQC,QAAQsa,QAA0C,WAAhCva,EAAQC,QAAQsa,OAAOC,KACpE,MAAO,KAGX,QAAsB9O,WAAXoL,QAAwBA,OAAOsJ,WAAY,CAClD,MAAMhf,EAAepB,EAAQC,QAAQmB,aACrC,GAAIA,EACA,OAAIA,EAAasa,IAAM5E,OAAOsJ,YAAchf,EAAasa,GAAGE,EACjD,KACAxa,EAAaif,IAAMvJ,OAAOsJ,YAAchf,EAAaif,GAAGzE,EACxD,KACAxa,EAAakf,IAAMxJ,OAAOsJ,YAAchf,EAAakf,GAAG1E,EACxD,KACAxa,EAAamf,IAAMzJ,OAAOsJ,YAAchf,EAAamf,GAAG3E,EACxD,KAEJ,KAGf,MAAO,MA1OXrP,YAAA,CADCiU,K,+BAqBSjU,YAAA,CAATkU,K,6BA0NU5X,a,qvBCtOf,IAAMgc,EAAN,cAAwBxoB,gBASpBsC,YAAY7C,GACRgJ,MAAMhJ,GALO,KAAAgpB,mBAAyDzoB,cAEzD,KAAA0oB,qBAA2D1oB,cAuDrE,KAAAuN,oBAAuBhN,GAA0CuC,KAAKrD,MAAMwE,OAAOrE,QAASM,KAAOK,EAAM2D,OAAOC,MAnDnHrB,KAAK6lB,aAAe7lB,KAAK6lB,aAAazf,KAAKpG,MAC3CA,KAAK8lB,eAAiB9lB,KAAK8lB,eAAe1f,KAAKpG,MAC/CA,KAAKC,iBAAmBW,6BACpBZ,KAAKrD,MAAMkE,QAAQC,QAAQC,kBAC3Bf,KAAKrD,MAAMqE,aACXhB,KAAKrD,MAAMsE,WAEfjB,KAAKF,QAAUC,2BAAiB,QAASC,KAAKC,iBAAkB,IAChED,KAAKgG,MAAQ,CAAE+f,YAAY,GAGxBrlB,SACH,MAAM,MAAEyL,GAAUnM,KAAKrD,OACjB,QAAEG,EAAO,UAAEQ,GAAc0C,KAAKrD,MAAMwE,OACpC6kB,EAAmBlpB,GAAWA,EAAQM,MACxCF,gBAACC,IAAa,CACVG,UAAU,uCACVD,IAAKP,EAAQO,KAAO,KACpBD,KAAMN,EAAQM,KACdG,UAAW,CAAEC,OAAQwC,KAAKyK,oBAAqBxN,eAAgB+C,KAAKrD,MAAMkE,QAAQC,WAIpFmlB,EAAkB3iB,IAAA,GACjBtD,KAAKrD,OAAK,IACbsY,mBAAoB,CAChBvR,YAAa1D,KAAKrD,MAClBW,UAAWqG,IAAW,eAAgBrG,IAE1C8X,cAAe,CAAE9X,UAAW,+BAC5B+X,eAAgB,CAAE/X,UAAW,yCAC7BR,QAASkpB,EACT7kB,OAAQnB,KAAKrD,OAASqD,KAAKrD,MAAMwE,OACjCmU,0BAA2B,CACvBjY,IAAK,MACLC,UAAW,uDAEf6X,iBAAkBnV,KAAKkmB,yBACvB3Q,uBAAwB,CACpBlY,IAAK,MACLC,UAAW,6BAEf4X,eACI/I,GACAA,EAAM+I,gBACN/I,EAAM+I,eAAevV,OAAS,GAC9BwM,EAAM+I,eAAenX,IAAI,CAACrB,EAAuBuB,IAAkB+B,KAAKmmB,kBAAkBzpB,EAAMuB,MAExG,OAAO+B,KAAKrD,MAAMyH,WAAW6hB,GAKzBC,yBACJ,MAAM,OAAE/kB,EAAM,UAAEgG,GAAcnH,KAAKrD,OAC7B,QAAEG,GAAYqE,EACpBnB,KAAKF,QAAQI,cAAcC,MAAQuP,oBAAkB0W,UACrD,MAAMC,EAAqBhmB,iCAAuBL,KAAKC,iBAAmBD,KAAKF,SAC/EE,KAAKF,QAAQI,cAAcC,MAAQuP,oBAAkB4W,YACrD,MAAMC,EAAuBlmB,iCAAuBL,KAAKC,iBAAmBD,KAAKF,SACjF,OAAKqB,EAAOqlB,cAKRtpB,2BAAA,KACIA,gBAAA,SAAAqF,OAAAC,OAAA,CACIikB,SAAUzmB,KAAKgG,MAAM+f,WACrBzoB,UAAU,yBAAwB,aACtB,GAAG6J,EAAUuf,iBAAiB5pB,WAASM,KAAON,EAAQM,KAAO,KACzEoD,QAASR,KAAK6lB,aACdne,IAAK1H,KAAK2lB,oBACNU,GAEHlf,EAAUuf,e,IAGdvf,EAAUwf,mB,IAEXzpB,gBAAA,SAAAqF,OAAAC,OAAA,CACIlF,UAAU,2BAA0B,aACxB,GAAG6J,EAAUyf,mBAAmB9pB,WAASM,KAAON,EAAQM,KAAO,KAC3EoD,QAASR,KAAK8lB,eACdpe,IAAK1H,KAAK4lB,sBACNW,EAAoB,CACxBE,UAAWzmB,KAAKgG,MAAM+f,aAErB5e,EAAUyf,mBA1BnB5mB,KAAKrD,MAAMkE,QAAQI,UAAUmC,MAAM,yDAC5B,MA+BPyiB,eACJ,MAAM7Y,EAAiB,CAAER,eAAe,GACxCxM,KAAKrD,MAAMkE,QAAQoM,cAAcC,OAAOC,YAA0BH,GAAiBA,GAC/EA,EAAeR,gBACfxM,KAAKiH,SAAS,CACV8e,YAAY,IAEhBpD,WAAW,KAAK,IAAAkE,EACqB,QAAjCA,EAAA7mB,KAAK4lB,qBAAqB1C,eAAO,IAAA2D,GAAjCA,EAAmCvD,SACpC,KAIHwC,iBACJ,MAAM9Y,EAAiB,CAAER,eAAe,GACxCxM,KAAKrD,MAAMkE,QAAQoM,cAAcC,OAAOC,YAA0BH,GAAiBA,GAC9EA,EAAeR,gBAChBxM,KAAKiH,SAAS,CACV8e,YAAY,IAEhBpD,WAAW,KAAK,IAAAmE,EACmB,QAA/BA,EAAA9mB,KAAK2lB,mBAAmBzC,eAAO,IAAA4D,GAA/BA,EAAiCxD,SAClC,KAIH6C,kBAAkBzpB,EAAuBuB,GAC7C,OACIf,gBAACA,WAAc,CAACyB,IAAKV,GAChBf,eAAmBR,EAA4B,CAAEqQ,iBAAkB/M,KAAKrD,MAAMwE,OAAO4L,sBArIhG2Y,EAAStY,YAAA,CADdC,KACKqY,GA2ISA,a,6MClKR,MAAMqB,UAA2B7pB,gBAapCsC,YAAY7C,GACRgJ,MAAMhJ,GAXF,KAAAqqB,aAAuB,EAmTd,KAAAC,qBAAuB,CAACC,EAA0BC,IAA0B,KACzF,MAAM7oB,EAAW6oB,GAAUA,EAAO7oB,SAAW6oB,EAAO7oB,SAAW,GACzD8oB,EAAiC,CAAC,CAAEjN,IAAK+M,EAAkB1M,QAASlc,IAGtE8D,kBAAgBC,YAAY8kB,EAAOnH,qBACnCmH,EAAOnH,mBAAmBjiB,IAAIrB,IAC1B,GAAIA,GAAQA,EAAKmF,MAAO,CACpB,MAAMwlB,EAAW3qB,EAAKmF,MAAMsY,IACtBmN,EAA+B5qB,EAAKmF,MAAMK,cAChDklB,EAAiBhoB,KAAK,CAClB+a,IAAKkN,EACL7M,QAAS9d,EAAKU,KACd8E,cAAeolB,EACf/mB,qBAAsB,CAAEhC,QAAS7B,EAAK6B,QAAQC,qBAK9DwB,KAAKiH,SAAS,CACVsgB,cAAeH,EAAiBznB,OAAS,EAAIynB,EAAmB,CAAC,CAAEjN,IAAK,UACxEqN,qBAAsBlpB,KAIb,KAAAmpB,sBAAwB,CAACpf,EAAqBqf,IAAsB,KAC5E1nB,KAAKrD,MAAM8M,cASZsd,EAAmBY,aAAc,EACjC3nB,KAAKiH,SAAS,CACV2gB,WAAYvf,EAAKpF,GACjB4kB,oBAAqBxf,EAAK/J,SAC1BwpB,WAAYJ,MAZhB1nB,KAAKiH,SAAS,CACV2gB,WAAY5nB,KAAKgG,MAAM4hB,YAAc5nB,KAAKgG,MAAM4hB,aAAevf,EAAKpF,QAAMsJ,EAAYlE,EAAKpF,GAC3F6kB,WAAYJ,IAEZ1nB,KAAKrD,MAAMqgB,mBACXhd,KAAKinB,qBAAqB5e,EAAKsW,YAActW,EAA7CrI,KAYK,KAAA+nB,cAAgB,IAAM,KACnChB,EAAmBY,aAAc,EACjC3nB,KAAKiH,SAAS,CAAE2gB,WAAY5nB,KAAKgG,MAAM8hB,cAO1B,KAAAE,oBAAuBvqB,IAChCuC,KAAKioB,SAAS/E,UAAYljB,KAAKioB,SAAS/E,QAAQC,SAAS1lB,EAAM2D,SAC/DpB,KAAKiH,SAAS,CACV2gB,gBAAYrb,EACZsb,oBAAqB,GACrBN,cAAe,QASV,KAAAW,oBAAuBzqB,IAChCuC,KAAKioB,SAAS/E,UAAYljB,KAAKioB,SAAS/E,QAAQC,SAAS1lB,EAAM0qB,gBAC/DnoB,KAAKooB,iBAWI,KAAAC,uBAAyB,CAACpqB,EAAe4pB,EAA8BS,KAC/EvB,EAAmBY,aAAyB,IAAV1pB,MAGlCqqB,IAAmBT,IAGjBA,IAAwBS,EASlB,KAAAC,kBAAqBhB,IAClC,IAAKA,IAAkBA,EAAcpN,IACjC,OAAO,KAGX,MACMgL,EAAuC,CACzC7I,UAAW,CACPC,GAAI,CAAEC,EAAG,kBAAmBC,EAAG,EAAGC,EAAG,GACrCwE,GAAI,CAAE1E,EAAG,kBAAmBC,EAAG,EAAGC,EAAG,GACrCyE,GAAI,CAAE3E,EAAG,kBAAmBC,EAAG,EAAGC,EAAG,GACrC0E,GAAI,CAAE5E,EAAG,kBAAmBC,EAAG,EAAGC,EAAG,IAEzCE,UAAU,GAEuB,IAADpY,EAAAgkB,EAApC,YAAyBjc,IAVA6N,2BAAiB,GAAGmN,EAAcpN,IAAOna,KAAKrD,MAAMkE,QAAQoM,cAAchQ,eAAeod,aAY1Gnd,gBAACgd,IAAK3X,OAAAC,OAAA,CACFvF,eAAgB+C,KAAKrD,MAAMkE,QAAQoM,cAAchQ,eACjDK,UAAU,sBACNiqB,EAAa,CACjBtlB,aAAcjC,KAAKrD,MAAMkE,QAAQC,QAAQmB,aACzCC,cAAqF,QAAxEsC,EAA6B,QAA7BgkB,EAAEjB,EAAcrlB,qBAAa,IAAAsmB,IAAIxoB,KAAKrD,MAAMwE,OAAOsnB,6BAAqB,IAAAjkB,IAAI2gB,EACzFzK,oBAAoB,OACpBhc,KAAK,WACLuE,GAAG,kCACHuX,QAAS+M,EAAc/M,WAI5B,MAraPxa,KAAKioB,SAAW/qB,cAChB8C,KAAK0oB,YAAcxrB,cACnB8C,KAAKgG,MAAQ,CAAE4hB,gBAAYrb,EAAWsb,oBAAqB,GAAIC,gBAAYvb,EAAWib,qBAAsB,IAC5GxnB,KAAKooB,cAAgBpoB,KAAKooB,cAAchiB,KAAKpG,MAC7CA,KAAKC,iBAAmBW,6BACpBZ,KAAKrD,MAAMkE,QAAQC,QAAQC,kBAC3Bf,KAAKrD,MAAMqE,aACXhB,KAAKrD,MAAMsE,WAEfjB,KAAKF,QAAUC,2BAAiB,QAASC,KAAKC,iBAAkB,GAAI,IAGjE8G,oBACCH,IAASC,YACT2B,SAAS2b,KAAKD,iBAAiB,YAAalkB,KAAKgoB,qBACjDxf,SAAS2b,KAAKD,iBAAiB,WAAYlkB,KAAKkoB,sBAIjDS,qBAAkB,IAAAC,EACO,QAAxBA,EAAA5oB,KAAK0oB,YAAYxF,eAAO,IAAA0F,GAAxBA,EAA0BC,SAAS,IAAM7oB,KAAKrD,MAAM8M,cACnDzJ,KAAK0oB,YAAYxF,QAAQ2F,SAAS,GAAmBvF,QAIvDtH,uBACCpV,IAASC,YACT2B,SAAS2b,KAAKlI,oBAAoB,YAAajc,KAAKgoB,qBAAqB,GACzExf,SAAS2b,KAAKlI,oBAAoB,WAAYjc,KAAKkoB,qBAAqB,IAIzExnB,SACH,MAAM,aAAE+I,EAAY,SAAEqT,EAAQ,iBAAEY,EAAgB,2BAAED,EAA0B,uBAAEG,EAAsB,WAAEf,GAAe7c,KAAKrD,MAG1H,OADAqD,KAAKgnB,aAAe,EAEhB9pB,gBAACyM,SAAMpH,OAAAC,OAAA,GACCqa,EAAU,CACdvf,UAAWqG,IAAWkZ,EAAWvf,UAAWmM,QAA0C8C,IAA1BvM,KAAKgG,MAAM4hB,WAA2B,QAAU,YAE5G1qB,gBAACoM,OAAI/G,OAAAC,OAAA,GAAKsa,EAAQ,CAAEpV,IAAK1H,KAAKioB,SAAUjO,SAAS,OAC5CvQ,QAA0C8C,IAA1BvM,KAAKgG,MAAM4hB,YACxB1qB,gBAACoM,OAAI/G,OAAAC,OAAA,GAAKib,GACNvgB,gBAACoM,OAAI/G,OAAAC,OAAA,GAAKkb,EAAgB,CAAEld,QAASR,KAAK+nB,mBAC1C7qB,gBAACoM,OAAI/G,OAAAC,OAAA,GAAKob,GAAyB5d,KAAKgG,MAAM6hB,sBAGrD7nB,KAAK8oB,mBAMdA,iBACJ,MAAM,SAAE/L,EAAQ,aAAEc,EAAY,aAAEpU,GAAiBzJ,KAAKrD,OAChD,WAAEirB,GAAe5nB,KAAKgG,MACtBwV,EAA8B,GAEpC,GAAI/R,QAA+B8C,IAAfqb,GAA4B/J,EAAale,OAAS,EAAG,CACrE,IAAIopB,EAA0B,GAC9B,IAAK,MAAMC,KAAiBnL,EAAc,CACtC,GAAImL,GAAiBA,EAAc/lB,KAAO2kB,EAAY,CAClDmB,EAAWC,EACVjC,EAAmBY,YAEd3nB,KAAKiH,SAAS,CAAE6gB,gBAAYvb,EAAWsb,oBAAqBmB,EAAc1qB,WAD1E0B,KAAKiH,SAAS,CAAE6gB,gBAAYvb,IAElC,MAGJ,GADAwc,EAAW/oB,KAAKipB,gBAAgBD,GAC5BD,GAAYA,EAAS9lB,KAAO2kB,EAC5B,MAIRmB,GACIvN,EAAapc,KACTlC,gBAACoM,OAAI/G,OAAAC,OAAA,CAAC7D,IAAKoqB,EAAS9lB,IAAQ8Z,GACvB,IACA/c,KAAKkpB,oBAAoBH,GAAW,WAIjDlL,EAAahe,QAAQ,CAACnD,EAAqBuB,KACvCud,EAAapc,KACTlC,gBAACoM,OAAI/G,OAAAC,OAAA,CACD7D,IAAKV,GACD8e,EAAQ,CACZrV,IAAK1H,KAAKqoB,uBAAuBpqB,EAAO+B,KAAKgG,MAAM6hB,oBAAqBnrB,EAAK4B,UAAY0B,KAAK0oB,YAAc,OAE3G1oB,KAAKkpB,oBAAoBxsB,OAM1C,OAAO8e,EAGHyN,gBAAgBvsB,GACpB,MAAMqkB,EAAWrkB,GAAQA,EAAKkiB,QAC9B,GAAImC,GAAYA,EAASphB,OAAS,EAC9B,IAAK,IAAIwpB,EAAI,EAAGA,GAAKpI,EAASphB,OAAS,EAAGwpB,IAAK,CAC3C,GAAIpI,EAASoI,GAAGlmB,KAAOjD,KAAKgG,MAAM4hB,WAI9B,OAHCb,EAAmBY,YAEd3nB,KAAKiH,SAAS,CAAE6gB,WAAYprB,GAAQA,EAAKuG,GAAI4kB,oBAAqB9G,EAASoI,GAAG7qB,WAD9E0B,KAAKiH,SAAS,CAAE6gB,WAAYprB,aAAI,EAAJA,EAAMuG,KAEjC8d,EAASoI,GAEpB,MAAMC,EAAQppB,KAAKipB,gBAAgBlI,EAASoI,IAC5C,GAAIC,EACA,OAAOA,EAKnB,OADAppB,KAAKrD,MAAMkE,QAAQI,UAAUmC,MAAM,iDAC5B,KAGH8lB,oBAAoBrL,GACxB,OAAIA,GAAgBA,EAAae,SAAWf,EAAae,QAAQjf,OAAS,EAClEK,KAAKrD,MAAM8M,mBAA0C8C,IAA1BvM,KAAKgG,MAAM4hB,WAC/B5nB,KAAKqpB,eAAexL,EAAae,QAASf,EAAa5a,IAAI,GAGlE/F,2BAAA,KACK8C,KAAKspB,sBAAsBzL,GAC3B7d,KAAKqpB,eAAexL,EAAae,QAASf,EAAa5a,IAAI,IAG7D4a,GAAgBA,EAAavf,UAAYuf,EAAaa,SAAWb,EAAaa,QAAQ/e,OAAS,EAC/FK,KAAKupB,oBAAoB1L,EAAcA,EAAa5a,IAAI,GAAO,GAC/D4a,GAAgBA,EAAavf,WAAauf,EAAaa,QACvD1e,KAAKwpB,oBAAoB3L,EAAcA,EAAa5a,IAAI,IAEnEjD,KAAKrD,MAAMkE,QAAQI,UAAUmC,MAAM,yDAC5B,MAGHimB,eAAetI,EAA4B6G,EAAqB6B,GACpE,MAAM,aAAEhgB,EAAY,SAAEsT,GAAa/c,KAAKrD,MAClC+sB,EAAyB1pB,KAAKrD,MAAMwE,OAAOwoB,uBAAwB,EACnEC,EAA0B5pB,KAAKrD,MAAMwE,OAAO0oB,kBAAoB,EAGtE,GAAIjC,GAAc5nB,KAAKgG,MAAM4hB,aAAeA,EAExC,OADA5nB,KAAKrD,MAAMkE,QAAQI,UAAUmC,MAAM,gEAC5B,KAGX,IAAK2d,GAAgC,IAApBA,EAASphB,OAEtB,OADAK,KAAKrD,MAAMkE,QAAQI,UAAUmC,MAAM,4DAC5B,KAGX,IAAI0mB,EAAyB,GAC7B,MAAMC,EACFhJ,GACAA,EAAShjB,IAAI,CAACopB,EAAuBjJ,KACjC,MAAM8L,EAAa7C,EAAOvI,SAAWuI,EAAOvI,QAAQjf,OAAS,EAC7D,IAAIopB,EAOAnK,EALAmK,EADAiB,GAAcvgB,EACHzJ,KAAKspB,sBAAsBnC,EAAQS,EAAY1J,GAE/CiJ,EAAOzI,QAAU1e,KAAKupB,oBAAoBpC,EAAQjJ,GAAOle,KAAKwpB,oBAAoBrC,GAIjG,MAAM8C,EAAcD,GAAcN,GAA0B1pB,KAAKgnB,cAAgBkD,KAAKC,MAAMP,GAA2B,EAMvH,OALIK,IACAjqB,KAAKgnB,eACL8C,EAAiBJ,EAAyB,SAAS1pB,KAAKgnB,aAAazY,WAAe,GACpFqQ,EAAU5e,KAAKqpB,eAAelC,EAAOvI,QAASnV,EAAe0d,EAAOlkB,QAAKsJ,GAAW,IAGpFrP,gBAACoM,OAAI/G,OAAAC,OAAA,GACGua,EAAQ,CACZpe,IAAKwoB,EAAOlkB,GACZ3F,UAAWqG,IAAWoZ,EAASzf,UAAW2sB,GAAe,eACzDviB,IAAK1H,KAAKqoB,uBAAuBnK,EAAKle,KAAKgG,MAAM6hB,oBAAqBV,EAAO7oB,UAAY0B,KAAK0oB,YAAc,OAE3GK,EACAnK,KAIjB,OAAO5e,KAAKoqB,YAAYN,EAAgBC,EAAanC,EAAY6B,GAG7DH,sBAAsBnC,EAAuBS,EAAqB3pB,GACtE,MAAM,OAAE8R,GAAW/P,KAAKrD,MACxB,OACIO,gBAACoM,OAAI/G,OAAAC,OAAA,CACD7D,IAAKV,GACD8R,EAAM,CACVvP,QAASR,KAAKynB,sBAAsBN,EAAQS,GAC5CyC,QAASrqB,KAAKooB,cAAa,kBACVpoB,KAAKgG,MAAM4hB,YAAc5nB,KAAKgG,MAAM4hB,aAAeT,EAAOlkB,IAAG,mBAC5DjD,KAAKgG,MAAM4hB,YAAc5nB,KAAKgG,MAAM4hB,aAAeT,EAAOlkB,IAAG,cAClE2kB,IAEZT,EAAO7oB,UAKZirB,oBACJpC,EACAlpB,GAEyB,IADzBqsB,IAAA5J,UAAA/gB,OAAA,QAAA4M,IAAAmU,UAAA,KAAAA,UAAA,GACA6J,EAAA7J,UAAA/gB,OAAA,QAAA4M,IAAAmU,UAAA,IAAAA,UAAA,GAEA,MAAM,KAAEtD,GAASpd,KAAKrD,MAChB2B,EAAW6oB,EAAO7oB,SAAW6oB,EAAO7oB,SAAW,GAC/CksB,EAAcrD,EAAOxI,YAAcwI,EAAOxI,YAAc,GAC9D3e,KAAKF,QAAQI,cAAcC,MAAQ7B,EACnC,MAAM8B,EAAaC,iCAAuBL,KAAKC,iBAAkBD,KAAKF,SACtE,OACI5C,gBAACoM,OAAI/G,OAAAC,OAAA,GACG4a,EAAI,CACRze,IAAKV,EACLosB,QAASE,GAAYvqB,KAAKooB,cAC1BhnB,OAAQ+lB,EAAO5G,iBAAmB,cAAWhU,EAC7Cke,YAAaH,GAAetqB,KAAKinB,qBAAqBuD,EAAarD,GACnE7N,KAAM6N,EAAOzI,SACTte,EAAU,CACdI,QAASC,2BAAiBT,KAAKC,iBAAkBD,KAAKF,QAASxB,KAE9D6oB,EAAO7oB,UAKZosB,uBAAuBpsB,EAAmBC,GAC9C,MAAM,KAAE6e,GAASpd,KAAKrD,MACtBqD,KAAKF,QAAQI,cAAcC,MAAQ7B,EACnC,MAAM8B,EAAaC,iCAAuBL,KAAKC,iBAAkBD,KAAKF,SACtE,OAAIxB,GAAYC,EAERrB,gBAACoM,OAAI/G,OAAAC,OAAA,GAAK4a,EAAI,CAAE9D,KAAM/a,GAAa6B,EAAU,CAAEI,QAASC,2BAAiBT,KAAKC,iBAAkBD,KAAKF,QAASxB,KACzGA,GAIN,KAGHkrB,oBAAoBrC,EAAuBlpB,GAAyC,IAAzBssB,EAAA7J,UAAA/gB,OAAA,QAAA4M,IAAAmU,UAAA,IAAAA,UAAA,GAC/D,MAAM,KAAElD,GAASxd,KAAKrD,MACtB,OACIO,gBAACoM,OAAI/G,OAAAC,OAAA,CAAC7D,IAAKV,GAAWuf,EAAI,CAAE6M,QAASE,GAAYvqB,KAAKooB,gBACjDjB,EAAO7oB,UAKZ8rB,YAAYO,EAAeZ,EAA4Ba,EAAsBC,GACjF,MAAM,aAAExN,EAAY,SAAEP,EAAQ,kBAAEQ,EAAiB,kBAAEN,EAAiB,uBAAEE,EAAsB,aAAEzT,GAAiBzJ,KAAKrD,MAC9GmuB,GACDrhB,IACAuT,GAAqBE,KACrB9a,kBAAgBC,YAAYrC,KAAKgG,MAAMuhB,iBACvCsD,EACCE,GACDthB,GAAgByT,GAA0B9a,kBAAgBC,YAAYrC,KAAKgG,MAAMuhB,iBAAmBsD,EACnGG,EAAoBhrB,KAAKgnB,aAAe,GAAK8D,EAAuBzN,EAAc/f,UAAY,kBAEpG,OADA0C,KAAKgnB,aAAe,EAEhB9pB,gBAACoM,OAAI/G,OAAAC,OAAA,GAAK6a,EAAY,CAAE/f,UAAW0tB,IAC/B9tB,gBAACoM,OAAI/G,OAAAC,OAAA,GACGsa,EAAQ,CACZxf,UAAWqG,IACPmZ,EAASxf,UACTqtB,EACAG,GAAwB,gBACxBA,GACI9qB,KAAKrD,MAAMwE,OAAO0oB,kBAClB7pB,KAAKrD,MAAMwE,OAAO0oB,iBAAmB,GACrC,yBAGPE,GAEJe,GACG9qB,KAAKgG,MAAMuhB,eACXvnB,KAAKgG,MAAMuhB,cAAcxpB,IAAIrB,IAAI,IAAAuuB,EAAA,OAC7B/tB,gBAACoM,OAAI/G,OAAAC,OAAA,GAAK8a,EAAiB,CAAE3e,IAAKjC,EAAKyd,IAAK7c,UAAWggB,EAAmBhgB,YACrE0C,KAAKgG,MAAMuhB,eAAiBvnB,KAAKuoB,kBAAkB7rB,GACnDquB,GAA6B/qB,KAAK0qB,uBAAuBhuB,EAAK8d,QAAkC,QAA3ByQ,EAAEvuB,EAAK6D,4BAAoB,IAAA0qB,OAAA,EAAzBA,EAA2B1sB,aAiGnH6pB,gBACCpoB,KAAKrD,MAAM8M,cACZzJ,KAAKiH,SAAS,CAAE2gB,gBAAYrb,EAAWgb,cAAe,KAAMM,oBAAqB,MAjZ1Ed,EAAAY,aAAuB,EAub3BZ,a,yFCldCpqB,cACZ,MAAM,mBAAE6N,EAAkB,QAAE1N,EAAO,YAAEwN,EAAW,MAAExM,GAAUnB,EAE5D,OACIO,gBAACyM,SAAMpH,OAAAC,OAAA,GAAKgI,GACP1N,EACAwN,EACAxM,K,kCCjBb,iG,gICeO,MAAMotB,UAAuBhuB,gBACzBwD,SACH,MAAM,WAAE+gB,GAAezhB,KAAKrD,MAC5B,OAAOO,gBAACyM,SAAMpH,OAAAC,OAAA,GAAKif,GAAazhB,KAAKmrB,eAAenrB,KAAKrD,QAGrDwuB,eAAexuB,GACnB,MAAM,QAAEG,EAAO,iBAAEmlB,EAAgB,KAAE7E,EAAI,SAAE9e,EAAQ,MAAEuD,EAAK,KAAEzE,EAAI,aAAE2kB,GAAiBplB,EACjF,OAAIG,EACOI,gBAACoM,OAAI/G,OAAAC,OAAA,GAAKyf,G,IAAoBnlB,E,KAC9BsgB,GAAQvb,EAEX3E,gBAACoM,OAAI/G,OAAAC,OAAA,GAAK4a,GACL9e,EACAuD,GAGFub,EACA2E,EAGP7kB,2BAAA,KACKE,EACAyE,IAMFqpB,a,iFC5Bf,MAAME,EAA2BlsB,IAA8D,IAAAmsB,EAC3F,OACInuB,gBAACoM,OAAI/G,OAAAC,OAAA,GAAKtD,EAAkBG,uBACiB,QADIgsB,EAC5CnsB,EAAkBI,8BAAsB,IAAA+rB,OAAA,EAAxCA,EAA0CttB,IAAKrB,GAExCQ,2BAAA,KACKR,EAAKI,QACNI,gBAACoM,OAAI/G,OAAAC,OAAA,GAAK9F,EAAKqC,gCACVrC,EAAKU,KACNF,gBAACoM,OAAI/G,OAAAC,OAAA,GAAK9F,EAAKsC,4BAA6BtC,EAAKoB,YAyD9DwtB,UAhD4C3uB,IACvD,MAAM,sBACF8G,EAAqB,eACrBG,EAAc,iBACdC,EAAgB,MAChBN,EAAK,KACLnG,EAAI,MACJU,EAAK,MACL+D,EAAK,sBACLiC,EAAqB,UACrBC,EAAS,eACTjC,EAAc,kBACd5C,GACAvC,EAEJ,OAAIoH,EAEI7G,gBAACyM,SAAMpH,OAAAC,OAAA,GAAKiB,GACRvG,gBAACoM,OAAI/G,OAAAC,OAAA,GACGsB,EAAqB,CACzBwV,KAAMvV,EACNzG,UAAWwG,EAAwBA,EAAsBxG,UAAY,GAAE,aAC3DwE,IAEZ5E,gBAACoM,OAAI/G,OAAAC,OAAA,GAAKoB,GAAiB/B,IAE/B3E,gBAACoM,OAAI/G,OAAAC,OAAA,GAAKqB,GACLN,EACAnG,EACAU,EACAoB,GAAqBksB,EAAwBlsB,KAM1DhC,gBAACyM,SAAMpH,OAAAC,OAAA,GAAKiB,GACRvG,gBAACoM,OAAI/G,OAAAC,OAAA,GAAKoB,GAAiB/B,GAC3B3E,gBAACoM,OAAI/G,OAAAC,OAAA,GAAKqB,GACLN,EACAnG,EACAU,EACAoB,GAAqBksB,EAAwBlsB,O,kJCjEvD,MAAMqsB,EAA8F/mB,IAAA,IAAC,YAAE8F,GAAa9F,EAAA,OACvHtH,gBAAA,KAAGI,UAAU,mDAAmDgN,ICUvDkhB,EAAkFhnB,IAK1F,IAL2F,MAC5F1G,EAAK,iBACLmC,EAAgB,aAChBpB,EAAY,eACZ5B,GACHuH,EACG,GAAqB,IAAjB1G,EAAM6B,OACN,OAAO,KAEX,MAAMC,EAAgBH,EAAkB3B,EAAOmC,GAC/C,OACI/C,gBAAA,OAAKI,UAAU,6CACVsC,GAAiBA,EAAcD,OAAS,EACrCzC,gBAACC,IAAc,CAACW,MAAO8B,EAAerC,UAAW,CAAEsB,eAAc5B,oBACjE,OAKVwC,EAAoBA,CAACC,EAAwBO,KAC/C,IAAKP,GAAgC,IAApBA,EAASC,OACtB,OAAO,KAEX,MAAMC,EAAuC,GACvCE,EAAUC,2BAAiB,QAASE,EAAmB,IAgB7D,OAfAP,EAASG,QAAQ,CAACjB,EAAMX,KACpB6B,EAAQI,cAAcC,MAAQvB,EAAKN,SACnC,MAAM8B,EAAaC,iCAAuBJ,EAAmBH,GACvD1B,EAAoC,CACtCC,UAAWO,EAAKP,UAChBf,UAAW,2CACXgB,SAAUM,EAAKN,SACfC,QAASK,EAAKL,QAAQC,eACtBC,aAAcG,EAAKH,aACnBC,KAAM,OACN6B,qBAAsBH,GAE1BR,EAAcR,KAAKhB,KAGhBwB,G,ykBCnCX,MAAM4hB,UAA8BtkB,gBAGhCsC,YAAY7C,GACRgJ,MAAMhJ,GAuDH,KAAA8N,oBAAuBhN,IAC1BuC,KAAKrD,MAAMwE,OAAOrE,QAAQM,KAAOK,EAAM2D,OAAOC,OAG3C,KAAAG,qBAAwBrD,GAAuBV,IAC9CuC,KAAKrD,MAAMwE,OAAOrD,OAASkC,KAAKrD,MAAMwE,OAAOrD,MAAMK,KACnD6B,KAAKrD,MAAMwE,OAAOrD,MAAMK,GAAWG,SAAWb,EAAM2D,OAAOC,QA5D/DrB,KAAKC,iBAAmBW,6BACpBZ,KAAKrD,MAAMkE,QAAQC,QAAQC,kBAC3Bf,KAAKrD,MAAMqE,aACXhB,KAAKrD,MAAMsE,WAIZP,SACH,MAAM,OAAES,EAAM,UAAEgG,EAAS,KAAEkB,GAASrI,KAAKrD,OACnC,UAAEW,EAAS,QAAER,EAAO,MAAEgB,GAAUqD,GAChC,qDAAEsqB,EAAoD,wDAAEC,GAA4DvkB,EACpHwkB,EAAWtjB,EAAKujB,OAASvjB,EAAKujB,MAAM3gB,OACpC4gB,EACW,IAAbF,EAAiBF,EAAuDC,EACtEI,EAAsBzjB,EAAKyjB,oBAAoB7gB,OAGrD,GAAK6gB,YAAqBC,WACtB,OAAO,KAGX,MAAMxkB,EAASjE,IAAA,GACRtD,KAAKrD,OAAK,IACbW,YACAkkB,sBAAuB,CACnB9d,YAAa1D,KAAKrD,MAClBW,UAAWqG,IAAW,qCAAsCxC,EAAO7D,YAEvER,QAASA,GAAWA,EAAQM,MACxBF,gBAACC,IAAa,CACVG,UAAU,8CACVD,IAAKP,EAAQO,IACbD,KAAMN,EAAQM,KACdG,UAAW,CAAEC,OAAQwC,KAAKyK,oBAAqBxN,eAAgB+C,KAAKrD,MAAMkE,QAAQC,WAG1FhD,MAAOA,GAASA,EAAM6B,OAAS,GAC3BzC,gBAACsuB,EAAiCjpB,OAAAC,OAAA,GAC1B,CACA1E,QACAe,aAAcmB,KAAKwB,qBACnBvE,eAAgB+C,KAAKrD,MAAMkE,QAAQC,QACnCb,iBAAkBD,KAAKC,oBAInCqK,YACIpN,gBAACquB,EAAuC,CAACjhB,YAAac,iBAAOygB,EAAyCF,GAAY,OAI1H,OAAO3rB,KAAKrD,MAAMyH,WAAWmD,IActBia,a,kCCjGf,mCAUgB7kB,cACZ,MAAM,QACFG,EAAO,sBACPkvB,EAAqB,4BACrBC,EAA2B,cAC3BC,EAAa,cACbC,EAAa,oBACbC,EAAmB,oBACnBC,EAAmB,WACnBC,EAAU,QACVC,EAAO,sBACPC,EAAqB,gBACrBC,EAAe,YACfC,EAAW,aACXC,GACAhwB,EAEJ,OACIO,gBAACoM,OAAI,CAAChM,UAAU,+BACXR,EACA0vB,EACAD,EACAP,EACD9uB,gBAAA,WAASI,UAAU,wCACd4uB,EACAC,GAEJF,EACD/uB,gBAAA,WAASI,UAAU,4FACd8uB,EACAC,EACAI,EACAC,EACAC,GAEJL","file":"static/js/10.b2fb38a0a5c4fb242411.chunk.js","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAdditionalContentData, ILinksData } from '../content-block.props.autogenerated';\n\n/**\n * IContentBlockAdditionalContentProps: Interface for\n * Content Block Additional Content Component props.\n */\nexport interface IContentBlockAdditionalContentProps {\n requestContext: Msdyn365.IRequestContext;\n additionalContent: IAdditionalContentData[] | undefined;\n handleAdditionalTextChange(index: number, event: Msdyn365.ContentEditableEvent): void;\n handleAdditionalParagraphChange(index: number, event: Msdyn365.ContentEditableEvent): void;\n handleAdditionalLinkTextChange(linkIndex: number, index: number, event: Msdyn365.ContentEditableEvent): void;\n}\n\n/**\n * IContentBlockAdditionalContentProps: Interface for\n * Content Block Additional Content view props.\n */\nexport interface IContentBlockAdditionalContentViewProps {\n additionalContentNode: INodeProps;\n additionalContentItems?: IContentBlockAdditionalContentItemViewProps[];\n}\n\n/**\n * IContentBlockAdditionalContentProps: Interface for\n * Content Block Additional Content Item view props.\n */\nexport interface IContentBlockAdditionalContentItemViewProps {\n heading: React.ReactNode;\n text: React.ReactNode;\n links: React.ReactNode;\n additionalContentItemContainer: INodeProps;\n additionalContentItemLinks: INodeProps;\n}\n\n/**\n * Renders additional content heading.\n * @param additionalContentHeading - Additional content heading.\n * @param props - Content Block Additional content component props.\n * @param itemIndex - Item index.\n * @returns Heading Node.\n */\nconst renderHeading = (additionalContentHeading: string, props: IContentBlockAdditionalContentProps, itemIndex: number) => {\n const requestContext = props.requestContext;\n return (\n {\n props.handleAdditionalTextChange(itemIndex, event);\n },\n requestContext\n }}\n />\n );\n};\n\n/**\n * Renders additional content heading.\n * @param additionalContentParagraphText - Additional content paragraph text.\n * @param props - Content Block Additional content component props.\n * @param itemIndex - Item index.\n * @returns Paragraph Node.\n */\nconst renderParagraph = (additionalContentParagraphText: string, props: IContentBlockAdditionalContentProps, itemIndex: number) => {\n const requestContext = props.requestContext;\n return (\n {\n props.handleAdditionalTextChange(itemIndex, event);\n },\n requestContext\n }}\n />\n );\n};\n\n/**\n * Renders additional content heading.\n * @param ctaLink - Additional content link.\n * @param props - Content Block Additional content component props.\n * @param itemIndex - Item index.\n * @param linkIndex - Additional content link index.\n * @returns Link Node.\n */\nconst renderLinks = (ctaLink: ILinksData, props: IContentBlockAdditionalContentProps, itemIndex: number, linkIndex: number) => {\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: ctaLink.ariaLabel,\n className: 'ms-content-block__details__additional-content-cta-links',\n linkText: ctaLink.linkText,\n linkUrl: ctaLink.linkUrl.destinationUrl,\n openInNewTab: ctaLink.openInNewTab,\n role: 'link'\n };\n const requestContext = props.requestContext;\n return (\n {\n props.handleAdditionalLinkTextChange(linkIndex, itemIndex, event);\n },\n requestContext\n }}\n />\n );\n};\n\n/**\n * Create node for each additonal content item.\n * @param item - Content block additonal content item props.\n * @param props - Content Block Additional content component props.\n * @param itemIndex - Item index.\n * @returns IContentBlockAdditionalContentItemViewProps.\n */\nconst assembleNode = (\n item: IAdditionalContentData,\n props: IContentBlockAdditionalContentProps,\n itemIndex: number\n): IContentBlockAdditionalContentItemViewProps => {\n const headingNode = item.heading && renderHeading(item.heading, props, itemIndex);\n const paragraphNode = item.subtext && renderParagraph(item.subtext, props, itemIndex);\n const linksNode = item.links?.map((ctaLink: ILinksData, index: number) => {\n return renderLinks(ctaLink, props, itemIndex, index);\n });\n\n return {\n heading: headingNode,\n text: paragraphNode,\n links: linksNode,\n additionalContentItemContainer: { className: 'ms-content-block__details__additional-content__container' },\n additionalContentItemLinks: { className: 'ms-content-block__details__additional-content-cta' }\n };\n};\n\n/**\n * ContentBlockAdditionalContent component.\n * @param props - Content Block Additional content component props.\n * @returns Content Block Additional content view props.\n */\nexport const contentBlockAdditionalContent = (\n props: IContentBlockAdditionalContentProps\n): IContentBlockAdditionalContentViewProps | undefined => {\n const { additionalContent } = props;\n if (!additionalContent) {\n return undefined;\n }\n\n const reactNodes: IContentBlockAdditionalContentItemViewProps[] = [];\n additionalContent.map((item, index: number) => {\n return reactNodes.push(assembleNode(item, props, index));\n });\n\n return {\n additionalContentNode: { className: 'ms-content-block__details__additional-content' },\n additionalContentItems: reactNodes\n };\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ILinksData } from '../content-block.props.autogenerated';\n\nexport interface IContentCardLinks {\n links: ILinksData[];\n requestContext: Msdyn365.IRequestContext;\n telemetryContent: ITelemetryContent;\n role?: string;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\n/**\n *\n * ContentCardLinks component.\n * @extends {React.PureComponent}\n */\nexport class ContentCardLinks extends React.PureComponent {\n public render(): JSX.Element {\n const editableLinks = this._mapEditableLinks(this.props.links);\n return (\n
\n {editableLinks && editableLinks.length > 0 ? (\n \n ) : null}\n
\n );\n }\n\n private readonly _mapEditableLinks = (linkdata: ILinksData[]): Msdyn365.ILinksData[] | null => {\n if (!linkdata || linkdata.length === 0) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n linkdata.forEach((link, index) => {\n // Construct telemetry attribute to render\n const payLoad = getPayloadObject('click', this.props.telemetryContent, '', '');\n const linkText = link.linkText ? link.linkText : '';\n payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.props.telemetryContent, payLoad);\n const btnClass = index === 0 ? 'msc-cta__primary' : 'msc-cta__secondary';\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: btnClass,\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: this.props.role,\n additionalProperties: attributes,\n onClick: onTelemetryClick(this.props.telemetryContent, payLoad, linkText)\n };\n editableLinks.push(editableLink);\n });\n\n return editableLinks;\n };\n}\nexport default ContentCardLinks;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { contentBlockAdditionalContent, IContentBlockAdditionalContentViewProps } from './components/additional-content';\nimport LinksComponent from './components/links';\nimport { actionableRegion as region, IContentBlockConfig, IContentBlockProps } from './content-block.props.autogenerated';\n\nexport interface IContentBlockViewProps extends IContentBlockProps<{}> {\n title?: React.ReactNode;\n text?: React.ReactNode;\n image?: React.ReactNode;\n links?: React.ReactNode;\n className?: string;\n contentBlockContainer: IModuleProps;\n imageContainer: INodeProps;\n detailsContainer: INodeProps;\n contentBlockAnchorTag?: INodeProps;\n imageLink?: string;\n imageAriaLabel?: string;\n additionalContent?: IContentBlockAdditionalContentViewProps;\n handleAdditionalText?(): void;\n handleAdditionalParagraph?(): void;\n handleAdditionalLinkTextChange?(): void;\n}\n\n/**\n * Site-builder configuration for the module.\n */\nexport interface IContentBlockFullConfig extends IContentBlockConfig {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- This field comes from SDK.\n msdyn365__moduleLayout?: string;\n}\n\n/**\n * ContentCard component.\n * @extends {React.PureComponent}\n */\nexport class ContentBlock extends React.PureComponent> {\n private readonly telemetryContent: ITelemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n public render(): JSX.Element | null {\n const { heading, paragraph, image, links, className, imageAriaLabel } = this.props.config;\n const contentBlockTitle = heading && (\n \n );\n const imageProps = {\n gridSettings: this.props.context.request.gridSettings ?? {},\n imageSettings: image?.imageSettings\n };\n const contentBlockLinks = links && ArrayExtensions.hasElements(links) && (\n \n );\n const contentBlockText = paragraph && (\n \n );\n const contentBlockImage = (\n \n );\n\n if (!contentBlockTitle && !contentBlockText && !contentBlockLinks) {\n this.props.context.telemetry.error('Content block content is empty, module wont render.');\n return null;\n }\n const contentBlockviewProps = {\n ...this.props,\n title: contentBlockTitle,\n text: contentBlockText,\n image: contentBlockImage,\n links: contentBlockLinks,\n moduleClass: this.props.config.className,\n contentBlockContainer: {\n moduleProps: this.props,\n className: classnames('ms-content-block', className)\n },\n imageContainer: { className: 'ms-content-block__image' },\n detailsContainer: { className: 'ms-content-block__details' },\n contentBlockAnchorTag: {\n tag: 'a',\n className: 'ms-content-block__link',\n role: 'link'\n },\n imageLink: this._getImageLink(),\n imageAriaLabel,\n additionalContent: contentBlockAdditionalContent({\n requestContext: this.props.context.request,\n additionalContent: this.props.config.additionalContent,\n handleAdditionalTextChange: this.handleAdditionalTextChange,\n handleAdditionalParagraphChange: this.handleAdditionalParagraphChange,\n handleAdditionalLinkTextChange: this.handleAdditionalLinkTextChange\n }),\n handleAdditionalText: this.handleAdditionalTextChange,\n handleAdditionalParagraph: this.handleAdditionalParagraphChange,\n handleAdditionalLinkTextChange: this.handleAdditionalLinkTextChange\n };\n\n return this.props.renderView(contentBlockviewProps) as React.ReactElement;\n }\n\n /**\n * To handle text change.\n * @param event - To handle text change event.\n * @name - HandleTextChange\n * @public\n * @returns - The Text value.\n */\n public handleTextChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading!.text = event.target.value);\n\n /**\n * To handle paragraph change.\n * @param event - To handle text change event.\n * @name - HandleParagraphChange\n * @public\n * @returns - The Paragraph value.\n */\n public handleParagraphChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.paragraph = event.target.value);\n\n /**\n * Handle link text change.\n * @param linkIndex - The link index.\n * @returns - Void.\n */\n public handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent) => {\n if (this.props.config.links && this.props.config.links[Number(linkIndex)]) {\n this.props.config.links[Number(linkIndex)].linkText = event.target.value;\n }\n };\n\n public handleAdditionalTextChange(index: number, event: Msdyn365.ContentEditableEvent): void {\n if (this.props.config.additionalContent) {\n this.props.config.additionalContent[Number(index)].heading = event.target.value;\n }\n }\n\n public handleAdditionalLinkTextChange(linkIndex: number, index: number, event: Msdyn365.ContentEditableEvent): void {\n const additionalContentObject =\n (this.props.config.additionalContent &&\n ArrayExtensions.hasElements(this.props.config.additionalContent) &&\n this.props.config.additionalContent[Number(index)]) ||\n {};\n if (additionalContentObject.links) {\n additionalContentObject.links[Number(linkIndex)].linkText = event.target.value;\n }\n }\n\n public handleAdditionalParagraphChange(index: number, event: Msdyn365.ContentEditableEvent): void {\n if (this.props.config.additionalContent) {\n this.props.config.additionalContent[Number(index)].subtext = event.target.value;\n }\n }\n\n private _getImageLink(): string | null {\n const { imageLink, links, actionableRegion } = this.props.config;\n if (actionableRegion === region.imageAndLinks) {\n if (imageLink?.destinationUrl) {\n return imageLink.destinationUrl;\n } else if (links && ArrayExtensions.hasElements(links) && links[0].linkUrl) {\n return links[0].linkUrl.destinationUrl;\n }\n return null;\n }\n return null;\n }\n}\n\nexport default ContentBlock;\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { getPayloadObject, getTelemetryAttributes, IPayLoad, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport Cookies from 'universal-cookie';\r\n\r\nexport interface ICookieComplianceAcceptButton {\r\n acceptCookiesButtonText?: string;\r\n acceptCookiesButtonAriaLabel?: string;\r\n\r\n /**\r\n * The telemetry content\r\n */\r\n telemetryContent?: ITelemetryContent;\r\n onClose(): void;\r\n cookies?: Cookies | undefined;\r\n}\r\n\r\nexport const CookieComplianceAcceptButton: React.FC = ({\r\n acceptCookiesButtonText,\r\n acceptCookiesButtonAriaLabel,\r\n telemetryContent,\r\n onClose,\r\n cookies\r\n}) => {\r\n const payLoad: IPayLoad = getPayloadObject('click', telemetryContent!, 'accept cookies');\r\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\r\n const handleAccept = () => {\r\n if (!cookies?.get('reject')) {\r\n cookies?.set('accept', true);\r\n }\r\n onClose();\r\n };\r\n return (\r\n \r\n {acceptCookiesButtonText}\r\n \r\n );\r\n};\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { getPayloadObject, getTelemetryAttributes, IPayLoad, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport Cookies from 'universal-cookie';\r\n\r\nexport interface ICookieComplianceRejecttButton {\r\n rejectCookiesButtonText?: string;\r\n rejectCookiesButtonAriaLabel?: string;\r\n\r\n /**\r\n * The telemetry content\r\n */\r\n telemetryContent?: ITelemetryContent;\r\n onClose(): void;\r\n cookies?: Cookies | undefined;\r\n}\r\n\r\nexport const CookieComplianceRejectButton: React.FC = ({\r\n rejectCookiesButtonText,\r\n rejectCookiesButtonAriaLabel,\r\n telemetryContent,\r\n onClose,\r\n cookies\r\n}) => {\r\n const payLoad: IPayLoad = getPayloadObject('click', telemetryContent!, 'reject cookies');\r\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\r\n const handleReject = () => {\r\n if (!cookies?.get('accept')) {\r\n cookies?.set('reject', true);\r\n }\r\n onClose();\r\n };\r\n return (\r\n \r\n {rejectCookiesButtonText}\r\n \r\n );\r\n};\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IActionLinksData } from '../mands-cookies.props.autogenerated';\r\n\r\nexport interface ICookieComplianceLinks {\r\n links: IActionLinksData[];\r\n requestContext: Msdyn365.IRequestContext;\r\n telemetryContent: ITelemetryContent;\r\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\r\n}\r\n\r\n/**\r\n *\r\n * ContentCardLinks component.\r\n * @extends {React.PureComponent}\r\n */\r\nexport class CookieComplianceLinks extends React.PureComponent {\r\n public render(): JSX.Element {\r\n const editableLinks = this._mapEditableLinks(this.props.links);\r\n return (\r\n \r\n {editableLinks && editableLinks.length > 0 ? (\r\n \r\n ) : null}\r\n \r\n );\r\n }\r\n\r\n private readonly _mapEditableLinks = (linkdata: IActionLinksData[]): Msdyn365.ILinksData[] | null => {\r\n if (!linkdata || linkdata.length === 0) {\r\n return null;\r\n }\r\n const editableLinks: Msdyn365.ILinksData[] = [];\r\n linkdata.forEach((link, index) => {\r\n // Construct telemetry attribute to render\r\n const payLoad = getPayloadObject('click', this.props.telemetryContent, '', '');\r\n const linkText = link.linkText ? link.linkText : '';\r\n payLoad.contentAction.etext = linkText;\r\n const attributes = getTelemetryAttributes(this.props.telemetryContent, payLoad);\r\n const editableLink: Msdyn365.ILinksData = {\r\n ariaLabel: link.ariaLabel,\r\n className: 'link',\r\n linkText: link.linkText,\r\n linkUrl: link.linkUrl.destinationUrl,\r\n openInNewTab: link.openInNewTab,\r\n role: 'link',\r\n additionalProperties: attributes,\r\n onClick: onTelemetryClick(this.props.telemetryContent, payLoad, linkText)\r\n };\r\n editableLinks.push(editableLink);\r\n });\r\n\r\n return editableLinks;\r\n };\r\n}\r\n\r\nexport default CookieComplianceLinks;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\n// import * as MsDyn365 from '@msdyn365-commerce/core';\r\nimport MsDyn365, { RichTextComponent, ContentEditableEvent, ICoreContext } from '@msdyn365-commerce/core';\r\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { getTelemetryObject, IAlertProps, IModuleProps, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\nimport Cookies from 'universal-cookie';\r\n\r\nimport { CookieComplianceAcceptButton, CookieComplianceLinks, CookieComplianceRejectButton } from './components';\r\nimport { IMandsCookiesConfig, IMandsCookiesProps } from './mands-cookies.props.autogenerated';\r\n// import { reaction } from 'mobx';\r\n\r\n/**\r\n * Alert state interface.\r\n */\r\nexport interface IAlertState {\r\n visible: boolean;\r\n}\r\n\r\n/**\r\n * Cookie compliance view props interface.\r\n */\r\nexport interface ICookieComplianceViewProps extends IMandsCookiesProps<{}> {\r\n CookieComplianceBanner: IModuleProps;\r\n AlertProps: IAlertProps;\r\n Content: INodeProps;\r\n text?: React.ReactNode;\r\n links?: React.ReactNode;\r\n acceptButton?: React.ReactNode;\r\n rejectButton?: React.ReactNode;\r\n className: string;\r\n onDismiss(): void;\r\n isRejected: boolean;\r\n isAccepted: boolean;\r\n}\r\n/**\r\n *\r\n * CookieCompliance component.\r\n * @extends {React.PureComponent>}\r\n */\r\nclass CookieCompliance extends React.PureComponent, IAlertState> {\r\n private readonly cookieRef: React.RefObject;\r\n public cookies: Cookies | undefined;\r\n public isRejected: boolean;\r\n public isAccepted: boolean;\r\n public listOfCookies: string[];\r\n public forceFullyRemoveCookiesList: string[];\r\n private readonly telemetryContent: ITelemetryContent = getTelemetryObject(\r\n this.props.context.request.telemetryPageName!,\r\n this.props.friendlyName,\r\n this.props.telemetry\r\n );\r\n\r\n public constructor(props: IMandsCookiesProps) {\r\n super(props);\r\n this.state = { visible: false };\r\n this.cookieRef = React.createRef();\r\n this._onDismiss = this._onDismiss.bind(this);\r\n this.cookies = new Cookies();\r\n this.isRejected = this.cookies?.get('reject') ? true : false;\r\n this.isAccepted = this.cookies?.get('accept') ? true : false;\r\n this.listOfCookies = props.config.cookiesList?.split(',')!;\r\n this.forceFullyRemoveCookiesList = props.config.forceFullyRemoveCookiesList?.split(',')!;\r\n\r\n if (MsDyn365.isBrowser && !this.isRejected && !this.isAccepted) {\r\n this.handleCookies(this.listOfCookies, props.context);\r\n }\r\n }\r\n public componentDidMount(): void {\r\n const { context } = this.props;\r\n if (context && context.request && context.request.cookies && !context.request.cookies.isConsentGiven()) {\r\n this.setState({ visible: true });\r\n }\r\n if (this.isRejected && MsDyn365.isBrowser && !this.isAccepted) {\r\n this.removeCookies(this.forceFullyRemoveCookiesList, context);\r\n this.handleCookies(this.listOfCookies, context);\r\n }\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const { config, context, resources, telemetry } = this.props;\r\n const { acceptCookiesButtonText, acceptCookiesAriaLabel, rejectCookiesButtonText, rejectCookiesAriaLabel } = resources;\r\n const { visible } = this.state;\r\n const isConsentGiven = context && context.request && context.request.cookies && context.request.cookies.isConsentGiven();\r\n let moduleConfig: IMandsCookiesConfig;\r\n try {\r\n moduleConfig = config;\r\n } catch (error) {\r\n telemetry.error(`Something went wrong while rendering the alert module ------${error}`);\r\n return
{error}
;\r\n }\r\n\r\n if (isConsentGiven && !visible) {\r\n this.props.context.telemetry.error('Cookie Compliance content is empty, module wont render.');\r\n return null;\r\n }\r\n\r\n if (!MsDyn365.isBrowser) {\r\n return <>;\r\n }\r\n\r\n const viewProps = {\r\n ...this.props,\r\n onDismiss: this._onDismiss,\r\n CookieComplianceBanner: {\r\n moduleProps: this.props,\r\n className: classnames('ms-cookie-compliance', moduleConfig.className),\r\n ref: this.cookieRef\r\n },\r\n AlertProps: {\r\n className: 'ms-cookie-compliance__container',\r\n color: 'white',\r\n fade: false\r\n },\r\n Content: {\r\n className: 'ms-cookie-compliance__content'\r\n },\r\n text: moduleConfig.content && (\r\n \r\n ),\r\n links: ArrayExtensions.hasElements(moduleConfig.actionLinks) && (\r\n \r\n ),\r\n acceptButton: (\r\n \r\n ),\r\n rejectButton: (\r\n \r\n )\r\n };\r\n\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n /**\r\n * Handles Link content change event.\r\n * @param linkIndex - Index of link in linkarray.\r\n * @returns Void.\r\n */\r\n public handleLinkTextChange = (linkIndex: number) => (event: ContentEditableEvent): void => {\r\n // eslint-disable-next-line security/detect-object-injection\r\n if (this.props.config.actionLinks?.[linkIndex]) {\r\n // eslint-disable-next-line security/detect-object-injection\r\n this.props.config.actionLinks[linkIndex].linkText = event.target.value;\r\n }\r\n };\r\n\r\n /**\r\n * Handles content change event.\r\n * @param event - Event.\r\n */\r\n public handleContentChange = (event: ContentEditableEvent): void => {\r\n this.props.config.content = event.target.value;\r\n };\r\n\r\n private _onDismiss(): void {\r\n const { context } = this.props;\r\n\r\n if (context && context.request && context.request.cookies) {\r\n context.request.cookies.setConsentCookie();\r\n location.reload();\r\n }\r\n this.setState({ visible: false });\r\n }\r\n\r\n private handleCookies(\r\n data: string[],\r\n context: ICoreContext<{\r\n [x: string]: any;\r\n }>\r\n ) {\r\n data.forEach(cookieName => {\r\n if (context.request.cookies.get(cookieName.trim())) {\r\n document.cookie = `${cookieName.trim()}=; Max-Age=-99999999;`;\r\n context.request.cookies.remove(cookieName.trim());\r\n }\r\n });\r\n }\r\n private removeCookies(\r\n data: string[],\r\n context: ICoreContext<{\r\n [x: string]: any;\r\n }>\r\n ) {\r\n data.forEach(cookieName => {\r\n if (context.request.cookies.get(cookieName.trim())) {\r\n const expires = new Date();\r\n expires.setTime(expires.getTime() - 1);\r\n document.cookie = `${cookieName.trim()}=; expires=${expires.toUTCString()}; path=/`;\r\n context.request.cookies.remove(cookieName.trim());\r\n }\r\n });\r\n }\r\n}\r\n\r\nexport default CookieCompliance;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ISitePickerViewProps } from './site-picker';\n\nexport default (props: ISitePickerViewProps) => {\n return <>{_renderSitePicker(props)};\n};\n\nconst _renderDesktopView = (props: ISitePickerViewProps) => {\n const { SitePickerMenu, SitePickerMenuSpan } = props;\n return (\n <>\n \n {props.config.heading?.text}\n \n \n {props.siteOptionsState ? _renderSiteOptionsList(props) : null}\n \n );\n};\n\nconst _renderSiteOptionsList = (props: ISitePickerViewProps): React.ReactNode => {\n const { SitePickerMenuList, SitePickerMenuListItem, SitePickerMenuListItemArray } = props;\n const options = SitePickerMenuListItemArray!.map((item, index) => {\n return (\n \n {item}\n \n );\n });\n return (\n \n {options}\n \n );\n};\n\nconst _renderMobileView = (props: ISitePickerViewProps): React.ReactNode => {\n const { SitePickerMobileContainer } = props;\n return (\n \n
\n {props.SitePickerMenuListItemArray?.map((item, index) => {\n return
{item}
;\n })}\n
\n
\n );\n};\n\nconst _renderSitePicker = (props: ISitePickerViewProps): React.ReactNode => {\n const { isMobileView, SitePicker } = props;\n return {isMobileView ? _renderMobileView(props) : _renderDesktopView(props)};\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IAccountInvoiceTileDescription {\n description: string;\n}\n\nexport const AccountInvoiceTileDescription: React.FC = ({ description }) => (\n

{description}

\n);\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ILinksData } from '../account-invoice-tile.props.autogenerated';\n\nexport interface IAccountInvoiceTileLinks {\n links: ILinksData[];\n requestContext: Msdyn365.IRequestContext;\n\n /**\n * The telemetry content\n */\n telemetryContent?: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\nconst AccountInvoiceTileLinks: React.FC = ({ links, telemetryContent, requestContext, onTextChange }) => {\n if (links.length === 0) {\n return null;\n }\n const editableLinks = _mapEditableLinks(links, telemetryContent);\n return (\n
\n {editableLinks && editableLinks.length > 0 ? (\n \n ) : null}\n
\n );\n};\n\nconst _mapEditableLinks = (linkdata: ILinksData[], telemetryContent?: ITelemetryContent): Msdyn365.ILinksData[] | null => {\n if (!linkdata || linkdata.length === 0) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n const payLoad = getPayloadObject('click', telemetryContent!, '');\n linkdata.forEach((link, index) => {\n payLoad.contentAction.etext = link.linkText;\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-account-invoice-tile__link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: attributes\n };\n editableLinks.push(editableLink);\n });\n\n return editableLinks;\n};\n\nexport default AccountInvoiceTileLinks;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { format, getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IAccountInvoiceTileData } from './account-invoice-tile.data';\nimport { IAccountInvoiceTileProps } from './account-invoice-tile.props.autogenerated';\nimport { AccountInvoiceTileDescription } from './components';\nimport LinksComponent from './components/account-invoice-tile-links';\n\nexport interface IAccountInvoiceTileViewProps extends IAccountInvoiceTileProps {\n AccountInvoiceTile: IModuleProps;\n className: string;\n heading?: React.ReactNode;\n links?: React.ReactNode;\n description?: React.ReactNode;\n}\n\n/**\n *\n * AccountInvoiceTile component.\n * @extends {React.PureComponent>}\n */\nclass AccountInvoiceTile extends React.PureComponent> {\n private readonly telemetryContent: ITelemetryContent;\n\n constructor(props: IAccountInvoiceTileProps) {\n super(props);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public render(): JSX.Element {\n const {\n config,\n data,\n resources,\n context: {\n cultureFormatter: {\n formatCurrency,\n\n // @ts-expect-error\n currencyCode\n }\n }\n } = this.props;\n const { className, heading, links } = config;\n const { accountInvoiceTileDescription } = resources;\n\n const openinvoiceAmount = data.customerBalance.result?.OpenInvoiceBalance || 0;\n const invoiceTotalAmount: string | undefined = formatCurrency(openinvoiceAmount.toFixed(2), currencyCode);\n\n const description = invoiceTotalAmount && format(accountInvoiceTileDescription, invoiceTotalAmount);\n\n const viewProps = {\n ...this.props,\n className,\n AccountInvoiceTile: {\n moduleProps: this.props,\n className: classnames('ms-account-invoice-tile', config.className)\n },\n heading: heading && heading.text && (\n \n ),\n links: links && links.length > 0 && (\n \n ),\n description: description && \n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading.text = event.target.value);\n\n public handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent) => {\n if (this.props.config.links && this.props.config.links[linkIndex]) {\n this.props.config.links[linkIndex].linkText = event.target.value;\n }\n };\n}\n\nexport default AccountInvoiceTile;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAccordionItemViewProps } from './accordion-item';\n\nconst AccordionItemView: React.FC = props => {\n const { drawer, accordionSlots, AccordionItemContainer, AccordionItemContent } = props;\n return (\n \n \n \n {accordionSlots &&\n accordionSlots.accordionItemContent &&\n accordionSlots.accordionItemContent.length &&\n _renderAccordionItemContent(accordionSlots.accordionItemContent)}\n \n \n \n );\n};\n\nconst _renderAccordionItemContent = (items: React.ReactNode[]): JSX.Element | null => {\n return (\n <>\n {items && items.length > 0\n ? items.map((item: React.ReactNode, index: number) => {\n return {item};\n })\n : null}\n \n );\n};\nexport default AccordionItemView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { ControlledDrawer, getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport { IDrawerState } from '@msdyn365-commerce-modules/utilities/dist/types/drawer/Drawer';\nimport classnames from 'classnames';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { createAccordionStateInput, interactionStyle } from '../..';\nimport { IAccordionItemData } from './accordion-item.data';\nimport { IAccordionItemProps } from './accordion-item.props.autogenerated';\n\nexport interface IAccordionItemViewProps {\n AccordionItemContainer: IModuleProps;\n drawer: INodeProps;\n accordionSlots: INodeProps;\n AccordionItemContent: INodeProps;\n className: string;\n}\n\nexport interface IAccordionItemExtentedProps extends IAccordionItemProps {\n interactionStyle?: interactionStyle;\n}\n\n/**\n *\n * AccordionItem component.\n * @extends {React.Component}\n */\n@observer\nclass AccordionItem extends React.Component {\n private readonly moduleClassName: string = 'ms-accordion-item';\n\n private readonly telemetryContent?: ITelemetryContent;\n\n constructor(props: IAccordionItemProps) {\n super(props);\n this._onToggle = this._onToggle.bind(this);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public shouldComponentUpdate(nextProps: IAccordionItemProps): boolean {\n if (this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element {\n const { slots, renderView, config, data } = this.props;\n const accordionExpandedStateResult = data && data.accordionExpandedState && data.accordionExpandedState.result;\n const expanded =\n accordionExpandedStateResult && accordionExpandedStateResult.isAllExpanded === undefined\n ? data && config.isExpandedOnInitialLoad\n : accordionExpandedStateResult && accordionExpandedStateResult.isAllExpanded;\n const viewProps = {\n ...this.props,\n AccordionItemContainer: {\n moduleProps: this.props,\n className: classnames(this.moduleClassName, config.className)\n },\n AccordionItemContent: {\n className: 'ms-accordion-item-content'\n },\n drawer: {\n tag: ControlledDrawer,\n className: `${this.moduleClassName}__drawer`,\n toggleButtonText: (config.accordionItemTitle && config.accordionItemTitle) || '',\n collapseProps: { isOpen: expanded },\n onToggle: this._onToggle,\n onTextChange: this.handleHeadingChange,\n requestContext: this.props.context.request,\n telemetryContent: this.telemetryContent\n },\n accordionSlots: slots\n };\n return renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.accordionItemTitle = event.target.value);\n\n private _onToggle(state: IDrawerState): void {\n if (!state.isOpen && this.props.interactionStyle === interactionStyle.ExpandOneItemOnly) {\n const accordionState = { isAllExpanded: false };\n this.props.context.actionContext.update(createAccordionStateInput(accordionState), accordionState);\n }\n }\n}\nexport default AccordionItem;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365 from '@msdyn365-commerce/core';\nimport { ICartlinesViewProps, ICartResources, ICartViewProps, IOrderSummaryErrors } from '@msdyn365-commerce-modules/cart';\nimport { ICartLineItemViewProps } from '@msdyn365-commerce-modules/cart/dist/types/modules/cart/components/cart-line-items-promotion';\nimport { IInvoiceSummaryLines } from '@msdyn365-commerce-modules/invoice-payment-summary';\nimport { IOrderSummaryLines } from '@msdyn365-commerce-modules/order-summary-utilities';\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n INodeProps,\n ITelemetryContent,\n Node,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nconst CartView: React.FC = (props: ICartViewProps) => (\n
\n {props.title}\n {props.promotionOptions && _renderPromotions(props.promotionOptions)}\n {props.cart?.hasInvoiceLine || props.multiplePickUpEnabled ? (\n _renderCartLinesGroup(props, props.resources)\n ) : (\n \n {_renderCartlines(\n props.cartlines,\n props.resources,\n props.storeSelector,\n props.backToShoppingButton,\n props.waitingComponent,\n props.cartLoadingStatus,\n props.cartDataResult,\n props.telemetryContent,\n props.multiplePickUpEnabled,\n props.context.actionContext.requestContext.channel?.EmailDeliveryModeCode\n )}\n \n )}\n {props.orderSummaryHeading && (\n \n {props.orderSummaryHeading}\n {props.cart?.hasInvoiceLine\n ? _renderInvoiceSummarylines(props.invoiceSummaryLineitems, props.OrderSummaryItems, props)\n : _renderOrderSummarylines(props.orderSummaryLineitems, props.OrderSummaryItems, props)}\n {_renderErrorBlock(props.OrderSummaryErrors)}\n {props.checkoutAsSignInUserButton}\n {props.checkoutAsGuestButton}\n {props.expressCheckoutButton && ArrayExtensions.hasElements(props.expressCheckoutButton) ? (\n {props.expressCheckoutButton}\n ) : null}\n {props.backToShoppingButton}\n {props.createTemplateFromCartButton}\n \n )}\n {props.storeSelector}\n
\n);\n\nconst _renderPromotions = (promotions: ICartLineItemViewProps): JSX.Element | undefined => {\n return (\n <>\n \n {promotions.promotionMessage}\n {promotions.promotionSeeAllLink}\n {promotions.promotionDialog}\n \n \n );\n};\n\nconst _renderCartlines = (\n cartLines: ICartlinesViewProps[] | undefined,\n resources: ICartResources,\n storeSelector: React.ReactNode | undefined,\n backToShoppingButton: React.ReactNode,\n waitingComponent: React.ReactNode,\n cartLoadingStatus: string,\n cartDataResult: boolean,\n telemetryContent?: ITelemetryContent,\n mulitplePickUp?: boolean,\n emailDeliveryModeCode?: string\n): JSX.Element[] | JSX.Element => {\n const { emptyCartText } = resources;\n\n if (cartLoadingStatus) {\n return <>{cartLoadingStatus};\n }\n if (cartLines) {\n return cartLines.map((cartLine, index) => {\n return (\n
\n {cartLine.cartline}\n {mulitplePickUp ? null : _renderBOPISBlock(cartLine, resources, storeSelector, telemetryContent, emailDeliveryModeCode)}\n {mulitplePickUp ? (\n \n {_renderGroupBOPISBlock(cartLine, resources, storeSelector, telemetryContent, emailDeliveryModeCode)}\n {cartLine.addToOrderTemplate}\n {cartLine.addToWishlist}\n {cartLine.remove}\n \n ) : cartLine.addToOrderTemplate ? (\n \n {cartLine.addToOrderTemplate}\n {cartLine.addToWishlist}\n {cartLine.remove}\n \n ) : (\n <>\n {cartLine.addToWishlist}\n {cartLine.remove}\n \n )}\n
\n );\n });\n }\n return cartDataResult ? (\n
\n

{emptyCartText}

\n {backToShoppingButton}\n
\n ) : (\n <>{waitingComponent}\n );\n};\n\n/**\n * On Toggle function.\n * @param cartLine -Cartline.\n * @param isBopisSelected -Boolean.\n * @returns Set state of button.\n */\nconst onToggleBopisHandler = (cartLine: ICartlinesViewProps, isBopisSelected: boolean) => () => {\n cartLine.pickUpInStore && cartLine.pickUpInStore.callbacks.toggleBopis(!isBopisSelected);\n};\n\n/**\n * On change store function.\n * @param cartLine -CartLine items prop.\n * @returns Set state of button.\n */\nconst onChangeStoreHandler = (cartLine: ICartlinesViewProps) => () => {\n cartLine.pickUpInStore && cartLine.pickUpInStore.callbacks.toggleBopis(true);\n};\n\nconst _renderBOPISBlock = (\n cartLine: ICartlinesViewProps,\n resources: ICartResources,\n storeSelector: React.ReactNode | undefined,\n telemetryContent?: ITelemetryContent,\n emailDeliveryModeCode?: string\n): JSX.Element | null => {\n // If it is electronic item cart line, then return null for BOPISBlock.\n if (!cartLine.pickUpInStore || !storeSelector || cartLine.data?.cartline.DeliveryMode === emailDeliveryModeCode) {\n return null;\n }\n\n const {\n shipInsteadDisplayText,\n shipToAddressDisplayText,\n pickItUpDisplayText,\n pickUpAtStoreWithLocationText,\n changeStoreDisplayText\n } = resources;\n\n const isBopisSelected = cartLine.pickUpInStore.isBopisSelected;\n\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\n const puckUpinStoreAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n \n
\n {isBopisSelected ? (\n {pickUpAtStoreWithLocationText}\n ) : (\n {shipToAddressDisplayText}\n )}\n
\n {isBopisSelected && (\n
\n {cartLine.pickUpInStore.orgUnitName}\n \n
\n )}\n \n {isBopisSelected ? shipInsteadDisplayText : pickItUpDisplayText}\n \n
\n );\n};\n\nconst _renderErrorBlock = (errorData: IOrderSummaryErrors | undefined): JSX.Element | null => {\n if (!errorData || errorData.errors.length === 0) {\n return null;\n }\n return (\n \n {errorData.header}\n {errorData.errors}\n \n );\n};\n\nconst _renderOrderSummarylines = (\n orderSummaryLines: IOrderSummaryLines | undefined,\n OrderSummaryItems: INodeProps,\n props: ICartViewProps\n): JSX.Element | null => {\n if (!orderSummaryLines) {\n return null;\n }\n return (\n \n {props.promoCode}\n {orderSummaryLines.subtotal}\n {orderSummaryLines.shipping}\n {orderSummaryLines.otherCharge}\n {orderSummaryLines.tax}\n {orderSummaryLines.totalDiscounts ? orderSummaryLines.totalDiscounts : null}\n {orderSummaryLines.orderTotal}\n \n );\n};\n\nconst _renderInvoiceSummarylines = (\n invoiceSummaryLines: IInvoiceSummaryLines | undefined,\n OrderSummaryItems: INodeProps,\n props: ICartViewProps\n): JSX.Element | null => {\n if (!invoiceSummaryLines) {\n props.context.telemetry.error('InvoiceSummary content is empty, module wont render');\n return null;\n }\n return (\n \n {invoiceSummaryLines.invoices}\n {invoiceSummaryLines.giftCard}\n {invoiceSummaryLines.loyalty}\n {invoiceSummaryLines.orderTotal}\n \n );\n};\n\nconst _renderCartLinesGroup = (props: ICartViewProps, resources: ICartResources): JSX.Element | undefined => {\n if (props.cartLinesGroup && props.cartLinesGroup.length > 0) {\n return (\n
\n {props.cartLinesGroup.map(cartlines => {\n return (\n
\n {_renderCartLinesGroupHeader(\n cartlines[0],\n props.storeSelector,\n resources,\n _countItems(cartlines),\n props.context.actionContext.requestContext.channel?.EmailDeliveryModeCode\n )}\n {_renderCartlines(\n cartlines,\n props.resources,\n props.storeSelector,\n props.backToShoppingButton,\n props.waitingComponent,\n props.cartLoadingStatus,\n props.cartDataResult,\n props.telemetryContent,\n props.multiplePickUpEnabled,\n props.context.actionContext.requestContext.channel?.EmailDeliveryModeCode\n )}\n
\n );\n })}\n
\n );\n }\n return props.cartDataResult ? (\n
\n
\n

{props.resources.emptyCartText}

\n {props.backToShoppingButton}\n
\n
\n ) : (\n <>{props.waitingComponent}\n );\n};\nconst _renderCartLinesGroupHeader = (\n cartLine: ICartlinesViewProps,\n storeSelector: React.ReactNode | undefined,\n resources: ICartResources,\n count: number,\n emailDeliveryModeCode?: string\n) => {\n const isBopisSelected = cartLine.pickUpInStore?.isBopisSelected;\n const { pickUpText, shippingText, emailshippingText, payInvoicesDisplayText } = resources;\n let groupTitle: string;\n\n groupTitle = isBopisSelected ? pickUpText : shippingText;\n if (cartLine.data && cartLine.data.cartline.IsInvoiceLine) {\n groupTitle = payInvoicesDisplayText;\n } else if (!StringExtensions.isNullOrEmpty(emailDeliveryModeCode)) {\n groupTitle = cartLine.data && cartLine.data.cartline.DeliveryMode === emailDeliveryModeCode ? emailshippingText : groupTitle;\n }\n\n return (\n <>\n
\n

\n

{groupTitle}

\n {_renderCartLinesGroupTitle(cartLine, resources, count)}\n
\n \n );\n};\n\nconst _renderGroupBOPISBlock = (\n cartLine: ICartlinesViewProps,\n resources: ICartResources,\n storeSelector: React.ReactNode | undefined,\n telemetryContent?: ITelemetryContent,\n emailDeliveryModeCode?: string\n): JSX.Element | null => {\n // If it is electronic item cart line, then return null for GroupBOPISBlock.\n if (!cartLine.pickUpInStore || !storeSelector || cartLine.data?.cartline.DeliveryMode === emailDeliveryModeCode) {\n return null;\n }\n\n const { changeStoreDisplayText, shipInsteadDisplayText, pickItUpDisplayText } = resources;\n\n const isBopisSelected = cartLine.pickUpInStore.isBopisSelected;\n\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\n const puckUpinStoreAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n <>\n {isBopisSelected ? (\n \n ) : null}\n \n {isBopisSelected ? shipInsteadDisplayText : pickItUpDisplayText}\n \n \n );\n};\n\nconst _countItems = (cartLine: ICartlinesViewProps[]): number => {\n let countItem = 0;\n countItem = cartLine.reduce((count, item) => {\n return count + (item.data?.cartline.Quantity || 0);\n }, 0);\n return countItem;\n};\n\nconst _renderCartLinesGroupTitle = (cartLine: ICartlinesViewProps, resources: ICartResources, count: number) => {\n const isBopisSelected = cartLine.pickUpInStore?.isBopisSelected;\n const { itemLabel, itemsLabel } = resources;\n const suffix = count > 1 ? itemsLabel : itemLabel;\n return (\n <>\n \n {isBopisSelected ? (\n

\n {cartLine.pickUpInStore?.deliveryOption}\n {', '}\n {cartLine.pickUpInStore?.orgUnitName}\n

\n ) : null}\n

\n ({count}\n {` `}\n {suffix})\n

\n
\n \n );\n};\n\nexport default CartView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAadGenericViewProps } from './aad-generic';\n\nexport default (props: IAadGenericViewProps) => {\n const { aadGeneric, aadConainer, aadAPIConainer, heading } = props;\n\n return (\n \n \n {heading}\n {aadAPIConainer}\n \n \n );\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICatalogPickerViewProps } from './catalog-picker';\n\n/**\n * ICatalogPickerViewProps.\n * @param props - ICatalogPickerViewProps.\n * @returns - Render Catalog Picker.\n */\nexport const CatalogPickerViewFunctionComponent: React.FC = props => {\n const { catalogPicker } = props;\n return (\n \n {props.heading}\n {props.paragraph}\n {props.catalogs}\n \n );\n};\n\nexport default CatalogPickerViewFunctionComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAccordionViewProps } from './accordion';\n\nconst accordionView: React.FC = props => {\n const { heading, AccordionContainer, accordionItems } = props;\n if (!props.heading && !props.accordionButtons && !props.accordionItems) {\n props.context.telemetry.error('Accordion content is empty, module wont render');\n return null;\n }\n return (\n \n \n {heading}\n {props.accordionButtons && {props.accordionButtons}}\n \n {accordionItems}\n \n );\n};\n\nexport default accordionView;\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport {\r\n ICheckoutDeliveryOption,\r\n ICheckoutDeliveryOptionEdit,\r\n ICheckoutDeliveryOptionsError,\r\n ICheckoutDeliveryOptionsList,\r\n ICheckoutDeliveryOptionsViewProps\r\n} from '@msdyn365-commerce-modules/checkout/dist/types';\r\n\r\nconst DeliveryOptionList: React.FC = ({ DeliveryOptionsList, list }) => {\r\n if (!list || list.length === 0) {\r\n return null;\r\n }\r\n return (\r\n \r\n {list.map((deliveryOption: ICheckoutDeliveryOptionEdit) => {\r\n return (\r\n \r\n
\r\n {deliveryOption.radioButton}\r\n \r\n
\r\n {deliveryOption.description}\r\n {deliveryOption.price}\r\n
\r\n );\r\n })}\r\n
\r\n );\r\n};\r\n\r\nconst DeliveryOptionSelected: React.FC = ({ DeliveryOption, description, price }) => {\r\n return (\r\n \r\n \r\n {description}\r\n {price}\r\n \r\n );\r\n};\r\n\r\nconst ErrorMessage: React.FC = ({ Error, title, message }) => {\r\n return (\r\n \r\n {title}\r\n {message}\r\n \r\n );\r\n};\r\n\r\nconst CheckoutDeliveryOptionsView: React.FC = props => {\r\n const {\r\n CheckoutDeliveryOptions,\r\n viewState,\r\n deliveryOptions,\r\n deliveryOptionSelected,\r\n errorMessage,\r\n waiting,\r\n saveButton,\r\n editButton,\r\n cancelButton\r\n } = props;\r\n\r\n return (\r\n // TODO: All wrapper div should be provided by viewProps. Once SDK provide the sln, update markup.\r\n \r\n {viewState.isLoading && waiting}\r\n {viewState.isError && errorMessage && }\r\n {viewState.isShowList && deliveryOptions && }\r\n {viewState.isShowSelected && deliveryOptionSelected && }\r\n {viewState.isShowSaveButton && saveButton}\r\n {viewState.isShowEditButton && editButton}\r\n {viewState.isShowCancelButton && cancelButton}\r\n \r\n );\r\n};\r\n\r\nexport default CheckoutDeliveryOptionsView;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { Alert, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { ICookieComplianceViewProps } from './mands-cookies';\r\n\r\nconst CookieComplianceView: React.FC = props => {\r\n const { CookieComplianceBanner, AlertProps, Content, acceptButton, text, links, rejectButton } = props;\r\n return (\r\n \r\n \r\n \r\n {text}\r\n {links}\r\n \r\n \r\n {rejectButton}\r\n {` `}\r\n {acceptButton}\r\n \r\n \r\n \r\n );\r\n};\r\nexport default CookieComplianceView;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IAadGenericData } from './aad-generic.data';\nimport { IAadGenericProps } from './aad-generic.props.autogenerated';\n\nexport interface IAadGenericViewProps extends IAadGenericProps {\n aadGeneric: IModuleProps;\n aadConainer: INodeProps;\n aadAPIConainer: React.ReactNode;\n heading?: React.ReactNode;\n}\n\n/**\n *\n * AadGeneric component.\n * @extends {React.Component>}\n */\nclass AadGeneric extends React.Component> {\n private readonly moduleClassName: string = 'ms-aad-generic';\n\n public componentDidMount(): void {\n // @ts-expect-error\n const { $i2e, $element } = window || {};\n\n if ($i2e && $element) {\n $i2e.insertServiceContent($element.getElementContent());\n $element.initialize();\n }\n }\n\n public shouldComponentUpdate(nextProps: IAadGenericViewProps): boolean {\n if (nextProps.config.heading !== this.props.config.heading) {\n return true;\n }\n return false;\n }\n\n public render(): JSX.Element | null {\n const { className, heading } = this.props.config;\n\n const viewProps = {\n ...this.props,\n aadGeneric: {\n moduleProps: this.props,\n className: classnames(this.moduleClassName, className)\n },\n aadConainer: {\n className: `${this.moduleClassName}__container`\n },\n aadAPIConainer:
,\n heading: heading && (\n \n )\n };\n\n return this.props.renderView(viewProps);\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => {\n if (this.props.config.heading) {\n this.props.config.heading.text = event.target.value;\n }\n };\n}\n\nexport default AadGeneric;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport Msdyn365, {\n ContentEditableEvent,\n generateImageUrl,\n getCatalogId,\n getUrlSync,\n Image,\n RichTextComponent,\n Text\n} from '@msdyn365-commerce/core';\nimport { MediaLocation, ProductCatalog } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, IModuleProps } from '@msdyn365-commerce-modules/utilities';\nimport React, { ReactNode } from 'react';\n\nimport { ICatalogPickerData } from './catalog-picker.data';\nimport { ICatalogPickerProps } from './catalog-picker.props.autogenerated';\n\n/**\n * ICatalogPickerViewProps.\n */\nexport interface ICatalogPickerViewProps extends ICatalogPickerProps {\n catalogPicker: IModuleProps;\n heading: React.ReactNode;\n paragraph: React.ReactNode;\n catalogs: ReactNode;\n}\n\n/**\n * CatalogPicker component.\n * @extends {React.PureComponent>}\n */\nexport class CatalogPicker extends React.PureComponent> {\n private static readonly _moduleClassName = 'ms-catalog-picker';\n\n public constructor(props: ICatalogPickerViewProps) {\n super(props);\n }\n\n public render(): JSX.Element | null {\n const { heading, paragraph } = this.props.config;\n\n const catalogPickerHeading = heading && (\n \n );\n\n const isCatalogsAvailable: boolean = ArrayExtensions.hasElements(this.props.data.catalogs?.result);\n const catalogPickerParagraph = paragraph && (\n \n );\n const viewProps = {\n ...this.props,\n handleText: this.handleTextChange,\n catalogPicker: {\n moduleProps: this.props,\n className: CatalogPicker._moduleClassName\n },\n heading: catalogPickerHeading,\n paragraph: catalogPickerParagraph,\n catalogs: isCatalogsAvailable ? this._renderCatalogPicker() : ''\n };\n\n return this.props.renderView(viewProps);\n }\n\n /**\n * Handle text change.\n * @param event - The dialog that is allowed to remain open.\n */\n public handleTextChange = (event: ContentEditableEvent): void => {\n this.props.config.heading!.text = event.target.value;\n };\n\n /**\n * Handle paragraph change.\n * @param event - The dialog that is allowed to remain open.\n */\n public handleParagraphChange = (event: ContentEditableEvent): void => {\n this.props.config.paragraph = event.target.value;\n };\n\n private _renderCatalogPickerButton(item: ProductCatalog): React.ReactNode {\n const catalogId = item.RecordId;\n const currentCatalogId = getCatalogId(this.props.context.request);\n if (currentCatalogId === catalogId) {\n return
{this.props.resources.currentCatalogText}
;\n }\n let linkToCatalog = '';\n if (Msdyn365.isBrowser) {\n const catalogUrl = getUrlSync('home', this.props.context.actionContext) ?? '';\n const fullUrl = new URL(catalogUrl, window.location.href);\n fullUrl.searchParams.set('catalogid', `${catalogId}`);\n linkToCatalog = fullUrl.href;\n }\n return (\n \n {this.props.resources.changeCatalogButtonText}\n \n );\n }\n\n private _renderCatalogPicker(): React.ReactNode {\n const catalogs = this.props.data.catalogs?.result;\n\n const isBrowser = Msdyn365.isBrowser;\n\n return (\n
\n {catalogs?.map(item => {\n const reactKey = `${JSON.stringify(item)}-${String(isBrowser)}`;\n const image: MediaLocation | undefined = ArrayExtensions.firstOrDefault(item.Images);\n return (\n \n

{item.Name}

\n
\n \n
\n {this._renderCatalogPickerButton(item)}\n
\n
\n
\n );\n })}\n
\n );\n }\n}\n\nexport default CatalogPicker;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { CategoryHierarchy } from '@msdyn365-commerce/commerce-entities';\nimport { AsyncResult } from '@msdyn365-commerce/retail-proxy';\n\nimport { ICategoryPromotionalContentData } from './navigation-menu.props.autogenerated';\n\nexport interface INavigationMenuData {\n categories: AsyncResult;\n}\n\nexport interface IMenuItemData {\n id?: number;\n linkText?: string;\n linkURL?: string;\n imageSource?: string;\n imageDestinationURL?: string;\n subMenu?: IMenuItemData[];\n promotionalContent?: ICategoryPromotionalContentData[];\n menuSource?: string;\n shouldOpenNewTab?: boolean;\n ariaLabel?: string;\n}\n\n/**\n *\n * Menu type index id.\n */\nexport enum MenuTypeIndexId {\n Cms = 1000,\n Retail = 5000\n}\n\n/**\n *\n * Menu type source.\n */\nexport enum MenuSource {\n Cms = 'Cms',\n Retail = 'Retail'\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { CategoryHierarchy } from '@msdyn365-commerce/commerce-entities';\nimport MsDyn365, { IActionContext, IGridSettings, IImageSettings, isEmptyOrNullObject } from '@msdyn365-commerce/core';\nimport { TextValueTranslation } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, getCategoryUrl } from '@msdyn365-commerce-modules/retail-actions';\nimport { addThrottledEvent, IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { computed, observable } from 'mobx';\nimport * as React from 'react';\n\nimport { IMenuItemData, INavigationMenuData, MenuSource, MenuTypeIndexId } from './navigation-menu.data';\nimport { ICmsNavItemsData, INavigationMenuProps, ISubMenusData, navigationMenuSource } from './navigation-menu.props.autogenerated';\n\nexport interface INavigationMenuViewProps extends INavigationMenuProps {\n className: string;\n menuItemData: IMenuItemData[];\n Navigation: IModuleProps;\n MenuList: INodeProps;\n ListItem: INodeProps;\n Link: INodeProps;\n Button: INodeProps;\n Span: INodeProps;\n ImageContainer: INodeProps;\n MobileDescriptionContainer: INodeProps;\n MobileBackButton: INodeProps;\n MobileDescriptionLabel: INodeProps;\n imageSettings: IImageSettings;\n gridSettings: IGridSettings;\n isMobileView: boolean;\n DivContainer?: INodeProps;\n ImageDivContainer?: INodeProps;\n showCategoryImage?: boolean;\n showPromotionalContent?: boolean;\n}\n\nexport type GridSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\nexport interface INavigationMenuState {\n isMobile: boolean;\n}\n\n/**\n *\n * NavigationMenu component.\n * @extends {React.PureComponent>}\n */\nclass NavigationMenu extends React.PureComponent, INavigationMenuState> {\n private static CMSItemIdInit: number = MenuTypeIndexId.Cms;\n\n private static RSItemIdInit: number = MenuTypeIndexId.Retail;\n\n private resizeThrottledEventHandler?: (event: Event) => void;\n\n private menuItemList: IMenuItemData[];\n\n private isRetail: boolean = true;\n\n private isCMS: boolean = true;\n\n @observable\n private viewport: GridSize;\n\n public static getFriendlyName(locale: string, nameTranslations?: TextValueTranslation[]): string | undefined {\n let nameTranslation: TextValueTranslation | undefined;\n if (locale && nameTranslations && nameTranslations.length > 0) {\n nameTranslation = nameTranslations.find(item => item.Language!.toLowerCase() === locale.toLowerCase());\n }\n\n return nameTranslation && nameTranslation.Text;\n }\n\n constructor(props: INavigationMenuProps) {\n super(props);\n this._updateViewport = this._updateViewport.bind(this);\n this.viewport =\n props.context.request && props.context.request.device && props.context.request.device.Type === 'Mobile' ? 'xs' : 'lg';\n this._setNavigationSource(this.props.config && this.props.config.navigationMenuSource);\n this.state = { isMobile: this.isMobile };\n this.menuItemList = [];\n }\n\n @computed get isMobile(): boolean {\n return this.viewport === 'xs' || this.viewport === 'sm';\n }\n\n public componentDidMount(): void {\n if (MsDyn365.isBrowser) {\n this.resizeThrottledEventHandler = addThrottledEvent(window, 'resize', this._updateViewport as EventListener);\n }\n this._updateViewport();\n }\n\n public componentWillUnmount(): void {\n if (MsDyn365.isBrowser) {\n window.removeEventListener('resize', this.resizeThrottledEventHandler!, false);\n }\n }\n\n public render(): JSX.Element | null {\n this.menuItemList = this._mapData();\n if (isEmptyOrNullObject(this.props.data)) {\n this.props.telemetry.error('Navigatiomenu returned null');\n return null;\n }\n\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=224&h=300&m=6', w: 0, h: 0 },\n xl: { q: 'w=224&h=300&m=6', w: 0, h: 0 }\n },\n lazyload: true\n };\n\n const viewProps = {\n ...this.props,\n ...this.state,\n imageSettings: defaultImageSettings,\n gridSettings: this.props.context.request.gridSettings,\n Navigation: {\n moduleProps: this.props,\n className: classnames('ms-nav', this.props.config.className, this.state.isMobile ? 'mobile-vp' : 'desktop-vp'),\n tag: 'nav',\n role: this.isMobile ? 'listbox' : 'navigation'\n },\n MenuList: {\n className: 'ms-nav__list',\n tag: 'ul',\n role: this.isMobile ? 'listbox' : 'menu'\n },\n ListItem: {\n className: 'ms-nav__list__item',\n role: 'presentation',\n tag: 'li'\n },\n showCategoryImage: this.props.config.displayCategoryImage ?? false,\n showPromotionalContent: this.props.config.displayPromotionalImage ?? false,\n Link: {\n tag: 'a',\n className: 'ms-nav__list__item__link',\n role: this.isMobile ? 'option' : 'menuitem'\n },\n DivContainer: {\n tag: 'div',\n className: 'ms-nav__feature'\n },\n ImageDivContainer: {\n tag: 'div',\n className: 'category-image',\n role: 'tabpanel'\n },\n Button: {\n className: 'ms-nav__list__item__button',\n tag: 'button',\n role: this.isMobile ? 'option' : 'menuitem',\n onClick: this.props\n },\n ImageContainer: {\n className: 'ms-nav__list__item__image'\n },\n Span: {\n className: 'ms-nav__list__item__span',\n tag: 'span'\n },\n MobileDescriptionContainer: {\n className: 'ms-nav__list__mobile__container'\n },\n MobileBackButton: {\n className: 'ms-nav__list__mobile__container__button',\n tag: 'button',\n 'aria-label': this.props.resources.backButtonAriaLabel,\n onClick: this.props\n },\n MobileDescriptionLabel: {\n className: 'ms-nav__list__mobile__container__span',\n tag: 'span'\n },\n isMobileView: this.state.isMobile,\n menuItemData: this.menuItemList,\n className: classnames('ms-nav', this.props.config.className)\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private _mapData(): IMenuItemData[] {\n const { data, config } = this.props;\n const mergedData: IMenuItemData[] = [];\n if (this.isRetail && data && data.categories && data.categories.result && data.categories.result.length > 0) {\n data.categories.result.map((item: CategoryHierarchy, index) =>\n mergedData.push(this._constructMenuItemData(item, undefined, true, index, true))\n );\n }\n\n if (this.isCMS && config.cmsNavItems && config.cmsNavItems.length > 0) {\n config.cmsNavItems.map((item: ICmsNavItemsData, idx: number) =>\n mergedData.push(this._constructMenuItemData(undefined, item, false, idx + 1))\n );\n }\n return this._constructTopMenuItemData(mergedData);\n }\n\n private _constructTopMenuItemData(mergedData: IMenuItemData[]): IMenuItemData[] {\n const enableTopLevelMenu = this.props.config.enabletopMenu ?? false;\n if (!enableTopLevelMenu) {\n return mergedData;\n }\n const mergedRootMenuData: IMenuItemData[] = [];\n const topMenu = {\n id: 1,\n linkText: this.props.config.rootMenuNavigation ?? '...',\n linkURL: '#',\n imageSource: undefined,\n subMenu: mergedData\n } as IMenuItemData;\n mergedRootMenuData.push(topMenu);\n\n return mergedRootMenuData;\n }\n\n private _constructMenuItemData(\n retailItem?: CategoryHierarchy,\n cmsItem?: ICmsNavItemsData,\n isRetail?: boolean,\n idx?: number,\n addedAllMenu?: boolean\n ): IMenuItemData {\n const locale =\n this.props.context && this.props.context.request && this.props.context.request.locale\n ? this.props.context.request.locale\n : 'en-us';\n const { categoryPromotionalContent } = this.props.config;\n const cmsItemText = (cmsItem && cmsItem.linkText) || '';\n const { menuAriaLabel } = this.props.resources;\n\n // Filter category promotional data based on category name\n const promotionalData =\n retailItem &&\n categoryPromotionalContent?.filter(promoItem => promoItem.categoryName?.toLowerCase() === retailItem?.Name?.toLowerCase());\n\n // First check if image is available from promotional data else read from retail server\n let imageSource: string = 'empty';\n if (ArrayExtensions.hasElements(retailItem?.Images) && retailItem!.Images[0].Uri) {\n imageSource = retailItem!.Images[0].Uri;\n }\n if (isRetail) {\n return {\n id: NavigationMenu.RSItemIdInit++,\n linkText: NavigationMenu.getFriendlyName(locale, retailItem?.NameTranslations) ?? '',\n linkURL: retailItem?.Url,\n imageSource,\n subMenu: this._getNestedChildren(retailItem, imageSource, addedAllMenu),\n promotionalContent: this.props.config.displayPromotionalImage && promotionalData,\n menuSource: MenuSource.Retail,\n ariaLabel: `${NavigationMenu.getFriendlyName(locale, retailItem?.NameTranslations) ?? ''} ${menuAriaLabel}`\n } as IMenuItemData;\n }\n return {\n id: NavigationMenu.CMSItemIdInit++,\n linkText: cmsItemText,\n linkURL: (cmsItem && cmsItem.linkUrl && cmsItem.linkUrl.destinationUrl) || '',\n imageDestinationURL: (cmsItem && cmsItem.imageLink && cmsItem.imageLink.destinationUrl) || '',\n imageSource: (cmsItem && cmsItem.image && cmsItem.image.src) || '',\n subMenu: this._getCMSNestedChildren(cmsItem),\n menuSource: MenuSource.Cms,\n shouldOpenNewTab: cmsItem?.openInNewTab,\n ariaLabel: `${cmsItemText} ${menuAriaLabel}`\n } as IMenuItemData;\n }\n\n private _getNestedChildren(category?: CategoryHierarchy, imageSourceUrl?: string, addedAllMenu: boolean = false): IMenuItemData[] {\n const nestedChildren: IMenuItemData[] = [];\n if (!category || !category.Children || category.Children.length === 0) {\n return [];\n }\n if (!this.props.config.enabletopMenu && addedAllMenu) {\n nestedChildren.push({\n linkText: this.props.resources.allCategoryMenuText,\n imageSource: imageSourceUrl,\n linkURL: getCategoryUrl(category, (this.props.context as unknown) as IActionContext, {})\n });\n }\n category.Children.map((item: CategoryHierarchy, index) => {\n nestedChildren.push(this._constructMenuItemData(item, undefined, true, index, false));\n });\n return nestedChildren;\n }\n\n private _getCMSNestedChildren(category?: ICmsNavItemsData): IMenuItemData[] {\n const nestedChildren: IMenuItemData[] = [];\n\n if (!category || !category.subMenus || category.subMenus.length === 0) {\n return [];\n }\n\n category.subMenus.map((item: ISubMenusData, idx: number) => {\n nestedChildren.push(this._constructMenuItemData(undefined, item, false, idx));\n });\n return nestedChildren;\n }\n\n private readonly _setNavigationSource = (sourceType?: navigationMenuSource): void => {\n switch (sourceType) {\n case navigationMenuSource.retailServerOnly:\n this.isRetail = true;\n this.isCMS = false;\n break;\n case navigationMenuSource.cmsOnly:\n this.isRetail = false;\n this.isCMS = true;\n break;\n case navigationMenuSource.all:\n this.isRetail = true;\n this.isCMS = true;\n break;\n default:\n }\n };\n\n private _updateViewport(): void {\n this.viewport = this._getViewport();\n this.setState({ isMobile: this.isMobile });\n }\n\n private _getViewport(): GridSize {\n const { context } = this.props;\n\n // Always render in mobile viewport on a mobile device\n if (context.request && context.request.device && context.request.device.Type === 'Mobile') {\n return 'xs';\n }\n\n if (MsDyn365.isBrowser && window.innerWidth) {\n const gridSettings = context.request.gridSettings;\n if (gridSettings) {\n if (gridSettings.xs && window.innerWidth <= gridSettings.xs.w) {\n return 'xs';\n } else if (gridSettings.sm && window.innerWidth <= gridSettings.sm.w) {\n return 'sm';\n } else if (gridSettings.md && window.innerWidth <= gridSettings.md.w) {\n return 'md';\n } else if (gridSettings.lg && window.innerWidth <= gridSettings.lg.w) {\n return 'lg';\n }\n return 'xl';\n }\n }\n\n return 'xs';\n }\n}\n\nexport default NavigationMenu;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IOrganizationUsersTileViewProps } from './organization-users-tile';\n\nconst OrganizationUsersTileView: React.FC = props => {\n const { OrganizationUsersTile, heading, description, links } = props;\n\n return (\n \n {heading}\n {description}\n {links}\n \n );\n};\n\nexport default OrganizationUsersTileView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport {\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IModuleProps,\n INodeProps,\n IPayLoad,\n ITelemetryContent,\n onTelemetryClick\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IFooterItemConfig, IFooterItemProps, IHeadingData, ILinkData } from './footer-item.props.autogenerated';\n\nexport interface IFooterViewProps extends IFooterItemProps {\n heading: React.ReactNode;\n image: React.ReactNode;\n text: React.ReactNode;\n linkText: React.ReactNode;\n className?: string;\n FooterItem: IModuleProps;\n HeadingContainer: INodeProps;\n ItemContainer: INodeProps;\n Link: INodeProps;\n EditableLink: React.ReactNode;\n}\n\n/**\n *\n * FooterItem component.\n * @extends {React.PureComponent>}\n */\nexport class FooterItem extends React.PureComponent> {\n private readonly telemetryContent: ITelemetryContent;\n\n private readonly payLoad: IPayLoad;\n\n private attributes: Msdyn365.IDictionary | undefined;\n\n constructor(props: IFooterItemProps) {\n super(props);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n // Construct telemetry attribute to render\n this.payLoad = getPayloadObject('click', this.telemetryContent, '', '');\n }\n\n public render(): JSX.Element {\n const { heading, image, link, text } = this.props.config;\n const footerItemClassName = classnames('ms-footer__item', this.props.config.className);\n const linkText = link && link.linkText ? link.linkText : '';\n this.payLoad.contentAction.etext = linkText;\n this.attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n const viewProps: IFooterViewProps = {\n ...this.props,\n heading: this._createHeading(heading!),\n image: this._createImageMarkup(image!),\n text: this._createText(text!),\n linkText: this._createLinkText(link!),\n EditableLink: this._createLink(link!),\n\n FooterItem: {\n moduleProps: this.props,\n className: footerItemClassName\n },\n\n HeadingContainer: {\n className: 'ms-footer__heading'\n },\n\n ItemContainer: {\n className: 'ms-footer__link__container'\n },\n\n // @ts-expect-error\n Link: link &&\n link.linkUrl &&\n link.linkUrl.destinationUrl && {\n tag: 'a',\n role: 'link',\n className: 'ms-footer__link',\n href: link.linkUrl.destinationUrl,\n title: linkText,\n 'aria-label': link.ariaLabel,\n target: link.openInNewTab ? '_blank' : undefined,\n onClick: onTelemetryClick(this.telemetryContent, this.payLoad, linkText),\n ...this.attributes\n },\n className: footerItemClassName\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading!.text = event.target.value);\n\n public handleTextChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.text = event.target.value);\n\n public handleLinkTextChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.link!.linkText = event.target.value);\n\n private _createLink(link: ILinkData): React.ReactNode | null {\n if (link) {\n const linkText = link.linkText ? link.linkText : '';\n\n // TODO: Update the inner tag in the anchor link to span\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-footer__link',\n linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: this.attributes!,\n onClick: onTelemetryClick(this.telemetryContent, this.payLoad, linkText)\n };\n return (\n \n );\n }\n return null;\n }\n\n private _createLinkText(link: ILinkData): React.ReactNode | null {\n if (!link || !link.linkText) {\n return null;\n }\n\n return {link.linkText};\n }\n\n private _createHeading(heading: IHeadingData): React.ReactNode | null {\n if (!heading || !heading.text || heading.text.length === 0) {\n return null;\n }\n\n return (\n \n );\n }\n\n private _createText(text: string): React.ReactNode | null {\n if (!text) {\n return null;\n }\n return (\n \n );\n }\n\n private _createImageMarkup(item: Msdyn365.IImageData, ariaHiddenAttr?: boolean): React.ReactNode | null {\n if (!item || !item.src || item.src.length === 0) {\n return null;\n }\n\n const defaultImageSettings: Msdyn365.IImageSettings = {\n viewports: {\n xs: { q: 'w=24&h=24&m=6', w: 0, h: 0 },\n lg: { q: 'w=24&h=24&m=6', w: 0, h: 0 }\n },\n lazyload: true\n };\n return (\n \n );\n }\n}\n\nexport default FooterItem;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, { IImageSettings, Image } from '@msdyn365-commerce/core';\nimport { addThrottledEvent, Drawer, IModuleProps, INodeProps, KeyCodes, NodeTag } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { computed, observable } from 'mobx';\nimport React from 'react';\n\nimport { ISitePickerConfig, ISitePickerProps } from './site-picker.props.autogenerated';\n\nexport interface ISitePickerViewProps extends ISitePickerProps {\n SitePicker: IModuleProps;\n SitePickerMenu: INodeProps;\n SitePickerMenuSpan: INodeProps;\n SitePickerMenuList: INodeProps;\n SitePickerMenuListItem: INodeProps;\n SitePickerMenuListItemArray: React.ReactNode[] | undefined;\n siteOptionsState: boolean;\n SitePickerMobileContainer: INodeProps;\n isMobileView: boolean;\n renderSiteOptions(): void;\n resetSiteOptionsState(): void;\n}\n\nexport type GridSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\ninterface ISitePickerState {\n expandSiteOptions: boolean;\n isMobile: boolean;\n}\n\n/**\n *\n * SitePicker component.\n * @extends {React.PureComponent>}\n */\nclass SitePicker extends React.PureComponent, ISitePickerState> {\n private readonly _cookieName: string = '_msdyn365___site_';\n\n private readonly _cookieExpirationInSeconds: number = 5_184_000;\n\n private readonly _sitePickerMenuNode: React.RefObject;\n\n private readonly _sitePickerMenuButton: React.RefObject;\n\n private resizeThrottledEventHandler?: (event: Event) => void;\n\n @observable\n private viewport: GridSize;\n\n public constructor(props: ISitePickerViewProps) {\n super(props);\n this._handleChange = this._handleChange.bind(this);\n this._sitePickerMenuNode = React.createRef();\n this._sitePickerMenuButton = React.createRef();\n this._renderSiteOptions = this._renderSiteOptions.bind(this);\n this._resetSiteOptionsState = this._resetSiteOptionsState.bind(this);\n this._escFunction = this._escFunction.bind(this);\n this._handleOutsideClick = this._handleOutsideClick.bind(this);\n this._updateViewport = this._updateViewport.bind(this);\n this.viewport =\n props.context.request && props.context.request.device && props.context.request.device.Type === 'Mobile' ? 'xs' : 'lg';\n this.state = {\n expandSiteOptions: false,\n isMobile: this.isMobile\n };\n }\n\n @computed get isMobile(): boolean {\n return this.viewport === 'xs' || this.viewport === 'sm';\n }\n\n public componentDidMount(): void {\n if (MsDyn365.isBrowser) {\n document?.addEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\n document?.body?.addEventListener('mousedown', this._handleOutsideClick);\n this.resizeThrottledEventHandler = window && addThrottledEvent(window, 'resize', this._updateViewport as EventListener);\n this._updateViewport();\n }\n }\n\n public componentWillUnmount(): void {\n if (MsDyn365.isBrowser) {\n document?.removeEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\n document?.body?.removeEventListener('mousedown', this._handleOutsideClick, false);\n window && window.removeEventListener('resize', this.resizeThrottledEventHandler!, false);\n }\n }\n\n public render(): JSX.Element | null {\n const viewProps: ISitePickerViewProps = {\n ...(this.props as ISitePickerProps),\n SitePicker: {\n moduleProps: this.props,\n className: classnames('ms-site-picker', this.props.config.className, this.state.isMobile ? 'mobile-view' : 'desktop-view'),\n tag: 'div'\n },\n SitePickerMenu: {\n tag: 'button' as NodeTag,\n className: 'ms-site-picker__button',\n 'aria-label': this.props.config.heading?.text,\n 'aria-expanded': this.state.expandSiteOptions,\n onClick: this.props,\n ref: this._sitePickerMenuButton\n },\n SitePickerMenuSpan: {\n className: 'ms-site-picker__span',\n tag: 'span'\n },\n SitePickerMenuList: {\n className: 'ms-site-picker__list',\n role: 'menu',\n tag: 'ul',\n ref: this._sitePickerMenuNode\n },\n SitePickerMenuListItem: {\n className: 'ms-site-picker__list__item',\n role: 'presentation',\n tag: 'li'\n },\n SitePickerMobileContainer: {\n tag: Drawer,\n className: 'ms-site-picker__drawer',\n toggleButtonText: this.props.config.heading?.text,\n openGlyph: 'ms-site-picker__drawer-open',\n closeGlyph: 'ms-site-picker__drawer-close',\n glyphPlacement: 'end'\n },\n isMobileView: this.state.isMobile,\n SitePickerMenuListItemArray: this._renderSitePickerImage(),\n renderSiteOptions: this._renderSiteOptions,\n resetSiteOptionsState: this._resetSiteOptionsState,\n siteOptionsState: this.state.expandSiteOptions\n };\n return this.props.renderView(viewProps);\n }\n\n private _renderSiteOptions(): void {\n const expandSiteOptionsState = this.state.expandSiteOptions;\n this.setState({\n expandSiteOptions: !expandSiteOptionsState\n });\n }\n\n private _resetSiteOptionsState(): void {\n this.setState({\n expandSiteOptions: false\n });\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private readonly _escFunction = (event: any) => {\n const key = event.keyCode;\n if (this.state.expandSiteOptions) {\n switch (key) {\n case KeyCodes.Escape: {\n setTimeout(() => {\n const nextFocus = document && document.activeElement;\n if (\n this._sitePickerMenuButton?.current?.contains(nextFocus) ||\n this._sitePickerMenuNode?.current?.contains(nextFocus)\n ) {\n this._resetSiteOptionsState();\n this._sitePickerMenuButton?.current?.focus();\n }\n }, 50);\n break;\n }\n case KeyCodes.Tab: {\n setTimeout(() => {\n const nextFocus = document && document.activeElement;\n if (\n !this._sitePickerMenuButton?.current?.contains(nextFocus) &&\n !this._sitePickerMenuNode?.current?.contains(nextFocus)\n ) {\n this._resetSiteOptionsState();\n }\n }, 50);\n break;\n }\n default:\n return;\n }\n }\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private readonly _handleOutsideClick = (event: any) => {\n if (\n (this._sitePickerMenuButton.current?.contains(event.target) && this.state.expandSiteOptions) ||\n (this._sitePickerMenuNode.current?.contains(event.target) && this.state.expandSiteOptions)\n ) {\n return;\n }\n this._resetSiteOptionsState();\n };\n\n private _handleChange(e: React.MouseEvent): void {\n e.preventDefault();\n if (e.currentTarget.href && e.currentTarget.href.length > 0 && window) {\n if (this.props.context.request.cookies.isConsentGiven()) {\n const cookieConfig = { maxAge: this._cookieExpirationInSeconds };\n this.props.context.request.cookies.set(this._cookieName, e.currentTarget.href, cookieConfig);\n }\n window.location.assign(e.currentTarget.href);\n }\n }\n\n private _renderSitePickerImage(): React.ReactNode[] | undefined {\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=50&h=25&m=6', w: 0, h: 0 },\n sm: { q: 'w=50&h=25&m=6', w: 0, h: 0 },\n md: { q: 'w=40&h=20&m=6', w: 0, h: 0 },\n lg: { q: 'w=40&h=20&m=6', w: 0, h: 0 },\n xl: { q: 'w=40&h=20&m=6', w: 0, h: 0 }\n },\n lazyload: true\n };\n const siteOptions = this.props.config.siteOptions && this.props.config.siteOptions;\n return (\n siteOptions &&\n siteOptions.map((item, index) => {\n const image = item?.siteImage;\n const imageProps = {\n gridSettings: this.props.context.request.gridSettings!,\n imageSettings: image?.imageSettings?.viewports ? image.imageSettings : defaultImageSettings\n };\n return (\n \n {item?.siteName}\n \n \n );\n })\n );\n }\n\n private _updateViewport(): void {\n this.viewport = this._getViewport();\n this.setState({ isMobile: this.isMobile });\n }\n\n private _getViewport(): GridSize {\n const { context } = this.props;\n if (context.request && context.request.device && context.request.device.Type === 'Mobile') {\n return 'xs';\n }\n\n if (typeof window !== undefined && window.innerWidth) {\n const gridSettings = context.request.gridSettings;\n if (gridSettings) {\n if (gridSettings.xs && window.innerWidth <= gridSettings.xs.w) {\n return 'xs';\n } else if (gridSettings.sm && window.innerWidth <= gridSettings.sm.w) {\n return 'sm';\n } else if (gridSettings.md && window.innerWidth <= gridSettings.md.w) {\n return 'md';\n } else if (gridSettings.lg && window.innerWidth <= gridSettings.lg.w) {\n return 'lg';\n }\n return 'xl';\n }\n }\n return 'xs';\n }\n}\n\nexport default SitePicker;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport {\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IModuleProps,\n INodeProps,\n IPayLoad,\n ITelemetryContent,\n NodeTag,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { createAccordionStateInput } from '../..';\nimport { IAccordionData } from './accordion.data';\nimport { IAccordionProps } from './accordion.props.autogenerated';\n\n/**\n *\n * Accordion component.\n * @extends {React.PureComponent>}\n */\n\nexport interface ICallToActionProps {\n link: INodeProps[];\n}\n\n/**\n * Added interface for state management.\n */\nexport interface IAccordianState {\n isDisabled: boolean;\n}\n\nexport interface IAccordionViewProps extends IAccordionProps<{}> {\n heading?: React.ReactNode;\n AccordionContainer: IModuleProps;\n HeaderSection: INodeProps;\n HeadingWrapper: INodeProps;\n accordianButtonsContainer: INodeProps;\n accordionButtons: React.ReactNode;\n accordionItemContainer: INodeProps;\n accordionItems: React.ReactNode;\n}\n\n/**\n *\n * Accordion component.\n * @extends {React.Component>}\n */\n@observer\nclass Accordion extends React.PureComponent, IAccordianState> {\n private readonly telemetryContent?: ITelemetryContent;\n\n private readonly payLoad: IPayLoad;\n\n private readonly expandAllButtonRef: React.RefObject = React.createRef();\n\n private readonly collapseAllButtonRef: React.RefObject = React.createRef();\n\n constructor(props: IAccordionProps) {\n super(props);\n this._onExpandAll = this._onExpandAll.bind(this);\n this._onCollapseAll = this._onCollapseAll.bind(this);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n this.payLoad = getPayloadObject('click', this.telemetryContent, '');\n this.state = { isDisabled: false };\n }\n\n public render(): JSX.Element {\n const { slots } = this.props;\n const { heading, className } = this.props.config;\n const headingComponent = heading && heading.text && (\n \n );\n\n const accordionViewProps = {\n ...this.props,\n AccordionContainer: {\n moduleProps: this.props,\n className: classnames('ms-accordion', className)\n },\n HeaderSection: { className: 'ms-accordion-header-section' },\n HeadingWrapper: { className: 'ms-accordion-header-section-container' },\n heading: headingComponent,\n config: this.props && this.props.config,\n accordianButtonsContainer: {\n tag: 'div' as NodeTag,\n className: 'ms-accordion-header-section-toggle-button-container'\n },\n accordionButtons: this._renderAccordionButton(),\n accordionItemContainer: {\n tag: 'div' as NodeTag,\n className: 'ms-accordion-item-section'\n },\n accordionItems:\n slots &&\n slots.accordionItems &&\n slots.accordionItems.length > 0 &&\n slots.accordionItems.map((item: React.ReactNode, index: number) => this._getAccordionItem(item, index))\n };\n return this.props.renderView(accordionViewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading!.text = event.target.value);\n\n private _renderAccordionButton(): React.ReactNode | null {\n const { config, resources } = this.props;\n const { heading } = config;\n this.payLoad.contentAction.etext = TelemetryConstant.ExpandAll;\n const attributeExpandAll = getTelemetryAttributes(this.telemetryContent!, this.payLoad);\n this.payLoad.contentAction.etext = TelemetryConstant.CollapseAll;\n const attributeCollapseAll = getTelemetryAttributes(this.telemetryContent!, this.payLoad);\n if (!config.showToggleAll) {\n this.props.context.telemetry.error('Accordion button content is empty, module wont render');\n return null;\n }\n return (\n <>\n \n {resources.expandAllText}\n \n  \n {resources.toggleAllSeparator}\n  \n \n {resources.collapseAllText}\n \n \n );\n }\n\n private _onExpandAll(): void {\n const accordionState = { isAllExpanded: true };\n this.props.context.actionContext.update(createAccordionStateInput(accordionState), accordionState);\n if (accordionState.isAllExpanded) {\n this.setState({\n isDisabled: true\n });\n setTimeout(() => {\n this.collapseAllButtonRef.current?.focus();\n }, 50);\n }\n }\n\n private _onCollapseAll(): void {\n const accordionState = { isAllExpanded: false };\n this.props.context.actionContext.update(createAccordionStateInput(accordionState), accordionState);\n if (!accordionState.isAllExpanded) {\n this.setState({\n isDisabled: false\n });\n setTimeout(() => {\n this.expandAllButtonRef.current?.focus();\n }, 50);\n }\n }\n\n private _getAccordionItem(item: React.ReactNode, index: number): React.ReactNode {\n return (\n \n {React.cloneElement(item as React.ReactElement, { interactionStyle: this.props.config.interactionStyle })}\n \n );\n }\n}\n\nexport default Accordion;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, { IImageData, IImageSettings, Image } from '@msdyn365-commerce/core';\nimport { ArrayExtensions, generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IPayLoad,\n ITelemetryContent,\n Module,\n Node,\n onTelemetryClick\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { INavigationMenuViewProps } from './navigation-menu';\nimport { IMenuItemData } from './navigation-menu.data';\n\ninterface INavigationState {\n parentMenu?: number;\n activeMenu?: number;\n categoryImage?: IImageData[] | null;\n mobileViewLabelText?: string;\n categoryImageAltText: string;\n}\n\n/**\n *\n * NavigationMenuView component.\n * @extends {React.PureComponent}\n */\nexport class NavigationMenuView extends React.PureComponent {\n private static isBackTrack: boolean = false;\n\n private currentLevel: number = 0;\n\n private readonly menuNode: React.RefObject;\n\n private readonly menuItemRef: React.RefObject;\n\n private readonly telemetryContent: ITelemetryContent;\n\n private readonly payLoad: IPayLoad;\n\n constructor(props: INavigationMenuViewProps) {\n super(props);\n this.menuNode = React.createRef();\n this.menuItemRef = React.createRef();\n this.state = { activeMenu: undefined, mobileViewLabelText: '', parentMenu: undefined, categoryImageAltText: '' };\n this._closeSubmenu = this._closeSubmenu.bind(this);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n this.payLoad = getPayloadObject('click', this.telemetryContent, '', '');\n }\n\n public componentDidMount(): void {\n if (MsDyn365.isBrowser) {\n document.body.addEventListener('mousedown', this._handleClickOutside);\n document.body.addEventListener('focusout', this._handleFocusOutside);\n }\n }\n\n public componentDidUpdate(): void {\n if (this.menuItemRef.current?.children[0] && this.props.isMobileView) {\n (this.menuItemRef.current.children[0] as HTMLElement).focus();\n }\n }\n\n public componentWillUnmount(): void {\n if (MsDyn365.isBrowser) {\n document.body.removeEventListener('mousedown', this._handleClickOutside, false);\n document.body.removeEventListener('focusout', this._handleFocusOutside, false);\n }\n }\n\n public render(): JSX.Element | null {\n const { isMobileView, MenuList, MobileBackButton, MobileDescriptionContainer, MobileDescriptionLabel, Navigation } = this.props;\n\n this.currentLevel = 1;\n return (\n \n \n {isMobileView && this.state.activeMenu !== undefined && (\n \n \n {this.state.mobileViewLabelText}\n \n )}\n {this._renderDisplay()}\n \n \n );\n }\n\n private _renderDisplay(): JSX.Element[] {\n const { ListItem, menuItemData, isMobileView } = this.props;\n const { activeMenu } = this.state;\n const menuItemList: JSX.Element[] = [];\n\n if (isMobileView && activeMenu !== undefined && menuItemData.length > 0) {\n let menuItem: IMenuItemData = {};\n for (const menuItemDatum of menuItemData) {\n if (menuItemDatum && menuItemDatum.id === activeMenu) {\n menuItem = menuItemDatum;\n !NavigationMenuView.isBackTrack\n ? this.setState({ parentMenu: undefined })\n : this.setState({ parentMenu: undefined, mobileViewLabelText: menuItemDatum.linkText });\n break;\n }\n menuItem = this._getFromSubMenu(menuItemDatum) as IMenuItemData;\n if (menuItem && menuItem.id === activeMenu) {\n break;\n }\n }\n\n menuItem &&\n menuItemList.push(\n \n {' '}\n {this._createMenuItemList(menuItem)}{' '}\n \n );\n } else {\n menuItemData.forEach((item: IMenuItemData, index: number) => {\n menuItemList.push(\n \n {this._createMenuItemList(item)}\n \n );\n });\n }\n\n return menuItemList;\n }\n\n private _getFromSubMenu(item?: IMenuItemData): IMenuItemData | null {\n const subMenus = item && item.subMenu;\n if (subMenus && subMenus.length > 0) {\n for (let i = 0; i <= subMenus.length - 1; i++) {\n if (subMenus[i].id === this.state.activeMenu) {\n !NavigationMenuView.isBackTrack\n ? this.setState({ parentMenu: item?.id })\n : this.setState({ parentMenu: item && item.id, mobileViewLabelText: subMenus[i].linkText });\n return subMenus[i];\n }\n const found = this._getFromSubMenu(subMenus[i]);\n if (found) {\n return found;\n }\n }\n }\n this.props.context.telemetry.error('Submenu content is empty, module wont render.');\n return null;\n }\n\n private _createMenuItemList(menuItemData: IMenuItemData): JSX.Element | null {\n if (menuItemData && menuItemData.subMenu && menuItemData.subMenu.length > 0) {\n if (this.props.isMobileView && this.state.activeMenu !== undefined) {\n return this._renderSubMenu(menuItemData.subMenu, menuItemData.id, false);\n }\n return (\n <>\n {this._renderButtonMenuItem(menuItemData)}\n {this._renderSubMenu(menuItemData.subMenu, menuItemData.id, false)}\n \n );\n } else if (menuItemData && menuItemData.linkText && menuItemData.linkURL && menuItemData.linkURL.length > 0) {\n return this._renderLinkMenuItem(menuItemData, menuItemData.id, false, true);\n } else if (menuItemData && menuItemData.linkText && !menuItemData.linkURL) {\n return this._renderSpanMenuItem(menuItemData, menuItemData.id, true);\n }\n this.props.context.telemetry.error('Navigation menu content is empty, module wont render.');\n return null;\n }\n\n private _renderSubMenu(subMenus?: IMenuItemData[], activeMenu?: number, IsSubMenu?: boolean): JSX.Element | null {\n const { isMobileView, ListItem } = this.props;\n const enableMultiSupportMenu = this.props.config.enableMultilevelMenu || false;\n const multiLevelSupportedMenu = this.props.config.menuLevelSupport || 3;\n\n // Const isParentMenu:boolean= false;\n if (activeMenu && this.state.activeMenu !== activeMenu) {\n this.props.context.telemetry.error('Navigation Active menu content is empty, module wont render.');\n return null;\n }\n\n if (!subMenus || subMenus.length === 0) {\n this.props.context.telemetry.error('Navigation Submenu content is empty, module wont render.');\n return null;\n }\n\n let levelClassName: string = '';\n const menuOptions =\n subMenus &&\n subMenus.map((option: IMenuItemData, idx: number) => {\n const hasOptions = option.subMenu && option.subMenu.length > 0;\n let menuItem: JSX.Element | null;\n if (hasOptions && isMobileView) {\n menuItem = this._renderButtonMenuItem(option, activeMenu, idx);\n } else {\n menuItem = option.linkURL ? this._renderLinkMenuItem(option, idx) : this._renderSpanMenuItem(option);\n }\n\n let subMenu;\n const haveSubmenu = hasOptions && enableMultiSupportMenu && this.currentLevel <= Math.round(multiLevelSupportedMenu) - 1;\n if (haveSubmenu) {\n this.currentLevel++;\n levelClassName = enableMultiSupportMenu ? `level-${this.currentLevel.toString()}` : '';\n subMenu = this._renderSubMenu(option.subMenu, isMobileView ? option.id : undefined, true);\n }\n return (\n \n {menuItem}\n {subMenu}\n
\n );\n });\n return this._renderMenu(levelClassName, menuOptions, activeMenu, IsSubMenu);\n }\n\n private _renderButtonMenuItem(option: IMenuItemData, activeMenu?: number, index?: number): JSX.Element | null {\n const { Button } = this.props;\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderLinkMenuItem(\n option: IMenuItemData,\n index?: number,\n hoverEffect: boolean = true,\n isParent: boolean = false\n ): JSX.Element | null {\n const { Link } = this.props;\n const linkText = option.linkText ? option.linkText : '';\n const imagesource = option.imageSource ? option.imageSource : '';\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderPromotionalLink(linkText?: string, linkUrl?: string): JSX.Element | null {\n const { Link } = this.props;\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n if (linkText && linkUrl) {\n return (\n \n {linkText}\n \n );\n }\n return null;\n }\n\n private _renderSpanMenuItem(option: IMenuItemData, index?: number, isParent: boolean = false): JSX.Element | null {\n const { Span } = this.props;\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderMenu(level: string, menuOptions: JSX.Element[], currentItem?: number, submenu?: boolean): JSX.Element | null {\n const { DivContainer, MenuList, ImageDivContainer, showCategoryImage, showPromotionalContent, isMobileView } = this.props;\n const categoryImageDisplay =\n !isMobileView &&\n (showCategoryImage || showPromotionalContent) &&\n !ArrayExtensions.hasElements(this.state.categoryImage) &&\n !submenu;\n const promotionalContentDisplay =\n !isMobileView && showPromotionalContent && ArrayExtensions.hasElements(this.state.categoryImage) && !submenu;\n const DivContainerClass = this.currentLevel > 2 || categoryImageDisplay ? DivContainer!.className : 'ms-nav__deafult';\n this.currentLevel = 1;\n return (\n \n 2 &&\n 'navmenu-multi-level'\n )}\n >\n {menuOptions}\n \n {categoryImageDisplay &&\n this.state.categoryImage &&\n this.state.categoryImage.map(item => (\n \n {this.state.categoryImage && this._getCategoryImage(item)}\n {promotionalContentDisplay && this._renderPromotionalLink(item.altText, item.additionalProperties?.linkUrl)}\n \n ))}\n \n );\n }\n\n private readonly _updateCategoryImage = (categoryImageSrc: string, option: IMenuItemData) => () => {\n const linkText = option && option.linkText ? option.linkText : '';\n const promotionalImage: IImageData[] = [{ src: categoryImageSrc, altText: linkText }];\n\n // Read category and promotional image in one array\n if (ArrayExtensions.hasElements(option.promotionalContent)) {\n option.promotionalContent.map(item => {\n if (item && item.image) {\n const imageSrc = item.image.src;\n const promotionalItemImageSettings = item.image.imageSettings;\n promotionalImage.push({\n src: imageSrc,\n altText: item.text,\n imageSettings: promotionalItemImageSettings,\n additionalProperties: { linkUrl: item.linkUrl.destinationUrl }\n });\n }\n });\n }\n this.setState({\n categoryImage: promotionalImage.length > 0 ? promotionalImage : [{ src: 'empty' }],\n categoryImageAltText: linkText\n });\n };\n\n private readonly _handleDropdownToggle = (data: IMenuItemData, parentId?: number) => () => {\n if (!this.props.isMobileView) {\n this.setState({\n activeMenu: this.state.activeMenu && this.state.activeMenu === data.id! ? undefined : data.id!,\n parentMenu: parentId\n });\n if (this.props.showCategoryImage) {\n this._updateCategoryImage(data.imageSource!, data)();\n }\n } else {\n NavigationMenuView.isBackTrack = false;\n this.setState({\n activeMenu: data.id,\n mobileViewLabelText: data.linkText!,\n parentMenu: parentId\n });\n }\n };\n\n private readonly _handleGoBack = () => () => {\n NavigationMenuView.isBackTrack = true;\n this.setState({ activeMenu: this.state.parentMenu });\n };\n\n /**\n * Method to handle click outside of menu.\n * @param event -HTML event.\n */\n private readonly _handleClickOutside = (event: MouseEvent) => {\n if (this.menuNode.current && !this.menuNode.current.contains(event.target as Node)) {\n this.setState({\n activeMenu: undefined,\n mobileViewLabelText: '',\n categoryImage: null\n });\n }\n };\n\n /**\n * Method to handle click outside of menu.\n * @param event -HTML event.\n */\n private readonly _handleFocusOutside = (event: FocusEvent) => {\n if (this.menuNode.current && !this.menuNode.current.contains(event.relatedTarget as Node)) {\n this._closeSubmenu();\n }\n };\n\n /**\n * Checks to assign a ref for focus.\n * @param index -Sub menu list index.\n * @param mobileViewLabelText -Parent user clicked Sub menu list.\n * @param optionLinkText -Sub menu list.\n * @returns Ref.\n */\n private readonly _shouldAddFocusMenuRef = (index: number, mobileViewLabelText?: string, optionLinkText?: string) => {\n if (!NavigationMenuView.isBackTrack && index === 0) {\n return true;\n }\n if (!optionLinkText || !mobileViewLabelText) {\n return false;\n }\n return mobileViewLabelText === optionLinkText;\n };\n\n private _closeSubmenu(): void {\n if (!this.props.isMobileView) {\n this.setState({ activeMenu: undefined, categoryImage: null, mobileViewLabelText: '' });\n }\n }\n\n private readonly _getCategoryImage = (categoryImage?: IImageData): React.ReactNode | null => {\n if (!categoryImage || !categoryImage.src) {\n return null;\n }\n\n const categoryImageUrl = generateImageUrl(`${categoryImage.src}`, this.props.context.actionContext.requestContext.apiSettings);\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\n sm: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\n md: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\n lg: { q: 'w=300&h=250&m=8', w: 0, h: 0 }\n },\n lazyload: true\n };\n if (categoryImageUrl !== undefined) {\n return (\n \n );\n }\n return null;\n };\n}\n\nexport default NavigationMenuView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAccountInvoiceTileViewProps } from './account-invoice-tile';\n\nexport default (props: IAccountInvoiceTileViewProps) => {\n const { AccountInvoiceTile, heading, description, links } = props;\n\n return (\n \n {heading}\n {description}\n {links}\n \n );\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IAccordionExpandedState } from './data-actions/accordion-state';\nimport { createAccordionStateInput } from './data-actions/accordion-state-data-action';\nimport accordion from './modules/accordion/accordion';\nimport { interactionStyle } from './modules/accordion/accordion.props.autogenerated';\nimport accordionView from './modules/accordion/accordion.view';\n\nexport * from './modules/accordion/accordion';\nexport * from './modules/accordion/accordion.view';\n\nexport { accordion, accordionView, createAccordionStateInput, IAccordionExpandedState, interactionStyle };\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IFooterViewProps } from './footer-item';\n\n/**\n *\n * FooterItemView component.\n * @extends {React.PureComponent}\n */\nexport class FooterItemView extends React.PureComponent {\n public render(): JSX.Element | null {\n const { FooterItem } = this.props;\n return {this._renderElement(this.props)};\n }\n\n private _renderElement(props: IFooterViewProps): React.ReactNode | null {\n const { heading, HeadingContainer, Link, linkText, image, text, EditableLink } = props;\n if (heading) {\n return {heading} ;\n } else if (Link && image) {\n return (\n \n {linkText}\n {image}\n \n );\n } else if (Link) {\n return EditableLink;\n }\n return (\n <>\n {text}\n {image}\n \n );\n }\n}\n\nexport default FooterItemView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IContentBlockAdditionalContentItemViewProps, IContentBlockAdditionalContentViewProps } from './components/additional-content';\nimport { IContentBlockViewProps } from './content-block';\n\n/**\n * Render Additional Content.\n * @param additionalContent - Additional content view props.\n * @returns JSX Element.\n */\nconst renderAdditionalContent = (additionalContent: IContentBlockAdditionalContentViewProps) => {\n return (\n \n {additionalContent.additionalContentItems?.map((item: IContentBlockAdditionalContentItemViewProps) => {\n return (\n <>\n {item.heading}\n \n {item.text}\n {item.links}\n \n \n );\n })}\n \n );\n};\n\nconst ContentBlockView: React.FC = props => {\n const {\n contentBlockContainer,\n imageContainer,\n detailsContainer,\n title,\n text,\n links,\n image,\n contentBlockAnchorTag,\n imageLink,\n imageAriaLabel,\n additionalContent\n } = props;\n\n if (imageLink) {\n return (\n \n \n {image}\n \n \n {title}\n {text}\n {links}\n {additionalContent && renderAdditionalContent(additionalContent)}\n \n \n );\n }\n return (\n \n {image}\n \n {title}\n {text}\n {links}\n {additionalContent && renderAdditionalContent(additionalContent)}\n \n \n );\n};\n\nexport default ContentBlockView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IAccountOrganizationUsersTileDescription {\n description: string;\n}\n\nexport const AccountOrganizationUsersTileDescription: React.FC = ({ description }) => (\n

{description}

\n);\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ILinksData } from '../organization-users-tile.props.autogenerated';\n\nexport interface IAccountOrganizationUsersTileLinks {\n links: ILinksData[];\n requestContext: Msdyn365.IRequestContext;\n\n /**\n * The telemetry content\n */\n telemetryContent?: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\nexport const AccountOrganizationUsersTileLinks: React.FC = ({\n links,\n telemetryContent,\n onTextChange,\n requestContext\n}) => {\n if (links.length === 0) {\n return null;\n }\n const editableLinks = _mapEditableLinks(links, telemetryContent);\n return (\n
\n {editableLinks && editableLinks.length > 0 ? (\n \n ) : null}\n
\n );\n};\n\nconst _mapEditableLinks = (linkdata: ILinksData[], telemetryContent?: ITelemetryContent): Msdyn365.ILinksData[] | null => {\n if (!linkdata || linkdata.length === 0) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n const payLoad = getPayloadObject('click', telemetryContent!, '');\n linkdata.forEach((link, index) => {\n payLoad.contentAction.etext = link.linkText;\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-account-organization-users-tile__link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: attributes\n };\n editableLinks.push(editableLink);\n });\n\n return editableLinks;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { format, getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { AccountOrganizationUsersTileDescription, AccountOrganizationUsersTileLinks } from './components';\nimport { IOrganizationUsersTileData } from './organization-users-tile.data';\nimport { IOrganizationUsersTileProps } from './organization-users-tile.props.autogenerated';\n\nexport interface IOrganizationUsersTileViewProps extends IOrganizationUsersTileProps {\n OrganizationUsersTile: IModuleProps;\n className: string;\n heading?: React.ReactNode;\n links?: React.ReactNode;\n description?: React.ReactNode;\n}\n\n/**\n *\n * OrganizationUsersTile component.\n * @extends {React.PureComponent>}\n */\nclass OrganizationUsersTile extends React.PureComponent> {\n private readonly telemetryContent?: ITelemetryContent;\n\n constructor(props: IOrganizationUsersTileProps) {\n super(props);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public render(): JSX.Element | null {\n const { config, resources, data } = this.props;\n const { className, heading, links } = config;\n const { accountOrganizationUsersTileDescriptionForSingleUser, accountOrganizationUsersTileDescriptionForMultipleUsers } = resources;\n const numUsers = data.users && data.users.result;\n const accountOrganizationUsersTileDescription =\n numUsers === 1 ? accountOrganizationUsersTileDescriptionForSingleUser : accountOrganizationUsersTileDescriptionForMultipleUsers;\n const customerInformation = data.customerInformation.result;\n\n // Organization-users tile will not be render for non-admin users.\n if (!customerInformation?.IsB2bAdmin) {\n return null;\n }\n\n const viewProps = {\n ...this.props,\n className,\n OrganizationUsersTile: {\n moduleProps: this.props,\n className: classnames('ms-account-organization-users-tile', config.className)\n },\n heading: heading && heading.text && (\n \n ),\n links: links && links.length > 0 && (\n \n ),\n description: (\n \n )\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => {\n this.props.config.heading.text = event.target.value;\n };\n\n public handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent) => {\n if (this.props.config.links && this.props.config.links[linkIndex]) {\n this.props.config.links[linkIndex].linkText = event.target.value;\n }\n };\n}\n\nexport default OrganizationUsersTile;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAccountCustomerBalanceViewProps } from './account-customer-balance';\n\nexport default (props: IAccountCustomerBalanceViewProps) => {\n const {\n heading,\n accountSectionHeading,\n creditSummarySectionHeading,\n accountLabels,\n accountValues,\n creditSummaryLabels,\n creditSummaryValues,\n homeButton,\n actions,\n requestStatementModal,\n availableCredit,\n balanceOwed,\n creditExcess\n } = props;\n\n return (\n \n {heading}\n {requestStatementModal}\n {actions}\n {accountSectionHeading}\n
\n {accountLabels}\n {accountValues}\n
\n {creditSummarySectionHeading}\n
\n {creditSummaryLabels}\n {creditSummaryValues}\n {availableCredit}\n {balanceOwed}\n {creditExcess}\n
\n {homeButton}\n
\n );\n};\n"],"sourceRoot":""}