{"version":3,"sources":["webpack:///src/Common/get-product.ts?5f1d","webpack:///./src/themes/newsunshine-dev-b2c/views/cart-icon.view.tsx?6992","webpack:///src/modules/adventureworks/views/cart-icon.view.tsx?d4b7","webpack:///../../src/search-org-unit-locations.ts?d18d","webpack:///./src/themes/newsunshine-b2c/views/cart-icon.view.tsx?2097","webpack:///./src/themes/newsunshine-dev/views/cart-icon.view.tsx?02c4","webpack:///./src/themes/newsunshine/views/cart-icon.view.tsx?60bb","webpack:///src/modules/cart-icon/components/flyout-cart-line-items.tsx?a0df","webpack:///src/modules/cart-icon/utils/get-products-in-mini-cart.ts?f52c","webpack:///src/modules/cart-icon/cart-icon.tsx?5b5f","webpack:///./lib/cart-icon/module-registration.js?4d28","webpack:///src/modules/cart-icon/cart-icon.view.tsx?d63a","webpack:///external \"React\"?c481","webpack:///external \"ReactDOM\"?4b2d","webpack:///src/validate-cart.ts?28cc"],"names":["getProductByProductId","productId","products","undefined","ArrayExtensions","hasElements","find","product","RecordId","getProductByProductIdAndWarehouse","warehouseId","cartState","targetWarehouseValue","cart","WarehouseId","_product$Behavior","Behavior","InventoryLocationId","CartIconView","React","PureComponent","constructor","props","super","cartIconRef","createRef","_modalContainer","tag","Modal","placement","hideArrow","className","wrapClassName","isOpen","this","state","isModalOpen","toggle","closeModal","_openModal","payLoad","getPayloadObject","telemetryContent","onTelemetryClick","setState","_this$cartIconRef$cur","current","focus","_renderCartCloseIcon","createElement","Button","onClick","_renderCartItemCount","cartItemCount","data","result","totalItemsInCart","resources","items","Node","_escFunction","event","keyCode","KeyCodes","Escape","isAutoDisplayTriggered","componentDidMount","MsDyn365","isBrowser","window","addEventListener","componentWillUnmount","removeEventListener","render","_this$props$data$cart","_this$props$data$cart2","_this$props$data$cart3","_this$props$data$cart4","isProductAddedToCart","context","app","config","addToCartBehavior","AddToCartBehavior","showMiniCart","Object","assign","miniCartWrapper","renderModuleAttributes","ref","cartIcon","flyoutTitle","isEmpty","slots","emptyCart","checkoutBlockedDueToUnavailableFunds","CartlinesWrapper","cartLines","cartlines","map","cartLine","index","cartLineIndex","miniCartItemWrapper","key","classnames","storeLocation","cartline","remove","telemetry","error","promoContentItem","_props$data$cart$resu","_props$resources","price","hasInvoiceLine","TotalAmount","totalPrice","cultureFormatter","formatCurrency","emptyPrice","totalPriceFormatString","replace","renderTotalPrice","subTotalMessage","checkoutAsSignInUserButton","checkoutAsGuestButton","goToCartButton","href","getUrlSync","actionContext","continueShoppingButtonTitle","renderCartlines","Fragment","_props$data$cart$resu2","renderSubtotalMessage","SearchOrgUnitLocationsInput","getCacheKey","getCacheObjectType","dataCacheType","createSearchOrgUnitLocationsInputFunc","inputData","async","getSearchOrgUnitLocationsAction","input","searchOrgUnitLocationsAsync","callerContext","retailActionDataAction","createObservableDataAction","id","action","_renderDeliveryLocation","deliverylocation","FulfillmentStoreId","_foundProductDelivery","orgUnitName","_getOrgUnitName","orgUnitLocations","foundProductDeliveryOption","productDeliveryOptions","length","deliveryOption","ProductId","delivery","DeliveryOptions","option","Code","DeliveryMode","location","Description","shippingText","_renderStoreLocation","fulfillmentStoreId","foundLocation","orgUnitLocation","OrgUnitNumber","OrgUnitName","_assembleCartlines","reactNodes","foundProductAvailability","_foundProductAvailabi","isQuantityLimitsFeatureEnabled","productAvailabilites","productAvailability","_productAvailability$","ProductAvailableQuantity","push","_assembleNode","foundProductDeliveryOptions","imageSettings","gridSettings","typeName","removeButtonText","removeItemClickHandler","availableQuantityInStock","isStockCheckEnabled","outOfStockThreshold","AvailableQuantity","_getCartItemAvailableQuantity","maxQuantity","_getCartItemMaxQuantity","maxQuantityByConfig","maxByQuantityLimitsFeature","maxByQuantityLimitsFeatureResult","maxCartlineQuantity","MaximumQuantity","isServiceItem","ItemTypeValue","ReleasedProductType","Service","onRemoveClickHandler","onRemoveClickFunction","TelemetryConstant","RemoveCartItem","removeCartItemAttribute","getTelemetryAttributes","productUrl","getProductUrlSync","isChannelTypeB2B","requestContext","_cartline$CatalogId","fullUrl","URL","searchParams","set","CatalogId","hasError","Quantity","CartLineItemComponent","catalogs","currentQuantity","isOutOfStock","isQuantityEditable","primaryImageUrl","PrimaryImageUrl","displayMode","channelDeliveryOptionConfig","deliveryLocation","title","getMiniCartData","ctx","miniCartData","CartLines","getActiveCartProductsAction","ActiveCartProductsInput","then","catch","exception","Error","getAvailabilitiesForCartLineItems","ProductAvailabilitiesForCartLineItems","apiSettings","availableQuantity","getDeliveryOptionsForCartLineItems","ProductDeliveryOptionsForCartLineItems","deliveryOptions","CartIcon","Component","retailMultiplePickUpOptionEnabled","getSortedCartLines","sortOrder","lines","sort","item1","item2","_item2$LineNumber","_item1$LineNumber","LineNumber","_item1$LineNumber2","_item2$LineNumber2","_getImageSettings","viewports","xs","q","w","h","sm","lg","lazyload","_removeItemFromCartHandler","cartlineToRemove","cartLineIds","LineId","toString","removeCartLines","warning","debug","isCartValid","getTelemetryObject","request","telemetryPageName","friendlyName","payload","TelemetryEvent","CheckOut","Checkout","checkoutBySignInAttributes","contentAction","etext","GuestCheckout","checkoutByGuestAttributes","ViewShoppingBag","viewShoppingBagAttributes","_this$props$data$orgU","reaction","_setQuantityLimitsFeatureFlag","_validateCart","componentDidUpdate","prevProps","shouldComponentUpdate","nextProps","nextState","_this$props$context$r","_cart$cart$CartLines","_this$state$miniCartD","_this$state$miniCartD2","_this$props$data$chan","_this$props$data$feat","enableHoverCart","isAnonymousCheckout","user","isAuthenticated","signInUrl","guestCheckoutUrl","cartUrl","checkoutURL","_getCheckoutURL","isCartEmpty","shouldShowMiniCart","emailDeliveryModeCode","channel","EmailDeliveryModeCode","_getCartLines","validInventoryAcrossCartLines","validateCartLinesInventory","isValid","some","includeFlyout","status","goToCartButtonText","goToCartButtonTitle","flyoutTooltip","UncontrolledTooltip","trigger","target","shouldShowCloseButton","cartPageUrl","hideAriaHidden","priceString","featureState","feature","Name","IsEnabled","viewProps","_objectSpread","CartIconComponent","cartLabel","cartQtyLabel","FlyoutContainer","disabled","checkoutButtonTitle","guestCheckoutButtonTitle","renderView","_cart$result$cart$Ver","_cart$result","cartVersion","Version","lastValidatedCartVersion","validateCartAsync","ValidationResultsPairs","isAbsoluteUrl","urlCheck","returnURL","msdyn365Commerce","origin","includes","_this$props$data$cata","PickupDeliveryModeCode","FlyoutCartLineItems","cartLinesSortOrder","enableStockCheck","updateMaxQuantityForCartLineItem","maxQuantityForCartLineItem","sizeString","productDimensionTypeSize","colorString","productDimensionTypeColor","configString","productDimensionTypeConfiguration","styleString","productDimensionTypeStyle","quantityDisplayString","quantityDisplayText","salesAgreementPricePrompt","inputQuantityAriaLabel","discountStringText","originalPriceText","currentPriceText","shippingChargesText","removeCartButtonText","outOfStockText","outOfRangeOneText","outOfRangeFormatText","pickupDeliveryModeCode","_featureStatuses$find","_this$props$context","featureStatuses","defaultOrderQuantityLimitsFeatureConfig","platform","enableDefaultOrderQuantityLimits","_featureStatuses$find2","customerInformation","customerInfo","IsB2b","__decorate","observer","binding","modules","dataActions","registerSanitizedActionPath","sanitizedActionPath","dataAction","default","prototype","RegistrationId","c","require","$type","da","name","path","runOn","iNM","ns","n","p","pdp","md","__bindings__","viewDictionary","cn","_renderCartlines","module","exports","ReactDOM","propsContext","cartResult","shouldRetry","arguments","AsyncResult","resolve","_validationResult$Val","validationResult","CartsDataActions","validateForCheckoutAsync","bypassCache","Id","ValidationResultsByLineId","refreshCart","refreshError","validateError","cartLineQuantityUpdatedAsync","cartLineToUpdate","quantity","isUsingDefaultOrderSettingsMax","_modifiedProduct$Beha2","modifiedProduct","cartLineId","newQuantity","additionalProperties","updateLineResult","updateCartLineQuantity","message"],"mappings":";8FAAA,oFAeO,SAASA,EAAsBC,EAA+BC,GACjE,QAAkBC,IAAdF,GAA2BG,kBAAgBC,YAAYH,GACvD,OAAOA,EAASI,KAAKC,GACVN,IAAcM,EAAQC,UAelC,SAASC,EACZR,EACAC,EACAQ,EACAC,GAEA,MAAMC,EAAuBF,UAAeC,aAAS,EAATA,EAAWE,KAAKC,YAE5D,QAAkBX,IAAdF,GAA2BG,kBAAgBC,YAAYH,GACvD,OAAOA,EAASI,KAAKC,IAAU,IAAAQ,EAC3B,OAAOd,IAAcM,EAAQC,WAA4B,QAAhBO,EAAAR,EAAQS,gBAAQ,IAAAD,OAAA,EAAhBA,EAAkBE,uBAAwBL,M,wMC4BzF,MAAOM,UAAqBC,IAAMC,cAQpCC,YAAmBC,GACfC,MAAMD,GAHO,KAAAE,YAAkDL,IAAMM,YAoFxD,KAAAC,gBAAkB,KACxB,CACHC,IAAKC,QACLC,UAAW,aACXC,WAAW,EACXC,UAAW,wCACXC,cAAe,8BACfC,OAAQC,KAAKC,MAAMC,YACnBC,OAAQH,KAAKI,aAOJ,KAAAC,WAAa,KAC1B,MAAMC,EAAUC,2BAAiB,QAASP,KAAKZ,MAAMoB,iBAAmB,YAAa,IACrFC,2BAAiBT,KAAKZ,MAAMoB,iBAAmBF,EAAS,aACxDN,KAAKU,SAAS,CACVR,aAAa,KAOJ,KAAAE,WAAa,KAAW,IAAAO,EACb,QAAxBA,EAAAX,KAAKV,YAAYsB,eAAO,IAAAD,GAAxBA,EAA0BE,QAC1Bb,KAAKU,SAAS,CACVR,aAAa,KAQJ,KAAAY,qBAAuB,IAC7B7B,IAAA8B,cAACC,SAAM,CAACnB,UAAU,0BAAyB,aAAY,QAAQoB,QAASjB,KAAKI,aAQvE,KAAAc,qBAAwB9B,IACrC,MAGM+B,EAAgB,GADC/B,EAAMgC,KAAKzC,KAAK0C,OAASjC,EAAMgC,KAAKzC,KAAK0C,OAAOC,iBAFlC,KAGMlC,EAAMmC,UAAUC,QAE3D,OAAOvC,IAAA8B,cAACU,OAAI,CAAC5B,UAAU,uBAAuBsB,IAOjC,KAAAO,aAAgBC,IACzBA,EAAMC,UAAYC,WAASC,QAAU9B,KAAKC,MAAMC,aAChDF,KAAKI,cA7ITJ,KAAK+B,wBAAyB,EAC9B/B,KAAKC,MAAQ,CACTC,aAAa,GAId8B,oBACCC,IAASC,WACTC,OAAOC,iBAAiB,UAAWpC,KAAK0B,cAAc,GAIvDW,uBACCJ,IAASC,WACTC,OAAOG,oBAAoB,UAAWtC,KAAK0B,cAAc,GAQ1Da,SAAM,IAAAC,EAAAC,EAAAC,EAAAC,EACT,MAAMhE,EAAkC,QAA9B6D,EAAGxC,KAAKZ,MAAMgC,KAAKzC,KAAK0C,cAAM,IAAAmB,SAAIvE,EAc5C,OAXIU,aAAI,EAAJA,EAAMiE,uBAAwB5C,KAAKZ,MAAMyD,QAAQC,IAAIC,OAAOC,oBAAsBC,oBAAkBC,eAE/FlD,KAAK+B,uBAIE/B,KAAKC,MAAMC,cAEnBF,KAAK+B,wBAAyB,IAJ9B/B,KAAKU,SAAS,CAAER,aAAa,IAC7BF,KAAK+B,wBAAyB,IAOlC9C,IAAA8B,cAACU,OAAI0B,OAAAC,OAAA,GAAKpD,KAAKZ,MAAMiE,gBAAqBrD,KAAKZ,MAAMkE,uBAAuBtD,KAAKZ,QAC7EH,IAAA8B,cAAA,UAAQE,QAASjB,KAAKK,WAAYR,UAAU,+BAA+B0D,IAAKvD,KAAKV,aAChFU,KAAKZ,MAAMoE,UAEhBvE,IAAA8B,cAACU,OAAI0B,OAAAC,OAAA,GAAKpD,KAAKR,mBACXP,IAAA8B,cAACU,OAAI,CAAC5B,UAAU,0CACXG,KAAKZ,MAAMqE,YACXzD,KAAKkB,qBAAqBlB,KAAKZ,OAC/BY,KAAKc,wBAEV7B,IAAA8B,cAACU,OAAI,CAAC5B,UAAU,sCACgB,QAA3B4C,EAAAzC,KAAKZ,MAAMgC,KAAKzC,KAAK0C,cAAM,IAAAoB,GAA3BA,EAA6BiB,QAAU1D,KAAKZ,MAAMuE,MAAMC,UAAY,KACpE5D,KAAKZ,MAAMyE,qCACZ5E,IAAA8B,cAACU,OAAI0B,OAAAC,OAAA,GAAKpD,KAAKZ,MAAM0E,mBAzGpBC,EAyGuD/D,KAAKZ,MAAM4E,UAzGX5E,EAyGsBY,KAAKZ,MAxGlG2E,EAKEA,EAAUE,IAAI,CAACC,EAAUC,KAC5B,MAAMC,EAAgBD,EACtB,OACIlF,IAAA8B,cAACU,OAAI0B,OAAAC,OAAA,GAAKhE,EAAMiF,oBAAmB,CAAEC,IAAKF,IACtCnF,IAAA8B,cAACU,OAAI,CAAC5B,UAAW0E,IAAWL,EAASM,cAAgB,+BAAiC,KAAMN,EAASO,UACpGP,EAASM,cACTN,EAASQ,WAVlBtF,EAAMyD,QAAQ8B,UAAUC,MAAM,kDACvB,SAwGK3F,IAAA8B,cAACU,OAAI,CAAC5B,UAAU,0CACXG,KAAKZ,MAAMuE,MAAMkB,iBArFhBzF,KAA+E,IAAA0F,EAAAC,EACrG,MAAMpG,EAA6B,QAAzBmG,EAAG1F,EAAMgC,KAAKzC,KAAK0C,cAAM,IAAAyD,SAAI7G,EACjC+G,EAAQrG,IAASA,EAAKsG,iBAAmBtG,EAAKA,KAAKuG,kBAAejH,GAClEkH,EAAaH,EACb5F,EAAMyD,QAAQuC,iBAAiBC,eAAeL,GAC9C5F,EAAMyD,QAAQuC,iBAAiBC,eAAejG,EAAMmC,UAAU+D,YACpE,OACIrG,IAAA8B,cAAA,OAAKlB,UAAU,8BACXZ,IAAA8B,cAAA,QAAMlB,UAAU,mCACXT,SAAgB,QAAX2F,EAAL3F,EAAOmC,iBAAS,IAAAwD,OAAA,EAAhBA,EAAkBQ,uBAAuBC,QAAQ,UAAW,IAC7DvG,IAAA8B,cAAA,QAAMlB,UAAU,+BAA+BsF,MA4EtCM,CAAiBzF,KAAKZ,OACvBH,IAAA8B,cAAA,KAAGlB,UAAU,kCAAkCG,KAAKZ,MAAMmC,UAAUmE,iBACnE1F,KAAKZ,MAAMuG,2BACX3F,KAAKZ,MAAMwG,sBACgB,QAA3BlD,EAAA1C,KAAKZ,MAAMgC,KAAKzC,KAAK0C,cAAM,IAAAqB,GAA3BA,EAA6BgB,QAAU,KAAO1D,KAAKZ,MAAMyG,eAC1D5G,IAAA8B,cAACU,OAAI,CAAC5B,UAAU,6BACgB,QAA3B8C,EAAA3C,KAAKZ,MAAMgC,KAAKzC,KAAK0C,cAAM,IAAAsB,GAA3BA,EAA6Be,QAC1BzE,IAAA8B,cAACC,SAAM,CACHnB,UAAU,mCACViG,KAAMC,YAAW,IAAK/F,KAAKZ,MAAMyD,QAAQmD,gBAExChG,KAAKZ,MAAMmC,UAAU0E,6BAE1B,SA1HRC,IAACnC,EAAuD3E,GAwMjEJ,a,oLChJR,MAAMA,UAAqBC,IAAMC,cAQpCC,YAAmBC,GACfC,MAAMD,GAHO,KAAAE,YAAkDL,IAAMM,YAoFxD,KAAAC,gBAAkB,KACxB,CACHC,IAAKC,QACLC,UAAW,aACXC,WAAW,EACXC,UAAW,wCACXC,cAAe,8BACfC,OAAQC,KAAKC,MAAMC,YACnBC,OAAQH,KAAKI,aAOJ,KAAAC,WAAa,KAC1B,MAAMC,EAAUC,2BAAiB,QAASP,KAAKZ,MAAMoB,iBAAmB,YAAa,IACrFC,2BAAiBT,KAAKZ,MAAMoB,iBAAmBF,EAAS,aACxDN,KAAKU,SAAS,CACVR,aAAa,KAOJ,KAAAE,WAAa,KAAW,IAAAO,EACb,QAAxBA,EAAAX,KAAKV,YAAYsB,eAAO,IAAAD,GAAxBA,EAA0BE,QAC1Bb,KAAKU,SAAS,CACVR,aAAa,KAQJ,KAAAY,qBAAuB,IAC7B7B,IAAA8B,cAACC,SAAM,CAACnB,UAAU,0BAAyB,aAAY,QAAQoB,QAASjB,KAAKI,aAQvE,KAAAc,qBAAwB9B,IACrC,MAGM+B,EAAgB,GADC/B,EAAMgC,KAAKzC,KAAK0C,OAASjC,EAAMgC,KAAKzC,KAAK0C,OAAOC,iBAFlC,KAGMlC,EAAMmC,UAAUC,QAE3D,OAAOvC,IAAA8B,cAACU,OAAI,CAAC5B,UAAU,uBAAuBsB,IAOjC,KAAAO,aAAgBC,IACzBA,EAAMC,UAAYC,WAASC,QAAU9B,KAAKC,MAAMC,aAChDF,KAAKI,cA7ITJ,KAAK+B,wBAAyB,EAC9B/B,KAAKC,MAAQ,CACTC,aAAa,GAId8B,oBACCC,IAASC,WACTC,OAAOC,iBAAiB,UAAWpC,KAAK0B,cAAc,GAIvDW,uBACCJ,IAASC,WACTC,OAAOG,oBAAoB,UAAWtC,KAAK0B,cAAc,GAQ1Da,SAAM,IAAAC,EAAAC,EAAAC,EAAAC,EACT,MAAMhE,EAAkC,QAA9B6D,EAAGxC,KAAKZ,MAAMgC,KAAKzC,KAAK0C,cAAM,IAAAmB,SAAIvE,EAc5C,OAXIU,aAAI,EAAJA,EAAMiE,uBAAwB5C,KAAKZ,MAAMyD,QAAQC,IAAIC,OAAOC,oBAAsBC,oBAAkBC,eAE/FlD,KAAK+B,uBAIE/B,KAAKC,MAAMC,cAEnBF,KAAK+B,wBAAyB,IAJ9B/B,KAAKU,SAAS,CAAER,aAAa,IAC7BF,KAAK+B,wBAAyB,IAOlC9C,IAAA8B,cAACU,OAAI0B,OAAAC,OAAA,GAAKpD,KAAKZ,MAAMiE,gBAAqBrD,KAAKZ,MAAMkE,uBAAuBtD,KAAKZ,QAC7EH,IAAA8B,cAAA,UAAQE,QAASjB,KAAKK,WAAYR,UAAU,+BAA+B0D,IAAKvD,KAAKV,aAChFU,KAAKZ,MAAMoE,UAEhBvE,IAAA8B,cAACU,OAAI0B,OAAAC,OAAA,GAAKpD,KAAKR,mBACXP,IAAA8B,cAACU,OAAI,CAAC5B,UAAU,0CACXG,KAAKZ,MAAMqE,YACXzD,KAAKkB,qBAAqBlB,KAAKZ,OAC/BY,KAAKc,wBAEV7B,IAAA8B,cAACU,OAAI,CAAC5B,UAAU,sCACgB,QAA3B4C,EAAAzC,KAAKZ,MAAMgC,KAAKzC,KAAK0C,cAAM,IAAAoB,GAA3BA,EAA6BiB,QAAU1D,KAAKZ,MAAMuE,MAAMC,UAAY,KACpE5D,KAAKZ,MAAMyE,qCACZ5E,IAAA8B,cAACU,OAAI0B,OAAAC,OAAA,GAAKpD,KAAKZ,MAAM0E,mBArHpBC,EAqHuD/D,KAAKZ,MAAM4E,UArHX5E,EAqHsBY,KAAKZ,MApHlG2E,EAKEA,EAAUE,IAAI,CAACC,EAAUC,KAC5B,MAAMC,EAAgBD,EACtB,OACIlF,IAAA8B,cAACU,OAAI0B,OAAAC,OAAA,GAAKhE,EAAMiF,oBAAmB,CAAEC,IAAKF,IACtCnF,IAAA8B,cAACU,OAAI,CAAC5B,UAAW0E,IAAWL,EAASM,cAAgB,+BAAiC,KAAMN,EAASO,UACpGP,EAASM,cACTN,EAASQ,WAVlBtF,EAAMyD,QAAQ8B,UAAUC,MAAM,kDACvB,SAoHK3F,IAAA8B,cAACU,OAAI,CAAC5B,UAAU,0CACXG,KAAKZ,MAAMuE,MAAMkB,iBAjGhBzF,KAA+E,IAAA0F,EACrG,MAAMnG,EAA6B,QAAzBmG,EAAG1F,EAAMgC,KAAKzC,KAAK0C,cAAM,IAAAyD,SAAI7G,EACjC+G,EAAQrG,IAASA,EAAKsG,iBAAmBtG,EAAKA,KAAKuG,kBAAejH,GAClEkH,EAAaH,EACb5F,EAAMyD,QAAQuC,iBAAiBC,eAAeL,GAC9C5F,EAAMyD,QAAQuC,iBAAiBC,eAAejG,EAAMmC,UAAU+D,YACpE,OAAO3G,IAASA,EAAKsG,eACjBhG,IAAA8B,cAAA,OAAKlB,UAAU,8BACXZ,IAAA8B,cAAA,QAAMlB,UAAU,mCACXT,EAAMmC,UAAUgE,uBACjBtG,IAAA8B,cAAA,QAAMlB,UAAU,+BAA+BsF,KAIvDlG,IAAA8B,cAAA9B,IAAAkH,SAAA,OAoFiBV,CAAiBzF,KAAKZ,OA3EhBA,KAA+E,IAAAgH,EAC1G,MAAMzH,EAA6B,QAAzByH,EAAGhH,EAAMgC,KAAKzC,KAAK0C,cAAM,IAAA+E,SAAInI,EACvC,OAAOU,IAASA,EAAKsG,eAAiBhG,IAAA8B,cAAA,KAAGlB,UAAU,kCAAkCT,EAAMmC,UAAUmE,iBAAuB,MA0EvGW,CAAsBrG,KAAKZ,OAC3BY,KAAKZ,MAAMuG,2BACX3F,KAAKZ,MAAMwG,sBACgB,QAA3BlD,EAAA1C,KAAKZ,MAAMgC,KAAKzC,KAAK0C,cAAM,IAAAqB,GAA3BA,EAA6BgB,QAAU,KAAO1D,KAAKZ,MAAMyG,eAC1D5G,IAAA8B,cAACU,OAAI,CAAC5B,UAAU,6BACgB,QAA3B8C,EAAA3C,KAAKZ,MAAMgC,KAAKzC,KAAK0C,cAAM,IAAAsB,GAA3BA,EAA6Be,QAC1BzE,IAAA8B,cAACC,SAAM,CACHnB,UAAU,mCACViG,KAAMC,YAAW,OAAQ/F,KAAKZ,MAAMyD,QAAQmD,gBAE3ChG,KAAKZ,MAAMmC,UAAU0E,6BAE1B,SAtIRC,IAACnC,EAAuD3E,GAoNjEJ,a,0UC1NR,MAAMsH,EAAbnH,cACW,KAAAoH,YAAc,IAAM,yBAEpB,KAAAC,mBAAqB,IAAM,yBAE3B,KAAAC,cAAgB,IAAiB,WAQrC,MAAMC,EAAyCC,GAC3C,IAAIL,EASRM,eAAeC,EAClBC,EACAjE,GASA,aAP+BkE,YAC3B,CACIC,cAAenE,GAEnB,IAMD,MAAMoE,EAAyBC,YAA2B,CAC7DC,GAAI,sEACJC,OAAoCP,EACpCC,MAAOJ,IAGIO,a,sMCOT,MAAOjI,UAAqBC,IAAMC,cAQpCC,YAAmBC,GACfC,MAAMD,GAHO,KAAAE,YAAkDL,IAAMM,YAoFxD,KAAAC,gBAAkB,KACxB,CACHC,IAAKC,QACLC,UAAW,aACXC,WAAW,EACXC,UAAW,wCACXC,cAAe,8BACfC,OAAQC,KAAKC,MAAMC,YACnBC,OAAQH,KAAKI,aAOJ,KAAAC,WAAa,KAC1B,MAAMC,EAAUC,2BAAiB,QAASP,KAAKZ,MAAMoB,iBAAmB,YAAa,IACrFC,2BAAiBT,KAAKZ,MAAMoB,iBAAmBF,EAAS,aACxDN,KAAKU,SAAS,CACVR,aAAa,KAOJ,KAAAE,WAAa,KAAW,IAAAO,EACb,QAAxBA,EAAAX,KAAKV,YAAYsB,eAAO,IAAAD,GAAxBA,EAA0BE,QAC1Bb,KAAKU,SAAS,CACVR,aAAa,KAQJ,KAAAY,qBAAuB,IAC7B7B,IAAA8B,cAACC,SAAM,CAACnB,UAAU,0BAAyB,aAAY,QAAQoB,QAASjB,KAAKI,aAQvE,KAAAc,qBAAwB9B,IACrC,MAGM+B,EAAgB,GADC/B,EAAMgC,KAAKzC,KAAK0C,OAASjC,EAAMgC,KAAKzC,KAAK0C,OAAOC,iBAFlC,KAGMlC,EAAMmC,UAAUC,QAE3D,OAAOvC,IAAA8B,cAACU,OAAI,CAAC5B,UAAU,uBAAuBsB,IAOjC,KAAAO,aAAgBC,IACzBA,EAAMC,UAAYC,WAASC,QAAU9B,KAAKC,MAAMC,aAChDF,KAAKI,cA7ITJ,KAAK+B,wBAAyB,EAC9B/B,KAAKC,MAAQ,CACTC,aAAa,GAId8B,oBACCC,IAASC,WACTC,OAAOC,iBAAiB,UAAWpC,KAAK0B,cAAc,GAIvDW,uBACCJ,IAASC,WACTC,OAAOG,oBAAoB,UAAWtC,KAAK0B,cAAc,GAQ1Da,SAAM,IAAAC,EAAAC,EAAAC,EAAAC,EACT,MAAMhE,EAAkC,QAA9B6D,EAAGxC,KAAKZ,MAAMgC,KAAKzC,KAAK0C,cAAM,IAAAmB,SAAIvE,EAc5C,OAXIU,aAAI,EAAJA,EAAMiE,uBAAwB5C,KAAKZ,MAAMyD,QAAQC,IAAIC,OAAOC,oBAAsBC,oBAAkBC,eAE/FlD,KAAK+B,uBAIE/B,KAAKC,MAAMC,cAEnBF,KAAK+B,wBAAyB,IAJ9B/B,KAAKU,SAAS,CAAER,aAAa,IAC7BF,KAAK+B,wBAAyB,IAOlC9C,IAAA8B,cAACU,OAAI0B,OAAAC,OAAA,GAAKpD,KAAKZ,MAAMiE,gBAAqBrD,KAAKZ,MAAMkE,uBAAuBtD,KAAKZ,QAC7EH,IAAA8B,cAAA,UAAQE,QAASjB,KAAKK,WAAYR,UAAU,+BAA+B0D,IAAKvD,KAAKV,aAChFU,KAAKZ,MAAMoE,UAEhBvE,IAAA8B,cAACU,OAAI0B,OAAAC,OAAA,GAAKpD,KAAKR,mBACXP,IAAA8B,cAACU,OAAI,CAAC5B,UAAU,0CACXG,KAAKZ,MAAMqE,YACXzD,KAAKkB,qBAAqBlB,KAAKZ,OAC/BY,KAAKc,wBAEV7B,IAAA8B,cAACU,OAAI,CAAC5B,UAAU,sCACgB,QAA3B4C,EAAAzC,KAAKZ,MAAMgC,KAAKzC,KAAK0C,cAAM,IAAAoB,GAA3BA,EAA6BiB,QAAU1D,KAAKZ,MAAMuE,MAAMC,UAAY,KACpE5D,KAAKZ,MAAMyE,qCACZ5E,IAAA8B,cAACU,OAAI0B,OAAAC,OAAA,GAAKpD,KAAKZ,MAAM0E,mBAzGpBC,EAyGuD/D,KAAKZ,MAAM4E,UAzGX5E,EAyGsBY,KAAKZ,MAxGlG2E,EAKEA,EAAUE,IAAI,CAACC,EAAUC,KAC5B,MAAMC,EAAgBD,EACtB,OACIlF,IAAA8B,cAACU,OAAI0B,OAAAC,OAAA,GAAKhE,EAAMiF,oBAAmB,CAAEC,IAAKF,IACtCnF,IAAA8B,cAACU,OAAI,CAAC5B,UAAW0E,IAAWL,EAASM,cAAgB,+BAAiC,KAAMN,EAASO,UACpGP,EAASM,cACTN,EAASQ,WAVlBtF,EAAMyD,QAAQ8B,UAAUC,MAAM,kDACvB,SAwGK3F,IAAA8B,cAACU,OAAI,CAAC5B,UAAU,0CACXG,KAAKZ,MAAMuE,MAAMkB,iBArFhBzF,KAA+E,IAAA0F,EAAAC,EACrG,MAAMpG,EAA6B,QAAzBmG,EAAG1F,EAAMgC,KAAKzC,KAAK0C,cAAM,IAAAyD,SAAI7G,EACjC+G,EAAQrG,IAASA,EAAKsG,iBAAmBtG,EAAKA,KAAKuG,kBAAejH,GAClEkH,EAAaH,EACb5F,EAAMyD,QAAQuC,iBAAiBC,eAAeL,GAC9C5F,EAAMyD,QAAQuC,iBAAiBC,eAAejG,EAAMmC,UAAU+D,YACpE,OACIrG,IAAA8B,cAAA,OAAKlB,UAAU,8BACXZ,IAAA8B,cAAA,QAAMlB,UAAU,mCACXT,SAAgB,QAAX2F,EAAL3F,EAAOmC,iBAAS,IAAAwD,OAAA,EAAhBA,EAAkBQ,uBAAuBC,QAAQ,UAAW,IAC7DvG,IAAA8B,cAAA,QAAMlB,UAAU,+BAA+BsF,MA4EtCM,CAAiBzF,KAAKZ,OACvBH,IAAA8B,cAAA,KAAGlB,UAAU,kCAAkCG,KAAKZ,MAAMmC,UAAUmE,iBACnE1F,KAAKZ,MAAMuG,2BACX3F,KAAKZ,MAAMwG,sBACgB,QAA3BlD,EAAA1C,KAAKZ,MAAMgC,KAAKzC,KAAK0C,cAAM,IAAAqB,GAA3BA,EAA6BgB,QAAU,KAAO1D,KAAKZ,MAAMyG,eAC1D5G,IAAA8B,cAACU,OAAI,CAAC5B,UAAU,6BACgB,QAA3B8C,EAAA3C,KAAKZ,MAAMgC,KAAKzC,KAAK0C,cAAM,IAAAsB,GAA3BA,EAA6Be,QAC1BzE,IAAA8B,cAACC,SAAM,CACHnB,UAAU,mCACViG,KAAMC,YAAW,IAAK/F,KAAKZ,MAAMyD,QAAQmD,gBAExChG,KAAKZ,MAAMmC,UAAU0E,6BAE1B,SA1HRC,IAACnC,EAAuD3E,GAwMjEJ,a,sMC5JT,MAAOA,UAAqBC,IAAMC,cAQpCC,YAAmBC,GACfC,MAAMD,GAHO,KAAAE,YAAkDL,IAAMM,YAoFxD,KAAAC,gBAAkB,KACxB,CACHC,IAAKC,QACLC,UAAW,aACXC,WAAW,EACXC,UAAW,wCACXC,cAAe,8BACfC,OAAQC,KAAKC,MAAMC,YACnBC,OAAQH,KAAKI,aAOJ,KAAAC,WAAa,KAC1B,MAAMC,EAAUC,2BAAiB,QAASP,KAAKZ,MAAMoB,iBAAmB,YAAa,IACrFC,2BAAiBT,KAAKZ,MAAMoB,iBAAmBF,EAAS,aACxDN,KAAKU,SAAS,CACVR,aAAa,KAOJ,KAAAE,WAAa,KAAW,IAAAO,EACb,QAAxBA,EAAAX,KAAKV,YAAYsB,eAAO,IAAAD,GAAxBA,EAA0BE,QAC1Bb,KAAKU,SAAS,CACVR,aAAa,KAQJ,KAAAY,qBAAuB,IAC7B7B,IAAA8B,cAACC,SAAM,CAACnB,UAAU,0BAAyB,aAAY,QAAQoB,QAASjB,KAAKI,aAQvE,KAAAc,qBAAwB9B,IACrC,MAGM+B,EAAgB,GADC/B,EAAMgC,KAAKzC,KAAK0C,OAASjC,EAAMgC,KAAKzC,KAAK0C,OAAOC,iBAFlC,KAGMlC,EAAMmC,UAAUC,QAE3D,OAAOvC,IAAA8B,cAACU,OAAI,CAAC5B,UAAU,uBAAuBsB,IAOjC,KAAAO,aAAgBC,IACzBA,EAAMC,UAAYC,WAASC,QAAU9B,KAAKC,MAAMC,aAChDF,KAAKI,cA7ITJ,KAAK+B,wBAAyB,EAC9B/B,KAAKC,MAAQ,CACTC,aAAa,GAId8B,oBACCC,IAASC,WACTC,OAAOC,iBAAiB,UAAWpC,KAAK0B,cAAc,GAIvDW,uBACCJ,IAASC,WACTC,OAAOG,oBAAoB,UAAWtC,KAAK0B,cAAc,GAQ1Da,SAAM,IAAAC,EAAAC,EAAAC,EAAAC,EACT,MAAMhE,EAAkC,QAA9B6D,EAAGxC,KAAKZ,MAAMgC,KAAKzC,KAAK0C,cAAM,IAAAmB,SAAIvE,EAc5C,OAXIU,aAAI,EAAJA,EAAMiE,uBAAwB5C,KAAKZ,MAAMyD,QAAQC,IAAIC,OAAOC,oBAAsBC,oBAAkBC,eAE/FlD,KAAK+B,uBAIE/B,KAAKC,MAAMC,cAEnBF,KAAK+B,wBAAyB,IAJ9B/B,KAAKU,SAAS,CAAER,aAAa,IAC7BF,KAAK+B,wBAAyB,IAOlC9C,IAAA8B,cAACU,OAAI0B,OAAAC,OAAA,GAAKpD,KAAKZ,MAAMiE,gBAAqBrD,KAAKZ,MAAMkE,uBAAuBtD,KAAKZ,QAC7EH,IAAA8B,cAAA,UAAQE,QAASjB,KAAKK,WAAYR,UAAU,+BAA+B0D,IAAKvD,KAAKV,aAChFU,KAAKZ,MAAMoE,UAEhBvE,IAAA8B,cAACU,OAAI0B,OAAAC,OAAA,GAAKpD,KAAKR,mBACXP,IAAA8B,cAACU,OAAI,CAAC5B,UAAU,0CACXG,KAAKZ,MAAMqE,YACXzD,KAAKkB,qBAAqBlB,KAAKZ,OAC/BY,KAAKc,wBAEV7B,IAAA8B,cAACU,OAAI,CAAC5B,UAAU,sCACgB,QAA3B4C,EAAAzC,KAAKZ,MAAMgC,KAAKzC,KAAK0C,cAAM,IAAAoB,GAA3BA,EAA6BiB,QAAU1D,KAAKZ,MAAMuE,MAAMC,UAAY,KACpE5D,KAAKZ,MAAMyE,qCACZ5E,IAAA8B,cAACU,OAAI0B,OAAAC,OAAA,GAAKpD,KAAKZ,MAAM0E,mBAzGpBC,EAyGuD/D,KAAKZ,MAAM4E,UAzGX5E,EAyGsBY,KAAKZ,MAxGlG2E,EAKEA,EAAUE,IAAI,CAACC,EAAUC,KAC5B,MAAMC,EAAgBD,EACtB,OACIlF,IAAA8B,cAACU,OAAI0B,OAAAC,OAAA,GAAKhE,EAAMiF,oBAAmB,CAAEC,IAAKF,IACtCnF,IAAA8B,cAACU,OAAI,CAAC5B,UAAW0E,IAAWL,EAASM,cAAgB,+BAAiC,KAAMN,EAASO,UACpGP,EAASM,cACTN,EAASQ,WAVlBtF,EAAMyD,QAAQ8B,UAAUC,MAAM,kDACvB,SAwGK3F,IAAA8B,cAACU,OAAI,CAAC5B,UAAU,0CACXG,KAAKZ,MAAMuE,MAAMkB,iBArFhBzF,KAA+E,IAAA0F,EAAAC,EACrG,MAAMpG,EAA6B,QAAzBmG,EAAG1F,EAAMgC,KAAKzC,KAAK0C,cAAM,IAAAyD,SAAI7G,EACjC+G,EAAQrG,IAASA,EAAKsG,iBAAmBtG,EAAKA,KAAKuG,kBAAejH,GAClEkH,EAAaH,EACb5F,EAAMyD,QAAQuC,iBAAiBC,eAAeL,GAC9C5F,EAAMyD,QAAQuC,iBAAiBC,eAAejG,EAAMmC,UAAU+D,YACpE,OACIrG,IAAA8B,cAAA,OAAKlB,UAAU,8BACXZ,IAAA8B,cAAA,QAAMlB,UAAU,mCACXT,SAAgB,QAAX2F,EAAL3F,EAAOmC,iBAAS,IAAAwD,OAAA,EAAhBA,EAAkBQ,uBAAuBC,QAAQ,UAAW,IAC7DvG,IAAA8B,cAAA,QAAMlB,UAAU,+BAA+BsF,MA4EtCM,CAAiBzF,KAAKZ,OACvBH,IAAA8B,cAAA,KAAGlB,UAAU,kCAAkCG,KAAKZ,MAAMmC,UAAUmE,iBACnE1F,KAAKZ,MAAMuG,2BACX3F,KAAKZ,MAAMwG,sBACgB,QAA3BlD,EAAA1C,KAAKZ,MAAMgC,KAAKzC,KAAK0C,cAAM,IAAAqB,GAA3BA,EAA6BgB,QAAU,KAAO1D,KAAKZ,MAAMyG,eAC1D5G,IAAA8B,cAACU,OAAI,CAAC5B,UAAU,6BACgB,QAA3B8C,EAAA3C,KAAKZ,MAAMgC,KAAKzC,KAAK0C,cAAM,IAAAsB,GAA3BA,EAA6Be,QAC1BzE,IAAA8B,cAACC,SAAM,CACHnB,UAAU,mCACViG,KAAMC,YAAW,QAAS/F,KAAKZ,MAAMyD,QAAQmD,gBAE5ChG,KAAKZ,MAAMmC,UAAU0E,6BAE1B,SA1HRC,IAACnC,EAAuD3E,GAwMjEJ,a,sMC5JT,MAAOA,UAAqBC,IAAMC,cAQpCC,YAAmBC,GACfC,MAAMD,GAHO,KAAAE,YAAkDL,IAAMM,YAoFxD,KAAAC,gBAAkB,KACxB,CACHC,IAAKC,QACLC,UAAW,aACXC,WAAW,EACXC,UAAW,wCACXC,cAAe,8BACfC,OAAQC,KAAKC,MAAMC,YACnBC,OAAQH,KAAKI,aAOJ,KAAAC,WAAa,KAC1B,MAAMC,EAAUC,2BAAiB,QAASP,KAAKZ,MAAMoB,iBAAmB,YAAa,IACrFC,2BAAiBT,KAAKZ,MAAMoB,iBAAmBF,EAAS,aACxDN,KAAKU,SAAS,CACVR,aAAa,KAOJ,KAAAE,WAAa,KAAW,IAAAO,EACb,QAAxBA,EAAAX,KAAKV,YAAYsB,eAAO,IAAAD,GAAxBA,EAA0BE,QAC1Bb,KAAKU,SAAS,CACVR,aAAa,KAQJ,KAAAY,qBAAuB,IAC7B7B,IAAA8B,cAACC,SAAM,CAACnB,UAAU,0BAAyB,aAAY,QAAQoB,QAASjB,KAAKI,aAQvE,KAAAc,qBAAwB9B,IACrC,MAGM+B,EAAgB,GADC/B,EAAMgC,KAAKzC,KAAK0C,OAASjC,EAAMgC,KAAKzC,KAAK0C,OAAOC,iBAFlC,KAGMlC,EAAMmC,UAAUC,QAE3D,OAAOvC,IAAA8B,cAACU,OAAI,CAAC5B,UAAU,uBAAuBsB,IAOjC,KAAAO,aAAgBC,IACzBA,EAAMC,UAAYC,WAASC,QAAU9B,KAAKC,MAAMC,aAChDF,KAAKI,cA7ITJ,KAAK+B,wBAAyB,EAC9B/B,KAAKC,MAAQ,CACTC,aAAa,GAId8B,oBACCC,IAASC,WACTC,OAAOC,iBAAiB,UAAWpC,KAAK0B,cAAc,GAIvDW,uBACCJ,IAASC,WACTC,OAAOG,oBAAoB,UAAWtC,KAAK0B,cAAc,GAQ1Da,SAAM,IAAAC,EAAAC,EAAAC,EAAAC,EACT,MAAMhE,EAAkC,QAA9B6D,EAAGxC,KAAKZ,MAAMgC,KAAKzC,KAAK0C,cAAM,IAAAmB,SAAIvE,EAc5C,OAXIU,aAAI,EAAJA,EAAMiE,uBAAwB5C,KAAKZ,MAAMyD,QAAQC,IAAIC,OAAOC,oBAAsBC,oBAAkBC,eAE/FlD,KAAK+B,uBAIE/B,KAAKC,MAAMC,cAEnBF,KAAK+B,wBAAyB,IAJ9B/B,KAAKU,SAAS,CAAER,aAAa,IAC7BF,KAAK+B,wBAAyB,IAOlC9C,IAAA8B,cAACU,OAAI0B,OAAAC,OAAA,GAAKpD,KAAKZ,MAAMiE,gBAAqBrD,KAAKZ,MAAMkE,uBAAuBtD,KAAKZ,QAC7EH,IAAA8B,cAAA,UAAQE,QAASjB,KAAKK,WAAYR,UAAU,+BAA+B0D,IAAKvD,KAAKV,aAChFU,KAAKZ,MAAMoE,UAEhBvE,IAAA8B,cAACU,OAAI0B,OAAAC,OAAA,GAAKpD,KAAKR,mBACXP,IAAA8B,cAACU,OAAI,CAAC5B,UAAU,0CACXG,KAAKZ,MAAMqE,YACXzD,KAAKkB,qBAAqBlB,KAAKZ,OAC/BY,KAAKc,wBAEV7B,IAAA8B,cAACU,OAAI,CAAC5B,UAAU,sCACgB,QAA3B4C,EAAAzC,KAAKZ,MAAMgC,KAAKzC,KAAK0C,cAAM,IAAAoB,GAA3BA,EAA6BiB,QAAU1D,KAAKZ,MAAMuE,MAAMC,UAAY,KACpE5D,KAAKZ,MAAMyE,qCACZ5E,IAAA8B,cAACU,OAAI0B,OAAAC,OAAA,GAAKpD,KAAKZ,MAAM0E,mBAzGpBC,EAyGuD/D,KAAKZ,MAAM4E,UAzGX5E,EAyGsBY,KAAKZ,MAxGlG2E,EAKEA,EAAUE,IAAI,CAACC,EAAUC,KAC5B,MAAMC,EAAgBD,EACtB,OACIlF,IAAA8B,cAACU,OAAI0B,OAAAC,OAAA,GAAKhE,EAAMiF,oBAAmB,CAAEC,IAAKF,IACtCnF,IAAA8B,cAACU,OAAI,CAAC5B,UAAW0E,IAAWL,EAASM,cAAgB,+BAAiC,KAAMN,EAASO,UACpGP,EAASM,cACTN,EAASQ,WAVlBtF,EAAMyD,QAAQ8B,UAAUC,MAAM,kDACvB,SAwGK3F,IAAA8B,cAACU,OAAI,CAAC5B,UAAU,0CACXG,KAAKZ,MAAMuE,MAAMkB,iBArFhBzF,KAA+E,IAAA0F,EAAAC,EACrG,MAAMpG,EAA6B,QAAzBmG,EAAG1F,EAAMgC,KAAKzC,KAAK0C,cAAM,IAAAyD,SAAI7G,EACjC+G,EAAQrG,IAASA,EAAKsG,iBAAmBtG,EAAKA,KAAKuG,kBAAejH,GAClEkH,EAAaH,EACb5F,EAAMyD,QAAQuC,iBAAiBC,eAAeL,GAC9C5F,EAAMyD,QAAQuC,iBAAiBC,eAAejG,EAAMmC,UAAU+D,YACpE,OACIrG,IAAA8B,cAAA,OAAKlB,UAAU,8BACXZ,IAAA8B,cAAA,QAAMlB,UAAU,mCACXT,SAAgB,QAAX2F,EAAL3F,EAAOmC,iBAAS,IAAAwD,OAAA,EAAhBA,EAAkBQ,uBAAuBC,QAAQ,UAAW,IAC7DvG,IAAA8B,cAAA,QAAMlB,UAAU,+BAA+BsF,MA4EtCM,CAAiBzF,KAAKZ,OACvBH,IAAA8B,cAAA,KAAGlB,UAAU,kCAAkCG,KAAKZ,MAAMmC,UAAUmE,iBACnE1F,KAAKZ,MAAMuG,2BACX3F,KAAKZ,MAAMwG,sBACgB,QAA3BlD,EAAA1C,KAAKZ,MAAMgC,KAAKzC,KAAK0C,cAAM,IAAAqB,GAA3BA,EAA6BgB,QAAU,KAAO1D,KAAKZ,MAAMyG,eAC1D5G,IAAA8B,cAACU,OAAI,CAAC5B,UAAU,6BACgB,QAA3B8C,EAAA3C,KAAKZ,MAAMgC,KAAKzC,KAAK0C,cAAM,IAAAsB,GAA3BA,EAA6Be,QAC1BzE,IAAA8B,cAACC,SAAM,CACHnB,UAAU,mCACViG,KAAMC,YAAW,QAAS/F,KAAKZ,MAAMyD,QAAQmD,gBAE5ChG,KAAKZ,MAAMmC,UAAU0E,6BAE1B,SA1HRC,IAACnC,EAAuD3E,GAwMjEJ,a,6UCpJf,MA8IMqI,EAA0BA,CAACnD,EAAuC9E,KACpE,IAAIkI,EACJ,GAAIpD,GAAYA,EAASqD,mBAAoB,CAAC,IAADC,EACzC,MAAMC,EAAcC,EAAgBxD,EAASqD,mBAAoBnI,EAAMuI,kBAEvE,IAAIC,EACAxI,EAAMyI,wBAA0BzI,EAAMyI,uBAAuBC,OAAS,IACtEF,EAA6BxI,EAAMyI,uBAAuBzJ,KAAK2J,GACpDA,GAAkBA,EAAeC,YAAc9D,EAAS8D,YAGvE,MAAMC,EAAqC,QAA7BT,EAAGI,SAA0B,IAAAJ,GAAiB,QAAjBA,EAA1BA,EAA4BU,uBAAe,IAAAV,OAAA,EAA3CA,EAA6CpJ,KAAK+J,GAAUA,EAAOC,OAASlE,EAASmE,cAChGC,EAAWL,aAAQ,EAARA,EAAUM,YAIvBjB,EADAgB,EACmB,GAAGA,MAAab,IAEhB,GAAGA,OAG1BH,EAAmBlI,EAAMmC,UAAUiH,aAEvC,OAAOlB,GAGLmB,EAAuBA,CAACvE,EAAuC9E,KACjE,GAAI8E,GAAYA,EAASqD,mBAAoB,CACzC,MAAME,EAAcC,EAAgBxD,EAASqD,mBAAoBnI,EAAMuI,kBAEvE,GAAIF,EACA,OACIxI,gBAAA,OAAKY,UAAU,+BACXZ,gBAAA,QAAMY,UAAU,WAAW4H,IAM3C,OAAO,MAGLC,EAAkBA,CAACgB,EAAwCf,KAC7D,IAAKA,IAAqBe,GAAkD,IAA5Bf,EAAiBG,OAC7D,MAAO,GAGX,MAAMa,EAAgBhB,EAAiBvJ,KAAKwK,GACjCA,EAAgBC,gBAAkBH,GAG7C,OAAIC,EACOA,EAAcG,YAElBJ,GAGLK,EAAqBA,CACvB/E,EACAhG,EACAoB,KAEA,MAAM4J,EAA6C,GAEnD,OAAKhL,GAAgC,IAApBA,EAAS8J,QAK1B9D,EAAUC,IAAI,CAACQ,EAAUN,KACrB,IAAI9F,EAQA4K,EAMArB,EAMU,IAADsB,GAhBT7K,EAHAe,EAAM+J,+BAGI5K,YAAkCkG,EAASuD,UAAWhK,EAAUyG,EAAS7F,YAAaQ,EAAMX,WAE5FX,YAAsB2G,EAASuD,UAAWhK,GAGpDoB,EAAMgK,sBAAwBhK,EAAMgK,qBAAqBtB,OAAS,IAClEmB,EAA2B7J,EAAMgK,qBAAqBhL,KAAKiL,IAAsB,IAAAC,EAC7E,OAAmD,QAA5CA,EAAAD,EAAoBE,gCAAwB,IAAAD,OAAA,EAA5CA,EAA8CtB,aAAevD,EAASuD,aAIjF5I,EAAMyI,wBAA0BzI,EAAMyI,uBAAuBC,OAAS,IACtEF,EAA6BxI,EAAMyI,uBAAuBzJ,KAAK2J,GACpDA,GAAkBA,EAAeC,YAAcvD,EAASuD,YAGnE3J,IACA2K,EAAWQ,KAhLDC,EAClBhF,EACApG,EACAe,EACA+E,EACA8E,EACAS,KAC8B,IAAA7K,EAC9B,MAAM,cAAE8K,EAAa,aAAEC,EAAY,GAAEzC,EAAE,SAAE0C,EAAQ,QAAEhH,EAAO,UAAEtB,EAAS,iBAAEuI,EAAgB,uBAAEC,GAA2B3K,EAE9G4K,GAlENC,EAmEI7K,EAAM6K,oBAlEVC,EAmEI9K,EAAM8K,oBAlEVb,EAmEIJ,EAjEAgB,GAEKZ,IACAA,EAAoBc,mBACrBd,EAAoBc,mBAAqB,GACzCd,EAAoBc,mBAAqBD,EAElC,EAEJb,EAAoBc,kBAAoBD,EAG5C,GAjB2BE,IAClCH,EACAC,EACAb,EAqEA,MAAMgB,EACFhM,GArDwBiM,EAC5BC,EACAN,EACAD,EACAb,EACAqB,KAEA,GAAIrB,EAAgC,CAChC,IAAIsB,EAAmCD,EAQvC,OAJKA,IACDC,EAAmCF,GAAuB,IAGvDN,EACDQ,EAAmCT,EAC/BS,EACAT,EACJS,EAEV,OAAIR,GACOD,EAA2BO,EAAsBP,EAErDO,GA6BHD,CACIlL,EAAMsL,oBACNtL,EAAM6K,oBACND,EACA5K,EAAM+J,gCACN9K,SAAiB,QAAVQ,EAAPR,EAASS,gBAAQ,IAAAD,OAAA,EAAjBA,EAAmB8L,kBAAmB,GAIxCC,EAAgBvM,EAAQwM,gBAAkBC,sBAAoBC,QAE9DC,EA/BoBC,EAAClB,EAA8DtF,IAAuB,KAChHsF,EAAuBtF,IA8BMwG,CAAsBlB,EAAwBtF,GACrEnE,EAAUC,2BAAiB,QAASnB,EAAMoB,iBAAmB0K,oBAAkBC,gBAC/EC,EAA0BC,iCAAuBjM,EAAMoB,iBAAmBF,GAEhF,IAAIgL,EAAaC,4BAAkBlN,EAASe,EAAMyD,QAAQmD,mBAAe/H,GACzE,GAAIgE,IAASC,WAAasJ,YAAiBpM,EAAMyD,QAAQmD,cAAcyF,gBAAiB,CAAC,IAADC,EACpF,MAAMC,EAAU,IAAIC,IAAIN,EAAYnJ,OAAOmG,SAASxC,MACpD6F,EAAQE,aAAaC,IAAI,YAAa,IAAqB,QAArBJ,EAAGjH,EAASsH,iBAAS,IAAAL,IAAI,IAC/DJ,EAAaK,EAAQ7F,KAGzB,MAAO,CACH1E,KAAM,CACF/C,UACAoG,YAEJuH,WAAWpB,IAAiBxL,EAAM6K,sBAAsBxF,EAASwH,SAAY5B,EAC7E5F,SACIxF,gBAACiN,wBAAqB,CAClB9K,KAAM,CACF8C,SAAUO,EACVpG,UACA8N,SAAU/M,EAAM+M,UAEpBC,gBAAiB3H,EAASwH,SAC1B5B,YAAaA,EACbgC,eAAezB,IAAiBxL,EAAM6K,sBAAsBD,GAA4B,EACxFJ,aAAcA,EACdD,cAAeA,EACfxC,GAAIA,EACJ0C,SAAUA,EACVyB,WAAYA,EACZzI,QAASA,EACTtB,UAAWA,EACX+C,IAAK,GAAGH,KAASmH,IACjBgB,oBAAoB,EACpBC,gBAAiBlO,EAAQmO,gBACzBC,YAAY,UACZjM,iBAAkBpB,EAAMoB,iBACxBkM,4BAA6BtN,EAAMsN,4BACnCC,iBAAkBtF,EAAwB5C,EAAUrF,KAG5DsF,OACIzF,gBAAC+B,SAAMmC,OAAAC,OAAA,CACHvD,UAAU,6BACVoB,QAAS+J,EACT4B,MAAO9C,GACHsB,GAEHtB,GAGTtF,cAAeiE,EAAqBhE,EAAUrF,KAgGtCqK,CACIhF,EACApG,EACAe,EACA+E,EACwB,QADnB+E,EACLD,SAAwB,IAAAC,OAAA,EAAxBA,EAA0BK,6BAOnCP,IAvCH5J,EAAMyD,QAAQ8B,UAAUC,MAAM,kDACvB,OC3PRgC,eAAeiG,EAAgBC,EAAqBrO,GACvD,MAAMsO,EAA8B,GAE9BpO,EAAOF,EAAUE,KAuCvB,OAnCIA,GAAQA,EAAKqO,WAAarO,EAAKqO,UAAUlF,OAAS,IAAMrJ,EAAUwG,uBAC5DgI,sCAA4B,IAAIC,0BAA2BJ,GAC5DK,KAAKnP,IACEA,IACA+O,EAAa/O,SAAWA,KAG/BoP,MAAMxI,IAEH,MADAkI,EAAInI,UAAU0I,UAAUzI,GAClB,IAAI0I,MAAM,sFAGlBC,4CAAkC,IAAIC,wCAAsCV,EAAIrB,eAAegC,aAAcX,GAC9GK,KAAKO,IACEA,IACAX,EAAa3D,qBAAuBsE,KAG3CN,MAAMxI,IAEH,MADAkI,EAAInI,UAAU0I,UAAUzI,GAClB,IAAI0I,MAAM,sFAGlBK,6CAAmC,IAAIC,yCAAuCd,EAAIrB,eAAegC,aAAcX,GAChHK,KAAKU,IACEA,IACAd,EAAac,gBAAkBA,KAGtCT,MAAMxI,IAEH,MADAkI,EAAInI,UAAU0I,UAAUzI,GAClB,IAAI0I,MAAM,iFAIrBP,E,ykBCRX,IAAMe,EAAN,cAAuB7O,IAAM8O,UAezB5O,YAAYC,GACRC,MAAMD,GAPF,KAAA4O,mCAA8C,EAgPrC,KAAAC,mBAAqB,CAACjK,EAAuBkK,KAC1D,MAAMC,EAAoB,IAAInK,GAG9B,MAAa,eAATkK,EACOC,EAAMC,KAAK,CAACC,EAAOC,KAAK,IAAAC,EAAAC,EAAA,OAAsB,QAAjBD,EAACD,EAAMG,kBAAU,IAAAF,IAHpC,IAGiE,QAArBC,EAAKH,EAAMI,kBAAU,IAAAD,IAHjE,KAKdL,EAAMC,KAAK,CAACC,EAAOC,KAAK,IAAAI,EAAAC,EAAA,OAAsB,QAAjBD,EAACL,EAAMI,kBAAU,IAAAC,IALhC,IAK6D,QAArBC,EAAKL,EAAMG,kBAAU,IAAAE,IAL7D,MAoER,KAAAC,kBAAqBjF,GAE9BA,GAAiB,CACbkF,UAAW,CACPC,GAAI,CAAEC,EAAG,gBAAiBC,EAAG,EAAGC,EAAG,GACnCC,GAAI,CAAEH,EAAG,kBAAmBC,EAAG,EAAGC,EAAG,GACrCE,GAAI,CAAEJ,EAAG,kBAAmBC,EAAG,EAAGC,EAAG,IAEzCG,UAAU,GAKL,KAAAC,2BAA8BC,IAC3C,GAAItP,KAAKZ,MAAMgC,KAAKzC,KAAK0C,OAAQ,CAC7B,MAAMyF,EAAQ,CACVyI,YAAa,CAACD,EAAiBE,OAAQC,aAE3CzP,KAAKZ,MAAMgC,KAAKzC,KAAK0C,OAAOqO,gBAAgB5I,GAAOsG,MAAMxI,IACrD5E,KAAKZ,MAAMuF,UAAUgL,QAAQ/K,GAC7B5E,KAAKZ,MAAMuF,UAAUiL,MAAM,kCAlUnC5P,KAAKC,MAAQ,CACT8M,aAAc,GACd8C,aAAa,EACb1G,gCAAgC,GAEpCnJ,KAAKQ,iBAAmBsP,6BACpB9P,KAAKZ,MAAMyD,QAAQkN,QAAQC,kBAC3BhQ,KAAKZ,MAAM6Q,aACXjQ,KAAKZ,MAAMuF,WAEf,MAAMuL,EAAU3P,2BAAiB4P,IAAeC,SAAUpQ,KAAKQ,iBAAkB0K,oBAAkBmF,UACnGrQ,KAAKsQ,2BAA6BjF,iCAAuBrL,KAAKQ,iBAAkB0P,GAEhFA,EAAQK,cAAcC,MAAQtF,oBAAkBuF,cAChDzQ,KAAK0Q,0BAA4BrF,iCAAuBrL,KAAKQ,iBAAkB0P,GAE/EA,EAAQK,cAAcC,MAAQtF,oBAAkByF,gBAChD3Q,KAAK4Q,0BAA4BvF,iCAAuBrL,KAAKQ,iBAAkB0P,GAG5E,0BAAuB,IAAAW,EAC1B,MAAMhO,EAAU7C,KAAKZ,MAAMyD,QAAQmD,cAEnC8K,YACI,SAAAtO,EAAA,OAAiC,QAAjCA,EAAMxC,KAAKZ,MAAMgC,KAAKzC,KAAK0C,cAAM,IAAAmB,OAAA,EAA3BA,EAA6B7D,KAAKqO,WACxCpG,UACI5G,KAAKU,SAAS,CACVqM,mBAAoBF,EAAgBhK,EAAS7C,KAAKZ,MAAMgC,KAAKzC,KAAK0C,kBAIxErB,KAAK+Q,gCAEX/Q,KAAKU,SAAS,CACViH,iBAAkD,QAAlCkJ,EAAE7Q,KAAKZ,MAAMgC,KAAKuG,wBAAgB,IAAAkJ,OAAA,EAAhCA,EAAkCxP,SAGxDrB,KAAKgR,gBAGFC,mBAAmBC,GACtBlR,KAAKgR,gBAGFG,sBAAsBC,EAA0CC,GACnE,OAAIrR,KAAKC,QAAUoR,GAAarR,KAAKZ,MAAMgC,OAASgQ,EAAUhQ,KAO3DmB,SAAM,IAAA+O,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EACT,MAAM,GACFxK,EAAE,SACF0C,EACA9G,QAAQ,gBAAE6O,EAAe,oBAAEC,GAC3BhP,SACIkN,SACI+B,MAAM,gBAAEC,EAAe,UAAEC,KAEhC,QACDnP,EAAO,UACPtB,GACAvB,KAAKZ,MAEHT,EAAQqB,KAAKZ,MAAMgC,KAAKzC,MAAQqB,KAAKZ,MAAMgC,KAAKzC,KAAK0C,aAAWpD,EAChEgU,EAAmBlM,YAAW,WAAY/F,KAAKZ,MAAMyD,QAAQmD,gBAAkB,GAC/EkM,EAAUnM,YAAW,OAAQ/F,KAAKZ,MAAMyD,QAAQmD,gBAAkB,GAClEmM,EAAcnS,KAAKoS,gBAAgBL,EAAiBE,EAAkBD,GAAa,IACnFK,EAAc1T,GAAQA,EAAKA,KAAKqO,WAA4C,IAA/BrO,EAAKA,KAAKqO,UAAUlF,OAEjEwK,GACF3T,aAAI,EAAJA,EAAMiE,uBAAwB5C,KAAKZ,MAAMyD,QAAQC,IAAIC,OAAOC,oBAAsBC,oBAAkBC,aAClG+B,EAAiBtG,aAAI,EAAJA,EAAMsG,eACvBsN,EAA0D,QAArCjB,EAAGtR,KAAKZ,MAAMyD,QAAQkN,QAAQyC,eAAO,IAAAlB,OAAA,EAAlCA,EAAoCmB,sBAC5D1O,EAAY/D,KAAK0S,gBACjBC,EAAgCC,qCACd,QADwCrB,EAC5D5S,aAAI,EAAJA,EAAMA,KAAKqO,iBAAS,IAAAuE,IAAI,GACoB,QADlBC,EAC1BxR,KAAKC,MAAM8M,aAAa3D,4BAAoB,IAAAoI,IAAI,GAChDxR,KAAKZ,MAAMyD,QAAQmD,cACa,QADAyL,EAChCzR,KAAKC,MAAM8M,aAAa/O,gBAAQ,IAAAyT,IAAI,GACpCc,GAEEvG,IACD2G,WAA+BE,WAC9BF,IAAkC3S,KAAKC,MAAM4P,eAC9C9L,GAAYA,EAAU+O,KAAKrO,GAAYA,EAASuH,UAC/C+G,EAAgB/S,KAAKZ,MAAMgC,KAAKzC,MAAwC,YAAhCqB,KAAKZ,MAAMgC,KAAKzC,KAAKqU,QAAwBpB,EACrFtQ,EAAmB3C,WAAM2C,iBAAmB3C,EAAK2C,iBAAmB,EACpE2R,EAAqB1R,EAAU2R,oBAAoB1N,QAAQ,UAAWlE,EAAiBmO,YACvFhM,EAAclC,EAAUkC,YACxB0P,EAAgB,CAClB1T,IAAK2T,sBACLd,qBACA3S,UAAW,aACXC,WAAW,EACXC,UAAW,iCACXwT,QAAS,QACT5G,YAAa,SACb6G,OAAQnM,EACRoM,uBAAuB,EACvBC,YAAatB,EACbuB,gBAAgB,GAIdzO,EAASrG,IAASA,EAAKsG,gBAAkBtG,EAAKA,KAAKuG,kBAAgBjH,EACnEyV,EAAc1O,EACdzD,EAAUgE,uBAAuBC,QAAQ,UAAW3C,EAAQuC,iBAAiBC,eAAeL,IAC5F,GAENhF,KAAK0M,4BAAyE,QAA9CgF,EAAG1R,KAAKZ,MAAMgC,KAAKsL,mCAA2B,IAAAgF,OAAA,EAA3CA,EAA6CrQ,OAChFrB,KAAKgO,kCAAgE,QAA/B2D,EAAG3R,KAAKZ,MAAMgC,KAAKuS,oBAAY,IAAAhC,GAAQ,QAARA,EAA5BA,EAA8BtQ,cAAM,IAAAsQ,GAE5E,QAF4EA,EAApCA,EAAsCvT,KAC3EwV,GAHkC,oEAGvBA,EAAQC,aACtB,IAAAlC,OAAA,EAFwCA,EAEtCmC,UAEH,MAAMC,EAASC,IAAA,GACRhU,KAAKZ,OAAK,IACboE,SACIvE,IAAA8B,cAACkT,oBAAiB,CACdC,UAAW3S,EAAU2S,UACrBC,aAAc5S,EAAU4S,aACxBtR,QAASA,EACTsE,GAAIA,EACJ0C,SAAUA,EACVzI,KAAM,CAAEzC,QACR6B,iBAAkBR,KAAKQ,mBAG/BwD,UAAWD,EACXqQ,gBAAiBrB,EAAgBI,OAAgBlV,EACjD6F,iBAAkB,CACdjE,UAAW,4BAEfwD,gBAAiB,CACbxD,UAAW0E,IAAW,gBACtB4C,GAAInH,KAAKZ,MAAM+H,IAEnB9C,oBAAqB,CACjBxE,UAAW0E,IAAW,wBAM1BoB,2BACK0M,GAAgBpN,GAAoB4M,IAAuBE,EAUxD,KATA9S,IAAA8B,cAACC,SAAMmC,OAAAC,OAAA,CACHiR,SAAUrI,EACVnM,UAAU,6BACViG,KAAMqM,EACNvF,MAAOrL,EAAU+S,qBACbtU,KAAKsQ,4BAER/O,EAAU+S,qBAGvB1O,uBACIiM,GAAwBQ,GAAgBN,EAUpC,KATA9S,IAAA8B,cAACC,SAAMmC,OAAAC,OAAA,CACHiR,SAAUrI,EACVnM,UAAU,kCACViG,KAAMmM,EACNrF,MAAOrL,EAAUgT,0BACbvU,KAAK0Q,2BAERnP,EAAUgT,0BAGvB1O,eACI5G,IAAA8B,cAACC,SAAMmC,OAAAC,OAAA,CACHvD,UAAU,6BACViG,KAAMoM,EACNtF,MAAOqG,GACHjT,KAAK4Q,2BAERqC,GAGTpP,qCAAsC,KACtCJ,YAAaxE,IAAA8B,cAAA,QAAMlB,UAAU,8BAA8B4D,GAC3D0B,WAAYlG,IAAA8B,cAAA,OAAKlB,UAAU,0BAA0B6T,KAGzD,OAAO1T,KAAKZ,MAAMoV,WAAWT,GAGzB/C,gBAAa,IAAAyD,EAAAC,EACjB,MACItT,MAAM,KAAEzC,IACRqB,KAAKZ,MACHuV,EAAwC,QAA7BF,EAAc,QAAdC,EAAG/V,EAAK0C,cAAM,IAAAqT,GAAM,QAANA,EAAXA,EAAa/V,YAAI,IAAA+V,OAAA,EAAjBA,EAAmBE,eAAO,IAAAH,SAAIxW,EAC9C+B,KAAK6U,2BAA6BF,IAItC3U,KAAK6U,yBAA2BF,EAE5B3U,KAAKC,MAAMkJ,+BACX2L,YAAkBnW,EAAMqB,KAAKZ,MAAMuF,UAAW3E,KAAKZ,MAAMyD,SACpDsK,KAAM9L,IACHrB,KAAKU,SAAS,CAAEmP,aAAc3R,kBAAgBC,YAAYkD,aAAM,EAANA,EAAQ0T,4BAErE3H,MAAM,KACHpN,KAAKU,SAAS,CAAEmP,aAAa,MAGrC7P,KAAKU,SAAS,CAAEmP,aAAa,KAI7BuC,gBAAgBL,EAA0BE,EAA0BD,GACxE,GAAID,EACA,OAAOE,EAGX,MAAM+C,EAAgBC,mBAAShD,GAC/B,IAAIiD,EAAYjD,EAKhB,OAJIkD,IAAiBjT,YAAc8S,IAC/BE,EAAY,GAAG/S,OAAOmG,SAAS8M,SAASnD,KAGrC,GAAGD,IAAaA,EAAUqD,SAAS,KAAa,IAAN,SAAeH,IAmB5DxC,gBAAa,IAAA4C,EACjB,MACIzS,SACIkN,SAAWyC,SAAS,uBAAE+C,GAA2B,CAAEA,4BAAwBtX,KAC9E,OACD8E,EAAM,UACN4B,EAAS,UACTpD,GACAvB,KAAKZ,MAEHuK,EAAgB3J,KAAK4O,kBAAkB7L,EAAO4G,eAC9ChL,EAAOqB,KAAKZ,MAAMgC,KAAKzC,MAAQqB,KAAKZ,MAAMgC,KAAKzC,KAAK0C,OAI1D,OAAOrB,KAAKC,MAAM8M,aAAa/O,UAAYW,GAAQA,EAAKA,KAAKqO,WAAarO,EAAKA,KAAKqO,UAAUlF,OAAS,EFZ3E1I,KAChC,MAAM,SAAEpB,EAAQ,UAAEgG,GAAc5E,EAChC,OAAO2J,EAAmB/E,EAAWhG,EAAUoB,IEWrCoW,CAAoB,CAChBxR,UAAWhE,KAAKiO,mBAAmBtP,EAAKA,KAAKqO,UAAWjK,EAAO0S,oBAC/DzX,SAAUgC,KAAKC,MAAM8M,aAAa/O,SAClCoL,qBAAsBpJ,KAAKC,MAAM8M,aAAa3D,qBAC9CvB,uBAAwB7H,KAAKC,MAAM8M,aAAac,gBAChDlE,gBACAO,oBAAqBlK,KAAKZ,MAAMyD,QAAQC,IAAIC,OAAOmH,qBAAuB,EAC1ED,oBAAqBjK,KAAKZ,MAAMyD,QAAQC,IAAIC,OAAO2S,mBAAoB,EACvEhL,oBAAqBiL,2CAAiC3V,KAAKZ,MAAMyD,QAAQC,IAAIC,OAAO6S,4BACpFhM,aAAc5J,KAAKZ,MAAMyD,QAAQkN,QAAQnG,aACzC/G,QAAS7C,KAAKZ,MAAMyD,QACpBgH,SAAU7J,KAAKZ,MAAMyK,SACrB1C,GAAInH,KAAKZ,MAAM+H,GACf5F,UAAW,CACPsU,WAAYtU,EAAUuU,yBACtBC,YAAaxU,EAAUyU,0BACvBC,aAAc1U,EAAU2U,kCACxBC,YAAa5U,EAAU6U,0BACvBC,sBAAuB9U,EAAU+U,oBACjCC,0BAA2BhV,EAAUgV,0BACrCC,uBAAwB,GACxBC,mBAAoB,GACpBC,kBAAmB,GACnBC,iBAAkB,GAClBC,oBAAqB,GACrBpO,aAAcjH,EAAUiH,cAE5B7D,YACAmF,iBAAkBvI,EAAUsV,qBAC5BC,eAAgB,GAChBC,kBAAmB,GACnBC,qBAAsB,GACtBvY,UAAWE,EACXgJ,iBAAkB3H,KAAKC,MAAM0H,iBAC7BoC,uBAAwB/J,KAAKqP,2BAC7B4H,uBAAwB1B,EACxB/U,iBAAkBR,KAAKQ,iBACvBkM,4BAA6B1M,KAAKgO,kCAAoChO,KAAK0M,iCAA8BzO,EACzGkL,+BAAgCnJ,KAAKC,MAAMkJ,+BAC3CgD,SAAkC,QAA1BmJ,EAAEtV,KAAKZ,MAAMgC,KAAK+K,gBAAQ,IAAAmJ,OAAA,EAAxBA,EAA0BjU,SAExC,KA4BF,sCAAmC,IAAA6V,EAAAC,EACvC,MAAMC,QAAwBpX,KAAKZ,MAAMgC,KAAKuS,aAM9C,IAHIyD,SAEC,QAFcF,EAAfE,EAAiBhZ,KACbuV,GAAsC,wEAAtBA,EAAaE,aAChC,IAAAqD,OAAA,EAFDA,EAEGpD,aAAa,EAGhB,YADA9T,KAAKU,SAAS,CAAEyI,gCAAgC,IAGpD,MAAMkO,EAA4D,QAArBF,EAAGnX,KAAKZ,MAAMyD,eAAO,IAAAsU,GAAS,QAATA,EAAlBA,EAAoBpH,eAAO,IAAAoH,GAAK,QAALA,EAA3BA,EAA6BrU,WAAG,IAAAqU,GAAU,QAAVA,EAAhCA,EAAkCG,gBAAQ,IAAAH,OAAA,EAA1CA,EAA4CI,iCAC5F,GAAKF,GAAuF,SAA5CA,EAAhD,CAKA,IAAK,IAADG,EACA,MAAMJ,QAAwBpX,KAAKZ,MAAMgC,KAAKuS,aAK9C,MAHIyD,SAEC,QAFcI,EAAfJ,EAAiBhZ,KACbuV,GAAsC,oEAAtBA,EAAaE,aAChC,IAAA2D,OAAA,EAFDA,EAEG1D,aAAa,GAGhB,YADA9T,KAAKU,SAAS,CAAEyI,gCAAgC,IAGtD,MAAOvE,GAIL,OAHA5E,KAAKZ,MAAMuF,UAAUgL,QAAQ/K,GAC7B5E,KAAKZ,MAAMuF,UAAUiL,MAAM,qCAC3B5P,KAAKU,SAAS,CAAEyI,gCAAgC,IAGJ,QAA5CkO,EACArX,KAAKU,SAAS,CAAEyI,gCAAgC,IAEhDnJ,KAAKZ,MAAMgC,KAAKqW,oBACXtK,KAAKuK,IACF,MAAMrW,IACAqW,IAC4C,QAA5CL,GAAqDK,EAAaC,OACnB,QAA5CN,IAAsDK,EAAaC,OAC5E3X,KAAKU,SAAS,CAAEyI,+BAAgC9H,MAEnD+L,MAAMxI,IACH5E,KAAKZ,MAAMuF,UAAUgL,QAAQ/K,GAC7B5E,KAAKZ,MAAMuF,UAAUiL,MAAM,sCAjCnC5P,KAAKU,SAAS,CAAEyI,gCAAgC,MArWtD2E,EAAQ8J,YAAA,CADbC,KACK/J,GA4YSA,a,2rBCldf,MAAMgK,EAAU,CAAEC,QAAS,GAAIC,YAAa,IAmBlCC,EAA8BA,CAACC,EAAqBC,KAUlD,GADAL,EAAQE,YAAYE,GAAuBC,GACtCL,EAAQE,YAAYE,GAAqBE,QAC1C,MAAM,IAAI9K,MAAM,oBAAsB4K,EAAsB,mCAEhEJ,EAAQE,YAAYE,GAAqBE,QAAQC,UAAUC,eAAiBJ,EACxEJ,EAAQE,YAAYE,GAAqBE,QAAQC,UAAUlR,KAC3D2Q,EAAQE,YAAYF,EAAQE,YAAYE,GAAqBE,QAAQC,UAAUlR,IAAM+Q,IAMhGJ,EAAQC,QAAQ,aAAe,CAC5BQ,EAAGA,IAAMC,EAAQ,QACjBC,MAAO,kBACPC,GAAI,CAAC,CAACC,KAAK,OAASC,KAAK,mFAAoFC,MAAO,GAAG,CAACF,KAAK,WAAaC,KAAK,kEAAmEC,MAAO,GAAG,CAACF,KAAK,8BAAgCC,KAAK,+FAAgGC,MAAO,GAAG,CAACF,KAAK,mBAAqBC,KAAK,0EAA2EC,MAAO,GAAG,CAACF,KAAK,sBAAwBC,KAAK,kEAAmEC,MAAO,GAAG,CAACF,KAAK,eAAiBC,KAAK,uEAAwEC,MAAO,GAAG,CAACF,KAAK,mBAAqBC,KAAK,+EAAgFC,MAAO,IAE3zBC,KAAK,EACLC,GAAI,6BACJC,EAAG,YACHC,EAAG,OAEHC,IAAK,GAGLC,GAAI,2EAOAlB,EAF4B,kEACXO,EAAQ,SAQzBP,EAF4B,+FACXO,EAAQ,SAQzBP,EAF4B,kEACXO,EAAQ,SAQzBP,EAF4B,0EACXO,EAAQ,SAQzBP,EAF4B,uEACXO,EAAQ,SAQzBP,EAF4B,+EACXO,EAAQ,SAQzBP,EAF4B,mFACXO,EAAQ,SAMjCrW,OAAOiX,aAAejX,OAAOiX,cAAgB,GAC7CjX,OAAOiX,aAAarB,QAAO/D,IAAA,GACpB7R,OAAOiX,aAAarB,SAAW,IAC/BD,EAAQC,SAGX5V,OAAOiX,aAAapB,YAAWhE,IAAA,GAC5B7R,OAAOiX,aAAapB,aAAe,IACnCF,EAAQE,aAEY,MAAMqB,EAAiB,GAC9BA,EAAe,8DAAgE,CACvFd,EAAGA,IAAMC,EAAQ,QACjBc,GAAI,iCAEpBD,EAAe,kEAAoE,CACnEd,EAAGA,IAAMC,EAAQ,QACjBc,GAAI,iCAEpBD,EAAe,8DAAgE,CAC/Dd,EAAGA,IAAMC,EAAQ,QACjBc,GAAI,iCAEpBD,EAAe,0DAA4D,CAC3Dd,EAAGA,IAAMC,EAAQ,QACjBc,GAAI,iCAEpBD,EAAe,+DAAiE,CAChEd,EAAGA,IAAMC,EAAQ,QACjBc,GAAI,6CAEpBD,EAAe,4FAA8F,CAC7Fd,EAAGA,IAAMC,EAAQ,QACjBc,GAAI,+DAEpBnX,OAAOiX,aAAejX,OAAOiX,cAAgB,GAC7CjX,OAAOiX,aAAaC,eAAcrF,IAAA,GACP7R,OAAOiX,aAAaC,gBAAkB,IACtCA,I,+ECnGZra,UAnBqCI,GAChDH,gBAACwC,OAAI0B,OAAAC,OAAA,GAAKhE,EAAMiE,gBAAqBjE,EAAMkE,uBAAuBlE,IAC7DA,EAAMoE,WACNpE,EAAMgV,iBACHnV,gBAACwC,OAAI0B,OAAAC,OAAA,GAAKhE,EAAMgV,iBACXhV,EAAMqE,YACNrE,EAAMyE,qCACP5E,gBAACwC,OAAI0B,OAAAC,OAAA,GAAKhE,EAAM0E,kBAvBPyV,EAACxV,EAAuD3E,IACxE2E,EAIEA,EAAUE,IAAI,CAACC,EAAUC,IAExBlF,gBAACwC,OAAI0B,OAAAC,OAAA,GAAKhE,EAAMiF,oBAAmB,CAAEC,IAAKH,IACrCD,EAASO,SACTP,EAASM,cACTN,EAASQ,UARlBtF,EAAMyD,QAAQ8B,UAAUC,MAAM,kDACvB,MAoBoC2U,CAAiBna,EAAM4E,UAAW5E,IACpEA,EAAM+F,WACN/F,EAAMuG,2BACNvG,EAAMwG,sBACNxG,EAAMyG,kB,mBCtCvB2T,EAAOC,QAAUxa,O,mBCAjBua,EAAOC,QAAUC,U,sJC4BV9S,eAAekO,EAClBnW,EACAgG,EACAgV,GAC2B,IAEvBC,EACAjF,EAHJkF,IAAAC,UAAAhS,OAAA,QAAA7J,IAAA6b,UAAA,KAAAA,UAAA,GAIA,IACIF,QAAmBjb,EACnBgW,EAAciF,EAAWjb,KAAKiW,QAChC,MAAOhQ,GAGL,OAFAD,EAAUgL,QAAQ/K,GAClBD,EAAUiL,MAAM,uCACTmK,cAAYC,UAGvB,IAAIrF,EAmCA,OADAhQ,EAAUgL,QAAQ,uDACXoK,cAAYC,UAlCnB,IAAK,IAADC,EACA,MAAMC,QAAoDC,mBAAiBC,yBACvE,CAAEpT,cAAe2S,EAAa3T,cAAeqU,YAAa,QAC1DT,EAAWjb,KAAK2b,GAChB3F,GAGJ,aAAaoF,cAAYC,QAAkD,QAA3CC,EAACC,EAAiBK,iCAAyB,IAAAN,SAAIhc,GACjF,MAAO2G,GAEL,GAAIiV,GAA8B,2DAAfjV,EAAM+T,KAAmE,CACxF,UACUiB,EAAWY,YAAY,IAC/B,MAAOC,GAGL,OAFA9V,EAAUgL,QAAQ8K,GAClB9V,EAAUiL,MAAM,0BACTmK,cAAYC,UAEvB,IAEI,aADMlF,EAAkBnW,EAAMgG,EAAWgV,GAAc,GAChDI,cAAYC,UACrB,MAAOU,GAGL,OAFA/V,EAAUgL,QAAQ+K,GAClB/V,EAAUiL,MAAM,2BACTmK,cAAYC,WAM3B,OAFArV,EAAUgL,QAAQ/K,GAClBD,EAAUiL,MAAM,2BACTmK,cAAYC,WAiExBpT,eAAe+T,EAClBxR,EACAyQ,EACAjV,EACA3G,EACA4c,EACAC,GAEA,GAAIjB,EAAY,CACZ,IAAIkB,GAA0C,EAC9C,GAAI5c,kBAAgBC,YAAYH,IAAamL,EAAgC,CAAC,IAAD4R,EACzE,MAAMC,EAA6Chd,EAASI,KACvDC,GAA2BA,EAAQC,WAAasc,EAAiB5S,WAEtE8S,IAAmCE,KAA6C,QAAzBD,EAACC,EAAgBlc,gBAAQ,IAAAic,IAAxBA,EAA0BpQ,sBAElFmQ,GAAiC,EAGrC,MAAMhU,EAAQ,CACVmU,WAAYL,EAAiBpL,OAAQC,WACrCyL,YAAaL,EACbM,qBAAsB,CAAEL,mCAG5B,IACI,MAAMM,QAA4CxB,EAAWyB,uBAAuBvU,GACpF,aAAaiT,cAAYC,QAAQoB,GACnC,MAAOxW,GACLD,EAAUgL,QAAS/K,EAAgB0W,SACnC3W,EAAUiL,MAAM,wCAIxB,OAAOmK,cAAYC,a","file":"static/js/53.016c0de392de9d9777b2.chunk.js","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ICartState } from '@msdyn365-commerce/global-state';\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\n\n/**\n * Find the product in array of products considering product id.\n * @param productId - The searched product id.\n * @param products - The array of products in which search is executed.\n * @returns - The found product.\n */\nexport function getProductByProductId(productId: number | undefined, products?: SimpleProduct[]): SimpleProduct | undefined {\n if (productId !== undefined && ArrayExtensions.hasElements(products)) {\n return products.find(product => {\n return productId === product.RecordId;\n });\n }\n\n return undefined;\n}\n\n/**\n * Find the product in array of products considering product id and product behavior's warehouse.\n * @param productId - The searched product id.\n * @param products - The array of products in which search is executed.\n * @param warehouseId - Warehouse id of cartLine.\n * @param cartState - The cart start in case cart line has no warehouse.\n * @returns - The found product.\n */\nexport function getProductByProductIdAndWarehouse(\n productId: number | undefined,\n products?: SimpleProduct[],\n warehouseId?: string,\n cartState?: ICartState\n): SimpleProduct | undefined {\n const targetWarehouseValue = warehouseId ?? cartState?.cart.WarehouseId;\n\n if (productId !== undefined && ArrayExtensions.hasElements(products)) {\n return products.find(product => {\n return productId === product.RecordId && product.Behavior?.InventoryLocationId === targetWarehouseValue;\n });\n }\n\n return undefined;\n}\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport { AddToCartBehavior } from '@msdyn365-commerce/components';\r\nimport MsDyn365, { getUrlSync } from '@msdyn365-commerce/core';\r\nimport { ICartIconViewProps, ICartViewProps, IFlyoutCartLineItemViewProps } from '@msdyn365-commerce-modules/cart';\r\nimport { Button, getPayloadObject, INodeProps, KeyCodes, Modal, Node, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport React from 'react';\r\n\r\nimport { ICartIconProps as ICartIconExtensionProps } from '../definition-extensions/cart-icon.ext.props.autogenerated';\r\n\r\n/**\r\n * ICartIconViewState: Interface for Cart Icon View State.\r\n */\r\ninterface ICartIconViewState {\r\n isModalOpen: boolean;\r\n}\r\n\r\n/**\r\n * Render Cart lines.\r\n * @param cartLines - Flyout cart line view props.\r\n * @param props - Cart icon view props.-\r\n * @returns JSX Element.\r\n */\r\nconst renderCartlines = (cartLines: IFlyoutCartLineItemViewProps[] | undefined, props: ICartIconViewProps): JSX.Element[] | null => {\r\n if (!cartLines) {\r\n props.context.telemetry.error('Cartlines content is empty, module wont render');\r\n return null;\r\n }\r\n\r\n return cartLines.map((cartLine, index) => {\r\n const cartLineIndex = index;\r\n return (\r\n \r\n {cartLine.cartline}\r\n {cartLine.storeLocation}\r\n {cartLine.remove}\r\n \r\n );\r\n });\r\n};\r\n\r\n/**\r\n * Initiate total price.\r\n * @param props - Cart icon view props.\r\n * @returns JSX Element.\r\n */\r\nconst renderTotalPrice = (props: ICartIconViewProps & ICartIconExtensionProps<{}>): JSX.Element | null => {\r\n const cart = props.data.cart.result ?? undefined;\r\n const price = cart && !cart.hasInvoiceLine && (cart.cart.TotalAmount || undefined);\r\n const totalPrice = price\r\n ? props.context.cultureFormatter.formatCurrency(price)\r\n : props.context.cultureFormatter.formatCurrency(props.resources.emptyPrice);\r\n return (\r\n
\r\n \r\n {props?.resources?.totalPriceFormatString.replace('{price}', '')}\r\n {totalPrice}\r\n \r\n
\r\n );\r\n};\r\n\r\n/**\r\n *\r\n * CartIconView component.\r\n * @extends {React.PureComponent}\r\n */\r\nexport class CartIconView extends React.PureComponent<\r\n ICartViewProps & ICartIconViewProps & ICartIconExtensionProps<{}>,\r\n ICartIconViewState\r\n> {\r\n private isAutoDisplayTriggered: boolean;\r\n\r\n private readonly cartIconRef: React.RefObject = React.createRef();\r\n\r\n public constructor(props: ICartViewProps & ICartIconViewState & ICartIconViewProps & ICartIconExtensionProps<{}>) {\r\n super(props);\r\n this.isAutoDisplayTriggered = false;\r\n this.state = {\r\n isModalOpen: false\r\n };\r\n }\r\n\r\n public componentDidMount(): void {\r\n if (MsDyn365.isBrowser) {\r\n window.addEventListener('keydown', this._escFunction, false);\r\n }\r\n }\r\n\r\n public componentWillUnmount(): void {\r\n if (MsDyn365.isBrowser) {\r\n window.removeEventListener('keydown', this._escFunction, false);\r\n }\r\n }\r\n\r\n /**\r\n * Render Cart Item count.\r\n * @returns JSX Element.\r\n */\r\n public render(): JSX.Element | null {\r\n const cart = this.props.data.cart.result ?? undefined;\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- check config.\r\n const shouldShowMiniCart =\r\n cart?.isProductAddedToCart && this.props.context.app.config.addToCartBehavior === AddToCartBehavior.showMiniCart;\r\n if (shouldShowMiniCart) {\r\n if (!this.isAutoDisplayTriggered) {\r\n // First time trigger auto mini cart.\r\n this.setState({ isModalOpen: true });\r\n this.isAutoDisplayTriggered = true;\r\n } else if (!this.state.isModalOpen) {\r\n // If modal is closed, reset the flag.\r\n this.isAutoDisplayTriggered = false;\r\n }\r\n }\r\n return (\r\n \r\n \r\n \r\n \r\n {this.props.flyoutTitle}\r\n {this._renderCartItemCount(this.props)}\r\n {this._renderCartCloseIcon()}\r\n \r\n \r\n {this.props.data.cart.result?.isEmpty ? this.props.slots.emptyCart : null}\r\n {this.props.checkoutBlockedDueToUnavailableFunds}\r\n {renderCartlines(this.props.cartlines, this.props)}\r\n \r\n \r\n {this.props.slots.promoContentItem}\r\n {renderTotalPrice(this.props)}\r\n

{this.props.resources.subTotalMessage}

\r\n {this.props.checkoutAsSignInUserButton}\r\n {this.props.checkoutAsGuestButton}\r\n {this.props.data.cart.result?.isEmpty ? null : this.props.goToCartButton}\r\n \r\n {this.props.data.cart.result?.isEmpty ? (\r\n \r\n {this.props.resources.continueShoppingButtonTitle}\r\n \r\n ) : null}\r\n \r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n /**\r\n * Initiate modal container.\r\n * @returns Inode props.\r\n */\r\n private readonly _modalContainer = (): INodeProps => {\r\n return {\r\n tag: Modal,\r\n placement: 'bottom-end',\r\n hideArrow: true,\r\n className: 'ms-cart-icon__minicartmodal-container',\r\n wrapClassName: 'ms-cart-icon__minicartmodal',\r\n isOpen: this.state.isModalOpen,\r\n toggle: this.closeModal\r\n };\r\n };\r\n\r\n /**\r\n * Initiate open modal.\r\n */\r\n private readonly _openModal = (): void => {\r\n const payLoad = getPayloadObject('click', this.props.telemetryContent!, 'cart-icon', '');\r\n onTelemetryClick(this.props.telemetryContent!, payLoad, 'cart-icon');\r\n this.setState({\r\n isModalOpen: true\r\n });\r\n };\r\n\r\n /**\r\n * Initiate close modal.\r\n */\r\n private readonly closeModal = (): void => {\r\n this.cartIconRef.current?.focus();\r\n this.setState({\r\n isModalOpen: false\r\n });\r\n };\r\n\r\n /**\r\n * Initiate cart close Icon.\r\n * @returns JSX Element.\r\n */\r\n private readonly _renderCartCloseIcon = (): JSX.Element | null => {\r\n return \n \n \n {this.props.flyoutTitle}\n {this._renderCartItemCount(this.props)}\n {this._renderCartCloseIcon()}\n \n \n {this.props.data.cart.result?.isEmpty ? this.props.slots.emptyCart : null}\n {this.props.checkoutBlockedDueToUnavailableFunds}\n {renderCartlines(this.props.cartlines, this.props)}\n \n \n {this.props.slots.promoContentItem}\n {renderTotalPrice(this.props)}\n {renderSubtotalMessage(this.props)}\n {this.props.checkoutAsSignInUserButton}\n {this.props.checkoutAsGuestButton}\n {this.props.data.cart.result?.isEmpty ? null : this.props.goToCartButton}\n \n {this.props.data.cart.result?.isEmpty ? (\n \n {this.props.resources.continueShoppingButtonTitle}\n \n ) : null}\n \n \n \n \n );\n }\n\n /**\n * Initiate modal container.\n * @returns Inode props.\n */\n private readonly _modalContainer = (): INodeProps => {\n return {\n tag: Modal,\n placement: 'bottom-end',\n hideArrow: true,\n className: 'ms-cart-icon__minicartmodal-container',\n wrapClassName: 'ms-cart-icon__minicartmodal',\n isOpen: this.state.isModalOpen,\n toggle: this.closeModal\n };\n };\n\n /**\n * Initiate open modal.\n */\n private readonly _openModal = (): void => {\n const payLoad = getPayloadObject('click', this.props.telemetryContent!, 'cart-icon', '');\n onTelemetryClick(this.props.telemetryContent!, payLoad, 'cart-icon');\n this.setState({\n isModalOpen: true\n });\n };\n\n /**\n * Initiate close modal.\n */\n private readonly closeModal = (): void => {\n this.cartIconRef.current?.focus();\n this.setState({\n isModalOpen: false\n });\n };\n\n /**\n * Initiate cart close Icon.\n * @returns JSX Element.\n */\n private readonly _renderCartCloseIcon = (): JSX.Element | null => {\n return \r\n \r\n \r\n {this.props.flyoutTitle}\r\n {this._renderCartItemCount(this.props)}\r\n {this._renderCartCloseIcon()}\r\n \r\n \r\n {this.props.data.cart.result?.isEmpty ? this.props.slots.emptyCart : null}\r\n {this.props.checkoutBlockedDueToUnavailableFunds}\r\n {renderCartlines(this.props.cartlines, this.props)}\r\n \r\n \r\n {this.props.slots.promoContentItem}\r\n {renderTotalPrice(this.props)}\r\n

{this.props.resources.subTotalMessage}

\r\n {this.props.checkoutAsSignInUserButton}\r\n {this.props.checkoutAsGuestButton}\r\n {this.props.data.cart.result?.isEmpty ? null : this.props.goToCartButton}\r\n \r\n {this.props.data.cart.result?.isEmpty ? (\r\n \r\n {this.props.resources.continueShoppingButtonTitle}\r\n \r\n ) : null}\r\n \r\n
\r\n
\r\n \r\n );\r\n }\r\n\r\n /**\r\n * Initiate modal container.\r\n * @returns Inode props.\r\n */\r\n private readonly _modalContainer = (): INodeProps => {\r\n return {\r\n tag: Modal,\r\n placement: 'bottom-end',\r\n hideArrow: true,\r\n className: 'ms-cart-icon__minicartmodal-container',\r\n wrapClassName: 'ms-cart-icon__minicartmodal',\r\n isOpen: this.state.isModalOpen,\r\n toggle: this.closeModal\r\n };\r\n };\r\n\r\n /**\r\n * Initiate open modal.\r\n */\r\n private readonly _openModal = (): void => {\r\n const payLoad = getPayloadObject('click', this.props.telemetryContent!, 'cart-icon', '');\r\n onTelemetryClick(this.props.telemetryContent!, payLoad, 'cart-icon');\r\n this.setState({\r\n isModalOpen: true\r\n });\r\n };\r\n\r\n /**\r\n * Initiate close modal.\r\n */\r\n private readonly closeModal = (): void => {\r\n this.cartIconRef.current?.focus();\r\n this.setState({\r\n isModalOpen: false\r\n });\r\n };\r\n\r\n /**\r\n * Initiate cart close Icon.\r\n * @returns JSX Element.\r\n */\r\n private readonly _renderCartCloseIcon = (): JSX.Element | null => {\r\n return \r\n \r\n \r\n {this.props.flyoutTitle}\r\n {this._renderCartItemCount(this.props)}\r\n {this._renderCartCloseIcon()}\r\n \r\n \r\n {this.props.data.cart.result?.isEmpty ? this.props.slots.emptyCart : null}\r\n {this.props.checkoutBlockedDueToUnavailableFunds}\r\n {renderCartlines(this.props.cartlines, this.props)}\r\n \r\n \r\n {this.props.slots.promoContentItem}\r\n {renderTotalPrice(this.props)}\r\n

{this.props.resources.subTotalMessage}

\r\n {this.props.checkoutAsSignInUserButton}\r\n {this.props.checkoutAsGuestButton}\r\n {this.props.data.cart.result?.isEmpty ? null : this.props.goToCartButton}\r\n \r\n {this.props.data.cart.result?.isEmpty ? (\r\n \r\n {this.props.resources.continueShoppingButtonTitle}\r\n \r\n ) : null}\r\n \r\n
\r\n
\r\n \r\n );\r\n }\r\n\r\n /**\r\n * Initiate modal container.\r\n * @returns Inode props.\r\n */\r\n private readonly _modalContainer = (): INodeProps => {\r\n return {\r\n tag: Modal,\r\n placement: 'bottom-end',\r\n hideArrow: true,\r\n className: 'ms-cart-icon__minicartmodal-container',\r\n wrapClassName: 'ms-cart-icon__minicartmodal',\r\n isOpen: this.state.isModalOpen,\r\n toggle: this.closeModal\r\n };\r\n };\r\n\r\n /**\r\n * Initiate open modal.\r\n */\r\n private readonly _openModal = (): void => {\r\n const payLoad = getPayloadObject('click', this.props.telemetryContent!, 'cart-icon', '');\r\n onTelemetryClick(this.props.telemetryContent!, payLoad, 'cart-icon');\r\n this.setState({\r\n isModalOpen: true\r\n });\r\n };\r\n\r\n /**\r\n * Initiate close modal.\r\n */\r\n private readonly closeModal = (): void => {\r\n this.cartIconRef.current?.focus();\r\n this.setState({\r\n isModalOpen: false\r\n });\r\n };\r\n\r\n /**\r\n * Initiate cart close Icon.\r\n * @returns JSX Element.\r\n */\r\n private readonly _renderCartCloseIcon = (): JSX.Element | null => {\r\n return \r\n \r\n \r\n {this.props.flyoutTitle}\r\n {this._renderCartItemCount(this.props)}\r\n {this._renderCartCloseIcon()}\r\n \r\n \r\n {this.props.data.cart.result?.isEmpty ? this.props.slots.emptyCart : null}\r\n {this.props.checkoutBlockedDueToUnavailableFunds}\r\n {renderCartlines(this.props.cartlines, this.props)}\r\n \r\n \r\n {this.props.slots.promoContentItem}\r\n {renderTotalPrice(this.props)}\r\n

{this.props.resources.subTotalMessage}

\r\n {this.props.checkoutAsSignInUserButton}\r\n {this.props.checkoutAsGuestButton}\r\n {this.props.data.cart.result?.isEmpty ? null : this.props.goToCartButton}\r\n \r\n {this.props.data.cart.result?.isEmpty ? (\r\n \r\n {this.props.resources.continueShoppingButtonTitle}\r\n \r\n ) : null}\r\n \r\n
\r\n
\r\n \r\n );\r\n }\r\n\r\n /**\r\n * Initiate modal container.\r\n * @returns Inode props.\r\n */\r\n private readonly _modalContainer = (): INodeProps => {\r\n return {\r\n tag: Modal,\r\n placement: 'bottom-end',\r\n hideArrow: true,\r\n className: 'ms-cart-icon__minicartmodal-container',\r\n wrapClassName: 'ms-cart-icon__minicartmodal',\r\n isOpen: this.state.isModalOpen,\r\n toggle: this.closeModal\r\n };\r\n };\r\n\r\n /**\r\n * Initiate open modal.\r\n */\r\n private readonly _openModal = (): void => {\r\n const payLoad = getPayloadObject('click', this.props.telemetryContent!, 'cart-icon', '');\r\n onTelemetryClick(this.props.telemetryContent!, payLoad, 'cart-icon');\r\n this.setState({\r\n isModalOpen: true\r\n });\r\n };\r\n\r\n /**\r\n * Initiate close modal.\r\n */\r\n private readonly closeModal = (): void => {\r\n this.cartIconRef.current?.focus();\r\n this.setState({\r\n isModalOpen: false\r\n });\r\n };\r\n\r\n /**\r\n * Initiate cart close Icon.\r\n * @returns JSX Element.\r\n */\r\n private readonly _renderCartCloseIcon = (): JSX.Element | null => {\r\n return \n ),\n storeLocation: _renderStoreLocation(cartline, props)\n };\n};\n\nconst _renderDeliveryLocation = (cartLine: CartLine | null | undefined, props: IFlyoutCartLineItemsProps): string | undefined => {\n let deliverylocation;\n if (cartLine && cartLine.FulfillmentStoreId) {\n const orgUnitName = _getOrgUnitName(cartLine.FulfillmentStoreId, props.orgUnitLocations);\n\n let foundProductDeliveryOption;\n if (props.productDeliveryOptions && props.productDeliveryOptions.length > 0) {\n foundProductDeliveryOption = props.productDeliveryOptions.find(deliveryOption => {\n return deliveryOption && deliveryOption.ProductId === cartLine.ProductId;\n });\n }\n const delivery = foundProductDeliveryOption?.DeliveryOptions?.find(option => option.Code === cartLine.DeliveryMode);\n const location = delivery?.Description;\n\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n if (location) {\n deliverylocation = `${location}, ${orgUnitName}`;\n } else {\n deliverylocation = `${orgUnitName}`;\n }\n } else {\n deliverylocation = props.resources.shippingText;\n }\n return deliverylocation;\n};\n\nconst _renderStoreLocation = (cartLine: CartLine | null | undefined, props: IFlyoutCartLineItemsProps): JSX.Element | null => {\n if (cartLine && cartLine.FulfillmentStoreId) {\n const orgUnitName = _getOrgUnitName(cartLine.FulfillmentStoreId, props.orgUnitLocations);\n\n if (orgUnitName) {\n return (\n
\n {orgUnitName}\n
\n );\n }\n }\n\n return null;\n};\n\nconst _getOrgUnitName = (fulfillmentStoreId: string | undefined, orgUnitLocations: OrgUnitLocation[] | undefined) => {\n if (!orgUnitLocations || !fulfillmentStoreId || orgUnitLocations.length === 0) {\n return '';\n }\n\n const foundLocation = orgUnitLocations.find(orgUnitLocation => {\n return orgUnitLocation.OrgUnitNumber === fulfillmentStoreId;\n });\n\n if (foundLocation) {\n return foundLocation.OrgUnitName;\n }\n return fulfillmentStoreId;\n};\n\nconst _assembleCartlines = (\n cartlines: CartLine[],\n products: SimpleProduct[] | undefined,\n props: IFlyoutCartLineItemsProps\n): IFlyoutCartLineItemViewProps[] | null => {\n const reactNodes: IFlyoutCartLineItemViewProps[] = [];\n\n if (!products || products.length === 0) {\n props.context.telemetry.error('Cartlines content is empty, module wont render');\n return null;\n }\n\n cartlines.map((cartline, index) => {\n let product;\n if (props.isQuantityLimitsFeatureEnabled) {\n // When feature is enabled the same products could have different quantity limits in Behavior so we need\n // to check productId and WarehouseId for identification.\n product = getProductByProductIdAndWarehouse(cartline.ProductId, products, cartline.WarehouseId, props.cartState);\n } else {\n product = getProductByProductId(cartline.ProductId, products);\n }\n let foundProductAvailability;\n if (props.productAvailabilites && props.productAvailabilites.length > 0) {\n foundProductAvailability = props.productAvailabilites.find(productAvailability => {\n return productAvailability.ProductAvailableQuantity?.ProductId! === cartline.ProductId;\n });\n }\n let foundProductDeliveryOption;\n if (props.productDeliveryOptions && props.productDeliveryOptions.length > 0) {\n foundProductDeliveryOption = props.productDeliveryOptions.find(deliveryOption => {\n return deliveryOption && deliveryOption.ProductId === cartline.ProductId;\n });\n }\n if (product) {\n reactNodes.push(\n _assembleNode(\n cartline,\n product,\n props,\n index,\n foundProductAvailability?.ProductAvailableQuantity,\n foundProductDeliveryOption\n )\n );\n }\n });\n\n return reactNodes;\n};\n\n/**\n * CartLineItems component.\n */\n\nexport const FlyoutCartLineItems = (props: IFlyoutCartLineItemsProps) => {\n const { products, cartlines } = props;\n return _assembleCartlines(cartlines, products, props);\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IActionContext } from '@msdyn365-commerce/core';\nimport { ICartState } from '@msdyn365-commerce/global-state';\nimport { ProductDeliveryOptions, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport {\n ActiveCartProductsInput,\n getActiveCartProductsAction,\n getAvailabilitiesForCartLineItems,\n getDeliveryOptionsForCartLineItems,\n IProductInventoryInformation,\n ProductAvailabilitiesForCartLineItems,\n ProductDeliveryOptionsForCartLineItems\n} from '@msdyn365-commerce-modules/retail-actions';\n\n/**\n * IMiniCartData entity interface.\n */\nexport interface IMiniCartData {\n products?: SimpleProduct[];\n productAvailabilites?: IProductInventoryInformation[];\n deliveryOptions?: ProductDeliveryOptions[];\n}\n\nexport const createInput = () => {\n return new ActiveCartProductsInput();\n};\n\n/**\n * Calls the Retail API and returns a mini cart data.\n * @param ctx\n * @param cartState\n */\nexport async function getMiniCartData(ctx: IActionContext, cartState: ICartState): Promise {\n const miniCartData: IMiniCartData = {};\n\n const cart = cartState.cart;\n\n // If there are cart lines, make call to get products\n // If there are invocie linese, then there is no products, so don't make call to get products\n if (cart && cart.CartLines && cart.CartLines.length > 0 && !cartState.hasInvoiceLine) {\n await getActiveCartProductsAction(new ActiveCartProductsInput(), ctx)\n .then(products => {\n if (products) {\n miniCartData.products = products;\n }\n })\n .catch(error => {\n ctx.telemetry.exception(error);\n throw new Error('[getActiveCartWithProdcuts]Unable to hydrate cart with product information');\n });\n\n await getAvailabilitiesForCartLineItems(new ProductAvailabilitiesForCartLineItems(ctx.requestContext.apiSettings), ctx)\n .then(availableQuantity => {\n if (availableQuantity) {\n miniCartData.productAvailabilites = availableQuantity;\n }\n })\n .catch(error => {\n ctx.telemetry.exception(error);\n throw new Error('[getActiveCartWithProdcuts]Unable to hydrate cart with product information');\n });\n\n await getDeliveryOptionsForCartLineItems(new ProductDeliveryOptionsForCartLineItems(ctx.requestContext.apiSettings), ctx)\n .then(deliveryOptions => {\n if (deliveryOptions) {\n miniCartData.deliveryOptions = deliveryOptions;\n }\n })\n .catch(error => {\n ctx.telemetry.exception(error);\n throw new Error('[getActiveCartWithProdcuts]Unable to hydrate cart with product information');\n });\n }\n\n return miniCartData;\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { AddToCartBehavior, CartIconComponent } from '@msdyn365-commerce/components';\nimport { getUrlSync, IDictionary, IImageSettings, msdyn365Commerce, TelemetryEvent } from '@msdyn365-commerce/core';\nimport {\n CartLine,\n ChannelDeliveryOptionConfiguration,\n CartLineValidationResultsByLineId,\n OrgUnitLocation\n} from '@msdyn365-commerce/retail-proxy';\nimport { validateCartAsync } from '@msdyn365-commerce-modules/cart-utilities';\nimport { ArrayExtensions, validateCartLinesInventory } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n INodeProps,\n ITelemetryContent,\n TelemetryConstant,\n UncontrolledTooltip,\n updateMaxQuantityForCartLineItem,\n urlCheck\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { reaction } from 'mobx';\nimport { observer } from 'mobx-react';\nimport React from 'react';\n\nimport { ICartIconData } from './cart-icon.data';\nimport { cartLinesSortOrder, ICartIconProps } from './cart-icon.props.autogenerated';\nimport { FlyoutCartLineItems, IFlyoutCartLineItemViewProps } from './components/flyout-cart-line-items';\nimport { getMiniCartData, IMiniCartData } from './utils/get-products-in-mini-cart';\n\nexport interface IMiniCartState {\n miniCartData: IMiniCartData;\n orgUnitLocations?: OrgUnitLocation[];\n isQuantityLimitsFeatureEnabled: boolean;\n isCartValid: boolean;\n}\n\nexport interface ICartIconViewProps extends ICartIconProps {\n className: string;\n cartIcon: React.ReactNode;\n FlyoutContainer?: INodeProps;\n CartlinesWrapper: INodeProps;\n miniCartWrapper: INodeProps;\n miniCartItemWrapper: INodeProps;\n cartlines?: IFlyoutCartLineItemViewProps[];\n flyoutTitle: React.ReactNode;\n totalPrice: React.ReactNode;\n checkoutAsGuestButton?: React.ReactNode;\n checkoutAsSignInUserButton?: React.ReactNode;\n goToCartButton?: React.ReactNode;\n waitingComponent?: React.ReactNode;\n isCartLoading: boolean;\n checkoutBlockedDueToUnavailableFunds?: React.ReactNode;\n\n removeItemClickHandler(cartlineToRemove: CartLine): void;\n}\n\n/**\n *\n * Cart component.\n * @extends {React.PureComponent>}\n */\n@observer\nclass CartIcon extends React.Component, IMiniCartState> {\n private readonly telemetryContent: ITelemetryContent;\n\n private readonly checkoutBySignInAttributes: IDictionary | undefined;\n\n private readonly checkoutByGuestAttributes: IDictionary | undefined;\n\n private readonly viewShoppingBagAttributes: IDictionary | undefined;\n\n private retailMultiplePickUpOptionEnabled?: boolean = false;\n\n private channelDeliveryOptionConfig?: ChannelDeliveryOptionConfiguration;\n\n private lastValidatedCartVersion: number | undefined;\n\n constructor(props: ICartIconProps) {\n super(props);\n this.state = {\n miniCartData: {},\n isCartValid: true,\n isQuantityLimitsFeatureEnabled: false\n };\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n const payload = getPayloadObject(TelemetryEvent.CheckOut, this.telemetryContent, TelemetryConstant.Checkout);\n this.checkoutBySignInAttributes = getTelemetryAttributes(this.telemetryContent, payload);\n\n payload.contentAction.etext = TelemetryConstant.GuestCheckout;\n this.checkoutByGuestAttributes = getTelemetryAttributes(this.telemetryContent, payload);\n\n payload.contentAction.etext = TelemetryConstant.ViewShoppingBag;\n this.viewShoppingBagAttributes = getTelemetryAttributes(this.telemetryContent, payload);\n }\n\n public async componentDidMount(): Promise {\n const context = this.props.context.actionContext;\n\n reaction(\n () => this.props.data.cart.result?.cart.CartLines,\n async () => {\n this.setState({\n miniCartData: await getMiniCartData(context, this.props.data.cart.result!)\n });\n }\n );\n await this._setQuantityLimitsFeatureFlag();\n\n this.setState({\n orgUnitLocations: this.props.data.orgUnitLocations?.result\n });\n\n this._validateCart();\n }\n\n public componentDidUpdate(prevProps: ICartIconProps): void {\n this._validateCart();\n }\n\n public shouldComponentUpdate(nextProps: ICartIconProps, nextState: IMiniCartState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n // eslint-disable-next-line complexity -- disabling the complexity for this method for now as its causing lot of other warnings\n public render(): JSX.Element | null {\n const {\n id,\n typeName,\n config: { enableHoverCart, isAnonymousCheckout },\n context: {\n request: {\n user: { isAuthenticated, signInUrl }\n }\n },\n context,\n resources\n } = this.props;\n\n const cart = (this.props.data.cart && this.props.data.cart.result) || undefined;\n const guestCheckoutUrl = getUrlSync('checkout', this.props.context.actionContext) || '';\n const cartUrl = getUrlSync('cart', this.props.context.actionContext) || '';\n const checkoutURL = this._getCheckoutURL(isAuthenticated, guestCheckoutUrl, signInUrl || '');\n const isCartEmpty = cart && cart.cart.CartLines && cart.cart.CartLines.length === 0;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- check config.\n const shouldShowMiniCart =\n cart?.isProductAddedToCart && this.props.context.app.config.addToCartBehavior === AddToCartBehavior.showMiniCart;\n const hasInvoiceLine = cart?.hasInvoiceLine;\n const emailDeliveryModeCode = this.props.context.request.channel?.EmailDeliveryModeCode;\n const cartLines = this._getCartLines();\n const validInventoryAcrossCartLines = validateCartLinesInventory(\n cart?.cart.CartLines ?? [],\n this.state.miniCartData.productAvailabilites ?? [],\n this.props.context.actionContext,\n this.state.miniCartData.products ?? [],\n emailDeliveryModeCode\n );\n const hasError =\n !validInventoryAcrossCartLines?.isValid ||\n (!validInventoryAcrossCartLines && !this.state.isCartValid) ||\n (cartLines ? cartLines.some(cartline => cartline.hasError) : false);\n const includeFlyout = this.props.data.cart && this.props.data.cart.status === 'SUCCESS' && enableHoverCart;\n const totalItemsInCart = cart?.totalItemsInCart ? cart.totalItemsInCart : 0;\n const goToCartButtonText = resources.goToCartButtonTitle.replace('{count}', totalItemsInCart.toString());\n const flyoutTitle = resources.flyoutTitle;\n const flyoutTooltip = {\n tag: UncontrolledTooltip,\n shouldShowMiniCart,\n placement: 'bottom-end',\n hideArrow: true,\n className: 'ms-cart-icon__flyout-container',\n trigger: 'hover',\n displayMode: 'FLYOUT',\n target: id,\n shouldShowCloseButton: true,\n cartPageUrl: cartUrl,\n hideAriaHidden: true\n };\n\n // If there are invoice lines, don't update mini cart price\n const price = (cart && !cart.hasInvoiceLine && cart.cart.TotalAmount) || undefined;\n const priceString = price\n ? resources.totalPriceFormatString.replace('{price}', context.cultureFormatter.formatCurrency(price))\n : '';\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\n this.channelDeliveryOptionConfig = this.props.data.channelDeliveryOptionConfig?.result;\n this.retailMultiplePickUpOptionEnabled = this.props.data.featureState?.result?.find(\n feature => feature.Name === multiplePickupStoreSwitchName\n )?.IsEnabled;\n\n const viewProps = {\n ...this.props,\n cartIcon: (\n \n ),\n cartlines: cartLines,\n FlyoutContainer: includeFlyout ? flyoutTooltip : undefined,\n CartlinesWrapper: {\n className: 'ms-cart-icon__cart-lines'\n },\n miniCartWrapper: {\n className: classnames('ms-cart-icon'),\n id: this.props.id\n },\n miniCartItemWrapper: {\n className: classnames('msc-cart-lines-item')\n },\n\n // If there are invoice lines, don't update mini cart checkout button\n // Checkout button will display by default to maintain backward compatibility. When Anonymous user checkout is enabled &&\n // user is authenticated then we will show the checkout button otherwise we will show the guest checkout button.\n checkoutAsSignInUserButton:\n !isCartEmpty && !hasInvoiceLine && (!isAnonymousCheckout || isAuthenticated) ? (\n \n {resources.checkoutButtonTitle}\n \n ) : null,\n checkoutAsGuestButton:\n isAnonymousCheckout && !isCartEmpty && !isAuthenticated ? (\n \n {resources.guestCheckoutButtonTitle}\n \n ) : null,\n goToCartButton: (\n \n {goToCartButtonText}\n \n ),\n checkoutBlockedDueToUnavailableFunds: null,\n flyoutTitle: {flyoutTitle},\n totalPrice:
{priceString}
\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private _validateCart(): void {\n const {\n data: { cart }\n } = this.props;\n const cartVersion = cart.result?.cart?.Version ?? undefined;\n if (this.lastValidatedCartVersion === cartVersion) {\n return;\n }\n\n this.lastValidatedCartVersion = cartVersion; // This field is populated to block concurrent requests\n\n if (this.state.isQuantityLimitsFeatureEnabled) {\n validateCartAsync(cart, this.props.telemetry, this.props.context)\n .then((result: CartLineValidationResultsByLineId | undefined) => {\n this.setState({ isCartValid: !ArrayExtensions.hasElements(result?.ValidationResultsPairs) });\n })\n .catch(() => {\n this.setState({ isCartValid: false });\n });\n } else {\n this.setState({ isCartValid: true });\n }\n }\n\n private _getCheckoutURL(isAuthenticated: boolean, guestCheckoutUrl: string, signInUrl: string): string {\n if (isAuthenticated) {\n return guestCheckoutUrl;\n }\n\n const isAbsoluteUrl = urlCheck(guestCheckoutUrl);\n let returnURL = guestCheckoutUrl;\n if (msdyn365Commerce.isBrowser && !isAbsoluteUrl) {\n returnURL = `${window.location.origin}${guestCheckoutUrl}`;\n }\n\n return `${signInUrl}${!signInUrl.includes('?') ? '?' : '&'}ru=${returnURL}`;\n }\n\n /**\n * Sort cartline items.\n * @param cartlines - Cartlines to be sorted.\n * @param sortOrder - Ascending or descending.\n * @returns - Sorted cartlines.\n */\n private readonly getSortedCartLines = (cartlines: CartLine[], sortOrder?: cartLinesSortOrder): CartLine[] => {\n const lines: CartLine[] = [...cartlines];\n const zero: number = 0;\n\n if (sortOrder === cartLinesSortOrder.descending) {\n return lines.sort((item1, item2) => (item2.LineNumber ?? zero) - (item1.LineNumber ?? zero));\n }\n return lines.sort((item1, item2) => (item1.LineNumber ?? zero) - (item2.LineNumber ?? zero));\n };\n\n private _getCartLines(): IFlyoutCartLineItemViewProps[] | null {\n const {\n context: {\n request: { channel: { PickupDeliveryModeCode } = { PickupDeliveryModeCode: undefined } }\n },\n config,\n telemetry,\n resources\n } = this.props;\n\n const imageSettings = this._getImageSettings(config.imageSettings);\n const cart = this.props.data.cart && this.props.data.cart.result;\n\n // Cart-icon could be placed in each page\n // so we check cart content to reduce number of RS calls\n return this.state.miniCartData.products && cart && cart.cart.CartLines && cart.cart.CartLines.length > 0\n ? FlyoutCartLineItems({\n cartlines: this.getSortedCartLines(cart.cart.CartLines, config.cartLinesSortOrder),\n products: this.state.miniCartData.products,\n productAvailabilites: this.state.miniCartData.productAvailabilites,\n productDeliveryOptions: this.state.miniCartData.deliveryOptions,\n imageSettings,\n outOfStockThreshold: this.props.context.app.config.outOfStockThreshold || 0,\n isStockCheckEnabled: this.props.context.app.config.enableStockCheck || false,\n maxCartlineQuantity: updateMaxQuantityForCartLineItem(this.props.context.app.config.maxQuantityForCartLineItem),\n gridSettings: this.props.context.request.gridSettings!,\n context: this.props.context,\n typeName: this.props.typeName,\n id: this.props.id,\n resources: {\n sizeString: resources.productDimensionTypeSize,\n colorString: resources.productDimensionTypeColor,\n configString: resources.productDimensionTypeConfiguration,\n styleString: resources.productDimensionTypeStyle,\n quantityDisplayString: resources.quantityDisplayText,\n salesAgreementPricePrompt: resources.salesAgreementPricePrompt,\n inputQuantityAriaLabel: '', // Not used\n discountStringText: '', // Not used\n originalPriceText: '',\n currentPriceText: '',\n shippingChargesText: '',\n shippingText: resources.shippingText\n },\n telemetry,\n removeButtonText: resources.removeCartButtonText,\n outOfStockText: '', // Not used\n outOfRangeOneText: '', // Not used\n outOfRangeFormatText: '', // Not used\n cartState: cart,\n orgUnitLocations: this.state.orgUnitLocations,\n removeItemClickHandler: this._removeItemFromCartHandler,\n pickupDeliveryModeCode: PickupDeliveryModeCode,\n telemetryContent: this.telemetryContent,\n channelDeliveryOptionConfig: this.retailMultiplePickUpOptionEnabled ? this.channelDeliveryOptionConfig : undefined,\n isQuantityLimitsFeatureEnabled: this.state.isQuantityLimitsFeatureEnabled,\n catalogs: this.props.data.catalogs?.result\n })\n : null;\n }\n\n private readonly _getImageSettings = (imageSettings: IImageSettings | undefined): IImageSettings => {\n return (\n imageSettings || {\n viewports: {\n xs: { q: 'w=80&h=94&m=6', w: 0, h: 0 },\n sm: { q: 'w=148&h=174&m=6', w: 0, h: 0 },\n lg: { q: 'w=148&h=174&m=6', w: 0, h: 0 }\n },\n lazyload: true\n }\n );\n };\n\n private readonly _removeItemFromCartHandler = (cartlineToRemove: CartLine) => {\n if (this.props.data.cart.result) {\n const input = {\n cartLineIds: [cartlineToRemove.LineId!.toString()]\n };\n this.props.data.cart.result.removeCartLines(input).catch(error => {\n this.props.telemetry.warning(error);\n this.props.telemetry.debug('Unable to Remove Cart Line');\n });\n }\n };\n\n private async _setQuantityLimitsFeatureFlag(): Promise {\n const featureStatuses = await this.props.data.featureState;\n\n const isChannelQuantityLimitsFeatureEnabledInHq =\n featureStatuses?.find(\n featureState => featureState.Name === 'Dynamics.AX.Application.EcommerceQuantityLimitConfigurationsFeature'\n )?.IsEnabled || false;\n if (isChannelQuantityLimitsFeatureEnabledInHq) {\n this.setState({ isQuantityLimitsFeatureEnabled: true });\n return;\n }\n const defaultOrderQuantityLimitsFeatureConfig = this.props.context?.request?.app?.platform?.enableDefaultOrderQuantityLimits;\n if (!defaultOrderQuantityLimitsFeatureConfig || defaultOrderQuantityLimitsFeatureConfig === 'none') {\n this.setState({ isQuantityLimitsFeatureEnabled: false });\n return;\n }\n\n try {\n const featureStatuses = await this.props.data.featureState;\n const isQuantityLimitsFeatureEnabledInHq =\n featureStatuses?.find(\n featureState => featureState.Name === 'Dynamics.AX.Application.RetailDefaultOrderQuantityLimitsFeature'\n )?.IsEnabled || false;\n if (!isQuantityLimitsFeatureEnabledInHq) {\n this.setState({ isQuantityLimitsFeatureEnabled: false });\n return;\n }\n } catch (error) {\n this.props.telemetry.warning(error);\n this.props.telemetry.debug('Unable to get feature states');\n this.setState({ isQuantityLimitsFeatureEnabled: false });\n return;\n }\n if (defaultOrderQuantityLimitsFeatureConfig === 'all') {\n this.setState({ isQuantityLimitsFeatureEnabled: true });\n } else {\n this.props.data.customerInformation\n .then(customerInfo => {\n const result =\n !!customerInfo &&\n ((defaultOrderQuantityLimitsFeatureConfig === 'b2b' && customerInfo.IsB2b) ||\n (defaultOrderQuantityLimitsFeatureConfig === 'b2c' && !customerInfo.IsB2b));\n this.setState({ isQuantityLimitsFeatureEnabled: result });\n })\n .catch(error => {\n this.props.telemetry.warning(error);\n this.props.telemetry.debug('Unable to get customer info');\n });\n }\n }\n}\n\nexport default CartIcon;\n","const binding = { modules: {}, dataActions: {} };\n\n const registerActionId = (actionPath) => {\n if (binding.dataActions[actionPath] &&\n binding.dataActions[actionPath].default &&\n binding.dataActions[actionPath].default.prototype &&\n binding.dataActions[actionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[actionPath].default.prototype.id] = binding.dataActions[actionPath];\n } else {\n Object.keys(binding.dataActions[actionPath] || {}).forEach(exportName => {\n if (binding.dataActions[actionPath][exportName] &&\n binding.dataActions[actionPath][exportName].prototype &&\n binding.dataActions[actionPath][exportName].prototype.Action) {\n binding.dataActions[binding.dataActions[actionPath][exportName].prototype.id] = binding.dataActions[actionPath][exportName];\n }\n })\n }\n };\n\n const registerSanitizedActionPath = (sanitizedActionPath, dataAction) => {\n if (process.env.NODE_ENV === 'development') {\n if (!dataAction.default) {\n throw new Error('Data action path does not have a default export');\n }\n if (!(dataAction.default.prototype.id && binding.dataActions[dataAction.default.prototype.id]) || !binding.dataActions[sanitizedActionPath]) {\n binding.dataActions[sanitizedActionPath] = dataAction;\n }\n } else {\n binding.dataActions[sanitizedActionPath] = dataAction;\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n };\n \n\n (binding.modules['cart-icon'] = {\n c: () => require('@msdyn365-commerce-modules/cart/dist/lib/modules/cart-icon/cart-icon'),\n $type: 'containerModule',\n da: [{name:'cart', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/get-cart-state-data-action', runOn: 1},{name:'catalogs', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-catalogs', runOn: 0},{name:'channelDeliveryOptionConfig', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration', runOn: 0},{name:'customerBalances', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer-balance', runOn: 0},{name:'customerInformation', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer', runOn: 0},{name:'featureState', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state', runOn: 0},{name:'orgUnitLocations', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/search-org-unit-locations', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'cart-icon',\n p: 'cart',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/cart/dist/lib/modules/cart-icon'\n });\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-catalogs';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-catalogs');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer-balance';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer-balance');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/search-org-unit-locations';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/search-org-unit-locations');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/get-cart-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/get-cart-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n \n window.__bindings__ = window.__bindings__ || {};\n window.__bindings__.modules = {\n ...window.__bindings__.modules || {},\n ...binding.modules\n };\n \n window.__bindings__.dataActions = {\n ...window.__bindings__.dataActions || {},\n ...binding.dataActions\n };\n export const viewDictionary = {};\n viewDictionary['__local__|__local__|themes|newsunshine-b2c|views|cart-icon'] = {\n c: () => require('partner/themes/newsunshine-b2c/views/cart-icon.view.tsx'),\n cn: '__local__-__local__-cart-icon'\n };\nviewDictionary['__local__|__local__|themes|newsunshine-dev-b2c|views|cart-icon'] = {\n c: () => require('partner/themes/newsunshine-dev-b2c/views/cart-icon.view.tsx'),\n cn: '__local__-__local__-cart-icon'\n };\nviewDictionary['__local__|__local__|themes|newsunshine-dev|views|cart-icon'] = {\n c: () => require('partner/themes/newsunshine-dev/views/cart-icon.view.tsx'),\n cn: '__local__-__local__-cart-icon'\n };\nviewDictionary['__local__|__local__|themes|newsunshine|views|cart-icon'] = {\n c: () => require('partner/themes/newsunshine/views/cart-icon.view.tsx'),\n cn: '__local__-__local__-cart-icon'\n };\nviewDictionary['@msdyn365-commerce-modules|cart|modules|cart-icon|cart-icon'] = {\n c: () => require('@msdyn365-commerce-modules/cart/dist/lib/modules/cart-icon/cart-icon.view.js'),\n cn: '@msdyn365-commerce-modules-cart-cart-icon'\n };\nviewDictionary['@msdyn365-commerce-theme|adventureworks-theme-kit|modules|adventureworks|views|cart-icon'] = {\n c: () => require('@msdyn365-commerce-theme/adventureworks-theme-kit/dist/lib/modules/adventureworks/views/cart-icon.view.js'),\n cn: '@msdyn365-commerce-theme-adventureworks-theme-kit-cart-icon'\n };\nwindow.__bindings__ = window.__bindings__ || {};\nwindow.__bindings__.viewDictionary = {\n ...window.__bindings__.viewDictionary || {},\n ...viewDictionary\n };","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICartIconViewProps } from './cart-icon';\nimport { IFlyoutCartLineItemViewProps } from './components/flyout-cart-line-items';\n\nconst _renderCartlines = (cartLines: IFlyoutCartLineItemViewProps[] | undefined, props: ICartIconViewProps): JSX.Element[] | null => {\n if (!cartLines) {\n props.context.telemetry.error('Cartlines content is empty, module wont render');\n return null;\n }\n return cartLines.map((cartLine, index) => {\n return (\n \n {cartLine.cartline}\n {cartLine.storeLocation}\n {cartLine.remove}\n \n );\n });\n};\n\nconst CartIconView: React.FC = (props: ICartIconViewProps) => (\n \n {props.cartIcon}\n {props.FlyoutContainer ? (\n \n {props.flyoutTitle}\n {props.checkoutBlockedDueToUnavailableFunds}\n {_renderCartlines(props.cartlines, props)}\n {props.totalPrice}\n {props.checkoutAsSignInUserButton}\n {props.checkoutAsGuestButton}\n {props.goToCartButton}\n \n ) : (\n false\n )}\n \n);\n\nexport default CartIconView;\n","module.exports = React;","module.exports = ReactDOM;","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ICoreContext } from '@msdyn365-commerce/core';\nimport { ICartActionResult, ICartState } from '@msdyn365-commerce/global-state';\nimport {\n AsyncResult,\n CartLine,\n CartLineValidationResults,\n CartLineValidationResultsByLineId,\n CartsDataActions,\n SimpleProduct\n} from '@msdyn365-commerce/retail-proxy';\n\nimport { ITelemetry } from '@msdyn365-commerce/telemetry-internal';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\n\n/**\n * Validate the cart.\n * @param isQuantityLimitsFeatureEnabled -- Is the quantity limits feature enabled.\n * @param cart -- The cart state to validate.\n * @param telemetry -- The telemetry.\n * @param propsContext -- The props context.\n * @param shouldRetry -- Should retry.\n * @returns A list of line data validation failures.\n */\nexport async function validateCartAsync(\n cart: AsyncResult,\n telemetry: ITelemetry,\n propsContext: ICoreContext,\n shouldRetry: boolean = true\n): Promise {\n let cartResult: ICartState;\n let cartVersion: number | undefined;\n try {\n cartResult = await cart;\n cartVersion = cartResult.cart.Version;\n } catch (error) {\n telemetry.warning(error);\n telemetry.debug('Unable to get cart or cart version.');\n return AsyncResult.resolve();\n }\n\n if (cartVersion) {\n try {\n const validationResult: CartLineValidationResults = await CartsDataActions.validateForCheckoutAsync(\n { callerContext: propsContext.actionContext, bypassCache: 'none' },\n cartResult.cart.Id,\n cartVersion\n );\n\n return await AsyncResult.resolve(validationResult.ValidationResultsByLineId ?? undefined);\n } catch (error) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- error type is not defined.\n if (shouldRetry && error.name === 'Microsoft_Dynamics_Commerce_Runtime_InvalidCartVersion') {\n try {\n await cartResult.refreshCart({});\n } catch (refreshError) {\n telemetry.warning(refreshError);\n telemetry.debug('Unable to refresh Cart');\n return AsyncResult.resolve();\n }\n try {\n await validateCartAsync(cart, telemetry, propsContext, false);\n return AsyncResult.resolve();\n } catch (validateError) {\n telemetry.warning(validateError);\n telemetry.debug('Unable to validate Cart');\n return AsyncResult.resolve();\n }\n }\n\n telemetry.warning(error);\n telemetry.debug('Unable to validate Cart');\n return AsyncResult.resolve();\n }\n } else {\n telemetry.warning('Cart version not found for Cart validation request.');\n return AsyncResult.resolve();\n }\n}\n\n/**\n * Check if cart line quantity update is success.\n * @param isQuantityLimitsFeatureEnabled -- Is quantity limits feature enabled.\n * @param cartResult -- The cart result.\n * @param telemetry -- The telemetry.\n * @param products -- The products.\n * @param cartLineToUpdate -- The cart line to update.\n * @param quantity -- The quantity.\n * @returns Boolean to indicate if the cart line quantity is updated.\n */\nexport async function isCartLineQuantityUpdatedAsync(\n isQuantityLimitsFeatureEnabled: boolean | undefined,\n cartResult: ICartState | undefined,\n telemetry: ITelemetry,\n products: SimpleProduct[] | undefined,\n cartLineToUpdate: CartLine,\n quantity: number\n): Promise {\n if (cartResult) {\n let isUsingDefaultOrderSettingsMax: boolean = false;\n if (ArrayExtensions.hasElements(products) && isQuantityLimitsFeatureEnabled) {\n const modifiedProduct: SimpleProduct | undefined = products.find(\n (product: SimpleProduct) => product.RecordId === cartLineToUpdate.ProductId\n );\n isUsingDefaultOrderSettingsMax = !!modifiedProduct && !!modifiedProduct.Behavior?.MaximumQuantity;\n } else {\n isUsingDefaultOrderSettingsMax = false;\n }\n\n const input = {\n cartLineId: cartLineToUpdate.LineId!.toString(),\n newQuantity: quantity,\n additionalProperties: { isUsingDefaultOrderSettingsMax }\n };\n\n try {\n const updateLineResult: ICartActionResult = await cartResult.updateCartLineQuantity(input);\n return await AsyncResult.resolve(updateLineResult.status === 'SUCCESS');\n } catch (error) {\n telemetry.warning((error as Error).message);\n telemetry.debug('Unable to update Cart Line quantity');\n }\n }\n\n return AsyncResult.resolve(false);\n}\n\n/**\n * Update cart line with cart action result.\n * @param isQuantityLimitsFeatureEnabled -- Is quantity limits feature enabled.\n * @param cartResult -- The cart result.\n * @param telemetry -- The telemetry.\n * @param products -- The products.\n * @param cartLineToUpdate -- The cart line to update.\n * @param quantity -- The quantity.\n * @returns Boolean to indicate if the cart line quantity is updated.\n */\nexport async function cartLineQuantityUpdatedAsync(\n isQuantityLimitsFeatureEnabled: boolean | undefined,\n cartResult: ICartState | undefined,\n telemetry: ITelemetry,\n products: SimpleProduct[] | undefined,\n cartLineToUpdate: CartLine,\n quantity: number\n): Promise {\n if (cartResult) {\n let isUsingDefaultOrderSettingsMax: boolean = false;\n if (ArrayExtensions.hasElements(products) && isQuantityLimitsFeatureEnabled) {\n const modifiedProduct: SimpleProduct | undefined = products.find(\n (product: SimpleProduct) => product.RecordId === cartLineToUpdate.ProductId\n );\n isUsingDefaultOrderSettingsMax = !!modifiedProduct && !!modifiedProduct.Behavior?.MaximumQuantity;\n } else {\n isUsingDefaultOrderSettingsMax = false;\n }\n\n const input = {\n cartLineId: cartLineToUpdate.LineId!.toString(),\n newQuantity: quantity,\n additionalProperties: { isUsingDefaultOrderSettingsMax }\n };\n\n try {\n const updateLineResult: ICartActionResult = await cartResult.updateCartLineQuantity(input);\n return await AsyncResult.resolve(updateLineResult);\n } catch (error) {\n telemetry.warning((error as Error).message);\n telemetry.debug('Unable to update Cart Line quantity');\n }\n }\n\n return AsyncResult.resolve();\n}\n"],"sourceRoot":""}