{"version":3,"sources":["webpack:///src/modules/order-lookup/order-lookup.view.tsx?d1dd","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/site-picker/site-picker.view.tsx?dcff","webpack:///./src/themes/loacker/views/components/deliveryProgressBar.tsx?f0ad","webpack:///./src/themes/loacker/views/checkout-delivery-options.view.tsx?a6e3","webpack:///src/modules/fabrikam/views/cart.view.tsx?8115","webpack:///./src/themes/loacker/views/checkout.view.tsx?2d84","webpack:///src/modules/order-lookup/utilities/order-lookup-utility.tsx?9369","webpack:///src/modules/order-lookup/components/order-lookup-additional-fields.tsx?7c69","webpack:///src/modules/order-lookup/components/order-lookup-fields.tsx?c99c","webpack:///src/modules/order-lookup/order-lookup.tsx?a81e","webpack:///src/modules/fabrikam/views/order-history.view.tsx?46de","webpack:///./src/themes/loacker/views/cart.view.tsx?9ac4","webpack:///./src/themes/loacker/views/video-player.view.tsx?3bfe","webpack:///src/modules/site-picker/site-picker.tsx?35ca","webpack:///./src/themes/loacker/views/active-image.view.tsx?ae37","webpack:///src/modules/content-block/content-block.view.tsx?a86e"],"names":["OrderLookupViewComponent","props","orderLookup","orderLookupContainer","orderLookupAdditionalFieldContainer","heading","paragraph","orderLookupForm","renderOrderLookupInputField","orderNumberInput","errorMessage","submitButton","additionalProperties","registeredUserMessage","fieldErrorMessage","React","Module","Object","Node","className","ArrayExtensions","hasElements","map","item","key","submitButtonLabelText","assembleNode","itemIndex","additionalContentHeading","requestContext","Msdyn365","text","tag","editProps","onEdit","event","handleAdditionalTextChange","renderHeading","subtext","additionalContentParagraphText","renderParagraph","links","ctaLink","index","linkIndex","editableLink","ariaLabel","linkText","linkUrl","destinationUrl","openInNewTab","role","link","onTextChange","handleAdditionalLinkTextChange","renderLinks","additionalContentItemContainer","additionalContentItemLinks","contentBlockAdditionalContent","additionalContent","reactNodes","push","additionalContentNode","additionalContentItems","ContentCardLinks","constructor","_mapEditableLinks","linkdata","length","editableLinks","forEach","payLoad","getPayloadObject","this","telemetryContent","contentAction","etext","attributes","getTelemetryAttributes","btnClass","onClick","onTelemetryClick","render","ContentBlock","getTelemetryObject","context","request","telemetryPageName","friendlyName","telemetry","handleTextChange","config","target","value","handleParagraphChange","handleLinkTextChange","Number","image","imageAriaLabel","contentBlockTitle","imageProps","gridSettings","imageSettings","contentBlockLinks","LinksComponent","msdyn365__moduleLayout","contentBlockText","contentBlockImage","moduleType","typeName","imagePropertyName","moduleId","id","layout","shouldSkipToMainImage","error","contentBlockviewProps","title","moduleClass","contentBlockContainer","moduleProps","classnames","imageContainer","detailsContainer","contentBlockAnchorTag","imageLink","_getImageLink","handleAdditionalParagraphChange","handleAdditionalText","handleAdditionalParagraph","renderView","additionalContentObject","actionableRegion","_renderSitePicker","_renderSiteOptionsList","SitePickerMenuList","SitePickerMenuListItem","SitePickerMenuListItemArray","options","onMouseLeave","resetSiteOptionsState","isMobileView","SitePicker","SitePickerMobileContainer","renderSiteOptions","_renderMobileView","SitePickerMenu","SitePickerMenuSpan","siteOptionsState","_renderDesktopView","DeliveryProgressBar","totalAmount","reducedShippingCost","freeShippingCost","resources","reducedTextValue","cultureFormatter","formatCurrency","reducedText","format","deliveryProgressBarReducedText","reducedTextDone","deliveryProgressBarReducedTextDone","almostFreeTextValue","almostFreeText","deliveryProgressBarAlmostFreeText","freeText","deliveryProgressBarFreeText","percentToFree","style","width","left","RichTextComponent","DeliveryOptionList","DeliveryOptionsList","list","isMilitaryAddress","localStorage","getItem","deliveryOption","code","DeliveryOption","radioButton","description","price","DeliveryOptionSelected","ErrorMessage","Error","message","CheckoutDeliveryOptionsView","CheckoutDeliveryOptions","viewState","deliveryOptions","deliveryOptionSelected","waiting","saveButton","editButton","cancelButton","selectedItemId","isLoading","isError","isShowList","isShowSelected","isShowSaveButton","isShowEditButton","isShowCancelButton","_renderPromotions","promotions","promotionMessageWrapper","promotionMessage","promotionSeeAllLink","promotionDialog","_renderCartlines","cartLines","storeSelector","backToShoppingButton","waitingComponent","cartLoadingStatus","cartDataResult","mulitplePickUp","emailDeliveryModeCode","emptyCartText","cartLine","MsDyn365","isBrowser","toString","cartline","_renderBOPISBlock","_renderGroupBOPISBlock","addToOrderTemplate","addToWishlist","remove","onToggleBopisHandler","isBopisSelected","pickUpInStore","callbacks","toggleBopis","onChangeStoreHandler","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","_renderCartLinesGroupHeader","_countItems","actionContext","channel","EmailDeliveryModeCode","multiplePickUpEnabled","count","pickUpText","shippingText","emailshippingText","groupTitle","toLowerCase","_renderCartLinesGroupTitle","countItem","reduce","Quantity","itemLabel","itemsLabel","suffix","CartView","renderModuleAttributes","promotionOptions","CartlinesWrapper","orderSummaryHeading","OrderSummaryWrapper","cart","hasInvoiceLine","invoiceSummaryLineitems","orderSummaryLineitems","OrderSummaryErrors","checkoutAsSignInUserButton","checkoutAsGuestButton","expressCheckoutButton","createTemplateFromCartButton","PickUpAtStoreComponent","PickUpAtStore","label","location","EmailDeliveryComponent","EmailDelivery","LineItemComponent","LineItem","pickUpAtStore","emailDelivery","LineItemGroupComponent","LineItemDeliveryGroup","LineItemList","lineItems","lineItem","LineId","LineItemGroupComponentWithMultiplePickUp","lineItemWraper","lineItemWraperIcon","LineItemComponentWithMultiplePickUp","PickUpAtStoreComponentWithMultiplePickUp","LineItemsComponent","LineItems","Header","editLink","itemsForPickup","itemsForShip","itemsForEmail","itemsGroupWithMulitplePickupMode","undefined","OrderSummaryComponent","lines","PaymentSummaryComponent","CheckoutView","isPaymentVerificationRedirection","shouldEnableSinglePaymentAuthorizationCheckout","canShow","checkoutProps","headerProps","hasSalesOrder","bodyProps","mainProps","mainControlProps","sideProps","sideControlFirstProps","sideControlSecondProps","termsAndConditionsProps","orderConfirmation","loading","alert","guidedForm","orderSummary","invoicePaymentSummary","placeOrderButton","termsAndConditions","keepShoppingButton","subtotalAmount","checkout","result","checkoutCart","SubtotalAmount","app","deliveryProgressBarResources","Waiting","labelGroup","renderErrorLabel","responseErrorMessage","errorMessageClassName","renderRegisteredUserMessage","signInUrl","signInLinkClassName","registeredUserClassName","orderLookupRegisteredUserText","orderLookupViewAccountText","orderLookupSignInLinkText","infoMessage","signInText","href","renderFieldErrors","orderLookupFieldValidationErrorMessage","RenderOrderLookupAdditionalFieldInput","super","shouldComponentUpdate","nextProps","_getOrderLookupAdditionalFields","additionalFieldLabel","additionalFieldError","additionalFieldInput","additionalFieldLabelClassName","type","inputType","onChange","name","isValidAdditionalFieldName","additionalFieldValidationMessage","observer","RenderOrderLookupFormFields","_getOrderLookupFields","input","orderLookupLabelClassName","orderLookupLabel","ref","inputReference","fieldErrorClassName","isInputTypeError","renderAlert","isValidInputField","OrderLookupSearchValues","OrderLookup","isEmailValue","isOrderNumberValue","orderLookupExtensibleEnum","handleSubmit","orderNumber","email","state","orderLookupValue","orderStatusLookUpParametersType","orderLookupName","_validateOrderLookupForm","actionContextValue","orderDetailsPath","baseUrl","URL","window","origin","redirectUrl","searchParameters","searchParams","set","fieldName","StringExtensions","isNullOrWhitespace","replace","toLocaleLowerCase","fieldValue","assign","orderNumberInputRef","current","emailInputRef","setState","additionalPropertyStates","isAdditionalFieldError","isKeyExistInAdditionalFieldArray","labelName","isValidFieldName","additionalfieldErrorMessage","items","ordernumber","isOrdNumberError","isReqError","isEmailError","isValidEmailError","isValidLookupField","isValidAdditionalLookupField","isDisabled","_renderAlert","orderLookupEmailValidationErrorMessage","orderLookupRequiredTextErrorMessage","requiredErrorMessage","isNullOrEmpty","emailValidationErrorMessage","isRequireError","isEmailValidError","isValidEmailInput","_renderOrderNumberAlert","orderLookupOrderNumberValidationErrorMessage","_renderOrderLookupInput","orderLookupEmailLabel","orderLookupEmailAriaLabel","_additionalFieldValidation","isFieldValid","RegExp","test","isValid","isDisable","trim","EmailRegex","defaultRegex","isEmailValid","orderLookupSearchAdditionalFields","validationMessage","orderLookupDefaultHeadingText","orderLookupButtonLabel","orderLookupFormAriaLabel","orderLookupOrderNumberLabel","orderLookupOrderNumberAriaLabel","orderLookupSubmitAriaLabel","headingText","headingTag","orderLookupContainerClassName","orderLookupHeadingClassName","orderLookupFormClassName","orderLookupAdditionalFiledContainerClassName","orderLookupFormFieldsClassName","orderNumberLabelClassName","orderNumberInputErrorClassName","submitButtonClassName","labelErrorMessageClassName","signinLinkClassName","orderLookupHeading","viewProps","_createParagraph","autoComplete","onSubmit","disabled","user","submit","_renderAdditionalFields","isOrderLookupAdditionalFieldValid","isOrderLookupFieldValid","getExtensibleEnumerations","StoreOperationsDataActions","getExtensibleEnumerationsAsync","callerContext","find","TypeName","ExtensibleEnumerations","orderLookupAdditionalParameter","orderStatusLookUpParameter","isValidField","Name","validateOrderLookupField","orderStatusLookUpAdditionalParameters","isValidAdditionalField","fieldKey","some","validateAdditionalFieldWithProxy","validateOrderLookupAdditionalField","setLookupFieldState","additionalFieldsInput","OrderHistoryOrderInfomation","orderInformationProps","salesId","receiptId","channelName","createdDate","amount","channelReferenceId","OrderHistoryGroupDelivery","deliveryProps","processing","address","trackingInfo","OrderHistoryGroup","groupProps","delivery","salesLinesProps","salesLines","salesLine","OrderHistoryGroups","groupsProps","groups","group","OrderHistoryHeader","orderCountLabel","extraActions","OrderHistorySalesOder","salesOrderProps","orderInfomation","orderDetailsLink","expandProductsButton","OrderHistoryList","listProps","salesOrders","salesOrder","OrderHistoryView","orderHistoryProps","emptyMessage","backToShoppingLink","table","moreButton","cartEmptyText","cartlineId","defaultComponent","renderCartLinesGroupHeader","emailShippingText","titleSeparate","renderCartLinesGroupTitle","renderCartLinesGroup","TotalAmount","VideoPlayerView","childList","subtree","characterData","MutationObserver","mutationRecords","fullScreenBtn","document","querySelector","navigator","userAgent","match","videoPlayer","addEventListener","webkitEnterFullscreen","videoCtn","getElementById","console","log","observe","player","detailsContainerCta","PureComponent","_cookieName","_cookieExpirationInSeconds","_escFunction","keyCode","expandSiteOptions","KeyCodes","Escape","setTimeout","nextFocus","activeElement","_sitePickerMenuButton","contains","_sitePickerMenuNode","_resetSiteOptionsState","focus","Tab","_handleOutsideClick","_handleChange","bind","createRef","_renderSiteOptions","_updateViewport","viewport","device","Type","isMobile","componentDidMount","body","resizeThrottledEventHandler","addThrottledEvent","componentWillUnmount","removeEventListener","Drawer","toggleButtonText","openGlyph","closeGlyph","glyphPlacement","_renderSitePickerImage","expandSiteOptionsState","e","preventDefault","currentTarget","cookies","isConsentGiven","cookieConfig","maxAge","defaultImageSettings","viewports","xs","q","w","h","sm","md","lg","xl","lazyload","siteOptions","siteImage","tabIndex","siteRedirectUrl","siteName","Image","src","altText","loadFailureBehavior","_getViewport","innerWidth","__decorate","observable","computed","activeImageView","hoverArea","closest","getElementsByClassName","areas","dispatchEvent","MouseEvent","mapCtn","firstElement","firstChild","display","products","existingPoints","product","ItemId","activePointContainer","activePointDetailsContainer","imageMapper","activePoints","activePoint","itemId","includes","xPosition","yPosition","activeImage","height","leftP","topP","top","onMouseEnter","clickArea","onTouchEnd","leaveArea","seeMoreButtonText","additionalContentContainer","productCardtopPosition","productCardleftPosition","overlay","productCard","renderAdditionalContent","ContentBlockView"],"mappings":"+MAgBO,MAAMA,EAA4DC,IAAQ,QAC7E,MAAM,YAAEC,EAAF,qBAAeC,EAAf,oCAAqCC,EAArC,QAA0EC,EAA1E,UAAmFC,EAAnF,gBAA8FC,EAA9F,4BAA+GC,EAA/G,iBACFC,EADE,aACgBC,EADhB,aAC8BC,EAD9B,qBAC4CC,EAD5C,sBACkEC,EADlE,kBACyFC,GAAsBb,EACrH,OACIc,gBAACC,SAAMC,iBAAKf,GACRa,gBAACG,OAAID,iBAAKd,GACLE,EACAC,EACDS,gBAACG,OAAI,CAACC,UAAS,UAAEZ,aAAF,EAAEA,EAAiBY,iBAAnB,QAAgC,IAC1CV,EACAD,EACAY,kBAAgBC,YAAYT,IACzBG,gBAACG,OAAID,iBAAKb,GACLQ,EAAqBU,IAAKC,GACvBR,gBAACA,WAAc,CAACS,IAAI,IACfD,KAKfT,EACFC,gBAACG,OAAID,iBAAKN,EAAY,CAAEQ,UAAS,UAAER,aAAF,EAAEA,EAAcQ,iBAAhB,QAA6B,KACzDlB,EAAMwB,uBAEVf,GAEJG,KAMFb,a,6MCGf,MAwFM0B,EAAe,CACjBH,EACAtB,EACA0B,KAC6C,MAO7C,MAAO,CACHtB,QAPgBkB,EAAKlB,SA7FP,EAACuB,EAAkC3B,EAA4C0B,KACjG,MAAME,EAAiB5B,EAAM4B,eAC7B,OACId,gBAACe,IAAa,CACVC,KAAMH,EACNI,IAAI,IACJb,UAAU,sDACVc,UAAW,CAKPC,OAASC,IACLlC,EAAMmC,2BAA2BT,EAAWQ,IAC7CN,qBA+EqBQ,CAAcd,EAAKlB,QAASJ,EAAO0B,GAQnEI,KAPkBR,EAAKe,SApEP,EAACC,EAAwCtC,EAA4C0B,KACzG,MAAME,EAAiB5B,EAAM4B,eAC7B,OACId,gBAACe,IAAa,CACVC,KAAMQ,EACNP,IAAI,IACJb,UAAU,2DACVc,UAAW,CAKPC,OAASC,IACLlC,EAAMmC,2BAA2BT,EAAWQ,IAC7CN,qBAsDuBW,CAAgBjB,EAAKe,QAASrC,EAAO0B,GAQvEc,MAPW,UAAGlB,EAAKkB,aAAR,aAAG,EAAYnB,IAAI,CAACoB,EAAqBC,IA1CxC,EAACD,EAAqBzC,EAA4C0B,EAAmBiB,KACrG,MAAMC,EAAoC,CACtCC,UAAWJ,EAAQI,UACnB3B,UAAW,0DACX4B,SAAUL,EAAQK,SAClBC,QAASN,EAAQM,QAAQC,eACzBC,aAAcR,EAAQQ,aACtBC,KAAM,QAEJtB,EAAiB5B,EAAM4B,eAC7B,OACId,gBAACe,IAAa,CACVN,IAAKoB,EACLQ,KAAMP,EACNZ,UAAW,CAKPoB,aAAelB,IACXlC,EAAMqD,+BAA+BV,EAAWjB,EAAWQ,IAE/DN,qBAqBD0B,CAAYb,EAASzC,EAAO0B,EAAWgB,IAO9Ca,+BAAgC,CAAErC,UAAW,4DAC7CsC,2BAA4B,CAAEtC,UAAW,uDASpCuC,EAAiCzD,IAC1C,MAAM,kBAAE0D,GAAsB1D,EAC9B,IAAK0D,EACD,OAGJ,MAAMC,EAA4D,GAKlE,OAJAD,EAAkBrC,IAAI,CAACC,EAAMoB,IAClBiB,EAAWC,KAAKnC,EAAaH,EAAMtB,EAAO0C,KAG9C,CACHmB,sBAAuB,CAAE3C,UAAW,iDACpC4C,uBAAwBH,ICzJzB,MAAMI,UAAyBjD,gBAAtCkD,kCAaqB,KAAAC,kBAAqBC,IAClC,IAAKA,GAAgC,IAApBA,EAASC,OACtB,OAAO,KAEX,MAAMC,EAAuC,GAqB7C,OApBAF,EAASG,QAAQ,CAAClB,EAAMT,KAEpB,MAAM4B,EAAUC,2BAAiB,QAASC,KAAKxE,MAAMyE,iBAAkB,GAAI,IACrE3B,EAAWK,EAAKL,SAAWK,EAAKL,SAAW,GACjDwB,EAAQI,cAAcC,MAAQ7B,EAC9B,MAAM8B,EAAaC,iCAAuBL,KAAKxE,MAAMyE,iBAAkBH,GACjEQ,EAAqB,IAAVpC,EAAc,mBAAqB,qBAC9CE,EAAoC,CACtCC,UAAWM,EAAKN,UAChB3B,UAAW4D,EACXhC,SAAUK,EAAKL,SACfC,QAASI,EAAKJ,QAAQC,eACtBC,aAAcE,EAAKF,aACnBC,KAAMsB,KAAKxE,MAAMkD,KACjBvC,qBAAsBiE,EACtBG,QAASC,2BAAiBR,KAAKxE,MAAMyE,iBAAkBH,EAASxB,IAEpEsB,EAAcR,KAAKhB,KAGhBwB,GArCJa,SACH,MAAMb,EAAgBI,KAAKP,kBAAkBO,KAAKxE,MAAMwC,OACxD,OACI1B,uBAAKI,UAAU,yBACTkD,GAAiBA,EAAcD,OAAS,EAAIrD,gBAACe,IAAc,CACzDW,MAAO4B,EACPpC,UAAW,CAAEoB,aAAcoB,KAAKxE,MAAMoD,aAAcxB,eAAgB4C,KAAKxE,MAAM4B,kBAC9E,OAiCNmC,Q,ykBCpBR,MAAMmB,UAAqBpE,gBAAlCkD,kCACqB,KAAAS,iBAAsCU,6BAAmBX,KAAKxE,MAAMoF,QAAQC,QAAQC,kBACjGd,KAAKxE,MAAMuF,aACXf,KAAKxE,MAAMwF,WAwGR,KAAAC,iBAAoBvD,GAAyCsC,KAAKxE,MAAM0F,OAAOtF,QAAS0B,KAAOI,EAAMyD,OAAOC,MAS5G,KAAAC,sBAAyB3D,GAAyCsC,KAAKxE,MAAM0F,OAAOrF,UAAY6B,EAAMyD,OAAOC,MAO7G,KAAAE,qBAAwBnD,GAAuBT,IAC9CsC,KAAKxE,MAAM0F,OAAOlD,OAASgC,KAAKxE,MAAM0F,OAAOlD,MAAMuD,OAAOpD,MAC1D6B,KAAKxE,MAAM0F,OAAOlD,MAAMuD,OAAOpD,IAAYG,SAAWZ,EAAMyD,OAAOC,QAxHpEX,SAAM,UACT,MAAM,QACF7E,EADE,UAEFC,EAFE,MAGF2F,EAHE,MAIFxD,EAJE,UAKFtB,EALE,eAMF+E,GACAzB,KAAKxE,MAAM0F,OACTQ,EAAoB9F,GACtBU,gBAACe,IAAa,CACVX,UAAU,0BACVa,IAAG,UAAE3B,EAAQ2B,WAAV,QAAiB,KACpBD,KAAM1B,EAAQ0B,KACdE,UAAW,CAAEC,OAAQuC,KAAKiB,iBAAkB7D,eAAgB4C,KAAKxE,MAAMoF,QAAQC,WAGjFc,EAAa,CACfC,aAAY,UAAE5B,KAAKxE,MAAMoF,QAAQC,QAAQe,oBAA7B,QAA6C,GACzDC,cAAeL,aAAF,EAAEA,EAAOK,eAEpBC,EAAoB9D,GAASrB,kBAAgBC,YAAYoB,IAC3D1B,gBAACyF,EAAcvF,iBAAK,CAChBwB,QAAOY,aAAcoB,KAAKsB,qBAC1BlE,eAAgB4C,KAAKxE,MAAMoF,QAAQC,QAASZ,iBAAkBD,KAAKC,iBACnEvB,KAAgF,SAAzEsB,KAAKxE,MAAM0F,OAAmCc,uBAAoC,OAAS,YAGpGC,EAAmBpG,GACrBS,gBAACe,IAA0B,CACvBC,KAAMzB,EACNa,UAAU,yBACVc,UAAW,CAAEC,OAAQuC,KAAKqB,sBAAuBjE,eAAgB4C,KAAKxE,MAAMoF,QAAQC,WAGtFqB,EACF5F,gBAACe,IAAcb,iBACPgF,EACAG,EAAU,CACdvE,eAAgB4C,KAAKxE,MAAMoF,QAAQC,QACnCrD,UAAW,CAAET,IAAG,UAAEiD,KAAKxE,MAAM0F,OAAOM,aAApB,QAA6B,GAAIpE,eAAgB4C,KAAKxE,MAAMoF,QAAQC,QAChFsB,WAAYnC,KAAKxE,MAAM4G,SACvBC,kBAAmB,QACnBC,SAAUtC,KAAKxE,MAAM+G,GACrBC,OAASxC,KAAKxE,MAAM0F,OAAmCc,wBAC3DS,uBAAqB,KAI7B,IACKf,IACAO,IACAH,EAKD,OAHA9B,KAAKxE,MAAMoF,QAAQI,UAAU0B,MACzB,uDAEG,KAEX,MAAMC,EAAqB,OACpB3C,KAAKxE,OADe,IAEvBoH,MAAOlB,EACPpE,KAAM2E,EACNT,MAAOU,EACPlE,MAAO8D,EACPe,YAAa7C,KAAKxE,MAAM0F,OAAOxE,UAC/BoG,sBAAuB,CACnBC,YAAa/C,KAAKxE,MAClBkB,UAAWsG,IAAW,mBAAoBtG,IAE9CuG,eAAgB,CAAEvG,UAAW,2BAC7BwG,iBAAkB,CAAExG,UAAW,6BAC/ByG,sBAAuB,CACnB5F,IAAK,IACLb,UAAW,yBACXgC,KAAM,QAEV0E,UAAWpD,KAAKqD,gBAChB5B,iBACAvC,kBAAmBD,EAA8B,CAC7C7B,eAAgB4C,KAAKxE,MAAMoF,QAAQC,QACnC3B,kBAAmBc,KAAKxE,MAAM0F,OAAOhC,kBACrCvB,2BAA4BqC,KAAKrC,2BACjC2F,gCAAiCtD,KAAKsD,gCACtCzE,+BAAgCmB,KAAKnB,iCAGzC0E,qBAAsBvD,KAAKrC,2BAC3B6F,0BAA2BxD,KAAKsD,gCAChCzE,+BAAgCmB,KAAKnB,iCAGzC,OAAOmB,KAAKxE,MAAMiI,WAAWd,GAgC1BhF,2BAA2BO,EAAeR,GACzCsC,KAAKxE,MAAM0F,OAAOhC,oBAClBc,KAAKxE,MAAM0F,OAAOhC,kBAAkBqC,OAAOrD,IAAQtC,QAAU8B,EAAMyD,OAAOC,OAI3EvC,+BAA+BV,EAAmBD,EAAeR,GACpE,MAAMgG,EAA2B1D,KAAKxE,MAAM0F,OAAOhC,mBAC/CvC,kBAAgBC,YAAYoD,KAAKxE,MAAM0F,OAAOhC,oBAAsBc,KAAKxE,MAAM0F,OAAOhC,kBAAkBqC,OAAOrD,KAAY,GAC3HwF,EAAwB1F,QACxB0F,EAAwB1F,MAAMuD,OAAOpD,IAAYG,SAAWZ,EAAMyD,OAAOC,OAI1EkC,gCAAgCpF,EAAeR,GAC9CsC,KAAKxE,MAAM0F,OAAOhC,oBAClBc,KAAKxE,MAAM0F,OAAOhC,kBAAkBqC,OAAOrD,IAAQL,QAAUH,EAAMyD,OAAOC,OAI1EiC,gBACJ,MAAM,UAAED,EAAF,MAAapF,EAAb,iBAAoB2F,GAAqB3D,KAAKxE,MAAM0F,OAC1D,MAAoB,kBAAhByC,EACIP,WAAW5E,eACJ4E,EAAU5E,eACVR,GAASrB,kBAAgBC,YAAYoB,IAAUA,EAAM,GAAGO,QACxDP,EAAM,GAAGO,QAAQC,eAErB,KAGJ,MAKAkC,a,iFCxMClF,aAERc,gCACKsH,EAAkBpI,IAK/B,MAaMqI,EAA0BrI,IAC5B,MAAM,mBAAEsI,EAAF,uBACFC,EADE,4BAEFC,GACAxI,EACEyI,EAAUD,EAA6BnH,IAAI,CAACC,EAAMoB,IAEhD5B,gBAACG,OAAID,iBAAKuH,EAAsB,CAAEhH,IAAKmB,IAClCpB,IAKb,OACIR,gBAACG,OAAID,iBAAKsH,EAAkB,CAAEI,aAAc1I,EAAM2I,wBAC7CF,IAsBPL,EAAqBpI,IACvB,MAAM,aAAE4I,EAAF,WAAgBC,GAAe7I,EACrC,OACIc,gBAACC,SAAMC,iBAAK6H,GACPD,EArBc5I,KAAgD,MACvE,MAAM,0BAAE8I,GAA8B9I,EACtC,OACIc,gBAACG,OAAID,iBAAK8H,EAAyB,CAAE/D,QAAS/E,EAAM+I,oBAChDjI,2BAAA,QAAAA,EACKd,EAAMwI,mCADX,aACK,EAAmCnH,IAAI,CAACC,EAAMoB,IAEvC5B,uBAAKS,IAAKmB,GACLpB,OAaD0H,CAAkBhJ,GAtDlBA,KAA+B,MACvD,MAAM,eAAEiJ,EAAF,mBAAkBC,GAAuBlJ,EAC/C,OACIc,gCACIA,gBAACG,OAAID,iBAAKiI,EAAc,CAAElE,QAAS/E,EAAM+I,oBAAzC,UACK/I,EAAM0F,OAAOtF,eADlB,aACK,EAAsB0B,KACvBhB,gBAACG,OAAID,iBAAKkI,KAEblJ,EAAMmJ,iBAAmBd,EAAuBrI,GAAS,OA8CfoJ,CAAmBpJ,M,oCCxE1E,iDA+DeqJ,IA/Ca,IAAoG,IAAnG,QAAEjE,EAAF,YAAWkE,EAAX,oBAAwBC,EAAxB,iBAA6CC,EAA7C,UAA+DC,GAAoC,EAE5H,MAAMC,EAAmBJ,GAAeC,EAAsBD,GAAelE,EAAQuE,iBAAiBC,eAAeL,EAAsBD,GACrIO,EAAcH,GAAoBI,iBAAOL,EAAUM,+BAAgCL,GAEnFM,EAAkBV,GAAgBE,EAAmBF,GAAkBC,EAAsBD,GAAgBG,EAAUQ,mCAEvHC,EAAsBZ,GAAeE,EAAmBF,GAAelE,EAAQuE,iBAAiBC,eAAeJ,EAAmBF,GAClIa,EAAiBD,GAAuBJ,iBAAOL,EAAUW,kCAAmCF,GAE5FG,EAAYf,GAAeE,GAAoBF,GAAeG,EAAUa,4BAExEC,EAAgBjB,GAA2B,IAAZA,GAAkC,KAAjBE,GACtD,OAAGF,GAAeC,GAAuBC,EAEjC1I,oCACIA,yBAAKI,UAAW,yBACZJ,yBAAKI,UAAW,oCACZJ,yBAAKI,UAAW,+BACZJ,0BAAMI,UAAW,iCACjBJ,0BAAMI,UAAW,gCAAiCsJ,MAAO,CAACC,MAAK,UAAIJ,EAAW,IAAME,EAArB,SAEnEzJ,0BAAM0J,MAAO,CAACE,KAAI,UAAwB,IAApBnB,EAAwBC,EAAiB,IAA7C,MAAuDtI,UAAW,yCACpFJ,0BAAM0J,MAAO,CAACE,KAAI,OAASxJ,UAAW,wCAG1CJ,yBAAKI,UAAW,oCACX2I,GACG/I,kBAAC6J,IAAiB,CAAC7I,KAAM+H,IAE5BG,GACGlJ,kBAAC6J,IAAiB,CAAC7I,KAAMkI,IAE5BG,GACGrJ,kBAAC6J,IAAiB,CAAC7I,KAAMqI,IAE5BE,GACGvJ,kBAAC6J,IAAiB,CAAC7I,KAAMuI,OAO1C,O,yFClDX,MAAMO,EAA6D,IAG9D,IAH+D,oBAChEC,EADgE,KAEhEC,GACC,EACD,IAAKA,GAAwB,IAAhBA,EAAK3G,OACd,OAAO,KAEX,MAAM4G,EAAoE,SAAhDC,aAAaC,QAAQ,uBAC/C,OACInK,gBAACG,OAAID,iBAAK6J,GACLC,EAAKzJ,IAAK6J,GACJH,GAA6C,SAAxBG,EAAeC,KAC3BrK,gBAACG,OAAID,iBAAKkK,EAAeE,eAAc,CAAE7J,IAAK2J,EAAeC,KAAI,aAAa,qCACjFD,EAAeG,YACfH,EAAeI,YACfJ,EAAeK,OAEZR,GAA6C,SAAxBG,EAAeC,UAAzC,EACKrK,gBAACG,OAAID,iBAAKkK,EAAeE,eAAc,CAAE7J,IAAK2J,EAAeC,KAAI,aAAa,qCACjFD,EAAeG,YACfH,EAAeI,YACfJ,EAAeK,UASlCC,EAA4D,IAI7D,IAJ8D,eAC/DJ,EAD+D,YAE/DE,EAF+D,MAG/DC,GACC,EAED,OACIzK,gBAACG,OAAID,iBAAKoK,GACLE,EACAC,IAKPE,EAAwD,IAIzD,IAJ0D,MAC3DC,EAD2D,MAE3DtE,EAF2D,QAG3DuE,GACC,EAED,OACI7K,gBAACG,OAAID,iBAAK0K,GACLtE,EACAuE,IA+BEC,UA1BkE5L,IAC7E,MAAM,wBAAE6L,EAAF,UACFC,EADE,gBAEFC,EAFE,uBAGFC,EAHE,aAIFvL,EAJE,QAKFwL,EALE,WAMFC,EANE,WAOFC,EAPE,aAQFC,GAAiBpM,EAErB,OAGIc,gBAACC,SAAMC,iBAAK6K,EAAuB,yBAAyB7L,EAAMqM,gBAAkBrM,EAAMqM,iBACrFP,EAAUQ,WAAaL,EACvBH,EAAUS,SAAW9L,GAAgBK,gBAAC2K,EAAYzK,iBAAKP,IACvDqL,EAAUU,YAAcT,GAAmBjL,gBAAC8J,EAAkB5J,iBAAK+K,IACnED,EAAUW,gBAAkBT,GAA0BlL,gBAAC0K,EAAsBxK,iBAAKgL,IAClFF,EAAUY,kBAAoBR,EAC9BJ,EAAUa,kBAAoBR,EAC9BL,EAAUc,oBAAsBR,K,qGCvE7C,MAuBMS,EAAqBC,GAEnBhM,gCACIA,gBAACG,OAAID,iBAAK8L,EAAWC,yBAChBD,EAAWE,iBACXF,EAAWG,oBACXH,EAAWI,kBAQtBC,EAAmB,CAACC,EAA8C3D,EAA2B4D,EAC/FC,EAAuCC,EAAmCC,EAA2BC,EACrGhJ,EAAsCiJ,EAA0BC,KAEhE,MAAM,cAAEC,GAAkBnE,EAE1B,OAAI+D,EACQ1M,gCACH0M,GAGLJ,EACOA,EAAU/L,IAAI,CAACwM,EAAUnL,IAExB5B,uBAAKI,UAAU,sBAAsBK,IAAG,UAAKmB,EAAL,YAAcoL,IAASC,UAAUC,aACpEH,EAASI,SACTP,EAAiB,KAAOQ,EAAkBL,EAAUpE,EAAW4D,EAAe5I,EAAkBkJ,GAE7FD,EACI5M,gBAACG,OAAI,CAACC,UAAU,sCACXiN,EAAuBN,EAAUpE,EAAW4D,EAAe5I,EAAkBkJ,GAC7EE,EAASO,mBACTP,EAASQ,cACTR,EAASS,QAEbT,EAASO,mBACVtN,gBAACG,OAAI,CAACC,UAAU,gCACX2M,EAASO,mBACTP,EAASQ,cACTR,EAASS,QAGdxN,gCACK+M,EAASQ,cACTR,EAASS,UAQ9Bb,EACJ3M,uBAAKI,UAAU,wBACXJ,qBAAGI,UAAU,iBACR0M,GAEJN,GAELxM,gCACCyM,IAYHgB,EAAuB,CAACV,EAA+BW,IAA6B,KACtFX,EAASY,eAAiBZ,EAASY,cAAcC,UAAUC,aAAaH,IAQtEI,EAAwBf,GAAkC,KAC5DA,EAASY,eAAiBZ,EAASY,cAAcC,UAAUC,aAAY,IAGrET,EAAoB,CAACL,EAA+BpE,EAA2B4D,EAA4C5I,EAAsCkJ,KAAsD,MAEzN,IAAKE,EAASY,gBAAkBpB,IAAiB,UAAAQ,EAASgB,YAAT,eAAeZ,SAASa,gBAAiBnB,EACtF,OAAO,KAGX,MAAM,uBAAEoB,EAAF,yBAA0BC,EAA1B,oBAAoDC,EAApD,8BAAyEC,EAAzE,uBAAwGC,GAA2B1F,EAEnI+E,EAAkBX,EAASY,cAAcD,gBAEzClK,EAAUC,2BAAiB,QAASE,EAAmB2K,oBAAkBC,eACzEC,EAAyBzK,iCAAuBJ,EAAmBH,GAEzE,OACIxD,gBAACG,OAAID,iBAAK6M,EAASY,cAAcc,gBAC7BzO,uBAAKI,UAAU,+BACVsN,EAAkB1N,wBAAMI,UAAU,WAC9BgO,GACKpO,wBAAMI,UAAU,QACrB8N,IAILR,GACA1N,uBAAKI,UAAU,oCACXJ,wBAAMI,UAAU,0CACX2M,EAASY,cAAce,aAE5B1O,gBAAC2O,SAAM,CACHvM,KAAK,OAAOhC,UAAU,mCACtB6D,QAAS6J,EAAqBf,IAC7BsB,IAIbrO,gBAAC2O,SAAMzO,eAACE,UAAU,4BAA+BoO,EAAsB,CAAEvK,QAASwJ,EAAqBV,EAAUW,KAC5GA,EAAkBO,EAAyBE,KAMtDS,EAAqBC,GAClBA,GAAyC,IAA5BA,EAAUC,OAAOzL,OAI/BrD,gBAACG,OAAID,iBAAK2O,EAAUE,SACfF,EAAUG,OACVH,EAAUC,QALR,KAUTG,EAA2B,CAACC,EAAmDC,EAA+BjQ,IAC3GgQ,EAIDlP,gBAACG,OAAID,iBAAKiP,GACLjQ,EAAMkQ,UACNF,EAAkBG,SAClBH,EAAkBI,SAClBJ,EAAkBK,YAClBL,EAAkBM,IAClBN,EAAkBO,eAAiBP,EAAkBO,eAAiB,KACtEP,EAAkBQ,YAVhB,KAeTC,EAA6B,CAACC,EAAuDT,EAA+BjQ,IACjH0Q,EAKD5P,gBAACG,OAAID,iBAAKiP,GACLS,EAAoBC,SACpBD,EAAoBE,SACpBF,EAAoBG,QACpBH,EAAoBF,aARzBxQ,EAAMoF,QAAQI,UAAU0B,MAAM,uDACvB,MAYT4J,EAAwB,CAAC9Q,EAAuByJ,IAC9CzJ,EAAM+Q,gBAAkB/Q,EAAM+Q,eAAe5M,OAAS,EAElDrD,uBAAKI,UAAU,wBACTlB,EAAM+Q,eAAe1P,IAAI2P,IAAY,QACnC,OAAQlQ,uBAAKI,UAAU,+BAClB+P,EAA4BD,EAAU,GAAIhR,EAAMqN,cAAe5D,EAAWyH,EAAYF,GAA3D,UAAuEhR,EAAMoF,QAAQ+L,cAAcvP,eAAewP,eAAlH,aAAuE,EAAoDC,uBACtJlE,EAAiB6D,EAAWhR,EAAMyJ,UAAWzJ,EAAMqN,cAAerN,EAAMsN,qBAAsBtN,EAAMuN,iBAAkBvN,EAAMwN,kBAAmBxN,EAAMyN,eAClJzN,EAAMyE,iBAAkBzE,EAAMsR,sBADjB,UACwCtR,EAAMoF,QAAQ+L,cAAcvP,eAAewP,eADnF,aACwC,EAAoDC,2BAMzHrR,EAAMyN,eACV3M,uBAAKI,UAAU,uBACXJ,uBAAKI,UAAU,wBACXJ,qBAAGI,UAAU,iBACRlB,EAAMyJ,UAAUmE,eAEpB5N,EAAMsN,uBAGfxM,gCACCd,EAAMuN,kBAKT0D,EAA8B,CAACpD,EAA+BR,EAA4C5D,EAA2B8H,EAAe5D,KAAkC,MACxL,MAAMa,EAAe,UAAGX,EAASY,qBAAZ,aAAG,EAAwBD,iBAC1C,WAAEgD,EAAF,aAAcC,EAAd,kBAA4BC,GAAsBjI,EACxD,IAAIkI,EAKJ,OAHAA,EAAanD,EAAkBgD,EAAaC,EAC5CE,EAAa9D,EAASgB,MAAQhB,EAASgB,KAAKZ,SAASa,eAAiBnB,EAAwB+D,EAAoBC,EAG9G7Q,gCACIA,uBAAKI,UAAU,8CACXJ,qBAAGI,UAAS,qDAAgDyQ,EAAWC,cAA3D,WACZ9Q,qBAAGI,UAAS,qDAAgDyQ,EAAWC,gBAClED,GAEJE,EAA2BhE,EAAUpE,EAAW8H,MAM3DpD,EAAyB,CAACN,EAA+BpE,EAA2B4D,EAA4C5I,EAAsCkJ,KAAsD,MAE9N,IAAKE,EAASY,gBAAkBpB,IAAiB,UAAAQ,EAASgB,YAAT,eAAeZ,SAASa,gBAAiBnB,EACtF,OAAO,KAGX,MAAM,uBAAEwB,EAAF,uBAA0BJ,EAA1B,oBAAkDE,GAAwBxF,EAE1E+E,EAAkBX,EAASY,cAAcD,gBAEzClK,EAAUC,2BAAiB,QAASE,EAAmB2K,oBAAkBC,eACzEC,EAAyBzK,iCAAuBJ,EAAmBH,GAEzE,OACIxD,gCACK0N,EAAkB1N,gBAAC2O,SAAM,CAACvO,UAAU,qCAAqC6D,QAAS6J,EAAqBf,GAAS,YAAY,UACxHsB,GACO,KACZrO,gBAAC2O,SAAMzO,eACHE,UAAU,sCAAyCoO,EAAsB,CACzEvK,QAASwJ,EAAqBV,EAAUW,KACvCA,EAAkBO,EAAyBE,KAMtDiC,EAAerD,IACjB,IAAIiE,EAAY,EAKhB,OAJAA,EAAYjE,EAASkE,OAAO,CAACR,EAAOjQ,KAAQ,MACxC,OAAOiQ,IAAS,UAAAjQ,EAAKuN,YAAL,eAAWZ,SAAS+D,WAAY,IAEjD,GACIF,GAGLD,EAA6B,CAAChE,EAA+BpE,EAA2B8H,KAAiB,UAC3G,MAAM/C,EAAe,UAAGX,EAASY,qBAAZ,aAAG,EAAwBD,iBAC1C,UAAEyD,EAAF,WAAaC,GAAezI,EAC5B0I,EAASZ,EAAQ,EAAIW,EAAaD,EACxC,OACInR,gCACIA,gBAACG,OAAI,CAACC,UAAU,oDACXsN,EAAkB1N,qBAAGI,UAAU,uDAAb,UACd2M,EAASY,qBADK,aACd,EAAwBvD,eACxB,KAFc,UAGd2C,EAASY,qBAHK,aAGd,EAAwBe,aACtB,KACP1O,qBAAGI,UAAU,uDAAb,IAEKqQ,EACA,IACAY,EAJL,QAYDC,UApT6BpS,IAAD,eACvCc,qCAAKI,UAAWlB,EAAMkB,UAAW6F,GAAI/G,EAAM+G,IAAQ/G,EAAMqS,uBAAuBrS,IAC3EA,EAAMoH,MACNpH,EAAMsS,kBAAoBzF,EAAkB7M,EAAMsS,kBAClDtS,EAAMsR,sBAAwBR,EAAsB9Q,EAAOA,EAAMyJ,WAAa3I,gBAACG,OAAID,iBAAKhB,EAAMuS,kBAC1FpF,EAAiBnN,EAAMgR,UAAWhR,EAAMyJ,UAAWzJ,EAAMqN,cAAerN,EAAMsN,qBAAsBtN,EAAMuN,iBAAkBvN,EAAMwN,kBAC/HxN,EAAMyN,eAAgBzN,EAAMyE,iBAAkBzE,EAAMsR,sBADvC,UAC8DtR,EAAMoF,QAAQ+L,cAAcvP,eAAewP,eADzG,aAC8D,EAAoDC,wBAEtIrR,EAAMwS,qBACH1R,gBAACG,OAAID,iBAAKhB,EAAMyS,qBACXzS,EAAMwS,oBACN,UAAAxS,EAAM0S,YAAN,SAAYC,eAAiBlC,EAA2BzQ,EAAM4S,wBAAyB5S,EAAMiQ,kBAAmBjQ,GAAS+P,EAAyB/P,EAAM6S,sBAAuB7S,EAAMiQ,kBAAmBjQ,GACxM0P,EAAkB1P,EAAM8S,oBACxB9S,EAAM+S,2BACN/S,EAAMgT,sBACNhT,EAAMiT,sBACNjT,EAAMsN,qBACNtN,EAAMkT,8BAEdlT,EAAMqN,iB,2jBCpBR,MAAM8F,EAAmD,QAAC,cAAEC,EAAF,MAAiBC,EAAjB,SAAwBC,GAAzB,SAC5DxS,gBAACG,OAAID,iBAAKoS,GACLC,EACAC,IAIIC,EAAmD,QAAC,cAAEC,EAAF,MAAiBH,GAAlB,SAC5DvS,gBAACG,OAAID,iBAAKwS,GACLH,IAIII,EAAyC,QAAC,SAAEC,EAAF,KAAYpS,EAAZ,cAAkBqS,EAAlB,cAAiCC,GAAlC,SAClD9S,gBAACG,OAAID,iBAAK0S,GACLpS,EACAqS,GAAiB7S,gBAACqS,EAAsBnS,iBAAK2S,IAC7CC,GAAiB9S,gBAACyS,EAAsBvS,iBAAK4S,MAIzCC,EAA2D,QAAC,sBAAEC,EAAF,aAAyBC,EAAzB,QAAuC3T,EAAvC,UAAgD4T,GAAjD,SACpElT,gBAACG,OAAID,iBAAK8S,GACL1T,EACDU,gBAACG,OAAID,iBAAK+S,GACLC,EAAU3S,IAAI4S,GACXnT,gBAAC2S,EAAiBzS,eAACO,IAAK0S,EAASC,QAAYD,QAMhDE,EAA6E,QAAC,sBAAEL,EAAF,aAAyBC,EAAzB,QAAuC3T,EAAvC,UAAgD4T,EAAhD,eAA2DI,EAA3D,mBAA2EC,GAA5E,SACtFvT,gBAACG,OAAID,iBAAK8S,GACLO,EACAD,EACAhU,EACDU,gBAACG,OAAID,iBAAK+S,GACLC,EAAU3S,IAAI4S,GACXnT,gBAACwT,EAAmCtT,eAACO,IAAK0S,EAASC,QAAYD,QAMlEK,EAA2D,QAAC,SAAEZ,EAAF,KAAYpS,EAAZ,cAAkBqS,EAAlB,cAAiCC,GAAlC,SACpE9S,gBAACG,OAAID,iBAAK0S,GACLpS,EACAsS,GAAiB9S,gBAACyS,EAAsBvS,iBAAK4S,MAIzCW,EAAqE,QAAC,cAAEnB,EAAF,MAAiBC,EAAjB,SAAwBC,GAAzB,SAC9ExS,gBAACG,OAAID,iBAAKoS,GACLC,EACAC,IAIIkB,EAA2C,QAAC,UAAEC,EAAF,OAAaC,EAAb,QAAqBtU,EAArB,SAA8BuU,EAA9B,eAAwCC,EAAxC,aAAwDC,EAAxD,cAAsEC,EAAtE,iCAAqFC,GAAtF,SACpDjU,gBAACG,OAAID,iBAAKyT,GACN3T,gBAACG,OAAID,iBAAK0T,GACLtU,EACAuU,QAEiCK,IAArCD,GAAkDH,GAAkB9T,gBAAC+S,EAAsB7S,iBAAK4T,SAC3DI,IAArCD,GAAkDD,GAAiBhU,gBAAC+S,EAAsB7S,iBAAK8T,SAC1DE,IAArCD,GAAkDF,GAAgB/T,gBAAC+S,EAAsB7S,iBAAK6T,SACzDG,IAArCD,EAAiDA,EAAiC1T,IAAI,CAACC,EAAMoB,IACnF5B,gBAACqT,EAAwCnT,iBAAKM,EAAI,CAAEC,IAAKmB,MAC/D,OAIPuS,EAAiD,QAAC,QAAE7U,EAAF,MAAW8U,GAAZ,SACnDpU,uBAAKI,UAAU,6BACVd,EACDU,uBAAKI,UAAU,4BACVgU,GACGpU,gCACKoU,EAAM/E,SACN+E,EAAM9E,SACN8E,EAAM7E,YACN6E,EAAM5E,IACN4E,EAAM3E,eACN2E,EAAMrE,QACNqE,EAAMtE,SACNsE,EAAM1E,eAOrB2E,EAA4D,QAAC,QAAE/U,EAAF,MAAW8U,GAAZ,SAC9DpU,uBAAKI,UAAU,+BACVd,EACDU,uBAAKI,UAAU,8BACVgU,GACGpU,gCACKoU,EAAMvE,SACNuE,EAAMtE,SACNsE,EAAMrE,QACNqE,EAAM1E,eA+FZ4E,UAxFuCpV,IAAQ,cAC1D,MAAM,iCACFqV,EADE,+CAEFC,EAFE,QAGFC,EAHE,cAIFC,EAJE,YAKFC,EALE,cAMFC,EANE,eAOF/C,EAPE,UAQFgD,EARE,UASFC,EATE,iBAUFC,EAVE,UAWFC,EAXE,sBAYFC,EAZE,uBAaFC,EAbE,wBAcFC,EAdE,kBAeFC,EAfE,QAgBFC,EAhBE,MAiBFC,EAjBE,MAkBFhP,EAlBE,WAmBFiP,EAnBE,aAoBFC,EApBE,sBAqBFC,EArBE,UAsBFvC,EAtBE,iBAuBFwC,EAvBE,mBAwBFC,EAxBE,mBAyBFC,GACA1W,EAEE2W,EAAiB3W,SAAH,UAAGA,EAAO6O,YAAV,iBAAG,EAAa+H,gBAAhB,iBAAG,EAAuBC,cAA1B,iBAAG,EAA+BC,oBAAlC,iBAAG,EAA6CpE,YAAhD,aAAG,EAAmDqE,eACpEvN,EAAmBxJ,EAAMgX,IAAItR,OAAO8D,iBAAmBxJ,EAAMgX,IAAItR,OAAO8D,iBAAmB,EAC3FD,EAAsBvJ,EAAMgX,IAAItR,OAAO6D,oBAAsBvJ,EAAMgX,IAAItR,OAAO6D,oBAAsB,EACpG0N,EAA+B,CACjClN,+BAAgC/J,EAAMyJ,UAAUM,+BAChDE,mCAAoCjK,EAAMyJ,UAAUQ,mCACpDG,kCAAmCpK,EAAMyJ,UAAUW,kCACnDE,4BAA6BtK,EAAMyJ,UAAUa,6BAEjD,OACIxJ,gBAACC,SAAMC,iBAAKwU,IACNE,GAAiBS,GACjBT,GAAiBL,GAAoCC,IAAmDc,IAAUD,GAChHrV,gBAACoW,UAAO,CAAChW,UAAU,yCACrBwU,GACE5U,gBAACG,OAAID,iBAAK2U,GACLS,EACAb,GACGzU,gCACIA,gBAACG,OAAID,iBAAK4U,IACJF,GAAiB5U,gBAACG,OAAID,iBAAKyU,GACxBrO,GAEJiP,EACDvV,gBAACG,OAAID,iBAAKiV,GACLQ,GAEL3V,gBAACG,OAAID,iBAAK6U,GACLW,EACAE,IAGT5V,gBAACG,OAAID,iBAAK8U,GACJnD,EAA+E4D,GAAyBzV,gBAACqU,EAAuBnU,iBAAKuV,IAApHD,GAAgBxV,gBAACmU,EAAqBjU,iBAAKsV,IAC9DxV,gBAACuI,IAAmB,CAACjE,QAASpF,EAAMoF,QAASkE,YAAaqN,EAAgBnN,iBAAkBA,EAAkBD,oBAAqBA,EAAqBE,UAAWwN,IACnKnW,gBAACG,OAAID,iBAAK+U,GACNjV,gBAACG,OAAID,iBAAKiV,GACLQ,GAEJD,EACAE,GAEJ1C,GAAalT,gBAAC0T,EAAkBxT,iBAAKgT,IACtClT,gBAACG,OAAID,iBAAKgV,GACNlV,gBAACG,OAAID,iBAAKiV,GACLQ,GAEJD,EACAE,MAMxBhB,GAAiBQ,K,yOCjMvB,MAAMiB,EAAa,CAACjW,EAAmB0E,IAClC9E,uBAAKI,UAAWA,GACnB0E,GAUIwR,EAAmB,CAACC,EAA8BC,IACpDD,GAAyBvW,uBAAKI,UAAWoW,GAC3CD,GAYIE,EAA8B,CACvC9N,EACA+N,EACAC,EACAC,KACA,MAAM,8BAAEC,EAAF,2BAAiCC,EAAjC,0BAA6DC,GAA8BpO,EAC3FkC,EAAkBgM,EAClBG,EAAsBF,EACtBG,EAAqBF,EAC3B,OAAQ/W,uBAAKI,UAAWwW,GACnB/L,EACD7K,qBAAGI,UAAWuW,EAAqBO,KAAMR,GACpCO,GAEJD,IA+EIG,EAAqBC,GACtBpX,uBAAKI,UAAU,+CACjBgX,GCnGV,IAAqBC,EAArB,cAAmErX,YAC/DkD,YAAmBhE,GACfoY,MAAMpY,GAGHqY,sBAAsBC,GACzB,OAAI9T,KAAKxE,QAAUsY,EAMhBrT,SACH,OACInE,uBAAKI,UAAU,qDACVsD,KAAK+T,kCAAkCC,qBACvChU,KAAK+T,kCAAkCE,qBACvCjU,KAAK+T,kCAAkCG,sBAS5CH,kCACJ,MAAO,CACHC,qBACIrB,EAAW3S,KAAKxE,MAAM2Y,8BAA+BnU,KAAKxE,MAAMwY,sBAEpEE,qBACI5X,uBAAKI,UAAU,mEACXJ,yBACI8X,KAAMpU,KAAKxE,MAAM6Y,UACjBC,SAAUtU,KAAKxE,MAAM8Y,SAAQ,aACjBtU,KAAKxE,MAAM6C,UACvB+C,MAAOpB,KAAKxE,MAAM4F,MAClBmT,KAAMvU,KAAKxE,MAAM+Y,QAI7BN,qBACI3X,uBAAKI,UAAU,kEACTsD,KAAKxE,MAAMgZ,2BAA2E,GAA9CxU,KAAKxE,MAAMiZ,qCA5CpDd,EAAqC,aADzDe,KACoBf,GAAA,QCGrB,IAAqBgB,EAArB,cAAyDrY,YACrDkD,YAAmBhE,GACfoY,MAAMpY,GAGHqY,sBAAsBC,GACzB,OAAI9T,KAAKxE,QAAUsY,EAMhBrT,SACH,OACInE,uBAAKI,UAAWsD,KAAKxE,MAAMkB,WACtBsD,KAAK4U,wBAAwB/F,MAC7B7O,KAAK4U,wBAAwBlS,MAC7B1C,KAAK4U,wBAAwBC,OASlCD,wBACJ,MAAO,CACH/F,MACI8D,EAAW3S,KAAKxE,MAAMsZ,0BAA2B9U,KAAKxE,MAAMuZ,kBAEhEF,MACIvY,uBAAKI,UAAU,wDACXJ,yBACI0Y,IAAKhV,KAAKxE,MAAMyZ,eAChBb,KAAMpU,KAAKxE,MAAM6Y,UACjBC,SAAUtU,KAAKxE,MAAM8Y,SAAQ,aACjBtU,KAAKxE,MAAM6C,UACvB+C,MAAOpB,KAAKxE,MAAM4F,MAClBmT,KAAMvU,KAAKxE,MAAM+Y,QAI7B7R,MACIpG,uBAAKI,UAAWsD,KAAKxE,MAAM0Z,qBACtBlV,KAAKxE,MAAM2Z,iBAAmBnV,KAAKxE,MAAM4Z,YAAYpV,KAAKxE,MAAM+Y,MAAQ,GACxEvU,KAAKxE,MAAM6Z,kBAAoBrV,KAAKxE,MAAM4Z,YAAYpV,KAAKxE,MAAM+Y,MAAQ,OA9CzEI,EAA2B,aAD/CD,KACoBC,GAAA,ICWhBW,EDXgB,I,0kBCWrB,SAAKA,GACDA,gBACAA,4BAFJ,CAAKA,MAAuB,KAsC5B,MAAMC,UAAoBjZ,gBAetBkD,YAAmBhE,GACfoY,MAAMpY,GAXH,KAAAga,cAAwB,EAMvB,KAAAC,oBAA8B,EAE9B,KAAAC,0BAAqD,GAoLtD,KAAAzU,iBAAoBvD,IACvBsC,KAAKxE,MAAM0F,OAAOtF,QAAS0B,KAAOI,EAAMyD,OAAOC,OAO5C,KAAAC,sBAAyB3D,IAC5B,MAAM,OAAEwD,GAAWlB,KAAKxE,MACxB0F,EAAOrF,UAAY6B,EAAMyD,OAAOC,OAepB,KAAAuU,aAAe,KAC3B,MAAM,OAAEzU,EAAF,QAAUN,GAAYZ,KAAKxE,OAC3B,cAAEmR,GAAkB/L,GACpB,qBAAEzE,EAAF,YAAwByZ,EAAxB,MAAqCC,GAAU7V,KAAK8V,MACpDC,EAAmBF,GACnB,gCAAEG,GAAoC9U,EACtC+U,OAAsDzF,IAApCwF,EAAgDA,EAAkC,GAE1G,GADyBhW,KAAKkW,2BACjB,CAAC,IAAD,EACT,MAAMC,EAAqCxJ,EACrCyJ,EAAgB,UAAG/Y,IAAoB,eAAgB8Y,UAAvC,QAA8D,GACpF,GAAIC,EAAkB,CAClB,MAAMC,EAAU,IAAIC,IAAIC,OAAOzH,SAAS0H,QAClCC,EAAc,IAAIH,IAAIF,EAAkBC,GACxCK,EAAmBD,EAAYE,aAErCD,EAAiBE,IAAI,iBAAkBhB,GACvCc,EAAiBE,IAAI,eAAgBX,GACrCS,EAAiBE,IAAI,gBAAiBb,GAElCpZ,kBAAgBC,YAAYT,IAC5BA,EAAqBU,IAAI,CAACC,EAAMoB,KAC5B,MAAM2Y,EAAaC,mBAAiBC,mBAAmBja,EAAKuB,WAAmE,GAAtDvB,EAAKuB,UAAU2Y,QAAQ,IAAK,IAAIC,oBACnGC,EAAcJ,mBAAiBC,mBAAmBja,EAAKoa,YAAgC,GAAlBpa,EAAKoa,WAGhF,OAFAR,EAAiBE,IAAjB,eAA6B1Y,EAAQ,EAArC,QAA8C2Y,GAC9CH,EAAiBE,IAAjB,eAA6B1Y,EAAQ,EAArC,SAA+CgZ,GACxCpa,IAIfyZ,OAAOzH,SAASqI,OAAOV,EAAYjN,eAS/B,KAAA8K,SAAY5W,IAAoD,QAC5E,MAAM,qBAAEvB,GAAyB6D,KAAK8V,OAChC,OAAE5U,GAAWlB,KAAKxE,OAClB,gCAAEwa,GAAoC9U,EACtCqT,EAAO7W,EAAMyD,OAAOoT,MAAQ,GAC5BnT,EAAQ1D,EAAMyD,OAAOC,OAAS,GACpCpB,KAAKyV,oBAAsBqB,mBAAiBC,mBAAjB,UAAoC/W,KAAKoX,oBAAoBC,eAA7D,aAAoC,EAAkCjW,OACjGpB,KAAKwV,cAAgBsB,mBAAiBC,mBAAjB,UAAoC/W,KAAKsX,cAAcD,eAAvD,aAAoC,EAA4BjW,OAExB,UAAzD4U,aAAA,EAAAA,EAAiCiB,uBACjCjX,KAAKwV,cAAe,GAGxBxV,KAAKuX,SAAS,CAAE1E,qBAAsB,KACtC,MAAM2E,EAA2D,GACjE,IAAIC,GAAkC,EAClCC,GAA4C,EAEhD,IAAK,MAAM5a,KAAQX,EAAsB,CACrC,MAAM0a,EAAoB/Z,EAAKuB,UAAU2Y,QAAQ,IAAK,IAClDH,EAAUI,sBAAwB1C,EAAK0C,oBACvCO,EAAyBpY,KAAK,CAC1BuY,UAAW7a,EAAK6a,UAChBC,kBAAkB,EAClBV,WAAY9V,EACZ/C,UAAWvB,EAAKuB,UAChBwZ,4BAA6B/a,EAAK+a,8BAGtCL,EAAyBpY,KAAK,CAC1BuY,UAAW7a,EAAK6a,UAChBC,iBAAkB9a,EAAK8a,iBACvBV,WAAYpa,EAAKoa,WACjB7Y,UAAWvB,EAAKuB,UAChBwZ,4BAA6B/a,EAAK+a,8BAGtChB,EAAUI,uBAAwBjB,aAAlC,EAAkCA,EAAiCiB,uBACnES,GAAmC,GAI3C,IAAK,MAAMI,KAASN,EACZV,mBAAiBC,mBAAmBe,EAAMZ,cAC1CO,GAAyB,GAMjC,GAFAzX,KAAKuX,SAAS,CAAEpb,qBAAsBqb,KAEjCE,EACD,OAAQnD,EAAK0C,qBACT,KAAK3B,EAAwByC,YACzB/X,KAAKuX,SAAS,CACV3B,YAAaxU,EACb4W,kBAAkB,EAClBC,YAAY,IAEhB,MAEJ,KAAK3C,EAAwBO,MACzB7V,KAAKuX,SAAS,CACV1B,MAAOzU,EACP8W,cAAc,EACdC,mBAAmB,EACnBF,YAAY,IAEhB,MAEJ,QACIjY,KAAKuX,SAAS,CAAEU,YAAY,IAKpCjY,KAAKyV,oBACLzV,KAAKwV,cACLiC,GACAzX,KAAK8V,MAAMsC,qBACVpY,KAAK8V,MAAMuC,6BAEZrY,KAAKuX,SAAS,CAAEe,YAAY,IAE5BtY,KAAKuX,SAAS,CAAEe,YAAY,KAwBnB,KAAAC,aAAgB7b,IAC7B,MACIuI,WAAW,uCACPuT,EADO,oCAEPC,IAEJzY,KAAKxE,OAEH,aACF0c,EADE,MAEFrC,EAFE,kBAGFsC,EAHE,WAIFF,GACAjY,KAAK8V,MACLoC,IACAlY,KAAK0Y,qBAAuBD,IAG3B3B,mBAAiB6B,cAAc9C,IAAUsC,IAC1CnY,KAAK4Y,4BAA8BJ,GAGvC,MAAMK,EAAiBZ,EACjBa,EAAoBX,EACpBY,EAAoBrc,EAAUua,sBAAwB3B,EAAwBO,MACpF,OACIvZ,gCACKuc,GACGvc,wBAAMI,UAAS,UAAKA,EAAL,WAAyBgC,KAAK,SACxCsB,KAAK0Y,sBAGbI,GAAqBC,GAClBzc,wBAAMI,UAAS,UAAKA,EAAL,WAAyBgC,KAAK,SACxCsB,KAAK4Y,+BAYT,KAAAI,wBAA2Btc,IACxC,MACIuI,WAAW,6CACPgU,EADO,oCAEPR,IAEJzY,KAAKxE,OAEH,iBACFwc,EADE,WAEFC,GACAjY,KAAK8V,MACT,OACIxZ,gCACK2b,GACG3b,wBAAMI,UAAS,UAAKA,EAAL,WAAyBgC,KAAK,SACxC+Z,GAGRT,GACG1b,wBAAMI,UAAS,UAAKA,EAAL,WAAyBgC,KAAK,SACxCua,KAkCJ,KAAAC,wBAA0B,KACvC,MAAM,MAAErD,EAAF,aAASqC,EAAT,kBAAuBC,GAAsBnY,KAAK8V,OAEpD5U,QAAQ,gCACJ8U,GAEJ/Q,WAAW,sBACPkU,EADO,0BAEPC,IAEJpZ,KAAKxE,MAET,OAAQwa,GACJ,IAAI,OACA,OACJ,IAAI,QACJ,QACI,OACI1Z,gBAACqY,EAA2B,CACxBM,eAAgBjV,KAAKsX,cACrBjZ,UAAW+a,EACX1c,UAAU,yCACV2X,UAAU,OACVjT,MAAOyU,EACPtB,KAAMe,EAAwBO,MAC9Bd,iBAAkBoE,EAClBrE,0BAA0B,sDAC1BI,oBAAoB,4DACpBC,iBAAkB+C,EAClB7C,kBAAmB8C,EACnB/C,YAAapV,KAAKuY,aAClBjE,SAAUtU,KAAKsU,aAUlB,KAAA+E,2BAA6B,KAC1C,MAAM7B,EAA2D,GACjE,IAAK,MAAM1a,KAAQkD,KAAK8V,MAAM3Z,qBAAsB,CAChD,MAAMmd,GAAyBxC,mBAAiBC,mBAAmBja,EAAKoa,cH7gB7C3C,EG6gBmFzX,EAAKoa,WH5gB7G,IAAIqC,OAAO,2BAA4B,KACxCC,KAAKjF,IG4gBViD,EAAyBpY,KAAK,CAC1BuY,UAAW7a,EAAK6a,UAChBC,iBAAkB0B,EAClBpC,WAAYpa,EAAKoa,WACjB7Y,UAAWvB,EAAKuB,UAChBwZ,4BAA6B/a,EAAK+a,8BHnhBXtD,MGshB/B,OAAOiD,GAOM,KAAAtB,yBAA2B,KACxC,MAAM,OAAEhV,GAAWlB,KAAKxE,OAClB,YAAEoa,EAAF,MAAeC,GAAU7V,KAAK8V,OAC9B,gCAAEE,GAAoC9U,EAC5C,IAAIsW,EAA2D,GAC3DiC,GAAU,EACVC,GAAY,EAEhB,GAAI/c,kBAAgBC,YAAYoD,KAAK8V,MAAM3Z,sBAAuB,CAC9Dqb,EAA2BxX,KAAKqZ,6BAChC,IAAK,MAAMvc,KAAQ0a,EACV1a,EAAK8a,mBACN8B,GAAY,GAIhBA,GACA1Z,KAAKuX,SAAS,CACVpb,qBAAsBqb,EACtBc,YAAY,IAsCxB,OAjCIxB,mBAAiBC,mBAAmBnB,GACpC5V,KAAKuX,SAAS,CACVS,kBAAkB,EAClBC,YAAY,EACZK,YAAY,IAET1C,EAAY+D,SAAW/D,EAC9B5V,KAAKuX,SAAS,CACVS,kBAAkB,EAClBC,YAAY,EACZK,YAAY,IAEsB,UAA/BtC,GAA8Ec,mBAAiBC,mBAAmBlB,GACzH7V,KAAKuX,SAAS,CACVW,cAAc,EACdD,YAAY,EACZK,YAAY,IAEsB,UAA/BtC,GHhlBUH,IAClB+D,aAAWC,aAAaL,KAAK3D,GG+kB0DiE,CAAajE,GAK5F6D,IAAc1Z,KAAK8V,MAAMsC,oBAAsBpY,KAAK8V,MAAMuC,6BACjErY,KAAKuX,SAAS,CACVe,YAAY,KAGhBtY,KAAKuX,SAAS,CACVe,YAAY,IAEhBmB,GAAU,GAZVzZ,KAAKuX,SAAS,CACVY,mBAAmB,EACnBG,YAAY,IAYbmB,GArjBPzZ,KAAKoX,oBAAsB9a,cAC3B0D,KAAKsX,cAAgBhb,cACrB,MAAM,OAAE4E,GAAWlB,KAAKxE,OAClB,kCAAEue,GAAsC7Y,EACxCsW,EAA2D,GAEjE,GAAIuC,EACA,IAAK,MAAMjd,KAAQid,EAAmC,CAAC,IAAD,MAClDvC,EAAyBpY,KAAK,CAC1BuY,UAAS,UAAE7a,EAAK6a,iBAAP,QAAoB,GAC7BC,kBAAkB,EAClBV,WAAY,GACZ7Y,UAAS,UAAEvB,EAAKuB,iBAAP,QAAoB,GAC7BwZ,4BAA2B,UAAE/a,EAAKkd,yBAAP,QAA4B,KAKnEha,KAAK8V,MAAQ,CACTF,YAAa,GACbC,MAAO,GACPmC,kBAAkB,EAClBE,cAAc,EACdC,mBAAmB,EACnBF,YAAY,EACZK,YAAY,EACZF,oBAAoB,EACpBC,8BAA8B,EAC9BxF,qBAAsB,GACtB1W,qBAAsBqb,GAIvB/W,SAAM,QACT,MACIS,QAAQ,UACJrF,EADI,QAEJD,GAHF,UAKFqJ,EALE,QAMFrE,GACAZ,KAAKxE,OAEH,8BACFye,EADE,uBAEFC,EAFE,yBAGFC,EAHE,4BAIFC,EAJE,gCAKFC,EALE,2BAMFC,EANE,uCAOF5G,GACAzO,GAEE,qBACF4N,EADE,WAEFyF,EAFE,YAGF1C,EAHE,iBAIFoC,GACAhY,KAAK8V,MAEHyE,EAAczD,mBAAiB6B,cAAc/c,aAA/B,EAA+BA,EAAS0B,MAAQ2c,EAAgCre,aAAhF,EAAgFA,EAAS0B,KACvGkd,EAAU,UAAG5e,aAAH,EAAGA,EAAS2B,WAAZ,QAAmB,KAG7Bkd,EAA6B,UADX,kBACW,aAC7BC,EAA2B,UAAMD,EAAN,aAC3BE,EAAwB,UAAMF,EAAN,UACxBG,EAA4C,UAAMD,EAAN,iCAC5CE,EAA8B,UAAMF,EAAN,YAC9BG,EAAyB,UAAMD,EAAN,wBACzBE,EAA8B,UAAMF,EAAN,8BAC9BG,EAAqB,UAAML,EAAN,YACrBM,EAA0B,UATR,kBASQ,mBAC1B/H,EAAuB,UAVL,kBAUK,qBACvBgI,EAAmB,UAAMhI,EAAN,0BAEnBiI,EACF7e,gBAACe,IAAa,CACVX,UAAWge,EACXnd,IAAKid,EACLld,KAAMid,EACN/c,UAAW,CAAEC,OAAQuC,KAAKiB,iBAAkB7D,eAAgB4C,KAAKxE,MAAMoF,QAAQC,WAIjFua,EAAS,OACRpb,KAAKxE,OADG,IAEXC,YAAa,CACTsH,YAAa/C,KAAKxE,MAClBkB,UA1BgB,mBA6BpBhB,qBAAsB,CAClBgB,UAAW+d,GAEf9e,oCAAqC,CACjCe,UAAWke,GAEf/e,UAAWA,GAAamE,KAAKqb,iBAAiBxf,GAC9CD,QAASuf,EAETpf,4BAA6BiE,KAAKkZ,0BAClCpd,gBAAiB,CACbY,UAAWie,EACXpd,IAAK,OACL,aAAc4c,EACd5F,KAAM,kBACN7V,KAAM,OACN4c,aAAc,MACdC,SAAUvb,KAAK2V,cAEnB3Z,iBACIM,gBAACqY,EAA2B,CACxBM,eAAgBjV,KAAKoX,oBACrB/Y,UAAWgc,EACX3d,UAAWme,EACXxG,UAAU,OACVjT,MAAOwU,EACPrB,KAAMe,EAAwByC,YAC9BhD,iBAAkBqF,EAClBtF,0BAA2BgG,EAC3B5F,oBAAqB6F,EACrB5F,kBAAkB,EAClBE,kBAAmB2C,EACnB5C,YAAapV,KAAKgZ,wBAClB1E,SAAUtU,KAAKsU,WAIvBpY,aAAc,CACVQ,UAAWse,EACXzd,IAAK0N,SACL,aAAcqP,EACdlG,KAAM,SACN1V,KAAM,SACNkE,MAAOsX,EACP3Z,QAASP,KAAK2V,aACd6F,SAAUlD,GAGdtb,sBAAuBkd,EACvBje,aAAc2W,EAAiBC,EAAsBoI,GACrD5e,oBAAqB2D,KAAK8V,MAAMsC,oBAAsBpY,KAAK8V,MAAMuC,+BACjE5E,EAAkBC,GAClBtX,sBAAuB2W,EAA4B9N,EAAD,UAAYrE,EAAQC,QAAQ4a,KAAKzI,iBAAjC,QAA8C,GAAIkI,EAAqBhI,GACzHoB,SAAUtU,KAAKsU,SACfoH,OAAQ1b,KAAK2V,aACbxZ,qBAAsB6D,KAAK2b,4BAE/B,OAAO3b,KAAKxE,MAAMiI,WAAW2X,GAGH,kCAC1B,MAAM,OAAEla,EAAF,QAAUN,GAAYZ,KAAKxE,OAC3B,cAAEmR,GAAkB/L,GACpB,gCAAEoV,EAAF,kCAAmC+D,GAAsC7Y,EAC/E,IAAI0a,GAA6C,EAC7CC,GAAmC,EAEvC,MAAMC,QAAkCC,6BAA2BC,+BAC/D,CAAEC,cAAetP,IACrB3M,KAAK0V,0BAAL,oBAAiCoG,EAA0BI,KACvDpf,GAA0B,sCAAlBA,EAAKqf,iBADjB,aAAiC,EACmCC,8BADpE,QAC8F,GAE9F,MACMC,EAA2EtC,UAAqC,GAEtH8B,EH7LgC,EAACS,EAAoC5G,KACzE,IAAI6G,GAAwB,EAC5B,IAAK,MAAMzf,KAAQ4Y,EACf,GAAI5Y,EAAK0f,KAAKvF,sBAAwBqF,EAA2BrF,oBAE7D,OADAsF,GAAe,EACRA,EAGf,OAAOA,GGqLuBE,CAHWzG,UAAmC,GAGChW,KAAK0V,2BAC9EkG,EHnK0C,EAC9Cc,EACAhH,KACA,IAAIiH,GAAkC,EAYtC,OAXIhgB,kBAAgBC,YAAY8f,GAC5BA,EAAsC7f,IAAIC,IAAO,MAC7C,MAAM8f,EAAQ,UAAW9f,EAAK8f,gBAAhB,QAA4B,GAI1C,OAHKD,IACDA,EAlBgC,EAACvb,EAAesU,KACpDA,EAA0BmH,KAAK/f,GAAQA,EAAK0f,KAAKvF,sBAAwB7V,EAAM6V,qBAiBlD6F,CAAiCF,EAAUlH,IAEjEiH,IAGXA,GAAyB,EAEtBA,GGoJiCI,CAAmCV,EAAgCrc,KAAK0V,2BAC5G1V,KAAKgd,oBAAoBnB,EAAyBD,GAyB/CoB,oBAAoBT,EAAuBI,GAC9C3c,KAAKuX,SAAS,CAAEa,mBAAoBmE,EAAclE,6BAA8BsE,IAoI5EtB,iBAAiB/d,GACrB,MAAM,QAAEsD,GAAYZ,KAAKxE,OACnB,QAAEqF,GAAYD,EACpB,OAAKtD,EAIDhB,gBAACe,IAA0B,CACvBC,KAAMA,EACNZ,UAAU,iCACVc,UAAW,CAAEC,OAAQuC,KAAKqB,sBAAuBjE,eAAgByD,KAN9D,KA0FP8a,0BACJ,MAAM,qBAAExf,GAAyB6D,KAAK8V,MAChCmH,EAAuC,GAC7C,IAAK,MAAMngB,KAAQX,EAAsB,CACrC,MAAMoY,EAAezX,EAAKuB,UAAU2Y,QAAQ,IAAK,IACjDiG,EAAsB7d,KAClB9C,gBAACqX,EAAqC,CAClCjX,UAAW6X,EAAK0C,oBAChB5Y,UAAWvB,EAAKuB,UAChBgW,UAAU,OACVjT,MAAOtE,EAAKoa,WACZ3C,KAAMA,EAAK0C,oBACXjD,qBAAsBlX,EAAK6a,UAC3BxD,8BAA8B,2DAC9BK,2BAA4B1X,EAAK8a,iBACjCnD,iCAAkC3X,EAAK+a,4BACvCvD,SAAUtU,KAAKsU,YAI3B,OAAO2I,GAgIA1H,a,ocC5pBR,MAAM2H,EAA2D,QAAC,sBACrEC,EADqE,QAErEC,EAFqE,UAGrEC,EAHqE,YAIrEC,EAJqE,YAKrEC,EALqE,MAMrExQ,EANqE,OAOrEyQ,EAPqE,mBAQrEC,GARoE,SAUpEnhB,gBAACG,OAAID,iBAAK2gB,GACLG,EACAF,EACAC,EACAE,EACAxQ,EACAyQ,EACAC,IAIIC,EAAsD,QAAC,cAAEC,EAAF,QAAiB/hB,EAAjB,MAA0BmR,EAA1B,WAAiC6Q,EAAjC,QAA6CC,EAA7C,aAAsDC,GAAvD,SAC/DxhB,gBAACG,OAAID,iBAAKmhB,GACL/hB,EACAmR,EACA6Q,EACAC,EACAC,IAIIC,EAAsC,QAAC,WAAEC,EAAF,SAAcC,EAAd,gBAAwBC,EAAxB,WAAyCC,GAA1C,SAC/C7hB,gBAACG,OAAID,iBAAKwhB,GACLG,GACG7hB,gBAACG,OAAID,iBAAK0hB,GACLC,EAAWthB,IAAIuhB,GACZ9hB,gBAACA,WAAc,CAACS,IAAKqhB,EAAU/T,KAAK+T,UAAU1O,QACzC0O,EAAUA,eAQtBC,EAAwC,QAAC,YAAEC,EAAF,OAAeC,GAAhB,SACjDjiB,gBAACG,OAAID,iBAAK8hB,GACLC,EAAO1hB,IAAI,CAAC2hB,EAAOtgB,IAChB5B,gBAACyhB,EAAiBvhB,eAACO,IAAKmB,GAAWsgB,OAKlCC,EAAwC,QAAC,YAAExN,EAAF,QAAerV,EAAf,gBAAwB8iB,EAAxB,aAAyCC,GAA1C,SACjDriB,gBAACG,OAAID,iBAAKyU,GACLrV,EACA8iB,EACAC,IAIIC,EAA+C,QAAC,gBAAEC,EAAF,gBAAmBC,EAAnB,OAAoCP,EAApC,iBAA4CQ,EAA5C,qBAA8DC,GAA/D,SACxD1iB,gBAACG,OAAID,iBAAKqiB,GACLC,GAAmBxiB,gBAAC4gB,EAA2B1gB,iBAAKsiB,IACpDP,GAAUjiB,gBAAC+hB,EAAkB7hB,iBAAK+hB,IAClCS,EACAD,IAIIE,EAAoC,QAAC,UAAEC,EAAF,YAAaC,GAAd,SAC7C7iB,gBAACG,OAAID,iBAAK0iB,GACLC,GAAeA,EAAYtiB,IAAI,CAACuiB,EAAYlhB,IAAU5B,gBAACsiB,EAAqBpiB,eAACO,IAAKmB,GAAWkhB,OAoCvFC,UAhC4C,QAAC,kBACxDC,EADwD,OAExDhU,EAFwD,MAGxDsG,EAHwD,QAIxDD,EAJwD,aAKxD4N,EALwD,mBAMxDC,EANwD,KAOxDlZ,EAPwD,MAQxDmZ,EARwD,WASxDC,GATuD,SAWvDpjB,gBAACC,SAAMC,iBAAK8iB,GACPhU,GAAUhP,gBAACmiB,EAAkBjiB,iBAAK8O,IAClCqG,EACAC,GACGtV,gCACKsV,EACA4N,GAGRD,GACGjjB,gBAACG,OAAI,CAACC,UAAU,6CACX6iB,EACAC,GAGRlZ,GAAQhK,gBAAC2iB,EAAgBziB,iBAAK8J,IAC9BmZ,EACAC,GAAcA,K,uGC7FvB,MAAM/W,EAAmB,CAACC,EAA8C+W,EAAuB5R,EAA8BlF,EACzHC,EAAuCC,EAAmCC,EAA2BC,IAEjGD,EACQ1M,gCACH0M,GAGLJ,EACOA,EAAU/L,IAAKwM,GAEd/M,uBAAKI,UAAU,sBAAsBK,IAAKsM,EAASuW,YAC9CvW,EAASI,SAENZ,GAAiBQ,EAASY,cAAgB3N,gBAACG,OAAID,iBAAK6M,EAASY,cAAcc,gBACtE1B,EAASY,cAAc4V,kBAClB,KAGVxW,EAASO,mBACLtN,gBAACG,OAAI,CAACC,UAAU,gCACX2M,EAASS,OACTT,EAASQ,cACTR,EAASO,oBAGdtN,gCACK+M,EAASS,OACTT,EAASQ,iBAQ9BZ,EACJ3M,uBAAKI,UAAU,wBACXJ,qBAAGI,UAAU,iBACRijB,GAEJ7W,GAELxM,gCACCyM,GA0HH+W,EAA6B,CAAC9S,EAAoBC,EAAsB8S,EAC1EC,EAAuB3W,EAA+BF,KAAkC,MAExF,IAAIgE,EAKJ,OAHAA,GAHqB,UAAwB9D,EAASY,qBAAjC,aAAwB,EAAwBD,iBAGtCgD,EAAaC,EAC5CE,EAAa9D,EAASgB,MAAQhB,EAASgB,KAAKZ,SAASa,eAAiBnB,EAAwB4W,EAAoB5S,EAG9G7Q,gCACIA,uBAAKI,UAAU,8CACXJ,qBAAGI,UAAS,qDAAgDyQ,EAAWC,cAA3D,WACZ9Q,qBAAGI,UAAS,qDAAgDyQ,EAAWC,gBAClED,GAtCa,EAAC9D,EAA+B2W,KAAyB,UACvF,MAAMhW,EAAe,UAAwBX,EAASY,qBAAjC,aAAwB,EAAwBD,gBACrE,OACI1N,gCACIA,gBAACG,OAAI,CAACC,UAAU,oDACXsN,EAAkB1N,qBAAGI,UAAU,uDAAb,UACd2M,EAASY,qBADK,aACd,EAAwBvD,eACxBsZ,EAFc,UAGd3W,EAASY,qBAHK,aAGd,EAAwBe,aACtB,QA+BNiV,CAA0B5W,EAAU2W,MA+EtCpS,UApCgCpS,IAA4B,UACvE,MAAMwJ,EAAmBxJ,EAAMgX,IAAItR,OAAO8D,iBAAmBxJ,EAAMgX,IAAItR,OAAO8D,iBAAmB,EAC3FD,EAAsBvJ,EAAMgX,IAAItR,OAAO6D,oBAAsBvJ,EAAMgX,IAAItR,OAAO6D,oBAAsB,EACpG0N,EAA+B,CACjClN,+BAAgC/J,EAAMyJ,UAAUM,+BAChDE,mCAAoCjK,EAAMyJ,UAAUQ,mCACpDG,kCAAmCpK,EAAMyJ,UAAUW,kCACnDE,4BAA6BtK,EAAMyJ,UAAUa,6BAEjD,OACIxJ,qCAAKI,UAAWlB,EAAMkB,UAAW6F,GAAI/G,EAAM+G,IAAQ/G,EAAMqS,uBAAuBrS,IAC5Ec,uBAAKI,UAAW,wBACXlB,EAAMoH,QACN,UAACpH,EAAM0S,YAAP,OAAC,EAAYC,iBAAkB3S,EAAMsS,mBApH3BxF,EAoHiE9M,EAAMsS,iBAlH1FxR,gCACIA,gBAACG,OAAID,iBAAK8L,EAAWC,yBAChBD,EAAWE,iBACXF,EAAWG,oBACXH,EAAWI,mBA+GXlN,EAAMsR,sBA9COtR,IACtBA,EAAM+Q,gBAAkB5P,kBAAgBC,YAAYpB,EAAM+Q,gBAEtDjQ,uBAAKI,UAAU,+BACTlB,EAAM+Q,eAAe1P,IAAI2P,IAAY,MACnC,OAAQlQ,uBAAKS,IAAKyP,EAAU,GAAGoT,WAAYljB,UAAU,+BAChDojB,EAA2BtkB,EAAMyJ,UAAU+H,WAAYxR,EAAMyJ,UAAUgI,aACpEzR,EAAMyJ,UAAUiI,kBAAmB1R,EAAMyJ,UAAU+a,cAAexT,EAAU,GADrD,UAEvBhR,EAAMoF,QAAQ+L,cAAcvP,eAAewP,eAFpB,aAEvB,EAAoDC,uBACvDlE,EAAiB6D,EAAWhR,EAAMyJ,UAAUmE,cAAe5N,EAAMuS,iBAAkBvS,EAAMqN,cACtFrN,EAAMsN,qBAAsBtN,EAAMuN,iBAAkBvN,EAAMwN,kBAAmBxN,EAAMyN,oBAMnGzN,EAAMyN,eACV3M,uBAAKI,UAAU,uBACXJ,uBAAKI,UAAU,wBACXJ,qBAAGI,UAAU,iBACRlB,EAAMyJ,UAAUmE,eAEpB5N,EAAMsN,uBAGfxM,gCACCd,EAAMuN,kBAoBgCmX,CAAqB1kB,GAASc,gBAACG,OAAID,iBAAKhB,EAAMuS,kBACxEpF,EAAiBnN,EAAMgR,UAAWhR,EAAMyJ,UAAUmE,cAAe5N,EAAMuS,iBAAkBvS,EAAMqN,cAC5FrN,EAAMsN,qBAAsBtN,EAAMuN,iBAAkBvN,EAAMwN,kBAAmBxN,EAAMyN,kBAI9FzN,EAAMwS,qBACH1R,gBAACG,OAAID,iBAAKhB,EAAMyS,qBACXzS,EAAMwS,oBACN,UAAAxS,EAAM0S,YAAN,SAAYC,eA7KE,EAACjC,EAAuDT,EAA+BjQ,IAEjH0Q,EAKD5P,gBAACG,OAAID,iBAAKiP,GACLS,EAAoBC,SACpBD,EAAoBE,SACpBF,EAAoBG,QACpBH,EAAoBF,aARzBxQ,EAAMoF,QAAQI,UAAU0B,MAAM,uDACvB,MAyKmCuJ,CAA2BzQ,EAAM4S,wBAAyB5S,EAAMiQ,kBAAmBjQ,GAtJpG,EAACgQ,EAAmDC,EAA+BjQ,IAE3GgQ,EAKDlP,gBAACG,OAAID,iBAAKiP,GACLjQ,EAAMkQ,UACNF,EAAkBG,SAClBH,EAAkBI,SAClBJ,EAAkBK,YAClBL,EAAkBM,IAClBN,EAAkBO,eAAiBP,EAAkBO,eAAiB,KACtEP,EAAkBQ,aAXvBxQ,EAAMoF,QAAQI,UAAU0B,MAAM,qDACvB,MAkJ+H6I,CAAyB/P,EAAM6S,sBAAuB7S,EAAMiQ,kBAAmBjQ,GACzMc,gBAACuI,IAAmB,CAACjE,QAASpF,EAAMoF,QAASkE,YAAatJ,SAAF,UAAEA,EAAO0S,YAAT,aAAE,EAAaA,KAAKiS,YAAanb,iBAAkBA,EAAkBD,oBAAqBA,EAAqBE,UAAWwN,KAjM3KtH,EAkMY3P,EAAM8S,qBAjMtB3R,kBAAgBC,YAAYuO,EAAUC,QAIrD9O,gBAACG,OAAID,iBAAK2O,EAAUE,SACfF,EAAUG,OACVH,EAAUC,QALR,KAiMM5P,EAAM+S,2BACN/S,EAAMgT,sBACNhT,EAAMsN,qBACNtN,EAAMkT,8BAEdlT,EAAMqN,eAxMQsC,MAkEA7C,I,qGCvDZ8X,UA9C0C5kB,IACrD,MAAM0F,EAAS,CACXmf,WAAW,EACXC,SAAS,EACTlgB,YAAY,EACZmgB,eAAe,GAEnB,IA/B6BrhB,EA+BzBwV,EAAW,IAAI8L,kBAAiB,SAAUC,EAAiB/L,GAC3D,MAAMgM,EAAgBC,SAASC,cAAT,2DACtB,IAbcrK,QAAUA,OAAOsK,UAAUC,WAC1BC,MAAM,YAYHL,EAAc,CAC5B,MAAMM,EAAcL,SAASC,cAAT,WAA2BplB,EAAM+G,GAAjC,WACEoe,SAASC,cAAT,2DAMRK,iBAAiB,SAL/B,WAEID,GAAeA,EAAYE,+BAavC,OAPA5kB,YAAgB,KACZ,MAAM6kB,EAAWR,UAAYA,SAASS,eAAT,UAA2B5lB,EAAM+G,KAC9D8e,QAAQC,IAAI,qBACZD,QAAQC,IAAIH,GACC,OAAbA,GAAqBzM,EAAS6M,QAAQJ,EAAUjgB,IAClD,IAGE5E,qCACIiG,GAAI/G,EAAM+G,GACV7F,UAAU,mBACNlB,EAAMqS,uBAAuBrS,IAEhCA,EAAMgmB,OACPllB,gBAACG,OAAID,iBAAKhB,EAAM0H,iBAAgB,CAAExG,UAAWlB,EAAM0H,iBAAmB1H,EAAM0H,iBAAiBxG,UAAY,KACpGlB,EAAMoH,MACNpH,EAAM8B,KACN9B,EAAM0D,qBA7DUA,EA6DmC1D,EAAM0D,mBA5DhDI,uBAEdhD,gBAACG,OAAID,iBAAK0C,EAAkBG,uBACxB/C,gCACK4C,EAAkBI,uBAAuB1D,QAC1CU,gBAACG,OAAID,iBAAK0C,EAAkBI,uBAAuBP,gCAC9CG,EAAkBI,uBAAuBhC,KAC1ChB,gBAACG,OAAID,iBAAK0C,EAAkBI,uBAAuBN,4BAC9CE,EAAkBI,uBAAuBtB,UAQ3D,MA6CK1B,gBAACG,OAAID,iBAAKhB,EAAMimB,oBAAmB,CAAE/kB,UAAWlB,EAAMimB,oBAAsBjmB,EAAMimB,oBAAoB/kB,UAAY,KAC7GlB,EAAMwC,W,suBCxC3B,MAAMqG,UAAmB/H,IAAMolB,cAc3BliB,YAAmBhE,GACfoY,MAAMpY,GAdO,KAAAmmB,YAAsB,oBAEtB,KAAAC,2BAAqC,OA8GrC,KAAAC,aAAgBnkB,IAC7B,MAAMX,EAAMW,EAAMokB,QAClB,GAAI9hB,KAAK8V,MAAMiM,kBACX,OAAQhlB,GACJ,KAAKilB,WAASC,OACVC,WAAW,KAAK,YACZ,MAAMC,EAAYxB,UAAYA,SAASyB,cACoF,IAAD,KAArH,UAAApiB,KAAKqiB,6BAAL,mBAA4BhL,eAA5B,SAAqCiL,SAASH,IAA9C,UAA4DniB,KAAKuiB,2BAAjE,iBAA4D,EAA0BlL,eAAtF,OAA4D,EAAmCiL,SAASH,MACzGniB,KAAKwiB,yBACL,UAAAxiB,KAAKqiB,6BAAL,mBAA4BhL,eAA5B,SAAqCoL,UAE1C,IACH,MAEJ,KAAKT,WAASU,IACVR,WAAW,KAAK,YACZ,MAAMC,EAAYxB,UAAYA,SAASyB,cAClC,UAACpiB,KAAKqiB,6BAAN,iBAAC,EAA4BhL,eAA7B,OAAC,EAAqCiL,SAASH,IAAc,UAACniB,KAAKuiB,2BAAN,iBAAC,EAA0BlL,eAA3B,OAAC,EAAmCiL,SAASH,IAC3GniB,KAAKwiB,0BAEV,IACH,MAEJ,QACI,SAKC,KAAAG,oBAAuBjlB,IAAc,QAC7C,UAAAsC,KAAKqiB,sBAAsBhL,eAA3B,SAAoCiL,SAAS5kB,EAAMyD,SAAWnB,KAAK8V,MAAMiM,mBACzE,UAAA/hB,KAAKuiB,oBAAoBlL,eAAzB,SAAkCiL,SAAS5kB,EAAMyD,SAAWnB,KAAK8V,MAAMiM,mBAG5E/hB,KAAKwiB,0BAnILxiB,KAAK4iB,cAAgB5iB,KAAK4iB,cAAcC,KAAK7iB,MAC7CA,KAAKuiB,oBAAsBjmB,IAAMwmB,YACjC9iB,KAAKqiB,sBAAwB/lB,IAAMwmB,YACnC9iB,KAAK+iB,mBAAqB/iB,KAAK+iB,mBAAmBF,KAAK7iB,MACvDA,KAAKwiB,uBAAyBxiB,KAAKwiB,uBAAuBK,KAAK7iB,MAC/DA,KAAK6hB,aAAe7hB,KAAK6hB,aAAagB,KAAK7iB,MAC3CA,KAAK2iB,oBAAsB3iB,KAAK2iB,oBAAoBE,KAAK7iB,MACzDA,KAAKgjB,gBAAkBhjB,KAAKgjB,gBAAgBH,KAAK7iB,MACjDA,KAAKijB,SAAWznB,EAAMoF,QAAQC,SAAWrF,EAAMoF,QAAQC,QAAQqiB,QAAgD,WAAtC1nB,EAAMoF,QAAQC,QAAQqiB,OAAOC,KAAoB,KAAO,KACjInjB,KAAK8V,MAAQ,CACTiM,mBAAmB,EACnBqB,SAAUpjB,KAAKojB,UAID,eAClB,MAA0B,OAAlBpjB,KAAKijB,UAAuC,OAAlBjjB,KAAKijB,SAGpCI,oBACsB,IAAD,MAApB/Z,IAASC,YACD,QAAR,EAAAoX,gBAAA,SAAUM,iBAAiB,UAAYjhB,KAAK6hB,cAA2C,GAC/E,QAAR,EAAAlB,gBAAA,mBAAU2C,YAAV,SAAgBrC,iBAAiB,YAAajhB,KAAK2iB,qBACnD3iB,KAAKujB,4BAA8BhN,QAAUiN,4BAAkBjN,OAAQ,SAAUvW,KAAKgjB,iBACtFhjB,KAAKgjB,mBAINS,uBACsB,IAAD,MAApBna,IAASC,YACD,QAAR,EAAAoX,gBAAA,SAAU+C,oBAAoB,UAAY1jB,KAAK6hB,cAA2C,GAClF,QAAR,EAAAlB,gBAAA,mBAAU2C,YAAV,SAAgBI,oBAAoB,YAAa1jB,KAAK2iB,qBAAqB,GAC3EpM,QAAUA,OAAOmN,oBAAoB,SAAU1jB,KAAKujB,6BAA8B,IAInF9iB,SAAM,QACT,MAAM2a,EAAS,OACRpb,KAAKxE,OADG,IAEX6I,WAAY,CACRtB,YAAa/C,KAAKxE,MAClBkB,UAAWsG,IAAW,iBAAkBhD,KAAKxE,MAAM0F,OAAOxE,UAAWsD,KAAK8V,MAAMsN,SAAW,cAAgB,gBAC3G7lB,IAAK,OAETkH,eAAgB,CACZlH,IAAK,SACLb,UAAW,yBACX,uBAAcsD,KAAKxE,MAAM0F,OAAOtF,eAAhC,aAAc,EAA2B0B,KACzC,gBAAiB0C,KAAK8V,MAAMiM,kBAC5BxhB,QAASP,KAAKxE,MACdwZ,IAAKhV,KAAKqiB,uBAEd3d,mBAAoB,CAChBhI,UAAW,uBACXa,IAAK,QAETuG,mBAAoB,CAChBpH,UAAW,uBACXgC,KAAM,OACNnB,IAAK,KACLyX,IAAKhV,KAAKuiB,qBAEdxe,uBAAwB,CACpBrH,UAAW,6BACXgC,KAAM,eACNnB,IAAK,MAET+G,0BAA2B,CACvB/G,IAAKomB,SACLjnB,UAAW,yBACXknB,iBAAgB,UAAE5jB,KAAKxE,MAAM0F,OAAOtF,eAApB,aAAE,EAA2B0B,KAC7CumB,UAAW,8BACXC,WAAY,+BACZC,eAAgB,OAEpB3f,aAAcpE,KAAK8V,MAAMsN,SACzBpf,4BAA6BhE,KAAKgkB,yBAClCzf,kBAAmBvE,KAAK+iB,mBACxB5e,sBAAuBnE,KAAKwiB,uBAC5B7d,iBAAkB3E,KAAK8V,MAAMiM,oBAEjC,OAAO/hB,KAAKxE,MAAMiI,WAAW2X,GAGzB2H,qBACJ,MAAMkB,EAAyBjkB,KAAK8V,MAAMiM,kBAC1C/hB,KAAKuX,SAAS,CACVwK,mBAAoBkC,IAIpBzB,yBACJxiB,KAAKuX,SAAS,CACVwK,mBAAmB,IA0CnBa,cAAcsB,GAElB,GADAA,EAAEC,iBACED,EAAEE,cAAc5Q,MAAQ0Q,EAAEE,cAAc5Q,KAAK7T,OAAS,GAAK4W,OAAQ,CACnE,GAAIvW,KAAKxE,MAAMoF,QAAQC,QAAQwjB,QAAQC,iBAAkB,CACrD,MAAMC,EAAe,CAAEC,OAAQxkB,KAAK4hB,4BACpC5hB,KAAKxE,MAAMoF,QAAQC,QAAQwjB,QAAQzN,IAAI5W,KAAK2hB,YAAauC,EAAEE,cAAc5Q,KAAM+Q,GAEnFhO,OAAOzH,SAASqI,OAAO+M,EAAEE,cAAc5Q,OAIvCwQ,yBACJ,MAAMS,EAAuC,CACzCC,UAAW,CACPC,GAAI,CAAEC,EAAG,gBAAiBC,EAAG,EAAGC,EAAG,GACnCC,GAAI,CAAEH,EAAG,gBAAiBC,EAAG,EAAGC,EAAG,GACnCE,GAAI,CAAEJ,EAAG,gBAAiBC,EAAG,EAAGC,EAAG,GACnCG,GAAI,CAAEL,EAAG,gBAAiBC,EAAG,EAAGC,EAAG,GACnCI,GAAI,CAAEN,EAAG,gBAAiBC,EAAG,EAAGC,EAAG,IAEvCK,UAAU,GAERC,EAAcplB,KAAKxE,MAAM0F,OAAOkkB,aAAeplB,KAAKxE,MAAM0F,OAAOkkB,YACvE,OAAOA,GAAeA,EAAYvoB,IAAI,CAACC,EAAMoB,KAAS,QAClD,MAAMsD,EAAQ1E,aAAH,EAAGA,EAAMuoB,UACd1jB,EAAa,CACfC,aAAc5B,KAAKxE,MAAMoF,QAAQC,QAAQe,aACzCC,cAAgBL,SAAD,UAACA,EAAOK,qBAAR,OAAC,EAAsB6iB,UAAaljB,EAAMK,cAAgB4iB,GAE7E,OACInoB,uBACIS,IAAKmB,EACLxB,UAAU,mCACV4oB,SAAU,EACV9R,KAAM1W,SAAF,UAAEA,EAAMyoB,uBAAR,aAAE,EAAuB/mB,eAAc,aAC/B1B,aAD+B,EAC/BA,EAAM0oB,SAClBjlB,QAASP,KAAK4iB,cACdlkB,KAAK,YAELpC,0BAAMI,UAAU,oCACXI,aADL,EACKA,EAAM0oB,UAEXlpB,kBAACmpB,IAAK,CACFroB,eAAgB4C,KAAKxE,MAAMoF,QAAQC,QACnCnE,UAAU,kCACVK,IAAKmB,EACLwnB,KAAKlkB,aAAA,EAAAA,EAAOkkB,MAAO,GACnB9jB,aAAcD,EAAWC,aACzBC,cAAeF,EAAWE,cAC1B8jB,QAASnkB,aAAF,EAAEA,EAAOmkB,QAChBC,oBAAoB,OACpBnjB,uBAAqB,OAQjCugB,kBACJhjB,KAAKijB,SAAWjjB,KAAK6lB,eACrB7lB,KAAKuX,SAAS,CAAE6L,SAAUpjB,KAAKojB,WAG3ByC,eACJ,MAAM,QAAEjlB,GAAYZ,KAAKxE,MACzB,GAAIoF,EAAQC,SAAWD,EAAQC,QAAQqiB,QAA0C,WAAhCtiB,EAAQC,QAAQqiB,OAAOC,KACpE,MAAO,KAGX,QAAsB3S,WAAX+F,QAAwBA,OAAOuP,WAAY,CAClD,MAAMlkB,EAAehB,EAAQC,QAAQe,aACrC,GAAIA,EACA,OAAIA,EAAa+iB,IAAMpO,OAAOuP,YAAclkB,EAAa+iB,GAAGE,EACjD,KACAjjB,EAAamjB,IAAMxO,OAAOuP,YAAclkB,EAAamjB,GAAGF,EACxD,KACAjjB,EAAaojB,IAAMzO,OAAOuP,YAAclkB,EAAaojB,GAAGH,EACxD,KACAjjB,EAAaqjB,IAAM1O,OAAOuP,YAAclkB,EAAaqjB,GAAGJ,EACxD,KAEJ,KAIf,MAAO,MAjOXkB,aADCC,KACD,+BAmBUD,aAATE,KAAS,6BAkNC5hB,a,+HCxQf,MAmBa6hB,EAAmD1qB,IAC5D,MAAM2qB,EAAY,CAACzoB,EAA8FQ,KAAiB,QAC9H,MAAMiD,EAASzD,EAAMyD,OACftE,EAAMsE,SAAH,UAAGA,EAAQilB,QAAQ,4CAAnB,aAAG,EAAsDC,uBAAuB,wBAAwB,GACjHxpB,WAAKypB,MAAMpoB,GAAOqoB,cAAc,IAAIC,WAAW,YAAa,CAAE,SAAW,KACzE,MAAMC,EAAStlB,SAAH,UAAGA,EAAQilB,QAAQ,4BAAnB,aAAG,EAAsCC,uBAAuB,2CAA2C,GACjHK,EAAeD,GAAUA,EAAOE,WACnCD,IACCA,EAAa1gB,MAAM4gB,QAAU,UAoB/BC,EAAWrrB,EAAM6O,KAAKwc,SAASxU,OAC/ByU,EAA0B,GAIhC,OAHAD,EAAShqB,IAAKkqB,IACVD,EAAe1nB,KAAK2nB,EAAQC,UAG5B1qB,gBAACC,SAAMC,iBAAKhB,EAAMyrB,sBACd3qB,gBAACG,OAAID,iBAAKhB,EAAM0rB,6BACZ5qB,uBAAKI,UAAW,oCACXlB,EAAM2rB,YACL3rB,EAAM0F,OAAOkmB,cAAgB5rB,EAAM0F,OAAOkmB,aAAavqB,IAAI,CAACwqB,EAAanpB,KACvE,GAAGmpB,EAAYC,QAAUR,EAAeS,SAASF,EAAYC,SAAWD,EAAYG,WAAaH,EAAYI,WAAajsB,EAAM0F,OAAOwmB,aAAelsB,EAAM0F,OAAOwmB,YAAYzhB,OAASzK,EAAM0F,OAAOwmB,YAAYC,OAAO,CACpN,MAAMC,EAAgC,IAAxBP,EAAYG,UAAkBhsB,EAAM0F,OAAOwmB,YAAYzhB,MAC/D4hB,EAA+B,IAAxBR,EAAYI,UAAkBjsB,EAAM0F,OAAOwmB,YAAYC,OACpE,OACIrrB,0BAAQI,UAAW,6BAA8BsJ,MAAO,CAAEE,KAAM,GAAF,OAAK0hB,EAAL,KAAeE,IAAK,GAAF,OAAKD,EAAL,MACxEE,aAAerqB,GAAUyoB,EAAUzoB,EAAMQ,GACzCqC,QAAU7C,GAxB5B,EAACA,EAA8FQ,KAAiB,MAC9H,MAAMiD,EAASzD,EAAMyD,OACftE,EAAMsE,SAAH,UAAGA,EAAQilB,QAAQ,4CAAnB,aAAG,EAAsDC,uBAAuB,wBAAwB,GACjHxpB,WAAKypB,MAAMpoB,GAAOqoB,cAAc,IAAIC,WAAW,QAAS,CAAE,SAAW,MAqBjBwB,CAAUtqB,EAAOQ,GACrC+pB,WAAavqB,GAAUyoB,EAAUzoB,EAAMQ,GACvCgG,aAAexG,GApCjC,EAACA,EAAwDQ,KAAiB,QACxF,MAAMiD,EAASzD,EAAMyD,OACftE,EAAMsE,SAAH,UAAGA,EAAQilB,QAAQ,4CAAnB,aAAG,EAAsDC,uBAAuB,wBAAwB,GACjHxpB,WAAKypB,MAAMpoB,GAAOqoB,cAAc,IAAIC,WAAW,aAAc,CAAE,SAAW,KAC1E,MAAMC,EAAStlB,SAAH,UAAGA,EAAQilB,QAAQ,4BAAnB,aAAG,EAAsCC,uBAAuB,2CAA2C,GACjHK,EAAeD,GAAUA,EAAOE,WACnCD,IACCA,EAAa1gB,MAAM4gB,QAAU,SA6BwBsB,CAAUxqB,EAAMQ,IAC/C1C,EAAMyJ,UAAUkjB,uBAOlC7rB,gBAACG,OAAID,iBAAKhB,EAAM0H,iBAAgB,CAAExG,UAAWlB,EAAM0H,iBAAmB1H,EAAM0H,iBAAiBxG,UAAY,KACpGlB,EAAMoH,MACNpH,EAAM8B,KACN9B,EAAM0D,oBA7EMA,EA6EuC1D,EAAM0D,kBA3EtE5C,gBAACG,OAAID,iBAAK0C,EAAkBG,uBACvBH,EAAkBtD,QACnBU,gBAACG,OAAID,iBAAK0C,EAAkBkpB,4BACvBlpB,EAAkB5B,KACnBhB,gBAACG,OAAID,iBAAK0C,EAAkBF,4BACvBE,EAAkBlB,UAuEnB1B,gBAACG,OAAID,iBAAKhB,EAAMimB,oBAAmB,CAAE/kB,UAAWlB,EAAMimB,oBAAsBjmB,EAAMimB,oBAAoB/kB,UAAY,KAC7GlB,EAAMwC,SAKnB1B,gBAACG,OAAI,CACDC,UAAU,0CACVsJ,MAAO,CAAE8hB,IAAK,GAAF,OAAKtsB,EAAM6sB,uBAAX,MAAuCniB,KAAM,GAAF,OAAK1K,EAAM8sB,wBAAX,QACtD9sB,EAAM+sB,QACN/sB,EAAMgtB,cAxFUtpB,OA8FlBgnB,a,iFC9Ff,MAAMuC,EAA2BvpB,IAA8D,MAC3F,OACI5C,gBAACG,OAAID,iBAAK0C,EAAkBG,uBAA5B,UACKH,EAAkBI,8BADvB,aACK,EAA0CzC,IAAKC,GAExCR,gCACKQ,EAAKlB,QACNU,gBAACG,OAAID,iBAAKM,EAAKiC,gCACVjC,EAAKQ,KACNhB,gBAACG,OAAID,iBAAKM,EAAKkC,4BACVlC,EAAKkB,YA+DvB0qB,UArD6CltB,IACxD,MAAM,sBACFsH,EADE,eAEFG,EAFE,iBAGFC,EAHE,MAIFN,EAJE,KAKFtF,EALE,MAMFU,EANE,MAOFwD,EAPE,sBAQF2B,EARE,UASFC,EATE,eAUF3B,EAVE,kBAWFvC,GACA1D,EAEJ,OAAI4H,EAEI9G,gBAACC,SAAMC,iBAAKsG,GACRxG,gBAACG,OAAID,iBACG2G,EAAqB,CACzBqQ,KAAMpQ,EACN1G,UAAWyG,EAAwBA,EAAsBzG,UAAY,GAAE,aAC3D+E,IAEZnF,gBAACG,OAAID,iBAAKyG,GACLzB,IAGTlF,gBAACG,OAAID,iBAAK0G,GACLN,EACAtF,EACAU,EACAkB,GAAqBupB,EAAwBvpB,KAM1D5C,gBAACC,SAAMC,iBAAKsG,GACRxG,gBAACG,OAAID,iBAAKyG,GACLzB,GAELlF,gBAACG,OAAID,iBAAK0G,GACLN,EACAtF,EACAU,EACAkB,GAAqBupB,EAAwBvpB","file":"static/js/9.e70a1445042268bc72c8.chunk.js","sourcesContent":["/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IOrderLookupViewProps } from './order-lookup';\n\n/**\n * View component.\n * @param props - The view properties.\n * @returns - Returns JSX Element.\n */\nexport const OrderLookupViewComponent: React.FC = props => {\n const { orderLookup, orderLookupContainer, orderLookupAdditionalFieldContainer, heading, paragraph, orderLookupForm, renderOrderLookupInputField,\n orderNumberInput, errorMessage, submitButton, additionalProperties, registeredUserMessage, fieldErrorMessage } = props;\n return (\n \n \n {heading}\n {paragraph}\n \n {orderNumberInput}\n {renderOrderLookupInputField}\n {ArrayExtensions.hasElements(additionalProperties) && (\n \n {additionalProperties.map((item: JSX.Element) => (\n \n {item}\n \n ))}\n \n )}\n { fieldErrorMessage }\n \n {props.submitButtonLabelText}\n \n {errorMessage}\n \n {registeredUserMessage}\n \n \n );\n};\n\nexport default OrderLookupViewComponent;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt 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 }, requestContext\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 }, requestContext\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 = (props: IContentBlockAdditionalContentProps): 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","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt 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 ? : 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. All rights reserved.\n * See License.txt 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(this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry);\n\n public render(): JSX.Element | null {\n const {\n heading,\n paragraph,\n image,\n links,\n className,\n imageAriaLabel\n } = 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 (\n !contentBlockTitle &&\n !contentBlockText &&\n !contentBlockLinks\n ) {\n this.props.context.telemetry.error(\n 'Content block content is empty, module wont render.'\n );\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 }),\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 = (this.props.config.additionalContent &&\n ArrayExtensions.hasElements(this.props.config.additionalContent) && this.props.config.additionalContent[Number(index)]) || {};\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 }\n return null;\n\n }\n}\n\nexport default ContentBlock;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt 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 (\n <>\n {_renderSitePicker(props)}\n \n );\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,\n SitePickerMenuListItem,\n SitePickerMenuListItemArray\n } = props;\n const options = SitePickerMenuListItemArray!.map((item, index) => {\n return (\n \n {item}\n \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 (\n
\n {item}\n
\n );\n })}\n
\n
\n );\n};\n\nconst _renderSitePicker = (props: ISitePickerViewProps): React.ReactNode => {\n const { isMobileView, SitePicker } = props;\n return (\n \n {isMobileView ? _renderMobileView(props) : _renderDesktopView(props)}\n \n );\n};\n","import React from \"react\";\r\nimport {ICoreContext} from \"@msdyn365-commerce/core\";\r\nimport { RichTextComponent } from '@msdyn365-commerce/core';\r\nimport { format } from '@msdyn365-commerce-modules/utilities';\r\ninterface IDeliveryProgressBar {\r\n context: ICoreContext,\r\n totalAmount?:number,\r\n freeShippingCost:number,\r\n reducedShippingCost:number,\r\n resources:{\r\n deliveryProgressBarReducedText: string;\r\n deliveryProgressBarReducedTextDone: string;\r\n deliveryProgressBarAlmostFreeText: string;\r\n deliveryProgressBarFreeText: string;\r\n }\r\n}\r\nconst DeliveryProgressBar = ({ context, totalAmount, reducedShippingCost, freeShippingCost, resources }:IDeliveryProgressBar) => {\r\n //format(accountAddressTileDescription, addressCount);\r\n const reducedTextValue = totalAmount && reducedShippingCost > totalAmount && context.cultureFormatter.formatCurrency(reducedShippingCost - totalAmount);\r\n const reducedText = reducedTextValue && format(resources.deliveryProgressBarReducedText, reducedTextValue);\r\n\r\n const reducedTextDone = totalAmount && (freeShippingCost > totalAmount) && (reducedShippingCost < totalAmount) && resources.deliveryProgressBarReducedTextDone;\r\n\r\n const almostFreeTextValue = totalAmount && freeShippingCost > totalAmount && context.cultureFormatter.formatCurrency(freeShippingCost - totalAmount);\r\n const almostFreeText = almostFreeTextValue && format(resources.deliveryProgressBarAlmostFreeText, almostFreeTextValue);\r\n\r\n const freeText = totalAmount && freeShippingCost <= totalAmount && resources.deliveryProgressBarFreeText;\r\n\r\n const percentToFree = totalAmount && totalAmount*100/(freeShippingCost*1.15);\r\n if(totalAmount && reducedShippingCost && freeShippingCost) {\r\n return (\r\n <>\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n {reducedText && (\r\n \r\n )}\r\n {reducedTextDone && (\r\n \r\n )}\r\n {almostFreeText && (\r\n \r\n )}\r\n {freeText && (\r\n \r\n )}\r\n
\r\n
\r\n \r\n );\r\n }\r\n return null;\r\n};\r\n\r\nexport default DeliveryProgressBar;","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { ICheckoutDeliveryOption, ICheckoutDeliveryOptionEdit, ICheckoutDeliveryOptionsError, ICheckoutDeliveryOptionsList, ICheckoutDeliveryOptionsViewProps } from '@msdyn365-commerce-modules/checkout/src/modules/checkout-delivery-options/./checkout-delivery-options';\r\n\r\nconst DeliveryOptionList: React.FC = ({\r\n DeliveryOptionsList,\r\n list\r\n}) => {\r\n if (!list || list.length === 0) {\r\n return null;\r\n }\r\n const isMilitaryAddress = localStorage.getItem('is_military_address') === 'true' ? true : false;\r\n return (\r\n \r\n {list.map((deliveryOption: ICheckoutDeliveryOptionEdit) => {\r\n if(isMilitaryAddress && deliveryOption.code === 'SRTP'){\r\n return (\r\n {deliveryOption.radioButton}\r\n {deliveryOption.description}\r\n {deliveryOption.price}\r\n );\r\n } else if((!isMilitaryAddress && deliveryOption.code !== 'SRTP')) {\r\n return (\r\n {deliveryOption.radioButton}\r\n {deliveryOption.description}\r\n {deliveryOption.price}\r\n );\r\n }\r\n return;\r\n })}\r\n \r\n );\r\n};\r\n\r\nconst DeliveryOptionSelected: React.FC = ({\r\n DeliveryOption,\r\n description,\r\n price\r\n}) => {\r\n\r\n return (\r\n \r\n {description}\r\n {price}\r\n \r\n );\r\n};\r\n\r\nconst ErrorMessage: React.FC = ({\r\n Error,\r\n title,\r\n message\r\n}) => {\r\n\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 { 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 } = props;\r\n\r\n return (\r\n\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","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport MsDyn365 from '@msdyn365-commerce/core';\nimport {\n ICartlinesViewProps,\n ICartResources,\n ICartViewProps,\n IOrderSummaryErrors\n} 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 { Button, getPayloadObject, getTelemetryAttributes, INodeProps, ITelemetryContent, Node, TelemetryConstant } 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.multiplePickUpEnabled ? _renderCartLinesGroup(props, props.resources) : \n {_renderCartlines(props.cartlines, props.resources, props.storeSelector, props.backToShoppingButton, props.waitingComponent, props.cartLoadingStatus,\n props.cartDataResult, props.telemetryContent, props.multiplePickUpEnabled, props.context.actionContext.requestContext.channel?.EmailDeliveryModeCode)}\n }\n {props.orderSummaryHeading &&\n \n {props.orderSummaryHeading}\n {props.cart?.hasInvoiceLine ? _renderInvoiceSummarylines(props.invoiceSummaryLineitems, props.OrderSummaryItems, props) : _renderOrderSummarylines(props.orderSummaryLineitems, props.OrderSummaryItems, props)}\n {_renderErrorBlock(props.OrderSummaryErrors)}\n {props.checkoutAsSignInUserButton}\n {props.checkoutAsGuestButton}\n {props.expressCheckoutButton}\n {props.backToShoppingButton}\n {props.createTemplateFromCartButton}\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\n};\n\nconst _renderCartlines = (cartLines: ICartlinesViewProps[] | undefined, resources: ICartResources, storeSelector: React.ReactNode | undefined,\n backToShoppingButton: React.ReactNode, waitingComponent: React.ReactNode, cartLoadingStatus: string, cartDataResult: boolean,\n telemetryContent?: ITelemetryContent, mulitplePickUp?: boolean, emailDeliveryModeCode?: string): JSX.Element[] | JSX.Element => {\n\n const { emptyCartText } = resources;\n\n if (cartLoadingStatus) {\n return (<>\n {cartLoadingStatus}\n );\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 {\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 }\n return (cartDataResult ? (\n
\n

\n {emptyCartText}\n

\n {backToShoppingButton}\n
\n ) : <>\n {waitingComponent}\n \n );\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 = (cartLine: ICartlinesViewProps, resources: ICartResources, storeSelector: React.ReactNode | undefined, telemetryContent?: ITelemetryContent, emailDeliveryModeCode?: string): 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 { shipInsteadDisplayText, shipToAddressDisplayText, pickItUpDisplayText, pickUpAtStoreWithLocationText, changeStoreDisplayText } = 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 {\n isBopisSelected &&\n
\n \n {cartLine.pickUpInStore.orgUnitName}\n \n \n {changeStoreDisplayText}\n \n
\n }\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 = (orderSummaryLines: IOrderSummaryLines | undefined, OrderSummaryItems: INodeProps, props: ICartViewProps): 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 = (invoiceSummaryLines: IInvoiceSummaryLines | undefined, OrderSummaryItems: INodeProps, props: ICartViewProps): 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 {_renderCartLinesGroupHeader(cartlines[0], props.storeSelector, resources, _countItems(cartlines), props.context.actionContext.requestContext.channel?.EmailDeliveryModeCode)}\n {_renderCartlines(cartlines, props.resources, props.storeSelector, props.backToShoppingButton, props.waitingComponent, props.cartLoadingStatus, props.cartDataResult,\n props.telemetryContent, props.multiplePickUpEnabled, props.context.actionContext.requestContext.channel?.EmailDeliveryModeCode)}\n
);\n })}\n
\n );\n }\n return (props.cartDataResult ? (\n
\n
\n

\n {props.resources.emptyCartText}\n

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

\n

\n {groupTitle}\n

\n {_renderCartLinesGroupTitle(cartLine, resources, count)}\n
\n \n );\n};\n\nconst _renderGroupBOPISBlock = (cartLine: ICartlinesViewProps, resources: ICartResources, storeSelector: React.ReactNode | undefined, telemetryContent?: ITelemetryContent, emailDeliveryModeCode?: string): 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 ? : 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\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 {cartLine.pickUpInStore?.deliveryOption}\n {', '}\n {cartLine.pickUpInStore?.orgUnitName}\n

: null}\n

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

\n
\n \n );\n};\n\nexport default CartView;\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport {Module, Node, Waiting} from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { ICheckoutViewProps, ILineItem, ILineItemDeliveryGroup, ILineItems, IOrderSummary, IPickUpAtStore } from '@msdyn365-commerce-modules/checkout/src/modules/checkout/./checkout';\r\nimport { IEmailDelivery } from '@msdyn365-commerce-modules/checkout/src/modules/checkout/./components';\r\nimport { IInvoicePaymentSummary } from '@msdyn365-commerce-modules/checkout/src/modules/checkout/./components/get-invoice-payment-summary';\r\nimport DeliveryProgressBar from \"./components/deliveryProgressBar\";\r\nimport {ICheckoutResources} from \"../definition-extensions/checkout.ext.props.autogenerated\";\r\n\r\nexport interface ICheckoutViewPropsExt extends ICheckoutViewProps {\r\n resources: ICheckoutResources;\r\n}\r\nexport const PickUpAtStoreComponent: React.FC = ({ PickUpAtStore, label, location }) => (\r\n \r\n {label}\r\n {location}\r\n \r\n);\r\n\r\nexport const EmailDeliveryComponent: React.FC = ({ EmailDelivery, label }) => (\r\n \r\n {label}\r\n \r\n);\r\n\r\nexport const LineItemComponent: React.FC = ({ LineItem, item, pickUpAtStore, emailDelivery }) => (\r\n \r\n {item}\r\n {pickUpAtStore && }\r\n {emailDelivery && }\r\n \r\n);\r\n\r\nexport const LineItemGroupComponent: React.FC = ({ LineItemDeliveryGroup, LineItemList, heading, lineItems }) => (\r\n \r\n {heading}\r\n \r\n {lineItems.map(lineItem => (\r\n \r\n ))}\r\n \r\n \r\n);\r\n\r\nexport const LineItemGroupComponentWithMultiplePickUp: React.FC = ({ LineItemDeliveryGroup, LineItemList, heading, lineItems, lineItemWraper, lineItemWraperIcon }) => (\r\n \r\n {lineItemWraperIcon}\r\n {lineItemWraper}\r\n {heading}\r\n \r\n {lineItems.map(lineItem => (\r\n \r\n ))}\r\n \r\n \r\n);\r\n\r\nexport const LineItemComponentWithMultiplePickUp: React.FC = ({ LineItem, item, pickUpAtStore, emailDelivery }) => (\r\n \r\n {item}\r\n {emailDelivery && }\r\n \r\n);\r\n\r\nexport const PickUpAtStoreComponentWithMultiplePickUp: React.FC = ({ PickUpAtStore, label, location }) => (\r\n \r\n {label}\r\n {location}\r\n \r\n);\r\n\r\nexport const LineItemsComponent: React.FC = ({ LineItems, Header, heading, editLink, itemsForPickup, itemsForShip, itemsForEmail, itemsGroupWithMulitplePickupMode }) => (\r\n \r\n \r\n {heading}\r\n {editLink}\r\n \r\n {itemsGroupWithMulitplePickupMode === undefined && itemsForPickup && }\r\n {itemsGroupWithMulitplePickupMode === undefined && itemsForEmail && }\r\n {itemsGroupWithMulitplePickupMode === undefined && itemsForShip && }\r\n {itemsGroupWithMulitplePickupMode !== undefined ? itemsGroupWithMulitplePickupMode.map((item, index) => {\r\n return ;\r\n }) : null}\r\n \r\n);\r\n\r\nconst OrderSummaryComponent: React.FC = ({ heading, lines }) => (\r\n
\r\n {heading}\r\n
\r\n {lines && (\r\n <>\r\n {lines.subtotal}\r\n {lines.shipping}\r\n {lines.otherCharge}\r\n {lines.tax}\r\n {lines.totalDiscounts}\r\n {lines.loyalty}\r\n {lines.giftCard}\r\n {lines.orderTotal}\r\n \r\n )}\r\n
\r\n
\r\n);\r\n\r\nconst PaymentSummaryComponent: React.FC = ({ heading, lines }) => (\r\n
\r\n {heading}\r\n
\r\n {lines && (\r\n <>\r\n {lines.invoices}\r\n {lines.giftCard}\r\n {lines.loyalty}\r\n {lines.orderTotal}\r\n \r\n )}\r\n
\r\n
\r\n);\r\n\r\nconst CheckoutView: React.FC = props => {\r\n const {\r\n isPaymentVerificationRedirection,\r\n shouldEnableSinglePaymentAuthorizationCheckout,\r\n canShow,\r\n checkoutProps,\r\n headerProps,\r\n hasSalesOrder,\r\n hasInvoiceLine,\r\n bodyProps,\r\n mainProps,\r\n mainControlProps,\r\n sideProps,\r\n sideControlFirstProps,\r\n sideControlSecondProps,\r\n termsAndConditionsProps,\r\n orderConfirmation,\r\n loading,\r\n alert,\r\n title,\r\n guidedForm,\r\n orderSummary,\r\n invoicePaymentSummary,\r\n lineItems,\r\n placeOrderButton,\r\n termsAndConditions,\r\n keepShoppingButton\r\n } = props;\r\n\r\n const subtotalAmount = props?.data?.checkout?.result?.checkoutCart?.cart?.SubtotalAmount;\r\n const freeShippingCost = props.app.config.freeShippingCost ? props.app.config.freeShippingCost : 0;\r\n const reducedShippingCost = props.app.config.reducedShippingCost ? props.app.config.reducedShippingCost : 0;\r\n const deliveryProgressBarResources = {\r\n deliveryProgressBarReducedText: props.resources.deliveryProgressBarReducedText,\r\n deliveryProgressBarReducedTextDone: props.resources.deliveryProgressBarReducedTextDone,\r\n deliveryProgressBarAlmostFreeText: props.resources.deliveryProgressBarAlmostFreeText,\r\n deliveryProgressBarFreeText: props.resources.deliveryProgressBarFreeText\r\n };\r\n return (\r\n \r\n {!hasSalesOrder && loading}\r\n {!hasSalesOrder && isPaymentVerificationRedirection && shouldEnableSinglePaymentAuthorizationCheckout && !alert && !loading &&\r\n }\r\n {!hasSalesOrder &&\r\n \r\n {alert}\r\n {canShow && (\r\n <>\r\n \r\n {!hasSalesOrder && \r\n {title}\r\n }\r\n {guidedForm}\r\n \r\n {termsAndConditions}\r\n \r\n \r\n {placeOrderButton}\r\n {keepShoppingButton}\r\n \r\n \r\n \r\n {!hasInvoiceLine ? orderSummary && : invoicePaymentSummary && }\r\n \r\n \r\n \r\n {termsAndConditions}\r\n \r\n {placeOrderButton}\r\n {keepShoppingButton}\r\n \r\n {lineItems && }\r\n \r\n \r\n {termsAndConditions}\r\n \r\n {placeOrderButton}\r\n {keepShoppingButton}\r\n \r\n \r\n \r\n )}\r\n }\r\n {hasSalesOrder && orderConfirmation}\r\n \r\n );\r\n};\r\n\r\nexport default CheckoutView;\r\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { ExtensibleEnumeration } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, EmailRegex } from '@msdyn365-commerce-modules/retail-actions';\nimport * as React from 'react';\n\nimport { IOrderLookupResources, IOrderLookupSearchAdditionalFieldsData } from '../order-lookup.props.autogenerated';\n\n/**\n * Render label.\n * @param className - Classname for label.\n * @param value - Text for label.\n * @returns -The JSX Element.\n */\nexport const labelGroup = (className: string, value: string): JSX.Element => {\n return (
\n {value}\n
);\n};\n\n/**\n * Error label.\n * @param responseErrorMessage - Error message for label.\n * @param errorMessageClassName - Error message for class name.\n * @returns - Error ReactNode.\n */\nexport const renderErrorLabel = (responseErrorMessage: string, errorMessageClassName: string): React.ReactNode => {\n return responseErrorMessage && (
\n {responseErrorMessage}\n
);\n};\n\n/**\n * Registered user message.\n * @param resources - Resource values.\n * @param signInUrl - Signin url.\n * @param signInLinkClassName - Signin link classname.\n * @param registeredUserClassName - Registered user message classname.\n * @returns - ReactNode.\n */\nexport const renderRegisteredUserMessage = (\n resources: IOrderLookupResources,\n signInUrl: string,\n signInLinkClassName: string,\n registeredUserClassName: string): React.ReactNode => {\n const { orderLookupRegisteredUserText, orderLookupViewAccountText, orderLookupSignInLinkText } = resources;\n const message: string = orderLookupRegisteredUserText;\n const infoMessage: string = orderLookupViewAccountText;\n const signInText: string = orderLookupSignInLinkText;\n return (
\n {message}\n \n {signInText}\n \n {infoMessage}\n
);\n};\n\n/**\n * EmailValid submit.\n * @param email - Onsubmit of form and button click.\n * @returns - Boolean.\n */\nexport const isEmailValid = (email: string): boolean => {\n return EmailRegex.defaultRegex.test(email);\n};\n\n/**\n * Additional field validation for on submit.\n * @param name - Onsubmit of form and button click.\n * @returns - Boolean.\n */\nexport const isAdditionalFieldValid = (name: string): boolean => {\n const regEx = new RegExp('^(?!\\\\s)[A-Za-z0-9\\\\s]+$', 'u');\n return regEx.test(name);\n};\n\n/**\n * Validate order lookup field against extensible enum.\n * @param orderStatusLookUpParameter - Order lookup parameter.\n * @param orderLookupExtensibleEnum - Order lookup extensible enum.\n * @returns - Boolean.\n */\nexport const validateOrderLookupField = (orderStatusLookUpParameter: string, orderLookupExtensibleEnum: ExtensibleEnumeration[]): boolean => {\n let isValidField: boolean = false;\n for (const item of orderLookupExtensibleEnum) {\n if (item.Name.toLocaleLowerCase() === orderStatusLookUpParameter.toLocaleLowerCase()) {\n isValidField = true;\n return isValidField;\n }\n }\n return isValidField;\n};\n\n/**\n * Validate order lookup additional fields with proxy values.\n * @param value - Value to be validated.\n * @param orderLookupExtensibleEnum - Order lookup extensible enum.\n * @returns - Boolean.\n */\nexport const validateAdditionalFieldWithProxy = (value: string, orderLookupExtensibleEnum: ExtensibleEnumeration[]): boolean => {\n return !orderLookupExtensibleEnum.some(item => item.Name.toLocaleLowerCase() === value.toLocaleLowerCase());\n};\n\n/**\n * Validate order lookup additional fields against extensible enum.\n * @param orderStatusLookUpAdditionalParameters - Order lookup parameter.\n * @param orderLookupExtensibleEnum - Order lookup extensible enum.\n * @returns - Boolean.\n */\nexport const validateOrderLookupAdditionalField = (\n orderStatusLookUpAdditionalParameters: IOrderLookupSearchAdditionalFieldsData[],\n orderLookupExtensibleEnum: ExtensibleEnumeration[]): boolean => {\n let isValidAdditionalField: boolean = false;\n if (ArrayExtensions.hasElements(orderStatusLookUpAdditionalParameters)) {\n orderStatusLookUpAdditionalParameters.map(item => {\n const fieldKey: string = item.fieldKey ?? '';\n if (!isValidAdditionalField) {\n isValidAdditionalField = validateAdditionalFieldWithProxy(fieldKey, orderLookupExtensibleEnum);\n }\n return isValidAdditionalField;\n });\n } else {\n isValidAdditionalField = false;\n }\n return isValidAdditionalField;\n};\n\n/**\n * Render validation message if field does not matches with extensible enum.\n * @param orderLookupFieldValidationErrorMessage - Order lookup validation message.\n * @returns - ReactNode.\n */\nexport const renderFieldErrors = (orderLookupFieldValidationErrorMessage: string): React.ReactNode => {\n return (
\n { orderLookupFieldValidationErrorMessage }\n
);\n};\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { labelGroup } from '../utilities/order-lookup-utility';\n\n/**\n * Additional input field props.\n */\nexport interface IOrderLookupAdditionalFieldInfoInput {\n className: string;\n ariaLabel: string;\n inputType: string;\n value: string;\n name: string;\n additionalFieldLabel: string;\n additionalFieldLabelClassName: string;\n isValidAdditionalFieldName: boolean;\n additionalFieldValidationMessage: string;\n onChange(event: React.ChangeEvent): void;\n}\n\n/**\n * Order lookup additional field props.\n */\nexport interface IOrderLookupAdditionalFieldInfo {\n additionalFieldLabel: React.ReactNode;\n additionalFieldInput: React.ReactNode;\n additionalFieldError: React.ReactNode;\n}\n\n/**\n * RenderOrderLookupAdditionalFieldInput component.\n */\n@observer\nexport default class RenderOrderLookupAdditionalFieldInput extends React.Component {\n public constructor(props: IOrderLookupAdditionalFieldInfoInput) {\n super(props);\n }\n\n public shouldComponentUpdate(nextProps: IOrderLookupAdditionalFieldInfoInput): boolean {\n if (this.props === nextProps) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | undefined {\n return (\n
\n {this._getOrderLookupAdditionalFields().additionalFieldLabel}\n {this._getOrderLookupAdditionalFields().additionalFieldError}\n {this._getOrderLookupAdditionalFields().additionalFieldInput}\n
\n );\n }\n\n /**\n * Function to create the order lookup additional fields.\n * @returns IOrderLookupFieldInfo.\n */\n private _getOrderLookupAdditionalFields(): IOrderLookupAdditionalFieldInfo {\n return {\n additionalFieldLabel: (\n labelGroup(this.props.additionalFieldLabelClassName, this.props.additionalFieldLabel)\n ),\n additionalFieldInput: (\n
\n \n
\n ),\n additionalFieldError: (\n
\n {!this.props.isValidAdditionalFieldName ? this.props.additionalFieldValidationMessage : ''}\n
\n )\n };\n }\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { labelGroup } from '../utilities/order-lookup-utility';\n\n/**\n * Input field props.\n */\nexport interface IOrderLookupFieldInfoInput {\n inputReference?: React.RefObject;\n className: string;\n ariaLabel: string;\n inputType: string;\n value: string;\n name: string;\n orderLookupLabel: string;\n orderLookupLabelClassName: string;\n fieldErrorClassName: string;\n isInputTypeError: boolean;\n isValidInputField: boolean;\n renderAlert(className: string): JSX.Element;\n onChange(event: React.ChangeEvent): void;\n}\n\n/**\n * Order lookup field props.\n */\nexport interface IOrderLookupFieldInfo {\n label: React.ReactNode;\n input: React.ReactNode;\n error: React.ReactNode;\n}\n\n/**\n * RenderOrderLookupInputs component.\n */\n@observer\nexport default class RenderOrderLookupFormFields extends React.Component {\n public constructor(props: IOrderLookupFieldInfoInput) {\n super(props);\n }\n\n public shouldComponentUpdate(nextProps: IOrderLookupFieldInfoInput): boolean {\n if (this.props === nextProps) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | undefined {\n return (\n
\n {this._getOrderLookupFields().label}\n {this._getOrderLookupFields().error}\n {this._getOrderLookupFields().input}\n
\n );\n }\n\n /**\n * Function to create the order lookup fields.\n * @returns IOrderLookupFieldInfo.\n */\n private _getOrderLookupFields(): IOrderLookupFieldInfo {\n return {\n label: (\n labelGroup(this.props.orderLookupLabelClassName, this.props.orderLookupLabel)\n ),\n input: (\n
\n \n
\n ),\n error: (\n
\n {this.props.isInputTypeError ? this.props.renderAlert(this.props.name) : ''}\n {this.props.isValidInputField ? this.props.renderAlert(this.props.name) : ''}\n
\n )\n };\n }\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { IActionContext } from '@msdyn365-commerce/core-internal';\nimport { ExtensibleEnumeration, StoreOperationsDataActions } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport RenderOrderLookupAdditionalFieldInput from './components/order-lookup-additional-fields';\nimport RenderOrderLookupFormFields from './components/order-lookup-fields';\nimport {\n IOrderLookupProps,\n IOrderLookupSearchAdditionalFieldsData,\n orderStatusLookUpParametersType as orderStatusLookUpParametersTypes } from './order-lookup.props.autogenerated';\nimport {\n isAdditionalFieldValid,\n isEmailValid,\n renderErrorLabel,\n renderFieldErrors,\n renderRegisteredUserMessage,\n validateOrderLookupAdditionalField,\n validateOrderLookupField\n} from './utilities/order-lookup-utility';\n\n/**\n * OrderLookup view props.\n */\nexport interface IOrderLookupViewProps extends IOrderLookupProps<{}> {\n additionalProperties: JSX.Element[] | undefined;\n orderLookup: IModuleProps;\n orderLookupContainer: INodeProps;\n orderLookupAdditionalFieldContainer: INodeProps;\n paragraph?: React.ReactNode;\n heading?: React.ReactNode;\n submitButton?: INodeProps;\n submitButtonLabelText?: string;\n orderLookupForm?: INodeProps;\n renderOrderLookupInputField: JSX.Element | undefined;\n orderNumberInput?: JSX.Element | undefined;\n errorMessage?: React.ReactNode;\n fieldErrorMessage?: React.ReactNode;\n registeredUserMessage?: React.ReactNode;\n onChange?(event: React.ChangeEvent): void;\n submit?(): void;\n}\n\n/**\n * OrderLookupSearchValues -- supported values.\n */\nenum OrderLookupSearchValues {\n email = 'email',\n ordernumber = 'ordernumber'\n}\n\n/**\n * To render and handle state for additional order lookup fields.\n */\nexport interface IOrderLookupAdditionalFields {\n labelName: string;\n isValidFieldName: boolean;\n fieldValue: string;\n ariaLabel: string;\n additionalfieldErrorMessage: string;\n}\n\n/**\n * OrderLookup view props.\n */\nexport interface IOrderLookupFormState {\n orderNumber: string;\n email: string;\n isOrdNumberError: boolean;\n isEmailError: boolean;\n isValidEmailError: boolean;\n isReqError: boolean;\n isDisabled: boolean;\n isValidLookupField: boolean;\n isValidAdditionalLookupField: boolean;\n responseErrorMessage: string;\n additionalProperties: IOrderLookupAdditionalFields[];\n}\n\n/**\n *\n * OrderLookup component.\n * @extends {React.PureComponent>}\n */\nclass OrderLookup extends React.PureComponent, IOrderLookupFormState> {\n public orderNumberInputRef: React.RefObject;\n\n public emailInputRef: React.RefObject;\n\n public isEmailValue: boolean = false;\n\n private requiredErrorMessage: string | undefined;\n\n private emailValidationErrorMessage: string | undefined;\n\n private isOrderNumberValue: boolean = false;\n\n private orderLookupExtensibleEnum: ExtensibleEnumeration[] = [];\n\n public constructor(props: IOrderLookupProps<{}>) {\n super(props);\n this.orderNumberInputRef = React.createRef();\n this.emailInputRef = React.createRef();\n const { config } = this.props;\n const { orderLookupSearchAdditionalFields } = config;\n const additionalPropertyStates: IOrderLookupAdditionalFields[] = [];\n\n if (orderLookupSearchAdditionalFields) {\n for (const item of orderLookupSearchAdditionalFields) {\n additionalPropertyStates.push({\n labelName: item.labelName ?? '',\n isValidFieldName: true,\n fieldValue: '',\n ariaLabel: item.ariaLabel ?? '',\n additionalfieldErrorMessage: item.validationMessage ?? ''\n });\n }\n }\n\n this.state = {\n orderNumber: '',\n email: '',\n isOrdNumberError: false,\n isEmailError: false,\n isValidEmailError: false,\n isReqError: false,\n isDisabled: true,\n isValidLookupField: true,\n isValidAdditionalLookupField: false,\n responseErrorMessage: '',\n additionalProperties: additionalPropertyStates\n };\n }\n\n public render(): JSX.Element | null {\n const {\n config: {\n paragraph,\n heading\n },\n resources,\n context\n } = this.props;\n\n const {\n orderLookupDefaultHeadingText,\n orderLookupButtonLabel,\n orderLookupFormAriaLabel,\n orderLookupOrderNumberLabel,\n orderLookupOrderNumberAriaLabel,\n orderLookupSubmitAriaLabel,\n orderLookupFieldValidationErrorMessage\n } = resources;\n\n const {\n responseErrorMessage,\n isDisabled,\n orderNumber,\n isOrdNumberError\n } = this.state;\n\n const headingText = StringExtensions.isNullOrEmpty(heading?.text) ? orderLookupDefaultHeadingText : heading?.text;\n const headingTag = heading?.tag ?? 'h1';\n\n const moduleClassName = 'ms-order-lookup';\n const orderLookupContainerClassName = `${moduleClassName}__details`;\n const orderLookupHeadingClassName = `${orderLookupContainerClassName}__heading`;\n const orderLookupFormClassName = `${orderLookupContainerClassName}__form`;\n const orderLookupAdditionalFiledContainerClassName = `${orderLookupFormClassName}__additional-fields-container`;\n const orderLookupFormFieldsClassName = `${orderLookupFormClassName}__fields`;\n const orderNumberLabelClassName = `${orderLookupFormFieldsClassName}__order-number-label`;\n const orderNumberInputErrorClassName = `${orderLookupFormFieldsClassName}__order-number-input-error`;\n const submitButtonClassName = `${orderLookupFormClassName}__submit`;\n const labelErrorMessageClassName = `${moduleClassName}__error-message`;\n const registeredUserClassName = `${moduleClassName}__registered-user`;\n const signinLinkClassName = `${registeredUserClassName}__sign-in-link msc-btn`;\n\n const orderLookupHeading = (\n \n );\n\n const viewProps: IOrderLookupViewProps = {\n ...this.props,\n orderLookup: {\n moduleProps: this.props,\n className: moduleClassName\n },\n\n orderLookupContainer: {\n className: orderLookupContainerClassName\n },\n orderLookupAdditionalFieldContainer: {\n className: orderLookupAdditionalFiledContainerClassName\n },\n paragraph: paragraph && this._createParagraph(paragraph),\n heading: orderLookupHeading,\n\n renderOrderLookupInputField: this._renderOrderLookupInput(),\n orderLookupForm: {\n className: orderLookupFormClassName,\n tag: 'form',\n 'aria-label': orderLookupFormAriaLabel,\n name: 'orderLookupForm',\n role: 'form',\n autoComplete: 'off',\n onSubmit: this.handleSubmit\n },\n orderNumberInput: (\n \n ),\n\n submitButton: {\n className: submitButtonClassName,\n tag: Button,\n 'aria-label': orderLookupSubmitAriaLabel,\n type: 'submit',\n role: 'button',\n title: orderLookupButtonLabel,\n onClick: this.handleSubmit,\n disabled: isDisabled\n },\n\n submitButtonLabelText: orderLookupButtonLabel,\n errorMessage: renderErrorLabel(responseErrorMessage, labelErrorMessageClassName),\n fieldErrorMessage: (!this.state.isValidLookupField || this.state.isValidAdditionalLookupField) &&\n renderFieldErrors(orderLookupFieldValidationErrorMessage),\n registeredUserMessage: renderRegisteredUserMessage(resources, context.request.user.signInUrl ?? '', signinLinkClassName, registeredUserClassName),\n onChange: this.onChange,\n submit: this.handleSubmit,\n additionalProperties: this._renderAdditionalFields()\n };\n return this.props.renderView(viewProps);\n }\n\n public async componentDidMount(): Promise {\n const { config, context } = this.props;\n const { actionContext } = context;\n const { orderStatusLookUpParametersType, orderLookupSearchAdditionalFields } = config;\n let isOrderLookupAdditionalFieldValid: boolean = false;\n let isOrderLookupFieldValid: boolean = false;\n\n const getExtensibleEnumerations = await StoreOperationsDataActions.getExtensibleEnumerationsAsync(\n { callerContext: actionContext });\n this.orderLookupExtensibleEnum = getExtensibleEnumerations.find(\n item => item.TypeName === 'OrderLookupAdditionalCriteriaType')?.ExtensibleEnumerations ?? [];\n\n const orderLookupParameter: string = orderStatusLookUpParametersType ?? '';\n const orderLookupAdditionalParameter: IOrderLookupSearchAdditionalFieldsData[] = orderLookupSearchAdditionalFields ?? [];\n\n isOrderLookupFieldValid = validateOrderLookupField(orderLookupParameter, this.orderLookupExtensibleEnum);\n isOrderLookupAdditionalFieldValid = validateOrderLookupAdditionalField(orderLookupAdditionalParameter, this.orderLookupExtensibleEnum);\n this.setLookupFieldState(isOrderLookupFieldValid, isOrderLookupAdditionalFieldValid);\n }\n\n /**\n * Handle text change.\n * @param event - The dialog that is allowed to remain open.\n */\n public handleTextChange = (event: Msdyn365.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: Msdyn365.ContentEditableEvent): void => {\n const { config } = this.props;\n config.paragraph = event.target.value;\n };\n\n /**\n * Sets isValidLookupField after validating with extensible emun.\n * @param isValidField - Sets the property.\n * @param isValidAdditionalField - Sets the additional field property.\n */\n public setLookupFieldState(isValidField: boolean, isValidAdditionalField: boolean): void {\n this.setState({ isValidLookupField: isValidField, isValidAdditionalLookupField: isValidAdditionalField });\n }\n\n /**\n * HandleSubmit submit.\n */\n public readonly handleSubmit = (): void => {\n const { config, context } = this.props;\n const { actionContext } = context;\n const { additionalProperties, orderNumber, email } = this.state;\n const orderLookupValue = email;\n const { orderStatusLookUpParametersType } = config;\n const orderLookupName = orderStatusLookUpParametersType !== undefined ? orderStatusLookUpParametersType : '';\n const isValid: boolean = this._validateOrderLookupForm();\n if (isValid) {\n const actionContextValue: IActionContext = actionContext;\n const orderDetailsPath = Msdyn365.getUrlSync('orderDetails', actionContextValue) ?? '';\n if (orderDetailsPath) {\n const baseUrl = new URL(window.location.origin);\n const redirectUrl = new URL(orderDetailsPath, baseUrl);\n const searchParameters = redirectUrl.searchParams;\n\n searchParameters.set('confirmationId', orderNumber);\n searchParameters.set('propertyName', orderLookupName);\n searchParameters.set('propertyValue', orderLookupValue);\n\n if (ArrayExtensions.hasElements(additionalProperties)) {\n additionalProperties.map((item, index) => {\n const fieldName = !StringExtensions.isNullOrWhitespace(item.ariaLabel) ? item.ariaLabel.replace(' ', '').toLocaleLowerCase() : '';\n const fieldValue = !StringExtensions.isNullOrWhitespace(item.fieldValue) ? item.fieldValue : '';\n searchParameters.set(`field${index + 1}Name`, fieldName);\n searchParameters.set(`field${index + 1}Value`, fieldValue);\n return item;\n });\n }\n\n window.location.assign(redirectUrl.toString());\n }\n }\n };\n\n /**\n * OnChange event.\n * @param event - Value of input field.\n */\n public readonly onChange = (event: React.ChangeEvent): void => {\n const { additionalProperties } = this.state;\n const { config } = this.props;\n const { orderStatusLookUpParametersType } = config;\n const name = event.target.name || '';\n const value = event.target.value || '';\n this.isOrderNumberValue = !StringExtensions.isNullOrWhitespace(this.orderNumberInputRef.current?.value);\n this.isEmailValue = !StringExtensions.isNullOrWhitespace(this.emailInputRef.current?.value);\n\n if (orderStatusLookUpParametersType?.toLocaleLowerCase() === 'none') {\n this.isEmailValue = true;\n }\n\n this.setState({ responseErrorMessage: '' });\n const additionalPropertyStates: IOrderLookupAdditionalFields[] = [];\n let isAdditionalFieldError: boolean = true as boolean;\n let isKeyExistInAdditionalFieldArray: boolean = false as boolean;\n\n for (const item of additionalProperties) {\n const fieldName: string = item.ariaLabel.replace(' ', '');\n if (fieldName.toLocaleLowerCase() === name.toLocaleLowerCase()) {\n additionalPropertyStates.push({\n labelName: item.labelName,\n isValidFieldName: true,\n fieldValue: value,\n ariaLabel: item.ariaLabel,\n additionalfieldErrorMessage: item.additionalfieldErrorMessage\n });\n } else {\n additionalPropertyStates.push({\n labelName: item.labelName,\n isValidFieldName: item.isValidFieldName,\n fieldValue: item.fieldValue,\n ariaLabel: item.ariaLabel,\n additionalfieldErrorMessage: item.additionalfieldErrorMessage\n });\n }\n if (fieldName.toLocaleLowerCase() === orderStatusLookUpParametersType?.toLocaleLowerCase()) {\n isKeyExistInAdditionalFieldArray = true;\n }\n }\n\n for (const items of additionalPropertyStates) {\n if (StringExtensions.isNullOrWhitespace(items.fieldValue)) {\n isAdditionalFieldError = false;\n }\n }\n\n this.setState({ additionalProperties: additionalPropertyStates });\n\n if (!isKeyExistInAdditionalFieldArray) {\n switch (name.toLocaleLowerCase()) {\n case OrderLookupSearchValues.ordernumber: {\n this.setState({\n orderNumber: value,\n isOrdNumberError: false,\n isReqError: false\n });\n break;\n }\n case OrderLookupSearchValues.email: {\n this.setState({\n email: value,\n isEmailError: false,\n isValidEmailError: false,\n isReqError: false\n });\n break;\n }\n default: {\n this.setState({ isReqError: false });\n }\n }\n }\n\n if (this.isOrderNumberValue &&\n this.isEmailValue &&\n isAdditionalFieldError &&\n this.state.isValidLookupField &&\n !this.state.isValidAdditionalLookupField\n ) {\n this.setState({ isDisabled: false });\n } else {\n this.setState({ isDisabled: true });\n }\n };\n\n private _createParagraph(text?: Msdyn365.RichText): React.ReactNode | null {\n const { context } = this.props;\n const { request } = context;\n if (!text) {\n return null;\n }\n return (\n \n );\n }\n\n /**\n * Render order lookup validation message.\n * @param className - Class name for error field.\n * @returns - JSX.Element.\n */\n private readonly _renderAlert = (className: string): JSX.Element => {\n const {\n resources: {\n orderLookupEmailValidationErrorMessage,\n orderLookupRequiredTextErrorMessage\n }\n } = this.props;\n\n const {\n isEmailError,\n email,\n isValidEmailError,\n isReqError\n } = this.state;\n if (isEmailError) {\n this.requiredErrorMessage = orderLookupRequiredTextErrorMessage;\n }\n\n if (!StringExtensions.isNullOrEmpty(email) && isValidEmailError) {\n this.emailValidationErrorMessage = orderLookupEmailValidationErrorMessage;\n }\n\n const isRequireError = isReqError;\n const isEmailValidError = isValidEmailError;\n const isValidEmailInput = className.toLocaleLowerCase() === OrderLookupSearchValues.email;\n return (\n <>\n {isRequireError && (\n \n {this.requiredErrorMessage}\n \n )}\n {isEmailValidError && isValidEmailInput && (\n \n {this.emailValidationErrorMessage}\n \n )}\n \n );\n };\n\n /**\n * Render order number validation message.\n * @param className - Class name for error field.\n * @returns - JSX.Element.\n */\n private readonly _renderOrderNumberAlert = (className: string): JSX.Element => {\n const {\n resources: {\n orderLookupOrderNumberValidationErrorMessage,\n orderLookupRequiredTextErrorMessage\n }\n } = this.props;\n\n const {\n isOrdNumberError,\n isReqError\n } = this.state;\n return (\n <>\n {isReqError && (\n \n {orderLookupRequiredTextErrorMessage}\n \n )}\n {isOrdNumberError && (\n \n {orderLookupOrderNumberValidationErrorMessage}\n \n )}\n \n );\n };\n\n private _renderAdditionalFields(): JSX.Element[] | undefined {\n const { additionalProperties } = this.state;\n const additionalFieldsInput: JSX.Element[] = [];\n for (const item of additionalProperties) {\n const name: string = item.ariaLabel.replace(' ', '');\n additionalFieldsInput.push(\n \n );\n }\n return additionalFieldsInput;\n }\n\n /**\n * Render Input field for order lookup.\n * @returns - IOrderLookupFieldInfo.\n */\n private readonly _renderOrderLookupInput = (): JSX.Element | undefined => {\n const { email, isEmailError, isValidEmailError } = this.state;\n const {\n config: {\n orderStatusLookUpParametersType\n },\n resources: {\n orderLookupEmailLabel,\n orderLookupEmailAriaLabel\n }\n } = this.props;\n\n switch (orderStatusLookUpParametersType) {\n case orderStatusLookUpParametersTypes.none:\n return undefined;\n case orderStatusLookUpParametersTypes.email:\n default:\n return (\n \n );\n }\n };\n\n /**\n * _validation for additional fields.\n * @returns - Returns IOrderLookupAdditionalFields[].\n */\n private readonly _additionalFieldValidation = (): IOrderLookupAdditionalFields[] => {\n const additionalPropertyStates: IOrderLookupAdditionalFields[] = [];\n for (const item of this.state.additionalProperties) {\n const isFieldValid: boolean = !StringExtensions.isNullOrWhitespace(item.fieldValue) && isAdditionalFieldValid(item.fieldValue);\n additionalPropertyStates.push({\n labelName: item.labelName,\n isValidFieldName: isFieldValid,\n fieldValue: item.fieldValue,\n ariaLabel: item.ariaLabel,\n additionalfieldErrorMessage: item.additionalfieldErrorMessage\n });\n }\n return additionalPropertyStates;\n };\n\n /**\n * _validateOrderLookupForm submit.\n * @returns - Returns boolean.\n */\n private readonly _validateOrderLookupForm = (): boolean => {\n const { config } = this.props;\n const { orderNumber, email } = this.state;\n const { orderStatusLookUpParametersType } = config;\n let additionalPropertyStates: IOrderLookupAdditionalFields[] = [];\n let isValid = false;\n let isDisable = false;\n\n if (ArrayExtensions.hasElements(this.state.additionalProperties)) {\n additionalPropertyStates = this._additionalFieldValidation();\n for (const item of additionalPropertyStates) {\n if (!item.isValidFieldName) {\n isDisable = true;\n }\n }\n\n if (isDisable) {\n this.setState({\n additionalProperties: additionalPropertyStates,\n isDisabled: true\n });\n }\n }\n\n if (StringExtensions.isNullOrWhitespace(orderNumber)) {\n this.setState({\n isOrdNumberError: true,\n isReqError: true,\n isDisabled: true\n });\n } else if (orderNumber.trim() !== orderNumber) {\n this.setState({\n isOrdNumberError: true,\n isReqError: false,\n isDisabled: true\n });\n } else if (orderStatusLookUpParametersType === orderStatusLookUpParametersTypes.email && StringExtensions.isNullOrWhitespace(email)) {\n this.setState({\n isEmailError: true,\n isReqError: true,\n isDisabled: true\n });\n } else if (orderStatusLookUpParametersType === orderStatusLookUpParametersTypes.email && !isEmailValid(email)) {\n this.setState({\n isValidEmailError: true,\n isDisabled: true\n });\n } else if (isDisable || !this.state.isValidLookupField || this.state.isValidAdditionalLookupField) {\n this.setState({\n isDisabled: true\n });\n } else {\n this.setState({\n isDisabled: false\n });\n isValid = true;\n }\n return isValid;\n };\n}\n\nexport default OrderLookup;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { IGroup, IGroupDelivery, IGroups, IHeader, IList, IOrderHistoryViewProps, IOrderInformation, ISalesOrder } from '@msdyn365-commerce-modules/order-management';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport const OrderHistoryOrderInfomation: React.FC = ({\n orderInformationProps,\n salesId,\n receiptId,\n channelName,\n createdDate,\n count,\n amount,\n channelReferenceId\n}) => (\n \n {channelName}\n {salesId}\n {receiptId}\n {createdDate}\n {count}\n {amount}\n {channelReferenceId}\n \n);\n\nexport const OrderHistoryGroupDelivery: React.FC = ({ deliveryProps, heading, count, processing, address, trackingInfo }) => (\n \n {heading}\n {count}\n {processing}\n {address}\n {trackingInfo}\n \n);\n\nexport const OrderHistoryGroup: React.FC = ({ groupProps, delivery, salesLinesProps, salesLines }) => (\n \n {salesLines && (\n \n {salesLines.map(salesLine => (\n \n {salesLine.salesLine}\n \n ))}\n \n )}\n \n);\n\nexport const OrderHistoryGroups: React.FC = ({ groupsProps, groups }) => (\n \n {groups.map((group, index) => (\n \n ))}\n \n);\n\nexport const OrderHistoryHeader: React.FC = ({ headerProps, heading, orderCountLabel, extraActions }) => (\n \n {heading}\n {orderCountLabel}\n {extraActions}\n \n);\n\nexport const OrderHistorySalesOder: React.FC = ({ salesOrderProps, orderInfomation, groups, orderDetailsLink, expandProductsButton }) => (\n \n {orderInfomation && }\n {groups && }\n {expandProductsButton}\n {orderDetailsLink}\n \n);\n\nexport const OrderHistoryList: React.FC = ({ listProps, salesOrders }) => (\n \n {salesOrders && salesOrders.map((salesOrder, index) => )}\n \n);\n\nconst OrderHistoryView: React.FC = ({\n orderHistoryProps,\n header,\n alert,\n loading,\n emptyMessage,\n backToShoppingLink,\n list,\n table,\n moreButton\n}) => (\n \n {header && }\n {loading}\n {alert && (\n <>\n {alert}\n {backToShoppingLink}\n \n )}\n {emptyMessage && (\n \n {emptyMessage}\n {backToShoppingLink}\n \n )}\n {list && }\n {table}\n {moreButton && moreButton}\n \n);\n\nexport default OrderHistoryView;\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { IInvoiceSummaryLines } from '@msdyn365-commerce-modules/invoice-payment-summary';\r\nimport { IOrderSummaryLines } from '@msdyn365-commerce-modules/order-summary-utilities';\r\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { INodeProps, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { ICartViewProps, IOrderSummaryErrors } from '@msdyn365-commerce-modules/cart/src/modules/cart/./cart';\r\nimport { ICartlinesViewProps } from '@msdyn365-commerce-modules/cart/src/modules/cart/./components/cart-line-items';\r\nimport { ICartLineItemViewProps } from '@msdyn365-commerce-modules/cart/src/modules/cart/./components/cart-line-items-promotion';\r\nimport DeliveryProgressBar from \"./components/deliveryProgressBar\";\r\nimport {ICartResources} from \"../definition-extensions/cart.ext.props.autogenerated\";\r\n\r\nexport interface ICartViewPropsExt extends ICartViewProps {\r\n resources: ICartResources;\r\n}\r\nconst _renderCartlines = (cartLines: ICartlinesViewProps[] | undefined, cartEmptyText: string, CartlinesWrapper: INodeProps, storeSelector: React.ReactNode | undefined,\r\n backToShoppingButton: React.ReactNode, waitingComponent: React.ReactNode, cartLoadingStatus: string, cartDataResult: boolean): JSX.Element[] | JSX.Element => {\r\n\r\n if (cartLoadingStatus) {\r\n return (<>\r\n {cartLoadingStatus}\r\n );\r\n }\r\n if (cartLines) {\r\n return cartLines.map((cartLine) => {\r\n return (\r\n
\r\n {cartLine.cartline}\r\n {\r\n storeSelector && cartLine.pickUpInStore ? \r\n {cartLine.pickUpInStore.defaultComponent}\r\n : null\r\n }\r\n {\r\n cartLine.addToOrderTemplate ? (\r\n \r\n {cartLine.remove}\r\n {cartLine.addToWishlist}\r\n {cartLine.addToOrderTemplate}\r\n \r\n ) : (\r\n <>\r\n {cartLine.remove}\r\n {cartLine.addToWishlist}\r\n \r\n )\r\n }\r\n
\r\n );\r\n });\r\n }\r\n return (cartDataResult ? (\r\n
\r\n

\r\n {cartEmptyText}\r\n

\r\n {backToShoppingButton}\r\n
\r\n ) : <>\r\n {waitingComponent}\r\n \r\n );\r\n\r\n};\r\n\r\n/**\r\n * Method will render error block.\r\n * @param errorData -The order summary errors interface.\r\n * @returns Jsx element.\r\n */\r\nconst _renderErrorBlock = (errorData: IOrderSummaryErrors | undefined): JSX.Element | null => {\r\n if (!errorData || !ArrayExtensions.hasElements(errorData.errors)) {\r\n return null;\r\n }\r\n return (\r\n \r\n {errorData.header}\r\n {errorData.errors}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Method will render invoice summary lines.\r\n * @param invoiceSummaryLines -The invoicesummary lines interface.\r\n * @param OrderSummaryItems -The order summary items props.\r\n * @param props -The cartview props.\r\n * @returns Jsx element.\r\n */\r\nconst _renderInvoiceSummarylines = (invoiceSummaryLines: IInvoiceSummaryLines | undefined, OrderSummaryItems: INodeProps, props: ICartViewProps):\r\nJSX.Element | null => {\r\n if (!invoiceSummaryLines) {\r\n props.context.telemetry.error('InvoiceSummary content is empty, module wont render');\r\n return null;\r\n }\r\n return (\r\n \r\n {invoiceSummaryLines.invoices}\r\n {invoiceSummaryLines.giftCard}\r\n {invoiceSummaryLines.loyalty}\r\n {invoiceSummaryLines.orderTotal}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Method will render order summary lines.\r\n * @param orderSummaryLines -The ordersummary lines interface.\r\n * @param OrderSummaryItems -The order summary items props.\r\n * @param props -The cartview props.\r\n * @returns Jsx element.\r\n */\r\nconst _renderOrderSummarylines = (orderSummaryLines: IOrderSummaryLines | undefined, OrderSummaryItems: INodeProps, props: ICartViewProps):\r\nJSX.Element | null => {\r\n if (!orderSummaryLines) {\r\n props.context.telemetry.error('OrderSummary content is empty, module wont render');\r\n return null;\r\n }\r\n return (\r\n \r\n {props.promoCode}\r\n {orderSummaryLines.subtotal}\r\n {orderSummaryLines.shipping}\r\n {orderSummaryLines.otherCharge}\r\n {orderSummaryLines.tax}\r\n {orderSummaryLines.totalDiscounts ? orderSummaryLines.totalDiscounts : null}\r\n {orderSummaryLines.orderTotal}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Method will render cart promotions.\r\n * @param promotions -The cartline item view props.\r\n * @returns Jsx element.\r\n */\r\nconst _renderPromotions = (promotions: ICartLineItemViewProps): JSX.Element | undefined => {\r\n return (\r\n <>\r\n \r\n {promotions.promotionMessage}\r\n {promotions.promotionSeeAllLink}\r\n {promotions.promotionDialog}\r\n \r\n\r\n \r\n );\r\n\r\n};\r\n\r\n/**\r\n * Method will render cartlines group title.\r\n * @param cartLine -The cartline view props.\r\n * @param titleSeparate -The title separate.\r\n * @returns Jsx element.\r\n */\r\nconst renderCartLinesGroupTitle = (cartLine: ICartlinesViewProps, titleSeparate: string) => {\r\n const isBopisSelected: boolean | undefined = cartLine.pickUpInStore?.isBopisSelected;\r\n return (\r\n <>\r\n \r\n {isBopisSelected ?

\r\n {cartLine.pickUpInStore?.deliveryOption}\r\n {titleSeparate}\r\n {cartLine.pickUpInStore?.orgUnitName}\r\n

: null}\r\n
\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Method will render cartlines groups header title.\r\n * @param pickUpText -The pickup text for group.\r\n * @param shippingText -The shipping text for group.\r\n * @param emailShippingText -The email shipping text for group.\r\n * @param titleSeparate -The title separator.\r\n * @param cartLine -The cartline view props.\r\n * @param emailDeliveryModeCode -The email delivery code from channel.\r\n * @returns Jsx element.\r\n */\r\nconst renderCartLinesGroupHeader = (pickUpText: string, shippingText: string, emailShippingText: string,\r\n titleSeparate: string, cartLine: ICartlinesViewProps, emailDeliveryModeCode?: string) => {\r\n const isBopisSelected: boolean | undefined = cartLine.pickUpInStore?.isBopisSelected;\r\n let groupTitle: string;\r\n\r\n groupTitle = isBopisSelected ? pickUpText : shippingText;\r\n groupTitle = cartLine.data && cartLine.data.cartline.DeliveryMode === emailDeliveryModeCode ? emailShippingText : groupTitle;\r\n\r\n return (\r\n <>\r\n
\r\n

\r\n

\r\n {groupTitle}\r\n

\r\n {renderCartLinesGroupTitle(cartLine, titleSeparate)}\r\n
\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Method will render cartlines in groups.\r\n * @param props -The cartline.\r\n * @returns Jsx element.\r\n */\r\nconst renderCartLinesGroup = (props: ICartViewProps): JSX.Element | undefined => {\r\n if (props.cartLinesGroup && ArrayExtensions.hasElements(props.cartLinesGroup)) {\r\n return (\r\n
\r\n { props.cartLinesGroup.map(cartlines => {\r\n return (
\r\n {renderCartLinesGroupHeader(props.resources.pickUpText, props.resources.shippingText,\r\n props.resources.emailshippingText, props.resources.titleSeparate, cartlines[0],\r\n props.context.actionContext.requestContext.channel?.EmailDeliveryModeCode)}\r\n {_renderCartlines(cartlines, props.resources.emptyCartText, props.CartlinesWrapper, props.storeSelector,\r\n props.backToShoppingButton, props.waitingComponent, props.cartLoadingStatus, props.cartDataResult)}\r\n
);\r\n })}\r\n
\r\n );\r\n }\r\n return (props.cartDataResult ? (\r\n
\r\n
\r\n

\r\n {props.resources.emptyCartText}\r\n

\r\n {props.backToShoppingButton}\r\n
\r\n
\r\n ) : <>\r\n {props.waitingComponent}\r\n \r\n );\r\n\r\n};\r\n\r\nconst CartView: React.FC = (props: ICartViewPropsExt) => {\r\n const freeShippingCost = props.app.config.freeShippingCost ? props.app.config.freeShippingCost : 0;\r\n const reducedShippingCost = props.app.config.reducedShippingCost ? props.app.config.reducedShippingCost : 0;\r\n const deliveryProgressBarResources = {\r\n deliveryProgressBarReducedText: props.resources.deliveryProgressBarReducedText,\r\n deliveryProgressBarReducedTextDone: props.resources.deliveryProgressBarReducedTextDone,\r\n deliveryProgressBarAlmostFreeText: props.resources.deliveryProgressBarAlmostFreeText,\r\n deliveryProgressBarFreeText: props.resources.deliveryProgressBarFreeText\r\n };\r\n return (\r\n
\r\n
\r\n {props.title}\r\n {!props.cart?.hasInvoiceLine && props.promotionOptions && _renderPromotions(props.promotionOptions)}\r\n {props.multiplePickUpEnabled ? renderCartLinesGroup(props) : \r\n {_renderCartlines(props.cartlines, props.resources.emptyCartText, props.CartlinesWrapper, props.storeSelector,\r\n props.backToShoppingButton, props.waitingComponent, props.cartLoadingStatus, props.cartDataResult)}\r\n }\r\n
\r\n\r\n {props.orderSummaryHeading &&\r\n \r\n {props.orderSummaryHeading}\r\n {props.cart?.hasInvoiceLine ? _renderInvoiceSummarylines(props.invoiceSummaryLineitems, props.OrderSummaryItems, props) : _renderOrderSummarylines(props.orderSummaryLineitems, props.OrderSummaryItems, props)}\r\n \r\n {_renderErrorBlock(props.OrderSummaryErrors)}\r\n {props.checkoutAsSignInUserButton}\r\n {props.checkoutAsGuestButton}\r\n {props.backToShoppingButton}\r\n {props.createTemplateFromCartButton}\r\n }\r\n {props.storeSelector}\r\n
\r\n );\r\n}\r\n\r\nexport default CartView;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IVideoPlayerAdditionalContentViewProps } from '@msdyn365-commerce-modules/video-player/src/modules/video-player/./components/additional-content';\r\nimport { IVideoPlayerViewProps } from '@msdyn365-commerce-modules/video-player/src/modules/video-player/./video-player';\r\n\r\n/**\r\n * Render Additional Content.\r\n * @param additionalContent - Additional content view props.\r\n * @returns JSX Element.\r\n */\r\nconst renderAdditionalContent = (additionalContent: IVideoPlayerAdditionalContentViewProps) => {\r\n if (additionalContent.additionalContentItems) {\r\n return (\r\n \r\n <>\r\n {additionalContent.additionalContentItems.heading}\r\n \r\n {additionalContent.additionalContentItems.text}\r\n \r\n {additionalContent.additionalContentItems.links}\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n return null;\r\n};\r\nconst _isIPhone = () => {\r\n const useragent = window && window.navigator.userAgent;\r\n return !!useragent.match(/iphone/i);\r\n}\r\n\r\nconst VideoPlayerView: React.FC = props => {\r\n const config = {\r\n childList: true,\r\n subtree: true,\r\n attributes: false,\r\n characterData: false\r\n };\r\n var observer = new MutationObserver(function (mutationRecords, observer) {\r\n const fullScreenBtn = document.querySelector(`#video-player .msc-videoplayer__controls__fullscreenbtn`) as HTMLElement;\r\n if(_isIPhone() && fullScreenBtn){\r\n const videoPlayer = document.querySelector(`#${props.id} video`);\r\n const fullScreenBtn = document.querySelector(`#video-player .msc-videoplayer__controls__fullscreenbtn`) as HTMLElement;\r\n function handleButtonClick(){\r\n // @ts-ignore\r\n videoPlayer && videoPlayer.webkitEnterFullscreen();\r\n //webkitRequestFullscreen\r\n }\r\n fullScreenBtn.addEventListener('click', handleButtonClick);\r\n }\r\n });\r\n React.useEffect(() => {\r\n const videoCtn = document && document.getElementById(`${props.id}`);\r\n console.log(\"videoCtn didMount\");\r\n console.log(videoCtn);\r\n videoCtn !== null && observer.observe(videoCtn, config);\r\n },[]);\r\n\r\n return (\r\n \r\n {props.player}\r\n \r\n {props.title}\r\n {props.text}\r\n {props.additionalContent && renderAdditionalContent(props.additionalContent)}\r\n \r\n {props.links}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default VideoPlayerView;\r\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt 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 = 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 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 ((this._sitePickerMenuButton?.current?.contains(nextFocus) || this._sitePickerMenuNode?.current?.contains(nextFocus))) {\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 ((!this._sitePickerMenuButton?.current?.contains(nextFocus) && !this._sitePickerMenuNode?.current?.contains(nextFocus))) {\n this._resetSiteOptionsState();\n }\n }, 50);\n break;\n }\n default:\n return;\n }\n }\n };\n\n private readonly _handleOutsideClick = (event: any) => {\n if ((this._sitePickerMenuButton.current?.contains(event.target) && this.state.expandSiteOptions) ||\n (this._sitePickerMenuNode.current?.contains(event.target) && this.state.expandSiteOptions)) {\n return;\n }\n this._resetSiteOptionsState();\n\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 siteOptions && 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 \n {item?.siteName}\n \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 }\n return 'xs';\n }\n}\n\nexport default SitePicker;\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IActiveImageAdditionalContentViewProps } from '@msdyn365-commerce-modules/active-image/src/modules/active-image/../active-image-utilities';\r\nimport { IActiveImageViewProps } from '@msdyn365-commerce-modules/active-image/src/modules/active-image/./active-image';\r\n\r\n/**\r\n * Render Additional Content.\r\n * @param additionalContent - Additional content view props.\r\n * @returns JSX Element.\r\n */\r\nconst renderAdditionalContent = (additionalContent: IActiveImageAdditionalContentViewProps) => {\r\n return (\r\n \r\n {additionalContent.heading}\r\n \r\n {additionalContent.text}\r\n \r\n {additionalContent.links}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\n/**\r\n * Render View.\r\n * @param props - The view props.\r\n * @returns -The JSX Element.\r\n */\r\nexport const activeImageView: React.FC = props => {\r\n const hoverArea = (event: React.MouseEvent | React.TouchEvent, index: number) => {\r\n const target = event.target as HTMLElement;\r\n const map = target?.closest('.msc-active-image__area-with-dots')?.getElementsByClassName('msc-active-image-map')[0] as HTMLMapElement;\r\n map?.areas[index].dispatchEvent(new MouseEvent('mouseover', { 'bubbles': true }));\r\n const mapCtn = target?.closest('.msc-active-image')?.getElementsByClassName('msc-active-image-product-card-container')[0];\r\n const firstElement = mapCtn && mapCtn.firstChild as HTMLElement;\r\n if(firstElement){\r\n firstElement.style.display = 'block';\r\n }\r\n }\r\n const leaveArea = (event: React.MouseEvent, index: number) => {\r\n const target = event.target as HTMLElement;\r\n const map = target?.closest('.msc-active-image__area-with-dots')?.getElementsByClassName('msc-active-image-map')[0] as HTMLMapElement;\r\n map?.areas[index].dispatchEvent(new MouseEvent('mouseleave', { 'bubbles': true }));\r\n const mapCtn = target?.closest('.msc-active-image')?.getElementsByClassName('msc-active-image-product-card-container')[0];\r\n const firstElement = mapCtn && mapCtn.firstChild as HTMLElement;\r\n if(firstElement){\r\n firstElement.style.display = 'none';\r\n }\r\n }\r\n const clickArea = (event: React.MouseEvent | React.TouchEvent, index: number) => {\r\n const target = event.target as HTMLElement;\r\n const map = target?.closest('.msc-active-image__area-with-dots')?.getElementsByClassName('msc-active-image-map')[0] as HTMLMapElement;\r\n map?.areas[index].dispatchEvent(new MouseEvent('click', { 'bubbles': true }));\r\n }\r\n\r\n // @ts-ignore\r\n const products = props.data.products.result;\r\n const existingPoints:string[] = [];\r\n products.map((product: { ItemId: any; }) => {\r\n existingPoints.push(product.ItemId);\r\n })\r\n return (\r\n \r\n \r\n
\r\n {props.imageMapper}\r\n { props.config.activePoints && props.config.activePoints.map((activePoint, index) => {\r\n if(activePoint.itemId && existingPoints.includes(activePoint.itemId) && activePoint.xPosition && activePoint.yPosition && props.config.activeImage && props.config.activeImage.width && props.config.activeImage.height){\r\n const leftP = activePoint.xPosition * 100 / props.config.activeImage.width;\r\n const topP = activePoint.yPosition * 100 / props.config.activeImage.height;\r\n return(\r\n \r\n )\r\n }\r\n return;\r\n })\r\n }\r\n
\r\n \r\n {props.title}\r\n {props.text}\r\n {props.additionalContent && renderAdditionalContent(props.additionalContent)}\r\n \r\n {props.links}\r\n \r\n \r\n
\r\n\r\n \r\n {props.overlay}\r\n {props.productCard}\r\n
\r\n \r\n );\r\n};\r\n\r\nexport default activeImageView;\r\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt 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 \n {item.links}\n \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 \n {image}\n \n \n \n {title}\n {text}\n {links}\n {additionalContent && renderAdditionalContent(additionalContent)}\n \n \n );\n }\n return (\n \n \n {image}\n \n \n {title}\n {text}\n {links}\n {additionalContent && renderAdditionalContent(additionalContent)}\n \n \n );\n\n};\n\nexport default ContentBlockView;\n"],"sourceRoot":""}