{"version":3,"file":"main.9412184acf381f06.js","sources":["webpack://storefronts/./rspack/polyfills.js","webpack://storefronts/./src/State.tsx","webpack://storefronts/./src/appsource/components/HiddenComponentWrapper/HiddenComponentWrapper.tsx","webpack://storefronts/./src/appsource/components/RecommendationsRibbonWrapper/RecommendationsRibbonWrapper.tsx","webpack://storefronts/./src/appsource/components/UsefulInfo.tsx","webpack://storefronts/./src/appsource/components/billingFrequencyChoiceGroup/billingFrequencyChoiceGroup.tsx","webpack://storefronts/./src/appsource/components/billingTermChoiceGroup/billingTermChoiceGroup.tsx","webpack://storefronts/./src/appsource/components/saasPricingTable/saasPricingTable.tsx","webpack://storefronts/./src/appsource/components/orderLoading/orderLoading.tsx","webpack://storefronts/./src/appsource/components/redirectModal/redirectModal.tsx","webpack://storefronts/./src/appsource/components/busyLoader/busyLoader.tsx","webpack://storefronts/./src/appsource/components/MSuserErrorBanner/MSuserErrorBanner.tsx","webpack://storefronts/./src/appsource/components/thumbsUpDown/thumbsUpDown.tsx","webpack://storefronts/./src/appsource/containers/LegacyCheckoutHydration.tsx","webpack://storefronts/./src/shared/utils/popupDisplayManager.ts","webpack://storefronts/./src/appsource/containers/appDetails.tsx","webpack://storefronts/./src/shared/components/longContent.tsx","webpack://storefronts/./src/shared/components/reviewQAContent.tsx","webpack://storefronts/./src/shared/components/appReviewItem/appReviewItem.tsx","webpack://storefronts/./src/shared/components/ratingPercentages.tsx","webpack://storefronts/./src/shared/components/ratingSummary.tsx","webpack://storefronts/./src/shared/components/reviewsDropDowns.tsx","webpack://storefronts/./src/shared/components/noReviewsToShow.tsx","webpack://storefronts/./src/shared/components/externalRatingSummary.tsx","webpack://storefronts/./src/shared/components/externalRatingSummaries.tsx","webpack://storefronts/./src/shared/containers/externalRatingSummaries.tsx","webpack://storefronts/./src/appsource/components/userTerms/userTerms.tsx","webpack://storefronts/./src/appsource/components/appReviewCollection.tsx","webpack://storefronts/./src/appsource/containers/appReviewCollection.tsx","webpack://storefronts/./src/shared/components/sortedTable/sortedTableColumn.tsx","webpack://storefronts/./src/shared/components/sortedTable/sortedTable.tsx","webpack://storefronts/./src/shared/components/sortedTable/sortedTH.tsx","webpack://storefronts/./src/shared/components/simplePriceCell.tsx","webpack://storefronts/./src/shared/components/simplePlanPricing.tsx","webpack://storefronts/./src/shared/components/microsoftManagedIndicatorWrapper.tsx","webpack://storefronts/./src/shared/utils/localeUtils.ts","webpack://storefronts/./src/appsource/components/linkedin/linkedinProductGroupBar.tsx","webpack://storefronts/./src/appsource/components/linkedin/linkedinUpcomingEvent.tsx","webpack://storefronts/./src/appsource/components/linkedin/linkedinFeaturedCustomer.tsx","webpack://storefronts/./src/shared/components/featureFeedback.tsx","webpack://storefronts/./src/appsource/components/linkedin/linkedinProductGroup.tsx","webpack://storefronts/./src/appsource/components/Badge.tsx","webpack://storefronts/./src/appsource/components/appDetails.tsx","webpack://storefronts/./src/shared/utils/capabilities.tsx","webpack://storefronts/./src/shared/utils/autoruns.tsx","webpack://storefronts/./src/appsource/components/overview.tsx","webpack://storefronts/./src/appsource/containers/overview.tsx","webpack://storefronts/./src/appsource/containers/serviceDetails.tsx","webpack://storefronts/./src/appsource/components/serviceDetails.tsx","webpack://storefronts/./src/shared/actions/tileDataThunkActions.tsx","webpack://storefronts/./src/shared/msal/loginRedirect.ts","webpack://storefronts/./src/shared/msal/logout.ts","webpack://storefronts/./src/shared/components/FederatedModules/RestClient.tsx","webpack://storefronts/./src/appsource/refreshTokenHandler.tsx","webpack://storefronts/./src/shared/msal/postRedirect.ts","webpack://storefronts/./src/appsource/App.tsx","webpack://storefronts/./src/shared/handlers/recoverableHydrationError.ts","webpack://storefronts/./src/shared/utils/pltUtils.ts","webpack://storefronts/./src/shared/actions/tileDataActions.tsx","webpack://storefronts/./src/shared/actions/queryActions.tsx","webpack://storefronts/./src/shared/components/LoadingSpinner.tsx","webpack://storefronts/./src/shared/hooks/useClientRoutes.tsx","webpack://storefronts/./src/appsource/pathsViewMap.ts","webpack://storefronts/./src/shared/utils/signin.tsx","webpack://storefronts/./src/shared/components/modals/signInModal.tsx","webpack://storefronts/./src/shared/components/modals/mediaModal.tsx","webpack://storefronts/./src/shared/components/modals/videoModal.tsx","webpack://storefronts/./src/shared/components/modals/driveModal.tsx","webpack://storefronts/./src/shared/utils/fieldHubUtils.ts","webpack://storefronts/./src/shared/components/modals/fieldHubModal.tsx","webpack://storefronts/./src/shared/containers/modals/fieldHubModal.tsx","webpack://storefronts/./src/shared/components/modals/errorModal.tsx","webpack://storefronts/./src/shared/containers/modals/errorModal.tsx","webpack://storefronts/./src/shared/components/modals/animationModal.tsx","webpack://storefronts/./src/shared/components/modals/disclaimerModal.tsx","webpack://storefronts/./src/shared/components/modals/npsModal.tsx","webpack://storefronts/./src/shared/components/modals/instructionsModalBody.tsx","webpack://storefronts/./src/shared/components/modals/instructionsModal.tsx","webpack://storefronts/./src/shared/components/modals/downloadSampleModal.tsx","webpack://storefronts/./src/shared/store/createStore.ts","webpack://storefronts/./src/shared/reducers/searchReducer.tsx","webpack://storefronts/./src/shared/reducers/modalReducer.tsx","webpack://storefronts/./src/shared/reducers/commonEntityDataReducer.tsx","webpack://storefronts/./src/embed/reducers/pbiAppDataReducer.tsx","webpack://storefronts/./src/embed/reducers/partnerAppDataReducer.tsx","webpack://storefronts/./src/shared/reducers/appDataReducer.tsx","webpack://storefronts/./src/shared/reducers/userDataReducer.tsx","webpack://storefronts/./src/shared/reducers/checkoutReducer.ts","webpack://storefronts/./src/shared/reducers/partnersReducer.ts","webpack://storefronts/./src/shared/reducers/serviceDataReducer.tsx","webpack://storefronts/./src/shared/reducers/reducers.tsx","webpack://storefronts/./src/shared/reducers/cloudsIndustryDataReducer.tsx","webpack://storefronts/./src/shared/reducers/configReducer.tsx","webpack://storefronts/./src/shared/reducers/dynamicCampaignReducer.tsx","webpack://storefronts/./src/shared/reducers/userFavouriteReducer.tsx","webpack://storefronts/./src/shared/utils/errorHandlerUtil.tsx","webpack://storefronts/./src/embed/actions/embedThunks.tsx","webpack://storefronts/./src/embed/embedMessaging.tsx","webpack://storefronts/./src/appsource/components/modals/userProfileModal/userProfileModal.tsx","webpack://storefronts/./src/appsource/containers/modals/userProfileModal/userProfileModal.tsx","webpack://storefronts/./src/appsource/components/modals/successConsentModal/successConsentModal.tsx","webpack://storefronts/./src/appsource/components/modals/failureConsentModal/failureConsentModal.tsx","webpack://storefronts/./src/appsource/components/modals/consentModal/consentModalContent.tsx","webpack://storefronts/./src/shared/utils/InputValidationUtils.tsx","webpack://storefronts/./src/appsource/components/modals/consentModal/consentModal.tsx","webpack://storefronts/./src/appsource/containers/modals/consentModal/consentModal.tsx","webpack://storefronts/./src/shared/components/modals/reviewActionModal.tsx","webpack://storefronts/./src/shared/components/modals/submitReviewResponseModal.tsx","webpack://storefronts/./src/shared/components/modals/ratingModal.tsx","webpack://storefronts/./src/shared/containers/modals/ratingModal.tsx","webpack://storefronts/./src/shared/components/modals/reportAbuseModal.tsx","webpack://storefronts/./src/shared/containers/modals/reportAbuseModal.tsx","webpack://storefronts/./src/shared/components/modals/reviewCommentModal/reviewCommentModal.tsx","webpack://storefronts/./src/shared/containers/modals/reviewCommentModal.tsx","webpack://storefronts/./src/shared/components/modals/reviewMarkAsHelpfulModal/reviewMarkAsHelpfulModalErrorDialog.tsx","webpack://storefronts/./src/shared/components/modals/reviewMarkAsHelpfulModal/reviewMarkAsHelpfulModal.tsx","webpack://storefronts/./src/shared/components/modals/modal.tsx","webpack://storefronts/./src/shared/handlers/reportAbuseModalHandler.tsx","webpack://storefronts/./src/shared/handlers/consentModalHandler.tsx","webpack://storefronts/./src/shared/handlers/ratingModalHandler.tsx","webpack://storefronts/./src/shared/containers/modals/modal.tsx","webpack://storefronts/./src/shared/components/footer.tsx","webpack://storefronts/./src/shared/containers/footer.tsx","webpack://storefronts/./src/shared/utils/appViewUtils.tsx","webpack://storefronts/./src/appsource/components/modals/npsPreviewModal.tsx","webpack://storefronts/./src/appsource/components/modals/npsSubmittedModal.tsx","webpack://storefronts/./src/appsource/components/modals/npsSurveyModal.tsx","webpack://storefronts/./src/appsource/components/modals/npsModal/npsModal.tsx","webpack://storefronts/./src/appsource/components/nps.tsx","webpack://storefronts/./src/shared/components/cookieBanner.tsx","webpack://storefronts/./src/shared/containers/cookieBanner.tsx","webpack://storefronts/./src/shared/components/loader.tsx","webpack://storefronts/./src/shared/msal/user.ts","webpack://storefronts/./src/shared/components/SilentClientLogin.tsx","webpack://storefronts/./src/shared/components/appView.tsx","webpack://storefronts/./src/shared/utils/cookieBannerUtils.ts","webpack://storefronts/./src/shared/handlers/appViewHandler.tsx","webpack://storefronts/./src/shared/containers/AppView.tsx","webpack://storefronts/./src/shared/actions/queryThunkActions.tsx","webpack://storefronts/./src/appsource/Router.tsx","webpack://storefronts/./src/shared/hooks/useLocationChange.tsx","webpack://storefronts/./src/shared/handlers/rootHandler.tsx","webpack://storefronts/./src/shared/components/scrollToTopButton.tsx","webpack://storefronts/./src/shared/services/http/tokenRestClient.ts","webpack://storefronts/./src/shared/utils/locales.tsx","webpack://storefronts/./src/shared/utils/debug.ts","webpack://storefronts/./src/shared/i18n/client.ts","webpack://storefronts/./src/shared/handlers/onError.ts","webpack://storefronts/./src/shared/handlers/seo.ts","webpack://storefronts/./src/appsource/mainClientHookup.tsx","webpack://storefronts/./src/shared/services/init/initBrowser.ts","webpack://storefronts/./src/appsource/utils/comscore.ts","webpack://storefronts/./src/appsource/utils/consultingServicesUtils.ts","webpack://storefronts/./src/appsource/utils/feedback.ts","webpack://storefronts/./src/appsource/utils/nps/nps.ts","webpack://storefronts/./src/embed/constants.tsx","webpack://storefronts/./src/embed/embedHostUtils.tsx","webpack://storefronts/./src/logger/logger.ts","webpack://storefronts/./src/logger/index.ts","webpack://storefronts/./src/server/LogHelper.tsx","webpack://storefronts/./rspack/paths.ts","webpack://storefronts/./src/server/api/ApiVersion.ts","webpack://storefronts/./src/server/Utils.ts","webpack://storefronts/./src/server/serverLogger/serverLogger.ts","webpack://storefronts/./src/shared/AzureEnvironmentSettings.tsx","webpack://storefronts/./src/shared/Models.tsx","webpack://storefronts/./src/shared/actions/actions.tsx","webpack://storefronts/./src/shared/actions/checkoutActions.ts","webpack://storefronts/./src/shared/actions/partnersActions.ts","webpack://storefronts/./src/shared/actions/privateOffersThunkActions.tsx","webpack://storefronts/./src/interfaces/IBilling.tsx","webpack://storefronts/./src/shared/utils/leadsUtils.tsx","webpack://storefronts/./src/shared/services/http/leadgenRestClient.ts","webpack://storefronts/./src/shared/services/http/reviewRestClient.ts","webpack://storefronts/./src/shared/services/http/fieldHubRestClient.ts","webpack://storefronts/./src/shared/services/http/dynamicCampaignRestClient.ts","webpack://storefronts/./src/shared/services/http/purchaseRestClient.ts","webpack://storefronts/./src/shared/services/http/commerceApiRestClient.ts","webpack://storefronts/./src/shared/services/http/reviewCommentsRestClient.ts","webpack://storefronts/./src/shared/services/http/reviewMarkAsHelpfulRestClient.ts","webpack://storefronts/./src/shared/services/http/reviewsCatalogRestClient.ts","webpack://storefronts/./src/shared/services/http/linkedInRestClient.ts","webpack://storefronts/./src/shared/services/http/reportReviewRestClient.ts","webpack://storefronts/./src/shared/services/http/graphRestClient.ts","webpack://storefronts/./src/shared/services/http/reviewAppReviewsRestClient.ts","webpack://storefronts/./src/shared/services/http/userReviewRestClient.ts","webpack://storefronts/./src/shared/services/http/authRestClient.ts","webpack://storefronts/./src/shared/services/product/product.ts","webpack://storefronts/./src/shared/actions/thunkActions.tsx","webpack://storefronts/./src/shared/services/http/catalogApiRestClient.ts","webpack://storefronts/./src/shared/utils/thunkActionUtils.tsx","webpack://storefronts/./src/shared/services/http/userRestClient.ts","webpack://storefronts/./src/shared/actions/userFavouriteActions.tsx","webpack://storefronts/./src/shared/services/http/userFavouriteRestClient.ts","webpack://storefronts/./src/shared/actions/userFavouriteThunkActions.tsx","webpack://storefronts/./src/shared/utils/userFavouriteThunkActionUtils.tsx","webpack://storefronts/./src/shared/components/ButtonLink.tsx","webpack://storefronts/./src/appsource/components/ShowingResultsFor/ShowingResultsFor.tsx","webpack://storefronts/./src/shared/components/FilteredGalleryHeader/FilteredGalleryHeader.tsx","webpack://storefronts/./src/shared/components/ItemsTooltip.tsx","webpack://storefronts/./src/shared/components/successStory.tsx","webpack://storefronts/./src/shared/components/Testimonials/Testimonials.data.ts","webpack://storefronts/./src/shared/components/Testimonials/Testimonials.tsx","webpack://storefronts/./src/shared/components/animation.tsx","webpack://storefronts/./src/shared/components/appDetailsHeaderRatingBar/appDetailsHeaderRatingBar.tsx","webpack://storefronts/./src/shared/components/appDetailsLinkedItems/appDetailsLinkedItems.tsx","webpack://storefronts/./src/shared/components/appReviewCommentCollection/appReviewItemCommentPagination/appReviewItemCommentPagination.tsx","webpack://storefronts/./src/shared/components/appReviewCommentCollection/appReviewItemCommentEmptyMessage/appReviewItemCommentEmptyMessage.tsx","webpack://storefronts/./src/shared/components/appReviewCommentCollection/appReviewItemCommentCollectionListSection/appReviewItemCommentCollectionListSection.tsx","webpack://storefronts/./src/shared/components/appReviewCommentCollection/appReviewCommentCollection.tsx","webpack://storefronts/./src/shared/components/appReviewCommentCollection/appReviewCommentCollectionPaginationButton/appReviewCommentCollectionPaginationButton.tsx","webpack://storefronts/./src/shared/components/appReviewCommentItem/appReviewCommentItem.tsx","webpack://storefronts/./src/shared/components/appReviewCommentItemToolbar/appReviewCommentItemToolbar.tsx","webpack://storefronts/./src/shared/components/appReviewItemCommentComposer.tsx","webpack://storefronts/./src/shared/components/appReviewItemToolbar/appReviewItemToolbar.tsx","webpack://storefronts/./src/shared/components/reviewIsvReply.tsx","webpack://storefronts/./src/shared/containers/appReviewCommentCollection.tsx","webpack://storefronts/./src/shared/components/appReviewSocialContent/appReviewSocialContent.tsx","webpack://storefronts/./src/shared/components/appTile/appTile.tsx","webpack://storefronts/./src/shared/components/appTileLinkedItems/appTileLinkedItems.tsx","webpack://storefronts/./src/shared/components/baseCtaButton.tsx","webpack://storefronts/./src/shared/components/breadcrumbUrl.tsx","webpack://storefronts/./src/shared/components/card.tsx","webpack://storefronts/./src/shared/components/commonTile.tsx","webpack://storefronts/./src/shared/components/contentStyles.ts","webpack://storefronts/./src/shared/components/ctaButtons/ctaButtons.tsx","webpack://storefronts/./src/shared/components/customMeterPricing/customMeterPricing.tsx","webpack://storefronts/./src/shared/components/externalLink.tsx","webpack://storefronts/./src/shared/utils/externalLinkUtils.tsx","webpack://storefronts/./src/shared/components/futurePriceTooltip.tsx","webpack://storefronts/./src/shared/components/futurePriceWarning.tsx","webpack://storefronts/./src/shared/components/iconLink.tsx","webpack://storefronts/./src/shared/components/badges/freeTrialBadge.tsx","webpack://storefronts/./src/shared/components/badges/privatePlanBadge.tsx","webpack://storefronts/./src/shared/components/saasPricingTableBase/saasPlanNameCell.tsx","webpack://storefronts/./src/shared/components/saasPricingTableBase/saasPricingCell.tsx","webpack://storefronts/./src/shared/components/saasPricingTableBase/saasSubtotalCell/saasSubtotalCell.tsx","webpack://storefronts/./src/shared/components/saasPricingTableBase/saasPricingTableColumns/saasPricingTableColumns.tsx","webpack://storefronts/./src/shared/components/saasPricingTableBase/saasPricingRow/saasPricingRow.tsx","webpack://storefronts/./src/shared/components/saasPricingTableBase/saasPricingTableBase/saasPricingTableBase.tsx","webpack://storefronts/./src/shared/components/internalLink.tsx","webpack://storefronts/./src/shared/components/itemsContainer.tsx","webpack://storefronts/./src/shared/components/linkedItem/linkedItem.tsx","webpack://storefronts/./src/shared/components/modals/submittedModal.tsx","webpack://storefronts/./src/shared/components/msClarity/msClarity.tsx","webpack://storefronts/./src/shared/components/products.tsx","webpack://storefronts/./src/shared/components/pureSpzaComponent.tsx","webpack://storefronts/./src/shared/components/ratings/ratingsInfo.tsx","webpack://storefronts/./src/shared/components/ribbon.tsx","webpack://storefronts/./src/shared/utils/richTextDropDownUtils.tsx","webpack://storefronts/./src/shared/components/richTextDropDown.tsx","webpack://storefronts/./src/shared/components/safeHtmlWrapper/safeHtmlWrapper.tsx","webpack://storefronts/./src/shared/components/sortingDropdown/sortingDropdown.tsx","webpack://storefronts/./src/shared/components/spzaComponent.tsx","webpack://storefronts/./src/shared/components/stickyCard.tsx","webpack://storefronts/./src/shared/components/tabs.tsx","webpack://storefronts/./src/shared/components/telemetryImage.tsx","webpack://storefronts/./src/shared/components/tooltip.tsx","webpack://storefronts/./src/shared/containers/appTile.tsx","webpack://storefronts/./src/shared/components/userFavouriteTileButton.tsx","webpack://storefronts/./src/shared/containers/userFavouriteTileButton.tsx","webpack://storefronts/./src/shared/components/baseTile.tsx","webpack://storefronts/./src/shared/containers/baseTile.tsx","webpack://storefronts/./src/shared/components/dynamicCampaign.tsx","webpack://storefronts/./src/shared/containers/dynamicCampaign.tsx","webpack://storefronts/./src/shared/components/serviceTile.tsx","webpack://storefronts/./src/shared/containers/serviceTile.tsx","webpack://storefronts/./src/shared/components/userFavouriteTileDetailButton.tsx","webpack://storefronts/./src/shared/containers/userFavouriteTileDetailButton.tsx","webpack://storefronts/./src/shared/hooks/useMsClarity.tsx","webpack://storefronts/./src/shared/hooks/useHydration.tsx","webpack://storefronts/./src/shared/hooks/useSpzaInstrumentService.tsx","webpack://storefronts/./src/shared/services/telemetry/1DSClient.tsx","webpack://storefronts/./src/shared/hooks/useTelemetry.tsx","webpack://storefronts/./src/shared/logger/client.ts","webpack://storefronts/./src/shared/logger/base.ts","webpack://storefronts/./src/shared/logger/system.ts","webpack://storefronts/./src/shared/logger/config.ts","webpack://storefronts/./src/shared/msal/client.ts","webpack://storefronts/./src/shared/msal/config.ts","webpack://storefronts/./src/shared/msal/scopes.ts","webpack://storefronts/./src/shared/msal/tokens.ts","webpack://storefronts/./src/shared/msal/windowUtils.ts","webpack://storefronts/./src/shared/oneTaxonomy/utils.ts","webpack://storefronts/./src/shared/utils/xssUtils.ts","webpack://storefronts/./src/shared/routerHistory.tsx","webpack://storefronts/./src/shared/services/feedback/index.ts","webpack://storefronts/./src/shared/services/http/armRestClient.ts","webpack://storefronts/./src/shared/services/http/entityRestClient.ts","webpack://storefronts/./src/shared/services/http/httpProtocol.ts","webpack://storefronts/./src/server/errors/httpError.tsx","webpack://storefronts/./src/shared/services/init/appConfig.ts","webpack://storefronts/./src/shared/services/telemetry/core/action.ts","webpack://storefronts/./src/shared/services/telemetry/core/buffer.ts","webpack://storefronts/./src/shared/services/telemetry/core/consumer.ts","webpack://storefronts/./src/shared/services/telemetry/core/instrument.ts","webpack://storefronts/./src/shared/services/telemetry/core/provider.ts","webpack://storefronts/./src/shared/services/telemetry/providers/staticProvider.ts","webpack://storefronts/./src/shared/services/telemetry/shared/sharedTelemetry.ts","webpack://storefronts/./src/shared/services/telemetry/shared/sharedInstrument.ts","webpack://storefronts/./src/shared/services/telemetry/spza/spzaTelemetry.ts","webpack://storefronts/./src/shared/services/telemetry/spza/spzaInstrument.ts","webpack://storefronts/./src/shared/services/window.tsx","webpack://storefronts/./src/shared/specifics.tsx","webpack://storefronts/./src/shared/utils/accessToken/accessToken.ts","webpack://storefronts/./src/shared/utils/countryCodeMap.ts","webpack://storefronts/./src/shared/utils/optimizeUrlHelper.ts","webpack://storefronts/./src/server/utils/func.ts","webpack://storefronts/./src/shared/services/http/urlUtils.ts","webpack://storefronts/./src/shared/utils/appUtils.tsx","webpack://storefronts/./src/shared/utils/browserStorageUtils.tsx","webpack://storefronts/./src/shared/utils/cookieUtils.tsx","webpack://storefronts/./src/shared/utils/businessConstants.ts","webpack://storefronts/./src/shared/utils/checkoutUtils.tsx","webpack://storefronts/./src/shared/utils/constants.tsx","webpack://storefronts/./src/shared/utils/dataMappingConstants.ts","webpack://storefronts/./src/shared/utils/consultingServicesUtils.ts","webpack://storefronts/./src/shared/utils/dataMapping.tsx","webpack://storefronts/./src/shared/utils/dataMappingUtils.tsx","webpack://storefronts/./src/shared/utils/datamappingHelpers.tsx","webpack://storefronts/./src/shared/utils/detailUtils.tsx","webpack://storefronts/./src/shared/utils/entityRegistration.tsx","webpack://storefronts/./src/shared/utils/errorUtils.ts","webpack://storefronts/./src/shared/utils/filterHelpers.tsx","webpack://storefronts/./src/shared/utils/filterModule.tsx","webpack://storefronts/./src/shared/utils/futurePricesUtils/futurePricesUtils.ts","webpack://storefronts/./src/shared/utils/hashMapUtils.tsx","webpack://storefronts/./src/shared/utils/httpClientUtil.tsx","webpack://storefronts/./src/shared/utils/modals.tsx","webpack://storefronts/./src/shared/utils/npsUtils.tsx","webpack://storefronts/./src/shared/utils/objectUtils.tsx","webpack://storefronts/./src/shared/utils/onetimepaymentoffers/oneTimePaymentOffers.tsx","webpack://storefronts/./src/shared/utils/partnerManifestLoader.ts","webpack://storefronts/./src/shared/utils/pricing/pricing.tsx","webpack://storefronts/./src/shared/utils/privacyUtils.ts","webpack://storefronts/./src/shared/utils/reactUtils.tsx","webpack://storefronts/./src/shared/utils/reviewsUtils.tsx","webpack://storefronts/./src/shared/utils/routeUtils.ts","webpack://storefronts/./src/shared/utils/search.tsx","webpack://storefronts/./src/shared/utils/seoUtils.ts","webpack://storefronts/./src/shared/utils/serviceOffersSupportedStatesCodes.ts","webpack://storefronts/./src/shared/utils/silentLogInUtils.tsx","webpack://storefronts/./src/shared/utils/stringUtils.tsx","webpack://storefronts/./src/shared/utils/telemetryUtils.tsx","webpack://storefronts/./src/shared/utils/urlUtils.tsx","webpack://storefronts/./src/shared/utils/userFavouriteDedicatedUtils.tsx","webpack://storefronts/./src/shared/utils/userFavouriteUtils.tsx","webpack://storefronts/./src/shared/utils/userUtils.tsx"],"sourcesContent":["module.exports = ()=>{};\n","function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nimport { UserSegment } from '@shared/Models';\nimport { Constants } from '@shared/utils/constants';\nimport { enrichReviewCommentsApiVersion } from '@shared/specifics';\nconst initialAppReviewsDataState = {\n    entityId: '',\n    reviews: [],\n    isPurchased: false,\n    reviewComments: {},\n    markedAsHelpful: {\n        userReviewIdsMarkedAsHelpful: [],\n        userReviewIdsLoading: {}\n    }\n};\n// add your feature flags here\n// for now the type should be string\n// we can explore other types in the future\n// DON'T FORGET to initialize it in the constructor\n// ALSO DON'T FORGET to initialize it in the initial state\n// your new feature flag value will be automatically update in\n// state.config.featureFlags.myNewFeatureFlag\nexport class IFeatureFlags {\n    constructor(){\n        // i.e. myNewFeatureFlag: string;\n        _define_property(this, \"AppReviews\", void 0);\n        _define_property(this, \"ProfileExp\", void 0);\n        _define_property(this, \"AltAuth\", void 0);\n        _define_property(this, \"SaasLinkingEnabled\", void 0);\n        _define_property(this, \"RedesignEnabled\", void 0);\n        _define_property(this, \"ShowPopularity\", void 0);\n        _define_property(this, \"UseSecondarySearch\", void 0);\n        _define_property(this, \"privateOffers\", void 0);\n        _define_property(this, \"purchaseBlends\", void 0);\n        _define_property(this, \"newCustomerFlow\", void 0);\n        _define_property(this, \"PartnersEnabled\", void 0);\n        _define_property(this, \"forceCompletePurchase\", void 0);\n        _define_property(this, \"allowAdminUser\", void 0);\n        _define_property(this, \"showConsent\", void 0);\n        _define_property(this, \"ensureprewarm\", void 0);\n        _define_property(this, \"useSearchV2\", void 0);\n        _define_property(this, \"ReviewsMyCommentsFilter\", void 0);\n        _define_property(this, \"sortByRecentlyUpdatedEnabled\", void 0);\n        _define_property(this, \"sortByRatingEnabled\", void 0);\n        _define_property(this, \"allNewSortsEnabled\", void 0);\n        _define_property(this, \"I18nextEnabled\", void 0);\n        _define_property(this, \"cloudMarketplaceModeOn\", void 0);\n        _define_property(this, \"recommendations\", void 0);\n        _define_property(this, \"openInNewWindowButton\", void 0);\n        _define_property(this, \"logToConsole\", void 0);\n        _define_property(this, \"expredirect\", void 0);\n        _define_property(this, \"partnersTestMode\", void 0);\n        _define_property(this, \"cloudMarketplaceModeFF\", [\n            'newHeader'\n        ]);\n        _define_property(this, \"activeCloudMarketplaceFeatures\", ()=>{\n            if (this.cloudMarketplaceModeOn) {\n                this.cloudMarketplaceModeFF.forEach((ff)=>{\n                    this[`${ff}`] = true;\n                });\n            }\n        });\n        // i.e. this.myNewFeatureFlag = 'false';\n        this.AppReviews = 'false';\n        this.ProfileExp = 'false';\n        this.AltAuth = 'false';\n        this.SaasLinkingEnabled = 'false';\n        this.RedesignEnabled = 'false';\n        this.ShowPopularity = 'false';\n        this.UseSecondarySearch = 'false';\n        this.privateOffers = 'false';\n        this.purchaseBlends = 'false';\n        this.newCustomerFlow = 'false';\n        this.PartnersEnabled = 'false';\n        this.forceCompletePurchase = 'false';\n        this.allowAdminUser = 'false';\n        this.showConsent = 'false';\n        this.ensureprewarm = 'false';\n        this.useSearchV2 = 'false';\n        this.ReviewsMyCommentsFilter = 'true';\n        this.sortByRecentlyUpdatedEnabled = 'false';\n        this.sortByRatingEnabled = 'false';\n        this.allNewSortsEnabled = 'false';\n        this.I18nextEnabled = 'false';\n        this.cloudMarketplaceModeOn = false;\n        this.recommendations = true;\n        this.openInNewWindowButton = false;\n        this.logToConsole = false;\n        this.expredirect = false;\n        this.partnersTestMode = false;\n    }\n}\nconst initialRecommendedSizesState = {\n    loading: false,\n    entityId: '',\n    planId: '',\n    recommendedSizes: []\n};\nexport const initialUserFavouriteState = {\n    fetchDataStatus: Constants.UserFavourite.FetchDataStatus.Invalid,\n    apps: [],\n    services: []\n};\nexport const initialDynamicCampaignState = {\n    html: ''\n};\nexport const initialSearchState = {\n    searchText: '',\n    searchSortingOption: Constants.SearchSortingOption.BestMatch,\n    appSearchResults: [],\n    servicesSearchResults: [],\n    filteredAppSearchResults: [],\n    filteredServicesSearchResults: [],\n    filteredCloudsIndustrySearchResults: [],\n    appsCount: 0,\n    servicesCount: 0,\n    cloudsIndustryCount: 0,\n    searchIdCurrentlyOngoing: 0,\n    partnerSearchResults: [],\n    requestId: Constants.ReservedCorrelationIds.EmptyId\n};\nexport const initialModalState = {\n    appId: '',\n    parnerId: '',\n    modalId: 0,\n    isSignedIn: false,\n    showModal: false,\n    payload: null,\n    entityType: Constants.EntityType.App,\n    isOpenedFromPDP: false\n};\nexport const initialEntityDataState = {\n    idMap: {},\n    dataList: [],\n    dataMap: {},\n    dataMapLoaded: false,\n    entityIdFailed: '',\n    entityIdLoading: '',\n    activeFilters: [],\n    count: 0,\n    curatedData: {},\n    dataLoaded: {},\n    curatedDataLoaded: {},\n    subsetData: [],\n    subsetSearchQuery: '',\n    tileDataRequestId: '',\n    relatedAppsItems: {\n        entityId: '',\n        items: {\n            suggestedItems: [],\n            saasLinkingItems: [],\n            linkedAddIns: []\n        }\n    },\n    appReviewsData: initialAppReviewsDataState,\n    linkedInProductGroup: null\n};\nexport const initialAppDataState = {\n    idMap: {},\n    dataList: [],\n    recommendedApps: {\n        whatsNewApps: [],\n        trendingApps: [],\n        microsoft365WhatsNewApps: [],\n        microsoft365TrendingApps: []\n    },\n    dataMap: {},\n    dataMapLoaded: false,\n    entityIdFailed: '',\n    entityIdLoading: '',\n    activeFilters: [],\n    count: 0,\n    curatedData: {},\n    dataLoaded: {},\n    pricingPayload: null,\n    partnerAppDataLoaded: false,\n    curatedDataLoaded: {},\n    subsetData: [],\n    subsetSearchQuery: '',\n    tileDataRequestId: '',\n    relatedAppsItems: {\n        entityId: '',\n        items: {\n            suggestedItems: [],\n            saasLinkingItems: [],\n            linkedAddIns: []\n        }\n    },\n    appReviewsData: initialAppReviewsDataState,\n    recommendedSizesState: initialRecommendedSizesState,\n    linkedInProductGroup: null\n};\nexport const initialCloudsIndustryDataState = {\n    idMap: {},\n    dataList: [],\n    dataMap: {},\n    dataMapLoaded: false,\n    entityIdFailed: '',\n    entityIdLoading: '',\n    activeFilters: [],\n    count: 0,\n    curatedData: {},\n    dataLoaded: {},\n    pricingPayload: null,\n    curatedDataLoaded: {},\n    subsetData: [],\n    subsetSearchQuery: '',\n    tileDataRequestId: '',\n    relatedAppsItems: {\n        entityId: '',\n        items: {\n            suggestedItems: [],\n            saasLinkingItems: [],\n            linkedAddIns: []\n        }\n    },\n    appReviewsData: initialAppReviewsDataState,\n    linkedInProductGroup: null\n};\nexport const initialUserDataState = {\n    assignmentContext: '',\n    id: '',\n    group: [\n        ''\n    ],\n    signedIn: false,\n    idToken: '',\n    idTokenPayload: '',\n    accessToken: {},\n    refreshToken: '',\n    firstName: '',\n    lastName: '',\n    uniqueName: '',\n    displayName: '',\n    oid: '',\n    tid: '',\n    puid: '',\n    email: '',\n    graphApi: process.env.graphApi,\n    alternateEmail: '',\n    isMSAUser: false,\n    userSegment: UserSegment.unauthenticated,\n    hasReview: false,\n    fieldHubUserType: Constants.FieldHubUserType.None,\n    isLoadingUserProfile: false,\n    loading: true,\n    givenName: '',\n    familyName: '',\n    profile: {\n        firstName: '',\n        lastName: '',\n        email: '',\n        phone: '',\n        country: '',\n        company: '',\n        title: '',\n        updateRequired: null,\n        isLatestProfile: false,\n        uiRole: null,\n        managedLicenses: []\n    },\n    tenantsDetails: {\n        details: {\n            countryCode: null,\n            defaultDomain: null,\n            displayName: null,\n            domains: null,\n            id: null,\n            tenantCategory: null,\n            tenantId: null,\n            tenantType: null,\n            azureSubscriptions: {}\n        },\n        status: {\n            hasError: false,\n            isLoading: false\n        }\n    },\n    purchases: {},\n    privateOffers: {\n        dataList: [],\n        loading: true\n    },\n    roleDefinitions: [],\n    accounts: {\n        isEAAccount: false,\n        isLoading: false,\n        accounts: null,\n        hasError: false\n    },\n    isMaccTenant: false\n};\nexport const initialExperimentState = {\n    abTestingVersion_AMP: Constants.VaritionKey.Default,\n    abTestingVersion_newFilterAMP: Constants.VaritionKey.Default\n};\nexport const initialConfigState = {\n    initLoading: true,\n    isEmbedded: false,\n    experiment: initialExperimentState,\n    embedHost: null,\n    locStrings: '',\n    locale: 'en-us',\n    user: '',\n    flightCodes: null,\n    partnersIframeUrl: '',\n    partnersApiHost: '',\n    partnersIframeUrlTest: '',\n    correlationId: '',\n    currentView: 'home',\n    landingView: '',\n    currentGalleryViewIsCurated: false,\n    breadcrumbUrl: null,\n    appViewTelemetryLoggedCount: 0,\n    nationalCloud: '',\n    billingCountryCode: 'us',\n    pricingDataLoaded: false,\n    featureFlags: new IFeatureFlags(),\n    marketplaceApiHost: '',\n    saasRPHost: '',\n    MPRPHost: '',\n    armApiHost: '',\n    isMobile: false,\n    isAppSource: process.env ? process.env.applicationTarget === Constants.appSourceApplicationTargetName : false,\n    pidlEnv: '',\n    query: {},\n    requestFilteredLoading: false,\n    requestFilteredEntityType: Constants.TileDataEntityType.All,\n    requestFilteredQuery: {},\n    responseFilteredQuery: {},\n    cookiesConsent: {\n        isManageModalOpen: false,\n        WCPConsent: {\n            Advertising: false,\n            Analytics: false,\n            Required: true,\n            SocialMedia: false\n        },\n        isConsentRequired: false\n    },\n    siteEnvironment: '',\n    newNpsEnabled: false,\n    pcaInstanceInitialized: false,\n    npsLogicVerified: false,\n    reviewsAPIVersion: enrichReviewCommentsApiVersion,\n    showContextPanel: false,\n    commerceApiHost: '',\n    storefrontName: null,\n    marketplaceLeadsHost: '',\n    marketplaceLeadsAudienceId: '',\n    agreementAppId: ''\n};\nexport const initialServiceDataState = {\n    idMap: {},\n    dataList: [],\n    recommendedServices: {\n        whatsNewService: [],\n        trendingService: []\n    },\n    countriesList: {},\n    dataMap: {},\n    dataMapLoaded: false,\n    entityIdFailed: '',\n    entityIdLoading: '',\n    activeFilters: [],\n    count: 0,\n    curatedData: {},\n    dataLoaded: {},\n    curatedDataLoaded: {},\n    subsetData: [],\n    subsetSearchQuery: '',\n    tileDataRequestId: '',\n    entityType: Constants.EntityType.Service,\n    selectedCountry: Constants.usCountryCode.toUpperCase(),\n    selectedRegion: Constants.allStatesCode.toUpperCase(),\n    relatedAppsItems: {\n        entityId: '',\n        items: {\n            suggestedItems: [],\n            saasLinkingItems: [],\n            linkedAddIns: []\n        }\n    },\n    appReviewsData: initialAppReviewsDataState,\n    linkedInProductGroup: null\n};\nexport const initialCheckoutState = {\n    items: [],\n    customers: null,\n    activeCustomer: null,\n    publisherToken: null,\n    error: false,\n    currentStep: 0,\n    purchaseAttempt: 0,\n    billingAddress: null,\n    checkoutId: ''\n};\nexport const initialPartnersState = {\n    filterLocation: null,\n    contactDetails: null\n};\nexport const initialState = {\n    search: initialSearchState,\n    modal: initialModalState,\n    apps: initialAppDataState,\n    cloudsIndustry: initialCloudsIndustryDataState,\n    users: initialUserDataState,\n    config: initialConfigState,\n    services: initialServiceDataState,\n    dynamicCampaign: initialDynamicCampaignState,\n    userFavourite: initialUserFavouriteState,\n    checkout: initialCheckoutState,\n    partners: initialPartnersState\n};\n// This function does a deep copy a 'DataMap' object\n// It is sometimes used (in the server code) after calling 'performFilter' to\n// ignore objects that have a 'count' property set to '0'.  This removes 'filters'\n// from the filter pane that aren't applicable to a specific group of data\nexport function deepCopyDataMap(DataMap) {\n    const newDataMap = {};\n    if (DataMap == null || typeof DataMap !== 'object') {\n        return DataMap;\n    } else if (DataMap.count === 0) {\n        return null;\n    }\n    for(const k in DataMap){\n        const prop = DataMap[`${k}`];\n        const copy = deepCopyDataMap(prop);\n        if (copy) {\n            newDataMap[`${k}`] = copy;\n        }\n    }\n    return newDataMap;\n}\nexport function copyState(oldState) {\n    const newState = {};\n    for(const k in oldState){\n        newState[`${k}`] = oldState[`${k}`];\n    }\n    return newState;\n}\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport React from 'react';\nimport { mergeStyleSets } from '@fluentui/react';\nimport classNames from 'classnames';\nconst contentStyles = mergeStyleSets({\n    hiddenClass: {\n        display: 'none'\n    }\n});\nexport const HiddenComponentWrapper = ({ className, hide, children })=>{\n    const containerClass = classNames({\n        [className]: (className === null || className === void 0 ? void 0 : className.length) > 0,\n        [contentStyles.hiddenClass]: hide\n    });\n    return /*#__PURE__*/ _jsx(\"div\", {\n        className: containerClass,\n        children: children\n    });\n};\n","function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nfunction _object_spread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        var ownKeys = Object.keys(source);\n        if (typeof Object.getOwnPropertySymbols === \"function\") {\n            ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n            }));\n        }\n        ownKeys.forEach(function(key) {\n            _define_property(target, key, source[key]);\n        });\n    }\n    return target;\n}\nfunction ownKeys(object, enumerableOnly) {\n    var keys = Object.keys(object);\n    if (Object.getOwnPropertySymbols) {\n        var symbols = Object.getOwnPropertySymbols(object);\n        if (enumerableOnly) {\n            symbols = symbols.filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n            });\n        }\n        keys.push.apply(keys, symbols);\n    }\n    return keys;\n}\nfunction _object_spread_props(target, source) {\n    source = source != null ? source : {};\n    if (Object.getOwnPropertyDescriptors) {\n        Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n        ownKeys(Object(source)).forEach(function(key) {\n            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n    }\n    return target;\n}\nimport { jsx as _jsx, Fragment as _Fragment } from \"react/jsx-runtime\";\nimport { createElement as _createElement } from \"react\";\nimport React from 'react';\nimport Ribbon from '@shared/components/ribbon';\nimport NewBadge from '@shared/images/NewBadge.svg';\nconst maxRibbonItems = 5;\nexport const RecommendationsRibbon = ({ recommendedItems = [], title, ribbonKey, selectedCountry, selectedLocale, tileType: TileType })=>{\n    return /*#__PURE__*/ _jsx(_Fragment, {\n        children: recommendedItems.length >= maxRibbonItems && /*#__PURE__*/ _jsx(Ribbon, {\n            title: title,\n            imgSource: NewBadge,\n            children: recommendedItems.map((item, index)=>{\n                return /*#__PURE__*/ _createElement(TileType, _object_spread_props(_object_spread({}, item), {\n                    item: item,\n                    key: item.entityId,\n                    customCSSClass: 'tile' + index,\n                    tileIndex: index,\n                    totalTiles: recommendedItems.length,\n                    selectedLocale: selectedLocale,\n                    countryContext: selectedCountry,\n                    ribbonKey: `Recommended_${ribbonKey}`\n                }));\n            })\n        })\n    });\n};\n","function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nfunction _object_spread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        var ownKeys = Object.keys(source);\n        if (typeof Object.getOwnPropertySymbols === \"function\") {\n            ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n            }));\n        }\n        ownKeys.forEach(function(key) {\n            _define_property(target, key, source[key]);\n        });\n    }\n    return target;\n}\nfunction ownKeys(object, enumerableOnly) {\n    var keys = Object.keys(object);\n    if (Object.getOwnPropertySymbols) {\n        var symbols = Object.getOwnPropertySymbols(object);\n        if (enumerableOnly) {\n            symbols = symbols.filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n            });\n        }\n        keys.push.apply(keys, symbols);\n    }\n    return keys;\n}\nfunction _object_spread_props(target, source) {\n    source = source != null ? source : {};\n    if (Object.getOwnPropertyDescriptors) {\n        Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n        ownKeys(Object(source)).forEach(function(key) {\n            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n    }\n    return target;\n}\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport SpzaComponent from '../../shared/components/spzaComponent';\nimport { Constants } from '../../shared/utils/constants';\nimport { InternalLink } from '../../shared/components/internalLink';\nimport * as DetailUtils from '../../shared/utils/detailUtils';\nimport { urlPush } from '../../shared/routerHistory';\nexport var UsefulInfoMetadataCellItemType = /*#__PURE__*/ function(UsefulInfoMetadataCellItemType) {\n    UsefulInfoMetadataCellItemType[UsefulInfoMetadataCellItemType[\"Filter\"] = 0] = \"Filter\";\n    UsefulInfoMetadataCellItemType[UsefulInfoMetadataCellItemType[\"Label\"] = 1] = \"Label\";\n    UsefulInfoMetadataCellItemType[UsefulInfoMetadataCellItemType[\"Link\"] = 2] = \"Link\";\n    UsefulInfoMetadataCellItemType[UsefulInfoMetadataCellItemType[\"Modal\"] = 3] = \"Modal\";\n    UsefulInfoMetadataCellItemType[UsefulInfoMetadataCellItemType[\"InternalLink\"] = 4] = \"InternalLink\";\n    return UsefulInfoMetadataCellItemType;\n}({});\nconst isUsefulInfoMetadataCellItemFilter = (object)=>{\n    return object.type === 0;\n};\nconst isUsefulInfoMetadataCellItemInternalLink = (object)=>{\n    return object.type === 4;\n};\nconst isUsefulInfoMetadataCellItemLink = (object)=>{\n    return object.type === 2;\n};\nconst isUsefulInfoMetadataCellItemModal = (object)=>{\n    return object.type === 3;\n};\nexport class UsefulInfo extends SpzaComponent {\n    getLinkElement(item) {\n        if (item.information) {\n            return /*#__PURE__*/ _jsx(\"a\", _object_spread_props(_object_spread({\n                className: \"c-hyperlink\",\n                rel: \"noreferrer\",\n                target: \"_blank\",\n                href: item.information,\n                title: this.context.loc(item.text),\n                onClick: ()=>{\n                    DetailUtils.generateLinkPayloadAndLogTelemetry(this.props.ownerType, item.entityId, item.id, item.information, 'Default');\n                }\n            }, item.props), {\n                children: this.context.loc(item.text)\n            }));\n        } else {\n            return null;\n        }\n    }\n    getInternalLinkElement(item) {\n        return /*#__PURE__*/ _jsx(InternalLink, _object_spread_props(_object_spread({\n            className: \"c-hyperlink\",\n            href: item.information,\n            onClick: item.onClick\n        }, item.props), {\n            children: this.context.loc(item.text)\n        }));\n    }\n    getFilterElement(item) {\n        const filter = item.filter;\n        if (item.nationalCloud) {\n            return /*#__PURE__*/ _jsx(\"div\", {\n                children: this.context.loc(filter.locKey, filter.title)\n            }, filter.title);\n        } else {\n            return /*#__PURE__*/ _jsxs(InternalLink, _object_spread_props(_object_spread({\n                className: \"c-hyperlink detailsCategories\",\n                href: filter.newPath,\n                title: this.context.loc(filter.locKey, filter.title),\n                onClick: (e)=>{\n                    DetailUtils.generateLinkPayloadAndLogTelemetry(DetailUtils.OwnerType.App, item.entityId, filter.filterItem, filter.newPath, 'Default');\n                    // The embedded app needs to open these links in a new window\n                    if (item.isEmbedded) {\n                        // eslint-disable-next-line security/detect-non-literal-fs-filename\n                        window.open(window.location.origin + filter.newPath, '_blank');\n                    } else {\n                        urlPush(filter.newPath);\n                        window.scrollTo(0, 0);\n                    }\n                    // The preventDefault prevents the route from transitioning and thus refreshing the page.\n                    e.preventDefault();\n                },\n                accEnabled: true\n            }, item.props), {\n                children: [\n                    /*#__PURE__*/ _jsx(\"span\", {\n                        children: this.context.loc(filter.locKey, filter.title)\n                    }),\n                    filter.filterItem === Constants.filterMaps.categories ? /*#__PURE__*/ _jsx(\"meta\", {\n                        itemProp: \"applicationCategory\",\n                        content: this.context.loc(filter.locKey, filter.title)\n                    }) : null\n                ]\n            }), filter.title);\n        }\n    }\n    renderImpl() {\n        return /*#__PURE__*/ _jsx(\"div\", {\n            className: \"usefulInfo \",\n            children: this.props.metadata.map((col)=>{\n                return /*#__PURE__*/ _jsxs(\"div\", {\n                    className: \"usefulInfoColumn\",\n                    children: [\n                        /*#__PURE__*/ _jsx(\"h3\", {\n                            className: \"columnTitle\",\n                            children: this.context.loc(col.title, col.titleFallback || col.title)\n                        }),\n                        /*#__PURE__*/ _jsx(\"div\", {\n                            className: \"columnCells\",\n                            children: col.cells.map((cell)=>{\n                                return /*#__PURE__*/ _jsxs(\"div\", {\n                                    className: \"cell\",\n                                    itemProp: cell.id,\n                                    children: [\n                                        cell.title && /*#__PURE__*/ _jsx(\"header\", {\n                                            \"aria-label\": cell.title,\n                                            children: this.context.loc(cell.title, cell.titleFallback || cell.title)\n                                        }),\n                                        cell.cellItems.map((item)=>{\n                                            if (isUsefulInfoMetadataCellItemFilter(item)) {\n                                                return this.getFilterElement(item);\n                                            } else if (isUsefulInfoMetadataCellItemLink(item)) {\n                                                return this.getLinkElement(item);\n                                            } else if (isUsefulInfoMetadataCellItemModal(item)) {\n                                                return item.getContent();\n                                            } else if (isUsefulInfoMetadataCellItemInternalLink(item)) {\n                                                return this.getInternalLinkElement(item);\n                                            } else {\n                                                return /*#__PURE__*/ _jsx(\"span\", _object_spread_props(_object_spread({\n                                                    className: \"cellLabel\"\n                                                }, item.props), {\n                                                    children: this.context.loc(item.text)\n                                                }), item.text);\n                                            }\n                                        })\n                                    ]\n                                }, cell.id);\n                            }).filter(Boolean)\n                        })\n                    ]\n                }, col.id);\n            })\n        });\n    }\n    constructor(...args){\n        super(...args), _define_property(this, \"context\", void 0);\n    }\n}\nUsefulInfo.contextTypes = {\n    loc: PropTypes.func,\n    locParams: PropTypes.func,\n    renderErrorModal: PropTypes.func\n};\n","import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from \"react/jsx-runtime\";\nimport React, { useCallback } from 'react';\nimport * as PropTypes from 'prop-types';\nimport { Text, Icon, Label, Stack, ChoiceGroup } from '@fluentui/react';\nimport { Constants } from '@shared/utils/constants';\nimport { IAvailabilityActions } from '@shared/Models';\nimport { convertTermToString } from '@shared/utils/checkoutUtils';\nimport Tooltip from '@shared/components/tooltip';\nimport { addFuturePricing } from '@shared/utils/pricing';\nconst pbTelemetry = Constants.Telemetry.PurchaseBlendsTelemetry;\nexport const GenerateLabelAndTooltip = ({ context })=>{\n    return /*#__PURE__*/ _jsx(Label, {\n        className: \"mt-20\",\n        children: /*#__PURE__*/ _jsx(Stack, {\n            horizontal: true,\n            verticalAlign: \"center\",\n            wrap: false,\n            children: /*#__PURE__*/ _jsxs(Text, {\n                className: \"ms-fontWeight-semibold \",\n                children: [\n                    `${context.loc('Checkout_PriceAndPaymentOptions', 'Price/payment options')} `,\n                    /*#__PURE__*/ _jsx(Tooltip, {\n                        tooltipHostProps: {\n                            content: context.loc('Checkout_PriceAndBilling_Tooltip_PaymentOptions', \"The plan's price and payment frequency\"),\n                            calloutProps: {\n                                gapSpace: 0\n                            }\n                        },\n                        children: /*#__PURE__*/ _jsx(Icon, {\n                            iconName: \"Info\",\n                            ariaLabel: context.loc('Checkout_PriceAndBilling_Tooltip_PaymentOptions', \"The plan's price and payment frequency\")\n                        })\n                    }),\n                    /*#__PURE__*/ _jsx(Text, {\n                        className: \"requiredColor\",\n                        children: ` *`\n                    })\n                ]\n            })\n        })\n    });\n};\nexport const getBillingFrequencyOptions = ({ billingCountryCode, items, futurePriceMonthly, futurePriceYearly, locale }, context)=>{\n    const { product, id, termDuration, hasFreeTrial } = items[0];\n    const plan = product.getPlanByPlanId(id);\n    const availability = plan.availabilities.find((availability)=>{\n        const { actions } = availability;\n        return actions.includes(IAvailabilityActions.Renew) && actions.includes(IAvailabilityActions.Browse);\n    });\n    const termsByBillingTermDuration = availability.terms.filter((term)=>term.termUnits === termDuration);\n    const billingFrequencyOptions = termsByBillingTermDuration.map((term)=>{\n        const termEntity = product.getTermByTermId({\n            planId: id,\n            termId: term.termId\n        });\n        if (!termEntity) {\n            return null;\n        }\n        return {\n            // If there's no free trial termId, assign the renew termId\n            key: termEntity.freeTrialTermId || termEntity.renewTermId,\n            // This value isn't displayed, but rather used to pass in the relevant contract term in the case there's only one option\n            value: termEntity.renewTermUnits,\n            text: convertTermToString({\n                context,\n                term: termEntity,\n                countryCode: billingCountryCode,\n                isQuantifiable: items[0].isQuantifiable,\n                hasFreeTrial,\n                locale\n            }),\n            onRenderLabel: (option, defaultRender)=>/*#__PURE__*/ _jsxs(_Fragment, {\n                    children: [\n                        defaultRender(option),\n                        addFuturePricing(term.renewTermUnits, futurePriceMonthly, futurePriceYearly)\n                    ]\n                })\n        };\n    }).filter(Boolean);\n    return billingFrequencyOptions;\n};\nexport const getDefaultOrSelectedBillingFrequency = ({ items }, options)=>{\n    var _items_, _items_1;\n    const availableTermFrequencies = options === null || options === void 0 ? void 0 : options.map((option)=>option.key);\n    const defaultBillingFrequency = (availableTermFrequencies === null || availableTermFrequencies === void 0 ? void 0 : availableTermFrequencies.includes((_items_ = items[0]) === null || _items_ === void 0 ? void 0 : _items_.termId)) ? (_items_1 = items[0]) === null || _items_1 === void 0 ? void 0 : _items_1.termId : availableTermFrequencies[0];\n    return defaultBillingFrequency || '';\n};\nexport const BillingFrequencyChoiceGroup = (props, context)=>{\n    const { setSelectedTerm, futurePriceMonthly, futurePriceYearly, billingCountryCode, items, locale } = props;\n    const { termId, id } = items[0];\n    const options = useCallback(()=>getBillingFrequencyOptions({\n            billingCountryCode,\n            items,\n            futurePriceMonthly,\n            futurePriceYearly,\n            locale\n        }, context), [\n        billingCountryCode,\n        items,\n        futurePriceMonthly,\n        futurePriceYearly,\n        context,\n        locale\n    ]);\n    const { text, value } = options()[0];\n    return /*#__PURE__*/ _jsxs(_Fragment, {\n        children: [\n            /*#__PURE__*/ _jsx(GenerateLabelAndTooltip, {\n                context: context\n            }),\n            /*#__PURE__*/ _jsx(Stack, {\n                horizontal: true,\n                tokens: {\n                    childrenGap: 10\n                },\n                children: /*#__PURE__*/ _jsx(Stack.Item, {\n                    children: options().length > 1 ? /*#__PURE__*/ _jsx(ChoiceGroup, {\n                        \"data-bi-id\": pbTelemetry.PickBillingFrequency,\n                        \"data-bi-name\": pbTelemetry.BillingFrequencyComponent,\n                        options: options(),\n                        onChange: (_, option)=>setSelectedTerm({\n                                id,\n                                termId: option.key\n                            }),\n                        selectedKey: termId,\n                        defaultSelectedKey: getDefaultOrSelectedBillingFrequency(props, options()),\n                        ariaLabelledBy: 'billTermSelection'\n                    }) : /*#__PURE__*/ _jsxs(_Fragment, {\n                        children: [\n                            /*#__PURE__*/ _jsx(Text, {\n                                children: text\n                            }),\n                            addFuturePricing(value, futurePriceMonthly, futurePriceYearly)\n                        ]\n                    })\n                })\n            })\n        ]\n    });\n};\nBillingFrequencyChoiceGroup.contextTypes = {\n    locParams: PropTypes.func,\n    loc: PropTypes.func\n};\n","import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from \"react/jsx-runtime\";\nimport React, { useMemo } from 'react';\nimport * as PropTypes from 'prop-types';\nimport { Constants } from '@shared/utils/constants';\nimport { Text, Icon, Label, Stack, ChoiceGroup } from '@fluentui/react';\nimport Tooltip from '@shared/components/tooltip';\nimport { TermsStrings } from '@shared/Models';\nimport { getBillingTermTranslated } from '@shared/utils/pricing';\nconst pbTelemetry = Constants.Telemetry.PurchaseBlendsTelemetry;\nexport const BillingTermChoiceGroup = ({ setSelectedTerm, setBillingTerm, items }, context)=>{\n    const { id: planId, product, hasFreeTrial, termDuration } = items[0];\n    const handleBillingTermChanges = ({ setSelectedTerm, setBillingTerm, planId, product, hasFreeTrial, option })=>{\n        const firstTerm = product.getTermByPlanAndBillingTermDuration({\n            planId,\n            billingTermDuration: option.key\n        });\n        setBillingTerm({\n            id: planId,\n            termDuration: option.key\n        });\n        setSelectedTerm({\n            id: planId,\n            termId: hasFreeTrial ? firstTerm.freeTrialTermId : firstTerm.termId\n        });\n    };\n    const generateBillingOption = (term, context)=>{\n        return {\n            key: term,\n            text: `${getBillingTermTranslated({\n                context,\n                term,\n                isSubscription: true\n            })}`\n        };\n    };\n    const getTermMapping = (context)=>{\n        return {\n            [TermsStrings.MonthString.toLowerCase()]: generateBillingOption(TermsStrings.Term1MString, context),\n            [TermsStrings.Term1MString.toLowerCase()]: generateBillingOption(TermsStrings.Term1MString, context),\n            [TermsStrings.YearString.toLowerCase()]: generateBillingOption(TermsStrings.Term1YString, context),\n            [TermsStrings.Term1YString.toLowerCase()]: generateBillingOption(TermsStrings.Term1YString, context),\n            [TermsStrings.Term2YString.toLowerCase()]: generateBillingOption(TermsStrings.Term2YString, context),\n            [TermsStrings.Term3YString.toLowerCase()]: generateBillingOption(TermsStrings.Term3YString, context)\n        };\n    };\n    const getBillingOptions = (items, context)=>{\n        // Since sort happens in place, cloning list instead of messing up redux.\n        const listOfTerms = [\n            ...items[0].product.getTermDurationsByPlanId(items[0].id)\n        ];\n        return listOfTerms.sort().map((term)=>{\n            const billingOptionsMap = getTermMapping(context);\n            return billingOptionsMap[term.toLowerCase()];\n        });\n    };\n    const options = useMemo(()=>getBillingOptions(items, context), [\n        items,\n        context\n    ]);\n    return /*#__PURE__*/ _jsxs(_Fragment, {\n        children: [\n            /*#__PURE__*/ _jsx(Label, {\n                children: /*#__PURE__*/ _jsx(Stack, {\n                    horizontal: true,\n                    verticalAlign: \"center\",\n                    wrap: false,\n                    children: /*#__PURE__*/ _jsxs(Text, {\n                        className: \"ms-fontWeight-semibold\",\n                        children: [\n                            `${context.loc('Checkout_PriceAndBilling_BillingTerm', 'Billing term')} `,\n                            /*#__PURE__*/ _jsx(Tooltip, {\n                                tooltipHostProps: {\n                                    content: context.loc('Checkout_PriceAndBilling_Tooltip_BillingTerm', \"This is the plan's subscription period.\"),\n                                    calloutProps: {\n                                        gapSpace: 0\n                                    }\n                                },\n                                children: /*#__PURE__*/ _jsx(Icon, {\n                                    iconName: \"Info\",\n                                    ariaLabel: context.loc('Checkout_PriceAndBilling_Tooltip_BillingTerm', \"This is the plan's subscription period.\")\n                                })\n                            }),\n                            /*#__PURE__*/ _jsx(Text, {\n                                className: \"requiredColor\",\n                                children: ` *`\n                            })\n                        ]\n                    })\n                })\n            }),\n            /*#__PURE__*/ _jsx(Stack, {\n                horizontal: true,\n                tokens: {\n                    childrenGap: 10\n                },\n                children: /*#__PURE__*/ _jsx(Stack.Item, {\n                    children: (options === null || options === void 0 ? void 0 : options.length) > 1 ? /*#__PURE__*/ _jsx(ChoiceGroup, {\n                        \"data-bi-id\": pbTelemetry.PickBillingTerm,\n                        \"data-bi-name\": pbTelemetry.BillingTermComponent,\n                        options: options,\n                        onChange: (_, option)=>handleBillingTermChanges({\n                                product,\n                                planId,\n                                setBillingTerm,\n                                setSelectedTerm,\n                                hasFreeTrial,\n                                option\n                            }),\n                        defaultSelectedKey: termDuration || ''\n                    }) : /*#__PURE__*/ _jsx(Text, {\n                        children: options === null || options === void 0 ? void 0 : options[0].text\n                    })\n                })\n            })\n        ]\n    });\n};\nBillingTermChoiceGroup.contextTypes = {\n    locParams: PropTypes.func,\n    loc: PropTypes.func\n};\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport React, { useRef, useState } from 'react';\nimport FuturePriceWarning from '@shared/components/futurePriceWarning';\nimport { SaasPricingTableBase } from '@shared/components';\nimport { connect } from 'react-redux';\nimport { mergeStyleSets } from '@fluentui/react';\nimport classNames from 'classnames';\nconst classes = mergeStyleSets({\n    limitHeight: {\n        height: '70vh'\n    }\n});\nexport const SaasPricingTableComponent = ({ app, billingCountry, onGetInNowClicked, shouldBlockPrices, config: { locale } })=>{\n    var _globalThis_document;\n    const [isHorizontalScrollbarPresent, setIsHorizontalScrollbarPresent] = useState(false);\n    const containerRef = useRef();\n    const { futurePricesInformation: futurePrices } = app;\n    // In SSR context there's no body\n    const bodyElement = (_globalThis_document = globalThis.document) === null || _globalThis_document === void 0 ? void 0 : _globalThis_document.body;\n    const isDocumentScrollableVertically = (bodyElement === null || bodyElement === void 0 ? void 0 : bodyElement.scrollHeight) > (bodyElement === null || bodyElement === void 0 ? void 0 : bodyElement.clientHeight);\n    return /*#__PURE__*/ _jsxs(\"div\", {\n        ref: containerRef,\n        className: classNames({\n            [classes.limitHeight]: isDocumentScrollableVertically && isHorizontalScrollbarPresent\n        }),\n        children: [\n            /*#__PURE__*/ _jsx(FuturePriceWarning, {\n                futurePrices: futurePrices\n            }),\n            /*#__PURE__*/ _jsx(SaasPricingTableBase, {\n                app: app,\n                billingCountry: billingCountry,\n                locale: locale,\n                onGetInNowClicked: onGetInNowClicked,\n                shouldBlockPrices: shouldBlockPrices\n            })\n        ]\n    });\n};\nconst mapStateToProps = ({ config })=>({\n        config\n    });\nexport const SaasPricingTable = connect(mapStateToProps)(SaasPricingTableComponent);\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport React, { useEffect } from 'react';\nimport { mergeStyleSets, Stack, Text, FontSizes, ProgressIndicator, ScreenWidthMinXLarge } from '@fluentui/react';\nimport OptimizingImage from '@shared/images/optimizingImage.svg';\nimport { TelemetryImage } from '@shared/components/telemetryImage';\nconst OrderLoadingStyles = {\n    itemDescription: {\n        textAlign: 'center'\n    }\n};\nconst contentStyles = mergeStyleSets({\n    itemName: {\n        fontSize: FontSizes.size28,\n        fontWeight: 900,\n        marginTop: '20px',\n        textAlign: 'center'\n    },\n    progressContainer: {\n        width: '640px',\n        height: '680px',\n        zIndex: '101',\n        backgroundColor: '#FFFFFF',\n        position: 'absolute',\n        margin: 'auto',\n        top: '0',\n        right: '0',\n        bottom: '0',\n        left: '0',\n        padding: '120px 80px',\n        [`@media (max-width: ${ScreenWidthMinXLarge}px)`]: {\n            width: '320px',\n            height: '440px',\n            padding: '60px 40px'\n        }\n    }\n});\nexport const OrderLoading = ({ context })=>{\n    const progressMessages = [\n        'Loader_Starting',\n        'Loader_Verifiying',\n        'Loader_Processing'\n    ];\n    const intervalDelay = 2500;\n    const intervalIncrement = 0.1;\n    const [progressMessage, setProgressMessage] = React.useState(progressMessages[0]);\n    const [percentComplete, setPercentComplete] = React.useState(0);\n    useEffect(()=>{\n        if (percentComplete <= 0.9) {\n            const id = setInterval(()=>{\n                setPercentComplete((intervalIncrement + percentComplete) % 1);\n                switch(Math.round(percentComplete * 10 / 2)){\n                    case 0:\n                    case 1:\n                        setProgressMessage(progressMessages[0]);\n                        break;\n                    case 2:\n                        setProgressMessage(progressMessages[1]);\n                        break;\n                    case 3:\n                        setProgressMessage(progressMessages[2]);\n                        break;\n                }\n            }, intervalDelay);\n            return ()=>{\n                clearInterval(id);\n            };\n        }\n    }, [\n        percentComplete,\n        progressMessages\n    ]);\n    return /*#__PURE__*/ _jsxs(Stack, {\n        className: contentStyles.progressContainer,\n        tokens: {\n            childrenGap: 20\n        },\n        children: [\n            /*#__PURE__*/ _jsx(Stack.Item, {\n                align: \"center\",\n                children: /*#__PURE__*/ _jsx(TelemetryImage, {\n                    alt: \"placeOrderImage\",\n                    src: OptimizingImage\n                })\n            }),\n            /*#__PURE__*/ _jsx(Text, {\n                title: context.loc(progressMessage),\n                className: contentStyles.itemName,\n                children: context.loc(progressMessage)\n            }),\n            /*#__PURE__*/ _jsx(ProgressIndicator, {\n                description: context.loc('Loader_Description'),\n                percentComplete: percentComplete,\n                barHeight: 2,\n                styles: OrderLoadingStyles\n            })\n        ]\n    });\n};\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport React, { useEffect } from 'react';\nimport { useSelector } from 'react-redux';\nimport { FontSizes, FontWeights, mergeStyleSets, PrimaryButton, ScreenWidthMinXLarge, Stack, Text } from '@fluentui/react';\nimport { Constants } from '@shared/utils/constants';\nimport { logger } from '@src/logger';\nimport { SpzaInstrumentService } from '@shared/services/telemetry/spza/spzaInstrument';\nconst contentStyles = mergeStyleSets({\n    title: {\n        fontSize: FontSizes.size20,\n        fontWeight: FontWeights.semibold\n    },\n    container: {\n        width: '560px',\n        height: '216px',\n        zIndex: '101',\n        backgroundColor: '#FFFFFF',\n        position: 'absolute',\n        margin: 'auto',\n        top: '0',\n        right: '0',\n        bottom: '0',\n        left: '0',\n        padding: '24px',\n        [`@media (max-width: ${ScreenWidthMinXLarge}px)`]: {\n            width: '90%'\n        }\n    }\n});\nconst logClickEvent = ({ userType, checkoutId })=>{\n    const payload = {\n        page: location.pathname,\n        action: Constants.Telemetry.Action.Checkout,\n        actionModifier: Constants.Telemetry.ActionModifier.RedirectButton,\n        details: JSON.stringify({\n            userType,\n            checkoutId\n        })\n    };\n    SpzaInstrumentService.getProvider().probe('logTelemetryInfo', payload);\n    logger.info(payload.details, {\n        action: payload.action,\n        actionModifier: payload.actionModifier,\n        appName: payload.appName\n    });\n};\nexport const RedirectModal = ({ onClick, context, userType })=>{\n    const checkoutId = useSelector(({ checkout })=>checkout.checkoutId);\n    useEffect(()=>{\n        const payload = {\n            page: location.pathname,\n            action: Constants.Telemetry.Action.Checkout,\n            actionModifier: Constants.Telemetry.ActionModifier.RedirectModal,\n            details: JSON.stringify({\n                userType,\n                checkoutId\n            })\n        };\n        SpzaInstrumentService.getProvider().probe('logTelemetryInfo', payload);\n        logger.info(payload.details, {\n            action: payload.action,\n            actionModifier: payload.actionModifier,\n            page: payload.page\n        });\n    }, []);\n    return /*#__PURE__*/ _jsxs(Stack, {\n        className: contentStyles.container,\n        verticalAlign: \"space-between\",\n        children: [\n            /*#__PURE__*/ _jsx(Stack.Item, {\n                align: \"start\",\n                children: /*#__PURE__*/ _jsx(Text, {\n                    className: contentStyles.title,\n                    children: context.loc('Checkout_Error_Title')\n                })\n            }),\n            /*#__PURE__*/ _jsx(Stack.Item, {\n                align: \"start\",\n                children: /*#__PURE__*/ _jsx(Text, {\n                    children: context.loc('Checkout_Error_Description')\n                })\n            }),\n            /*#__PURE__*/ _jsx(Stack.Item, {\n                align: \"end\",\n                children: /*#__PURE__*/ _jsx(PrimaryButton, {\n                    \"data-bi-id\": Constants.JsllCheckout.RedirectButton,\n                    onClick: ()=>{\n                        onClick();\n                        logClickEvent(userType);\n                    },\n                    children: context.loc('Checkout_Error_Button')\n                })\n            })\n        ]\n    });\n};\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport React, { useEffect } from 'react';\n// eslint-disable-next-line import/named\nimport { mergeStyleSets, Stack, Text, FontSizes, ScreenWidthMinXLarge, Spinner } from '@fluentui/react';\nconst contentStyles = mergeStyleSets({\n    itemName: {\n        fontSize: FontSizes.size28,\n        fontWeight: 600,\n        marginTop: '20px',\n        textAlign: 'center'\n    },\n    progressContainer: {\n        width: '560px',\n        height: '280px',\n        zIndex: '101',\n        backgroundColor: '#FFFFFF',\n        position: 'absolute',\n        margin: 'auto',\n        top: '0',\n        right: '0',\n        bottom: '0',\n        left: '0',\n        padding: '120px 80px',\n        [`@media (max-width: ${ScreenWidthMinXLarge}px)`]: {\n            width: '90%',\n            height: '280px'\n        }\n    }\n});\nconst spinnerStyles = {\n    circle: {\n        width: '56px',\n        height: '56px'\n    }\n};\nexport const BusyLoader = ({ context })=>{\n    const progressMessages = [\n        'Loading_Selection',\n        'Working',\n        'Updating'\n    ];\n    const intervalDelay = 2500;\n    const intervalIncrement = 0.1;\n    const [progressMessage, setProgressMessage] = React.useState(progressMessages[0]);\n    const [percentComplete, setPercentComplete] = React.useState(0);\n    useEffect(()=>{\n        if (percentComplete <= 0.9) {\n            const id = setInterval(()=>{\n                setPercentComplete((intervalIncrement + percentComplete) % 1);\n                switch(Math.round(percentComplete * 10 / 2)){\n                    case 0:\n                    case 1:\n                        setProgressMessage(progressMessages[0]);\n                        break;\n                    case 2:\n                        setProgressMessage(progressMessages[1]);\n                        break;\n                    case 3:\n                        setProgressMessage(progressMessages[2]);\n                        break;\n                }\n            }, intervalDelay);\n            return ()=>{\n                clearInterval(id);\n            };\n        }\n    }, [\n        percentComplete,\n        progressMessages\n    ]);\n    return /*#__PURE__*/ _jsxs(Stack, {\n        className: contentStyles.progressContainer,\n        tokens: {\n            childrenGap: 20\n        },\n        verticalAlign: \"center\",\n        children: [\n            /*#__PURE__*/ _jsx(Spinner, {\n                styles: spinnerStyles\n            }),\n            /*#__PURE__*/ _jsx(Text, {\n                title: context.loc(progressMessage),\n                className: contentStyles.itemName,\n                children: context.loc(progressMessage)\n            })\n        ]\n    });\n};\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport React from 'react';\nimport { mergeStyleSets, MessageBar, MessageBarType } from '@fluentui/react';\nimport { Constants } from '@shared/utils/constants';\nconst contentStyles = mergeStyleSets({\n    root: {\n        marginBottom: '10px'\n    }\n});\nexport const MSuserErrorBanner = ({ context, tenantId })=>{\n    return tenantId === Constants.MSTenantId && /*#__PURE__*/ _jsx(\"div\", {\n        className: contentStyles.root,\n        children: /*#__PURE__*/ _jsx(MessageBar, {\n            role: \"status\",\n            messageBarType: MessageBarType.error,\n            children: context.loc('MSuser_Banner', 'As a Microsoft Employee, you are not allowed to complete a purchase in AppSource')\n        })\n    });\n};\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport React, { useState } from 'react';\nimport * as PropTypes from 'prop-types';\nimport { Text, mergeStyleSets, Stack, Icon } from '@fluentui/react';\nimport classNames from 'classnames';\nimport { isNil } from 'lodash-es';\nimport { useSelector } from 'react-redux';\nimport { NeutralColors, SharedColors } from '@fluentui/theme';\nimport { storeFeedback } from 'services/feedback';\nimport { Constants } from '@shared/utils/constants';\nimport { logTelemetry } from '@shared/utils/telemetryUtils';\nconst contentStyles = mergeStyleSets({\n    containerClass: {\n        paddingTop: 8\n    },\n    feedbackButtons: {\n        color: NeutralColors.gray160,\n        '&:hover': {\n            color: SharedColors.cyanBlue10\n        }\n    },\n    feedbackButtonsSelected: {\n        color: SharedColors.cyanBlue10,\n        cursor: 'default'\n    },\n    defaultCursor: {\n        cursor: 'default'\n    },\n    pointerCursor: {\n        cursor: 'pointer'\n    }\n});\nconst Negative = 'Negative';\nconst Positive = 'Positive';\nconst getAriaLabel = ({ isFeedbackNull, isFeedbackPositive, feedbackNoun, context })=>{\n    const isPositiveFeedbackSelected = !isFeedbackNull && isFeedbackPositive;\n    const isNegativeFeedbackSelected = !isFeedbackNull && !isFeedbackPositive;\n    const selectionCondition = feedbackNoun === Negative ? isPositiveFeedbackSelected : isNegativeFeedbackSelected;\n    const feedbackText = feedbackNoun === Positive ? Positive : Negative;\n    return isFeedbackNull || selectionCondition ? context.loc(`Feedback_ShowingResultsFor_${feedbackText}Feedback`, `${feedbackText} feedback`) : context.loc(`Feedback_ShowingResultsFor_${feedbackText}FeedbackProvided`, `Provided ${feedbackText} feedback`);\n};\nexport const sendFeedback = ({ isPositive, requestId, showingResultsFor, didYouMean, previousSearchText })=>{\n    const details = {\n        positiveFeedBack: isPositive,\n        requestId,\n        showingResultsFor,\n        didYouMean,\n        searchTerm: previousSearchText\n    };\n    logTelemetry(Constants.Telemetry.Action.Feedback, Constants.Telemetry.ActionModifier.ShowingResultsForFeedback, JSON.stringify(details), true);\n    storeFeedback({\n        action: Constants.Telemetry.Action.Click,\n        actionModifier: Constants.Telemetry.ActionModifier.ShowingResultsForFeedback,\n        details: JSON.stringify(details)\n    });\n};\nconst likeIconName = 'Like';\nconst solidLikeIconName = 'LikeSolid';\nconst dislikeIconName = 'Dislike';\nconst solidDislikeIconName = 'DislikeSolid';\nexport const ThumbsUpDown = ({ localizedQuestion = '' }, context)=>{\n    const { containerClass, feedbackButtons, feedbackButtonsSelected, defaultCursor, pointerCursor } = contentStyles;\n    const [isFeedbackPositive, setFeedback] = useState(null);\n    const { requestId, showingResultsFor, didYouMean, previousSearchText } = useSelector(({ search: { requestId, showingResultsFor, didYouMean, previousSearchText } })=>({\n            requestId,\n            showingResultsFor,\n            didYouMean,\n            previousSearchText\n        }));\n    const isFeedbackNull = isNil(isFeedbackPositive);\n    const likeAria = getAriaLabel({\n        isFeedbackNull,\n        feedbackNoun: Positive,\n        isFeedbackPositive,\n        context\n    });\n    const dislikeAria = getAriaLabel({\n        isFeedbackNull,\n        feedbackNoun: Negative,\n        isFeedbackPositive,\n        context\n    });\n    const handleFeedbackClick = ({ isPositive })=>{\n        if (isFeedbackNull) {\n            setFeedback(isPositive);\n            sendFeedback({\n                isPositive,\n                requestId,\n                showingResultsFor,\n                didYouMean,\n                previousSearchText\n            });\n        }\n    };\n    const detectKeyboardClick = ({ event: { key }, isPositive })=>{\n        if (key === Constants.SystemKeyAsString.Enter || key === Constants.SystemKeyAsString.Space) {\n            handleFeedbackClick({\n                isPositive\n            });\n        }\n    };\n    const positiveIconName = isFeedbackNull ? likeIconName : isFeedbackPositive ? solidLikeIconName : likeIconName;\n    const negativeIconName = isFeedbackNull ? dislikeIconName : !isFeedbackPositive ? solidDislikeIconName : dislikeIconName;\n    const thumbsUpClass = classNames({\n        [defaultCursor]: !isFeedbackNull && !isFeedbackPositive,\n        [feedbackButtons]: isFeedbackNull,\n        [pointerCursor]: isFeedbackNull,\n        [feedbackButtonsSelected]: !isFeedbackNull && isFeedbackPositive\n    });\n    const thumbsDownClass = classNames({\n        [defaultCursor]: !isFeedbackNull && isFeedbackPositive,\n        [feedbackButtons]: isFeedbackNull,\n        [pointerCursor]: isFeedbackNull,\n        [feedbackButtonsSelected]: !isFeedbackNull && !isFeedbackPositive\n    });\n    return /*#__PURE__*/ _jsx(\"div\", {\n        children: /*#__PURE__*/ _jsxs(Stack, {\n            horizontal: true,\n            className: containerClass,\n            tokens: {\n                childrenGap: 6\n            },\n            children: [\n                /*#__PURE__*/ _jsx(Stack.Item, {\n                    children: /*#__PURE__*/ _jsx(Text, {\n                        children: localizedQuestion\n                    })\n                }),\n                /*#__PURE__*/ _jsx(Stack.Item, {\n                    children: /*#__PURE__*/ _jsx(Icon, {\n                        role: 'button',\n                        \"aria-label\": likeAria,\n                        tabIndex: 0,\n                        onClick: ()=>handleFeedbackClick({\n                                isPositive: true\n                            }),\n                        onKeyDown: (event)=>detectKeyboardClick({\n                                event,\n                                isPositive: true\n                            }),\n                        iconName: positiveIconName,\n                        className: thumbsUpClass\n                    })\n                }),\n                /*#__PURE__*/ _jsx(Stack.Item, {\n                    children: /*#__PURE__*/ _jsx(Icon, {\n                        role: 'button',\n                        \"aria-label\": dislikeAria,\n                        tabIndex: 0,\n                        onClick: ()=>handleFeedbackClick({\n                                isPositive: false\n                            }),\n                        onKeyDown: (event)=>detectKeyboardClick({\n                                event,\n                                isPositive: false\n                            }),\n                        iconName: negativeIconName,\n                        className: thumbsDownClass\n                    })\n                })\n            ]\n        })\n    });\n};\nThumbsUpDown.contextTypes = {\n    loc: PropTypes.func\n};\n","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n    try {\n        var info = gen[key](arg);\n        var value = info.value;\n    } catch (error) {\n        reject(error);\n        return;\n    }\n    if (info.done) {\n        resolve(value);\n    } else {\n        Promise.resolve(value).then(_next, _throw);\n    }\n}\nfunction _async_to_generator(fn) {\n    return function() {\n        var self = this, args = arguments;\n        return new Promise(function(resolve, reject) {\n            var gen = fn.apply(self, args);\n            function _next(value) {\n                asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n            }\n            function _throw(err) {\n                asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n            }\n            _next(undefined);\n        });\n    };\n}\nfunction _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nfunction _object_spread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        var ownKeys = Object.keys(source);\n        if (typeof Object.getOwnPropertySymbols === \"function\") {\n            ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n            }));\n        }\n        ownKeys.forEach(function(key) {\n            _define_property(target, key, source[key]);\n        });\n    }\n    return target;\n}\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport React, { Suspense, useCallback, useEffect, useRef, useState } from 'react';\nimport { render, unmountComponentAtNode } from 'react-dom';\nimport { Provider, useStore } from 'react-redux';\nimport { unstable_HistoryRouter as HistoryRouter, Routes, Route } from 'react-router-dom';\nimport PropTypes from 'prop-types';\nimport { appHistory } from '@shared/routerHistory';\nimport { useHydration } from '@shared/hooks/useHydration';\nimport { ensureCheckoutApp } from '@shared/actions/thunkActions';\nconst Checkout = /*#__PURE__*/ React.lazy(()=>import('./checkout'));\n/**\n * This component is in charge of hydrating only the PurchaseBlends Checkout wrapper by using React 17's hydrate function\n * on a pre-defined <div /> root because The PurchaseBlends UI does not support React 18.\n * @param _ props is never used\n * @param context React.context inherited by <AppView />\n * @returns JSX\n */ const LegacyCheckoutHydration = (_, context)=>{\n    const checkoutDOMRef = useRef(null);\n    const [contextValue] = useState(()=>{\n        return _object_spread({}, context);\n    });\n    const isHydrated = useHydration();\n    const store = useStore();\n    const renderCheckout = useCallback(()=>{\n        render(/*#__PURE__*/ _jsx(Provider, {\n            store: store,\n            children: /*#__PURE__*/ _jsx(HistoryRouter, {\n                history: appHistory,\n                children: /*#__PURE__*/ _jsx(Routes, {\n                    children: /*#__PURE__*/ _jsx(Route, {\n                        path: \":locale/marketplace/checkout/:entityId\",\n                        element: /*#__PURE__*/ _jsx(Suspense, {\n                            fallback: null,\n                            children: /*#__PURE__*/ _jsx(Checkout, {\n                                context: contextValue\n                            })\n                        })\n                    })\n                })\n            })\n        }), checkoutDOMRef.current);\n    }, [\n        store,\n        contextValue\n    ]);\n    useEffect(()=>{\n        if (!isHydrated) {\n            return;\n        }\n        const current = checkoutDOMRef.current;\n        if (current && !current.children.length) {\n            renderCheckout();\n        }\n        return ()=>{\n            if (current) {\n                unmountComponentAtNode(current);\n            }\n        };\n    }, [\n        checkoutDOMRef,\n        renderCheckout,\n        isHydrated\n    ]);\n    return /*#__PURE__*/ _jsx(\"div\", {\n        \"data-react-legacy-root\": \"checkout\",\n        ref: checkoutDOMRef\n    });\n};\nLegacyCheckoutHydration.contextTypes = {\n    loc: PropTypes.func,\n    locParams: PropTypes.func,\n    locDateString: PropTypes.func,\n    locale: PropTypes.string,\n    buildHref: PropTypes.func,\n    ctaCallback: PropTypes.func,\n    contactCallback: PropTypes.func,\n    openTileCallback: PropTypes.func,\n    renderErrorModal: PropTypes.func,\n    reportAbuseCallback: PropTypes.func,\n    getAppHeaderHeight: PropTypes.func\n};\nexport const ensureAsyncDataSSR = /*#__PURE__*/ function() {\n    var _ref = _async_to_generator(function*(dispatch, getState, params) {\n        const { entityId } = params;\n        yield dispatch(ensureCheckoutApp({\n            entityId\n        }));\n    });\n    return function ensureAsyncDataSSR(dispatch, getState, params) {\n        return _ref.apply(this, arguments);\n    };\n}();\nexport default LegacyCheckoutHydration;\n","import { getSessionStorageItem, getLocalStorageItem, saveSessionStorageItem, saveLocalStorageItem } from '@shared/utils/browserStorageUtils';\nexport const POPUP_DISPLAYED = 'PopupDisplayed';\n// The different types of popups - add new popup here.\nexport var PopupType = /*#__PURE__*/ function(PopupType) {\n    PopupType[\"LinkedinTeachingBubble\"] = \"LinkedinTeachingBubble\";\n    return PopupType;\n}({});\n// Map used to define the display logic for each popup.\nconst popups = new Map([\n    [\n        \"LinkedinTeachingBubble\",\n        {\n            maxDisplayCount: 5,\n            DisplayOnceInSession: true\n        }\n    ]\n]);\nfunction getTotalDisplayCount(popupType) {\n    const storageDisplayCount = getLocalStorageItem(popupType);\n    return storageDisplayCount ? parseInt(storageDisplayCount) : 0;\n}\nfunction didPopupDisplayedInThisSession(popupType) {\n    const displayedInSession = getSessionStorageItem(popupType);\n    return POPUP_DISPLAYED === displayedInSession;\n}\nfunction didPopupExceededMaxCount(popupType, displayLogic) {\n    return displayLogic.maxDisplayCount <= getTotalDisplayCount(popupType);\n}\n// True if popup should be displayed according to its display history and display logic.\nexport function shouldDisplayPopup(popupType) {\n    const displayLogic = popups.get(popupType);\n    if (displayLogic.DisplayOnceInSession) {\n        return !didPopupDisplayedInThisSession(popupType) && !didPopupExceededMaxCount(popupType, displayLogic);\n    } else {\n        return !didPopupExceededMaxCount(popupType, displayLogic);\n    }\n}\n// Call when popup displayed. This call update the popup's display history.\nexport function popupDisplayed(popupType) {\n    const displayLogic = popups.get(popupType);\n    const updatedTotalDisplayCount = getTotalDisplayCount(popupType) + 1;\n    if (displayLogic.DisplayOnceInSession) {\n        saveSessionStorageItem(popupType, POPUP_DISPLAYED);\n    }\n    saveLocalStorageItem(popupType, updatedTotalDisplayCount.toString());\n}\n","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n    try {\n        var info = gen[key](arg);\n        var value = info.value;\n    } catch (error) {\n        reject(error);\n        return;\n    }\n    if (info.done) {\n        resolve(value);\n    } else {\n        Promise.resolve(value).then(_next, _throw);\n    }\n}\nfunction _async_to_generator(fn) {\n    return function() {\n        var self = this, args = arguments;\n        return new Promise(function(resolve, reject) {\n            var gen = fn.apply(self, args);\n            function _next(value) {\n                asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n            }\n            function _throw(err) {\n                asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n            }\n            _next(undefined);\n        });\n    };\n}\nfunction _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nfunction _object_spread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        var ownKeys = Object.keys(source);\n        if (typeof Object.getOwnPropertySymbols === \"function\") {\n            ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n            }));\n        }\n        ownKeys.forEach(function(key) {\n            _define_property(target, key, source[key]);\n        });\n    }\n    return target;\n}\nfunction ownKeys(object, enumerableOnly) {\n    var keys = Object.keys(object);\n    if (Object.getOwnPropertySymbols) {\n        var symbols = Object.getOwnPropertySymbols(object);\n        if (enumerableOnly) {\n            symbols = symbols.filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n            });\n        }\n        keys.push.apply(keys, symbols);\n    }\n    return keys;\n}\nfunction _object_spread_props(target, source) {\n    source = source != null ? source : {};\n    if (Object.getOwnPropertyDescriptors) {\n        Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n        ownKeys(Object(source)).forEach(function(key) {\n            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n    }\n    return target;\n}\nimport React from 'react';\nimport { connect } from 'react-redux';\nimport { withRouter } from '@shared/routerHistory';\nimport { AppDetails as AppDetailsComponent } from '@appsource/components/appDetails';\nimport { ensureAppDetailsData, ensureAppReviewsData, loadLinkedInProductGroup } from '@shared/actions/thunkActions';\nimport { createInstructionsModalAction, createRatingAction } from '@shared/actions/actions';\nimport { getTelemetryDetailContentCurrentView, getTransactCTATypes } from '@shared/utils/appUtils';\nimport { isOneTimePaymentOffer } from '@shared/utils/onetimepaymentoffers';\nimport { withHydration } from '@shared/hooks/useHydration';\nimport { createSetCheckoutSource } from '@shared/actions/checkoutActions';\nimport { getUserPrivateOffers } from '@shared/actions/privateOffersThunkActions';\nexport const mapStateToProps = (state, ownProps)=>{\n    var _state_users_profile, _state_apps_relatedAppsItems_items, _state_apps_relatedAppsItems, _state_apps_relatedAppsItems_items1, _state_apps_relatedAppsItems1, _state_apps_relatedAppsItems_items2, _state_apps_relatedAppsItems2;\n    const entityId = ownProps.routeParams.entityId.toString().toLowerCase();\n    const isPrivate = !!ownProps.routeParams.privateOffer;\n    const { billingCountryCode, breadcrumbUrl: stateBreadcrumbUrl, correlationId, currentGalleryViewIsCurated, currentView, featureFlags, locale, nationalCloud, isEmbedded } = state.config;\n    const { openInNewWindowButton } = featureFlags;\n    const appList = state.apps.dataList;\n    const hashMap = state.apps.idMap;\n    const query = ownProps.location ? ownProps.location.query : null;\n    const appIndex = hashMap[`${entityId}`];\n    let targetApp = null;\n    if (appIndex >= 0) {\n        targetApp = appList[`${appIndex}`];\n    }\n    const uiRole = state.users.profile && state.users.profile.uiRole;\n    const managedLicenses = ((_state_users_profile = state.users.profile) === null || _state_users_profile === void 0 ? void 0 : _state_users_profile.managedLicenses) || [];\n    const doesTenantHasLicenseForApp = Boolean(targetApp === null || targetApp === void 0 ? void 0 : targetApp.bigId) && managedLicenses.some((x)=>x.productId === targetApp.bigId);\n    const ctaTypes = getTransactCTATypes(targetApp, uiRole, doesTenantHasLicenseForApp, isEmbedded, billingCountryCode);\n    if (ctaTypes) {\n        targetApp.ctaTypes = ctaTypes;\n    }\n    const breadcrumbUrl = stateBreadcrumbUrl || '/' + locale + '/marketplace/apps';\n    const defaultTab = (query === null || query === void 0 ? void 0 : query.tab) ? query.tab : null;\n    const isOneTimePayment = isOneTimePaymentOffer(entityId);\n    const hideBreadcrumbUrl = isOneTimePayment;\n    var _state_apps_relatedAppsItems_items_saasLinkingItems, _state_apps_relatedAppsItems_items_linkedAddIns;\n    return _object_spread_props(_object_spread({}, ownProps), {\n        entityId,\n        app: targetApp,\n        startingPrice: targetApp ? targetApp.startingPrice : null,\n        breadcrumbUrl,\n        defaultTab,\n        allApps: appList,\n        nationalCloud,\n        billingCountryCode,\n        correlationId,\n        currentView: getTelemetryDetailContentCurrentView(currentView, currentGalleryViewIsCurated),\n        userInfo: state.users,\n        isLoadingUserData: state.users.loading,\n        isLoadingUserProfile: state.users.isLoadingUserProfile,\n        parentApps: (_state_apps_relatedAppsItems_items_saasLinkingItems = (_state_apps_relatedAppsItems = state.apps.relatedAppsItems) === null || _state_apps_relatedAppsItems === void 0 ? void 0 : (_state_apps_relatedAppsItems_items = _state_apps_relatedAppsItems.items) === null || _state_apps_relatedAppsItems_items === void 0 ? void 0 : _state_apps_relatedAppsItems_items.saasLinkingItems) !== null && _state_apps_relatedAppsItems_items_saasLinkingItems !== void 0 ? _state_apps_relatedAppsItems_items_saasLinkingItems : null,\n        linkedAddIns: (_state_apps_relatedAppsItems_items_linkedAddIns = (_state_apps_relatedAppsItems1 = state.apps.relatedAppsItems) === null || _state_apps_relatedAppsItems1 === void 0 ? void 0 : (_state_apps_relatedAppsItems_items1 = _state_apps_relatedAppsItems1.items) === null || _state_apps_relatedAppsItems_items1 === void 0 ? void 0 : _state_apps_relatedAppsItems_items1.linkedAddIns) !== null && _state_apps_relatedAppsItems_items_linkedAddIns !== void 0 ? _state_apps_relatedAppsItems_items_linkedAddIns : null,\n        locale,\n        suggestedItems: ((_state_apps_relatedAppsItems2 = state.apps.relatedAppsItems) === null || _state_apps_relatedAppsItems2 === void 0 ? void 0 : (_state_apps_relatedAppsItems_items2 = _state_apps_relatedAppsItems2.items) === null || _state_apps_relatedAppsItems_items2 === void 0 ? void 0 : _state_apps_relatedAppsItems_items2.suggestedItems) || [],\n        uiRole,\n        isPrivate,\n        isEmbedded,\n        doesTenantHasLicenseForApp,\n        hideBreadcrumbUrl,\n        linkedInProductGroup: state.apps.linkedInProductGroup,\n        openInNewWindowButtonFlag: openInNewWindowButton\n    });\n};\nfunction ensureAsyncData(dispatch, entityId, isPrivate) {\n    return dispatch(ensureAppDetailsData(entityId, isPrivate));\n}\nexport const mapDispatchToProps = (dispatch)=>{\n    return {\n        setCheckoutSourcePDP: ({ source })=>dispatch(createSetCheckoutSource({\n                source\n            })),\n        ensureAsyncData: ({ entityId, isPrivate })=>ensureAsyncData(dispatch, entityId, isPrivate),\n        ensureAppReviewsData: (entityId, forceUpdate = false)=>dispatch(ensureAppReviewsData(entityId, forceUpdate)),\n        openInstructionsModal: ()=>dispatch(createInstructionsModalAction({\n                showModal: true,\n                isFromDownload: false\n            })),\n        openRatingModal: (app, accessKey, ctaType, callback)=>dispatch(createRatingAction({\n                showModal: true,\n                app: app,\n                accessKey: accessKey,\n                ctaType: ctaType,\n                callback: callback\n            })),\n        fetchUserPrivateOffers: ()=>dispatch(getUserPrivateOffers()),\n        loadLinkedInProductGroup: (args)=>dispatch(loadLinkedInProductGroup(args))\n    };\n};\nconst AppDetails = withRouter(connect(mapStateToProps, mapDispatchToProps)(withHydration(AppDetailsComponent)));\nexport const ensureAsyncDataSSR = /*#__PURE__*/ function() {\n    var _ref = _async_to_generator(function*(dispatch, getState, params) {\n        const isPrivate = !!params.privateOffer;\n        if (isPrivate) {\n            return;\n        }\n        yield ensureAsyncData(dispatch, params.entityId, false);\n    });\n    return function ensureAsyncDataSSR(dispatch, getState, params) {\n        return _ref.apply(this, arguments);\n    };\n}();\nexport default AppDetails;\n","function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport SpzaComponent from './spzaComponent';\nimport { getElement } from '../utils/appUtils';\nimport { Constants } from '../utils/constants';\nimport { SpzaInstrumentService } from '../services/telemetry/spza/spzaInstrument';\nimport { getWindow } from '../services/window';\nimport { logger } from '@src/logger';\n// Displays long content with more and less switches\nexport class LongContent extends SpzaComponent {\n    changeExpandedState() {\n        this.setState((prevState)=>{\n            return {\n                isExpanded: !prevState.isExpanded,\n                showExpansionButton: prevState.showExpansionButton,\n                processed: prevState.processed\n            };\n        });\n        const payload = {\n            page: getWindow().location.href,\n            action: this.state.isExpanded ? Constants.Telemetry.Action.Collapse : Constants.Telemetry.Action.Expand,\n            // if this is used somewhere else than my reviews need to update it by passing in with props\n            // to determine where is 'more' clicked\n            actionModifier: Constants.Telemetry.ActionModifier.ReviewItemMoreButton\n        };\n        SpzaInstrumentService.getProvider().probe('logTelemetryInfo', payload);\n        logger.info('', {\n            action: payload.action,\n            actionModifier: payload.actionModifier\n        });\n    }\n    isLongContent() {\n        const longContent = getElement(Constants.SearchBy.Id, this.longContentIdPrefix + this.props.entityId);\n        return longContent && longContent.offsetHeight > this.props.clipHeight;\n    }\n    setStateBasedOnContentLength() {\n        if (this.isLongContent()) {\n            this.setState({\n                isExpanded: false,\n                showExpansionButton: true,\n                processed: true\n            });\n        } else {\n            // Just updating the processed flag.\n            this.setState((prevState)=>{\n                return {\n                    isExpanded: prevState.isExpanded,\n                    showExpansionButton: prevState.showExpansionButton,\n                    processed: true\n                };\n            });\n        }\n    }\n    componentDidMount() {\n        this.setStateBasedOnContentLength();\n    }\n    componentDidUpdate() {\n        if (!this.state.processed) {\n            this.setStateBasedOnContentLength();\n        }\n    }\n    UNSAFE_componentWillReceiveProps() {\n        // Reset to the original state so that more/less can be recalculated.\n        this.state = {\n            // By default every content is expanded\n            isExpanded: true,\n            // By default we should not show the expansion button\n            showExpansionButton: false,\n            // When new props are received, we have to reprocess this component.\n            processed: false\n        };\n    }\n    renderImpl() {\n        if (!this.props.content) {\n            return null;\n        }\n        return /*#__PURE__*/ _jsxs(\"div\", {\n            className: \"c-content-toggle\",\n            children: [\n                /*#__PURE__*/ _jsx(\"p\", {\n                    // eslint-disable-next-line react/forbid-dom-props\n                    id: this.longContentIdPrefix + this.props.entityId,\n                    className: this.state.isExpanded ? 'longContentExpanded' : 'longContentContracted',\n                    children: /*#__PURE__*/ _jsx(\"span\", {\n                        itemProp: \"description\",\n                        children: this.props.content\n                    })\n                }),\n                !this.state.showExpansionButton ? null : /*#__PURE__*/ _jsx(\"button\", {\n                    className: \"expansionButton\",\n                    onClick: this.changeExpandedState.bind(this),\n                    children: this.state.isExpanded ? this.context.loc('LongContent_Less_Text') : this.context.loc('LongContent_More_Text')\n                })\n            ]\n        });\n    }\n    constructor(props, context){\n        super(props, context), _define_property(this, \"context\", void 0), _define_property(this, \"longContentIdPrefix\", 'longContent');\n        this.state = {\n            // By default every content is expanded\n            isExpanded: true,\n            // By default we should not show the expansion button\n            showExpansionButton: false,\n            processed: false\n        };\n    }\n}\nLongContent.contextTypes = {\n    loc: PropTypes.func\n};\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { Stack } from '@fluentui/react';\nimport * as React from 'react';\nexport const ReviewQAContent = ({ QAs = [] })=>{\n    return /*#__PURE__*/ _jsx(Stack, {\n        tokens: {\n            childrenGap: 14,\n            padding: 1\n        },\n        children: QAs === null || QAs === void 0 ? void 0 : QAs.map((reviewQA, index)=>/*#__PURE__*/ _jsxs(\"div\", {\n                className: \"reviewQAContent\",\n                children: [\n                    /*#__PURE__*/ _jsx(\"div\", {\n                        className: \"reviewContentQuestion\",\n                        children: reviewQA.question\n                    }),\n                    /*#__PURE__*/ _jsx(\"div\", {\n                        className: \"reviewContentAnswer\",\n                        children: reviewQA.answer\n                    })\n                ]\n            }, `reviewQAContent-${index}`))\n    });\n};\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport React, { useEffect, useRef } from 'react';\nimport { NeutralColors, SharedColors } from '@fluentui/theme';\nimport { Link, mergeStyles, mergeStyleSets, Persona, PersonaSize, Rating, RatingSize, Stack, Text, Icon } from '@fluentui/react';\nimport * as PropTypes from 'prop-types';\nimport { SpzaInstrumentService } from '@shared/services/telemetry/spza/spzaInstrument';\nimport { getWindow } from '@shared/services/window';\nimport { Constants } from '@shared/utils/constants';\nimport { LongContent } from '@shared/components/longContent';\nimport { getLocaleDate } from '@shared/utils/appUtils';\nimport { ReviewQAContent } from '@shared/components/reviewQAContent';\nimport { getProviderNameByReviewSource, launchTelemetry } from '@shared/utils/reviewsUtils';\nimport { logger } from '@src/logger';\nimport { AppReviewSocialContent } from '@shared/components/appReviewSocialContent';\nimport { noop } from 'lodash-es';\n// 60px is the height of 3 lines.\nconst contentClipHeight = 60;\nconst contentStyles = mergeStyleSets({\n    providerLogo: {\n        height: 16,\n        width: 16,\n        marginRight: 10\n    },\n    reviewLinkToSource: {\n        ':link': {\n            color: SharedColors.cyanBlue10,\n            textDecoration: 'underline'\n        }\n    },\n    externalReviewProvider: {\n        display: 'inline-flex',\n        alignItems: 'center'\n    },\n    providedByWrapper: [\n        'providedBy',\n        'c-paragraph-3',\n        {\n            lineHeight: 14,\n            fontSize: 10,\n            color: NeutralColors.gray130,\n            display: 'flex',\n            width: '75%',\n            borderTopStyle: 'solid',\n            borderTopWidth: 0.5,\n            borderTopColor: NeutralColors.gray30\n        }\n    ],\n    reviewContent: [\n        'reviewContent'\n    ],\n    reviewAndIsvReply: [\n        'reviewAndIsvReply'\n    ],\n    reviewItem: [\n        'reviewItem'\n    ],\n    authorDetailsContainer: [\n        'authorName',\n        'c-paragraph-3'\n    ],\n    authorPersona: [\n        'spza-user-default-thumbnail-image',\n        {\n            marginBottom: 8\n        }\n    ],\n    reviewRating: [\n        'reviewRating'\n    ],\n    reviewTitle: [\n        'c-heading-6',\n        'contentHeader'\n    ],\n    reviewRightContent: [\n        'rightContent',\n        {\n            overflow: 'hidden'\n        }\n    ],\n    reviewDateWrapper: [\n        'c-paragraph-3',\n        {\n            marginBottom: 4\n        }\n    ],\n    dateLabel: {\n        fontSize: 12,\n        lineHeight: 16\n    },\n    editedLabel: {\n        color: NeutralColors.gray130,\n        overflow: 'hidden'\n    },\n    externalSummaryUrlImage: {\n        height: 13,\n        width: 13,\n        color: SharedColors.cyanBlue10,\n        marginTop: 1\n    }\n});\n// Displays an individual app review\nexport const AppReviewItem = ({ authorPersona = false, appId, reviewItemShown = noop, review, locale, isEmbed, publisher, iconUrl, isSignedIn = false, isMarkedAsHelpful = false, onToggleMarkAsHelpful, openSignInModal, fallbackReviewSourceName, dateLabelClassName }, context)=>{\n    var _review_review_content;\n    const rootDivRef = useRef();\n    const instrument = SpzaInstrumentService.getProvider();\n    useEffect(()=>{\n        if (review) {\n            reviewItemShown(review.id, rootDivRef);\n        }\n    }, []);\n    useEffect(()=>{\n        if (review) {\n            reviewItemShown(review.id, rootDivRef);\n        }\n    }, [\n        review === null || review === void 0 ? void 0 : review.id\n    ]);\n    const showReportAbuseDialog = ()=>{\n        const payload = {\n            page: getWindow().location.href,\n            action: Constants.Telemetry.Action.Click,\n            actionModifier: Constants.Telemetry.ActionModifier.ReportCTA,\n            appName: appId\n        };\n        instrument.probe('logAndFlushTelemetryInfo', payload);\n        logger.info('', {\n            action: payload.action,\n            actionModifier: payload.actionModifier,\n            appName: payload.appName\n        });\n        context.reportAbuseCallback(appId, review.id, review.title, review.source);\n    };\n    const getFullName = (review)=>{\n        var _review_customer_info;\n        let result = '';\n        if (review.customer_info && review.customer_info.name) {\n            result += review.customer_info.name;\n        }\n        if ((_review_customer_info = review.customer_info) === null || _review_customer_info === void 0 ? void 0 : _review_customer_info.is_anonymous) {\n            result = '';\n        }\n        if (!result) {\n            return context.loc('ReviewItem_AnonymousName');\n        }\n        return result;\n    };\n    const renderProviderSection = (isThirdPartyReview)=>{\n        return /*#__PURE__*/ _jsx(\"div\", {\n            className: contentStyles.providedByWrapper,\n            children: isThirdPartyReview ? /*#__PURE__*/ _jsx(\"div\", {\n                className: contentStyles.externalReviewProvider,\n                children: /*#__PURE__*/ _jsx(Text, {\n                    block: true,\n                    variant: \"xSmall\",\n                    children: /*#__PURE__*/ _jsxs(Stack, {\n                        horizontal: true,\n                        tokens: {\n                            childrenGap: 4\n                        },\n                        children: [\n                            /*#__PURE__*/ _jsxs(Link, {\n                                className: contentStyles.reviewLinkToSource,\n                                href: review.third_party_review_url,\n                                target: \"_blank\",\n                                onClick: ()=>{\n                                    launchTelemetry(Constants.Telemetry.Action.Click, Constants.Telemetry.ActionModifier.ExternalReviewLink, {\n                                        offerId: review.offer_id,\n                                        source: review.source,\n                                        reviewId: review.id\n                                    });\n                                    logger.info(JSON.stringify({\n                                        offerId: review.offer_id,\n                                        source: review.source,\n                                        reviewId: review.id\n                                    }), {\n                                        action: Constants.Telemetry.Action.Click,\n                                        actionModifier: Constants.Telemetry.ActionModifier.ExternalReviewLink\n                                    });\n                                },\n                                children: [\n                                    getProviderNameByReviewSource(review.source, fallbackReviewSourceName),\n                                    ' ',\n                                    context.loc('Global_Loc_review', 'review')\n                                ]\n                            }),\n                            /*#__PURE__*/ _jsx(Icon, {\n                                iconName: \"NavigateExternalInline\",\n                                className: contentStyles.externalSummaryUrlImage\n                            })\n                        ]\n                    })\n                })\n            }) : /*#__PURE__*/ _jsx(Text, {\n                variant: \"xSmall\",\n                children: context.loc('Global_Loc_Marketplace_review', 'Marketplace review')\n            })\n        });\n    };\n    const getAriaLabel = (review)=>(rating, max)=>context.locParams('ReviewItem_AriaText', [\n                `${rating}`,\n                `${max}`,\n                getFullName(review)\n            ]);\n    const isReviewEdited = (review)=>review.updated_at !== review.created_at;\n    const reviewerName = getFullName(review);\n    const isThirdPartyReview = review.source === Constants.StorefrontName.G2;\n    return /*#__PURE__*/ _jsx(\"div\", {\n        ref: rootDivRef,\n        className: contentStyles.reviewAndIsvReply,\n        children: /*#__PURE__*/ _jsxs(\"div\", {\n            className: contentStyles.reviewItem,\n            itemProp: \"review\",\n            itemScope: true,\n            itemType: \"https://schema.org/Review\",\n            children: [\n                /*#__PURE__*/ _jsxs(\"div\", {\n                    className: \"leftBar\",\n                    children: [\n                        /*#__PURE__*/ _jsx(\"div\", {\n                            className: contentStyles.reviewRating,\n                            children: /*#__PURE__*/ _jsx(Rating, {\n                                max: 5,\n                                size: RatingSize.Small,\n                                rating: review.rating,\n                                styles: {\n                                    ratingStarBack: {\n                                        color: NeutralColors.gray100\n                                    }\n                                },\n                                getAriaLabel: getAriaLabel(review),\n                                readOnly: true\n                            })\n                        }),\n                        /*#__PURE__*/ _jsx(\"div\", {\n                            className: contentStyles.reviewDateWrapper,\n                            children: /*#__PURE__*/ _jsxs(Stack, {\n                                horizontal: true,\n                                verticalAlign: \"center\",\n                                tokens: {\n                                    childrenGap: 8\n                                },\n                                children: [\n                                    /*#__PURE__*/ _jsx(Text, {\n                                        block: true,\n                                        className: mergeStyles(contentStyles.dateLabel, dateLabelClassName),\n                                        children: getLocaleDate(review.updated_at, locale)\n                                    }),\n                                    isReviewEdited(review) && /*#__PURE__*/ _jsx(Text, {\n                                        variant: \"xSmall\",\n                                        className: contentStyles.editedLabel,\n                                        children: context.loc('ReviewItem_EditedLabel')\n                                    })\n                                ]\n                            })\n                        }),\n                        /*#__PURE__*/ _jsxs(\"div\", {\n                            className: contentStyles.authorDetailsContainer,\n                            title: reviewerName,\n                            itemProp: \"author\",\n                            itemScope: true,\n                            itemType: \"https://schema.org/Person\",\n                            children: [\n                                authorPersona ? /*#__PURE__*/ _jsx(Persona, {\n                                    className: contentStyles.authorPersona,\n                                    text: reviewerName,\n                                    size: PersonaSize.size24\n                                }) : reviewerName,\n                                /*#__PURE__*/ _jsx(\"meta\", {\n                                    itemProp: \"name\",\n                                    content: getFullName(review)\n                                })\n                            ]\n                        }),\n                        renderProviderSection(isThirdPartyReview)\n                    ]\n                }),\n                /*#__PURE__*/ _jsxs(\"div\", {\n                    className: contentStyles.reviewRightContent,\n                    children: [\n                        /*#__PURE__*/ _jsx(\"div\", {\n                            className: \"rightBar\",\n                            children: /*#__PURE__*/ _jsxs(\"div\", {\n                                className: contentStyles.reviewContent,\n                                children: [\n                                    review.title ? /*#__PURE__*/ _jsx(\"h5\", {\n                                        className: contentStyles.reviewTitle,\n                                        children: review.title\n                                    }) : null,\n                                    /*#__PURE__*/ _jsx(LongContent, {\n                                        entityId: review.id,\n                                        content: isThirdPartyReview ? ReviewQAContent({\n                                            QAs: (_review_review_content = review.review_content) === null || _review_review_content === void 0 ? void 0 : _review_review_content.question_answer_content\n                                        }) : review.content,\n                                        clipHeight: contentClipHeight\n                                    })\n                                ]\n                            })\n                        }),\n                        /*#__PURE__*/ _jsx(AppReviewSocialContent, {\n                            iconUrl: iconUrl,\n                            isEmbed: isEmbed,\n                            locale: locale,\n                            onReportClick: ()=>showReportAbuseDialog(),\n                            publisherName: publisher,\n                            review: review,\n                            isSignedIn: isSignedIn,\n                            isMarkedAsHelpful: isMarkedAsHelpful,\n                            onToggleMarkAsHelpful: onToggleMarkAsHelpful,\n                            openSignInModal: openSignInModal\n                        })\n                    ]\n                })\n            ]\n        })\n    });\n};\nAppReviewItem.contextTypes = {\n    loc: PropTypes.func,\n    locParams: PropTypes.func,\n    reportAbuseCallback: PropTypes.func\n};\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport * as React from 'react';\nimport { Label, mergeStyleSets } from '@fluentui/react';\nexport const getClassNames = (fill)=>{\n    return mergeStyleSets({\n        fillWidth: {\n            width: `${fill}%`\n        }\n    });\n};\nexport const RatingPercentages = ({ context, numberOfStars = 0, percentagesOfTotal = 0 })=>{\n    const classNames = require('classnames');\n    const { fillWidth } = getClassNames(percentagesOfTotal);\n    const chartClasses = classNames('ratingsPercentagesChartFill', fillWidth);\n    return /*#__PURE__*/ _jsxs(\"div\", {\n        className: \"ratingPercentagesContainer\",\n        children: [\n            /*#__PURE__*/ _jsxs(\"div\", {\n                className: \"ratingPercentagesDetails\",\n                children: [\n                    /*#__PURE__*/ _jsxs(Label, {\n                        className: \"ratingPercentagesNumOfStars\",\n                        children: [\n                            numberOfStars,\n                            \" \",\n                            context === null || context === void 0 ? void 0 : context.loc('Global_Loc_starsLower', 'stars')\n                        ]\n                    }),\n                    /*#__PURE__*/ _jsxs(\"text\", {\n                        className: \"percentagesOfTotal\",\n                        children: [\n                            \"(\",\n                            percentagesOfTotal,\n                            \"%)\"\n                        ]\n                    })\n                ]\n            }),\n            /*#__PURE__*/ _jsx(\"div\", {\n                className: \"ratingsPercentagesChart\",\n                children: /*#__PURE__*/ _jsx(\"div\", {\n                    className: chartClasses\n                })\n            })\n        ]\n    });\n};\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport * as React from 'react';\nimport { Stack, Label, Text, mergeStyleSets, Icon, Image } from '@fluentui/react';\nimport { NeutralColors } from '@fluentui/theme';\nimport { RatingPercentages } from './ratingPercentages';\nimport microsoftLogo from '@shared/images/microsoft-icon.svg';\nconst contentStyles = mergeStyleSets({\n    ratingSummaryContainer: [\n        'ratingSummaryContainer',\n        {\n            minWidth: 280\n        }\n    ],\n    singleInternalRatingSourceImage: {\n        width: 16,\n        height: 16,\n        marginRight: 10,\n        marginTop: 3\n    },\n    ratingSummaryAverageSection: [\n        'ratingSummaryAverageSection',\n        {\n            margin: '16px 0'\n        }\n    ]\n});\nexport function getPercentagesOfTotal(params) {\n    const percentages = params.totalRatings ? params.timesRated * 100 / params.totalRatings : 0;\n    return Math.round(percentages);\n}\nexport function getEmptyRatingSummary() {\n    return {\n        AverageRating: 0,\n        TotalRatings: 0,\n        Source: '',\n        OfferId: null,\n        CreatedAt: null,\n        StarsDistribution: {\n            OneStars: 0,\n            TwoStars: 0,\n            ThreeStars: 0,\n            FourStars: 0,\n            FiveStars: 0\n        }\n    };\n}\nexport function getAverageRatingToDisplay(ratingSummary) {\n    return ratingSummary.AverageRating && !isNaN(ratingSummary.AverageRating) ? ratingSummary.AverageRating.toFixed(1) : '0';\n}\nexport const renderRatingPercentagesByNumOfStars = (numOfStars, timesRated, totalRatings, context)=>{\n    return /*#__PURE__*/ _jsx(RatingPercentages, {\n        context: context,\n        numberOfStars: numOfStars,\n        percentagesOfTotal: getPercentagesOfTotal({\n            timesRated,\n            totalRatings\n        })\n    });\n};\nexport const RatingSummary = ({ ratingSummary = getEmptyRatingSummary(), context = null, title = 'Rating Summary' })=>{\n    var _totalRatingSummary_StarsDistribution, _totalRatingSummary_StarsDistribution1, _totalRatingSummary_StarsDistribution2, _totalRatingSummary_StarsDistribution3, _totalRatingSummary_StarsDistribution4;\n    const totalRatingSummary = ratingSummary || getEmptyRatingSummary();\n    const averageRating = getAverageRatingToDisplay(totalRatingSummary);\n    const ratingSummaryAriaText = context === null || context === void 0 ? void 0 : context.locParams('Reviews_Summary_AriaText', [\n        averageRating,\n        '5',\n        `${totalRatingSummary.TotalRatings}`\n    ]);\n    const iconStyles = {\n        root: [\n            'ratingSummaryStar',\n            {\n                fontSize: 17\n            },\n            !totalRatingSummary.TotalRatings && {\n                color: NeutralColors.gray90\n            }\n        ]\n    };\n    var _totalRatingSummary_StarsDistribution_FiveStars, _totalRatingSummary_StarsDistribution_FourStars, _totalRatingSummary_StarsDistribution_ThreeStars, _totalRatingSummary_StarsDistribution_TwoStars, _totalRatingSummary_StarsDistribution_OneStars;\n    return /*#__PURE__*/ _jsxs(\"div\", {\n        className: contentStyles.ratingSummaryContainer,\n        children: [\n            /*#__PURE__*/ _jsxs(Stack, {\n                horizontal: true,\n                children: [\n                    /*#__PURE__*/ _jsx(Image, {\n                        src: microsoftLogo,\n                        className: contentStyles.singleInternalRatingSourceImage,\n                        alt: \"Microsoft Logo\"\n                    }),\n                    /*#__PURE__*/ _jsx(\"text\", {\n                        className: \"ratingSummaryTitle\",\n                        children: title\n                    })\n                ]\n            }),\n            /*#__PURE__*/ _jsxs(\"div\", {\n                className: contentStyles.ratingSummaryAverageSection,\n                \"aria-label\": ratingSummaryAriaText,\n                children: [\n                    /*#__PURE__*/ _jsx(Icon, {\n                        iconName: totalRatingSummary.TotalRatings ? 'FavoriteStarFill' : 'FavoriteStar',\n                        styles: iconStyles,\n                        \"aria-label\": context === null || context === void 0 ? void 0 : context.loc('Ratings_Review_Star', 'Ratings review star')\n                    }),\n                    /*#__PURE__*/ _jsxs(\"div\", {\n                        className: \"ratingSummaryAverageSectionText\",\n                        children: [\n                            /*#__PURE__*/ _jsx(Label, {\n                                className: \"ratingSummaryNumOfStars\",\n                                children: averageRating\n                            }),\n                            /*#__PURE__*/ _jsxs(Text, {\n                                className: \"numOfRatingText\",\n                                variant: \"mediumPlus\",\n                                children: [\n                                    \"(\",\n                                    totalRatingSummary.TotalRatings,\n                                    \" \",\n                                    context === null || context === void 0 ? void 0 : context.loc('Global_Loc_ratingsLower', 'ratings'),\n                                    \")\"\n                                ]\n                            })\n                        ]\n                    })\n                ]\n            }),\n            totalRatingSummary.TotalRatings >= 5 && /*#__PURE__*/ _jsxs(Stack, {\n                tokens: {\n                    childrenGap: 2,\n                    padding: 1\n                },\n                children: [\n                    renderRatingPercentagesByNumOfStars(5, (_totalRatingSummary_StarsDistribution_FiveStars = (_totalRatingSummary_StarsDistribution = totalRatingSummary.StarsDistribution) === null || _totalRatingSummary_StarsDistribution === void 0 ? void 0 : _totalRatingSummary_StarsDistribution.FiveStars) !== null && _totalRatingSummary_StarsDistribution_FiveStars !== void 0 ? _totalRatingSummary_StarsDistribution_FiveStars : 0, totalRatingSummary.TotalRatings, context),\n                    renderRatingPercentagesByNumOfStars(4, (_totalRatingSummary_StarsDistribution_FourStars = (_totalRatingSummary_StarsDistribution1 = totalRatingSummary.StarsDistribution) === null || _totalRatingSummary_StarsDistribution1 === void 0 ? void 0 : _totalRatingSummary_StarsDistribution1.FourStars) !== null && _totalRatingSummary_StarsDistribution_FourStars !== void 0 ? _totalRatingSummary_StarsDistribution_FourStars : 0, totalRatingSummary.TotalRatings, context),\n                    renderRatingPercentagesByNumOfStars(3, (_totalRatingSummary_StarsDistribution_ThreeStars = (_totalRatingSummary_StarsDistribution2 = totalRatingSummary.StarsDistribution) === null || _totalRatingSummary_StarsDistribution2 === void 0 ? void 0 : _totalRatingSummary_StarsDistribution2.ThreeStars) !== null && _totalRatingSummary_StarsDistribution_ThreeStars !== void 0 ? _totalRatingSummary_StarsDistribution_ThreeStars : 0, totalRatingSummary.TotalRatings, context),\n                    renderRatingPercentagesByNumOfStars(2, (_totalRatingSummary_StarsDistribution_TwoStars = (_totalRatingSummary_StarsDistribution3 = totalRatingSummary.StarsDistribution) === null || _totalRatingSummary_StarsDistribution3 === void 0 ? void 0 : _totalRatingSummary_StarsDistribution3.TwoStars) !== null && _totalRatingSummary_StarsDistribution_TwoStars !== void 0 ? _totalRatingSummary_StarsDistribution_TwoStars : 0, totalRatingSummary.TotalRatings, context),\n                    renderRatingPercentagesByNumOfStars(1, (_totalRatingSummary_StarsDistribution_OneStars = (_totalRatingSummary_StarsDistribution4 = totalRatingSummary.StarsDistribution) === null || _totalRatingSummary_StarsDistribution4 === void 0 ? void 0 : _totalRatingSummary_StarsDistribution4.OneStars) !== null && _totalRatingSummary_StarsDistribution_OneStars !== void 0 ? _totalRatingSummary_StarsDistribution_OneStars : 0, totalRatingSummary.TotalRatings, context)\n                ]\n            })\n        ]\n    });\n};\n","/* eslint-disable react/forbid-dom-props */ import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport React from 'react';\nimport { launchTelemetry } from '@shared/utils/reviewsUtils';\nimport { Constants } from '@shared/utils/constants';\nimport { Dropdown } from '@fluentui/react';\nimport { logger } from '@src/logger';\nexport var SourceFilterOptions = /*#__PURE__*/ function(SourceFilterOptions) {\n    SourceFilterOptions[\"AllReviews\"] = \"All reviews\";\n    SourceFilterOptions[\"MarketplaceReviews\"] = \"Marketplace reviews\";\n    SourceFilterOptions[\"G2Reviews\"] = \"G2 reviews\";\n    SourceFilterOptions[\"MyReview\"] = \"My review\";\n    SourceFilterOptions[\"MyComments\"] = \"My comments\";\n    return SourceFilterOptions;\n}({});\nexport var RatingsFilterOptions = /*#__PURE__*/ function(RatingsFilterOptions) {\n    RatingsFilterOptions[\"AllRatings\"] = \"All ratings\";\n    RatingsFilterOptions[\"OneStar\"] = \"1 star\";\n    RatingsFilterOptions[\"TwoStars\"] = \"2 stars\";\n    RatingsFilterOptions[\"ThreeStars\"] = \"3 stars\";\n    RatingsFilterOptions[\"FourStars\"] = \"4 stars\";\n    RatingsFilterOptions[\"FiveStars\"] = \"5 stars\";\n    return RatingsFilterOptions;\n}({});\nexport var SortByOptions = /*#__PURE__*/ function(SortByOptions) {\n    SortByOptions[\"MostRecent\"] = \"Most recent\";\n    SortByOptions[\"HighToLow\"] = \"High to low\";\n    SortByOptions[\"LowToHigh\"] = \"Low to high\";\n    SortByOptions[\"MostHelpful\"] = \"Most Helpful\";\n    return SortByOptions;\n}({});\nexport const isUserCommentsExist = (userCommentedReviewIds)=>userCommentedReviewIds.length > 0;\nexport function getFilterBySourceCategories(context, externalReviewsExist, userReviewExists, internalReviewsExist, userCommentsExist = false, showMyCommentsFilter = false) {\n    const filterBySourceCategories = [\n        {\n            text: context.loc('AppReviewCollection_sourceFilter_AllReviews', 'All reviews'),\n            key: \"All reviews\"\n        }\n    ];\n    filterBySourceCategories.push({\n        text: context.loc('AppReviewCollection_sourceFilter_MarketplaceReviews', 'Marketplace reviews'),\n        key: \"Marketplace reviews\",\n        disabled: !internalReviewsExist\n    });\n    filterBySourceCategories.push({\n        text: context.loc('AppReviewCollection_sourceFilter_G2Reviews', 'G2 reviews'),\n        key: \"G2 reviews\",\n        disabled: !externalReviewsExist\n    });\n    filterBySourceCategories.push({\n        text: context.loc('AppReviewCollection_sourceFilter_MyReview', 'My review'),\n        key: \"My review\",\n        disabled: !userReviewExists\n    });\n    if (showMyCommentsFilter) {\n        filterBySourceCategories.push({\n            text: context.loc('AppReviewCollection_sourceFilter_MyComments', 'My comments'),\n            key: \"My comments\",\n            disabled: !userCommentsExist\n        });\n    }\n    return filterBySourceCategories;\n}\nexport function getSourceFilterOptionByLocaliztionText({ text, context, userCommentsExist = false, showMyCommentsFilter = false }) {\n    const allSourceOptions = getFilterBySourceCategories(context, true, true, true, userCommentsExist, showMyCommentsFilter);\n    const optionsByText = allSourceOptions.find((option)=>option.text === text);\n    return optionsByText || allSourceOptions[0];\n}\nexport function getSortByCategories(context) {\n    const sortByCategories = [\n        {\n            text: context.loc('AppReviewCollection_sortReviews_MostRecent', 'Most recent'),\n            key: \"Most recent\"\n        },\n        {\n            text: context.loc('AppReviewCollection_sortReviews_ByRatingHighToLow', 'Highest rating'),\n            key: \"High to low\"\n        },\n        {\n            text: context.loc('AppReviewCollection_sortReviews_ByRatingLowToHigh', 'Lowest rating'),\n            key: \"Low to high\"\n        },\n        {\n            text: context.loc('AppReviewCollection_sortReviews_MostHelpful', 'Most helpful'),\n            key: \"Most Helpful\"\n        }\n    ];\n    return sortByCategories;\n}\nexport function getSortByOptionByLocaliztionText(text, context) {\n    const allSortByOptions = getSortByCategories(context);\n    const optionsByText = allSortByOptions.find((option)=>option.text === text);\n    return optionsByText || allSortByOptions[0];\n}\nexport function getRatingsFilterNumber(option) {\n    switch(option.key){\n        case \"1 star\":\n            return 1;\n        case \"2 stars\":\n            return 2;\n        case \"3 stars\":\n            return 3;\n        case \"4 stars\":\n            return 4;\n        case \"5 stars\":\n            return 5;\n        default:\n            return null;\n    }\n}\nexport function getRatingsFilterOptionByRating(rating, context) {\n    switch(rating){\n        case 1:\n            return {\n                text: context.loc('AppReviewCollection_ratingsFilter_OneStar', '1 star'),\n                key: \"1 star\"\n            };\n        case 2:\n            return {\n                text: context.loc('AppReviewCollection_ratingsFilter_TwoStars', '2 stars'),\n                key: \"2 stars\"\n            };\n        case 3:\n            return {\n                text: context.loc('AppReviewCollection_ratingsFilter_ThreeStars', '3 stars'),\n                key: \"3 stars\"\n            };\n        case 4:\n            return {\n                text: context.loc('AppReviewCollection_ratingsFilter_FourStars', '4 stars'),\n                key: \"4 stars\"\n            };\n        case 5:\n            return {\n                text: context.loc('AppReviewCollection_ratingsFilter_FiveStars', '5 stars'),\n                key: \"5 stars\"\n            };\n        default:\n            return {\n                text: context.loc('AppReviewCollection_ratingsFilter_AllRatings', 'All ratings'),\n                key: \"All ratings\"\n            };\n    }\n}\nexport function getRatingsFilterCategories(context) {\n    const ratingsFilterCategories = [\n        {\n            text: context.loc('AppReviewCollection_ratingsFilter_AllRatings', 'All ratings'),\n            key: \"All ratings\"\n        },\n        {\n            text: context.loc('AppReviewCollection_ratingsFilter_OneStar', '1 star'),\n            key: \"1 star\"\n        },\n        {\n            text: context.loc('AppReviewCollection_ratingsFilter_TwoStars', '2 stars'),\n            key: \"2 stars\"\n        },\n        {\n            text: context.loc('AppReviewCollection_ratingsFilter_ThreeStars', '3 stars'),\n            key: \"3 stars\"\n        },\n        {\n            text: context.loc('AppReviewCollection_ratingsFilter_FourStars', '4 stars'),\n            key: \"4 stars\"\n        },\n        {\n            text: context.loc('AppReviewCollection_ratingsFilter_FiveStars', '5 stars'),\n            key: \"5 stars\"\n        }\n    ];\n    return ratingsFilterCategories;\n}\nexport function handleRatingsFilter(option, isDropDownChanged, originalReviewList) {\n    let filteredArray = [];\n    const updatedRatingsFilter = getRatingsFilterNumber(option);\n    if (isDropDownChanged) {\n        filteredArray = updatedRatingsFilter ? originalReviewList.filter((review)=>review.rating === updatedRatingsFilter) : originalReviewList;\n        const telemetryDetails = {\n            ratingsFilter: updatedRatingsFilter\n        };\n        launchTelemetry(Constants.Telemetry.Action.Click, Constants.Telemetry.ActionModifier.FilterPDPReviews, telemetryDetails);\n        logger.info(JSON.stringify(telemetryDetails), {\n            action: Constants.Telemetry.Action.Click,\n            actionModifier: Constants.Telemetry.ActionModifier.FilterPDPReviews\n        });\n    }\n    return filteredArray;\n}\nexport function filterBySource(option, reviewsList, userReview, userCommentedReviewIds) {\n    switch(option.key){\n        case \"Marketplace reviews\":\n            return reviewsList.filter((review)=>Constants.InternalStoreFronts.indexOf(review.source) > -1);\n        case \"G2 reviews\":\n            return reviewsList.filter((review)=>review.source === Constants.StorefrontName.G2);\n        case \"My review\":\n            reviewsList = userReview ? [\n                userReview\n            ] : [];\n            return reviewsList;\n        case \"My comments\":\n            return reviewsList.filter((review)=>userCommentedReviewIds.indexOf(review.id) > -1);\n        default:\n            return reviewsList;\n    }\n}\nexport function handleSourceFilter(option, isDropDownChanged, reviewsList, userReview, userCommentedReviewIds) {\n    let filteredArray = [];\n    if (isDropDownChanged) {\n        filteredArray = filterBySource(option, reviewsList, userReview, userCommentedReviewIds);\n        const telemetryDetails = {\n            reviewsSourceFilter: option.text\n        };\n        launchTelemetry(Constants.Telemetry.Action.Click, Constants.Telemetry.ActionModifier.FilterPDPReviews, telemetryDetails);\n        logger.info(JSON.stringify(telemetryDetails), {\n            action: Constants.Telemetry.Action.Click,\n            actionModifier: Constants.Telemetry.ActionModifier.FilterPDPReviews\n        });\n    }\n    return filteredArray;\n}\nexport function getSortByStatus(curReviewsList, option, isDropDownChanged, curSortBy, context) {\n    const sortByHelper = {\n        sortedReviewsList: curReviewsList,\n        updatedSortBy: curSortBy\n    };\n    switch(option.key){\n        case \"High to low\":\n            sortByHelper.updatedSortBy = context.loc('AppReviewCollection_sortReviews_ByRatingHighToLow');\n            if (isDropDownChanged) {\n                sortByHelper.sortedReviewsList = sortByHelper.sortedReviewsList.sort((first, second)=>second.rating - first.rating);\n            }\n            break;\n        case \"Low to high\":\n            sortByHelper.updatedSortBy = context.loc('AppReviewCollection_sortReviews_ByRatingLowToHigh');\n            if (isDropDownChanged) {\n                sortByHelper.sortedReviewsList = sortByHelper.sortedReviewsList.sort((first, second)=>first.rating - second.rating);\n            }\n            break;\n        case \"Most Helpful\":\n            sortByHelper.updatedSortBy = context.loc('AppReviewCollection_sortReviews_MostHelpful');\n            if (isDropDownChanged) {\n                sortByHelper.sortedReviewsList = sortByHelper.sortedReviewsList.sort((first, second)=>second.mark_as_helpful_count - first.mark_as_helpful_count);\n            }\n            break;\n        default:\n            sortByHelper.updatedSortBy = context.loc('AppReviewCollection_sortReviews_MostRecent');\n            if (isDropDownChanged) {\n                sortByHelper.sortedReviewsList = sortByHelper.sortedReviewsList.sort((first, second)=>new Date(second.updated_at).valueOf() - new Date(first.updated_at).valueOf());\n            }\n            break;\n    }\n    return sortByHelper;\n}\nexport function handleSortBy(option, updatedReviewsList, curReviewsList, isDropDownChanged, sortBy, context, updateReviewsSortByState) {\n    const sortByHelper = getSortByStatus(updatedReviewsList, option, isDropDownChanged, sortBy, context);\n    if (curReviewsList && isDropDownChanged) {\n        updateReviewsSortByState(sortByHelper.updatedSortBy);\n        const telemetryDetails = {\n            sortBy: sortByHelper.updatedSortBy\n        };\n        launchTelemetry(Constants.Telemetry.Action.Click, Constants.Telemetry.ActionModifier.SortPDPReviews, telemetryDetails);\n        logger.info(JSON.stringify(telemetryDetails), {\n            action: Constants.Telemetry.Action.Click,\n            actionModifier: Constants.Telemetry.ActionModifier.SortPDPReviews\n        });\n    }\n    return sortByHelper.sortedReviewsList;\n}\nexport function handleDropDowns(sourceFilterOption, ratingFilterOption, sortByOption, updateReviewsState, originalReviewList, curReviewsList, sourceFilter, sortBy, ratingFilter, context, userReview, userCommentedReviewIds = []) {\n    const updatedRatingsFilter = getRatingsFilterNumber(ratingFilterOption);\n    const isDropDownChanged = ratingFilter !== updatedRatingsFilter || sortBy !== sortByOption.text || sourceFilterOption.text !== sourceFilter;\n    let filteredArray = handleRatingsFilter(ratingFilterOption, isDropDownChanged, originalReviewList);\n    filteredArray = handleSourceFilter(sourceFilterOption, isDropDownChanged, filteredArray, userReview, userCommentedReviewIds);\n    const fliteredAndSortedArray = handleSortBy(sortByOption, filteredArray, curReviewsList, isDropDownChanged, sortBy, context, updateReviewsState.updateStateBySortFilter);\n    if (isDropDownChanged) {\n        updateReviewsState.updateStateByFilters(updatedRatingsFilter, fliteredAndSortedArray, sourceFilterOption.text);\n    }\n    // Go to first page and update pagination if the reviews list was changed\n    if (fliteredAndSortedArray.length) {\n        const updatedCurrentEnd = Constants.MaxItemsPerPageInReviews < filteredArray.length ? Constants.MaxItemsPerPageInReviews : filteredArray.length;\n        updateReviewsState.updatePaginationState(1, 1, updatedCurrentEnd);\n    }\n}\nexport function renderSourceFilterDropDown({ curSortBy, curRatingFilter, context, updateReviewsState, originalReviewList, curReviewsList, curSourceFilter, externalReviewsExist, userReview, internalReviewsExist, userCommentedReviewIds, showMyCommentsFilter }) {\n    const sourceFilterCategories = getFilterBySourceCategories(context, externalReviewsExist, !!userReview, internalReviewsExist, isUserCommentsExist(userCommentedReviewIds), showMyCommentsFilter);\n    let activeFilterOption = sourceFilterCategories.find((option)=>option.text === curSourceFilter);\n    activeFilterOption = activeFilterOption !== null && activeFilterOption !== void 0 ? activeFilterOption : sourceFilterCategories[0];\n    return /*#__PURE__*/ _jsx(Dropdown, {\n        className: \"reviewDropDown sourceFilter\",\n        defaultSelectedKey: activeFilterOption.key,\n        options: sourceFilterCategories,\n        dropdownWidth: 'grow',\n        ariaLabel: activeFilterOption.text,\n        onChange: (e, option)=>{\n            const sortBy = getSortByOptionByLocaliztionText(curSortBy, context);\n            const ratingFilter = getRatingsFilterOptionByRating(curRatingFilter, context);\n            handleDropDowns(option, ratingFilter, sortBy, updateReviewsState, originalReviewList, curReviewsList, curSourceFilter, curSortBy, curRatingFilter, context, userReview, userCommentedReviewIds);\n        }\n    });\n}\nexport function renderRatingFilterDropDown(curSortBy, curSourceFilter, updateReviewsState, originalReviewList, curReviewsList, curRatingFilter, context, userReview, userCommentedReviewIds, showMyCommentsFilter) {\n    const ratingsFilterCategories = getRatingsFilterCategories(context);\n    const curRatingFilterOption = getRatingsFilterOptionByRating(curRatingFilter, context);\n    let activeFilterOption = ratingsFilterCategories.find((option)=>option.text === curRatingFilterOption.text);\n    activeFilterOption = activeFilterOption !== null && activeFilterOption !== void 0 ? activeFilterOption : ratingsFilterCategories[0];\n    return /*#__PURE__*/ _jsx(Dropdown, {\n        className: \"reviewDropDown ratingFilter\",\n        defaultSelectedKey: activeFilterOption.key,\n        options: ratingsFilterCategories,\n        ariaLabel: curRatingFilterOption.text,\n        dropdownWidth: 'grow',\n        onChange: (e, option)=>{\n            const sortBy = getSortByOptionByLocaliztionText(curSortBy, context);\n            const sourceFilter = getSourceFilterOptionByLocaliztionText({\n                text: curSourceFilter,\n                context: context,\n                userCommentsExist: isUserCommentsExist(userCommentedReviewIds),\n                showMyCommentsFilter: showMyCommentsFilter\n            });\n            handleDropDowns(sourceFilter, option, sortBy, updateReviewsState, originalReviewList, curReviewsList, curSourceFilter, curSortBy, curRatingFilter, context, userReview, userCommentedReviewIds);\n        }\n    });\n}\nexport function renderSortByDropDown({ curRatingFilter, context, curSourceFilter, updateReviewsState, originalReviewList, curReviewsList, curSortBy, userReview, userCommentedReviewIds, showMyCommentsFilter }) {\n    const sortByCategories = getSortByCategories(context);\n    let activeFilterOption = sortByCategories.find((option)=>option.text === curSortBy);\n    activeFilterOption = activeFilterOption !== null && activeFilterOption !== void 0 ? activeFilterOption : sortByCategories[0];\n    return /*#__PURE__*/ _jsx(Dropdown, {\n        className: \"reviewDropDown sortByDropDown\",\n        defaultSelectedKey: activeFilterOption.key,\n        options: sortByCategories,\n        \"aria-labelledby\": \"reviewsSortByLabel\",\n        dropdownWidth: 'grow',\n        ariaLabel: context.loc('AppReviewCollection_sortReviews_TitleText', 'Sort by'),\n        onChange: (e, option)=>{\n            const ratingFilter = getRatingsFilterOptionByRating(curRatingFilter, context);\n            const sourceFilter = getSourceFilterOptionByLocaliztionText({\n                text: curSourceFilter,\n                context: context,\n                userCommentsExist: isUserCommentsExist(userCommentedReviewIds),\n                showMyCommentsFilter: showMyCommentsFilter\n            });\n            handleDropDowns(sourceFilter, ratingFilter, option, updateReviewsState, originalReviewList, curReviewsList, curSourceFilter, curSortBy, curRatingFilter, context, userReview, userCommentedReviewIds);\n        }\n    });\n}\nexport const ReviewsDropDowns = ({ curSourceFilter = null, curSortBy = null, curRatingFilter = null, context = null, updateReviewsState = null, originalReviewList = [], curReviewsList = [], externalReviewsExist = false, userReview = null, internalReviewsExist = false, userCommentedReviewIds = [], showMyCommentsFilter = false })=>{\n    return /*#__PURE__*/ _jsxs(\"div\", {\n        className: \"reviewsTopBarDropDowns\",\n        children: [\n            /*#__PURE__*/ _jsxs(\"div\", {\n                className: \"reviewsFilter\",\n                children: [\n                    /*#__PURE__*/ _jsx(\"div\", {\n                        className: \"sourceFilterIcon\"\n                    }),\n                    renderSourceFilterDropDown({\n                        curSortBy,\n                        curRatingFilter,\n                        context,\n                        updateReviewsState,\n                        originalReviewList,\n                        curReviewsList,\n                        curSourceFilter,\n                        externalReviewsExist,\n                        internalReviewsExist,\n                        userReview,\n                        userCommentedReviewIds,\n                        showMyCommentsFilter\n                    })\n                ]\n            }),\n            /*#__PURE__*/ _jsxs(\"div\", {\n                className: \"reviewsFilter\",\n                children: [\n                    /*#__PURE__*/ _jsx(\"div\", {\n                        className: \"ratingsFilterIcon\"\n                    }),\n                    renderRatingFilterDropDown(curSortBy, curSourceFilter, updateReviewsState, originalReviewList, curReviewsList, curRatingFilter, context, userReview, userCommentedReviewIds, showMyCommentsFilter)\n                ]\n            }),\n            /*#__PURE__*/ _jsxs(\"div\", {\n                className: \"reviewsSortBy\",\n                children: [\n                    /*#__PURE__*/ _jsx(\"div\", {\n                        className: \"sortByIconAndText\",\n                        id: \"reviewsSortByLabel\",\n                        children: context.loc('AppReviewCollection_sortReviews_TitleText')\n                    }),\n                    renderSortByDropDown({\n                        curRatingFilter,\n                        context,\n                        curSourceFilter,\n                        updateReviewsState,\n                        originalReviewList,\n                        curReviewsList,\n                        curSortBy,\n                        userReview,\n                        userCommentedReviewIds,\n                        showMyCommentsFilter\n                    })\n                ]\n            })\n        ]\n    });\n};\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport * as React from 'react';\nimport { PrimaryButton, Stack } from '@fluentui/react';\nimport noReviewsImg from '@shared/images/noReviewsImg.svg';\nimport { Constants } from '@shared/utils/constants';\nexport const getDescriptionText = (context, isOfferPurchased)=>{\n    if (isOfferPurchased) {\n        return context.loc('NoReviewsToShow_addReviewDescription_WriteReviewText', \"This offer doesn't have any reviews yet. \\nBe the first to add a review.\");\n    }\n    return context.loc('NoReviewsToShow_addReviewDescription_PurchaseNeededText', \"This offer doesn't have any reviews yet. \\nTo add the first review, get the offer and write your review.\");\n};\nexport const NoReviewsToShow = ({ context, isOfferPurchased = false, openReviewModal })=>{\n    return /*#__PURE__*/ _jsxs(Stack, {\n        className: \"NoReviewsToShowContainer\",\n        children: [\n            /*#__PURE__*/ _jsx(Stack.Item, {\n                align: \"center\",\n                children: /*#__PURE__*/ _jsx(\"img\", {\n                    className: \"NoReviewsToShowImg\",\n                    src: noReviewsImg,\n                    alt: context.loc('NoReviewsToShow_addReviewTitle_Text', 'No reviews yet')\n                })\n            }),\n            /*#__PURE__*/ _jsx(Stack.Item, {\n                className: \"NoReviewsToShowTitle\",\n                align: \"center\",\n                children: /*#__PURE__*/ _jsx(\"span\", {\n                    className: \"NoReviewsToShowTitleText\",\n                    children: context.loc('NoReviewsToShow_addReviewTitle_Text', 'No reviews yet')\n                })\n            }),\n            /*#__PURE__*/ _jsx(Stack.Item, {\n                className: \"NoReviewsToShowDescription\",\n                align: \"center\",\n                children: /*#__PURE__*/ _jsx(\"span\", {\n                    className: \"NoReviewsToShowDescriptionText\",\n                    children: getDescriptionText(context, isOfferPurchased)\n                })\n            }),\n            /*#__PURE__*/ _jsx(Stack.Item, {\n                align: \"center\",\n                children: /*#__PURE__*/ _jsx(PrimaryButton, {\n                    className: \"NoReviewsToShowCTA\",\n                    text: context.loc('AppReviewCollection_Button_Text_Write', 'Write a review'),\n                    onClick: ()=>openReviewModal(),\n                    \"data-bi-id\": Constants.JsllCTAId.WriteReview,\n                    \"data-bi-area\": \"Review\",\n                    disabled: !isOfferPurchased\n                })\n            })\n        ]\n    });\n};\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport * as React from 'react';\nimport { Link, Image, Text, mergeStyleSets, Stack } from '@fluentui/react';\nimport { getEmptyRatingSummary } from './ratingSummary';\nimport redirectLogo from '@shared/images/Redirect.svg';\nimport { launchTelemetry } from '@shared/utils/reviewsUtils';\nimport { Constants } from '@shared/utils/constants';\nimport { logger } from '@src/logger';\nimport * as PropTypes from 'prop-types';\nexport function getExternalProductLink(productName) {\n    return productName ? `https://www.g2.com/products/${productName}/reviews` : '';\n}\nconst contentStyles = mergeStyleSets({\n    externalRatingSummariesTitle: {\n        fontSize: 16,\n        lineHeight: 22,\n        fontWeight: 600\n    },\n    externalRatingSourceImage: {\n        width: 16,\n        height: 16,\n        marginTop: 3,\n        marginRight: 10\n    },\n    externalSummaryUrlImage: {\n        height: 13,\n        width: 13,\n        marginBottom: 1\n    }\n});\nexport const ExternalRatingSummary = ({ ratingSummary = getEmptyRatingSummary(), image = '', showImage = true, source }, context)=>{\n    ratingSummary = ratingSummary || getEmptyRatingSummary();\n    return /*#__PURE__*/ _jsxs(\"div\", {\n        className: \"externalRatingSummaryContainer\",\n        children: [\n            showImage && /*#__PURE__*/ _jsx(\"div\", {\n                className: contentStyles.externalRatingSourceImage,\n                children: /*#__PURE__*/ _jsx(Image, {\n                    src: image,\n                    className: \"externalRatingSummaryImage\",\n                    alt: context.loc('External_Rating_Summary_Image_Alt', 'Rating summary image')\n                })\n            }),\n            /*#__PURE__*/ _jsxs(Stack, {\n                horizontal: true,\n                tokens: {\n                    childrenGap: 8\n                },\n                children: [\n                    /*#__PURE__*/ _jsx(Text, {\n                        className: contentStyles.externalRatingSummariesTitle,\n                        children: context.loc(`ExternalRatingSummaries_${source}_Title`, `${source} ratings`)\n                    }),\n                    /*#__PURE__*/ _jsx(\"div\", {\n                        className: \"externalRatingSummaryRightContainer\",\n                        children: /*#__PURE__*/ _jsx(Link, {\n                            className: \"externalSummaryUrl\",\n                            href: getExternalProductLink(ratingSummary.ExternalOfferReference),\n                            target: \"_blank\",\n                            rel: \"noopener noreferrer\",\n                            onClick: ()=>{\n                                launchTelemetry(Constants.Telemetry.Action.Click, Constants.Telemetry.ActionModifier.ExternalRatingSummaryLink, {\n                                    source: ratingSummary.Source\n                                });\n                                logger.info(JSON.stringify({\n                                    source: ratingSummary.Source\n                                }), {\n                                    action: Constants.Telemetry.Action.Click,\n                                    actionModifier: Constants.Telemetry.ActionModifier.ExternalRatingSummaryLink\n                                });\n                            },\n                            children: /*#__PURE__*/ _jsx(Image, {\n                                src: redirectLogo,\n                                className: contentStyles.externalSummaryUrlImage,\n                                alt: context.loc('ExternalRatingSummaries_External_Summary_Logo_Alt', 'External rating provider logo')\n                            })\n                        })\n                    })\n                ]\n            })\n        ]\n    }, `externalRatingSummaryContainer${ratingSummary.Source}`);\n};\nExternalRatingSummary.contextTypes = {\n    loc: PropTypes.func\n};\n","import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from \"react/jsx-runtime\";\nimport * as React from 'react';\nimport { Label, Stack, Text, mergeStyleSets, Image } from '@fluentui/react';\nimport { ExternalRatingSummary } from './externalRatingSummary';\nimport ratingStar from '@shared/images/RatingStarFilled.svg';\nimport { getTotalExternalRatingSummariesInfo } from '@shared/utils/reviewsUtils';\nimport * as PropTypes from 'prop-types';\nconst contentStyles = mergeStyleSets({\n    ratingDisplayWrapper: {\n        marginTop: 16\n    },\n    externalRatingSummariesAverage: [\n        'externalRatingSummariesAverage',\n        {\n            '& .externalRatingSummariesNumOfStars': {\n                padding: 0\n            }\n        }\n    ]\n});\nexport const ExternalRatingSummaries = ({ externalRatingSummaries = [] }, context)=>{\n    const rawRatingSummaries = externalRatingSummaries === null || externalRatingSummaries === void 0 ? void 0 : externalRatingSummaries.map((externalRatingSummary)=>externalRatingSummary.ratingSummary);\n    const externalSummariesInfo = getTotalExternalRatingSummariesInfo(rawRatingSummaries);\n    return /*#__PURE__*/ _jsxs(\"div\", {\n        className: \"externalRatingSummariesContainer\",\n        children: [\n            /*#__PURE__*/ _jsx(Stack, {\n                tokens: {\n                    childrenGap: 2,\n                    padding: 1\n                },\n                children: externalRatingSummaries === null || externalRatingSummaries === void 0 ? void 0 : externalRatingSummaries.map((externalRatingSummary)=>/*#__PURE__*/ _jsx(_Fragment, {\n                        children: /*#__PURE__*/ _jsx(ExternalRatingSummary, {\n                            ratingSummary: externalRatingSummary.ratingSummary,\n                            image: externalRatingSummary.image,\n                            showImage: true,\n                            source: externalRatingSummary.ratingSummary.Source\n                        }, `${externalRatingSummary.ratingSummary.Source}-ExternalRatingSummary`)\n                    }))\n            }),\n            /*#__PURE__*/ _jsx(\"div\", {\n                children: externalRatingSummaries && /*#__PURE__*/ _jsx(Stack, {\n                    horizontal: true,\n                    className: contentStyles.ratingDisplayWrapper,\n                    children: /*#__PURE__*/ _jsxs(Stack, {\n                        horizontal: true,\n                        className: contentStyles.externalRatingSummariesAverage,\n                        children: [\n                            /*#__PURE__*/ _jsx(Image, {\n                                className: \"externalRatingSummariesStar\",\n                                src: ratingStar,\n                                alt: context.loc('Rating_Star_Image_Alt', 'Rating star')\n                            }),\n                            /*#__PURE__*/ _jsx(Label, {\n                                className: \"externalRatingSummariesNumOfStars\",\n                                children: externalSummariesInfo.averageRatings.toFixed(1)\n                            }),\n                            /*#__PURE__*/ _jsxs(Text, {\n                                className: \"externalRatingSummariesNumOfRatingText\",\n                                variant: \"mediumPlus\",\n                                children: [\n                                    \"(\",\n                                    context.locParams('Global_Loc_NumOfRatingsLower', [\n                                        externalSummariesInfo.totalRatings.toString()\n                                    ]),\n                                    \")\"\n                                ]\n                            })\n                        ]\n                    })\n                })\n            })\n        ]\n    });\n};\nExternalRatingSummaries.contextTypes = {\n    loc: PropTypes.func,\n    locParams: PropTypes.func\n};\n","function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nfunction _object_spread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        var ownKeys = Object.keys(source);\n        if (typeof Object.getOwnPropertySymbols === \"function\") {\n            ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n            }));\n        }\n        ownKeys.forEach(function(key) {\n            _define_property(target, key, source[key]);\n        });\n    }\n    return target;\n}\nfunction ownKeys(object, enumerableOnly) {\n    var keys = Object.keys(object);\n    if (Object.getOwnPropertySymbols) {\n        var symbols = Object.getOwnPropertySymbols(object);\n        if (enumerableOnly) {\n            symbols = symbols.filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n            });\n        }\n        keys.push.apply(keys, symbols);\n    }\n    return keys;\n}\nfunction _object_spread_props(target, source) {\n    source = source != null ? source : {};\n    if (Object.getOwnPropertyDescriptors) {\n        Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n        ownKeys(Object(source)).forEach(function(key) {\n            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n    }\n    return target;\n}\nimport { ExternalRatingSummaries as ExternalRatingSummariesComponent } from '@shared/components/externalRatingSummaries';\nimport { connect } from 'react-redux';\nexport const mapStateToProps = (state, ownProps)=>{\n    return _object_spread_props(_object_spread({}, ownProps), {\n        storefrontName: state.config.storefrontName\n    });\n};\nexport const ExternalRatingSummaries = connect(mapStateToProps)(ExternalRatingSummariesComponent);\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { SafeHtmlWrapper } from '@shared/components/safeHtmlWrapper';\nimport { Constants } from '@shared/utils/constants';\nconst getTermsLink = (app)=>{\n    const { UsesEnterpriseContract = false, licenseTermsUrl = '' } = app;\n    let terms;\n    if (UsesEnterpriseContract) {\n        terms = {\n            link: Constants.enterpriseContractLink,\n            locKey: 'ECA_Link'\n        };\n    } else {\n        terms = {\n            link: licenseTermsUrl,\n            locKey: 'TRY_Terms2'\n        };\n    }\n    return terms;\n};\nconst generateLink = (text, link)=>{\n    return `<a href='${link}' rel='noopener' target='_blank'>${text}</a>`;\n};\nexport const UserTerms = ({ app }, context)=>{\n    const terms = getTermsLink(app);\n    const { detailInformation } = app;\n    const privacyPolicyUrl = detailInformation === null || detailInformation === void 0 ? void 0 : detailInformation.PrivacyPolicyUrl;\n    // eslint-disable-next-line security/detect-non-literal-fs-filename\n    const termsOfUse = generateLink(context.loc('Provider_Terms', 'terms of use'), terms.link);\n    const privacyPolicy = generateLink(context.loc('TRY_PrivacyPolicy', 'privacy policy'), privacyPolicyUrl);\n    const termsLink = generateLink(context.loc('TRY_Terms', 'terms'), Constants.MicrosoftTermsURL);\n    const privacyLink = generateLink(context.loc('TRY_Privacy', 'privacy'), Constants.MicrosoftPrivacyStatementURL);\n    const userTermsFallback = `By getting this product, I give Microsoft permission to use or share my account\n   information so that the provider can contact me regarding this product and related products.\n   I agree to the provider's ${termsOfUse} and ${privacyPolicy} and understand that the rights to use this product do not come from Microsoft, unless Microsoft is the provider.\n    Use of AppSource is governed by separate ${termsLink} and ${privacyLink}.`;\n    return /*#__PURE__*/ _jsx(SafeHtmlWrapper, {\n        html: context.locParams('Apps_PDP_Consent_Disclaimer', [\n            termsOfUse,\n            privacyPolicy,\n            termsLink,\n            privacyLink\n        ], userTermsFallback)\n    });\n};\nUserTerms.contextTypes = {\n    loc: PropTypes.func,\n    locParams: PropTypes.func\n};\n","function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nfunction _object_spread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        var ownKeys = Object.keys(source);\n        if (typeof Object.getOwnPropertySymbols === \"function\") {\n            ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n            }));\n        }\n        ownKeys.forEach(function(key) {\n            _define_property(target, key, source[key]);\n        });\n    }\n    return target;\n}\nfunction ownKeys(object, enumerableOnly) {\n    var keys = Object.keys(object);\n    if (Object.getOwnPropertySymbols) {\n        var symbols = Object.getOwnPropertySymbols(object);\n        if (enumerableOnly) {\n            symbols = symbols.filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n            });\n        }\n        keys.push.apply(keys, symbols);\n    }\n    return keys;\n}\nfunction _object_spread_props(target, source) {\n    source = source != null ? source : {};\n    if (Object.getOwnPropertyDescriptors) {\n        Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n        ownKeys(Object(source)).forEach(function(key) {\n            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n    }\n    return target;\n}\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport SpzaComponent from '@shared/components/spzaComponent';\nimport { AppReviewItem } from '@shared/components/appReviewItem';\nimport { Constants } from '@shared/utils/constants';\nimport { RatingSummary } from '@shared/components/ratingSummary';\nimport { createDeepLinkPagination, createDefaultPagination, getAddReviewSectionDescription, getReviewCtaButtonText, launchTelemetry, getExternalRatingSummaries, findReviewsSources, getRatingSummaryByType } from '@shared/utils/reviewsUtils';\nimport { ReviewsDropDowns } from '@shared/components/reviewsDropDowns';\nimport { DefaultButton, mergeStyleSets, Spinner, Stack, ScreenWidthMinXLarge, ScreenWidthMinXXLarge } from '@fluentui/react';\nimport { NoReviewsToShow } from '@shared/components/noReviewsToShow';\nimport { getWindow } from '@shared/services/window';\nimport { logger } from '@src/logger';\nimport { isSignedInChanged } from '@shared/utils/appUtils';\nimport { NeutralColors, CommunicationColors } from '@fluentui/theme';\nimport { ExternalRatingSummaries } from '@shared/containers/externalRatingSummaries';\nimport { shouldShowUserTerms } from '@shared/utils/detailUtils';\nimport { UserTerms } from '@appsource/components/userTerms';\nimport classNames from 'classnames';\nconst DEFAULT_STICKY_HEIGHT = 64;\nconst DEFAULT_MENU_HEIGHT = 54;\nconst SCROLL_TO_REVIEW_TOP_MARGIN = 16;\nconst contentStyles = mergeStyleSets({\n    reviewsTopBar: [\n        'reviewsTopBar',\n        {\n            marginBottom: 24\n        }\n    ],\n    reviewsDateLabel: {\n        color: NeutralColors.gray130\n    },\n    reviewsDetailsTopBlockContainer: {\n        display: 'flex',\n        width: '100%',\n        [`@media (min-width: ${ScreenWidthMinXLarge}px)`]: {\n            flexDirection: 'row'\n        },\n        [`@media (max-width: ${ScreenWidthMinXLarge - 1}px)`]: {\n            flexDirection: 'column-reverse'\n        }\n    },\n    reviewsTabTop: {\n        paddingTop: 24,\n        [`@media (max-width: ${ScreenWidthMinXLarge - 1}px)`]: {\n            paddingTop: 0\n        }\n    },\n    reviewsContainer: {\n        display: 'flex',\n        flexWrap: 'wrap'\n    },\n    userTermsContainer: {\n        backgroundColor: NeutralColors.white,\n        border: '1px solid #EAEAEA',\n        borderRadius: '2px',\n        height: 'fit-content',\n        [`@media (max-width: ${ScreenWidthMinXLarge - 1}px)`]: {\n            margin: '36 0 24 0'\n        },\n        [`@media (min-width: ${ScreenWidthMinXLarge - 1}px)`]: {\n            marginBottom: 28\n        },\n        [`@media (min-width: ${ScreenWidthMinXLarge}px) and (max-width: ${ScreenWidthMinXXLarge - 1}px)`]: {\n            marginLeft: 40,\n            minWidth: 200,\n            maxWidth: 200\n        },\n        [`@media (min-width: ${ScreenWidthMinXXLarge}px)`]: {\n            marginLeft: 32,\n            minWidth: 256,\n            maxWidth: 256\n        },\n        '& a:link': {\n            color: CommunicationColors.primary,\n            textDecoration: 'underline'\n        },\n        '& a:visited': {\n            color: CommunicationColors.primary\n        },\n        '& a:hover': {\n            color: CommunicationColors.shade20\n        },\n        '& a:active': {\n            color: CommunicationColors.shade30\n        }\n    }\n});\nconst consentDisclaimerTokens = {\n    padding: 16\n};\n// Displays a collection of AppReviews\nexport class AppReviewCollection extends SpzaComponent {\n    componentDidMount() {\n        const { ensureAppReviewsData, appId, userInfo } = this.props;\n        ensureAppReviewsData(appId).then(()=>this.loadReviewsToState(true));\n        if (userInfo.signedIn) {\n            this.loadReviewIdsMarkedAsHelpful();\n            this.loadUserProductReviewMetadata();\n        }\n    }\n    componentDidUpdate(prevProps) {\n        const { ensureAppReviewsData, appId } = this.props;\n        if (prevProps.reviewsData !== this.props.reviewsData) {\n            this.loadReviewsToState(false);\n        }\n        if (isSignedInChanged(this.props.userInfo.signedIn, prevProps.userInfo.signedIn)) {\n            ensureAppReviewsData(appId);\n            this.loadReviewIdsMarkedAsHelpful();\n            this.loadUserProductReviewMetadata();\n        }\n        this.scrollToReviewIfNeeded();\n    }\n    loadReviewIdsMarkedAsHelpful() {\n        const { loadReviewIdsMarkedAsHelpful, appId: offerId } = this.props;\n        loadReviewIdsMarkedAsHelpful({\n            offerId\n        });\n    }\n    loadUserProductReviewMetadata() {\n        const { loadUserProductReviewMetadata, appId: legacyId } = this.props;\n        loadUserProductReviewMetadata({\n            legacyId\n        });\n    }\n    loadReviewsToState(deepLinkMode) {\n        const reviews = this.props.reviewsData.reviews;\n        // If there are no reviews we get an empty string, we just need to convert it into an array.\n        let returnedReviews = [];\n        if (reviews && Array.isArray(returnedReviews)) {\n            // Filter out any reviews that lack both a title and a description\n            returnedReviews = reviews.filter((review)=>review.content || review.title);\n        }\n        let pagination = createDefaultPagination(returnedReviews);\n        let scrollToReview = false;\n        // Deep link into review. Select the right page and \"trigger\" scroll action.\n        if (deepLinkMode && this.props.reviewId) {\n            pagination = createDeepLinkPagination(reviews, this.props.reviewId);\n            scrollToReview = true;\n        }\n        this.setState({\n            reviewList: returnedReviews,\n            originalReviewList: returnedReviews,\n            currentStart: pagination.startIndex,\n            currentEnd: pagination.endIndex,\n            currentPageNumber: pagination.pageIndex,\n            scrollToReview: scrollToReview\n        });\n        return pagination;\n    }\n    renderReviews(start, end, reviewList) {\n        const { appId, locale, isEmbed, appData, userInfo, openSignInModal, reviewsData, markedAsHelpful } = this.props;\n        const { userReviewIdsMarkedAsHelpful = [] } = markedAsHelpful;\n        if (!reviewList) {\n            return [\n                /*#__PURE__*/ _jsx(\"div\", {\n                    className: \"reviewsLoadingSpinner\",\n                    children: /*#__PURE__*/ _jsx(Spinner, {\n                        label: this.context.loc('AppDetail_LoadingText', 'Loading...'),\n                        ariaLive: \"assertive\",\n                        labelPosition: \"left\"\n                    })\n                }, \"reviewsLoading\")\n            ];\n        }\n        if (reviewList && reviewList.length === 0) {\n            return [\n                /*#__PURE__*/ _jsx(NoReviewsToShow, {\n                    context: this.context,\n                    isOfferPurchased: reviewsData.isPurchased,\n                    openReviewModal: this.openReviewModal\n                }, 0)\n            ];\n        }\n        // This is to handle the last page. If there number of reviews is less than the end of page, then\n        // we don't have to loop until end. We can stop at the point when there are no more reviews.\n        const listEnd = reviewList.length < end ? reviewList.length : end;\n        const appReviewItems = [];\n        let i = 0;\n        // 'start' begins from 1.\n        for(i = start - 1; i < listEnd; i++){\n            const review = reviewList[`${i}`];\n            appReviewItems.push(/*#__PURE__*/ _jsx(AppReviewItem, {\n                reviewItemShown: this.onReviewItemShown,\n                appId: appId,\n                review: review,\n                locale: locale,\n                isEmbed: isEmbed,\n                publisher: appData ? appData.publisher : '',\n                iconUrl: appData ? appData.iconURL : '',\n                isSignedIn: userInfo.signedIn,\n                isMarkedAsHelpful: userReviewIdsMarkedAsHelpful.includes(review.id),\n                onToggleMarkAsHelpful: ({ isHelpful })=>this.toggleMarkAsHelpful({\n                        review,\n                        isHelpful\n                    }),\n                openSignInModal: openSignInModal,\n                fallbackReviewSourceName: Constants.StorefrontName.AppSource,\n                authorPersona: true,\n                dateLabelClassName: contentStyles.reviewsDateLabel\n            }));\n        }\n        return appReviewItems;\n    }\n    toggleMarkAsHelpful(args) {\n        const { appId: offerId, toggleMarkAsHelpful } = this.props;\n        toggleMarkAsHelpful(_object_spread_props(_object_spread({}, args), {\n            offerId\n        }));\n    }\n    getReviewCounterText() {\n        var _this_state_currentStart, _this_state_currentEnd, _this_state_reviewList_length;\n        if (!this.state.reviewList || this.state.reviewList.length === 0) {\n            return null;\n        }\n        return this.context.locParams('ReviewCollection_ReviewsCounterOfTotal', [\n            ((_this_state_currentStart = this.state.currentStart) === null || _this_state_currentStart === void 0 ? void 0 : _this_state_currentStart.toString()) || '',\n            ((_this_state_currentEnd = this.state.currentEnd) === null || _this_state_currentEnd === void 0 ? void 0 : _this_state_currentEnd.toString()) || '',\n            ((_this_state_reviewList_length = this.state.reviewList.length) === null || _this_state_reviewList_length === void 0 ? void 0 : _this_state_reviewList_length.toString()) || ''\n        ], 'Showing {0}-{1} of {2} reviews');\n    }\n    setCurrentPage(event) {\n        var _event_target;\n        const idClicked = event === null || event === void 0 ? void 0 : (_event_target = event.target) === null || _event_target === void 0 ? void 0 : _event_target.id;\n        if (!idClicked) {\n            return;\n        }\n        // This indicates the current page which should be displayed\n        let pageNumberClicked = 0;\n        if (idClicked === 'previous') {\n            pageNumberClicked = this.state.currentPageNumber - 1;\n        } else if (idClicked === 'next') {\n            pageNumberClicked = this.state.currentPageNumber + 1;\n        } else {\n            // if it was not prev/next, then we have a page number.\n            pageNumberClicked = parseInt(idClicked, 10);\n        }\n        // Page number * number of items per page gives the total number of items displayed.\n        // Since we want the total number of items displayed so far, we do -1.\n        const startArrayIndex = (pageNumberClicked - 1) * Constants.MaxItemsPerPageInReviews;\n        // startArrayIndex is the total number of items displayed so far. We don't want to display the\n        // last item from the prev page. So currentPageStart should be a +1 from that.\n        const currentPageStart = startArrayIndex + 1;\n        let currentPageEnd = startArrayIndex + Constants.MaxItemsPerPageInReviews;\n        // the number of reviews in the last page can be less then 10, in this case currentPageEnd should be the current total number of reviews\n        currentPageEnd = currentPageEnd > this.state.reviewList.length ? this.state.reviewList.length : currentPageEnd;\n        this.setState((prevState)=>{\n            return {\n                reviewList: prevState.reviewList,\n                currentStart: currentPageStart,\n                currentEnd: currentPageEnd,\n                currentPageNumber: pageNumberClicked\n            };\n        });\n        const telemetryDetails = {\n            currentPageNumber: pageNumberClicked,\n            previousPageNumber: this.state.currentPageNumber,\n            currentReviewListStart: currentPageStart,\n            currentReviewListEnd: currentPageEnd,\n            reviewListLength: this.state.reviewList && this.state.reviewList.length || 0\n        };\n        launchTelemetry(Constants.Telemetry.Action.Click, Constants.Telemetry.ActionModifier.ReviewPageNavigationButton, telemetryDetails);\n        logger.info(JSON.stringify(telemetryDetails), {\n            action: Constants.Telemetry.Action.Click,\n            actionModifier: Constants.Telemetry.ActionModifier.ReviewPageNavigationButton\n        });\n    }\n    getPaginationList() {\n        // If the number of reviews is less than the items per page, then pagination div is not necessary.\n        if (!this.state.reviewList || this.state.reviewList.length < Constants.MaxItemsPerPageInReviews) {\n            return null;\n        }\n        const reviewListLength = this.state.reviewList.length;\n        let numberOfPages = Math.floor(reviewListLength / Constants.MaxItemsPerPageInReviews);\n        // The final page has lesser number of items than 'MaxItemsPerPageInReviews'\n        // then we'll have a reminder set of reviews which should go into its own page.\n        if (reviewListLength % Constants.MaxItemsPerPageInReviews > 0) {\n            numberOfPages++;\n        }\n        let i = 0;\n        const pageNumberList = [];\n        // Only for pages greater than 1 we would show 'previous'.\n        if (this.state.currentPageNumber > 1) {\n            pageNumberList.push(/*#__PURE__*/ _jsx(\"li\", {\n                children: /*#__PURE__*/ _jsx(\"a\", {\n                    href: \"#\",\n                    className: \"c-glyph paginationPrevious\",\n                    \"aria-label\": \"Previous page\",\n                    // eslint-disable-next-line react/forbid-dom-props\n                    id: \"previous\",\n                    onClick: (event)=>this.setCurrentPage(event),\n                    children: this.context.loc('PAGINATION_Previous')\n                })\n            }, \"prev\"));\n        }\n        let pageNumberStart = 0;\n        let pageNumberEnd = Math.min(numberOfPages, 9);\n        if (this.state.currentPageNumber > 4 && numberOfPages >= 9) {\n            // if there are more than 9 pages, then we want to show only 9 at a time.\n            // 4 (or how many ever exists) after the current one - if exists. Otherwise upto the maximum number of pages.\n            pageNumberEnd = Math.min(this.state.currentPageNumber + 4, numberOfPages);\n            // pageNumberStart should be 4 pages before the current one.\n            // pageNumberStart can never be negative for the following reasons.\n            // This condition is executed only if number of pages is greater than 9.\n            // Also min value of currentPageNumber > 4 is 5. pageNumberEnd can either be currentPageNumber + 4 (which is 9)\n            // or number of pages (which, if it has entered this block is at least 9).\n            pageNumberStart = pageNumberEnd - 9;\n        }\n        for(i = pageNumberStart; i < pageNumberEnd; i++){\n            const isActive = this.state.currentPageNumber === i + 1;\n            pageNumberList.push(/*#__PURE__*/ _jsx(\"li\", {\n                className: isActive ? 'f-active' : null,\n                children: /*#__PURE__*/ _jsx(\"a\", {\n                    href: \"#\",\n                    \"aria-current\": isActive,\n                    \"aria-label\": 'Page ' + (i + 1),\n                    // eslint-disable-next-line react/forbid-dom-props\n                    id: (i + 1).toString(),\n                    onClick: (event)=>this.setCurrentPage(event),\n                    children: i + 1\n                })\n            }, i));\n        }\n        // If we are at the last page we shouldn't show the 'next' button.\n        if (this.state.currentPageNumber < numberOfPages) {\n            pageNumberList.push(/*#__PURE__*/ _jsx(\"li\", {\n                children: /*#__PURE__*/ _jsx(\"a\", {\n                    href: \"#\",\n                    className: \"c-glyph paginationNext\",\n                    \"aria-label\": \"Next page\",\n                    // eslint-disable-next-line react/forbid-dom-props\n                    id: \"next\",\n                    onClick: (event)=>this.setCurrentPage(event),\n                    children: this.context.loc('PAGINATION_Next')\n                })\n            }, \"next\"));\n        }\n        return /*#__PURE__*/ _jsx(\"ul\", {\n            className: \"m-pagination\",\n            children: pageNumberList\n        });\n    }\n    renderReviewsDetailsTopBlock(externalRatingSummaries) {\n        const { appData, billingCountryCode } = this.props;\n        const internalSummaries = getRatingSummaryByType(appData === null || appData === void 0 ? void 0 : appData.ratingSummaries, Constants.Reviews.ReviewsSource.Internal);\n        const textButton = getReviewCtaButtonText(this.context, this.props.reviewsData.userReview);\n        return this.props.reviewsData.entityId === this.props.appId && /*#__PURE__*/ _jsx(Stack.Item, {\n            className: classNames([\n                'reviewTabTop',\n                contentStyles.reviewsTabTop\n            ]),\n            children: /*#__PURE__*/ _jsxs(Stack, {\n                className: contentStyles.reviewsDetailsTopBlockContainer,\n                children: [\n                    /*#__PURE__*/ _jsxs(Stack.Item, {\n                        grow: true,\n                        className: contentStyles.reviewsContainer,\n                        children: [\n                            /*#__PURE__*/ _jsx(RatingSummary, {\n                                ratingSummary: internalSummaries || (appData === null || appData === void 0 ? void 0 : appData.ratingSummary),\n                                context: this.context,\n                                title: internalSummaries ? this.context.loc('RatingSummary_Title', 'Marketplace ratings') : this.context.loc('AppDetails_ASRatings', 'AppSource ratings')\n                            }),\n                            (externalRatingSummaries === null || externalRatingSummaries === void 0 ? void 0 : externalRatingSummaries.length) > 0 && /*#__PURE__*/ _jsx(ExternalRatingSummaries, {\n                                externalRatingSummaries: externalRatingSummaries\n                            }),\n                            /*#__PURE__*/ _jsxs(\"div\", {\n                                className: \"addReview\",\n                                children: [\n                                    /*#__PURE__*/ _jsx(\"div\", {\n                                        className: \"addReviewTitle\",\n                                        children: this.context.loc('AppReviewCollection_SubHeaderTitle_Text', 'Your review')\n                                    }),\n                                    /*#__PURE__*/ _jsx(DefaultButton, {\n                                        className: \"reviewCTA\",\n                                        text: textButton,\n                                        onClick: this.openReviewModal,\n                                        \"data-bi-id\": Constants.JsllCTAId.WriteReview,\n                                        \"data-bi-area\": \"Review\",\n                                        \"aria-label\": textButton,\n                                        disabled: !this.props.reviewsData.isPurchased\n                                    }),\n                                    /*#__PURE__*/ _jsx(\"div\", {\n                                        className: \"addReviewDescription\",\n                                        children: getAddReviewSectionDescription(this.context, this.props.reviewsData.isPurchased)\n                                    })\n                                ]\n                            })\n                        ]\n                    }),\n                    shouldShowUserTerms({\n                        app: appData,\n                        billingCountryCode\n                    }) && /*#__PURE__*/ _jsx(Stack.Item, {\n                        tokens: consentDisclaimerTokens,\n                        className: contentStyles.userTermsContainer,\n                        children: /*#__PURE__*/ _jsx(UserTerms, {\n                            app: appData\n                        })\n                    })\n                ]\n            })\n        });\n    }\n    renderImpl() {\n        var _this_props_appData;\n        const externalRatingSummaries = getExternalRatingSummaries((_this_props_appData = this.props.appData) === null || _this_props_appData === void 0 ? void 0 : _this_props_appData.ratingSummaries);\n        const updateStateByFilters = {\n            updatePaginationState: this.updatePaginationState,\n            updateStateByFilters: this.updateStateByFilters,\n            updateStateBySortFilter: this.updateStateBySortFilter\n        };\n        const { userCommentedReviewIds, reviewsData, showMyCommentsFilter } = this.props;\n        const { hasInternalReviews, hasExternalReviews } = findReviewsSources(reviewsData);\n        return /*#__PURE__*/ _jsxs(Stack, {\n            className: \"spza_ASappReviewContainer\",\n            children: [\n                this.props.isEmbed ? null : this.renderReviewsDetailsTopBlock(externalRatingSummaries),\n                this.props.reviewsData.entityId === this.props.appId && /*#__PURE__*/ _jsxs(\"div\", {\n                    className: contentStyles.reviewsTopBar,\n                    children: [\n                        /*#__PURE__*/ _jsx(\"div\", {\n                            className: \"reviewCounter\",\n                            children: /*#__PURE__*/ _jsx(\"div\", {\n                                children: this.getReviewCounterText()\n                            })\n                        }),\n                        /*#__PURE__*/ _jsx(ReviewsDropDowns, {\n                            curSourceFilter: this.state.sourceFilter,\n                            curSortBy: this.state.sortBy,\n                            curRatingFilter: this.state.ratingsFilter,\n                            context: this.context,\n                            updateReviewsState: updateStateByFilters,\n                            originalReviewList: this.state.originalReviewList,\n                            curReviewsList: this.state.reviewList,\n                            externalReviewsExist: hasExternalReviews,\n                            internalReviewsExist: hasInternalReviews,\n                            userReview: reviewsData.userReview,\n                            userCommentedReviewIds: userCommentedReviewIds,\n                            showMyCommentsFilter: showMyCommentsFilter\n                        })\n                    ]\n                }),\n                this.renderReviews(this.state.currentStart, this.state.currentEnd, this.state.reviewList),\n                /*#__PURE__*/ _jsx(\"div\", {\n                    className: \"reviewCounter-bottom\",\n                    children: this.state.reviewList && this.state.reviewList.length >= Constants.MaxItemsPerPageInReviews ? this.getReviewCounterText() : null\n                }),\n                /*#__PURE__*/ _jsx(\"div\", {\n                    className: \"reviewPagination\",\n                    children: this.getPaginationList()\n                }, this.state.currentPageNumber)\n            ]\n        });\n    }\n    constructor(props, state){\n        super(props), _define_property(this, \"context\", void 0), _define_property(this, \"onReviewItemShown\", (reviewId, reviewCompRef)=>{\n            if (this.props.reviewId && reviewCompRef && this.props.reviewId === reviewId) {\n                this.setState({\n                    scrollToReviewItemRef: reviewCompRef\n                });\n            }\n        }), _define_property(this, \"scrollToReviewIfNeeded\", ()=>{\n            if (this.state.scrollToReview && this.state.scrollToReviewItemRef && this.props.reviewId && this.state.scrollToReviewItemRef.current) {\n                const elementPosition = this.state.scrollToReviewItemRef.current.getBoundingClientRect().top;\n                const offsetPosition = elementPosition - this.getReviewsScrollOffset();\n                getWindow().scrollTo({\n                    top: offsetPosition,\n                    behavior: 'smooth'\n                });\n                this.setState({\n                    scrollToReview: false\n                });\n            }\n        }), _define_property(this, \"getReviewsScrollOffset\", ()=>{\n            const stickyCardHeight = this.context.getAppDetailsStickyCardHeight();\n            const mainMenuHeight = this.context.getAppHeaderHeight();\n            const headerOffset = (stickyCardHeight || DEFAULT_STICKY_HEIGHT) + (mainMenuHeight || DEFAULT_MENU_HEIGHT) + SCROLL_TO_REVIEW_TOP_MARGIN;\n            return headerOffset;\n        }), _define_property(this, \"openReviewModal\", ()=>{\n            var _this_props_location_query, _this_props_location;\n            let ctaType = null;\n            if ((_this_props_location = this.props.location) === null || _this_props_location === void 0 ? void 0 : (_this_props_location_query = _this_props_location.query) === null || _this_props_location_query === void 0 ? void 0 : _this_props_location_query.ctatype) {\n                ctaType = this.props.location.query.ctatype;\n            }\n            launchTelemetry(Constants.Telemetry.Action.Click, Constants.Telemetry.ActionModifier.OpenRatingModalFromReviewTab, {\n                appId: this.props.appId\n            });\n            logger.info(JSON.stringify({\n                appId: this.props.appId\n            }), {\n                action: Constants.Telemetry.Action.Click,\n                actionModifier: Constants.Telemetry.ActionModifier.OpenRatingModalFromReviewTab\n            });\n            this.props.openRatingModal(this.props.appData, null, ctaType, ()=>{\n                launchTelemetry(Constants.Telemetry.Action.Open, Constants.Telemetry.ActionModifier.OpenRatingModalFromReviewTab, {\n                    appId: this.props.appId\n                });\n                logger.info(JSON.stringify({\n                    appId: this.props.appId\n                }), {\n                    action: Constants.Telemetry.Action.Open,\n                    actionModifier: Constants.Telemetry.ActionModifier.OpenRatingModalFromReviewTab\n                });\n                this.clearFiltersByState();\n            });\n        }), _define_property(this, \"updatePaginationState\", (curPageNumber, curStart, currentEnd)=>{\n            this.setState({\n                currentPageNumber: curPageNumber,\n                currentStart: curStart,\n                currentEnd: currentEnd\n            });\n        }), _define_property(this, \"updateStateByFilters\", (updatedRatingsFilter, updatedReviewList, updatedSourceFilter)=>{\n            this.setState({\n                ratingsFilter: updatedRatingsFilter,\n                reviewList: updatedReviewList,\n                sourceFilter: updatedSourceFilter\n            });\n        }), _define_property(this, \"clearFiltersByState\", ()=>{\n            this.setState({\n                sourceFilter: null,\n                ratingsFilter: null,\n                sortBy: null\n            });\n        }), _define_property(this, \"updateStateBySortFilter\", (updatedSortBy)=>{\n            this.setState({\n                sortBy: updatedSortBy\n            });\n        });\n        this.state = state || {\n            currentStart: 1,\n            currentEnd: 1,\n            currentPageNumber: 1,\n            scrollToReview: false,\n            scrollToReviewItemRef: null\n        };\n    }\n}\nAppReviewCollection.contextTypes = {\n    loc: PropTypes.func,\n    locParams: PropTypes.func,\n    getAppDetailsStickyCardHeight: PropTypes.func,\n    getAppHeaderHeight: PropTypes.func\n};\n","import * as React from 'react';\nimport { AppReviewCollection as AppReviewCollectionComponent } from '@appsource/components/appReviewCollection';\nimport { ensureAppReviewsData, loadUserMarkedAsHelpfulReviews, setReviewMarkedAsHelpful, loadUserProductReviewMetadata } from '@shared/actions/thunkActions';\nimport { createModalAction, createRatingAction } from '@shared/actions/actions';\nimport { Constants } from '@shared/utils/constants';\nimport { connect } from 'react-redux';\nimport { withRouter } from '@shared/routerHistory';\nexport const mapStateToProps = (state, ownProps)=>{\n    var _state_config_query;\n    return {\n        reviewsData: state.apps.appReviewsData,\n        appId: ownProps.appId,\n        locale: state.config.locale,\n        appData: ownProps.appData,\n        location: ownProps.location,\n        reviewId: (_state_config_query = state.config.query) === null || _state_config_query === void 0 ? void 0 : _state_config_query.reviewId,\n        userInfo: state.users,\n        markedAsHelpful: state.apps.appReviewsData.markedAsHelpful,\n        userCommentedReviewIds: state.apps.appReviewsData.userCommentedReviewIds,\n        billingCountryCode: state.config.billingCountryCode,\n        showMyCommentsFilter: state.config.featureFlags.ReviewsMyCommentsFilter === 'true'\n    };\n};\nconst mapDispatchToProps = (dispatch)=>{\n    return {\n        ensureAppReviewsData: (entityId, forceUpdate = false)=>dispatch(ensureAppReviewsData(entityId, forceUpdate)),\n        openRatingModal: (app, accessKey, ctaType, callback)=>dispatch(createRatingAction({\n                showModal: true,\n                app: app,\n                accessKey: accessKey,\n                ctaType: ctaType,\n                callback: callback\n            })),\n        openSignInModal: ()=>dispatch(createModalAction({\n                showModal: true,\n                modalId: Constants.ModalType.SignIn\n            })),\n        toggleMarkAsHelpful: (args)=>dispatch(setReviewMarkedAsHelpful(args)),\n        loadReviewIdsMarkedAsHelpful: (args)=>dispatch(loadUserMarkedAsHelpfulReviews(args)),\n        loadUserProductReviewMetadata: (args)=>dispatch(loadUserProductReviewMetadata(args))\n    };\n};\nexport const AppReviewCollection = withRouter(connect(mapStateToProps, mapDispatchToProps)(AppReviewCollectionComponent));\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport React from 'react';\nconst MultilineColumn = ({ columnKey, columnValue, shouldUseSetInnerHTML })=>{\n    const lines = columnValue.map((item, key)=>{\n        if (shouldUseSetInnerHTML) {\n            return(// eslint-disable-next-line react/no-danger\n            /*#__PURE__*/ _jsx(\"span\", {\n                dangerouslySetInnerHTML: {\n                    __html: item\n                },\n                children: /*#__PURE__*/ _jsx(\"br\", {})\n            }, key));\n        }\n        return /*#__PURE__*/ _jsxs(\"span\", {\n            children: [\n                item,\n                /*#__PURE__*/ _jsx(\"br\", {})\n            ]\n        }, key);\n    });\n    return(// eslint-disable-next-line react/forbid-dom-props\n    /*#__PURE__*/ _jsx(\"td\", {\n        id: columnKey,\n        className: columnKey,\n        children: lines\n    }));\n};\nexport const SortedTableColumn = ({ columnKey, columnValue, className, tableProps })=>{\n    const { spanColumns, setInnerHTMLColumns, multiLineColumns } = tableProps;\n    if (!columnValue) {\n        return null;\n    }\n    const columnClassName = `${columnKey} ${className}`;\n    // If this flag is set a span tag is added around the content of table data. Default - no span tag added.\n    const shouldAddSpanTag = spanColumns ? spanColumns.indexOf(columnKey) >= 0 : false;\n    // If this flag is set, we will use dangerouslySetInnerHTML\n    const shouldUseSetInnerHTML = setInnerHTMLColumns ? setInnerHTMLColumns.indexOf(columnKey) >= 0 : false;\n    // If this flag is set the content of table data can have breaks within it. Default - A single line.\n    const shouldShowMultiLine = multiLineColumns ? multiLineColumns.indexOf(columnKey) >= 0 : false;\n    if (columnValue instanceof Array && shouldShowMultiLine) {\n        return /*#__PURE__*/ _jsx(MultilineColumn, {\n            columnKey: columnKey,\n            columnValue: columnValue,\n            shouldUseSetInnerHTML: shouldUseSetInnerHTML\n        });\n    } else if (typeof columnValue === 'string' || typeof columnValue === 'number' || typeof columnValue === 'object') {\n        if (shouldAddSpanTag) {\n            return(// eslint-disable-next-line react/forbid-dom-props\n            /*#__PURE__*/ _jsx(\"td\", {\n                id: columnKey,\n                className: columnClassName,\n                children: /*#__PURE__*/ _jsx(\"span\", {\n                    children: columnValue\n                })\n            }));\n        } else if (shouldUseSetInnerHTML) {\n            return /*#__PURE__*/ _jsx(\"td\", {\n                // eslint-disable-next-line react/forbid-dom-props\n                id: columnKey,\n                className: columnClassName,\n                // eslint-disable-next-line react/no-danger\n                dangerouslySetInnerHTML: {\n                    __html: columnValue\n                }\n            });\n        } else {\n            return(// eslint-disable-next-line react/forbid-dom-props\n            /*#__PURE__*/ _jsx(\"td\", {\n                id: columnKey,\n                className: columnClassName,\n                children: columnValue\n            }));\n        }\n    }\n};\n","function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport SpzaComponent from '../spzaComponent';\nimport { SortedTableColumn } from './sortedTableColumn';\nconst SortOrder = {\n    None: 'none',\n    Ascending: 'ascending',\n    Descending: 'descending'\n};\nfunction SortArrayByProperty(inputArray, propertyName, order) {\n    const comparer = function(arg0, arg1) {\n        if (typeof arg0[`${propertyName}`] !== 'number' || typeof arg1[`${propertyName}`] !== 'number') {\n            return 0;\n        }\n        return order === SortOrder.Ascending ? arg0[`${propertyName}`] - arg1[`${propertyName}`] : arg1[`${propertyName}`] - arg0[`${propertyName}`];\n    };\n    return inputArray.sort(comparer);\n}\nexport class SortedTable extends SpzaComponent {\n    renderImpl() {\n        var _multiLineRowsConfiguration_multilineColumns;\n        const { multiLineRowsConfiguration, tbody, defaultSortingDisabled } = this.props;\n        let tableData = defaultSortingDisabled ? tbody : tbody.sort((a, b)=>{\n            const titleA = a.title ? a.title.toUpperCase() : a.category.toUpperCase();\n            const titleB = b.title ? b.title.toUpperCase() : b.category.toUpperCase();\n            return titleA < titleB ? 1 : titleA > titleB ? -1 : 0;\n        });\n        tableData = this.props.sortConfig.sortColumnName ? SortArrayByProperty(tableData, this.props.sortConfig.sortColumnName, this.props.sortConfig.sortOrder) : tableData;\n        const hasMultilineConfig = !!(multiLineRowsConfiguration === null || multiLineRowsConfiguration === void 0 ? void 0 : (_multiLineRowsConfiguration_multilineColumns = multiLineRowsConfiguration.multilineColumns) === null || _multiLineRowsConfiguration_multilineColumns === void 0 ? void 0 : _multiLineRowsConfiguration_multilineColumns.length);\n        const rowRenderingFunction = hasMultilineConfig ? this.renderMultilineRow(multiLineRowsConfiguration) : this.renderOldSingleLineRow;\n        return /*#__PURE__*/ _jsxs(\"table\", {\n            \"data-f-sort\": \"true\",\n            children: [\n                /*#__PURE__*/ _jsx(\"thead\", {\n                    children: this.props.thead\n                }),\n                /*#__PURE__*/ _jsx(\"tbody\", {\n                    children: tableData.map((row)=>rowRenderingFunction(row))\n                })\n            ]\n        });\n    }\n    constructor(...args){\n        super(...args), // This is the old implementation of the component and new implemnantion is under multiyear feature flag\n        _define_property(this, \"renderOldSingleLineRow\", (row)=>{\n            const columns = [];\n            Object.keys(row).forEach((propertyName)=>{\n                // If this flag is set the property is not rendered. Default - property is rendered.\n                const shouldIgnore = this.props.ignore ? this.props.ignore.indexOf(propertyName) >= 0 : false;\n                // If this flag is set a span tag is added around the content of table data. Default - no span tag added.\n                const shouldAddSpanTag = this.props.spanColumns ? this.props.spanColumns.indexOf(propertyName) >= 0 : false;\n                // If this flag is set, we will use dangerouslySetInnerHTML\n                const shouldUseSetInnerHTML = this.props.setInnerHTMLColumns ? this.props.setInnerHTMLColumns.indexOf(propertyName) >= 0 : false;\n                // If this flag is set the content of table data can have breaks within it. Default - A single line.\n                const shouldShowMultiLine = this.props.multiLineColumns ? this.props.multiLineColumns.indexOf(propertyName) >= 0 : false;\n                if (!shouldIgnore && row[`${propertyName}`]) {\n                    if (row[`${propertyName}`] instanceof Array && shouldShowMultiLine) {\n                        if (row[`${propertyName}`]) {\n                            const lines = row[`${propertyName}`].map(function(item, key) {\n                                if (shouldUseSetInnerHTML) {\n                                    return(// eslint-disable-next-line react/no-danger\n                                    /*#__PURE__*/ _jsx(\"span\", {\n                                        dangerouslySetInnerHTML: {\n                                            __html: item\n                                        },\n                                        children: /*#__PURE__*/ _jsx(\"br\", {})\n                                    }, key));\n                                }\n                                return /*#__PURE__*/ _jsxs(\"span\", {\n                                    children: [\n                                        item,\n                                        /*#__PURE__*/ _jsx(\"br\", {})\n                                    ]\n                                }, key);\n                            });\n                            columns.push(// eslint-disable-next-line react/forbid-dom-props\n                            /*#__PURE__*/ _jsx(\"td\", {\n                                id: propertyName,\n                                className: propertyName,\n                                children: lines\n                            }));\n                        }\n                    } else if (typeof row[`${propertyName}`] === 'string' || typeof row[`${propertyName}`] === 'number' || typeof row[`${propertyName}`] === 'object') {\n                        if (shouldAddSpanTag) {\n                            columns.push(// eslint-disable-next-line react/forbid-dom-props\n                            /*#__PURE__*/ _jsx(\"td\", {\n                                id: propertyName,\n                                className: propertyName,\n                                children: /*#__PURE__*/ _jsx(\"span\", {\n                                    children: row[`${propertyName}`]\n                                })\n                            }));\n                        } else if (shouldUseSetInnerHTML) {\n                            columns.push(/*#__PURE__*/ _jsx(\"td\", {\n                                // eslint-disable-next-line react/forbid-dom-props\n                                id: propertyName,\n                                className: propertyName,\n                                // eslint-disable-next-line react/no-danger\n                                dangerouslySetInnerHTML: {\n                                    __html: row[`${propertyName}`]\n                                }\n                            }));\n                        } else {\n                            columns.push(// eslint-disable-next-line react/forbid-dom-props\n                            /*#__PURE__*/ _jsx(\"td\", {\n                                id: propertyName,\n                                className: propertyName,\n                                children: row[`${propertyName}`]\n                            }));\n                        }\n                    }\n                }\n            });\n            return /*#__PURE__*/ _jsx(\"tr\", {\n                className: row.rowClassName,\n                children: columns\n            }, row.rowKey);\n        }), _define_property(this, \"getColumnKeysToRender\", (row)=>{\n            if (!row) {\n                return [];\n            }\n            const { columns } = this.props;\n            if (columns) {\n                return columns;\n            }\n            return Object.keys(row).filter((columnKey)=>{\n                var _this_props_ignore;\n                const columnValue = row[columnKey.toString()];\n                const shouldIgnore = (_this_props_ignore = this.props.ignore) === null || _this_props_ignore === void 0 ? void 0 : _this_props_ignore.some((ignoreKey)=>ignoreKey === columnKey);\n                return columnValue && !shouldIgnore;\n            });\n        }), _define_property(this, \"renderSingleLineRow\", (row)=>{\n            const { columnsClasses } = this.props;\n            const columns = this.getColumnKeysToRender(row).map((columnKey)=>/*#__PURE__*/ _jsx(SortedTableColumn, {\n                    columnKey: columnKey,\n                    className: columnsClasses === null || columnsClasses === void 0 ? void 0 : columnsClasses[`${columnKey}`],\n                    columnValue: row[`${columnKey}`],\n                    tableProps: this.props\n                }, columnKey));\n            return /*#__PURE__*/ _jsx(\"tr\", {\n                className: row.rowClassName,\n                children: columns\n            }, row.rowKey);\n        }), _define_property(this, \"renderMultilineRow\", (multilineConfig)=>(rowData)=>{\n                var _rowData_multilineColumns_;\n                const { columnsClasses } = this.props;\n                const { multilineColumns, emptyColumnClassName, lastRowClassName, multilineColumnClass } = multilineConfig;\n                if (!multilineColumns.length) {\n                    return null;\n                }\n                const numberOfMultilineRows = ((_rowData_multilineColumns_ = rowData[multilineColumns[0]]) === null || _rowData_multilineColumns_ === void 0 ? void 0 : _rowData_multilineColumns_.length) || 0;\n                const rows = [];\n                for(let rowIndex = 0; rowIndex < numberOfMultilineRows; rowIndex++){\n                    const columns = this.getColumnKeysToRender(rowData).map((columnKey)=>{\n                        const columnValue = rowData[columnKey.toString()];\n                        const isMultilineColumn = multilineColumns.find((x)=>x === columnKey);\n                        if (rowIndex === 0) {\n                            return /*#__PURE__*/ _jsx(SortedTableColumn, {\n                                columnKey: columnKey,\n                                columnValue: isMultilineColumn ? columnValue[`${rowIndex}`] : columnValue,\n                                tableProps: this.props,\n                                className: classNames(columnsClasses === null || columnsClasses === void 0 ? void 0 : columnsClasses[`${columnKey}`], {\n                                    [multilineColumnClass]: isMultilineColumn\n                                })\n                            }, columnKey);\n                        } else {\n                            if (isMultilineColumn) {\n                                return /*#__PURE__*/ _jsx(SortedTableColumn, {\n                                    columnKey: columnKey,\n                                    columnValue: columnValue[`${rowIndex}`],\n                                    tableProps: this.props,\n                                    className: classNames(multilineColumnClass, columnsClasses === null || columnsClasses === void 0 ? void 0 : columnsClasses[`${columnKey}`])\n                                }, columnKey);\n                            } else {\n                                return /*#__PURE__*/ _jsx(\"td\", {\n                                    className: classNames(columnKey, emptyColumnClassName, columnsClasses === null || columnsClasses === void 0 ? void 0 : columnsClasses[`${columnKey}`])\n                                }, columnKey);\n                            }\n                        }\n                    });\n                    rows.push(columns);\n                }\n                return rows.map((row, index)=>/*#__PURE__*/ _jsx(\"tr\", {\n                        className: `${rowData.rowClassName} ${index === rows.length - 1 ? lastRowClassName : ''}`,\n                        children: row\n                    }, rowData.rowKey));\n            });\n    }\n}\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport * as React from 'react';\nimport SpzaComponent from '../spzaComponent';\nexport const SortOrder = {\n    None: 'none',\n    Ascending: 'ascending',\n    Descending: 'descending'\n};\nexport const SortOrderStyles = {\n    NoneStyle: 'c-glyph',\n    AscendingStyle: 'c-glyph f-ascending',\n    DescendingStyle: 'c-glyph f-descending'\n};\nexport class SortedTH extends SpzaComponent {\n    UNSAFE_componentWillReceiveProps(nextProps) {\n        if (this.props.boundProperty !== nextProps.currentlySelected) {\n            this.setState({\n                ariaSort: SortOrder.None,\n                buttonClass: SortOrderStyles.NoneStyle\n            });\n        }\n    }\n    handleHeaderClick() {\n        let newState = {\n            ariaSort: SortOrder.None,\n            buttonClass: SortOrderStyles.NoneStyle\n        };\n        if (this.state.ariaSort === SortOrder.None || this.state.ariaSort === SortOrder.Descending) {\n            newState = {\n                ariaSort: SortOrder.Ascending,\n                buttonClass: SortOrderStyles.AscendingStyle\n            };\n        } else {\n            newState = {\n                ariaSort: SortOrder.Descending,\n                buttonClass: SortOrderStyles.DescendingStyle\n            };\n        }\n        this.setState(newState);\n        this.props.handleSortChange(this.props.boundProperty, newState.ariaSort);\n    }\n    renderImpl() {\n        return /*#__PURE__*/ _jsx(\"th\", {\n            scope: \"col\",\n            className: \"f-sortable\",\n            \"aria-sort\": this.state.ariaSort,\n            children: /*#__PURE__*/ _jsx(\"button\", {\n                className: this.state.buttonClass,\n                \"aria-pressed\": \"mixed\",\n                \"aria-label\": `${this.props.children} current sorting mode is ${this.state.ariaSort}`,\n                onClick: ()=>this.handleHeaderClick(),\n                children: this.props.children\n            })\n        });\n    }\n    constructor(props){\n        super(props);\n        this.state = {\n            ariaSort: SortOrder.None,\n            buttonClass: SortOrderStyles.NoneStyle\n        };\n    }\n}\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport SpzaComponent from './spzaComponent';\nimport FuturePriceTooltip from 'components/futurePriceTooltip';\nexport class SimplePriceCell extends SpzaComponent {\n    renderImpl() {\n        const { price, futurePrice, className } = this.props;\n        return /*#__PURE__*/ _jsxs(\"div\", {\n            className: `simplePriceCell ${className}`,\n            children: [\n                /*#__PURE__*/ _jsx(\"span\", {\n                    className: \"price\",\n                    // eslint-disable-next-line react/no-danger\n                    dangerouslySetInnerHTML: {\n                        __html: price\n                    }\n                }),\n                futurePrice && /*#__PURE__*/ _jsx(FuturePriceTooltip, {\n                    futurePrice: futurePrice\n                })\n            ]\n        });\n    }\n}\nSimplePriceCell.contextTypes = {\n    renderErrorModal: PropTypes.func\n};\n","function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nfunction _object_spread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        var ownKeys = Object.keys(source);\n        if (typeof Object.getOwnPropertySymbols === \"function\") {\n            ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n            }));\n        }\n        ownKeys.forEach(function(key) {\n            _define_property(target, key, source[key]);\n        });\n    }\n    return target;\n}\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { renderNotAvailablePriceUI, getVariablePriceStringWithDefault } from '@shared/utils/pricing';\nimport { SortedTable, SortedTH, SortOrder } from './sortedTable';\nimport { Plan } from '@shared/utils/constants';\nimport { SimplePriceCell } from './simplePriceCell';\nimport FuturePriceWarning from '@shared/components/futurePriceWarning';\nimport PureSpzaComponent from '@shared/components/pureSpzaComponent';\nimport pdpPrivateBadge from '@shared/images/pdp-privateBadge.svg';\nexport class SimplePlanPricing extends PureSpzaComponent {\n    handleSortChange(sortColumnName, order) {\n        this.setState({\n            sortConfig: {\n                sortColumnName,\n                sortOrder: order\n            }\n        });\n    }\n    showColumnByUnit(skus, unit) {\n        return skus.some((sku)=>sku.termPrices && sku.termPrices.some((termPrice)=>termPrice.unit.toLowerCase() === unit));\n    }\n    getBadge(sku) {\n        if (sku.isPrivate) {\n            return /*#__PURE__*/ _jsx(\"img\", {\n                className: \"banner\",\n                src: pdpPrivateBadge\n            });\n        }\n    }\n    getPriceColumnsData(skus, renderBadges) {\n        const { futurePrices, isOneTimePaymentOffer } = this.props;\n        const showPriceColumn = skus.some((sku)=>!!sku.startingPrice);\n        const showYearlyPrice = this.showColumnByUnit(skus, 'year');\n        let showMonthlyPrice = this.showColumnByUnit(skus, 'month');\n        // If the offer is Microsoft managed and without prices.\n        if (this.props.isMicrosoftManaged && skus.length && !showYearlyPrice && !showMonthlyPrice) {\n            showMonthlyPrice = true;\n        }\n        const formattedSkus = skus.map((sku)=>{\n            var _sku_startingPrice;\n            const futureSku = futurePrices === null || futurePrices === void 0 ? void 0 : futurePrices.skus.find((futurePriceSku)=>futurePriceSku.id === sku.id);\n            const { monthly, yearly, price, futurePriceMonthly, futurePriceYearly } = getVariablePriceStringWithDefault({\n                sku,\n                showPriceColumn,\n                showYearlyPrice,\n                showMonthlyPrice,\n                isMicrosoftManaged: this.props.isMicrosoftManaged,\n                countryCode: this.props.billingCountry.countryCode,\n                currency: this.props.billingCountry.currency,\n                context: this.context,\n                futureSku,\n                isOneTimePaymentOffer,\n                locale: this.props.locale,\n                shouldBlockPrices: this.props.shouldBlockPrices\n            });\n            let row = {\n                title: sku.title,\n                description: sku.description,\n                displayRank: sku.displayRank,\n                monthly: monthly && /*#__PURE__*/ _jsx(SimplePriceCell, {\n                    price: monthly,\n                    futurePrice: futurePriceMonthly\n                }),\n                yearly: yearly && /*#__PURE__*/ _jsx(SimplePriceCell, {\n                    price: yearly,\n                    futurePrice: futurePriceYearly\n                }),\n                price: ((_sku_startingPrice = sku.startingPrice) === null || _sku_startingPrice === void 0 ? void 0 : _sku_startingPrice.meterId) ? `${price}/${sku.startingPrice.meterId}` : price,\n                priceInternal: showPriceColumn && sku.startingPrice ? sku.startingPrice.value : 0,\n                rowClassName: 'pricingListItem',\n                rowKey: sku.title\n            };\n            if (renderBadges) {\n                row = _object_spread({\n                    badge: renderBadges && this.getBadge(sku) || ' '\n                }, row);\n            }\n            return row;\n        });\n        const showGeneralPrice = showPriceColumn && !showMonthlyPrice && !showYearlyPrice;\n        return {\n            showMonthlyPrice,\n            showYearlyPrice,\n            formattedSkus,\n            showGeneralPrice\n        };\n    }\n    renderImpl() {\n        const { pricing, isOneTimePaymentOffer } = this.props;\n        if (!pricing) {\n            return /*#__PURE__*/ _jsx(\"div\", {\n                children: this.context.loc('Loading', 'Loading...')\n            });\n        }\n        const skus = pricing.skus;\n        const hasBadges = skus.some((sku)=>sku.isPrivate === true);\n        const { showMonthlyPrice, showYearlyPrice, showGeneralPrice, formattedSkus } = this.getPriceColumnsData(skus, hasBadges);\n        return skus.length === 0 ? renderNotAvailablePriceUI(this.context) : /*#__PURE__*/ _jsx(\"div\", {\n            className: \"pricing simplePlanPricing\",\n            children: /*#__PURE__*/ _jsxs(\"div\", {\n                className: \"c-table f-divided\",\n                children: [\n                    /*#__PURE__*/ _jsx(FuturePriceWarning, {\n                        futurePrices: this.props.futurePrices\n                    }),\n                    /*#__PURE__*/ _jsx(SortedTable, {\n                        thead: [\n                            /*#__PURE__*/ _jsxs(\"tr\", {\n                                className: \"pricingListItem\",\n                                children: [\n                                    hasBadges && /*#__PURE__*/ _jsx(\"th\", {\n                                        className: \"f-sortable\",\n                                        colSpan: 1,\n                                        \"aria-sort\": \"none\",\n                                        scope: \"col\"\n                                    }),\n                                    /*#__PURE__*/ _jsx(\"th\", {\n                                        className: \"f-sortable\",\n                                        colSpan: 1,\n                                        \"aria-sort\": \"none\",\n                                        scope: \"col\",\n                                        children: this.context.loc('Plan', 'Plan')\n                                    }),\n                                    /*#__PURE__*/ _jsx(\"th\", {\n                                        className: \"f-sortable\",\n                                        colSpan: 1,\n                                        \"aria-sort\": \"none\",\n                                        scope: \"col\",\n                                        children: this.context.loc('Description', 'Description')\n                                    }),\n                                    showMonthlyPrice ? /*#__PURE__*/ _jsx(SortedTH, {\n                                        boundProperty: \"priceInternal\",\n                                        handleSortChange: this.handleSortChange,\n                                        currentlySelected: this.state.sortConfig.sortColumnName,\n                                        children: isOneTimePaymentOffer ? this.context.loc('Price', 'Price') : this.context.loc('Monthly_Price', 'Monthly Price')\n                                    }) : null,\n                                    showYearlyPrice ? /*#__PURE__*/ _jsx(SortedTH, {\n                                        boundProperty: \"priceInternal\",\n                                        handleSortChange: this.handleSortChange,\n                                        currentlySelected: this.state.sortConfig.sortColumnName,\n                                        children: this.context.loc('Annual_Price', 'Annual Price')\n                                    }) : null,\n                                    showGeneralPrice ? /*#__PURE__*/ _jsx(SortedTH, {\n                                        boundProperty: \"priceInternal\",\n                                        handleSortChange: this.handleSortChange,\n                                        currentlySelected: this.state.sortConfig.sortColumnName,\n                                        children: this.context.loc('Price', 'Price')\n                                    }) : null\n                                ]\n                            }, \"0\")\n                        ],\n                        tbody: formattedSkus,\n                        sortConfig: this.state.sortConfig,\n                        ignore: [\n                            'rowKey',\n                            'rowClassName',\n                            'priceInternal',\n                            Plan.displayRank\n                        ],\n                        setInnerHTMLColumns: [\n                            'description'\n                        ],\n                        multiLineColumns: [\n                            'monthly',\n                            'yearly',\n                            'title'\n                        ]\n                    })\n                ]\n            })\n        });\n    }\n    constructor(props, context){\n        super(props, context), _define_property(this, \"context\", void 0);\n        this.state = {\n            sortConfig: {\n                sortColumnName: Plan.displayRank,\n                sortOrder: SortOrder.Ascending\n            }\n        };\n        this.handleSortChange = this.handleSortChange.bind(this);\n    }\n}\nSimplePlanPricing.contextTypes = {\n    loc: PropTypes.func,\n    locParams: PropTypes.func,\n    buildHref: PropTypes.func,\n    ctaCallback: PropTypes.func,\n    renderErrorModal: PropTypes.func\n};\n","import React from 'react';\nimport { Constants } from '../../shared/utils/constants';\nimport SpzaComponent from '../../shared/components/spzaComponent';\nexport class MicrosoftManagedIndicatorWrapper extends SpzaComponent {\n    renderImpl() {\n        var _app_licenseManagement;\n        const { uiRole, app, isAvailableInRegion, renderIndicator } = this.props;\n        const userIsAdmin = uiRole === Constants.UiRole.Admin;\n        if (!(app === null || app === void 0 ? void 0 : (_app_licenseManagement = app.licenseManagement) === null || _app_licenseManagement === void 0 ? void 0 : _app_licenseManagement.isMicrosoftManaged) || !isAvailableInRegion || !uiRole || userIsAdmin) {\n            return null;\n        }\n        return renderIndicator();\n    }\n}\n","import { Constants } from '@shared/utils/constants';\nconst fallbackCountryCode = 'US';\nexport const getLocaleLanguage = ({ locale })=>{\n    const localeLanguage = (locale === null || locale === void 0 ? void 0 : locale.includes('-')) ? locale.split('-')[0] : Constants.DefaultLocale.split('-')[0];\n    return localeLanguage;\n};\nfunction getCountryCodeRegion({ countryCode }) {\n    const countryCodeRegion = countryCode ? countryCode.includes('-') ? countryCode.split('-')[1] : countryCode : fallbackCountryCode;\n    return countryCodeRegion;\n}\nexport function getLocale({ locale, countryCode }) {\n    const localeLanguage = getLocaleLanguage({\n        locale\n    });\n    const countryCodeRegion = getCountryCodeRegion({\n        countryCode\n    });\n    const localeString = `${localeLanguage.toLowerCase()}-${countryCodeRegion.toUpperCase()}`;\n    return localeString;\n}\nexport function timeToLocalLocaleString({ timeUTCSeconds, locale, countryCode }) {\n    const date = new Date(timeUTCSeconds * 1000);\n    const localeString = getLocale({\n        locale,\n        countryCode\n    });\n    return date.toLocaleTimeString(localeString);\n}\nexport function timeToLocalString({ timeUTCSeconds, locale, countryCode }) {\n    const date = new Date(timeUTCSeconds * 1000);\n    const localeString = getLocale({\n        locale,\n        countryCode\n    });\n    return date.toLocaleString(localeString);\n}\nexport function numberToLocaleString({ number, locale, countryCode }) {\n    const localeString = getLocale({\n        locale,\n        countryCode\n    });\n    return number.toLocaleString(localeString);\n}\nconst catalogSupportedLocales = [\n    'en',\n    'cs',\n    'de',\n    'es',\n    'fr',\n    'hu',\n    'it',\n    'ja',\n    'ko',\n    'nl',\n    'pl',\n    'ru',\n    'sv',\n    'tr',\n    'pt-br',\n    'pt-pt',\n    'zh-hans',\n    'zh-hant'\n];\nconst languageCodesThatShouldUseLocaleInstead = [\n    'pt',\n    'zh'\n];\nexport const doesSearchSupportLanguage = ({ language })=>catalogSupportedLocales.indexOf(language) >= 0;\nexport const shouldUseLocaleInsteadOfLanguageCode = ({ language })=>languageCodesThatShouldUseLocaleInstead.indexOf(language) >= 0;\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { FontIcon, Link, Text, mergeStyleSets, Stack } from '@fluentui/react';\nimport { numberToLocaleString } from '@shared/utils/localeUtils';\nimport { CommunicationColors } from '@fluentui/theme';\nimport { Constants } from '@shared/utils/constants';\nimport { SpzaInstrumentService } from 'services/telemetry/spza/spzaInstrument';\nimport { withRouter } from '@shared/routerHistory';\nimport { logger } from '@src/logger';\nconst contentStyles = mergeStyleSets({\n    linkedinSection: {\n        display: 'flex',\n        flexDirection: 'row',\n        alignItems: 'center',\n        marginTop: 8\n    },\n    linkedinLogoIcon: {\n        width: 18,\n        height: 18,\n        padding: 0,\n        lineHeight: 20,\n        verticalAlignment: 'center',\n        color: CommunicationColors.primary\n    },\n    linkedinMembersText: {\n        marginLeft: 6,\n        fontSize: 14,\n        lineHeight: 20,\n        fontWeight: 400\n    },\n    linkedinLink: {\n        marginLeft: 8,\n        display: 'flex',\n        flexDirection: 'row',\n        alignItems: 'center',\n        textDecoration: 'none'\n    },\n    linkedinLinkText: {\n        fontSize: 14,\n        fontWeight: 400,\n        textDecoration: 'underline'\n    },\n    externallinkIcon: {\n        paddingLeft: 4,\n        width: 13,\n        height: 13,\n        color: CommunicationColors.primary,\n        lineHeight: 20\n    }\n});\nconst LinkedinProductGroupBarFunction = ({ linkedInProductGroup, locale, countryCode, location }, context)=>{\n    const onLinkClick = ()=>{\n        const payload = {\n            page: location === null || location === void 0 ? void 0 : location.pathname,\n            action: Constants.Telemetry.Action.Click,\n            actionModifier: Constants.Telemetry.ActionModifier.LinkedinLink,\n            details: JSON.stringify({\n                offerId: linkedInProductGroup.offerId\n            })\n        };\n        SpzaInstrumentService.getProvider().probe('logTelemetryInfo', payload);\n        logger.info(payload.details, {\n            page: payload.page,\n            action: payload.action,\n            actionModifier: payload.actionModifier\n        });\n    };\n    return /*#__PURE__*/ _jsxs(Stack, {\n        className: contentStyles.linkedinSection,\n        children: [\n            /*#__PURE__*/ _jsx(FontIcon, {\n                iconName: \"LinkedInLogo\",\n                className: contentStyles.linkedinLogoIcon\n            }),\n            /*#__PURE__*/ _jsx(Text, {\n                className: contentStyles.linkedinMembersText,\n                children: context.locParams('Linkedin_Members', [\n                    numberToLocaleString({\n                        number: linkedInProductGroup.membersCount,\n                        locale,\n                        countryCode\n                    })\n                ])\n            }),\n            /*#__PURE__*/ _jsxs(Stack, {\n                horizontal: true,\n                children: [\n                    /*#__PURE__*/ _jsx(Link, {\n                        className: contentStyles.linkedinLink,\n                        href: linkedInProductGroup.detailsUrl,\n                        target: \"_blank\",\n                        onClick: onLinkClick,\n                        children: /*#__PURE__*/ _jsxs(Text, {\n                            className: contentStyles.linkedinLinkText,\n                            children: [\n                                \" \",\n                                context.loc('Explore_Group_On_Linkedin')\n                            ]\n                        })\n                    }),\n                    /*#__PURE__*/ _jsx(FontIcon, {\n                        iconName: \"OpenInNewWindow\",\n                        className: contentStyles.externallinkIcon\n                    })\n                ]\n            })\n        ]\n    });\n};\nexport const LinkedinProductGroupBar = withRouter(LinkedinProductGroupBarFunction);\nLinkedinProductGroupBarFunction.contextTypes = {\n    loc: PropTypes.func,\n    locParams: PropTypes.func\n};\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { DefaultButton, FontIcon, Stack, Image, Text, mergeStyleSets, ImageFit } from '@fluentui/react';\nimport { numberToLocaleString, timeToLocalLocaleString, timeToLocalString } from '@shared/utils/localeUtils';\nimport { NeutralColors } from '@fluentui/theme';\nconst contentStyles = mergeStyleSets({\n    upcomingEvent: {\n        width: 512,\n        borderStyle: 'solid',\n        borderWidth: 1,\n        borderColor: NeutralColors.gray30,\n        padding: 16,\n        display: 'flex',\n        flexDirection: 'column'\n    },\n    upcomingEventLogo: {\n        width: 60,\n        height: 60,\n        position: 'relative',\n        overflow: 'hidden'\n    },\n    upcomingEventLargeIcon: {\n        width: 60,\n        height: 60,\n        position: 'relative',\n        overflow: 'hidden',\n        color: '#69AFE5'\n    },\n    upcomingEventLargeIconImg: {\n        width: '100%',\n        height: '100%'\n    },\n    upcomingEventNameText: {\n        marginTop: 8,\n        fontSize: 18,\n        lineHeight: 24,\n        fontWeight: 600,\n        color: NeutralColors.gray160\n    },\n    upcomingEventDefaultIcon: {\n        fontSize: 40,\n        width: 40,\n        height: 50,\n        color: '#69AFE5'\n    },\n    upcomingEventDefaultPanel: {\n        padding: 10,\n        width: 60,\n        height: 60,\n        backgroundColor: '#EFF6FC'\n    },\n    upcomingEventNormalText: {\n        marginTop: 8,\n        fontSize: 12,\n        lineHeight: 16,\n        fontWeight: 600,\n        color: NeutralColors.gray130\n    },\n    upcomingEventLinkButton: {\n        width: 212,\n        marginTop: 24,\n        fontSize: 14,\n        lineHeight: 20,\n        fontWeight: 600,\n        color: NeutralColors.gray190\n    },\n    externallinkIcon: {\n        marginLeft: 8,\n        height: 24,\n        fontSize: 14,\n        color: NeutralColors.gray190\n    }\n});\nexport const LinkedinUpcomingEvent = ({ event, locale, countryCode, onExternalLinkClick }, context)=>{\n    const { startTime, endTime, name, logoUrl, eventType, attendeeCount, detailsUrl } = event;\n    const startTimeStr = timeToLocalString({\n        timeUTCSeconds: startTime / 1000,\n        locale,\n        countryCode\n    });\n    const endTimeStr = timeToLocalLocaleString({\n        timeUTCSeconds: endTime / 1000,\n        locale,\n        countryCode\n    });\n    return /*#__PURE__*/ _jsxs(\"div\", {\n        className: contentStyles.upcomingEvent,\n        children: [\n            logoUrl ? /*#__PURE__*/ _jsx(\"div\", {\n                className: contentStyles.upcomingEventLogo,\n                children: /*#__PURE__*/ _jsx(\"div\", {\n                    className: contentStyles.upcomingEventLargeIcon,\n                    children: /*#__PURE__*/ _jsx(Image, {\n                        imageFit: ImageFit.contain,\n                        className: contentStyles.upcomingEventLargeIconImg,\n                        src: logoUrl\n                    })\n                })\n            }) : /*#__PURE__*/ _jsx(\"div\", {\n                className: contentStyles.upcomingEventDefaultPanel,\n                children: /*#__PURE__*/ _jsx(FontIcon, {\n                    \"aria-label\": \"Calendar\",\n                    iconName: \"Calendar\",\n                    className: contentStyles.upcomingEventDefaultIcon\n                })\n            }),\n            /*#__PURE__*/ _jsx(Text, {\n                className: contentStyles.upcomingEventNameText,\n                children: name\n            }),\n            /*#__PURE__*/ _jsx(Text, {\n                className: contentStyles.upcomingEventNormalText,\n                children: eventType\n            }),\n            /*#__PURE__*/ _jsx(Text, {\n                className: contentStyles.upcomingEventNormalText,\n                children: context.locParams('Linkedin_Event_Time', [\n                    startTimeStr,\n                    endTimeStr\n                ])\n            }),\n            /*#__PURE__*/ _jsx(Text, {\n                className: contentStyles.upcomingEventNormalText,\n                children: context.locParams('Linkedin_Attendees_Count', [\n                    numberToLocaleString({\n                        number: attendeeCount,\n                        locale,\n                        countryCode\n                    })\n                ])\n            }),\n            /*#__PURE__*/ _jsx(DefaultButton, {\n                className: contentStyles.upcomingEventLinkButton,\n                href: detailsUrl,\n                target: \"_blank\",\n                onClick: onExternalLinkClick,\n                children: /*#__PURE__*/ _jsxs(Stack, {\n                    horizontal: true,\n                    children: [\n                        context.loc('Linkedin_Event_Link', 'View event on LinkedIn'),\n                        /*#__PURE__*/ _jsx(FontIcon, {\n                            iconName: \"OpenInNewWindow\",\n                            className: contentStyles.externallinkIcon\n                        })\n                    ]\n                })\n            })\n        ]\n    });\n};\nLinkedinUpcomingEvent.contextTypes = {\n    loc: PropTypes.func,\n    locParams: PropTypes.func\n};\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { numberToLocaleString } from '@shared/utils/localeUtils';\nimport { Image, ImageFit, mergeStyleSets, Text } from '@fluentui/react';\nimport { NeutralColors } from '@fluentui/theme';\nconst contentStyles = mergeStyleSets({\n    featuredCustomer: {\n        width: 240,\n        height: 190,\n        borderStyle: 'solid',\n        borderWidth: 1,\n        borderColor: NeutralColors.gray30,\n        padding: 16,\n        display: 'flex',\n        flexDirection: 'column'\n    },\n    featuredCustomerLogo: {\n        width: 60,\n        height: 60,\n        position: 'relative',\n        overflow: 'hidden'\n    },\n    featuredCustomerLargeIcon: {\n        width: 60,\n        height: 60,\n        position: 'relative',\n        overflow: 'hidden'\n    },\n    featuredCustomerLargeIconImg: {\n        width: '100%',\n        height: '100%'\n    },\n    featuredCustomerNameText: {\n        marginTop: 8,\n        fontSize: 18,\n        lineHeight: 24,\n        fontWeight: 600,\n        color: NeutralColors.gray160\n    },\n    featuredCustomerNormalText: {\n        marginTop: 8,\n        fontSize: 12,\n        lineHeight: 16,\n        fontWeight: 600,\n        color: NeutralColors.gray130\n    }\n});\nexport const LinkedinFeaturedCustomer = ({ customer, locale, countryCode }, context)=>{\n    const { name, logoUrl, businessCategory, followersCount } = customer;\n    return /*#__PURE__*/ _jsx(\"div\", {\n        className: \"featuredCustomerBox\",\n        children: /*#__PURE__*/ _jsxs(\"div\", {\n            className: contentStyles.featuredCustomer,\n            children: [\n                /*#__PURE__*/ _jsx(\"div\", {\n                    className: contentStyles.featuredCustomerLogo,\n                    children: /*#__PURE__*/ _jsx(\"div\", {\n                        className: contentStyles.featuredCustomerLargeIcon,\n                        children: /*#__PURE__*/ _jsx(Image, {\n                            imageFit: ImageFit.contain,\n                            className: contentStyles.featuredCustomerLargeIconImg,\n                            src: logoUrl\n                        })\n                    })\n                }),\n                /*#__PURE__*/ _jsx(Text, {\n                    className: contentStyles.featuredCustomerNameText,\n                    children: name\n                }),\n                /*#__PURE__*/ _jsx(Text, {\n                    className: contentStyles.featuredCustomerNormalText,\n                    children: businessCategory\n                }),\n                /*#__PURE__*/ _jsx(Text, {\n                    className: contentStyles.featuredCustomerNormalText,\n                    children: context.locParams('Linkedin_Followers_Count', [\n                        numberToLocaleString({\n                            number: followersCount,\n                            locale,\n                            countryCode\n                        })\n                    ])\n                })\n            ]\n        })\n    });\n};\nLinkedinFeaturedCustomer.contextTypes = {\n    loc: PropTypes.func,\n    locParams: PropTypes.func\n};\n","function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nfunction _object_spread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        var ownKeys = Object.keys(source);\n        if (typeof Object.getOwnPropertySymbols === \"function\") {\n            ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n            }));\n        }\n        ownKeys.forEach(function(key) {\n            _define_property(target, key, source[key]);\n        });\n    }\n    return target;\n}\nfunction ownKeys(object, enumerableOnly) {\n    var keys = Object.keys(object);\n    if (Object.getOwnPropertySymbols) {\n        var symbols = Object.getOwnPropertySymbols(object);\n        if (enumerableOnly) {\n            symbols = symbols.filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n            });\n        }\n        keys.push.apply(keys, symbols);\n    }\n    return keys;\n}\nfunction _object_spread_props(target, source) {\n    source = source != null ? source : {};\n    if (Object.getOwnPropertyDescriptors) {\n        Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n        ownKeys(Object(source)).forEach(function(key) {\n            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n    }\n    return target;\n}\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport React, { useState } from 'react';\nimport * as PropTypes from 'prop-types';\nimport { Text, mergeStyleSets, TextField, Separator, Checkbox, Dialog, PrimaryButton, Stack, IconButton, ButtonType, DefaultButton, Link, FontIcon } from '@fluentui/react';\nimport { NeutralColors, SharedColors } from '@fluentui/theme';\nimport { storeFeedback } from '@shared/services/feedback';\nimport { Constants } from '@shared/utils/constants';\nimport { useSpzaInstrumentService } from '@shared/hooks';\nimport { getWindow } from '@shared/services/window';\nimport { SubmittedModal } from '@shared/components/modals/submittedModal';\nimport { useLocation } from 'react-router-dom';\nconst subTextStyles = {\n    root: {\n        color: NeutralColors.gray130,\n        lineHeight: 20\n    }\n};\nexport const FeatureFeedbackSubmittedModal = ({ hidden, onDismiss, context })=>{\n    return /*#__PURE__*/ _jsx(SubmittedModal, {\n        hidden: hidden,\n        onDismiss: onDismiss,\n        title: context.loc('Nps_SubmittedModal_Title', 'Feedback received'),\n        context: context,\n        children: /*#__PURE__*/ _jsx(Text, {\n            block: true,\n            styles: subTextStyles,\n            children: context.loc('Nps_SubmittedModal_Summary_Text', 'Thanks for taking the time to share your thoughts!')\n        })\n    });\n};\nconst DIALOG_MAX_WIDTH = 560;\nconst DIALOG_MIN_WIDTH = 300;\nconst DIALOG_MINI_MODE_WIDTH = 480;\nconst NO_SCORE = -1;\nconst buttonStyles = {\n    root: {\n        minWidth: 40,\n        height: 48,\n        maxWidth: 40,\n        border: '1px solid #E1E3E5'\n    },\n    rootChecked: {\n        color: NeutralColors.white,\n        backgroundColor: SharedColors.cyanBlue10\n    },\n    rootCheckedHovered: {\n        color: NeutralColors.white,\n        backgroundColor: SharedColors.cyanBlue10\n    }\n};\nconst contentStyles = mergeStyleSets({\n    feedback: {\n        width: 'auto',\n        height: 'auto'\n    },\n    defaultText: [\n        {\n            color: NeutralColors.gray130\n        }\n    ],\n    stackdiv: {\n        display: 'flex',\n        flexDirection: 'column'\n    },\n    openQuestionDiv: {\n        display: 'flex',\n        flexDirection: 'column',\n        marginTop: 40\n    },\n    checksDiv: {\n        display: 'flex',\n        flexDirection: 'column',\n        marginTop: 40\n    },\n    title: {\n        fontSize: 20,\n        lineHeight: 28,\n        fontWeight: 600\n    },\n    scoreDiv: {\n        marginTop: 48\n    },\n    checkBox: {\n        marginTop: 16,\n        lineHeight: 16\n    },\n    scorePanel: {\n        marginTop: 18\n    },\n    scoreSubtitle: {\n        lineHeight: 20,\n        fontSize: 14,\n        fontWeight: 600\n    },\n    scoreMiniSecondLine: {\n        marginTop: 8\n    },\n    checksSubtitle: {\n        lineHeight: 20,\n        fontSize: 14,\n        fontWeight: 600\n    },\n    openQuestionTextField: {\n        height: 96\n    },\n    inputSectionSeparator: {\n        marginTop: 32\n    },\n    emailConsentCheck: {\n        marginTop: 9\n    },\n    footer: {\n        marginTop: 5,\n        height: 96\n    },\n    privacyStatement: {\n        marginTop: 7\n    },\n    submitButton: {\n        alignSelf: 'start',\n        width: 86,\n        lineHeight: 24,\n        marginTop: 9\n    },\n    faceButtonSelected: {\n        backgroundColor: NeutralColors.gray20\n    },\n    faceButtonNotSelected: {\n        backgroundColor: 'transparent'\n    },\n    requiredIcon: {\n        fontSize: 7,\n        padding: 2,\n        color: '#A80000'\n    },\n    closeButton: {\n        alignSelf: 'end',\n        float: 'right'\n    },\n    closeIcon: {\n        fontSize: 16,\n        color: NeutralColors.gray160\n    },\n    closeIconRoot: {\n        width: 24,\n        height: 24\n    }\n});\nexport const scoreValues = [\n    0,\n    1,\n    2,\n    3,\n    4,\n    5,\n    6,\n    7,\n    8,\n    9,\n    10\n];\nexport const scoreValuesMiniLine1 = [\n    0,\n    1,\n    2,\n    3,\n    4,\n    5\n];\nexport const scoreValuesMiniLine2 = [\n    6,\n    7,\n    8,\n    9,\n    10\n];\nexport function FeatureFeedbackScoreSection({ viewContent, score, onScoreChange }, context) {\n    var _getWindow;\n    const miniMode = ((_getWindow = getWindow()) === null || _getWindow === void 0 ? void 0 : _getWindow.innerWidth) <= DIALOG_MINI_MODE_WIDTH;\n    return /*#__PURE__*/ _jsxs(\"div\", {\n        className: contentStyles.scoreDiv,\n        children: [\n            /*#__PURE__*/ _jsxs(Stack, {\n                verticalAlign: \"center\",\n                horizontal: true,\n                children: [\n                    /*#__PURE__*/ _jsx(Text, {\n                        className: contentStyles.scoreSubtitle,\n                        children: (viewContent === null || viewContent === void 0 ? void 0 : viewContent.scoreTitle) || context.loc('Feature_Feedback_Score_Title', 'How valuable do you find the information provided by LinkedIn?')\n                    }),\n                    /*#__PURE__*/ _jsx(FontIcon, {\n                        iconName: \"Asterisk\",\n                        className: contentStyles.requiredIcon\n                    })\n                ]\n            }),\n            /*#__PURE__*/ _jsxs(Stack, {\n                className: contentStyles.scorePanel,\n                tokens: {\n                    childrenGap: 8\n                },\n                children: [\n                    /*#__PURE__*/ _jsxs(Stack, {\n                        horizontal: true,\n                        horizontalAlign: \"space-between\",\n                        children: [\n                            /*#__PURE__*/ _jsx(Text, {\n                                variant: \"smallPlus\",\n                                className: contentStyles.defaultText,\n                                children: (viewContent === null || viewContent === void 0 ? void 0 : viewContent.scoreMinLabel) || context.loc('Feature_Feedback_Score_Min_Title', 'Min')\n                            }),\n                            /*#__PURE__*/ _jsx(Text, {\n                                variant: \"smallPlus\",\n                                className: contentStyles.defaultText,\n                                children: viewContent.scoreMaxLabel || context.loc('Feature_Feedback_Score_Max_Title', 'Max')\n                            })\n                        ]\n                    }),\n                    miniMode ? /*#__PURE__*/ _jsxs(\"div\", {\n                        children: [\n                            /*#__PURE__*/ _jsx(Stack, {\n                                horizontal: true,\n                                tokens: {\n                                    childrenGap: 8\n                                },\n                                children: scoreValuesMiniLine1.map((ratingValue)=>/*#__PURE__*/ _jsx(DefaultButton, {\n                                        toggle: true,\n                                        buttonType: score === ratingValue ? ButtonType.primary : ButtonType.default,\n                                        checked: score === ratingValue,\n                                        styles: buttonStyles,\n                                        text: `${ratingValue}`,\n                                        onClick: ()=>onScoreChange(ratingValue)\n                                    }, ratingValue))\n                            }),\n                            /*#__PURE__*/ _jsx(Stack, {\n                                className: contentStyles.scoreMiniSecondLine,\n                                horizontal: true,\n                                tokens: {\n                                    childrenGap: 8\n                                },\n                                children: scoreValuesMiniLine2.map((ratingValue)=>/*#__PURE__*/ _jsx(DefaultButton, {\n                                        toggle: true,\n                                        buttonType: score === ratingValue ? ButtonType.primary : ButtonType.default,\n                                        checked: score === ratingValue,\n                                        styles: buttonStyles,\n                                        text: `${ratingValue}`,\n                                        onClick: ()=>onScoreChange(ratingValue)\n                                    }, ratingValue))\n                            })\n                        ]\n                    }) : /*#__PURE__*/ _jsx(Stack, {\n                        horizontal: true,\n                        tokens: {\n                            childrenGap: 8\n                        },\n                        children: scoreValues.map((ratingValue)=>/*#__PURE__*/ _jsx(DefaultButton, {\n                                toggle: true,\n                                buttonType: score === ratingValue ? ButtonType.primary : ButtonType.default,\n                                checked: score === ratingValue,\n                                styles: buttonStyles,\n                                text: `${ratingValue}`,\n                                onClick: ()=>onScoreChange(ratingValue)\n                            }, ratingValue))\n                    })\n                ]\n            })\n        ]\n    });\n}\nexport function FeatureFeedbackTitleSection({ viewContent, onDialogDismissed }, context) {\n    return /*#__PURE__*/ _jsx(\"div\", {\n        className: contentStyles.stackdiv,\n        children: /*#__PURE__*/ _jsxs(\"div\", {\n            children: [\n                /*#__PURE__*/ _jsx(Text, {\n                    className: contentStyles.title,\n                    children: (viewContent === null || viewContent === void 0 ? void 0 : viewContent.title) || context.loc('Feature_Feedback_Dialog_Title', 'We’d love your feedback')\n                }),\n                /*#__PURE__*/ _jsx(IconButton, {\n                    className: contentStyles.closeButton,\n                    styles: {\n                        icon: contentStyles.closeIcon,\n                        root: contentStyles.closeIconRoot\n                    },\n                    iconProps: {\n                        iconName: 'ChromeClose'\n                    },\n                    \"aria-label\": context.loc('Dialog_Close', 'Close'),\n                    onClick: onDialogDismissed\n                })\n            ]\n        })\n    });\n}\nexport function FeatureFeedbackChecksSection({ viewContent, checks, setCheckChange }, context) {\n    var _viewContent_checks;\n    return /*#__PURE__*/ _jsxs(\"div\", {\n        className: contentStyles.checksDiv,\n        children: [\n            /*#__PURE__*/ _jsx(Text, {\n                className: contentStyles.checksSubtitle,\n                children: (viewContent === null || viewContent === void 0 ? void 0 : viewContent.checksTitle) || context.loc('Feature_Feedback_Checks_Title', 'Which of the following contributed to your experience?')\n            }),\n            viewContent === null || viewContent === void 0 ? void 0 : (_viewContent_checks = viewContent.checks) === null || _viewContent_checks === void 0 ? void 0 : _viewContent_checks.map((featureCheckDef)=>{\n                return /*#__PURE__*/ _jsx(Checkbox, {\n                    className: contentStyles.checkBox,\n                    label: featureCheckDef.text,\n                    checked: checks[featureCheckDef.key] && checks[featureCheckDef.key],\n                    onChange: (element, checked)=>setCheckChange(featureCheckDef.key, checked)\n                }, featureCheckDef.key);\n            })\n        ]\n    });\n}\nexport function FeatureFeedbackInputSection({ viewContent, userComment, setUserComment }, context) {\n    return /*#__PURE__*/ _jsx(\"div\", {\n        className: contentStyles.openQuestionDiv,\n        children: /*#__PURE__*/ _jsx(TextField, {\n            value: userComment,\n            label: (viewContent === null || viewContent === void 0 ? void 0 : viewContent.openQuestionFieldTitle) || context.loc('Feature_Feedback_Open_Question_Title', 'What can we do to improve your experience?'),\n            placeholder: (viewContent === null || viewContent === void 0 ? void 0 : viewContent.openQuestionFieldPlaceholder) || context.loc('Feature_Feedback_Open_Question_Placeholder', 'Tell us about your experience...'),\n            className: contentStyles.openQuestionTextField,\n            multiline: true,\n            rows: 4,\n            onChange: (ev, newValue)=>setUserComment(newValue)\n        })\n    });\n}\nexport function FeatureFeedbackEmailSection({ email, emailConsent, setEmailConsent }, context) {\n    return /*#__PURE__*/ _jsxs(\"div\", {\n        children: [\n            /*#__PURE__*/ _jsx(Separator, {\n                className: contentStyles.inputSectionSeparator\n            }),\n            email && /*#__PURE__*/ _jsx(Checkbox, {\n                label: context.locParams('Feature_Feedback_Email_Concent', [\n                    email\n                ], `Microsoft can email you to ${email} about your feedback`),\n                className: contentStyles.emailConsentCheck,\n                checked: emailConsent,\n                onChange: (ev, checked)=>{\n                    setEmailConsent(checked);\n                }\n            })\n        ]\n    });\n}\nexport function FeatureFeedbackFooterSection({ onSubmitClick, submitDisabled }, context) {\n    return /*#__PURE__*/ _jsxs(\"div\", {\n        className: contentStyles.stackdiv,\n        children: [\n            /*#__PURE__*/ _jsx(Link, {\n                underline: true,\n                target: \"_blank\",\n                rel: \"noreferrer\",\n                href: \"https://aka.ms/AppSourcePrivacyStatement\",\n                className: contentStyles.privacyStatement,\n                children: context.loc('Feedback_privacy', 'Privacy statement')\n            }),\n            /*#__PURE__*/ _jsx(PrimaryButton, {\n                disabled: submitDisabled,\n                onClick: onSubmitClick,\n                className: contentStyles.submitButton,\n                text: context.loc('Feature_FeedbackSubmit_Button', 'Submit')\n            })\n        ]\n    });\n}\n/* Feature feedback dialog.\n   This component can be customize to allow getting feedback for diffrent features.\n   To cistomize its content use 'viewContent' property.\n   The component handle feedback submission (to log/data table) and trigger event after feedback has been submitted.\n   When dialod in react component tree, it is always visible.\n   User should handle dialog visibility externaly by using 'onFeedbackSubmitted' and 'onDialogDismissed' callbacks.\n*/ function FeatureFeedbackInternal({ featureName, viewContent, email, onFeedbackSubmitted, onDialogDismissed }) {\n    const location = useLocation();\n    const [score, setScore] = useState(NO_SCORE);\n    const [emailConsent, setEmailConsent] = useState(false);\n    const [userComment, setUserComment] = useState('');\n    const [instrument] = useSpzaInstrumentService();\n    const [checks, setChecks] = React.useState((viewContent === null || viewContent === void 0 ? void 0 : viewContent.checks) ? viewContent.checks.map((featureCheck)=>{\n        return {\n            [featureCheck.key]: false\n        };\n    }) : []);\n    const setCheckChange = (key, checked)=>setChecks(_object_spread_props(_object_spread({}, checks), {\n            [key]: checked\n        }));\n    const getEmail = ()=>{\n        return emailConsent ? email : '';\n    };\n    const onSubmitClick = ()=>{\n        const userFeedbackContent = {\n            score,\n            checks,\n            comments: userComment,\n            email: getEmail()\n        };\n        // New logger\n        storeFeedback({\n            action: Constants.Telemetry.Action.CVA,\n            actionModifier: featureName,\n            details: JSON.stringify(userFeedbackContent)\n        });\n        // Old logger\n        const payload = {\n            page: location === null || location === void 0 ? void 0 : location.pathname,\n            action: Constants.Telemetry.Action.CVA,\n            actionModifier: featureName,\n            details: JSON.stringify(userFeedbackContent),\n            isFeedback: true\n        };\n        instrument.probe('logAndFlushTelemetryInfo', payload);\n        onFeedbackSubmitted === null || onFeedbackSubmitted === void 0 ? void 0 : onFeedbackSubmitted();\n    };\n    return /*#__PURE__*/ _jsx(Dialog, {\n        maxWidth: DIALOG_MAX_WIDTH,\n        minWidth: DIALOG_MIN_WIDTH,\n        hidden: false,\n        onDismiss: onDialogDismissed,\n        children: /*#__PURE__*/ _jsxs(\"div\", {\n            className: contentStyles.feedback,\n            children: [\n                /*#__PURE__*/ _jsx(FeatureFeedbackTitleSection, {\n                    viewContent: viewContent,\n                    onDialogDismissed: onDialogDismissed\n                }),\n                /*#__PURE__*/ _jsx(FeatureFeedbackScoreSection, {\n                    viewContent: viewContent,\n                    onScoreChange: setScore,\n                    score: score\n                }),\n                /*#__PURE__*/ _jsx(FeatureFeedbackChecksSection, {\n                    viewContent: viewContent,\n                    checks: checks,\n                    setCheckChange: setCheckChange\n                }),\n                /*#__PURE__*/ _jsx(FeatureFeedbackInputSection, {\n                    viewContent: viewContent,\n                    userComment: userComment,\n                    setUserComment: setUserComment\n                }),\n                /*#__PURE__*/ _jsx(FeatureFeedbackEmailSection, {\n                    email: email,\n                    emailConsent: emailConsent,\n                    setEmailConsent: setEmailConsent\n                }),\n                /*#__PURE__*/ _jsx(FeatureFeedbackFooterSection, {\n                    onSubmitClick: onSubmitClick,\n                    submitDisabled: (viewContent === null || viewContent === void 0 ? void 0 : viewContent.scoreRequired) && score === NO_SCORE\n                })\n            ]\n        })\n    });\n}\nexport const FeatureFeedback = FeatureFeedbackInternal;\nFeatureFeedbackTitleSection.contextTypes = {\n    loc: PropTypes.func,\n    locParams: PropTypes.func\n};\nFeatureFeedbackScoreSection.contextTypes = {\n    loc: PropTypes.func,\n    locParams: PropTypes.func\n};\nFeatureFeedbackChecksSection.contextTypes = {\n    loc: PropTypes.func,\n    locParams: PropTypes.func\n};\nFeatureFeedbackInputSection.contextTypes = {\n    loc: PropTypes.func,\n    locParams: PropTypes.func\n};\nFeatureFeedbackEmailSection.contextTypes = {\n    loc: PropTypes.func,\n    locParams: PropTypes.func\n};\nFeatureFeedbackFooterSection.contextTypes = {\n    loc: PropTypes.func,\n    locParams: PropTypes.func\n};\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport React, { useEffect, useState } from 'react';\nimport * as PropTypes from 'prop-types';\nimport { Link, Text, mergeStyleSets, TeachingBubble, Stack, DirectionalHint, FontIcon, DefaultButton } from '@fluentui/react';\nimport Ribbon from '@shared/components/ribbon';\nimport { LinkedinUpcomingEvent } from '@appsource/components/linkedin/linkedinUpcomingEvent';\nimport { LinkedinFeaturedCustomer } from '@appsource/components/linkedin/linkedinFeaturedCustomer';\nimport { CommunicationColors, NeutralColors } from '@fluentui/theme';\nimport { FeatureFeedback, FeatureFeedbackSubmittedModal } from '@shared/components/featureFeedback';\nimport { Constants } from '@shared/utils/constants';\nimport { getNpsModule } from '@appsource/utils/nps';\nimport { popupDisplayed, PopupType, shouldDisplayPopup } from '@shared/utils/popupDisplayManager';\nimport { withRouter } from '@shared/routerHistory';\nimport { SpzaInstrumentService } from 'services/telemetry/spza/spzaInstrument';\nimport { logger } from '@src/logger';\nconst smallTextSize = 12;\nconst normalTextSize = 14;\nconst largeTextSize = 18;\nconst contentStyles = mergeStyleSets({\n    linkedin: {\n        minHeight: 200,\n        paddingBottom: 20,\n        paddingTop: 32\n    },\n    featuredCustomersPanel: {\n        marginTop: 44\n    },\n    featuredCustomersTitle: {\n        fontSize: largeTextSize,\n        fontWight: 400,\n        lineHeight: 24\n    },\n    featuredCustomersList: {\n        marginTop: 16,\n        display: 'grid',\n        gridTemplateColumns: 'repeat(auto-fill, 240px)',\n        gridGap: 24\n    },\n    featuredCustomersRibbon: {\n        marginTop: 16,\n        display: 'grid',\n        '.ribbon': {\n            marginTop: 0,\n            '.ribbonTiles': {\n                marginLeft: 0,\n                '.ribbonSlider': {\n                    height: 'auto'\n                },\n                '.slick-list': {\n                    marginLeft: 16\n                }\n            }\n        }\n    },\n    upcomingEventLargeIconImg: {\n        position: 'absolute',\n        display: 'block',\n        width: '100%',\n        height: '100%'\n    },\n    upcomingEventNameText: {\n        marginTop: 8,\n        fontSize: largeTextSize,\n        lineHeight: 24,\n        fontWeight: 600,\n        color: NeutralColors.gray160\n    },\n    upcomingEventNormalText: {\n        marginTop: 8,\n        fontSize: smallTextSize,\n        lineHeight: 16,\n        fontWeight: 600,\n        color: NeutralColors.gray130\n    },\n    upcomingEventLinkButton: {\n        width: 212,\n        marginTop: 24,\n        fontSize: normalTextSize,\n        lineHeight: 20,\n        fontWeight: 600,\n        color: NeutralColors.gray190\n    },\n    externallinkIcon: {\n        marginLeft: 8,\n        height: 24,\n        fontSize: normalTextSize,\n        color: NeutralColors.gray190\n    },\n    upcomingEventsTitlePanel: {\n        marginTop: 44,\n        display: 'flex',\n        flexDirection: 'row',\n        alignItems: 'flex-start'\n    },\n    emptyEventsPanel: {\n        paddingTop: 8\n    },\n    emptyEventsIcon: {\n        fontSize: 22,\n        color: '#69AFE5'\n    },\n    emptyEventsText: {\n        lineHeight: 24,\n        fontWeight: 400,\n        padding: 8,\n        fontSize: normalTextSize,\n        color: NeutralColors.gray130\n    },\n    upcomingEventsTitle: {\n        fontSize: largeTextSize,\n        fontWeight: 400,\n        lineHeight: 24\n    },\n    upcomingEventsLink: {\n        marginLeft: 8,\n        fontSize: normalTextSize,\n        fontWeight: 400,\n        lineHeight: 24,\n        verticalAlignment: 'center',\n        textDecoration: 'underline'\n    },\n    upcomingEventsList: {\n        marginTop: 16,\n        display: 'grid',\n        gridTemplateColumns: 'repeat(auto-fill, 512px)',\n        gridGap: 24\n    },\n    feedbackTitle: {\n        fontSize: 18,\n        fontWeight: 400,\n        lineHeight: 24\n    },\n    feedbackItem: {\n        marginTop: 16,\n        fontSize: normalTextSize,\n        fontWeight: 400,\n        lineHeight: 20\n    },\n    feedbackItemBold: {\n        marginLeft: 4,\n        fontSize: normalTextSize,\n        fontWeight: 600,\n        lineHeight: 20\n    },\n    linkedinLogoIcon: {\n        fontSize: 20,\n        lineHeight: 20,\n        verticalAlignment: 'center',\n        color: CommunicationColors.primary\n    }\n});\nconst MAX_CUSTOMERS_SLIDES = 4;\nexport function FeaturedCustomersList({ linkedInProductGroup, offerName, locale, countryCode }, context) {\n    var _linkedInProductGroup_featuredCustomers;\n    if (((_linkedInProductGroup_featuredCustomers = linkedInProductGroup.featuredCustomers) === null || _linkedInProductGroup_featuredCustomers === void 0 ? void 0 : _linkedInProductGroup_featuredCustomers.length) > 0) {\n        const customerElements = linkedInProductGroup.featuredCustomers.map((customer, index)=>{\n            return /*#__PURE__*/ _jsx(LinkedinFeaturedCustomer, {\n                locale: locale,\n                countryCode: countryCode,\n                customer: customer\n            }, 'featuredCustomer_' + index.toString());\n        });\n        return /*#__PURE__*/ _jsxs(\"div\", {\n            className: contentStyles.featuredCustomersPanel,\n            children: [\n                /*#__PURE__*/ _jsx(Text, {\n                    className: contentStyles.featuredCustomersTitle,\n                    children: context.locParams('Linked_Featured_Customers_Title', [\n                        offerName\n                    ])\n                }),\n                /*#__PURE__*/ _jsx(\"div\", {\n                    children: customerElements.length < MAX_CUSTOMERS_SLIDES ? /*#__PURE__*/ _jsx(\"div\", {\n                        className: contentStyles.featuredCustomersList,\n                        children: customerElements\n                    }) : /*#__PURE__*/ _jsx(\"div\", {\n                        className: contentStyles.featuredCustomersRibbon,\n                        children: /*#__PURE__*/ _jsx(Ribbon, {\n                            carousel: true,\n                            children: customerElements\n                        })\n                    })\n                })\n            ]\n        });\n    }\n    return null;\n}\nexport function UpcomingEventsList({ linkedInProductGroup, offerName, locale, countryCode, onExternalLinkClick }, context) {\n    var _linkedInProductGroup_upcomingEvents;\n    if (((_linkedInProductGroup_upcomingEvents = linkedInProductGroup.upcomingEvents) === null || _linkedInProductGroup_upcomingEvents === void 0 ? void 0 : _linkedInProductGroup_upcomingEvents.length) > 0) {\n        return /*#__PURE__*/ _jsxs(\"div\", {\n            children: [\n                /*#__PURE__*/ _jsxs(Stack, {\n                    className: contentStyles.upcomingEventsTitlePanel,\n                    children: [\n                        /*#__PURE__*/ _jsxs(Text, {\n                            className: contentStyles.upcomingEventsTitle,\n                            children: [\n                                \" \",\n                                context.locParams('Linkedin_Events_Title', [\n                                    offerName\n                                ])\n                            ]\n                        }),\n                        linkedInProductGroup.eventsUrl && /*#__PURE__*/ _jsx(Link, {\n                            className: contentStyles.upcomingEventsLink,\n                            target: \"_blank\",\n                            href: linkedInProductGroup.eventsUrl,\n                            onClick: onExternalLinkClick,\n                            children: context.loc('Linkedin_Events_Link')\n                        })\n                    ]\n                }),\n                /*#__PURE__*/ _jsx(\"div\", {\n                    className: contentStyles.upcomingEventsList,\n                    children: linkedInProductGroup.upcomingEvents.map((event, index)=>{\n                        return /*#__PURE__*/ _jsx(LinkedinUpcomingEvent, {\n                            locale: locale,\n                            countryCode: countryCode,\n                            event: event,\n                            onExternalLinkClick: onExternalLinkClick\n                        }, 'upcomingEvent_' + index.toString());\n                    })\n                })\n            ]\n        });\n    } else return /*#__PURE__*/ _jsxs(Stack, {\n        children: [\n            /*#__PURE__*/ _jsx(Stack, {\n                className: contentStyles.upcomingEventsTitlePanel,\n                children: /*#__PURE__*/ _jsxs(Text, {\n                    className: contentStyles.upcomingEventsTitle,\n                    children: [\n                        \" \",\n                        context.locParams('Linkedin_Events_Title', [\n                            offerName\n                        ])\n                    ]\n                })\n            }),\n            /*#__PURE__*/ _jsxs(Stack, {\n                horizontal: true,\n                verticalAlign: \"center\",\n                className: contentStyles.emptyEventsPanel,\n                children: [\n                    /*#__PURE__*/ _jsx(FontIcon, {\n                        iconName: \"Calendar\",\n                        className: contentStyles.emptyEventsIcon\n                    }),\n                    /*#__PURE__*/ _jsx(Text, {\n                        className: contentStyles.emptyEventsText,\n                        children: context.locParams('Linkedin_Events_Empty_Message', [\n                            offerName\n                        ])\n                    })\n                ]\n            })\n        ]\n    });\n}\nexport function FeedbackSection({ onFeedbackClick }, context) {\n    return /*#__PURE__*/ _jsxs(Stack, {\n        tokens: {\n            childrenGap: 16\n        },\n        horizontalAlign: \"start\",\n        children: [\n            /*#__PURE__*/ _jsxs(Stack, {\n                tokens: {\n                    childrenGap: 12\n                },\n                horizontal: true,\n                verticalAlign: \"center\",\n                children: [\n                    /*#__PURE__*/ _jsx(FontIcon, {\n                        iconName: \"LinkedInLogo\",\n                        className: contentStyles.linkedinLogoIcon\n                    }),\n                    /*#__PURE__*/ _jsx(Text, {\n                        className: contentStyles.feedbackTitle,\n                        children: context.loc('Linkedin_Connected_Title', 'Stay connected to the community')\n                    })\n                ]\n            }),\n            /*#__PURE__*/ _jsxs(Text, {\n                className: contentStyles.feedbackItem,\n                children: [\n                    context.loc('Linkedin_Connected_Content_1', 'Explore and connect with other companies interested in this topic. The following information is provided directly from LinkedIn.'),\n                    /*#__PURE__*/ _jsx(\"span\", {\n                        className: contentStyles.feedbackItemBold,\n                        children: context.loc('Linkedin_Connected_Content_2', 'Let us know if this is useful to you!')\n                    })\n                ]\n            }),\n            /*#__PURE__*/ _jsx(DefaultButton, {\n                className: contentStyles.feedbackItem,\n                text: context.loc('Linkedin_Feedback_Section_Action', 'Give feedback'),\n                onClick: onFeedbackClick\n            })\n        ]\n    });\n}\nconst LinkedinProductGroupFunction = ({ linkedInProductGroup, offerName, locale, countryCode, userEmail, feedbackScoreRequired, location, parentTabQuery }, context)=>{\n    const [feedbackMode, setFeedbackMode] = useState(false);\n    const [teachingBubbleMode, setTeachingBubbleMode] = useState(false);\n    const [feedbackSentMode, setFeedbackSentMode] = useState(false);\n    const featureFeedbackContent = {\n        title: context.loc('Linkedin_Feedback_Dialog_Title', 'We’d love your feedback'),\n        scoreTitle: context.loc('Linkedin_Feedback_Score_Title', 'How valuable do you find the information provided by LinkedIn?'),\n        scoreMinLabel: context.loc('Linkedin_Feedback_Score_Min_Title', 'Not valuable'),\n        scoreMaxLabel: context.loc('Linkedin_Feedback_Score_Max_Title', 'Very valuable'),\n        scoreRequired: feedbackScoreRequired,\n        checksTitle: context.loc('Linkedin_Feedback_Checks_Title', 'Which of the following contributed to your experience?'),\n        checks: [\n            {\n                key: 'Featured customers',\n                text: context.loc('Linkedin_Feedback_Featured_Customers', 'Featured customers')\n            },\n            {\n                key: 'Upcoming events',\n                text: context.loc('Linkedin_Feedback_Upcoming_Events', 'Upcoming events')\n            },\n            {\n                key: 'Direct link to the LinkedIn community',\n                text: context.loc('Linkedin_Feedback_Direct_Link', 'Direct link to the LinkedIn community')\n            }\n        ],\n        openQuestionFieldTitle: context.loc('Linkedin_Feedback_Open_Question_Title', 'Which additional information from LinkedIn would you like to see?'),\n        openQuestionFieldPlaceholder: context.loc('Linkedin_Feedback_Open_Question_Placeholder', 'For example, “I’d like to see other members from my community who use this product”.')\n    };\n    const logTelemetry = (action, actionModifier)=>{\n        const payload = {\n            page: location === null || location === void 0 ? void 0 : location.pathname,\n            action,\n            actionModifier,\n            details: JSON.stringify({\n                offerId: linkedInProductGroup.offerId\n            })\n        };\n        SpzaInstrumentService.getProvider().probe('logTelemetryInfo', payload);\n        logger.info(payload.details, {\n            page: payload.page,\n            action: payload.action,\n            actionModifier: payload.actionModifier\n        });\n    };\n    useEffect(()=>{\n        if (shouldDisplayPopup(PopupType.LinkedinTeachingBubble)) {\n            setTeachingBubbleMode(true);\n            popupDisplayed(PopupType.LinkedinTeachingBubble);\n            logTelemetry(Constants.Telemetry.Action.TeachingBubble, Constants.Telemetry.ActionModifier.Linkedin);\n        }\n    }, []);\n    const onFeedbackClick = ()=>{\n        setTeachingBubbleMode(false);\n        setFeedbackMode(true);\n        logTelemetry(Constants.Telemetry.Action.Click, Constants.Telemetry.ActionModifier.LinkedinFeedbackButton);\n    };\n    const onExternalEventLinkClick = ()=>{\n        logTelemetry(Constants.Telemetry.Action.Click, Constants.Telemetry.ActionModifier.LinkedinEventLink);\n    };\n    const onFeedbackDismiss = ()=>{\n        setFeedbackMode(false);\n        logTelemetry(Constants.Telemetry.Action.Click, Constants.Telemetry.ActionModifier.LinkedinFeedbackDismiss);\n        getNpsModule().npsUpdateLastDismissTime();\n    };\n    const onFeedbackSubmitted = ()=>{\n        setFeedbackMode(false);\n        getNpsModule().npsUpdateLastDismissTime();\n        setFeedbackSentMode(true);\n        logTelemetry(Constants.Telemetry.Action.Click, Constants.Telemetry.ActionModifier.LinkedinFeedbackSubmit);\n    };\n    const onTeachingBubbleCloseClick = ()=>{\n        setTeachingBubbleMode(false);\n    };\n    const primaryButtonProps = {\n        children: context.loc('Linkedin_Feedback_Action', 'Give feedback'),\n        onClick: onFeedbackClick\n    };\n    const secondaryButtonProps = {\n        children: context.loc('Linkedin_Teaching_Bubble_Close_Action', 'Close'),\n        onClick: onTeachingBubbleCloseClick\n    };\n    const onTeachingBubblePreventDismiss = (event)=>{\n        return event.type === 'scroll';\n    };\n    return /*#__PURE__*/ _jsxs(\"div\", {\n        className: contentStyles.linkedin,\n        children: [\n            /*#__PURE__*/ _jsx(FeedbackSection, {\n                onFeedbackClick: onFeedbackClick\n            }),\n            /*#__PURE__*/ _jsx(FeaturedCustomersList, {\n                countryCode: countryCode,\n                linkedInProductGroup: linkedInProductGroup,\n                offerName: offerName,\n                locale: locale\n            }),\n            /*#__PURE__*/ _jsx(UpcomingEventsList, {\n                countryCode: countryCode,\n                linkedInProductGroup: linkedInProductGroup,\n                offerName: offerName,\n                locale: locale,\n                onExternalLinkClick: onExternalEventLinkClick\n            }),\n            feedbackMode && /*#__PURE__*/ _jsx(FeatureFeedback, {\n                featureName: Constants.Telemetry.ActionModifier.Linkedin,\n                viewContent: featureFeedbackContent,\n                onDialogDismissed: onFeedbackDismiss,\n                onFeedbackSubmitted: onFeedbackSubmitted,\n                email: userEmail\n            }),\n            teachingBubbleMode && /*#__PURE__*/ _jsx(TeachingBubble, {\n                target: parentTabQuery,\n                calloutProps: {\n                    directionalHint: DirectionalHint.bottomCenter,\n                    preventDismissOnEvent: onTeachingBubblePreventDismiss\n                },\n                primaryButtonProps: primaryButtonProps,\n                secondaryButtonProps: secondaryButtonProps,\n                onDismiss: ()=>{\n                    setTeachingBubbleMode(false);\n                },\n                headline: context.loc('Linkedin_Teaching_Bubble_title', 'Stay connected to the community'),\n                children: context.loc('Linkedin_Teaching_Bubble_text', 'Explore and connect with other companies interested in this topic. Let us know if this is useful to you!')\n            }),\n            feedbackSentMode && /*#__PURE__*/ _jsx(FeatureFeedbackSubmittedModal, {\n                hidden: !feedbackSentMode,\n                onDismiss: ()=>{\n                    setFeedbackSentMode(false);\n                },\n                context: context\n            })\n        ]\n    });\n};\nexport const LinkedinProductGroup = withRouter(LinkedinProductGroupFunction);\nLinkedinProductGroupFunction.contextTypes = {\n    loc: PropTypes.func,\n    locParams: PropTypes.func\n};\nFeaturedCustomersList.contextTypes = {\n    loc: PropTypes.func,\n    locParams: PropTypes.func\n};\nUpcomingEventsList.contextTypes = {\n    loc: PropTypes.func,\n    locParams: PropTypes.func\n};\nFeedbackSection.contextTypes = {\n    loc: PropTypes.func,\n    locParams: PropTypes.func\n};\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { Image, Link, getWindow } from '@fluentui/react';\nimport { Constants } from '@shared/utils/constants';\nimport pdpPbiBadge from '@shared/images/pdp_pbiBadge.svg';\nimport pdpMspBadge from '@shared/images/pdp_mspBadge.svg';\nimport pdpM365CertificationBadge from '@shared/images/pdp_m365CertificationBadge.svg';\nimport freeTrial from '@shared/images/freeTrial.svg';\nimport BadgeMicrosoft365AppAward from '@shared/images/Badge_Microsoft_365_app_award.svg';\nimport pdpPreferBadge from '@shared/images/pdp_preferBadge.svg';\nimport pdpPrivateBadge from '@shared/images/pdp-privateBadge.svg';\nimport pdpAzureBenefitEligible from '@shared/images/badges/AzureBenefitEligiblePDP.svg';\nimport pdpCertifiedSoftware from '@shared/images/badges/pdp_CertifiedSoftware.svg';\nimport { logger } from '@src/logger';\nimport { SpzaInstrumentService } from 'services/telemetry/spza/spzaInstrument';\nconst ImageStyles = {\n    image: {\n        height: '28px'\n    }\n};\nexport const badgeLinks = {\n    AzureBenefitURL: 'http://aka.ms/appsource/azurebenefit',\n    OfficeAwardsURL: 'https://aka.ms/microsoftappawards',\n    SolutionMapURL: 'https://go.microsoft.com/fwlink/?LinkId=875247',\n    PrivateOfferURL: 'https://go.microsoft.com/fwlink/?linkid=2162844',\n    PBICertifiedURL: 'https://aka.ms/pbicertified',\n    AzureExpertsMSPURL: 'https://aka.ms/AzureExpertMSP',\n    MicrosoftCertifiedURL: 'https://aka.ms/appcertification',\n    CertifiedSoftware: 'https://aka.ms/CertifiedsoftwarepartnerFAQ'\n};\nconst badgeProps = {\n    FreeTrial: {\n        src: freeTrial,\n        locTitle: 'Global_Loc_Free_trial_badge',\n        link: null,\n        title: 'Free trial badge'\n    },\n    OfficeAwards: {\n        src: BadgeMicrosoft365AppAward,\n        locTitle: 'Global_Loc_Microsoft_365_App_Award',\n        link: badgeLinks.OfficeAwardsURL,\n        title: 'Microsoft 365 App Award'\n    },\n    SolutionMap: {\n        src: pdpPreferBadge,\n        locTitle: 'Global_Loc_Microsoft_preferred_solution',\n        link: badgeLinks.SolutionMapURL,\n        title: 'Microsoft preferred solution'\n    },\n    PrivateOffer: {\n        src: pdpPrivateBadge,\n        locTitle: 'Global_Loc_Private_plans',\n        link: badgeLinks.PrivateOfferURL,\n        title: 'Private plans'\n    },\n    PBICertified: {\n        src: pdpPbiBadge,\n        locTitle: 'Global_Loc_Microsoft_PBI_Certified',\n        link: badgeLinks.PBICertifiedURL,\n        title: 'Microsoft PBI Certified'\n    },\n    AzureExpertsMSP: {\n        src: pdpMspBadge,\n        locTitle: 'Global_Loc_Azure_Experts_MSP',\n        link: badgeLinks.AzureExpertsMSPURL,\n        title: 'Azure Experts MSP'\n    },\n    MicrosoftCertified: {\n        src: pdpM365CertificationBadge,\n        locTitle: 'Global_Loc_Microsoft_365_Certified',\n        link: badgeLinks.MicrosoftCertifiedURL,\n        title: 'Microsoft 365 Certified'\n    },\n    SelfAttested: {\n        src: pdpM365CertificationBadge,\n        locTitle: 'Global_Loc_Microsoft_365_Certified',\n        link: badgeLinks.MicrosoftCertifiedURL,\n        title: 'Microsoft 365 Certified'\n    },\n    AzureBenefitEligible: {\n        src: pdpAzureBenefitEligible,\n        locTitle: 'Global_Loc_Azure_benefit',\n        link: badgeLinks.AzureBenefitURL,\n        title: 'Azure benefit eligible'\n    },\n    CertifiedSoftware: {\n        src: pdpCertifiedSoftware,\n        locTitle: 'Global_Loc_Certified_Software',\n        link: badgeLinks.CertifiedSoftware,\n        title: 'Certified Software'\n    }\n};\nconst Badge = ({ name }, context)=>{\n    const handleBadgeClick = (contentName)=>{\n        const payload = {\n            page: getWindow().location.href,\n            action: Constants.Telemetry.Action.Click,\n            actionModifier: Constants.Telemetry.ActionModifier.Info,\n            details: JSON.stringify({\n                contentName\n            })\n        };\n        SpzaInstrumentService.getProvider().probe('logTelemetryInfo', payload);\n        logger.info(payload.details, {\n            action: payload.action,\n            actionModifier: payload.actionModifier\n        });\n    };\n    const badge = badgeProps[`${name}`];\n    if (!badge) {\n        return null;\n    }\n    const locTitle = context.loc(badge.locTitle, badge.title);\n    return badge.link ? /*#__PURE__*/ _jsx(Link, {\n        href: badge.link,\n        target: \"_blank\",\n        rel: \"noreferrer\",\n        title: locTitle,\n        \"aria-label\": locTitle,\n        accessibility: true,\n        onClick: ()=>handleBadgeClick(locTitle),\n        children: /*#__PURE__*/ _jsx(Image, {\n            src: badge.src,\n            alt: locTitle,\n            styles: ImageStyles\n        })\n    }) : /*#__PURE__*/ _jsx(Image, {\n        styles: ImageStyles,\n        src: badge.src,\n        alt: locTitle\n    });\n};\nBadge.contextTypes = {\n    loc: PropTypes.func,\n    locParams: PropTypes.func\n};\nexport default Badge;\n","/* eslint-disable react/forbid-dom-props */ function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nfunction _object_spread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        var ownKeys = Object.keys(source);\n        if (typeof Object.getOwnPropertySymbols === \"function\") {\n            ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n            }));\n        }\n        ownKeys.forEach(function(key) {\n            _define_property(target, key, source[key]);\n        });\n    }\n    return target;\n}\nfunction ownKeys(object, enumerableOnly) {\n    var keys = Object.keys(object);\n    if (Object.getOwnPropertySymbols) {\n        var symbols = Object.getOwnPropertySymbols(object);\n        if (enumerableOnly) {\n            symbols = symbols.filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n            });\n        }\n        keys.push.apply(keys, symbols);\n    }\n    return keys;\n}\nfunction _object_spread_props(target, source) {\n    source = source != null ? source : {};\n    if (Object.getOwnPropertyDescriptors) {\n        Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n        ownKeys(Object(source)).forEach(function(key) {\n            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n    }\n    return target;\n}\nimport { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from \"react/jsx-runtime\";\nimport React from 'react';\n// eslint-disable-next-line import/named\nimport * as PropTypes from 'prop-types';\nimport { AppTile } from '@shared/containers/appTile';\nimport { getUserFavouriteEntityAppType } from '@shared/utils/userFavouriteDedicatedUtils';\nimport { AppReviewCollection } from '../containers/appReviewCollection';\nimport Overview from '../containers/overview';\nimport { routes, urlPush, urlReplace } from '@shared/routerHistory';\nimport { SpzaInstrumentService } from '@shared/services/telemetry/spza/spzaInstrument';\nimport { getWindow } from '@shared/services/window';\nimport { isMSASupported, isTransactApp, isAvailableInThisRegion, getPDPRoute, getGalleryRoute, isPrivateOffer, isMigratedPowerBIVisual, getAppTelemetryDetailContentText, isAppForMSAAccountOnly, isD365App, isD365BCApp, isPowerBIVisualsApp, isBagTransactable, isSignedInChanged, canRenderPricing, getActionStringForCTAType, getProductByUrlKey, getProdcutBitMaskInfo, isCertifiedSoftware } from '@shared/utils/appUtils';\nimport { Constants, OfferType } from '@shared/utils/constants';\nimport { DataMap } from '@shared/utils/dataMapping';\nimport { getPrimaryProductUrl, getProductFilter } from '@shared/utils/datamappingHelpers';\nimport * as DetailUtils from '@shared/utils/detailUtils';\nimport { getBillingCountryByCountryCode, getPriceString, getStartingFromPriceText, hidePowerBiVisualPricing } from '@shared/utils/pricing';\nimport UserFavouriteTileDetailButton from '@shared/containers/userFavouriteTileDetailButton';\nimport { AppTag, PricingStates, CheckoutSource } from '@shared/Models';\nimport { InternalLink } from '@shared/components/internalLink';\nimport { ExternalLink } from '@shared/components/externalLink';\nimport { SimplePlanPricing } from '@shared/components/simplePlanPricing';\nimport SpzaComponent from '@shared/components/spzaComponent';\nimport { Tab, Tabs, SELECTED_TAB_QUERY } from '@shared/components/tabs';\nimport { TelemetryImage } from '@shared/components/telemetryImage';\nimport { IconLink } from '@shared/components/iconLink';\nimport { Card } from '@shared/components/card';\nimport { ButtonLink } from '@shared/components/ButtonLink';\nimport { AppDetailsLinkedItems } from '@shared/components/appDetailsLinkedItems';\nimport { StickyCard } from '@shared/components/stickyCard';\nimport { UsefulInfo, UsefulInfoMetadataCellItemType } from './UsefulInfo';\nimport { getWorkBreakEnabledString } from '@shared/utils/stringUtils';\nimport { BreadcrumbUrl } from '@shared/components/breadcrumbUrl';\nimport { Icon, mergeStyleSets, Stack, ScreenWidthMinXLarge, ScreenWidthMinXXLarge, PrimaryButton, Text, Spinner } from '@fluentui/react';\nimport { MicrosoftManagedIndicatorWrapper } from 'components/microsoftManagedIndicatorWrapper';\nimport { useTelemetry } from '@shared/hooks/useTelemetry';\nimport { logger } from '@src/logger';\nimport { CtaButtons } from '@shared/components/ctaButtons';\nimport { SaasPricingTable } from '@appsource/components';\nimport { AppDetailsHeaderRatingBar } from '@shared/components/appDetailsHeaderRatingBar';\nimport { NeutralColors, CommunicationColors } from '@fluentui/theme';\nimport classNames from 'classnames';\nimport { isOneTimePaymentOffer } from '@shared/utils/onetimepaymentoffers';\nimport { UserTerms } from '@appsource/components/userTerms';\nimport { LinkedinProductGroupBar } from '@appsource/components/linkedin/linkedinProductGroupBar';\nimport { LinkedinProductGroup } from '@appsource/components/linkedin/linkedinProductGroup';\nimport noResults from '@shared/images/noResults.svg';\nimport Badge from '@appsource/components/Badge';\n// eslint-disable-next-line react-hooks/rules-of-hooks\nconst [{ pageAction }] = useTelemetry();\nconst BI_AREA = 'Private Offer';\nconst contentStyles = mergeStyleSets({\n    pdpDetailsContainer: [\n        'pdpDetails',\n        {\n            padding: 0,\n            '@media (min-width: 640px) and (max-width: 1024px)': {\n                paddingLeft: '32px !important',\n                paddingRight: '32px !important'\n            },\n            '@media (max-width: 640px)': {\n                paddingLeft: '20px !important',\n                paddingRight: '20px !important'\n            }\n        }\n    ],\n    autoScrollTabContent: {\n        overflow: 'auto'\n    },\n    tabsContainer: {\n        display: 'flex',\n        [`@media (min-width: ${ScreenWidthMinXLarge}px)`]: {\n            flexDirection: 'row'\n        },\n        [`@media (max-width: ${ScreenWidthMinXLarge - 1}px)`]: {\n            flexDirection: 'column-reverse'\n        }\n    },\n    userTermsContainer: {\n        backgroundColor: NeutralColors.white,\n        border: '1px solid #EAEAEA',\n        borderRadius: '2px',\n        height: 'fit-content',\n        [`@media (max-width: ${ScreenWidthMinXLarge - 1}px)`]: {\n            margin: '36 0 24 0'\n        },\n        [`@media (min-width: ${ScreenWidthMinXLarge - 1}px)`]: {\n            marginBottom: 28\n        },\n        [`@media (min-width: ${ScreenWidthMinXLarge}px) and (max-width: ${ScreenWidthMinXXLarge - 1}px)`]: {\n            marginLeft: 40,\n            minWidth: 200,\n            maxWidth: 200\n        },\n        [`@media (min-width: ${ScreenWidthMinXXLarge}px)`]: {\n            marginLeft: 32,\n            minWidth: 256,\n            maxWidth: 256\n        },\n        '& a:link': {\n            color: CommunicationColors.primary,\n            textDecoration: 'underline'\n        },\n        '& a:visited': {\n            color: CommunicationColors.primary\n        },\n        '& a:hover': {\n            color: CommunicationColors.shade20\n        },\n        '& a:active': {\n            color: CommunicationColors.shade30\n        }\n    },\n    ctaSampleButton: {\n        paddingTop: 10,\n        '&:active': {\n            color: '#323130'\n        },\n        '&:hover': {\n            color: '#323130',\n            opacity: '0.7'\n        }\n    },\n    instructionLink: {\n        marginTop: '10px !important'\n    },\n    bagdeContainer: {\n        marginTop: '12px'\n    }\n});\nconst consentDisclaimerTokens = {\n    padding: 16\n};\nexport class AppDetails extends SpzaComponent {\n    /** This temporary function blocks pricing for BAG offers that are not yet ready to be transacted. */ shouldBlockPricing() {\n        // hasPrices check is necessary to ensure we don't block pricing for valid Dynamics 365 and PBI Visual offers\n        const { app } = this.props;\n        return [\n            isD365App,\n            isD365BCApp,\n            isPowerBIVisualsApp\n        ].some((fn)=>fn(app)) && !isBagTransactable(app) && app.hasPrices;\n    }\n    getProductFilterListElements(filterItem, filterTileTypes) {\n        let primaryProductFilter = null;\n        const filteritems = [];\n        Object.keys(DataMap.products).map((value)=>{\n            var _DataMap_products__match, _DataMap_products_;\n            const currentDatamapBlock = DataMap.products[`${value}`];\n            if (this.props.app && !currentDatamapBlock.ShortcutFilters && ((_DataMap_products_ = DataMap.products[`${value}`]) === null || _DataMap_products_ === void 0 ? void 0 : (_DataMap_products__match = _DataMap_products_.match) === null || _DataMap_products__match === void 0 ? void 0 : _DataMap_products__match.call(_DataMap_products_, this.props.app))) {\n                const filter = currentDatamapBlock;\n                if (!filter) {\n                    return null;\n                }\n                const pathParams = {\n                    industry: null,\n                    category: null,\n                    product: null,\n                    search: null\n                };\n                pathParams[`${filterTileTypes}`] = filter.ShortcutUrlKey;\n                // we are preselecting L1 product in detail page category redirect link back to gallery page.\n                // we are only doing this for primary product now which mean no L2 product will be preselected.\n                if (filterTileTypes === Constants.filterTileTypes.category && primaryProductFilter) {\n                    pathParams.product = primaryProductFilter.UrlKey;\n                }\n                const newPath = this.context.buildHref(routes.marketplace, null, pathParams);\n                // Temporary fix for PowerApps to have their builtfor displayed as Apps\n                // until we come up with the complete design\n                const { property, mask } = getProdcutBitMaskInfo(DataMap.products.PowerApps);\n                const isPowerApp = filter.UrlKey === 'web-apps' && this.props.app.products[`${property}`] && (this.props.app.products[`${property}`] & mask) > 0;\n                if (isPowerApp) {\n                    filter.LocKey = 'Apps';\n                    filter.LongTitle = 'Apps';\n                }\n                filteritems.push({\n                    filterItem,\n                    locKey: filter.LocKey,\n                    newPath,\n                    title: filter.LongTitle,\n                    urlKey: filter.UrlKey\n                });\n            }\n            return null;\n        });\n        return filteritems;\n    }\n    showDialog(ctaType) {\n        const app = _object_spread_props(_object_spread({}, this.props.app), {\n            actionString: getActionStringForCTAType(ctaType)\n        });\n        this.context.ctaCallback({\n            entity: app,\n            entityType: Constants.EntityType.App,\n            ctaType,\n            actionModifier: Constants.Telemetry.ActionModifier.AppDetailCTAButton,\n            hasLicense: this.props.doesTenantHasLicenseForApp,\n            isOpenedFromPDP: true,\n            ribbonKey: this.props.ribbonKey\n        });\n    }\n    fetchData(nextProps) {\n        if (nextProps.entityId) {\n            const { entityId, isPrivate } = nextProps;\n            const { arm } = this.props.userInfo.accessToken;\n            // If it private, we must have ARM token ready\n            if (isPrivate && arm) {\n                this.props.ensureAsyncData({\n                    entityId,\n                    isPrivate\n                });\n            } else if (!isPrivate) {\n                this.props.ensureAsyncData({\n                    entityId,\n                    isPrivate\n                });\n            }\n        }\n    }\n    UNSAFE_componentWillReceiveProps(nextProps) {\n        this.fetchData(nextProps);\n    }\n    componentDidMount() {\n        this.fetchData(this.props);\n        const { entityId, app, loadLinkedInProductGroup } = this.props;\n        if (loadLinkedInProductGroup) {\n            loadLinkedInProductGroup({\n                legacyOfferId: entityId\n            });\n        }\n        if (app) {\n            this.telemetryPageLoad();\n            // User profile isn't being loaded so we can send the log\n            if (!this.props.isLoadingUserProfile) {\n                this.logPageLoadAfterUserLoaded();\n            }\n            this.openRatingModal();\n        }\n        if (getWindow()) {\n            getWindow().addEventListener('scroll', this.handleScroll.bind(this));\n        }\n    }\n    componentDidUpdate(prevProps) {\n        var _this_props_userInfo;\n        const userProfileLoaded = prevProps.isLoadingUserProfile && !this.props.isLoadingUserProfile;\n        if (userProfileLoaded && !this.state.pageLoadLogged) {\n            this.logPageLoadAfterUserLoaded();\n        }\n        if (isSignedInChanged((_this_props_userInfo = this.props.userInfo) === null || _this_props_userInfo === void 0 ? void 0 : _this_props_userInfo.signedIn, prevProps.userInfo.signedIn)) {\n            var _this_props_app;\n            const entityId = ((_this_props_app = this.props.app) === null || _this_props_app === void 0 ? void 0 : _this_props_app.entityId) || this.props.entityId;\n            const { arm } = this.props.userInfo.accessToken;\n            const { isPrivate } = this.props;\n            this.props.fetchUserPrivateOffers();\n            if (!this.props.app && arm) {\n                // If it is a private app, the n app will be undefined and we'll need to refetch it from private\n                this.props.ensureAsyncData({\n                    entityId,\n                    isPrivate\n                });\n            }\n            // Get review details\n            this.props.ensureAppReviewsData(entityId, true);\n        }\n        this.handleScroll();\n    }\n    componentWillUnmount() {\n        const curWindow = getWindow();\n        if (curWindow) {\n            curWindow.removeEventListener('scroll', this.handleScroll.bind(this));\n        }\n    }\n    openRatingModal() {\n        if (this.props.location && this.props.location.query && this.props.location.query.survey) {\n            const accessKey = this.props.location.query.survey === 'user' ? null : this.props.location.query.survey;\n            // eslint-disable-next-line @typescript-eslint/no-empty-function\n            this.props.openRatingModal(this.props.app, accessKey, this.props.app.actionString, ()=>{});\n        }\n    }\n    getAllAppsBtn() {\n        const seeAllUrl = this.context.buildHref(routes.marketplace, null, {\n            category: null,\n            industry: null,\n            product: null,\n            search: null\n        });\n        return /*#__PURE__*/ _jsx(InternalLink, {\n            className: \"allAppsButton\",\n            href: seeAllUrl,\n            accEnabled: true,\n            \"aria-label\": `${BI_AREA} see all apps`,\n            \"data-bi-name\": `${BI_AREA} See all apps button`,\n            \"data-bi-area\": BI_AREA,\n            children: this.context.loc('ValueProposition_ActionBanner_Button', 'See all apps')\n        });\n    }\n    renderEmptyPrivatePage() {\n        const itemAlignmentsStackTokens = {\n            childrenGap: 28,\n            padding: 10\n        };\n        return /*#__PURE__*/ _jsx(\"div\", {\n            className: \"privateOffersContainer\",\n            children: /*#__PURE__*/ _jsx(\"div\", {\n                className: \"emptyGalleryWrapper\",\n                children: /*#__PURE__*/ _jsxs(Stack, {\n                    tokens: itemAlignmentsStackTokens,\n                    children: [\n                        /*#__PURE__*/ _jsx(Stack.Item, {\n                            align: \"center\",\n                            children: /*#__PURE__*/ _jsx(\"img\", {\n                                className: \"noResultsImg\",\n                                src: noResults,\n                                alt: this.context.loc('UserPrivateOffer_No_Results', 'No results')\n                            })\n                        }),\n                        /*#__PURE__*/ _jsx(Stack.Item, {\n                            align: \"center\",\n                            children: /*#__PURE__*/ _jsx(Text, {\n                                variant: \"large\",\n                                children: this.context.loc('UserPrivateOffer_Pdp_NoAccess', \"You don't have access to this private plan.\")\n                            })\n                        }),\n                        /*#__PURE__*/ _jsx(Stack.Item, {\n                            align: \"center\",\n                            children: /*#__PURE__*/ _jsx(ExternalLink, {\n                                \"aria-label\": this.context.loc('App_LearnMore', 'Learn more'),\n                                \"data-bi-name\": `${BI_AREA} learn more button`,\n                                \"data-bi-area\": BI_AREA,\n                                accessibilityEnabled: true,\n                                href: \"https://go.microsoft.com/fwlink/?linkid=2162844\",\n                                shouldOpenInTab: true,\n                                children: this.context.loc('App_LearnMore', 'Learn more')\n                            })\n                        }),\n                        /*#__PURE__*/ _jsx(Stack.Item, {\n                            align: \"center\",\n                            children: this.getAllAppsBtn()\n                        })\n                    ]\n                })\n            })\n        });\n    }\n    logPageLoadAfterUserLoaded() {\n        var _getWindow_location;\n        const { app: appInfo, currentView, doesTenantHasLicenseForApp, nationalCloud, uiRole, billingCountryCode, isEmbedded } = this.props;\n        const { entityId: appName, ctaTypes } = appInfo || {};\n        const payload = {\n            page: (_getWindow_location = getWindow().location) === null || _getWindow_location === void 0 ? void 0 : _getWindow_location.href,\n            action: Constants.Telemetry.Action.PageLoad,\n            actionModifier: Constants.Telemetry.ActionModifier.End,\n            appName,\n            details: getAppTelemetryDetailContentText({\n                appInfo,\n                isNationalCloud: !!nationalCloud,\n                isEmbedded,\n                ctaTypes,\n                currentView,\n                uiRole,\n                hasLicense: uiRole ? doesTenantHasLicenseForApp : null,\n                shouldShowUserTerms: appInfo && billingCountryCode ? DetailUtils.shouldShowUserTerms({\n                    app: appInfo,\n                    billingCountryCode\n                }) : null\n            })\n        };\n        this.instrument.probe('logTelemetryInfo', payload);\n        logger.info(payload.details, {\n            action: payload.action,\n            actionModifier: payload.actionModifier,\n            appName: payload.appName\n        });\n        this.setState({\n            pageLoadLogged: true\n        });\n    }\n    telemetryPageLoad() {\n        const { billingCountryCode, ctaTypes, entityId, linkedAddIns, linkedSaaS } = this.props.app;\n        if (ctaTypes && isTransactApp({\n            isEmbedded: false,\n            ctaTypes,\n            appData: this.props.app,\n            billingRegion: billingCountryCode\n        })) {\n            pageAction(null, {\n                content: {\n                    contentType: Constants.JsllSaas.TransactableSaasPdpView\n                }\n            });\n        }\n        if (linkedAddIns && linkedAddIns.length > 0) {\n            pageAction(null, {\n                content: {\n                    contentType: Constants.Telemetry.ContentType.SaaSBundlePageView,\n                    areaName: Constants.Telemetry.AreaName.AppDetails,\n                    contentName: entityId\n                }\n            });\n        } else if (linkedSaaS) {\n            pageAction(null, {\n                content: {\n                    contentType: Constants.Telemetry.ContentType.AddInBundlePageView,\n                    areaName: Constants.Telemetry.AreaName.AppDetails,\n                    contentName: entityId\n                }\n            });\n        }\n    }\n    getOfficeWorksWithList(property) {\n        const list = DetailUtils.getDetailArrayItem(this.props.app, property);\n        if (!Array.isArray(list)) {\n            return [];\n        }\n        return list.filter((item)=>!!Constants.Office365Mapping[`${item}`]).map((item)=>{\n            const value = Constants.Office365Mapping[`${item}`];\n            // value will be of the form\n            // [actualName]\n            // [localizationResource, param1, ...] or\n            if (value.length === 1) {\n                return value[0];\n            } else {\n                if (Array.isArray(value[1])) {\n                    return this.context.locParams(value[0], value[1]);\n                } else {\n                    return this.context.locParams(value[0], [\n                        value[1]\n                    ]);\n                }\n            }\n        });\n    }\n    checkDup(res, item) {\n        for(let i = 0; i < res.length; i++){\n            const existAward = res[`${i}`];\n            if (existAward.length === item.length && existAward.every(function(v, j) {\n                return v === item[`${j}`];\n            })) {\n                return true;\n            }\n        }\n        return false;\n    }\n    getOfficeAwards(awardKeys) {\n        const res = [];\n        for(let i = 0; i < awardKeys.length; i++){\n            const award = Constants.OfficeAwardsMapping[awardKeys[`${i}`]];\n            if (award) {\n                if (i === 0) {\n                    res.push(award);\n                } else {\n                    if (!this.checkDup(res, award)) {\n                        res.push(award);\n                    }\n                }\n            }\n        }\n        return res;\n    }\n    isLatestAppAward(awardKeys) {\n        for(let i = 0; i < awardKeys.length; i++){\n            const award = Constants.OfficeAwardsMapping[awardKeys[`${i}`]];\n            if (award && award[2] === this.context.loc('Latest_App_Awards_Year')) {\n                return true;\n            }\n        }\n        return false;\n    }\n    isPowerBICertifiedApp(keys) {\n        for(let i = 0; i < keys.length; i++){\n            const key = keys[`${i}`];\n            if (AppTag[`${key}`] === AppTag.PowerBICertified) {\n                return true;\n            }\n        }\n        return false;\n    }\n    isMSPApp() {\n        return this.props.app.tags && this.props.app.tags.indexOf(Constants.BadgeType.AzureExpertsMSP) >= 0;\n    }\n    getBreadcrumbElement() {\n        const { hideBreadcrumbUrl } = this.props;\n        const { href, locKey } = getGalleryRoute(this.props.app.appType);\n        const linksList = [\n            {\n                locKey\n            },\n            {\n                locKey: this.props.app.title\n            }\n        ];\n        return /*#__PURE__*/ _jsx(BreadcrumbUrl, {\n            href: this.context.buildHref(href, null, {}),\n            linksList: linksList,\n            hideBreadcrumbUrl: hideBreadcrumbUrl\n        });\n    }\n    getIconElement() {\n        const iconUri = DetailUtils.getDetailInformation(this.props.app, 'LargeIconUri');\n        if (!iconUri) {\n            return /*#__PURE__*/ _jsx(\"div\", {\n                className: \"iconHost\"\n            });\n        }\n        let iconBackgroundColor = DetailUtils.getDetailInformation(this.props.app, 'IconBackgroundColor');\n        if (!iconBackgroundColor) {\n            iconBackgroundColor = this.props.app.iconBackgroundColor;\n        }\n        return /*#__PURE__*/ _jsxs(\"div\", {\n            className: \"iconHost\",\n            style: {\n                backgroundColor: iconBackgroundColor\n            },\n            children: [\n                /*#__PURE__*/ _jsx(\"span\", {\n                    className: \"thumbnailSpacer\"\n                }),\n                /*#__PURE__*/ _jsx(TelemetryImage, {\n                    src: iconUri,\n                    className: \"appLargeIcon\",\n                    itemPropName: \"image\",\n                    title: this.props.app ? this.props.app.title : ''\n                })\n            ]\n        });\n    }\n    getCTAElement() {\n        const { setCheckoutSourcePDP } = this.props;\n        return /*#__PURE__*/ _jsx(CtaButtons, {\n            app: this.props.app,\n            billingCountryCode: this.props.billingCountryCode,\n            startingPrice: this.props.startingPrice,\n            isLoadingUserData: this.props.isLoadingUserData,\n            onCTAClick: (ctaType)=>{\n                setCheckoutSourcePDP({\n                    source: CheckoutSource.PdpTop\n                });\n                this.showDialog(ctaType);\n            },\n            isEmbedded: false,\n            openInNewWindowButtonFlag: this.props.openInNewWindowButtonFlag\n        });\n    }\n    getDownloadSampleButton() {\n        if (!this.props.app.downloadSampleLink) {\n            return null;\n        }\n        const { app: { entityId } } = this.props;\n        return /*#__PURE__*/ _jsx(PrimaryButton, {\n            className: classNames([\n                contentStyles.ctaSampleButton,\n                'CTAbutton',\n                'downloadSampleButton'\n            ]),\n            name: \"downloadSampleButton\",\n            href: this.props.app.downloadSampleLink,\n            target: \"_self\",\n            \"data-bi-id\": Constants.JsllCTAId.DownloadSample,\n            \"data-bi-type\": Constants.JsllCTAId.DownloadSample,\n            \"data-bi-name\": entityId,\n            onClick: ()=>{\n                const payload = {\n                    page: getWindow().location.href,\n                    action: Constants.Telemetry.Action.Click,\n                    actionModifier: Constants.Telemetry.ActionModifier.DownloadPBIVisualSample,\n                    appName: this.props.entityId\n                };\n                this.instrument.probe(Constants.Telemetry.ProbeName.LogInfo, payload);\n                logger.info('', {\n                    action: payload.action,\n                    actionModifier: payload.actionModifier,\n                    appName: payload.appName\n                });\n            },\n            children: this.context.loc('DownloadSample', 'Download Sample')\n        }, this.props.app.downloadSampleLink);\n    }\n    getInstructionsButton() {\n        const linkTitle = 'Instructions';\n        return /*#__PURE__*/ _jsx(InternalLink, {\n            role: \"link\",\n            onClick: this.openInstructionsModal,\n            className: classNames([\n                contentStyles.instructionLink,\n                'c-hyperlink instructionsButton'\n            ]),\n            telemetryDetails: linkTitle,\n            children: this.context.loc('Instructions', linkTitle)\n        });\n    }\n    getNotAvailableInRegionText() {\n        return /*#__PURE__*/ _jsxs(\"div\", {\n            className: \"notAvailableInRegionContainer\",\n            children: [\n                /*#__PURE__*/ _jsx(\"span\", {\n                    className: \"icon-info-14\"\n                }),\n                /*#__PURE__*/ _jsx(\"span\", {\n                    className: \"notAvailableInRegionText\",\n                    children: this.context.loc('NotAvailableInBillingRegion', 'Not available in selected billing region')\n                })\n            ]\n        });\n    }\n    getUserFavouriteButton() {\n        const app = this.props.app;\n        if (!app || isPrivateOffer(this.props.app.appType)) {\n            return null;\n        }\n        return /*#__PURE__*/ _jsx(UserFavouriteTileDetailButton, {\n            entityId: app.entityId,\n            entityType: getUserFavouriteEntityAppType(),\n            item: app\n        });\n    }\n    getMicrosoftManagedIndicator() {\n        const { indicatorText, indicatorClasses, iconName, iconClasses } = this.getMicrosoftManagedIndicatorUiVariables();\n        if (indicatorText) {\n            return /*#__PURE__*/ _jsxs(\"div\", {\n                className: \"microsoftManagedIndicator\",\n                children: [\n                    /*#__PURE__*/ _jsx(Icon, {\n                        iconName: iconName,\n                        className: iconClasses\n                    }),\n                    /*#__PURE__*/ _jsx(\"div\", {\n                        className: indicatorClasses,\n                        children: indicatorText\n                    })\n                ]\n            });\n        }\n        return null;\n    }\n    getMicrosoftManagedIndicatorUiVariables() {\n        const indicator = {\n            indicatorText: '',\n            indicatorClasses: '',\n            iconName: '',\n            iconClasses: ''\n        };\n        if (isD365BCApp(this.props.app)) {\n            indicator.indicatorText = this.context.loc('MicrosoftManagedIndicator_D365BC');\n            indicator.indicatorClasses = 'indicatorText';\n            indicator.iconName = 'Info';\n            indicator.iconClasses = 'indicatorIcon';\n        } else if (isD365App(this.props.app)) {\n            indicator.indicatorText = this.context.loc('MicrosoftManagedIndicator_D365_NotAdmin');\n            indicator.indicatorClasses = 'indicatorText';\n            indicator.iconName = 'Info';\n            indicator.iconClasses = 'indicatorIcon';\n        }\n        return indicator;\n    }\n    renderBadge(name) {\n        return /*#__PURE__*/ _jsx(Badge, {\n            name: name\n        });\n    }\n    handleBadgeClick(contentName) {\n        const payload = {\n            page: getWindow().location.href,\n            action: Constants.Telemetry.Action.Click,\n            actionModifier: Constants.Telemetry.ActionModifier.Info,\n            details: JSON.stringify({\n                contentName\n            })\n        };\n        this.instrument.probe('logTelemetryInfo', payload);\n        logger.info(payload.details, {\n            action: payload.action,\n            actionModifier: payload.actionModifier\n        });\n    }\n    // TODO: move to utils\n    hasOfficeAwards() {\n        if (this.props.app.awards) {\n            const awards = this.getOfficeAwards(this.props.app.awards);\n            if (awards && awards.length > 0) {\n                return true;\n            }\n        }\n        if (this.props.app.entityId.toUpperCase() === Constants.HyperfishEntityId.toUpperCase()) {\n            const awards = this.getOfficeAwards([\n                'AppAwards_2018_BestUX_Place2'\n            ]);\n            if (awards && awards.length > 0) {\n                return true;\n            }\n        }\n        return false;\n    }\n    // TODO: move to utils\n    isPBICertified() {\n        if (this.props.app.tags) {\n            if (this.isPowerBICertifiedApp(this.props.app.tags)) {\n                return true;\n            }\n        }\n        return false;\n    }\n    // TODO: move to utils\n    isMicrosoftCertified() {\n        if (this.props.app.CertificationState === Constants.CertificationType.MicrosoftCertified) {\n            return true;\n        }\n        return false;\n    }\n    // TODO: move to utils\n    isFreeTrial() {\n        var _app_startingPrice, _app_pricingInformation;\n        const { app } = this.props;\n        if (app.actionString === Constants.ActionStrings.Try) {\n            return true;\n        }\n        if ((_app_startingPrice = app.startingPrice) === null || _app_startingPrice === void 0 ? void 0 : _app_startingPrice.hasFreeTrial) {\n            return true;\n        }\n        if (app.trials === DataMap.trials['free-trial'].FilterID) {\n            return true;\n        }\n        // vm\n        if ((_app_pricingInformation = app.pricingInformation) === null || _app_pricingInformation === void 0 ? void 0 : _app_pricingInformation.skus) {\n            const length = app.pricingInformation.skus.length;\n            // loop through all skus to see if any of them have a free trial days duration\n            for(let i = 0; i < length; i++){\n                const sku = app.pricingInformation.skus[`${i}`];\n                if (sku.freeTrialDurationDays) {\n                    return true;\n                }\n            }\n        }\n        return false;\n    }\n    renderLinkedItems(app, nationalCloud) {\n        let dataBiId = '';\n        let productId = '';\n        let isSaaSRendering = false;\n        let headerString = '';\n        if (app.linkedSaaS) {\n            isSaaSRendering = true;\n            dataBiId = 'View Parent';\n            productId = DataMap.products.AzureforWebApps.UrlKey;\n        } else if (app.linkedAddIns && app.linkedAddIns.length > 0) {\n            dataBiId = 'View AddIn';\n            productId = DataMap.products.Office365.UrlKey;\n        }\n        headerString = isSaaSRendering ? this.context.loc('Saas_Linking_App_Details_Parent_Title', 'For the full capabilities of this add-in, get the SaaS package:') : this.context.loc('Saas_Linking_App_Details_AddIns_Title', 'This app package includes premium versions of these add-ins:');\n        return /*#__PURE__*/ _jsx(AppDetailsLinkedItems, {\n            headerString: headerString,\n            linkedItems: isSaaSRendering ? this.props.parentApps : this.props.linkedAddIns,\n            isSaaSRendering: isSaaSRendering,\n            productId: productId,\n            dataBiId: dataBiId,\n            nationalCloud: nationalCloud,\n            app: app,\n            billingCountryCode: this.props.billingCountryCode,\n            isLoadingUserData: this.props.isLoadingUserData,\n            locale: this.props.locale\n        });\n    }\n    renderLinkedAddIns() {\n        if (this.props.app.linkedAddIns && this.props.app.linkedAddIns.length) {\n            return /*#__PURE__*/ _jsxs(\"div\", {\n                className: \"addInsContainer\",\n                children: [\n                    /*#__PURE__*/ _jsx(\"h2\", {\n                        className: \"addInsHeader\",\n                        children: this.context.loc('Saas_Linking_App_Details_AddIns_Title', 'This SaaS package includes full capability versions of these add-ins:')\n                    }),\n                    /*#__PURE__*/ _jsx(\"div\", {\n                        children: this.props.app.linkedAddIns.map((addIn)=>/*#__PURE__*/ _jsx(InternalLink, {\n                                href: this.context.buildHref(this.getPDProute(), {\n                                    productId: DataMap.products.Office365.UrlKey,\n                                    entityId: addIn.entityId\n                                }, {\n                                    tab: 'Overview'\n                                }),\n                                \"data-bi-id\": \"viewAddIn\",\n                                \"data-bi-area\": Constants.Telemetry.AreaName.AppDetails,\n                                \"data-bi-view\": \"SaaSBundle\",\n                                name: 'LinkedAddIn-' + addIn.type,\n                                children: /*#__PURE__*/ _jsx(\"div\", {\n                                    className: 'addInsIcon ms-BrandIcon--icon48 ms-BrandIcon--' + addIn.type\n                                })\n                            }, addIn.entityId))\n                    })\n                ]\n            });\n        }\n    }\n    renderAlreadyPurchased() {\n        if (this.props.app.ctaTypes && this.props.app.ctaTypes.some((ctaType)=>ctaType === Constants.CTAType.Purchase)) {\n            return /*#__PURE__*/ _jsxs(\"div\", {\n                className: \"alreadyPurchasedContainer\",\n                children: [\n                    /*#__PURE__*/ _jsx(\"div\", {\n                        className: \"alreadyPurchasedLabel\",\n                        children: this.context.locParams('Saas_Linking_App_Details_Already_Title', [\n                            this.props.app.title\n                        ])\n                    }),\n                    /*#__PURE__*/ _jsx(\"button\", {\n                        className: \"alreadyPurchasedButton\",\n                        onClick: ()=>this.showDialog(Constants.CTAType.AlreadyPurchased),\n                        children: this.context.loc('Saas_Linking_App_Details_Already_Button')\n                    })\n                ]\n            });\n        }\n    }\n    renderRatings() {\n        return /*#__PURE__*/ _jsx(AppDetailsHeaderRatingBar, {\n            app: this.props.app\n        });\n    }\n    renderLinkedIn() {\n        const { linkedInProductGroup, locale, billingCountryCode } = this.props;\n        return linkedInProductGroup && /*#__PURE__*/ _jsx(LinkedinProductGroupBar, {\n            linkedInProductGroup: linkedInProductGroup,\n            locale: locale,\n            countryCode: billingCountryCode\n        });\n    }\n    getDetailCellElement(information, headerContent, itemPropName) {\n        const microTaggingItemPropName = itemPropName || '';\n        if (information) {\n            if (microTaggingItemPropName === 'publisher') {\n                return /*#__PURE__*/ _jsxs(\"div\", {\n                    className: \"cell\",\n                    itemProp: microTaggingItemPropName,\n                    itemScope: true,\n                    itemType: \"https://schema.org/Organization\",\n                    children: [\n                        /*#__PURE__*/ _jsx(\"header\", {\n                            role: \"complementary\",\n                            \"aria-label\": headerContent,\n                            children: headerContent\n                        }),\n                        /*#__PURE__*/ _jsx(\"span\", {\n                            itemProp: \"name\",\n                            children: information\n                        })\n                    ]\n                });\n            } else {\n                return /*#__PURE__*/ _jsxs(\"div\", {\n                    className: \"cell\",\n                    itemProp: microTaggingItemPropName,\n                    children: [\n                        /*#__PURE__*/ _jsx(\"h2\", {\n                            role: \"complementary\",\n                            \"aria-label\": headerContent,\n                            children: headerContent\n                        }),\n                        /*#__PURE__*/ _jsx(\"span\", {\n                            children: information\n                        })\n                    ]\n                });\n            }\n        } else {\n            return null;\n        }\n    }\n    // Refactor Candidate: Consider using detailsUtils.getDetailHyperlinkElement\n    getDetailHyperlinkElement(information, id, locString) {\n        if (information) {\n            return /*#__PURE__*/ _jsx(\"a\", {\n                className: \"c-hyperlink\",\n                rel: \"noreferrer\",\n                target: \"_blank\",\n                href: information,\n                title: locString,\n                onClick: ()=>{\n                    DetailUtils.generateLinkPayloadAndLogTelemetry(DetailUtils.OwnerType.App, this.props.app.entityId, id, information, 'Default');\n                },\n                children: locString\n            });\n        } else {\n            return null;\n        }\n    }\n    changeTabCallback(tabTitle) {\n        const newPath = this.getTabHref(tabTitle);\n        urlReplace(newPath);\n    }\n    getPDProute() {\n        return getPDPRoute(this.props.app.appType);\n    }\n    getTabHref(tabTitle) {\n        const productString = getPrimaryProductUrl(this.props.app.primaryProduct);\n        const productData = getProductByUrlKey({\n            urlKey: productString\n        });\n        const product = productData ? productData.UrlKey : productString;\n        return this.context.buildHref(this.getPDProute(), {\n            productId: product,\n            entityId: this.props.app.entityId\n        }, {\n            tab: tabTitle\n        }, true, false, true);\n    }\n    getStartingPriceElement(startingPrice, isDetailed = false) {\n        const { app, billingCountryCode, app: { entityId } } = this.props;\n        if (startingPrice && startingPrice.pricingData && startingPrice.pricingData !== PricingStates.NoPricingData && startingPrice.pricingData !== PricingStates.NotAvailableInThisRegion && startingPrice.pricingData !== PricingStates.AlwaysAvailable && startingPrice.pricingData !== PricingStates.Loading) {\n            const pricingElement = {\n                type: null,\n                label: '',\n                value: '',\n                href: ''\n            };\n            if (startingPrice.pricingData === PricingStates.FreeApp) {\n                pricingElement.type = Constants.ButtonType.Label;\n                pricingElement.label = this.context.loc('Pricing');\n                pricingElement.value = this.context.loc('Pricing_Free');\n            } else if (startingPrice.pricingData === PricingStates.AdditionalPurchasesRequired) {\n                pricingElement.type = Constants.ButtonType.Label;\n                pricingElement.label = this.context.loc('Pricing');\n                pricingElement.value = this.context.loc('AdditionalPurchaseMayBeRequired');\n            } else if (startingPrice.pricingData === PricingStates.StartFromFree) {\n                // Freemium offers with pricing plans\n                pricingElement.type = Constants.ButtonType.Label;\n                pricingElement.label = this.context.loc('Pricing_StartsAt');\n                pricingElement.value = this.context.loc(!this.shouldBlockPricing() && isDetailed ? 'Pricing_StartsFromFree' : 'Pricing_Free');\n            } else if (startingPrice.pricingData === PricingStates.BYOL) {\n                Object.assign(pricingElement, {\n                    type: Constants.ButtonType.Label,\n                    label: this.context.loc('Pricing'),\n                    value: this.context.loc('Bring_Your_Own_License')\n                });\n            } else if (typeof startingPrice.pricingData === 'object') {\n                if (this.canRenderPricing()) {\n                    const isOneTimePayment = isOneTimePaymentOffer(entityId);\n                    pricingElement.href = this.getTabHref(AppDetails.pricingTabName);\n                    pricingElement.type = Constants.ButtonType.Link;\n                    pricingElement.label = this.context.loc('StartingAt');\n                    pricingElement.value = getStartingFromPriceText({\n                        startingPrice,\n                        offerType: app.offerType,\n                        context: this.context,\n                        countryCode: billingCountryCode,\n                        isOneTimePaymentOffer: isOneTimePayment,\n                        locale: this.props.locale\n                    });\n                } else {\n                    pricingElement.type = Constants.ButtonType.Label;\n                    pricingElement.label = this.context.loc('Pricing');\n                    pricingElement.value = getPriceString({\n                        context: this.context,\n                        price: startingPrice.pricingData,\n                        countryCode: this.props.billingCountryCode,\n                        currency: startingPrice.pricingData.currency,\n                        locale: this.props.locale\n                    });\n                }\n            }\n            if (typeof startingPrice.pricingData === 'object' && !this.canRenderPricing()) {\n                if (pricingElement.value) {\n                    pricingElement.value = pricingElement.value + ' ' + this.context.loc('SiteLicenseAlsoAvailable');\n                } else {\n                    pricingElement.type = Constants.ButtonType.Label;\n                    pricingElement.label = this.context.loc('Pricing');\n                    pricingElement.value = this.context.loc('SiteLicenseAlsoAvailable');\n                }\n            }\n            return pricingElement;\n        }\n        return null;\n    }\n    bulidStartingPriceElement({ pricingLinkClassName }) {\n        const { app, isEmbedded } = this.props;\n        const startingPrice = this.shouldBlockPricing() ? null : this.props.startingPrice;\n        const pricingElement = this.getStartingPriceElement(startingPrice);\n        if (pricingElement) {\n            return /*#__PURE__*/ _jsx(\"div\", {\n                className: \"cell\",\n                itemProp: \"offers\",\n                itemScope: true,\n                itemType: \"https://schema.org/Offer\",\n                children: /*#__PURE__*/ _jsxs(\"div\", {\n                    className: \"pricingText\",\n                    children: [\n                        pricingElement && pricingElement.label && pricingElement.type && pricingElement.value && !hidePowerBiVisualPricing({\n                            app,\n                            isEmbedded\n                        }) ? /*#__PURE__*/ _jsx(ButtonLink, {\n                            href: pricingElement.href ? pricingElement.href : '',\n                            className: pricingLinkClassName,\n                            type: pricingElement.type,\n                            accEnabled: true,\n                            label: pricingElement.label,\n                            value: pricingElement.value\n                        }) : null,\n                        startingPrice.pricingData === PricingStates.FreeApp ? /*#__PURE__*/ _jsxs(\"div\", {\n                            children: [\n                                /*#__PURE__*/ _jsx(\"meta\", {\n                                    itemProp: \"price\",\n                                    content: \"0\"\n                                }),\n                                /*#__PURE__*/ _jsx(\"meta\", {\n                                    itemProp: \"priceCurrency\",\n                                    content: \"USD\"\n                                }),\n                                /*#__PURE__*/ _jsx(\"meta\", {\n                                    itemProp: \"category\",\n                                    content: \"free\"\n                                })\n                            ]\n                        }) : typeof startingPrice.pricingData === 'object' ? /*#__PURE__*/ _jsxs(\"div\", {\n                            children: [\n                                /*#__PURE__*/ _jsx(\"meta\", {\n                                    itemProp: \"priceCurrency\",\n                                    content: startingPrice.pricingData.currency\n                                }),\n                                /*#__PURE__*/ _jsx(\"meta\", {\n                                    itemProp: \"price\",\n                                    content: getPriceString({\n                                        context: this.context,\n                                        price: startingPrice.pricingData,\n                                        countryCode: this.props.billingCountryCode,\n                                        currency: startingPrice.pricingData.currency,\n                                        locale: this.props.locale\n                                    }).replace(/[^0-9.]/g, '')\n                                })\n                            ]\n                        }) : null\n                    ]\n                })\n            });\n        }\n        return null;\n    }\n    renderAADWorkAccountMetaData() {\n        const appData = this.props.app;\n        const primaryProduct = appData && appData.primaryProduct;\n        const products = appData && appData.products;\n        const ctaTypes = appData && appData.ctaTypes || [];\n        const shouldRenderAADWorkAccountMetaData = ctaTypes.some((ctaType)=>{\n            return !isAppForMSAAccountOnly(primaryProduct, products, ctaType);\n        });\n        return shouldRenderAADWorkAccountMetaData && 'SignInModal_AccountType2';\n    }\n    buildFilterElements(filteritems) {\n        if (filteritems) {\n            let filterElements = filteritems.map((filter)=>{\n                if (this.props.nationalCloud) {\n                    return /*#__PURE__*/ _jsx(\"div\", {\n                        children: this.context.loc(filter.locKey, filter.title)\n                    }, filter.title);\n                } else {\n                    return /*#__PURE__*/ _jsx(IconLink, {\n                        iconClassName: 'icon-' + filter.urlKey + '-16',\n                        href: filter.newPath,\n                        title: this.context.loc(filter.locKey, filter.title),\n                        onClick: (e)=>{\n                            DetailUtils.generateLinkPayloadAndLogTelemetry(DetailUtils.OwnerType.App, this.props.app.entityId, filter.filterItem, filter.newPath, 'Default');\n                            urlPush(filter.newPath);\n                            window.scrollTo(0, 0);\n                            // The preventDefault prevents the route from transitioning and thus refreshing the page.\n                            e.preventDefault();\n                        },\n                        accEnabled: true,\n                        className: \"c-hyperlink detailsCategories\",\n                        children: /*#__PURE__*/ _jsxs(\"div\", {\n                            className: \"productItem\",\n                            children: [\n                                this.context.loc(filter.locKey, filter.title),\n                                filter.filterItem === Constants.filterMaps.categories ? /*#__PURE__*/ _jsx(\"meta\", {\n                                    itemProp: \"applicationCategory\",\n                                    content: this.context.loc(filter.locKey, filter.title)\n                                }) : null\n                            ]\n                        })\n                    }, filter.title);\n                }\n            });\n            filterElements = filterElements.filter((element)=>!!element);\n            return filterElements;\n        }\n        return null;\n    }\n    /** Returns Plans + Pricing tab if any SKUs have a price, otherwise returns Plans tab */ getPlanAndPricingTabTitle() {\n        var _this_props_app_pricingInformation_skus, _this_props_app_pricingInformation;\n        if (!this.shouldBlockPricing() && ((_this_props_app_pricingInformation = this.props.app.pricingInformation) === null || _this_props_app_pricingInformation === void 0 ? void 0 : (_this_props_app_pricingInformation_skus = _this_props_app_pricingInformation.skus) === null || _this_props_app_pricingInformation_skus === void 0 ? void 0 : _this_props_app_pricingInformation_skus.some((sku)=>!!sku.startingPrice))) {\n            return this.context.loc('Detail_PlansPricingTab');\n        }\n        return this.context.loc('Detail_PlansTab');\n    }\n    renderReviewsTab() {\n        return /*#__PURE__*/ _jsx(AppReviewCollection, {\n            appId: this.props.app.entityId,\n            appData: this.props.app,\n            location: this.props.location,\n            isEmbed: false\n        });\n    }\n    renderOverviewTab() {\n        const { app, billingCountryCode, suggestedItems } = this.props;\n        const { ctaTypes, detailInformation, entityId, offerType, products, shortDescription, tags, title, autoRunLaunchEvents } = app;\n        const isOneTimePayment = isOneTimePaymentOffer(entityId);\n        return /*#__PURE__*/ _jsx(Overview, {\n            isOneTimePayment: isOneTimePayment,\n            ownerType: DetailUtils.OwnerType.App,\n            ownerId: entityId,\n            ownerTitle: title,\n            products: products,\n            shortDescription: shortDescription,\n            description: detailInformation.Description,\n            images: detailInformation.Images,\n            videos: detailInformation.DemoVideos,\n            capabilities: DetailUtils.getDetailArrayItem(app, 'Capabilities'),\n            autoRunLaunchEvents: autoRunLaunchEvents,\n            TileType: AppTile,\n            crossListings: suggestedItems,\n            isPowerBICertified: tags ? this.isPowerBICertifiedApp(tags) : null,\n            isSaaSTransactableApp: offerType === OfferType.SaaSApp ? isTransactApp({\n                isEmbedded: false,\n                ctaTypes,\n                appData: app,\n                billingRegion: billingCountryCode\n            }) ? Constants.JsllSaas.SaasTransactable : Constants.JsllSaas.SaasNonTransactable : ''\n        });\n    }\n    renderLinkedinTab() {\n        const { linkedInProductGroup, app, locale, billingCountryCode, userInfo: { email: userEmail, signedIn: userSignedIn } } = this.props;\n        return /*#__PURE__*/ _jsx(LinkedinProductGroup, {\n            linkedInProductGroup: linkedInProductGroup,\n            offerName: app.title,\n            countryCode: billingCountryCode,\n            locale: locale,\n            userEmail: userSignedIn ? userEmail : null,\n            feedbackScoreRequired: true,\n            parentTabQuery: SELECTED_TAB_QUERY\n        });\n    }\n    getTabChildren() {\n        const tabsChilds = [\n            {\n                title: this.context.loc('PartnerDetail_OverviewTab', 'Overview'),\n                name: Constants.Tabs.Overview,\n                getContent: ()=>this.renderOverviewTab()\n            }\n        ];\n        if (this.canRenderPricing()) {\n            tabsChilds.push({\n                title: this.getPlanAndPricingTabTitle(),\n                name: AppDetails.pricingTabName,\n                getContent: ()=>this.renderPricing()\n            });\n        }\n        const usefulInfo = ()=>this.props.isHydrated && /*#__PURE__*/ _jsx(UsefulInfo, {\n                ownerType: DetailUtils.OwnerType.App,\n                metadata: this.getUsefulInfoMetadata(this.props.app)\n            });\n        const { app: { entityId = '' } } = this.props;\n        const isOneTimePayment = isOneTimePaymentOffer(entityId);\n        if (!isOneTimePayment) {\n            tabsChilds.push({\n                title: this.context.loc('AppDetail_ReviewsTab', 'Ratings + reviews'),\n                name: Constants.Tabs.Reviews,\n                getContent: ()=>this.renderReviewsTab()\n            });\n        }\n        tabsChilds.push({\n            title: this.context.loc('AppDetail_DetilsAndSupportTab', 'Details + support'),\n            name: Constants.Tabs.DetailsAndSupport,\n            getContent: usefulInfo\n        });\n        const { linkedInProductGroup } = this.props;\n        if (linkedInProductGroup) {\n            tabsChilds.push({\n                title: this.context.loc('AppDetail_LinkedinTab', 'LinkedIn community'),\n                name: Constants.Tabs.Linkedin,\n                textBadge: this.context.loc('New', 'New'),\n                getContent: ()=>this.renderLinkedinTab()\n            });\n        }\n        return tabsChilds;\n    }\n    getTabsProps() {\n        const tabsProps = {\n            defaultTab: this.props.defaultTab,\n            ownerType: DetailUtils.OwnerType.App,\n            ownerId: this.props.app.entityId,\n            changeTabCallback: this.changeTabCallback.bind(this),\n            getTabHref: this.getTabHref.bind(this)\n        };\n        return tabsProps;\n    }\n    /**\n   * Returns the link element for either the publisher's terms of use, the standard contract, or the standard contract\n   * with amendments\n   */ // TODO - move to utils\n    getTermsOfUseLinks() {\n        const terms = [\n            {\n                information: this.props.app.licenseTermsUrl,\n                id: 'LicenseAgreement',\n                locString: 'App_LicenseAgreement'\n            }\n        ];\n        if (this.props.app.universalAmendmentUrl) {\n            terms.push({\n                information: this.props.app.universalAmendmentUrl,\n                id: 'App_UniversalAmendment',\n                locString: 'App_UniversalAmendment'\n            });\n        }\n        return terms;\n    }\n    canRenderPricing() {\n        const { app, billingCountryCode } = this.props;\n        return canRenderPricing({\n            app,\n            isEmbedded: false,\n            billingRegion: billingCountryCode\n        });\n    }\n    renderPricing() {\n        const { app, billingCountryCode } = this.props;\n        const { offerType, pricingInformation, futurePricesInformation, licenseManagement, entityId } = app;\n        const billingCountry = getBillingCountryByCountryCode(billingCountryCode);\n        if (offerType === OfferType.SaaSApp) {\n            return /*#__PURE__*/ _jsx(SaasPricingTable, {\n                app: app,\n                billingCountry: billingCountry,\n                shouldBlockPrices: this.shouldBlockPricing(),\n                onGetInNowClicked: this.getItNowTableCallback\n            });\n        }\n        return /*#__PURE__*/ _jsx(SimplePlanPricing, {\n            pricing: pricingInformation,\n            futurePrices: futurePricesInformation,\n            billingCountry: billingCountry,\n            isMicrosoftManaged: licenseManagement === null || licenseManagement === void 0 ? void 0 : licenseManagement.isMicrosoftManaged,\n            shouldBlockPrices: this.shouldBlockPricing(),\n            isOneTimePaymentOffer: isOneTimePaymentOffer(entityId),\n            locale: this.props.locale\n        });\n    }\n    // TODO - move to utils\n    getUsefulInfoMetadata(app) {\n        const { entityId } = this.props;\n        const oneTimePaymentOffer = isOneTimePaymentOffer(entityId);\n        // colomn 1 - Useful Information\n        const usefulInformaionCells = [];\n        const supportCells = [];\n        const moreLinksCells = [];\n        const powerBIVisualCells = [];\n        const metadata = [];\n        // publisher\n        usefulInformaionCells.push({\n            id: 'publisher',\n            title: 'App_Publisher',\n            cellItems: [\n                {\n                    id: 'publisherItem',\n                    type: UsefulInfoMetadataCellItemType.Label,\n                    text: app.publisher\n                }\n            ]\n        });\n        // MicrosoftCertified\n        if (!DetailUtils.hideCertificateBadges()) {\n            if (app.CertificationState === Constants.CertificationType.MicrosoftCertified || app.CertificationState === Constants.CertificationType.SelfAttested) {\n                usefulInformaionCells.push({\n                    id: 'App_Certification',\n                    title: 'App_Certification',\n                    cellItems: [\n                        {\n                            id: 'M365ertificationDetails',\n                            type: UsefulInfoMetadataCellItemType.Link,\n                            text: app.CertificationState === Constants.CertificationType.MicrosoftCertified ? 'App_CertificationLink' : 'App_CertificationLinkSelfAttested',\n                            information: app.CertificationLink,\n                            entityId: app.entityId\n                        }\n                    ]\n                });\n            }\n        }\n        // pricing\n        const isDetailedPricing = true;\n        const pricingObject = this.getStartingPriceElement(this.props.startingPrice, isDetailedPricing);\n        if (pricingObject) {\n            let cell;\n            if (pricingObject.type === Constants.ButtonType.Link) {\n                cell = {\n                    information: pricingObject.href,\n                    id: 'SupportLink',\n                    text: this.context.locParams('StartingAtPrice', [\n                        pricingObject.value\n                    ]),\n                    type: UsefulInfoMetadataCellItemType.Link,\n                    entityId: app.entityId,\n                    props: {\n                        target: '_self',\n                        accEnabled: true\n                    }\n                };\n            } else {\n                cell = {\n                    id: 'AppVersionItem',\n                    type: UsefulInfoMetadataCellItemType.Label,\n                    text: pricingObject.value\n                };\n            }\n            usefulInformaionCells.push({\n                id: 'Pricing',\n                title: 'Pricing',\n                cellItems: [\n                    cell\n                ]\n            });\n        }\n        // aad or microsoft account\n        const AADWorkAccount = this.renderAADWorkAccountMetaData();\n        usefulInformaionCells.push({\n            id: 'Accounts_Supported',\n            title: 'Accounts_Supported',\n            cellItems: [\n                AADWorkAccount && {\n                    id: 'AADWorkAccount',\n                    type: UsefulInfoMetadataCellItemType.Label,\n                    text: AADWorkAccount\n                },\n                isMSASupported(app.products) && {\n                    id: 'MSASupported',\n                    type: UsefulInfoMetadataCellItemType.Label,\n                    text: 'Microsoft_Account'\n                }\n            ]\n        });\n        // app version\n        if (!oneTimePaymentOffer && DetailUtils.getDetailInformation(app, 'AppVersion')) {\n            usefulInformaionCells.push({\n                id: 'AppVersion',\n                title: 'App_Version',\n                cellItems: [\n                    {\n                        id: 'AppVersionItem',\n                        type: UsefulInfoMetadataCellItemType.Label,\n                        text: DetailUtils.getDetailInformation(app, 'AppVersion')\n                    }\n                ]\n            });\n        }\n        // app updated\n        if (DetailUtils.getDetailInformation(app, 'ReleaseDate')) {\n            usefulInformaionCells.push({\n                id: 'ReleaseDate',\n                title: 'App_Updated',\n                cellItems: [\n                    {\n                        id: 'AppReleaseDateItem',\n                        type: UsefulInfoMetadataCellItemType.Label,\n                        text: this.context.locDateString(DetailUtils.getDetailInformation(app, 'ReleaseDate'))\n                    }\n                ]\n            });\n        }\n        if (!oneTimePaymentOffer && this.props.app.products && Object.keys(this.props.app.products).length > 0) {\n            // products\n            const products = this.getProductFilterListElements(Constants.filterMaps.products, Constants.filterTileTypes.product).map((product)=>{\n                return {\n                    id: product.title,\n                    type: UsefulInfoMetadataCellItemType.Filter,\n                    text: product.locKey,\n                    entityId: app.entityId,\n                    filter: product,\n                    isEmbedded: false,\n                    nationalCloud: this.props.nationalCloud\n                };\n            });\n            usefulInformaionCells.push({\n                id: 'FilterType_Products',\n                title: 'FilterType_Products',\n                cellItems: products\n            });\n        }\n        // categories\n        const primaryProductFilter = getProductFilter(app.primaryProduct);\n        const categories = this.getFilterListInfoElements({\n            filterType: Constants.filterTileTypes.category,\n            filterItem: Constants.filterMaps.categories,\n            details: app.categoriesDetails,\n            primaryProductFilter\n        });\n        if (categories === null || categories === void 0 ? void 0 : categories.length) {\n            usefulInformaionCells.push({\n                id: 'Categories',\n                title: 'App_Categories',\n                cellItems: categories\n            });\n        }\n        // industries\n        const industries = this.getFilterListInfoElements({\n            filterType: Constants.filterTileTypes.industry,\n            filterItem: Constants.filterMaps.industries,\n            details: app.industriesDetails\n        });\n        if (industries === null || industries === void 0 ? void 0 : industries.length) {\n            usefulInformaionCells.push({\n                id: 'Industries',\n                title: 'App_Industries',\n                cellItems: industries\n            });\n        }\n        // Work with - Products supported\n        const worksWith = this.getOfficeWorksWithList('WorksWith');\n        if (worksWith && worksWith.length) {\n            const products = worksWith.map((productName)=>{\n                return {\n                    id: 'WorksWith' + productName,\n                    type: UsefulInfoMetadataCellItemType.Label,\n                    text: productName\n                };\n            });\n            if (products.length) {\n                usefulInformaionCells.push({\n                    id: 'WorksWith',\n                    title: 'App_WorksWith',\n                    cellItems: products\n                });\n            }\n        }\n        // ### Support section ###\n        // support\n        if (DetailUtils.getDetailInformation(this.props.app, 'SupportLink') || DetailUtils.getDetailInformation(this.props.app, 'HelpLink')) {\n            const supportitems = [];\n            if (DetailUtils.getDetailInformation(this.props.app, 'SupportLink')) {\n                supportitems.push({\n                    information: DetailUtils.getDetailInformation(this.props.app, 'SupportLink'),\n                    id: 'SupportLink',\n                    text: 'App_Support',\n                    type: UsefulInfoMetadataCellItemType.Link,\n                    entityId: app.entityId\n                });\n            }\n            if (DetailUtils.getDetailInformation(this.props.app, 'HelpLink')) {\n                supportitems.push({\n                    information: DetailUtils.getDetailInformation(this.props.app, 'HelpLink'),\n                    id: 'HelpLink',\n                    text: 'App_Help',\n                    type: UsefulInfoMetadataCellItemType.Link,\n                    entityId: app.entityId\n                });\n            }\n            supportCells.push({\n                id: 'supportLinks',\n                title: null,\n                cellItems: supportitems\n            });\n        }\n        // Legal\n        if (DetailUtils.getDetailInformation(app, 'PrivacyPolicyUrl') || app.licenseTermsUrl) {\n            const cells = [\n                ...this.getTermsOfUseLinks().map((link)=>{\n                    return {\n                        information: link.information,\n                        id: link.id,\n                        text: link.locString,\n                        type: UsefulInfoMetadataCellItemType.Link,\n                        entityId: app.entityId\n                    };\n                }),\n                {\n                    information: DetailUtils.getDetailInformation(this.props.app, 'PrivacyPolicyUrl'),\n                    id: 'PrivacyPolicyUrl',\n                    text: 'App_PrivacyPolicy',\n                    type: UsefulInfoMetadataCellItemType.Link,\n                    entityId: app.entityId\n                }\n            ];\n            usefulInformaionCells.push({\n                id: 'App_Legal',\n                title: 'App_Legal',\n                cellItems: cells\n            });\n        }\n        // more links\n        const documents = this.props.app.detailInformation.CollateralDocuments;\n        if (documents && documents.length > 0) {\n            const documentsCells = documents.map((doc)=>{\n                return {\n                    information: doc.DocumentUri,\n                    id: 'LearnMore',\n                    text: getWorkBreakEnabledString(doc.DocumentName),\n                    type: UsefulInfoMetadataCellItemType.Link,\n                    entityId: app.entityId\n                };\n            });\n            moreLinksCells.push({\n                id: 'App_LearnMoreTitle',\n                title: '',\n                cellItems: documentsCells\n            });\n        }\n        // ### Power BI Visual Instructions\n        if (isPowerBIVisualsApp(this.props.app) && isMigratedPowerBIVisual(this.props.app)) {\n            const cells = [\n                {\n                    id: 'PowerBIVisual_Instructions',\n                    type: UsefulInfoMetadataCellItemType.Label,\n                    text: 'PowerBIVisual_DetailsAndSupport_Text'\n                },\n                {\n                    type: UsefulInfoMetadataCellItemType.InternalLink,\n                    information: '',\n                    text: 'PowerBIVisual_Instructions',\n                    onClick: ()=>this.openInstructionsModal()\n                }\n            ];\n            powerBIVisualCells.push({\n                id: 'PowerBIVisual_Instructions',\n                title: '',\n                cellItems: cells\n            });\n        }\n        // create root metadata item\n        if (usefulInformaionCells.length) {\n            metadata.push({\n                id: 'UsefulInformationDetails',\n                title: 'AppDetail_UsefulInformaionDetails',\n                titleFallback: 'Details',\n                cells: usefulInformaionCells\n            });\n        }\n        if (supportCells.length) {\n            metadata.push({\n                id: 'Support',\n                title: 'AppDetail_Support',\n                cells: supportCells\n            });\n        }\n        if (moreLinksCells.length) {\n            metadata.push({\n                id: 'App_Links',\n                title: 'App_Links',\n                titleFallback: 'Links',\n                cells: moreLinksCells\n            });\n        }\n        if (powerBIVisualCells.length) {\n            metadata.push({\n                id: 'PowerBIVisual_DetailsAndSupport',\n                title: this.context.loc('PowerBIVisual_DetailsAndSupport_Title'),\n                cells: powerBIVisualCells\n            });\n        }\n        return metadata;\n    }\n    renderStickyCard(tabsProps, tabsChilds) {\n        return /*#__PURE__*/ _jsx(\"div\", {\n            ref: this.stickyCardRef,\n            children: /*#__PURE__*/ _jsxs(StickyCard, {\n                title: this.props.app.title,\n                logoURL: this.props.app.iconURL ? this.props.app.iconURL : '',\n                tabsProps: tabsProps,\n                tabsChilds: tabsChilds,\n                children: [\n                    /*#__PURE__*/ _jsx(\"div\", {\n                        className: \"stickyCardPricing\",\n                        children: this.bulidStartingPriceElement({\n                            pricingLinkClassName: 'light'\n                        })\n                    }),\n                    /*#__PURE__*/ _jsx(\"div\", {\n                        className: \"stickyCardButton\",\n                        children: this.getCTAElement()\n                    }),\n                    /*#__PURE__*/ _jsx(\"div\", {\n                        className: \"stickyCardFavourite\",\n                        children: this.getUserFavouriteButton()\n                    })\n                ]\n            })\n        });\n    }\n    getChildContext() {\n        return {\n            getAppDetailsStickyCardHeight: ()=>{\n                var _this_stickyCardRef_current, _this_stickyCardRef;\n                return (_this_stickyCardRef = this.stickyCardRef) === null || _this_stickyCardRef === void 0 ? void 0 : (_this_stickyCardRef_current = _this_stickyCardRef.current) === null || _this_stickyCardRef_current === void 0 ? void 0 : _this_stickyCardRef_current.clientHeight;\n            }\n        };\n    }\n    handleScroll() {\n        const curWindow = getWindow();\n        const isPageScrolled = StickyCard.handleScroll(curWindow, AppDetails.pdpTabsId);\n        if (this.state.isPageScrolled !== isPageScrolled) {\n            this.setState({\n                isPageScrolled\n            });\n        }\n    }\n    renderTabContent(tabChild) {\n        const { app, billingCountryCode } = this.props;\n        return /*#__PURE__*/ _jsxs(Stack, {\n            className: contentStyles.tabsContainer,\n            children: [\n                /*#__PURE__*/ _jsx(Stack.Item, {\n                    grow: true,\n                    className: classNames({\n                        [contentStyles.autoScrollTabContent]: tabChild.name === Constants.Tabs.PlansAndPrice\n                    }),\n                    children: tabChild.getContent()\n                }),\n                DetailUtils.shouldShowUserTerms({\n                    app,\n                    billingCountryCode\n                }) && this.props.isHydrated && tabChild.name !== Constants.Tabs.Reviews && /*#__PURE__*/ _jsx(Stack.Item, {\n                    tokens: consentDisclaimerTokens,\n                    className: contentStyles.userTermsContainer,\n                    children: /*#__PURE__*/ _jsx(UserTerms, {\n                        app: app\n                    })\n                })\n            ]\n        });\n    }\n    renderImpl() {\n        const { uiRole, entityId, userInfo, app } = this.props;\n        const isOneTimePayment = isOneTimePaymentOffer(entityId);\n        if (this.props.app) {\n            const tabsProps = this.getTabsProps();\n            const tabsChilds = this.getTabChildren();\n            return /*#__PURE__*/ _jsx(\"div\", {\n                className: \"ASdesktopAppDetails\",\n                itemScope: true,\n                itemType: \"https://schema.org/SoftwareApplication\",\n                role: \"main\",\n                children: /*#__PURE__*/ _jsxs(\"div\", {\n                    className: \"spza_detailContainer spza_partnerDetailContainer\",\n                    children: [\n                        this.state.isPageScrolled ? this.renderStickyCard(tabsProps, tabsChilds) : null,\n                        /*#__PURE__*/ _jsxs(\"div\", {\n                            className: contentStyles.pdpDetailsContainer,\n                            children: [\n                                this.getBreadcrumbElement(),\n                                /*#__PURE__*/ _jsx(\"div\", {\n                                    className: \"detailContent\",\n                                    children: /*#__PURE__*/ _jsxs(\"div\", {\n                                        className: \"deatilPageContent\",\n                                        children: [\n                                            /*#__PURE__*/ _jsxs(Card, {\n                                                title: this.props.app.title,\n                                                subtitle: this.context.locParams('By_Publisher', [\n                                                    this.props.app.publisher\n                                                ]),\n                                                logoURL: DetailUtils.getDetailInformation(this.props.app, 'LargeIconUri'),\n                                                children: [\n                                                    this.props.isHydrated && !isOneTimePayment && this.props.app.products != null ? this.buildFilterElements(this.getProductFilterListElements(Constants.filterMaps.products, Constants.filterTileTypes.product)) : null,\n                                                    /*#__PURE__*/ _jsxs(Stack, {\n                                                        className: contentStyles.bagdeContainer,\n                                                        tokens: {\n                                                            childrenGap: 5\n                                                        },\n                                                        wrap: true,\n                                                        horizontal: true,\n                                                        children: [\n                                                            isPrivateOffer(this.props.app.appType) && this.renderBadge(Constants.BadgeType.PrivateOffer),\n                                                            this.isFreeTrial() && this.renderBadge(Constants.BadgeType.FreeTrial),\n                                                            this.isMicrosoftCertified() && this.renderBadge(Constants.BadgeType.MicrosoftCertified),\n                                                            isCertifiedSoftware(app) && this.renderBadge(Constants.BadgeType.CertifiedSoftware),\n                                                            this.props.app.isSolutionMap && this.renderBadge(Constants.BadgeType.SolutionMap),\n                                                            this.hasOfficeAwards() && this.renderBadge(Constants.BadgeType.OfficeAwards),\n                                                            this.isPBICertified() && this.renderBadge(Constants.BadgeType.PBICertified),\n                                                            this.isMSPApp() && this.renderBadge(Constants.BadgeType.AzureExpertsMSP),\n                                                            app.AzureBenefitEligible && this.renderBadge(Constants.BadgeType.AzureBenefitEligible)\n                                                        ]\n                                                    }),\n                                                    this.renderRatings(),\n                                                    this.renderLinkedIn(),\n                                                    /*#__PURE__*/ _jsxs(\"div\", {\n                                                        className: \"container\",\n                                                        children: [\n                                                            this.props.isHydrated && this.bulidStartingPriceElement({\n                                                                pricingLinkClassName: 'dark'\n                                                            }),\n                                                            this.getCTAElement(),\n                                                            isPowerBIVisualsApp(this.props.app) && isMigratedPowerBIVisual(this.props.app) && this.getDownloadSampleButton(),\n                                                            isPowerBIVisualsApp(this.props.app) && isMigratedPowerBIVisual(this.props.app) && this.getInstructionsButton(),\n                                                            this.getUserFavouriteButton()\n                                                        ]\n                                                    }),\n                                                    /*#__PURE__*/ _jsx(MicrosoftManagedIndicatorWrapper, {\n                                                        app: this.props.app,\n                                                        isAvailableInRegion: isAvailableInThisRegion(this.props),\n                                                        uiRole: uiRole,\n                                                        renderIndicator: this.getMicrosoftManagedIndicator.bind(this)\n                                                    }),\n                                                    !isAvailableInThisRegion(this.props) && this.getNotAvailableInRegionText()\n                                                ]\n                                            }),\n                                            this.props.isHydrated && /*#__PURE__*/ _jsx(_Fragment, {\n                                                children: this.renderLinkedItems(this.props.app, this.props.nationalCloud)\n                                            }),\n                                            !this.props.app.detailInformation ? null : /*#__PURE__*/ _jsx(\"div\", {\n                                                id: AppDetails.pdpTabsId,\n                                                className: AppDetails.pdpTabsClass,\n                                                children: /*#__PURE__*/ _jsx(Tabs, {\n                                                    defaultTab: tabsProps.defaultTab,\n                                                    ownerType: tabsProps.ownerType,\n                                                    ownerId: tabsProps.ownerId,\n                                                    changeTabCallback: tabsProps.changeTabCallback,\n                                                    getTabHref: tabsProps.getTabHref,\n                                                    children: tabsChilds.map((tabChild)=>/*#__PURE__*/ _jsx(Tab, {\n                                                            title: tabChild.title,\n                                                            name: tabChild.name,\n                                                            textBadge: tabChild.textBadge,\n                                                            children: this.renderTabContent(tabChild)\n                                                        }, tabChild.name))\n                                                })\n                                            })\n                                        ]\n                                    })\n                                })\n                            ]\n                        })\n                    ]\n                })\n            });\n        }\n        if (!userInfo.privateOffers.loading && !userInfo.privateOffers.dataList.find((offer)=>offer.entityId === entityId)) {\n            return this.renderEmptyPrivatePage();\n        } else {\n            // there is no app\n            return /*#__PURE__*/ _jsx(Spinner, {\n                className: \"nullAppContainer\",\n                children: this.context.loc('AppDetail_LoadingText', 'Loading...')\n            });\n        }\n    }\n    constructor(props, context){\n        super(props, context), _define_property(this, \"stickyCardRef\", null), _define_property(this, \"instrument\", void 0), _define_property(this, \"context\", void 0), _define_property(this, \"getFilterListInfoElements\", ({ filterType, filterItem, details, primaryProductFilter })=>{\n            const { app } = this.props;\n            return details === null || details === void 0 ? void 0 : details.map(({ urlKey, longTitle, locKey })=>{\n                const pathParams = {\n                    [filterType]: urlKey,\n                    product: primaryProductFilter === null || primaryProductFilter === void 0 ? void 0 : primaryProductFilter.UrlKey\n                };\n                const newPath = this.context.buildHref(routes.marketplace, null, pathParams);\n                const filter = {\n                    filterItem,\n                    locKey,\n                    newPath,\n                    title: longTitle,\n                    urlKey\n                };\n                return {\n                    id: filter.title,\n                    type: UsefulInfoMetadataCellItemType.Filter,\n                    text: filter.locKey,\n                    entityId: app.entityId,\n                    filter,\n                    isEmbedded: false,\n                    nationalCloud: this.props.nationalCloud\n                };\n            });\n        }), _define_property(this, \"openInstructionsModal\", ()=>{\n            if (this.props.app.downloadLink) {\n                this.props.openInstructionsModal();\n            }\n        }), _define_property(this, \"getItNowTableCallback\", (planId)=>{\n            const { app, ribbonKey, setCheckoutSourcePDP } = this.props;\n            setCheckoutSourcePDP({\n                source: CheckoutSource.PdpTable\n            });\n            this.context.ctaCallback({\n                entity: app,\n                entityType: Constants.EntityType.App,\n                ctaType: app.ctaTypes[0],\n                skuId: null,\n                actionModifier: Constants.Telemetry.ActionModifier.AppDetailCTAButtonFromTable,\n                tileDataRequestId: null,\n                hasLicense: this.props.doesTenantHasLicenseForApp,\n                planId,\n                ribbonKey\n            });\n        });\n        this.instrument = SpzaInstrumentService.getProvider();\n        this.stickyCardRef = /*#__PURE__*/ React.createRef();\n        this.state = {\n            isPageScrolled: false,\n            pageLoadLogged: false\n        };\n    }\n}\n_define_property(AppDetails, \"pricingTabName\", 'PlansAndPrice');\n_define_property(AppDetails, \"pdpTabsId\", 'pdpTabs');\n_define_property(AppDetails, \"pdpTabsClass\", 'pdpTabs');\nAppDetails.childContextTypes = {\n    getAppDetailsStickyCardHeight: PropTypes.func\n};\nAppDetails.contextTypes = {\n    loc: PropTypes.func,\n    locDateString: PropTypes.func,\n    locParams: PropTypes.func,\n    buildHref: PropTypes.func,\n    ctaCallback: PropTypes.func,\n    contactCallback: PropTypes.func,\n    renderErrorModal: PropTypes.func,\n    openTileCallback: PropTypes.func\n};\n","export const Capabilities = {\n    Capability1: [\n        'CP_Office1',\n        'CP_Office2'\n    ],\n    Capability2: [\n        'CP_Office3',\n        'CP_Office2'\n    ],\n    Capability3: [\n        'CP_Office4',\n        'CP_Office2'\n    ],\n    Capability4: [],\n    Capability5: [\n        'CP_Office2',\n        'CP_Office5'\n    ],\n    Capability6: [\n        'CP_Office2',\n        'CP_Office6'\n    ],\n    Capability7: [\n        'CP_Office2',\n        'CP_Office7'\n    ],\n    Capability8: [],\n    Capability9: [],\n    Capability10: [\n        'CP_Office2',\n        'CP_Office8'\n    ],\n    Capability11: [\n        'CP_Office9',\n        'CP_Office2'\n    ],\n    Capability14: [\n        'CP_Office10'\n    ]\n};\n","export const AutoRuns = {\n    OnNewMessageCompose: {\n        loc: 'AutoRun_OnNewMessageCompose',\n        fallback: 'The user composes a new mail.'\n    },\n    OnNewAppointmentOrganizer: {\n        loc: 'AutoRun_OnNewAppointmentOrganizer',\n        fallback: 'The user creates a new event.'\n    },\n    OnMessageAttachmentsChanged: {\n        loc: 'AutoRun_OnMessageAttachmentsChanged',\n        fallback: 'The user adds or removes attachments from an email.'\n    },\n    OnAppointmentAttachmentsChanged: {\n        loc: 'AutoRun_OnAppointmentAttachmentsChanged',\n        fallback: 'The user adds or removes attachments from an event.'\n    },\n    OnMessageRecipientsChanged: {\n        loc: 'AutoRun_OnMessageRecipientsChanged',\n        fallback: 'The user adds or removes recipients from an email.'\n    },\n    OnAppointmentAttendeesChanged: {\n        loc: 'AutoRun_OnAppointmentAttendeesChanged',\n        fallback: 'The user adds or removes attendees from an event.'\n    },\n    OnAppointmentTimeChanged: {\n        loc: 'AutoRun_OnAppointmentTimeChanged',\n        fallback: 'The user changes the date or time of an event.'\n    },\n    OnAppointmentRecurrenceChanged: {\n        loc: 'AutoRun_OnAppointmentRecurrenceChanged',\n        fallback: 'The user changes the recurrence of an event.'\n    },\n    OnInfoBarDismissClicked: {\n        loc: 'AutoRun_OnInfoBarDismissClicked',\n        fallback: 'The user dismisses a notification while composing an email or creating an event.'\n    },\n    OnMessageSend: {\n        loc: 'AutoRun_OnMessageSend',\n        fallback: 'The user sends an email.'\n    },\n    OnAppointmentSend: {\n        loc: 'AutoRun_OnAppointmentSend',\n        fallback: 'The user sends an event invite.'\n    }\n};\n","/* eslint-disable react/no-danger */ function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nfunction _object_spread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        var ownKeys = Object.keys(source);\n        if (typeof Object.getOwnPropertySymbols === \"function\") {\n            ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n            }));\n        }\n        ownKeys.forEach(function(key) {\n            _define_property(target, key, source[key]);\n        });\n    }\n    return target;\n}\nfunction ownKeys(object, enumerableOnly) {\n    var keys = Object.keys(object);\n    if (Object.getOwnPropertySymbols) {\n        var symbols = Object.getOwnPropertySymbols(object);\n        if (enumerableOnly) {\n            symbols = symbols.filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n            });\n        }\n        keys.push.apply(keys, symbols);\n    }\n    return keys;\n}\nfunction _object_spread_props(target, source) {\n    source = source != null ? source : {};\n    if (Object.getOwnPropertyDescriptors) {\n        Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n        ownKeys(Object(source)).forEach(function(key) {\n            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n    }\n    return target;\n}\nimport { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from \"react/jsx-runtime\";\nimport { createElement as _createElement } from \"react\";\nimport * as React from 'react';\nimport { Text, mergeStyleSets } from '@fluentui/react';\nimport * as PropTypes from 'prop-types';\nimport { ServiceTile } from '@shared/containers/serviceTile';\nimport SpzaComponent from '@shared/components/spzaComponent';\nimport { MediaType } from '@shared/Models';\nimport { Constants } from '@shared/utils/constants';\nimport { Capabilities } from '@shared/utils/capabilities';\nimport * as DetailUtils from '@shared/utils/detailUtils';\nimport Ribbon from '@shared/components/ribbon';\nimport { TelemetryImage } from '@shared/components/telemetryImage';\nimport { AppTile } from '@shared/containers/appTile';\nimport { DataMap } from '@shared/utils/dataMapping';\nimport { ExternalLink } from '@shared/components/externalLink';\nimport { bitMasksMatch } from '@shared/utils/datamappingHelpers';\nimport { useTelemetry } from '@shared/hooks/useTelemetry';\nimport videoOverlay from '@shared/images/videoOverlay.png';\nimport classnames from 'classnames';\nimport { AutoRuns } from '@shared/utils/autoruns';\nimport { getProdcutBitMaskInfo } from '@shared/utils/appUtils';\nimport { SafeHtmlWrapper } from '@shared/components/safeHtmlWrapper';\n// eslint-disable-next-line react-hooks/rules-of-hooks\nconst [{ pageAction }] = useTelemetry();\nconst contentStyles = mergeStyleSets({\n    ulAutorunStyle: {\n        'list-style': 'unset',\n        'padding-left': 40,\n        'margin-top': 8\n    },\n    autorunTitleStyle: {\n        'margin-top': 8\n    },\n    ilTextAutorunStyle: {\n        'font-size': 13\n    }\n});\nexport class Overview extends SpzaComponent {\n    getMedia() {\n        const images = this.props.images || [];\n        const videos = this.props.videos || [];\n        const mediaImages = images.map((image)=>({\n                name: image.ImageName,\n                link: image.ImageUri,\n                thumbnail: image.ImageUri,\n                type: MediaType.Image\n            }));\n        const mediaVideos = videos.map((video)=>({\n                name: video.VideoName,\n                link: video.VideoLink,\n                thumbnail: video.ThumbnailURL,\n                type: MediaType.Video\n            }));\n        return [\n            ...mediaVideos,\n            ...mediaImages\n        ];\n    }\n    mediaRendering() {\n        const mediaRender = [];\n        const list = this.getMedia();\n        if (!list.length) {\n            return null;\n        }\n        for(let i = 0; i < list.length; i++){\n            const item = list[`${i}`];\n            if (!this.state.failures[item.thumbnail]) {\n                const isVideo = item.type === MediaType.Video;\n                mediaRender.push(/*#__PURE__*/ _jsxs(\"div\", {\n                    className: \"imgContent\",\n                    tabIndex: 0,\n                    onKeyPress: (event)=>{\n                        if (event.charCode === Constants.SystemKey.Enter) {\n                            this.onMediaItemSelect(item, i, list);\n                        }\n                    },\n                    onClick: ()=>this.onMediaItemSelect(item, i, list),\n                    children: [\n                        /*#__PURE__*/ _jsx(TelemetryImage, {\n                            src: item.thumbnail,\n                            isVideo: true,\n                            alt: `Snapshot ${i + 1} of ${this.props.ownerTitle}`,\n                            ariaLabel: `At a glance ${isVideo ? 'video' : 'image'}`,\n                            onError: ()=>{\n                                this.setState({\n                                    failures: _object_spread_props(_object_spread({}, this.state.failures), {\n                                        [item.thumbnail]: true\n                                    })\n                                });\n                            }\n                        }),\n                        isVideo ? /*#__PURE__*/ _jsx(TelemetryImage, {\n                            className: \"overlay\",\n                            src: videoOverlay,\n                            alt: \"detail page video overlay image\"\n                        }) : null\n                    ]\n                }, i));\n            }\n        }\n        if (!mediaRender.length) {\n            return null;\n        }\n        return /*#__PURE__*/ _jsxs(\"div\", {\n            className: \"appDetailMedia\",\n            children: [\n                /*#__PURE__*/ _jsx(\"h3\", {\n                    className: \"thumnailsTitle\",\n                    children: this.context.loc('Overview_Thumbnails')\n                }),\n                /*#__PURE__*/ _jsx(\"div\", {\n                    className: \"thumbnails\",\n                    children: mediaRender\n                })\n            ]\n        });\n    }\n    isPowerBiVisual() {\n        const { property, mask } = getProdcutBitMaskInfo(DataMap.products.PowerBICustomVisual);\n        return !!(this.props.products && bitMasksMatch(this.props.products, property, mask));\n    }\n    createDisclaimer() {\n        if (!this.isPowerBiVisual()) {\n            return /*#__PURE__*/ _jsx(\"div\", {\n                children: this.context.loc('CP_Disclaimer')\n            });\n        }\n        if (this.isPowerBiVisual() && !this.props.isPowerBICertified) {\n            return /*#__PURE__*/ _jsx(\"div\", {\n                children: this.context.loc('CP_Disclaimer_PowerBI')\n            });\n        }\n        return /*#__PURE__*/ _jsxs(_Fragment, {\n            children: [\n                /*#__PURE__*/ _jsx(\"div\", {\n                    children: this.context.loc('CP_Disclaimer_Certified_PowerBI')\n                }),\n                /*#__PURE__*/ _jsx(\"div\", {\n                    children: /*#__PURE__*/ _jsx(ExternalLink, {\n                        className: \"c-hyperlink\",\n                        href: Constants.learnMoreCertifiedPBI,\n                        accessibilityEnabled: true,\n                        children: /*#__PURE__*/ _jsxs(\"span\", {\n                            children: [\n                                this.context.loc('PBI_LearnMore'),\n                                \".\"\n                            ]\n                        })\n                    })\n                })\n            ]\n        });\n    }\n    capabilitiesRendering() {\n        const capabilitiesPane = [];\n        if (this.isPowerBiVisual() && this.props.isPowerBICertified) {\n            return null;\n        }\n        if (this.isPowerBiVisual()) {\n            return /*#__PURE__*/ _jsx(\"ul\", {\n                className: \"capabilitiesList\",\n                children: /*#__PURE__*/ _jsx(\"li\", {\n                    className: \"capabilitiesListItem\",\n                    children: this.context.loc('CP_10')\n                }, 0)\n            });\n        }\n        for(let i = 0; i < this.props.capabilities.length; i++){\n            const capability = this.props.capabilities[`${i}`];\n            const subCapabilities = Capabilities[`${capability}`];\n            const subCapabilitiesCount = subCapabilities && subCapabilities.length ? subCapabilities.length : 0;\n            for(let j = 0; j < subCapabilitiesCount; j++){\n                capabilitiesPane.push(/*#__PURE__*/ _jsx(\"li\", {\n                    className: \"capabilitiesListItem\",\n                    children: this.context.loc(subCapabilities[`${j}`])\n                }, j));\n            }\n        }\n        return capabilitiesPane.length ? /*#__PURE__*/ _jsx(\"ul\", {\n            className: \"capabilitiesList\",\n            children: capabilitiesPane\n        }) : null;\n    }\n    autorunRendering() {\n        const { autoRunLaunchEvents } = this.props;\n        const autorunsPane = autoRunLaunchEvents.filter((autorun)=>AutoRuns[`${autorun}`]).map((autorun)=>{\n            const autorunInfo = AutoRuns[`${autorun}`];\n            return /*#__PURE__*/ _jsx(\"li\", {\n                children: /*#__PURE__*/ _jsx(Text, {\n                    className: contentStyles.ilTextAutorunStyle,\n                    children: this.context.loc(autorunInfo.loc, autorunInfo.fallback)\n                })\n            }, autorun);\n        });\n        return (autorunsPane === null || autorunsPane === void 0 ? void 0 : autorunsPane.length) ? /*#__PURE__*/ _jsxs(\"div\", {\n            className: contentStyles.autorunTitleStyle,\n            children: [\n                /*#__PURE__*/ _jsx(Text, {\n                    variant: \"smallPlus\",\n                    children: this.context.loc('Autorun_Title', 'This add-in can launch itself when:')\n                }),\n                /*#__PURE__*/ _jsx(\"ul\", {\n                    className: contentStyles.ulAutorunStyle,\n                    children: autorunsPane\n                })\n            ]\n        }) : null;\n    }\n    showMediaDialog(index, list) {\n        DetailUtils.generateLinkPayloadAndLogTelemetry(this.props.ownerType, this.props.ownerId, 'OpenMediaModal', '', 'Overview');\n        const jsllMediaType = list[`${index}`] ? list[`${index}`].type === MediaType.Image ? Constants.JsllSaas.ViewImage : Constants.JsllSaas.WatchVideo : '';\n        pageAction(document.getElementById(this.props.ownerId), {\n            contentTags: {\n                contentId: jsllMediaType,\n                contentName: this.props.ownerId,\n                contentType: this.props.isSaaSTransactableApp\n            }\n        });\n        this.props.openMediaModal({\n            defaultIndex: index,\n            media: list\n        });\n    }\n    onMediaItemSelect(selected, index, list) {\n        DetailUtils.generateLinkPayloadAndLogTelemetry(this.props.ownerType, this.props.ownerId, `Select${selected.type}`, // eslint-disable-next-line security/detect-non-literal-fs-filename\n        selected.link, 'Overview');\n        this.showMediaDialog(index, list);\n    }\n    renderDescription() {\n        return /*#__PURE__*/ _jsx(SafeHtmlWrapper, {\n            className: \"description\",\n            html: this.props.description\n        });\n    }\n    renderShortDescription() {\n        return /*#__PURE__*/ _jsx(Text, {\n            as: 'h2',\n            className: this.props.description ? 'shortDescription' : 'description',\n            children: /*#__PURE__*/ _jsx(\"div\", {\n                dangerouslySetInnerHTML: {\n                    __html: this.props.shortDescription\n                }\n            })\n        });\n    }\n    renderImpl() {\n        var _this_props_autoRunLaunchEvents, _this_props_autoRunLaunchEvents1;\n        const { TileType, crossListings } = this.props;\n        const localizationTexts = [];\n        let ribbonUrl = 'openTab';\n        let ribbonSeeAllText = this.context.loc('Link_SeeAll', 'See all');\n        let ribbonTitleParam = '';\n        let ribbonKey = '';\n        if (TileType === AppTile || TileType === ServiceTile) {\n            var _crossListings_;\n            const localizedTitleKey = this.getLocalizationKey(TileType);\n            localizationTexts.push(localizedTitleKey);\n            localizationTexts.push('');\n            localizationTexts.push('');\n            ribbonSeeAllText = '';\n            ribbonUrl = null;\n            ribbonTitleParam = (crossListings === null || crossListings === void 0 ? void 0 : (_crossListings_ = crossListings[0]) === null || _crossListings_ === void 0 ? void 0 : _crossListings_.publisher) || '';\n            ribbonKey = `${localizedTitleKey} ${ribbonTitleParam}`;\n        }\n        const appDetailContentMaxWidthClasses = classnames({\n            appDetailContent: true\n        });\n        return /*#__PURE__*/ _jsxs(\"div\", {\n            className: \"overview overviewContent\",\n            children: [\n                /*#__PURE__*/ _jsxs(\"div\", {\n                    className: \"detailsContentWrapper\",\n                    children: [\n                        /*#__PURE__*/ _jsxs(\"div\", {\n                            className: appDetailContentMaxWidthClasses,\n                            children: [\n                                /*#__PURE__*/ _jsxs(\"div\", {\n                                    children: [\n                                        this.renderShortDescription(),\n                                        this.renderDescription()\n                                    ]\n                                }),\n                                this.props.capabilities || ((_this_props_autoRunLaunchEvents = this.props.autoRunLaunchEvents) === null || _this_props_autoRunLaunchEvents === void 0 ? void 0 : _this_props_autoRunLaunchEvents.length) ? /*#__PURE__*/ _jsxs(\"div\", {\n                                    className: \"capabilities\",\n                                    children: [\n                                        /*#__PURE__*/ _jsx(\"h3\", {\n                                            className: \"c-heading-6 capabilitiesTitle\",\n                                            children: this.context.loc(this.isPowerBiVisual() ? 'CP_Title_PowerBI' : 'CP_Title')\n                                        }),\n                                        this.props.capabilities && /*#__PURE__*/ _jsxs(_Fragment, {\n                                            children: [\n                                                /*#__PURE__*/ _jsx(\"div\", {\n                                                    className: \"disclaimer\",\n                                                    children: this.createDisclaimer()\n                                                }),\n                                                this.capabilitiesRendering()\n                                            ]\n                                        }),\n                                        !!((_this_props_autoRunLaunchEvents1 = this.props.autoRunLaunchEvents) === null || _this_props_autoRunLaunchEvents1 === void 0 ? void 0 : _this_props_autoRunLaunchEvents1.length) && /*#__PURE__*/ _jsx(_Fragment, {\n                                            children: this.autorunRendering()\n                                        })\n                                    ]\n                                }) : null\n                            ]\n                        }),\n                        this.mediaRendering()\n                    ]\n                }),\n                (crossListings === null || crossListings === void 0 ? void 0 : crossListings.length) ? /*#__PURE__*/ _jsx(Ribbon, {\n                    title: this.context.locParams(localizationTexts[0], [\n                        ribbonTitleParam\n                    ], localizationTexts[1]),\n                    seeMoreUrl: ribbonUrl,\n                    seeMoreText: ribbonSeeAllText,\n                    subHeader: this.context.locParams(localizationTexts[2], [\n                        this.props.ownerTitle\n                    ], localizationTexts[3]),\n                    children: crossListings.slice(0, Constants.crossListingRibbonItemCount).map((value, index, tiles)=>{\n                        return /*#__PURE__*/ _createElement(this.props.TileType, _object_spread_props(_object_spread({}, value), {\n                            item: value,\n                            key: index,\n                            customCSSClass: 'tile' + index,\n                            totalTiles: tiles.length,\n                            countryContext: this.props.countryCode,\n                            ribbonKey: ribbonKey\n                        }));\n                    })\n                }) : null\n            ]\n        });\n    }\n    constructor(props, context){\n        super(props, context), _define_property(this, \"context\", void 0), _define_property(this, \"getLocalizationKey\", (tileType)=>{\n            const { isOneTimePayment } = this.props;\n            if (tileType === AppTile) {\n                return isOneTimePayment ? 'AppDetails_RibbonHeader_TeamOneTimePayment' : 'AppDetails_RibbonHeader';\n            }\n            if (tileType === ServiceTile) {\n                return 'ServiceDetails_RibbonHeader';\n            }\n            return ''; // Shouldn't reach this case.\n        });\n        this.state = {\n            failures: {}\n        };\n    }\n}\nOverview.contextTypes = {\n    loc: PropTypes.func,\n    locParams: PropTypes.func,\n    renderErrorModal: PropTypes.func\n};\n","import { connect } from 'react-redux';\nimport { Overview as OverviewComponent } from '../components/overview';\nimport { createMediaModalAction } from '@shared/actions/actions';\nexport const mapStateToProps = (state, ownProps)=>{\n    return ownProps;\n};\nexport const mapDispatchToProps = (dispatch)=>{\n    return {\n        openMediaModal: (payload)=>{\n            dispatch(createMediaModalAction({\n                showModal: true,\n                payload\n            }));\n        }\n    };\n};\nconst Overview = connect(mapStateToProps, mapDispatchToProps)(OverviewComponent);\nexport default Overview;\n","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n    try {\n        var info = gen[key](arg);\n        var value = info.value;\n    } catch (error) {\n        reject(error);\n        return;\n    }\n    if (info.done) {\n        resolve(value);\n    } else {\n        Promise.resolve(value).then(_next, _throw);\n    }\n}\nfunction _async_to_generator(fn) {\n    return function() {\n        var self = this, args = arguments;\n        return new Promise(function(resolve, reject) {\n            var gen = fn.apply(self, args);\n            function _next(value) {\n                asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n            }\n            function _throw(err) {\n                asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n            }\n            _next(undefined);\n        });\n    };\n}\nfunction _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nfunction _object_spread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        var ownKeys = Object.keys(source);\n        if (typeof Object.getOwnPropertySymbols === \"function\") {\n            ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n            }));\n        }\n        ownKeys.forEach(function(key) {\n            _define_property(target, key, source[key]);\n        });\n    }\n    return target;\n}\nfunction ownKeys(object, enumerableOnly) {\n    var keys = Object.keys(object);\n    if (Object.getOwnPropertySymbols) {\n        var symbols = Object.getOwnPropertySymbols(object);\n        if (enumerableOnly) {\n            symbols = symbols.filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n            });\n        }\n        keys.push.apply(keys, symbols);\n    }\n    return keys;\n}\nfunction _object_spread_props(target, source) {\n    source = source != null ? source : {};\n    if (Object.getOwnPropertyDescriptors) {\n        Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n        ownKeys(Object(source)).forEach(function(key) {\n            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n    }\n    return target;\n}\nimport { ServiceDetails as ServiceDetailsComponent } from '../components/serviceDetails';\nimport { ensureServiceDetailsData } from '@shared/actions/thunkActions';\nimport { extractCountryCodeFromQueryParam } from '@shared/utils/consultingServicesUtils';\nimport { connect } from 'react-redux';\nimport { withRouter } from '@shared/routerHistory';\nimport { Constants } from '@shared/utils/constants';\nimport { isProfessionalService, getTelemetryDetailContentCurrentView } from '@shared/utils/appUtils';\nimport { withHydration } from '@shared/hooks/useHydration';\nexport const mapStateToProps = (state, ownProps)=>{\n    const services = state.services.dataList;\n    const hashMap = state.services.idMap;\n    const query = ownProps.location ? ownProps.location.query : null;\n    const serviceIndex = hashMap[ownProps.routeParams.entityId.toString().toLowerCase()];\n    let targetService = null;\n    if (serviceIndex >= 0) {\n        targetService = services[`${serviceIndex}`];\n    }\n    const breadcrumbUrl = state.config.breadcrumbUrl ? state.config.breadcrumbUrl : '/' + state.config.locale + '/marketplace/consulting-services';\n    const defaultTab = query && query.tab ? query.tab : null;\n    // If the query has the country code that wins, else select first available country from the service.\n    let countryCode = extractCountryCodeFromQueryParam(query);\n    if (!countryCode && targetService && targetService.countryRegion && targetService.countryRegion[0]) {\n        countryCode = targetService.countryRegion[0];\n    }\n    const offerIsProfessionalService = (targetService === null || targetService === void 0 ? void 0 : targetService.entityType) === Constants.EntityType.Service && isProfessionalService({\n        service: targetService\n    });\n    return _object_spread_props(_object_spread({}, ownProps), {\n        isLoadingUserData: state.users.loading,\n        service: targetService,\n        serviceId: ownProps.routeParams.entityId.toString().toLowerCase(),\n        breadcrumbUrl,\n        defaultTab,\n        selectedLocale: state.config.locale,\n        isNationalCloud: !!state.config.nationalCloud,\n        currentView: getTelemetryDetailContentCurrentView(state.config.currentView, state.config.currentGalleryViewIsCurated),\n        countryCode,\n        query: query,\n        isAppSource: state.config.isAppSource,\n        suggestedItems: state.services.relatedAppsItems.items.suggestedItems || [],\n        isProfessionalService: offerIsProfessionalService\n    });\n};\nfunction ensureAsyncData(dispatch, entityId) {\n    return dispatch(ensureServiceDetailsData(entityId));\n}\nexport const mapDispatchToProps = (dispatch)=>{\n    return {\n        ensureAsyncData: (entityId)=>ensureAsyncData(dispatch, entityId)\n    };\n};\nconst ServiceDetails = withRouter(connect(mapStateToProps, mapDispatchToProps)(withHydration(ServiceDetailsComponent)));\nexport const ensureAsyncDataSSR = /*#__PURE__*/ function() {\n    var _ref = _async_to_generator(function*(dispatch, getState, params) {\n        yield ensureAsyncData(dispatch, params.entityId);\n    });\n    return function ensureAsyncDataSSR(dispatch, getState, params) {\n        return _ref.apply(this, arguments);\n    };\n}();\nexport default ServiceDetails;\n","/* eslint-disable react/forbid-dom-props */ /* eslint-disable no-prototype-builtins */ function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { Callout, DirectionalHint, PrimaryButton, mergeStyleSets } from '@fluentui/react';\nimport SpzaComponent from '@shared/components/spzaComponent';\nimport { getCountryRegionByCountry, getReplacedCountryQueryParam, createCountryFilterQueryParam, getStartingPriceHeader, getStartingPriceCurrency } from '@shared/utils/consultingServicesUtils';\nimport { isFilterItemMatch, getFilterItemRoute, getDetailsPageTitle } from '@appsource/utils/consultingServicesUtils';\nimport { InternalLink } from '@shared/components/internalLink';\nimport { Constants } from '@shared/utils/constants';\nimport { SpzaInstrumentService } from '@shared/services/telemetry/spza/spzaInstrument';\nimport { DataMap } from '@shared/utils/dataMapping';\nimport { urlPush, urlReplace, routes } from 'routerHistory';\nimport { getWindow } from '@shared/services/window';\nimport { ServiceTile } from '@shared/containers/serviceTile';\nimport Overview from '@appsource/containers/overview';\nimport * as DetailUtils from '@shared/utils/detailUtils';\nimport { serviceOffersSupportedCountries, findServiceSupportedCountry } from '@shared/utils/filterHelpers';\nimport { serviceOffersSupportedCAStates, serviceOffersSupportedUSStates } from '@shared/utils/serviceOffersSupportedStatesCodes';\nimport { getServiceTelemetryDetailContentText } from '@shared/utils/appUtils';\nimport { getUserFavouriteEntityServiceType } from '@shared/utils/userFavouriteDedicatedUtils';\nimport UserFavouriteTileDetailButton from '@shared/containers/userFavouriteTileDetailButton';\nimport { Card } from '@shared/components/card';\nimport { ButtonLink } from '@shared/components/ButtonLink';\nimport { Tab, Tabs } from '@shared/components/tabs';\nimport { UsefulInfo, UsefulInfoMetadataCellItemType } from './UsefulInfo';\nimport { getWorkBreakEnabledString } from 'utils/stringUtils';\nimport { StickyCard } from 'components/stickyCard';\nimport { IconLink } from 'components/iconLink';\nimport { getTooltipSilentLogIn } from '@shared/utils/silentLogInUtils';\nimport { logger } from '@src/logger';\nimport pdpSolutionBadge from '@shared/images/pdp_solutionBadge.svg';\nimport pdpMspBadge from '@shared/images/pdp_mspBadge.svg';\nimport classNames from 'classnames';\nconst MAX_REGIONS_IN_VIEW_COUNT = 5;\nconst MAX_COUNTRIES_IN_VIEW_COUNT = 5;\nconst ctaButtonsClassNames = mergeStyleSets({\n    ctaButton: {\n        padding: '5px 25px',\n        marginTop: 4,\n        marginRight: 8\n    }\n});\nexport class ServiceDetails extends SpzaComponent {\n    static getRegionColumns(countryCode, regions) {\n        const regionLists = [];\n        if (!countryCode || !regions) {\n            return regionLists;\n        }\n        const columnSize = 15;\n        const maxColumns = 4;\n        for(let i = 0; i < maxColumns; i++){\n            regionLists.push(regions.slice(columnSize * i, columnSize * i + columnSize).map(function(listValue) {\n                let region = {};\n                if (countryCode.toLowerCase() === Constants.usCountryCode) {\n                    region = serviceOffersSupportedUSStates.filter((item)=>{\n                        return item.code === listValue;\n                    });\n                } else {\n                    region = serviceOffersSupportedCAStates.filter((item)=>{\n                        return item.code === listValue;\n                    });\n                }\n                return region && region.length > 0 ? region[0].name : undefined;\n            }));\n        }\n        return regionLists;\n    }\n    static getMoreCountriesColumns(moreCountries) {\n        const countriesLists = [];\n        if (!moreCountries) {\n            return countriesLists;\n        }\n        const columnSize = 25;\n        const maxColumns = 6;\n        for(let i = 0; i < maxColumns; i++){\n            countriesLists.push(moreCountries.slice(columnSize * i, columnSize * i + columnSize).map((moreCountryVal)=>{\n                const foundCountry = serviceOffersSupportedCountries.filter((supportedCountry)=>{\n                    return supportedCountry.countryCode === moreCountryVal.countryCode;\n                });\n                return foundCountry && foundCountry.length > 0 ? moreCountryVal : undefined;\n            }));\n        }\n        return countriesLists;\n    }\n    handleScroll() {\n        const curWindow = getWindow();\n        const isPageScrolled = StickyCard.handleScroll(curWindow, ServiceDetails.pdpTabsId);\n        if (this.state.isPageScrolled !== isPageScrolled) {\n            this.setState({\n                isPageScrolled\n            });\n        }\n    }\n    buildGalleryLink() {\n        return /*#__PURE__*/ _jsx(InternalLink, {\n            href: this.props.breadcrumbUrl,\n            role: \"button\",\n            className: \"c-button goBackButton\",\n            onClick: ()=>{\n                DetailUtils.generateBreadcrumbPayloadAndLogTelemetry('Services');\n                urlPush(this.props.breadcrumbUrl, true);\n            },\n            accEnabled: true,\n            children: this.context.loc('Services_BackButton', 'Consulting services')\n        });\n    }\n    buildStateListItems(region) {\n        return /*#__PURE__*/ _jsx(\"div\", {\n            className: \"column\",\n            children: region.map(function(listValue) {\n                return /*#__PURE__*/ _jsx(\"li\", {\n                    children: listValue\n                }, listValue);\n            })\n        });\n    }\n    getServiceDetailsHref(countryCode) {\n        const query = this.props.query;\n        let countryParams = getReplacedCountryQueryParam(query, countryCode);\n        if (!countryParams) {\n            countryParams = createCountryFilterQueryParam(countryCode, this.props.isAppSource);\n        }\n        return this.context.buildHref(routes.serviceDetail, {\n            entityId: this.props.service.entityId\n        }, countryParams, true);\n    }\n    buildMoreCountriesListItems(moreCountries, colIndex) {\n        const closeMoreCountriesModal = this.closeMoreCountriesModal;\n        return /*#__PURE__*/ _jsx(\"div\", {\n            className: \"column\",\n            children: moreCountries.map((moreCountry)=>{\n                const serviceDetailHref = this.getServiceDetailsHref(moreCountry.countryCode);\n                return /*#__PURE__*/ _jsx(InternalLink, {\n                    href: serviceDetailHref,\n                    scrollToTop: true,\n                    className: \"c-hyperlink\",\n                    additionalCommand: closeMoreCountriesModal,\n                    children: moreCountry.countryDisplayName\n                }, moreCountry.countryCode);\n            })\n        }, colIndex);\n    }\n    closeRegionModal(event) {\n        event.stopPropagation();\n        this.setState({\n            showRegionModal: false\n        });\n    }\n    buildRegionModal(regions) {\n        const countryAndRegion = getCountryRegionByCountry(this.props.service.detailInformation, this.props.countryCode);\n        const countryName = this.getCountryDisplayName(countryAndRegion.countryRegion);\n        const regionColumns = ServiceDetails.getRegionColumns(countryAndRegion.countryRegion, regions);\n        const regionLists = regionColumns.map((columnRegions)=>{\n            return this.buildStateListItems(columnRegions);\n        });\n        return this.state.showRegionModal && /*#__PURE__*/ _jsxs(Callout, {\n            onMouseLeave: this.closeRegionModal,\n            target: \".regionLink\",\n            directionalHint: DirectionalHint.rightCenter,\n            className: \"regionCallout\",\n            children: [\n                /*#__PURE__*/ _jsx(\"div\", {\n                    className: \"regionsHeader\",\n                    children: this.context.locParams('ServicesRegions_Header', [\n                        countryName\n                    ])\n                }),\n                /*#__PURE__*/ _jsx(\"div\", {\n                    className: \"regionColumns\",\n                    children: regionLists\n                })\n            ]\n        });\n    }\n    buildRegionList() {\n        const countryAndRegion = getCountryRegionByCountry(this.props.service.detailInformation, this.props.countryCode);\n        const regions = countryAndRegion.regions;\n        let regionsAddedToView = 0;\n        const regionList = [];\n        if (regions && regions.length > 0) {\n            for(let i = 0; i < regions.length; i++){\n                let region = {};\n                if (countryAndRegion.countryRegion.toLowerCase() === Constants.usCountryCode) {\n                    region = serviceOffersSupportedUSStates.filter((item)=>{\n                        return item.code === regions[`${i}`];\n                    });\n                } else if (countryAndRegion.countryRegion.toLowerCase() === Constants.caCountryCode) {\n                    region = serviceOffersSupportedCAStates.filter((item)=>{\n                        return item.code === regions[`${i}`];\n                    });\n                }\n                if (region && region.length > 0) {\n                    regionsAddedToView++;\n                    if (regionsAddedToView <= MAX_REGIONS_IN_VIEW_COUNT) {\n                        regionList.push(region[0].name);\n                    }\n                }\n            }\n        }\n        return regionList;\n    }\n    getShowRegionModal(regions) {\n        return /*#__PURE__*/ _jsxs(\"div\", {\n            children: [\n                this.state.showRegionModal ? /*#__PURE__*/ _jsx(\"div\", {\n                    className: \"overlay\"\n                }) : null,\n                /*#__PURE__*/ _jsxs(\"div\", {\n                    className: \"regionLink\",\n                    onClick: ()=>{\n                        this.setState({\n                            showRegionModal: true\n                        });\n                    },\n                    onKeyDown: (event)=>{\n                        if (event.keyCode === Constants.SystemKey.Enter) {\n                            this.setState({\n                                showRegionModal: true\n                            });\n                        }\n                    },\n                    tabIndex: 0,\n                    children: [\n                        this.context.locParams('CountryLink_More', [\n                            regions.length.toString()\n                        ]),\n                        /*#__PURE__*/ _jsx(\"div\", {\n                            children: this.buildRegionModal(regions)\n                        })\n                    ]\n                })\n            ]\n        });\n    }\n    getMoreCountriesCodeAndDisplay(countries) {\n        const moreCountries = [];\n        const countryCodeLowerCase = this.props.countryCode ? this.props.countryCode.toLowerCase() : null;\n        for (const country of countries){\n            if (country.countryRegion.toLowerCase() !== countryCodeLowerCase) {\n                const foundCountry = findServiceSupportedCountry(country.countryRegion);\n                if (foundCountry) {\n                    moreCountries.push({\n                        countryCode: country.countryRegion,\n                        countryDisplayName: foundCountry.name\n                    });\n                } else {\n                    const errorMessage = `Country code not found in service supported countries, code =  ${country.countryRegion}.`;\n                    const payload = {\n                        page: getWindow().location.href,\n                        action: Constants.Telemetry.Action.Error,\n                        actionModifier: Constants.Telemetry.ActionModifier.Error,\n                        details: JSON.stringify(errorMessage)\n                    };\n                    const instrument = SpzaInstrumentService.getProvider();\n                    instrument.probe(Constants.Telemetry.ProbeName.LogInfo, payload);\n                    logger.error(payload.details, {\n                        action: payload.action,\n                        actionModifier: payload.actionModifier\n                    });\n                }\n            }\n        }\n        return moreCountries;\n    }\n    closeMoreCountriesModal(event) {\n        if (event) {\n            event.stopPropagation();\n        }\n        this.setState({\n            showMoreCountriesModal: false\n        });\n    }\n    buildMoreCountriesModal(moreCountries) {\n        const moreCountriesColumns = ServiceDetails.getMoreCountriesColumns(moreCountries);\n        const moreCountriesLists = moreCountriesColumns.map((columnMoreCountries, colIndex)=>{\n            return this.buildMoreCountriesListItems(columnMoreCountries, colIndex);\n        });\n        return this.state.showMoreCountriesModal && /*#__PURE__*/ _jsxs(Callout, {\n            onMouseLeave: this.closeMoreCountriesModal,\n            target: \".moreCountriesLink\",\n            directionalHint: DirectionalHint.rightCenter,\n            className: \"regionCallout\",\n            children: [\n                /*#__PURE__*/ _jsx(\"div\", {\n                    className: \"regionsHeader\",\n                    children: this.context.loc('ServiceDetails_MoreCountries')\n                }),\n                /*#__PURE__*/ _jsx(\"div\", {\n                    className: \"regionColumns\",\n                    children: moreCountriesLists\n                })\n            ]\n        });\n    }\n    buildMoreCountriesList(countries) {\n        const countryLists = {\n            topCountries: [],\n            countriesMoreModalList: []\n        };\n        const moreCountries = this.getMoreCountriesCodeAndDisplay(countries);\n        // If any they will be shown in popup\n        for(let i = 0; i < moreCountries.length; i++){\n            if (i < MAX_COUNTRIES_IN_VIEW_COUNT) {\n                // Set url with the right country for each link to details page.\n                const serviceDetailHref = this.getServiceDetailsHref(moreCountries[`${i}`].countryCode);\n                countryLists.topCountries.push({\n                    information: serviceDetailHref,\n                    id: moreCountries[`${i}`].countryCode,\n                    text: moreCountries[`${i}`].countryDisplayName,\n                    type: UsefulInfoMetadataCellItemType.InternalLink,\n                    props: {\n                        scrollToTop: true,\n                        additionalCommand: this.closeMoreCountriesModal,\n                        target: '_self'\n                    }\n                });\n            } else {\n                countryLists.countriesMoreModalList.push(moreCountries[`${i}`]);\n            }\n        }\n        return countryLists;\n    }\n    getMoreCountriesModal(extraMoreCountries) {\n        return /*#__PURE__*/ _jsxs(\"div\", {\n            className: \"moreCountriesLink\",\n            onClick: ()=>{\n                this.setState({\n                    showMoreCountriesModal: true\n                });\n            },\n            onKeyDown: (event)=>{\n                if (event.keyCode === Constants.SystemKey.Enter) {\n                    this.setState({\n                        showMoreCountriesModal: true\n                    });\n                }\n            },\n            tabIndex: 0,\n            children: [\n                this.context.locParams('CountryLink_More', [\n                    extraMoreCountries.length.toString()\n                ]),\n                /*#__PURE__*/ _jsx(\"div\", {\n                    children: this.buildMoreCountriesModal(extraMoreCountries)\n                }, \"show_more_model\")\n            ]\n        }, \"show_more\");\n    }\n    buildCompetencyList(items) {\n        const itemRender = [];\n        if (items && items.length > 0) {\n            for(let i = 0; i < items.length; i++){\n                itemRender.push(/*#__PURE__*/ _jsx(\"div\", {\n                    className: \"displayItem\",\n                    children: items[`${i}`].competencyName\n                }, i));\n            }\n        }\n        return itemRender;\n    }\n    buildFilterElements(filteritems) {\n        if (filteritems) {\n            let filterElements = filteritems.map((filter)=>{\n                return /*#__PURE__*/ _jsx(IconLink, {\n                    iconClassName: 'icon-' + filter.urlKey + '-16',\n                    href: filter.newPath,\n                    title: this.context.loc(filter.locKey, filter.title),\n                    onClick: (e)=>{\n                        DetailUtils.generateLinkPayloadAndLogTelemetry(DetailUtils.OwnerType.Service, this.props.service.entityId, filter.filterItem, filter.newPath, 'Default');\n                        urlPush(filter.newPath, true);\n                        e.preventDefault();\n                    },\n                    accEnabled: true,\n                    className: \"c-hyperlink detailsCategories\",\n                    children: /*#__PURE__*/ _jsx(\"div\", {\n                        className: \"productItem\",\n                        children: this.context.loc(filter.locKey, filter.title)\n                    })\n                }, filter.title);\n            });\n            filterElements = filterElements.filter((element)=>!!element);\n            return filterElements;\n        }\n        return null;\n    }\n    getFilterListElements(filterItem, filterTileType) {\n        const filteritems = [];\n        if (this.props.service) {\n            Object.keys(DataMap[`${filterItem}`]).forEach((filterValue)=>{\n                // Ugly but necessary. We need to show office365 product (office in data map file) even if it have ShortcutFilters.\n                const filterValueAllowed = !DataMap[`${filterItem}`][`${filterValue}`].ShortcutFilters || filterTileType === Constants.filterTileTypes.product && filterValue === 'office';\n                if (filterValueAllowed && (DataMap[`${filterItem}`][`${filterValue}`].match ? DataMap[`${filterItem}`][`${filterValue}`].match(this.props.service) : isFilterItemMatch({\n                    service: this.props.service,\n                    filterItem,\n                    filterValue\n                }))) {\n                    const filter = DataMap[`${filterItem}`][`${filterValue}`];\n                    if (!filter) {\n                        return null;\n                    }\n                    // !!! Temporary HACK: If longTitle is 'Power BI apps' and we are in consulting services tab,\n                    // then we make the text 'Power BI'.\n                    const longTitle = filter.LongTitle || filter.title;\n                    if (longTitle === 'Power BI apps') {\n                        filter.LocKey = 'Power_BI';\n                        filter.LongTitle = 'Power BI';\n                    }\n                    const routeParams = getFilterItemRoute({\n                        filterItem,\n                        filterValue,\n                        filterTileType\n                    });\n                    const newPath = this.context.buildHref(routes.marketplaceServices, routeParams.routeArgs, routeParams.params);\n                    filteritems.push({\n                        filterItem,\n                        locKey: filter.LocKey,\n                        newPath,\n                        title: filter.LongTitle,\n                        urlKey: filter.UrlKey\n                    });\n                }\n            });\n        }\n        return filteritems;\n    }\n    showDialog() {\n        this.context.ctaCallback({\n            entity: this.props.service,\n            entityType: Constants.EntityType.Service,\n            ctaType: Constants.CTAType.Service,\n            actionModifier: Constants.Telemetry.ActionModifier.ServiceDetailCTAButton,\n            ribbonKey: this.props.ribbonKey\n        });\n    }\n    getRegionList() {\n        const countryLists = {\n            topCountries: [],\n            countriesMoreModalList: []\n        };\n        const countryAndRegion = getCountryRegionByCountry(this.props.service.detailInformation, this.props.countryCode);\n        const regions = countryAndRegion.regions;\n        let regionsAddedToView = 0;\n        if (regions && regions.length > 0) {\n            for(let i = 0; i < regions.length; i++){\n                let region = {};\n                if (countryAndRegion.countryRegion.toLowerCase() === Constants.usCountryCode) {\n                    region = serviceOffersSupportedUSStates.filter((item)=>{\n                        return item.code === regions[`${i}`];\n                    });\n                } else if (countryAndRegion.countryRegion.toLowerCase() === Constants.caCountryCode) {\n                    region = serviceOffersSupportedCAStates.filter((item)=>{\n                        return item.code === regions[`${i}`];\n                    });\n                }\n                if (region && region.length > 0) {\n                    regionsAddedToView++;\n                    if (regionsAddedToView <= MAX_REGIONS_IN_VIEW_COUNT) {\n                        countryLists.topCountries.push({\n                            id: region[0].name,\n                            type: UsefulInfoMetadataCellItemType.Label,\n                            text: region[0].name\n                        });\n                    } else {\n                        countryLists.countriesMoreModalList.push(region[0].code);\n                    }\n                }\n            }\n        }\n        return countryLists;\n    }\n    ensureAsyncData(nextProps) {\n        if (nextProps.serviceId) {\n            this.props.ensureAsyncData(nextProps.serviceId);\n        }\n    }\n    UNSAFE_componentWillReceiveProps(nextProps) {\n        this.ensureAsyncData(nextProps);\n    }\n    componentDidMount() {\n        this.ensureAsyncData(this.props);\n        if (this.props.service) {\n            this.telemetryPageLoad();\n            this.updateWindowTitle();\n            this.addScrollListener();\n        }\n    }\n    componentDidUpdate() {\n        this.handleScroll();\n    }\n    componentWillUnmount() {\n        this.removeScrollListener();\n    }\n    telemetryPageLoad() {\n        const { service: serviceInfo, currentView, isNationalCloud } = this.props;\n        const { title, entityId: serviceId } = serviceInfo || {};\n        const payload = {\n            page: getWindow().location.href,\n            appName: title,\n            action: Constants.Telemetry.Action.PageLoad,\n            actionModifier: Constants.Telemetry.ActionModifier.End,\n            serviceId,\n            details: getServiceTelemetryDetailContentText({\n                serviceInfo,\n                isNationalCloud,\n                ctaTypes: [\n                    Constants.CTAType.Service\n                ],\n                currentView\n            })\n        };\n        this.instrument.probe('logTelemetryInfo', payload);\n        logger.info(payload.details, {\n            action: payload.action,\n            actionModifier: payload.actionModifier,\n            appName: payload.appName\n        });\n    }\n    updateWindowTitle() {\n        var _document_getElementsByTagName;\n        if ((_document_getElementsByTagName = document.getElementsByTagName('title')) === null || _document_getElementsByTagName === void 0 ? void 0 : _document_getElementsByTagName.length) {\n            document.getElementsByTagName('title')[0].innerHTML = this.context.locParams(getDetailsPageTitle(), [\n                this.props.service.title\n            ]);\n        }\n    }\n    addScrollListener() {\n        if (this.curWindow) {\n            this.curWindow.addEventListener('scroll', this.handleScroll.bind(this));\n        }\n    }\n    removeScrollListener() {\n        if (this.curWindow) {\n            this.curWindow.addEventListener('scroll', this.handleScroll.bind(this));\n        }\n    }\n    getBreadcrumbElement() {\n        return(// eslint-disable-next-line react/forbid-dom-props\n        /*#__PURE__*/ _jsx(\"div\", {\n            className: \"navigationBar\",\n            id: \"maincontent\",\n            children: /*#__PURE__*/ _jsxs(\"nav\", {\n                className: \"breadcrumb\",\n                children: [\n                    this.buildGalleryLink(),\n                    /*#__PURE__*/ _jsx(\"span\", {\n                        className: \"c-glyph\",\n                        tabIndex: 0,\n                        \"aria-label\": \"greater than\",\n                        role: \"contentinfo\"\n                    }),\n                    /*#__PURE__*/ _jsx(\"header\", {\n                        className: \"appTabButton\",\n                        children: this.props.service.title\n                    })\n                ]\n            })\n        }));\n    }\n    renderButtonLink({ label, value, pricingLinkClassName }) {\n        return /*#__PURE__*/ _jsx(ButtonLink, {\n            href: '',\n            className: pricingLinkClassName,\n            type: Constants.ButtonType.Label,\n            accEnabled: true,\n            label: label,\n            value: value\n        });\n    }\n    bulidStartingPriceElement({ pricingLinkClassName }) {\n        var _service_extraData, _this_props_service_extraData, _this_props_service;\n        const { service, countryCode, selectedLocale, isProfessionalService } = this.props;\n        const pricingValue = getStartingPriceHeader(service === null || service === void 0 ? void 0 : (_service_extraData = service.extraData) === null || _service_extraData === void 0 ? void 0 : _service_extraData.multiCountryPricing, countryCode, selectedLocale, this.context);\n        return /*#__PURE__*/ _jsxs(\"div\", {\n            className: \"serviceDetailsPricingSection\",\n            itemProp: \"offers\",\n            itemScope: true,\n            itemType: \"https://schema.org/Offer\",\n            children: [\n                isProfessionalService ? this.renderButtonLink({\n                    label: this.context.loc('ProfessionalService_Price', 'Contact for price'),\n                    value: '',\n                    pricingLinkClassName\n                }) : this.renderButtonLink({\n                    label: this.context.loc('Pricing', 'Pricing'),\n                    value: pricingValue,\n                    pricingLinkClassName\n                }),\n                pricingValue === this.context.loc('Pricing_Free') ? /*#__PURE__*/ _jsxs(\"div\", {\n                    className: \"metaTagForPrice\",\n                    children: [\n                        /*#__PURE__*/ _jsx(\"meta\", {\n                            itemProp: \"price\",\n                            content: \"0\"\n                        }),\n                        /*#__PURE__*/ _jsx(\"meta\", {\n                            itemProp: \"priceCurrency\",\n                            content: \"USD\"\n                        }),\n                        /*#__PURE__*/ _jsx(\"meta\", {\n                            itemProp: \"category\",\n                            content: \"free\"\n                        })\n                    ]\n                }) : /*#__PURE__*/ _jsxs(\"div\", {\n                    className: \"metaTagForPrice\",\n                    children: [\n                        /*#__PURE__*/ _jsx(\"meta\", {\n                            itemProp: \"price\",\n                            content: pricingValue.replace(/[^0-9.]/g, '')\n                        }),\n                        /*#__PURE__*/ _jsx(\"meta\", {\n                            itemProp: \"priceCurrency\",\n                            content: getStartingPriceCurrency((_this_props_service = this.props.service) === null || _this_props_service === void 0 ? void 0 : (_this_props_service_extraData = _this_props_service.extraData) === null || _this_props_service_extraData === void 0 ? void 0 : _this_props_service_extraData.multiCountryPricing, this.props.countryCode)\n                        })\n                    ]\n                })\n            ]\n        });\n    }\n    getCTAElement() {\n        const { isLoadingUserData, service } = this.props;\n        const button = /*#__PURE__*/ _jsx(PrimaryButton, {\n            text: this.context.loc('PartnerDetail_ContactPartner', 'CONTACT PARTNER'),\n            disabled: isLoadingUserData,\n            \"data-bi-id\": Constants.JsllCTAId.ContactPartner,\n            \"data-bi-name\": service.entityId,\n            \"data-bi-area\": \"Service Details\",\n            className: classNames([\n                ctaButtonsClassNames.ctaButton,\n                'requestButton'\n            ]),\n            onClick: this.showDialog.bind(this)\n        });\n        return getTooltipSilentLogIn(button, isLoadingUserData);\n    }\n    getUserFavouriteButton() {\n        const service = this.props.service;\n        if (!service) {\n            return null;\n        }\n        return /*#__PURE__*/ _jsx(UserFavouriteTileDetailButton, {\n            entityId: service.entityId,\n            entityType: getUserFavouriteEntityServiceType(),\n            planId: undefined,\n            item: service,\n            customCSS: ' AMPappDetails appSource-spza-user-favourite-tile-detail-button'\n        });\n    }\n    getBadges() {\n        return /*#__PURE__*/ _jsxs(\"div\", {\n            className: \"badgesBlock\",\n            children: [\n                Constants.ServicesIdWithBadge.hasOwnProperty(this.props.service.entityId) ? /*#__PURE__*/ _jsx(\"a\", {\n                    href: \"https://aka.ms/integratedsolutionslearnmore\",\n                    rel: \"noreferrer\",\n                    target: \"_blank\",\n                    children: /*#__PURE__*/ _jsx(\"img\", {\n                        id: \"pdp_solution_badge\",\n                        className: \"banner\",\n                        src: pdpSolutionBadge\n                    })\n                }) : null,\n                this.props.service.tags && this.props.service.tags.indexOf(Constants.BadgeType.AzureExpertsMSP) >= 0 ? /*#__PURE__*/ _jsx(\"a\", {\n                    href: \"https://aka.ms/AzureExpertMSP\",\n                    rel: \"noreferrer\",\n                    target: \"_blank\",\n                    children: /*#__PURE__*/ _jsx(\"img\", {\n                        id: \"pdp_msp_badge\",\n                        className: \"banner\",\n                        src: pdpMspBadge\n                    })\n                }) : null\n            ]\n        });\n    }\n    getChildContext() {\n        return {\n            openTileCallback: (detailUrl)=>{\n                const detailsPaylod = {\n                    linkType: 'App',\n                    link: detailUrl\n                };\n                const payload = {\n                    page: getWindow().location.href,\n                    action: Constants.Telemetry.Action.Click,\n                    actionModifier: Constants.Telemetry.ActionModifier.Tile,\n                    details: JSON.stringify(detailsPaylod)\n                };\n                this.instrument.probe('logTelemetryInfo', payload);\n                logger.info(payload.details, {\n                    action: payload.action,\n                    actionModifier: payload.actionModifier\n                });\n                this.context.openTileCallback(detailUrl);\n            }\n        };\n    }\n    getDetailCellElement(information, headerContent, itemPropName) {\n        const microTaggingItemPropName = itemPropName || '';\n        if (information) {\n            if (microTaggingItemPropName === 'publisher') {\n                return /*#__PURE__*/ _jsxs(\"div\", {\n                    className: \"cell\",\n                    itemProp: microTaggingItemPropName,\n                    itemScope: true,\n                    itemType: \"https://schema.org/Organization\",\n                    children: [\n                        /*#__PURE__*/ _jsx(\"h2\", {\n                            children: headerContent\n                        }),\n                        /*#__PURE__*/ _jsx(\"span\", {\n                            itemProp: \"name\",\n                            children: information\n                        })\n                    ]\n                });\n            } else {\n                return /*#__PURE__*/ _jsxs(\"div\", {\n                    className: \"cell\",\n                    itemProp: microTaggingItemPropName,\n                    children: [\n                        /*#__PURE__*/ _jsx(\"header\", {\n                            children: headerContent\n                        }),\n                        /*#__PURE__*/ _jsx(\"span\", {\n                            children: information\n                        })\n                    ]\n                });\n            }\n        } else {\n            return null;\n        }\n    }\n    getCountryDisplayName(countryCode) {\n        const country = findServiceSupportedCountry(countryCode);\n        if (country) {\n            return country.name;\n        }\n        return '';\n    }\n    getCompetencyList(competencyType) {\n        return this.props.service.detailInformation.competencies.filter((item)=>item.competencyLevel && item.competencyLevel.toString().toLowerCase() === competencyType);\n    }\n    getTabsProps() {\n        const tabsProps = {\n            defaultTab: this.props.defaultTab,\n            ownerType: DetailUtils.OwnerType.Service,\n            ownerId: this.props.service.entityId,\n            changeTabCallback: this.changeTabCallback.bind(this),\n            getTabHref: this.getTabHref.bind(this)\n        };\n        return tabsProps;\n    }\n    changeTabCallback(tabTitle) {\n        const newPath = this.getTabHref(tabTitle);\n        urlReplace(newPath);\n    }\n    getTabHref(tabTitle) {\n        return this.context.buildHref(routes.serviceDetail, {\n            entityId: this.props.service.entityId\n        }, {\n            tab: tabTitle\n        }, true, false, true);\n    }\n    getTabChildren() {\n        const tabsChilds = [\n            {\n                title: this.context.loc('PartnerDetail_OverviewTab', 'Overview'),\n                name: 'Overview',\n                getContent: ()=>this.renderOverviewTab()\n            },\n            {\n                title: this.context.loc('ServiceDetail_DetilsAndSupportTab', 'Details + support'),\n                name: Constants.Tabs.DetailsAndSupport,\n                // eslint-disable-next-line react/display-name\n                getContent: ()=>/*#__PURE__*/ _jsx(UsefulInfo, {\n                        ownerType: DetailUtils.OwnerType.Service,\n                        metadata: this.getUsefulInfoMetadata(this.props.service)\n                    })\n            }\n        ];\n        return tabsChilds;\n    }\n    getUsefulInfoMetadata(service) {\n        var _this_props_service_extraData, _this_props_service, _this_props_service_industriesDetails;\n        const { isProfessionalService } = this.props;\n        // colomn 1 - Useful Information\n        const usefulInformaionCells = [];\n        const supportCells = [];\n        const moreLinksCells = [];\n        const metadata = [];\n        const contextCountryAndRegion = getCountryRegionByCountry(this.props.service.detailInformation, this.props.countryCode);\n        const allCountryAndRegions = this.props.service.detailInformation ? this.props.service.detailInformation.MultiCountryRegions : null;\n        // publisher\n        usefulInformaionCells.push({\n            id: 'publisher',\n            title: 'App_Publisher',\n            cellItems: [\n                {\n                    id: 'publisherItem',\n                    type: UsefulInfoMetadataCellItemType.Label,\n                    text: service.publisher\n                }\n            ]\n        });\n        // pricing\n        const { countryCode, selectedLocale } = this.props;\n        const pricingValue = getStartingPriceHeader((_this_props_service = this.props.service) === null || _this_props_service === void 0 ? void 0 : (_this_props_service_extraData = _this_props_service.extraData) === null || _this_props_service_extraData === void 0 ? void 0 : _this_props_service_extraData.multiCountryPricing, countryCode, selectedLocale, this.context);\n        if (pricingValue) {\n            const cell = {\n                id: 'AppVersionItem',\n                type: UsefulInfoMetadataCellItemType.Label,\n                text: isProfessionalService ? this.context.loc('ProfessionalService_Price', 'contact for price') : pricingValue\n            };\n            usefulInformaionCells.push({\n                id: 'Pricing',\n                title: 'Pricing',\n                cellItems: [\n                    cell\n                ]\n            });\n        }\n        // goldCompetencies\n        if (this.props.service.detailInformation && this.props.service.detailInformation.competencies && this.props.service.detailInformation.competencies.length > 0 && this.getCompetencyList('gold').length > 0) {\n            const goldCompetencies = this.props.service.detailInformation.competencies.filter((item)=>item.competencyLevel && item.competencyLevel.toString().toLowerCase() === 'gold').map((goldCompetency)=>{\n                return {\n                    id: goldCompetency.competencyName,\n                    type: UsefulInfoMetadataCellItemType.Label,\n                    text: goldCompetency.competencyName\n                };\n            });\n            if (goldCompetencies.length) {\n                usefulInformaionCells.push({\n                    id: 'GoldCompetencies',\n                    title: 'ServiceDetails_GoldCompetencies',\n                    cellItems: goldCompetencies\n                });\n            }\n        }\n        // silverCompetencies\n        if (this.props.service.detailInformation && this.props.service.detailInformation.competencies && this.props.service.detailInformation.competencies.length > 0 && this.getCompetencyList('silver').length > 0) {\n            const silverCompetencies = this.props.service.detailInformation.competencies.filter((item)=>item.competencyLevel && item.competencyLevel.toString().toLowerCase() === 'silver').map((silverCompetency)=>{\n                return {\n                    id: silverCompetency.competencyName,\n                    type: UsefulInfoMetadataCellItemType.Label,\n                    text: silverCompetency.competencyName\n                };\n            });\n            if (silverCompetencies.length) {\n                usefulInformaionCells.push({\n                    id: 'SilverCompetencies',\n                    title: 'ServiceDetails_SilverCompetencies',\n                    cellItems: silverCompetencies\n                });\n            }\n        }\n        if (this.props.service.products && Object.keys(this.props.service.products).length > 0) {\n            // products\n            const products = this.getFilterListElements(Constants.filterMaps.products, Constants.filterTileTypes.product).map((product)=>{\n                return {\n                    id: product.title,\n                    type: UsefulInfoMetadataCellItemType.Filter,\n                    text: product.locKey,\n                    entityId: service.entityId,\n                    filter: product\n                };\n            });\n            usefulInformaionCells.push({\n                id: 'FilterType_Products',\n                title: 'FilterType_Products',\n                cellItems: products\n            });\n        }\n        if ((_this_props_service_industriesDetails = this.props.service.industriesDetails) === null || _this_props_service_industriesDetails === void 0 ? void 0 : _this_props_service_industriesDetails.length) {\n            // industries\n            const industries = this.getIndustriesFilterListElements();\n            usefulInformaionCells.push({\n                id: 'Industries',\n                title: 'App_Industries',\n                cellItems: industries\n            });\n        }\n        if (this.props.service.serviceTypes > 0) {\n            // type\n            const serviceTypes = this.getFilterListElements(Constants.filterMaps.serviceTypes, Constants.filterTileTypes.serviceType).map((serviceType)=>{\n                return {\n                    id: serviceType.title,\n                    type: UsefulInfoMetadataCellItemType.Filter,\n                    text: serviceType.locKey,\n                    entityId: service.entityId,\n                    filter: serviceType\n                };\n            });\n            usefulInformaionCells.push({\n                id: 'serviceTypes',\n                title: 'FilterType_ServiceType',\n                cellItems: serviceTypes\n            });\n        }\n        // country\n        if (contextCountryAndRegion && contextCountryAndRegion.countryRegion) {\n            usefulInformaionCells.push({\n                id: 'Country',\n                title: 'ServiceDetails_Country',\n                cellItems: [\n                    {\n                        id: 'countryRegionItem',\n                        type: UsefulInfoMetadataCellItemType.Label,\n                        text: this.getCountryDisplayName(contextCountryAndRegion.countryRegion)\n                    }\n                ]\n            });\n        }\n        // Region\n        if (contextCountryAndRegion && contextCountryAndRegion.regions && contextCountryAndRegion.regions.length > 0) {\n            const countryLists = this.getRegionList();\n            if (countryLists.topCountries.length > 0) {\n                if (countryLists.countriesMoreModalList && countryLists.countriesMoreModalList.length > 0) countryLists.topCountries.push({\n                    id: 'more',\n                    text: 'CountryLink_More',\n                    type: UsefulInfoMetadataCellItemType.Modal,\n                    getContent: ()=>this.getShowRegionModal(countryLists.countriesMoreModalList)\n                });\n                usefulInformaionCells.push({\n                    id: 'Region',\n                    title: 'ServiceDetails_Regions',\n                    cellItems: countryLists.topCountries\n                });\n            }\n        }\n        // MoreCountries\n        if (allCountryAndRegions && allCountryAndRegions.length > 1) {\n            const countryLists = this.buildMoreCountriesList(allCountryAndRegions);\n            if (countryLists.topCountries.length > 0) {\n                if (countryLists.countriesMoreModalList && countryLists.countriesMoreModalList.length > 0) {\n                    countryLists.topCountries.push({\n                        id: 'more',\n                        text: 'CountryLink_More',\n                        type: UsefulInfoMetadataCellItemType.Modal,\n                        getContent: ()=>this.getMoreCountriesModal(countryLists.countriesMoreModalList)\n                    });\n                }\n                usefulInformaionCells.push({\n                    id: 'MoreCountries',\n                    title: 'ServiceDetails_MoreCountries',\n                    cellItems: countryLists.topCountries\n                });\n            }\n        }\n        // more links\n        const documents = this.props.service.detailInformation.CollateralDocuments;\n        if (documents && documents.length > 0) {\n            const documentsCells = documents.map((doc)=>{\n                return {\n                    information: doc.DocumentUri,\n                    id: 'LearnMore',\n                    text: getWorkBreakEnabledString(doc.DocumentName),\n                    type: UsefulInfoMetadataCellItemType.Link,\n                    entityId: service.entityId\n                };\n            });\n            moreLinksCells.push({\n                id: 'App_LearnMoreTitle',\n                title: '',\n                cellItems: documentsCells\n            });\n        }\n        // create root metadata item\n        if (usefulInformaionCells.length) {\n            metadata.push({\n                id: 'UsefulInformationDetails',\n                title: 'AppDetail_UsefulInformaionDetails',\n                titleFallback: 'Details',\n                cells: usefulInformaionCells\n            });\n        }\n        if (supportCells.length) {\n            metadata.push({\n                id: 'Support',\n                title: 'AppDetail_Support',\n                cells: supportCells\n            });\n        }\n        if (moreLinksCells.length) {\n            metadata.push({\n                id: 'App_Links',\n                title: 'App_Links',\n                titleFallback: 'Links',\n                cells: moreLinksCells\n            });\n        }\n        return metadata;\n    }\n    renderOverviewTab() {\n        return this.props.service.detailInformation ? /*#__PURE__*/ _jsx(Overview, {\n            ownerType: DetailUtils.OwnerType.App,\n            ownerId: this.props.service.entityId,\n            ownerTitle: this.props.service.title,\n            shortDescription: this.props.service.extraData.shortDescription,\n            description: this.props.service.detailInformation.Description,\n            images: this.props.service.detailInformation.Images,\n            videos: this.props.service.detailInformation.DemoVideos,\n            capabilities: null,\n            TileType: ServiceTile,\n            crossListings: this.props.suggestedItems,\n            //   selectedLocale={this.props.selectedLocale}\n            countryCode: this.props.countryCode\n        }) : null;\n    }\n    renderStickyCard(tabsProps, tabsChilds) {\n        return /*#__PURE__*/ _jsxs(StickyCard, {\n            title: this.props.service.title,\n            logoURL: DetailUtils.getDetailInformation(this.props.service, 'LargeIconUri'),\n            tabsProps: tabsProps,\n            tabsChilds: tabsChilds,\n            children: [\n                /*#__PURE__*/ _jsx(\"div\", {\n                    className: \"stickyCardPricing\",\n                    children: this.bulidStartingPriceElement({\n                        pricingLinkClassName: 'light'\n                    })\n                }),\n                /*#__PURE__*/ _jsx(\"div\", {\n                    className: \"stickyCardButton\",\n                    children: this.getCTAElement()\n                }),\n                /*#__PURE__*/ _jsx(\"div\", {\n                    className: \"stickyCardFavourite\",\n                    children: this.getUserFavouriteButton()\n                })\n            ]\n        });\n    }\n    renderImpl() {\n        if (this.props.service) {\n            const tabsProps = this.getTabsProps();\n            const tabsChilds = this.getTabChildren();\n            return /*#__PURE__*/ _jsx(\"div\", {\n                className: \"ASdesktopAppDetails\",\n                tabIndex: 0,\n                itemScope: true,\n                itemType: \"https://schema.org/SoftwareApplication\",\n                children: /*#__PURE__*/ _jsxs(\"div\", {\n                    className: \"spza_detailContainer spza_partnerDetailContainer\",\n                    children: [\n                        this.state.isPageScrolled ? this.renderStickyCard(tabsProps, tabsChilds) : null,\n                        /*#__PURE__*/ _jsxs(\"div\", {\n                            className: \"pdpDetails\",\n                            children: [\n                                this.getBreadcrumbElement(),\n                                /*#__PURE__*/ _jsx(\"div\", {\n                                    className: \"detailContent\",\n                                    children: /*#__PURE__*/ _jsxs(\"div\", {\n                                        className: \"deatilPageContent\",\n                                        children: [\n                                            /*#__PURE__*/ _jsxs(Card, {\n                                                title: this.props.service.title,\n                                                subtitle: this.props.service.publisher,\n                                                logoURL: DetailUtils.getDetailInformation(this.props.service, 'LargeIconUri'),\n                                                children: [\n                                                    this.props.isHydrated && this.props.service.products && Object.keys(this.props.service.products).length > 0 ? this.buildFilterElements(this.getFilterListElements(Constants.filterMaps.products, Constants.filterTileTypes.product)) : null,\n                                                    this.props.isHydrated && this.getBadges(),\n                                                    /*#__PURE__*/ _jsxs(\"div\", {\n                                                        className: \"container\",\n                                                        children: [\n                                                            this.bulidStartingPriceElement({\n                                                                pricingLinkClassName: 'dark'\n                                                            }),\n                                                            this.getCTAElement(),\n                                                            this.getUserFavouriteButton()\n                                                        ]\n                                                    })\n                                                ]\n                                            }),\n                                            !this.props.service.detailInformation ? null : /*#__PURE__*/ _jsx(\"div\", {\n                                                id: ServiceDetails.pdpTabsId,\n                                                className: ServiceDetails.pdpTabsClass,\n                                                children: /*#__PURE__*/ _jsx(Tabs, {\n                                                    defaultTab: tabsProps.defaultTab,\n                                                    ownerType: tabsProps.ownerType,\n                                                    ownerId: tabsProps.ownerId,\n                                                    changeTabCallback: tabsProps.changeTabCallback,\n                                                    getTabHref: tabsProps.getTabHref,\n                                                    children: tabsChilds.map((tabChild, index)=>/*#__PURE__*/ _jsx(Tab, {\n                                                            title: tabChild.title,\n                                                            name: tabChild.name,\n                                                            textBadge: tabChild.textBadge,\n                                                            children: tabChild.getContent()\n                                                        }, index))\n                                                })\n                                            })\n                                        ]\n                                    })\n                                })\n                            ]\n                        })\n                    ]\n                })\n            });\n        } else {\n            // there is no app\n            return /*#__PURE__*/ _jsx(\"div\", {\n                className: \"nullAppContainer\",\n                children: this.context.loc('APPDETAIL_AppNotFound', 'App not Found')\n            });\n        }\n    }\n    constructor(props, context){\n        super(props, context), _define_property(this, \"context\", void 0), _define_property(this, \"instrument\", void 0), _define_property(this, \"curWindow\", getWindow()), _define_property(this, \"getIndustriesFilterListElements\", ()=>{\n            var _service_industriesDetails;\n            const { service } = this.props;\n            return service === null || service === void 0 ? void 0 : (_service_industriesDetails = service.industriesDetails) === null || _service_industriesDetails === void 0 ? void 0 : _service_industriesDetails.map((industryDetail)=>{\n                const { urlKey, longTitle, locKey } = industryDetail;\n                const newPath = this.context.buildHref(routes.marketplaceServices, null, {\n                    industry: urlKey\n                });\n                const filter = {\n                    filterItem: Constants.filterMaps.industries,\n                    locKey,\n                    newPath,\n                    title: longTitle,\n                    urlKey\n                };\n                return {\n                    id: filter.title,\n                    type: UsefulInfoMetadataCellItemType.Filter,\n                    text: filter.locKey,\n                    entityId: service.entityId,\n                    filter\n                };\n            });\n        });\n        this.instrument = SpzaInstrumentService.getProvider();\n        this.state = {\n            showRegionModal: false,\n            showMoreCountriesModal: false,\n            isPageScrolled: false\n        };\n        this.closeRegionModal = this.closeRegionModal.bind(this);\n        this.closeMoreCountriesModal = this.closeMoreCountriesModal.bind(this);\n        this.getServiceDetailsHref = this.getServiceDetailsHref.bind(this);\n    }\n}\n_define_property(ServiceDetails, \"pdpTabsId\", 'pdpTabs');\n_define_property(ServiceDetails, \"pdpTabsClass\", 'pdpTabs');\nServiceDetails.contextTypes = {\n    loc: PropTypes.func,\n    locParams: PropTypes.func,\n    buildHref: PropTypes.func,\n    ctaCallback: PropTypes.func,\n    renderErrorModal: PropTypes.func,\n    openTileCallback: PropTypes.func\n};\nServiceDetails.childContextTypes = {\n    openTileCallback: PropTypes.func\n};\n","function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nfunction _object_spread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        var ownKeys = Object.keys(source);\n        if (typeof Object.getOwnPropertySymbols === \"function\") {\n            ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n            }));\n        }\n        ownKeys.forEach(function(key) {\n            _define_property(target, key, source[key]);\n        });\n    }\n    return target;\n}\nfunction ownKeys(object, enumerableOnly) {\n    var keys = Object.keys(object);\n    if (Object.getOwnPropertySymbols) {\n        var symbols = Object.getOwnPropertySymbols(object);\n        if (enumerableOnly) {\n            symbols = symbols.filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n            });\n        }\n        keys.push.apply(keys, symbols);\n    }\n    return keys;\n}\nfunction _object_spread_props(target, source) {\n    source = source != null ? source : {};\n    if (Object.getOwnPropertyDescriptors) {\n        Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n        ownKeys(Object(source)).forEach(function(key) {\n            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n    }\n    return target;\n}\nimport { isPricingFilter } from 'utils/filterHelpers';\nimport { routes } from '@shared/routerHistory';\nimport { Constants } from '@shared/utils/constants';\nimport { deepEqual } from '@shared/utils/objectUtils';\nimport { stringifyError } from '@shared/utils/errorUtils';\nimport { generateGuid, getActiveFeaturedFlags, getTileDataEntityType, getTileDataQueryParams, getProductByUrlKey } from '@shared/utils/appUtils';\nimport { createTileDataReceivedAction, createTileDataLoadingAction } from '@shared/actions/tileDataActions';\nimport { getTileData } from '@shared/services/http/entityRestClient';\nimport { getWindow } from '@shared/services/window';\nimport { SpzaInstrumentService } from '@shared/services/telemetry/spza/spzaInstrument';\nimport { createAppsPricingDataReceivedAction, createShowingResultsForReceivedAction } from '@shared/actions/actions';\nimport { createSetRequestFilteredEntityTypeAction, createSetRequestFilteredLoadedAction, createSetRequestFilteredLoadingAction, createSetRequestFilteredQueryAction, createSetResponseFilteredQueryAction } from './queryActions';\nimport { logger } from '@src/logger';\nlet prevTileDataRequest;\nfunction generateTileDataLog(requestParams, tileData, duration) {\n    var _tileData_apps_dataList_, _getWindow_location, _getWindow;\n    const details = {\n        duration,\n        requestParams,\n        searchResponseId: (_tileData_apps_dataList_ = tileData.apps.dataList[0]) === null || _tileData_apps_dataList_ === void 0 ? void 0 : _tileData_apps_dataList_.searchResponseId,\n        appsResultsCount: tileData.apps && tileData.apps.count,\n        appsTopResults: tileData.apps && tileData.apps.dataList && tileData.apps.dataList.slice(0, 20).map((app)=>app.entityId),\n        servicesResultsCount: tileData.services && tileData.services.count,\n        servicesTopResults: tileData.services && tileData.services.dataList && tileData.services.dataList.slice(0, 20).map((service)=>service.entityId)\n    };\n    const payload = {\n        page: (_getWindow = getWindow()) === null || _getWindow === void 0 ? void 0 : (_getWindow_location = _getWindow.location) === null || _getWindow_location === void 0 ? void 0 : _getWindow_location.href,\n        action: Constants.Telemetry.Action.TileData,\n        actionModifier: Constants.Telemetry.ActionModifier.End,\n        details: JSON.stringify(details)\n    };\n    SpzaInstrumentService.getProvider().probe(Constants.Telemetry.ProbeName.LogInfo, payload);\n    logger.info(payload.details, {\n        action: payload.action,\n        actionModifier: payload.actionModifier\n    });\n}\nexport function loadTileData() {\n    return function(dispatch, getState) {\n        var _getProductByUrlKey, _prevTileDataRequest_request;\n        const start = Date.now();\n        const currentView = getState().config.currentView;\n        const isBrowseView = currentView === routes.marketplace.name || currentView === routes.marketplaceServices.name || currentView === routes.marketplaceCloudsIndustry.name;\n        // Load tile data only in Borwses Apps views, like Home and Gallery\n        if (!isBrowseView) {\n            return Promise.resolve(null);\n        }\n        const currentEntityType = getState().config.isAppSource ? getTileDataEntityType(currentView) : Constants.TileDataEntityType.All;\n        const currentFilteredQuery = getTileDataQueryParams(getState().config.query);\n        const prevEntityType = getState().config.requestFilteredEntityType;\n        const prevFilteredQuery = getState().config.requestFilteredQuery;\n        if (deepEqual(currentFilteredQuery, prevFilteredQuery) && currentEntityType === prevEntityType) {\n            return Promise.resolve(null);\n        }\n        dispatch(createSetRequestFilteredEntityTypeAction({\n            requestFilteredEntityType: currentEntityType\n        }));\n        dispatch(createSetRequestFilteredQueryAction({\n            requestFilteredQuery: currentFilteredQuery\n        }));\n        dispatch(createSetRequestFilteredLoadingAction());\n        if (currentView !== routes.home.name) {\n            dispatch(createTileDataLoadingAction({\n                urlQuery: currentFilteredQuery\n            }));\n        }\n        const urlQuery = _object_spread({}, currentFilteredQuery, getActiveFeaturedFlags(getState().config.featureFlags));\n        const requestParams = {\n            requestId: generateGuid(),\n            flightCodes: getState().config.flightCodes,\n            embedHost: (_getProductByUrlKey = getProductByUrlKey({\n                urlKey: getState().config.embedHost\n            })) === null || _getProductByUrlKey === void 0 ? void 0 : _getProductByUrlKey.UrlKey,\n            billingRegion: isPricingFilter(currentFilteredQuery) ? getState().config.billingCountryCode : '',\n            urlQuery,\n            entityType: currentEntityType,\n            isConverged: getState().config.isConverged\n        };\n        prevTileDataRequest === null || prevTileDataRequest === void 0 ? void 0 : (_prevTileDataRequest_request = prevTileDataRequest.request()) === null || _prevTileDataRequest_request === void 0 ? void 0 : _prevTileDataRequest_request.abort();\n        prevTileDataRequest = getTileData(requestParams);\n        return prevTileDataRequest.data$.then((tileData)=>{\n            prevTileDataRequest = null;\n            generateTileDataLog(_object_spread_props(_object_spread({}, requestParams), {\n                origin: tileData.origin,\n                suggestionsRequestId: getState().search.suggestionsRequestId\n            }), tileData, Date.now() - start);\n            dispatch(createSetRequestFilteredLoadedAction());\n            dispatch(createSetResponseFilteredQueryAction({\n                responseFilteredQuery: currentFilteredQuery\n            }));\n            dispatch(createTileDataReceivedAction({\n                entityType: Constants.EntityType.App,\n                entityData: tileData.apps,\n                urlQuery: currentFilteredQuery,\n                requestId: requestParams.requestId\n            }));\n            dispatch(createTileDataReceivedAction({\n                entityType: Constants.EntityType.Service,\n                entityData: tileData.services,\n                urlQuery: currentFilteredQuery,\n                requestId: requestParams.requestId\n            }));\n            dispatch(createTileDataReceivedAction({\n                entityType: Constants.EntityType.CloudsIndustry,\n                entityData: tileData.cloudsIndustry,\n                urlQuery: currentFilteredQuery,\n                requestId: requestParams.requestId\n            }));\n            if (getState().apps.pricingPayload) {\n                dispatch(createAppsPricingDataReceivedAction(getState().apps.pricingPayload));\n            }\n            if (getState().cloudsIndustry.pricingPayload) {\n                dispatch(createAppsPricingDataReceivedAction(getState().cloudsIndustry.pricingPayload));\n            }\n            dispatch(createShowingResultsForReceivedAction({\n                showingResultsFor: tileData.showingResultsFor,\n                previousSearchText: currentFilteredQuery.search\n            }));\n            return tileData;\n        }).catch((err)=>{\n            var _getWindow_location, _getWindow;\n            prevTileDataRequest = null;\n            const payload = {\n                page: (_getWindow = getWindow()) === null || _getWindow === void 0 ? void 0 : (_getWindow_location = _getWindow.location) === null || _getWindow_location === void 0 ? void 0 : _getWindow_location.href,\n                action: Constants.Telemetry.Action.TileData,\n                actionModifier: Constants.Telemetry.ActionModifier.Error,\n                details: JSON.stringify({\n                    duration: Date.now() - start,\n                    requestParams,\n                    error: stringifyError(err)\n                })\n            };\n            SpzaInstrumentService.getProvider().probe(Constants.Telemetry.ProbeName.LogInfo, payload);\n            logger.error(payload.details, {\n                action: payload.action,\n                actionModifier: payload.actionModifier\n            });\n            throw err;\n        });\n    };\n}\n","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n    try {\n        var info = gen[key](arg);\n        var value = info.value;\n    } catch (error) {\n        reject(error);\n        return;\n    }\n    if (info.done) {\n        resolve(value);\n    } else {\n        Promise.resolve(value).then(_next, _throw);\n    }\n}\nfunction _async_to_generator(fn) {\n    return function() {\n        var self = this, args = arguments;\n        return new Promise(function(resolve, reject) {\n            var gen = fn.apply(self, args);\n            function _next(value) {\n                asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n            }\n            function _throw(err) {\n                asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n            }\n            _next(undefined);\n        });\n    };\n}\nimport { getAppConfig } from '@shared/services/init/appConfig';\nimport AuthClient from './client';\nimport { getExtraScopesToConsent } from './scopes';\nimport { getImplicitRedirectUri } from './config';\nimport { getWindow } from '@shared/services/window';\nimport { logger } from '@src/logger';\nimport { stringifyError } from '@shared/utils/errorUtils';\nimport { Constants } from '@shared/utils/constants';\nimport { saveLocalStorageItem } from '@shared/utils/browserStorageUtils';\nconst getRedirectStartPage = ({ to })=>{\n    const redirectStartPage = new URL(to);\n    redirectStartPage.searchParams.set(Constants.QueryStrings.Referer, getWindow().location.href);\n    redirectStartPage.searchParams.set(Constants.QueryStrings.CorrelationId, getAppConfig('correlationId'));\n    return redirectStartPage.href;\n};\nexport const loginRedirectUser = /*#__PURE__*/ function() {\n    var _ref = _async_to_generator(function*({ to, email }) {\n        try {\n            saveLocalStorageItem(Constants.LocalStorage.LoginHint, '');\n            const authClient = AuthClient.getInstance();\n            yield authClient.clearCache();\n            yield authClient.loginRedirect({\n                scopes: [],\n                extraScopesToConsent: getExtraScopesToConsent(),\n                loginHint: email,\n                redirectUri: getImplicitRedirectUri(),\n                redirectStartPage: getRedirectStartPage({\n                    to\n                }),\n                correlationId: getAppConfig('correlationId')\n            });\n        } catch (error) {\n            logger.error(stringifyError(error), {\n                action: Constants.Telemetry.Action.Login,\n                actionModifier: Constants.Telemetry.ActionModifier.PreAuthRedirectFailed,\n                error\n            });\n        }\n    });\n    return function loginRedirectUser(_) {\n        return _ref.apply(this, arguments);\n    };\n}();\n","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n    try {\n        var info = gen[key](arg);\n        var value = info.value;\n    } catch (error) {\n        reject(error);\n        return;\n    }\n    if (info.done) {\n        resolve(value);\n    } else {\n        Promise.resolve(value).then(_next, _throw);\n    }\n}\nfunction _async_to_generator(fn) {\n    return function() {\n        var self = this, args = arguments;\n        return new Promise(function(resolve, reject) {\n            var gen = fn.apply(self, args);\n            function _next(value) {\n                asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n            }\n            function _throw(err) {\n                asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n            }\n            _next(undefined);\n        });\n    };\n}\nimport AuthClient from './client';\nimport { getRedirectLoginUrl } from './windowUtils';\nimport { routes } from '@shared/routerHistory';\nimport { logger } from '@src/logger';\nimport { stringifyError } from '@shared/utils/errorUtils';\nimport { Constants } from '@shared/utils/constants';\nimport { saveLocalStorageItem } from '@shared/utils/browserStorageUtils';\nexport const logoutUser = /*#__PURE__*/ function() {\n    var _ref = _async_to_generator(function*() {\n        try {\n            const { idTokenClaims } = AuthClient.getInstance().getActiveAccount();\n            saveLocalStorageItem(Constants.LocalStorage.LoginHint, '');\n            return yield AuthClient.getInstance().logoutRedirect({\n                postLogoutRedirectUri: `${getRedirectLoginUrl()}${routes.home.getPath()}`,\n                logoutHint: idTokenClaims === null || idTokenClaims === void 0 ? void 0 : idTokenClaims.login_hint\n            });\n        } catch (error) {\n            logger.error(stringifyError(error), {\n                action: Constants.Telemetry.Action.Logout,\n                actionModifier: Constants.Telemetry.ActionModifier.LogoutFailed,\n                error\n            });\n        }\n    });\n    return function logoutUser() {\n        return _ref.apply(this, arguments);\n    };\n}();\n","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n    try {\n        var info = gen[key](arg);\n        var value = info.value;\n    } catch (error) {\n        reject(error);\n        return;\n    }\n    if (info.done) {\n        resolve(value);\n    } else {\n        Promise.resolve(value).then(_next, _throw);\n    }\n}\nfunction _async_to_generator(fn) {\n    return function() {\n        var self = this, args = arguments;\n        return new Promise(function(resolve, reject) {\n            var gen = fn.apply(self, args);\n            function _next(value) {\n                asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n            }\n            function _throw(err) {\n                asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n            }\n            _next(undefined);\n        });\n    };\n}\nimport { fetchAccessTokens } from '@shared/msal/tokens';\nexport const getAccessTokenCB = /*#__PURE__*/ function() {\n    var _ref = _async_to_generator(function*(store) {\n        return yield fetchAccessTokens({\n            resources: [\n                'spza',\n                'arm',\n                'graph',\n                'marketplaceLeads',\n                'agreement'\n            ]\n        });\n    });\n    return function getAccessTokenCB(store) {\n        return _ref.apply(this, arguments);\n    };\n}();\n","// eslint-disable-next-line import/named\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n    try {\n        var info = gen[key](arg);\n        var value = info.value;\n    } catch (error) {\n        reject(error);\n        return;\n    }\n    if (info.done) {\n        resolve(value);\n    } else {\n        Promise.resolve(value).then(_next, _throw);\n    }\n}\nfunction _async_to_generator(fn) {\n    return function() {\n        var self = this, args = arguments;\n        return new Promise(function(resolve, reject) {\n            var gen = fn.apply(self, args);\n            function _next(value) {\n                asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n            }\n            function _throw(err) {\n                asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n            }\n            _next(undefined);\n        });\n    };\n}\nimport { shouldRefreshAccessToken } from '@shared/services/http/tokenRestClient';\nimport { SpzaInstrumentService } from '@shared/services/telemetry/spza/spzaInstrument';\nimport { stringifyError } from '@shared/utils/errorUtils';\nimport { createSetAccessTokenAction } from '@shared/actions/actions';\nimport { Constants } from '@shared/utils/constants';\nimport { logger } from '@src/logger';\nimport { HttpModule } from '@shared/services/http/httpProtocol';\nimport { mergeAccessToken } from '@shared/utils/accessToken';\nimport { fetchAccessTokens } from '@shared/msal/tokens';\n// If token expiration time is less than minimum, token should be refreshed.\nconst MIN_TIME_UNTIL_EXPIRATION_SEC = 60 * 30; // 30 minutes in seconds.\nconst logErrorTelemetry = (message, error)=>{\n    const payload = {\n        page: window.location.href || '',\n        action: Constants.Telemetry.Action.RefreshToken,\n        actionModifier: Constants.Telemetry.ActionModifier.Error,\n        details: JSON.stringify({\n            message,\n            error: error ? stringifyError(error) : ''\n        })\n    };\n    SpzaInstrumentService.getProvider().probe('logTelemetryInfo', payload);\n    logger.error(payload.details, {\n        action: payload.action,\n        actionModifier: payload.actionModifier\n    });\n};\nexport const refreshTokenIfNeeded = /*#__PURE__*/ function() {\n    var _ref = _async_to_generator(function*(store) {\n        const { accessToken } = store.getState().users;\n        if (accessToken && shouldRefreshAccessToken(accessToken, MIN_TIME_UNTIL_EXPIRATION_SEC)) {\n            try {\n                const refreshedAccessToken = yield fetchAccessTokens({\n                    resources: [\n                        'spza',\n                        'arm',\n                        'graph',\n                        'commerce',\n                        'jarvis',\n                        'marketplaceLeads',\n                        'pifd',\n                        'agreement'\n                    ]\n                });\n                if (refreshedAccessToken) {\n                    const storedToken = mergeAccessToken({\n                        currentAccessToken: accessToken,\n                        newAccessToken: refreshedAccessToken\n                    });\n                    store.dispatch(createSetAccessTokenAction(storedToken));\n                    HttpModule.updateAccessToken(storedToken);\n                } else {\n                    logErrorTelemetry('AppSourceClientHookup fail to refresh token. Null token created.');\n                }\n            } catch (error) {\n                logErrorTelemetry('AppSourceClientHookup fail to refresh token with error', error);\n            }\n        }\n    });\n    return function refreshTokenIfNeeded(store) {\n        return _ref.apply(this, arguments);\n    };\n}();\n","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n    try {\n        var info = gen[key](arg);\n        var value = info.value;\n    } catch (error) {\n        reject(error);\n        return;\n    }\n    if (info.done) {\n        resolve(value);\n    } else {\n        Promise.resolve(value).then(_next, _throw);\n    }\n}\nfunction _async_to_generator(fn) {\n    return function() {\n        var self = this, args = arguments;\n        return new Promise(function(resolve, reject) {\n            var gen = fn.apply(self, args);\n            function _next(value) {\n                asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n            }\n            function _throw(err) {\n                asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n            }\n            _next(undefined);\n        });\n    };\n}\nimport AuthClient from './client';\nimport { getWindow } from '@shared/services/window';\nimport { Constants } from '@shared/utils/constants';\nimport { routes } from '@shared/routerHistory';\nimport { logger } from '@src/logger';\nimport { stringifyError } from '@shared/utils/errorUtils';\nexport const postRedirect = /*#__PURE__*/ function() {\n    var _ref = _async_to_generator(function*() {\n        try {\n            const tokenResponse = yield AuthClient.getInstance().handleRedirectPromise();\n            if (tokenResponse) {\n                const { state } = tokenResponse;\n                logger.info(JSON.stringify({\n                    state\n                }), {\n                    action: Constants.Telemetry.Action.Login,\n                    actionModifier: Constants.Telemetry.ActionModifier.AuthRedirectSucceed\n                });\n            } else if (getWindow().location.pathname === routes.redirect.getPath()) {\n                // User navigated to redirect route and didn't come from AAD, so will be redirected to homepage as a fallback\n                const fallbackRoute = routes.home.getPath();\n                logger.warning(JSON.stringify({\n                    to: fallbackRoute\n                }), {\n                    action: Constants.Telemetry.Action.Login,\n                    actionModifier: Constants.Telemetry.ActionModifier.AuthRedirectNotFromAAD\n                });\n                getWindow().location.href = fallbackRoute;\n            }\n        } catch (error) {\n            logger.error(stringifyError(error), {\n                action: Constants.Telemetry.Action.Login,\n                actionModifier: Constants.Telemetry.ActionModifier.AuthRedirectFailed,\n                error\n            });\n        }\n    });\n    return function postRedirect() {\n        return _ref.apply(this, arguments);\n    };\n}();\n","// the hookup for the client, this is the code that gets executed when\n// the client finally gets its bundle.js. At that point, the dom needs to be\n// understood by react so it can take over from here on.\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n    try {\n        var info = gen[key](arg);\n        var value = info.value;\n    } catch (error) {\n        reject(error);\n        return;\n    }\n    if (info.done) {\n        resolve(value);\n    } else {\n        Promise.resolve(value).then(_next, _throw);\n    }\n}\nfunction _async_to_generator(fn) {\n    return function() {\n        var self = this, args = arguments;\n        return new Promise(function(resolve, reject) {\n            var gen = fn.apply(self, args);\n            function _next(value) {\n                asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n            }\n            function _throw(err) {\n                asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n            }\n            _next(undefined);\n        });\n    };\n}\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport React, { Suspense, useInsertionEffect } from 'react';\nimport { buildStore } from '@shared/store/createStore';\nimport thunk from 'redux-thunk';\nimport { Provider } from 'react-redux';\nimport { getAccessTokenCB } from '@shared/components/FederatedModules/RestClient';\nimport { ThemeProvider, initializeIcons, Stylesheet } from '@fluentui/react';\nimport { Constants } from '@shared/utils/constants';\nimport combineReducers from '@shared/reducers/reducers';\nimport { RootHandler } from '@shared/handlers/rootHandler';\nimport { getWindow } from '@shared/services/window';\nimport { decodeVulnerableDataInInitalState, generateGuid, logInitialTelemetryEvents, setProfileFeatureFlag } from '@shared/utils/appUtils';\nimport { createEnableNewNpsAction, createRehydrateClientStateAction, createChangeLocaleLanguage, createSetInitializedPCAInstanceAction } from '@shared/actions/actions';\nimport { initBrowserConfig } from '@shared/services/init/initBrowser';\nimport { changeBillingRegion, getTenantType, getUserTenantsDetails, setStorefrontName, updateUser } from '@shared/actions/thunkActions';\nimport { HttpModule } from '@shared/services/http/httpProtocol';\nimport { ensureClientLoggerInitialization, logger } from '@src/logger';\nimport { getCookieItem, saveCookieItem } from '@shared/utils/browserStorageUtils';\nimport ScrollToTopButton from '@shared/components/scrollToTopButton';\nimport Router from './Router';\nimport { refreshTokenIfNeeded } from './refreshTokenHandler';\nimport i18next from 'i18next';\nimport i18nInit from '@shared/i18n/client';\nimport { I18nextProvider } from 'react-i18next';\nimport { onError } from '@shared/handlers/onError';\nimport { appendHeaderTags } from '@shared/handlers/seo';\nimport RemoteLogger from '@layout/logger';\nimport RestClient from '@layout/RestClient';\nimport AuthClient from '@shared/msal/client';\nimport { createGuestUser } from '@shared/msal/user';\nimport { postRedirect } from '@shared/msal/postRedirect';\nimport { Hydrate, QueryClientProvider } from '@tanstack/react-query';\nimport { queryClient } from '@layout/RestClient';\nconst CHECK_TOKEN_INTERVAL_MSEC = 1000 * 60 * 10; // 10 minutes in milliseconds\nconst refreshTokenIfNeededInterval = /*#__PURE__*/ function() {\n    var _ref = _async_to_generator(function*(store) {\n        var _getWindow;\n        yield refreshTokenIfNeeded(store);\n        (_getWindow = getWindow()) === null || _getWindow === void 0 ? void 0 : _getWindow.setTimeout(refreshTokenIfNeededInterval, CHECK_TOKEN_INTERVAL_MSEC, store);\n    });\n    return function refreshTokenIfNeededInterval(store) {\n        return _ref.apply(this, arguments);\n    };\n}();\nexport function initApp() {\n    var _store_getState_users;\n    const currentWindow = getWindow();\n    const initialState = currentWindow.__INITIAL_STATE__;\n    decodeVulnerableDataInInitalState(initialState);\n    const prevCorrelationId = getCookieItem(Constants.Cookies.correlationId, false);\n    if (!prevCorrelationId) {\n        const correlationId = generateGuid();\n        initialState.config.correlationId = correlationId;\n        currentWindow.__INITIAL_STATE__ = initialState;\n        saveCookieItem(Constants.Cookies.correlationId, correlationId, 'expires=0');\n    }\n    const store = buildStore({\n        combinedReducers: combineReducers,\n        initialState,\n        middleware: [\n            thunk\n        ]\n    });\n    const localeFromUrl = currentWindow.location.pathname.split('/')[1];\n    saveCookieItem(Constants.Cookies.LocaleCookie, localeFromUrl);\n    initBrowserConfig(Constants.BrowserConfigs.appsource, store);\n    initializeIcons();\n    i18nInit();\n    HttpModule.updateAccessToken((_store_getState_users = store.getState().users) === null || _store_getState_users === void 0 ? void 0 : _store_getState_users.accessToken);\n    HttpModule.updateStore(store);\n    logInitialTelemetryEvents(store);\n    setProfileFeatureFlag(store);\n    currentWindow === null || currentWindow === void 0 ? void 0 : currentWindow.setTimeout(refreshTokenIfNeededInterval, CHECK_TOKEN_INTERVAL_MSEC, store);\n    const stylesheet = Stylesheet.getInstance();\n    stylesheet.setConfig({\n        namespace: Constants.AppName.AppSource\n    });\n    store.dispatch(setStorefrontName(Constants.StorefrontName.AppSource));\n    store.dispatch(getUserTenantsDetails());\n    store.dispatch(getTenantType());\n    store.dispatch(changeBillingRegion({\n        shouldSetCountyCodeCookie: false\n    }));\n    store.dispatch(createRehydrateClientStateAction());\n    store.dispatch(createEnableNewNpsAction({\n        enable: true\n    }));\n    store.dispatch(createChangeLocaleLanguage({\n        locale: localeFromUrl\n    }));\n    onError(currentWindow, store);\n    ensureClientLoggerInitialization(store);\n    RemoteLogger.init(logger.clientLogger.logger, {\n        correlationId: initialState.config.correlationId,\n        hostType: Constants.StorefrontName.AppSource\n    });\n    RestClient.init(()=>getAccessTokenCB(store));\n    AuthClient.initialize({\n        onSuccess: ()=>{\n            store.dispatch(createSetInitializedPCAInstanceAction({\n                initialized: true\n            }));\n            postRedirect();\n        },\n        onFailure: ()=>store.dispatch(updateUser({\n                userDetails: createGuestUser()\n            }))\n    });\n    return store;\n}\nconst dehydratedState = window.__REACT_QUERY_STATE__;\nconst App = ({ store })=>{\n    useInsertionEffect(()=>{\n        appendHeaderTags(store.getState());\n    }, []);\n    return /*#__PURE__*/ _jsx(RootHandler, {\n        landingView: store.getState().config.landingView,\n        store: store,\n        children: /*#__PURE__*/ _jsx(ThemeProvider, {\n            children: /*#__PURE__*/ _jsx(QueryClientProvider, {\n                client: queryClient,\n                children: /*#__PURE__*/ _jsxs(Hydrate, {\n                    state: dehydratedState,\n                    children: [\n                        /*#__PURE__*/ _jsx(I18nextProvider, {\n                            i18n: i18next,\n                            children: /*#__PURE__*/ _jsx(Provider, {\n                                store: store,\n                                children: /*#__PURE__*/ _jsx(Suspense, {\n                                    fallback: null,\n                                    children: /*#__PURE__*/ _jsx(Router, {})\n                                })\n                            })\n                        }),\n                        /*#__PURE__*/ _jsx(ScrollToTopButton, {})\n                    ]\n                })\n            })\n        })\n    });\n};\nexport default App;\n","/* istanbul ignore file */ import { logClientError } from '@shared/utils/appUtils';\nimport { getWindow } from '@shared/services/window';\nconst KNOWN_HYDRATION_INTERRUPTION_ERRORS = [\n    'Root did not complete',\n    'Minified React error #345'\n];\n/**\n * We are avoiding error propagation. This error happens when the client is not fully hydrated, yet user attempts to interact with it.\n * The client is still recoverable due to server-side navigation, although we will re-attempt to hydrate and trigger the client-side for full functionality.\n */ export function handleInterruptedHydration(errorMsg) {\n    const isKnownIssue = KNOWN_HYDRATION_INTERRUPTION_ERRORS.some((issue)=>{\n        var _errorMsg_includes;\n        return errorMsg === null || errorMsg === void 0 ? void 0 : (_errorMsg_includes = errorMsg.includes) === null || _errorMsg_includes === void 0 ? void 0 : _errorMsg_includes.call(errorMsg, issue);\n    });\n    if (isKnownIssue) {\n        var _getWindow_HYDRATE, _getWindow;\n        (_getWindow = getWindow()) === null || _getWindow === void 0 ? void 0 : (_getWindow_HYDRATE = _getWindow.HYDRATE) === null || _getWindow_HYDRATE === void 0 ? void 0 : _getWindow_HYDRATE.call(_getWindow);\n    }\n    return isKnownIssue;\n}\nexport function handleRecoverableHydrationError(error, env) {\n    if (env !== 'prod') {\n        // this error should be visible in non-production environments as awareness when recovrable hydration issues occur and should be fixed!\n        console.error(error);\n        throw error;\n    }\n    logClientError(error, `client side error: React recoverable hydration error ${error}`, '', true);\n}\n","import { getWindow } from '@shared/services/window';\nimport { Constants } from '@shared/utils/constants';\nimport { getSpzaUserIdAndNewUserModifier } from '@shared/utils/appUtils';\nconst predefinedPLT = {\n    scriptStart: -1,\n    hydrationStart: -1\n};\nfunction currentSinceRequestStart() {\n    var _getWindow_performance, _getWindow, _getWindow_performance1, _getWindow1;\n    const { navigationStart = 0, requestStart = 0 } = ((_getWindow = getWindow()) === null || _getWindow === void 0 ? void 0 : (_getWindow_performance = _getWindow.performance) === null || _getWindow_performance === void 0 ? void 0 : _getWindow_performance.timing) || {};\n    return ((_getWindow1 = getWindow()) === null || _getWindow1 === void 0 ? void 0 : (_getWindow_performance1 = _getWindow1.performance) === null || _getWindow_performance1 === void 0 ? void 0 : _getWindow_performance1.now()) - (requestStart - navigationStart);\n}\nexport function setScriptStart() {\n    predefinedPLT.scriptStart = currentSinceRequestStart();\n}\nexport function setHydrationStart() {\n    predefinedPLT.hydrationStart = currentSinceRequestStart();\n}\nfunction getAssetsLoadTime() {\n    var _getWindow_performance, _getWindow, _getWindow_performance1, _getWindow1;\n    const { navigationStart = 0, requestStart = 0 } = ((_getWindow = getWindow()) === null || _getWindow === void 0 ? void 0 : (_getWindow_performance = _getWindow.performance) === null || _getWindow_performance === void 0 ? void 0 : _getWindow_performance.timing) || {};\n    const perfEntries = ((_getWindow1 = getWindow()) === null || _getWindow1 === void 0 ? void 0 : (_getWindow_performance1 = _getWindow1.performance) === null || _getWindow_performance1 === void 0 ? void 0 : _getWindow_performance1.getEntriesByType('resource')) || [];\n    return perfEntries.filter(({ initiatorType })=>initiatorType === 'script' || initiatorType === 'link').map(({ name: src, responseEnd })=>({\n            src,\n            requestStart,\n            responseEnd,\n            duration: responseEnd - (requestStart - navigationStart)\n        }));\n}\nconst whiteListedAssets = [\n    'staticstorage',\n    'agorasstatic'\n];\nfunction getSlowestAssetDuration({ assets }) {\n    return assets.filter(({ src })=>whiteListedAssets.some((whiteListedAsset)=>src.includes(whiteListedAsset))).sort((a, b)=>b.duration - a.duration)[0];\n}\nexport function telemetryPageLoadTime({ isEmbedded, landingView }) {\n    if (!getWindow()) {\n        return;\n    }\n    const performanceNow = getWindow().performance.now();\n    const { navigationStart = 0, requestStart = 0, responseStart = 0, responseEnd = 0 } = getWindow().performance.timing;\n    const duration = performanceNow - (requestStart - navigationStart);\n    const { scriptStart, hydrationStart } = predefinedPLT;\n    const assets = getAssetsLoadTime();\n    const { duration: slowestAssetDuration, src: slowestAssetURL } = getSlowestAssetDuration({\n        assets\n    }) || {};\n    const { spzaUserId: spzaId } = getSpzaUserIdAndNewUserModifier() || {};\n    const hostType = isEmbedded ? Constants.appSourceEmbed : Constants.appSource;\n    const pageLoadTime = {\n        hostType,\n        landingView,\n        responseStart: Math.max(responseStart - requestStart, 0),\n        responseEnd: Math.max(responseEnd - requestStart, 0),\n        scriptStart,\n        hydrationStart,\n        performanceNow,\n        duration,\n        durationSinceRequestStart: duration,\n        slowestAssetDuration,\n        slowestAssetURL\n    };\n    getWindow().pageLoadTime = pageLoadTime;\n    getWindow().telemetry({\n        action: Constants.Telemetry.Action.RootHandler,\n        actionModifier: Constants.Telemetry.ActionModifier.End,\n        details: pageLoadTime,\n        spzaId\n    });\n    getWindow().telemetry({\n        action: Constants.Telemetry.Action.PerfResources,\n        actionModifier: Constants.Telemetry.ActionModifier.Complete,\n        details: {\n            length: assets.length,\n            assets\n        },\n        spzaId\n    });\n    getWindow().flushTelemetry();\n}\n","import { actionCreator } from '@shared/actions/actions';\nexport const TileDataLoadingAction = 'TileDataLoadingAction';\nexport const createTileDataLoadingAction = actionCreator(TileDataLoadingAction);\nexport const TileDataReceivedAction = 'TileDataReceivedAction';\nexport const createTileDataReceivedAction = actionCreator(TileDataReceivedAction);\n","import { actionCreator } from './actions';\nexport const SetQueryAction = 'SetQueryAction';\nexport const createSetQueryAction = actionCreator(SetQueryAction);\nexport const SetRequestFilteredQueryAction = 'SetRequestFilteredQueryAction';\nexport const createSetRequestFilteredQueryAction = actionCreator(SetRequestFilteredQueryAction);\nexport const SetResponseFilteredQueryAction = 'SetResponseFilteredQueryAction';\nexport const createSetResponseFilteredQueryAction = actionCreator(SetResponseFilteredQueryAction);\nexport const SetRequestFilteredEntityTypeAction = 'SetRequestFilteredEntityTypeAction';\nexport const createSetRequestFilteredEntityTypeAction = actionCreator(SetRequestFilteredEntityTypeAction);\nexport const SetRequestFilteredLoadingAction = 'SetRequestFilteredLoadingAction';\nexport const createSetRequestFilteredLoadingAction = actionCreator(SetRequestFilteredLoadingAction);\nexport const SetRequestFilteredLoadedAction = 'SetRequestFilteredLoadedAction';\nexport const createSetRequestFilteredLoadedAction = actionCreator(SetRequestFilteredLoadedAction);\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport React from 'react';\nimport { mergeStyleSets, Spinner } from '@fluentui/react';\nimport propTypes from 'prop-types';\nimport classNames from 'classnames';\nconst styles = mergeStyleSets({\n    container: {\n        display: 'flex',\n        justifyContent: 'center',\n        alignItems: 'center',\n        width: '100%',\n        height: '50vh'\n    }\n});\nconst LoadingSpinner = (_, context)=>/*#__PURE__*/ _jsx(\"div\", {\n        className: classNames([\n            'loading',\n            styles.container\n        ]),\n        children: /*#__PURE__*/ _jsx(Spinner, {\n            label: context.loc('Gallery_Loading', 'Loading...'),\n            ariaLive: \"assertive\",\n            labelPosition: \"left\"\n        })\n    });\nLoadingSpinner.contextTypes = {\n    loc: propTypes.func\n};\nexport default LoadingSpinner;\n","/* istanbul ignore file */ function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nfunction _object_spread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        var ownKeys = Object.keys(source);\n        if (typeof Object.getOwnPropertySymbols === \"function\") {\n            ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n            }));\n        }\n        ownKeys.forEach(function(key) {\n            _define_property(target, key, source[key]);\n        });\n    }\n    return target;\n}\nfunction ownKeys(object, enumerableOnly) {\n    var keys = Object.keys(object);\n    if (Object.getOwnPropertySymbols) {\n        var symbols = Object.getOwnPropertySymbols(object);\n        if (enumerableOnly) {\n            symbols = symbols.filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n            });\n        }\n        keys.push.apply(keys, symbols);\n    }\n    return keys;\n}\nfunction _object_spread_props(target, source) {\n    source = source != null ? source : {};\n    if (Object.getOwnPropertyDescriptors) {\n        Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n        ownKeys(Object(source)).forEach(function(key) {\n            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n    }\n    return target;\n}\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport React, { Suspense, useMemo, useState } from 'react';\nimport { matchPath, useLocation } from 'react-router-dom';\nimport { useSelector } from 'react-redux';\nimport LoadingSpinner from '@shared/components/LoadingSpinner';\nconst withSuspense = (Component)=>{\n    return /*#__PURE__*/ _jsx(Suspense, {\n        fallback: /*#__PURE__*/ _jsx(LoadingSpinner, {}),\n        children: Component\n    });\n};\nexport function useClientRoutes(options) {\n    const { routes } = options;\n    const [localeRoutes, ...otherRoutes] = routes;\n    const location = useLocation();\n    const [ssrEntry] = useState(()=>location.pathname);\n    const isEmbedded = useSelector((state)=>state.config.isEmbedded);\n    return useMemo(()=>{\n        const children = localeRoutes.children.map((route)=>{\n            var _matchingPath_pattern;\n            var _route_path;\n            const path = `/:locale/${(_route_path = route.path) !== null && _route_path !== void 0 ? _route_path : ''}`;\n            const matchingPath = matchPath(path, ssrEntry);\n            const shouldWrapWithSuspense = isEmbedded || !(route.index || (matchingPath === null || matchingPath === void 0 ? void 0 : (_matchingPath_pattern = matchingPath.pattern) === null || _matchingPath_pattern === void 0 ? void 0 : _matchingPath_pattern.path) === path);\n            return _object_spread_props(_object_spread({}, route), {\n                element: shouldWrapWithSuspense ? withSuspense(route.element) : route.element\n            });\n        });\n        return [\n            _object_spread_props(_object_spread({}, localeRoutes), {\n                children\n            }),\n            ...otherRoutes\n        ];\n    }, [\n        ssrEntry,\n        routes,\n        isEmbedded\n    ]);\n}\n","import { routes } from '@shared/routerHistory';\nimport { Constants } from '@shared/utils/constants';\nimport { appDetailsEnsureAsyncData, checkoutEnsureAsyncData, dynamicCampaignEnsureAsyncData, serivceDetailsEnsureAsyncData } from './ensureAsyncData';\nexport const PATHS_TO_VIEW_MAP = {\n    [Constants.home]: {\n        view: routes.home.name\n    },\n    marketplace: {\n        view: routes.marketplace.name\n    },\n    [Constants.appsGallery]: {\n        view: routes.marketplace.name\n    },\n    [Constants.cloudsIndustryGallery]: {\n        view: routes.marketplaceCloudsIndustry.name\n    },\n    'product/:productId/:entityId': {\n        view: routes.appDetails.name,\n        ensureAsyncDataSSR: appDetailsEnsureAsyncData\n    },\n    'marketplace/checkout/:entityId': {\n        view: routes.checkout.name,\n        ensureAsyncDataSSR: checkoutEnsureAsyncData\n    },\n    'marketplace/order-confirmation': {\n        view: routes.orderConfirmation.name\n    },\n    partners: {\n        view: routes.partners.name\n    },\n    [Constants.csGallery]: {\n        view: routes.marketplaceServices.name\n    },\n    [`${Constants.csGallery}/:entityId`]: {\n        view: routes.serviceDetail.name,\n        ensureAsyncDataSSR: serivceDetailsEnsureAsyncData\n    },\n    [`${Constants.partnersAppSource}/*`]: {\n        view: routes.marketplacePartners.name\n    },\n    [`${Constants.partnersAppSource}/:entityId/:tab`]: {\n        view: routes.marketplacePartnerDetail.name\n    },\n    [`${Constants.partnersAppSource}/:entityId/:tab/contact`]: {\n        view: routes.marketplacePartnerDetailContact.name\n    },\n    [`${Constants.partnersAppSource}/suggestion`]: {\n        view: routes.marketplacePartnerSuggestion.name\n    },\n    'marketplace/consultingservices/:entityId': {\n        view: routes.serviceDetail.name\n    },\n    'campaigns/:publisher/:id': {\n        view: routes.campaigns.name,\n        ensureAsyncDataSSR: dynamicCampaignEnsureAsyncData\n    },\n    'user/my-favourites': {\n        view: routes.userFavouriteDetail.name\n    },\n    'user/private-offers': {\n        view: routes.privateOffers.name\n    },\n    ':privateOffer/product/:productId/:entityId': {\n        view: routes.privateOfferDetails.name,\n        ensureAsyncDataSSR: appDetailsEnsureAsyncData\n    },\n    sitemap: {\n        view: routes.sitemap.name\n    },\n    redirect: {\n        view: routes.redirect.name\n    }\n};\n","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n    try {\n        var info = gen[key](arg);\n        var value = info.value;\n    } catch (error) {\n        reject(error);\n        return;\n    }\n    if (info.done) {\n        resolve(value);\n    } else {\n        Promise.resolve(value).then(_next, _throw);\n    }\n}\nfunction _async_to_generator(fn) {\n    return function() {\n        var self = this, args = arguments;\n        return new Promise(function(resolve, reject) {\n            var gen = fn.apply(self, args);\n            function _next(value) {\n                asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n            }\n            function _throw(err) {\n                asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n            }\n            _next(undefined);\n        });\n    };\n}\nimport { logger } from '@src/logger';\nimport { SpzaInstrumentService } from '@shared/services/telemetry/spza/spzaInstrument';\nimport { getWindow } from '@shared/services/window';\nimport { Constants } from './constants';\nimport { stringifyError } from './errorUtils';\nexport function getSignUpHost(modalType) {\n    if (modalType === Constants.SignInType.SignInWith_MSA || modalType === Constants.SignInType.SwitchTo_MSA) {\n        return 'https://signup.live.com/signup?wa=wsignin1.0&rpsnv=13&rver=6.7.6643.0&wp=MBI_SSL';\n    }\n    return 'https://signup.microsoft.com/signUp?sku=appsource';\n}\nexport function getSignInHeader(context) {\n    return context.loc('SI_SignInAppSource');\n}\nexport function getTitle(context) {\n    return context.loc('SI_WorkAccount');\n}\nexport function getRedirectString(modalType) {\n    if (modalType === Constants.SignInType.SignInWith_MSA || modalType === Constants.SignInType.SwitchTo_MSA) {\n        return '&wreply=';\n    }\n    return '&ru=';\n}\nexport function handleSignUp() {\n    return _handleSignUp.apply(this, arguments);\n}\nfunction _handleSignUp() {\n    _handleSignUp = _async_to_generator(function*() {\n        const payload = {\n            page: getWindow().location.href,\n            action: Constants.Telemetry.Action.Click,\n            actionModifier: Constants.Telemetry.ActionModifier.Signup,\n            details: JSON.stringify({\n                message: 'Clicked on sign-up. Navigating to office portal'\n            })\n        };\n        SpzaInstrumentService.getProvider().probe('logAndFlushTelemetryInfo', payload);\n        logger.info(payload.details, {\n            action: payload.action,\n            actionModifier: payload.actionModifier\n        });\n        try {\n            const redirectUrl = `https://signup.microsoft.com/signUp?sku=appsource&ru=${encodeURIComponent(getWindow().location.href)}&pi=1`;\n            getWindow().location.href = redirectUrl;\n        } catch (err) {\n            const payload = {\n                page: getWindow().location.href,\n                action: Constants.Telemetry.Action.Login,\n                actionModifier: Constants.Telemetry.ActionModifier.Error,\n                details: stringifyError(err)\n            };\n            SpzaInstrumentService.getProvider().probe(Constants.Telemetry.ProbeName.LogInfo, payload);\n            logger.error(payload.details, {\n                action: payload.action,\n                actionModifier: payload.actionModifier\n            });\n        }\n    });\n    return _handleSignUp.apply(this, arguments);\n}\n","/* eslint-disable react/forbid-dom-props */ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n    try {\n        var info = gen[key](arg);\n        var value = info.value;\n    } catch (error) {\n        reject(error);\n        return;\n    }\n    if (info.done) {\n        resolve(value);\n    } else {\n        Promise.resolve(value).then(_next, _throw);\n    }\n}\nfunction _async_to_generator(fn) {\n    return function() {\n        var self = this, args = arguments;\n        return new Promise(function(resolve, reject) {\n            var gen = fn.apply(self, args);\n            function _next(value) {\n                asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n            }\n            function _throw(err) {\n                asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n            }\n            _next(undefined);\n        });\n    };\n}\nfunction _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport SpzaComponent from '@shared/components/spzaComponent';\nimport { SpzaInstrumentService } from '@shared/services/telemetry/spza/spzaInstrument';\nimport { removeURLParameter, isEmailValid } from '@shared/utils/appUtils';\nimport { urlReplace, routes } from '@shared/routerHistory';\nimport { stringifyError } from '@shared/utils/errorUtils';\nimport { getWindow } from '@shared/services/window';\nimport * as signInUtils from '@shared/utils/signin';\nimport { useTelemetry } from '@shared/hooks/useTelemetry';\nimport { logger } from '@src/logger';\nimport { Constants } from '@shared/utils/constants';\nimport { loginRedirectUser } from '@shared/msal/loginRedirect';\n// eslint-disable-next-line react-hooks/rules-of-hooks\nconst [{ pageAction }] = useTelemetry();\nexport class SignInModal extends SpzaComponent {\n    componentDidMount() {\n        const modalType = Constants.SignInType[this.props.signInModalType];\n        const details = {\n            signInModal: modalType,\n            ctaType: Constants.CTAType[this.props.ctaType],\n            message: `Opened sign in modal ${modalType}`\n        };\n        const payload = {\n            page: getWindow().location.href,\n            action: Constants.Telemetry.Action.Open,\n            actionModifier: Constants.Telemetry.ActionModifier.LoginModal,\n            details: JSON.stringify(details)\n        };\n        this.instrument.probe('logAndFlushTelemetryInfo', payload);\n        logger.info(payload.details, {\n            action: payload.action,\n            actionModifier: payload.actionModifier\n        });\n        pageAction(null, {\n            content: {\n                contentType: Constants.JsllSaas.SignInModalShow\n            }\n        });\n    }\n    validateEmail(inputEmail) {\n        if (isEmailValid(inputEmail)) {\n            this.setState({\n                inputEmail,\n                validEmail: true\n            });\n        } else {\n            this.setState({\n                inputEmail,\n                validEmail: false\n            });\n        }\n    }\n    getRedirectUrl(id) {\n        let redirectUrl = encodeURIComponent(getWindow().location.href);\n        if (this.props.redirect === 'app') {\n            if (!this.props.ctaType) {\n                throw new Error('CTA Type is required');\n            }\n            const entityId = id || this.props.entityId;\n            if (entityId) {\n                redirectUrl = encodeURIComponent(getWindow().location.href + this.getQueryParam(Constants.QueryStrings.modalAppId) + entityId + this.getQueryParam(Constants.QueryStrings.signInModalType, true) + this.props.signInModalType + this.getQueryParam(Constants.QueryStrings.ctaType, true) + this.props.ctaType);\n            }\n        }\n        if (this.props.redirect === 'service') {\n            if (!this.props.ctaType) {\n                throw new Error('CTA Type is required');\n            }\n            const entityId = id || this.props.entityId;\n            if (entityId) {\n                redirectUrl = encodeURIComponent(getWindow().location.href + this.getQueryParam(Constants.QueryStrings.modalServiceId) + entityId + this.getQueryParam(Constants.QueryStrings.signInModalType, true) + this.props.signInModalType + this.getQueryParam(Constants.QueryStrings.ctaType, true) + this.props.ctaType);\n            }\n        }\n        if (this.props.redirect === Constants.SignInRedirect.Review) {\n            const entityId = this.props.entityId;\n            if (entityId) {\n                redirectUrl = encodeURIComponent(getWindow().location.href + this.getQueryParam(Constants.QueryStrings.modalRatingId) + entityId + this.getQueryParam(Constants.QueryStrings.signInModalType, true) + this.props.signInModalType);\n            }\n        }\n        if (this.props.redirect === Constants.SignInRedirect.Checkout) {\n            const entityId = this.props.entityId;\n            if (entityId) {\n                // redirect to checkout page\n                // if there are any query params, keep those as well\n                redirectUrl = encodeURIComponent(getWindow().location.origin + this.context.buildHref(routes.checkout, {\n                    entityId\n                }, {}, true));\n            }\n        }\n        if (this.props.redirect === 'reportAbuse') {\n            const entityId = id || this.props.entityId;\n            const reviewAppId = this.props.reviewAppId;\n            if (entityId) {\n                redirectUrl = encodeURIComponent(getWindow().location.href + this.getQueryParam(Constants.QueryStrings.modalReviewId) + entityId + this.getQueryParam(Constants.QueryStrings.modalReviewAppId, true) + reviewAppId + this.getQueryParam(Constants.QueryStrings.modalReviewTitle, true) + this.props.reviewTitle + this.getQueryParam(Constants.QueryStrings.signInModalType, true) + this.props.signInModalType);\n            }\n        }\n        return redirectUrl;\n    }\n    getQueryParam(param, isMultiParam = false) {\n        const queryParam = getWindow().location.href.indexOf('?') > -1 || isMultiParam ? '&' + param + '=' : '?' + param + '=';\n        // If we do a sign-up before the sign-in, we will have modalAppId in the queryParams.\n        // We need to get rid of it before signing in since there will be duplicate params.\n        if (getWindow().location.href.indexOf(param) > -1) {\n            const pageURL = removeURLParameter(getWindow().location.href, param);\n            urlReplace(pageURL);\n        }\n        return queryParam;\n    }\n    // Sign up flow also uses SignIn URL as redirect (with absolute path) so that when user lands back on SPZA\n    // (s)he gets redirected for sign-in flow and gets signed in\n    getSignInRedirectUrl() {\n        var _this = this;\n        return _async_to_generator(function*() {\n            try {\n                return _this.getRedirectUrl();\n            } catch (err) {\n                const payload = {\n                    page: getWindow().location.href,\n                    action: Constants.Telemetry.Action.Login,\n                    actionModifier: Constants.Telemetry.ActionModifier.Error,\n                    details: stringifyError(err)\n                };\n                SpzaInstrumentService.getProvider().probe(Constants.Telemetry.ProbeName.LogInfo, payload);\n                logger.error(payload.details, {\n                    action: payload.action,\n                    actionModifier: payload.actionModifier\n                });\n            }\n        })();\n    }\n    getSignUpUrl(email) {\n        var _this = this;\n        return _async_to_generator(function*() {\n            const signInRedirectUrl = yield _this.getSignInRedirectUrl();\n            return `${_this.signUp}${signInUtils.getRedirectString(_this.props.signInModalType)}${encodeURIComponent(signInRedirectUrl)}&pi=1&email=${email}`;\n        })();\n    }\n    signInUser() {\n        var _this = this;\n        return _async_to_generator(function*() {\n            // Set the flushLog to true since we are navigating away from the SPZA website\n            // and we need to flush all the logs present in the telemetry buffer\n            const { signInModalType, ctaType } = _this.props;\n            const { inputEmail } = _this.state;\n            const details = {\n                signInModal: Constants.SignInType[`${signInModalType}`],\n                ctaType: Constants.CTAType[`${ctaType}`],\n                message: 'Clicked on signIn. Hand-off to AAD for authentication'\n            };\n            const payload = {\n                page: getWindow().location.href,\n                action: Constants.Telemetry.Action.Click,\n                actionModifier: Constants.Telemetry.ActionModifier.LoginModal,\n                details: JSON.stringify(details)\n            };\n            _this.instrument.probe('logAndFlushTelemetryInfo', payload);\n            logger.info(payload.details, {\n                action: payload.action,\n                actionModifier: payload.actionModifier\n            });\n            const pageAfterRedirect = decodeURIComponent(_this.getRedirectUrl());\n            loginRedirectUser({\n                to: pageAfterRedirect,\n                email: inputEmail\n            });\n        })();\n    }\n    onChange(event) {\n        if (event.target.value && event.target.value.length > 0) {\n            this.isEmailEmpty = false;\n        } else {\n            this.isEmailEmpty = true;\n        }\n        this.validateEmail(event.target.value);\n    }\n    onKeyDown(event) {\n        // When user presses enter key, we should sign-in\n        if (event.keyCode === Constants.SystemKey.Enter) {\n            this.signInUser();\n        }\n    }\n    handleSignIn() {\n        this.signInUser();\n    }\n    handleSignUp() {\n        var _this = this;\n        return _async_to_generator(function*() {\n            // Set the flushLog to true since we are navigating away from the SPZA website\n            // and we need to flush all the logs present in the telemetry buffer\n            const details = {\n                signInModal: Constants.SignInType[_this.props.signInModalType],\n                ctaType: Constants.CTAType[_this.props.ctaType],\n                message: 'Clicked on sign-up. Navigating to office portal'\n            };\n            const payload = {\n                page: getWindow().location.href,\n                action: Constants.Telemetry.Action.Click,\n                actionModifier: Constants.Telemetry.ActionModifier.Signup,\n                details: JSON.stringify(details)\n            };\n            _this.instrument.probe('logAndFlushTelemetryInfo', payload);\n            logger.info(payload.details, {\n                action: payload.action,\n                actionModifier: payload.actionModifier\n            });\n            // Send the sign-in based URL so that when user lands back on SPZA post Sign-up we get him/her signed in as well.\n            const { inputEmail } = _this.state;\n            const signUpUrl = yield _this.getSignUpUrl(inputEmail);\n            const form = document.createElement('form');\n            form.setAttribute('method', 'post');\n            form.setAttribute('action', signUpUrl);\n            const emailField = document.createElement('input');\n            emailField.setAttribute('type', 'hidden');\n            emailField.setAttribute('name', 'StepsData.Email');\n            emailField.setAttribute('value', inputEmail);\n            form.appendChild(emailField);\n            document.body.appendChild(form);\n            form.submit();\n        })();\n    }\n    // TODO : Remove this once Office onboarding is done\n    renderOldSignInModal() {\n        return /*#__PURE__*/ _jsxs(\"div\", {\n            className: \"prompContainer\",\n            children: [\n                /*#__PURE__*/ _jsx(\"div\", {\n                    className: \"toolBar\",\n                    children: /*#__PURE__*/ _jsx(\"button\", {\n                        id: \"cancelButton\",\n                        \"aria-label\": \"close\",\n                        className: \"cancel\",\n                        onClick: this.props.dismissModal,\n                        children: /*#__PURE__*/ _jsx(\"span\", {\n                            className: \"c-glyph\"\n                        })\n                    })\n                }),\n                /*#__PURE__*/ _jsxs(\"div\", {\n                    className: \"signInModal\",\n                    children: [\n                        /*#__PURE__*/ _jsx(\"div\", {\n                            className: \"contentHeader\",\n                            children: signInUtils.getSignInHeader(this.context)\n                        }),\n                        /*#__PURE__*/ _jsxs(\"div\", {\n                            className: \"formCell signInFormCell\",\n                            children: [\n                                /*#__PURE__*/ _jsxs(\"div\", {\n                                    className: \"cellHeader\",\n                                    children: [\n                                        signInUtils.getTitle(this.context),\n                                        /*#__PURE__*/ _jsx(\"span\", {\n                                            className: \"required\"\n                                        })\n                                    ]\n                                }),\n                                /*#__PURE__*/ _jsx(\"input\", {\n                                    className: \"c-text-field f-flex signInInput\",\n                                    onChange: this.onChange.bind(this),\n                                    onKeyDown: this.onKeyDown.bind(this),\n                                    autoFocus: true,\n                                    type: \"text\",\n                                    placeholder: \"someone@example.com\",\n                                    name: \"default\"\n                                })\n                            ]\n                        }),\n                        /*#__PURE__*/ _jsx(\"div\", {\n                            className: \"signInButton\",\n                            children: /*#__PURE__*/ _jsx(\"button\", {\n                                name: \"button\",\n                                className: \"c-button requestButton\",\n                                type: \"submit\",\n                                disabled: this.isEmailEmpty,\n                                \"data-bi-id\": Constants.JsllCTAId.SignIn,\n                                \"data-bi-area\": \"SignIn Dialog\",\n                                onClick: this.handleSignIn.bind(this),\n                                children: this.context.loc('SI_SignIn')\n                            })\n                        }),\n                        /*#__PURE__*/ _jsxs(\"div\", {\n                            className: \"signupFooter\",\n                            children: [\n                                this.context.loc('SI_For'),\n                                /*#__PURE__*/ _jsx(\"button\", {\n                                    \"data-bi-id\": Constants.JsllCTAId.SignUp,\n                                    \"data-bi-area\": \"SignIn Dialog\",\n                                    onClick: ()=>{\n                                        this.handleSignUp();\n                                    },\n                                    children: this.context.loc('SI_Signup')\n                                })\n                            ]\n                        })\n                    ]\n                })\n            ]\n        });\n    }\n    renderTheCancelButton() {\n        const { disableDismissModal } = this.props;\n        return !disableDismissModal && /*#__PURE__*/ _jsx(\"div\", {\n            className: \"toolBar\",\n            children: /*#__PURE__*/ _jsx(\"button\", {\n                \"data-bi-id\": \"cancelButton\",\n                \"aria-label\": \"close\",\n                className: \"cancel\",\n                \"data-bi-name\": Constants.JsllSaas.SignIn,\n                onClick: this.props.dismissModal,\n                children: /*#__PURE__*/ _jsx(\"span\", {\n                    className: \"c-glyph\"\n                })\n            })\n        });\n    }\n    renderSignInContent(title, subTitle, disclaimer, accountType) {\n        return /*#__PURE__*/ _jsxs(\"div\", {\n            className: \"prompContainer newSignInModal\",\n            \"aria-label\": title,\n            children: [\n                this.renderTheCancelButton(),\n                /*#__PURE__*/ _jsxs(\"div\", {\n                    className: \"signInModal\",\n                    children: [\n                        /*#__PURE__*/ _jsx(\"h1\", {\n                            className: \"title\",\n                            children: title\n                        }),\n                        /*#__PURE__*/ _jsx(\"div\", {\n                            className: \"subTitle\",\n                            children: subTitle\n                        }),\n                        /*#__PURE__*/ _jsxs(\"div\", {\n                            className: \"disclaimer\",\n                            children: [\n                                /*#__PURE__*/ _jsx(\"span\", {\n                                    className: \"c-glyph\"\n                                }),\n                                disclaimer\n                            ]\n                        }),\n                        /*#__PURE__*/ _jsxs(\"div\", {\n                            className: \"formCell signInFormCell\",\n                            children: [\n                                /*#__PURE__*/ _jsxs(\"div\", {\n                                    className: \"cellHeader\",\n                                    children: [\n                                        accountType,\n                                        /*#__PURE__*/ _jsx(\"span\", {\n                                            className: \"required\"\n                                        })\n                                    ]\n                                }),\n                                /*#__PURE__*/ _jsx(\"input\", {\n                                    className: \"c-text-field f-flex signInInput\",\n                                    onChange: this.onChange.bind(this),\n                                    onKeyDown: this.onKeyDown.bind(this),\n                                    autoFocus: true,\n                                    type: \"text\",\n                                    placeholder: \"someone@example.com\",\n                                    \"aria-label\": \"sign in modal is now open. Use your work or school account\",\n                                    name: \"Use your work or school account\"\n                                })\n                            ]\n                        }),\n                        /*#__PURE__*/ _jsx(\"div\", {\n                            className: \"signInButton\",\n                            children: /*#__PURE__*/ _jsx(\"button\", {\n                                name: \"button\",\n                                className: \"c-button requestButton\",\n                                \"data-bi-id\": Constants.JsllCTAId.SignIn,\n                                \"data-bi-name\": Constants.JsllSaas.SignIn,\n                                type: \"submit\",\n                                disabled: this.isEmailEmpty,\n                                onClick: this.handleSignIn.bind(this),\n                                children: this.context.loc('SI_SignIn')\n                            })\n                        }),\n                        /*#__PURE__*/ _jsxs(\"div\", {\n                            className: \"signupFooter\",\n                            children: [\n                                this.context.loc('SI_For'),\n                                /*#__PURE__*/ _jsx(\"button\", {\n                                    onClick: ()=>{\n                                        this.handleSignUp();\n                                    },\n                                    children: this.context.loc('SignInModal_SignUp')\n                                })\n                            ]\n                        })\n                    ]\n                })\n            ]\n        });\n    }\n    renderDualPurposeLoginModal() {\n        return this.renderSignInContent(this.context.loc('SignInModal_Title1'), this.context.loc('SignInModal_SubTitle1'), this.context.loc('SignInModal_Disclaimer1'), this.context.loc('SignInModal_AccountType1'));\n    }\n    renderWorkOnlyModal() {\n        if (this.props.entityType && this.props.entityType === Constants.EntityType.Service) {\n            return this.renderSignInContent(this.context.loc('SignInModal_Title1'), this.context.loc('SignInModal_SubTitle1'), this.context.locParams('SignInModal_ServiceDisclaimer2', [\n                this.props.serviceName\n            ]), this.context.loc('SignInModal_AccountType2'));\n        } else {\n            return this.renderSignInContent(this.context.loc('SignInModal_Title1'), this.context.loc('SignInModal_SubTitle1'), this.context.locParams('SignInModal_Disclaimer2', [\n                this.props.appName\n            ]), this.context.loc('SignInModal_AccountType2'));\n        }\n    }\n    renderSwitchAccountModal() {\n        return this.renderSignInContent(this.context.loc('SignInModal_Title2'), this.context.locParams('SignInModal_SubTitle2', [\n            this.props.appName\n        ]), this.context.locParams('SignInModal_Disclaimer3', [\n            this.props.email\n        ]), this.context.loc('SignInModal_AccountType2'));\n    }\n    renderMSAOnlySignInModal() {\n        return this.renderSignInContent(this.context.loc('SignInModal_Title1'), this.context.loc('SignInModal_SubTitle1'), this.context.locParams('SignInModal_AppRequiresMSADisclaimer', [\n            this.props.appName\n        ]), this.context.loc('SignInModal_PersonalAccount'));\n    }\n    renderSwitchToMSAModal() {\n        return this.renderSignInContent(this.context.loc('SignInModal_SwitchToPersonalAccount'), this.context.locParams('SignInModal_AppRequiresMSADisclaimer', [\n            this.props.appName\n        ]), this.context.locParams('SignInModal_GenericAutoLogout', [\n            this.props.email\n        ]), this.context.loc('SignInModal_PersonalAccount'));\n    }\n    renderModalContent(modalType) {\n        let modalContent = null;\n        switch(modalType){\n            // This case is added to handle legacy sign-in modal\n            case Constants.SignInType.OldSignInModal:\n                modalContent = this.renderOldSignInModal();\n                break;\n            // The new dual purpose login modal\n            case Constants.SignInType.SignInWith_MSA_AAD:\n                modalContent = this.renderDualPurposeLoginModal();\n                break;\n            // Work only login modal\n            case Constants.SignInType.SignInWith_AAD:\n                modalContent = this.renderWorkOnlyModal();\n                break;\n            // Sign-in modal for MSA only\n            case Constants.SignInType.SignInWith_MSA:\n                modalContent = this.renderMSAOnlySignInModal();\n                break;\n            // Sign-in modal to switch from MSA to AAD\n            case Constants.SignInType.SwitchTo_AAD:\n                modalContent = this.renderSwitchAccountModal();\n                break;\n            case Constants.SignInType.SwitchTo_MSA:\n                modalContent = this.renderSwitchToMSAModal();\n                break;\n            default:\n                modalContent = this.renderOldSignInModal();\n        }\n        return modalContent;\n    }\n    renderImpl() {\n        let ariaLabel = 'sign in is now open, ';\n        if (this.props.signInModalType === Constants.SignInType.SignInWith_MSA_AAD || this.props.signInModalType === Constants.SignInType.SignInWith_AAD) {\n            ariaLabel += this.context.loc('SignInModal_Title1');\n        } else if (this.props.signInModalType === Constants.SignInType.SwitchTo_AAD) {\n            ariaLabel += this.context.loc('SignInModal_Title2');\n        } else {\n            ariaLabel += this.context.loc('SI_SignInAppSource');\n        }\n        return /*#__PURE__*/ _jsx(\"div\", {\n            role: \"dialog\",\n            \"aria-label\": ariaLabel,\n            className: \"signInModalClass\",\n            children: this.renderModalContent(this.props.signInModalType)\n        });\n    }\n    constructor(props, context){\n        super(props, context), _define_property(this, \"context\", void 0), _define_property(this, \"signUp\", void 0), _define_property(this, \"instrument\", void 0), _define_property(this, \"isEmailEmpty\", true);\n        this.instrument = SpzaInstrumentService.getProvider();\n        this.state = {\n            inputEmail: '',\n            validEmail: false\n        };\n        this.signUp = signInUtils.getSignUpHost(this.props.signInModalType);\n        if (process.env.SIGNUP_ORIGIN) {\n            this.signUp += '&origin=' + process.env.SIGNUP_ORIGIN;\n        }\n    }\n}\nSignInModal.contextTypes = {\n    loc: PropTypes.func,\n    locParams: PropTypes.func,\n    renderErrorModal: PropTypes.func,\n    buildHref: PropTypes.func\n};\n","function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nimport { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from \"react/jsx-runtime\";\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { Carousel } from 'react-responsive-carousel';\nimport SpzaComponent from './../spzaComponent';\nimport { MediaType } from '../../Models';\nimport { convertTimeToSeconds } from '../../utils/appUtils';\nlet url = require('url');\nvar VideoSupplier = /*#__PURE__*/ function(VideoSupplier) {\n    VideoSupplier[\"YouTube\"] = \"YouTube\";\n    VideoSupplier[\"Vimeo\"] = \"Vimeo\";\n    return VideoSupplier;\n}(VideoSupplier || {});\nclass MediaModal extends SpzaComponent {\n    getQueryString(query, exclude) {\n        let result = '';\n        const keys = query ? Object.keys(query) : [];\n        const keysLength = keys.length;\n        for(let i = 0; i < keysLength; i++){\n            if (exclude && exclude.indexOf(keys[i]) < 0) {\n                if (keys[i] && keys[i].toLowerCase() === 't') {\n                    // When using youtube embed, the parameter \"t\" should be replaced with \"start\", and the value should be\n                    // numeric only (according to youtube api - https://developers.google.com/youtube/player_parameters)\n                    const startTimeInSeconds = isNaN(query[keys[i]]) ? convertTimeToSeconds(query[keys[i]]).toString() : query[keys[i]];\n                    result += '&' + 'start' + '=' + startTimeInSeconds;\n                } else {\n                    result += '&' + keys[i] + '=' + query[keys[i]];\n                }\n            }\n        }\n        return result;\n    }\n    parseUrl(videoUrl) {\n        let parsedUrl = url.parse(videoUrl, true);\n        let hostName = '';\n        let pathName = '';\n        if (parsedUrl) {\n            hostName = parsedUrl.hostname ? parsedUrl.hostname.toLowerCase() : hostName;\n            // If the pathname doesn't start with \"/\", add \"/\" since in IE the pathname doesn't start with \"/\" which breaks the video url generating logic.\n            pathName = (parsedUrl.pathname && parsedUrl.pathname.length > 0 && parsedUrl.pathname[0] !== '/' ? '/' : '') + parsedUrl.pathname;\n        }\n        return {\n            hostname: hostName,\n            pathname: pathName,\n            query: parsedUrl ? parsedUrl.query : ''\n        };\n    }\n    generateYouTubeVideoSource(parsedUrl, videoUrl) {\n        const youtubeConfigs = this.videoSuppliers[\"YouTube\"];\n        let sourceUrl = '';\n        if ((parsedUrl.hostname === 'www.youtube.com' || parsedUrl.hostname === 'youtube.com') && parsedUrl.query !== null && parsedUrl.query.v) {\n            sourceUrl = `${youtubeConfigs.host}${parsedUrl.query.v}?${this.getQueryString(parsedUrl.query, [\n                'v'\n            ])}`;\n        } else if (parsedUrl.hostname === 'youtu.be') {\n            let pathValues = parsedUrl.pathname.split('/');\n            if (pathValues.length > 1) {\n                sourceUrl = `${youtubeConfigs.host}${pathValues[1]}?${this.getQueryString(parsedUrl.query)}`;\n            }\n        } else if ((parsedUrl.hostname === 'www.youtube.com' || parsedUrl.hostname === 'youtube.com') && parsedUrl.pathname.indexOf('embed') >= 0) {\n            sourceUrl = videoUrl;\n            if (sourceUrl.indexOf('?') < 0) {\n                sourceUrl = sourceUrl + '?';\n            }\n        }\n        return `${sourceUrl}&${youtubeConfigs.query}`;\n    }\n    generateVimeoVideoSource(parsedUrl, videoUrl) {\n        const vimeoConfigs = this.videoSuppliers[\"Vimeo\"];\n        const vimeoParsingRegex = /vimeo\\.com\\/(video\\/)?(external\\/)?(\\d+)/;\n        const matches = videoUrl.match(vimeoParsingRegex);\n        const vimeoId = matches && matches.length && matches[matches.length - 1] || 'vimeoId';\n        return `${vimeoConfigs.host}${vimeoId}?${this.getQueryString(parsedUrl.query)}&${vimeoConfigs.query}`;\n    }\n    parseVideo(item) {\n        const parsedUrl = this.parseUrl(item.link);\n        let supplier;\n        let sourceUrl = '';\n        if (parsedUrl.hostname.indexOf('youtube') >= 0 || parsedUrl.hostname.indexOf('youtu.be') >= 0) {\n            supplier = \"YouTube\";\n            sourceUrl = this.generateYouTubeVideoSource(parsedUrl, item.link);\n        } else if (parsedUrl.hostname.indexOf('vimeo') >= 0) {\n            supplier = \"Vimeo\";\n            sourceUrl = this.generateVimeoVideoSource(parsedUrl, item.link);\n        }\n        if (parsedUrl.hostname === 'aka.ms') {\n            sourceUrl = item.link;\n        }\n        return {\n            sourceUrl,\n            supplier\n        };\n    }\n    pauseVideoRefs() {\n        if (this.videosRefs && this.videosRefs.length) {\n            for (const videoRef of this.videosRefs){\n                if (videoRef.supplier && this.videoSuppliers[videoRef.supplier] && this.videoSuppliers[videoRef.supplier].pauseCommand && videoRef.element && videoRef.element.contentWindow && videoRef.element.contentWindow.postMessage) {\n                    videoRef.element.contentWindow.postMessage(JSON.stringify(this.videoSuppliers[videoRef.supplier].pauseCommand), '*');\n                }\n            }\n        }\n    }\n    renderImpl() {\n        this.videosRefs = [];\n        return /*#__PURE__*/ _jsx(\"div\", {\n            role: \"dialog\",\n            \"aria-label\": \"media modal is now open\",\n            className: \"mediaModal\",\n            children: /*#__PURE__*/ _jsxs(\"div\", {\n                className: \"dialogContent\",\n                children: [\n                    /*#__PURE__*/ _jsx(\"div\", {\n                        className: \"toolBar\",\n                        children: /*#__PURE__*/ _jsx(\"button\", {\n                            className: \"cancel\",\n                            \"aria-label\": \"close\",\n                            onClick: this.props.dismissModal,\n                            \"data-bi-id\": \"cancelButton\",\n                            \"data-bi-name\": this.props.payload.media && this.props.payload.media[this.props.payload.defaultIndex || 0] && this.props.payload.media[this.props.payload.defaultIndex || 0].type,\n                            autoFocus: true,\n                            children: /*#__PURE__*/ _jsx(\"span\", {\n                                className: \"c-glyph\"\n                            })\n                        })\n                    }),\n                    /*#__PURE__*/ _jsx(\"div\", {\n                        className: \"mediaContainer\",\n                        children: /*#__PURE__*/ _jsx(Carousel, {\n                            showThumbs: false,\n                            autoPlay: false,\n                            showStatus: false,\n                            useKeyboardArrows: true,\n                            infiniteLoop: false,\n                            selectedItem: this.props.payload.defaultIndex || 0,\n                            onChange: ()=>this.pauseVideoRefs(),\n                            children: this.props.payload.media.map((item)=>{\n                                if (item.type === MediaType.Image) {\n                                    return /*#__PURE__*/ _jsx(\"img\", {\n                                        src: item.link\n                                    });\n                                } else if (item.type === MediaType.Video) {\n                                    const parsedVideo = this.parseVideo(item);\n                                    return /*#__PURE__*/ _jsx(\"iframe\", {\n                                        ref: (element)=>this.videosRefs.push({\n                                                element,\n                                                supplier: parsedVideo.supplier\n                                            }),\n                                        className: \"embedded-video\",\n                                        title: item.name || 'Video',\n                                        width: \"100%\",\n                                        height: \"100%\",\n                                        src: parsedVideo.sourceUrl,\n                                        frameBorder: 0\n                                    });\n                                } else {\n                                    return /*#__PURE__*/ _jsx(_Fragment, {});\n                                }\n                            })\n                        })\n                    })\n                ]\n            })\n        });\n    }\n    constructor(...args){\n        super(...args), _define_property(this, \"videoSuppliers\", {\n            [\"YouTube\"]: {\n                host: 'https://www.youtube.com/embed/',\n                query: 'showinfo=0&rel=0&modestbranding=1&cc_load_policy=1&enablejsapi=1',\n                pauseCommand: {\n                    event: 'command',\n                    func: 'pauseVideo'\n                }\n            },\n            [\"Vimeo\"]: {\n                host: 'https://player.vimeo.com/video/',\n                query: 'api=1',\n                pauseCommand: {\n                    method: 'pause',\n                    value: 'true'\n                }\n            }\n        }), _define_property(this, \"videosRefs\", []);\n    }\n}\nexport { MediaModal as default };\nMediaModal.contextTypes = {\n    loc: PropTypes.func,\n    renderErrorModal: PropTypes.func\n};\n","function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport SpzaComponent from './../spzaComponent';\nimport { MediaType } from '../../Models';\nimport { convertTimeToSeconds, focusElement } from '../../utils/appUtils';\nimport { Constants } from '../../utils/constants';\nlet classNames = require('classnames-minimal');\nlet url = require('url');\nclass VideoModal extends SpzaComponent {\n    componentDidMount() {\n        // move focus to the cancel button\n        // sets the document.activeElement to be the button\n        focusElement(Constants.SearchBy.Id, this.initialFocusElementId);\n    }\n    getQueryString(query, exclude) {\n        let result = '';\n        const keys = query ? Object.keys(query) : [];\n        const keysLength = keys.length;\n        for(let i = 0; i < keysLength; i++){\n            if (exclude && exclude.indexOf(keys[i]) < 0) {\n                if (keys[i] && keys[i].toLowerCase() === 't') {\n                    // When using youtube embed, the parameter \"t\" should be replaced with \"start\", and the value should be\n                    // numeric only (according to youtube api - https://developers.google.com/youtube/player_parameters)\n                    const startTimeInSeconds = isNaN(query[keys[i]]) ? convertTimeToSeconds(query[keys[i]]).toString() : query[keys[i]];\n                    result += '&' + 'start' + '=' + startTimeInSeconds;\n                } else {\n                    result += '&' + keys[i] + '=' + query[keys[i]];\n                }\n            }\n        }\n        return result;\n    }\n    parseUrl(videoUrl) {\n        let parsedUrl = url.parse(videoUrl, true);\n        let hostName = '';\n        let pathName = '';\n        if (parsedUrl) {\n            hostName = parsedUrl.hostname ? parsedUrl.hostname.toLowerCase() : hostName;\n            // If the pathname doesn't start with \"/\", add \"/\" since in IE the pathname doesn't start with \"/\" which breaks the video url generating logic.\n            pathName = (parsedUrl.pathname && parsedUrl.pathname.length > 0 && parsedUrl.pathname[0] !== '/' ? '/' : '') + parsedUrl.pathname;\n        }\n        return {\n            hostname: hostName,\n            pathname: pathName,\n            query: parsedUrl ? parsedUrl.query : ''\n        };\n    }\n    generateVideoSource() {\n        let videoUrl = this.props.video.videoLink;\n        let parsedUrl = this.parseUrl(videoUrl);\n        let sourceUrl = '';\n        if (parsedUrl.hostname.indexOf('youtube') >= 0 || parsedUrl.hostname.indexOf('youtu.be') >= 0) {\n            if ((parsedUrl.hostname === 'www.youtube.com' || parsedUrl.hostname === 'youtube.com') && parsedUrl.query !== null && parsedUrl.query.v) {\n                sourceUrl = this.youtubeEmbedTemplate + parsedUrl.query.v + '?' + this.getQueryString(parsedUrl.query, [\n                    'v'\n                ]);\n            } else if (parsedUrl.hostname === 'youtu.be') {\n                let pathValues = parsedUrl.pathname.split('/');\n                if (pathValues.length > 1) {\n                    sourceUrl = this.youtubeEmbedTemplate + pathValues[1] + '?' + this.getQueryString(parsedUrl.query);\n                }\n            } else if ((parsedUrl.hostname === 'www.youtube.com' || parsedUrl.hostname === 'youtube.com') && parsedUrl.pathname.indexOf('embed') >= 0) {\n                sourceUrl = videoUrl;\n                if (sourceUrl.indexOf('?') < 0) {\n                    sourceUrl = sourceUrl + '?';\n                }\n            }\n            // regardless, add the modesty params\n            sourceUrl = sourceUrl + '&autoplay=1&showinfo=0&rel=0&modestbranding=1&cc_load_policy=1';\n        } else if (parsedUrl.hostname.indexOf('vimeo') >= 0) {\n            // we are doing a naive parse here\n            const vimeoParsingRegex = /vimeo\\.com\\/(video\\/)?(external\\/)?(\\d+)/;\n            const matches = videoUrl.match(vimeoParsingRegex);\n            const vimeoId = matches && matches.length && matches[matches.length - 1] || 'vimeoId';\n            sourceUrl = this.vimeoEmbedTemplate + vimeoId + '?' + this.getQueryString(parsedUrl.query) + '&autoplay=1';\n        }\n        // our redirect\n        if (parsedUrl.hostname === 'aka.ms') {\n            sourceUrl = videoUrl;\n        }\n        return sourceUrl;\n    }\n    renderImpl() {\n        let sourceUrl = this.generateVideoSource();\n        const videoDialogClasses = classNames({\n            spza_videoClass: true,\n            videoDisplay: sourceUrl !== ''\n        });\n        return /*#__PURE__*/ _jsx(\"div\", {\n            role: \"dialog\",\n            \"aria-label\": \"video is now open\",\n            className: videoDialogClasses,\n            children: /*#__PURE__*/ _jsxs(\"div\", {\n                className: \"dialogContent\",\n                children: [\n                    /*#__PURE__*/ _jsx(\"div\", {\n                        className: \"toolBar\",\n                        children: /*#__PURE__*/ _jsx(\"button\", {\n                            className: \"cancel\",\n                            \"aria-label\": \"close\",\n                            onClick: this.props.dismissModal,\n                            \"data-bi-id\": \"cancelButton\",\n                            \"data-bi-name\": MediaType.Video,\n                            autoFocus: true,\n                            children: /*#__PURE__*/ _jsx(\"span\", {\n                                className: \"c-glyph\"\n                            })\n                        })\n                    }),\n                    /*#__PURE__*/ _jsx(\"div\", {\n                        className: \"videoContainer\",\n                        children: sourceUrl !== '' ? /*#__PURE__*/ _jsx(\"iframe\", {\n                            title: this.props.video.videoName ? this.props.video.videoName : 'Video',\n                            width: \"100%\",\n                            height: \"100%\",\n                            src: sourceUrl,\n                            frameBorder: 0\n                        }) : /*#__PURE__*/ _jsx(\"img\", {\n                            src: this.props.video.thumbnailURL\n                        })\n                    })\n                ]\n            })\n        });\n    }\n    constructor(...args){\n        super(...args), _define_property(this, \"youtubeEmbedTemplate\", 'https://www.youtube.com/embed/'), _define_property(this, \"vimeoEmbedTemplate\", 'https://player.vimeo.com/video/'), _define_property(this, \"initialFocusElementId\", 'cancelButton');\n    }\n}\nexport { VideoModal as default };\nVideoModal.contextTypes = {\n    loc: PropTypes.func,\n    renderErrorModal: PropTypes.func\n};\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport SpzaComponent from './../spzaComponent';\nclass DriveModal extends SpzaComponent {\n    renderImpl() {\n        let sourceUrl = this.props.drive.urlLink;\n        return /*#__PURE__*/ _jsx(\"div\", {\n            role: \"dialog\",\n            \"aria-label\": \"test drive is now open\",\n            className: \"driveModalClass\",\n            children: /*#__PURE__*/ _jsxs(\"div\", {\n                className: \"dialogContent\",\n                children: [\n                    /*#__PURE__*/ _jsx(\"div\", {\n                        className: \"toolBar\",\n                        children: /*#__PURE__*/ _jsx(\"button\", {\n                            id: \"cancelButton\",\n                            \"aria-label\": \"close\",\n                            className: \"cancel\",\n                            onClick: this.props.dismissModal,\n                            children: /*#__PURE__*/ _jsx(\"span\", {\n                                className: \"c-glyph\"\n                            })\n                        })\n                    }),\n                    /*#__PURE__*/ _jsx(\"div\", {\n                        className: \"driveContainer\",\n                        children: /*#__PURE__*/ _jsx(\"iframe\", {\n                            frameBorder: \"0\",\n                            width: \"1200\",\n                            height: \"675\",\n                            src: sourceUrl\n                        })\n                    })\n                ]\n            })\n        });\n    }\n}\nexport { DriveModal as default };\nDriveModal.contextTypes = {\n    loc: PropTypes.func,\n    renderErrorModal: PropTypes.func\n};\n","import { getFormattedString } from './appUtils';\nimport { loadPartnerManifest } from './partnerManifestLoader';\nconst config = loadPartnerManifest();\nexport function getPowerBIEmbedReportURL(groupId, reportId) {\n    let handOffUrl = config.fieldHub.embedEndpoint;\n    let urlArgs = [\n        reportId,\n        groupId\n    ];\n    return getFormattedString(handOffUrl, urlArgs);\n}\nexport function getPowerBIEmbedParams(reportName) {\n    let defaultFieldObj = config.fieldHub.queryParams['Default'];\n    let fieldObj = reportName && typeof reportName === 'string' ? config.fieldHub.queryParams[reportName] : defaultFieldObj;\n    let result = {\n        groupId: config.fieldHub.groupId,\n        reportId: config.fieldHub.reportId,\n        sectionId: defaultFieldObj.sectionId,\n        datasetId: config.fieldHub.datasetId\n    };\n    if (fieldObj && fieldObj.sectionId) {\n        result.sectionId = fieldObj.sectionId;\n    }\n    return result;\n}\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport SpzaComponent from './../spzaComponent';\nimport { getPowerBIEmbedParams, getPowerBIEmbedReportURL } from '../../utils/fieldHubUtils';\nexport class FieldHubModal extends SpzaComponent {\n    componentDidMount() {\n        const reportData = getPowerBIEmbedParams(this.props.iframeProps.reportName);\n        const groupId = reportData.groupId;\n        const reportId = reportData.reportId;\n        const embedUrl = getPowerBIEmbedReportURL(groupId, reportId);\n        // Refresh the access token if it has expired or about to expire\n        this.props.getReportEmbedToken(reportData).then((token)=>{\n            if (token) {\n                const sectionId = reportData.sectionId;\n                let config = {\n                    type: 'report',\n                    accessToken: token,\n                    embedUrl: embedUrl,\n                    id: reportId,\n                    settings: {\n                        filterPaneEnabled: false\n                    },\n                    pageName: sectionId\n                };\n                let reportContainer = document.getElementById('reportContainer');\n                if (reportContainer && window && window['powerbi']) {\n                    window['powerbi'].embed(reportContainer, config);\n                }\n            }\n        });\n    }\n    renderImpl() {\n        return /*#__PURE__*/ _jsx(\"div\", {\n            role: \"dialog\",\n            \"aria-label\": \"field hub is now open\",\n            className: \"fieldHubModalClass\",\n            children: /*#__PURE__*/ _jsxs(\"div\", {\n                className: \"dialogContent\",\n                children: [\n                    /*#__PURE__*/ _jsx(\"div\", {\n                        className: \"toolBar\",\n                        children: /*#__PURE__*/ _jsx(\"button\", {\n                            id: \"cancelButton\",\n                            \"aria-label\": \"close\",\n                            className: \"cancel\",\n                            onClick: this.props.dismissModal,\n                            children: /*#__PURE__*/ _jsx(\"span\", {\n                                className: \"c-glyph\"\n                            })\n                        })\n                    }),\n                    /*#__PURE__*/ _jsx(\"div\", {\n                        className: \"iframeContainer\",\n                        id: \"reportContainer\"\n                    })\n                ]\n            })\n        });\n    }\n}\nFieldHubModal.contextTypes = {\n    loc: PropTypes.func,\n    renderErrorModal: PropTypes.func\n};\n","import * as React from 'react';\nimport { FieldHubModal as FieldHubModalComponent } from '../../components/modals/fieldHubModal';\nimport { getReportEmbedToken } from '../../actions/thunkActions';\nlet { connect } = require('react-redux');\nexport const mapStateToProps = (state, ownProps)=>{\n    return ownProps;\n};\nexport const mapDispatchToProps = (dispatch, ownProps)=>{\n    return {\n        getReportEmbedToken: (reportData)=>dispatch(getReportEmbedToken(reportData))\n    };\n};\nexport const FieldHubModal = connect(mapStateToProps, mapDispatchToProps)(FieldHubModalComponent);\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport SpzaComponent from './../spzaComponent';\nimport { logClientError } from '../../utils/appUtils';\nexport class ErrorModal extends SpzaComponent {\n    renderFailImpl(err) {\n        // We don't want error modal while trying to render error modal since it goes into a loop.\n        // So, we are seperately handling the error case.\n        logClientError(err, 'client side error: [From errorModal] ');\n        return null;\n    }\n    // Error modal is rendered from the main client hookup\n    // It may not have context hence the localization is handled here via localizedStrings props\n    translate(key, fallback) {\n        let context = this.context;\n        if (context && context.loc) {\n            return context.loc(key, fallback);\n        } else if (this.props.localizedStrings) {\n            let translated = this.props.localizedStrings[key];\n            translated = translated ? translated : fallback ? fallback : key;\n            return translated;\n        }\n    }\n    renderImpl() {\n        return /*#__PURE__*/ _jsx(\"div\", {\n            role: \"dialog\",\n            \"aria-label\": \"error is now open. something went wrong\",\n            className: \"errorModalClass\",\n            children: /*#__PURE__*/ _jsxs(\"div\", {\n                className: \"prompContainer\",\n                children: [\n                    /*#__PURE__*/ _jsx(\"div\", {\n                        className: \"toolBar\",\n                        children: /*#__PURE__*/ _jsx(\"button\", {\n                            id: \"cancelButton\",\n                            \"aria-label\": \"close\",\n                            className: \"cancel\",\n                            onClick: this.props.dismissModal,\n                            children: /*#__PURE__*/ _jsx(\"span\", {\n                                className: \"c-glyph\"\n                            })\n                        })\n                    }),\n                    /*#__PURE__*/ _jsxs(\"div\", {\n                        className: \"errorModal\",\n                        children: [\n                            /*#__PURE__*/ _jsx(\"div\", {\n                                className: \"contentHeader\",\n                                children: this.props.isEmbed ? this.translate('ERROR_Title_Embed', 'Sorry, an error occurred.') : this.translate('ERROR_Title', 'Something went wrong')\n                            }),\n                            /*#__PURE__*/ _jsxs(\"div\", {\n                                className: \"errorContent\",\n                                children: [\n                                    /*#__PURE__*/ _jsx(\"div\", {\n                                        className: \"errorMessage\",\n                                        children: this.props.isEmbed ? this.translate('ERROR_Subtitle_Embed', 'Please try again.') : this.translate('ERROR_Subtitle', 'Go to the homepage to try that again.')\n                                    }),\n                                    /*#__PURE__*/ _jsx(\"div\", {\n                                        className: \"dismissErrorButton\",\n                                        children: /*#__PURE__*/ _jsx(\"button\", {\n                                            name: \"button\",\n                                            className: \"c-button\",\n                                            type: \"submit\",\n                                            onClick: this.props.dismissModal,\n                                            children: this.props.isEmbed ? this.translate('Dialog_Close', 'Close') : this.translate('ERROR_Link', 'Home')\n                                        })\n                                    })\n                                ]\n                            })\n                        ]\n                    })\n                ]\n            })\n        });\n    }\n    constructor(props, context){\n        super(props, context);\n    }\n}\nErrorModal.contextTypes = {\n    loc: PropTypes.func\n};\n","import * as React from 'react';\nlet { connect } = require('react-redux');\nimport { ErrorModal as ErrorModalComponent } from './../../components/modals/errorModal';\nexport const mapStateToProps = (state, ownProps)=>{\n    return {\n        localizedStrings: state.config.locStrings\n    };\n};\nconst ErrorModal = connect(mapStateToProps)(ErrorModalComponent);\nexport default ErrorModal;\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport * as React from 'react';\nimport SpzaComponent from './../spzaComponent';\nimport Animation from '../animation';\nclass AnimationModal extends SpzaComponent {\n    renderImpl() {\n        return /*#__PURE__*/ _jsx(\"div\", {\n            role: \"dialog\",\n            \"aria-label\": \"animation is now open and playing\",\n            className: \"animationModalClass\",\n            children: /*#__PURE__*/ _jsx(\"div\", {\n                className: \"animationCanvas\",\n                children: /*#__PURE__*/ _jsx(Animation, {\n                    isCircular: true\n                })\n            })\n        });\n    }\n}\nexport { AnimationModal as default };\n","function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport SpzaComponent from './../spzaComponent';\nimport { Constants } from '../../utils/constants';\nclass DisclaimerModal extends SpzaComponent {\n    renderImpl() {\n        return /*#__PURE__*/ _jsx(\"div\", {\n            role: \"dialog\",\n            \"aria-label\": \"disclaimer is now open\",\n            className: \"disclaimerModalClass\",\n            children: /*#__PURE__*/ _jsxs(\"div\", {\n                className: \"prompContainer\",\n                children: [\n                    /*#__PURE__*/ _jsx(\"div\", {\n                        className: \"title\",\n                        children: this.props.payload.title\n                    }),\n                    /*#__PURE__*/ _jsx(\"div\", {\n                        className: \"description\",\n                        children: this.props.payload.description\n                    }),\n                    /*#__PURE__*/ _jsx(\"div\", {\n                        className: \"footer\",\n                        children: /*#__PURE__*/ _jsx(\"button\", {\n                            name: \"button\",\n                            className: \"c-button requestButton\",\n                            type: \"submit\",\n                            \"data-bi-id\": Constants.JsllCTAId.Continue,\n                            \"data-bi-area\": \"Disclaimer Dialog\",\n                            onClick: this.props.dismissModal,\n                            children: this.context.loc('Dialog_Continue')\n                        })\n                    })\n                ]\n            })\n        });\n    }\n    constructor(props, context){\n        super(props, context), _define_property(this, \"context\", void 0);\n    }\n}\nexport { DisclaimerModal as default };\nDisclaimerModal.contextTypes = {\n    loc: PropTypes.func,\n    renderErrorModal: PropTypes.func\n};\n","/* eslint-disable react/forbid-dom-props */ function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport SpzaComponent from './../spzaComponent';\nimport { NpsModule } from './../../utils/npsUtils';\nimport { Constants } from './../../utils/constants';\nimport { SpzaInstrumentService } from '../../services/telemetry/spza/spzaInstrument';\nimport { getWindow } from '../../services/window';\nimport { isEmailValid } from './../../utils/appUtils';\nimport { storeFeedback } from '@shared/services/feedback';\nimport { logger } from '@src/logger';\nimport classNames from 'classnames';\nclass NpsModal extends SpzaComponent {\n    editDescription(e) {\n        this.description = e.target ? e.target.value : '';\n        this.setState({\n            description: this.description,\n            privacy: this.state.privacy,\n            validEmailUI: this.state.validEmailUI,\n            emailAddress: this.state.emailAddress\n        });\n    }\n    handleRatingChange(ratingNumber) {\n        this.setState({\n            rating: ratingNumber,\n            description: this.description,\n            privacy: this.state.privacy,\n            validEmailUI: this.state.validEmailUI,\n            emailAddress: this.state.emailAddress\n        });\n    }\n    decline() {\n        const payload = {\n            page: getWindow().location.href,\n            action: Constants.Telemetry.Action.NPS,\n            actionModifier: Constants.Telemetry.ActionModifier.Declined,\n            details: ''\n        };\n        this.instrument.probe('logAndFlushTelemetryInfo', payload);\n        logger.info(payload.details, {\n            action: payload.action,\n            actionModifier: payload.actionModifier\n        });\n        NpsModule.Declined();\n        this.props.dismissModal();\n    }\n    handleSubmit() {\n        if (!this.state.rating || this.state.privacy && !this.state.validEmailUI) {\n            return this.decline();\n        }\n        const npsResult = {\n            rating: this.state.rating,\n            description: this.state.description,\n            email: this.state.privacy ? this.state.emailAddress : ''\n        };\n        const payload = {\n            page: getWindow().location.href,\n            action: Constants.Telemetry.Action.NPS,\n            actionModifier: Constants.Telemetry.ActionModifier.Info,\n            details: JSON.stringify(npsResult),\n            isFeedback: true\n        };\n        this.instrument.probe('logAndFlushTelemetryInfo', payload);\n        storeFeedback({\n            action: Constants.Telemetry.Action.NPS,\n            actionModifier: Constants.Telemetry.ActionModifier.Info,\n            details: JSON.stringify(npsResult)\n        });\n        NpsModule.Submitted();\n        this.props.dismissModal();\n    }\n    onChangePrivacy() {\n        this.setState({\n            privacy: !this.state.privacy,\n            validEmailUI: this.state.validEmailUI,\n            emailAddress: this.state.emailAddress\n        });\n    }\n    editEmail(e) {\n        this.setState({\n            privacy: this.state.privacy,\n            validEmailUI: this.state.validEmailUI,\n            emailAddress: e.target ? e.target.value : ''\n        });\n        if (this.state.privacy) {\n            if (isEmailValid(this.state.emailAddress)) {\n                this.setState({\n                    privacy: this.state.privacy,\n                    validEmailUI: true,\n                    emailAddress: e.target ? e.target.value : ''\n                });\n            } else {\n                this.setState({\n                    privacy: this.state.privacy,\n                    validEmailUI: false,\n                    emailAddress: e.target ? e.target.value : ''\n                });\n            }\n        }\n    }\n    handleNumberBtnKeyPress(evt, value) {\n        evt = evt || window.event;\n        // only the enter key can toggle the user profile button to show/hide dropdown menu\n        if (evt.charCode === Constants.SystemKey.Enter) {\n            this.handleRatingChange(value, evt);\n        }\n        evt.preventDefault();\n    }\n    ratingPane(self) {\n        const paneContent = [];\n        const arr = [\n            '0',\n            '1',\n            '2',\n            '3',\n            '4',\n            '5',\n            '6',\n            '7',\n            '8',\n            '9',\n            '10'\n        ];\n        // eslint-disable-next-line array-callback-return\n        arr.map((value)=>{\n            const classes = classNames({\n                ratingSelected: self.state.rating === value,\n                ratingBlock: true,\n                ratingTen: value === '10'\n            });\n            if (value === '0') {\n                paneContent.push(/*#__PURE__*/ _jsx(\"li\", {\n                    className: classes,\n                    value: value.toString(),\n                    tabIndex: 0,\n                    onClick: ()=>this.handleRatingChange.bind(this)(value),\n                    onKeyPress: (event)=>{\n                        this.handleNumberBtnKeyPress(event, value);\n                    },\n                    children: /*#__PURE__*/ _jsx(\"a\", {\n                        className: \"ratingNumber\",\n                        children: value\n                    })\n                }));\n            } else {\n                paneContent.push(/*#__PURE__*/ _jsx(\"li\", {\n                    className: classes,\n                    value: value.toString(),\n                    tabIndex: 0,\n                    onClick: ()=>this.handleRatingChange.bind(this)(value),\n                    onKeyPress: (event)=>{\n                        this.handleNumberBtnKeyPress(event, value);\n                    },\n                    children: /*#__PURE__*/ _jsx(\"a\", {\n                        className: \"ratingNumber\",\n                        children: value\n                    })\n                }));\n            }\n        });\n        return paneContent;\n    }\n    renderImpl() {\n        const emailInputClasses = classNames({\n            'c-text-field': true,\n            npsEmailInput: true,\n            invalidEmailInput: this.state.privacy && !this.state.validEmailUI\n        });\n        return /*#__PURE__*/ _jsx(\"div\", {\n            role: \"dialog\",\n            \"aria-label\": \"nps is now open, tell us what you think\",\n            className: \"npsModalClass\",\n            children: /*#__PURE__*/ _jsxs(\"div\", {\n                className: \"prompContainer\",\n                children: [\n                    /*#__PURE__*/ _jsx(\"div\", {\n                        className: \"toolBar\",\n                        children: /*#__PURE__*/ _jsx(\"button\", {\n                            id: \"cancelButton\",\n                            \"aria-label\": \"close\",\n                            className: \"cancel\",\n                            onClick: this.decline.bind(this),\n                            children: /*#__PURE__*/ _jsx(\"span\", {\n                                className: \"c-glyph\"\n                            })\n                        })\n                    }),\n                    /*#__PURE__*/ _jsxs(\"div\", {\n                        className: \"npsModal\",\n                        children: [\n                            /*#__PURE__*/ _jsx(\"div\", {\n                                className: \"contentHeader\",\n                                children: this.context.loc('Feedback_Header')\n                            }),\n                            /*#__PURE__*/ _jsx(\"div\", {\n                                className: \"rateHeader\",\n                                children: this.context.loc('NPS_RatingQuestion')\n                            }),\n                            /*#__PURE__*/ _jsxs(\"div\", {\n                                className: \"rateSlider\",\n                                children: [\n                                    /*#__PURE__*/ _jsx(\"ul\", {\n                                        className: \"ratingControl\",\n                                        children: this.ratingPane(this)\n                                    }),\n                                    /*#__PURE__*/ _jsxs(\"div\", {\n                                        className: \"ratingLabel\",\n                                        children: [\n                                            /*#__PURE__*/ _jsx(\"div\", {\n                                                className: \"ratingLeftLabel\",\n                                                children: this.context.loc('NPS_NotLikely', 'Not at all likely')\n                                            }),\n                                            /*#__PURE__*/ _jsx(\"div\", {\n                                                className: \"ratingRightLabel\",\n                                                children: this.context.loc('NPS_Likely', 'Very likely')\n                                            })\n                                        ]\n                                    })\n                                ]\n                            }),\n                            /*#__PURE__*/ _jsx(\"div\", {\n                                className: \"rateReasonInput\",\n                                children: /*#__PURE__*/ _jsx(\"textarea\", {\n                                    id: \"subscription\",\n                                    className: \"c-text-field f-flex npsTextArea\",\n                                    onChange: this.editDescription.bind(this),\n                                    value: this.description,\n                                    autoFocus: true,\n                                    placeholder: `${this.context.loc('NPS_RatingReasonQuestion', 'Tell us more about your experience')}.\\n${this.context.loc('Specific_app_feedback')}`,\n                                    name: \"default\"\n                                })\n                            }),\n                            /*#__PURE__*/ _jsx(\"div\", {\n                                className: \"c-checkbox npsPrivacy\",\n                                children: /*#__PURE__*/ _jsxs(\"label\", {\n                                    className: \"c-label privacyHeader\",\n                                    children: [\n                                        /*#__PURE__*/ _jsx(\"input\", {\n                                            \"aria-label\": \"Control label (unselected)\",\n                                            type: \"checkbox\",\n                                            id: \"checkboxId1\",\n                                            name: \"checkboxId1\",\n                                            value: \"value1\",\n                                            \"aria-checked\": \"false\",\n                                            checked: this.state.privacy,\n                                            onChange: this.onChangePrivacy.bind(this)\n                                        }),\n                                        /*#__PURE__*/ _jsxs(\"span\", {\n                                            \"aria-hidden\": \"true\",\n                                            children: [\n                                                this.context.loc('Feedback_privacy_content'),\n                                                /*#__PURE__*/ _jsx(\"a\", {\n                                                    target: \"_blank\",\n                                                    href: \"https://aka.ms/AppSourcePrivacyStatement\",\n                                                    rel: \"noreferrer\",\n                                                    className: \"c-hyperlink\",\n                                                    children: this.context.loc('Feedback_privacy')\n                                                })\n                                            ]\n                                        })\n                                    ]\n                                })\n                            }),\n                            /*#__PURE__*/ _jsx(\"input\", {\n                                className: emailInputClasses,\n                                type: \"text\",\n                                onChange: this.editEmail.bind(this),\n                                value: this.state.emailAddress,\n                                placeholder: this.props.emailAddress === 'no user' ? 'email address' : '',\n                                name: \"default\",\n                                disabled: !this.state.privacy\n                            }),\n                            /*#__PURE__*/ _jsxs(\"div\", {\n                                className: \"npsButton\",\n                                children: [\n                                    !this.state.privacy || this.state.privacy && this.state.validEmailUI ? null : /*#__PURE__*/ _jsx(\"span\", {\n                                        className: \"invalidEmailText\",\n                                        children: this.context.loc('Feedback_invalidEmail')\n                                    }),\n                                    /*#__PURE__*/ _jsx(\"button\", {\n                                        id: \"submit\",\n                                        name: \"button\",\n                                        disabled: this.state.privacy && !this.state.validEmailUI || this.state.rating === null,\n                                        className: \"c-button submitButton\",\n                                        type: \"submit\",\n                                        onClick: this.handleSubmit.bind(this),\n                                        children: this.context.loc('NPS_SubmitButton', 'Submit')\n                                    })\n                                ]\n                            })\n                        ]\n                    })\n                ]\n            })\n        });\n    }\n    constructor(props, context){\n        super(props, context), _define_property(this, \"context\", void 0), _define_property(this, \"description\", void 0), _define_property(this, \"instrument\", void 0);\n        this.instrument = SpzaInstrumentService.getProvider();\n        // if this poped-up, the timer is automatically delay a short\n        // interval (two-hours).\n        NpsModule.SetShortInterval();\n        NpsModule.ResetNPSCount();\n        this.description = '';\n        this.state = {\n            rating: null,\n            description: '',\n            privacy: false,\n            validEmailUI: true,\n            emailAddress: this.props.emailAddress !== 'no user' ? this.props.emailAddress : ''\n        };\n    }\n}\nexport { NpsModal as default };\nNpsModal.contextTypes = {\n    loc: PropTypes.func,\n    renderErrorModal: PropTypes.func\n};\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport * as React from 'react';\nimport { Text } from '@fluentui/react';\nimport instructionsImg1 from '@shared/images/power-bi-instructions-1.png';\nimport instructionsImg2 from '@shared/images/power-bi-instructions-2.png';\nimport instructionsImg3 from '@shared/images/power-bi-instructions-3.png';\nimport instructionsImg4 from '@shared/images/power-bi-instructions-4.png';\nconst InstructionsModalStep = ({ step, text, imageSrc })=>{\n    return /*#__PURE__*/ _jsxs(\"div\", {\n        className: \"instructionsStep\",\n        children: [\n            /*#__PURE__*/ _jsx(\"img\", {\n                className: \"instructionsImg\",\n                src: imageSrc\n            }),\n            /*#__PURE__*/ _jsxs(\"div\", {\n                className: \"instructionsStepText\",\n                children: [\n                    /*#__PURE__*/ _jsxs(Text, {\n                        className: \"instructionsNumber\",\n                        children: [\n                            step,\n                            \". \"\n                        ]\n                    }),\n                    text\n                ]\n            })\n        ]\n    });\n};\nexport const InstructionsModalBody = ({ context })=>{\n    const stepsMap = {\n        stepOne: {\n            text: /*#__PURE__*/ _jsx(Text, {\n                children: context.loc('PowerBIVisual_Instructions_1')\n            }, \"stepOne\"),\n            image: instructionsImg1\n        },\n        stepTwo: {\n            text: /*#__PURE__*/ _jsx(Text, {\n                children: context.loc('PowerBIVisual_Instructions_2')\n            }, \"stepTwo\"),\n            image: instructionsImg2\n        },\n        stepThree: {\n            text: /*#__PURE__*/ _jsx(\"span\", {\n                dangerouslySetInnerHTML: {\n                    __html: context.locParams('PowerBIVisual_Instructions_3', [\n                        `<span class='instructionsOpen'>${context.loc('PowerBIVisual_Instructions_Open')}</span>`\n                    ])\n                }\n            }, \"stepThree\"),\n            image: instructionsImg3\n        },\n        stepFour: {\n            text: /*#__PURE__*/ _jsx(Text, {\n                children: context.loc('PowerBIVisual_Instructions_4')\n            }, \"stepFour\"),\n            image: instructionsImg4\n        }\n    };\n    return /*#__PURE__*/ _jsx(\"div\", {\n        className: \"instructionsStepsContainer\",\n        children: Object.keys(stepsMap).map((key, step)=>/*#__PURE__*/ _jsx(InstructionsModalStep, {\n                step: step + 1,\n                text: stepsMap[key].text,\n                imageSrc: stepsMap[key].image\n            }, key))\n    });\n};\n","/* eslint-disable react/forbid-dom-props */ import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport * as React from 'react';\nimport { Checkbox, IconButton, Modal, PrimaryButton, Text } from '@fluentui/react';\nimport { useBoolean } from '@fluentui/react-hooks';\nimport { InstructionsModalBody } from './instructionsModalBody';\nimport { Constants } from '@shared/utils/constants';\nimport { saveLocalStorageItem } from '@shared/utils/browserStorageUtils';\nimport { getNpsModule } from '@appsource/utils/nps';\nconst cancelIcon = {\n    iconName: 'Cancel'\n};\nexport const InstructionsModal = ({ context, isFromDownload, dismissModal })=>{\n    const [isModalOpen, { setFalse: hideModal }] = useBoolean(true);\n    const [isChecked, setIsChecked] = React.useState(false);\n    const closeModal = ()=>{\n        var _getNpsModule;\n        if (isFromDownload && isChecked) {\n            saveLocalStorageItem(Constants.LocalStorage.dontShowInstructions, true);\n        }\n        hideModal();\n        dismissModal();\n        (_getNpsModule = getNpsModule()) === null || _getNpsModule === void 0 ? void 0 : _getNpsModule.ctaClicked();\n    };\n    return /*#__PURE__*/ _jsx(Modal, {\n        containerClassName: \"instructionsModalContainer\",\n        isOpen: isModalOpen,\n        onDismiss: closeModal,\n        children: /*#__PURE__*/ _jsxs(\"div\", {\n            role: \"dialog\",\n            \"aria-label\": \"instructionsModal\",\n            className: \"instructionsModalClass\",\n            children: [\n                /*#__PURE__*/ _jsxs(\"div\", {\n                    className: \"toolBar\",\n                    children: [\n                        /*#__PURE__*/ _jsx(Text, {\n                            className: \"instructionsHeader\",\n                            children: context.loc('PowerBIVisual_Instructions_Header')\n                        }),\n                        /*#__PURE__*/ _jsx(IconButton, {\n                            \"aria-label\": \"close\",\n                            className: \"cancel\",\n                            iconProps: cancelIcon,\n                            onClick: closeModal\n                        })\n                    ]\n                }),\n                /*#__PURE__*/ _jsx(\"span\", {\n                    className: \"instructionsText\",\n                    // eslint-disable-next-line react/no-danger\n                    dangerouslySetInnerHTML: {\n                        __html: context.locParams('PowerBIVisual_Instructions_Intro', [\n                            `<a class='c-hyperlink' rel='noreferrer' target='_blank' href=${Constants.PowerBIVisualInstructionsUrl}>${context.loc('PowerBIVisual_Instructions')}</a>`\n                        ])\n                    }\n                }),\n                /*#__PURE__*/ _jsx(InstructionsModalBody, {\n                    context: context\n                }),\n                /*#__PURE__*/ _jsxs(\"div\", {\n                    className: \"instructionsFooter\",\n                    children: [\n                        isFromDownload && /*#__PURE__*/ _jsx(Checkbox, {\n                            className: \"instructionsCheckbox\",\n                            label: context.loc('Dialog_Dont_Show_Again'),\n                            checked: isChecked,\n                            onChange: ()=>setIsChecked(!isChecked)\n                        }),\n                        /*#__PURE__*/ _jsx(PrimaryButton, {\n                            name: \"button\",\n                            type: \"submit\",\n                            onClick: closeModal,\n                            children: context.loc('Dialog_Close')\n                        })\n                    ]\n                })\n            ]\n        })\n    });\n};\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport * as React from 'react';\nimport { Dialog, DialogFooter, PrimaryButton } from '@fluentui/react';\nconst dialogContentStyles = {\n    subText: {\n        whiteSpace: 'pre-line'\n    }\n};\nconst dialogContentProps = (context)=>{\n    return {\n        title: context.loc('PowerBIVisual_DownloadSampleModal_Header'),\n        subText: [\n            context.loc('PowerBIVisual_DownloadSampleModal_Body_1'),\n            context.loc('PowerBIVisual_DownloadSampleModal_Body_2')\n        ].join('\\n'),\n        showCloseButton: true,\n        styles: dialogContentStyles\n    };\n};\nexport const DownloadSampleModal = ({ context, dismissModal })=>{\n    return /*#__PURE__*/ _jsx(Dialog, {\n        hidden: false,\n        dialogContentProps: dialogContentProps(context),\n        onDismiss: dismissModal,\n        maxWidth: 560,\n        children: /*#__PURE__*/ _jsx(DialogFooter, {\n            children: /*#__PURE__*/ _jsx(PrimaryButton, {\n                text: context.loc('Common_Ok'),\n                name: \"button\",\n                type: \"submit\",\n                onClick: dismissModal\n            })\n        })\n    });\n};\n","import { createStore, applyMiddleware } from 'redux';\nimport { composeWithDevTools } from 'redux-devtools-extension/developmentOnly';\nexport function buildStore({ combinedReducers, initialState, middleware = [] }) {\n    return createStore(combinedReducers, initialState, composeWithDevTools({})(applyMiddleware(...middleware)));\n}\n","function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nfunction _object_spread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        var ownKeys = Object.keys(source);\n        if (typeof Object.getOwnPropertySymbols === \"function\") {\n            ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n            }));\n        }\n        ownKeys.forEach(function(key) {\n            _define_property(target, key, source[key]);\n        });\n    }\n    return target;\n}\nfunction ownKeys(object, enumerableOnly) {\n    var keys = Object.keys(object);\n    if (Object.getOwnPropertySymbols) {\n        var symbols = Object.getOwnPropertySymbols(object);\n        if (enumerableOnly) {\n            symbols = symbols.filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n            });\n        }\n        keys.push.apply(keys, symbols);\n    }\n    return keys;\n}\nfunction _object_spread_props(target, source) {\n    source = source != null ? source : {};\n    if (Object.getOwnPropertyDescriptors) {\n        Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n        ownKeys(Object(source)).forEach(function(key) {\n            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n    }\n    return target;\n}\nimport { isType, SearchboxInputChangedAction, LiveSearchboxFilterAction, SearchSortingOptionChangedAction, FilteredSearchResultsReceivedAction, PartnerSearchResultsReceivedAction, ShowingResultsForReceviedAction, SearchSuggestionsRequestId } from '@shared/actions/actions';\nimport { initialSearchState, copyState } from '@src/State';\nexport default function searchReducer(state = initialSearchState, action) {\n    const newState = copyState(state);\n    if (isType(action, SearchboxInputChangedAction)) {\n        // search box is being searched\n        newState.searchText = action.payload.searchString;\n        // leave the search results be, since they will be updated when new search results come in\n        // however, when the dropdown is emptied out, clear the results.\n        if (newState.searchText.length === 0) {\n            newState.appSearchResults = [];\n            newState.servicesSearchResults = [];\n            newState.ecaSearchResults = [];\n        }\n        // make sure we only react to the latest request\n        newState.searchIdCurrentlyOngoing = state.searchIdCurrentlyOngoing + 1;\n    } else if (isType(action, LiveSearchboxFilterAction)) {\n        newState.searchText = action.payload.searchText;\n    } else if (isType(action, FilteredSearchResultsReceivedAction)) {\n        if (newState.searchIdCurrentlyOngoing !== action.payload.searchid) {\n            return state;\n        } else {\n            const { appSearchResults, servicesSearchResults, cloudsIndustrySearchResults, appsCount, servicesCount, cloudsIndustryCount, requestId } = action.payload;\n            return _object_spread_props(_object_spread({}, newState), {\n                filteredAppSearchResults: appSearchResults,\n                filteredServicesSearchResults: servicesSearchResults,\n                filteredCloudsIndustrySearchResults: cloudsIndustrySearchResults,\n                appsCount,\n                servicesCount,\n                cloudsIndustryCount,\n                requestId\n            });\n        }\n    } else if (isType(action, PartnerSearchResultsReceivedAction)) {\n        newState.partnerSearchResults = action.payload.partnerSearchResults;\n    } else if (isType(action, ShowingResultsForReceviedAction)) {\n        const { previousSearchText = '', showingResultsFor = '' } = action.payload;\n        return _object_spread_props(_object_spread({}, newState), {\n            showingResultsFor,\n            previousSearchText,\n            searchText: previousSearchText\n        });\n    } else if (isType(action, SearchSortingOptionChangedAction)) {\n        newState.searchSortingOption = action.payload.searchSortingOption;\n    } else if (isType(action, SearchSuggestionsRequestId)) {\n        newState.suggestionsRequestId = action.payload.suggestionsRequestId;\n    } else {\n        return state;\n    }\n    return newState;\n}\n","function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nfunction _object_spread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        var ownKeys = Object.keys(source);\n        if (typeof Object.getOwnPropertySymbols === \"function\") {\n            ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n            }));\n        }\n        ownKeys.forEach(function(key) {\n            _define_property(target, key, source[key]);\n        });\n    }\n    return target;\n}\nimport { isType, ModalAction, VideoModalAction, RatingAction, DriveModalAction, IFieldHubModalAction, IDisclaimerModalAction, MediaModalAction, InstructionsModalAction, EntityReviewCommentModalAction, EntityReviewMarkAsHelpfulModalAction } from './../actions/actions';\nimport { initialModalState, copyState } from './../../State';\nimport { Constants } from '../utils/constants';\nexport default function modalReducer(state = initialModalState, action) {\n    const newState = copyState(state);\n    if (isType(action, ModalAction)) {\n        newState.showModal = action.payload.showModal;\n        newState.entityId = action.payload.entityId ? action.payload.entityId : '';\n        newState.modalId = action.payload.modalId ? action.payload.modalId : Constants.ModalType.NoModalShow;\n        newState.options = action.payload.options;\n        newState.entityType = action.payload.entityType;\n        newState.onModalDismiss = action.payload.onModalDismiss;\n        newState.disableDismissModal = action.payload.disableDismissModal;\n        newState.isOpenedFromPDP = action.payload.isOpenedFromPDP;\n        newState.payload = null;\n    } else if (isType(action, VideoModalAction)) {\n        newState.showModal = action.payload.showModal;\n        newState.modalId = Constants.ModalType.Video;\n        const videoPayload = {\n            videoLink: action.payload.videoUrl,\n            thumbnailURL: action.payload.videoThumbnail,\n            videoName: action.payload.videoName\n        };\n        newState.payload = videoPayload;\n    } else if (isType(action, MediaModalAction)) {\n        newState.showModal = action.payload.showModal;\n        newState.modalId = Constants.ModalType.MediaModal;\n        newState.payload = action.payload.payload;\n    } else if (isType(action, DriveModalAction)) {\n        newState.showModal = action.payload.showModal;\n        newState.modalId = Constants.ModalType.Drive;\n        const drivePayload = {\n            urlLink: action.payload.driveUrl\n        };\n        newState.payload = drivePayload;\n    } else if (isType(action, IFieldHubModalAction)) {\n        newState.showModal = action.payload.showModal;\n        newState.modalId = Constants.ModalType.Iframe;\n        const iframePayload = {\n            reportName: action.payload.reportName\n        };\n        newState.payload = iframePayload;\n    } else if (isType(action, IDisclaimerModalAction)) {\n        newState.showModal = action.payload.showModal;\n        newState.modalId = Constants.ModalType.Disclaimer;\n        const payload = {\n            title: action.payload.title,\n            description: action.payload.description\n        };\n        newState.payload = payload;\n    } else if (isType(action, RatingAction)) {\n        newState.showModal = action.payload.showModal;\n        newState.modalId = Constants.ModalType.Rating;\n        const reviewPayload = {\n            showModal: true,\n            app: action.payload.app,\n            accessKey: action.payload.accessKey,\n            ctaType: action.payload.ctaType,\n            callback: action.payload.callback\n        };\n        newState.payload = reviewPayload;\n    } else if (isType(action, EntityReviewCommentModalAction)) {\n        newState.showModal = action.payload.showModal;\n        newState.modalId = Constants.ModalType.ReviewComment;\n        newState.payload = _object_spread({}, action.payload);\n    } else if (isType(action, EntityReviewMarkAsHelpfulModalAction)) {\n        newState.showModal = action.payload.showModal;\n        newState.modalId = Constants.ModalType.ReviewMarkAsHelpful;\n        newState.payload = _object_spread({}, action.payload);\n    } else if (isType(action, InstructionsModalAction)) {\n        newState.modalId = Constants.ModalType.Instructions;\n        newState.showModal = action.payload.showModal;\n        const instructionsPayload = {\n            isFromDownload: action.payload.isFromDownload\n        };\n        newState.payload = instructionsPayload;\n    } else {\n        return state;\n    }\n    return newState;\n}\n","function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nfunction _object_spread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        var ownKeys = Object.keys(source);\n        if (typeof Object.getOwnPropertySymbols === \"function\") {\n            ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n            }));\n        }\n        ownKeys.forEach(function(key) {\n            _define_property(target, key, source[key]);\n        });\n    }\n    return target;\n}\nfunction ownKeys(object, enumerableOnly) {\n    var keys = Object.keys(object);\n    if (Object.getOwnPropertySymbols) {\n        var symbols = Object.getOwnPropertySymbols(object);\n        if (enumerableOnly) {\n            symbols = symbols.filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n            });\n        }\n        keys.push.apply(keys, symbols);\n    }\n    return keys;\n}\nfunction _object_spread_props(target, source) {\n    source = source != null ? source : {};\n    if (Object.getOwnPropertyDescriptors) {\n        Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n        ownKeys(Object(source)).forEach(function(key) {\n            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n    }\n    return target;\n}\nimport { updateMatchFunctions } from 'utils/filterHelpers';\nimport { getEntityRegistration } from 'utils/entityRegistration';\nimport { DataMap } from '@shared/utils/dataMapping';\nimport { isType, EntityDataReceivedAction, CuratedDataReceivedAction, SearchDataReceivedAction, EntityDetailsReceivedAction, RehydrateClientStateAction, SearchQueryChangedAction, DataMapReceivedAction, SuggestedChangeAction, LoadFavouriteDataStateAction, RelatedAppsItemsReceivedAction, RelatedAppsItemsLoadingAction, SetEntityIdLoadingAction, SetEntityIdFailedAction, GetAppReviewsAction, EntityFullDataReceivedAction } from '@shared/actions/actions';\nimport { TileDataReceivedAction, TileDataLoadingAction } from '@shared/actions/tileDataActions';\nimport { initialEntityDataState, copyState, deepCopyDataMap } from '@src/State';\nimport { Constants } from '@shared/utils/constants';\nimport { PricingStates } from '@shared/Models';\nimport { generateHashMap } from '@shared/utils/hashMapUtils';\nimport { performFilter } from '@shared/utils/filterModule';\nimport { AzureEnvironmentSettings } from '@shared/AzureEnvironmentSettings';\nfunction preserveData(oldEntity, newEntity) {\n    if (!oldEntity || !newEntity) {\n        return;\n    }\n    function preserveDataHelper(data) {\n        if (oldEntity[`${data}`] || Object.prototype.hasOwnProperty.call(oldEntity, data) && !newEntity[`${data}`]) {\n            newEntity[`${data}`] = oldEntity[`${data}`];\n        }\n    }\n    // preserve all the data that was already present\n    // that way, we do not get flicker when loading data\n    const dataList = Object.keys(oldEntity);\n    dataList.forEach((data)=>{\n        preserveDataHelper(data);\n    });\n}\nexport function buildFullSearchData(ids, sourceData, hashMap, identifier) {\n    const tempArray = [];\n    if (ids.length > 0) {\n        // we care about showing the top 5 percent, which means that we will take the first result (highest score) and\n        // ignore everyone that is lower that 5% of that\n        const cutoff = ids[0]['@search.score'] * 0.05;\n        ids.forEach(function(id) {\n            if (id['@search.score'] > cutoff) {\n                const index = hashMap[id[`${identifier}`].toString().toLowerCase()];\n                // make sure we actually understand the app\n                if (index >= 0) {\n                    tempArray.push(sourceData[`${index}`]);\n                }\n            }\n        });\n    }\n    return tempArray;\n}\nfunction isServiceDataState(state) {\n    return state.selectedCountry;\n}\nfunction isSelectedCountryValidDataMap(dataMap, selectedCountry) {\n    var _dataMap_serviceGlobalFilter1_country, _dataMap_serviceGlobalFilter1;\n    // If countries not defined in data map yet, assume it is valid country selection.\n    if (!(dataMap === null || dataMap === void 0 ? void 0 : (_dataMap_serviceGlobalFilter1 = dataMap.serviceGlobalFilter1) === null || _dataMap_serviceGlobalFilter1 === void 0 ? void 0 : (_dataMap_serviceGlobalFilter1_country = _dataMap_serviceGlobalFilter1.country) === null || _dataMap_serviceGlobalFilter1_country === void 0 ? void 0 : _dataMap_serviceGlobalFilter1_country.subCategoryDataMapping) || Object.keys(dataMap.serviceGlobalFilter1.country.subCategoryDataMapping).length === 0) {\n        return true;\n    }\n    // Make sure country in data map.\n    const countries = dataMap.serviceGlobalFilter1.country.subCategoryDataMapping;\n    return Object.keys(countries).some((countryKey)=>countries[`${countryKey}`].BackendKey === selectedCountry);\n}\nexport function commonEntityDataReducer(entityType, state = initialEntityDataState, action) {\n    if (action.payload && action.payload.entityType && action.payload.entityType !== entityType) {\n        return state;\n    }\n    let newState = copyState(state);\n    if (isType(action, EntityDataReceivedAction)) {\n        // we have received filter data from the backend\n        if (!state.dataLoaded[action.payload.userSegment]) {\n            updateMatchFunctions(DataMap);\n            newState.dataList = action.payload.dataList;\n            newState.count = action.payload.count;\n            const dataMap = deepCopyDataMap(state.dataMap);\n            const results = performFilter(null, action.payload.urlQuery, [], dataMap, false, false);\n            newState.activeFilters = results.activeFilters;\n            newState.dataMap = dataMap;\n            if (state.dataList && state.dataList.length > 0) {\n                state.dataList.forEach((entity)=>{\n                    const index = newState.idMap[entity.entityId];\n                    if (index >= 0) {\n                        // preserve already fetched data that are not part of the tile data\n                        // i.e. detail information and pricing\n                        preserveData(entity, newState.dataList[`${index}`]);\n                    }\n                });\n            }\n            newState.idMap = generateHashMap(newState.dataList, [\n                'entityId'\n            ]);\n            newState.dataLoaded = copyState(state.dataLoaded);\n            newState.dataLoaded[action.payload.userSegment] = true;\n        }\n    } else if (isType(action, RehydrateClientStateAction)) {\n        updateMatchFunctions(DataMap);\n        const dataMap = deepCopyDataMap(state.dataMap);\n        updateMatchFunctions(dataMap);\n        newState.dataMap = dataMap;\n        newState.idMap = generateHashMap(state.dataList, [\n            'entityId'\n        ]);\n    } else if (isType(action, LoadFavouriteDataStateAction)) {\n        let favouriteItems;\n        if (entityType === Constants.EntityType.Service) {\n            favouriteItems = action.payload.userFavouriteState.services;\n        } else if (entityType === Constants.EntityType.App) {\n            favouriteItems = action.payload.userFavouriteState.apps;\n        }\n        if (favouriteItems) {\n            const items = favouriteItems.map((favouriteItem)=>favouriteItem.item).filter((item)=>!!item && !!item.entityId && !(item.entityId.toLowerCase() in newState.idMap));\n            newState.dataList = [\n                ...newState.dataList,\n                ...items\n            ];\n            newState.idMap = generateHashMap(newState.dataList, [\n                'entityId'\n            ]);\n        }\n    } else if (isType(action, SuggestedChangeAction)) {\n        const entityId = action.payload.item.entityId && action.payload.item.entityId.toString().toLowerCase();\n        const appIndex = state.idMap[`${entityId}`];\n        if (!(appIndex >= 0)) {\n            newState.dataList = [\n                ...newState.dataList,\n                action.payload.item\n            ];\n            newState.idMap = generateHashMap(newState.dataList, [\n                'entityId'\n            ]);\n        }\n    } else if (isType(action, DataMapReceivedAction)) {\n        const dataMap = deepCopyDataMap(action.payload.dataMap);\n        updateMatchFunctions(dataMap);\n        newState.dataMap = dataMap;\n        newState.dataMapLoaded = true;\n    } else if (isType(action, TileDataLoadingAction)) {\n        const dataMap = deepCopyDataMap(state.dataMap);\n        const results = performFilter(null, action.payload.urlQuery, [], dataMap, false, false);\n        newState.dataMap = dataMap;\n        newState.activeFilters = results.activeFilters;\n    } else if (isType(action, TileDataReceivedAction)) {\n        if (state.dataList) {\n            newState = _object_spread({}, newState, action.payload.entityData);\n            newState.tileDataRequestId = action.payload.requestId;\n            let currentEntityDetail = null;\n            // If there is only one item in appData, it means the app detail is loaded at server side.\n            // So when appData is loaded with this lazy loaded tile data, we need to make sure the original appData item\n            // with detail data is still preserved.\n            if (state.dataList.length === 1) {\n                currentEntityDetail = state.dataList[0];\n            }\n            for(let i = 0, len = newState.dataList.length; i < len; i++){\n                var _state_dataMap;\n                const entityId = newState.dataList[`${i}`] && newState.dataList[`${i}`].entityId && newState.dataList[`${i}`].entityId.toLowerCase();\n                if (currentEntityDetail && newState.dataList[`${i}`] && newState.dataList[`${i}`].entityId === currentEntityDetail.entityId) {\n                    newState.dataList[`${i}`] = currentEntityDetail;\n                }\n                // preserve already fetched data that are not part of the tile data\n                // i.e. detail information and pricing\n                const indexInOldState = (_state_dataMap = state.dataMap) === null || _state_dataMap === void 0 ? void 0 : _state_dataMap[`${entityId}`];\n                // this is not a guaranteed 1to1 list\n                // => so make sure that we have the new app in the old list\n                if (indexInOldState >= 0) {\n                    preserveData(state.dataList[`${indexInOldState}`], newState.dataList[`${i}`]);\n                }\n            }\n            // Services can have completely diff filters than apps hence\n            // update the map again based on the services data list to dynamically light up services filters\n            if (action.payload.entityType === Constants.EntityType.Service) {\n                updateMatchFunctions(DataMap);\n            }\n            const dataMap = deepCopyDataMap(state.dataMap);\n            const results = performFilter(null, action.payload.urlQuery, [], dataMap, false, false);\n            newState.activeFilters = results.activeFilters;\n            newState.dataMap = dataMap;\n            newState.idMap = generateHashMap(newState.dataList, [\n                'entityId'\n            ]);\n            if (action.payload.entityType === Constants.EntityType.App) {\n                newState.pricingPayload = state.pricingPayload;\n            }\n            if (isServiceDataState(state) && isServiceDataState(newState)) {\n                if (isSelectedCountryValidDataMap(newState.dataMap, state.selectedCountry)) {\n                    newState.selectedCountry = state.selectedCountry;\n                } else {\n                    newState.selectedCountry = AzureEnvironmentSettings.defaultCountryCode.toUpperCase();\n                }\n                newState.selectedRegion = state.selectedRegion;\n            }\n        }\n    } else if (isType(action, SetEntityIdLoadingAction)) {\n        newState.entityIdLoading = action.payload.entityId;\n    } else if (isType(action, SetEntityIdFailedAction)) {\n        newState.entityIdFailed = action.payload.entityId;\n    } else if (isType(action, RelatedAppsItemsLoadingAction)) {\n        newState.relatedAppsItems = {\n            entityId: action.payload.entityId,\n            items: {\n                saasLinkingItems: [],\n                suggestedItems: [],\n                linkedAddIns: []\n            }\n        };\n    } else if (isType(action, RelatedAppsItemsReceivedAction)) {\n        newState.relatedAppsItems = {\n            entityId: action.payload.entityId,\n            items: action.payload.relatedAppsItems\n        };\n    } else if (isType(action, GetAppReviewsAction)) {\n        const { markedAsHelpful: prevMarkAsHelpful } = newState.appReviewsData;\n        newState.appReviewsData = _object_spread_props(_object_spread({}, newState.appReviewsData), {\n            entityId: action.payload.entityId,\n            reviews: action.payload.reviews,\n            isPurchased: action.payload.isPurchased,\n            userReview: action.payload.userReview,\n            markedAsHelpful: _object_spread({}, prevMarkAsHelpful)\n        });\n    } else if (isType(action, EntityDetailsReceivedAction)) {\n        let index = -1;\n        // valid error situation: we got back no appdetails\n        if (action.payload.entityDetails) {\n            index = state.idMap[action.payload.entityDetails.entityId.toString().toLowerCase()];\n            const startingPrice = action.payload.entityDetails.startingPrice;\n            if (startingPrice) {\n                if (!startingPrice.pricingData) {\n                    startingPrice.pricingData = PricingStates.NoPricingData;\n                }\n            } else {\n                action.payload.entityDetails.startingPrice = {\n                    pricingData: PricingStates.Loading\n                };\n            }\n        }\n        if (index >= 0) {\n            let newData = null;\n            // we will now deal with app detail information not loading\n            if (action.payload.entityDetails === null) {\n                // todo: Object.assign({}, state.appData[`${index}`]); cannot work or we need to polyfill it\n                newData = JSON.parse(JSON.stringify(state.dataList[`${index}`]));\n                newData.detailLoadFailed = true;\n            } else {\n                // find the app to replace\n                newData = action.payload.entityDetails;\n                // Here we need to preserve the starting price and pricing information since we may get app data again from raw data cache which doesn't contain price data.\n                // If we don't reserve starting price and pricing information retreived earlier at client side, the they will be lost in the new data.\n                preserveData(state.dataList[`${index}`], newData);\n                if (newData.startingPrice && newData.startingPrice.pricingBitmask) {\n                    // make sure we create/append the global filters bitmask to the app data\n                    Object.keys(newData.startingPrice.pricingBitmask).forEach((key)=>{\n                        // if the bitmask has not been created yet\n                        // let's create it and set it to 0\n                        if (!newData[`${key}`]) {\n                            newData[`${key}`] = 0;\n                        }\n                        newData[`${key}`] |= newData.startingPrice.pricingBitmask[`${key}`];\n                    });\n                }\n            }\n            const newDataList = state.dataList.slice(0, index).concat(newData).concat(state.dataList.slice(index + 1));\n            newState.dataList = newDataList;\n        } else {\n            var _action_payload_entityDetails_detailInformation, _action_payload_entityDetails;\n            // This will be called only once when there is no appdata in the server cache.\n            // This called when app details page is the landing page and it is the first page to be rendered by the server.\n            // If we open home page before the app details page is opened, then the appdata is populated into the cache.\n            newState.dataList = [\n                ...newState.dataList,\n                action.payload.entityDetails\n            ];\n            newState.idMap = generateHashMap(newState.dataList, [\n                'entityId'\n            ]);\n            if (Object.prototype.hasOwnProperty.call(newState, 'selectedCountry') && ((_action_payload_entityDetails = action.payload.entityDetails) === null || _action_payload_entityDetails === void 0 ? void 0 : (_action_payload_entityDetails_detailInformation = _action_payload_entityDetails.detailInformation) === null || _action_payload_entityDetails_detailInformation === void 0 ? void 0 : _action_payload_entityDetails_detailInformation.countryRegion)) {\n                newState.selectedCountry = action.payload.entityDetails.detailInformation.countryRegion;\n            }\n        }\n    } else if (isType(action, CuratedDataReceivedAction)) {\n        // we have received curated data from the backend\n        if (!state.curatedDataLoaded[action.payload.userSegment]) {\n            newState.curatedData = action.payload.curatedData;\n            const newCuratedDataLoadedState = copyState(state.curatedDataLoaded);\n            newCuratedDataLoadedState[action.payload.userSegment] = true;\n            newState.curatedDataLoaded = newCuratedDataLoadedState;\n        }\n    } else if (isType(action, EntityFullDataReceivedAction)) {\n        let index = -1;\n        if (action.payload.entityDetails) {\n            index = state.idMap[action.payload.entityDetails.entityId.toString().toLowerCase()];\n        }\n        if (index >= 0) {\n            const newData = action.payload.entityDetails;\n            const newDataList = [\n                ...state.dataList\n            ];\n            newDataList.splice(index, 1, newData);\n            newState.dataList = newDataList;\n        } else {\n            newState.dataList = [\n                ...newState.dataList,\n                action.payload.entityDetails\n            ];\n            newState.idMap = generateHashMap(newState.dataList, [\n                'entityId'\n            ]);\n        }\n    } else if (isType(action, SearchQueryChangedAction)) {\n        newState.subsetSearchQuery = action.payload.performedQuery;\n    } else if (isType(action, SearchDataReceivedAction)) {\n        newState.subsetData = [];\n        newState.subsetSearchQuery = action.payload.performedQuery;\n        const dataList = action.payload.entityIdData;\n        if (dataList.length <= 0 || !state.dataLoaded) {\n            return newState;\n        }\n        newState.subsetData = buildFullSearchData(dataList, state.dataList, state.idMap, getEntityRegistration(entityType).identifier);\n    } else {\n        return state;\n    }\n    return newState;\n}\n","import { Constants } from '../../shared/utils/constants';\nimport { DataMap } from '../../shared/utils/dataMapping';\nconst findItem = (arr, callback)=>{\n    for (const item of arr){\n        if (callback(item)) {\n            return item;\n        }\n    }\n    return null;\n};\n// TODO: follow up with Jamie Warner's team to figure out how they can add this to their list\nconst appIdsToIgnore = [\n    '89230731-57f8-48c1-9f19-4307de3b7dbd',\n    'dc0bfbad-9508-40b3-bff7-fd86639bea78',\n    'b019fa14-15cf-4baf-bc0f-0b4b07b2a2dc',\n    '09ea17d2-a321-4021-94b9-bb8949fd19b7',\n    '0d2d1835-934a-486d-b712-b898e02a4353',\n    '4f1864d0-5c45-49e9-a721-8bf017e6d905',\n    'e334cc9e-62f7-41b0-8e7f-6e1306541c8e',\n    '835677b9-83ed-493f-ae58-da107b750344'\n];\nconst parsePBIApp = (app, index)=>{\n    let iconURL = app.iconUrl;\n    let largeIcon = app.iconUrl;\n    // One of the items in the 'images' array has key 'main' -- this is the large icon\n    if (app.images) {\n        let mainIndex = -1;\n        for(let i = 0, len = app.images.length; i < len; i++){\n            const img = app.images[`${i}`];\n            if (img.key === 'main') {\n                largeIcon = img.url;\n                mainIndex = i;\n            } else {\n                img.ImageName = img.key;\n                img.ImageUri = img.url;\n                delete img.key;\n                delete img.url;\n            }\n        }\n        if (mainIndex !== -1) {\n            app.images.splice(mainIndex, 1);\n        }\n    }\n    if (!iconURL || iconURL.charAt(iconURL.length - 1) === '/') {\n        iconURL = '/images/defaultIcon.png';\n    }\n    if (!largeIcon) {\n        largeIcon = '/images/defaultIcon.png';\n    }\n    // More PBI fields: emailAddress, description, images, learnMoreUrl,\n    // publishTime, version\n    let details = null;\n    if (app.additionalMetadata) {\n        try {\n            details = JSON.parse(app.additionalMetadata);\n            if (details) {\n                const industryNumbers = [];\n                for (const industry of details.industries){\n                    for(const industryMap in DataMap.industries){\n                        if (DataMap.industries[`${industryMap}`].Title === industry) {\n                            industryNumbers.push(DataMap.industries[`${industryMap}`].FilterID);\n                            break;\n                        }\n                    }\n                }\n                if (industryNumbers.length > 0) {\n                    details.industries = industryNumbers;\n                }\n                // convert the collateralDocuments format =(\n                if (details.collateralDocuments) {\n                    for(let i = 0, len = details.collateralDocuments.length; i < len; i++){\n                        const doc = details.collateralDocuments[`${i}`];\n                        doc.DocumentName = doc.documentName;\n                        doc.DocumentUri = doc.documentUrl;\n                        delete doc.documentName;\n                        delete doc.documentUrl;\n                    }\n                }\n            }\n        } catch (e) {\n            details = null;\n        }\n    }\n    const detailInformation = {\n        // if there is no short description -- use the description field only for shortDescription\n        // this is to prevent a duplicated despcription from showing on the detail page\n        Description: app.shortDescription ? app.description : null,\n        LargeIconUri: largeIcon,\n        Subcategories: [],\n        Keywords: details && details.keyWords ? details.keyWords : [],\n        HelpLink: app.learnMoreUrl,\n        SupportLink: null,\n        Images: app.images,\n        DemoVideos: [],\n        CollateralDocuments: details && details.collateralDocuments ? details.collateralDocuments : null,\n        AdditionalPurchasesRequired: false,\n        Countries: [],\n        LanguagesSupported: [],\n        AppVersion: app.version,\n        PrivacyPolicyUrl: details && details.privacyPolicyUrl ? details.privacyPolicyUrl : null,\n        PlatformVersion: null,\n        ReleaseDate: details && details.releaseDate ? details.releaseDate : app.publishTime\n    };\n    let friendlyURL = null;\n    if (app.url) {\n        const nameStart = app.url.lastIndexOf('/') + 1;\n        if (nameStart <= app.url.length) {\n            friendlyURL = app.url.substr(nameStart).toLowerCase();\n        }\n    }\n    const productMask = {\n        [DataMap.products.PowerBI.FilterGroup]: DataMap.products.PowerBI.FilterID\n    };\n    const appDataItem = {\n        index,\n        entityId: app.applicationId,\n        title: app.applicationName,\n        publisher: app.publishedBy,\n        shortDescription: app.shortDescription ? app.shortDescription : app.description,\n        builtFor: 'Power BI',\n        iconURL,\n        actionString: Constants.ActionStrings.Get,\n        ctaTypes: [\n            Constants.CTAType.Get\n        ],\n        primaryProduct: productMask,\n        products: productMask,\n        industries: details && details.industries ? details.industries : 0,\n        categories: details && details.categories ? details.categories : 0,\n        handoffURL: app.url,\n        privateApp: app.category === 'private',\n        ranking: app.ranking,\n        friendlyURL,\n        licenseTermsUrl: details && details.licenseTermsUrl ? details.licenseTermsUrl : '',\n        detailInformation,\n        filtermatch: true,\n        detailLoadFailed: false\n    };\n    return appDataItem;\n};\nexport const parsePBIApps = (appData)=>{\n    const appList = [];\n    for(let i = 0; i < appData.length; i++){\n        const match = findItem(appIdsToIgnore, (appid)=>{\n            return appid === appData[`${i}`].applicationId;\n        });\n        if (match) {\n            continue;\n        }\n        // only get org apps\n        const pbiCategory = appData[`${i}`].PBIContentProviderCategory;\n        if (pbiCategory !== 1 && pbiCategory !== 3) {\n            appList.push(parsePBIApp(appData[`${i}`], i));\n        }\n    }\n    return appList;\n};\n","import { Constants } from '../../shared/utils/constants';\nimport { DataMap } from '../../shared/utils/dataMapping';\nimport { getProductByUrlKey } from '@shared/utils/appUtils';\nconst convertPartnerDocument = (d)=>({\n        DocumentName: d.documentName,\n        DocumentUri: d.documentUri\n    });\nconst convertPartnerImage = (i)=>({\n        ImageName: i.imageName,\n        ImageUri: i.imageUri\n    });\nconst convertPartnerVideo = (v)=>({\n        ThumbnailURL: v.thumbnailUrl,\n        VideoLink: v.videoLink,\n        VideoName: v.videoName\n    });\nfunction attemptMap(a, f) {\n    if (a) {\n        return a.map(f);\n    } else {\n        return [];\n    }\n}\nexport const parsePartnerApp = (app, product)=>{\n    let detailInformation = null;\n    if (app.details) {\n        const d = app.details;\n        detailInformation = {\n            AdditionalPurchasesRequired: d.additionalPurchasesRequired,\n            AppVersion: d.appVersion,\n            CollateralDocuments: attemptMap(d.collateralDocuments, convertPartnerDocument),\n            Countries: d.countries,\n            DemoVideos: attemptMap(d.demoVideos, convertPartnerVideo),\n            Description: d.description,\n            HelpLink: d.helpLink,\n            Images: attemptMap(d.images, convertPartnerImage),\n            Keywords: d.keywords,\n            LanguagesSupported: d.languagesSupported,\n            LargeIconUri: d.largeIconUri,\n            PlatformVersion: d.platformVersion,\n            PrivacyPolicyUrl: d.privacyPolicyUrl,\n            ReleaseDate: d.releaseDate,\n            Subcategories: d.subCategories,\n            SupportLink: d.supportLink\n        };\n    }\n    let builtFor = '';\n    let productMask;\n    const productInfo = getProductByUrlKey({\n        urlKey: product\n    });\n    if (productInfo === null || productInfo === void 0 ? void 0 : productInfo.UrlKey) {\n        builtFor = productInfo.LongTitle;\n        productMask = {\n            [productInfo.FilterGroup]: productInfo.FilterID\n        };\n    }\n    const appDataItem = {\n        entityId: app.applicationId,\n        title: app.title,\n        publisher: app.publisher,\n        shortDescription: app.shortDescription,\n        builtFor,\n        iconURL: app.smallIconUri,\n        iconBackgroundColor: app.iconBackgroundColor,\n        actionString: Constants.ActionStrings.Get,\n        ctaTypes: [\n            Constants.CTAType.Get\n        ],\n        primaryProduct: productMask,\n        privateApp: app.privateApp,\n        products: app.products ? app.products : productMask,\n        industries: app.industries ? app.industries : 0,\n        categories: app.categories ? app.categories : 0,\n        handoffURL: app.handOffURL,\n        leadgenEnabled: app.enableLeadSharing,\n        licenseTermsUrl: app.licenseTermsUrl,\n        detailInformation,\n        filtermatch: true,\n        detailLoadFailed: false\n    };\n    return appDataItem;\n};\nexport const parsePartnerApps = (appData, embedHost)=>{\n    let product = embedHost;\n    if (embedHost === DataMap.products.Dynamics365.UrlKey) {\n        product = DataMap.products.PowerApps.UrlKey;\n    }\n    const appList = appData.map((a)=>parsePartnerApp(a, product));\n    // TODO: sort?\n    // PowerBI Apps are wanting to be sorted alphabetically\n    /* appList = appList.sort((a: IAppDataItem, b: IAppDataItem) => {\n        let aTitle = a.title.toLowerCase();\n        let bTitle = b.title.toLowerCase();\n        return aTitle > bTitle ? 1 : ( aTitle < bTitle ? -1 : 0 );\n    }); */ return appList;\n};\n","function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nfunction _object_spread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        var ownKeys = Object.keys(source);\n        if (typeof Object.getOwnPropertySymbols === \"function\") {\n            ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n            }));\n        }\n        ownKeys.forEach(function(key) {\n            _define_property(target, key, source[key]);\n        });\n    }\n    return target;\n}\nfunction ownKeys(object, enumerableOnly) {\n    var keys = Object.keys(object);\n    if (Object.getOwnPropertySymbols) {\n        var symbols = Object.getOwnPropertySymbols(object);\n        if (enumerableOnly) {\n            symbols = symbols.filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n            });\n        }\n        keys.push.apply(keys, symbols);\n    }\n    return keys;\n}\nfunction _object_spread_props(target, source) {\n    source = source != null ? source : {};\n    if (Object.getOwnPropertyDescriptors) {\n        Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n        ownKeys(Object(source)).forEach(function(key) {\n            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n    }\n    return target;\n}\nfunction _object_without_properties(source, excluded) {\n    if (source == null) return {};\n    var target = _object_without_properties_loose(source, excluded);\n    var key, i;\n    if (Object.getOwnPropertySymbols) {\n        var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n        for(i = 0; i < sourceSymbolKeys.length; i++){\n            key = sourceSymbolKeys[i];\n            if (excluded.indexOf(key) >= 0) continue;\n            if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n            target[key] = source[key];\n        }\n    }\n    return target;\n}\nfunction _object_without_properties_loose(source, excluded) {\n    if (source == null) return {};\n    var target = {};\n    var sourceKeys = Object.keys(source);\n    var key, i;\n    for(i = 0; i < sourceKeys.length; i++){\n        key = sourceKeys[i];\n        if (excluded.indexOf(key) >= 0) continue;\n        target[key] = source[key];\n    }\n    return target;\n}\nfunction _to_primitive(input, hint) {\n    if (_type_of(input) !== \"object\" || input === null) return input;\n    var prim = input[Symbol.toPrimitive];\n    if (prim !== undefined) {\n        var res = prim.call(input, hint || \"default\");\n        if (_type_of(res) !== \"object\") return res;\n        throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n    }\n    return (hint === \"string\" ? String : Number)(input);\n}\nfunction _to_property_key(arg) {\n    var key = _to_primitive(arg, \"string\");\n    return _type_of(key) === \"symbol\" ? key : String(key);\n}\nfunction _type_of(obj) {\n    \"@swc/helpers - typeof\";\n    return obj && typeof Symbol !== \"undefined\" && obj.constructor === Symbol ? \"symbol\" : typeof obj;\n}\nimport { isType, PartnerAppDataReceivedAction, PowerBIDataReceivedAction, AppsPricingDataReceivedAction, AppDetailPricingReceivedAction, RelatedAppsItemsPricingDataReceivedAction, AppPricingDataReceivedAction, EntityReviewCommentsReceivedAction, EntityReviewCommentsCleanupAction, EntityReviewCommentDeleteResult, EntityReviewCommentUpdateResult, EntityReviewCommentsLoadingAction, EntityReviewCommentsInitializeStateAction, EntityReviewCommentsUpdateTotalCommentCountAction, EntityReviewCommentCreateResult, EntityReviewCommentsUnloadPagesAction, EntityMarkedAsHelpfulReviewUpdateListAction, EntityLinkedInProductGroupUpdateAction, EntityReviewSetIsHelpfulAction, EntityReviewSetMarkAsHelpfulCount, EntityReviewSetIsHelpfulLoadingAction, SetRecommenededSizes, LoadingRecommenededSizes, EntityUserCommentedReviewIdsUpdateListAction, RecommendedWhatsNewAppsReceivedAction, RecommendedTrendingAppsReceivedAction, RecommendedAppsItemsPricingDataReceivedAction, RecommendedMicrosoft365WhatsNewAppsReceivedAction, RecommendedMicrosoft365TrendingAppsReceivedAction } from '@shared/actions/actions';\nimport { commonEntityDataReducer } from './commonEntityDataReducer';\nimport { initialAppDataState, copyState, deepCopyDataMap } from './../../State';\nimport { Constants } from './../utils/constants';\nimport { loadAppPricing } from './../utils/pricing';\nimport { parsePBIApps } from '../../embed/reducers/pbiAppDataReducer';\nimport { parsePartnerApps } from '../../embed/reducers/partnerAppDataReducer';\nimport { SpzaInstrumentService } from '../services/telemetry/spza/spzaInstrument';\nimport { generateHashMap } from '../utils/hashMapUtils';\nimport { updateMatchFunctions } from 'utils/filterHelpers';\nimport { getFuturePricesInformation } from '@shared/utils/futurePricesUtils';\nimport { appendReviewCommentsToState, calculateTotalReviewCommentsPagesCount, combineDeletedComments, createInitialReviewCommentsState } from '@shared/utils/reviewsUtils';\nimport { take, pick, values, map, differenceBy } from 'lodash-es';\nimport { logger } from '@src/logger';\nimport { getProductByUrlKey } from '@shared/utils/appUtils';\nexport default function appDataReducer(state = initialAppDataState, action) {\n    const newState = copyState(state);\n    const newCommonState = commonEntityDataReducer(Constants.EntityType.App, state, action);\n    if (isType(action, AppPricingDataReceivedAction)) {\n        var _action_payload_pricingPayload, _action_payload;\n        if (!((_action_payload = action.payload) === null || _action_payload === void 0 ? void 0 : (_action_payload_pricingPayload = _action_payload.pricingPayload) === null || _action_payload_pricingPayload === void 0 ? void 0 : _action_payload_pricingPayload.pricingData)) {\n            return state;\n        }\n        newState.dataList = newState.dataList.map((app)=>{\n            var _app_entityId, _action_payload_entityId;\n            if (((_app_entityId = app.entityId) === null || _app_entityId === void 0 ? void 0 : _app_entityId.toLowerCase()) === ((_action_payload_entityId = action.payload.entityId) === null || _action_payload_entityId === void 0 ? void 0 : _action_payload_entityId.toLowerCase())) {\n                return loadAppPricing(app, action.payload.pricingPayload.pricingData);\n            }\n            return app;\n        });\n    } else if (isType(action, RelatedAppsItemsPricingDataReceivedAction)) {\n        if (!action.payload.pricingData || Object.keys(action.payload.pricingData).length === 0) {\n            return state;\n        }\n        if (state.relatedAppsItems && state.relatedAppsItems.items) {\n            let updatedLinkedAddIns = null;\n            let updatedSaasLinkingItems = null;\n            let updatedSuggestedItems = null;\n            let updatedDataList = null;\n            if (state.relatedAppsItems.items.saasLinkingItems) {\n                updatedSaasLinkingItems = map(state.relatedAppsItems.items.saasLinkingItems, (app)=>loadAppPricing(app, action.payload.pricingData));\n            }\n            if (state.relatedAppsItems.items.suggestedItems) {\n                updatedSuggestedItems = map(state.relatedAppsItems.items.suggestedItems, (app)=>loadAppPricing(app, action.payload.pricingData));\n            }\n            if (state.relatedAppsItems.items.linkedAddIns) {\n                updatedLinkedAddIns = map(state.relatedAppsItems.items.linkedAddIns, (app)=>loadAppPricing(app, action.payload.pricingData));\n                updatedDataList = [\n                    ...state.dataList,\n                    ...differenceBy(state.relatedAppsItems.items.linkedAddIns, state.dataList, 'entityId')\n                ];\n            }\n            return _object_spread_props(_object_spread({}, state), {\n                relatedAppsItems: _object_spread_props(_object_spread({}, state.relatedAppsItems), {\n                    items: {\n                        linkedAddIns: updatedLinkedAddIns !== null && updatedLinkedAddIns !== void 0 ? updatedLinkedAddIns : state.relatedAppsItems.items.linkedAddIns,\n                        suggestedItems: updatedSuggestedItems !== null && updatedSuggestedItems !== void 0 ? updatedSuggestedItems : state.relatedAppsItems.items.suggestedItems,\n                        saasLinkingItems: updatedSaasLinkingItems !== null && updatedSaasLinkingItems !== void 0 ? updatedSaasLinkingItems : state.relatedAppsItems.items.saasLinkingItems\n                    }\n                }),\n                dataList: updatedDataList !== null && updatedDataList !== void 0 ? updatedDataList : state.dataList\n            });\n        }\n    } else if (isType(action, RecommendedWhatsNewAppsReceivedAction)) {\n        newState.recommendedApps.whatsNewApps = action.payload;\n    } else if (isType(action, RecommendedTrendingAppsReceivedAction)) {\n        newState.recommendedApps.trendingApps = action.payload;\n    } else if (isType(action, RecommendedMicrosoft365WhatsNewAppsReceivedAction)) {\n        newState.recommendedApps.microsoft365WhatsNewApps = action.payload;\n    } else if (isType(action, RecommendedMicrosoft365TrendingAppsReceivedAction)) {\n        newState.recommendedApps.microsoft365TrendingApps = action.payload;\n    } else if (isType(action, AppsPricingDataReceivedAction)) {\n        const { payload } = action;\n        const { pricingData = {} } = payload;\n        newState.dataList = state.dataList.map((app)=>loadAppPricing(app, pricingData));\n        const dataMap = deepCopyDataMap(state.dataMap);\n        updateMatchFunctions(dataMap);\n        newState.dataMap = dataMap;\n        newState.pricingPayload = payload;\n    } else if (isType(action, RecommendedAppsItemsPricingDataReceivedAction)) {\n        const { payload } = action;\n        const { pricingData = {} } = payload;\n        newState.recommendedApps.whatsNewApps = state.recommendedApps.whatsNewApps.map((app)=>loadAppPricing(app, pricingData));\n        newState.recommendedApps.trendingApps = state.recommendedApps.trendingApps.map((app)=>loadAppPricing(app, pricingData));\n        newState.recommendedApps.microsoft365WhatsNewApps = state.recommendedApps.microsoft365WhatsNewApps.map((app)=>loadAppPricing(app, pricingData));\n        newState.recommendedApps.microsoft365TrendingApps = state.recommendedApps.microsoft365TrendingApps.map((app)=>loadAppPricing(app, pricingData));\n        newState.pricingPayload = payload;\n    } else if (isType(action, PowerBIDataReceivedAction)) {\n        if (action.payload.appData) {\n            newState.dataList = newState.dataList.concat(parsePBIApps(action.payload.appData));\n            newState.idMap = generateHashMap(newState.dataList, [\n                'entityId',\n                'friendlyURL'\n            ]);\n            newState.partnerAppDataLoaded = true;\n            // This event is used to indicate that the Power BI data is fetched and parsing is done.\n            const payload = {\n                page: 'In App Gallery(PowerBI)',\n                action: Constants.Telemetry.Action.PageLoad,\n                actionModifier: Constants.Telemetry.ActionModifier.Info,\n                details: '[End] PowerBI data parsing done'\n            };\n            SpzaInstrumentService.getProvider().probe('logTelemetryInfo', payload);\n            logger.info(payload.details, {\n                action: payload.action,\n                actionModifier: payload.actionModifier,\n                page: payload.page\n            });\n        }\n    } else if (isType(action, PartnerAppDataReceivedAction)) {\n        var _getProductByUrlKey;\n        if (action.payload.appData) {\n            const appData = parsePartnerApps(action.payload.appData, action.payload.embedHost);\n            newState.dataList = state.dataList.concat(appData).sort((a, b)=>{\n                const aTitle = a.title.toLowerCase();\n                const bTitle = b.title.toLowerCase();\n                return aTitle > bTitle ? 1 : aTitle < bTitle ? -1 : 0;\n            });\n            newState.partnerAppDataLoaded = true;\n            newState.idMap = generateHashMap(newState.dataList, [\n                'entityId'\n            ]);\n        } else {\n            newState.partnerAppDataLoaded = true;\n            newState.partnerAppDataLoadedError = true;\n        }\n        // This event is used to indicate that the Power BI data is fetched and parsing is done.\n        const payload = {\n            page: 'In App Gallery(' + ((_getProductByUrlKey = getProductByUrlKey({\n                urlKey: action.payload.embedHost\n            })) === null || _getProductByUrlKey === void 0 ? void 0 : _getProductByUrlKey.UrlKey) + ')',\n            action: Constants.Telemetry.Action.PageLoad,\n            actionModifier: Constants.Telemetry.ActionModifier.Info,\n            details: '[End] Partner App data parsing done'\n        };\n        SpzaInstrumentService.getProvider().probe('logTelemetryInfo', payload);\n        logger.info(payload.details, {\n            action: payload.action,\n            actionModifier: payload.actionModifier,\n            page: payload.page\n        });\n    } else if (isType(action, AppDetailPricingReceivedAction)) {\n        if (action.payload.pricing) {\n            const index = state.idMap[action.payload.entityId.toString().toLowerCase()];\n            if (index !== -1) {\n                newState.dataList = newState.dataList.slice();\n                const currentData = newState.dataList[`${index}`];\n                const { futurePrices, pricing } = action.payload;\n                newState.dataList[`${index}`] = _object_spread_props(_object_spread({}, currentData), {\n                    pricingInformation: action.payload.pricing,\n                    futurePricesInformation: getFuturePricesInformation(futurePrices, pricing)\n                });\n            }\n        }\n    } else if (isType(action, EntityReviewCommentsReceivedAction)) {\n        const { appReviewsData } = newState;\n        // Merge data with the previous comment data for the review id\n        const { [action.payload.reviewId]: prevReviewCommentsState } = appReviewsData.reviewComments;\n        const newReviewCommentsState = _object_spread({}, appendReviewCommentsToState(prevReviewCommentsState, action.payload.comments));\n        appReviewsData.reviewComments = _object_spread_props(_object_spread({}, appReviewsData.reviewComments), {\n            // Convert the new comment list to normalized data\n            [action.payload.reviewId]: _object_spread_props(_object_spread({}, newReviewCommentsState), {\n                // Remove newly added comments if they were now loaded into the main list\n                newlyAddedComments: newReviewCommentsState.newlyAddedComments.filter((c)=>!newReviewCommentsState.commentsById[c.id]),\n                currentLoadedPage: action.payload.pageNumber\n            })\n        });\n    } else if (isType(action, EntityReviewCommentsCleanupAction)) {\n        if (newState.appReviewsData.reviewComments && newState.appReviewsData.reviewComments[action.payload.reviewId]) {\n            // Clean the comments of the given review from the state\n            const _newState_appReviewsData_reviewComments = newState.appReviewsData.reviewComments, _action_payload_reviewId = action.payload.reviewId, { [_action_payload_reviewId]: removedCommentData } = _newState_appReviewsData_reviewComments, newReviewCommentsState = _object_without_properties(_newState_appReviewsData_reviewComments, [\n                _action_payload_reviewId\n            ].map(_to_property_key));\n            newState.appReviewsData.reviewComments = newReviewCommentsState;\n        }\n    } else if (isType(action, EntityReviewCommentUpdateResult) || isType(action, EntityReviewCommentDeleteResult)) {\n        const { payload } = action;\n        const { reviewId, isNewlyAddedComment, actionResult } = payload;\n        const { [reviewId]: prevReviewCommentsState } = newState.appReviewsData.reviewComments;\n        const newReviewCommentsState = _object_spread({}, prevReviewCommentsState);\n        if (isNewlyAddedComment) {\n            const updatedComment = actionResult.reviewComment;\n            newReviewCommentsState.newlyAddedComments = newReviewCommentsState.newlyAddedComments.map((c)=>c.id === updatedComment.id ? updatedComment : c);\n        } else {\n            // Upon deletion or update of a comment, update it in the state immediately with the returned comment representation\n            const commentId = actionResult.reviewComment.id;\n            newReviewCommentsState.commentsById = _object_spread_props(_object_spread({}, newReviewCommentsState.commentsById), {\n                [commentId]: actionResult.reviewComment\n            });\n            newReviewCommentsState.reducedCommentIds = combineDeletedComments(newReviewCommentsState);\n        }\n        // When deleting comments, reduce the comments counter\n        if (isType(action, EntityReviewCommentDeleteResult)) {\n            const reviewIdx = newState.appReviewsData.reviews.findIndex((r)=>r.id === action.payload.reviewId);\n            if (reviewIdx > -1) {\n                newState.appReviewsData.reviews[`${reviewIdx}`].comments_count -= 1;\n            }\n        }\n        newState.appReviewsData.reviewComments = _object_spread_props(_object_spread({}, newState.appReviewsData.reviewComments), {\n            [reviewId]: newReviewCommentsState\n        });\n    } else if (isType(action, EntityReviewCommentsLoadingAction)) {\n        // Update the loading state for a given review's comments list (ex. when initially expanding the comments section for a review)\n        const { [action.payload.reviewId]: prevReviewCommentsState } = newState.appReviewsData.reviewComments;\n        // Update the review comments state with the change\n        newState.appReviewsData.reviewComments = _object_spread_props(_object_spread({}, newState.appReviewsData.reviewComments), {\n            [action.payload.reviewId]: _object_spread_props(_object_spread({}, prevReviewCommentsState), {\n                isLoading: action.payload.isLoading\n            })\n        });\n    } else if (isType(action, EntityReviewCommentsUnloadPagesAction)) {\n        // Update the current page for a given review's comments list\n        const { [action.payload.reviewId]: prevReviewCommentsState } = newState.appReviewsData.reviewComments;\n        const { commentIds: prevCommentIds, commentsById: prevCommentsById } = prevReviewCommentsState;\n        newState.appReviewsData.reviewComments = _object_spread_props(_object_spread({}, newState.appReviewsData.reviewComments), {\n            [action.payload.reviewId]: appendReviewCommentsToState(// Erase loaded data from the comments state\n            _object_spread_props(_object_spread({}, prevReviewCommentsState), {\n                reducedCommentIds: [],\n                commentsById: {},\n                commentIds: [],\n                currentLoadedPage: 1\n            }), // Collect the comments from the first page and add them to the state\n            values(pick(prevCommentsById, take(prevCommentIds, Constants.Reviews.CommentsPerPage))))\n        });\n    } else if (isType(action, EntityReviewCommentsUpdateTotalCommentCountAction)) {\n        const { reviewId, totalComments } = action.payload;\n        // Update the loading state for a given review's comments list (ex. when initially expanding the comments section for a review)\n        const { [reviewId]: reviewCommentsState = createInitialReviewCommentsState() } = newState.appReviewsData.reviewComments;\n        // Update the review comments state with the change\n        newState.appReviewsData.reviewComments = _object_spread_props(_object_spread({}, newState.appReviewsData.reviewComments), {\n            [reviewId]: _object_spread_props(_object_spread({}, reviewCommentsState), {\n                totalComments,\n                totalPages: calculateTotalReviewCommentsPagesCount(totalComments)\n            })\n        });\n    } else if (isType(action, EntityReviewCommentsInitializeStateAction)) {\n        const { [action.payload.reviewId]: newReviewCommentsState = createInitialReviewCommentsState() } = newState.appReviewsData.reviewComments || {};\n        newState.appReviewsData.reviewComments = _object_spread_props(_object_spread({}, newState.appReviewsData.reviewComments), {\n            [action.payload.reviewId]: _object_spread_props(_object_spread({}, newReviewCommentsState), {\n                totalComments: action.payload.totalComments\n            })\n        });\n    } else if (isType(action, EntityReviewCommentCreateResult)) {\n        if (!action.payload.actionResult.error) {\n            const { [action.payload.reviewId]: prevReviewCommentsState } = newState.appReviewsData.reviewComments;\n            let newReviewCommentsState;\n            if (action.payload.isNewlyAddedComment) {\n                // Add the comment to the newly added comments list\n                newReviewCommentsState = _object_spread_props(_object_spread({}, prevReviewCommentsState), {\n                    newlyAddedComments: [\n                        ...prevReviewCommentsState.newlyAddedComments,\n                        action.payload.actionResult.reviewComment\n                    ]\n                });\n            } else {\n                // Add the comment to the main list\n                newReviewCommentsState = _object_spread({}, appendReviewCommentsToState(prevReviewCommentsState, [\n                    action.payload.actionResult.reviewComment\n                ]));\n            }\n            // Inject the new comments state and append the total comments count\n            newState.appReviewsData.reviewComments = _object_spread_props(_object_spread({}, newState.appReviewsData.reviewComments), {\n                [action.payload.reviewId]: _object_spread_props(_object_spread({}, newReviewCommentsState), {\n                    totalComments: prevReviewCommentsState.totalComments + 1\n                })\n            });\n            const reviewIdx = newState.appReviewsData.reviews.findIndex((r)=>r.id === action.payload.reviewId);\n            if (reviewIdx > -1) {\n                newState.appReviewsData.reviews[`${reviewIdx}`].comments_count += 1;\n            }\n        }\n    } else if (isType(action, EntityMarkedAsHelpfulReviewUpdateListAction)) {\n        const { reviewIds } = action.payload;\n        newState.appReviewsData.markedAsHelpful.userReviewIdsMarkedAsHelpful = reviewIds;\n    } else if (isType(action, EntityLinkedInProductGroupUpdateAction)) {\n        const { linkedInProductGroup } = action.payload;\n        newState.linkedInProductGroup = linkedInProductGroup;\n    } else if (isType(action, EntityReviewSetIsHelpfulAction)) {\n        const { reviewId, isHelpful } = action.payload;\n        const { markedAsHelpful } = newState.appReviewsData;\n        const { userReviewIdsMarkedAsHelpful: prevReviewIds } = markedAsHelpful;\n        if (isHelpful) {\n            markedAsHelpful.userReviewIdsMarkedAsHelpful = [\n                ...prevReviewIds,\n                reviewId\n            ];\n        } else {\n            markedAsHelpful.userReviewIdsMarkedAsHelpful = prevReviewIds.filter((r)=>r !== reviewId);\n        }\n    } else if (isType(action, EntityReviewSetIsHelpfulLoadingAction)) {\n        const { isLoading, reviewId } = action.payload;\n        const { markedAsHelpful: prevMarkedAsHelpfulState } = newState.appReviewsData;\n        const { userReviewIdsLoading: prevLoadingIds } = prevMarkedAsHelpfulState;\n        if (isLoading) {\n            prevMarkedAsHelpfulState.userReviewIdsLoading = _object_spread_props(_object_spread({}, prevLoadingIds), {\n                [reviewId]: true\n            });\n        } else {\n            const _prevMarkedAsHelpfulState_userReviewIdsLoading = prevMarkedAsHelpfulState.userReviewIdsLoading, { [reviewId]: removedListing } = _prevMarkedAsHelpfulState_userReviewIdsLoading, newUserReviewIdsLoading = _object_without_properties(_prevMarkedAsHelpfulState_userReviewIdsLoading, [\n                reviewId\n            ].map(_to_property_key));\n            prevMarkedAsHelpfulState.userReviewIdsLoading = newUserReviewIdsLoading;\n        }\n    } else if (isType(action, EntityReviewSetMarkAsHelpfulCount)) {\n        const { reviewId, count } = action.payload;\n        const { reviews } = newState.appReviewsData;\n        const reviewIdx = reviews.findIndex((r)=>r.id === reviewId);\n        if (reviewIdx > -1) {\n            reviews[`${reviewIdx}`].mark_as_helpful_count = count;\n        }\n    } else if (isType(action, LoadingRecommenededSizes)) {\n        const { entityId, planId } = action.payload;\n        newState.recommendedSizesState = {\n            entityId,\n            planId,\n            loading: true,\n            recommendedSizes: []\n        };\n    } else if (isType(action, SetRecommenededSizes)) {\n        const { entityId, planId, recommendedSizes } = action.payload;\n        newState.recommendedSizesState = {\n            entityId,\n            planId,\n            loading: false,\n            recommendedSizes\n        };\n    } else if (isType(action, EntityUserCommentedReviewIdsUpdateListAction)) {\n        const { commentReviewIds } = action.payload;\n        newState.appReviewsData.userCommentedReviewIds = commentReviewIds;\n    } else {\n        return newCommonState;\n    }\n    return newState;\n}\n","function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nfunction _object_spread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        var ownKeys = Object.keys(source);\n        if (typeof Object.getOwnPropertySymbols === \"function\") {\n            ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n            }));\n        }\n        ownKeys.forEach(function(key) {\n            _define_property(target, key, source[key]);\n        });\n    }\n    return target;\n}\nfunction ownKeys(object, enumerableOnly) {\n    var keys = Object.keys(object);\n    if (Object.getOwnPropertySymbols) {\n        var symbols = Object.getOwnPropertySymbols(object);\n        if (enumerableOnly) {\n            symbols = symbols.filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n            });\n        }\n        keys.push.apply(keys, symbols);\n    }\n    return keys;\n}\nfunction _object_spread_props(target, source) {\n    source = source != null ? source : {};\n    if (Object.getOwnPropertyDescriptors) {\n        Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n        ownKeys(Object(source)).forEach(function(key) {\n            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n    }\n    return target;\n}\nimport { isType, UserSignInAction, UserLoginDetailsAction, EmbedUserSignInAction, UserReviewUpdateAction, UserSegmentInitializeAction, UserSignOutAction, UserFieldHubTypeAction, UserProfileAction, UpdateUserProfileLicenseAction, UpdateUserProfileAction, ClearUserPropertiesAction, UserOrdersAction, SetUserOrdersLoadingAction, UserPrivateOffersAction, SetUserPrivateOffersLoadingAction, UserTenantsDetailsAction, UserTenantsDetailsLoadingAction, SetAccessTokenAction, UserProfileLoadingAction, UpdateUserRoleDefinitions, AddSubscriptionsInTenant, UserSignInFetchStatusAction, UserSignInStatusDataAction, UserSignInStatusAction, UserAccesstokensAction, SetAccountAction, SetAccountIsLoadingAction, SetIsMaccTenantAction } from './../actions/actions';\nimport { initialUserDataState, copyState } from './../../State';\nimport { Constants } from '../utils/constants';\nimport { pick } from 'lodash-es';\nexport default function userDataReducer(state = initialUserDataState, action) {\n    const newState = copyState(state);\n    newState.profile = copyState(state.profile);\n    if (isType(action, UserSignInAction) || isType(action, EmbedUserSignInAction)) {\n        newState.id = action.payload.id || '';\n        newState.group = action.payload.group;\n        newState.email = action.payload.email || '';\n        newState.signedIn = action.payload.signedIn;\n        newState.idToken = action.payload.idToken || '';\n        newState.firstName = action.payload.firstName;\n        newState.lastName = action.payload.lastName;\n        newState.displayName = action.payload.displayName;\n        newState.oid = action.payload.oid;\n        newState.tid = action.payload.tid;\n        newState.alternateEmail = action.payload.alternateEmail;\n        newState.isMSAUser = action.payload.isMSAUser;\n        newState.userSegment = action.payload.userSegment;\n        newState.fieldHubUserType = action.payload.fieldHubUserType;\n        newState.graphApi = action.payload.graphApi;\n        if (!newState.displayName) {\n            newState.displayName = (newState.firstName + ' ' + newState.lastName).trim();\n            newState.email = newState.email.substr(newState.email.indexOf('#') + 1);\n        }\n        // Embedded scenario does not send access token in the required format. So we call a different action\n        // so that it is formatted the right way.\n        if (isType(action, EmbedUserSignInAction)) {\n            newState.accessToken = {\n                spza: action.payload.accessToken\n            };\n        }\n        if (isType(action, UserSignInAction)) {\n            newState.accessToken = action.payload.accessToken;\n        }\n    } else if (isType(action, UserSignInStatusAction)) {\n        return _object_spread({}, state, pick(action.payload, [\n            'signedIn',\n            'refreshToken',\n            'homeAccountId'\n        ]));\n    } else if (isType(action, UserSignInStatusDataAction)) {\n        return _object_spread({}, state, pick(action.payload, [\n            'signedIn',\n            'refreshToken',\n            'homeAccountId'\n        ]));\n    } else if (isType(action, UserSignInFetchStatusAction)) {\n        return _object_spread({}, state, pick(action.payload, [\n            'loading'\n        ]));\n    } else if (isType(action, UserAccesstokensAction)) {\n        return _object_spread_props(_object_spread({}, state), {\n            accessToken: action.payload\n        });\n    } else if (isType(action, UserLoginDetailsAction)) {\n        return _object_spread({}, state, action.payload);\n    } else if (isType(action, UpdateUserRoleDefinitions)) {\n        newState.roleDefinitions = action.payload;\n    } else if (isType(action, UserReviewUpdateAction)) {\n        newState.hasReview = action.payload;\n    } else if (isType(action, SetAccessTokenAction)) {\n        newState.accessToken = action.payload;\n    } else if (isType(action, AddSubscriptionsInTenant)) {\n        newState.tenantsDetails.details.azureSubscriptions = action.payload;\n    } else if (isType(action, UserSegmentInitializeAction)) {\n        newState.userSegment = action.payload.userSegment;\n    } else if (isType(action, UserSignOutAction)) {\n        newState.id = '';\n        newState.group = [\n            ''\n        ];\n        newState.email = '';\n        newState.signedIn = false;\n        newState.idToken = '';\n        newState.refreshToken = '';\n        newState.firstName = '';\n        newState.lastName = '';\n        newState.displayName = '';\n        newState.oid = '';\n        newState.tid = '';\n        newState.alternateEmail = '';\n        newState.isMSAUser = false;\n        newState.fieldHubUserType = Constants.FieldHubUserType.None;\n        newState.phone = '';\n        newState.company = '';\n        newState.country = '';\n        newState.profile.firstName = '';\n        newState.profile.lastName = '';\n        newState.profile.updateRequired = true;\n        newState.profile.isLatestProfile = false;\n        newState.profile.phone = '';\n        newState.profile.email = '';\n        newState.profile.title = '';\n        newState.profile.company = '';\n        newState.profile.country = '';\n        newState.profile.uiRole = null;\n        newState.profile.managedLicenses = [];\n        if (!newState.displayName) {\n            newState.displayName = newState.firstName + ' ' + newState.lastName;\n            newState.email = newState.email.substr(newState.email.indexOf('#') + 1);\n        }\n    } else if (isType(action, UserFieldHubTypeAction)) {\n        newState.fieldHubUserType = action.payload;\n    } else if (isType(action, UserProfileLoadingAction)) {\n        newState.isLoadingUserProfile = action.payload.isLoading;\n    } else if (isType(action, UserProfileAction)) {\n        newState.isLoadingUserProfile = false;\n        newState.profile.firstName = action.payload.firstName;\n        newState.profile.lastName = action.payload.lastName;\n        newState.profile.updateRequired = action.payload.updateRequired === true;\n        newState.profile.isLatestProfile = true;\n        newState.profile.phone = action.payload.phone;\n        newState.profile.email = action.payload.email;\n        newState.profile.title = action.payload.title;\n        newState.profile.company = action.payload.company;\n        newState.profile.country = action.payload.country;\n        newState.profile.uiRole = action.payload.uiRole;\n        newState.profile.managedLicenses = action.payload.managedLicenses;\n        if (action.payload.licenses && action.payload.licenses.length > 0) {\n            newState.profile.licenses = [];\n            for(let i = 0; i < action.payload.licenses.length; i++){\n                newState.profile.licenses.push(action.payload.licenses[`${i}`]);\n            }\n        }\n    } else if (isType(action, UserTenantsDetailsAction)) {\n        newState.tenantsDetails.details = _object_spread({}, action.payload);\n    } else if (isType(action, UserTenantsDetailsLoadingAction)) {\n        newState.tenantsDetails.status = action.payload;\n    } else if (isType(action, UpdateUserProfileAction)) {\n        newState.profile.firstName = action.payload.firstName;\n        newState.profile.lastName = action.payload.lastName;\n        newState.profile.updateRequired = false;\n        newState.profile.isLatestProfile = true;\n        newState.profile.phone = action.payload.phone;\n        newState.profile.title = action.payload.title;\n        newState.profile.company = action.payload.company;\n        newState.profile.country = action.payload.country;\n        newState.profile.email = action.payload.email;\n        newState.profile.uiRole = action.payload.uiRole;\n        newState.profile.managedLicenses = action.payload.managedLicenses;\n    // todo: post me update with license info (both of them)\n    } else if (isType(action, UpdateUserProfileLicenseAction)) {\n        if (action.payload.license) {\n            if (newState.profile.licenses.length === Constants.dynamicsLicense.currentD365LicenseNumber) {\n                if (action.payload.licenseType === Constants.Dynamics365LicenseType.dynamics365License) {\n                    newState.profile.licenses[Constants.Dynamics365LicenseIndex.dynamics365LicenseIndex].isDisputed = action.payload.license.isDisputed;\n                }\n                if (action.payload.licenseType === Constants.Dynamics365LicenseType.dynamics365forBusinessLicense) {\n                    newState.profile.licenses[Constants.Dynamics365LicenseIndex.dynamics365ForBusinessLicenseIndex].isDisputed = action.payload.license.isDisputed;\n                }\n            }\n        }\n    } else if (isType(action, ClearUserPropertiesAction)) {\n        newState.phone = '';\n    } else if (isType(action, UserOrdersAction)) {\n        newState.purchases.hasPurchases = action.payload;\n    } else if (isType(action, SetUserOrdersLoadingAction)) {\n        newState.purchases.loading = action.payload;\n    } else if (isType(action, UserPrivateOffersAction)) {\n        const offers = action.payload.apps || [];\n        newState.privateOffers.dataList = offers;\n    } else if (isType(action, SetUserPrivateOffersLoadingAction)) {\n        newState.privateOffers.loading = action.payload;\n    } else if (isType(action, SetAccountAction)) {\n        newState.accounts = action.payload;\n    } else if (isType(action, SetAccountIsLoadingAction)) {\n        newState.accounts.isLoading = action.payload.isLoading;\n    } else if (isType(action, SetIsMaccTenantAction)) {\n        newState.isMaccTenant = action.payload.isMacc;\n    } else {\n        return state;\n    }\n    return newState;\n}\n","function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nfunction _object_spread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        var ownKeys = Object.keys(source);\n        if (typeof Object.getOwnPropertySymbols === \"function\") {\n            ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n            }));\n        }\n        ownKeys.forEach(function(key) {\n            _define_property(target, key, source[key]);\n        });\n    }\n    return target;\n}\nfunction ownKeys(object, enumerableOnly) {\n    var keys = Object.keys(object);\n    if (Object.getOwnPropertySymbols) {\n        var symbols = Object.getOwnPropertySymbols(object);\n        if (enumerableOnly) {\n            symbols = symbols.filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n            });\n        }\n        keys.push.apply(keys, symbols);\n    }\n    return keys;\n}\nfunction _object_spread_props(target, source) {\n    source = source != null ? source : {};\n    if (Object.getOwnPropertyDescriptors) {\n        Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n        ownKeys(Object(source)).forEach(function(key) {\n            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n    }\n    return target;\n}\nimport { isType } from '@shared/actions/actions';\nimport { initialCheckoutState, copyState } from '@src/State';\nimport { SetItemInCartAction, UpdateCustomerAction, SetActiveCustomerAction, SetPublisherTokenResponse, ClearCheckoutState, SetCustomersAction, ErrorAction, ClearErrorAction, SetActiveStep, SetReceiptAction, SetBillingAddressAction, SetBillingTerm, SetRecurringBilling, SetSeatNumber, SetProduct, SetTermId, FetchingProductAction, SetCheckoutSource, SetCheckoutId } from '@shared/actions/checkoutActions';\nconst newCartActions = [\n    SetItemInCartAction,\n    SetBillingTerm,\n    SetRecurringBilling,\n    SetSeatNumber,\n    SetTermId\n];\nexport default function checkoutReducer(state = initialCheckoutState, action) {\n    const newState = copyState(state);\n    if (isType(action, SetItemInCartAction)) {\n        // currently we only allow 1 item in cart, so override the existing item\n        newState.items = newState.items.slice();\n        if (newState.items.length > 0) {\n            newState.items.splice(0, 1, action.payload);\n        } else {\n            newState.items.splice(0, 0, action.payload);\n        }\n    } else if (isType(action, SetCheckoutSource)) {\n        return _object_spread_props(_object_spread({}, newState), {\n            source: action.payload.source\n        });\n    } else if (isType(action, SetProduct)) {\n        const indexToUpdate = newState.items.findIndex((cartItem)=>cartItem.entityId === action.payload.id);\n        if (indexToUpdate >= 0) {\n            newState.items[`${indexToUpdate}`].product = action.payload.product;\n        }\n        newState.productFetched = true;\n    } else if (isType(action, FetchingProductAction)) {\n        newState.productFetched = false;\n    } else if (isType(action, SetBillingTerm)) {\n        const indexToUpdate = newState.items.findIndex((cartItem)=>cartItem.id === action.payload.id);\n        if (indexToUpdate >= 0) {\n            newState.items = state.items.map((item)=>_object_spread_props(_object_spread({}, item), {\n                    termDuration: action.payload.termDuration\n                }));\n        }\n    } else if (isType(action, SetTermId)) {\n        const indexToUpdate = newState.items.findIndex((cartItem)=>cartItem.id === action.payload.id);\n        if (indexToUpdate >= 0) {\n            newState.items = state.items.map((item)=>_object_spread_props(_object_spread({}, item), {\n                    termId: action.payload.termId\n                }));\n        }\n    } else if (isType(action, SetSeatNumber)) {\n        const indexToUpdate = newState.items.findIndex((cartItem)=>cartItem.id === action.payload.id);\n        if (indexToUpdate >= 0) {\n            newState.items[`${indexToUpdate}`].quantity = action.payload.numSeats;\n            newState.items[`${indexToUpdate}`].quantityString = action.payload.numSeats.toString();\n        }\n    } else if (isType(action, SetRecurringBilling)) {\n        const indexToUpdate = newState.items.findIndex((cartItem)=>cartItem.id === action.payload.id);\n        if (indexToUpdate >= 0) {\n            newState.items[`${indexToUpdate}`].recurringBilling = action.payload.recurringBilling;\n        }\n    } else if (isType(action, UpdateCustomerAction)) {\n        newState.activeCustomer = _object_spread_props(_object_spread({}, newState.activeCustomer), {\n            address: action.payload\n        });\n    } else if (isType(action, SetActiveStep)) {\n        newState.currentStep = action.payload;\n    } else if (isType(action, SetCustomersAction)) {\n        newState.customers = action.payload;\n    } else if (isType(action, SetActiveCustomerAction)) {\n        // Implies customer identity has been changed to another customer identity\n        newState.activeCustomer = action.payload;\n    } else if (isType(action, SetPublisherTokenResponse)) {\n        newState.publisherToken = action.payload;\n    } else if (isType(action, ClearCheckoutState)) {\n        // clear everything except the activeCustomer and selectedPi information\n        newState.items = [];\n        newState.retryAfter = null;\n        newState.publisherToken = null;\n    } else if (isType(action, SetReceiptAction)) {\n        newState.receipt = action.payload;\n    } else if (isType(action, SetBillingAddressAction)) {\n        newState.billingAddress = action.payload;\n    } else if (isType(action, SetCheckoutId)) {\n        newState.checkoutId = action.payload.checkoutId;\n    } else if (isType(action, ClearErrorAction)) {\n        newState.error = false;\n    } else if (isType(action, ErrorAction)) {\n        newState.error = true;\n    }\n    // Upon incrementing purchaseAttempt, a new cart will generate and checkout will reload\n    if (newCartActions.some((newCartAction)=>isType(action, newCartAction))) {\n        newState.purchaseAttempt++;\n    }\n    return newState;\n}\n","function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nfunction _object_spread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        var ownKeys = Object.keys(source);\n        if (typeof Object.getOwnPropertySymbols === \"function\") {\n            ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n            }));\n        }\n        ownKeys.forEach(function(key) {\n            _define_property(target, key, source[key]);\n        });\n    }\n    return target;\n}\nimport { isType } from '../actions/actions';\nimport { initialPartnersState } from '../../State';\nimport { SetContactDetailsAction, SetFilterLocationAction } from '../actions/partnersActions';\nexport default function partnersReducer(state = initialPartnersState, action) {\n    if (isType(action, SetFilterLocationAction)) {\n        const newState = _object_spread({}, state);\n        newState.filterLocation = action.payload;\n        return newState;\n    } else if (isType(action, SetContactDetailsAction)) {\n        const newState = _object_spread({}, state);\n        newState.contactDetails = action.payload;\n        return newState;\n    }\n    return state;\n}\n","import { copyState, initialServiceDataState } from '@src/State';\nimport { Constants } from '@shared/utils/constants';\nimport { CountriesDataReceivedAction, isType, RecommendedTrendingServiceReceivedAction, RecommendedWhatsNewServiceReceivedAction, SetEntityDataRegionFiltersAction } from '@shared/actions/actions';\nimport { commonEntityDataReducer } from '@shared/reducers/commonEntityDataReducer';\nimport { AzureEnvironmentSettings } from '@shared/AzureEnvironmentSettings';\nfunction isSelectedCountryValid(countriesList, selectedCountry) {\n    // If countries list not defined yet, this is valid country selection.\n    // We will change the selected country to the default one if we get list with out it.\n    if (!countriesList || Object.keys(countriesList).length === 0 || !selectedCountry) {\n        return true;\n    }\n    return selectedCountry in countriesList;\n}\nexport default function serviceDataReducer(state = initialServiceDataState, action) {\n    const newState = copyState(state);\n    if (isType(action, CountriesDataReceivedAction)) {\n        newState.countriesList = action.payload.countries;\n        if (!isSelectedCountryValid(action.payload.countries, state.selectedCountry)) {\n            newState.selectedCountry = AzureEnvironmentSettings.defaultCountryCode.toUpperCase();\n        }\n    } else if (isType(action, SetEntityDataRegionFiltersAction)) {\n        if (state.selectedCountry !== action.payload.countryCode || state.selectedRegion !== action.payload.regionCode) {\n            if (isSelectedCountryValid(state.countriesList, action.payload.countryCode)) {\n                newState.selectedCountry = action.payload.countryCode;\n            }\n            newState.selectedRegion = action.payload.regionCode;\n        }\n    } else if (isType(action, RecommendedWhatsNewServiceReceivedAction)) {\n        newState.recommendedServices.whatsNewService = action.payload;\n    } else if (isType(action, RecommendedTrendingServiceReceivedAction)) {\n        newState.recommendedServices.trendingService = action.payload;\n    } else {\n        return commonEntityDataReducer(Constants.EntityType.Service, state, action);\n    }\n    return newState;\n}\n","/* istanbul ignore file */ import { combineReducers } from 'redux';\nimport searchReducer from '@shared/reducers/searchReducer';\nimport modalReducer from '@shared/reducers/modalReducer';\nimport appDataReducer from '@shared/reducers/appDataReducer';\nimport userDataReducer from '@shared/reducers/userDataReducer';\nimport configReducer from '@shared/reducers/configReducer';\nimport dynamicCampaignReducer from '@shared/reducers/dynamicCampaignReducer';\nimport userFavouriteReducer from '@shared/reducers/userFavouriteReducer';\nimport checkoutReducer from '@shared/reducers/checkoutReducer';\nimport partnersReducer from '@shared/reducers/partnersReducer';\nimport cloudsIndustryDataReducer from '@shared/reducers/cloudsIndustryDataReducer';\nimport serviceDataReducer from '@shared/reducers/serviceDataReducer';\n// ordering matters here, we first update the filters and then the app data\nexport default combineReducers({\n    search: searchReducer,\n    modal: modalReducer,\n    apps: appDataReducer,\n    cloudsIndustry: cloudsIndustryDataReducer,\n    users: userDataReducer,\n    config: configReducer,\n    dynamicCampaign: dynamicCampaignReducer,\n    userFavourite: userFavouriteReducer,\n    checkout: checkoutReducer,\n    partners: partnersReducer,\n    services: serviceDataReducer\n});\n","import { updateMatchFunctions } from '@shared/utils/filterHelpers';\nimport { Constants } from '@shared/utils/constants';\nimport { loadAppPricing } from '@shared/utils/pricing';\nimport { AppsPricingDataReceivedAction, isType } from '@shared/actions/actions';\nimport { copyState, deepCopyDataMap, initialCloudsIndustryDataState } from './../../State';\nimport { commonEntityDataReducer } from './commonEntityDataReducer';\nexport default function cloudsIndustryDataReducer(state = initialCloudsIndustryDataState, action) {\n    const newState = copyState(state);\n    if (isType(action, AppsPricingDataReceivedAction)) {\n        const { payload } = action;\n        const { pricingData = {} } = payload;\n        newState.dataList = state.dataList.map((app)=>loadAppPricing(app, pricingData));\n        const dataMap = deepCopyDataMap(state.dataMap);\n        updateMatchFunctions(dataMap);\n        newState.dataMap = dataMap;\n        newState.pricingPayload = payload;\n    } else {\n        return commonEntityDataReducer(Constants.EntityType.CloudsIndustry, state, action);\n    }\n    return newState;\n}\n","function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nfunction _object_spread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        var ownKeys = Object.keys(source);\n        if (typeof Object.getOwnPropertySymbols === \"function\") {\n            ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n            }));\n        }\n        ownKeys.forEach(function(key) {\n            _define_property(target, key, source[key]);\n        });\n    }\n    return target;\n}\nimport { isType, NationalCloudSettingAction, EmbeddedAppSettingAction, EmbeddedHostAction, LocStringsReceivedAction, ChangeLocaleLanguage, FlightCodesReceivedAction, CorrelationIdReceivedAction, BreadcrumbAction, TelemetryLoggedAction, SetCurrentViewAction, SetLandingViewAction, UpdateCurrentGalleryViewIsCuratedAction, AppPricingDataRequestedAction, AppsPricingDataReceivedAction, FeatureFlagsReceivedAction, BillingRegionReadFromCookieAction, ABTestingEnableAction, GlobalSettingsReceivedAction, IsMobileReceivedAction, CheckoutConfigAction, IsManageModalOpenAction, SetWCPConsentAction, SetIsConsentRequired, SetInitLoadingAction, EnableNewNpsAction, SetIsNpsLogicVerifiedAction, ToggleShowContextPanel, RequestIdReceivedAction, SetIsDisabledBilling, SetStorefrontNameAction, I18nextReceivedAction, SetInitializedPCAInstanceAction, IncludeTestProductsReceivedAction, IsConverged } from '@shared/actions/actions';\nimport { SetQueryAction, SetRequestFilteredEntityTypeAction, SetRequestFilteredLoadedAction, SetRequestFilteredLoadingAction, SetRequestFilteredQueryAction, SetResponseFilteredQueryAction } from './../actions/queryActions';\nimport { pick } from 'lodash-es';\nimport { initialConfigState, copyState } from './../../State';\nexport default function configReducer(state = initialConfigState, action) {\n    const newState = copyState(state);\n    if (isType(action, NationalCloudSettingAction)) {\n        newState.nationalCloud = action.payload.nationalCloud;\n    } else if (isType(action, EmbeddedAppSettingAction)) {\n        newState.isEmbedded = action.payload.isEmbedded;\n    } else if (isType(action, SetInitLoadingAction)) {\n        newState.initLoading = action.payload.initLoading;\n    } else if (isType(action, LocStringsReceivedAction)) {\n        newState.locStrings = action.payload.localizedstrings;\n        newState.locale = action.payload.locale;\n    } else if (isType(action, I18nextReceivedAction)) {\n        newState.i18nInstance = action.payload.i18nInstance;\n    } else if (isType(action, EmbeddedHostAction)) {\n        newState.embedHost = action.payload.embedHost;\n    } else if (isType(action, FlightCodesReceivedAction)) {\n        newState.flightCodes = action.payload.flightCodes;\n    } else if (isType(action, IncludeTestProductsReceivedAction)) {\n        newState.includeTestProducts = action.payload.includeTestProducts;\n    } else if (isType(action, IsConverged)) {\n        newState.isConverged = action.payload.isConverged;\n    } else if (isType(action, CorrelationIdReceivedAction)) {\n        newState.correlationId = action.payload.correlationId;\n    } else if (isType(action, RequestIdReceivedAction)) {\n        newState.requestId = action.payload.requestId;\n    } else if (isType(action, BreadcrumbAction)) {\n        newState.breadcrumbUrl = action.payload.breadcrumbUrl;\n    } else if (isType(action, TelemetryLoggedAction)) {\n        newState.appViewTelemetryLoggedCount = state.appViewTelemetryLoggedCount + 1;\n    } else if (isType(action, SetCurrentViewAction)) {\n        // currentView is one of routes property `name` in routerHistory.tsx\n        newState.currentView = action.payload.currentView;\n    } else if (isType(action, SetLandingViewAction)) {\n        // landingView is one of routes property `name` in routerHistory.tsx\n        newState.landingView = action.payload.landingView;\n    } else if (isType(action, UpdateCurrentGalleryViewIsCuratedAction)) {\n        // determine whether current render gallery view is curated\n        newState.currentGalleryViewIsCurated = action.payload.isCuratedGalleryView;\n    } else if (isType(action, AppPricingDataRequestedAction)) {\n        newState.pricingDataLoaded = false;\n    } else if (isType(action, AppsPricingDataReceivedAction)) {\n        newState.billingCountryCode = action.payload.countryCode;\n        newState.pricingDataLoaded = true;\n    } else if (isType(action, FeatureFlagsReceivedAction)) {\n        const keys = Object.keys(action.payload);\n        const keysLength = keys.length;\n        for(let i = 0; i < keysLength; i++){\n            newState.featureFlags[keys[`${i}`]] = action.payload[keys[`${i}`]];\n        }\n    } else if (isType(action, SetQueryAction)) {\n        newState.query = action.payload.query;\n    } else if (isType(action, SetRequestFilteredLoadingAction)) {\n        newState.requestFilteredLoading = true;\n    } else if (isType(action, SetRequestFilteredLoadedAction)) {\n        newState.requestFilteredLoading = false;\n    } else if (isType(action, SetRequestFilteredQueryAction)) {\n        newState.requestFilteredQuery = action.payload.requestFilteredQuery;\n    } else if (isType(action, SetRequestFilteredEntityTypeAction)) {\n        newState.requestFilteredEntityType = action.payload.requestFilteredEntityType;\n    } else if (isType(action, SetResponseFilteredQueryAction)) {\n        newState.responseFilteredQuery = action.payload.responseFilteredQuery;\n    } else if (isType(action, BillingRegionReadFromCookieAction)) {\n        newState.billingCountryCode = action.payload.billingRegion;\n    } else if (isType(action, ABTestingEnableAction)) {\n        newState.experiment.abTestingVersion_AMP = action.payload.abTestingVersion_AMP;\n        newState.experiment.abTestingVersion_newFilterAMP = action.payload.abTestingVersion_newFilterAMP;\n    } else if (isType(action, GlobalSettingsReceivedAction)) {\n        Object.assign(newState, _object_spread({}, pick(action.payload.globalSettings, [\n            'marketplaceApiHost',\n            'saasRPHost',\n            'marketplaceLeadsHost',\n            'marketplaceLeadsAudienceId',\n            'armApiHost',\n            'MPRPHost',\n            'partnersIframeUrl',\n            'partnersIframeUrlTest',\n            'telemetryInstrumentationKey',\n            'loggingInstrumentationKey',\n            'partnersApiHost',\n            'appVersion',\n            'region',\n            'requestId',\n            'correlationId',\n            'reviewsAPI',\n            'linkedinAPI',\n            'linkedinAPIVersion',\n            'communityAPI',\n            'communityAPIVersion',\n            'siteEnvironment',\n            'aadApplicationId',\n            'aadLoginUrl',\n            'commerceApiHost',\n            'oneCatalogApiHost',\n            'telemetryEndpoint',\n            'msClarityId',\n            'searchApiEndpoint',\n            'expHeaderDisabled',\n            'enableOneTaxonomy',\n            'jarvisCM',\n            'mprpAadApplicationId',\n            'pifdEndpoint',\n            'commerceApi',\n            'graphApi',\n            'agreementAppId',\n            'isConverged'\n        ])));\n    } else if (isType(action, IsMobileReceivedAction)) {\n        newState.isMobile = action.payload.isMobile;\n    } else if (isType(action, CheckoutConfigAction)) {\n        newState.pidlEnv = action.payload.checkoutSettings.pidlEnv;\n    } else if (isType(action, IsManageModalOpenAction)) {\n        newState.cookiesConsent.isManageModalOpen = action.payload;\n    } else if (isType(action, SetWCPConsentAction)) {\n        newState.cookiesConsent.WCPConsent = action.payload;\n    } else if (isType(action, SetIsConsentRequired)) {\n        newState.cookiesConsent.isConsentRequired = action.payload;\n    } else if (isType(action, EnableNewNpsAction)) {\n        newState.newNpsEnabled = action.payload.enable;\n    } else if (isType(action, SetInitializedPCAInstanceAction)) {\n        newState.pcaInstanceInitialized = action.payload.initialized;\n    } else if (isType(action, SetIsNpsLogicVerifiedAction)) {\n        newState.npsLogicVerified = action.payload.verified;\n    } else if (isType(action, ToggleShowContextPanel)) {\n        newState.showContextPanel = !state.showContextPanel;\n    } else if (isType(action, ChangeLocaleLanguage)) {\n        newState.locale = action.payload.locale;\n    } else if (isType(action, SetIsDisabledBilling)) {\n        newState.isDisabledBilling = action.payload;\n    } else if (isType(action, SetStorefrontNameAction)) {\n        newState.storefrontName = action.payload;\n    } else {\n        return state;\n    }\n    return newState;\n}\n","import { isType, DynamicCampaignReceivedAction } from './../actions/actions';\nimport { initialDynamicCampaignState, copyState } from './../../State';\nexport default function campaignReducer(state = initialDynamicCampaignState, action) {\n    let newState = copyState(state);\n    if (isType(action, DynamicCampaignReceivedAction)) {\n        newState = action.payload.campaignInfo;\n    } else {\n        return state;\n    }\n    return newState;\n}\n","function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nfunction _object_spread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        var ownKeys = Object.keys(source);\n        if (typeof Object.getOwnPropertySymbols === \"function\") {\n            ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n            }));\n        }\n        ownKeys.forEach(function(key) {\n            _define_property(target, key, source[key]);\n        });\n    }\n    return target;\n}\nfunction ownKeys(object, enumerableOnly) {\n    var keys = Object.keys(object);\n    if (Object.getOwnPropertySymbols) {\n        var symbols = Object.getOwnPropertySymbols(object);\n        if (enumerableOnly) {\n            symbols = symbols.filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n            });\n        }\n        keys.push.apply(keys, symbols);\n    }\n    return keys;\n}\nfunction _object_spread_props(target, source) {\n    source = source != null ? source : {};\n    if (Object.getOwnPropertyDescriptors) {\n        Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n        ownKeys(Object(source)).forEach(function(key) {\n            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n    }\n    return target;\n}\nimport { isType } from './../actions/actions';\nimport { ReceiveUserFavouriteDataAction, UpdateUserFavouriteFetchDataStatusAction, UpsertUserFavouriteItemAction, DeleteUserFavouriteItemAction, FavouriteAppsPricingDataReceivedAction } from './../actions/userFavouriteActions';\nimport { initialUserFavouriteState, copyState } from '@src/State';\nimport { isApplication, isConsultingService, getFavouriteEntityState, upsertsUserFavouriteEntityState, deleteUserFavouriteEntityState } from './../utils/userFavouriteUtils';\nimport { Constants } from './../utils/constants';\nimport { loadAppPricing } from './../utils/pricing';\nexport default function userFavouriteReducer(state = initialUserFavouriteState, action) {\n    const newState = copyState(state);\n    if (isType(action, ReceiveUserFavouriteDataAction)) {\n        const payload = action.payload;\n        const userFavourites = payload.userFavorites || [];\n        userFavourites.forEach((userFavourite)=>{\n            if (isApplication(userFavourite.applicationType)) {\n                newState.apps = getFavouriteEntityState(userFavourite.favorites, userFavourite.applicationType);\n            } else if (isConsultingService(userFavourite.applicationType)) {\n                newState.services = getFavouriteEntityState(userFavourite.favorites, userFavourite.applicationType);\n            }\n        });\n    } else if (isType(action, UpdateUserFavouriteFetchDataStatusAction)) {\n        const payload = action.payload;\n        if (newState.fetchDataStatus === payload.fetchDataStatus) {\n            return state;\n        }\n        newState.fetchDataStatus = payload.fetchDataStatus;\n    } else if (isType(action, UpsertUserFavouriteItemAction)) {\n        if (newState.fetchDataStatus === Constants.UserFavourite.FetchDataStatus.Valid) {\n            const payload = action.payload;\n            if (isApplication(payload.applicationType)) {\n                upsertsUserFavouriteEntityState(newState.apps, payload);\n            } else if (isConsultingService(payload.applicationType)) {\n                upsertsUserFavouriteEntityState(newState.services, payload);\n            }\n        }\n    } else if (isType(action, DeleteUserFavouriteItemAction)) {\n        if (newState.fetchDataStatus === Constants.UserFavourite.FetchDataStatus.Valid) {\n            const payload = action.payload;\n            if (isApplication(payload.applicationType)) {\n                deleteUserFavouriteEntityState(newState.apps, payload);\n            } else if (isConsultingService(payload.applicationType)) {\n                deleteUserFavouriteEntityState(newState.services, payload);\n            }\n        }\n    } else if (isType(action, FavouriteAppsPricingDataReceivedAction)) {\n        if (!state.apps || !action.payload.pricingData || Object.keys(action.payload.pricingData).length === 0) {\n            return state;\n        }\n        newState.apps = state.apps.map((favouriteApp)=>{\n            const app = favouriteApp.item;\n            const item = loadAppPricing(app, action.payload.pricingData);\n            return _object_spread_props(_object_spread({}, favouriteApp), {\n                item\n            });\n        });\n    } else {\n        return state;\n    }\n    return newState;\n}\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport * as React from 'react';\nimport { buildStore } from '@shared/store/createStore';\nimport ErrorModal from '../containers/modals/errorModal';\nimport { render } from 'react-dom';\nimport { getWindow } from '../services/window';\nimport combineReducers from '../reducers/reducers';\nimport { isEmbedded } from '../utils/appUtils';\nimport thunk from 'redux-thunk';\nimport { Provider } from 'react-redux';\nimport classNames from 'classnames';\nexport function renderErrorModal(store, isEmbed = false) {\n    if (!store) {\n        const initialState = window.__INITIAL_STATE__;\n        store = buildStore({\n            combinedReducers: combineReducers,\n            initialState,\n            middleware: [\n                thunk\n            ]\n        });\n        isEmbed = initialState.config.isEmbedded;\n    }\n    const modalBackgroundClasses = classNames({\n        spza_presentation: true,\n        spza_background_1: true,\n        spza_background_2: false\n    });\n    const modalClasses = classNames({\n        spza_dialog: true,\n        spza_dialog_design2: false\n    });\n    let dismissModal = null;\n    if (!isEmbed) {\n        dismissModal = ()=>{\n            const href = getWindow().location.origin + '/home';\n            getWindow().location.assign(href);\n        };\n    } else {\n        dismissModal = ()=>{\n            getWindow().parent.postMessage({\n                msgType: 'closeSaasMarketplace'\n            }, '*');\n        };\n    }\n    render(/*#__PURE__*/ _jsx(Provider, {\n        store: store,\n        children: /*#__PURE__*/ _jsx(\"div\", {\n            className: classNames({\n                spza_root: !isEmbedded(),\n                spza_root_embedded: isEmbedded()\n            }),\n            children: /*#__PURE__*/ _jsx(\"div\", {\n                className: modalClasses,\n                children: /*#__PURE__*/ _jsx(\"div\", {\n                    className: modalBackgroundClasses,\n                    children: /*#__PURE__*/ _jsx(ErrorModal, {\n                        dismissModal: dismissModal\n                    })\n                })\n            })\n        })\n    }), document.getElementById('react-view'));\n}\n","import * as httpProtocol from '@shared/services/http/httpProtocol';\nimport { createPowerBIDataReceivedAction, createPartnerAppDataReceivedAction } from '@shared/actions/actions';\nimport { logPageLoadFinished } from '../embedMessaging';\nimport { SpzaInstrumentService } from '@shared/services/telemetry/spza/spzaInstrument';\nimport { Constants } from '@shared/utils/constants';\nimport { DataMap } from '@shared/utils/dataMapping';\nimport { logger } from '@src/logger';\nimport { getProductByUrlKey } from '@shared/utils/appUtils';\nconst PUBLISH_RETRY_COUNT = 2;\nexport function finishProcessingAppData(dispatch, embedHost, apps) {\n    var _getProductByUrlKey;\n    const payload = {\n        page: `In App Gallery(${(_getProductByUrlKey = getProductByUrlKey({\n            urlKey: embedHost\n        })) === null || _getProductByUrlKey === void 0 ? void 0 : _getProductByUrlKey.UrlKey})`,\n        action: Constants.Telemetry.Action.NetworkCall,\n        actionModifier: Constants.Telemetry.ActionModifier.End,\n        details: '[End] Partner App data is received. Data dispatched for parsing'\n    };\n    SpzaInstrumentService.getProvider().probe('logTelemetryInfo', payload);\n    logger.info(payload.details, payload);\n    dispatch(createPartnerAppDataReceivedAction({\n        appData: apps,\n        embedHost\n    }));\n    logPageLoadFinished(embedHost);\n    return apps;\n}\nexport function fetchEmbedAppData(embedHost, hostData) {\n    return function(dispatch) {\n        const getAppsEndpoint = hostData.getAppsEndpoint;\n        if (!getAppsEndpoint) {\n            throw new Error('No getAppsEndpoint specified');\n        }\n        const options = {\n            authenticationType: httpProtocol.AuthenticationTypes.Unauthenticated,\n            parseResult: true,\n            retry: PUBLISH_RETRY_COUNT\n        };\n        return new Promise((resolve, reject)=>{\n            httpProtocol.get(getAppsEndpoint, options).setAuthHeader(hostData.accessToken).setHeader('Accept', 'application/json').setHeader('Context', JSON.stringify(hostData.context)).request().then((result)=>{\n                const appData = finishProcessingAppData(dispatch, embedHost, result.applications);\n                resolve(appData);\n            }, (error)=>{\n                reject(error);\n            });\n        });\n    };\n}\n// TODO: Add error handling for PowerBI failure\nexport function fetchPowerBIData(hostData) {\n    return function(dispatch, getState) {\n        const state = getState();\n        // TODO: this should probably be api.powerbi.com for the default\n        let pbiApi = 'https://api.powerbi.com/v1.0/spza/applications';\n        if (hostData.backendUrlOverride && hostData.backendUrlOverride.length > 1) {\n            pbiApi = hostData.backendUrlOverride + '/v1.0/spza/applications';\n        }\n        const options = {\n            authenticationType: httpProtocol.AuthenticationTypes.Unauthenticated,\n            parseResult: true,\n            allowOrigin: true,\n            retry: PUBLISH_RETRY_COUNT\n        };\n        return new Promise((resolve, reject)=>{\n            httpProtocol.get(pbiApi, options).setAuthHeader(hostData.accessToken).setHeader('Accept', 'application/json').setHeader('ActivityId', state.config.correlationId).setHeader('X-PowerBI-User-GroupId', hostData.context.groupId).request().then((appData)=>{\n                // This event is used to indicate that the Power BI data is fetched. Parsing and rendering starts after this step\n                const payload = {\n                    page: 'In App Gallery(PowerBI)',\n                    action: Constants.Telemetry.Action.NetworkCall,\n                    actionModifier: Constants.Telemetry.ActionModifier.End,\n                    details: '[End] PowerBI data is received. Data dispatched for parsing'\n                };\n                SpzaInstrumentService.getProvider().probe('logTelemetryInfo', payload);\n                logger.info(payload.details, {\n                    action: payload.action,\n                    actionModifier: payload.actionModifier,\n                    page: payload.page\n                });\n                dispatch(createPowerBIDataReceivedAction({\n                    appData: appData.applications\n                }));\n                logPageLoadFinished(DataMap.products.PowerBI.UrlKey);\n                resolve(appData);\n            }, (error)=>{\n                reject(error);\n            });\n        });\n    };\n}\n","/* eslint-disable @typescript-eslint/no-use-before-define */ import { DataMap } from '@shared/utils/dataMapping';\nimport { getWindow } from '@shared/services/window';\nimport { UserSegment } from '@shared/Models';\nimport { Constants } from '@shared/utils/constants';\nimport { createEmbedUserSignInAction } from '@shared/actions/actions';\nimport { SpzaInstrumentService } from '@shared/services/telemetry/spza/spzaInstrument';\nimport { getEmbedHostName, getTelemetryResponseUrl, getHandoffUrlForProduct, checkOriginSource, getPaymentRedirectUrl, postMessageToHost, getProductByUrlKey } from '@shared/utils/appUtils';\nimport { HttpModule } from '@shared/services/http/httpProtocol';\nimport { renderErrorModal } from '@shared/utils/errorHandlerUtil';\nimport { getPrimaryProductUrl } from '@shared/utils/datamappingHelpers';\nimport { logger } from '@src/logger';\nimport * as embedHostUtils from './embedHostUtils';\nimport { constants } from './constants';\nimport { fetchPowerBIData, fetchEmbedAppData, finishProcessingAppData } from './actions/embedThunks';\nlet appDataRequestStart = 0;\n// DO NOT EVER CHANGE THE MAPPING FOR dynamics-365-business-central THIS WILL BREAK EMBED CTA\nconst legacyProductsMap = {\n    'dynamics-365-for-finance-and-operations-enterprise-edition': 'dynamics-365-for-operations',\n    'dynamics-365-for-sales-enterprise-edition': 'dynamics-365-for-sales',\n    'dynamics-365-for-finance-and-operations-business-edition': 'dynamics-365-for-financials',\n    'dynamics-365-for-customer-services-enterprise-edition': 'dynamics-365-for-customer-services',\n    'dynamics-365-for-field-services-enterprise-edition': 'dynamics-365-for-field-services',\n    'dynamics-365-for-project-service-automation-enterprise-edition': 'dynamics-365-for-project-service-automation',\n    'dynamics-365-business-central': 'dynamics-365-for-financials'\n};\nexport function postEmbedCTAMessage(app) {\n    const data = {\n        applicationId: app.entityId\n    };\n    postMessageToHost({\n        msgType: constants.actionTypes.ctaClicked,\n        data\n    });\n}\nexport function postEmbedAcquisitionMessage(app, ctaClicked, embedHost = '') {\n    const productTitle = getPrimaryProductUrl(app.primaryProduct);\n    // eslint-disable-next-line no-prototype-builtins\n    const productName = legacyProductsMap.hasOwnProperty(productTitle) ? legacyProductsMap[`${productTitle}`] : productTitle;\n    const data = {\n        applicationId: app.entityId,\n        category: app.privateApp ? 'private' : 'public',\n        redirectUrl: app.handoffURL || getHandoffUrlForProduct(productTitle, app.entityId, false, app.products, app.locale, ctaClicked),\n        product: productName,\n        responseUrl: getTelemetryResponseUrl(app.entityId)\n    };\n    if (embedHost === DataMap.products.AdminPortal.UrlKey && ctaClicked === Constants.CTAType.Purchase) {\n        data.paymentRedirectUrl = getPaymentRedirectUrl(app.entityId, Constants.M365Admin);\n    }\n    postMessageToHost({\n        msgType: constants.actionTypes.acquireApp,\n        data\n    });\n}\nexport function convertBitmaskValueToRawData(result, dataMapping) {\n    const data = [];\n    if (result) {\n        const keys = Object.keys(dataMapping);\n        for(let i = 0; i < keys.length; i++){\n            const value = dataMapping[keys[`${i}`]];\n            if (result & value) {\n                data.push(keys[`${i}`]);\n            }\n        }\n    }\n    return data;\n}\nexport function logInitListenerFinished(embedHost) {\n    const payload = {\n        page: 'In App Gallery',\n        action: Constants.Telemetry.Action.EmbedMessageListener,\n        actionModifier: Constants.Telemetry.ActionModifier.End,\n        details: `embedHost: ${getEmbedHostName(embedHost)}`\n    };\n    SpzaInstrumentService.getProvider().probe('logTelemetryInfo', payload);\n    logger.info(payload.details, {\n        action: payload.action,\n        actionModifier: payload.actionModifier,\n        page: payload.page\n    });\n    postMessageToHost({\n        msgType: constants.actionTypes.initListenerFinished\n    });\n}\nexport function logPageLoadFinished(embedHost) {\n    const timeAtTelemetryMethodCall = new Date().getTime();\n    // This event is used to indicate that the In App gallery apps rendering is finished.\n    const payload = {\n        page: 'In App Gallery',\n        action: Constants.Telemetry.Action.PageLoad,\n        actionModifier: Constants.Telemetry.ActionModifier.End,\n        details: 'In App Gallery tiles rendering finished'\n    };\n    SpzaInstrumentService.getProvider().probe('logTelemetryInfo', payload);\n    logger.info(payload.details, {\n        action: payload.action,\n        actionModifier: payload.actionModifier,\n        page: payload.page\n    });\n    const currentWindow = getWindow();\n    if (currentWindow && currentWindow.performance && embedHostUtils.hasDynamicData(embedHost)) {\n        const timing = currentWindow.performance.timing;\n        // Telemetry for Network Latency\n        const networkLatency = timing.responseEnd - timing.fetchStart;\n        const currentTime = new Date().getTime();\n        // The time taken for page load once the page is received from the server\n        // we may find timing.loadEventEnd as 0 if called before load event fires.\n        // If so, use current time as approximation till we fix it properly\n        const loadEventEnd = timing.loadEventEnd !== 0 ? timing.loadEventEnd : currentTime;\n        // The time taken for page load once the page is received from the server\n        const pageLoadTime = loadEventEnd - timing.responseEnd;\n        // The whole process of navigation and page load\n        const navigationToPageLoad = currentTime - timing.navigationStart;\n        const dataLatency = currentTime - appDataRequestStart;\n        // the data we are getting here is valuable, but seems very browser specific (some browsers do not properly support)\n        // so introducing a new number here that will always be consistent:\n        const timePassedSinceNavigationStart = timeAtTelemetryMethodCall - timing.navigationStart;\n        const perfTimings = {\n            networkLatency,\n            pageLoadTime,\n            navigationToPageLoad,\n            timePassedSinceNavigationStart,\n            allTimings: timing,\n            isEmbedded: true,\n            embedHost: getEmbedHostName(embedHost),\n            isAuthenticated: false,\n            dataLatency\n        };\n        const perfPayload = {\n            eventName: Constants.Telemetry.Action.PerfEvents,\n            data: JSON.stringify(perfTimings),\n            flushLog: true\n        };\n        SpzaInstrumentService.getProvider().probe('logOneTimeInfo', perfPayload);\n        logger.info(perfPayload.data, {\n            action: perfPayload.eventName,\n            actionModifier: Constants.Telemetry.ActionModifier.Info,\n            page: ''\n        });\n    }\n    postMessageToHost({\n        msgType: constants.actionTypes.finishedLoadingContentProviderList\n    });\n}\nexport function initializeListener(dispatch, embedHost) {\n    const currWindow = getWindow();\n    if (currWindow.parent !== currWindow) {\n        currWindow.addEventListener('message', (e)=>{\n            receiveMessage(e, dispatch, embedHost);\n        });\n    }\n    logInitListenerFinished(embedHost);\n    if (!embedHostUtils.hasDynamicData(embedHost)) {\n        // If it is not dynamic data on embed host, we are done\n        // with fetching the app data.\n        appDataRequestStart = new Date().getTime();\n        logPageLoadFinished(embedHost);\n    }\n}\n// handle message from parent window\nexport function receiveMessage(event = {}, dispatch, embedHost) {\n    const { origin, data = {} } = event;\n    const { hostData, msgType } = data;\n    const validOrigin = checkOriginSource(origin);\n    const payload = {\n        page: getWindow().location.href,\n        action: Constants.Telemetry.Action.EmbedMessaging,\n        actionModifier: Constants.Telemetry.ActionModifier.ReceiveMessage,\n        details: JSON.stringify({\n            origin,\n            validOrigin,\n            msgType\n        })\n    };\n    SpzaInstrumentService.getProvider().probe('logTelemetryInfo', payload);\n    logger.info(payload.details, {\n        action: payload.action,\n        actionModifier: payload.actionModifier\n    });\n    if (!validOrigin) {\n        return;\n    }\n    if (hostData) {\n        hostData.userSegment = UserSegment.unauthenticated;\n        const { error, hostCorrelationId, accessToken, privateApps, getAppsEndpoint, firstName, lastName, workEmail, backendUrlOverride } = hostData;\n        switch(msgType){\n            case Constants.embedMessage.loadMarketplaceV2:\n                if (error) {\n                    handleError(true, hostCorrelationId, error);\n                } else if (!accessToken) {\n                    handleError(true, hostCorrelationId, 'No access token');\n                } else if (!hostCorrelationId) {\n                    handleError(true, '', 'No host correlation ID');\n                } else {\n                    if (embedHostUtils.hasPrivateApps(embedHost) && !privateApps) {\n                        var _getProductByUrlKey;\n                        handleError(false, hostCorrelationId, 'privateApps is required but is null. EmbedHost: ' + ((_getProductByUrlKey = getProductByUrlKey({\n                            urlKey: embedHost\n                        })) === null || _getProductByUrlKey === void 0 ? void 0 : _getProductByUrlKey.UrlKey));\n                    }\n                    finishProcessingAppData(dispatch, embedHost, privateApps);\n                    dispatch(createEmbedUserSignInAction(hostData));\n                    HttpModule.updateAccessToken(hostData);\n                }\n                break;\n            case Constants.embedMessage.loadMarketplace:\n                // PowerBI won't log page load finished until after it fetches and parses\n                // the app list from the PowerBI backend\n                if (getAppsEndpoint) {\n                    var _getProductByUrlKey1, _getProductByUrlKey2;\n                    // This event is used to indicate that the additional data is about to be fetched.\n                    appDataRequestStart = new Date().getTime();\n                    const detailsObject = {\n                        message: '[Start] Partner App data request start (' + ((_getProductByUrlKey1 = getProductByUrlKey({\n                            urlKey: embedHost\n                        })) === null || _getProductByUrlKey1 === void 0 ? void 0 : _getProductByUrlKey1.UrlKey) + ')',\n                        endPoint: getAppsEndpoint,\n                        receivedFirstNameFromEmbedHost: !!firstName,\n                        receivedLastNameFromEmbedHost: !!lastName,\n                        receivedWorkEmailFromEmbedHost: !!workEmail,\n                        receivedAccessTokenFromEmbedHost: !!accessToken\n                    };\n                    const payload = {\n                        page: 'In App Gallery(' + ((_getProductByUrlKey2 = getProductByUrlKey({\n                            urlKey: embedHost\n                        })) === null || _getProductByUrlKey2 === void 0 ? void 0 : _getProductByUrlKey2.UrlKey) + ')',\n                        action: Constants.Telemetry.Action.NetworkCall,\n                        actionModifier: Constants.Telemetry.ActionModifier.Start,\n                        details: JSON.stringify(detailsObject)\n                    };\n                    SpzaInstrumentService.getProvider().probe('logTelemetryInfo', payload);\n                    logger.info(payload.details, {\n                        action: payload.action,\n                        actionModifier: payload.actionModifier,\n                        page: payload.page\n                    });\n                    dispatch(fetchEmbedAppData(embedHost, hostData));\n                } else if (backendUrlOverride) {\n                    // This event is used to indicate that the Power BI data is about to be fetched.\n                    appDataRequestStart = new Date().getTime();\n                    const detailsObject = {\n                        message: '[Start] Power BI Request Start. loadMarketplace message Received from Power BI',\n                        endPoint: backendUrlOverride,\n                        receivedFirstNameFromEmbedHost: !!firstName,\n                        receivedLastNameFromEmbedHost: !!lastName,\n                        receivedWorkEmailFromEmbedHost: !!workEmail,\n                        receivedAccessTokenFromEmbedHost: !!accessToken\n                    };\n                    const payload = {\n                        page: 'In App Gallery(PowerBI)',\n                        action: Constants.Telemetry.Action.NetworkCall,\n                        actionModifier: Constants.Telemetry.ActionModifier.Start,\n                        details: JSON.stringify(detailsObject)\n                    };\n                    SpzaInstrumentService.getProvider().probe('logTelemetryInfo', payload);\n                    logger.info(payload.details, {\n                        action: payload.action,\n                        actionModifier: payload.actionModifier,\n                        page: payload.page\n                    });\n                    dispatch(fetchPowerBIData(hostData));\n                }\n                hostData.email = workEmail;\n                dispatch(createEmbedUserSignInAction(hostData));\n                HttpModule.updateAccessToken(hostData);\n                break;\n            default:\n                // eslint-disable-next-line no-useless-return\n                return;\n        }\n    }\n}\nfunction handleError(showErrorModal, hostCorrelationId, error) {\n    renderErrorModal(null);\n    const payload = {\n        page: getWindow().location.href,\n        action: Constants.Telemetry.Action.MyOrgApps,\n        actionModifier: Constants.Telemetry.ActionModifier.Error,\n        details: JSON.stringify({\n            hostCorrelationId,\n            error\n        })\n    };\n    SpzaInstrumentService.getProvider().probe('logTelemetryInfo', payload);\n    logger.error(payload.details, {\n        action: payload.action,\n        actionModifier: payload.actionModifier\n    });\n}\n","function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nfunction _object_spread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        var ownKeys = Object.keys(source);\n        if (typeof Object.getOwnPropertySymbols === \"function\") {\n            ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n            }));\n        }\n        ownKeys.forEach(function(key) {\n            _define_property(target, key, source[key]);\n        });\n    }\n    return target;\n}\nfunction ownKeys(object, enumerableOnly) {\n    var keys = Object.keys(object);\n    if (Object.getOwnPropertySymbols) {\n        var symbols = Object.getOwnPropertySymbols(object);\n        if (enumerableOnly) {\n            symbols = symbols.filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n            });\n        }\n        keys.push.apply(keys, symbols);\n    }\n    return keys;\n}\nfunction _object_spread_props(target, source) {\n    source = source != null ? source : {};\n    if (Object.getOwnPropertyDescriptors) {\n        Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n        ownKeys(Object(source)).forEach(function(key) {\n            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n    }\n    return target;\n}\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport SpzaComponent from '@shared/components/spzaComponent';\nimport { isValidInput, serializeUserProfileEmbedInfo, readUserProfileEmbedCookie } from '@shared/utils/appUtils';\nimport { getCookieItem, saveCookieItem } from '@shared/utils/browserStorageUtils';\nimport { Constants, allBillingCountries } from '@shared/utils/constants';\nimport Animation from '@shared/components/animation';\nimport { getWindow } from '@shared/services/window';\nimport { SpzaInstrumentService } from '@shared/services/telemetry/spza/spzaInstrument';\nimport { logger } from '@src/logger';\nimport { Text, Stack, mergeStyleSets, TextField, Dropdown, Link } from '@fluentui/react';\nexport class UserProfileModalData {\n    updateUserProfile(user, isEmbedHost, licenseType) {\n        this.licenseType = licenseType;\n        if (isEmbedHost && (user === null || user === void 0 ? void 0 : user.firstName) === '' && (user === null || user === void 0 ? void 0 : user.lastName) === '' && (user === null || user === void 0 ? void 0 : user.email) === '' && (user === null || user === void 0 ? void 0 : user.isLatestProfile) === false) {\n            this.user = _object_spread_props(_object_spread({}, user), {\n                phone: '',\n                company: '',\n                country: '',\n                title: '',\n                accepted: true\n            });\n            const userProfileInCookie = getCookieItem(Constants.userProfileEmbedCookieName, false);\n            if (userProfileInCookie) {\n                readUserProfileEmbedCookie(userProfileInCookie, this.user);\n            } else {\n                this.firstTimeEmbed = true;\n            }\n        } else {\n            this.user = _object_spread_props(_object_spread({}, user), {\n                accepted: true,\n                licenses: this.setLicensesToLocalUserProfile(user.licenses)\n            });\n        }\n    }\n    setLicensesToLocalUserProfile(newLicenses) {\n        if (this.licenseType !== Constants.Dynamics365LicenseType.noLicense && (newLicenses === null || newLicenses === void 0 ? void 0 : newLicenses.length) === Constants.dynamicsLicense.currentD365LicenseNumber) {\n            const localLicenses = [];\n            for(let i = 0; i < newLicenses.length; i++){\n                const licenseInState = newLicenses[`${i}`];\n                const licenseNewObj = {\n                    type: licenseInState.type,\n                    hasLicense: licenseInState.hasLicense,\n                    isDisputed: licenseInState.isDisputed\n                };\n                localLicenses.push(licenseNewObj);\n            }\n            return localLicenses;\n        }\n        return [];\n    }\n    isDirty(originalUser) {\n        for(const i in this.user){\n            if (i !== 'accepted' && i !== 'licenses') {\n                if (originalUser[`${i}`] !== this.user[`${i}`]) {\n                    return true;\n                }\n            }\n        }\n        return false;\n    }\n    licenseChange(newCurrentLicense, isEmbeddedHost) {\n        if (isEmbeddedHost) {\n            return false;\n        }\n        if (newCurrentLicense && this.licenseType === Constants.Dynamics365LicenseType.dynamics365License && this.user.licenses[Constants.Dynamics365LicenseIndex.dynamics365LicenseIndex].isDisputed !== newCurrentLicense.isDisputed) {\n            return true;\n        }\n        if (newCurrentLicense && this.licenseType === Constants.Dynamics365LicenseType.dynamics365forBusinessLicense && this.user.licenses[Constants.Dynamics365LicenseIndex.dynamics365ForBusinessLicenseIndex].isDisputed !== newCurrentLicense.isDisputed) {\n            return true;\n        }\n        return false;\n    }\n    constructor(user, isEmbedHost, licenseType){\n        _define_property(this, \"user\", void 0);\n        _define_property(this, \"firstTimeEmbed\", void 0);\n        _define_property(this, \"licenseType\", void 0);\n        this.updateUserProfile(user, isEmbedHost, licenseType);\n    }\n}\nconst userProfileModalClassNames = mergeStyleSets({\n    editButton: {\n        paddingLeft: 3\n    },\n    boldText: {\n        fontWeight: 600\n    },\n    doubleCellContainer: {\n        [`@media (max-width: 425px)`]: {\n            flexWrap: 'wrap'\n        }\n    },\n    secondCell: {\n        [`@media (min-width: 425px)`]: {\n            marginLeft: 12\n        },\n        [`@media (max-width: 425px)`]: {\n            marginTop: 15\n        }\n    }\n});\nconst userProfileFieldsContainer = {\n    childrenGap: 8\n};\nconst expandedUserProfileTokens = {\n    childrenGap: 21\n};\nconst dropDownStyles = {\n    callout: {\n        maxHeight: 300,\n        display: 'flex',\n        flexDirection: 'column'\n    }\n};\nexport class UserProfileModal extends SpzaComponent {\n    shouldProfileBeRendered() {\n        const { renderProfile } = this.props;\n        return renderProfile;\n    }\n    UNSAFE_componentWillMount() {\n        const { profileCompleted, userLeadgenProfile, isEmbedded, licenseType } = this.props;\n        if (!this.shouldProfileBeRendered()) {\n            profileCompleted(true);\n        } else {\n            this.localUserInfo.updateUserProfile(userLeadgenProfile, isEmbedded, licenseType);\n            this.checkMandatoryFields();\n        }\n    }\n    onChange(id, value) {\n        const { accountInfoUpdate } = this.props;\n        this.localUserInfo.user[`${id}`] = value;\n        accountInfoUpdate(id, value);\n        this.checkMandatoryFields();\n    }\n    checkMandatoryFields() {\n        const { profileCompleted } = this.props;\n        profileCompleted(this.mandatoryFieldsDidUpdate());\n    }\n    mandatoryFieldsDidUpdate() {\n        // TODO: Add validation for international phone numbers +52 353 333 7777\n        // TODO: Validate phone number with code number.\n        const { firstName, lastName, country } = this.localUserInfo.user;\n        if (isValidInput(firstName) && isValidInput(lastName) && country && allBillingCountries.some((c)=>c.countryCode === this.localUserInfo.user.country)) {\n            return true;\n        }\n        return false;\n    }\n    onClickEditButton(eventKeyCode) {\n        const { shouldHideAccountInfo } = this.props;\n        if (!eventKeyCode || eventKeyCode === Constants.SystemKey.Space || eventKeyCode === Constants.SystemKey.Enter) {\n            this.setState((prevState)=>({\n                    showProfile: true,\n                    userProfileUpdated: prevState.userProfileUpdated\n                }));\n            shouldHideAccountInfo();\n        }\n    }\n    renderCompactedUserProfile() {\n        return /*#__PURE__*/ _jsx(Stack, {\n            horizontal: true,\n            children: /*#__PURE__*/ _jsx(Link, {\n                className: userProfileModalClassNames.editButton,\n                tabIndex: 0,\n                role: \"button\",\n                // eslint-disable-next-line @typescript-eslint/no-unused-vars\n                onClick: (_)=>this.onClickEditButton(),\n                onKeyDown: (event)=>this.onClickEditButton(event.keyCode),\n                underline: true,\n                children: this.context.loc('UserProfileCompacted_EditButton', 'Edit your details')\n            })\n        });\n    }\n    UNSAFE_componentWillReceiveProps(nextProps) {\n        const { userLeadgenProfile: currentUserLeadgenProfile, isEmbedded, licenseType, userSubmittedForm: currenttUserSubmittedForm, updateUserProfile, callBackHandler } = this.props;\n        const { userLeadgenProfile: nextUserLeadgenProfile, userSubmittedForm: nextUserSubmittedForm, currentLicense } = nextProps;\n        if (!this.areEqual(currentUserLeadgenProfile, nextUserLeadgenProfile)) {\n            this.localUserInfo.updateUserProfile(nextUserLeadgenProfile, isEmbedded, licenseType);\n        }\n        if (licenseType && licenseType !== Constants.Dynamics365LicenseType.noLicense && !this.licenseInfoEqual(this.localUserInfo.user.licenses, nextUserLeadgenProfile.licenses)) {\n            this.localUserInfo.setLicensesToLocalUserProfile(nextUserLeadgenProfile.licenses);\n        }\n        if (nextUserSubmittedForm && nextUserSubmittedForm !== currenttUserSubmittedForm) {\n            if (this.localUserInfo.isDirty(nextUserLeadgenProfile) || this.localUserInfo.licenseChange(currentLicense, isEmbedded) || nextUserLeadgenProfile.updateRequired) {\n                if (!isEmbedded && licenseType && licenseType !== Constants.Dynamics365LicenseType.noLicense && this.localUserInfo.user.licenses && this.localUserInfo.user.licenses.length === Constants.dynamicsLicense.currentD365LicenseNumber) {\n                    this.localUserInfo.user.licenses[licenseType - 1].isDisputed = currentLicense.isDisputed;\n                }\n                updateUserProfile(this.localUserInfo.user).then(()=>{\n                    const payload = {\n                        page: getWindow().location.href,\n                        action: Constants.Telemetry.Action.Click,\n                        actionModifier: Constants.Telemetry.ActionModifier.Info,\n                        details: 'User Updated profile, Will run acquisition.'\n                    };\n                    this.instrument.probe('logAndFlushTelemetryInfo', payload);\n                    logger.info(payload.details, {\n                        action: payload.action,\n                        actionModifier: payload.actionModifier\n                    });\n                    if (isEmbedded) {\n                        saveCookieItem(Constants.userProfileEmbedCookieName, serializeUserProfileEmbedInfo(this.localUserInfo.user));\n                    }\n                    callBackHandler();\n                });\n            } else {\n                const payload = {\n                    page: getWindow().location.href,\n                    action: Constants.Telemetry.Action.Click,\n                    actionModifier: Constants.Telemetry.ActionModifier.Info,\n                    details: 'User did not updated profile, Will run acquisition.'\n                };\n                this.instrument.probe('logAndFlushTelemetryInfo', payload);\n                logger.info(payload.details, {\n                    action: payload.action,\n                    actionModifier: payload.actionModifier\n                });\n                callBackHandler();\n            }\n        }\n    }\n    shouldComponentUpdate(nextProps, nextState) {\n        const { compactUserProfile: currentCompactUserProfile, userLeadgenProfile: currentUserLeadgenProfile } = this.props;\n        const { showProfile: currentShowProfile } = this.state;\n        const { showProfile: nextShowProfile } = nextState;\n        const { compactUserProfile: nextCompactUserProfile, userLeadgenProfile: nextUserLeadgenProfile } = nextProps;\n        return currentShowProfile !== nextShowProfile || currentCompactUserProfile !== nextCompactUserProfile || !this.areEqual(nextUserLeadgenProfile, currentUserLeadgenProfile);\n    }\n    getDefaultCountry(defaultCountry) {\n        const country = this.countryList.find((c)=>c.key === defaultCountry.toUpperCase());\n        return country || {\n            key: '',\n            text: ''\n        };\n    }\n    getCountries() {\n        return allBillingCountries.map((c)=>({\n                key: c.countryCode,\n                text: c.name\n            }));\n    }\n    dropDownCountry(defaultValue) {\n        const id = Constants.Country;\n        const selectedCountry = defaultValue ? this.getDefaultCountry(defaultValue) : {\n            key: '',\n            text: ''\n        };\n        const { key: selectedCountryKey } = selectedCountry;\n        return /*#__PURE__*/ _jsx(Stack, {\n            children: /*#__PURE__*/ _jsx(Dropdown, {\n                options: this.countryList,\n                label: this.context.loc('RT_Country', 'Country / region'),\n                defaultSelectedKey: selectedCountryKey,\n                onChange: (_, option)=>{\n                    this.onChange(id, option.key.toString());\n                },\n                placeholder: this.context.loc('Leads_Modal_Country_Placeholder', 'Select country'),\n                styles: dropDownStyles,\n                disabled: !!selectedCountryKey,\n                required: !selectedCountryKey\n            })\n        });\n    }\n    inputCell(field, className) {\n        const { id, title, placeholder, defaultValue, isRequired } = field;\n        return /*#__PURE__*/ _jsx(Stack.Item, {\n            grow: true,\n            children: /*#__PURE__*/ _jsx(TextField, {\n                label: title,\n                required: isRequired,\n                onChange: (_, value)=>this.onChange(id, value),\n                defaultValue: defaultValue || '',\n                \"aria-required\": isRequired,\n                ariaLabel: title,\n                placeholder: placeholder,\n                className: className\n            }, id + defaultValue)\n        });\n    }\n    doubleInputCells(isRequired, firstCell, secondCell, title) {\n        const { id: firstCellId, defaultValue: firstCellDefaultValue, title: firstCellTitle, placeholder: firstCellPlaceholder } = firstCell;\n        const { id: secondCellId, defaultValue: secondCellDefaultValue, title: secondCellTitle, placeholder: secondCellPlaceholder } = secondCell;\n        return /*#__PURE__*/ _jsxs(Stack, {\n            horizontal: true,\n            className: userProfileModalClassNames.doubleCellContainer,\n            children: [\n                /*#__PURE__*/ _jsx(Stack.Item, {\n                    grow: true,\n                    children: /*#__PURE__*/ _jsx(TextField, {\n                        required: isRequired,\n                        label: title,\n                        onChange: (_, value)=>this.onChange(firstCellId, value),\n                        defaultValue: firstCellDefaultValue || '',\n                        ariaLabel: firstCellTitle,\n                        \"aria-required\": isRequired,\n                        placeholder: firstCellPlaceholder\n                    }, firstCellId + firstCellDefaultValue)\n                }),\n                /*#__PURE__*/ _jsx(Stack.Item, {\n                    grow: true,\n                    align: \"end\",\n                    children: /*#__PURE__*/ _jsx(TextField, {\n                        onChange: (_, value)=>this.onChange(secondCellId, value),\n                        defaultValue: secondCellDefaultValue || '',\n                        ariaLabel: secondCellTitle,\n                        \"aria-required\": isRequired,\n                        placeholder: secondCellPlaceholder,\n                        className: userProfileModalClassNames.secondCell\n                    }, secondCellId + secondCellDefaultValue)\n                })\n            ]\n        });\n    }\n    renderExpandedHeader() {\n        const { shouldRenderHeader, isContactForm, getExpandHeaderText } = this.props;\n        const text = shouldRenderHeader && isContactForm ? this.context.loc('CTA_UserProfile_Title', 'To continue, we need some basic profile information. We’ve pulled your Microsoft Account data to help you get started.') : '';\n        return /*#__PURE__*/ _jsx(Text, {\n            variant: \"medium\",\n            children: getExpandHeaderText || text\n        });\n    }\n    renderExpandedUserProfile() {\n        const { isEmbedded, userLeadgenProfile } = this.props;\n        const firstName = {\n            id: 'firstName',\n            defaultValue: isEmbedded && !this.localUserInfo.user.firstName ? userLeadgenProfile.firstName : this.localUserInfo.user.firstName,\n            title: this.context.loc('RT_FirstName', 'First name'),\n            placeholder: this.context.loc('RT_FirstName', 'First name')\n        };\n        const lastName = {\n            id: 'lastName',\n            defaultValue: isEmbedded && !this.localUserInfo.user.lastName ? userLeadgenProfile.lastName : this.localUserInfo.user.lastName,\n            title: this.context.loc('RT_LastName', 'Last name'),\n            placeholder: this.context.loc('RT_LastName', 'Last name')\n        };\n        const title = {\n            id: 'title',\n            defaultValue: isEmbedded && !this.localUserInfo.user.title ? userLeadgenProfile.title : this.localUserInfo.user.title,\n            title: this.context.loc('RT_Title', 'Job title'),\n            placeholder: this.context.loc('Leads_Modal_Title_Placeholder', 'Enter your job title')\n        };\n        const company = {\n            id: 'company',\n            defaultValue: isEmbedded && !this.localUserInfo.user.company ? userLeadgenProfile.company : this.localUserInfo.user.company,\n            title: this.context.loc('RT_Company', 'Company'),\n            placeholder: this.context.loc('Leads_Modal_Company_Placeholder', 'Enter your company name')\n        };\n        const phone = {\n            id: 'phone',\n            defaultValue: isEmbedded && !this.localUserInfo.user.phone ? userLeadgenProfile.phone : this.localUserInfo.user.phone,\n            title: this.context.loc('RT_Phone', 'Phone number'),\n            placeholder: this.context.loc('Leads_Modal_Phone_Number_Placeholder', 'Write your phone number')\n        };\n        return /*#__PURE__*/ _jsxs(Stack, {\n            tokens: expandedUserProfileTokens,\n            children: [\n                /*#__PURE__*/ _jsx(Stack.Item, {\n                    children: this.renderExpandedHeader()\n                }),\n                /*#__PURE__*/ _jsxs(Stack, {\n                    tokens: userProfileFieldsContainer,\n                    children: [\n                        this.doubleInputCells(true, firstName, lastName, this.context.loc('RT_Name', 'Name')),\n                        /*#__PURE__*/ _jsxs(Stack, {\n                            horizontal: true,\n                            className: userProfileModalClassNames.doubleCellContainer,\n                            children: [\n                                this.inputCell(title),\n                                this.inputCell(company, userProfileModalClassNames.secondCell)\n                            ]\n                        }),\n                        this.dropDownCountry(isEmbedded && !this.localUserInfo.user.country ? userLeadgenProfile.country : this.localUserInfo.user.country),\n                        this.inputCell(phone)\n                    ]\n                })\n            ]\n        });\n    }\n    renderAnimation() {\n        return /*#__PURE__*/ _jsxs(\"div\", {\n            className: \"leadGen\",\n            children: [\n                ' ',\n                /*#__PURE__*/ _jsx(Animation, {}),\n                ' '\n            ]\n        });\n    }\n    componentDidMount() {\n        const { getUserProfile } = this.props;\n        if (this.shouldGetUserProfile()) {\n            getUserProfile();\n        } else {\n            this.checkMandatoryFields();\n        }\n    }\n    shouldGetUserProfile() {\n        const { userLeadgenProfile, isEmbedded } = this.props;\n        return !userLeadgenProfile.isLatestProfile && this.shouldProfileBeRendered() && !isEmbedded;\n    }\n    shouldRenderExpandedProfile() {\n        // if update required or one of the user props are not filled out.\n        const { showProfile } = this.state;\n        return showProfile || !this.mandatoryFieldsDidUpdate() || this.updateRequiredFromAPI();\n    }\n    updateRequiredFromAPI() {\n        const { userLeadgenProfile } = this.props;\n        return userLeadgenProfile.updateRequired === true;\n    }\n    renderImpl() {\n        const { compactUserProfile } = this.props;\n        if (compactUserProfile) {\n            return this.renderCompactedUserProfile();\n        } else if (!this.shouldProfileBeRendered()) {\n            return null;\n        } else if (this.shouldGetUserProfile()) {\n            return this.renderAnimation();\n        } else if (this.shouldRenderExpandedProfile()) {\n            return this.renderExpandedUserProfile();\n        } else {\n            return this.renderCompactedUserProfile();\n        }\n    }\n    componentDidUpdate(prevProps) {\n        const { userLeadgenProfile: currentUserLeadgenProfile } = this.props;\n        const { userLeadgenProfile: prevUserLeadgenProfile } = prevProps;\n        if (!this.areEqual(prevUserLeadgenProfile, currentUserLeadgenProfile)) {\n            this.checkMandatoryFields();\n        }\n    }\n    areEqual(profile, newProfile) {\n        return profile.isLatestProfile === newProfile.isLatestProfile && profile.updateRequired === newProfile.updateRequired && profile.firstName === newProfile.firstName && profile.lastName === newProfile.lastName && profile.company === newProfile.company && profile.country === newProfile.country && profile.phone === newProfile.phone && profile.title === newProfile.title && profile.email === newProfile.email;\n    }\n    licenseInfoEqual(license, newLicense) {\n        if (!newLicense || !license) {\n            return false;\n        }\n        if (license.length !== newLicense.length) {\n            return false;\n        }\n        for(let i = 0; i < license.length; i++){\n            if (license[`${i}`].isDisputed !== newLicense[`${i}`].isDisputed) {\n                return false;\n            }\n        }\n        return true;\n    }\n    constructor(props, context){\n        super(props, context), _define_property(this, \"context\", void 0), _define_property(this, \"instrument\", void 0), _define_property(this, \"countryList\", this.getCountries()), _define_property(this, \"localUserInfo\", new UserProfileModalData(this.props.userLeadgenProfile, this.props.isEmbedded, this.props.licenseType));\n        this.instrument = SpzaInstrumentService.getProvider();\n        this.state = {\n            showProfile: !!this.localUserInfo.firstTimeEmbed || !props.compactUserProfile,\n            userProfileUpdated: false\n        };\n        this.onChange = this.onChange.bind(this);\n    }\n}\nUserProfileModal.contextTypes = {\n    loc: PropTypes.func,\n    locParams: PropTypes.func,\n    renderErrorModal: PropTypes.func\n};\n","import React from 'react';\nimport { UserProfileModal as UserProfileModalComponent } from '@appsource/components/modals/userProfileModal';\nimport { getUserProfile, updateUserProfile } from '@shared/actions/thunkActions';\nimport { connect } from 'react-redux';\nconst mapStateToProps = (state)=>{\n    if (state.config.featureFlags.ProfileExp === 'true') {\n        return {\n            renderProfile: true,\n            userLeadgenProfile: state.users.profile\n        };\n    }\n    return {\n        userLeadgenProfile: state.users.profile\n    };\n};\nconst mapDispatchToProps = (dispatch)=>{\n    return {\n        getUserProfile: ()=>dispatch(getUserProfile()),\n        updateUserProfile: (profile)=>dispatch(updateUserProfile(profile))\n    };\n};\nexport const UserProfileModal = connect(mapStateToProps, mapDispatchToProps)(UserProfileModalComponent);\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { IconButton, Stack, Text, Modal, ScreenWidthMinXLarge, ScreenWidthMinLarge, mergeStyleSets, PrimaryButton } from '@fluentui/react';\nimport { NeutralColors } from '@fluentui/theme';\nimport consentSuccessModalIcon from '@shared/images/consentSuccessModalIcon.png';\nimport { Constants } from '@shared/utils/constants';\nimport { getNpsModule } from '@appsource/utils/nps';\nconst successConsentModalClassNames = mergeStyleSets({\n    description: {\n        display: 'flex',\n        textAlign: 'center',\n        flexDirection: 'column'\n    },\n    centeredText: {\n        textAlign: 'center'\n    },\n    imgSize: {\n        width: 100,\n        height: 100\n    }\n});\nconst iconButtonStyles = {\n    root: {\n        color: NeutralColors.gray160\n    }\n};\nconst modalStyles = {\n    main: {\n        [`@media (min-width: ${ScreenWidthMinXLarge}px)`]: {\n            width: '28%'\n        },\n        [`@media (min-width: ${ScreenWidthMinLarge}px) and (max-width: ${ScreenWidthMinXLarge}px)`]: {\n            width: '50%'\n        },\n        [`@media (max-width: ${ScreenWidthMinLarge}px)`]: {\n            width: '80%'\n        },\n        display: 'flex',\n        maxWidth: 560\n    },\n    scrollableContent: {\n        padding: '16px 27px 24px 24px',\n        [`@media (max-width: ${ScreenWidthMinLarge}px)`]: {\n            padding: '16px 20px 24px 20px'\n        }\n    }\n};\nconst cancelIcon = {\n    iconName: 'Cancel'\n};\nconst titleAndContentTokens = {\n    childrenGap: 60\n};\nconst descriptionAndIconTokens = {\n    childrenGap: 20\n};\nconst descriptionTokens = {\n    maxWidth: 280\n};\nconst contentAndBottomTokens = {\n    childrenGap: 66\n};\nexport const SuccessConsentModal = ({ publisher, dismissModal, shouldSkipModal }, context)=>{\n    return /*#__PURE__*/ _jsx(Modal, {\n        isOpen: !shouldSkipModal,\n        onDismiss: dismissModal,\n        styles: modalStyles,\n        children: /*#__PURE__*/ _jsxs(Stack, {\n            tokens: titleAndContentTokens,\n            children: [\n                /*#__PURE__*/ _jsx(Stack.Item, {\n                    children: /*#__PURE__*/ _jsxs(Stack, {\n                        horizontal: true,\n                        children: [\n                            /*#__PURE__*/ _jsx(Stack.Item, {\n                                grow: true,\n                                className: successConsentModalClassNames.centeredText,\n                                children: /*#__PURE__*/ _jsx(Text, {\n                                    variant: \"xLarge\",\n                                    children: context.loc('Consent_Modal_Success_Title', 'Thanks for getting in touch!')\n                                })\n                            }),\n                            /*#__PURE__*/ _jsx(Stack.Item, {\n                                children: /*#__PURE__*/ _jsx(IconButton, {\n                                    styles: iconButtonStyles,\n                                    iconProps: cancelIcon,\n                                    ariaLabel: \"close\",\n                                    onClick: dismissModal\n                                })\n                            })\n                        ]\n                    })\n                }),\n                /*#__PURE__*/ _jsx(Stack.Item, {\n                    children: /*#__PURE__*/ _jsxs(Stack, {\n                        tokens: contentAndBottomTokens,\n                        children: [\n                            /*#__PURE__*/ _jsx(Stack.Item, {\n                                children: /*#__PURE__*/ _jsxs(Stack, {\n                                    horizontalAlign: \"center\",\n                                    tokens: descriptionAndIconTokens,\n                                    children: [\n                                        /*#__PURE__*/ _jsx(Stack.Item, {\n                                            children: /*#__PURE__*/ _jsx(\"img\", {\n                                                src: consentSuccessModalIcon,\n                                                alt: context.loc('Success_Consent_Modal_Icon_Name'),\n                                                className: successConsentModalClassNames.imgSize\n                                            })\n                                        }),\n                                        /*#__PURE__*/ _jsxs(Stack.Item, {\n                                            tokens: descriptionTokens,\n                                            className: successConsentModalClassNames.description,\n                                            children: [\n                                                /*#__PURE__*/ _jsxs(Text, {\n                                                    variant: \"large\",\n                                                    children: [\n                                                        context.loc('Success_Consent_Modal_Someone_From', `Someone from`),\n                                                        \" \",\n                                                        /*#__PURE__*/ _jsx(Text, {\n                                                            variant: \"large\",\n                                                            className: \"ms-fontWeight-bold\",\n                                                            children: publisher\n                                                        })\n                                                    ]\n                                                }),\n                                                /*#__PURE__*/ _jsx(Text, {\n                                                    variant: \"large\",\n                                                    className: \"ms-fontWeight-semibold\",\n                                                    children: context.loc('Success_Consent_Modal_Will_Contact_You', 'will contact you soon.')\n                                                })\n                                            ]\n                                        })\n                                    ]\n                                })\n                            }),\n                            /*#__PURE__*/ _jsx(Stack.Item, {\n                                align: \"end\",\n                                children: /*#__PURE__*/ _jsx(PrimaryButton, {\n                                    text: context.loc('Dialog_Close'),\n                                    onClick: ()=>{\n                                        var _getNpsModule;\n                                        dismissModal();\n                                        (_getNpsModule = getNpsModule()) === null || _getNpsModule === void 0 ? void 0 : _getNpsModule.ctaClicked();\n                                    },\n                                    \"data-bi-id\": Constants.JsllCTAId.Close,\n                                    \"data-bi-area\": \"Consent Dialog\"\n                                })\n                            })\n                        ]\n                    })\n                })\n            ]\n        })\n    });\n};\nSuccessConsentModal.contextTypes = {\n    loc: PropTypes.func,\n    locParams: PropTypes.func\n};\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { Modal, Stack, Text, IconButton, ScreenWidthMinXLarge, ScreenWidthMinLarge, Icon, mergeStyleSets, PrimaryButton } from '@fluentui/react';\nimport { NeutralColors, SharedColors } from '@fluentui/theme';\nconst titleAndContentTokens = {\n    childrenGap: 20\n};\nconst contentAndBottomTokens = {\n    childrenGap: 24\n};\nconst cancelIcon = {\n    iconName: 'Cancel'\n};\nconst iconButtonStyles = {\n    root: {\n        color: NeutralColors.gray160\n    }\n};\nconst infoIconStyles = {\n    root: {\n        fontSize: 16,\n        marginRight: 8,\n        color: SharedColors.red20\n    }\n};\nconst failureConsentModalClassNames = mergeStyleSets({\n    description: {\n        color: NeutralColors.gray130\n    }\n});\nconst modalStyles = {\n    main: {\n        [`@media (min-width: ${ScreenWidthMinXLarge}px)`]: {\n            width: '30%'\n        },\n        [`@media (min-width: ${ScreenWidthMinLarge}px) and (max-width: ${ScreenWidthMinXLarge}px)`]: {\n            width: '50%'\n        },\n        [`@media (max-width: ${ScreenWidthMinLarge}px)`]: {\n            width: '80%'\n        },\n        display: 'flex'\n    },\n    scrollableContent: {\n        padding: '16px 27px 24px 24px',\n        [`@media (max-width: ${ScreenWidthMinLarge}px)`]: {\n            padding: '16px 20px 24px 20px'\n        }\n    }\n};\nexport const FailureConsentModal = ({ dismissModal, shouldSkipModal, showContactMeError }, context)=>{\n    return /*#__PURE__*/ _jsx(Modal, {\n        isOpen: !shouldSkipModal,\n        onDismiss: dismissModal,\n        styles: modalStyles,\n        children: /*#__PURE__*/ _jsxs(Stack, {\n            tokens: titleAndContentTokens,\n            children: [\n                /*#__PURE__*/ _jsx(Stack.Item, {\n                    children: /*#__PURE__*/ _jsxs(Stack, {\n                        horizontal: true,\n                        children: [\n                            /*#__PURE__*/ _jsx(Stack.Item, {\n                                grow: true,\n                                children: /*#__PURE__*/ _jsx(Text, {\n                                    variant: \"xLarge\",\n                                    children: context.loc('Failure_Consent_Modal_Title', \"Couldn't send contact request\")\n                                })\n                            }),\n                            /*#__PURE__*/ _jsx(Stack.Item, {\n                                children: /*#__PURE__*/ _jsx(IconButton, {\n                                    styles: iconButtonStyles,\n                                    iconProps: cancelIcon,\n                                    ariaLabel: context.loc('Dialog_Close'),\n                                    onClick: dismissModal\n                                })\n                            })\n                        ]\n                    })\n                }),\n                /*#__PURE__*/ _jsx(Stack.Item, {\n                    children: /*#__PURE__*/ _jsxs(Stack, {\n                        tokens: contentAndBottomTokens,\n                        children: [\n                            /*#__PURE__*/ _jsx(Stack.Item, {\n                                children: /*#__PURE__*/ _jsxs(Stack, {\n                                    horizontal: true,\n                                    children: [\n                                        /*#__PURE__*/ _jsx(Stack.Item, {\n                                            children: /*#__PURE__*/ _jsx(Icon, {\n                                                iconName: \"Info\",\n                                                styles: infoIconStyles\n                                            })\n                                        }),\n                                        /*#__PURE__*/ _jsx(Stack.Item, {\n                                            children: /*#__PURE__*/ _jsx(Text, {\n                                                variant: \"medium\",\n                                                className: failureConsentModalClassNames.description,\n                                                children: showContactMeError ? context.loc('ContactMeError_Description_Text', 'There was a problem sending your request. Please try again later.') : context.loc('Failure_Consent_Modal_Description', 'There was a problem sending the contact request. Check your network connection and try again.')\n                                            })\n                                        })\n                                    ]\n                                })\n                            }),\n                            /*#__PURE__*/ _jsx(Stack.Item, {\n                                align: \"end\",\n                                children: /*#__PURE__*/ _jsx(PrimaryButton, {\n                                    text: context.loc('Dialog_Close'),\n                                    ariaLabel: context.loc('Dialog_Close'),\n                                    onClick: dismissModal\n                                })\n                            })\n                        ]\n                    })\n                })\n            ]\n        })\n    });\n};\nFailureConsentModal.contextTypes = {\n    loc: PropTypes.func\n};\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport React from 'react';\nimport { Stack, Text, IconButton, Modal, ScreenWidthMinXLarge, ScreenWidthMinLarge } from '@fluentui/react';\nimport PropTypes from 'prop-types';\nimport { NeutralColors } from '@fluentui/theme';\nimport { useSelector } from 'react-redux';\nconst modalContentItemsTokens = {\n    childrenGap: 20\n};\nconst cancelIcon = {\n    iconName: 'Cancel'\n};\nconst iconButtonStyles = {\n    root: {\n        color: NeutralColors.gray160\n    }\n};\nconst modalStyles = {\n    main: {\n        [`@media (min-width: ${ScreenWidthMinXLarge}px)`]: {\n            width: '35%'\n        },\n        [`@media (min-width: ${ScreenWidthMinLarge}px) and (max-width: ${ScreenWidthMinXLarge}px)`]: {\n            width: '60%'\n        },\n        [`@media (max-width: ${ScreenWidthMinLarge}px)`]: {\n            width: '90%'\n        },\n        display: 'flex'\n    },\n    scrollableContent: {\n        padding: '16px 27px 24px 24px',\n        [`@media (max-width: ${ScreenWidthMinLarge}px)`]: {\n            padding: '16px 20px 24px 20px'\n        }\n    }\n};\nexport const ConsentModalContent = ({ showAnimation, handoffTitle, isTransactApp, isContactForm, publisher, shouldSkipModal, dismissModal, children }, context)=>{\n    const isEmbedded = useSelector((state)=>state.config.isEmbedded);\n    const withAnimationHeaderText = isContactForm ? context.locParams('TRY_ContactMe', [\n        publisher || 'the publisher'\n    ], `Sending your request to ${[\n        publisher || 'the publisher'\n    ]}`) : context.locParams('TRY_Redirect', [\n        handoffTitle || 'Azure Portal'\n    ], `Taking you to ${[\n        handoffTitle || 'Azure Portal'\n    ]} to complete this process`);\n    const headerText = isEmbedded && !isContactForm ? context.loc('Confirm_to_continue_Modal_Title', 'Confirm to continue') : !isTransactApp && !isContactForm ? context.loc('Confirm_Details_Modal_Title', 'Confirm your details to continue') : isContactForm ? context.locParams('Contact_Me_Modal_Title', [\n        publisher\n    ], `Ask someone from ${publisher} to contact you`) : null;\n    return /*#__PURE__*/ _jsx(Modal, {\n        isOpen: !shouldSkipModal,\n        onDismiss: dismissModal,\n        styles: modalStyles,\n        children: /*#__PURE__*/ _jsxs(Stack, {\n            tokens: modalContentItemsTokens,\n            children: [\n                /*#__PURE__*/ _jsx(Stack.Item, {\n                    children: /*#__PURE__*/ _jsxs(Stack, {\n                        horizontal: true,\n                        children: [\n                            /*#__PURE__*/ _jsx(Stack.Item, {\n                                grow: true,\n                                children: showAnimation ? /*#__PURE__*/ _jsx(Text, {\n                                    variant: \"xLarge\",\n                                    children: withAnimationHeaderText\n                                }) : /*#__PURE__*/ _jsx(Text, {\n                                    variant: \"xLarge\",\n                                    children: headerText\n                                })\n                            }),\n                            /*#__PURE__*/ _jsx(Stack.Item, {\n                                children: /*#__PURE__*/ _jsx(IconButton, {\n                                    styles: iconButtonStyles,\n                                    iconProps: cancelIcon,\n                                    ariaLabel: context.loc('Dialog_Close', 'Close'),\n                                    onClick: dismissModal\n                                })\n                            })\n                        ]\n                    })\n                }),\n                /*#__PURE__*/ _jsx(Stack.Item, {\n                    children: children\n                })\n            ]\n        })\n    });\n};\nConsentModalContent.contextTypes = {\n    loc: PropTypes.func,\n    locParams: PropTypes.func,\n    renderErrorModal: PropTypes.func,\n    buildHref: PropTypes.func\n};\n","const URL_PATTERN = /((http|ftp|https):\\/\\/)?[-a-zA-Z0-9@:%._+~#=]{1,256}\\.[a-z]{2,6}\\b([-a-zA-Z0-9@:%_+.~#?&//=]*)/i;\nexport const containsURLOrEmail = (input)=>{\n    if (input && input.trim().length > 0) {\n        return URL_PATTERN.test(input.trim());\n    }\n    return false;\n};\n","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n    try {\n        var info = gen[key](arg);\n        var value = info.value;\n    } catch (error) {\n        reject(error);\n        return;\n    }\n    if (info.done) {\n        resolve(value);\n    } else {\n        Promise.resolve(value).then(_next, _throw);\n    }\n}\nfunction _async_to_generator(fn) {\n    return function() {\n        var self = this, args = arguments;\n        return new Promise(function(resolve, reject) {\n            var gen = fn.apply(self, args);\n            function _next(value) {\n                asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n            }\n            function _throw(err) {\n                asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n            }\n            _next(undefined);\n        });\n    };\n}\nfunction _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nfunction _object_spread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        var ownKeys = Object.keys(source);\n        if (typeof Object.getOwnPropertySymbols === \"function\") {\n            ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n            }));\n        }\n        ownKeys.forEach(function(key) {\n            _define_property(target, key, source[key]);\n        });\n    }\n    return target;\n}\nimport { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from \"react/jsx-runtime\";\nimport React from 'react';\nimport * as PropTypes from 'prop-types';\nimport Animation from '@shared/components/animation';\nimport SpzaComponent from '@shared/components/spzaComponent';\nimport { dynamicsLicenseTypeForEmbed, setInitialLocalLicenseStore, setInitialLicenseDisplayText, isTransactApp, getTrailIdAndData, dynamicsLicenseType, readUserProfileEmbedCookie, getAppTelemetryDetailContentText, getServiceTelemetryDetailContentText, shouldDownloadPowerBIVisual, getActionStringForCTAType, isPowerBIVisualsApp, processHandoffURLAndTitle, isOpenInNewWindowButton, openInNewWindow, getProductByUrlKey, generateGuid } from '@shared/utils/appUtils';\nimport { Constants, OfferType } from '@shared/utils/constants';\nimport { getLocalStorageItem, getCookieItem } from '@shared/utils/browserStorageUtils';\nimport { postEmbedAcquisitionMessage } from '@embed/embedMessaging';\nimport { SpzaInstrumentService } from '@shared/services/telemetry/spza/spzaInstrument';\nimport { NpsModule } from '@shared/utils/npsUtils';\nimport { UserProfileModal } from '@appsource/containers/modals/userProfileModal';\nimport { isLeadgenEnabled, isETERunning } from '@shared/utils/modals';\nimport { urlPush, routes } from '@shared/routerHistory';\nimport { getNpsModule } from '@appsource/utils/nps';\nimport { logger } from '@src/logger';\nimport { Stack, Text, mergeStyleSets, PrimaryButton, Icon, ScreenWidthMinXLarge, ScreenWidthMinLarge, TextField } from '@fluentui/react';\nimport { NeutralColors, CommunicationColors } from '@fluentui/theme';\nimport { TelemetryImage } from '@shared/components/telemetryImage';\nimport classNames from 'classnames';\nimport { SuccessConsentModal } from '@appsource/components/modals/successConsentModal';\nimport { FailureConsentModal } from '@appsource/components/modals/failureConsentModal';\nimport { SafeHtmlWrapper } from '@shared/components/safeHtmlWrapper';\nimport { ConsentModalContent } from './consentModalContent';\nimport { getTooltipSilentLogIn } from '@shared/utils/silentLogInUtils';\nimport { useTelemetry } from '@shared/hooks/useTelemetry';\nimport { containsURLOrEmail } from '@shared/utils/InputValidationUtils';\nimport { openInNewWindowButtonStyles } from '@shared/components/contentStyles';\nimport { hidePowerBiVisualPricing } from '@shared/utils/pricing';\nimport { stringifyError } from '@shared/utils/errorUtils';\n// eslint-disable-next-line react-hooks/rules-of-hooks\nconst [{ pageAction }] = useTelemetry();\nconst modalStyles = {\n    main: {\n        [`@media (min-width: ${ScreenWidthMinXLarge}px)`]: {\n            width: '35%'\n        },\n        [`@media (min-width: ${ScreenWidthMinLarge}px) and (max-width: ${ScreenWidthMinXLarge}px)`]: {\n            width: '60%'\n        },\n        [`@media (max-width: ${ScreenWidthMinLarge}px)`]: {\n            width: '90%'\n        },\n        display: 'flex'\n    },\n    scrollableContent: {\n        padding: '16px 27px 24px 24px',\n        [`@media (max-width: ${ScreenWidthMinLarge}px)`]: {\n            padding: '16px 20px 24px 20px'\n        }\n    }\n};\nconst infoIconStyles = {\n    root: {\n        fontSize: 16,\n        marginRight: 8\n    }\n};\nconst consentModalClassNames = mergeStyleSets({\n    appImg: {\n        width: 44,\n        height: 44,\n        padding: 4,\n        border: `1px solid ${NeutralColors.gray20}`\n    },\n    appImgContainer: {\n        marginRight: 8,\n        width: 44,\n        height: 44\n    },\n    boldText: {\n        fontWeight: 600\n    },\n    desclaimerContainer: {\n        backgroundColor: NeutralColors.gray20,\n        marginBottom: 20,\n        marginTop: 12,\n        '& a:link': {\n            color: CommunicationColors.primary,\n            textDecoration: 'underline'\n        },\n        '& a:visited': {\n            color: CommunicationColors.primary\n        },\n        '& a:hover': {\n            color: CommunicationColors.shade20\n        },\n        '& a:active': {\n            color: CommunicationColors.shade30\n        }\n    },\n    userProfileContainer: {\n        marginBottom: 8\n    },\n    notes: {\n        marginBottom: 8\n    },\n    animationImg: {\n        display: 'flex',\n        justifyContent: 'center'\n    }\n});\nconst loginUserInfoTokens = {\n    padding: '20px 0px 4px'\n};\nconst desclaimerTokens = {\n    padding: 8\n};\nconst animationStackTokens = {\n    childrenGap: 25\n};\n/** These offer types should not trigger sending leads */ const offerTypesWithoutLeads = [\n    Constants.PowerBI.visuals\n];\nexport class ConsentModal extends SpzaComponent {\n    isMandatoryFieldsFilled({ firstName, lastName, email, country }) {\n        return !!(firstName && lastName && email && country);\n    }\n    telemetry(action, actionModifier, details) {\n        const { trailId } = this.state;\n        const { location } = this.props;\n        const payload = {\n            page: location === null || location === void 0 ? void 0 : location.pathname,\n            action,\n            actionModifier,\n            details: JSON.stringify(_object_spread({\n                trailId\n            }, details))\n        };\n        SpzaInstrumentService.getProvider().probe('logTelemetryInfo', payload);\n        logger.info(payload.details, {\n            action: payload.action,\n            actionModifier: payload.actionModifier,\n            page: payload.page\n        });\n    }\n    logConsentDialogEvents(action, actionModifier, details = this.getTelemetryDetailsContent()) {\n        const { appInfo, serviceInfo, location } = this.props;\n        const entityInfo = appInfo || serviceInfo;\n        const payload = {\n            page: location === null || location === void 0 ? void 0 : location.pathname,\n            action,\n            actionModifier,\n            appName: entityInfo && entityInfo.entityId,\n            details\n        };\n        this.instrument.probe('logAndFlushTelemetryInfo', payload);\n        logger.info(payload.details, {\n            action: payload.action,\n            actionModifier: payload.actionModifier,\n            appName: payload.appName\n        });\n    }\n    setAccountInfo(consentProps) {\n        const { userProfile, isEmbedded, appInfo } = consentProps;\n        this.licenseType = isEmbedded ? dynamicsLicenseTypeForEmbed(appInfo.products) : appInfo ? dynamicsLicenseType(userProfile, appInfo.products) : -1;\n        this.setState({\n            accountInfo: {\n                firstName: (userProfile === null || userProfile === void 0 ? void 0 : userProfile.firstName) ? userProfile.firstName : '',\n                lastName: (userProfile === null || userProfile === void 0 ? void 0 : userProfile.lastName) ? userProfile.lastName : '',\n                email: (userProfile === null || userProfile === void 0 ? void 0 : userProfile.email) ? userProfile.email : '',\n                title: (userProfile === null || userProfile === void 0 ? void 0 : userProfile.title) ? userProfile.title : '',\n                company: (userProfile === null || userProfile === void 0 ? void 0 : userProfile.company) ? userProfile.company : '',\n                country: (userProfile === null || userProfile === void 0 ? void 0 : userProfile.country) ? userProfile.country : '',\n                phone: (userProfile === null || userProfile === void 0 ? void 0 : userProfile.phone) ? userProfile.phone : ''\n            },\n            localLicenseStore: (this.licenseType === Constants.Dynamics365LicenseType.dynamics365License || this.licenseType === Constants.Dynamics365LicenseType.dynamics365forBusinessLicense) && !isEmbedded ? setInitialLocalLicenseStore(userProfile.licenses, this.licenseType) : null,\n            licenseDisplayText: (this.licenseType === Constants.Dynamics365LicenseType.dynamics365License || this.licenseType === Constants.Dynamics365LicenseType.dynamics365forBusinessLicense) && !isEmbedded ? setInitialLicenseDisplayText(userProfile.licenses, this.licenseType) : ''\n        });\n    }\n    isCTAShouldSkipModal() {\n        const { ctaType, isEmbedded, modal } = this.props;\n        const isOpenedFromPDP = modal === null || modal === void 0 ? void 0 : modal.isOpenedFromPDP;\n        const shouldCTATypeBeSkip = [\n            Constants.CTAType.Get,\n            Constants.CTAType.Try\n        ].includes(ctaType);\n        return isOpenedFromPDP && !isEmbedded && shouldCTATypeBeSkip;\n    }\n    /** Determines whether should skip the consent modal */ shouldSkipModal(userProfile) {\n        const { isContactForm, isEmbedded, appInfo } = this.props;\n        if (isContactForm) {\n            return false;\n        }\n        if (isEmbedded && isPowerBIVisualsApp(appInfo)) {\n            return true;\n        }\n        return this.isCTAShouldSkipModal() && this.isMandatoryFieldsFilled(userProfile);\n    }\n    componentDidMount() {\n        const { isTransactApp, appInfo, fetchAppDetails, userProfile, userInfo, isContactForm, dismissModal, isEmbedded } = this.props;\n        this.handoffTitle = appInfo && appInfo.builtFor;\n        this.setState({\n            isEmbeddedApp: isEmbedded && !isContactForm\n        });\n        if (this.shouldSkipModal(userProfile)) {\n            this.logConsentDialogEvents(Constants.Telemetry.ActionModifier.ConsentModal, Constants.Telemetry.Action.Skip, JSON.stringify({\n                AutomaticallyAccepted: true\n            }));\n            this.setState({\n                shouldSkipModal: true\n            });\n            // Embed doesn't dismiss the modal when skipping it, so dismiss manually\n            if (!(userInfo === null || userInfo === void 0 ? void 0 : userInfo.signedIn) && isEmbedded) {\n                dismissModal();\n            }\n            this.handleContinue(userProfile);\n        } else if (this.isCTAShouldSkipModal() && !this.isMandatoryFieldsFilled(userProfile) && !(userInfo === null || userInfo === void 0 ? void 0 : userInfo.loading)) {\n            this.logConsentDialogEvents(Constants.Telemetry.ActionModifier.ConsentModal, Constants.Telemetry.Action.Open, JSON.stringify({\n                AutomaticallyAccepted: false\n            }));\n        } else {\n            this.logConsentDialogEvents(Constants.Telemetry.ActionModifier.ConsentModal, Constants.Telemetry.Action.Open);\n        }\n        if (isTransactApp) {\n            this.handleTransactCheckout(this.props);\n        }\n        // For the privacy policy URL to show up, we need the app details.\n        if (appInfo && appInfo.detailInformation == null) {\n            fetchAppDetails(appInfo);\n        } else if (appInfo) {\n            this.setState({\n                appPrivacyPolicyUrl: appInfo.detailInformation.PrivacyPolicyUrl\n            });\n        }\n        if (userInfo.loading && !isContactForm && this.isCTAShouldSkipModal()) {\n            this.setState({\n                showAnimation: true\n            });\n        }\n    }\n    UNSAFE_componentWillReceiveProps(nextProps) {\n        const { userProfile: currentUserProfile, appInfo: currentAppInfo, isLoadingUserProfile: currentIsLoadingUserProfile } = this.props;\n        const { userProfile: nextUserProfile, appInfo: nextAppInfo, userInfo: nextUserInfo, isLoadingUserProfile: nextIsLoadingUserProfile, isContactForm: nextIsContactForm, serviceInfo: nextServiceInfo } = nextProps;\n        if (nextProps.isTransactApp) {\n            this.handleTransactCheckout(nextProps);\n        }\n        if (nextAppInfo && currentAppInfo && nextAppInfo.detailInformation && currentAppInfo.detailInformation !== nextAppInfo.detailInformation) {\n            this.setState({\n                appPrivacyPolicyUrl: nextAppInfo.detailInformation.PrivacyPolicyUrl\n            });\n        }\n        if (nextUserProfile.firstName !== '' && currentUserProfile.firstName === '' || nextUserProfile.lastName !== '' && currentUserProfile.lastName === '' || nextUserProfile.company !== '' && currentUserProfile.company === '' || nextUserProfile.country !== '' && currentUserProfile.country === '' || nextUserProfile.email !== '' && currentUserProfile.email === '' || nextUserProfile.phone !== '' && currentUserProfile.phone === '' || nextUserProfile.title !== '' && currentUserProfile.title === '') {\n            this.setAccountInfo(nextProps);\n        }\n        if (!nextUserInfo.loading) {\n            if (this.shouldSkipModal(nextUserProfile) && !this.shouldSkipModal(currentUserProfile)) {\n                this.logConsentDialogEvents(Constants.Telemetry.ActionModifier.ConsentModal, Constants.Telemetry.Action.Skip, JSON.stringify({\n                    AutomaticallyAccepted: true\n                }));\n                this.setState({\n                    shouldSkipModal: true\n                });\n                this.handleContinue(nextUserProfile);\n            } else if (this.isCTAShouldSkipModal() && !this.isMandatoryFieldsFilled(nextUserProfile)) {\n                this.logConsentDialogEvents(Constants.Telemetry.ActionModifier.ConsentModal, Constants.Telemetry.Action.Open, JSON.stringify({\n                    AutomaticallyAccepted: false\n                }));\n            }\n        }\n        if (!nextIsLoadingUserProfile && currentIsLoadingUserProfile !== nextIsLoadingUserProfile) {\n            this.userProfilePostLoadingActions(nextUserProfile, nextIsContactForm, nextServiceInfo);\n        }\n    }\n    userProfilePostLoadingActions(userProfile, isContactForm, serviceInfo) {\n        this.setState({\n            forceUserProfileCompacted: !isContactForm && !serviceInfo && this.isMandatoryFieldsFilled(userProfile)\n        });\n        if (!this.isCTAShouldSkipModal()) {\n            this.setState({\n                showAnimation: false\n            });\n        }\n    }\n    handleTransactCheckout(props) {\n        const { userInfo, modal, dismissModal, appInfo: { entityId } = {} } = props;\n        this.logConsentDialogEvents(Constants.Telemetry.Action.Open, Constants.Telemetry.ActionModifier.HandleTransactCheckout, JSON.stringify({\n            tenantType: userInfo.tenantType\n        }));\n        if (userInfo && userInfo.signedIn && !userInfo.isMSAUser && userInfo.tenantType !== Constants.TenantType.Msa) {\n            var _modal_options;\n            this.logConsentDialogEvents(Constants.Telemetry.Action.Redirecting, Constants.Telemetry.ActionModifier.HandleTransactCheckout, 'Redirecting to checkout page');\n            urlPush(this.context.buildHref(routes.checkout, {\n                entityId\n            }, {\n                [Constants.Checkout.DefaultPlanIdQueryParam]: modal === null || modal === void 0 ? void 0 : (_modal_options = modal.options) === null || _modal_options === void 0 ? void 0 : _modal_options.planId\n            }, true, false, true));\n            dismissModal();\n        } else {\n            this.logConsentDialogEvents(Constants.Telemetry.Action.Error, Constants.Telemetry.ActionModifier.HandleTransactCheckout, JSON.stringify({\n                tenantType: userInfo.tenantType,\n                isMSAUser: userInfo.isMSAUser,\n                isSignedIn: userInfo.signedIn\n            }));\n            this.setState({\n                showUserSignInError: true\n            });\n        }\n    }\n    updateUserLicenseInState() {\n        const { updateLicense } = this.props;\n        const { localLicenseStore } = this.state;\n        updateLicense(this.licenseType, localLicenseStore);\n    }\n    shouldProcessLead() {\n        var _getProductByUrlKey;\n        const { isEmbedded, embedHost } = this.props;\n        const productShouldntGenerateLead = offerTypesWithoutLeads.includes((_getProductByUrlKey = getProductByUrlKey({\n            urlKey: embedHost\n        })) === null || _getProductByUrlKey === void 0 ? void 0 : _getProductByUrlKey.UrlKey);\n        if (isEmbedded && productShouldntGenerateLead) {\n            return false;\n        }\n        return true;\n    }\n    shouldProcessLeadInfo() {\n        const { appInfo, serviceInfo, flightCodes, embedHost, userInfo, isEmbedded } = this.props;\n        const isService = !!serviceInfo;\n        const uniqueProductId = isService ? serviceInfo.entityId : appInfo === null || appInfo === void 0 ? void 0 : appInfo.entityId;\n        if (!(userInfo === null || userInfo === void 0 ? void 0 : userInfo.signedIn)) {\n            this.telemetry(Constants.Telemetry.Action.ProcessLeadInfo, Constants.Telemetry.ActionModifier.Skip, {\n                reason: Constants.Telemetry.LeadsDropReason.UserNotSignedIn,\n                uniqueProductId,\n                isEmbedded,\n                embedHost\n            });\n            return false;\n        }\n        if (flightCodes) {\n            this.telemetry(Constants.Telemetry.Action.ProcessLeadInfo, Constants.Telemetry.ActionModifier.Skip, {\n                reason: Constants.Telemetry.LeadsDropReason.PreviewOffer,\n                uniqueProductId,\n                isEmbedded,\n                embedHost\n            });\n            return false;\n        }\n        if (!isService) {\n            if (!appInfo || appInfo.privateApp === true) {\n                this.telemetry(Constants.Telemetry.Action.ProcessLeadInfo, Constants.Telemetry.ActionModifier.Skip, {\n                    reason: Constants.Telemetry.LeadsDropReason.AppNotAvailableOrPrivate,\n                    uniqueProductId,\n                    isEmbedded,\n                    embedHost\n                });\n                return false;\n            }\n        }\n        if (!this.shouldProcessLead()) {\n            this.telemetry(Constants.Telemetry.Action.ProcessLeadInfo, Constants.Telemetry.ActionModifier.Skip, {\n                reason: Constants.Telemetry.LeadsDropReason.EmbedWithoutLead,\n                uniqueProductId,\n                isEmbedded,\n                embedHost\n            });\n            return false;\n        }\n        return true;\n    }\n    processLeadInfo() {\n        var _this = this;\n        return _async_to_generator(function*() {\n            const { ctaType, appInfo, sendLeadInfo, isContactForm, serviceInfo, isEmbedded, embedHost } = _this.props;\n            const { notes } = _this.state;\n            const isService = !!serviceInfo;\n            const item = isService ? serviceInfo : appInfo;\n            try {\n                _this.telemetry(Constants.Telemetry.Action.ProcessLeadInfo, Constants.Telemetry.ActionModifier.Start, {\n                    data: `Processing the lead. isService is ${isService}.`,\n                    uniqueProductId: item.entityId,\n                    isEmbedded,\n                    embedHost\n                });\n                if (_this.shouldProcessLeadInfo()) {\n                    yield sendLeadInfo({\n                        item,\n                        ctaType,\n                        notes\n                    });\n                    _this.telemetry(Constants.Telemetry.Action.ProcessLeadInfo, Constants.Telemetry.ActionModifier.End, {\n                        uniqueProductId: item.entityId,\n                        isEmbedded,\n                        embedHost\n                    });\n                }\n            } catch (error) {\n                const shouldStopFlow = isContactForm || isService;\n                _this.telemetry(Constants.Telemetry.Action.ProcessLeadInfo, Constants.Telemetry.ActionModifier.Error, {\n                    error,\n                    shouldStopFlow,\n                    uniqueProductId: item.entityId,\n                    isEmbedded,\n                    embedHost\n                });\n                if (shouldStopFlow) {\n                    throw error;\n                }\n            }\n        })();\n    }\n    handleContinueHelper(showAnimation = true, shouldGenerateLead = true) {\n        const { getUserAuthStatus, serviceInfo, isContactForm, ctaType, isEmbedded, appInfo, openDriveModal, embedHost, dismissModal, signOutUser, featureFlags, billingCountryCode } = this.props;\n        const { isEmbeddedApp } = this.state;\n        if (this.licenseType && this.licenseType !== -1) {\n            this.updateUserLicenseInState();\n        }\n        var _this = this;\n        getUserAuthStatus().then(/*#__PURE__*/ function() {\n            var _ref = _async_to_generator(function*(result) {\n                if (isEmbeddedApp || result.status !== Constants.SigninStatus.ExpiredTokenInvalidCookie) {\n                    try {\n                        _this.setState({\n                            showAnimation: true\n                        });\n                        const { url, handoffTitle } = processHandoffURLAndTitle(appInfo);\n                        const isOpenInNewWindow = (featureFlags === null || featureFlags === void 0 ? void 0 : featureFlags.openInNewWindowButton) && isOpenInNewWindowButton({\n                            isEmbedded,\n                            ctaType,\n                            appData: appInfo,\n                            billingRegion: billingCountryCode,\n                            url\n                        });\n                        const actions = [\n                            _this.processLeadInfo()\n                        ];\n                        yield Promise.all(actions);\n                        _this.setState({\n                            showAnimation: false\n                        });\n                        if (serviceInfo || isContactForm) {\n                            _this.setState({\n                                showSuccessDialog: true\n                            });\n                        }\n                        if (!shouldGenerateLead) {\n                            _this.logConsentDialogEvents(Constants.Telemetry.Action.Click, Constants.Telemetry.ActionModifier.CTAInfo, 'User choose not to generate lead');\n                        }\n                        if (isEmbedded && !isContactForm) {\n                            // TODO : Publish lead in embed experience using the host data\n                            // We need to fetch lastName, firstName and email. If firstName/lastName are null, use FNU/LNU\n                            postEmbedAcquisitionMessage(appInfo, ctaType, embedHost);\n                            setTimeout(()=>{\n                                dismissModal();\n                            }, 1000);\n                            return;\n                        }\n                        if (!isContactForm && !serviceInfo) {\n                            var _getNpsModule;\n                            if (shouldDownloadPowerBIVisual(appInfo, isEmbedded)) {\n                                _this.handlePowerBIVisualDownload();\n                                return;\n                            }\n                            if (handoffTitle) {\n                                _this.handoffTitle = handoffTitle;\n                            }\n                            _this.logOutgoingHandoffRedirect(url);\n                            if (!url) {\n                                dismissModal();\n                                return;\n                            }\n                            NpsModule.IncreaseAppAcquisition();\n                            (_getNpsModule = getNpsModule()) === null || _getNpsModule === void 0 ? void 0 : _getNpsModule.ctaClicked(false);\n                            if (featureFlags === null || featureFlags === void 0 ? void 0 : featureFlags.openInNewWindowButton) {\n                                if (showAnimation) {\n                                    _this.setState({\n                                        showAnimation: true,\n                                        handoffUrl: url\n                                    });\n                                    dismissModal();\n                                }\n                                openInNewWindow(url);\n                            } else {\n                                if (showAnimation) {\n                                    _this.setState({\n                                        showAnimation: true,\n                                        handoffUrl: url\n                                    });\n                                    setTimeout(function() {\n                                        window.open(url, '_self');\n                                    }, 2500);\n                                } else {\n                                    window.open(url, '_self');\n                                }\n                            }\n                        }\n                    } catch (error) {\n                        const errorString = stringifyError(error);\n                        const actionModifier = isContactForm ? Constants.Telemetry.ActionModifier.SubmitLeadGen : Constants.Telemetry.ActionModifier.ConsentModal;\n                        const action = errorString === Constants.Telemetry.Action.RefreshToken ? Constants.Telemetry.Action.RefreshToken : Constants.Telemetry.Action.Error;\n                        _this.logConsentDialogEvents(action, actionModifier, errorString);\n                        if (errorString === Constants.Telemetry.Action.RefreshToken) {\n                            signOutUser();\n                        }\n                        if (isContactForm || serviceInfo) {\n                            _this.setState({\n                                showContactMeError: true,\n                                showAnimation: false\n                            });\n                        } else {\n                            _this.setState({\n                                showAnimation: false\n                            });\n                        }\n                    }\n                }\n            });\n            return function(result) {\n                return _ref.apply(this, arguments);\n            };\n        }());\n    }\n    hideAccountInfoUI() {\n        const { forceUserProfileCompacted } = this.state;\n        if (forceUserProfileCompacted) {\n            this.setState({\n                forceUserProfileCompacted: false\n            });\n        }\n        this.setState({\n            showAccountInfo: true\n        });\n    }\n    onUpdateAccountInfo(key, value) {\n        this.setState({\n            accountInfo: this.updateAccountInfo(key, value)\n        });\n    }\n    updateAccountInfo(key, value) {\n        const { accountInfo } = this.state;\n        const newAccountInfo = {\n            firstName: accountInfo.firstName,\n            lastName: accountInfo.lastName,\n            email: accountInfo.email,\n            title: accountInfo.title,\n            company: accountInfo.company,\n            country: accountInfo.country,\n            phone: accountInfo.phone\n        };\n        newAccountInfo[`${key}`] = value;\n        return newAccountInfo;\n    }\n    handlePowerBIVisualDownload() {\n        const { appInfo, location, openInstructionsModal, dismissModal } = this.props;\n        if (appInfo === null || appInfo === void 0 ? void 0 : appInfo.downloadLink) {\n            const payload = {\n                page: location.pathname,\n                action: Constants.Telemetry.Action.Click,\n                actionModifier: Constants.Telemetry.ActionModifier.DownloadPBIVisual,\n                appName: appInfo.entityId\n            };\n            this.instrument.probe(Constants.Telemetry.ProbeName.LogInfo, payload);\n            logger.info('', {\n                action: payload.action,\n                actionModifier: payload.actionModifier,\n                appName: payload.appName\n            });\n            window.location.href = appInfo.downloadLink;\n            if (!getLocalStorageItem(Constants.LocalStorage.dontShowInstructions)) {\n                openInstructionsModal();\n            } else {\n                dismissModal();\n            }\n        }\n    }\n    handleContinue(userProfile, showAnimation = true, shouldGenerateLead = true) {\n        const { isEmbeddedApp } = this.state;\n        const { query, updatePurchaseStatus, isContactForm, appInfo, serviceInfo } = this.props;\n        const { entityId } = appInfo || serviceInfo;\n        const shouldGenerateLeadGen = shouldGenerateLead && !isETERunning(query);\n        getTrailIdAndData(true, 'consent form - continue btn');\n        if (!isEmbeddedApp && !this.shouldSkipModal(userProfile)) {\n            const actionModifier = isContactForm ? Constants.Telemetry.ActionModifier.SubmitLeadGen : Constants.Telemetry.ActionModifier.ConsentModal;\n            this.logConsentDialogEvents(Constants.Telemetry.Action.Click, actionModifier);\n            this.logConsentTelemetry({\n                contentId: Constants.JsllCTAId.Continue,\n                areaName: Constants.Telemetry.AreaName.ConsentModal,\n                entityId\n            });\n            this.setState({\n                formSubmitted: true\n            });\n        } else {\n            this.logConsentTelemetry({\n                contentId: Constants.Telemetry.ContentType.SkipConsentModal,\n                areaName: Constants.Telemetry.AreaName.ConsentModal,\n                entityId\n            });\n            this.handleContinueHelper(showAnimation, shouldGenerateLeadGen);\n        }\n        updatePurchaseStatus();\n    }\n    logConsentTelemetry({ contentId, areaName, entityId }) {\n        pageAction(null, {\n            content: {\n                contentId,\n                areaName,\n                contentName: entityId\n            }\n        });\n    }\n    getTelemetryDetailsContent() {\n        const { trailId } = this.state;\n        const { appInfo, serviceInfo, isContactForm, isNationalCloud, ctaType, currentView } = this.props;\n        const { shouldSkipModal } = this.state;\n        const entityInfo = appInfo || serviceInfo;\n        const hasCheckbox = !isContactForm;\n        const hasUserProfile = !shouldSkipModal || !!serviceInfo;\n        // application\n        if (appInfo) {\n            return getAppTelemetryDetailContentText({\n                appInfo: entityInfo,\n                isNationalCloud,\n                ctaTypes: [\n                    ctaType\n                ],\n                consentDialogHasUserProfile: hasUserProfile,\n                consentDialogHasCheckbox: hasCheckbox,\n                currentView,\n                trailId\n            });\n        }\n        // consulting services\n        return getServiceTelemetryDetailContentText({\n            serviceInfo: entityInfo,\n            isNationalCloud,\n            ctaTypes: [\n                ctaType\n            ],\n            consentDialogHasUserProfile: hasUserProfile,\n            consentDialogHasCheckbox: hasCheckbox,\n            currentView,\n            trailId\n        });\n    }\n    profileCompleted(profileFilledOut) {\n        const { isProfileCompleted } = this.state;\n        if (isProfileCompleted !== profileFilledOut) {\n            this.setState({\n                isProfileCompleted: profileFilledOut\n            });\n        }\n    }\n    disableSubmitButton() {\n        const { showUserSignInError, shouldSkipModal, isProfileCompleted, isNotesInvalid } = this.state;\n        const { isContactForm } = this.props;\n        if (showUserSignInError) {\n            return false;\n        }\n        if (!shouldSkipModal) {\n            return !isProfileCompleted || isContactForm && isNotesInvalid;\n        }\n        return isLeadgenEnabled();\n    }\n    getTermsLink() {\n        const { appInfo } = this.props;\n        const terms = {};\n        if (appInfo === null || appInfo === void 0 ? void 0 : appInfo.UsesEnterpriseContract) {\n            terms.link = Constants.enterpriseContractLink;\n            terms.locKey = 'ECA_Link';\n            return terms;\n        }\n        terms.link = appInfo.licenseTermsUrl;\n        terms.locKey = 'TRY_Terms2';\n        return terms;\n    }\n    renderConsentDisclaimer() {\n        const { ctaType, isContactForm, appInfo } = this.props;\n        const terms = appInfo && this.getTermsLink();\n        const { appPrivacyPolicyUrl } = this.state;\n        return /*#__PURE__*/ _jsx(\"div\", {\n            children: /*#__PURE__*/ _jsxs(Stack, {\n                horizontal: true,\n                tokens: desclaimerTokens,\n                className: consentModalClassNames.desclaimerContainer,\n                children: [\n                    /*#__PURE__*/ _jsx(Icon, {\n                        iconName: \"info\",\n                        styles: infoIconStyles\n                    }),\n                    isContactForm ? /*#__PURE__*/ _jsx(SafeHtmlWrapper, {\n                        html: this.context.locParams('Contact_Me_Consent_Disclaimer', [\n                            `<a href='${Constants.MicrosoftTermsURL}' rel='noreferrer' target='_blank'>${this.context.loc('RT_Terms', 'terms')}</a>`\n                        ])\n                    }) : appInfo ? /*#__PURE__*/ _jsx(SafeHtmlWrapper, {\n                        html: this.context.locParams('App_Consent_Disclaimer', [\n                            `<b>${this.context.loc(getActionStringForCTAType(ctaType))}</b>`,\n                            `<a href='${terms.link}' rel='noreferrer' target='_blank'>${this.context.loc('Provider_Terms', 'terms of use')}</a>`,\n                            `<a href='${appPrivacyPolicyUrl}' rel='noreferrer' target='_blank'>${this.context.loc('TRY_PrivacyPolicy', 'privacy policy')}</a>`,\n                            `<a href='${Constants.MicrosoftTermsURL}' rel='noreferrer' target='_blank'>${this.context.loc('TRY_Terms', 'terms')}</a>`,\n                            `<a href='${Constants.MicrosoftPrivacyStatementURL}' rel='noreferrer' target='_blank'>${this.context.loc('TRY_Privacy', 'privacy')}</a>`\n                        ])\n                    }) : /*#__PURE__*/ _jsx(SafeHtmlWrapper, {\n                        html: this.context.locParams('CS_Consent_Disclaimer', [\n                            `<a href='${Constants.MicrosoftTermsURL}' rel='noreferrer' target='_blank'>${this.context.loc('TRY_Terms', 'terms')}</a>`,\n                            `<a href='${Constants.MicrosoftPrivacyStatementURL}' rel='noreferrer' target='_blank'>${this.context.loc('TRY_Privacy', 'privacy')}</a>`\n                        ])\n                    })\n                ]\n            })\n        });\n    }\n    renderConsentBottomBar() {\n        const { appInfo, isContactForm, isEmbedded, billingCountryCode, ctaType, serviceInfo, dismissModal, userProfile, isLoadingUserProfile } = this.props;\n        const { showUserSignInError, isEmbeddedApp } = this.state;\n        let ctaButton;\n        const isCTADisabled = !isEmbeddedApp && (this.disableSubmitButton() || isLoadingUserProfile);\n        if (isContactForm || !!serviceInfo) {\n            ctaButton = /*#__PURE__*/ _jsx(PrimaryButton, {\n                name: \"button\",\n                text: this.context.loc('CTA_ContactMe', 'Contact me'),\n                type: \"submit\",\n                \"data-bi-id\": Constants.JsllCTAId.Continue,\n                \"data-bi-name\": appInfo === null || appInfo === void 0 ? void 0 : appInfo.entityId,\n                \"data-bi-type\": (appInfo === null || appInfo === void 0 ? void 0 : appInfo.offerType) === OfferType.SaaSApp ? isTransactApp({\n                    isEmbedded,\n                    ctaTypes: appInfo.ctaTypes,\n                    appData: appInfo,\n                    billingRegion: billingCountryCode\n                }) ? Constants.JsllSaas.SaasTransactable : Constants.JsllSaas.SaasNonTransactable : '',\n                \"data-bi-area\": \"Consent Dialog\",\n                onClick: ()=>this.handleContinue(userProfile),\n                disabled: isCTADisabled\n            });\n        } else {\n            var _this_props_featureFlags;\n            const { url } = processHandoffURLAndTitle(appInfo);\n            const isOpenInNewWindow = ((_this_props_featureFlags = this.props.featureFlags) === null || _this_props_featureFlags === void 0 ? void 0 : _this_props_featureFlags.openInNewWindowButton) && isOpenInNewWindowButton({\n                isEmbedded,\n                ctaType,\n                appData: appInfo,\n                billingRegion: billingCountryCode,\n                url\n            });\n            const isPBIVisualPriceHidden = hidePowerBiVisualPricing({\n                app: appInfo,\n                isEmbedded\n            });\n            ctaButton = /*#__PURE__*/ _jsx(PrimaryButton, {\n                className: classNames({\n                    [openInNewWindowButtonStyles.openInNewWindowButton]: isOpenInNewWindow\n                }),\n                text: isPBIVisualPriceHidden && ctaType === Constants.CTAType.Install ? this.context.loc('CTA_Install_free', 'Install free') : this.context.loc(getActionStringForCTAType(ctaType)),\n                name: \"button\",\n                type: \"submit\",\n                \"data-bi-id\": Constants.JsllCTAId.Continue,\n                \"data-bi-name\": appInfo === null || appInfo === void 0 ? void 0 : appInfo.entityId,\n                \"data-bi-type\": (appInfo === null || appInfo === void 0 ? void 0 : appInfo.offerType) === OfferType.SaaSApp ? isTransactApp({\n                    isEmbedded,\n                    ctaTypes: appInfo.ctaTypes,\n                    appData: appInfo,\n                    billingRegion: billingCountryCode\n                }) ? Constants.JsllSaas.SaasTransactable : Constants.JsllSaas.SaasNonTransactable : '',\n                \"data-bi-area\": \"Consent Dialog\",\n                onClick: ()=>showUserSignInError ? dismissModal() : this.handleContinue(userProfile),\n                disabled: isCTADisabled,\n                iconProps: isOpenInNewWindow ? {\n                    iconName: 'OpenInNewWindow'\n                } : {}\n            });\n        }\n        return /*#__PURE__*/ _jsx(Stack.Item, {\n            align: \"end\",\n            children: getTooltipSilentLogIn(ctaButton, isLoadingUserProfile)\n        });\n    }\n    renderUserProfileModal() {\n        const { isEmbedded, isContactForm } = this.props;\n        const { formSubmitted, localLicenseStore, forceUserProfileCompacted, shouldSkipModal } = this.state;\n        return !shouldSkipModal && /*#__PURE__*/ _jsx(Stack, {\n            className: consentModalClassNames.userProfileContainer,\n            children: /*#__PURE__*/ _jsx(UserProfileModal, {\n                isEmbedded: isEmbedded,\n                userSubmittedForm: formSubmitted,\n                profileCompleted: this.profileCompleted.bind(this),\n                callBackHandler: this.handleContinueHelper.bind(this),\n                shouldHideAccountInfo: this.hideAccountInfoUI.bind(this),\n                licenseType: this.licenseType,\n                currentLicense: localLicenseStore,\n                compactUserProfile: forceUserProfileCompacted,\n                accountInfoUpdate: this.onUpdateAccountInfo.bind(this),\n                shouldRenderHeader: true,\n                isContactForm: isContactForm\n            })\n        });\n    }\n    renderNotes() {\n        const { notes, isNotesInvalid } = this.state;\n        const { isContactForm } = this.props;\n        return isContactForm && /*#__PURE__*/ _jsx(TextField, {\n            className: consentModalClassNames.notes,\n            multiline: true,\n            rows: 4,\n            maxLength: 1500,\n            deferredValidationTime: 2000,\n            errorMessage: isNotesInvalid ? this.context.loc('ConsentModal_Notes_ContainEmailOrUrlErrorMsg', \"This field can't contain URLs or email addresses.\") : '',\n            label: this.context.loc('ConsentModal_Notes_Label', 'Describe your use case'),\n            placeholder: this.context.loc('ConsentModal_Notes_Placeholder', 'Tell us about your team’s business needs.\\nFor example, are you working on a current project? What is your time frame?'),\n            value: notes,\n            onChange: this.onNotesChange\n        });\n    }\n    renderLoginInfo() {\n        const { userInfo } = this.props;\n        const { displayName, email } = userInfo;\n        return (userInfo === null || userInfo === void 0 ? void 0 : userInfo.signedIn) && /*#__PURE__*/ _jsx(Stack, {\n            tokens: loginUserInfoTokens,\n            children: /*#__PURE__*/ _jsxs(Text, {\n                variant: \"medium\",\n                children: [\n                    this.context.loc('Leads_Logged_User_Info', \"You're signed in as\"),\n                    ' ',\n                    /*#__PURE__*/ _jsxs(Text, {\n                        variant: \"medium\",\n                        className: consentModalClassNames.boldText,\n                        children: [\n                            displayName,\n                            \" (\",\n                            email,\n                            \").\"\n                        ]\n                    })\n                ]\n            })\n        });\n    }\n    renderConsentElement() {\n        const { appInfo, serviceInfo } = this.props;\n        const { isEmbeddedApp } = this.state;\n        const iconSrc = appInfo ? appInfo.iconURL : serviceInfo.extraData.smallIconUri;\n        const title = appInfo ? appInfo.title : serviceInfo.title;\n        const publisher = appInfo ? appInfo.publisher : serviceInfo.publisher;\n        return /*#__PURE__*/ _jsxs(Stack, {\n            children: [\n                /*#__PURE__*/ _jsxs(Stack, {\n                    horizontal: true,\n                    children: [\n                        /*#__PURE__*/ _jsx(Stack.Item, {\n                            align: \"center\",\n                            children: /*#__PURE__*/ _jsx(TelemetryImage, {\n                                imgClassName: consentModalClassNames.appImg,\n                                className: classNames(consentModalClassNames.appImgContainer, {\n                                    'ms-depth-8': true\n                                }),\n                                src: iconSrc,\n                                \"aria-label\": this.context.loc('Telemetry_Image_Aria_Label', 'Application Icon'),\n                                alt: title\n                            })\n                        }),\n                        /*#__PURE__*/ _jsxs(Stack, {\n                            children: [\n                                /*#__PURE__*/ _jsx(Text, {\n                                    variant: \"mediumPlus\",\n                                    className: consentModalClassNames.boldText,\n                                    children: title\n                                }),\n                                /*#__PURE__*/ _jsx(Text, {\n                                    variant: \"medium\",\n                                    children: this.context.locParams('Tile_By', [\n                                        publisher\n                                    ])\n                                })\n                            ]\n                        })\n                    ]\n                }),\n                !isEmbeddedApp && /*#__PURE__*/ _jsxs(_Fragment, {\n                    children: [\n                        this.renderLoginInfo(),\n                        this.renderUserProfileModal(),\n                        this.renderNotes()\n                    ]\n                }),\n                this.renderConsentDisclaimer(),\n                this.renderConsentBottomBar()\n            ]\n        });\n    }\n    switchToleadGen() {\n        this.setState({\n            showAnimation: false\n        });\n        return this.renderConsentElement();\n    }\n    renderImpl() {\n        const { dismissModal, isTransactApp, isContactForm, appInfo, serviceInfo } = this.props;\n        const { shouldSkipModal, showSuccessDialog, showUserSignInError, showAnimation, showContactMeError } = this.state;\n        const publisher = appInfo ? appInfo.publisher : serviceInfo.publisher;\n        if (shouldSkipModal && this.isCTAShouldSkipModal()) {\n            this.setState({\n                shouldSkipModal: false\n            });\n        }\n        return showSuccessDialog && (isContactForm || serviceInfo) ? /*#__PURE__*/ _jsx(SuccessConsentModal, {\n            dismissModal: dismissModal,\n            publisher: publisher,\n            shouldSkipModal: shouldSkipModal\n        }) : (showUserSignInError || showContactMeError) && (isContactForm || serviceInfo) ? /*#__PURE__*/ _jsx(FailureConsentModal, {\n            dismissModal: dismissModal,\n            shouldSkipModal: shouldSkipModal,\n            showContactMeError: showContactMeError\n        }) : /*#__PURE__*/ _jsx(ConsentModalContent, {\n            showAnimation: showAnimation,\n            handoffTitle: this.handoffTitle,\n            isTransactApp: isTransactApp,\n            isContactForm: isContactForm || !!serviceInfo,\n            shouldSkipModal: shouldSkipModal,\n            publisher: appInfo ? appInfo.publisher : serviceInfo.publisher,\n            dismissModal: dismissModal,\n            children: this.renderPromptContent()\n        });\n    }\n    renderPromptContent() {\n        const { showAnimation } = this.state;\n        const { appInfo, serviceInfo } = this.props;\n        if (showAnimation) {\n            return this.renderAnimation();\n        }\n        if (appInfo || serviceInfo) {\n            return this.renderApp();\n        }\n    }\n    renderAnimation() {\n        const { appInfo, serviceInfo } = this.props;\n        const iconSrc = appInfo ? appInfo.iconURL : serviceInfo.extraData.smallIconUri;\n        const title = appInfo ? appInfo.title : serviceInfo.title;\n        const { animationImg, appImg, appImgContainer } = consentModalClassNames;\n        return /*#__PURE__*/ _jsxs(Stack, {\n            tokens: animationStackTokens,\n            children: [\n                /*#__PURE__*/ _jsx(Stack.Item, {\n                    children: /*#__PURE__*/ _jsx(Animation, {})\n                }),\n                /*#__PURE__*/ _jsx(Stack.Item, {\n                    className: animationImg,\n                    children: /*#__PURE__*/ _jsx(TelemetryImage, {\n                        imgClassName: appImg,\n                        className: classNames(appImgContainer, {\n                            'ms-depth-8': true\n                        }),\n                        src: iconSrc,\n                        \"aria-label\": this.context.loc('Telemetry_Image_Aria_Label', 'Application Icon'),\n                        alt: title\n                    })\n                })\n            ]\n        });\n    }\n    renderApp() {\n        const { isTransactApp, userInfo } = this.props;\n        const leadGen = isTransactApp && (userInfo.isMSAUser || userInfo.tenantType && userInfo.tenantType !== Constants.TenantType.Managed);\n        return leadGen ? this.switchToleadGen() : this.renderConsentElement();\n    }\n    constructor(props){\n        super(props), _define_property(this, \"context\", void 0), _define_property(this, \"handoffTitle\", ''), _define_property(this, \"instrument\", void 0), _define_property(this, \"licenseType\", -1), _define_property(this, \"logOutgoingHandoffRedirect\", (url)=>{\n            const { appInfo, serviceInfo, location } = this.props;\n            const entityInfo = appInfo || serviceInfo;\n            const payload = {\n                page: location.pathname,\n                action: Constants.Telemetry.Action.Redirecting,\n                actionModifier: Constants.Telemetry.ActionModifier.OfficeOffersPurchase,\n                appName: entityInfo && entityInfo.entityId,\n                details: url\n            };\n            this.instrument.probe('logAndFlushTelemetryInfo', payload);\n            logger.info(payload.details, {\n                action: payload.action,\n                actionModifier: payload.actionModifier,\n                appName: payload.appName\n            });\n        }), _define_property(this, \"onNotesChange\", (event, newValue)=>{\n            this.setState({\n                notes: newValue,\n                isNotesInvalid: containsURLOrEmail(newValue)\n            });\n        });\n        this.instrument = SpzaInstrumentService.getProvider();\n        const { userProfile, isContactForm, serviceInfo, isEmbedded, appInfo } = this.props;\n        // 1 is D365 license, 2 is D365 for financial license, -1 is don't display account info\n        this.licenseType = isEmbedded ? dynamicsLicenseTypeForEmbed(appInfo.products) : appInfo ? dynamicsLicenseType(userProfile, appInfo.products) : -1;\n        this.state = {\n            isProfileCompleted: false,\n            showAnimation: false,\n            showUserSignInError: false,\n            showContactMeError: false,\n            // To get the privacy URL for an app, we need to fetch the App Details. This is lazy loaded.\n            // Hence it is in the state.\n            appPrivacyPolicyUrl: '',\n            showSuccessDialog: false,\n            formSubmitted: false,\n            showAccountInfo: false,\n            forceUserProfileCompacted: !isContactForm && !serviceInfo && this.isMandatoryFieldsFilled(userProfile),\n            accountInfo: {\n                firstName: (userProfile === null || userProfile === void 0 ? void 0 : userProfile.firstName) ? userProfile.firstName : '',\n                lastName: (userProfile === null || userProfile === void 0 ? void 0 : userProfile.lastName) ? userProfile.lastName : '',\n                email: (userProfile === null || userProfile === void 0 ? void 0 : userProfile.email) ? userProfile.email : '',\n                title: (userProfile === null || userProfile === void 0 ? void 0 : userProfile.title) ? userProfile.title : '',\n                company: (userProfile === null || userProfile === void 0 ? void 0 : userProfile.company) ? userProfile.company : '',\n                country: (userProfile === null || userProfile === void 0 ? void 0 : userProfile.country) ? userProfile.country : '',\n                phone: (userProfile === null || userProfile === void 0 ? void 0 : userProfile.phone) ? userProfile.phone : ''\n            },\n            notes: '',\n            isNotesInvalid: false,\n            localLicenseStore: (this.licenseType === Constants.Dynamics365LicenseType.dynamics365License || this.licenseType === Constants.Dynamics365LicenseType.dynamics365forBusinessLicense) && !isEmbedded ? setInitialLocalLicenseStore(userProfile.licenses, this.licenseType) : null,\n            licenseDisplayText: (this.licenseType === Constants.Dynamics365LicenseType.dynamics365License || this.licenseType === Constants.Dynamics365LicenseType.dynamics365forBusinessLicense) && !isEmbedded ? setInitialLicenseDisplayText(userProfile.licenses, this.licenseType) : '',\n            shouldSkipModal: this.shouldSkipModal(userProfile),\n            trailId: generateGuid()\n        };\n        const { accountInfo } = this.state;\n        if (isEmbedded && accountInfo.firstName === '' && accountInfo.lastName === '' && accountInfo.email === '' && accountInfo.phone === '') {\n            const userProfileInCookie = getCookieItem(Constants.userProfileEmbedCookieName, false);\n            if (userProfileInCookie) {\n                const userInfoInCache = {\n                    firstName: '',\n                    lastName: '',\n                    phone: '',\n                    company: '',\n                    country: '',\n                    email: '',\n                    title: '',\n                    accepted: true,\n                    managedLicenses: []\n                };\n                readUserProfileEmbedCookie(userProfileInCookie, userInfoInCache);\n                const accountInfoFromCache = {\n                    firstName: userInfoInCache.firstName ? userInfoInCache.firstName : '',\n                    lastName: userInfoInCache.lastName ? userInfoInCache.lastName : '',\n                    email: userInfoInCache.email ? userInfoInCache.email : '',\n                    title: userInfoInCache.title ? userInfoInCache.title : '',\n                    company: userInfoInCache.company ? userInfoInCache.company : '',\n                    country: userInfoInCache.country ? userInfoInCache.country : '',\n                    phone: userInfoInCache.phone ? userInfoInCache.phone : ''\n                };\n                this.state = {\n                    accountInfo: accountInfoFromCache\n                };\n            }\n        }\n    }\n}\nConsentModal.contextTypes = {\n    loc: PropTypes.func,\n    locParams: PropTypes.func,\n    renderErrorModal: PropTypes.func,\n    buildHref: PropTypes.func\n};\n","import * as React from 'react';\nimport { ConsentModal as ConsentModalComponent } from '@appsource/components/modals/consentModal';\nimport { createInstructionsModalAction, createDriveModalAction, createUserSignOutAction, createUpdateUserProfileLicenseAction } from '@shared/actions/actions';\nimport { getAppDetail, getUserAuthStatus, updatePurchaseStatus, sendLeadInfo } from '@shared/actions/thunkActions';\nimport { getTelemetryDetailContentCurrentView } from '@shared/utils/appUtils';\nimport { connect } from 'react-redux';\nimport { withRouter } from '@shared/routerHistory';\nexport const mapStateToProps = (state, ownProps)=>{\n    return {\n        userInfo: state.users,\n        userProfile: state.users.profile,\n        isNationalCloud: state.config.nationalCloud,\n        billingCountryCode: state.config.billingCountryCode,\n        flightCodes: state.config.flightCodes,\n        featureFlags: state.config.featureFlags,\n        query: ownProps === null || ownProps === void 0 ? void 0 : ownProps.query,\n        embedHost: state.config.embedHost,\n        currentView: getTelemetryDetailContentCurrentView(state.config.currentView, state.config.currentGalleryViewIsCurated),\n        modal: state.modal,\n        isLoadingUserProfile: state.users.isLoadingUserProfile\n    };\n};\nexport const mapDispatchToProps = (dispatch)=>{\n    return {\n        updatePurchaseStatus: ()=>dispatch(updatePurchaseStatus()),\n        openInstructionsModal: ()=>dispatch(createInstructionsModalAction({\n                showModal: true,\n                isFromDownload: true\n            })),\n        openDriveModal: (driveUrl)=>dispatch(createDriveModalAction({\n                showModal: true,\n                driveUrl\n            })),\n        fetchAppDetails: (targetApp)=>dispatch(getAppDetail(targetApp.entityId, false)),\n        sendLeadInfo: ({ item, ctaType, notes, planId })=>dispatch(sendLeadInfo({\n                item,\n                ctaType,\n                notes,\n                planId\n            })),\n        getUserAuthStatus: ()=>dispatch(getUserAuthStatus()),\n        signOutUser: ()=>dispatch(createUserSignOutAction(null)),\n        updateLicense: (licenseType, license)=>dispatch(createUpdateUserProfileLicenseAction({\n                licenseType,\n                license\n            }))\n    };\n};\nexport const ConsentModal = withRouter(connect(mapStateToProps, mapDispatchToProps)(ConsentModalComponent));\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport * as React from 'react';\nimport { Dialog, DialogFooter, PrimaryButton, TextField, DefaultButton, Stack, RatingSize, Rating, Checkbox, Link, Text } from '@fluentui/react';\nimport { Constants } from '@shared/utils/constants';\nimport { getReviewModalDialogProps } from '@shared/utils/reviewsUtils';\nimport greyExclamationMark from '@shared/images/greyExclamationMark.svg';\nexport const renderOfferInfoSection = (appIcon, appTitle, appPublisher)=>{\n    return /*#__PURE__*/ _jsxs(\"div\", {\n        className: \"ReviewActionModalAppDetails\",\n        children: [\n            /*#__PURE__*/ _jsx(\"img\", {\n                className: \"ReviewActionModalAppIcon\",\n                src: appIcon,\n                alt: `${appTitle} icon`\n            }),\n            /*#__PURE__*/ _jsxs(Stack, {\n                className: \"ReviewActionModalAppNameAndPublisher\",\n                children: [\n                    /*#__PURE__*/ _jsx(Text, {\n                        className: \"ReviewActionModalAppName\",\n                        children: appTitle\n                    }),\n                    /*#__PURE__*/ _jsx(Text, {\n                        className: \"ReviewActionModalAppPublisher\",\n                        children: appPublisher\n                    })\n                ]\n            })\n        ]\n    });\n};\nexport const renderRatingSection = (context, IsvReplyExists, curRating, handleRatingChange)=>{\n    return /*#__PURE__*/ _jsxs(Stack, {\n        className: \"ReviewActionModalRating\",\n        children: [\n            /*#__PURE__*/ _jsxs(Text, {\n                className: \"ReviewActionModalRatingTitle\",\n                children: [\n                    context.loc('ReviewActionModal_RatingSectionTitle', 'Rating'),\n                    ' ',\n                    /*#__PURE__*/ _jsx(Text, {\n                        className: \"ReviewActionModalMandatoryFieldSign\",\n                        children: \"*\"\n                    })\n                ]\n            }),\n            /*#__PURE__*/ _jsx(Rating, {\n                allowZeroStars: true,\n                disabled: IsvReplyExists,\n                max: 5,\n                size: RatingSize.Large,\n                rating: curRating,\n                ariaLabel: context.loc('ReviewActionModal_RatingAriaLabel', 'Rating'),\n                ariaLabelFormat: context.loc('ReviewActionModal_RatingAriaLabelFormat', `{0} of {1} stars`),\n                getAriaLabel: (rating, max)=>context.loc('ReviewActionModal_RatingAriaLabelReadOnly', `Rating value is ${rating} of ${max}`),\n                onChange: (event, rating)=>handleRatingChange(rating)\n            })\n        ]\n    });\n};\nexport const renderLinksSection = (context)=>{\n    return /*#__PURE__*/ _jsxs(\"div\", {\n        className: \"ReviewActionModalLinks\",\n        children: [\n            /*#__PURE__*/ _jsx(Link, {\n                target: \"_blank\",\n                href: Constants.MicrosoftTermsURL,\n                children: context.loc('ReviewActionModal_Terms', 'Terms')\n            }),\n            /*#__PURE__*/ _jsx(Text, {\n                className: \"LinksSeperator\",\n                children: \" | \"\n            }),\n            /*#__PURE__*/ _jsx(Link, {\n                target: \"_blank\",\n                href: Constants.MicrosoftPrivacyStatementURL,\n                children: context.loc('ReviewActionModal_PrivacyStatement', 'Privacy statement')\n            })\n        ]\n    });\n};\nexport const renderWriteDialogButtonsSection = (context, curRating, handleSubmitReview, closeModal)=>{\n    return /*#__PURE__*/ _jsxs(DialogFooter, {\n        children: [\n            /*#__PURE__*/ _jsx(PrimaryButton, {\n                onClick: ()=>handleSubmitReview(),\n                disabled: !(!!curRating || curRating === 0),\n                text: context.loc('ReviewActionModal_Submit', 'Submit')\n            }),\n            /*#__PURE__*/ _jsx(DefaultButton, {\n                onClick: ()=>closeModal(),\n                text: context.loc('Cancel', 'Cancel')\n            })\n        ]\n    });\n};\nexport const renderEditDialogButtonsSection = (context, IsvReplyExists, handleDeleteReview, handleSubmitReview, closeModal)=>{\n    return /*#__PURE__*/ _jsxs(DialogFooter, {\n        children: [\n            /*#__PURE__*/ _jsx(PrimaryButton, {\n                onClick: ()=>handleDeleteReview(),\n                text: context.loc('Rating_DeleteButton', 'Delete')\n            }),\n            /*#__PURE__*/ _jsx(PrimaryButton, {\n                onClick: ()=>handleSubmitReview(),\n                disabled: IsvReplyExists,\n                text: context.loc('Rating_UpdateButton', 'Update')\n            }),\n            /*#__PURE__*/ _jsx(DefaultButton, {\n                onClick: ()=>closeModal(),\n                text: context.loc('Cancel', 'Cancel')\n            })\n        ]\n    });\n};\nexport const ReviewActionModal = ({ context, title, appTitle, appPublisher, userEmail, userDisplayName, appIcon, curRating, curReviewTitle, curReviewContent, isAnonymous, userReview, closeModal, handleRatingChange, handleReviewTitleChange, handleReviewContentChange, handleSendEmailCheckbox, handleDisplayUserNameCheckbox, handleSubmitReview, handleDeleteReview })=>{\n    const dialogProps = getReviewModalDialogProps(title);\n    const isEditMode = !!userReview;\n    const IsvReplyExists = isEditMode && !!userReview.isv_reply;\n    return /*#__PURE__*/ _jsx(Dialog, {\n        hidden: false,\n        onDismiss: ()=>closeModal(),\n        dialogContentProps: dialogProps.dialogContentProps,\n        maxWidth: dialogProps.maxWidth,\n        modalProps: dialogProps.modalProps,\n        children: /*#__PURE__*/ _jsxs(Stack, {\n            tokens: {\n                childrenGap: 12\n            },\n            styles: {\n                root: {\n                    width: 500\n                }\n            },\n            children: [\n                renderOfferInfoSection(appIcon, appTitle, appPublisher),\n                IsvReplyExists && /*#__PURE__*/ _jsxs(\"div\", {\n                    className: \"ReviewActionModalEditComment\",\n                    children: [\n                        /*#__PURE__*/ _jsx(\"img\", {\n                            className: \"ReviewActionModalEditCommentImg\",\n                            src: greyExclamationMark\n                        }),\n                        /*#__PURE__*/ _jsx(Text, {\n                            className: \"ReviewActionModalEditCommentText\",\n                            children: context.loc('ReviewActionModal_EditingNotAllowedIsvReply', 'Editing this comment is disabled because it has already\\nreceived a response. You can still delete it.')\n                        })\n                    ]\n                }),\n                renderRatingSection(context, IsvReplyExists, curRating, handleRatingChange),\n                /*#__PURE__*/ _jsx(TextField, {\n                    label: context.loc('ReviewActionModal_ReviewTitle', 'Review title'),\n                    placeholder: context.loc('ReviewActionModal_ReviewTitle', 'Review title'),\n                    value: curReviewTitle,\n                    disabled: IsvReplyExists,\n                    inputClassName: \"reviewActionModalTitleTextField\",\n                    onChange: (event, newValue)=>handleReviewTitleChange(newValue)\n                }),\n                /*#__PURE__*/ _jsx(TextField, {\n                    label: context.loc('ReviewActionModal_ReviewDescription', 'Review description'),\n                    multiline: true,\n                    rows: 3,\n                    placeholder: context.loc('ReviewActionModal_ReviewDescriptionPlaceholder', 'Write your review'),\n                    value: curReviewContent,\n                    disabled: IsvReplyExists,\n                    onChange: (event, newValue)=>handleReviewContentChange(newValue)\n                }),\n                /*#__PURE__*/ _jsx(Checkbox, {\n                    label: context.locParams('ReviewActionModal_EmailCheckboxText', [\n                        appPublisher,\n                        userEmail\n                    ], `I agree to have ${appPublisher} email me at ${userEmail} about my feedback.`),\n                    disabled: IsvReplyExists,\n                    onChange: ()=>handleSendEmailCheckbox()\n                }),\n                /*#__PURE__*/ _jsx(Checkbox, {\n                    label: context.locParams('ReviewActionModal_DisplayNameCheckboxText', [\n                        userDisplayName\n                    ], `Post my review publicly as ${userDisplayName} (if this is unchecked, the review will be posted as 'Anonymous')`),\n                    checked: !isAnonymous,\n                    defaultChecked: true,\n                    disabled: IsvReplyExists,\n                    onChange: ()=>handleDisplayUserNameCheckbox()\n                }),\n                renderLinksSection(context),\n                isEditMode ? renderEditDialogButtonsSection(context, IsvReplyExists, handleDeleteReview, handleSubmitReview, closeModal) : renderWriteDialogButtonsSection(context, curRating, handleSubmitReview, closeModal)\n            ]\n        })\n    });\n};\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport * as React from 'react';\nimport { Dialog, DialogFooter, PrimaryButton, Link, Text } from '@fluentui/react';\nimport { getReviewModalDialogProps } from '@shared/utils/reviewsUtils';\nimport { Constants } from '@shared/utils/constants';\nexport const SubmitReviewResponseModal = ({ context, title, content, dialogIcon, shouldRenderLink, closeModal })=>{\n    const dialogProps = getReviewModalDialogProps(title);\n    return /*#__PURE__*/ _jsxs(Dialog, {\n        hidden: false,\n        onDismiss: ()=>closeModal(),\n        dialogContentProps: dialogProps.dialogContentProps,\n        maxWidth: dialogProps.maxWidth,\n        modalProps: dialogProps.modalProps,\n        children: [\n            /*#__PURE__*/ _jsxs(\"div\", {\n                className: \"ResponeDialogContent\",\n                children: [\n                    /*#__PURE__*/ _jsx(\"img\", {\n                        className: \"ResponeDialogImg\",\n                        src: dialogIcon\n                    }),\n                    /*#__PURE__*/ _jsxs(Text, {\n                        className: \"ResponeDialogText\",\n                        children: [\n                            content,\n                            ' ',\n                            shouldRenderLink && /*#__PURE__*/ _jsx(Link, {\n                                className: \"ResponeDialogLink\",\n                                target: \"_blank\",\n                                href: Constants.MicrosoftRatingReviewPolicy,\n                                children: context.loc('SubmitReviewResponseModal_Policy', 'View review policies')\n                            })\n                        ]\n                    })\n                ]\n            }),\n            /*#__PURE__*/ _jsx(DialogFooter, {\n                children: /*#__PURE__*/ _jsx(PrimaryButton, {\n                    onClick: ()=>closeModal(),\n                    text: context.loc('Rating_SuccessButton', 'Done')\n                })\n            })\n        ]\n    });\n};\n","function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport * as React from 'react';\nimport { DefaultButton, Dialog, DialogFooter, PrimaryButton, Spinner, SpinnerSize, Text } from '@fluentui/react';\nimport * as PropTypes from 'prop-types';\nimport { Constants } from '@shared/utils/constants';\nimport SpzaComponent from '../spzaComponent';\nimport { SpzaInstrumentService } from '../../services/telemetry/spza/spzaInstrument';\nimport { getWindow } from '@shared/services/window';\nimport { ReviewActionModal } from './reviewActionModal';\nimport successGreenV from '@shared/images/successGreenV.svg';\nimport redExclamationMark from '@shared/images/redExclamationMark.svg';\nimport { SubmitReviewResponseModal } from './submitReviewResponseModal';\nimport { getReviewModalDialogProps } from '@shared/utils/reviewsUtils';\nimport { logger } from '@src/logger';\nexport class RatingModal extends SpzaComponent {\n    initMode() {\n        var _this_props_payload_app_detailInformation;\n        if (this.props.payload.accessKey) {\n            this.auth = Constants.Headers.AccessKey;\n            this.accessKey = this.props.payload.accessKey;\n        } else {\n            if (this.props.userInfo.signedIn) {\n                this.auth = Constants.Headers.Authorization;\n                this.accessKey = this.props.userInfo.accessToken.spza;\n            } else {\n                this.closeModal();\n            }\n        }\n        if ((_this_props_payload_app_detailInformation = this.props.payload.app.detailInformation) === null || _this_props_payload_app_detailInformation === void 0 ? void 0 : _this_props_payload_app_detailInformation.LargeIconUri) {\n            this.iconURL = this.props.payload.app.detailInformation.LargeIconUri;\n        } else {\n            this.iconURL = this.props.payload.app.iconURL;\n        }\n    }\n    componentDidMount() {\n        const reviewsData = this.props.reviewsData;\n        const userReview = reviewsData.userReview;\n        if (userReview) {\n            var _userReview_customer_info;\n            var _userReview_customer_info_is_anonymous;\n            this.setState({\n                showMode: Constants.RatingShowMode.EditReview,\n                rating: userReview.rating,\n                title: userReview.title || '',\n                description: userReview.content || '',\n                submitted: userReview.updated_at,\n                isEdit: true,\n                consent: false,\n                showAnonymous: (_userReview_customer_info_is_anonymous = (_userReview_customer_info = userReview.customer_info) === null || _userReview_customer_info === void 0 ? void 0 : _userReview_customer_info.is_anonymous) !== null && _userReview_customer_info_is_anonymous !== void 0 ? _userReview_customer_info_is_anonymous : false\n            });\n        } else {\n            this.setState({\n                showMode: Constants.RatingShowMode.WriteNewReview,\n                isEdit: false\n            });\n        }\n    }\n    getReviewFormData() {\n        const { userReview } = this.props.reviewsData;\n        return {\n            offerId: this.props.payload.app.entityId,\n            rating: this.state.rating,\n            title: this.state.title,\n            content: this.state.description,\n            sendEmailConsent: this.state.consent,\n            isAnonymous: this.state.showAnonymous,\n            reviewId: userReview === null || userReview === void 0 ? void 0 : userReview.id\n        };\n    }\n    handleSubmit() {\n        this.setState({\n            showMode: Constants.RatingShowMode.Loading\n        });\n        const reviewData = this.getReviewFormData();\n        const { isEdit } = this.state;\n        const payload = {\n            page: getWindow().location.href,\n            action: Constants.Telemetry.Action.Click,\n            actionModifier: Constants.Telemetry.ActionModifier.RRSubmit,\n            appName: this.props.payload.app.entityId,\n            details: `${isEdit ? `A review of the app ${this.props.payload.app.entityId} was updated` : `A new review was inserted to the app ${this.props.payload.app.entityId}`}`\n        };\n        this.instrument.probe('logAndFlushTelemetryInfo', payload);\n        logger.info(payload.details, {\n            action: payload.action,\n            actionModifier: payload.actionModifier,\n            appName: payload.appName\n        });\n        const submitOperation$ = isEdit ? this.props.updateReview(reviewData) : this.props.submitReview(reviewData);\n        submitOperation$.then(()=>{\n            this.setState({\n                showMode: Constants.RatingShowMode.Success\n            });\n            if (this.auth === Constants.Headers.Authorization) {\n                this.props.setUserReviewStatus(true);\n            }\n            this.props.payload.callback('success');\n        }).catch((err)=>{\n            this.handleError(err);\n        });\n    }\n    handleDelete() {\n        this.setState({\n            showMode: Constants.RatingShowMode.Loading\n        });\n        const payload = {\n            page: getWindow().location.href,\n            action: Constants.Telemetry.Action.Click,\n            actionModifier: Constants.Telemetry.ActionModifier.RRDelete,\n            appName: this.props.payload.app.entityId\n        };\n        this.instrument.probe('logAndFlushTelemetryInfo', payload);\n        logger.info('', {\n            action: payload.action,\n            actionModifier: payload.actionModifier,\n            appName: payload.appName\n        });\n        this.props.deleteReview(this.getReviewFormData()).then(()=>{\n            this.setState({\n                showMode: Constants.RatingShowMode.DeleteSuccess\n            });\n            this.props.payload.callback('success');\n        }).catch((err)=>{\n            this.handleError(err);\n        });\n    }\n    handleError(err) {\n        var _err_response, _err_response1, _err_response_statusCode, _err_response2, _err_response3;\n        if (((_err_response = err.response) === null || _err_response === void 0 ? void 0 : _err_response.statusCode) === 400 && ((_err_response1 = err.response) === null || _err_response1 === void 0 ? void 0 : _err_response1.text) === Constants.ReviewsEnrichApiResponse.ContentViolation) {\n            this.setState({\n                showMode: Constants.RatingShowMode.ContentViolation\n            });\n        } else {\n            this.setState({\n                showMode: Constants.RatingShowMode.Error\n            });\n        }\n        const errorStatusCode = (_err_response2 = err.response) === null || _err_response2 === void 0 ? void 0 : (_err_response_statusCode = _err_response2.statusCode) === null || _err_response_statusCode === void 0 ? void 0 : _err_response_statusCode.toString();\n        const payload = {\n            page: getWindow().location.href,\n            action: Constants.Telemetry.Action.Click,\n            actionModifier: Constants.Telemetry.ActionModifier.RRSubmit,\n            details: `RatingModal got an error from the server. status code: ${errorStatusCode}, message: ${(_err_response3 = err.response) === null || _err_response3 === void 0 ? void 0 : _err_response3.text}.`\n        };\n        this.instrument.probe('logAndFlushTelemetryInfo', payload);\n        logger.info(payload.details, {\n            action: payload.action,\n            actionModifier: payload.actionModifier\n        });\n    }\n    closeModal() {\n        this.props.dismissModal();\n    }\n    handleRatingChange(ratingNumber) {\n        this.setState({\n            rating: ratingNumber\n        });\n    }\n    onChangeReviewTitle(titleText) {\n        this.setState({\n            title: titleText\n        });\n    }\n    onChangeReviewContent(contentText) {\n        this.setState({\n            description: contentText\n        });\n    }\n    setEnsureDeleteShowMode() {\n        this.setState({\n            showMode: Constants.RatingShowMode.EnsureDelete\n        });\n    }\n    onChangeConsent() {\n        this.setState({\n            consent: !this.state.consent\n        });\n    }\n    onChangeDisplayName() {\n        this.setState({\n            showAnonymous: !this.state.showAnonymous\n        });\n    }\n    renderImpl() {\n        if (this.state.showMode === Constants.RatingShowMode.Error) {\n            return /*#__PURE__*/ _jsx(SubmitReviewResponseModal, {\n                context: this.context,\n                title: this.context.loc('ReviewActionModal_ErrorDialogTitle', \"Your review wasn't published\"),\n                content: this.context.loc('ReviewActionModal_ErrorDialogText', 'There was a problem publishing the review because of technical issue.\\nTry posting your review again.'),\n                dialogIcon: redExclamationMark,\n                shouldRenderLink: false,\n                closeModal: this.closeModal.bind(this)\n            });\n        }\n        if (this.state.showMode === Constants.RatingShowMode.ContentViolation) {\n            return /*#__PURE__*/ _jsx(SubmitReviewResponseModal, {\n                context: this.context,\n                title: this.context.loc('ReviewActionModal_ErrorContentViolationDialogTitle', \"Your review couldn't be published\"),\n                content: this.context.loc('ReviewActionModal_ErrorContentViolationDialogText', \"We couldn't publish your review because we detected some offensive content\\nwhich violates Microsoft terms.\"),\n                dialogIcon: redExclamationMark,\n                shouldRenderLink: true,\n                closeModal: this.closeModal.bind(this)\n            });\n        }\n        if (this.state.showMode === Constants.RatingShowMode.Success) {\n            return /*#__PURE__*/ _jsx(SubmitReviewResponseModal, {\n                context: this.context,\n                title: this.context.loc('ReviewActionModal_SuccessDialogTitle', 'Thanks for your review'),\n                content: this.context.loc('ReviewActionModal_SuccessDialogText', 'Thanks for taking the time to give your feedback.\\nYour rating will be added to the average app rating shortly.'),\n                dialogIcon: successGreenV,\n                shouldRenderLink: false,\n                closeModal: this.closeModal.bind(this)\n            });\n        }\n        if (this.state.showMode === Constants.RatingShowMode.DeleteSuccess) {\n            return /*#__PURE__*/ _jsx(SubmitReviewResponseModal, {\n                context: this.context,\n                title: this.context.loc('ReviewActionModal_DeleteSuccessDialogTitle', 'Your review has been deleted'),\n                content: this.context.loc('ReviewActionModal_DeleteSuccessDialogText', 'We removed your review from the feed.'),\n                dialogIcon: successGreenV,\n                shouldRenderLink: false,\n                closeModal: this.closeModal.bind(this)\n            });\n        }\n        if (this.state.showMode === Constants.RatingShowMode.WriteNewReview) {\n            return /*#__PURE__*/ _jsx(ReviewActionModal, {\n                context: this.context,\n                title: this.context.loc('ReviewActionModal_WriteBoxTitle', 'Review this app'),\n                appTitle: this.props.payload.app.title,\n                appPublisher: this.props.payload.app.publisher,\n                userEmail: this.props.userInfo.email,\n                userDisplayName: this.props.userInfo.displayName,\n                appIcon: this.iconURL,\n                curRating: this.state.rating,\n                curReviewTitle: this.state.title,\n                curReviewContent: this.state.description,\n                isAnonymous: this.state.showAnonymous,\n                userReview: this.props.reviewsData.userReview,\n                closeModal: this.closeModal.bind(this),\n                handleRatingChange: this.handleRatingChange.bind(this),\n                handleReviewTitleChange: this.onChangeReviewTitle.bind(this),\n                handleReviewContentChange: this.onChangeReviewContent.bind(this),\n                handleSendEmailCheckbox: this.onChangeConsent.bind(this),\n                handleDisplayUserNameCheckbox: this.onChangeDisplayName.bind(this),\n                handleSubmitReview: this.handleSubmit.bind(this),\n                handleDeleteReview: this.setEnsureDeleteShowMode.bind(this)\n            });\n        }\n        if (this.state.showMode === Constants.RatingShowMode.EditReview) {\n            return /*#__PURE__*/ _jsx(ReviewActionModal, {\n                context: this.context,\n                title: this.context.loc('ReviewActionModal_EditBoxTitle', 'Edit your review'),\n                appTitle: this.props.payload.app.title,\n                appPublisher: this.props.payload.app.publisher,\n                userEmail: this.props.userInfo.email,\n                userDisplayName: this.props.userInfo.displayName,\n                appIcon: this.iconURL,\n                curRating: this.state.rating,\n                curReviewTitle: this.state.title,\n                curReviewContent: this.state.description,\n                isAnonymous: this.state.showAnonymous,\n                userReview: this.props.reviewsData.userReview,\n                closeModal: this.closeModal.bind(this),\n                handleRatingChange: this.handleRatingChange.bind(this),\n                handleReviewTitleChange: this.onChangeReviewTitle.bind(this),\n                handleReviewContentChange: this.onChangeReviewContent.bind(this),\n                handleSendEmailCheckbox: this.onChangeConsent.bind(this),\n                handleDisplayUserNameCheckbox: this.onChangeDisplayName.bind(this),\n                handleSubmitReview: this.handleSubmit.bind(this),\n                handleDeleteReview: this.setEnsureDeleteShowMode.bind(this)\n            });\n        }\n        if (this.state.showMode === Constants.RatingShowMode.EnsureDelete) {\n            const dialogProps = getReviewModalDialogProps(this.context.loc('ReviewActionModal_EnsureDeleteTitle', 'Delete your review?'));\n            dialogProps.modalProps.styles.main.minHeight = 150;\n            return /*#__PURE__*/ _jsxs(Dialog, {\n                hidden: false,\n                onDismiss: ()=>this.closeModal(),\n                dialogContentProps: dialogProps.dialogContentProps,\n                maxWidth: dialogProps.maxWidth,\n                modalProps: dialogProps.modalProps,\n                children: [\n                    /*#__PURE__*/ _jsx(Text, {\n                        className: \"ResponeDialogContent\",\n                        children: this.context.loc('ReviewActionModal_EnsureDeleteDialogText', \"It won't appear in the reviews feed and won't be available any longer.\")\n                    }),\n                    /*#__PURE__*/ _jsxs(DialogFooter, {\n                        children: [\n                            /*#__PURE__*/ _jsx(PrimaryButton, {\n                                onClick: ()=>this.handleDelete(),\n                                text: this.context.loc('Rating_DeleteButton', 'Delete')\n                            }),\n                            /*#__PURE__*/ _jsx(DefaultButton, {\n                                onClick: ()=>this.closeModal(),\n                                text: this.context.loc('Cancel', 'Cancel')\n                            })\n                        ]\n                    })\n                ]\n            });\n        }\n        return /*#__PURE__*/ _jsx(Spinner, {\n            className: \"ratingModalLoading\",\n            size: SpinnerSize.large,\n            label: this.context.loc('AppDetail_LoadingText', 'Loading...'),\n            ariaLive: \"assertive\"\n        });\n    }\n    constructor(props, context){\n        super(props, context), _define_property(this, \"context\", void 0), _define_property(this, \"auth\", void 0), _define_property(this, \"iconURL\", void 0), _define_property(this, \"accessKey\", void 0), _define_property(this, \"instrument\", SpzaInstrumentService.getProvider());\n        this.context = context;\n        this.initMode();\n        this.state = {\n            showMode: Constants.RatingShowMode.Loading,\n            rating: null,\n            description: '',\n            isEdit: false,\n            title: '',\n            submitted: '',\n            consent: false,\n            showAnonymous: false\n        };\n    }\n}\nRatingModal.contextTypes = {\n    loc: PropTypes.func,\n    locParams: PropTypes.func\n};\n","import { connect } from 'react-redux';\nimport { RatingModal as RatingModalComponent } from '@shared/components/modals/ratingModal';\nimport { submitReview, updateReview, deleteReview } from '@shared/actions/thunkActions';\nexport const mapStateToProps = (state)=>{\n    return {\n        userInfo: state.users,\n        reviewsData: state.apps.appReviewsData\n    };\n};\nexport const mapDispatchToProps = (dispatch)=>{\n    return {\n        submitReview: (reviewFormData)=>dispatch(submitReview(reviewFormData)),\n        deleteReview: (reviewFormData)=>dispatch(deleteReview(reviewFormData)),\n        updateReview: (reviewFormData)=>dispatch(updateReview(reviewFormData))\n    };\n};\nexport const RatingModal = connect(mapStateToProps, mapDispatchToProps)(RatingModalComponent);\n","function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport SpzaComponent from './../spzaComponent';\nimport { CommunityItemType } from '@shared/Models';\nimport { Constants } from '../../utils/constants';\nimport { RichTextDropDown } from '../richTextDropDown';\nimport { SpzaInstrumentService } from '../../services/telemetry/spza/spzaInstrument';\nimport { getWindow } from '../../services/window';\nimport { isEmailValid, focusElement } from '../../utils/appUtils';\nimport classNames from 'classnames';\nimport { logger } from '@src/logger';\nimport checkLarge from '@shared/images/checkLarge.png';\nclass ReportAbuseModal extends SpzaComponent {\n    componentDidMount() {\n        focusElement(Constants.SearchBy.Id, Constants.ReportAbuseDialog.dropdownHTMLIdName);\n    }\n    getDropDownOptions() {\n        if (this.textDropDownItems) {\n            return this.textDropDownItems;\n        }\n        this.textDropDownItems = Constants.Avert.ReportAbuseCategories.map((abuseCategory)=>{\n            return {\n                text: this.context.loc(abuseCategory.locKey),\n                value: abuseCategory.dropDownValue\n            };\n        });\n        return this.textDropDownItems;\n    }\n    onCommentsChange(event) {\n        const comment = event.target.value;\n        this.setState((prevState)=>{\n            return {\n                category: prevState.category,\n                additionalComments: comment,\n                successMode: prevState.successMode,\n                reviewContent: prevState.reviewContent,\n                email: prevState.email,\n                validEmail: prevState.validEmail\n            };\n        });\n    }\n    onEmailChange(event) {\n        const email = event.target.value;\n        this.setState({\n            email: email\n        });\n        if (!email || isEmailValid(this.state.email)) {\n            this.setState({\n                validEmail: true\n            });\n        } else {\n            this.setState({\n                validEmail: false\n            });\n        }\n    }\n    setSuccessState() {\n        this.setState((prevState)=>{\n            return {\n                category: prevState.category,\n                additionalComments: prevState.additionalComments,\n                reviewContent: prevState.reviewContent,\n                successMode: true,\n                email: prevState.email,\n                validEmail: prevState.validEmail\n            };\n        });\n    }\n    getReportCategory(selectedValue) {\n        const abuseCategory = Constants.Avert.ReportAbuseCategories.filter((category)=>{\n            return category.dropDownValue === selectedValue;\n        });\n        return abuseCategory && abuseCategory[0] ? abuseCategory[0].avertIdentifier : Constants.Avert.ReportAbuseCategories[0].avertIdentifier;\n    }\n    handleSubmit() {\n        const payload = {\n            page: getWindow().location.href,\n            action: Constants.Telemetry.Action.Click,\n            actionModifier: Constants.Telemetry.ActionModifier.ReportModal,\n            appName: this.props.appId,\n            details: JSON.stringify({\n                category: this.state.category.value,\n                comments: this.state.additionalComments,\n                reviewId: this.props.reviewId,\n                reviewSource: this.props.reviewSource,\n                reviewContent: this.state.reviewContent,\n                email: this.state.email\n            })\n        };\n        this.instrument.probe('logAndFlushTelemetryInfo', payload);\n        logger.info(payload.details, {\n            action: payload.action,\n            actionModifier: payload.actionModifier,\n            appName: payload.appName\n        });\n        const { storefrontName, appId, reviewId } = this.props;\n        const postItemReport = {\n            category: this.getReportCategory(this.state.category.value),\n            source: storefrontName,\n            offerId: appId,\n            itemId: reviewId,\n            comments: this.state.additionalComments,\n            itemType: CommunityItemType.Review\n        };\n        this.props.reportReview(postItemReport);\n        this.setSuccessState();\n    }\n    setFocusInsideDialog(e) {\n        if (e.shiftKey && e.keyCode === Constants.SystemKey.Tab) {\n            const submitButton = document.getElementById('reportAbuseModalSubmitButton');\n            window.setTimeout(function() {\n                submitButton.focus();\n            }, 0);\n        }\n    }\n    getCancelButton() {\n        return /*#__PURE__*/ _jsx(\"div\", {\n            className: \"toolBar\",\n            children: /*#__PURE__*/ _jsx(\"button\", {\n                // eslint-disable-next-line react/forbid-dom-props\n                id: \"cancelButton\",\n                \"aria-label\": \"close\",\n                className: \"cancel\",\n                onClick: this.props.dismissModal.bind(this),\n                onKeyDown: (event)=>{\n                    this.setFocusInsideDialog(event);\n                },\n                children: /*#__PURE__*/ _jsx(\"span\", {\n                    className: \"c-glyph\"\n                })\n            })\n        });\n    }\n    getRatingCategoryDropDown() {\n        return /*#__PURE__*/ _jsx(RichTextDropDown, {\n            className: \"categoryDropDown\",\n            id: Constants.ReportAbuseDialog.dropdownHTMLIdName,\n            options: this.getDropDownOptions(),\n            value: this.state.category,\n            dropdownLabel: this.context.loc('ReportModal_Category_Label'),\n            onChangeHandle: (option)=>this.setState((prevState)=>{\n                    return {\n                        category: option,\n                        additionalComments: prevState.additionalComments,\n                        reviewContent: prevState.reviewContent,\n                        successMode: prevState.successMode,\n                        email: prevState.email,\n                        validEmail: prevState.validEmail\n                    };\n                })\n        });\n    }\n    getReviewTitle() {\n        return /*#__PURE__*/ _jsx(\"div\", {\n            className: \"reviewTitleSection\",\n            children: /*#__PURE__*/ _jsx(\"div\", {\n                className: \"itemLabel\",\n                children: this.context.loc('ReportModal_ReviewTitle_Label') + ': ' + this.props.reviewTitle\n            })\n        });\n    }\n    renderImpl() {\n        if (this.state.successMode) {\n            return /*#__PURE__*/ _jsxs(\"div\", {\n                role: \"dialog\",\n                \"aria-label\": \"rating and review dialog is now open\",\n                className: \"reportAbuseModalClass\",\n                children: [\n                    this.getCancelButton(),\n                    /*#__PURE__*/ _jsxs(\"div\", {\n                        className: \"successDialog\",\n                        children: [\n                            /*#__PURE__*/ _jsx(\"div\", {\n                                className: \"successHeader\",\n                                children: this.context.loc('ReportModal_Success_Done_Text')\n                            }),\n                            /*#__PURE__*/ _jsx(\"div\", {\n                                className: \"successCheck\",\n                                children: /*#__PURE__*/ _jsx(\"img\", {\n                                    src: checkLarge\n                                })\n                            }),\n                            /*#__PURE__*/ _jsx(\"div\", {\n                                className: \"successFooter\",\n                                children: /*#__PURE__*/ _jsx(\"button\", {\n                                    name: \"button\",\n                                    className: \"c-button requestButton\",\n                                    type: \"submit\",\n                                    \"data-bi-id\": Constants.JsllCTAId.Done,\n                                    \"data-bi-area\": \"Report Abuse Dialog\",\n                                    onClick: this.props.dismissModal.bind(this),\n                                    children: this.context.loc('ReportModal_Success_Done_Label')\n                                })\n                            })\n                        ]\n                    })\n                ]\n            });\n        }\n        const reportModalClassName = classNames({\n            reportAbuseModalClass: true,\n            invalidReviewMode: this.state.category.value === Constants.Avert.ReportAbuseCategories[3].dropDownValue,\n            invalidEmailText: this.state.category.value === Constants.Avert.ReportAbuseCategories[3].dropDownValue && !this.state.validEmail\n        });\n        return /*#__PURE__*/ _jsxs(\"div\", {\n            role: \"dialog\",\n            \"aria-label\": \"report abuse modal is now open\",\n            className: reportModalClassName,\n            children: [\n                this.getCancelButton(),\n                /*#__PURE__*/ _jsx(\"div\", {\n                    className: \"title\",\n                    children: this.context.loc('ReportModal_Title_Text')\n                }),\n                this.getReviewTitle(),\n                /*#__PURE__*/ _jsxs(\"div\", {\n                    className: \"categorySection\",\n                    children: [\n                        /*#__PURE__*/ _jsx(\"div\", {\n                            children: /*#__PURE__*/ _jsx(\"div\", {\n                                className: \"itemLabel\",\n                                children: this.context.loc('ReportModal_Category_Label')\n                            })\n                        }),\n                        this.getRatingCategoryDropDown()\n                    ]\n                }),\n                /*#__PURE__*/ _jsxs(\"div\", {\n                    className: \"commentsSection\",\n                    children: [\n                        /*#__PURE__*/ _jsx(\"div\", {\n                            className: \"itemLabel\",\n                            children: this.context.loc('ReportModal_AdditionalComments_Label')\n                        }),\n                        /*#__PURE__*/ _jsx(\"div\", {\n                            className: \"c-textarea\",\n                            children: /*#__PURE__*/ _jsx(\"textarea\", {\n                                // eslint-disable-next-line react/forbid-dom-props\n                                id: \"additionalComments\",\n                                \"aria-label\": this.context.loc('ReportModal_AdditionalComments_Label'),\n                                className: \"f-no-resize\",\n                                rows: 3,\n                                maxLength: 400,\n                                onChange: this.onCommentsChange.bind(this),\n                                role: \"textbox\"\n                            })\n                        })\n                    ]\n                }),\n                this.state.category.value === Constants.Avert.ReportAbuseCategories[3].dropDownValue ? /*#__PURE__*/ _jsxs(\"div\", {\n                    className: \"emailSection\",\n                    children: [\n                        /*#__PURE__*/ _jsx(\"div\", {\n                            className: \"itemLabel\",\n                            children: this.context.loc('ReportModal_Email_Label')\n                        }),\n                        /*#__PURE__*/ _jsx(\"div\", {\n                            className: \"emailInputContainer\",\n                            children: /*#__PURE__*/ _jsx(\"input\", {\n                                // eslint-disable-next-line react/forbid-dom-props\n                                id: \"emailSection\",\n                                \"aria-label\": this.context.loc('ReportModal_Email_Label'),\n                                className: this.state.validEmail ? '' : 'invalidEmailAddress',\n                                onChange: this.onEmailChange.bind(this)\n                            })\n                        }),\n                        this.state.validEmail ? null : /*#__PURE__*/ _jsx(\"span\", {\n                            className: \"invalidEmailText\",\n                            children: this.context.loc('Feedback_invalidEmail')\n                        })\n                    ]\n                }) : null,\n                /*#__PURE__*/ _jsx(\"div\", {\n                    className: \"submitSection\",\n                    children: /*#__PURE__*/ _jsx(\"button\", {\n                        name: \"submitButton\",\n                        // eslint-disable-next-line react/forbid-dom-props\n                        id: \"reportAbuseModalSubmitButton\",\n                        className: \"c-button\",\n                        disabled: this.state.category.value === Constants.Avert.ReportAbuseCategories[3].dropDownValue && !this.state.additionalComments || this.state.category.value === Constants.Avert.ReportAbuseCategories[3].dropDownValue && !this.state.validEmail,\n                        role: \"button\",\n                        type: \"submit\",\n                        \"aria-label\": this.context.loc('NPS_SubmitButton'),\n                        onClick: ()=>this.handleSubmit(),\n                        children: this.context.loc('ReportModal_SubmitButton_Label')\n                    })\n                })\n            ]\n        });\n    }\n    constructor(props, context){\n        super(props, context), _define_property(this, \"context\", void 0), _define_property(this, \"textDropDownItems\", void 0), _define_property(this, \"instrument\", void 0);\n        this.context = context;\n        this.instrument = SpzaInstrumentService.getProvider();\n        this.state = {\n            category: this.getDropDownOptions()[0],\n            successMode: false,\n            reviewContent: '',\n            additionalComments: '',\n            validEmail: true,\n            email: ''\n        };\n    }\n}\nexport { ReportAbuseModal as default };\nReportAbuseModal.contextTypes = {\n    loc: PropTypes.func\n};\n","import * as React from 'react';\nimport ReportAbuseModalComp from '../../components/modals/reportAbuseModal';\nimport { connect } from 'react-redux';\nimport { reportItem } from '@shared/actions/thunkActions';\nexport const mapStateToProps = (state, ownProps)=>{\n    const { appId, reviewId, reviewTitle, reviewSource, dismissModal } = ownProps;\n    return {\n        appId,\n        reviewId,\n        reviewTitle,\n        reviewSource,\n        dismissModal,\n        storefrontName: state.config.storefrontName\n    };\n};\nexport const mapDispatchToProps = (dispatch)=>{\n    return {\n        reportReview: (report)=>dispatch(reportItem(report))\n    };\n};\nexport const ReportAbuseModal = connect(mapStateToProps, mapDispatchToProps)(ReportAbuseModalComp);\n","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n    try {\n        var info = gen[key](arg);\n        var value = info.value;\n    } catch (error) {\n        reject(error);\n        return;\n    }\n    if (info.done) {\n        resolve(value);\n    } else {\n        Promise.resolve(value).then(_next, _throw);\n    }\n}\nfunction _async_to_generator(fn) {\n    return function() {\n        var self = this, args = arguments;\n        return new Promise(function(resolve, reject) {\n            var gen = fn.apply(self, args);\n            function _next(value) {\n                asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n            }\n            function _throw(err) {\n                asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n            }\n            _next(undefined);\n        });\n    };\n}\nfunction _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nfunction _object_spread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        var ownKeys = Object.keys(source);\n        if (typeof Object.getOwnPropertySymbols === \"function\") {\n            ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n            }));\n        }\n        ownKeys.forEach(function(key) {\n            _define_property(target, key, source[key]);\n        });\n    }\n    return target;\n}\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport React, { useState, useEffect } from 'react';\nimport { DefaultButton, Dialog, DialogFooter, Icon, Link, mergeStyleSets, PrimaryButton, Spinner, SpinnerSize, Stack, Text } from '@fluentui/react';\nimport * as PropTypes from 'prop-types';\nimport { Constants } from '@shared/utils/constants';\nimport { getReviewCommentsModalDialogProps, launchTelemetry } from '@shared/utils/reviewsUtils';\nimport { logger } from '@src/logger';\nimport { SharedColors } from '@fluentui/theme';\nconst ReviewCommentModalStyles = mergeStyleSets({\n    infoIcon: {\n        color: SharedColors.red20,\n        fontSize: '16px'\n    },\n    loader: {\n        position: 'fixed',\n        left: '50%',\n        top: '50%',\n        transform: 'translate(-50%, -50%)',\n        zIndex: 2200\n    }\n});\nexport function ReviewCommentModal({ payload, onDeleteComment, onEditComment, dismissModal }, context) {\n    const { modalMode: initialModalMode } = payload;\n    const [modalMode, setModalMode] = useState(initialModalMode);\n    useEffect(()=>{\n        // Update the current modal mode state if the prop value changes\n        setModalMode(initialModalMode);\n    }, [\n        initialModalMode\n    ]);\n    const dismissModalWithTelemetry = ()=>{\n        launchTelemetry(Constants.Telemetry.Action.Close, Constants.Telemetry.ActionModifier.ReviewItemCommentDialog, {\n            payload: payload.actionPayload\n        });\n        logger.info(JSON.stringify({\n            payload: payload.actionPayload\n        }), {\n            action: Constants.Telemetry.Action.Close,\n            actionModifier: Constants.Telemetry.ActionModifier.ReviewItemCommentDialog\n        });\n        dismissModal();\n    };\n    const onInnerDialogDelete = /*#__PURE__*/ function() {\n        var _ref = _async_to_generator(function*() {\n            try {\n                launchTelemetry(Constants.Telemetry.Action.Submitting, Constants.Telemetry.ActionModifier.ReviewItemCommentDialogDelete, {\n                    payload: payload.actionPayload,\n                    commentId: payload.actionPayload.commentId,\n                    appId: payload.actionPayload.offerId,\n                    reviewId: payload.actionPayload.reviewId\n                });\n                logger.info(JSON.stringify({\n                    payload: payload.actionPayload,\n                    commentId: payload.actionPayload.commentId,\n                    appId: payload.actionPayload.offerId,\n                    reviewId: payload.actionPayload.reviewId\n                }), {\n                    action: Constants.Telemetry.Action.Submitting,\n                    actionModifier: Constants.Telemetry.ActionModifier.ReviewItemCommentDialogDelete\n                });\n                setModalMode(Constants.Reviews.ReviewCommentModalMode.Loading);\n                const { offerId, reviewId, commentId, isNewlyAddedComment } = payload.actionPayload;\n                yield onDeleteComment({\n                    offerId,\n                    reviewId,\n                    commentId,\n                    isNewlyAddedComment\n                });\n                dismissModalWithTelemetry();\n                launchTelemetry(Constants.Telemetry.Action.Submitted, Constants.Telemetry.ActionModifier.ReviewItemCommentDialogDelete, {\n                    payload: payload.actionPayload,\n                    commentId: payload.actionPayload.commentId,\n                    appId: payload.actionPayload.offerId,\n                    reviewId: payload.actionPayload.reviewId\n                });\n                logger.info(JSON.stringify({\n                    payload: payload.actionPayload,\n                    commentId: payload.actionPayload.commentId,\n                    appId: payload.actionPayload.offerId,\n                    reviewId: payload.actionPayload.reviewId\n                }), {\n                    action: Constants.Telemetry.Action.Submitted,\n                    actionModifier: Constants.Telemetry.ActionModifier.ReviewItemCommentDialogDelete\n                });\n            } catch (e) {\n                var _payload_actionPayload, _payload_actionPayload1, _payload_actionPayload2, _payload_actionPayload3, _payload_actionPayload4, _payload_actionPayload5;\n                setModalMode(Constants.Reviews.ReviewCommentModalMode.DeleteError);\n                launchTelemetry(Constants.Telemetry.Action.SubmitError, Constants.Telemetry.ActionModifier.ReviewItemCommentDialogDelete, {\n                    payload: payload.actionPayload,\n                    commentId: (_payload_actionPayload = payload.actionPayload) === null || _payload_actionPayload === void 0 ? void 0 : _payload_actionPayload.commentId,\n                    appId: (_payload_actionPayload1 = payload.actionPayload) === null || _payload_actionPayload1 === void 0 ? void 0 : _payload_actionPayload1.offerId,\n                    reviewId: (_payload_actionPayload2 = payload.actionPayload) === null || _payload_actionPayload2 === void 0 ? void 0 : _payload_actionPayload2.reviewId,\n                    error: `Failed deleting a review comment from the review comment modal, error: ${e}`\n                });\n                logger.error(JSON.stringify({\n                    payload: payload.actionPayload,\n                    commentId: (_payload_actionPayload3 = payload.actionPayload) === null || _payload_actionPayload3 === void 0 ? void 0 : _payload_actionPayload3.commentId,\n                    appId: (_payload_actionPayload4 = payload.actionPayload) === null || _payload_actionPayload4 === void 0 ? void 0 : _payload_actionPayload4.offerId,\n                    reviewId: (_payload_actionPayload5 = payload.actionPayload) === null || _payload_actionPayload5 === void 0 ? void 0 : _payload_actionPayload5.reviewId,\n                    error: `Failed deleting a review comment from the review comment modal, error: ${e}`\n                }), {\n                    action: Constants.Telemetry.Action.SubmitError,\n                    actionModifier: Constants.Telemetry.ActionModifier.ReviewItemCommentDialogDelete\n                });\n            }\n        });\n        return function onInnerDialogDelete() {\n            return _ref.apply(this, arguments);\n        };\n    }();\n    const onInnerDialogUpdate = /*#__PURE__*/ function() {\n        var _ref = _async_to_generator(function*() {\n            try {\n                launchTelemetry(Constants.Telemetry.Action.Submitting, Constants.Telemetry.ActionModifier.ReviewItemCommentDialogUpdate, {\n                    payload: payload.actionPayload,\n                    commentId: payload.actionPayload.commentId,\n                    appId: payload.actionPayload.offerId,\n                    reviewId: payload.actionPayload.reviewId\n                });\n                logger.info(JSON.stringify({\n                    payload: payload.actionPayload,\n                    commentId: payload.actionPayload.commentId,\n                    appId: payload.actionPayload.offerId,\n                    reviewId: payload.actionPayload.reviewId\n                }), {\n                    action: Constants.Telemetry.Action.Submitting,\n                    actionModifier: Constants.Telemetry.ActionModifier.ReviewItemCommentDialogUpdate\n                });\n                setModalMode(Constants.Reviews.ReviewCommentModalMode.Loading);\n                const { offerId, reviewId, commentId, commentContent, isNewlyAddedComment } = payload.actionPayload;\n                yield onEditComment({\n                    offerId,\n                    reviewId,\n                    commentId,\n                    commentContent,\n                    isNewlyAddedComment\n                });\n                dismissModalWithTelemetry();\n                launchTelemetry(Constants.Telemetry.Action.Submitted, Constants.Telemetry.ActionModifier.ReviewItemCommentDialogUpdate, {\n                    payload: payload.actionPayload,\n                    commentId: payload.actionPayload.commentId,\n                    appId: payload.actionPayload.offerId,\n                    reviewId: payload.actionPayload.reviewId\n                });\n                logger.info(JSON.stringify({\n                    payload: payload.actionPayload,\n                    commentId: payload.actionPayload.commentId,\n                    appId: payload.actionPayload.offerId,\n                    reviewId: payload.actionPayload.reviewId\n                }), {\n                    action: Constants.Telemetry.Action.Submitted,\n                    actionModifier: Constants.Telemetry.ActionModifier.ReviewItemCommentDialogUpdate\n                });\n            } catch (e) {\n                var _payload_actionPayload, _payload_actionPayload1, _payload_actionPayload2, _payload_actionPayload3, _payload_actionPayload4, _payload_actionPayload5;\n                setModalMode(Constants.Reviews.ReviewCommentModalMode.UpdateError);\n                launchTelemetry(Constants.Telemetry.Action.SubmitError, Constants.Telemetry.ActionModifier.ReviewItemCommentDialogUpdate, {\n                    payload: payload.actionPayload,\n                    commentId: (_payload_actionPayload = payload.actionPayload) === null || _payload_actionPayload === void 0 ? void 0 : _payload_actionPayload.commentId,\n                    appId: (_payload_actionPayload1 = payload.actionPayload) === null || _payload_actionPayload1 === void 0 ? void 0 : _payload_actionPayload1.offerId,\n                    reviewId: (_payload_actionPayload2 = payload.actionPayload) === null || _payload_actionPayload2 === void 0 ? void 0 : _payload_actionPayload2.reviewId,\n                    error: `Failed updating a review comment from the review comment modal, error: ${e}`\n                });\n                logger.error(JSON.stringify({\n                    payload: payload.actionPayload,\n                    commentId: (_payload_actionPayload3 = payload.actionPayload) === null || _payload_actionPayload3 === void 0 ? void 0 : _payload_actionPayload3.commentId,\n                    appId: (_payload_actionPayload4 = payload.actionPayload) === null || _payload_actionPayload4 === void 0 ? void 0 : _payload_actionPayload4.offerId,\n                    reviewId: (_payload_actionPayload5 = payload.actionPayload) === null || _payload_actionPayload5 === void 0 ? void 0 : _payload_actionPayload5.reviewId,\n                    error: `Failed updating a review comment from the review comment modal, error: ${e}`\n                }), {\n                    action: Constants.Telemetry.Action.SubmitError,\n                    actionModifier: Constants.Telemetry.ActionModifier.ReviewItemCommentDialogUpdate\n                });\n            }\n        });\n        return function onInnerDialogUpdate() {\n            return _ref.apply(this, arguments);\n        };\n    }();\n    const innerDialogProps = {\n        onDelete: onInnerDialogDelete,\n        onUpdate: onInnerDialogUpdate,\n        dismissModal: dismissModalWithTelemetry,\n        context,\n        payload\n    };\n    switch(modalMode){\n        case Constants.Reviews.ReviewCommentModalMode.ConfirmUpdate:\n            return /*#__PURE__*/ _jsx(ReviewCommentModalConfirmUpdateDialog, _object_spread({}, innerDialogProps));\n        case Constants.Reviews.ReviewCommentModalMode.ConfirmDelete:\n            return /*#__PURE__*/ _jsx(ReviewCommentModalConfirmDeleteDialog, _object_spread({}, innerDialogProps));\n        case Constants.Reviews.ReviewCommentModalMode.UpdateError:\n            return /*#__PURE__*/ _jsx(ReviewCommentModalUpdateErrorDialog, _object_spread({}, innerDialogProps));\n        case Constants.Reviews.ReviewCommentModalMode.DeleteError:\n            return /*#__PURE__*/ _jsx(ReviewCommentModalDeleteErrorDialog, _object_spread({}, innerDialogProps));\n        case Constants.Reviews.ReviewCommentModalMode.ContentViolation:\n            return /*#__PURE__*/ _jsx(ReviewCommentModalContentViolationDialog, _object_spread({}, innerDialogProps));\n        case Constants.Reviews.ReviewCommentModalMode.CreateError:\n            return /*#__PURE__*/ _jsx(ReviewCommentModalCreateErrorDialog, _object_spread({}, innerDialogProps));\n        default:\n            return /*#__PURE__*/ _jsx(Spinner, {\n                className: ReviewCommentModalStyles.loader,\n                size: SpinnerSize.large,\n                label: context.loc('AppDetail_LoadingText', 'Loading...'),\n                ariaLive: \"assertive\"\n            });\n    }\n}\nReviewCommentModal.contextTypes = {\n    loc: PropTypes.func\n};\nexport function ReviewCommentModalConfirmUpdateDialog({ context, onUpdate, dismissModal, payload }) {\n    const { modalProps, dialogContentProps, maxWidth } = getReviewCommentsModalDialogProps(context.loc('ReviewCommentActionModal_ConfirmUpdate_Title', 'Update your comment?'));\n    return /*#__PURE__*/ _jsxs(Dialog, {\n        hidden: !payload.showModal,\n        onDismiss: dismissModal,\n        dialogContentProps: dialogContentProps,\n        modalProps: modalProps,\n        maxWidth: maxWidth,\n        children: [\n            /*#__PURE__*/ _jsx(Text, {\n                children: context.loc('ReviewCommentActionModal_ConfirmUpdate_Description', 'Your comment will be updated.')\n            }),\n            /*#__PURE__*/ _jsxs(DialogFooter, {\n                children: [\n                    /*#__PURE__*/ _jsx(PrimaryButton, {\n                        onClick: onUpdate,\n                        text: context.loc('ReviewCommentActionModal_ConfirmUpdate_Submit_Button_Label', 'Update')\n                    }),\n                    /*#__PURE__*/ _jsx(DefaultButton, {\n                        onClick: dismissModal,\n                        text: context.loc('ReviewCommentActionModal_ConfirmUpdate_Cancel_Button_Label', 'Discard')\n                    })\n                ]\n            })\n        ]\n    });\n}\nexport function ReviewCommentModalConfirmDeleteDialog({ context, onDelete, dismissModal, payload }) {\n    const { modalProps, dialogContentProps, maxWidth } = getReviewCommentsModalDialogProps(context.loc('ReviewCommentActionModal_ConfirmDelete_Title', 'Delete your comment?'));\n    return /*#__PURE__*/ _jsxs(Dialog, {\n        hidden: !payload.showModal,\n        onDismiss: dismissModal,\n        dialogContentProps: dialogContentProps,\n        modalProps: modalProps,\n        maxWidth: maxWidth,\n        children: [\n            /*#__PURE__*/ _jsx(Stack, {\n                horizontal: true,\n                tokens: {\n                    childrenGap: 10\n                },\n                verticalAlign: \"center\",\n                children: /*#__PURE__*/ _jsx(Text, {\n                    children: context.loc('ReviewCommentActionModal_ConfirmDelete_Description', \"It won't appear in the reviews feed and won’t be available any longer.\")\n                })\n            }),\n            /*#__PURE__*/ _jsxs(DialogFooter, {\n                children: [\n                    /*#__PURE__*/ _jsx(PrimaryButton, {\n                        onClick: onDelete,\n                        text: context.loc('ReviewCommentActionModal_ConfirmDelete_Submit_Button_Label', 'Delete')\n                    }),\n                    /*#__PURE__*/ _jsx(DefaultButton, {\n                        onClick: dismissModal,\n                        text: context.loc('ReviewCommentActionModal_ConfirmDelete_Cancel_Button_Label', 'Cancel')\n                    })\n                ]\n            })\n        ]\n    });\n}\nexport function ReviewCommentModalUpdateErrorDialog({ context, dismissModal, payload }) {\n    const { modalProps, dialogContentProps, maxWidth } = getReviewCommentsModalDialogProps(context.loc('ReviewCommentActionModal_UpdateError_Title', \"Couldn't update your comment\"));\n    return /*#__PURE__*/ _jsxs(Dialog, {\n        hidden: !payload.showModal,\n        onDismiss: dismissModal,\n        dialogContentProps: dialogContentProps,\n        modalProps: modalProps,\n        maxWidth: maxWidth,\n        children: [\n            /*#__PURE__*/ _jsxs(Stack, {\n                horizontal: true,\n                tokens: {\n                    childrenGap: 10\n                },\n                children: [\n                    /*#__PURE__*/ _jsx(Icon, {\n                        iconName: \"info\",\n                        className: ReviewCommentModalStyles.infoIcon\n                    }),\n                    /*#__PURE__*/ _jsx(Text, {\n                        children: context.loc('ReviewCommentActionModal_UpdateError_Description', 'There was a problem updating your comment. Please try again.')\n                    })\n                ]\n            }),\n            /*#__PURE__*/ _jsx(DialogFooter, {\n                children: /*#__PURE__*/ _jsx(PrimaryButton, {\n                    onClick: dismissModal,\n                    text: context.loc('ReviewCommentActionModal_UpdateError_Cancel_Button_Label', 'Close')\n                })\n            })\n        ]\n    });\n}\nexport function ReviewCommentModalDeleteErrorDialog({ context, dismissModal, payload }) {\n    const { modalProps, dialogContentProps, maxWidth } = getReviewCommentsModalDialogProps(context.loc('ReviewCommentActionModal_DeleteError_Title', \"Couldn't delete your comment\"));\n    return /*#__PURE__*/ _jsxs(Dialog, {\n        hidden: !payload.showModal,\n        onDismiss: dismissModal,\n        dialogContentProps: dialogContentProps,\n        modalProps: modalProps,\n        maxWidth: maxWidth,\n        children: [\n            /*#__PURE__*/ _jsxs(Stack, {\n                horizontal: true,\n                tokens: {\n                    childrenGap: 10\n                },\n                children: [\n                    /*#__PURE__*/ _jsx(Icon, {\n                        iconName: \"info\",\n                        className: ReviewCommentModalStyles.infoIcon\n                    }),\n                    /*#__PURE__*/ _jsx(Text, {\n                        children: context.loc('ReviewCommentActionModal_DeleteError_Description', 'There was a problem deleting your comment. Please try again.')\n                    })\n                ]\n            }),\n            /*#__PURE__*/ _jsx(DialogFooter, {\n                children: /*#__PURE__*/ _jsx(PrimaryButton, {\n                    onClick: dismissModal,\n                    text: context.loc('ReviewCommentActionModal_DeleteError_Cancel_Button_Label', 'Close')\n                })\n            })\n        ]\n    });\n}\nexport function ReviewCommentModalContentViolationDialog({ context, dismissModal, payload }) {\n    const { modalProps, dialogContentProps, maxWidth } = getReviewCommentsModalDialogProps(context.loc('ReviewCommentActionModal_ContentViolation_Title', \"Your comment wasn't published\"));\n    return /*#__PURE__*/ _jsxs(Dialog, {\n        hidden: !payload.showModal,\n        onDismiss: dismissModal,\n        dialogContentProps: dialogContentProps,\n        modalProps: modalProps,\n        maxWidth: maxWidth,\n        children: [\n            /*#__PURE__*/ _jsxs(Stack, {\n                horizontal: true,\n                tokens: {\n                    childrenGap: 10\n                },\n                children: [\n                    /*#__PURE__*/ _jsx(Icon, {\n                        iconName: \"info\",\n                        className: ReviewCommentModalStyles.infoIcon\n                    }),\n                    /*#__PURE__*/ _jsxs(Text, {\n                        children: [\n                            context.loc('ReviewCommentActionModal_ContentViolation_Description', \"We couldn't publish your comment because we detected some offensive content which violates Microsoft terms.\"),\n                            ' ',\n                            /*#__PURE__*/ _jsx(Link, {\n                                target: \"_blank\",\n                                href: Constants.MicrosoftRatingReviewPolicy,\n                                children: context.loc('ReviewCommentActionModal_ContentViolation_Policy_Link_Label', 'View Microsoft AppSource review policies')\n                            })\n                        ]\n                    })\n                ]\n            }),\n            /*#__PURE__*/ _jsx(DialogFooter, {\n                children: /*#__PURE__*/ _jsx(PrimaryButton, {\n                    onClick: dismissModal,\n                    text: context.loc('ReviewCommentActionModal_ContentViolation_Cancel_Button_Label', 'Close')\n                })\n            })\n        ]\n    });\n}\nexport function ReviewCommentModalCreateErrorDialog({ context, dismissModal, payload }) {\n    const { modalProps, dialogContentProps, maxWidth } = getReviewCommentsModalDialogProps(context.loc('ReviewCommentActionModal_CreateError_Title', \"Couldn't publish your comment\"));\n    return /*#__PURE__*/ _jsxs(Dialog, {\n        hidden: !payload.showModal,\n        onDismiss: dismissModal,\n        dialogContentProps: dialogContentProps,\n        modalProps: modalProps,\n        maxWidth: maxWidth,\n        children: [\n            /*#__PURE__*/ _jsxs(Stack, {\n                horizontal: true,\n                tokens: {\n                    childrenGap: 10\n                },\n                children: [\n                    /*#__PURE__*/ _jsx(Icon, {\n                        iconName: \"info\",\n                        className: ReviewCommentModalStyles.infoIcon\n                    }),\n                    /*#__PURE__*/ _jsx(Text, {\n                        children: context.loc('ReviewCommentActionModal_CreateError_Description', 'There was a problem publishing your comment. Please try again.')\n                    })\n                ]\n            }),\n            /*#__PURE__*/ _jsx(DialogFooter, {\n                children: /*#__PURE__*/ _jsx(PrimaryButton, {\n                    onClick: dismissModal,\n                    text: context.loc('ReviewCommentActionModal_CreateError_Cancel_Button_Label', 'Close')\n                })\n            })\n        ]\n    });\n}\n","import * as React from 'react';\nimport { ReviewCommentModal as ReviewCommentModalComponent } from '@shared/components/modals/reviewCommentModal';\nimport { deleteReviewComment, updateReviewComment } from '@shared/actions/thunkActions';\nconst { connect } = require('react-redux');\nexport const mapStateToProps = (state, ownProps)=>{\n    return {\n        userInfo: state.users,\n        onDeleteComment: ownProps.onDeleteComment,\n        onEditComment: ownProps.onEditComment,\n        dismissModal: ownProps.dismissModal,\n        payload: ownProps.payload\n    };\n};\nexport const mapDispatchToProps = (dispatch, ownProps)=>{\n    return {\n        onDeleteComment: ({ offerId, reviewId, commentId, isNewlyAddedComment })=>dispatch(deleteReviewComment({\n                offerId,\n                reviewId,\n                commentId,\n                isNewlyAddedComment\n            })),\n        onEditComment: ({ offerId, reviewId, commentId, commentContent, isNewlyAddedComment })=>dispatch(updateReviewComment({\n                offerId,\n                reviewId,\n                commentId,\n                commentContent,\n                isNewlyAddedComment\n            })),\n        userInfo: ownProps.userInfo,\n        payload: ownProps.payload,\n        dismissModal: ownProps.dismissModal\n    };\n};\nexport const ReviewCommentModal = connect(mapStateToProps, mapDispatchToProps)(ReviewCommentModalComponent);\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport React from 'react';\nimport { Dialog, DialogFooter, Icon, mergeStyleSets, PrimaryButton, Stack, Text } from '@fluentui/react';\nimport { getReviewCommentsModalDialogProps } from '@shared/utils/reviewsUtils';\nimport { SharedColors } from '@fluentui/theme';\nconst ReviewMarkAsHelpfulModalStyles = mergeStyleSets({\n    infoIcon: {\n        color: SharedColors.red20,\n        fontSize: '16px'\n    },\n    loader: {\n        position: 'fixed',\n        left: '50%',\n        top: '50%',\n        transform: 'translate(-50%, -50%)',\n        zIndex: 2200\n    }\n});\nexport function ReviewMarkAsHelpfulModalErrorDialog({ context, dismissModal, payload }) {\n    const { modalProps, dialogContentProps, maxWidth } = getReviewCommentsModalDialogProps(context.loc('ReviewMarkAsHelpfulModal_UpdateError_Title', 'Something went wrong'));\n    return /*#__PURE__*/ _jsxs(Dialog, {\n        hidden: !payload.showModal,\n        onDismiss: dismissModal,\n        dialogContentProps: dialogContentProps,\n        modalProps: modalProps,\n        maxWidth: maxWidth,\n        children: [\n            /*#__PURE__*/ _jsxs(Stack, {\n                role: \"dialog\",\n                horizontal: true,\n                tokens: {\n                    childrenGap: 10\n                },\n                children: [\n                    /*#__PURE__*/ _jsx(Icon, {\n                        iconName: \"info\",\n                        className: ReviewMarkAsHelpfulModalStyles.infoIcon\n                    }),\n                    /*#__PURE__*/ _jsx(Text, {\n                        children: context.loc('ReviewMarkAsHelpfulModal_UpdateError_Description', 'There was a problem marking the review as helpful. Please try again.')\n                    })\n                ]\n            }),\n            /*#__PURE__*/ _jsx(DialogFooter, {\n                children: /*#__PURE__*/ _jsx(PrimaryButton, {\n                    onClick: dismissModal,\n                    text: context.loc('ReviewMarkAsHelpfulModal_UpdateError_Close_Button_Label', 'Close')\n                })\n            })\n        ]\n    });\n}\n","function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nfunction _object_spread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        var ownKeys = Object.keys(source);\n        if (typeof Object.getOwnPropertySymbols === \"function\") {\n            ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n            }));\n        }\n        ownKeys.forEach(function(key) {\n            _define_property(target, key, source[key]);\n        });\n    }\n    return target;\n}\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { Constants } from '@shared/utils/constants';\nimport { launchTelemetry } from '@shared/utils/reviewsUtils';\nimport { logger } from '@src/logger';\nimport { ReviewMarkAsHelpfulModalErrorDialog } from './reviewMarkAsHelpfulModalErrorDialog';\nexport function ReviewMarkAsHelpfulModal({ payload, dismissModal }, context) {\n    const dismissModalWithTelemetry = ()=>{\n        launchTelemetry(Constants.Telemetry.Action.Close, Constants.Telemetry.ActionModifier.ReviewItemMarkAsHelpfulDialog, {\n            payload\n        });\n        logger.info(JSON.stringify({\n            payload\n        }), {\n            action: Constants.Telemetry.Action.Close,\n            actionModifier: Constants.Telemetry.ActionModifier.ReviewItemMarkAsHelpfulDialog\n        });\n        dismissModal();\n    };\n    const innerDialogProps = {\n        dismissModal: dismissModalWithTelemetry,\n        context,\n        payload\n    };\n    return /*#__PURE__*/ _jsx(ReviewMarkAsHelpfulModalErrorDialog, _object_spread({}, innerDialogProps));\n}\nReviewMarkAsHelpfulModal.contextTypes = {\n    loc: PropTypes.func\n};\n","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n    try {\n        var info = gen[key](arg);\n        var value = info.value;\n    } catch (error) {\n        reject(error);\n        return;\n    }\n    if (info.done) {\n        resolve(value);\n    } else {\n        Promise.resolve(value).then(_next, _throw);\n    }\n}\nfunction _async_to_generator(fn) {\n    return function() {\n        var self = this, args = arguments;\n        return new Promise(function(resolve, reject) {\n            var gen = fn.apply(self, args);\n            function _next(value) {\n                asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n            }\n            function _throw(err) {\n                asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n            }\n            _next(undefined);\n        });\n    };\n}\nfunction _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport * as PropTypes from 'prop-types';\nimport { getId } from '@fluentui/utilities';\nimport { SignInModal } from '@shared/components/modals/signInModal';\nimport MediaModal from './mediaModal';\nimport VideoModal from './videoModal';\nimport DriveModal from './driveModal';\nimport { FieldHubModal } from '@shared/containers/modals/fieldHubModal';\nimport ErrorModal from '@shared/containers/modals/errorModal';\nimport AnimationModal from './animationModal';\nimport DisclaimerModal from './disclaimerModal';\nimport NpsModal from './npsModal';\nimport { InstructionsModal } from './instructionsModal';\nimport { DownloadSampleModal } from './downloadSampleModal';\nimport SpzaComponent from './../spzaComponent';\nimport { Constants } from '@shared/utils/constants';\nimport { urlReplace, routes, appendQueryParams } from '@shared/routerHistory';\nimport { getWindow } from '@shared/services/window';\nimport { removeURLParameter } from '@shared/utils/appUtils';\nimport { SpzaInstrumentService } from '@shared/services/telemetry/spza/spzaInstrument';\nimport { NpsModule } from '@shared/utils/npsUtils';\nimport { handleConsentModalCall } from '@shared/handlers/consentModalHandler';\nimport { handleRatingModal } from 'handlers/ratingModalHandler';\nimport { handleReportAbuseModalCall } from '@shared/handlers/reportAbuseModalHandler';\nimport { stringifyError } from '@shared/utils/errorUtils';\nimport { FocusTrapZone } from '@fluentui/react';\nimport { ReviewCommentModal } from '@shared/containers/modals/reviewCommentModal';\nimport { logger } from '@src/logger';\nimport { ReviewMarkAsHelpfulModal } from '@shared/components/modals/reviewMarkAsHelpfulModal';\nimport classNames from 'classnames';\nexport class Modal extends SpzaComponent {\n    componentDidMount() {\n        this.attachElementToDOM();\n        const perfPayload = {\n            page: getWindow().location.href,\n            action: Constants.Telemetry.Action.PageLoad,\n            actionModifier: Constants.Telemetry.ActionModifier.End,\n            details: JSON.stringify({\n                ModalId: this.props.modalId\n            })\n        };\n        SpzaInstrumentService.getProvider().probe('logTelemetryInfo', perfPayload);\n        logger.info(perfPayload.details, {\n            action: perfPayload.action,\n            actionModifier: perfPayload.actionModifier\n        });\n        getWindow().addEventListener('keydown', this.handleKeyPress.bind(this), false);\n        NpsModule.BlockShowingNPS();\n    }\n    handleKeyPress(e) {\n        const { disableDismissModal } = this.props;\n        if (e.code === 'Escape' && !disableDismissModal) {\n            this.dismissModal();\n        }\n    }\n    componentWillUnmount() {\n        const currWindow = getWindow();\n        currWindow.removeEventListener('keydown', this.handleKeyPress.bind(this), false);\n        // During CTA experience, when the user gets back from the Sign-in/Sign-up page to the modal,\n        // there will be a query parameter(modalAppId) added in the end.\n        // So, when the modal is dismissed, we need to get rid of this parameter\n        if (currWindow.location.href.indexOf('modalAppId') > -1) {\n            const pageURL = removeURLParameter(currWindow.location.href, 'modalAppId');\n            urlReplace(pageURL);\n        }\n        NpsModule.AllowShowingNPS();\n        if (this.trigger) {\n            this.trigger.focus();\n        }\n        this.removeElementFromDOM();\n    }\n    dismissModal() {\n        const { disableDismissModal } = this.props;\n        if (disableDismissModal) {\n            return;\n        }\n        if (this.props.modalId === Constants.ModalType.Error) {\n            if (!this.props.isEmbedded) {\n                this.props.dismissModalWithRedirect(this.context.buildHref(routes.home, null, {\n                    category: null,\n                    industry: null,\n                    product: null,\n                    search: null\n                }));\n            } else {\n                let href = this.context.buildHref(routes.marketplace, null, {\n                    category: null,\n                    industry: null,\n                    product: null,\n                    showPrivateApps: false,\n                    search: null,\n                    page: null\n                });\n                // For the embedded app we need to convert the relative path to an absolute path by adding '/embed'\n                href = '/embed' + appendQueryParams(href, {\n                    embedHost: this.props.embedHost\n                });\n                this.props.dismissModalWithRedirect(href);\n            }\n        } else {\n            this.props.dismissModal();\n        }\n        if (this.props.onModalDismiss) {\n            this.props.onModalDismiss();\n        }\n    }\n    renderImpl() {\n        const { disableDismissModal } = this.props;\n        let modalContent = null;\n        let dismissModal = this.dismissModal.bind(this);\n        let modalBackgroundClasses = classNames({\n            spza_presentation: true,\n            spza_background_1: true,\n            spza_background_2: false\n        });\n        let modalClasses = classNames({\n            spza_dialog: true,\n            spza_dialog_design2: false\n        });\n        let appData = null;\n        let service = null;\n        switch(this.props.modalId){\n            case Constants.ModalType.SignIn:\n                modalContent = /*#__PURE__*/ _jsx(SignInModal, {\n                    dismissModal: dismissModal,\n                    altAuth: this.props.featureFlags.AltAuth,\n                    signInModalType: Constants.SignInType.SignInWith_MSA_AAD,\n                    disableDismissModal: disableDismissModal\n                });\n                break;\n            case Constants.ModalType.CTA:\n                if (this.props.entityType === Constants.EntityType.App) {\n                    try {\n                        appData = [\n                            ...this.props.allApps,\n                            ...this.props.allCloudsIndustry\n                        ].find((x)=>x.entityId === this.props.entityId);\n                        // check the public offers first and then the private\n                        if (!appData) {\n                            appData = this.props.allPrivateOffers.find((app)=>app.entityId === this.props.entityId);\n                            if (!appData) {\n                                var _this_props_allFavouriteApps_find;\n                                appData = (_this_props_allFavouriteApps_find = this.props.allFavouriteApps.find((app)=>app.item.entityId === this.props.entityId)) === null || _this_props_allFavouriteApps_find === void 0 ? void 0 : _this_props_allFavouriteApps_find.item;\n                            }\n                            if (appData) {\n                                this.props.updateAppEntity(appData);\n                            }\n                        }\n                        if (!appData) {\n                            this.getAppDetails();\n                        }\n                    } catch (error) {\n                        const payload = {\n                            page: getWindow().location.href,\n                            action: Constants.Telemetry.Action.PageLoad,\n                            actionModifier: Constants.Telemetry.ActionModifier.Error,\n                            details: `Case Constants.ModalType.CTA - this.props.allApps= ${JSON.stringify(this.props.allApps)}, error msg= ${stringifyError(error)}`\n                        };\n                        SpzaInstrumentService.getProvider().probe('logTelemetryInfo', payload);\n                        logger.error(payload.details, {\n                            action: payload.action,\n                            actionModifier: payload.actionModifier\n                        });\n                        throw error;\n                    }\n                } else if (this.props.entityType === Constants.EntityType.Service) {\n                    service = [\n                        ...this.props.allServices,\n                        ...this.props.allCloudsIndustry\n                    ].filter((x)=>{\n                        return x && x.entityId === this.props.entityId;\n                    })[0];\n                }\n                if ((appData === null || appData === void 0 ? void 0 : appData.CertificationState) === Constants.CertificationType.MicrosoftCertified) {\n                    const payloadInfo = {\n                        page: getWindow().location.href,\n                        action: Constants.Telemetry.Action.Click,\n                        actionModifier: Constants.Telemetry.ActionModifier.Info,\n                        details: JSON.stringify({\n                            contentName: 'M365 Certified'\n                        })\n                    };\n                    SpzaInstrumentService.getProvider().probe('logTelemetryInfo', payloadInfo);\n                    logger.info(payloadInfo.details, {\n                        action: payloadInfo.action,\n                        actionModifier: payloadInfo.actionModifier\n                    });\n                }\n                modalContent = handleConsentModalCall(this.props, appData, dismissModal, service);\n                break;\n            case Constants.ModalType.Video:\n                modalContent = /*#__PURE__*/ _jsx(VideoModal, {\n                    video: this.props.payload,\n                    dismissModal: dismissModal\n                });\n                break;\n            case Constants.ModalType.MediaModal:\n                modalContent = /*#__PURE__*/ _jsx(MediaModal, {\n                    payload: this.props.payload,\n                    dismissModal: dismissModal\n                });\n                break;\n            case Constants.ModalType.Drive:\n                modalContent = /*#__PURE__*/ _jsx(DriveModal, {\n                    drive: this.props.payload,\n                    dismissModal: dismissModal\n                });\n                break;\n            case Constants.ModalType.Iframe:\n                modalBackgroundClasses = classNames({\n                    spza_presentation: true,\n                    spza_background_1: false,\n                    spza_background_2: true\n                });\n                modalContent = /*#__PURE__*/ _jsx(FieldHubModal, {\n                    iframeProps: this.props.payload,\n                    dismissModal: dismissModal\n                });\n                dismissModal = null;\n                break;\n            case Constants.ModalType.Error:\n                modalContent = /*#__PURE__*/ _jsx(ErrorModal, {\n                    dismissModal: dismissModal\n                });\n                break;\n            case Constants.ModalType.Disclaimer:\n                modalBackgroundClasses = classNames({\n                    spza_presentation: true,\n                    spza_background_1: false,\n                    spza_background_2: true\n                });\n                modalClasses = classNames({\n                    spza_dialog: true,\n                    spza_dialog_design2: true\n                });\n                modalContent = /*#__PURE__*/ _jsx(DisclaimerModal, {\n                    payload: this.props.payload,\n                    dismissModal: dismissModal\n                });\n                dismissModal = null;\n                break;\n            case Constants.ModalType.NPS:\n                modalContent = /*#__PURE__*/ _jsx(NpsModal, {\n                    dismissModal: dismissModal,\n                    emailAddress: this.props.userInfo.signedIn ? this.props.userInfo.email : 'no user'\n                });\n                dismissModal = null;\n                break;\n            case Constants.ModalType.Rating:\n                try {\n                    appData = this.props.allApps.filter((x)=>{\n                        return x.entityId.toLowerCase() === this.props.payload.app.entityId.toLowerCase();\n                    })[0];\n                } catch (error) {\n                    const payload = {\n                        page: getWindow().location.href,\n                        action: Constants.Telemetry.Action.PageLoad,\n                        actionModifier: Constants.Telemetry.ActionModifier.Error,\n                        details: `Case Constants.ModalType.Rating - this.props.allApps= ${JSON.stringify(this.props.allApps)}, error msg= ${stringifyError(error)}`\n                    };\n                    SpzaInstrumentService.getProvider().probe('logTelemetryInfo', payload);\n                    logger.error(payload.details, {\n                        action: payload.action,\n                        actionModifier: payload.actionModifier\n                    });\n                    throw error;\n                }\n                modalContent = handleRatingModal(this.props, appData, dismissModal, service);\n                dismissModal = null;\n                break;\n            case Constants.ModalType.ReviewComment:\n                modalContent = /*#__PURE__*/ _jsx(ReviewCommentModal, {\n                    payload: this.props.payload,\n                    dismissModal: dismissModal\n                });\n                dismissModal = null;\n                break;\n            case Constants.ModalType.ReviewMarkAsHelpful:\n                modalContent = /*#__PURE__*/ _jsx(ReviewMarkAsHelpfulModal, {\n                    payload: this.props.payload,\n                    dismissModal: dismissModal\n                });\n                dismissModal = null;\n                break;\n            case Constants.ModalType.Animation:\n                modalContent = /*#__PURE__*/ _jsx(AnimationModal, {});\n                break;\n            case Constants.ModalType.ReportAbuse:\n                var _this_props_options, _this_props_options1, _this_props_options2, _this_props_options3;\n                modalContent = handleReportAbuseModalCall((_this_props_options = this.props.options) === null || _this_props_options === void 0 ? void 0 : _this_props_options.appId, (_this_props_options1 = this.props.options) === null || _this_props_options1 === void 0 ? void 0 : _this_props_options1.reviewId, (_this_props_options2 = this.props.options) === null || _this_props_options2 === void 0 ? void 0 : _this_props_options2.reviewTitle, this.props.userInfo, (_this_props_options3 = this.props.options) === null || _this_props_options3 === void 0 ? void 0 : _this_props_options3.reviewSource, dismissModal);\n                break;\n            case Constants.ModalType.Instructions:\n                modalContent = /*#__PURE__*/ _jsx(InstructionsModal, {\n                    context: this.context,\n                    isFromDownload: this.props.payload.isFromDownload,\n                    dismissModal: dismissModal\n                });\n                break;\n            case Constants.ModalType.DownloadSample:\n                modalContent = /*#__PURE__*/ _jsx(DownloadSampleModal, {\n                    context: this.context,\n                    dismissModal: dismissModal\n                });\n                break;\n            default:\n                break;\n        }\n        return /*#__PURE__*/ ReactDOM.createPortal(/*#__PURE__*/ _jsx(FocusTrapZone, {\n            children: /*#__PURE__*/ _jsxs(\"div\", {\n                className: modalClasses,\n                children: [\n                    /*#__PURE__*/ _jsx(\"div\", {\n                        className: modalBackgroundClasses,\n                        onClick: dismissModal\n                    }),\n                    modalContent\n                ]\n            })\n        }), this.domTreeElement);\n    }\n    constructor(props, context){\n        var _this;\n        super(props, context), _this = this, _define_property(this, \"context\", void 0), _define_property(this, \"trigger\", null), _define_property(this, \"domTreeElement\", void 0), _define_property(this, \"attachElementToDOM\", ()=>document.body.appendChild(this.domTreeElement)), _define_property(this, \"removeElementFromDOM\", ()=>document.body.removeChild(this.domTreeElement)), _define_property(this, \"getAppDetails\", /*#__PURE__*/ _async_to_generator(function*() {\n            const { entityId, fetchAppDetails } = _this.props;\n            fetchAppDetails(entityId);\n        }));\n        this.domTreeElement = document.createElement('div');\n        this.domTreeElement.setAttribute('id', getId('modal'));\n        this.trigger = document.activeElement;\n    }\n}\nModal.contextTypes = {\n    loc: PropTypes.func,\n    locParams: PropTypes.func,\n    buildHref: PropTypes.func,\n    renderErrorModal: PropTypes.func\n};\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport * as React from 'react';\nimport { ReportAbuseModal } from '../containers/modals/reportAbuseModal';\nimport { Constants } from '../../shared/utils/constants';\nimport { SignInModal } from '../../shared/components/modals/signInModal';\nexport function handleReportAbuseModalCall(appId, reviewId, reviewTitle, userInfo, reviewSource, dismissModal) {\n    if (!userInfo.signedIn) {\n        return /*#__PURE__*/ _jsx(SignInModal, {\n            redirect: \"reportAbuse\",\n            entityId: reviewId,\n            reviewAppId: appId,\n            reviewTitle: reviewTitle,\n            dismissModal: dismissModal,\n            signInModalType: Constants.SignInType.SignInWith_MSA_AAD\n        });\n    } else {\n        return /*#__PURE__*/ _jsx(ReportAbuseModal, {\n            appId: appId,\n            reviewId: reviewId,\n            reviewTitle: reviewTitle,\n            reviewSource: reviewSource,\n            dismissModal: dismissModal\n        });\n    }\n}\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport * as React from 'react';\nimport { ConsentModal } from '@appsource/containers/modals/consentModal';\nimport { Constants } from '@shared/utils/constants';\nimport { SignInModal } from '@shared/components/modals/signInModal';\nimport { getSignInModalType, isTransactApp, isPrivateOffer, isPowerBIVisuals } from '@shared/utils/appUtils';\nimport { isAppContactForm } from '@shared/utils/modals';\nimport AnimationModal from '@shared/components/modals/animationModal';\nimport { getPrimaryProductUrl } from '@shared/utils/datamappingHelpers';\nexport function handleConsentModalCall(props, appData, dismissModal, service) {\n    let modalContent = null;\n    const { options, isEmbedded, billingCountryCode, userInfo, entityId, query } = props;\n    const ctaType = parseInt(options.ctaType, 10);\n    const isTransactable = isTransactApp({\n        isEmbedded,\n        ctaTypes: [\n            ctaType\n        ],\n        appData,\n        billingRegion: billingCountryCode\n    }) || isPrivateOffer(appData === null || appData === void 0 ? void 0 : appData.appType) && !isPowerBIVisuals(getPrimaryProductUrl(appData.primaryProduct));\n    const signinType = getSignInModalType(appData && appData.primaryProduct, appData && appData.products, userInfo, ctaType, !!service, isTransactable);\n    const { signedIn, loading } = props.userInfo;\n    const shouldShowAnimationModal = !!(!signedIn && loading);\n    const shouldShowSignInModal = signinType !== Constants.SignInType.Authorized && !props.isEmbedded;\n    const signinRedirect = !!service && !appData ? 'service' : 'app';\n    const entityType = !!service && !appData ? Constants.EntityType.Service : Constants.EntityType.App;\n    if (shouldShowAnimationModal) {\n        modalContent = /*#__PURE__*/ _jsx(AnimationModal, {});\n    }\n    if (shouldShowSignInModal && !shouldShowAnimationModal) {\n        const appTitle = appData && appData.title ? appData.title : '';\n        const userEmail = userInfo && userInfo.email ? userInfo.email : '';\n        const serviceTitle = service && service.title ? service.title : '';\n        modalContent = /*#__PURE__*/ _jsx(SignInModal, {\n            redirect: signinRedirect,\n            entityId: entityId,\n            dismissModal: dismissModal,\n            signInModalType: signinType,\n            appName: appTitle,\n            email: userEmail,\n            entityType: entityType,\n            serviceName: serviceTitle,\n            ctaType: ctaType\n        });\n    } else if (appData || service) {\n        modalContent = /*#__PURE__*/ _jsx(ConsentModal, {\n            appInfo: appData,\n            isEmbedded: isEmbedded,\n            isContactForm: isAppContactForm(appData, ctaType),\n            dismissModal: dismissModal,\n            ctaType: ctaType,\n            serviceInfo: service,\n            query: query,\n            isTransactApp: isTransactable\n        });\n    }\n    return modalContent;\n}\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport * as React from 'react';\nimport { Constants } from '@shared/utils/constants';\nimport { SignInModal } from '@shared/components/modals/signInModal';\nimport { getSignInModalType, getCTATypeForActionString } from '@shared/utils/appUtils';\nimport { RatingModal } from '@shared/containers/modals/ratingModal';\nexport function handleRatingModal(props, appData, dismissModal, service) {\n    let modalContent = null;\n    const ctaType = getCTATypeForActionString(props.payload.ctaType);\n    const signinType = getSignInModalType(appData && appData.primaryProduct, appData && appData.products, props.userInfo, ctaType, !!service);\n    const shouldShowSignInModal = signinType !== Constants.SignInType.Authorized && !props.isEmbedded;\n    const signinRedirect = 'review';\n    const entityType = !!service && !appData ? Constants.EntityType.Service : Constants.EntityType.App;\n    if (shouldShowSignInModal) {\n        const appTitle = appData && appData.title ? appData.title : '';\n        const userEmail = props.userInfo && props.userInfo.email ? props.userInfo.email : '';\n        modalContent = /*#__PURE__*/ _jsx(SignInModal, {\n            redirect: signinRedirect,\n            entityId: appData.entityId,\n            dismissModal: dismissModal,\n            signInModalType: signinType,\n            appName: appTitle,\n            email: userEmail,\n            entityType: entityType,\n            ctaType: ctaType,\n            reviewAppId: appData.entityId\n        });\n    } else {\n        const payload = props.payload;\n        modalContent = /*#__PURE__*/ _jsx(RatingModal, {\n            payload: payload,\n            dismissModal: dismissModal,\n            setUserReviewStatus: props.setUserReviewStatus\n        });\n    }\n    return modalContent;\n}\n","import * as React from 'react';\nimport { createEntityFullDataReceivedAction, createModalAction, createUserReviewUpdatedAction } from '../../actions/actions';\nimport { Modal as ModalComponent } from './../../components/modals/modal';\nimport { getWindow } from '../../services/window';\nimport { isOnMicrosoftEmail } from '../../utils/appUtils';\nimport { SpzaInstrumentService } from '../../services/telemetry/spza/spzaInstrument';\nimport { Constants } from './../../utils/constants';\nimport { getCookieItem } from './../../utils/browserStorageUtils';\nimport { logger } from '@src/logger';\nimport { connect } from 'react-redux';\nimport { getAppDetail } from '@shared/actions/thunkActions';\nexport const mapStateToProps = (state, ownProps)=>{\n    var _state_users_privateOffers;\n    const userInfo = state.users;\n    if (state.config.isEmbedded) {\n        const cookie = getCookieItem('appsourcelead');\n        let isAlternateEmailFromCookie = false;\n        if (cookie && cookie.alternateEmail && cookie.email) {\n            const userEmail = userInfo && userInfo.email ? userInfo.email.toLowerCase() : ' ';\n            // If userInfo already has alternateEmail (from graph call on server), do NOT overwrite it here\n            // also ensure that cookie's email is matching useremail to avoid scenario where user signs in into other sites that updated the cookie to some MSA\n            if (!userInfo.alternateEmail && userEmail === cookie.email.toLowerCase()) {\n                userInfo.alternateEmail = cookie.alternateEmail;\n                isAlternateEmailFromCookie = true;\n            }\n        }\n        const payload = {\n            page: getWindow().location.href,\n            action: Constants.Telemetry.Action.PageLoad,\n            actionModifier: Constants.Telemetry.ActionModifier.CookieData,\n            details: JSON.stringify({\n                alternateEmailExists: !!(cookie && cookie.alternateEmail),\n                emailHasOnMicrosoft: userInfo && userInfo.email ? isOnMicrosoftEmail(userInfo.email) : false,\n                alternateEmailFromCookie: isAlternateEmailFromCookie\n            })\n        };\n        SpzaInstrumentService.getProvider().probe('logTelemetryInfo', payload);\n        logger.info(payload.details, {\n            action: payload.action,\n            actionModifier: payload.actionModifier\n        });\n    }\n    const recommendedServices = state.services.recommendedServices;\n    return {\n        entityId: state.modal.entityId,\n        modalId: state.modal.modalId,\n        onModalDismiss: state.modal.onModalDismiss,\n        disableDismissModal: state.modal.disableDismissModal,\n        userInfo,\n        isSignedIn: state.users.signedIn,\n        allApps: state.apps.dataList,\n        allCloudsIndustry: state.cloudsIndustry.dataList,\n        allServices: state.services.dataList.concat(recommendedServices.whatsNewService).concat(recommendedServices.trendingService),\n        allPrivateOffers: ((_state_users_privateOffers = state.users.privateOffers) === null || _state_users_privateOffers === void 0 ? void 0 : _state_users_privateOffers.dataList) || [],\n        allFavouriteApps: state.userFavourite.apps,\n        isEmbedded: state.config.isEmbedded,\n        featureFlags: state.config.featureFlags,\n        entityType: state.modal.entityType,\n        payload: state.modal.payload,\n        embedHost: state.config.embedHost,\n        options: state.modal.options,\n        query: ownProps && ownProps.query,\n        billingCountryCode: state.config.billingCountryCode\n    };\n};\nexport const mapDispatchToProps = (dispatch)=>{\n    return {\n        fetchAppDetails: (entityId)=>dispatch(getAppDetail(entityId, false)),\n        updateAppEntity: (entityDetails)=>dispatch(createEntityFullDataReceivedAction({\n                entityType: Constants.EntityType.App,\n                entityDetails\n            })),\n        dismissModal: ()=>{\n            return dispatch(createModalAction({\n                showModal: false\n            }));\n        },\n        setUserReviewStatus: (hasReview)=>{\n            return dispatch(createUserReviewUpdatedAction(hasReview));\n        },\n        dismissModalWithRedirect: (href)=>{\n            getWindow().location.assign(href);\n        }\n    };\n};\nconst Modal = connect(mapStateToProps, mapDispatchToProps)(ModalComponent);\nexport default Modal;\n","function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nimport * as PropTypes from 'prop-types';\nimport SpzaComponent from '@shared/components/spzaComponent';\nimport { attachClickHandlerToElement } from '@shared/utils/appUtils';\nimport { Constants } from '@shared/utils/constants';\nimport { getWindow } from 'services/window';\nimport { SpzaInstrumentService } from '@shared/services/telemetry/spza/spzaInstrument';\nimport { logger } from '@src/logger';\nexport class Footer extends SpzaComponent {\n    componentDidMount() {\n        const { toggleContextPanel } = this.props;\n        const handleShowContextPanel = ()=>{\n            return (event)=>{\n                const payload = {\n                    page: this.props.location.pathname,\n                    action: Constants.Telemetry.Action.Country,\n                    actionModifier: Constants.Telemetry.ActionModifier.FooterLocale\n                };\n                this.instrument.probe(Constants.Telemetry.ProbeName.LogInfo, payload);\n                logger.info(payload.details, {\n                    page: payload.page,\n                    action: payload.action,\n                    actionModifier: payload.actionModifier\n                });\n                toggleContextPanel();\n                event.preventDefault();\n            };\n        };\n        // locale picker\n        attachClickHandlerToElement('locale-picker-link', handleShowContextPanel());\n        this.manageCookiesBtn();\n    }\n    componentDidUpdate() {\n        this.manageCookiesBtn();\n    }\n    // manage Cookies button in Appsource footer.\n    manageCookiesBtn() {\n        const hiddenClass = 'x-hidden';\n        if (document && document.getElementById(Constants.Cookies.WCPManageCookieBtnId) && document.getElementById(Constants.Cookies.WCPManageCookieBtnId).className.indexOf(hiddenClass) >= 0 && this.props.isManageCookieBtnRequired) {\n            const manageCookieOnClick = ()=>{\n                const telemetryData = {\n                    page: getWindow().location.href,\n                    action: Constants.Telemetry.Action.ConsentBanner,\n                    actionModifier: Constants.Telemetry.ActionModifier.Info,\n                    details: 'manage button clicked'\n                };\n                SpzaInstrumentService.getProvider().probe('logTelemetryInfo', telemetryData);\n                logger.info(telemetryData.details, {\n                    action: telemetryData.action,\n                    actionModifier: telemetryData.actionModifier\n                });\n                this.props.openCookieManagementModal();\n            };\n            document.getElementById(Constants.Cookies.WCPManageCookieBtnId).classList.remove(hiddenClass);\n            attachClickHandlerToElement(Constants.Cookies.WCPManageCookieBtnId, manageCookieOnClick);\n        }\n    }\n    renderImpl() {\n        return null;\n    }\n    constructor(props, context){\n        super(props, context), _define_property(this, \"context\", void 0), _define_property(this, \"instrument\", void 0);\n        this.instrument = SpzaInstrumentService.getProvider();\n    }\n}\nFooter.contextTypes = {\n    buildHref: PropTypes.func,\n    renderErrorModal: PropTypes.func\n};\n","import { Footer as FooterComponent } from '../components/footer';\nimport { createIsManageModalOpenAction, createToggleShowContextPanel } from '@shared/actions/actions';\nimport { withRouter } from '@shared/routerHistory';\nimport { connect } from 'react-redux';\nconst mapStateToProps = (state)=>{\n    return {\n        isManageCookieBtnRequired: state.config.cookiesConsent.isConsentRequired\n    };\n};\nconst mapDispatchToProps = (dispatch)=>{\n    return {\n        openCookieManagementModal: ()=>dispatch(createIsManageModalOpenAction(true)),\n        toggleContextPanel: ()=>dispatch(createToggleShowContextPanel())\n    };\n};\nexport const Footer = withRouter(connect(mapStateToProps, mapDispatchToProps)(FooterComponent));\n","import { Constants } from './constants';\nimport { addAttributes, getElement } from './appUtils';\nimport { getTrimmedWords } from './stringUtils';\n/**\n * This function is to change azure header navigation bar to be static instead of sticky at the top\n */ export function forceAzureHeaderNavStatic() {\n    // tag name of dom element to append new classname to\n    const htmlTagName = 'html';\n    // new classname\n    const azureHeaderStaticClassValue = 'azure-header-static';\n    // get dom element of tag name\n    const htmlTagDomElement = getElement(Constants.SearchBy.Tag, htmlTagName);\n    if (htmlTagDomElement) {\n        // get classname value of html tag element\n        const htmlTagClassValue = htmlTagDomElement.className || '';\n        const htmlTagClassValueList = getTrimmedWords(htmlTagClassValue, ' ');\n        // check if html tag element already has azure-header-static\n        if (htmlTagClassValueList.indexOf(azureHeaderStaticClassValue) >= 0) {\n            return;\n        }\n        // append new classname to existing attribute classname value if exist\n        addAttributes(Constants.SearchBy.Tag, htmlTagName, [\n            {\n                key: Constants.HTMLAttribute.className,\n                value: htmlTagClassValueList.concat(azureHeaderStaticClassValue).join(' ')\n            }\n        ]);\n    }\n}\n/**\n * Fix for clicking elsewhere, azure header navigation bar dropdown should be closed\n *\n *  NOTE: since azure header team refuses to fix this bug, adding a workaround for now\n */ export function closeAzureHeaderNavDropdown() {\n    // query selector of active azure header navigation bar dropdown button\n    const azureHeaderNavDropdownQuerySelector = '.azure-header li.active button';\n    // get active azure header navigation bar dropdown button\n    const azureHeaderNavDropdownDOMElement = getElement(Constants.SearchBy.QuerySelector, azureHeaderNavDropdownQuerySelector);\n    // click it again to close\n    if (azureHeaderNavDropdownDOMElement) {\n        azureHeaderNavDropdownDOMElement.click();\n    }\n}\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport React from 'react';\nimport { Dialog, DialogType, DialogFooter, PrimaryButton, DefaultButton } from '@fluentui/react';\nimport { NeutralColors } from '@fluentui/theme';\nconst dialogStyles = {\n    root: {\n        position: 'relative',\n        height: 'auto'\n    },\n    main: {\n        position: 'fixed',\n        zIndex: 999,\n        right: 10,\n        bottom: 20\n    }\n};\nconst dialogContentStyles = {\n    header: {\n        color: NeutralColors.gray160\n    },\n    subText: {\n        color: NeutralColors.gray130\n    }\n};\nconst dialogContentProps = (context)=>{\n    return {\n        type: DialogType.close,\n        title: context.loc('Nps_PreviewModal_Title', 'Can we ask a quick question?'),\n        closeButtonAriaLabel: context.loc('Nps_PreviewModal_CloseButton_AriaLabel', 'Close'),\n        subText: context.loc('Nps_PreviewModal_SubHeader_Text', 'We’re always looking for ways to improve AppSource. Can you tell us about your experience?'),\n        styles: dialogContentStyles\n    };\n};\nconst modalMinWidth = '536px';\nconst modalProps = {\n    isModeless: true\n};\nexport const NpsPreviewModal = ({ hidden, onDismiss, onSubmit, context })=>{\n    return /*#__PURE__*/ _jsx(Dialog, {\n        hidden: hidden,\n        dialogContentProps: dialogContentProps(context),\n        minWidth: modalMinWidth,\n        modalProps: modalProps,\n        styles: dialogStyles,\n        onDismiss: onDismiss,\n        children: /*#__PURE__*/ _jsxs(DialogFooter, {\n            children: [\n                /*#__PURE__*/ _jsx(PrimaryButton, {\n                    text: context.loc('Nps_PreviewModal_SubmitButton_Text', 'Share feedback'),\n                    onClick: onSubmit\n                }),\n                /*#__PURE__*/ _jsx(DefaultButton, {\n                    text: context.loc('Nps_PreviewModal_DismissButton_Text', 'Maybe later'),\n                    onClick: onDismiss\n                })\n            ]\n        })\n    });\n};\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport React from 'react';\nimport { mergeStyleSets, Text } from '@fluentui/react';\nimport { SubmittedModal } from '@shared/components/modals/submittedModal';\nimport { NeutralColors, SharedColors } from '@fluentui/theme';\nimport { ExternalLink } from '@shared/components/externalLink';\nconst externalUrl = (correlationId)=>`https://aka.ms/appsource/comscore?correlationID=${correlationId}`;\nconst subTextStyles = {\n    root: {\n        color: NeutralColors.gray130,\n        lineHeight: 20\n    }\n};\nconst classNames = mergeStyleSets({\n    externalLink: [\n        {\n            display: 'inline-block',\n            color: `${SharedColors.cyanBlue10} !important`\n        }\n    ]\n});\nexport const NpsSubmittedModal = ({ hidden, onDismiss, correlationId, context })=>{\n    return /*#__PURE__*/ _jsxs(SubmittedModal, {\n        hidden: hidden,\n        onDismiss: onDismiss,\n        title: context.loc('Nps_SubmittedModal_Title', 'Feedback received'),\n        context: context,\n        children: [\n            /*#__PURE__*/ _jsx(Text, {\n                block: true,\n                styles: subTextStyles,\n                children: context.loc('Nps_SubmittedModal_Summary_Text', 'Thanks for taking the time to share your thoughts!')\n            }),\n            /*#__PURE__*/ _jsx(Text, {\n                styles: subTextStyles,\n                children: `${context.loc('Nps_SubmittedModal_Link_Invitation_Text', 'If you’d like to help us even more')}, `\n            }),\n            /*#__PURE__*/ _jsx(ExternalLink, {\n                className: classNames.externalLink,\n                accessibilityEnabled: true,\n                href: externalUrl(correlationId),\n                target: \"_blank\",\n                rel: \"noreferrer\",\n                onClickHandle: onDismiss,\n                children: context.loc('Nps_SubmittedModal_External_Link_Text', 'take our online survey')\n            }),\n            /*#__PURE__*/ _jsx(Text, {\n                styles: subTextStyles,\n                children: \".\"\n            })\n        ]\n    });\n};\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport React, { useState } from 'react';\nimport { Dialog, DialogType, DialogFooter, PrimaryButton, Stack, Text, FontIcon, DefaultButton, ButtonType, TextField, Checkbox, mergeStyleSets } from '@fluentui/react';\nimport { NeutralColors, SharedColors } from '@fluentui/theme';\nimport { useBoolean } from '@fluentui/react-hooks';\nimport { ExternalLink } from '@shared/components/externalLink';\nimport { ratingValues } from '@shared/Models';\nimport { useTelemetry } from '@shared/hooks/useTelemetry';\nimport { Constants } from '@shared/utils/constants';\nconst termsUrl = 'https://azure.microsoft.com/support/legal/marketplace-terms';\nconst privacyUrl = 'https://privacy.microsoft.com/en-us/privacystatement';\nconst modalMinWidth = '560px';\nconst modalProps = {\n    isDarkOverlay: false,\n    isBlocking: true\n};\nconst stackTokens = {\n    childrenGap: 16\n};\nconst classNames = mergeStyleSets({\n    externalLink: [\n        {\n            display: 'inline-block',\n            color: `${SharedColors.cyanBlue10} !important`\n        }\n    ],\n    defaultText: [\n        {\n            color: NeutralColors.gray130\n        }\n    ],\n    divider: [\n        {\n            fontSize: 16,\n            color: NeutralColors.gray160,\n            lineHeight: 20\n        }\n    ]\n});\nconst dialogContentStyles = {\n    header: {\n        color: NeutralColors.gray160\n    },\n    subText: {\n        color: NeutralColors.gray160,\n        fontWeight: 600\n    }\n};\nconst dialogTextFieldStyles = {\n    fieldGroup: {\n        height: 96\n    }\n};\nconst buttonStyles = {\n    root: {\n        width: 40,\n        height: 48,\n        minWidth: 0,\n        border: '1px solid #E1E3E5'\n    },\n    rootChecked: {\n        color: NeutralColors.white,\n        backgroundColor: SharedColors.cyanBlue10\n    },\n    rootCheckedHovered: {\n        color: NeutralColors.white,\n        backgroundColor: SharedColors.cyanBlue10\n    }\n};\nconst dialogContentProps = (context)=>{\n    return {\n        type: DialogType.close,\n        title: context.loc('Nps_SurveyModal_Title', 'We’d love your feedback'),\n        subText: context.loc('Nps_SurveyModal_SubHeader_Text', 'How likely are you to recommend AppSource to a friend or colleague?'),\n        closeButtonAriaLabel: context.loc('Nps_SurveyModal_CloseButton_AriaText', 'Close'),\n        styles: dialogContentStyles\n    };\n};\nconst checkboxLabelDefaultText = (email)=>`It’s OK to contact me at ${email} about my feedback`;\nconst additionalInfoDefaultText = 'For specific concerns or issues regarding the use of an application, please contact the publisher via the support link on the application product page.';\nconst NpsTermsAndPrivacy = ({ context })=>{\n    return /*#__PURE__*/ _jsxs(Stack, {\n        horizontal: true,\n        children: [\n            /*#__PURE__*/ _jsx(ExternalLink, {\n                className: classNames.externalLink,\n                accessibilityEnabled: true,\n                href: termsUrl,\n                target: \"_blank\",\n                rel: \"noreferrer\",\n                children: context.loc('Nps_SurveyModal_Terms_Link_Text', 'Terms')\n            }),\n            /*#__PURE__*/ _jsx(FontIcon, {\n                iconName: \"Separator\",\n                className: classNames.divider\n            }),\n            /*#__PURE__*/ _jsx(ExternalLink, {\n                className: classNames.externalLink,\n                accessibilityEnabled: true,\n                href: privacyUrl,\n                target: \"_blank\",\n                rel: \"noreferrer\",\n                children: context.loc('Nps_SurveyModal_PrivacyStatement_Link_Text', 'Privacy statement')\n            })\n        ]\n    });\n};\nconst NpsDescription = ({ value, onChange, context })=>{\n    return /*#__PURE__*/ _jsx(TextField, {\n        label: context.loc('Nps_SurveyModal_Description_Label_Text', 'What can we do to improve your experience?'),\n        multiline: true,\n        resizable: false,\n        placeholder: context.loc('Nps_SurveyModal_Description_Placeholder_Text', 'Tell us what you think of AppSource.'),\n        value: value,\n        onChange: (_, newValue)=>onChange(newValue || ''),\n        styles: dialogTextFieldStyles\n    });\n};\nconst NpsRatings = ({ selectedRating, onChange, context })=>{\n    return /*#__PURE__*/ _jsxs(Stack, {\n        tokens: {\n            childrenGap: 8\n        },\n        children: [\n            /*#__PURE__*/ _jsxs(Stack, {\n                horizontal: true,\n                horizontalAlign: \"space-between\",\n                children: [\n                    /*#__PURE__*/ _jsx(Text, {\n                        variant: \"smallPlus\",\n                        className: classNames.defaultText,\n                        children: context.loc('Nps_SurveyModal_Ratings_Unsatisfied_Text', 'Not at all likely')\n                    }),\n                    /*#__PURE__*/ _jsx(Text, {\n                        variant: \"smallPlus\",\n                        className: classNames.defaultText,\n                        children: context.loc('Nps_SurveyModal_Ratings_Satisfied_Text', 'Extremely likely')\n                    })\n                ]\n            }),\n            /*#__PURE__*/ _jsx(Stack, {\n                horizontal: true,\n                tokens: {\n                    childrenGap: 8\n                },\n                children: ratingValues.map((ratingValue)=>/*#__PURE__*/ _jsx(DefaultButton, {\n                        toggle: true,\n                        buttonType: selectedRating === ratingValue ? ButtonType.primary : ButtonType.default,\n                        checked: selectedRating === ratingValue,\n                        styles: buttonStyles,\n                        text: `${ratingValue}`,\n                        onClick: ()=>onChange(ratingValue)\n                    }, ratingValue))\n            })\n        ]\n    });\n};\nexport const NpsSurveyModal = ({ hidden, onDismiss, onSubmit, context, email = '' })=>{\n    const [contactCheckboxChecked, { toggle: toggleContactCheckbox }] = useBoolean(false);\n    const [selectedRating, setSelectedRating] = useState(null);\n    const [description, setDescription] = useState('');\n    const [{ pageAction }] = useTelemetry();\n    const handleSubmit = ()=>{\n        onSubmit({\n            description,\n            email: contactCheckboxChecked && email ? email : '',\n            rating: selectedRating\n        });\n        pageAction(null, {\n            behavior: 142,\n            actionType: 'CL',\n            contentTags: {\n                id: Constants.Telemetry.Id.Nps,\n                name: Constants.Telemetry.FeedbackName.Nps,\n                fbnm: Constants.Telemetry.FeedbackName.Nps,\n                vtbm: description,\n                rate: `${selectedRating}`,\n                sat: '0-10'\n            }\n        });\n    };\n    return /*#__PURE__*/ _jsxs(Dialog, {\n        hidden: hidden,\n        dialogContentProps: dialogContentProps(context),\n        minWidth: modalMinWidth,\n        modalProps: modalProps,\n        onDismiss: onDismiss,\n        children: [\n            /*#__PURE__*/ _jsxs(Stack, {\n                tokens: stackTokens,\n                children: [\n                    /*#__PURE__*/ _jsx(NpsRatings, {\n                        selectedRating: selectedRating,\n                        onChange: setSelectedRating,\n                        context: context\n                    }),\n                    /*#__PURE__*/ _jsx(NpsDescription, {\n                        value: description,\n                        onChange: setDescription,\n                        context: context\n                    }),\n                    /*#__PURE__*/ _jsx(Text, {\n                        children: context.loc('Nps_SurveyModal_AdditionalInfo_Text', additionalInfoDefaultText)\n                    }),\n                    email && /*#__PURE__*/ _jsx(Checkbox, {\n                        label: context.locParams('Nps_SurveyModal_CheckboxLabel_Text', [\n                            email\n                        ], checkboxLabelDefaultText(email)),\n                        checked: contactCheckboxChecked,\n                        onChange: toggleContactCheckbox\n                    }),\n                    /*#__PURE__*/ _jsx(NpsTermsAndPrivacy, {\n                        context: context\n                    })\n                ]\n            }),\n            /*#__PURE__*/ _jsx(DialogFooter, {\n                children: /*#__PURE__*/ _jsx(PrimaryButton, {\n                    text: context.loc('Nps_SurveyModal_SubmitButton_Text', 'Submit'),\n                    onClick: handleSubmit,\n                    disabled: selectedRating === null\n                })\n            })\n        ]\n    });\n};\n","import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from \"react/jsx-runtime\";\nimport React from 'react';\nimport { useBoolean } from '@fluentui/react-hooks';\nimport { NpsPreviewModal, NpsSubmittedModal, NpsSurveyModal } from '@appsource/components/modals';\nexport const NpsModal = ({ email, showPreviewModal, onDismissPreview, onDismissSurvey, onSubmitted, correlationId, context })=>{\n    const [hidePreviewDialog, { toggle: toggleHidePreviewDialog }] = useBoolean(!showPreviewModal);\n    const [hideSurveyDialog, { toggle: toggleHideSurveyDialog }] = useBoolean(showPreviewModal);\n    const [hideSubmittedDialog, { toggle: toggleHideSubmittedDialog }] = useBoolean(true);\n    const handleDismissPreview = ()=>{\n        toggleHidePreviewDialog();\n        onDismissPreview();\n    };\n    const handleSubmitPreview = ()=>{\n        toggleHidePreviewDialog();\n        toggleHideSurveyDialog();\n    };\n    const handleDismissSurvey = ()=>{\n        toggleHideSurveyDialog();\n        onDismissSurvey();\n    };\n    const handleSubmitSurvey = (answer)=>{\n        toggleHideSurveyDialog();\n        onSubmitted(answer);\n        toggleHideSubmittedDialog();\n    };\n    return /*#__PURE__*/ _jsxs(_Fragment, {\n        children: [\n            /*#__PURE__*/ _jsx(NpsPreviewModal, {\n                hidden: hidePreviewDialog,\n                onDismiss: handleDismissPreview,\n                onSubmit: handleSubmitPreview,\n                context: context\n            }),\n            /*#__PURE__*/ _jsx(NpsSurveyModal, {\n                hidden: hideSurveyDialog,\n                email: email,\n                onDismiss: handleDismissSurvey,\n                onSubmit: handleSubmitSurvey,\n                context: context\n            }),\n            /*#__PURE__*/ _jsx(NpsSubmittedModal, {\n                hidden: hideSubmittedDialog,\n                onDismiss: toggleHideSubmittedDialog,\n                context: context,\n                correlationId: correlationId\n            })\n        ]\n    });\n};\n","function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nfunction _object_spread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        var ownKeys = Object.keys(source);\n        if (typeof Object.getOwnPropertySymbols === \"function\") {\n            ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n            }));\n        }\n        ownKeys.forEach(function(key) {\n            _define_property(target, key, source[key]);\n        });\n    }\n    return target;\n}\nfunction ownKeys(object, enumerableOnly) {\n    var keys = Object.keys(object);\n    if (Object.getOwnPropertySymbols) {\n        var symbols = Object.getOwnPropertySymbols(object);\n        if (enumerableOnly) {\n            symbols = symbols.filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n            });\n        }\n        keys.push.apply(keys, symbols);\n    }\n    return keys;\n}\nfunction _object_spread_props(target, source) {\n    source = source != null ? source : {};\n    if (Object.getOwnPropertyDescriptors) {\n        Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n        ownKeys(Object(source)).forEach(function(key) {\n            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n    }\n    return target;\n}\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport React, { useEffect, useRef } from 'react';\nimport { NpsModal } from '@appsource/components/modals';\nimport { getNpsModule } from '@appsource/utils/nps';\nimport { getWindow } from '@shared/services/window';\nimport { Constants } from '@shared/utils/constants';\nimport { useSpzaInstrumentService } from '@shared/hooks';\nimport { storeFeedback } from '@shared/services/feedback';\nimport { logger } from '@src/logger';\nexport const Nps = ({ email, correlationId, context })=>{\n    const [instrument] = useSpzaInstrumentService();\n    const showPreviewModalRef = useRef(false);\n    useEffect(()=>{\n        var _getNpsModule;\n        const payload = {\n            page: getWindow().location.href,\n            action: Constants.Telemetry.Action.NPS,\n            actionModifier: Constants.Telemetry.ActionModifier.NpsPresented,\n            details: JSON.stringify(_object_spread_props(_object_spread({}, ((_getNpsModule = getNpsModule()) === null || _getNpsModule === void 0 ? void 0 : _getNpsModule.metadata) || {}), {\n                previewModal: showPreviewModalRef.current\n            }))\n        };\n        instrument.probe('logAndFlushTelemetryInfo', payload);\n        logger.info(payload.details, {\n            action: payload.action,\n            actionModifier: payload.actionModifier\n        });\n    }, [\n        instrument\n    ]);\n    const handleSubmit = (answer)=>{\n        var _getNpsModule;\n        (_getNpsModule = getNpsModule()) === null || _getNpsModule === void 0 ? void 0 : _getNpsModule.npsSubmitted();\n        const userTelemetryPayload = {\n            page: getWindow().location.href,\n            action: Constants.Telemetry.Action.NPS,\n            actionModifier: Constants.Telemetry.ActionModifier.NpsSurveySubmitted,\n            details: JSON.stringify({\n                previewModal: showPreviewModalRef.current\n            })\n        };\n        const userFeedbackPayload = {\n            page: getWindow().location.href,\n            action: Constants.Telemetry.Action.NPS,\n            actionModifier: Constants.Telemetry.ActionModifier.Info,\n            details: JSON.stringify(_object_spread_props(_object_spread({}, answer), {\n                rating: `${answer.rating}`,\n                previewModal: showPreviewModalRef.current\n            })),\n            isFeedback: true\n        };\n        instrument.probe('logAndFlushTelemetryInfo', userTelemetryPayload);\n        instrument.probe('logAndFlushTelemetryInfo', userFeedbackPayload);\n        logger.info(userTelemetryPayload.details, {\n            action: userTelemetryPayload.action,\n            actionModifier: userTelemetryPayload.actionModifier\n        });\n        storeFeedback({\n            action: userFeedbackPayload.action,\n            actionModifier: userFeedbackPayload.actionModifier,\n            details: userFeedbackPayload.details\n        });\n    };\n    const handleDismissPreview = ()=>{\n        var _getNpsModule;\n        (_getNpsModule = getNpsModule()) === null || _getNpsModule === void 0 ? void 0 : _getNpsModule.npsDismissed();\n        const payload = {\n            page: getWindow().location.href,\n            action: Constants.Telemetry.Action.NPS,\n            actionModifier: Constants.Telemetry.ActionModifier.NpsPreviewDismissed,\n            details: ''\n        };\n        instrument.probe('logAndFlushTelemetryInfo', payload);\n        logger.info(payload.details, {\n            action: payload.action,\n            actionModifier: payload.actionModifier\n        });\n    };\n    const handleDismissSurvey = ()=>{\n        var _getNpsModule;\n        (_getNpsModule = getNpsModule()) === null || _getNpsModule === void 0 ? void 0 : _getNpsModule.npsDismissed();\n        const payload = {\n            page: getWindow().location.href,\n            action: Constants.Telemetry.Action.NPS,\n            actionModifier: Constants.Telemetry.ActionModifier.NpsSurveyDismissed,\n            details: ''\n        };\n        instrument.probe('logAndFlushTelemetryInfo', payload);\n        logger.info(payload.details, {\n            action: payload.action,\n            actionModifier: payload.actionModifier\n        });\n    };\n    return /*#__PURE__*/ _jsx(NpsModal, {\n        email: email,\n        showPreviewModal: showPreviewModalRef.current,\n        onDismissPreview: handleDismissPreview,\n        onDismissSurvey: handleDismissSurvey,\n        onSubmitted: handleSubmit,\n        correlationId: correlationId,\n        context: context\n    });\n};\n","// eslint-disable-next-line spaced-comment\n///<reference types=\"@wcp/wcp-consent\" />\nimport { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from \"react/jsx-runtime\";\nimport React, { useEffect, useState } from 'react';\nimport { Constants } from '@shared/utils/constants';\nimport { getWindow, getDocument } from '@shared/services/window';\nimport { stringifyError } from '@shared/utils/errorUtils';\nimport { SpzaInstrumentService } from '@shared/services/telemetry/spza/spzaInstrument';\nimport { logger } from '@src/logger';\nimport { MsClarity, MsClarityEnabledEnvironments } from '@shared/components/msClarity';\nimport { COMSCORE_URL } from '@appsource/utils/comscore';\nimport * as appConfig from '@shared/services/init/appConfig';\nconst shouldTrack = (consent)=>{\n    return consent.Required && consent.Analytics || !consent.Required;\n};\nlet siteConsent = null;\nconst CookieBannerComponent = ()=>/*#__PURE__*/ _jsx(\"div\", {\n        id: Constants.Cookies.WCPBannerName,\n        className: Constants.Cookies.WCPBannerName\n    });\n// wrapper to WCP\nexport const CookieBanner = ({ resetCookieManagementModal, locale, updateSiteConsent, updateIsConsentRequired, isManagementModalOpen, siteEnvironment })=>{\n    const [allowTracking, setAllowTracking] = useState(false);\n    const [isComScorePresent, setIsComScorePresent] = useState(false);\n    const isMsClarityEnabled = MsClarityEnabledEnvironments.some((environment)=>siteEnvironment === environment);\n    const handleNewConsent = (newConsent)=>{\n        const telemetryData = {\n            page: getWindow().location.href,\n            action: Constants.Telemetry.Action.ConsentBanner,\n            actionModifier: Constants.Telemetry.ActionModifier.HandleNewConsent,\n            details: 'onConsentChanged: ' + JSON.stringify(newConsent)\n        };\n        SpzaInstrumentService.getProvider().probe('logTelemetryInfo', telemetryData);\n        logger.info(telemetryData.details, {\n            action: telemetryData.action,\n            actionModifier: telemetryData.actionModifier\n        });\n        setAllowTracking(shouldTrack(newConsent));\n    };\n    const manageCookies = ()=>{\n        if (siteConsent) {\n            siteConsent.manageConsent();\n            resetCookieManagementModal();\n        }\n    };\n    const getConsent = ()=>{\n        var _getWindow_WcpConsent, _getWindow;\n        (_getWindow = getWindow()) === null || _getWindow === void 0 ? void 0 : (_getWindow_WcpConsent = _getWindow.WcpConsent) === null || _getWindow_WcpConsent === void 0 ? void 0 : _getWindow_WcpConsent.init(locale, Constants.Cookies.WCPBannerName, (err, _siteConsent)=>{\n            const telemetryData = {\n                page: getWindow().location.href,\n                action: Constants.Telemetry.Action.ConsentBanner,\n                actionModifier: Constants.Telemetry.ActionModifier.GetConsent,\n                details: 'initConsentBanner: start'\n            };\n            if (err) {\n                telemetryData.actionModifier = Constants.Telemetry.ActionModifier.Error;\n                telemetryData.details = 'initConsentBanner Error: ' + stringifyError(err);\n            } else {\n                siteConsent = _siteConsent;\n                const wcpConsent = _siteConsent.getConsent();\n                appConfig.set('siteConsent', wcpConsent);\n                updateSiteConsent(wcpConsent);\n                updateIsConsentRequired(_siteConsent.isConsentRequired);\n                telemetryData.details = 'initConsentBanner: ' + JSON.stringify(_siteConsent.getConsent());\n                setAllowTracking(shouldTrack(siteConsent.getConsent()));\n                if (!getDocument().getElementById(Constants.Cookies.WCPManageCookieBtnId) && _siteConsent.isConsentRequired) {\n                    telemetryData.actionModifier = Constants.Telemetry.ActionModifier.Error;\n                    telemetryData.details = 'error - no manage btn for local: ' + locale;\n                    SpzaInstrumentService.getProvider().probe('logTelemetryInfo', telemetryData);\n                    logger.error(telemetryData.details, {\n                        action: telemetryData.action,\n                        actionModifier: telemetryData.actionModifier\n                    });\n                }\n            }\n            SpzaInstrumentService.getProvider().probe('logTelemetryInfo', telemetryData);\n            logger.info(telemetryData.details, {\n                action: telemetryData.action,\n                actionModifier: telemetryData.actionModifier\n            });\n        }, (newConsent)=>{\n            updateSiteConsent(newConsent);\n            appConfig.set('siteConsent', newConsent);\n            handleNewConsent(newConsent);\n        });\n    };\n    const wcpConsentCallBack = ()=>{\n        var _getWindow;\n        logger.info(`wcpConsentCallBack: get WcpConsent :${!!((_getWindow = getWindow()) === null || _getWindow === void 0 ? void 0 : _getWindow.WcpConsent)}`, {\n            action: Constants.Telemetry.Action.ConsentBanner,\n            actionModifier: Constants.Telemetry.ActionModifier.WcpConsentCallBack\n        });\n        getConsent();\n    };\n    const wcpConsentListener = ()=>{\n        var _getWindow;\n        ((_getWindow = getWindow()) === null || _getWindow === void 0 ? void 0 : _getWindow.WcpConsent) ? getConsent() : getWindow().addEventListener(Constants.Cookies.WCPEventName, wcpConsentCallBack);\n        return ()=>{\n            try {\n                getWindow().removeEventListener(Constants.Cookies.WCPEventName, wcpConsentCallBack);\n                logger.info('removeEventListener', {\n                    action: Constants.Telemetry.Action.ConsentBanner,\n                    actionModifier: Constants.Telemetry.ActionModifier.RemoveEventListener\n                });\n            } catch (error) {\n                logger.error(`Error removing event listener: ${error}`, {\n                    action: Constants.Telemetry.Action.ConsentBanner,\n                    actionModifier: Constants.Telemetry.ActionModifier.Error\n                });\n            }\n        };\n    };\n    const loadComScoreScript = ()=>{\n        setIsComScorePresent(true);\n        const scriptElement = getDocument().createElement('script');\n        scriptElement.src = COMSCORE_URL;\n        scriptElement.async = false;\n        document.body.appendChild(scriptElement);\n    };\n    useEffect(()=>{\n        if (isManagementModalOpen) {\n            manageCookies();\n        }\n    }, [\n        isManagementModalOpen\n    ]);\n    useEffect(()=>{\n        wcpConsentListener();\n    }, []);\n    useEffect(()=>{\n        if (allowTracking && !isComScorePresent) {\n            loadComScoreScript();\n        }\n    }, [\n        allowTracking\n    ]);\n    return /*#__PURE__*/ _jsxs(_Fragment, {\n        children: [\n            isMsClarityEnabled && /*#__PURE__*/ _jsx(MsClarity, {\n                allowTracking: allowTracking\n            }),\n            /*#__PURE__*/ _jsx(CookieBannerComponent, {})\n        ]\n    });\n};\n","import { connect } from 'react-redux';\nimport { CookieBanner as CookieBannerComponent } from '@shared/components/cookieBanner';\nimport { createIsManageModalOpenAction, createSetWCPConsentAction, createSetIsConsentRequiredAction } from '@shared/actions/actions';\nimport { Constants } from '@shared/utils/constants';\nconst mapStateToProps = (state)=>{\n    const { config: { locale = Constants.Cookies.WCPDefaultLocale, cookiesConsent, siteEnvironment } } = state;\n    return {\n        locale,\n        isManagementModalOpen: cookiesConsent.isManageModalOpen,\n        siteEnvironment\n    };\n};\nconst mapDispatchToProps = (dispatch)=>{\n    return {\n        resetCookieManagementModal: ()=>dispatch(createIsManageModalOpenAction(false)),\n        updateSiteConsent: (consent)=>dispatch(createSetWCPConsentAction(consent)),\n        updateIsConsentRequired: (consent)=>dispatch(createSetIsConsentRequiredAction(consent))\n    };\n};\nexport const CookieBanner = connect(mapStateToProps, mapDispatchToProps)(CookieBannerComponent);\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport * as React from 'react';\nimport SpzaComponent from './spzaComponent';\nimport Animation from './animation';\nclass Loader extends SpzaComponent {\n    renderImpl() {\n        return /*#__PURE__*/ _jsx(\"div\", {\n            className: \"animation\",\n            children: /*#__PURE__*/ _jsx(Animation, {\n                isCircular: true\n            })\n        });\n    }\n}\nexport { Loader as default };\n","import { Constants } from '@shared/utils/constants';\nimport { UserSegment } from '@shared/Models';\nimport { jwtDecode } from 'jwt-decode';\nimport { isEmpty, startCase } from 'lodash-es';\nimport { getAppConfig } from '@shared/services/init/appConfig';\nimport { logger } from '@src/logger';\nimport { stringifyError } from '@shared/utils/errorUtils';\nexport const EMPTY_ACCESS_TOKEN = {\n    arm: '',\n    graph: '',\n    spza: '',\n    pifd: '',\n    commerce: '',\n    jarvis: '',\n    marketplaceLeads: ''\n};\nexport const isMSAUser = ({ claims })=>{\n    return !isEmpty(claims) && !Object.keys(claims).includes('oid');\n};\nexport const getUserSegment = ({ claims })=>{\n    if (!claims || isEmpty(claims)) {\n        return UserSegment.unauthenticated;\n    }\n    return isMSAUser({\n        claims\n    }) ? UserSegment.consumer : UserSegment.business;\n};\nexport const createGuestUser = ()=>{\n    return {\n        id: '',\n        group: [\n            'guest'\n        ],\n        signedIn: false,\n        tid: '',\n        accessToken: EMPTY_ACCESS_TOKEN,\n        oid: '',\n        displayName: 'guest',\n        givenName: '',\n        puid: '',\n        lastName: '',\n        uniqueName: '',\n        firstName: '',\n        familyName: '',\n        email: 'guest@',\n        alternateEmail: '',\n        isMSAUser: false,\n        userSegment: UserSegment.unauthenticated,\n        fieldHubUserType: Constants.FieldHubUserType.None,\n        homeAccountId: null\n    };\n};\nexport const createAuthenticatedUser = ({ accessTokens, account, ssoStartTime })=>{\n    try {\n        var _name_split, _name_split1, _name_split2, _name_split3, _name_split4;\n        const { username, homeAccountId } = account;\n        const { puid, tid, name, preferred_username: preferredUsername, oid } = account.idTokenClaims;\n        const { spza } = accessTokens;\n        if (!spza) throw new Error('Spza token is missing');\n        const userClaims = jwtDecode(spza);\n        const { given_name: givenName, family_name: familyName } = userClaims;\n        var _ref, _ref1, _ref2, _ref3, _ref4;\n        const user = {\n            id: puid,\n            group: [\n                'aad'\n            ],\n            signedIn: true,\n            tid,\n            displayName: startCase(name !== null && name !== void 0 ? name : username.split('@')[0]),\n            givenName: startCase((_ref = givenName !== null && givenName !== void 0 ? givenName : name === null || name === void 0 ? void 0 : (_name_split = name.split(' ')) === null || _name_split === void 0 ? void 0 : _name_split[0]) !== null && _ref !== void 0 ? _ref : username.split('@')[0]),\n            firstName: startCase((_ref1 = givenName !== null && givenName !== void 0 ? givenName : name === null || name === void 0 ? void 0 : (_name_split1 = name.split(' ')) === null || _name_split1 === void 0 ? void 0 : _name_split1[0]) !== null && _ref1 !== void 0 ? _ref1 : username.split('@')[0]),\n            familyName: startCase((_ref2 = familyName !== null && familyName !== void 0 ? familyName : name === null || name === void 0 ? void 0 : (_name_split2 = name.split(' ')) === null || _name_split2 === void 0 ? void 0 : _name_split2[1]) !== null && _ref2 !== void 0 ? _ref2 : username.split('@')[0]),\n            lastName: startCase((_ref3 = familyName !== null && familyName !== void 0 ? familyName : name === null || name === void 0 ? void 0 : (_name_split3 = name.split(' ')) === null || _name_split3 === void 0 ? void 0 : _name_split3[1]) !== null && _ref3 !== void 0 ? _ref3 : username.split('@')[0]),\n            uniqueName: startCase((_ref4 = familyName !== null && familyName !== void 0 ? familyName : name === null || name === void 0 ? void 0 : (_name_split4 = name.split(' ')) === null || _name_split4 === void 0 ? void 0 : _name_split4[1]) !== null && _ref4 !== void 0 ? _ref4 : username.split('@')[0]),\n            puid: puid,\n            email: preferredUsername,\n            oid,\n            alternateEmail: preferredUsername,\n            isMSAUser: isMSAUser({\n                claims: userClaims\n            }),\n            userSegment: getUserSegment({\n                claims: userClaims\n            }),\n            fieldHubUserType: Constants.FieldHubUserType.None,\n            homeAccountId,\n            accessToken: accessTokens,\n            graphApi: getAppConfig('graphApi'),\n            refreshToken: ''\n        };\n        logger.info(JSON.stringify({\n            isMSAUser: user.isMSAUser,\n            UserSegment: user.userSegment,\n            durationInMS: ssoStartTime ? Date.now() - ssoStartTime : null\n        }), {\n            action: Constants.Telemetry.Action.Login,\n            actionModifier: Constants.Telemetry.ActionModifier.CreateAuthenticatedUserSuccess\n        });\n        return user;\n    } catch (error) {\n        logger.error(stringifyError(error), {\n            action: Constants.Telemetry.Action.Login,\n            actionModifier: Constants.Telemetry.ActionModifier.CreateAuthenticatedUserFailure,\n            error\n        });\n        return createGuestUser();\n    }\n};\n","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n    try {\n        var info = gen[key](arg);\n        var value = info.value;\n    } catch (error) {\n        reject(error);\n        return;\n    }\n    if (info.done) {\n        resolve(value);\n    } else {\n        Promise.resolve(value).then(_next, _throw);\n    }\n}\nfunction _async_to_generator(fn) {\n    return function() {\n        var self = this, args = arguments;\n        return new Promise(function(resolve, reject) {\n            var gen = fn.apply(self, args);\n            function _next(value) {\n                asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n            }\n            function _throw(err) {\n                asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n            }\n            _next(undefined);\n        });\n    };\n}\nimport { jsx as _jsx, Fragment as _Fragment } from \"react/jsx-runtime\";\nimport React, { useEffect, useRef, useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { InteractionRequiredAuthError, InteractionStatus, InteractionType } from '@azure/msal-browser';\nimport { useMsal, useMsalAuthentication } from '@azure/msal-react';\nimport { logger } from '@src/logger';\nimport { updateUser } from '@shared/actions/thunkActions';\nimport { createAuthenticatedUser, createGuestUser } from '@shared/msal/user';\nimport { Constants } from '@shared/utils/constants';\nimport { getExtraScopesToConsent } from '@shared/msal/scopes';\nimport { fetchAccessTokens } from '@shared/msal/tokens';\nimport { stringifyError } from '@shared/utils/errorUtils';\nimport { getSilentRedirectUri } from '@shared/msal/config';\nimport { getLocalStorageItem, saveLocalStorageItem } from '@shared/utils/browserStorageUtils';\nconst SilentClientLogin = ()=>{\n    const dispatch = useDispatch();\n    const [hasActiveUser, setHasActiveUser] = useState(false);\n    const ssoStartTime = useRef(null);\n    const { error, result } = useMsalAuthentication(InteractionType.Silent, {\n        redirectUri: getSilentRedirectUri(),\n        extraScopesToConsent: getExtraScopesToConsent(),\n        loginHint: getLocalStorageItem(Constants.LocalStorage.LoginHint)\n    });\n    const { accounts, instance, inProgress } = useMsal();\n    const activeAccount = accounts === null || accounts === void 0 ? void 0 : accounts[0];\n    useEffect(()=>{\n        const setActiveUser = /*#__PURE__*/ function() {\n            var _ref = _async_to_generator(function*() {\n                instance.setActiveAccount(activeAccount);\n                saveLocalStorageItem(Constants.LocalStorage.LoginHint, activeAccount.idTokenClaims.login_hint);\n                const accessTokens = yield fetchAccessTokens({\n                    resources: [\n                        'spza',\n                        'arm',\n                        'graph',\n                        'commerce',\n                        'jarvis',\n                        'marketplaceLeads',\n                        'pifd',\n                        'agreement'\n                    ]\n                });\n                const user = createAuthenticatedUser({\n                    accessTokens,\n                    account: activeAccount,\n                    ssoStartTime: ssoStartTime.current\n                });\n                dispatch(updateUser({\n                    userDetails: user\n                }));\n            });\n            return function setActiveUser() {\n                return _ref.apply(this, arguments);\n            };\n        }();\n        if (activeAccount && !hasActiveUser && inProgress === InteractionStatus.None) {\n            setHasActiveUser(true);\n            setActiveUser();\n        }\n    }, [\n        activeAccount,\n        hasActiveUser,\n        inProgress,\n        dispatch,\n        instance\n    ]);\n    useEffect(()=>{\n        if (error) {\n            dispatch(updateUser({\n                userDetails: createGuestUser()\n            }));\n            const stringifiedError = stringifyError(error);\n            if (error instanceof InteractionRequiredAuthError) {\n                logger.warning(stringifiedError, {\n                    action: Constants.Telemetry.Action.Login,\n                    actionModifier: Constants.Telemetry.ActionModifier.SSO_LOGIN_ERROR\n                });\n            } else {\n                logger.error(stringifiedError, {\n                    action: Constants.Telemetry.Action.Login,\n                    actionModifier: Constants.Telemetry.ActionModifier.SSO_LOGIN_ERROR,\n                    error\n                });\n            }\n        }\n    }, [\n        error\n    ]);\n    useEffect(()=>{\n        if (result) {\n            logger.info(JSON.stringify({\n                fromCache: result.fromCache\n            }), {\n                action: Constants.Telemetry.Action.Login,\n                actionModifier: Constants.Telemetry.ActionModifier.SSO_LOGIN_SUCCEEDED\n            });\n        }\n    }, [\n        result\n    ]);\n    useEffect(()=>{\n        ssoStartTime.current = Date.now();\n        logger.info('', {\n            action: Constants.Telemetry.Action.Login,\n            actionModifier: Constants.Telemetry.ActionModifier.Start\n        });\n    }, []);\n    return /*#__PURE__*/ _jsx(_Fragment, {});\n};\nexport default SilentClientLogin;\n","function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nfunction _object_spread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        var ownKeys = Object.keys(source);\n        if (typeof Object.getOwnPropertySymbols === \"function\") {\n            ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n            }));\n        }\n        ownKeys.forEach(function(key) {\n            _define_property(target, key, source[key]);\n        });\n    }\n    return target;\n}\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { Outlet } from 'react-router';\nimport classNames from 'classnames';\nimport { Stack } from '@fluentui/react';\nimport SpzaComponent from '@shared/components/spzaComponent';\nimport Modal from '@shared/containers/modals/modal';\nimport { isJsonString, logTenantInfo, getSpzaUserIdAndNewUserModifier, isEmbedded as serverIsEmbedded, getTrailIdAndData, getHostType, getAppTelemetryDetailContentText } from '@shared/utils/appUtils';\nimport { handleCTACallback } from '@shared/handlers/appViewHandler';\nimport { Footer } from '@shared/containers/footer';\nimport { removeUserUniqueQueryParams } from '@shared/routerHistory';\nimport { initializeNpsModule } from '@appsource/utils/nps';\nimport { closeAzureHeaderNavDropdown, forceAzureHeaderNavStatic } from '@shared/utils/appViewUtils';\nimport { Nps } from '@appsource/components/nps';\nimport { logger } from '@src/logger';\nimport { getWindow } from '@shared/services/window';\nimport { Constants } from '@shared/utils/constants';\nimport { shouldShowCookieBanner } from '@shared/utils/cookieBannerUtils';\nimport { SpzaInstrumentService } from '@shared/services/telemetry/spza/spzaInstrument';\nimport { SharedInstrumentService } from '@shared/services/telemetry/shared/sharedInstrument';\nimport { NpsModule } from '@shared/utils/npsUtils';\nimport { CookieBanner } from '@shared/containers/cookieBanner';\nimport { handleSignUp } from '@shared/utils/signin';\nimport Loader from './loader';\nimport { stringifyError } from '@shared/utils/errorUtils';\nimport SilentClientLogin from './SilentClientLogin';\nimport { MsalProvider } from '@azure/msal-react';\nimport AuthClient from '@shared/msal/client';\nimport { logoutUser } from '@shared/msal/logout';\nconst RemoteHeader = /*#__PURE__*/ React.lazy(()=>import('./FederatedModules/RemoteHeader'));\nconst EmbedHeader = /*#__PURE__*/ React.lazy(()=>import('@embed/containers/header').then(({ default: EmbedHeader })=>({\n            default: /*#__PURE__*/ React.memo(({ props })=>/*#__PURE__*/ _jsx(EmbedHeader, _object_spread({}, props)))\n        })));\nexport class AppView extends SpzaComponent {\n    performSearchIfNeeded(props) {\n        // The embedded app doesn't use Azure search, just live filtering\n        // But, for embedded OCP we are using the Azure search\n        if (props.isEmbedded) {\n            return;\n        }\n        // you might wonder why we are executing the search here, instead of on the server or in the\n        // search component. This is because we also want to make sure we execute the search if someone\n        // uses the back button, which does not result in the search component searching, nor in the\n        // server to be hit for a new request.\n        // this route can work with the following params:\n        // 1. filtering\n        // 2. search\n        // in the case of filtering: the filtering pane takes care of everything\n        // in the case of searching: we should make sure that the right data is fetched\n        // we need to perform the search if:\n        // 1. we have a search query in the params\n        // 2. that search query is different from the search query used to build the subset data with\n        const urlQuery = props.locationQuery;\n        const search = urlQuery === null || urlQuery === void 0 ? void 0 : urlQuery.search;\n        const subscetQueryParamChanged = search !== props.performedSubsetQueryString;\n        const sortingQueryParam = urlQuery && urlQuery[Constants.FilterQuery.sortBy] ? urlQuery[Constants.FilterQuery.sortBy] : Constants.SearchSortingOption.BestMatch;\n        if (search) {\n            const sortingQueryParamChanged = sortingQueryParam !== props.searchSortingOption;\n            let shouldPerformSearchAll = false;\n            shouldPerformSearchAll = search.length >= 2 && (subscetQueryParamChanged || sortingQueryParamChanged);\n            if (sortingQueryParamChanged) {\n                props.searchSortingOptionChanged(sortingQueryParam);\n            }\n            if (shouldPerformSearchAll) {\n                // we are rendering this page while we do not have the correct subset of data\n                props.performSearchAll(search, sortingQueryParam);\n            }\n        } else if (props.performedSubsetQueryString && props.performedSubsetQueryString !== '') {\n            props.clearSearch();\n        }\n    }\n    errorHandling(error) {\n        try {\n            // The error object here vs the one that is used in the main client hook up are different adding this logging\n            // to see what are the diff types of error we are showing to later decide on when not to show the error modal for errors not raised by our components\n            const payload = {\n                page: getWindow().location.href,\n                action: Constants.Telemetry.Action.ErrorModal,\n                actionModifier: Constants.Telemetry.ActionModifier.Info,\n                appName: 'N.A',\n                details: error ? stringifyError(error) : 'Error object null'\n            };\n            this.instrument.probe('logAndFlushTelemetryInfo', payload);\n            logger.info(payload.details, {\n                action: payload.action,\n                actionModifier: payload.actionModifier,\n                appName: payload.appName\n            });\n            // TODO : Remove this hack after the Power BI null images issue is sorted out\n            let showError = true;\n            if (error.target[`${'nodeName'}`] && error.srcElement[`${'nodeName'}`] && (error.target[`${'nodeName'}`].toString() === 'image' || error.srcElement[`${'nodeName'}`].toString() === 'image' || error.target[`${'nodeName'}`].toString() === 'IMG' || error.srcElement[`${'nodeName'}`].toString() === 'IMG')) {\n                showError = false;\n            }\n            // We dont wanna show errors for an empty or isTrusted error object as the site is still expected to be functional\n            if (error && Object.getOwnPropertyNames(error).length === 0 || error && error.isTrusted && error.isTrusted === true) {\n                showError = false;\n            }\n            if (showError) {\n                this.props.showErrorModal();\n            }\n        } catch (err) {\n            console.log('something went wrong while showing error modal' + err);\n        }\n    }\n    // We need to remove all the event listeners once the component is unmounted.\n    componentWillUnmount() {\n        window.onbeforeunload = null;\n        window.onpopstate = null;\n    // getWindow().removeEventListener('error', this.errorHandling.bind(this), false);\n    }\n    // We have 3 steps in the auto sign-in behavior.\n    // Step 1: Make a call to the AAD and get the user info into the sub iframe.\n    // Step 2: Make a post message from the sub iframe to the parent appsource site with the user info.[This receiveMessage api will be called when we receive the message]\n    // Step 3 : Using this user data, we make a auto signin action which will update the State using userDataReducer\n    receiveMessage(event) {\n        var _event_;\n        // We should listen only to the messages from the iframes with the same origin.\n        if (!event || !event[`${'data'}`] || !event[`${'origin'}`] || !window.location.hostname || ((_event_ = event[`${'origin'}`]) === null || _event_ === void 0 ? void 0 : _event_.indexOf(window.location.hostname)) === -1) {\n            return;\n        }\n        const data = event[`${'data'}`]; // Extract the payload data from the event\n        const payload = data ? isJsonString(data) : '';\n        // If the user is already signed-in, we should not trigger the sign in action\n        // Also check for the null values in the mandatory fields.\n        if (payload && payload[`${'msgType'}`] === 'authIframe' && payload[`${'signedIn'}`] && payload[`${'group'}`] && payload[`${'accessToken'}`] && payload[`${'refreshToken'}`] && payload[`${'firstName'}`] && payload[`${'lastName'}`] && payload[`${'email'}`]) {\n            const userStore = this.props.userInfo;\n            SpzaInstrumentService.registerTenantInfo(userStore.oid, userStore.tid);\n            const userIdInfo = getSpzaUserIdAndNewUserModifier();\n            SpzaInstrumentService.registerSpzaId(userIdInfo.spzaUserId);\n            const userTrailIdInfo = getTrailIdAndData();\n            SpzaInstrumentService.registerTrailId(userTrailIdInfo.trailId);\n            SpzaInstrumentService.registerHostType(getHostType(this.props.isEmbedded));\n            logTenantInfo(this.props.userInfo, true, userIdInfo.spzaUserId);\n        }\n    }\n    onWindowBeforeUnload() {\n        // attach to the onbeforeunload window event\n        if (!window.onbeforeunload) {\n            window.onbeforeunload = function() {\n                // flush the buffer if we have anything in it\n                SpzaInstrumentService.getProvider().probe('flushTelemetryInfo');\n                SharedInstrumentService.getProvider().probe('flushTelemetryInfo');\n                // save session end time for NPS\n                NpsModule.SaveSessionEndTime();\n            };\n        }\n    }\n    onBrowserBackButton() {\n        if (!window.onpopstate) {\n            window.onpopstate = function() {\n                const payload = {\n                    page: window.location.href,\n                    action: Constants.Telemetry.Action.PageLoad,\n                    actionModifier: Constants.Telemetry.ActionModifier.StartBack\n                };\n                SpzaInstrumentService.getProvider().probe('logTelemetryInfo', payload);\n                logger.info('', {\n                    action: payload.action,\n                    actionModifier: payload.actionModifier\n                });\n            };\n        }\n    }\n    attachEventListener() {\n        // Auto-SignIn listener : Parent window is listening for the post message from the child iframe.\n        if (window.addEventListener) {\n            window.addEventListener('message', this.receiveMessage.bind(this), false);\n        } else {\n            window.attachEvent('onmessage', this.receiveMessage.bind(this)); // Added this for old versions of IE\n        }\n    }\n    getParameter(params, parameterName) {\n        if (params[`${parameterName}`]) {\n            if (typeof params[`${parameterName}`] === 'string') {\n                return params[`${parameterName}`];\n            }\n            return params[`${parameterName}`][0];\n        }\n        return undefined;\n    }\n    handleCookieBanner() {\n        // We should not show the cookie banner for Embed experience since the parent site handles the cookie banner experience.\n        // we should not show the banner for OCP as well as that is part of the appsource domain\n        if (!this.props.isEmbedded) {\n            this.showCookieBanner = shouldShowCookieBanner();\n        }\n    }\n    componentDidMount() {\n        this.setState({\n            isMounted: true\n        });\n        // onerror event handler is added in the mainClientHookup. Client error logs are rendered from there. We use this event listener for just showing the error dialog.\n        // getWindow().addEventListener('error', this.errorHandling.bind(this), true);\n        this.performSearchIfNeeded(this.props);\n        // UHF fixups\n        // NOTE: these need to be orchestrated with UHF changes in compass that I've made\n        // Skip UHF fixups for the embedded app\n        if (this.props.isEmbedded) {\n            this.attachEventListener();\n            return;\n        }\n        // attach to window onbeforeunload\n        this.onWindowBeforeUnload();\n        // attach to browser back button\n        this.onBrowserBackButton();\n        // Check for the cookie banner flag and set the CSS for the cookie banner.\n        this.handleCookieBanner();\n        if (!this.props.enableNewNps) {\n            NpsModule.Initialize(this.props.showNPSModal);\n        } else {\n            initializeNpsModule(()=>this.props.setIsNpsLogicVerified(true));\n        }\n        const params = this.props.locationQuery;\n        // This is added here for the sign-in/sign-up redirect scenarios which are triggered by CTA.\n        // Once we get redirected to SPZA after signing in, we need to show the CTA modal dialog.\n        if (params && params.modalAppId !== undefined) {\n            // Added this as a fallback case when there will be duplicate modalAppIds in the queryParams\n            // in case of uauth scenario the query params comes as an array after the round trip.\n            if (typeof params.modalAppId === 'string' || params.modalAppId && params.modalAppId.length > 0) {\n                this.props.showCTAModal({\n                    entityId: this.getParameter(params, 'modalAppId'),\n                    entityType: Constants.EntityType.App,\n                    ctaType: this.getParameter(params, 'ctaType')\n                });\n            }\n        }\n        if (params && params.modalServiceId !== undefined) {\n            // Added this as a fallback case when there will be duplicate modalAppIds in the queryParams\n            // in case of uauth scenario the query params comes as an array after the round trip.\n            if (typeof params.modalServiceId === 'string' || params.modalServiceId && params.modalServiceId.length > 0) {\n                this.props.showCTAModal({\n                    entityId: this.getParameter(params, 'modalServiceId'),\n                    entityType: Constants.EntityType.Service,\n                    ctaType: this.getParameter(params, 'ctaType')\n                });\n            }\n        }\n        if (params && params.modalPartnerId !== undefined) {\n            const modalPartnerId = this.getParameter(params, 'modalPartnerId');\n            if (params.entityId !== undefined && params.productId !== undefined) {\n                const crossListingAppcontext = {\n                    entityId: this.getParameter(params, 'entityId'),\n                    primaryProduct: this.getParameter(params, 'productId')\n                };\n                this.props.showContactModal(modalPartnerId, crossListingAppcontext);\n            } else {\n                this.props.showContactModal(modalPartnerId);\n            }\n        }\n        if (params && params.modalReviewId) {\n            // Added this as a fallback case when there will be duplicate modalReviewIds in the queryParams\n            // in case of uauth scenario the query params comes as an array after the round trip.\n            if (typeof params.modalReviewId === 'string' || params.modalReviewId && params.modalReviewId.length > 0) {\n                this.props.showReportAbuseModal(this.getParameter(params, 'modalReviewAppId'), this.getParameter(params, 'modalReviewId'), this.getParameter(params, 'modalReviewTitle'), this.getParameter(params, 'modalReviewSource'));\n            }\n        }\n        if (params && params.modalRatingId) {\n            if (typeof params.modalRatingId === 'string' || params.modalRatingId && params.modalRatingId.length > 0) {\n                const appId = this.getParameter(params, 'modalRatingId');\n                const appData = this.props.allApps.filter((x)=>{\n                    return x.entityId === appId;\n                })[0];\n                if (appData) {\n                    // eslint-disable-next-line @typescript-eslint/no-empty-function\n                    this.props.showRaingsModal(appData, null, appData.actionString, ()=>{});\n                }\n            }\n        }\n        forceAzureHeaderNavStatic();\n        removeUserUniqueQueryParams();\n    }\n    // For every page navigation, we need to check for the cookie change.\n    componentDidUpdate(prevProps) {\n        // first we save the current query parameters.\n        if (JSON.stringify(this.props.locationQuery) !== JSON.stringify(prevProps.locationQuery)) {\n            this.props.updateQuery(this.props.locationQuery);\n        }\n        this.performSearchIfNeeded(this.props);\n        const { userInfo } = this.props;\n        this.handleCookieBanner();\n        forceAzureHeaderNavStatic();\n        if (userInfo === null || userInfo === void 0 ? void 0 : userInfo.signedIn) {\n            const { oid, tid } = userInfo;\n            SpzaInstrumentService.registerTenantInfo(oid, tid);\n        // Consider querying TAS once (also save state )\n        }\n    }\n    getChildContext() {\n        return {\n            loc: (textid, fallback)=>{\n                let translated = this.props.localizedStrings[`${textid}`];\n                // todo: remove these underscores for production\n                translated = translated || fallback || textid;\n                return translated;\n            },\n            locParams: (textid, params, fallback)=>{\n                let translated = this.props.localizedStrings[`${textid}`];\n                for(let i = 0; i < params.length; i++){\n                    // eslint-disable-next-line security/detect-non-literal-regexp\n                    const regEx = new RegExp('\\\\{' + i + '\\\\}', 'gm');\n                    translated = translated || fallback || textid;\n                    let currentParam = params[`${i}`];\n                    if (currentParam && currentParam.length > 0 && currentParam[0] === '$') {\n                        currentParam = '$' + currentParam;\n                    }\n                    translated = translated.replace(regEx, currentParam);\n                }\n                return translated;\n            },\n            locDateString: (date, options)=>{\n                return date ? new Date(date).toLocaleDateString(this.props.locale, options) : null;\n            },\n            buildHref: this.props.buildHref,\n            ctaCallback: ({ entity, entityType, ctaType, skuId, actionModifier, hasLicense, planId, isOpenedFromPDP, ribbonKey })=>{\n                const { currentView, uiRole, nationalCloud, tileDataRequestId: requestId, isEmbedded } = this.props;\n                const payload = {\n                    page: getWindow().location.href,\n                    action: Constants.Telemetry.Action.Click,\n                    actionModifier,\n                    appName: entity.entityId,\n                    details: getAppTelemetryDetailContentText({\n                        appInfo: entity,\n                        isNationalCloud: !!nationalCloud,\n                        isEmbedded,\n                        ctaTypes: [\n                            ctaType\n                        ],\n                        currentView,\n                        tileDataRequestId: requestId,\n                        uiRole,\n                        hasLicense,\n                        planId,\n                        ribbonKey\n                    })\n                };\n                if (entity.linkedAddIns && entity.linkedAddIns.length > 0) {\n                    const payloadDetails = JSON.parse(payload.details);\n                    payloadDetails.isSaaSBundle = true;\n                    payload.details = JSON.stringify(payloadDetails);\n                }\n                this.instrument.probe('logAndFlushTelemetryInfo', payload);\n                logger.info(payload.details, {\n                    action: payload.action,\n                    actionModifier: payload.actionModifier,\n                    appName: payload.appName\n                });\n                // getUserAuthStatus will validate if the user has the right refreh token/cookie combo and if not\n                // will enfore a sign in.\n                if (this.props.getUserAuthStatus) {\n                    handleCTACallback({\n                        props: this.props,\n                        entity,\n                        entityType,\n                        ctaType,\n                        skuId,\n                        planId,\n                        isOpenedFromPDP,\n                        ribbonKey\n                    });\n                }\n            },\n            openTileCallback: (detailUrl)=>{\n                this.props.openTile(detailUrl);\n            },\n            renderErrorModal: ()=>{\n                this.props.showErrorModal();\n            },\n            reportAbuseCallback: (appId, reviewId, reviewTitle, reviewSource)=>{\n                // getUserAuthStatus will validate if the user has the right refreh token/cookie combo and if not\n                // will enfore a sign in.\n                if (this.props.getUserAuthStatus) {\n                    return this.props.getUserAuthStatus().then(()=>{\n                        return this.props.showReportAbuseModal(appId, reviewId, reviewTitle, reviewSource);\n                    });\n                }\n            },\n            getAppHeaderHeight: ()=>{\n                var _this_headerRef_current, _this_headerRef;\n                return (_this_headerRef = this.headerRef) === null || _this_headerRef === void 0 ? void 0 : (_this_headerRef_current = _this_headerRef.current) === null || _this_headerRef_current === void 0 ? void 0 : _this_headerRef_current.clientHeight;\n            }\n        };\n    }\n    renderFailImpl() {\n        // rendering is never allowed to throw an exception\n        return this.props.showModal ? /*#__PURE__*/ _jsx(Modal, {}) : null;\n    }\n    onClickAppViewHandle() {\n        closeAzureHeaderNavDropdown();\n    }\n    renderImpl() {\n        const { isEmbedded, enableNewNps, npsLogicVerified, isMobile, userInfo, correlationId, favoritesCount, openSignInModal, isInErrorDialog, initLoading, regionDisabled, onMarketChange, onLocaleChange, showModal, locationQuery, regionCode, locale, pcaInstanceInitialized, isConverged } = this.props;\n        const isUserSignedIn = userInfo ? userInfo.signedIn : false;\n        const renderNewNps = enableNewNps && isUserSignedIn && npsLogicVerified && !isMobile;\n        const { signedIn, loading } = userInfo;\n        NpsModule.ResetNPSIdle();\n        if (isInErrorDialog) {\n            // some component failed rendering, so we can't trust to render components again\n            return /*#__PURE__*/ _jsx(Modal, {});\n        } else if (isEmbedded && initLoading) {\n            return /*#__PURE__*/ _jsx(Loader, {});\n        } else {\n            const params = locationQuery || null;\n            return /*#__PURE__*/ _jsxs(\"div\", {\n                className: classNames({\n                    spza_root: !serverIsEmbedded(),\n                    spza_rootEmbedded: serverIsEmbedded()\n                }),\n                onClick: ()=>this.onClickAppViewHandle(),\n                children: [\n                    this.state.isMounted && pcaInstanceInitialized && /*#__PURE__*/ _jsx(MsalProvider, {\n                        instance: AuthClient.getInstance(),\n                        children: /*#__PURE__*/ _jsx(SilentClientLogin, {})\n                    }),\n                    isEmbedded ? /*#__PURE__*/ _jsx(EmbedHeader, {\n                        props: {\n                            locale,\n                            query: params\n                        }\n                    }) : /*#__PURE__*/ _jsxs(Stack, {\n                        styles: {\n                            root: {\n                                position: 'sticky',\n                                top: 0,\n                                zIndex: 5\n                            }\n                        },\n                        children: [\n                            /*#__PURE__*/ _jsx(CookieBanner, {}),\n                            /*#__PURE__*/ _jsx(RemoteHeader, {\n                                userProps: {\n                                    signedIn,\n                                    loading,\n                                    favoritesCount,\n                                    openSignInModal,\n                                    onSignUp: handleSignUp,\n                                    onLogout: this.logout\n                                },\n                                market: {\n                                    code: regionCode,\n                                    disabled: regionDisabled\n                                },\n                                locale: locale,\n                                onMarketChange: onMarketChange,\n                                onLocaleChange: onLocaleChange,\n                                isConverged: isConverged\n                            })\n                        ]\n                    }),\n                    /*#__PURE__*/ _jsx(Outlet, {}),\n                    showModal ? /*#__PURE__*/ _jsx(Modal, {\n                        query: params\n                    }) : null,\n                    renderNewNps && /*#__PURE__*/ _jsx(Nps, {\n                        email: userInfo.email,\n                        correlationId: correlationId,\n                        context: this.getChildContext()\n                    }),\n                    /*#__PURE__*/ _jsx(Footer, {\n                        locale: locale\n                    })\n                ]\n            });\n        }\n    }\n    constructor(props){\n        super(props), _define_property(this, \"showCookieBanner\", false), _define_property(this, \"instrument\", void 0), _define_property(this, \"headerRef\", null), _define_property(this, \"logout\", ()=>{\n            return logoutUser();\n        });\n        this.instrument = SpzaInstrumentService.getProvider();\n        // retrieve the query parameters from URI.\n        props.updateQuery(props.locationQuery);\n        this.headerRef = /*#__PURE__*/ React.createRef();\n        this.state = {\n            isMounted: false\n        };\n    }\n}\nAppView.childContextTypes = {\n    loc: PropTypes.func,\n    locParams: PropTypes.func,\n    locDateString: PropTypes.func,\n    locale: PropTypes.string,\n    buildHref: PropTypes.func,\n    ctaCallback: PropTypes.func,\n    contactCallback: PropTypes.func,\n    openTileCallback: PropTypes.func,\n    renderErrorModal: PropTypes.func,\n    reportAbuseCallback: PropTypes.func,\n    getAppHeaderHeight: PropTypes.func\n};\n","/* tslint:disable: quotemark max-line-length */ /**\n * check whether page should render cookie banner (top)\n *\n * @returns true if any of following apllies:\n *  1) user has not agreed to privacy consent\n *  2) agreed privacy consent has expired\n */ export function shouldShowCookieBanner() {\n    return false;\n}\n// Hack for the missing Region codes.\n// Once we get the translations for these regions, we can remove this hack.\nfunction handleMissingLocales(locale) {\n    let newLocaleCode = '';\n    let lowerCaseLocale = locale ? locale.toLowerCase() : 'en';\n    // the special cases:\n    if (lowerCaseLocale === 'sr-cyrl' || lowerCaseLocale === 'sr-latn') {\n        newLocaleCode = 'sr';\n    } else if (lowerCaseLocale === 'sl-si') {\n        newLocaleCode = 'sl';\n    } else if (lowerCaseLocale === 'ca-es' || lowerCaseLocale === 'eu-es' || lowerCaseLocale === 'gl-es') {\n        newLocaleCode = 'es';\n    } else {\n        // default case\n        newLocaleCode = lowerCaseLocale;\n    }\n    return newLocaleCode;\n}\n// To Investigate: Why is this hard coded?\n// List of consent messages in differnt locales\nexport const ConsentMessage = [\n    {\n        Market: 'en',\n        Message: 'This site uses cookies for analytics, personalized content and ads. By continuing to browse this site, you agree to this use.',\n        MoreInfo: 'Learn more',\n        MoreInfoAriaLabel: 'Learn more about Microsoft’s Cookie Policy',\n        MoreInfoUrl: 'https://go.microsoft.com/fwlink/?linkid=845480'\n    },\n    {\n        Market: 'ar',\n        Message: 'يستخدم هذا الموقع ملفات تعريف الارتباط للتحليلات، والمحتوى المخصص والإعلانات. ومن خلال متابعة استعراض هذا الموقع، فأنت توافق على ذلك الاستخدام.',\n        MoreInfo: 'معرفة المزيد',\n        MoreInfoAriaLabel: 'معرفة المزيد حول سياسة ملفات تعريف ارتباط Microsoft',\n        MoreInfoUrl: 'https://go.microsoft.com/fwlink/?linkid=845480'\n    },\n    {\n        Market: 'ar-SA',\n        Message: 'يستخدم هذا الموقع ملفات تعريف الارتباط للتحليلات، والمحتوى المخصص والإعلانات. ومن خلال متابعة استعراض هذا الموقع، فأنت توافق على ذلك الاستخدام.',\n        MoreInfo: 'معرفة المزيد',\n        MoreInfoAriaLabel: 'معرفة المزيد حول سياسة ملفات تعريف ارتباط Microsoft',\n        MoreInfoUrl: 'https://go.microsoft.com/fwlink/?linkid=845480'\n    },\n    {\n        Market: 'bg',\n        Message: 'Този сайт използва бисквитки за аналитични цели, персонализирано съдържание и реклами. Ако продължите да го разглеждате, вие се съгласявате с използването на бисквитки.',\n        MoreInfo: 'Научете повече',\n        MoreInfoAriaLabel: 'Научете повече за политиката за бисквитките на Microsoft',\n        MoreInfoUrl: 'https://go.microsoft.com/fwlink/?linkid=845480'\n    },\n    {\n        Market: 'bg-BG',\n        Message: 'Този сайт използва бисквитки за аналитични цели, персонализирано съдържание и реклами. Ако продължите да го разглеждате, вие се съгласявате с използването на бисквитки.',\n        MoreInfo: 'Научете повече',\n        MoreInfoAriaLabel: 'Научете повече за политиката за бисквитките на Microsoft',\n        MoreInfoUrl: 'https://go.microsoft.com/fwlink/?linkid=845480'\n    },\n    {\n        Market: 'bs',\n        Message: 'Ova stranica koristi kolačiće za analizu, personalizovane sadržaje i reklame. Pretraživanjem ove stranice, prihvatate ovu upotrebu.',\n        MoreInfo: 'Saznajte više',\n        MoreInfoAriaLabel: 'Saznajte više o Microsoftovim pravilima o kolačićima',\n        MoreInfoUrl: 'https://go.microsoft.com/fwlink/?linkid=845480'\n    },\n    {\n        Market: 'bs-BA',\n        Message: 'Ova stranica koristi kolačiće za analizu, personalizovane sadržaje i reklame. Pretraživanjem ove stranice, prihvatate ovu upotrebu.',\n        MoreInfo: 'Saznajte više',\n        MoreInfoAriaLabel: 'Saznajte više o Microsoftovim pravilima o kolačićima',\n        MoreInfoUrl: 'https://go.microsoft.com/fwlink/?linkid=845480'\n    },\n    {\n        Market: 'cs',\n        Message: 'Tento web využívá soubory cookie pro analýzu, přizpůsobený obsah a reklamy. Pokračováním na tento web souhlasíte s jejich používáním.',\n        MoreInfo: 'Další informace',\n        MoreInfoAriaLabel: 'Další informace o zásadách Microsoftu pro soubory cookie',\n        MoreInfoUrl: 'https://go.microsoft.com/fwlink/?linkid=845480'\n    },\n    {\n        Market: 'cs-CZ',\n        Message: 'Tento web využívá soubory cookie pro analýzu, přizpůsobený obsah a reklamy. Pokračováním na tento web souhlasíte s jejich používáním.',\n        MoreInfo: 'Další informace',\n        MoreInfoAriaLabel: 'Další informace o zásadách Microsoftu pro soubory cookie',\n        MoreInfoUrl: 'https://go.microsoft.com/fwlink/?linkid=845480'\n    },\n    {\n        Market: 'da',\n        Message: 'Dette websted bruger cookies til analyse, personligt tilpasset indhold og annoncer. Hvis du fortsætter med at bruge dette websted, accepterer du denne brug.',\n        MoreInfo: 'Lær mere',\n        MoreInfoAriaLabel: 'Lær mere om Microsofts cookiepolitik',\n        MoreInfoUrl: 'https://go.microsoft.com/fwlink/?linkid=845480'\n    },\n    {\n        Market: 'da-DK',\n        Message: 'Dette websted bruger cookies til analyse, personligt tilpasset indhold og annoncer. Hvis du fortsætter med at bruge dette websted, accepterer du denne brug.',\n        MoreInfo: 'Lær mere',\n        MoreInfoAriaLabel: 'Lær mere om Microsofts cookiepolitik',\n        MoreInfoUrl: 'https://go.microsoft.com/fwlink/?linkid=845480'\n    },\n    {\n        Market: 'de',\n        Message: 'Diese Website verwendet Cookies für Analysen, personalisierte Inhalte und interessenbezogene Anzeigen. Indem Sie diese Website weiter nutzen, erklären Sie sich mit dieser Verwendung einverstanden.',\n        MoreInfo: 'Weitere Informationen',\n        MoreInfoAriaLabel: 'Weitere Informationen über die Microsoft Cookie-Richtlinie',\n        MoreInfoUrl: 'https://go.microsoft.com/fwlink/?linkid=845480'\n    },\n    {\n        Market: 'de-DE',\n        Message: 'Diese Website verwendet Cookies für Analysen, personalisierte Inhalte und interessenbezogene Anzeigen. Indem Sie diese Website weiter nutzen, erklären Sie sich mit dieser Verwendung einverstanden.',\n        MoreInfo: 'Weitere Informationen',\n        MoreInfoAriaLabel: 'Weitere Informationen über die Microsoft Cookie-Richtlinie',\n        MoreInfoUrl: 'https://go.microsoft.com/fwlink/?linkid=845480'\n    },\n    {\n        Market: 'el',\n        Message: 'Αυτή η τοποθεσία χρησιμοποιεί cookies για την ανάλυση πληροφοριών, εξατομικευμένο περιεχόμενο και διαφημίσεις. Συνεχίζοντας την περιήγηση σε αυτήν την τοποθεσία, αποδέχεστε αυτήν τη χρήση.',\n        MoreInfo: 'Μάθετε περισσότερα',\n        MoreInfoAriaLabel: 'Μάθετε περισσότερα σχετικά με την πολιτική της Microsoft για τα cookies',\n        MoreInfoUrl: 'https://go.microsoft.com/fwlink/?linkid=845480'\n    },\n    {\n        Market: 'el-GR',\n        Message: 'Αυτή η τοποθεσία χρησιμοποιεί cookies για την ανάλυση πληροφοριών, εξατομικευμένο περιεχόμενο και διαφημίσεις. Συνεχίζοντας την περιήγηση σε αυτήν την τοποθεσία, αποδέχεστε αυτήν τη χρήση.',\n        MoreInfo: 'Μάθετε περισσότερα',\n        MoreInfoAriaLabel: 'Μάθετε περισσότερα σχετικά με την πολιτική της Microsoft για τα cookies',\n        MoreInfoUrl: 'https://go.microsoft.com/fwlink/?linkid=845480'\n    },\n    {\n        Market: 'en-GB',\n        Message: 'This site uses cookies for analytics, personalized content and ads. By continuing to browse this site, you agree to this use.',\n        MoreInfo: 'Learn more',\n        MoreInfoAriaLabel: 'Learn more about Microsoft’s Cookie Policy',\n        MoreInfoUrl: 'https://go.microsoft.com/fwlink/?linkid=845480'\n    },\n    {\n        Market: 'es',\n        Message: 'Este sitio utiliza cookies para análisis y para mostrar contenido y anuncios personalizados. Al continuar navegando por este sitio, aceptas este uso.',\n        MoreInfo: 'Más información',\n        MoreInfoAriaLabel: 'Más información sobre la política de cookies de Microsoft',\n        MoreInfoUrl: 'https://go.microsoft.com/fwlink/?linkid=845480'\n    },\n    {\n        Market: 'es-ES',\n        Message: 'Este sitio utiliza cookies para análisis y para mostrar contenido y anuncios personalizados. Al continuar navegando por este sitio, aceptas este uso.',\n        MoreInfo: 'Más información',\n        MoreInfoAriaLabel: 'Más información sobre la política de cookies de Microsoft',\n        MoreInfoUrl: 'https://go.microsoft.com/fwlink/?linkid=845480'\n    },\n    {\n        Market: 'es-MX',\n        Message: 'Este sitio utiliza cookies para análisis, contenido personalizado y anuncios. Al continuar explorando este sitio, acepta este uso.',\n        MoreInfo: 'Obtener más información',\n        MoreInfoAriaLabel: 'Obtener más información sobre la política de cookies de Microsoft',\n        MoreInfoUrl: 'https://go.microsoft.com/fwlink/?linkid=845480'\n    },\n    {\n        Market: 'et',\n        Message: 'See sait kasutab küpsiseid analüüsiks, isikupärastatud sisuks ja reklaamiks. Nõustute selle kasutamisega, kui jätkate saidi vaatamist.',\n        MoreInfo: 'Lisateave',\n        MoreInfoAriaLabel: 'Lisateave Microsofti küpsistepoliitika kohta',\n        MoreInfoUrl: 'https://go.microsoft.com/fwlink/?linkid=845480'\n    },\n    {\n        Market: 'et-EE',\n        Message: 'See sait kasutab küpsiseid analüüsiks, isikupärastatud sisuks ja reklaamiks. Nõustute selle kasutamisega, kui jätkate saidi vaatamist.',\n        MoreInfo: 'Lisateave',\n        MoreInfoAriaLabel: 'Lisateave Microsofti küpsistepoliitika kohta',\n        MoreInfoUrl: 'https://go.microsoft.com/fwlink/?linkid=845480'\n    },\n    {\n        Market: 'fi',\n        Message: 'Tämä sivusto käyttää evästeitä analytiikkaan sekä mukautetun sisällön ja mainosten näyttämiseen. Jatkamalla sivuston käyttöä hyväksyt tällaisen käytön.',\n        MoreInfo: 'Lisätietoja',\n        MoreInfoAriaLabel: 'Lisätietoja Microsoftin evästekäytännöstä',\n        MoreInfoUrl: 'https://go.microsoft.com/fwlink/?linkid=845480'\n    },\n    {\n        Market: 'fi-FI',\n        Message: 'Tämä sivusto käyttää evästeitä analytiikkaan sekä mukautetun sisällön ja mainosten näyttämiseen. Jatkamalla sivuston käyttöä hyväksyt tällaisen käytön.',\n        MoreInfo: 'Lisätietoja',\n        MoreInfoAriaLabel: 'Lisätietoja Microsoftin evästekäytännöstä',\n        MoreInfoUrl: 'https://go.microsoft.com/fwlink/?linkid=845480'\n    },\n    {\n        Market: 'fr-CA',\n        Message: 'Ce site utilise des témoins pour les analyses, le contenu personnalisé et les publicités. En continuant à naviguer sur ce site, vous acceptez cette utilisation.',\n        MoreInfo: 'Détails',\n        MoreInfoAriaLabel: 'En savoir plus sur la politique en matière de témoins de Microsoft',\n        MoreInfoUrl: 'https://go.microsoft.com/fwlink/?linkid=845480'\n    },\n    {\n        Market: 'fr',\n        Message: \"Ce site utilise des cookies pour l'analyse, ainsi pour que les contenus et les publicités personnalisés. En continuant à naviguer sur ce site, vous acceptez cette utilisation.\",\n        MoreInfo: 'En savoir plus',\n        MoreInfoAriaLabel: 'En savoir plus sur la politique relative aux cookies de Microsoft',\n        MoreInfoUrl: 'https://go.microsoft.com/fwlink/?linkid=845480'\n    },\n    {\n        Market: 'fr-FR',\n        Message: \"Ce site utilise des cookies pour l'analyse, ainsi pour que les contenus et les publicités personnalisés. En continuant à naviguer sur ce site, vous acceptez cette utilisation.\",\n        MoreInfo: 'En savoir plus',\n        MoreInfoAriaLabel: 'En savoir plus sur la politique relative aux cookies de Microsoft',\n        MoreInfoUrl: 'https://go.microsoft.com/fwlink/?linkid=845480'\n    },\n    {\n        Market: 'he',\n        Message: 'אתר זה משתמש בקובצי Cookie לצורך ניתוח, תוכן מותאם אישית ומודעות. על ידי המשך הגלישה באתר אתה מסכים לשימוש זה.',\n        MoreInfo: 'מידע נוסף',\n        MoreInfoAriaLabel: 'למד עוד על המדיניות של Microsoft בנושא קובצי Cookie',\n        MoreInfoUrl: 'https://go.microsoft.com/fwlink/?linkid=845480'\n    },\n    {\n        Market: 'he-IL',\n        Message: 'אתר זה משתמש בקובצי Cookie לצורך ניתוח, תוכן מותאם אישית ומודעות. על ידי המשך הגלישה באתר אתה מסכים לשימוש זה.',\n        MoreInfo: 'מידע נוסף',\n        MoreInfoAriaLabel: 'למד עוד על המדיניות של Microsoft בנושא קובצי Cookie',\n        MoreInfoUrl: 'https://go.microsoft.com/fwlink/?linkid=845480'\n    },\n    {\n        Market: 'hi',\n        Message: 'यह साइट विश्लेषण, वैयक्तिकृत सामग्री और विज्ञापनों के लिए कुकीज़ का उपयोग करती है. इस साइट को ब्राउज़ करना जारी रखकर आप इस उपयोग पर अपनी सहमति जताते हैं.',\n        MoreInfo: 'अधिक जानें',\n        MoreInfoAriaLabel: 'Microsoft की कुकी नीति के बारे में अधिक जानें',\n        MoreInfoUrl: 'https://go.microsoft.com/fwlink/?linkid=845480'\n    },\n    {\n        Market: 'hi-IN',\n        Message: 'यह साइट विश्लेषण, वैयक्तिकृत सामग्री और विज्ञापनों के लिए कुकीज़ का उपयोग करती है. इस साइट को ब्राउज़ करना जारी रखकर आप इस उपयोग पर अपनी सहमति जताते हैं.',\n        MoreInfo: 'अधिक जानें',\n        MoreInfoAriaLabel: 'Microsoft की कुकी नीति के बारे में अधिक जानें',\n        MoreInfoUrl: 'https://go.microsoft.com/fwlink/?linkid=845480'\n    },\n    {\n        Market: 'hr',\n        Message: 'Ovo web-mjesto koristi kolačiće za analizu, prilagođeni sadržaj i reklame. Pretraživanjem ovog web-mjesta pristajete na ovu uporabu.',\n        MoreInfo: 'Saznajte više',\n        MoreInfoAriaLabel: 'Saznajte više o Pravilima uporabe kolačića Microsoft',\n        MoreInfoUrl: 'https://go.microsoft.com/fwlink/?linkid=845480'\n    },\n    {\n        Market: 'hr-HR',\n        Message: 'Ovo web-mjesto koristi kolačiće za analizu, prilagođeni sadržaj i reklame. Pretraživanjem ovog web-mjesta pristajete na ovu uporabu.',\n        MoreInfo: 'Saznajte više',\n        MoreInfoAriaLabel: 'Saznajte više o Pravilima uporabe kolačića Microsoft',\n        MoreInfoUrl: 'https://go.microsoft.com/fwlink/?linkid=845480'\n    },\n    {\n        Market: 'hu',\n        Message: 'Ez a weboldal cookie-kat használ az elemzésekhez, valamint a testreszabott tartalmak és hirdetések megjelenítéséhez. Az oldal használatának folytatásával elfogadja ezek alkalmazását.',\n        MoreInfo: 'További információ',\n        MoreInfoAriaLabel: 'További információk a Microsoft cookie-kra vonatkozó irányelvéről',\n        MoreInfoUrl: 'https://go.microsoft.com/fwlink/?linkid=845480'\n    },\n    {\n        Market: 'hu-HU',\n        Message: 'Ez a weboldal cookie-kat használ az elemzésekhez, valamint a testreszabott tartalmak és hirdetések megjelenítéséhez. Az oldal használatának folytatásával elfogadja ezek alkalmazását.',\n        MoreInfo: 'További információ',\n        MoreInfoAriaLabel: 'További információk a Microsoft cookie-kra vonatkozó irányelvéről',\n        MoreInfoUrl: 'https://go.microsoft.com/fwlink/?linkid=845480'\n    },\n    {\n        Market: 'id',\n        Message: 'Situs ini menggunakan cookie untuk analisis, konten dan iklan yang disesuaikan. Dengan terus menelusuri situs ini, Anda menyetujui penggunaannya.',\n        MoreInfo: 'Pelajari selengkapnya',\n        MoreInfoAriaLabel: 'Pelajari lebih lanjut tentang kebijakan Cookie Microsoft',\n        MoreInfoUrl: 'https://go.microsoft.com/fwlink/?linkid=845480'\n    },\n    {\n        Market: 'id-ID',\n        Message: 'Situs ini menggunakan cookie untuk analisis, konten dan iklan yang disesuaikan. Dengan terus menelusuri situs ini, Anda menyetujui penggunaannya.',\n        MoreInfo: 'Pelajari selengkapnya',\n        MoreInfoAriaLabel: 'Pelajari lebih lanjut tentang kebijakan Cookie Microsoft',\n        MoreInfoUrl: 'https://go.microsoft.com/fwlink/?linkid=845480'\n    },\n    {\n        Market: 'it',\n        Message: 'Questo sito utilizza cookie per analitica, contenuti personalizzati e pubblicità. Continuando a navigare questo sito, accetti tale utilizzo.',\n        MoreInfo: 'Scopri di più',\n        MoreInfoAriaLabel: 'Ulteriori informazioni sulla politica dei cookie di Microsoft',\n        MoreInfoUrl: 'https://go.microsoft.com/fwlink/?linkid=845480'\n    },\n    {\n        Market: 'it-IT',\n        Message: 'Questo sito utilizza cookie per analitica, contenuti personalizzati e pubblicità. Continuando a navigare questo sito, accetti tale utilizzo.',\n        MoreInfo: 'Scopri di più',\n        MoreInfoAriaLabel: 'Ulteriori informazioni sulla politica dei cookie di Microsoft',\n        MoreInfoUrl: 'https://go.microsoft.com/fwlink/?linkid=845480'\n    },\n    {\n        Market: 'ja',\n        Message: 'このサイトでは、分析、カスタマイズされたコンテンツ、および広告に Cookie を使用します。このサイトを引き続き閲覧すると、Cookie の使用に同意するものと見なされます。',\n        MoreInfo: '詳細情報',\n        MoreInfoAriaLabel: 'Microsoft の Cookie ポリシーに関する詳細について',\n        MoreInfoUrl: 'https://go.microsoft.com/fwlink/?linkid=845480'\n    },\n    {\n        Market: 'ja-JP',\n        Message: 'このサイトでは、分析、カスタマイズされたコンテンツ、および広告に Cookie を使用します。このサイトを引き続き閲覧すると、Cookie の使用に同意するものと見なされます。',\n        MoreInfo: '詳細情報',\n        MoreInfoAriaLabel: 'Microsoft の Cookie ポリシーに関する詳細について',\n        MoreInfoUrl: 'https://go.microsoft.com/fwlink/?linkid=845480'\n    },\n    {\n        Market: 'kk',\n        Message: 'Бұл сайт талдау, жекелендірілген мазмұн және жарнама үшін куки файлдарын пайдаланады. Бұл сайтты шолуды жалғастыру арқылы оны пайдалануға келісесіз.',\n        MoreInfo: 'Қосымша ақпарат',\n        MoreInfoAriaLabel: 'Microsoft корпорациясының куки файлдарына қатысты саясаты туралы қосымша ақпарат',\n        MoreInfoUrl: 'https://go.microsoft.com/fwlink/?linkid=845480'\n    },\n    {\n        Market: 'kk-KZ',\n        Message: 'Бұл сайт талдау, жекелендірілген мазмұн және жарнама үшін куки файлдарын пайдаланады. Бұл сайтты шолуды жалғастыру арқылы оны пайдалануға келісесіз.',\n        MoreInfo: 'Қосымша ақпарат',\n        MoreInfoAriaLabel: 'Microsoft корпорациясының куки файлдарына қатысты саясаты туралы қосымша ақпарат',\n        MoreInfoUrl: 'https://go.microsoft.com/fwlink/?linkid=845480'\n    },\n    {\n        Market: 'ko',\n        Message: '이 사이트에서는 분석, 개인 설정 콘텐츠 및 광고를 위해 쿠키가 사용됩니다. 이 사이트 탐색을 계속하면 이러한 사용에 동의하게 됩니다.',\n        MoreInfo: '자세히 보기',\n        MoreInfoAriaLabel: 'Microsoft 쿠키 정책에 대해 자세히 보기',\n        MoreInfoUrl: 'https://go.microsoft.com/fwlink/?linkid=845480'\n    },\n    {\n        Market: 'ko-KR',\n        Message: '이 사이트에서는 분석, 개인 설정 콘텐츠 및 광고를 위해 쿠키가 사용됩니다. 이 사이트 탐색을 계속하면 이러한 사용에 동의하게 됩니다.',\n        MoreInfo: '자세히 보기',\n        MoreInfoAriaLabel: 'Microsoft 쿠키 정책에 대해 자세히 보기',\n        MoreInfoUrl: 'https://go.microsoft.com/fwlink/?linkid=845480'\n    },\n    {\n        Market: 'lt',\n        Message: 'Ši svetainė naudoja slapukus analizei, suasmenintam turiniui ir skelbimams. Toliau naršydami šioje svetainėje, jūs sutinkate su šiuo naudojimu.',\n        MoreInfo: 'Sužinoti daugiau',\n        MoreInfoAriaLabel: 'Sužinoti daugiau apie „Microsoft“ slapukų politiką',\n        MoreInfoUrl: 'https://go.microsoft.com/fwlink/?linkid=845480'\n    },\n    {\n        Market: 'lt-lT',\n        Message: 'Ši svetainė naudoja slapukus analizei, suasmenintam turiniui ir skelbimams. Toliau naršydami šioje svetainėje, jūs sutinkate su šiuo naudojimu.',\n        MoreInfo: 'Sužinoti daugiau',\n        MoreInfoAriaLabel: 'Sužinoti daugiau apie „Microsoft“ slapukų politiką',\n        MoreInfoUrl: 'https://go.microsoft.com/fwlink/?linkid=845480'\n    },\n    {\n        Market: 'lv',\n        Message: 'Šī vietne izmanto sīkfailus, lai veiktu analīzi un rādītu personalizētu saturu un reklāmas. Turpinot šīs vietnes pārlūkošanu, jūs piekrītat šādai izmantošanai.',\n        MoreInfo: 'Uzzināt vairāk',\n        MoreInfoAriaLabel: 'Uzziniet vairāk par Microsoft sīkfailu politiku',\n        MoreInfoUrl: 'https://go.microsoft.com/fwlink/?linkid=845480'\n    },\n    {\n        Market: 'lv-LV',\n        Message: 'Šī vietne izmanto sīkfailus, lai veiktu analīzi un rādītu personalizētu saturu un reklāmas. Turpinot šīs vietnes pārlūkošanu, jūs piekrītat šādai izmantošanai.',\n        MoreInfo: 'Uzzināt vairāk',\n        MoreInfoAriaLabel: 'Uzziniet vairāk par Microsoft sīkfailu politiku',\n        MoreInfoUrl: 'https://go.microsoft.com/fwlink/?linkid=845480'\n    },\n    {\n        Market: 'ms',\n        Message: 'Laman ini menggunakan kuki untuk analitis, kandungan yang diperibadikan dan iklan. Dengan terus melayari laman ini, anda bersetuju terhadap penggunaan ini.',\n        MoreInfo: 'Ketahui lebih lanjut',\n        MoreInfoAriaLabel: 'Ketahui lebih lanjut tentang Dasar Kuki Microsoft',\n        MoreInfoUrl: 'https://go.microsoft.com/fwlink/?linkid=845480'\n    },\n    {\n        Market: 'ms-MY',\n        Message: 'Laman ini menggunakan kuki untuk analitis, kandungan yang diperibadikan dan iklan. Dengan terus melayari laman ini, anda bersetuju terhadap penggunaan ini.',\n        MoreInfo: 'Ketahui lebih lanjut',\n        MoreInfoAriaLabel: 'Ketahui lebih lanjut tentang Dasar Kuki Microsoft',\n        MoreInfoUrl: 'https://go.microsoft.com/fwlink/?linkid=845480'\n    },\n    {\n        Market: 'nb',\n        Message: 'Dette nettstedet bruker informasjonskapsler for analyser, tilpasset innhold og annonser. Ved å fortsette å bruke nettstedet godtar du å dette.',\n        MoreInfo: 'Lær mer',\n        MoreInfoAriaLabel: 'Lær mer om Microsofts policy for informasjonskapsler',\n        MoreInfoUrl: 'https://go.microsoft.com/fwlink/?linkid=845480'\n    },\n    {\n        Market: 'nb-NO',\n        Message: 'Dette nettstedet bruker informasjonskapsler for analyser, tilpasset innhold og annonser. Ved å fortsette å bruke nettstedet godtar du å dette.',\n        MoreInfo: 'Lær mer',\n        MoreInfoAriaLabel: 'Lær mer om Microsofts policy for informasjonskapsler',\n        MoreInfoUrl: 'https://go.microsoft.com/fwlink/?linkid=845480'\n    },\n    {\n        Market: 'nl',\n        Message: 'Deze site maakt gebruik van cookies om analyses te kunnen uitvoeren en persoonlijke inhoud en reclame te kunnen weergeven. Door verder te bladeren op deze site, gaat u akkoord met dit gebruik.',\n        MoreInfo: 'Meer informatie',\n        MoreInfoAriaLabel: 'Meer informatie over het cookiebeleid van Microsoft',\n        MoreInfoUrl: 'https://go.microsoft.com/fwlink/?linkid=845480'\n    },\n    {\n        Market: 'nl-NL',\n        Message: 'Deze site maakt gebruik van cookies om analyses te kunnen uitvoeren en persoonlijke inhoud en reclame te kunnen weergeven. Door verder te bladeren op deze site, gaat u akkoord met dit gebruik.',\n        MoreInfo: 'Meer informatie',\n        MoreInfoAriaLabel: 'Meer informatie over het cookiebeleid van Microsoft',\n        MoreInfoUrl: 'https://go.microsoft.com/fwlink/?linkid=845480'\n    },\n    {\n        Market: 'pl',\n        Message: 'W celu gromadzenia danych analitycznych oraz wyświetlania reklam i zawartości dostosowanych do preferencji użytkownika w tej witrynie używane są pliki cookie. Kontynuując jej przeglądanie, zgadzasz się na to użycie.',\n        MoreInfo: 'Dowiedz się więcej',\n        MoreInfoAriaLabel: 'Dowiedz się więcej o zasadach firmy Microsoft dotyczących plików cookie',\n        MoreInfoUrl: 'https://go.microsoft.com/fwlink/?linkid=845480'\n    },\n    {\n        Market: 'pl-PL',\n        Message: 'W celu gromadzenia danych analitycznych oraz wyświetlania reklam i zawartości dostosowanych do preferencji użytkownika w tej witrynie używane są pliki cookie. Kontynuując jej przeglądanie, zgadzasz się na to użycie.',\n        MoreInfo: 'Dowiedz się więcej',\n        MoreInfoAriaLabel: 'Dowiedz się więcej o zasadach firmy Microsoft dotyczących plików cookie',\n        MoreInfoUrl: 'https://go.microsoft.com/fwlink/?linkid=845480'\n    },\n    {\n        Market: 'pt-BR',\n        Message: 'Este site utiliza cookies para análise, conteúdo personalizado e anúncios. Continuando a navegar neste site, você concorda com esse uso.',\n        MoreInfo: 'Saiba mais',\n        MoreInfoAriaLabel: 'Saiba mais sobre a Política de Cookies da Microsoft',\n        MoreInfoUrl: 'https://go.microsoft.com/fwlink/?linkid=845480'\n    },\n    {\n        Market: 'pt',\n        Message: 'Este site utiliza cookies para análise de dados, conteúdo personalizado e anúncios. Ao continuar a navegar neste site, concorda com a sua utilização.',\n        MoreInfo: 'Mais informações',\n        MoreInfoAriaLabel: 'Saiba mais sobre a Política de Cookies da Microsoft',\n        MoreInfoUrl: 'https://go.microsoft.com/fwlink/?linkid=845480'\n    },\n    {\n        Market: 'pt-PT',\n        Message: 'Este site utiliza cookies para análise de dados, conteúdo personalizado e anúncios. Ao continuar a navegar neste site, concorda com a sua utilização.',\n        MoreInfo: 'Mais informações',\n        MoreInfoAriaLabel: 'Saiba mais sobre a Política de Cookies da Microsoft',\n        MoreInfoUrl: 'https://go.microsoft.com/fwlink/?linkid=845480'\n    },\n    {\n        Market: 'ro',\n        Message: 'Acest site folosește module cookie pentru analiză, conținut personalizat și reclame. Dacă răsfoiți în continuare acest site, sunteți de acord cu această utilizare.',\n        MoreInfo: 'Aflați mai multe',\n        MoreInfoAriaLabel: 'Aflați mai multe despre Politica Microsoft referitoare la modulele cookie',\n        MoreInfoUrl: 'https://go.microsoft.com/fwlink/?linkid=845480'\n    },\n    {\n        Market: 'ro-RO',\n        Message: 'Acest site folosește module cookie pentru analiză, conținut personalizat și reclame. Dacă răsfoiți în continuare acest site, sunteți de acord cu această utilizare.',\n        MoreInfo: 'Aflați mai multe',\n        MoreInfoAriaLabel: 'Aflați mai multe despre Politica Microsoft referitoare la modulele cookie',\n        MoreInfoUrl: 'https://go.microsoft.com/fwlink/?linkid=845480'\n    },\n    {\n        Market: 'ru',\n        Message: 'Этот сайт использует файлы cookie для аналитики, персонализированного контента и рекламы. Продолжая просмотр этого сайта, вы соглашаетесь с этими условиями использования.',\n        MoreInfo: 'Узнайте больше',\n        MoreInfoAriaLabel: 'Узнайте больше о политике Microsoft в отношении файлов cookie',\n        MoreInfoUrl: 'https://go.microsoft.com/fwlink/?linkid=845480'\n    },\n    {\n        Market: 'ru-RU',\n        Message: 'Этот сайт использует файлы cookie для аналитики, персонализированного контента и рекламы. Продолжая просмотр этого сайта, вы соглашаетесь с этими условиями использования.',\n        MoreInfo: 'Узнайте больше',\n        MoreInfoAriaLabel: 'Узнайте больше о политике Microsoft в отношении файлов cookie',\n        MoreInfoUrl: 'https://go.microsoft.com/fwlink/?linkid=845480'\n    },\n    {\n        Market: 'sk',\n        Message: 'Táto stránka používa súbory cookie kvôli analýze, prispôsobeniu obsahu a reklamám. Pokračovaním v prehliadaní tejto stránky súhlasíte s týmto použitím.',\n        MoreInfo: 'Ďalšie informácie',\n        MoreInfoAriaLabel: 'Ďalšie informácie o zásadách používania súborov cookie spoločnosti Microsoft',\n        MoreInfoUrl: 'https://go.microsoft.com/fwlink/?linkid=845480'\n    },\n    {\n        Market: 'sk-SK',\n        Message: 'Táto stránka používa súbory cookie kvôli analýze, prispôsobeniu obsahu a reklamám. Pokračovaním v prehliadaní tejto stránky súhlasíte s týmto použitím.',\n        MoreInfo: 'Ďalšie informácie',\n        MoreInfoAriaLabel: 'Ďalšie informácie o zásadách používania súborov cookie spoločnosti Microsoft',\n        MoreInfoUrl: 'https://go.microsoft.com/fwlink/?linkid=845480'\n    },\n    {\n        Market: 'sl',\n        Message: 'To mesto uporablja piškotke za analitiko, vsebino po meri in oglase. Če nadaljujete z brskanjem po tem mestu, sprejemate ta način uporabe.',\n        MoreInfo: 'Več o tem',\n        MoreInfoAriaLabel: 'Več o Microsoftovem pravilniku o piškotkih',\n        MoreInfoUrl: 'https://go.microsoft.com/fwlink/?linkid=845480'\n    },\n    {\n        Market: 'sl-SL',\n        Message: 'To mesto uporablja piškotke za analitiko, vsebino po meri in oglase. Če nadaljujete z brskanjem po tem mestu, sprejemate ta način uporabe.',\n        MoreInfo: 'Več o tem',\n        MoreInfoAriaLabel: 'Več o Microsoftovem pravilniku o piškotkih',\n        MoreInfoUrl: 'https://go.microsoft.com/fwlink/?linkid=845480'\n    },\n    {\n        Market: 'sr',\n        Message: 'Ova lokacija koristi kolačiće za analitiku, personalizovani sadržaj i oglase. Daljim pregledanjem ove lokacije pristajete na ovo korišćenje.',\n        MoreInfo: 'Saznajte više',\n        MoreInfoAriaLabel: 'Saznajte više o politici kolačića kompanije Microsoft',\n        MoreInfoUrl: 'https://go.microsoft.com/fwlink/?linkid=845480'\n    },\n    {\n        Market: 'sr-LATN-RS',\n        Message: 'Ova lokacija koristi kolačiće za analitiku, personalizovani sadržaj i oglase. Daljim pregledanjem ove lokacije pristajete na ovo korišćenje.',\n        MoreInfo: 'Saznajte više',\n        MoreInfoAriaLabel: 'Saznajte više o politici kolačića kompanije Microsoft',\n        MoreInfoUrl: 'https://go.microsoft.com/fwlink/?linkid=845480'\n    },\n    {\n        Market: 'sv',\n        Message: 'Denna webbplats använder cookies för statistik, anpassat innehåll och annonser. Genom att fortsätta navigera på webbplatsen godkänner du denna användning.',\n        MoreInfo: 'Läs mer',\n        MoreInfoAriaLabel: 'Läs mer om Microsofts policy för cookies',\n        MoreInfoUrl: 'https://go.microsoft.com/fwlink/?linkid=845480'\n    },\n    {\n        Market: 'sv-SE',\n        Message: 'Denna webbplats använder cookies för statistik, anpassat innehåll och annonser. Genom att fortsätta navigera på webbplatsen godkänner du denna användning.',\n        MoreInfo: 'Läs mer',\n        MoreInfoAriaLabel: 'Läs mer om Microsofts policy för cookies',\n        MoreInfoUrl: 'https://go.microsoft.com/fwlink/?linkid=845480'\n    },\n    {\n        Market: 'th',\n        Message: 'ไซต์นี้ใช้คุกกี้เพื่อการวิเคราะห์ เนื้อหาที่ปรับตามบุคคลและโฆษณา เมื่อเรียกดูข้อมูลในไซต์นี้ต่อไป จะถือว่าคุณตกลงยอมรับการใช้ดังกล่าว',\n        MoreInfo: 'เรียนรู้เพิ่มเติม',\n        MoreInfoAriaLabel: 'เรียนรู้เพิ่มเติมเกี่ยวกับนโยบายคุกกี้ของ Microsoft',\n        MoreInfoUrl: 'https://go.microsoft.com/fwlink/?linkid=845480'\n    },\n    {\n        Market: 'th-TH',\n        Message: 'ไซต์นี้ใช้คุกกี้เพื่อการวิเคราะห์ เนื้อหาที่ปรับตามบุคคลและโฆษณา เมื่อเรียกดูข้อมูลในไซต์นี้ต่อไป จะถือว่าคุณตกลงยอมรับการใช้ดังกล่าว',\n        MoreInfo: 'เรียนรู้เพิ่มเติม',\n        MoreInfoAriaLabel: 'เรียนรู้เพิ่มเติมเกี่ยวกับนโยบายคุกกี้ของ Microsoft',\n        MoreInfoUrl: 'https://go.microsoft.com/fwlink/?linkid=845480'\n    },\n    {\n        Market: 'tr',\n        Message: 'Bu site çözümleme, kişiselleştirilmiş içerik ve reklamlar için tanımlama bilgileri kullanmaktadır. Bu sitede gezinmeye devam ederek bu kullanımı kabul etmiş olursunuz.',\n        MoreInfo: 'Daha fazla bilgi',\n        MoreInfoAriaLabel: \"Microsoft'un Tanımlama Bilgileri İlkesi hakkında daha fazla bilgi edinin\",\n        MoreInfoUrl: 'https://go.microsoft.com/fwlink/?linkid=845480'\n    },\n    {\n        Market: 'tr-TR',\n        Message: 'Bu site çözümleme, kişiselleştirilmiş içerik ve reklamlar için tanımlama bilgileri kullanmaktadır. Bu sitede gezinmeye devam ederek bu kullanımı kabul etmiş olursunuz.',\n        MoreInfo: 'Daha fazla bilgi',\n        MoreInfoAriaLabel: \"Microsoft'un Tanımlama Bilgileri İlkesi hakkında daha fazla bilgi edinin\",\n        MoreInfoUrl: 'https://go.microsoft.com/fwlink/?linkid=845480'\n    },\n    {\n        Market: 'uk',\n        Message: 'На цьому сайті використовуються файли cookie для аналізу, персоналізації вмісту й оголошень. Продовжуючи перегляд сайту, ви погоджується з цим.',\n        MoreInfo: 'Докладніше',\n        MoreInfoAriaLabel: 'Докладніше про Політику Microsoft щодо файлів cookie',\n        MoreInfoUrl: 'https://go.microsoft.com/fwlink/?linkid=845480'\n    },\n    {\n        Market: 'uk-UA',\n        Message: 'На цьому сайті використовуються файли cookie для аналізу, персоналізації вмісту й оголошень. Продовжуючи перегляд сайту, ви погоджується з цим.',\n        MoreInfo: 'Докладніше',\n        MoreInfoAriaLabel: 'Докладніше про Політику Microsoft щодо файлів cookie',\n        MoreInfoUrl: 'https://go.microsoft.com/fwlink/?linkid=845480'\n    },\n    {\n        Market: 'vi',\n        Message: 'Trang này sử dụng cookie để phục vụ mục đích phân tích, nội dung cá nhân hóa và quảng cáo. Tiếp tục duyệt xem trang này có nghĩa là bạn đồng ý với việc sử dụng này.',\n        MoreInfo: 'Tìm hiểu thêm',\n        MoreInfoAriaLabel: 'Tìm hiểu thêm về Chính sách Cookie của Microsoft',\n        MoreInfoUrl: 'https://go.microsoft.com/fwlink/?linkid=845480'\n    },\n    {\n        Market: 'vi-VN',\n        Message: 'Trang này sử dụng cookie để phục vụ mục đích phân tích, nội dung cá nhân hóa và quảng cáo. Tiếp tục duyệt xem trang này có nghĩa là bạn đồng ý với việc sử dụng này.',\n        MoreInfo: 'Tìm hiểu thêm',\n        MoreInfoAriaLabel: 'Tìm hiểu thêm về Chính sách Cookie của Microsoft',\n        MoreInfoUrl: 'https://go.microsoft.com/fwlink/?linkid=845480'\n    },\n    {\n        Market: 'zh',\n        Message: '此站点使用 Cookie 进行分析、显示个性化内容和广告。继续浏览此站点,即表示您同意使用。',\n        MoreInfo: '了解详情',\n        MoreInfoAriaLabel: '了解有关 Microsoft Cookie 政策的详情',\n        MoreInfoUrl: 'https://go.microsoft.com/fwlink/?linkid=845480'\n    },\n    {\n        Market: 'zh-CN',\n        Message: '此站点使用 Cookie 进行分析、显示个性化内容和广告。继续浏览此站点,即表示您同意使用。',\n        MoreInfo: '了解详情',\n        MoreInfoAriaLabel: '了解有关 Microsoft Cookie 政策的详情',\n        MoreInfoUrl: 'https://go.microsoft.com/fwlink/?linkid=845480'\n    },\n    {\n        Market: 'zh-HK',\n        Message: '此網站會使用 Cookie 進行分析,並為您提供個人化內容與廣告。如繼續瀏覽此網站,即表示您同意上述用途。',\n        MoreInfo: '深入瞭解',\n        MoreInfoAriaLabel: '深入瞭解 Microsoft Cookie 政策',\n        MoreInfoUrl: 'https://go.microsoft.com/fwlink/?linkid=845480'\n    },\n    {\n        Market: 'zh-TW',\n        Message: '本網站為了分析、個人化內容和廣告目的而使用 Cookie。繼續瀏覽本網站,表示您同意這個用途。',\n        MoreInfo: '了解詳情',\n        MoreInfoAriaLabel: '深入了解 Microsoft 的 Cookie 政策',\n        MoreInfoUrl: 'https://go.microsoft.com/fwlink/?linkid=845480'\n    },\n    {\n        Market: 'mt-MT',\n        Message: 'Dan is-sit juża cookies għal analytics, kontenut personalizzat u reklami. Billi tkompli tfittex dan is-sit, taċċetta dan l-użu.',\n        MoreInfo: 'Itagħllem iżjed',\n        MoreInfoAriaLabel: \"Tgħallem aktar dwar il-Politika Cookie ta 'Microsoft\",\n        MoreInfoUrl: 'https://go.microsoft.com/fwlink/?linkid=845480'\n    },\n    {\n        Market: 'is-IS',\n        Message: 'Þessi síða notar fótspor fyrir greiningu, sérsniðið efni og auglýsingar. Með því að halda áfram að skoða þetta vefsvæði samþykkir þú þessa notkun.',\n        MoreInfo: 'Læra meira',\n        MoreInfoAriaLabel: 'Frekari upplýsingar um Cookie Policy Microsoft',\n        MoreInfoUrl: 'https://go.microsoft.com/fwlink/?linkid=845480'\n    }\n];\n","export function handleCTACallback({ props, entity, entityType, ctaType, skuId, planId, isOpenedFromPDP, ribbonKey }) {\n    // getUserAuthStatus will set the state based on the users sign in state, then let the cta show up based on the state.\n    props.getUserAuthStatus().then(()=>{\n        props.showCTAModal({\n            entityId: entity.entityId,\n            entityType,\n            ctaType,\n            skuId,\n            planId,\n            isOpenedFromPDP,\n            ribbonKey\n        });\n    });\n}\n","function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nfunction _object_spread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        var ownKeys = Object.keys(source);\n        if (typeof Object.getOwnPropertySymbols === \"function\") {\n            ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n            }));\n        }\n        ownKeys.forEach(function(key) {\n            _define_property(target, key, source[key]);\n        });\n    }\n    return target;\n}\nimport { urlPush, buildHref, withRouter } from '@shared/routerHistory';\nimport { changeBillingRegion, getUserAuthStatus, performSearchAll } from '@shared/actions/thunkActions';\nimport { createSearchboxInputChangedAction, createSearchDataReceivedAction, createModalAction, createVideoModalAction, createAppViewTelemetryLoggedAction, createRatingAction, createSearchSortingOptionChangedAction, createBreadcrumbAction, createSetIsNpsLogicVerifiedAction, createChangeLocaleLanguage } from '@shared/actions/actions';\nimport { AppView as AppViewComponent } from '@shared/components/appView';\nimport { Constants } from '@shared/utils/constants';\nimport { queryChanged } from '@shared/actions/queryThunkActions';\nimport { getAllEntityTypes, getEntityRegistrationByView } from '@shared/utils/entityRegistration';\nimport { getTelemetryDetailContentCurrentView } from '@shared/utils/appUtils';\nimport { connect } from 'react-redux';\nimport { saveCookieItem } from '@shared/utils/browserStorageUtils';\nimport { getUserFavouriteViewEntityList } from '@shared/utils/userFavouriteUtils';\nexport const mapStateToProps = (state, ownProps)=>{\n    const userFavorites = state.userFavourite;\n    const viewApps = getUserFavouriteViewEntityList(userFavorites.apps);\n    const viewServices = getUserFavouriteViewEntityList(userFavorites.services);\n    return {\n        isConverged: state.config.isConverged,\n        initLoading: state.config.initLoading,\n        searchSortingOption: state.search && state.search.searchSortingOption,\n        performedSubsetQueryString: state.apps && state.apps.subsetSearchQuery,\n        localizedStrings: state.config.locStrings,\n        locale: state.config.locale,\n        isEmbedded: state.config.isEmbedded,\n        storefrontName: state.config.storefrontName,\n        refreshToken: state.users.refreshToken,\n        homeAccountId: state.users.homeAccountId,\n        embedHost: state.config.embedHost,\n        enableNewNps: state.config.newNpsEnabled,\n        npsLogicVerified: state.config.npsLogicVerified,\n        correlationId: state.config.correlationId,\n        // eslint-disable-next-line @typescript-eslint/ban-types\n        buildHref: function(route, routeParams, newQuery, keepAllParams, oldParams, keepCampaignParams) {\n            return buildHref(route, ownProps.params, routeParams, oldParams || ownProps.location.query, newQuery, keepAllParams, state.config.locale, keepCampaignParams);\n        },\n        locationQuery: _object_spread({}, ownProps.location.query || {}, ownProps.params || {}),\n        entityId: state.modal.entityId,\n        showModal: state.modal.showModal,\n        userInfo: state.users,\n        isInErrorDialog: state.modal.modalId === Constants.ModalType.Error,\n        telemetryLoggedCount: state.config.appViewTelemetryLoggedCount,\n        nationalCloud: state.config.nationalCloud,\n        entityType: getEntityRegistrationByView(state.config.currentView),\n        isMobile: state.config.isMobile,\n        currentView: getTelemetryDetailContentCurrentView(state.config.currentView, state.config.currentGalleryViewIsCurated),\n        allApps: state.apps ? state.apps.dataList : null,\n        tileDataRequestId: state.apps ? state.apps.tileDataRequestId : '',\n        uiRole: state.users.profile && state.users.profile.uiRole,\n        regionCode: state.config.billingCountryCode,\n        regionDisabled: state.config.isDisabledBilling,\n        favoritesCount: viewApps.length + viewServices.length,\n        pcaInstanceInitialized: state.config.pcaInstanceInitialized\n    };\n};\nconst mapDispatchToProps = (dispatch)=>{\n    return {\n        searchSortingOptionChanged: (searchSortingOption)=>dispatch(createSearchSortingOptionChangedAction({\n                searchSortingOption\n            })),\n        changeSearchText: (searchvalue)=>dispatch(createSearchboxInputChangedAction({\n                searchString: searchvalue\n            })),\n        updateQuery: (query)=>dispatch(queryChanged(query)),\n        performSearchAll: (searchvalue, searchSortingOption)=>dispatch(performSearchAll(searchvalue, searchSortingOption)),\n        clearSearch: ()=>{\n            getAllEntityTypes().forEach((entityType)=>{\n                dispatch(createSearchDataReceivedAction({\n                    entityType,\n                    entityIdData: [],\n                    performedQuery: ''\n                }));\n            });\n        },\n        showCTAModal: ({ entityId, entityType, ctaType, skuId, planId, isOpenedFromPDP, ribbonKey })=>{\n            dispatch(createModalAction({\n                showModal: true,\n                modalId: Constants.ModalType.CTA,\n                entityId,\n                options: {\n                    ctaType,\n                    skuId,\n                    planId,\n                    ribbonKey\n                },\n                entityType,\n                isOpenedFromPDP\n            }));\n        },\n        showHowItWorksModal: ()=>{\n            dispatch(createVideoModalAction({\n                showModal: true,\n                videoThumbnail: null,\n                videoUrl: 'https://aka.ms/spzavideo',\n                videoName: 'How It Works'\n            }));\n        },\n        showErrorModal: ()=>{\n            dispatch(createModalAction({\n                showModal: true,\n                modalId: Constants.ModalType.Error\n            }));\n        },\n        showNPSModal: ()=>{\n            dispatch(createModalAction({\n                showModal: true,\n                modalId: Constants.ModalType.NPS\n            }));\n        },\n        showAnimationModal: ()=>{\n            dispatch(createModalAction({\n                showModal: true,\n                modalId: Constants.ModalType.Animation\n            }));\n        },\n        showRaingsModal: (app, accessKey, ctaType, callback)=>{\n            dispatch(createRatingAction({\n                showModal: true,\n                app,\n                accessKey,\n                ctaType,\n                callback\n            }));\n        },\n        showReportAbuseModal: (appId, reviewId, reviewTitle, reviewSource)=>{\n            dispatch(createModalAction({\n                showModal: true,\n                modalId: Constants.ModalType.ReportAbuse,\n                options: {\n                    appId,\n                    reviewId,\n                    reviewTitle,\n                    reviewSource\n                }\n            }));\n        },\n        updateTelemetryLoggedCount: ()=>dispatch(createAppViewTelemetryLoggedAction(null)),\n        openTile: (detailUrl)=>{\n            const breadcrumbUrl = '';\n            dispatch(createBreadcrumbAction({\n                breadcrumbUrl\n            }));\n            urlPush(detailUrl, true);\n        },\n        getUserAuthStatus: ()=>{\n            return dispatch(getUserAuthStatus());\n        },\n        setIsNpsLogicVerified: (verified)=>dispatch(createSetIsNpsLogicVerifiedAction({\n                verified\n            })),\n        openSignInModal: ()=>{\n            return dispatch(createModalAction({\n                showModal: true,\n                modalId: Constants.ModalType.SignIn\n            }));\n        },\n        onMarketChange: (countryCode)=>{\n            saveCookieItem(Constants.Cookies.billingRegionCookie, countryCode);\n            return dispatch(changeBillingRegion({\n                countryCode\n            }));\n        },\n        onLocaleChange: (locale)=>{\n            saveCookieItem(Constants.Cookies.LocaleCookie, locale);\n            const pathSegments = window.location.pathname.split('/');\n            pathSegments[1] = locale;\n            const url = `${pathSegments.join('/')}${window.location.search}`;\n            window.location.href = url;\n            return dispatch(createChangeLocaleLanguage({\n                locale\n            }));\n        },\n        dispatch\n    };\n};\nconst AppView = withRouter(connect(mapStateToProps, mapDispatchToProps)(AppViewComponent));\nexport default AppView;\n","import { createSetQueryAction } from './queryActions';\nimport { loadTileData } from './tileDataThunkActions';\nexport function queryChanged(query) {\n    return function(dispatch, getState) {\n        return Promise.resolve().then(()=>{\n            dispatch(createSetQueryAction({\n                query\n            }));\n            return dispatch(loadTileData());\n        }).catch((err)=>Promise.reject(err));\n    };\n}\n","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n    try {\n        var info = gen[key](arg);\n        var value = info.value;\n    } catch (error) {\n        reject(error);\n        return;\n    }\n    if (info.done) {\n        resolve(value);\n    } else {\n        Promise.resolve(value).then(_next, _throw);\n    }\n}\nfunction _async_to_generator(fn) {\n    return function() {\n        var self = this, args = arguments;\n        return new Promise(function(resolve, reject) {\n            var gen = fn.apply(self, args);\n            function _next(value) {\n                asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n            }\n            function _throw(err) {\n                asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n            }\n            _next(undefined);\n        });\n    };\n}\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport React, { useCallback, useMemo } from 'react';\nimport { useLocation, useNavigate, useRoutes } from 'react-router-dom';\nimport { useDispatch } from 'react-redux';\nimport { Constants } from '@shared/utils/constants';\nimport { createSetCurrentViewAction } from '@shared/actions/actions';\nimport { loadTileData } from '@shared/actions/tileDataThunkActions';\nimport { useLocationChange } from '@shared/hooks/useLocationChange';\nimport { useClientRoutes } from '@shared/hooks/useClientRoutes';\nimport { PATHS_TO_VIEW_MAP } from './pathsViewMap';\nimport AppView from '@shared/containers/AppView';\nconst Home = /*#__PURE__*/ React.lazy(()=>import('@shared/containers/home'));\nconst GalleryPage = /*#__PURE__*/ React.lazy(()=>import('@shared/containers/galleryPage'));\nconst AppDetails = /*#__PURE__*/ React.lazy(()=>import('./containers/appDetails'));\nconst ServiceDetails = /*#__PURE__*/ React.lazy(()=>import('./containers/serviceDetails'));\nconst AuthRedirect = /*#__PURE__*/ React.lazy(()=>import('@shared/components/AuthRedirect'));\nconst Checkout = /*#__PURE__*/ React.lazy(()=>import('./containers/LegacyCheckoutHydration'));\nconst SitemapContainer = /*#__PURE__*/ React.lazy(()=>import('./containers/sitemap'));\nconst PartnerContainer = /*#__PURE__*/ React.lazy(()=>import('@shared/containers/partners'));\nconst PartnersHostContainer = /*#__PURE__*/ React.lazy(()=>import('@shared/containers/partnersHost'));\nconst MyReviews = /*#__PURE__*/ React.lazy(()=>import('@shared/containers/myReview'));\nconst DynamicCampaign = /*#__PURE__*/ React.lazy(()=>import('@shared/containers/dynamicCampaign'));\nconst UserFavouriteDetail = /*#__PURE__*/ React.lazy(()=>import('@shared/containers/userFavouriteDetail'));\nconst UserPrivateOffersGallery = /*#__PURE__*/ React.lazy(()=>import('@shared/containers/userPrivateOffersGallery'));\n/**\n * Where actual routes should be declared, because the object is also used in the SSR to identify matched routes\n */ export const getRoutes = ()=>[\n        {\n            path: ':locale',\n            element: /*#__PURE__*/ _jsx(AppView, {}),\n            children: [\n                {\n                    index: true,\n                    element: /*#__PURE__*/ _jsx(Home, {})\n                },\n                {\n                    path: Constants.home,\n                    element: /*#__PURE__*/ _jsx(Home, {})\n                },\n                {\n                    path: 'marketplace',\n                    element: /*#__PURE__*/ _jsx(GalleryPage, {})\n                },\n                {\n                    path: Constants.appsGallery,\n                    element: /*#__PURE__*/ _jsx(GalleryPage, {})\n                },\n                {\n                    path: Constants.cloudsIndustryGallery,\n                    element: /*#__PURE__*/ _jsx(GalleryPage, {})\n                },\n                {\n                    path: 'product/:productId/:entityId',\n                    element: /*#__PURE__*/ _jsx(AppDetails, {})\n                },\n                {\n                    path: 'marketplace/checkout/:entityId',\n                    element: /*#__PURE__*/ _jsx(Checkout, {})\n                },\n                {\n                    path: 'partners',\n                    element: /*#__PURE__*/ _jsx(PartnerContainer, {})\n                },\n                {\n                    path: 'user/my-reviews',\n                    element: /*#__PURE__*/ _jsx(MyReviews, {})\n                },\n                {\n                    path: Constants.csGallery,\n                    element: /*#__PURE__*/ _jsx(GalleryPage, {})\n                },\n                {\n                    path: `${Constants.csGallery}/:entityId`,\n                    element: /*#__PURE__*/ _jsx(ServiceDetails, {})\n                },\n                {\n                    path: `${Constants.partnersAppSource}/*`,\n                    element: /*#__PURE__*/ _jsx(PartnersHostContainer, {})\n                },\n                {\n                    path: `marketplace/consultingservices/:entityId`,\n                    element: /*#__PURE__*/ _jsx(ServiceDetails, {})\n                },\n                {\n                    path: `campaigns/:publisher/:id`,\n                    element: /*#__PURE__*/ _jsx(DynamicCampaign, {})\n                },\n                {\n                    path: `user/my-favourites`,\n                    element: /*#__PURE__*/ _jsx(UserFavouriteDetail, {})\n                },\n                {\n                    path: `user/private-offers`,\n                    element: /*#__PURE__*/ _jsx(UserPrivateOffersGallery, {})\n                },\n                {\n                    path: ':privateOffer/product/:productId/:entityId',\n                    element: /*#__PURE__*/ _jsx(AppDetails, {})\n                },\n                {\n                    path: 'sitemap',\n                    element: /*#__PURE__*/ _jsx(SitemapContainer, {})\n                }\n            ]\n        },\n        {\n            path: 'redirect',\n            element: /*#__PURE__*/ _jsx(AuthRedirect, {})\n        }\n    ];\nexport const getView = (routeMatch)=>routeMatch.route.index ? PATHS_TO_VIEW_MAP.home : PATHS_TO_VIEW_MAP[routeMatch.route.path];\nconst Router = ()=>{\n    const location = useLocation();\n    const navigate = useNavigate();\n    const dispatch = useDispatch();\n    const setCurrentView = useCallback(/*#__PURE__*/ function() {\n        var _ref = _async_to_generator(function*(view, featureFlag = '') {\n            if (!view) {\n                return;\n            }\n            const query = new URLSearchParams(location.search);\n            if (featureFlag && query.get(featureFlag) === 'true') {\n                // the route is under a feature flag but the query param didn't have the feature flag set\n                // treat is as a route never existed\n                navigate('/404');\n            }\n            dispatch(createSetCurrentViewAction({\n                currentView: view\n            }));\n            // @ts-expect-error known dispatch type error\n            dispatch(loadTileData());\n        });\n        return function(view) {\n            return _ref.apply(this, arguments);\n        };\n    }(), [\n        dispatch,\n        location,\n        navigate\n    ]);\n    const clientRoutes = useMemo(()=>getRoutes(), []);\n    const routes = useClientRoutes({\n        routes: clientRoutes\n    });\n    useLocationChange({\n        setCurrentView,\n        map: PATHS_TO_VIEW_MAP,\n        routes\n    });\n    return useRoutes(routes);\n};\nexport default Router;\n","/* istanbul ignore file */ import { useCallback, useEffect } from 'react';\nimport { matchRoutes, useLocation } from 'react-router';\nimport { useHydration } from './useHydration';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { createSetInitLoadingAction } from 'actions/actions';\nexport function useLocationChange(options) {\n    const isHydrated = useHydration();\n    const location = useLocation();\n    const isEmbedded = useSelector((state)=>state.config.isEmbedded);\n    const dispatch = useDispatch();\n    const { setCurrentView, map, routes } = options;\n    const handleLocationChange = useCallback(()=>{\n        var _matches__route, _matches_;\n        const matches = matchRoutes(routes, location.pathname);\n        const matchedView = map[(_matches_ = matches[matches.length - 1]) === null || _matches_ === void 0 ? void 0 : (_matches__route = _matches_.route) === null || _matches__route === void 0 ? void 0 : _matches__route.path];\n        setCurrentView(matchedView === null || matchedView === void 0 ? void 0 : matchedView.view);\n    }, [\n        setCurrentView,\n        location,\n        map,\n        routes\n    ]);\n    useEffect(()=>{\n        if (!isHydrated) {\n            return;\n        }\n        if (isEmbedded) {\n            // Embedded starts in a loading state, therefore client side hydration expects the same state to be met.\n            // Loading is disabled once client has been hydrated.\n            dispatch(createSetInitLoadingAction({\n                initLoading: false\n            }));\n        }\n        handleLocationChange();\n    }, [\n        location,\n        handleLocationChange,\n        isHydrated,\n        isEmbedded,\n        dispatch\n    ]);\n}\n","function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nfunction _object_spread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        var ownKeys = Object.keys(source);\n        if (typeof Object.getOwnPropertySymbols === \"function\") {\n            ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n            }));\n        }\n        ownKeys.forEach(function(key) {\n            _define_property(target, key, source[key]);\n        });\n    }\n    return target;\n}\nfunction ownKeys(object, enumerableOnly) {\n    var keys = Object.keys(object);\n    if (Object.getOwnPropertySymbols) {\n        var symbols = Object.getOwnPropertySymbols(object);\n        if (enumerableOnly) {\n            symbols = symbols.filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n            });\n        }\n        keys.push.apply(keys, symbols);\n    }\n    return keys;\n}\nfunction _object_spread_props(target, source) {\n    source = source != null ? source : {};\n    if (Object.getOwnPropertyDescriptors) {\n        Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n        ownKeys(Object(source)).forEach(function(key) {\n            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n    }\n    return target;\n}\nimport { jsx as _jsx, Fragment as _Fragment } from \"react/jsx-runtime\";\nimport React from 'react';\nimport { getWindow } from '@shared/services/window';\nimport { SpzaInstrumentService } from '@shared/services/telemetry/spza/spzaInstrument';\nimport { Constants } from '@shared/utils/constants';\nimport { stringifyError } from '@shared/utils/errorUtils';\nimport { telemetryPageLoadTime } from '@shared/utils/pltUtils';\nimport { ensureClientLoggerInitialization, logger } from '@src/logger';\nimport { getNetworkStats } from '@shared/utils/appUtils';\nimport { initializeListener } from '@embed/embedMessaging';\nimport { initBusinessTelemetryClient } from '@shared/hooks/useTelemetry';\nexport class RootHandler extends React.Component {\n    componentDidMount() {\n        const { store, landingView, isEmbedded } = this.props;\n        telemetryPageLoadTime({\n            landingView,\n            isEmbedded\n        });\n        ensureClientLoggerInitialization(store);\n        initBusinessTelemetryClient();\n        if (isEmbedded) {\n            // This will register a listener for the javascript 'message' event that\n            // the host window uses to communicate with the iframe\n            initializeListener(store.dispatch, store.getState().config.embedHost);\n        }\n    }\n    componentDidCatch(error, errorInfo) {\n        this.telemetry(Constants.Telemetry.Action.RootHandler, Constants.Telemetry.ActionModifier.Error, {\n            errorInfo: stringifyError(errorInfo),\n            error: stringifyError(error)\n        });\n    }\n    static getDerivedStateFromError(error) {\n        // The error is logged here for dev mode (with babel) to catch the hydration mismatch stack trace\n        console.error('React Error', error);\n    }\n    telemetry(action, actionModifier, details) {\n        const { isEmbedded = false, landingView } = this.props;\n        const connection = getNetworkStats();\n        const userAgent = navigator.userAgent;\n        const payload = {\n            page: getWindow().location.href,\n            action,\n            actionModifier,\n            details: JSON.stringify(_object_spread_props(_object_spread({}, details), {\n                landingView,\n                isEmbedded,\n                connection,\n                userAgent\n            }))\n        };\n        SpzaInstrumentService.getProvider().probe('logTelemetryInfo', payload);\n        logger.info(payload.details, {\n            action: payload.action,\n            actionModifier: payload.actionModifier\n        });\n    }\n    flushTelemetry() {\n        SpzaInstrumentService.getProvider().probe('flushTelemetryInfo');\n    }\n    render() {\n        return /*#__PURE__*/ _jsx(_Fragment, {\n            children: this.props.children\n        });\n    }\n}\n","function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport SpzaComponent from './spzaComponent';\nimport { getWindow, getDocument } from '@shared/services/window';\nimport { logTelemetry } from '../utils/telemetryUtils';\nimport { Constants } from '../utils/constants';\nimport { logger } from '@src/logger';\nimport { withHydration } from 'hooks/useHydration';\nclass ScrollToTopButton extends SpzaComponent {\n    componentDidMount() {\n        if (__CLIENT__ && this.childElement) {\n            getDocument().body.appendChild(this.childElement);\n            getWindow().addEventListener('scroll', this.handleScroll.bind(this));\n        }\n    }\n    componentWillUnmount() {\n        if (__CLIENT__ && this.childElement) {\n            getWindow().removeEventListener('scroll', this.handleScroll.bind(this));\n            getDocument().body.removeChild(this.childElement);\n        }\n    }\n    get offsetY() {\n        return this.props.offsetYToAppear ? this.props.offsetYToAppear : ScrollToTopButton.defaultOffsetY;\n    }\n    handleScroll() {\n        const curWindow = getWindow();\n        const yOffsetToAppear = this.offsetY;\n        this.setState({\n            isShowButton: curWindow && curWindow.pageYOffset > yOffsetToAppear\n        });\n    }\n    goToThePageTop() {\n        const curWindow = getWindow();\n        if (curWindow) {\n            curWindow.scrollTo(0, 0);\n            logTelemetry(Constants.Telemetry.Action.Click, Constants.Telemetry.ActionModifier.ScrollToTopButton, 'Go back to the top of the page using the scroll to top button');\n            logger.info('Go back to the top of the page using the scroll to top button', {\n                action: Constants.Telemetry.Action.Click,\n                actionModifier: Constants.Telemetry.ActionModifier.ScrollToTopButton\n            });\n        }\n    }\n    renderButton() {\n        return this.state.isShowButton && /*#__PURE__*/ _jsx(\"button\", {\n            className: \"appSourceScrollToTop\",\n            onClick: ()=>this.goToThePageTop(),\n            \"aria-label\": \"Scroll to top\"\n        });\n    }\n    renderImpl() {\n        if (!this.props.isHydrated) {\n            return null;\n        }\n        return /*#__PURE__*/ ReactDOM.createPortal(this.renderButton(), this.childElement);\n    }\n    constructor(props, context){\n        super(props, context), _define_property(this, \"context\", void 0), _define_property(this, \"childElement\", void 0);\n        this.state = {\n            isShowButton: false\n        };\n        if (__CLIENT__) {\n            var _getDocument;\n            this.childElement = (_getDocument = getDocument()) === null || _getDocument === void 0 ? void 0 : _getDocument.createElement('div');\n        }\n    }\n}\n_define_property(ScrollToTopButton, \"defaultOffsetY\", 90);\nexport default withHydration(ScrollToTopButton);\n","import { jwtDecode } from 'jwt-decode';\nfunction isTokenExpiring(token, minTimeToExpirationSec) {\n    try {\n        const decodedToken = token ? jwtDecode(token) : null;\n        if (decodedToken) {\n            const currentTimeSec = Math.round(Date.now() / 1000);\n            const timeToExpirationSec = currentTimeSec - decodedToken.exp;\n            return timeToExpirationSec < minTimeToExpirationSec;\n        }\n    } catch (err) {\n        return false;\n    }\n    return false;\n}\nexport function shouldRefreshAccessToken(accessToken, minTimeToExpirationSec) {\n    return isTokenExpiring(accessToken.spza, minTimeToExpirationSec) || isTokenExpiring(accessToken.graph, minTimeToExpirationSec) || isTokenExpiring(accessToken.arm, minTimeToExpirationSec) || isTokenExpiring(accessToken.pifd, minTimeToExpirationSec) || isTokenExpiring(accessToken.jarvis, minTimeToExpirationSec) || isTokenExpiring(accessToken.commerce, minTimeToExpirationSec) || isTokenExpiring(accessToken.marketplaceLeads, minTimeToExpirationSec);\n}\n","import { LocalizationSettings } from './constants';\nexport const allLocales = [\n    'fr-dz',\n    'es-ar',\n    'en-au',\n    'nl-be',\n    'fr-be',\n    'es-bo',\n    'bs-ba',\n    'pt-br',\n    'en-ca',\n    'fr-ca',\n    'cs-cz',\n    'es-cl',\n    'es-co',\n    'es-cr',\n    'sr-latn-me',\n    'en-cy',\n    'da-dk',\n    'de-de',\n    'es-ec',\n    'et-ee',\n    'en-eg',\n    'es-sv',\n    'es-es',\n    'fr-fr',\n    'es-gt',\n    'en-ae',\n    'es-hn',\n    'en-hk',\n    'hr-hr',\n    'en-in',\n    'id-id',\n    'en-ie',\n    'is-is',\n    'en-il',\n    'it-it',\n    'en-jo',\n    'lv-lv',\n    'en-lb',\n    'lt-lt',\n    'de-lu',\n    'fr-lu',\n    'hu-hu',\n    'en-my',\n    'en-mt',\n    'es-mx',\n    'fr-ma',\n    'nl-nl',\n    'en-nz',\n    'es-ni',\n    'en-ng',\n    'nb-no',\n    'de-at',\n    'en-pk',\n    'es-pa',\n    'es-py',\n    'es-pe',\n    'en-ph',\n    'pl-pl',\n    'pt-pt',\n    'es-pr',\n    'es-do',\n    'ro-md',\n    'ro-ro',\n    'en-sa',\n    'de-ch',\n    'en-sg',\n    'sl-si',\n    'sk-sk',\n    'en-za',\n    'sr-latn-rs',\n    'en-lk',\n    'fr-ch',\n    'fi-fi',\n    'sv-se',\n    'fr-tn',\n    'tr-tr',\n    'en-gb',\n    'en-us',\n    'es-uy',\n    'es-ve',\n    'vi-vn',\n    'el-gr',\n    'ru-by',\n    'bg-bg',\n    'ru-kz',\n    'ru-ru',\n    'uk-ua',\n    'he-il',\n    'ar-iq',\n    'ar-sa',\n    'ar-ly',\n    'ar-eg',\n    'ar-ae',\n    'th-th',\n    'ko-kr',\n    'zh-cn',\n    'zh-tw',\n    'ja-jp',\n    'zh-hk'\n];\nexport const i18nLocales = [\n    'en-US',\n    'ar-SA',\n    'bg-BG',\n    'ca-ES',\n    'cs-CZ',\n    'da-DK',\n    'de-DE',\n    'el-GR',\n    'es-ES',\n    'et-EE',\n    'eu-ES',\n    'fi-FI',\n    'fr-FR',\n    'gl-ES',\n    'he-IL',\n    'hi-IN',\n    'hr-HR',\n    'hu-HU',\n    'id-ID',\n    'it-IT',\n    'ja-JP',\n    'kk-KZ',\n    'ko-KR',\n    'lt-LT',\n    'lv-LV',\n    'ms-MY',\n    'nb-NO',\n    'nl-NL',\n    'pl-PL',\n    'pt-BR',\n    'pt-PT',\n    'ro-RO',\n    'ru-RU',\n    'sk-SK',\n    'sl-SI',\n    'sr-Cyrl-RS',\n    'sr-Latn-RS',\n    'sv-SE',\n    'th-TH',\n    'tr-TR',\n    'uk-UA',\n    'vi-VN',\n    'zh-CN',\n    'zh-TW'\n];\nexport const languageToRegion = {\n    ar: 'sa',\n    bg: 'bg',\n    cs: 'cz',\n    da: 'dk',\n    de: 'de',\n    el: 'gr',\n    en: 'us',\n    es: 'es',\n    et: 'ee',\n    fi: 'fi',\n    fr: 'fr',\n    he: 'il',\n    hr: 'hr',\n    hu: 'hu',\n    id: 'id',\n    it: 'it',\n    ja: 'jp',\n    ko: 'kr',\n    lt: 'lt',\n    lv: 'lv',\n    no: 'no',\n    nl: 'nl',\n    pl: 'pl',\n    pt: 'br',\n    ro: 'ro',\n    ru: 'ru',\n    sk: 'sk',\n    sl: 'si',\n    sv: 'se',\n    th: 'th',\n    tr: 'tr',\n    uk: 'ua',\n    vi: 'vn',\n    zh: 'cn',\n    ca: 'es',\n    eu: 'es',\n    gl: 'es',\n    kk: 'kz',\n    ms: 'my',\n    hi: 'in',\n    'sr-cyrl': 'rs',\n    'sr-latn': 'rs'\n};\nexport const i18nLocalesLowerCase = i18nLocales.map((locale)=>locale.toLowerCase());\nexport const scriptLangauges = [\n    'sr-cyrl',\n    'sr-latn'\n];\nexport const languagesOnlyLocales = [\n    'zh-hant',\n    'zh-hans'\n];\nexport function GetLanguageCode(locale) {\n    // languageCode must only be defined if locale was valid and we could extract the right value\n    let languageCode = '';\n    const lowerCaseLocale = locale.toLowerCase();\n    // the special cases:\n    // todo: norwegian is not mapped\n    if (lowerCaseLocale === 'zh-cn' || lowerCaseLocale === 'zh-hans') {\n        languageCode = 'zh-Hans';\n    } else if (lowerCaseLocale === 'zh-tw' || lowerCaseLocale === 'zh-hk' || lowerCaseLocale === 'zh-hant') {\n        languageCode = 'zh-Hant';\n    } else if (lowerCaseLocale === 'sr-cyrl') {\n        languageCode = 'sr-Cyrl';\n    } else if (lowerCaseLocale === 'sr-latn') {\n        languageCode = 'sr-Latn';\n    } else if (lowerCaseLocale === 'pt-pt') {\n        languageCode = 'pt-PT';\n    } else if (lowerCaseLocale === 'nb-no') {\n        languageCode = 'no'; // todo: Joey to make sure this is correct mapping\n    } else if (lowerCaseLocale.lastIndexOf('-') > 0) {\n        languageCode = lowerCaseLocale.substring(0, lowerCaseLocale.lastIndexOf('-'));\n    } else {\n        // Assume that the input is the languageCode.\n        // If it is not valid, it should be filtered out by the caller as appropriate.\n        languageCode = lowerCaseLocale;\n    }\n    // GetLanguageCode will be used both by the static list of locales. And, on each request.\n    return languageCode;\n}\nexport function extractLanguageFromLocale(locale = '') {\n    const loweredLocale = locale.toLowerCase();\n    if (scriptLangauges.includes(loweredLocale)) {\n        return loweredLocale;\n    }\n    const splitedLocale = loweredLocale.split('-');\n    if (splitedLocale.length === 1) {\n        return loweredLocale;\n    }\n    const languages = splitedLocale.slice(0, splitedLocale.length - 1);\n    return languages.join('-');\n}\nexport function extractRegionFromLocale(locale = '') {\n    const splitedLocale = locale.split('-');\n    if (splitedLocale.length === 1) {\n        return '';\n    }\n    return splitedLocale[splitedLocale.length - 1];\n}\nexport function getSupportedI18nLocale(locale) {\n    if (i18nLocalesLowerCase.includes(locale)) {\n        return locale;\n    }\n    const language = extractLanguageFromLocale(locale);\n    const region = languageToRegion[`${language}`];\n    if (region) {\n        return `${language}-${region}`;\n    }\n    return LocalizationSettings.defaultLng;\n}\nfunction formatLanguageCode(language) {\n    return language.split('-').map((lang, index)=>{\n        if (index === 0) {\n            return lang.toLowerCase();\n        }\n        return lang.charAt(0).toUpperCase() + lang.slice(1).toLowerCase();\n    }).join('-');\n}\nexport function getI18NLocale(requestLocale = '') {\n    const loweredLocale = requestLocale.toLowerCase();\n    if (languagesOnlyLocales.includes(loweredLocale)) {\n        return formatLanguageCode(loweredLocale);\n    }\n    const locale = getSupportedI18nLocale(loweredLocale);\n    const langauge = formatLanguageCode(extractLanguageFromLocale(locale));\n    const region = extractRegionFromLocale(locale).toUpperCase();\n    return [\n        langauge,\n        region\n    ].join('-');\n}\n","import { Environment } from '@shared/utils/constants';\nexport const isNonProd = (env)=>{\n    return env === Environment.Development;\n};\nexport const DEBUG_STATE = isNonProd(process.env.APP_ENV);\n","import { use } from 'i18next';\nimport { initReactI18next } from 'react-i18next';\nimport { getWindow } from '@fluentui/react';\nimport { i18nLocales } from '@shared/utils/locales';\nimport { LocalizationSettings, ResourcesFiles } from '@shared/utils/constants';\nimport { DEBUG_STATE } from '@shared/utils/debug';\nconst i18nInit = ()=>{\n    var _getWindow;\n    const i18nInstanceFromServer = (_getWindow = getWindow()) === null || _getWindow === void 0 ? void 0 : _getWindow.__INITIAL_STATE__.config.i18nInstance;\n    const { language, store } = i18nInstanceFromServer;\n    return use(initReactI18next).init({\n        debug: DEBUG_STATE,\n        fallbackLng: LocalizationSettings.defaultLng,\n        lng: language,\n        supportedLngs: i18nLocales,\n        ns: [\n            LocalizationSettings.defaultNS,\n            ResourcesFiles.header,\n            ResourcesFiles.search,\n            ResourcesFiles.home,\n            ResourcesFiles.taxonomy\n        ],\n        defaultNS: LocalizationSettings.defaultNS,\n        interpolation: {\n            escapeValue: false\n        },\n        load: 'currentOnly',\n        resources: store.data\n    });\n};\nexport default i18nInit;\n","import { windowOnErrorHandler } from '@shared/utils/appUtils';\nimport { renderErrorModal } from '@shared/utils/errorHandlerUtil';\nimport { handleInterruptedHydration } from './recoverableHydrationError';\nexport const onError = (window, store)=>{\n    const eventListener = (msg, file, line, col, error)=>{\n        if (handleInterruptedHydration(msg)) {\n            return;\n        }\n        windowOnErrorHandler({\n            msg,\n            file,\n            line,\n            col,\n            error\n        });\n        if ((file === null || file === void 0 ? void 0 : file.indexOf(window.location.origin)) > -1) {\n            renderErrorModal(store);\n        }\n    };\n    window.onerror = eventListener;\n};\n","/* istanbul ignore file */ import { getAwaMetaTags } from '@shared/utils/seoUtils';\nexport const appendHeaderTags = (state)=>{\n    const awaMetaTags = getAwaMetaTags(state);\n    awaMetaTags.forEach((awaMetaTag)=>{\n        if (awaMetaTag) {\n            document.head.appendChild(awaMetaTag);\n        }\n    });\n};\n","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n    try {\n        var info = gen[key](arg);\n        var value = info.value;\n    } catch (error) {\n        reject(error);\n        return;\n    }\n    if (info.done) {\n        resolve(value);\n    } else {\n        Promise.resolve(value).then(_next, _throw);\n    }\n}\nfunction _async_to_generator(fn) {\n    return function() {\n        var self = this, args = arguments;\n        return new Promise(function(resolve, reject) {\n            var gen = fn.apply(self, args);\n            function _next(value) {\n                asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n            }\n            function _throw(err) {\n                asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n            }\n            _next(undefined);\n        });\n    };\n}\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport React, { startTransition } from 'react';\nimport { hydrateRoot } from 'react-dom/client';\nimport { unstable_HistoryRouter as HistoryRouter } from 'react-router-dom';\nimport { getWindow } from '@shared/services/window';\nimport { initRouterHistory, appHistory } from '@shared/routerHistory';\nimport { handleRecoverableHydrationError } from '@shared/handlers/recoverableHydrationError';\nimport { setHydrationStart, setScriptStart } from '@shared/utils/pltUtils';\nimport { getRoutes } from './Router';\nimport App, { initApp } from '@appsource/App';\nimport '@appsource/styles/styles-LTR.scss';\nlet didInitRouter = false;\nsetScriptStart();\nfunction hydrateAppSource() {\n    return _hydrateAppSource.apply(this, arguments);\n}\nfunction _hydrateAppSource() {\n    _hydrateAppSource = _async_to_generator(function*() {\n        var _getWindow_disablePriorityWorkaround, _getWindow;\n        (_getWindow_disablePriorityWorkaround = (_getWindow = getWindow()).disablePriorityWorkaround) === null || _getWindow_disablePriorityWorkaround === void 0 ? void 0 : _getWindow_disablePriorityWorkaround.call(_getWindow);\n        if (!didInitRouter) {\n            initRouterHistory({\n                appRoutes: getRoutes()\n            });\n            didInitRouter = true;\n        }\n        const store = initApp();\n        const { siteEnvironment } = store.getState().config;\n        const root = document.getElementById('react-view');\n        setHydrationStart();\n        startTransition(()=>{\n            hydrateRoot(root, /*#__PURE__*/ _jsx(HistoryRouter, {\n                history: appHistory,\n                children: /*#__PURE__*/ _jsx(App, {\n                    store: store\n                })\n            }), {\n                onRecoverableError: (error)=>handleRecoverableHydrationError(error, siteEnvironment)\n            });\n        });\n    });\n    return _hydrateAppSource.apply(this, arguments);\n}\nwindow.HYDRATE = hydrateAppSource;\nif (window.LOADED) {\n    hydrateAppSource();\n}\n","import { getWindow } from '@shared/services/window';\nimport * as appConfig from './appConfig';\nimport { getXMSClientName } from '../../utils/appUtils';\nimport { ApiVersion, marketplaceApiVersion } from '@shared/specifics';\nexport function initBrowserConfig(appName, store, embedded = false) {\n    var _getWindow;\n    if (!store) {\n        throw Error('store object is NOT found. Is program running under browser?');\n    }\n    const hostname = (_getWindow = getWindow()) === null || _getWindow === void 0 ? void 0 : _getWindow.location.origin;\n    const state = store.getState();\n    appConfig.init({\n        runtimeEnvironment: 'browser',\n        embedded,\n        appName,\n        graphApi: state.users.graphApi,\n        correlationId: state.config.correlationId,\n        hostname,\n        config: state.config,\n        basePath: `${hostname}/${state.config.locale}`,\n        apiVersion: ApiVersion,\n        store,\n        marketplaceApiVersion,\n        marketplaceApiHost: state.config.marketplaceApiHost,\n        saasRPHost: state.config.saasRPHost,\n        marketplaceLeadsHost: state.config.marketplaceLeadsHost,\n        marketplaceLeadsAudienceId: state.config.marketplaceLeadsAudienceId,\n        MPRPHost: state.config.MPRPHost,\n        armApiHost: state.config.armApiHost,\n        pidlEnv: state.config.pidlEnv,\n        partnersIframeUrl: state.config.partnersIframeUrl,\n        partnersApiHost: state.config.partnersApiHost,\n        XMSClientName: getXMSClientName(appName),\n        oneCatalogApiHost: state.config.oneCatalogApiHost,\n        expHeaderDisabled: state.config.expHeaderDisabled,\n        enableOneTaxonomy: state.config.enableOneTaxonomy,\n        siteConsent: state.config.cookiesConsent.WCPConsent,\n        agreementAppId: state.config.agreementAppId,\n        isConverged: state.config.isConverged\n    });\n}\n","import { getWindow } from '@shared/services/window';\nexport const COMSCORE_URL = 'https://www.microsoft.com/library/svy/app/broker.js';\nexport const getComscorePresentedTime = ()=>{\n    try {\n        var _getWindow_COMSCORE_SiteRecruit_Utils_UserPersistence, _getWindow_COMSCORE_SiteRecruit_Utils, _getWindow_COMSCORE_SiteRecruit, _getWindow_COMSCORE, _getWindow;\n        const comscoreCookie = JSON.parse((_getWindow = getWindow()) === null || _getWindow === void 0 ? void 0 : (_getWindow_COMSCORE = _getWindow.COMSCORE) === null || _getWindow_COMSCORE === void 0 ? void 0 : (_getWindow_COMSCORE_SiteRecruit = _getWindow_COMSCORE.SiteRecruit) === null || _getWindow_COMSCORE_SiteRecruit === void 0 ? void 0 : (_getWindow_COMSCORE_SiteRecruit_Utils = _getWindow_COMSCORE_SiteRecruit.Utils) === null || _getWindow_COMSCORE_SiteRecruit_Utils === void 0 ? void 0 : (_getWindow_COMSCORE_SiteRecruit_Utils_UserPersistence = _getWindow_COMSCORE_SiteRecruit_Utils.UserPersistence) === null || _getWindow_COMSCORE_SiteRecruit_Utils_UserPersistence === void 0 ? void 0 : _getWindow_COMSCORE_SiteRecruit_Utils_UserPersistence.getCookieValue('msresearch'));\n        const userId = comscoreCookie === null || comscoreCookie === void 0 ? void 0 : comscoreCookie.userid;\n        const lastPresentedTimeInMs = parseInt(userId === null || userId === void 0 ? void 0 : userId.substring(0, 13));\n        return lastPresentedTimeInMs > 0 ? new Date(lastPresentedTimeInMs) : null;\n    } catch (error) {\n        return null;\n    }\n};\n","import { DataMap } from '@shared/utils/dataMapping';\nexport function getGalleryPageTitle() {\n    return 'servicesGallery_pageTitle';\n}\nexport function getDetailsPageTitle() {\n    return 'detail_pageTitle';\n}\nexport function getFilterItemRoute({ filterItem, filterValue, filterTileType }) {\n    const filter = DataMap[`${filterItem}`][`${filterValue}`];\n    const routeArgs = null;\n    const params = {\n        industry: null,\n        category: null,\n        product: null,\n        search: null,\n        serviceType: null\n    };\n    params[`${filterTileType}`] = filter.UrlKey;\n    return {\n        routeArgs,\n        params\n    };\n}\nexport function isFilterItemMatch({ service, filterItem, filterValue }) {\n    return service[`${filterItem}`] & DataMap[`${filterItem}`][`${filterValue}`].FilterID;\n}\n","import { getLocalStorageItem, saveLocalStorageItem } from '@shared/utils/browserStorageUtils';\nconst smileFrownSubmittedTimeKey = 'lastFeedbackTime';\nexport const storeFeedbackSubmittedTime = ()=>{\n    saveLocalStorageItem(smileFrownSubmittedTimeKey, JSON.stringify(new Date()));\n};\nexport const getFeedbackSubmittedTime = ()=>{\n    try {\n        const lastSubmittedTime = JSON.parse(getLocalStorageItem(smileFrownSubmittedTimeKey));\n        return Date.parse(lastSubmittedTime) ? new Date(lastSubmittedTime) : null;\n    } catch (error) {\n        return null;\n    }\n};\n","function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nfunction _object_spread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        var ownKeys = Object.keys(source);\n        if (typeof Object.getOwnPropertySymbols === \"function\") {\n            ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n            }));\n        }\n        ownKeys.forEach(function(key) {\n            _define_property(target, key, source[key]);\n        });\n    }\n    return target;\n}\nfunction ownKeys(object, enumerableOnly) {\n    var keys = Object.keys(object);\n    if (Object.getOwnPropertySymbols) {\n        var symbols = Object.getOwnPropertySymbols(object);\n        if (enumerableOnly) {\n            symbols = symbols.filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n            });\n        }\n        keys.push.apply(keys, symbols);\n    }\n    return keys;\n}\nfunction _object_spread_props(target, source) {\n    source = source != null ? source : {};\n    if (Object.getOwnPropertyDescriptors) {\n        Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n        ownKeys(Object(source)).forEach(function(key) {\n            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n    }\n    return target;\n}\nimport { matchPath } from 'react-router-dom';\nimport { getLocalStorageItem, saveLocalStorageItem } from '@shared/utils/browserStorageUtils';\nimport { getFeedbackSubmittedTime, getComscorePresentedTime } from '@appsource/utils';\nimport { getWindow } from '@shared/services/window';\nimport { routes } from '@shared/routerHistory';\nconst npsMaxDeclinedDays = 14;\nconst npsMaxDeclinedDaysInMs = npsMaxDeclinedDays * 1000 * 3600 * 24;\nconst npsMaxSubmittedDays = 90;\nconst npsMaxSubmittedDaysInMs = npsMaxSubmittedDays * 1000 * 3600 * 24;\nconst feedbackMaxSubmittedDays = 14;\nconst feedbackSubmittedDaysInMs = feedbackMaxSubmittedDays * 1000 * 3600 * 24;\nconst comscoreMaxSubmittedDays = 14;\nconst comscoreMaxSubmittedDaysInMs = comscoreMaxSubmittedDays * 1000 * 3600 * 24;\nconst npsLocalStorageKey = 'nps';\nlet npsModule = null;\nexport const getNpsModule = ()=>{\n    return npsModule;\n};\nconst getEmptyNpsPersistentMetadata = ()=>{\n    return {\n        lastSubmittedTime: null,\n        lastDismissedTime: null,\n        lastCtaTime: null\n    };\n};\nconst getEmptyNpsMetadata = ()=>{\n    return _object_spread_props(_object_spread({}, getEmptyNpsPersistentMetadata()), {\n        pdpViewsCount: 0,\n        searchActionsCount: 0,\n        filterActionsCount: 0,\n        galleryChangesCount: 0,\n        categoryChangesCount: 0,\n        paginationActionsCount: 0,\n        seeAllActionsCount: 0\n    });\n};\nconst getNpsFromLocalStorage = ()=>{\n    const npsMetadataTimesString = getLocalStorageItem(npsLocalStorageKey);\n    try {\n        const npsMetadata = JSON.parse(npsMetadataTimesString);\n        return {\n            lastSubmittedTime: Date.parse(npsMetadata === null || npsMetadata === void 0 ? void 0 : npsMetadata.lastSubmittedTime) ? new Date(npsMetadata.lastSubmittedTime) : null,\n            lastDismissedTime: Date.parse(npsMetadata === null || npsMetadata === void 0 ? void 0 : npsMetadata.lastDismissedTime) ? new Date(npsMetadata.lastDismissedTime) : null,\n            lastCtaTime: Date.parse(npsMetadata === null || npsMetadata === void 0 ? void 0 : npsMetadata.lastCtaTime) ? new Date(npsMetadata.lastCtaTime) : null\n        };\n    } catch (err) {\n        return getEmptyNpsPersistentMetadata();\n    }\n};\nconst comscoreAlreadySubmitted = ()=>{\n    var _lastPresentedTime_getTime;\n    const lastPresentedTime = getComscorePresentedTime();\n    if (!lastPresentedTime || !((_lastPresentedTime_getTime = lastPresentedTime.getTime) === null || _lastPresentedTime_getTime === void 0 ? void 0 : _lastPresentedTime_getTime.call(lastPresentedTime))) return false;\n    return Date.now() - lastPresentedTime.getTime() < comscoreMaxSubmittedDaysInMs;\n};\nconst feedbackAlreadySubmitted = ()=>{\n    var _lastSubmittedTime_getTime;\n    const lastSubmittedTime = getFeedbackSubmittedTime();\n    if (!lastSubmittedTime || !((_lastSubmittedTime_getTime = lastSubmittedTime.getTime) === null || _lastSubmittedTime_getTime === void 0 ? void 0 : _lastSubmittedTime_getTime.call(lastSubmittedTime))) return false;\n    return Date.now() - lastSubmittedTime.getTime() < feedbackSubmittedDaysInMs;\n};\nconst otherFeedbacksAlreadySubmitted = ()=>{\n    return feedbackAlreadySubmitted() || comscoreAlreadySubmitted();\n};\nconst storeNpsModule = ()=>{\n    if (npsModule) {\n        const { lastCtaTime, lastDismissedTime, lastSubmittedTime } = npsModule.metadata;\n        const objectToStore = {\n            lastCtaTime,\n            lastDismissedTime,\n            lastSubmittedTime\n        };\n        saveLocalStorageItem(npsLocalStorageKey, JSON.stringify(objectToStore));\n    }\n};\nconst homePageMatch = ()=>{\n    const currentPathname = getWindow().location.pathname.toLowerCase();\n    return !!matchPath(`/:locale${routes.home.getPath()}`, currentPathname) || !!matchPath('/:locale', currentPathname);\n};\nclass Nps {\n    get metadata() {\n        return this.npsMetadata;\n    }\n    hasDeclinedBefore() {\n        var _lastDismissedTime_getTime;\n        const lastDismissedTime = this.npsMetadata.lastDismissedTime;\n        if (!lastDismissedTime || !((_lastDismissedTime_getTime = lastDismissedTime.getTime) === null || _lastDismissedTime_getTime === void 0 ? void 0 : _lastDismissedTime_getTime.call(lastDismissedTime))) return false;\n        return Date.now() - lastDismissedTime.getTime() < npsMaxDeclinedDaysInMs;\n    }\n    hasSubmittedBefore() {\n        var _lastSubmittedTime_getTime;\n        const lastSubmittedTime = this.npsMetadata.lastSubmittedTime;\n        if (!lastSubmittedTime || !((_lastSubmittedTime_getTime = lastSubmittedTime.getTime) === null || _lastSubmittedTime_getTime === void 0 ? void 0 : _lastSubmittedTime_getTime.call(lastSubmittedTime))) return false;\n        return Date.now() - lastSubmittedTime.getTime() < npsMaxSubmittedDaysInMs;\n    }\n    hasCtaBefore() {\n        var _lastCtaTime_getTime;\n        const lastCtaTime = this.npsMetadata.lastCtaTime;\n        if (!lastCtaTime || !((_lastCtaTime_getTime = lastCtaTime.getTime) === null || _lastCtaTime_getTime === void 0 ? void 0 : _lastCtaTime_getTime.call(lastCtaTime))) return false;\n        return lastCtaTime.getTime() < Date.now();\n    }\n    calculateTotalActions() {\n        const metadata = this.npsMetadata;\n        return metadata.categoryChangesCount + metadata.pdpViewsCount + metadata.filterActionsCount + metadata.searchActionsCount + metadata.seeAllActionsCount + metadata.galleryChangesCount + metadata.paginationActionsCount;\n    }\n    checkForCompliance() {\n        if (this.hasDeclinedBefore() || this.hasSubmittedBefore() || this.checkForOtherFeedbacks()) return;\n        const totalActionsCount = this.calculateTotalActions();\n        if (this.hasCtaBefore() && totalActionsCount >= 2 || totalActionsCount >= 10) {\n            var _this_onVerified, _this;\n            (_this_onVerified = (_this = this).onVerified) === null || _this_onVerified === void 0 ? void 0 : _this_onVerified.call(_this, this.npsMetadata);\n        }\n    }\n    ctaClicked(trigger = true) {\n        if (!homePageMatch()) {\n            if (!(this.hasDeclinedBefore() || this.hasSubmittedBefore() || this.checkForOtherFeedbacks())) {\n                this.npsMetadata.lastCtaTime = new Date();\n                if (trigger) {\n                    var _this_onVerified, _this;\n                    (_this_onVerified = (_this = this).onVerified) === null || _this_onVerified === void 0 ? void 0 : _this_onVerified.call(_this, this.npsMetadata);\n                }\n            }\n            this.npsMetadata.lastCtaTime = new Date();\n            storeNpsModule();\n        }\n    }\n    npsSubmitted() {\n        this.npsMetadata.lastSubmittedTime = new Date();\n        storeNpsModule();\n    }\n    npsDismissed() {\n        this.npsUpdateLastDismissTime();\n    }\n    npsUpdateLastDismissTime() {\n        this.npsMetadata.lastDismissedTime = new Date();\n        storeNpsModule();\n    }\n    increaseActionsCounter(event) {\n        if (!homePageMatch()) {\n            this.npsMetadata[`${event}`] += 1;\n            this.checkForCompliance();\n        }\n    }\n    // eslint-disable-next-line no-useless-constructor\n    constructor(npsMetadata, checkForOtherFeedbacks, onVerified){\n        _define_property(this, \"npsMetadata\", void 0);\n        _define_property(this, \"checkForOtherFeedbacks\", void 0);\n        _define_property(this, \"onVerified\", void 0);\n        this.npsMetadata = npsMetadata;\n        this.checkForOtherFeedbacks = checkForOtherFeedbacks;\n        this.onVerified = onVerified;\n    }\n}\nexport const initializeNpsModule = (onVerify)=>{\n    const npsPersistentMetadata = getNpsFromLocalStorage();\n    const npsMetadata = _object_spread({}, getEmptyNpsMetadata(), npsPersistentMetadata);\n    npsModule = new Nps(npsMetadata, otherFeedbacksAlreadySubmitted, onVerify);\n};\n","/*\n    These constants are used only in the embedded client.  They correspond to\n    the values that are used in our host/client messaging contracts\n*/ (function(constants) {\n    constants.initSaasMarketplaceEventName = 'initSaasMarketplace';\n    constants.acquireAppEventName = 'acquireSaasApp';\n    (function(actionTypes) {\n        actionTypes.ctaClicked = 'ctaClicked';\n        actionTypes.initListenerFinished = 'initListenerFinished';\n        actionTypes.acquireApp = 'acquireApp';\n        actionTypes.externalRedirect = 'externalRedirect';\n        actionTypes.updateUrl = 'updateUrl';\n        actionTypes.closeSaasMarketplace = 'closeSaasMarketplace';\n        actionTypes.finishedLoadingContentProviderList = 'contentProvidersLoaded';\n    })(constants.actionTypes || (constants.actionTypes = {}));\n})(constants || (constants = {}));\nexport var constants;\n","/* istanbul ignore file */ import { DataMap } from '@shared/utils/dataMapping';\nimport { Constants } from '@shared/utils/constants';\nimport { getProductByUrlKey } from '@shared/utils/appUtils';\nconst adminPortal = DataMap.products.AdminPortal;\nconst powerBIHost = DataMap.products.PowerBI;\nconst powerBIVisualsHost = DataMap.products.PowerBICustomVisual;\nconst dynamics365financials = DataMap.products.Dynamics365forBusinessCentral;\nconst dynamics365 = DataMap.products.Dynamics365;\nconst dynamicsCRMLegacy = DataMap.products.Dynamics365forSales;\nconst fullScreenMode = 'fullScreenMode';\nexport function shouldShowCloseButton(embedHost) {\n    return embedHost !== dynamics365financials.UrlKey;\n}\nexport function shouldHideFilterPane(embedHost) {\n    return embedHost === powerBIHost.UrlKey || embedHost === dynamics365financials.UrlKey;\n}\nexport function shouldHideIndustriesAndProducts(embedHost) {\n    return embedHost !== dynamics365.UrlKey && embedHost !== adminPortal.UrlKey;\n}\nexport function shouldFlatProducts(embedHost) {\n    return embedHost === adminPortal.UrlKey;\n}\nexport function hasDynamicData(embedHost) {\n    return embedHost === powerBIHost.UrlKey;\n}\nexport function hasPrivateApps(embedHost) {\n    return embedHost === powerBIHost.UrlKey || embedHost === dynamics365.UrlKey;\n}\nexport function shouldShowCuratedData(embedHost) {\n    return embedHost === dynamics365.UrlKey || embedHost === adminPortal.UrlKey;\n}\nexport function shouldShowPowerAppsNoContent(embedHost) {\n    return embedHost === powerBIHost.UrlKey || embedHost === dynamics365.UrlKey;\n}\nexport function shouldShowLegacyStyle(embedHost) {\n    return embedHost === dynamics365financials.UrlKey || embedHost === dynamicsCRMLegacy.UrlKey;\n}\nexport function shouldShowVideos(embedHost) {\n    return embedHost !== powerBIVisualsHost.UrlKey;\n}\nexport function getPowerAppsTitle() {\n    return DataMap.products.PowerApps.Title;\n}\nexport function isFullScreenMode(query) {\n    const isFullScreen = query[`${fullScreenMode}`];\n    return isFullScreen === 'true';\n}\nexport function shouldShowFilter(embedHost, product) {\n    if (embedHost === adminPortal.UrlKey) {\n        if (product.FilterID === DataMap.products.OneNote.FilterID && product.FilterGroup === DataMap.products.OneNote.FilterGroup || product.FilterID === DataMap.products.Project.FilterID && product.FilterGroup === DataMap.products.Project.FilterGroup) {\n            return false;\n        }\n    }\n    return true;\n}\nexport function isEmbed(embedHost) {\n    return embedHost === adminPortal.UrlKey;\n}\nexport function isAppSource(embedHost) {\n    return embedHost === null || embedHost === undefined;\n}\nexport function getEmbedHost(queryParams) {\n    const embedHost = decodeURIComponent(queryParams.embedHost);\n    const productQuery = decodeURIComponent(queryParams.product);\n    if (getProductByUrlKey({\n        urlKey: embedHost\n    })) {\n        return embedHost;\n    }\n    if (getProductByUrlKey({\n        urlKey: productQuery\n    })) {\n        return productQuery;\n    }\n    return Constants.dynamics365.salesED;\n}\nfunction filterPowerBICuratedData(curatedData) {\n    const filteredCuratedData = {\n        [Constants.Curated.everything]: (curatedData[Constants.Curated.powerPlatform] || []).filter((currentCuratedData)=>currentCuratedData.titleId === Constants.Curated.powerBi)\n    };\n    return filteredCuratedData;\n}\nfunction filterAdminPortalCuratedData(curatedData) {\n    return {\n        [Constants.Curated.everything]: curatedData[Constants.Curated.office365]\n    };\n}\nfunction filterDynamicsCuratedData(curatedData) {\n    const validKeys = [\n        DataMap.products.Dynamics365,\n        DataMap.products.Dynamics365forFinancials,\n        DataMap.products.Dynamics365forSales,\n        DataMap.products.Dynamics365CustomerInsights,\n        DataMap.products.Dynamics365forBusinessCentral,\n        DataMap.products.Dynamics365forCustomerServices,\n        DataMap.products.Dynamics365forSales,\n        DataMap.products.Dynamics365forProjectServicesAutomation\n    ].filter((dataValues)=>!!(dataValues === null || dataValues === void 0 ? void 0 : dataValues.BackendKey)).map((dataValues)=>dataValues.BackendKey.toLowerCase());\n    const filteredCuratedData = {\n        [Constants.Curated.everything]: (curatedData[Constants.Curated.dynamics365] || []).filter((currentCuratedData)=>currentCuratedData.titleId && validKeys.indexOf(currentCuratedData.titleId.toLowerCase()) > -1)\n    };\n    const salesED = DataMap.products.Dynamics365forSales.BackendKey;\n    if (salesED && curatedData[`${salesED}`]) {\n        filteredCuratedData[`${salesED}`] = curatedData[`${salesED}`];\n    }\n    return filteredCuratedData;\n}\nexport function filterEmbedCuratedData(embedHost, curatedData) {\n    if (embedHost === Constants.dynamics365.dynamics365) {\n        return filterDynamicsCuratedData(curatedData);\n    } else if (embedHost === Constants.adminPortal) {\n        return filterAdminPortalCuratedData(curatedData);\n    } else if (embedHost === Constants.PowerBI.powerBi) {\n        return filterPowerBICuratedData(curatedData);\n    }\n    return {};\n}\n","function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nimport { ServerCollection } from '@server/serverLogger';\nexport class Logger {\n    info(message, { action, actionModifier, appName, page, collection } = {}) {\n        if (__CLIENT__) this.clientLogger.info({\n            details: message,\n            actionModifier,\n            action,\n            appName,\n            page\n        });\n        if (__SERVER__) this.serverLogger.info(message, {\n            collection: collection || ServerCollection.ServerLogs,\n            operation: action,\n            operationModifier: actionModifier,\n            page\n        });\n    }\n    warning(message, { action, actionModifier, appName, page, collection } = {}) {\n        if (__CLIENT__) this.clientLogger.warning({\n            details: message,\n            actionModifier,\n            action,\n            appName,\n            page\n        });\n        if (__SERVER__) this.serverLogger.warning(message, {\n            collection: collection || ServerCollection.ServerLogs,\n            operation: action,\n            operationModifier: actionModifier,\n            page\n        });\n    }\n    debug(message, { action, actionModifier, appName, page, collection } = {}) {\n        if (__CLIENT__) this.clientLogger.debug({\n            details: message,\n            actionModifier,\n            action,\n            appName,\n            page\n        });\n        if (__SERVER__) this.serverLogger.debug(message, {\n            collection: collection || ServerCollection.ServerLogs,\n            operation: action,\n            operationModifier: actionModifier,\n            page\n        });\n    }\n    error(message, { action, actionModifier, appName, error, page, collection } = {}) {\n        if (__CLIENT__) this.clientLogger.error({\n            details: message,\n            actionModifier,\n            action,\n            appName,\n            error,\n            page\n        });\n        if (__SERVER__) this.serverLogger.error(message, {\n            collection: collection || ServerCollection.ServerLogs,\n            operation: action,\n            operationModifier: actionModifier,\n            page,\n            error\n        });\n    }\n    flush() {\n        if (__CLIENT__) this.clientLogger.flush();\n    }\n    // eslint-disable-next-line no-useless-constructor\n    constructor(clientLogger, serverLogger){\n        _define_property(this, \"clientLogger\", void 0);\n        _define_property(this, \"serverLogger\", void 0);\n        this.clientLogger = clientLogger;\n        this.serverLogger = serverLogger;\n    }\n}\n","import { ApplicationInsights } from '@microsoft/1ds-analytics-web-js';\nimport { ClientLoggerTelemetry, clientLoggerConfig, SystemLoggerTelemetry } from '@shared/logger';\nimport { ServerLogger, winstonLogger } from '@server/serverLogger';\nimport { Logger } from './logger';\nconst clientLogger = new ClientLoggerTelemetry();\nconst serverLogger = new ServerLogger();\nexport const logger = new Logger(clientLogger, serverLogger);\nexport const systemLogger = new SystemLoggerTelemetry();\nexport const ensureClientLoggerInitialization = (store)=>{\n    if (!logger.clientLogger.logger) {\n        const _1dsLogger = new ApplicationInsights();\n        _1dsLogger.initialize(clientLoggerConfig(), []);\n        logger.clientLogger.initialize(_1dsLogger, store);\n        systemLogger.initialize(_1dsLogger, store);\n    }\n};\nexport const initServerLogger = ()=>{\n    if (!logger.serverLogger.logger) {\n        const _winstonLogger = winstonLogger();\n        logger.serverLogger.init(_winstonLogger);\n    }\n};\n","/* eslint-disable @typescript-eslint/ban-types */ /* eslint-disable @typescript-eslint/no-namespace */ /* eslint-disable @typescript-eslint/prefer-namespace-keyword */ /* eslint-disable @typescript-eslint/no-use-before-define */ /* eslint-disable @typescript-eslint/no-var-requires */ /* eslint-disable security/detect-non-literal-fs-filename */ /* eslint-disable node/no-deprecated-api */ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n    try {\n        var info = gen[key](arg);\n        var value = info.value;\n    } catch (error) {\n        reject(error);\n        return;\n    }\n    if (info.done) {\n        resolve(value);\n    } else {\n        Promise.resolve(value).then(_next, _throw);\n    }\n}\nfunction _async_to_generator(fn) {\n    return function() {\n        var self = this, args = arguments;\n        return new Promise(function(resolve, reject) {\n            var gen = fn.apply(self, args);\n            function _next(value) {\n                asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n            }\n            function _throw(err) {\n                asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n            }\n            _next(undefined);\n        });\n    };\n}\nfunction _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nfunction _object_spread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        var ownKeys = Object.keys(source);\n        if (typeof Object.getOwnPropertySymbols === \"function\") {\n            ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n            }));\n        }\n        ownKeys.forEach(function(key) {\n            _define_property(target, key, source[key]);\n        });\n    }\n    return target;\n}\nfunction ownKeys(object, enumerableOnly) {\n    var keys = Object.keys(object);\n    if (Object.getOwnPropertySymbols) {\n        var symbols = Object.getOwnPropertySymbols(object);\n        if (enumerableOnly) {\n            symbols = symbols.filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n            });\n        }\n        keys.push.apply(keys, symbols);\n    }\n    return keys;\n}\nfunction _object_spread_props(target, source) {\n    source = source != null ? source : {};\n    if (Object.getOwnPropertyDescriptors) {\n        Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n        ownKeys(Object(source)).forEach(function(key) {\n            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n    }\n    return target;\n}\nfunction _object_without_properties(source, excluded) {\n    if (source == null) return {};\n    var target = _object_without_properties_loose(source, excluded);\n    var key, i;\n    if (Object.getOwnPropertySymbols) {\n        var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n        for(i = 0; i < sourceSymbolKeys.length; i++){\n            key = sourceSymbolKeys[i];\n            if (excluded.indexOf(key) >= 0) continue;\n            if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n            target[key] = source[key];\n        }\n    }\n    return target;\n}\nfunction _object_without_properties_loose(source, excluded) {\n    if (source == null) return {};\n    var target = {};\n    var sourceKeys = Object.keys(source);\n    var key, i;\n    for(i = 0; i < sourceKeys.length; i++){\n        key = sourceKeys[i];\n        if (excluded.indexOf(key) >= 0) continue;\n        target[key] = source[key];\n    }\n    return target;\n}\nimport agentParser from 'ua-parser-js';\nimport paths from '@webpackConfig/paths';\nimport { Constants } from '@shared/utils/constants';\nimport { generateGuid } from '@shared/utils/appUtils';\nimport { getAppConfig } from '@shared/services/init/appConfig';\nimport { stringifyError } from '@shared/utils/errorUtils';\nimport { getStringQueryParam, scrubAcquisitionPayload } from '@server/Utils';\nimport { scrubHeaders } from '@shared/utils/httpClientUtil';\nimport stackTrace from 'stack-trace';\nimport { v4 as uuid } from 'uuid';\nimport { logger } from '@src/logger';\nconst fs = require('fs');\nconst sha256 = require('crypto-js/sha256');\nconst serverInstanceCorrelationId = process.env.serverInstanceCorrelationId || Constants.ReservedCorrelationIds.EmptyId;\nconst MethodTableMap = new Map([\n    [\n        'Debug',\n        'Logs'\n    ],\n    [\n        'Error',\n        'Logs'\n    ],\n    [\n        'LogHttpInboundRequestStart',\n        'IncomingRequests'\n    ],\n    [\n        'LogHttpInboundRequestEndWithSuccess',\n        'IncomingRequests'\n    ],\n    [\n        'LogHttpInboundRequestEndWithClientFailure',\n        'IncomingRequests'\n    ],\n    [\n        'LogHttpInboundRequestEndWithServerFailure',\n        'IncomingRequests'\n    ],\n    [\n        'LogHttpOutboundRequestStart',\n        'OutgoingRequests'\n    ],\n    [\n        'LogHttpOutboundRequestEndWithSuccess',\n        'OutgoingRequests'\n    ],\n    [\n        'LogHttpOutboundRequestEndWithClientFailure',\n        'OutgoingRequests'\n    ],\n    [\n        'LogHttpOutboundRequestEndWithServerFailure',\n        'OutgoingRequests'\n    ],\n    [\n        'LogAcquisitionInfo',\n        'AcquisitionInfo'\n    ],\n    [\n        'LogDbResourceOverUsage',\n        'DbResourceOverUsage'\n    ],\n    [\n        'LogUserFeedback',\n        'UserFeedback'\n    ],\n    [\n        'LogUserTelemetry',\n        'UserTelemetry'\n    ]\n]);\nconst RequestsLogMethodToTaskName = {\n    LogHttpInboundRequestStart: 'HttpInboundRequest',\n    LogHttpInboundRequestEndWithSuccess: 'HttpInboundRequestEndWithSuccess',\n    LogHttpInboundRequestEndWithClientFailure: 'HttpInboundRequestEndWithClientFailure',\n    LogHttpInboundRequestEndWithServerFailure: 'HttpInboundRequestEndWithServerFailure',\n    LogHttpOutboundRequestStart: 'HttpOutboundRequest',\n    LogHttpOutboundRequestEndWithSuccess: 'HttpOutboundRequestEndWithSuccess',\n    LogHttpOutboundRequestEndWithServerFailure: 'HttpOutboundRequestEndWithServerFailure',\n    LogHttpOutboundRequestEndWithClientFailure: 'HttpOutboundRequestEndWithClientFailure'\n};\n(function(Logger) {\n    function getCLRMethod(methodName) {\n        return (args)=>{\n            const { message = '' } = args, payload = _object_without_properties(args, [\n                \"message\"\n            ]);\n            const collection = MethodTableMap.get(methodName);\n            if (methodName === 'Error') {\n                logger.serverLogger.error(message, _object_spread({\n                    collection,\n                    taskName: 'Error'\n                }, payload));\n                return;\n            }\n            // Deprecated\n            if (collection === 'AcquisitionInfo' || collection === 'DbResourceOverUsage') {\n                return;\n            }\n            if (collection === 'IncomingRequests' || collection === 'OutgoingRequests') {\n                payload.taskName = RequestsLogMethodToTaskName[methodName];\n            }\n            if (methodName === 'Debug') {\n                payload.taskName = 'Debug';\n            }\n            logger.serverLogger.info(message, _object_spread({\n                collection\n            }, payload));\n        };\n    }\n    const LoggerDll = paths.dllLoggerPath;\n    Logger.clrDebug = getCLRMethod('Debug');\n    Logger.clrError = getCLRMethod('Error');\n    Logger.clrLogUserTelemetry = getCLRMethod('LogUserTelemetry');\n    const clrLogHttpInboundRequestStart = getCLRMethod('LogHttpInboundRequestStart');\n    const clrLogHttpInboundRequestEndWithSuccess = getCLRMethod('LogHttpInboundRequestEndWithSuccess');\n    const clrLogHttpInboundRequestEndWithClientFailure = getCLRMethod('LogHttpInboundRequestEndWithClientFailure');\n    const clrLogHttpInboundRequestEndWithServerFailure = getCLRMethod('LogHttpInboundRequestEndWithServerFailure');\n    const clrLogHttpOutboundRequestStart = getCLRMethod('LogHttpOutboundRequestStart');\n    const clrLogHttpOutboundRequestEndWithSuccess = getCLRMethod('LogHttpOutboundRequestEndWithSuccess');\n    const clrLogHttpOutboundRequestEndWithServerFailure = getCLRMethod('LogHttpOutboundRequestEndWithServerFailure');\n    const clrLogHttpOutboundRequestEndWithClientFailure = getCLRMethod('LogHttpOutboundRequestEndWithClientFailure');\n    const clrLogAcquisitionInfo = getCLRMethod('LogAcquisitionInfo');\n    const clrLogDbResourceOverUsage = getCLRMethod('LogDbResourceOverUsage');\n    const clrLogUserFeedback = getCLRMethod('LogUserFeedback');\n    let logStreamData = null;\n    let correlationIdToWatch = '';\n    function startWatchingLog(correlationId) {\n        correlationIdToWatch = correlationId;\n        logStreamData = [];\n        setTimeout(()=>{\n            stopWatchingLog(correlationId);\n        }, 60000); // Stop watching logs in 1 minute automatically in case we fail to stop watching log for any reasons.\n    }\n    // Call this function to start watch the log for the **session** based on the given correlation ID.\n    // We use this function to immediately get the server side logs in the console for debugging purpose.\n    Logger.startWatchingLog = startWatchingLog;\n    function stopWatchingLog(correlationId) {\n        if (correlationId === correlationIdToWatch) {\n            correlationIdToWatch = '';\n            logStreamData = null;\n        }\n    }\n    Logger.stopWatchingLog = stopWatchingLog;\n    function getLogStream() {\n        return logStreamData;\n    }\n    Logger.getLogStream = getLogStream;\n    function isWatchingLog(correlationId) {\n        return correlationIdToWatch === correlationId;\n    }\n    Logger.isWatchingLog = isWatchingLog;\n    function isLoggingEnabled(callbackFunction) {\n        return fs.exists(LoggerDll, callbackFunction);\n    }\n    Logger.isLoggingEnabled = isLoggingEnabled;\n    function writeToLogStream(correlationId, operation, message) {\n        if (correlationId && logStreamData && correlationId === correlationIdToWatch) {\n            const now = new Date();\n            const utc = new Date(now.getTime() + now.getTimezoneOffset() * 60000); // Gets the UTC time.\n            logStreamData.push({\n                timeStamp: utc.toISOString(),\n                operation: operation,\n                message: message\n            });\n        }\n    }\n    // To be used by Node server side code Debug events\n    function Debug(operationName, message, exception, additionalData) {\n        // A JSON object in the exception causes edge to crash with stack overflow hence the check.\n        let exceptionString = '';\n        if (exception) {\n            // Stringify also handles non JSON object such as raw strings, int, bools etc..\n            exceptionString = JSON.stringify(exception);\n        }\n        const debugMessage = {\n            requestId: additionalData && additionalData.requestId ? additionalData.requestId : uuid(),\n            correlationId: additionalData && additionalData.correlationId ? additionalData.correlationId : serverInstanceCorrelationId,\n            operationName: operationName.toString() || '',\n            message: message.toString() || '',\n            exception: exceptionString\n        };\n        Logger.clrDebug(debugMessage);\n    }\n    // Overload to debug without request and correlationId for server debugging\n    function Information(operationName, message, exception, additionalData) {\n        // A JSON object in the exception causes edge to crash with stack overflow hence the check.\n        let exceptionString = '';\n        if (exception) {\n            // Stringify handles non JSON object such as raw strings, int, bools etc..\n            exceptionString = JSON.stringify(exception);\n        }\n        let requestId = uuid();\n        let correlationId = serverInstanceCorrelationId;\n        if (additionalData) {\n            if (additionalData.requestId) {\n                requestId = additionalData.requestId;\n            }\n            if (additionalData.correlationId) {\n                correlationId = additionalData.correlationId;\n            }\n        }\n        const debugMessage = {\n            requestId: requestId,\n            correlationId: correlationId,\n            operationName: operationName.toString() || '',\n            message: message.toString() || '',\n            exception: exceptionString\n        };\n        Logger.clrDebug(debugMessage);\n    }\n    function Exception(operationName, message, exception, otherInfo) {\n        let requestId = uuid();\n        let correlationId = serverInstanceCorrelationId;\n        if (otherInfo) {\n            requestId = otherInfo.requestId ? otherInfo.requestId : requestId;\n            correlationId = otherInfo.correlationId ? otherInfo.correlationId : correlationId;\n            if (otherInfo.request) {\n                requestId = otherInfo.request.headers[Constants.Headers.RequestId] || requestId;\n                correlationId = otherInfo.request.headers[Constants.Headers.CorrelationId] || correlationId;\n            }\n        }\n        // A JSON object in the exception causes edge to crash with stack overflow hence the check.\n        let exceptionString = '';\n        if (exception) {\n            // Stringify handles non JSON object such as raw strings, int, bools etc..\n            exceptionString = JSON.stringify(exception, Object.getOwnPropertyNames(exception));\n        }\n        const errorMessage = {\n            requestId: requestId,\n            correlationId: correlationId,\n            operationName: operationName.toString() || '',\n            message: message.toString() || '',\n            exception: exceptionString\n        };\n        Logger.clrError(errorMessage);\n    }\n    // To be used for Exception logging\n    Logger.Exception = Exception;\n    function LogFeedback(requestId, correlationId, event) {\n        return _LogFeedback.apply(this, arguments);\n    }\n    function _LogFeedback() {\n        _LogFeedback = _async_to_generator(function*(requestId, correlationId, event) {\n            const message = {\n                requestId: requestId || uuid(),\n                correlationId: correlationId || serverInstanceCorrelationId,\n                page: event.page ? event.page.toString() : '',\n                clientTimestamp: event.clientTimestamp ? event.clientTimestamp.toString() : '',\n                action: event.action ? event.action.toString() : '',\n                actionModifier: event.actionModifier ? event.actionModifier.toString() : '',\n                details: event.details ? typeof event.details === 'string' ? event.details.toString() : JSON.stringify(event.details) : '',\n                hostType: event.hostType ? event.hostType.toString() : '',\n                oid: event.oid ? event.oid.toString() : '',\n                tid: event.tid ? event.tid.toString() : '',\n                spzaId: event.spzaId ? event.spzaId.toString() : ''\n            };\n            const detailsAsJson = event.details ? typeof event.details === 'string' ? JSON.parse(event.details.toString()) : event.details : null;\n            if (detailsAsJson) {\n                message.details = detailsAsJson;\n                sendFeedback(message);\n            } else {\n                sendFeedback(message);\n            }\n        });\n        return _LogFeedback.apply(this, arguments);\n    }\n    Logger.LogFeedback = LogFeedback;\n    function sendFeedback(message) {\n        clrLogUserFeedback(message, function(error) {\n            if (error) {\n                Logger.Exception('LogFeedback', error, '');\n            }\n        });\n    }\n    function LogTelemetryEvent(requestId, correlationId, event) {\n        // For all the error events we want to add a hash based on the error stack/message for making the kusto queries easier.\n        if (event.actionModifier && event.actionModifier === Constants.Telemetry.ActionModifier.Error) {\n            if (event.details) {\n                event.details = JSON.stringify(getErrorDetailsWithHash(event.details));\n            }\n        }\n        if (event.isFeedback) {\n            LogFeedback(requestId, correlationId, event);\n        } else {\n            const message = {\n                requestId: requestId || uuid(),\n                correlationId: correlationId || serverInstanceCorrelationId,\n                page: event.page ? event.page.toString() : '',\n                clientTimestamp: event.clientTimestamp ? event.clientTimestamp.toString() : '',\n                action: event.action ? event.action.toString() : '',\n                actionModifier: event.actionModifier ? event.actionModifier.toString() : '',\n                details: event.details ? typeof event.details === 'string' ? event.details.toString() : JSON.stringify(event.details) : '',\n                appName: event.appName ? event.appName.toString() : '',\n                product: event.product ? event.product.toString() : '',\n                featureFlag: event.featureFlag ? event.featureFlag.toString() : '',\n                hostType: event.hostType ? event.hostType.toString() : '',\n                oid: event.oid ? 'true' : '',\n                tid: event.tid ? event.tid.toString() : '',\n                spzaId: event.spzaId ? event.spzaId.toString() : '',\n                mshash: event.mshash ? event.mshash.toString() : ''\n            };\n            Logger.clrLogUserTelemetry(message, function(error) {\n                if (error) {\n                    Logger.Exception('LogTelemetry', error, '');\n                }\n            });\n        }\n    }\n    // To be used by Browser via API route to log telemetry events\n    Logger.LogTelemetryEvent = LogTelemetryEvent;\n    function LogHttpInboundRequestStart(httpRequestContext) {\n        clrLogHttpInboundRequestStart(httpRequestContext, function(error) {\n            if (error) {\n                Logger.Exception(httpRequestContext.operation, error, '', {\n                    requestId: httpRequestContext.requestId,\n                    correlationId: httpRequestContext.correlationId\n                });\n            }\n        });\n    }\n    // To be used by Node server side API to log incoming requests start\n    Logger.LogHttpInboundRequestStart = LogHttpInboundRequestStart;\n    function LogHttpInboundRequestEndWithSuccess(httpRequest) {\n        clrLogHttpInboundRequestEndWithSuccess(httpRequest, function(error) {\n            if (error) {\n                Logger.Exception('LogHttpInboundRequestSuccess', error, '', {\n                    requestId: httpRequest.httpRequestContext.requestId,\n                    correlationId: httpRequest.httpRequestContext.correlationId\n                });\n            }\n        });\n    }\n    // To be used by Node server side API to log incoming requests end with success\n    Logger.LogHttpInboundRequestEndWithSuccess = LogHttpInboundRequestEndWithSuccess;\n    function LogHttpInboundRequestEndWithClientFailure(httpRequest) {\n        clrLogHttpInboundRequestEndWithClientFailure(httpRequest, function(error) {\n            if (error) {\n                Logger.Exception('LogHttpInboundRequestEndWithClientFailure', error, '', {\n                    requestId: httpRequest.httpRequestContext.requestId,\n                    correlationId: httpRequest.httpRequestContext.correlationId\n                });\n            }\n        });\n    }\n    // To be used by Node server side API to log incoming requests end with client failure (4xx)\n    Logger.LogHttpInboundRequestEndWithClientFailure = LogHttpInboundRequestEndWithClientFailure;\n    function LogHttpInboundRequestEndWithServerFailure(httpRequest) {\n        clrLogHttpInboundRequestEndWithServerFailure(httpRequest, function(error) {\n            if (error) {\n                Logger.Exception('LogHttpInboundRequestEndWithServerFailure', error, '', {\n                    requestId: httpRequest.httpRequestContext.requestId,\n                    correlationId: httpRequest.httpRequestContext.correlationId\n                });\n            }\n        });\n    }\n    // To be used by Node server side API to log incoming requests end with client failure (5xx)\n    Logger.LogHttpInboundRequestEndWithServerFailure = LogHttpInboundRequestEndWithServerFailure;\n    function LogHttpOutboundRequestStart(httpRequestContext) {\n        const clonedRequest = cloneRequest({\n            httpRequestContext\n        });\n        clrLogHttpOutboundRequestStart(clonedRequest, function(error) {\n            if (error) {\n                Logger.Exception(httpRequestContext.operation, error, '', {\n                    requestId: httpRequestContext.requestId,\n                    correlationid: httpRequestContext.correlationId\n                });\n            }\n        });\n    }\n    // To be used by Node server side API to log outgoing requests start\n    Logger.LogHttpOutboundRequestStart = LogHttpOutboundRequestStart;\n    function cloneRequest({ httpRequestContext: { requestId, correlationId, headers, operation, httpMethod, hostName, targetUri, apiVersion } }) {\n        let parsedHeaders = headers || {};\n        let i = 0;\n        // in cases where the headers were stringified more than once\n        while(typeof parsedHeaders === 'string' && i < 3){\n            try {\n                parsedHeaders = JSON.parse(parsedHeaders);\n            } catch (error) {\n                Logger.logDebugMessage(requestId, correlationId, 'cloneRequest', stringifyError(error));\n                break;\n            }\n            // using i for sanity purposes.\n            i += 1;\n        }\n        parsedHeaders = typeof parsedHeaders === 'string' ? {} : parsedHeaders;\n        const clonedRequest = {\n            requestId,\n            correlationId,\n            operation,\n            httpMethod,\n            hostName,\n            targetUri,\n            userAgent: parsedHeaders[Constants.Headers.XMSUserAgent] || '',\n            clientIpAddress: '',\n            apiVersion: apiVersion || '',\n            contentLength: parsedHeaders['Content-Length'] || 0,\n            headers: JSON.stringify(scrubHeaders(parsedHeaders))\n        };\n        return clonedRequest;\n    }\n    function LogHttpOutboundRequestEndWithSuccess(httpRequest) {\n        const requestId = httpRequest.httpRequestContext.requestId;\n        const correlationId = httpRequest.httpRequestContext.correlationId;\n        clrLogHttpOutboundRequestEndWithSuccess(httpRequest, function(error) {\n            if (error) {\n                try {\n                    const striginfyRequest = JSON.stringify(httpRequest);\n                    Logger.Exception('LogHttpOutboundRequestEndWithSuccess', `error: ${error}. httpRequest: ${striginfyRequest}`, '', {\n                        requestId,\n                        correlationId\n                    });\n                } catch (stringifyError) {\n                    Logger.Exception('LogHttpOutboundRequestEndWithSuccess', `error: ${error}. stringifyError: ${stringifyError}`, '', {\n                        requestId,\n                        correlationId\n                    });\n                }\n            }\n        });\n    }\n    // To be used by Node server side API to log outgoing requests end with success\n    Logger.LogHttpOutboundRequestEndWithSuccess = LogHttpOutboundRequestEndWithSuccess;\n    function LogHttpOutboundRequestEndWithServerFailure(httpRequest) {\n        clrLogHttpOutboundRequestEndWithServerFailure(httpRequest, function(error) {\n            if (error) {\n                Logger.Exception('LogHttpOutboundRequestEndWithServerFailure', error, '', {\n                    requestId: httpRequest.httpRequestContext.requestId,\n                    correlationId: httpRequest.httpRequestContext.correlationId\n                });\n            }\n        });\n    }\n    // To be used by Node server side API to log outgoing requests end with client failure (4xx)\n    Logger.LogHttpOutboundRequestEndWithServerFailure = LogHttpOutboundRequestEndWithServerFailure;\n    function LogHttpOutboundRequestEndWithClientFailure(httpRequest) {\n        clrLogHttpOutboundRequestEndWithClientFailure(httpRequest, function(error) {\n            if (error) {\n                Logger.Exception('LogHttpOutboundRequestEndWithClientFailure', error, '', {\n                    requestId: httpRequest.httpRequestContext.requestId,\n                    correlationId: httpRequest.httpRequestContext.correlationId\n                });\n            }\n        });\n    }\n    // To be used by Node server side API to log outgoing requests end with server failure (5xx)\n    Logger.LogHttpOutboundRequestEndWithClientFailure = LogHttpOutboundRequestEndWithClientFailure;\n    function LogInboundRequestStart(request) {\n        let requestId = uuid();\n        let correlationId = serverInstanceCorrelationId;\n        // request can be null for direct server calls, thus the empty guids\n        if (request) {\n            // default to empty guids for missing headers\n            requestId = request.headers[Constants.Headers.RequestId] || requestId;\n            correlationId = request.headers[Constants.Headers.CorrelationId] || getStringQueryParam(request, Constants.QueryStrings.CorrelationId) || correlationId;\n        }\n        try {\n            const requestContext = {\n                requestId: requestId,\n                correlationId: correlationId,\n                operation: request.url,\n                httpMethod: request.method,\n                hostName: request.hostname,\n                targetUri: request.hostname + request.originalUrl,\n                userAgent: request.headers[Constants.Headers.XMSUserAgent] || '',\n                clientIpAddress: '',\n                apiVersion: getStringQueryParam(request, 'version') || '',\n                contentLength: request.headers['Content-Length'] || 0,\n                headers: JSON.stringify(scrubHeaders(request.headers))\n            };\n            LogHttpInboundRequestStart(requestContext);\n        } catch (exception) {\n            Logger.Exception('LogHelper.LogInboundRequestStart', 'ExceptionLoggingRequest', exception);\n        }\n    }\n    // Helper method to log all Inbound request starts\n    Logger.LogInboundRequestStart = LogInboundRequestStart;\n    function LogInboundRequestEnd(request, duration, httpStatus, errorMessage) {\n        let requestId = uuid();\n        let correlationId = serverInstanceCorrelationId;\n        if (request) {\n            requestId = request.headers[Constants.Headers.RequestId] || requestId;\n            correlationId = request.headers[Constants.Headers.CorrelationId] || getStringQueryParam(request, Constants.QueryStrings.CorrelationId) || correlationId;\n        }\n        if (errorMessage) {\n            // Stringify handles non JSON object such as raw strings, int, bools etc..\n            errorMessage = JSON.stringify(errorMessage);\n        }\n        try {\n            const requestContext = {\n                requestId: requestId,\n                correlationId: correlationId,\n                operation: request.url,\n                httpMethod: request.method,\n                hostName: request.hostname,\n                targetUri: request.hostname + request.url,\n                userAgent: request.headers[Constants.Headers.XMSUserAgent] || '',\n                clientIpAddress: '',\n                apiVersion: getStringQueryParam(request, 'version') || '',\n                contentLength: request.headers['Content-Length'] || 0,\n                headers: JSON.stringify(scrubHeaders(request.headers))\n            };\n            const httpRequest = {\n                httpRequestContext: requestContext,\n                durationInMilliseconds: duration,\n                httpStatusCode: httpStatus,\n                errorMessage: errorMessage\n            };\n            if (httpStatus > 199 && httpStatus < 300) {\n                LogHttpInboundRequestEndWithSuccess(httpRequest);\n            } else if (httpStatus > 399 && httpStatus < 500) {\n                LogHttpInboundRequestEndWithClientFailure(httpRequest);\n            } else if (httpStatus > 499) {\n                LogHttpInboundRequestEndWithServerFailure(httpRequest);\n            }\n        } catch (exception) {\n            Logger.Exception('LogHelper.LogRequestEnd', 'ExceptionLoggingRequestEnd', exception);\n        }\n    }\n    // Helper method to log all request end\n    Logger.LogInboundRequestEnd = LogInboundRequestEnd;\n    function LogOutboundRequestEnd(request, duration, httpStatus, errorMessage) {\n        if (errorMessage) {\n            // Stringify handles non JSON object such as raw strings, int, bools etc..\n            errorMessage = JSON.stringify(errorMessage);\n        }\n        try {\n            const clonedRequest = cloneRequest({\n                httpRequestContext: request\n            });\n            const httpRequest = {\n                httpRequestContext: clonedRequest,\n                durationInMilliseconds: duration,\n                httpStatusCode: httpStatus,\n                errorMessage: errorMessage\n            };\n            if (httpStatus > 199 && httpStatus < 300) {\n                LogHttpOutboundRequestEndWithSuccess(httpRequest);\n            } else if (httpStatus > 399 && httpStatus < 500) {\n                LogHttpOutboundRequestEndWithClientFailure(httpRequest);\n            } else if (httpStatus > 499) {\n                LogHttpOutboundRequestEndWithServerFailure(httpRequest);\n            }\n        } catch (exception) {\n            Logger.Exception('LogHelper.LogOutboundRequestEnd', 'ExceptionLoggingRequestEnd', exception);\n        }\n    }\n    // Helper for logging outbound request end, since we create the request context we dont need to extract it from the express request\n    Logger.LogOutboundRequestEnd = LogOutboundRequestEnd;\n    function LogDbResourceOverUsage(requestId, correlationId, requestCharge, latency, query) {\n        try {\n            const message = {\n                requestId: requestId,\n                correlationId: correlationId,\n                requestCharge: requestCharge ? requestCharge.toString() : '-1',\n                latency: latency ? latency.toString() : '-1',\n                query: query\n            };\n            clrLogDbResourceOverUsage(message, function(error) {\n                if (error) {\n                    Logger.Exception('LogHelper.LogDbResourceOverUsage', 'LogDbResourceOverUsage', error);\n                }\n            });\n        } catch (exception) {\n            Logger.Exception('LoggerService.LogDbResourceOverUsage', 'Error logging db resource over usage', exception, {\n                requestId: requestId,\n                correlationId: correlationId\n            });\n        }\n    }\n    Logger.LogDbResourceOverUsage = LogDbResourceOverUsage;\n    function LogAcquisitionInfo(requestId, correlationId, info, token) {\n        try {\n            info.userInfo.firstName = info.userInfo.firstName ? info.userInfo.firstName : token ? token.given_name : '';\n            info.userInfo.lastName = info.userInfo.lastName ? info.userInfo.lastName : token ? token.family_name : '';\n            info.userInfo.email = info.userInfo.email ? info.userInfo.email : token ? token.upn : '';\n            info.userInfo.oid = info.userInfo.oid ? info.userInfo.oid : token ? token.oid : '';\n            info.userInfo.tid = info.userInfo.tid ? info.userInfo.tid : token ? token.tid : '';\n            Logger.LogAcquisitionInfoPayload(requestId, correlationId, info);\n        } catch (exception) {\n            Logger.Exception('Logger.LogAcquisitionInfo', 'Error logging acquisition info', exception, {\n                requestId: requestId,\n                correlationId: correlationId\n            });\n        }\n    }\n    // To be used by Browser via API route to log app acquisition info\n    Logger.LogAcquisitionInfo = LogAcquisitionInfo;\n    function LogAcquisitionInfoPayload(requestId, correlationId, info) {\n        const message = {\n            requestId: requestId,\n            correlationId: correlationId,\n            acquisitionInfoPayload: JSON.stringify(scrubAcquisitionPayload(info))\n        };\n        clrLogAcquisitionInfo(message, function(error) {\n            if (error) {\n                Logger.Exception('Logger.LogAcquisitionInfo', 'LogAcquisitionInfo', error);\n            }\n        });\n    }\n    // Separated these methods to call this one from tests to validate the arguments sent to this.\n    Logger.LogAcquisitionInfoPayload = LogAcquisitionInfoPayload;\n    function LogTelemetryEvents(requestId, correlationId, telemetrybatch, req) {\n        try {\n            var _telemetrybatch_TelemetryEvents;\n            for(let i = 0; i < ((_telemetrybatch_TelemetryEvents = telemetrybatch.TelemetryEvents) === null || _telemetrybatch_TelemetryEvents === void 0 ? void 0 : _telemetrybatch_TelemetryEvents.length); i++){\n                const telemetry = telemetrybatch.TelemetryEvents[`${i}`];\n                try {\n                    Logger.LogTelemetryEvent(requestId, correlationId, telemetryHelper(telemetry, req));\n                } catch (exception) {\n                    Logger.Exception('LoggerService.LogTelemetryEvents', 'Error logging telemetry row. Original telemtry row: ' + JSON.stringify(telemetry), exception, {\n                        requestId,\n                        correlationId\n                    });\n                }\n            }\n        } catch (exception) {\n            Logger.Exception('LoggerService.LogTelemetryEvents', 'Error logging telemetry batch. Original telemtry batch: ' + JSON.stringify(telemetrybatch), exception, {\n                requestId,\n                correlationId\n            });\n        }\n    }\n    Logger.LogTelemetryEvents = LogTelemetryEvents;\n    function ClientLogOutRequests(requestId, correlationId, telemetrybatch, request) {\n        const userAgent = request.headers && (request.headers[Constants.Headers.XMSUserAgent] || request.headers[Constants.Headers.UserAgent]);\n        const clientIp = request.headers && request.headers[Constants.Headers.XForwardedFor] || request.connection && request.connection.remoteAddress;\n        try {\n            var _telemetrybatch_TelemetryEvents;\n            for(let i = 0; i < ((_telemetrybatch_TelemetryEvents = telemetrybatch.TelemetryEvents) === null || _telemetrybatch_TelemetryEvents === void 0 ? void 0 : _telemetrybatch_TelemetryEvents.length); i++){\n                const telemetry = telemetrybatch.TelemetryEvents[`${i}`];\n                try {\n                    logOutRequest(telemetry, userAgent, clientIp);\n                } catch (exception) {\n                    Logger.Exception('LoggerService.ClientLogOutRequests', 'Error logging telemetry row. Original telemtry row: ' + JSON.stringify(telemetry), exception, {\n                        requestId,\n                        correlationId\n                    });\n                }\n            }\n        } catch (exception) {\n            Logger.Exception('LoggerService.ClientLogOutRequests', 'Error logging telemetry batch. Original telemtry batch: ' + JSON.stringify(telemetrybatch), exception, {\n                requestId,\n                correlationId\n            });\n        }\n    }\n    // Used for client\n    Logger.ClientLogOutRequests = ClientLogOutRequests;\n    function ServerLogOutRequest(telemetry) {\n        const userAgent = getAppConfig('httpUserAgent');\n        const clientIp = getAppConfig('serverIp');\n        try {\n            logOutRequest(telemetry, userAgent, clientIp);\n        } catch (exception) {\n            Logger.Exception('LoggerService.ServerLogOutRequest', 'Error logging telemetry row. Original telemtry row: ' + JSON.stringify(telemetry), exception);\n        }\n    }\n    // Used for server\n    Logger.ServerLogOutRequest = ServerLogOutRequest;\n    function logServerTelemetryEvent(payload, correlationId, requestId) {\n        const event = {\n            page: payload.page ? payload.page : '',\n            action: payload.action ? payload.action : '',\n            actionModifier: payload.actionModifier ? payload.actionModifier : '',\n            clientTimestamp: new Date().toISOString(),\n            details: payload.details ? payload.details : '',\n            isFeedback: payload.isFeedback\n        };\n        const outEvents = {\n            TelemetryEvents: [\n                event\n            ]\n        };\n        requestId = requestId || generateGuid();\n        LogTelemetryEvents(requestId, correlationId, outEvents);\n    }\n    Logger.logServerTelemetryEvent = logServerTelemetryEvent;\n    function errorToConsole(message) {\n        if (process.env.siteEnvironment !== 'prod') {\n            console.error(message);\n        }\n    }\n    function logDebugMessage(requestId, correlationId, operation, message) {\n        Debug(operation, message, '', {\n            requestId: requestId,\n            correlationId: correlationId\n        });\n        writeToLogStream(correlationId, operation, message);\n    }\n    Logger.logDebugMessage = logDebugMessage;\n    function logErrorMessage(requestId, correlationId, operation, message) {\n        Exception(operation, message, '', {\n            requestId: requestId,\n            correlationId: correlationId\n        });\n    }\n    Logger.logErrorMessage = logErrorMessage;\n    function logInfoMessage(operation, message, exception, additionalData) {\n        Information(operation, message, exception, additionalData);\n        writeToLogStream(additionalData ? additionalData.correlationId : serverInstanceCorrelationId, operation, message);\n    }\n    Logger.logInfoMessage = logInfoMessage;\n    function logError(operation, message, err, additionalData, correlationId) {\n        const trace = stackTrace.parse(err);\n        Logger.Exception(operation, message + ':' + stringifyError(err), trace, additionalData);\n        const payload = {\n            page: 'Error Page (Server)',\n            action: 'Page Load',\n            actionModifier: Constants.Telemetry.ActionModifier.Error,\n            details: '[Error Trace] ' + stringifyError(err) + '   Stack: ' + JSON.stringify(trace)\n        };\n        correlationId = correlationId || (additionalData && additionalData.correlationId ? additionalData.correlationId : serverInstanceCorrelationId);\n        const requestId = additionalData && additionalData.requestId;\n        logServerTelemetryEvent(payload, correlationId, requestId);\n        writeToLogStream(correlationId, operation, message);\n    }\n    Logger.logError = logError;\n    // Creates a hash based on the error stack or on the error message and returns the JSON with the hash\n    function getErrorDetailsWithHash(errorMessage) {\n        const stringErrorMessage = typeof errorMessage === 'string' ? errorMessage : stringifyError(errorMessage);\n        const errorStack = stringErrorMessage.split('Stack:');\n        const hash = errorStack.length > 0 ? sha256(errorStack[1]) : sha256(errorMessage);\n        const errorDetails = {\n            message: stringErrorMessage,\n            errorHash: hash.toString()\n        };\n        return errorDetails;\n    }\n    const parseEventDetails = (event)=>{\n        try {\n            return JSON.parse(event.details);\n        } catch (e) {\n            return {\n                details: event.details\n            }; // incase the details is not a valid JSON\n        }\n    };\n    function telemetryHelper(event, req) {\n        if (event.action === Constants.Telemetry.Action.UserSettings) {\n            const clientIP = req.headers[Constants.Headers.XForwardedFor] || req.connection.remoteAddress;\n            const userAgent = req.headers[Constants.Headers.XMSUserAgent] || req.headers[Constants.Headers.UserAgent];\n            const parsedUserAgent = userAgent && agentParser(userAgent);\n            event.details = JSON.stringify(_object_spread(_object_spread_props(_object_spread({}, parseEventDetails(event), parsedUserAgent), {\n                clientIP\n            }), scrubHeaders(req.headers)));\n        }\n        return event;\n    }\n    function logOutRequest(telemetry, userAgent, clientIp) {\n        if (telemetry.taskName === Constants.Telemetry.OutRequest.Start) {\n            Logger.LogHttpOutboundRequestStart(outRequestStartsTelemetryHelper(telemetry, userAgent, clientIp));\n        } else {\n            const telemetryEvent = outRequestEndsTelemetryHelper(telemetry, userAgent, clientIp);\n            if (telemetry.taskName === Constants.Telemetry.OutRequest.EndWithSuccess) {\n                Logger.LogHttpOutboundRequestEndWithSuccess(telemetryEvent);\n            } else if (telemetry.taskName === Constants.Telemetry.OutRequest.EndWithClientError) {\n                Logger.LogHttpOutboundRequestEndWithClientFailure(telemetryEvent);\n            } else if (telemetry.taskName === Constants.Telemetry.OutRequest.EndWithServerError) {\n                Logger.LogHttpOutboundRequestEndWithServerFailure(telemetryEvent);\n            }\n        }\n    }\n    function outRequestTelemetryHelper(event, userAgent, clientIpAddress) {\n        const requestContext = {\n            requestId: event.requestId,\n            correlationId: event.correlationId,\n            operation: event.operation,\n            httpMethod: event.httpMethod,\n            hostName: event.hostName,\n            targetUri: event.targetUri,\n            userAgent,\n            clientIpAddress,\n            apiVersion: '',\n            contentLength: 0,\n            headers: ''\n        };\n        return requestContext;\n    }\n    function outRequestStartsTelemetryHelper(event, userAgent, clientIpAddress) {\n        const httpRequestContext = outRequestTelemetryHelper(event, userAgent, clientIpAddress);\n        httpRequestContext.headers = event.requestHeaders;\n        return httpRequestContext;\n    }\n    function outRequestEndsTelemetryHelper(event, userAgent, clientIpAddress) {\n        const httpRequestContext = outRequestTelemetryHelper(event, userAgent, clientIpAddress);\n        httpRequestContext.contentLength = event.contentLength;\n        httpRequestContext.headers = event.responseHeaders;\n        const request = {\n            httpRequestContext,\n            errorMessage: event.errorMessage,\n            durationInMilliseconds: event.durationInMilliseconds,\n            httpStatusCode: event.httpStatusCode\n        };\n        return request;\n    }\n    Logger.LogHttpOutboundRequestEnds = {\n        [Constants.Telemetry.OutRequest.EndWithSuccess]: Logger.LogHttpOutboundRequestEndWithSuccess,\n        [Constants.Telemetry.OutRequest.EndWithClientError]: Logger.LogHttpOutboundRequestEndWithClientFailure,\n        [Constants.Telemetry.OutRequest.EndWithServerError]: Logger.LogHttpOutboundRequestEndWithServerFailure\n    };\n})(Logger || (Logger = {}));\nexport var Logger;\n","import * as path from 'path';\nimport * as fs from 'fs';\nconst isIIS = process.env.isIIS === 'true';\nconst appDirectory = !isIIS ? process.cwd() : fs.realpathSync('../../');\nconst resolveApp = (relativePath)=>path.resolve(appDirectory, relativePath);\nconst clientDirectory = 'client';\nconst serverDirectory = 'server';\nconst clientBuild = resolveApp(`build/${clientDirectory}`);\nconst serverBuild = resolveApp(`build/${serverDirectory}`);\nconst os = process.env.DOCKER ? 'linux' : '';\nconst publicStoragePath = ({ hash = __COMMIT_HASH__, name })=>[\n        'staticstorage',\n        os,\n        hash,\n        name\n    ].filter(Boolean).join('/');\nconst paths = {\n    appHtml: resolveApp('config/webpack.config.ts/template.html'),\n    clientDirectory,\n    clientBuild,\n    serverBuild,\n    dotenv: resolveApp('.env'),\n    src: resolveApp('src'),\n    srcSSRApp: resolveApp('src/server/utils/ssr/components/App.ssr.tsx'),\n    srcAppsourceClient: resolveApp('src/appsource/mainClientHookupWrapper.tsx'),\n    srcAppsourceServer: resolveApp('src/server/appsource/server.ts'),\n    srcAppsourceRoot: resolveApp('src/appsource'),\n    srcEmbedHostEntry: resolveApp('src/server/embedHost/mainClientHookup.tsx'),\n    srcEmbedEntry: resolveApp('src/embed/mainClientHookupWrapper.tsx'),\n    srcServerRoot: resolveApp('src/server/'),\n    srcShared: resolveApp('src/shared'),\n    types: resolveApp('node_modules/@types'),\n    locales: resolveApp('src/loc'),\n    buildLocales: resolveApp(`${serverBuild}/locales`),\n    localizationFiles: resolveApp('src/localization/translations'),\n    publicStoragePath,\n    dllLoggerPath: resolveApp(`${serverBuild}/Microsoft.SaaSMarketPlace.Common.dll`),\n    embedHostServer: resolveApp(`${serverBuild}/embedHost/index.html`),\n    clientManifestFile: ({ name })=>resolveApp(`${clientBuild}/${publicStoragePath({\n            name\n        })}/manifest.json`),\n    clientStatsFile: ({ name })=>resolveApp(`${clientBuild}/${publicStoragePath({\n            name\n        })}/stats.json`),\n    serverManifestFile: ()=>resolveApp(`${serverBuild}/manifest.json`),\n    externalArtifacts: resolveApp('external_artifacts'),\n    serverDotenvFiles: resolveApp(`${serverBuild}/config`),\n    serverDotenvBundleFiles: ()=>path.resolve(path.join(__dirname, '..', 'config'))\n};\nexport default paths;\n","let apiVersions = [\n    '2016-12-07',\n    '2017-01-24',\n    // this is the version for marketplace API\n    '2017-04-15',\n    '2017-04-19',\n    '2017-04-24',\n    // catrp api version\n    '2018-08-01-beta',\n    // multi geo services\n    '2020-09-22'\n];\nexport let errorMessages = {\n    invalidApiVersion: 'Invalid value for query string \\'api-version\\'. Allowed values are ' + JSON.stringify(apiVersions),\n    missingApiVersion: 'Query string \\'api-version\\' is missing. Allowed values are ' + JSON.stringify(apiVersions),\n    multipleValuesForQueryParam: ' query string does not support multiple values. Please provide a single value'\n};\nexport let minVersionForOData = process.env.minVersionForOData || '2016-12-07';\nexport function isValidAPIVersion(apiVersion) {\n    return apiVersions.indexOf(apiVersion) !== -1;\n}\n","function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nimport { Constants } from '@shared/utils/constants';\nimport { ODataQuery, RequestQuery } from '@server/api/RequestQuery';\nimport { Logger } from '@server/LogHelper';\nimport { isValidAPIVersion, errorMessages } from '@server/api/ApiVersion';\nimport { updateServerError } from '@server/apiUtils/ODataError';\nimport { getMaskedIpFromRawIpAddress } from '@shared/utils/locationUtils';\nimport { storeAcquisitionInfo } from '@server/services';\nimport { logger } from '@src/logger';\nimport * as jwt from 'jsonwebtoken';\nimport crypto from 'crypto';\nimport deepCopy from 'deepcopy';\nconst emptyId = '00000000-0000-0000-0000-000000000000';\nexport function generateUid(len) {\n    return crypto.randomBytes(Math.ceil(len * 3 / 4)).toString('base64').slice(0, len);\n}\nexport class RequestHeaders {\n    constructor(requestId, correlationId, authorization){\n        _define_property(this, \"requestId\", void 0);\n        _define_property(this, \"correlationId\", void 0);\n        _define_property(this, \"authorization\", void 0);\n        this.requestId = requestId;\n        this.correlationId = correlationId;\n        this.authorization = authorization;\n    }\n}\nexport class RequestCookies {\n    constructor(appSourceCookie, appSourceLeadCookie){\n        _define_property(this, \"appSourceCookie\", void 0);\n        _define_property(this, \"appSourceLeadCookie\", void 0);\n        this.appSourceCookie = appSourceCookie;\n        this.appSourceLeadCookie = appSourceLeadCookie;\n    }\n}\nexport function extractRequestCookies(req) {\n    let appSourceCookie = null;\n    let appSourceLeadCookie = null;\n    if (req && req.cookies) {\n        appSourceCookie = req.cookies[Constants.Cookies.AppSourceCookie] || null;\n        appSourceLeadCookie = req.cookies[Constants.Cookies.AppSourceLeadCookie] || null;\n    }\n    return new RequestCookies(appSourceCookie, appSourceLeadCookie);\n}\n// Recommended to use this method to get the requestId and correlationId as a single typed object from a request object\nexport function extractRequestHeaders(req) {\n    let requestId = Constants.ReservedCorrelationIds.EmptyId;\n    let correlationId = Constants.ReservedCorrelationIds.EmptyId;\n    let authorization = null;\n    if (req) {\n        requestId = req.headers[Constants.Headers.RequestId] || Constants.ReservedCorrelationIds.EmptyId;\n        correlationId = req.headers[Constants.Headers.CorrelationId] || Constants.ReservedCorrelationIds.EmptyId;\n        authorization = req.headers[Constants.Headers.Authorization] || null;\n    }\n    return new RequestHeaders(requestId, correlationId, authorization);\n}\n// Helper method to create an Outgoing Request\nexport function createOutgoingHttpContext(incomingRequest, operation, httpMethod, hostname, targetUri, apiVersion, contentLength, headers) {\n    let requestId = emptyId;\n    let correlationId = emptyId;\n    if (incomingRequest) {\n        if (incomingRequest.headers) {\n            requestId = incomingRequest.headers[Constants.Headers.RequestId] || emptyId;\n            correlationId = incomingRequest.headers[Constants.Headers.CorrelationId] || emptyId;\n        }\n    }\n    const requestContext = {\n        requestId,\n        correlationId,\n        operation: operation || '',\n        httpMethod: httpMethod || '',\n        hostName: hostname || '',\n        targetUri: targetUri || '',\n        userAgent: '',\n        clientIpAddress: '',\n        apiVersion: apiVersion || '',\n        contentLength: contentLength || 0,\n        headers: JSON.stringify(headers) || ''\n    };\n    return requestContext;\n}\n/**\n * get masked ip address from http request forwared address\n *\n *  supports ipv6 and ipv6\n *\n *  NOTE: this function doesn't invalidate ipaddresses, whose any of segment values exceeds its maximum\n *\n * @param request http request\n *\n * @return\n *  undefined, if valid ipv6 or valid ipv4 cannot be found, or\n *  a string with last segment of ip adress masked with 'xxx'\n */ export function getMaskedIP(request) {\n    var _request_headers, _request_connection;\n    const rawIpAddress = ((_request_headers = request.headers) === null || _request_headers === void 0 ? void 0 : _request_headers[Constants.Headers.XForwardedFor]) || ((_request_connection = request.connection) === null || _request_connection === void 0 ? void 0 : _request_connection.remoteAddress);\n    return getMaskedIpFromRawIpAddress(rawIpAddress);\n}\nexport function getStringQueryParam(req, queryParamKey) {\n    if (!req || !req.query || !req.query[`${queryParamKey}`]) {\n        // Handle it as a 400 in the future\n        return null;\n    }\n    let queryParamValue = req.query[`${queryParamKey}`];\n    if (Array.isArray(queryParamValue)) {\n        if (queryParamValue.length === 0) {\n            return null;\n        }\n        // When we receive retries from the front end view API's we currently receive duplicate\n        // query string parameters and we reject the request. We are temporarily allowing the\n        // multiple query string parameters to be used with the first value to be used. This will\n        // be removed once the front end retry logic no longer sends multiple query string parameters\n        // on retries.\n        queryParamValue = queryParamValue[0];\n    // TODO: Re-enable this and remove the line above once the retry logic sends single query string parameters.\n    // If multiple values are provided for the same query param, throw Error\n    // throw Error(queryParamKey + errorMessages.multipleValuesForQueryParam);\n    }\n    try {\n        return decodeURIComponent(queryParamValue);\n    } catch (e) {\n        const { requestId, correlationId } = extractRequestHeaders(req);\n        Logger.logDebugMessage(requestId, correlationId, 'getStringQueryParam', `URI malformed ${queryParamValue}`);\n        logger.debug(`URI malformed ${queryParamValue}`, {\n            action: 'getStringQueryParam'\n        });\n        return null;\n    }\n}\nexport function throwIfQueryParamPresent(req, queryParamKey) {\n    const value = getStringQueryParam(req, queryParamKey);\n    if (value) {\n        throw Error(queryParamKey + ' is not supported');\n    }\n}\nexport function getRequestContext(req) {\n    let requestId = Constants.ReservedCorrelationIds.EmptyId;\n    let correlationId = Constants.ReservedCorrelationIds.EmptyId;\n    let apiVersion = Constants.appsourceApiVersion;\n    let requestUrl = '';\n    let headers = [];\n    let cookies = {};\n    let remoteIpAddress = null;\n    if (req) {\n        requestId = req.headers[Constants.Headers.RequestId] || Constants.ReservedCorrelationIds.EmptyId;\n        correlationId = req.headers[Constants.Headers.CorrelationId] || Constants.ReservedCorrelationIds.EmptyId;\n        apiVersion = getStringQueryParam(req, 'api-version') || getStringQueryParam(req, 'version');\n        requestUrl = req.url || '';\n        headers = req.headers;\n        cookies = extractRequestCookies(req);\n        remoteIpAddress = getMaskedIP(req);\n        if (remoteIpAddress === Constants.TypeOf.undefinedName) {\n            remoteIpAddress = null;\n        }\n    }\n    const requestContext = {\n        correlationId,\n        requestId,\n        operation: requestUrl,\n        apiVersion,\n        continuation: null,\n        headers,\n        cookies,\n        remoteIpAddress\n    };\n    return requestContext;\n}\nexport function rotateArray(array, numElements) {\n    while(numElements-- > 0){\n        const tmp = array.shift();\n        array.push(tmp);\n    }\n    return array;\n}\nexport function logDebug(requestContext, message) {\n    Logger.logDebugMessage(requestContext.requestId, requestContext.correlationId, requestContext.operation, message);\n}\nfunction checkAndLogDuplicateQueryStringParameters(req, requestContext) {\n    if (!req || !req.query) {\n        return;\n    }\n    const keys = Object.keys(req.query);\n    for(let i = 0; i < keys.length; i++){\n        if (Array.isArray(req.query[keys[`${i}`]])) {\n            logDebug(requestContext, 'Duplicate query string parameters found:' + req.originalUrl);\n            break;\n        }\n    }\n}\n// TODO: Move this method and getRequestContext methods out of Utils.tsx\n//       to remove the cyclic dependency on Utils.tsx from these classes\nexport function getRequestQuery(req) {\n    const query = new RequestQuery();\n    const requestHeaders = extractRequestHeaders(req);\n    const requestContext = getRequestContext(req);\n    checkAndLogDuplicateQueryStringParameters(req, requestContext);\n    query.requestContext = requestContext;\n    query.apiVersion = getStringQueryParam(req, 'api-version');\n    query.flightCode = getStringQueryParam(req, 'flightCodes');\n    query.billingRegion = getStringQueryParam(req, 'billingregion');\n    query.appId = getStringQueryParam(req, 'appId');\n    query.planId = getStringQueryParam(req, 'planId');\n    query.partnerId = getStringQueryParam(req, 'partnerId');\n    query.id = getStringQueryParam(req, 'id');\n    query.userSegment = getStringQueryParam(req, 'usersegment');\n    query.headers = requestHeaders;\n    query.odataQuery = ODataQuery.createODataQuery(req);\n    query.cookies = extractRequestCookies(req);\n    query.publisherid = getStringQueryParam(req, 'publisherid');\n    query.requestContext.continuation = query.odataQuery.$skiptoken;\n    query.country = getStringQueryParam(req, 'country');\n    if (!query.apiVersion) {\n        throw Error(errorMessages.missingApiVersion);\n    } else if (!isValidAPIVersion(query.apiVersion)) {\n        throw Error(errorMessages.invalidApiVersion);\n    }\n    return query;\n}\nexport function logError(requestContext, message, error) {\n    Logger.logError(requestContext.operation, message, error, {\n        requestId: requestContext.requestId,\n        correlationId: requestContext.correlationId\n    });\n}\nexport function logAcquisitionInfo(requestContext, body) {\n    const decodedAuthToken = jwt.decode(this.authToken);\n    Logger.LogAcquisitionInfo(requestContext.requestId, requestContext.correlationId, body, decodedAuthToken);\n    storeAcquisitionInfo({\n        payload: body\n    }, this.authToken);\n}\n/**\n * Helper function for logging the outbound request end.\n *\n * @param {models.IHttpRequestContext} request : The HttpRequestContext.\n * @param {number} duration : The duration of the request.\n * @param {number} httpStatus : The Http Status response code.\n * @param {string} errorMessage : The error message if available.\n */ export function logOutboundRequestEnd(request, duration, httpStatus, errorMessage) {\n    Logger.LogOutboundRequestEnd(request, duration, httpStatus, errorMessage);\n}\nexport function IsAppAndPartnerDataMerged() {\n    const settingValue = process.env.mergeDataCollections || 'false';\n    return settingValue === 'true';\n}\nexport function isGuid(guid) {\n    const pattern = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;\n    return pattern.test(guid);\n}\nexport function isServerId(serverId) {\n    const serverPattern = /^[0-9]{8}-[0-9]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9]{12}$/i;\n    return serverPattern.test(serverId);\n}\nexport function checkReqHeaders(req) {\n    // cacheStatus is called from antares we dont have an option to add these headers\n    if (req && req.headers && req.baseUrl !== '/view/cacheStatus') {\n        const requestId = req.headers[Constants.Headers.RequestId];\n        const correlationId = req.headers[Constants.Headers.CorrelationId];\n        if (!requestId || !correlationId) {\n            return 'No requestId or correlationId found in the header of the request';\n        }\n        if (!isGuid(requestId)) {\n            return 'Invalid requestId format in the header of the request';\n        }\n        if (!isGuid(correlationId) && !isServerId(correlationId)) {\n            return 'Invalid correlationId format in header';\n        }\n    }\n    return '';\n}\nexport function clone(obj) {\n    if (!obj) {\n        return obj;\n    }\n    return JSON.parse(JSON.stringify(obj));\n}\nfunction scrubPiiField(piiField = '') {\n    return (piiField === null || piiField === void 0 ? void 0 : piiField.length) ? `length: ${piiField.length}` : piiField;\n}\nfunction scrubPii(user) {\n    Constants.PIIFields.forEach((piiField)=>{\n        user[`${piiField}`] = scrubPiiField(user[`${piiField}`]);\n    });\n}\nexport function scrubAcquisitionPayload(payload) {\n    try {\n        var _payloadCopy_notes_length, _payloadCopy_notes;\n        const payloadCopy = deepCopy(payload);\n        if (payloadCopy.userInfo) {\n            scrubPii(payloadCopy.userInfo);\n        }\n        payloadCopy.notes = (_payloadCopy_notes = payloadCopy.notes) === null || _payloadCopy_notes === void 0 ? void 0 : (_payloadCopy_notes_length = _payloadCopy_notes.length) === null || _payloadCopy_notes_length === void 0 ? void 0 : _payloadCopy_notes_length.toString();\n        return payloadCopy;\n    } catch (error) {\n        logger.error(`Failed to scrubAcquisitionPayload with error ${error.error.message}`);\n        return {};\n    }\n}\nexport function scrubUserProfile(user) {\n    try {\n        const userCopy = deepCopy(user);\n        scrubPii(userCopy);\n        return userCopy;\n    } catch (error) {\n        logger.error(`Failed to scrubUserProfile with error ${error.error.message}`);\n        return {};\n    }\n}\nexport function removeDuplicateQueryParams(queryParams) {\n    let urlQueryParams = queryParams;\n    if (queryParams.indexOf('?') > -1) {\n        const splitValues = queryParams.split('?');\n        urlQueryParams = splitValues && splitValues.length > 1 ? splitValues[1] : urlQueryParams;\n    }\n    if (!urlQueryParams || urlQueryParams === '' || queryParams.indexOf('=') === -1) {\n        return '';\n    }\n    const obj = JSON.parse('{\"' + urlQueryParams.replace(/&/g, '\",\"').replace(/=/g, '\":\"') + '\"}');\n    return `?${new URLSearchParams(obj).toString()}`;\n}\n// Logs the payload provided as Json into debug table\nexport function logPayload(requestId, correlationId, payload, operationName) {\n    try {\n        Logger.logDebugMessage(requestId, correlationId, operationName, JSON.stringify(scrubAcquisitionPayload(payload)));\n        logger.debug(JSON.stringify(scrubAcquisitionPayload(payload)), {\n            action: operationName\n        });\n    } catch (e) {\n        const error = updateServerError(e);\n        Logger.logErrorMessage(requestId, correlationId, operationName, 'Failed to log payload with error ' + error.error.message);\n        logger.error(`Failed to log payload with error ${error.error.message}`, {\n            action: operationName,\n            error: e\n        });\n    }\n} // List of all the crawlers which we need to exclude from the user traffic\n","function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nfunction _object_spread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        var ownKeys = Object.keys(source);\n        if (typeof Object.getOwnPropertySymbols === \"function\") {\n            ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n            }));\n        }\n        ownKeys.forEach(function(key) {\n            _define_property(target, key, source[key]);\n        });\n    }\n    return target;\n}\nfunction _object_without_properties(source, excluded) {\n    if (source == null) return {};\n    var target = _object_without_properties_loose(source, excluded);\n    var key, i;\n    if (Object.getOwnPropertySymbols) {\n        var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n        for(i = 0; i < sourceSymbolKeys.length; i++){\n            key = sourceSymbolKeys[i];\n            if (excluded.indexOf(key) >= 0) continue;\n            if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n            target[key] = source[key];\n        }\n    }\n    return target;\n}\nfunction _object_without_properties_loose(source, excluded) {\n    if (source == null) return {};\n    var target = {};\n    var sourceKeys = Object.keys(source);\n    var key, i;\n    for(i = 0; i < sourceKeys.length; i++){\n        key = sourceKeys[i];\n        if (excluded.indexOf(key) >= 0) continue;\n        target[key] = source[key];\n    }\n    return target;\n}\nimport { stringifyError } from '@shared/utils/errorUtils';\nexport var ServerCollection = /*#__PURE__*/ function(ServerCollection) {\n    ServerCollection[\"ServerLogs\"] = \"Logs\";\n    ServerCollection[\"IncomingRequests\"] = \"IncomingRequests\";\n    ServerCollection[\"ServerOutgoingRequests\"] = \"OutgoingRequests\";\n    ServerCollection[\"DBResourceOverUsage\"] = \"DBResourceOverUsage\";\n    ServerCollection[\"UserTelemetry\"] = \"UserTelemetry\";\n    ServerCollection[\"UserFeedback\"] = \"UserFeedback\";\n    return ServerCollection;\n}({});\nexport class ServerLogger {\n    get logger() {\n        return this._logger;\n    }\n    init(winstonLogger) {\n        this._logger = winstonLogger;\n    }\n    debug(message, _param) {\n        var { operation = '', operationModifier = '', page = '', collection = \"Logs\" } = _param, loggerMetadata = _object_without_properties(_param, [\n            \"operation\",\n            \"operationModifier\",\n            \"page\",\n            \"collection\"\n        ]);\n        const { correlationId, requestId } = this.context;\n        if (this._logger) {\n            this._logger.debug(message, _object_spread({\n                correlationId,\n                requestId,\n                operation,\n                operationModifier,\n                page,\n                collection\n            }, loggerMetadata));\n        }\n    }\n    info(message, _param) {\n        var { operation = '', operationModifier = '', page = '', collection = \"Logs\" } = _param, loggerMetadata = _object_without_properties(_param, [\n            \"operation\",\n            \"operationModifier\",\n            \"page\",\n            \"collection\"\n        ]);\n        const { correlationId, requestId } = this.context;\n        if (this._logger) {\n            this._logger.info(message, _object_spread({\n                correlationId,\n                requestId,\n                operation,\n                operationModifier,\n                page,\n                collection\n            }, loggerMetadata));\n        }\n    }\n    warning(message, _param) {\n        var { operation = '', operationModifier = '', page = '', collection = \"Logs\" } = _param, loggerMetadata = _object_without_properties(_param, [\n            \"operation\",\n            \"operationModifier\",\n            \"page\",\n            \"collection\"\n        ]);\n        const { correlationId, requestId } = this.context;\n        if (this._logger) {\n            this._logger.warn(message, _object_spread({\n                correlationId,\n                requestId,\n                operation,\n                operationModifier,\n                page,\n                collection\n            }, loggerMetadata));\n        }\n    }\n    error(message, _param) {\n        var { operation = '', operationModifier = '', page = '', collection = \"Logs\", error } = _param, loggerMetadata = _object_without_properties(_param, [\n            \"operation\",\n            \"operationModifier\",\n            \"page\",\n            \"collection\",\n            \"error\"\n        ]);\n        const { correlationId, requestId } = this.context;\n        // The payload of the error might be changed!\n        if (this._logger) {\n            this._logger.error(message, _object_spread({\n                correlationId,\n                requestId,\n                operation,\n                operationModifier,\n                page,\n                collection,\n                error: stringifyError(error || '')\n            }, loggerMetadata));\n        }\n    }\n    constructor(){\n        _define_property(this, \"_logger\", void 0);\n        _define_property(this, \"context\", void 0);\n        this.context = {\n            correlationId: '',\n            requestId: ''\n        };\n    }\n}\n","export var AzureEnvironment = /*#__PURE__*/ function(AzureEnvironment) {\n    AzureEnvironment[AzureEnvironment[\"Public\"] = 0] = \"Public\";\n    AzureEnvironment[AzureEnvironment[\"FairFax\"] = 1] = \"FairFax\";\n    AzureEnvironment[AzureEnvironment[\"Mooncake\"] = 2] = \"Mooncake\";\n    AzureEnvironment[AzureEnvironment[\"BlackForest\"] = 3] = \"BlackForest\";\n    return AzureEnvironment;\n}({});\nconst settings = {};\nsettings[0] = {\n    environment: 0,\n    defaultCountryCode: 'us',\n    defaultLocale: 'en-us',\n    allowMSA: true\n};\nsettings[2] = {\n    environment: 2,\n    defaultCountryCode: 'cn',\n    defaultLocale: 'zh-cn',\n    allowMSA: false\n};\n// Settings for the Azure environment\nexport const AzureEnvironmentSettings = settings[0];\n","/* eslint-disable camelcase */ export var PartnerSearchResultType = /*#__PURE__*/ function(PartnerSearchResultType) {\n    PartnerSearchResultType[PartnerSearchResultType[\"Industry\"] = 0] = \"Industry\";\n    PartnerSearchResultType[PartnerSearchResultType[\"Product\"] = 1] = \"Product\";\n    PartnerSearchResultType[PartnerSearchResultType[\"Service\"] = 2] = \"Service\";\n    PartnerSearchResultType[PartnerSearchResultType[\"Category\"] = 3] = \"Category\";\n    PartnerSearchResultType[PartnerSearchResultType[\"AdvSpec\"] = 4] = \"AdvSpec\";\n    PartnerSearchResultType[PartnerSearchResultType[\"Partner\"] = 5] = \"Partner\";\n    PartnerSearchResultType[PartnerSearchResultType[\"FreeText\"] = 6] = \"FreeText\";\n    return PartnerSearchResultType;\n}({});\nexport const LinkedAddInsTypes = {\n    outlook: true,\n    onenote: true,\n    officemetaos: true,\n    teams: true,\n    word: true,\n    excel: true,\n    sharepoint: true,\n    viva: true,\n    powerpoint: true,\n    project: true\n};\nexport var AppTag = /*#__PURE__*/ function(AppTag) {\n    AppTag[AppTag[\"Other\"] = 0] = \"Other\";\n    AppTag[AppTag[\"OfficeAward\"] = 1] = \"OfficeAward\";\n    AppTag[AppTag[\"New\"] = 2] = \"New\";\n    AppTag[AppTag[\"Trending\"] = 3] = \"Trending\";\n    AppTag[AppTag[\"PowerBICertified\"] = 4] = \"PowerBICertified\";\n    AppTag[AppTag[\"AzureExpertsMSP\"] = 5] = \"AzureExpertsMSP\";\n    return AppTag;\n}({});\nexport var MediaType = /*#__PURE__*/ function(MediaType) {\n    MediaType[\"Image\"] = \"Image\";\n    MediaType[\"Video\"] = \"Video\";\n    return MediaType;\n}({});\nexport var CustomerType = /*#__PURE__*/ function(CustomerType) {\n    CustomerType[\"Organization\"] = \"Organization\";\n    CustomerType[\"Individual\"] = \"Individual\";\n    return CustomerType;\n}({});\n// Test Drive status\nexport var SolutionInstanceStatus = /*#__PURE__*/ function(SolutionInstanceStatus) {\n    SolutionInstanceStatus[\"Provisioning\"] = \"Provisioning\";\n    SolutionInstanceStatus[\"Ready\"] = \"Ready\";\n    SolutionInstanceStatus[\"Deprovisioned\"] = \"Deprovisioned\";\n    SolutionInstanceStatus[\"Expired\"] = \"Expired\";\n    SolutionInstanceStatus[\"Error\"] = \"Error\";\n    SolutionInstanceStatus[\"Unavailable\"] = \"Unavailable\";\n    return SolutionInstanceStatus;\n}({});\nexport var PricingStates = /*#__PURE__*/ function(PricingStates) {\n    PricingStates[PricingStates[\"Loading\"] = 1] = \"Loading\";\n    PricingStates[PricingStates[\"BYOL\"] = 2] = \"BYOL\";\n    PricingStates[PricingStates[\"AlwaysAvailable\"] = 3] = \"AlwaysAvailable\";\n    PricingStates[PricingStates[\"NotAvailableInThisRegion\"] = 4] = \"NotAvailableInThisRegion\";\n    PricingStates[PricingStates[\"NoPricingData\"] = 5] = \"NoPricingData\";\n    PricingStates[PricingStates[\"FreeApp\"] = 6] = \"FreeApp\";\n    PricingStates[PricingStates[\"AdditionalPurchasesRequired\"] = 7] = \"AdditionalPurchasesRequired\";\n    PricingStates[PricingStates[\"SolutionTemplate\"] = 8] = \"SolutionTemplate\";\n    // NOTE: where is the following used?? Can it be removed?\n    PricingStates[PricingStates[\"WebApp\"] = 9] = \"WebApp\";\n    PricingStates[PricingStates[\"PriceVaries\"] = 10] = \"PriceVaries\";\n    PricingStates[PricingStates[\"StartFromFree\"] = 11] = \"StartFromFree\";\n    PricingStates[PricingStates[\"LearnMore\"] = 12] = \"LearnMore\";\n    return PricingStates;\n}({});\nexport var UserSegment = /*#__PURE__*/ function(UserSegment) {\n    UserSegment[UserSegment[\"unauthenticated\"] = 0] = \"unauthenticated\";\n    UserSegment[UserSegment[\"business\"] = 1] = \"business\";\n    UserSegment[UserSegment[\"consumer\"] = 2] = \"consumer\";\n    UserSegment[UserSegment[\"edu\"] = 3] = \"edu\";\n    UserSegment[UserSegment[\"tenantadmin\"] = 4] = \"tenantadmin\";\n    return UserSegment;\n}({});\nexport var CommunityItemType = /*#__PURE__*/ function(CommunityItemType) {\n    CommunityItemType[\"Review\"] = \"Review\";\n    return CommunityItemType;\n}({});\nexport var CheckoutSource = /*#__PURE__*/ function(CheckoutSource) {\n    CheckoutSource[\"PdpTable\"] = \"PDP Table\";\n    CheckoutSource[\"PdpTop\"] = \"PDP Top\";\n    CheckoutSource[\"Tile\"] = \"Tile\";\n    CheckoutSource[\"Deeplink\"] = \"Deeplink\";\n    return CheckoutSource;\n}({});\nexport var PricingOfferType = /*#__PURE__*/ function(PricingOfferType) {\n    PricingOfferType[\"AppService\"] = \"AppService\";\n    PricingOfferType[\"VirtualMachine\"] = \"VirtualMachine\";\n    return PricingOfferType;\n}({});\nexport var CatalogOfferType = /*#__PURE__*/ function(CatalogOfferType) {\n    CatalogOfferType[\"None\"] = \"None\";\n    CatalogOfferType[\"VirtualMachine\"] = \"VirtualMachine\";\n    CatalogOfferType[\"AzureApplication\"] = \"AzureApplication\";\n    CatalogOfferType[\"Container\"] = \"Container\";\n    CatalogOfferType[\"SaaS\"] = \"SaaS\";\n    CatalogOfferType[\"ManagedServices\"] = \"ManagedServices\";\n    CatalogOfferType[\"DynamicsOps\"] = \"DynamicsOps\";\n    CatalogOfferType[\"DynamicsCE\"] = \"DynamicsCE\";\n    CatalogOfferType[\"DynamicsBC\"] = \"DynamicsBC\";\n    CatalogOfferType[\"PowerBI\"] = \"PowerBI\";\n    CatalogOfferType[\"ConsultingServices\"] = \"ConsultingServices\";\n    CatalogOfferType[\"PowerBIVisuals\"] = \"PowerBIVisuals\";\n    CatalogOfferType[\"Office365\"] = \"Office365\";\n    CatalogOfferType[\"AADApps\"] = \"AADApps\";\n    return CatalogOfferType;\n}({});\nexport var CatalogApplicableProducts = /*#__PURE__*/ function(CatalogApplicableProducts) {\n    CatalogApplicableProducts[\"Sales\"] = \"Sales\";\n    CatalogApplicableProducts[\"FieldService\"] = \"Field Service\";\n    CatalogApplicableProducts[\"ProjectServiceAutomation\"] = \"Project Service Automation\";\n    CatalogApplicableProducts[\"CustomerService\"] = \"Customer Service\";\n    CatalogApplicableProducts[\"CustomerVoice\"] = \"Customer Voice\";\n    CatalogApplicableProducts[\"Marketing\"] = \"Marketing\";\n    CatalogApplicableProducts[\"MixedReality\"] = \"Mixed Reality\";\n    CatalogApplicableProducts[\"Power_Apps\"] = \"Power Apps\";\n    CatalogApplicableProducts[\"PowerApps\"] = \"PowerApps\";\n    CatalogApplicableProducts[\"PowerAutomate\"] = \"Power Automate\";\n    CatalogApplicableProducts[\"PowerVirtualAgents\"] = \"Power Virtual Agents\";\n    CatalogApplicableProducts[\"PowerPages\"] = \"Power Pages\";\n    CatalogApplicableProducts[\"ProjectOperations\"] = \"Project Operations\";\n    CatalogApplicableProducts[\"ProjectServices\"] = \"Project Services\";\n    CatalogApplicableProducts[\"Commerce\"] = \"Commerce\";\n    CatalogApplicableProducts[\"Finance\"] = \"Finance\";\n    CatalogApplicableProducts[\"HumanResources\"] = \"Human Resources\";\n    CatalogApplicableProducts[\"SupplyChainManagement\"] = \"Supply Chain Management\";\n    CatalogApplicableProducts[\"BusinessCentral\"] = \"Business Central\";\n    return CatalogApplicableProducts;\n}({});\nexport var CatalogAppFreeType = /*#__PURE__*/ function(CatalogAppFreeType) {\n    CatalogAppFreeType[\"AppFree\"] = \"AppFree\";\n    CatalogAppFreeType[\"AppFreeTrial\"] = \"AppFreeTrial\";\n    CatalogAppFreeType[\"ExternalPurchase\"] = \"ExternalPurchase\";\n    return CatalogAppFreeType;\n}({});\nexport var CatalogM365CertificationType = /*#__PURE__*/ function(CatalogM365CertificationType) {\n    CatalogM365CertificationType[CatalogM365CertificationType[\"Undefined\"] = 0] = \"Undefined\";\n    CatalogM365CertificationType[CatalogM365CertificationType[\"None\"] = 1] = \"None\";\n    CatalogM365CertificationType[CatalogM365CertificationType[\"SelfAttested\"] = 2] = \"SelfAttested\";\n    CatalogM365CertificationType[CatalogM365CertificationType[\"MicrosoftCertified\"] = 3] = \"MicrosoftCertified\";\n    return CatalogM365CertificationType;\n}({});\nexport var CatalogPricingTypes = /*#__PURE__*/ function(CatalogPricingTypes) {\n    CatalogPricingTypes[\"Payg\"] = \"Payg\";\n    CatalogPricingTypes[\"Free\"] = \"Free\";\n    CatalogPricingTypes[\"FreeTrial\"] = \"FreeTrial\";\n    CatalogPricingTypes[\"Byol\"] = \"Byol\";\n    return CatalogPricingTypes;\n}({});\nexport var OrchestrationType = /*#__PURE__*/ function(OrchestrationType) {\n    OrchestrationType[\"PowerBi\"] = \"PowerBi\";\n    OrchestrationType[\"LabManager\"] = \"LabManager\";\n    OrchestrationType[\"LogicApp\"] = \"LogicApp\";\n    return OrchestrationType;\n}({});\nexport var PricingAudience = /*#__PURE__*/ function(PricingAudience) {\n    PricingAudience[\"DirectCommercial\"] = \"DirectCommercial\";\n    PricingAudience[\"PartnerCommercial\"] = \"PartnerCommercial\";\n    return PricingAudience;\n}({});\nexport var IAvailabilityActions = /*#__PURE__*/ function(IAvailabilityActions) {\n    IAvailabilityActions[\"Browse\"] = \"Browse\";\n    IAvailabilityActions[\"Curate\"] = \"Curate\";\n    IAvailabilityActions[\"Consume\"] = \"Consume\";\n    IAvailabilityActions[\"Details\"] = \"Details\";\n    IAvailabilityActions[\"Purchase\"] = \"Purchase\";\n    IAvailabilityActions[\"Renew\"] = \"Renew\";\n    return IAvailabilityActions;\n}({});\nexport var TermsStrings = /*#__PURE__*/ function(TermsStrings) {\n    TermsStrings[\"Term30DString\"] = \"P30D\";\n    TermsStrings[\"Term90DString\"] = \"P90D\";\n    TermsStrings[\"Term1HString\"] = \"P1H\";\n    TermsStrings[\"Term1MString\"] = \"P1M\";\n    TermsStrings[\"Term3MString\"] = \"P3M\";\n    TermsStrings[\"Term1YString\"] = \"P1Y\";\n    TermsStrings[\"Term2YString\"] = \"P2Y\";\n    TermsStrings[\"Term3YString\"] = \"P3Y\";\n    TermsStrings[\"HourString\"] = \"HR\";\n    TermsStrings[\"MonthString\"] = \"Month\";\n    TermsStrings[\"YearString\"] = \"Year\";\n    TermsStrings[\"FreeTrial\"] = \"FreeTrial\";\n    TermsStrings[\"OneTime\"] = \"OneTime\";\n    return TermsStrings;\n}({});\nexport var Badges = /*#__PURE__*/ function(Badges) {\n    Badges[\"MAICPPCertifiedSolution\"] = \"MAICPPCertifiedSolution\";\n    Badges[\"CopilotExtension\"] = \"CopilotExtension\";\n    return Badges;\n}({});\nexport var OdataRawObjectAppType = /*#__PURE__*/ function(OdataRawObjectAppType) {\n    OdataRawObjectAppType[OdataRawObjectAppType[\"public\"] = 0] = \"public\";\n    OdataRawObjectAppType[OdataRawObjectAppType[\"private\"] = 1] = \"private\";\n    return OdataRawObjectAppType;\n}({});\nexport var PlansEntityOS = /*#__PURE__*/ function(PlansEntityOS) {\n    PlansEntityOS[\"windows\"] = \"windows\";\n    PlansEntityOS[\"linux\"] = \"linux\";\n    return PlansEntityOS;\n}({});\nexport var DakotaOfferType = /*#__PURE__*/ function(DakotaOfferType) {\n    DakotaOfferType[\"AzureApplication\"] = \"AzureApplication\";\n    DakotaOfferType[\"Container\"] = \"Container\";\n    DakotaOfferType[\"ContainerApp\"] = \"ContainerApp\";\n    DakotaOfferType[\"DevService\"] = \"DevService\";\n    DakotaOfferType[\"IoTEdgeModule\"] = \"IoTEdgeModule\";\n    DakotaOfferType[\"ManagedApp\"] = \"ManagedApp\";\n    DakotaOfferType[\"ManagedServices\"] = \"ManagedServices\";\n    DakotaOfferType[\"SaaSApp\"] = \"SaaSApp\";\n    DakotaOfferType[\"SolutionTemplate\"] = \"SolutionTemplate\";\n    DakotaOfferType[\"VirtualMachine\"] = \"VirtualMachine\";\n    DakotaOfferType[\"PowerBI\"] = \"PowerBI\";\n    DakotaOfferType[\"PowerBIVisuals\"] = \"PowerBIVisuals\";\n    DakotaOfferType[\"DynamicsCE\"] = \"DynamicsCE\";\n    DakotaOfferType[\"None\"] = \"None\";\n    DakotaOfferType[\"DynamicsOps\"] = \"DynamicsOps\";\n    DakotaOfferType[\"DynamicsBC\"] = \"DynamicsBC\";\n    DakotaOfferType[\"ConsultingServices\"] = \"ConsultingServices\";\n    DakotaOfferType[\"Office365\"] = \"Office365\";\n    DakotaOfferType[\"AAD\"] = \"AAD\";\n    return DakotaOfferType;\n}({});\nexport var ISearchFilterCategory = /*#__PURE__*/ function(ISearchFilterCategory) {\n    ISearchFilterCategory[\"Products\"] = \"Products\";\n    return ISearchFilterCategory;\n}({});\nexport const ratingValues = [\n    0,\n    1,\n    2,\n    3,\n    4,\n    5,\n    6,\n    7,\n    8,\n    9,\n    10\n];\n","/* eslint-disable @typescript-eslint/no-unused-vars */ /* eslint-disable @typescript-eslint/no-empty-interface */ export function actionCreator(type) {\n    return (payload)=>({\n            type,\n            payload\n        });\n}\nexport function isType(action, type) {\n    return action.type === type;\n}\nexport const RehydrateClientStateAction = 'RehydrateClientStateAction';\nexport const createRehydrateClientStateAction = actionCreator(RehydrateClientStateAction);\nexport const SearchboxInputChangedAction = 'SearchboxInputChangedAction';\nexport const createSearchboxInputChangedAction = actionCreator(SearchboxInputChangedAction);\nexport const SuggestedChangeAction = 'SuggestedChangeAction';\nexport const createSuggestedChangeAction = actionCreator(SuggestedChangeAction);\nexport const SearchSortingOptionChangedAction = 'SearchSortingOptionChangedAction';\nexport const createSearchSortingOptionChangedAction = actionCreator(SearchSortingOptionChangedAction);\nexport const LiveSearchboxFilterAction = 'BasicSearchboxChangedAction';\nexport const createLiveSearchboxFilterAction = actionCreator(LiveSearchboxFilterAction);\nexport const ModalAction = 'ModalAction';\nexport const createModalAction = actionCreator(ModalAction);\nexport const VideoModalAction = 'VideoModalAction';\nexport const createVideoModalAction = actionCreator(VideoModalAction);\nexport const MediaModalAction = 'MediaModalAction';\nexport const createMediaModalAction = actionCreator(MediaModalAction);\nexport const DriveModalAction = 'DriveModalAction';\nexport const createDriveModalAction = actionCreator(DriveModalAction);\nexport const IFieldHubModalAction = 'IFieldHubModalAction';\nexport const createIFieldHubModalAction = actionCreator(IFieldHubModalAction);\nexport const IDisclaimerModalAction = 'IDisclaimerModalAction';\nexport const createIDisclaimerModalAction = actionCreator(IDisclaimerModalAction);\nexport const InstructionsModalAction = 'InstructionsModalAction';\nexport const createInstructionsModalAction = actionCreator(InstructionsModalAction);\nexport const RatingAction = 'RatingAction';\nexport const createRatingAction = actionCreator(RatingAction);\nexport const BreadcrumbAction = 'BreadcrumbAction';\nexport const createBreadcrumbAction = actionCreator(BreadcrumbAction);\nexport const SetCurrentViewAction = 'SetCurrentView';\nexport const createSetCurrentViewAction = actionCreator(SetCurrentViewAction);\n// determine current rendered gallery page is curated view or filtered view\n// it should be undefined when currentView is not a gallery page\nexport const UpdateCurrentGalleryViewIsCuratedAction = 'UpdateCurrentGalleryViewIsCuratedAction';\nexport const createUpdateCurrentGalleryViewIsCurated = actionCreator(UpdateCurrentGalleryViewIsCuratedAction);\nexport const SetLandingViewAction = 'SetLandingView';\nexport const createSetLandingViewAction = actionCreator(SetLandingViewAction);\nexport const EnableNewNpsAction = 'EnableNewNps';\nexport const createEnableNewNpsAction = actionCreator(EnableNewNpsAction);\nexport const SetInitializedPCAInstanceAction = 'SetInitializedPCA';\nexport const createSetInitializedPCAInstanceAction = actionCreator(SetInitializedPCAInstanceAction);\nexport const SetIsNpsLogicVerifiedAction = 'SetIsNpsLogicVerified';\nexport const createSetIsNpsLogicVerifiedAction = actionCreator(SetIsNpsLogicVerifiedAction);\nexport const ShowingResultsForReceviedAction = 'ShowingResultsForReceviedAction';\nexport const createShowingResultsForReceivedAction = actionCreator(ShowingResultsForReceviedAction);\nexport const FilteredSearchResultsReceivedAction = 'FilteredSearchResultsReceivedAction';\nexport const createFilteredSearchResultsReceivedAction = actionCreator(FilteredSearchResultsReceivedAction);\nexport const PartnerSearchResultsReceivedAction = 'PartnerSearchResultsReceivedAction';\nexport const createPartnerSearchResultsReceivedAction = actionCreator(PartnerSearchResultsReceivedAction);\nexport const EntityDataReceivedAction = 'EntityDataReceivedAction';\nexport const createEntityDataReceivedAction = actionCreator(EntityDataReceivedAction);\nexport const UserProfileLoadingAction = 'UserProfileLoadingAction';\nexport const createUserProfileLoadingAction = actionCreator(UserProfileLoadingAction);\nexport const UserProfileAction = 'UserProfileAction';\nexport const createUserProfileAction = actionCreator(UserProfileAction);\nexport const UserTenantsDetailsAction = 'UserTenantsDetailsAction';\nexport const createUserTenantsDetailsAction = actionCreator(UserTenantsDetailsAction);\nexport const UserTenantsDetailsLoadingAction = 'UserTenantsDetailsLoadingAction';\nexport const createUserTenantsDetailsLoadingAction = actionCreator(UserTenantsDetailsLoadingAction);\nexport const UpdateUserProfileAction = 'UpdateUserProfileAction';\nexport const createUpdateUserProfileAction = actionCreator(UpdateUserProfileAction);\nexport const SetAccountAction = 'SetAccountAction';\nexport const createSetAccountAction = actionCreator(SetAccountAction);\nexport const SetAccountIsLoadingAction = 'SetAccountIsLoadingAction';\nexport const createSetAccountIsLoadingAction = actionCreator(SetAccountIsLoadingAction);\nexport const SetIsMaccTenantAction = 'SetIsMaccTenantAction';\nexport const createSetIsMaccTenantAction = actionCreator(SetIsMaccTenantAction);\nexport const UpdateUserProfileLicenseAction = 'UpdateUserProfileLicenseAction';\nexport const createUpdateUserProfileLicenseAction = actionCreator(UpdateUserProfileLicenseAction);\n/** Updates IUserDataState only clears the phone number to string empty */ export const ClearUserPropertiesAction = 'ClearUserPropertiesAction';\nexport const createClearUserPropertiesAction = actionCreator(ClearUserPropertiesAction);\n// Actions for SI Partners - End\nexport const PowerBIDataReceivedAction = 'PowerBIDataReceivedAction';\nexport const createPowerBIDataReceivedAction = actionCreator(PowerBIDataReceivedAction);\nexport const PartnerAppDataReceivedAction = 'PartnerAppDataReceivedAction';\nexport const createPartnerAppDataReceivedAction = actionCreator(PartnerAppDataReceivedAction);\nexport const SetEntityIdLoadingAction = 'SetEntityIdLoadingAction';\nexport const createSetEntityIdLoadingAction = actionCreator(SetEntityIdLoadingAction);\nexport const SetEntityIdFailedAction = 'SetEntityIdFailedAction';\nexport const createSetEntityIdFailedAction = actionCreator(SetEntityIdFailedAction);\nexport const EntityDetailsReceivedAction = 'EntityDetailsReceivedAction';\nexport const createEntityDetailsReceivedAction = actionCreator(EntityDetailsReceivedAction);\nexport const EntityFullDataReceivedAction = 'EntityFullDataReceivedAction';\nexport const createEntityFullDataReceivedAction = actionCreator(EntityFullDataReceivedAction);\nexport const EntityReviewCommentsReceivedAction = 'EntityReviewCommentsReceivedAction';\nexport const createEntityReviewCommentsReceivedAction = actionCreator(EntityReviewCommentsReceivedAction);\nexport const EntityReviewCommentsLoadingAction = 'EntityReviewCommentsLoadingAction';\nexport const createEntityReviewCommentsLoadingAction = actionCreator(EntityReviewCommentsLoadingAction);\nexport const EntityReviewCommentsCleanupAction = 'EntityReviewCommentsCleanupAction';\nexport const createEntityReviewCommentsCleanupAction = actionCreator(EntityReviewCommentsCleanupAction);\nexport const EntityReviewCommentCreateResult = 'EntityReviewCommentCreateResult';\nexport const createEntityReviewCommentCreateResult = actionCreator(EntityReviewCommentCreateResult);\nexport const EntityReviewCommentDeleteResult = 'EntityReviewCommentDeleteResult';\nexport const createEntityReviewCommentDeleteResult = actionCreator(EntityReviewCommentDeleteResult);\nexport const EntityReviewCommentUpdateResult = 'EntityReviewCommentUpdateResult';\nexport const createEntityReviewCommentUpdateResult = actionCreator(EntityReviewCommentUpdateResult);\nexport const EntityReviewCommentModalAction = 'EntityReviewCommentModalAction';\nexport const createEntityReviewCommentModalAction = actionCreator(EntityReviewCommentModalAction);\nexport const EntityReviewCommentsUpdateTotalCommentCountAction = 'EntityReviewCommentsUpdateTotalCommentCountAction';\nexport const createEntityReviewCommentsUpdateTotalCommentCountAction = actionCreator(EntityReviewCommentsUpdateTotalCommentCountAction);\nexport const EntityReviewCommentsUnloadPagesAction = 'EntityReviewCommentsUnloadPagesAction';\nexport const createEntityReviewCommentsUnloadPagesAction = actionCreator(EntityReviewCommentsUnloadPagesAction);\nexport const EntityReviewCommentsInitializeStateAction = 'EntityReviewCommentsInitializeStateAction';\nexport const createEntityReviewCommentsInitializeStateAction = actionCreator(EntityReviewCommentsInitializeStateAction);\nexport const EntityMarkedAsHelpfulReviewUpdateListAction = 'EntityMarkedAsHelpfulReviewUpdateListAction';\nexport const createEntityMarkedAsHelpfulReviewUpdateListAction = actionCreator(EntityMarkedAsHelpfulReviewUpdateListAction);\nexport const EntityUserCommentedReviewIdsUpdateListAction = 'EntityUserCommentedReviewIdsUpdateListAction';\nexport const createEntityUserCommentedReviewIdsUpdateListAction = actionCreator(EntityUserCommentedReviewIdsUpdateListAction);\nexport const EntityLinkedInProductGroupUpdateAction = 'EntityLinkedInProductGroupUpdateAction';\nexport const createEntityLinkedInProductGroupUpdateAction = actionCreator(EntityLinkedInProductGroupUpdateAction);\nexport const EntityReviewSetIsHelpfulLoadingAction = 'EntityReviewSetIsHelpfulLoadingAction';\nexport const createEntityReviewSetIsHelpfulLoadingAction = actionCreator(EntityReviewSetIsHelpfulLoadingAction);\nexport const EntityReviewSetIsHelpfulAction = 'EntityReviewSetIsHelpfulAction';\nexport const createEntityReviewSetIsHelpfulAction = actionCreator(EntityReviewSetIsHelpfulAction);\nexport const EntityReviewMarkAsHelpfulModalAction = 'EntityReviewMarkAsHelpfulModalAction';\nexport const createEntityReviewMarkAsHelpfulModalAction = actionCreator(EntityReviewMarkAsHelpfulModalAction);\nexport const EntityReviewSetMarkAsHelpfulCount = 'EntityReviewSetMarkAsHelpfulCount';\nexport const createEntityReviewSetMarkAsHelpfulCount = actionCreator(EntityReviewSetMarkAsHelpfulCount);\nexport const RelatedAppsItemsLoadingAction = 'RelatedAppsItemsLoadingAction';\nexport const createRelatedAppsItemsLoadingAction = actionCreator(RelatedAppsItemsLoadingAction);\nexport const GetAppReviewsAction = 'GetAppReviewsAction';\nexport const createGetAppReviewsAction = actionCreator(GetAppReviewsAction);\nexport const SetStorefrontNameAction = 'SetStorefrontNameAction';\nexport const createSetStorefrontNameAction = actionCreator(SetStorefrontNameAction);\nexport const RelatedAppsItemsReceivedAction = 'RelatedAppsItemsReceivedAction';\nexport const createRelatedAppsItemsReceivedAction = actionCreator(RelatedAppsItemsReceivedAction);\nexport const RelatedAppsItemsPricingDataReceivedAction = 'RelatedAppsItemsPricingDataReceivedAction';\nexport const createRelatedAppsItemsPricingDataReceivedAction = actionCreator(RelatedAppsItemsPricingDataReceivedAction);\nexport const RecommendedAppsItemsPricingDataReceivedAction = 'RecommendedAppsItemsPricingDataReceivedAction';\nexport const createRecommendedAppsItemsPricingDataReceivedAction = actionCreator(RecommendedAppsItemsPricingDataReceivedAction);\nexport const RecommendedWhatsNewAppsReceivedAction = 'RecommendedWhatsNewAppsReceivedAction';\nexport const createRecommendedWhatsNewAppsReceivedAction = actionCreator(RecommendedWhatsNewAppsReceivedAction);\nexport const RecommendedTrendingAppsReceivedAction = 'RecommendedTrendingAppsReceivedAction';\nexport const createRecommendedTrendingAppsReceivedAction = actionCreator(RecommendedTrendingAppsReceivedAction);\nexport const RecommendedWhatsNewServiceReceivedAction = 'RecommendedWhatsNewServiceReceivedAction';\nexport const createRecommendedWhatsNewServiceReceivedAction = actionCreator(RecommendedWhatsNewServiceReceivedAction);\nexport const RecommendedTrendingServiceReceivedAction = 'RecommendedTrendingServiceReceivedAction';\nexport const createRecommendedTrendingServiceReceivedAction = actionCreator(RecommendedTrendingServiceReceivedAction);\nexport const RecommendedMicrosoft365WhatsNewAppsReceivedAction = 'RecommendedMicrosoft365WhatsNewAppsReceivedAction';\nexport const createRecommendedMicrosoft365WhatsNewAppsReceivedAction = actionCreator(RecommendedMicrosoft365WhatsNewAppsReceivedAction);\nexport const RecommendedMicrosoft365TrendingAppsReceivedAction = 'RecommendedMicrosoft365TrendingAppsReceivedAction';\nexport const createRecommendedMicrosoft365TrendingAppsReceivedAction = actionCreator(RecommendedMicrosoft365TrendingAppsReceivedAction);\nexport const BillingRegionReadFromCookieAction = 'BillingRegionReadFromCookieAction';\nexport const createBillingRegionReadFromCookieAction = actionCreator(BillingRegionReadFromCookieAction);\nexport const AppDetailPricingReceivedAction = 'AppDetailPricingReceivedAction';\nexport const createAppDetailPricingReceivedAction = actionCreator(AppDetailPricingReceivedAction);\nexport const SearchQueryChangedAction = 'SearchQueryChangedAction';\nexport const createSearchQueryChangedAction = actionCreator(SearchQueryChangedAction);\nexport const SearchDataReceivedAction = 'SearchDataReceivedAction';\nexport const createSearchDataReceivedAction = actionCreator(SearchDataReceivedAction);\nexport const SearchSuggestionsRequestId = 'SearchSuggestionsRequestId';\nexport const setSuggestionsRequestId = actionCreator(SearchSuggestionsRequestId);\nexport const CuratedDataReceivedAction = 'CuratedDataReceivedAction';\nexport const createCuratedDataReceivedAction = actionCreator(CuratedDataReceivedAction);\nexport const DataMapReceivedAction = 'DataMapReceivedAction';\nexport const createDataMapReceivedAction = actionCreator(DataMapReceivedAction);\nexport const UserSignInAction = 'UserSignInAction';\nexport const createUserSignInAction = actionCreator(UserSignInAction);\nexport const UserSignInStatusAction = 'UserSignInStatusAction';\nexport const UserSignInFetchStatusAction = 'UserSignInFetchStatusAction';\nexport const UserSignInStatusDataAction = 'UserSignInStatusDataAction';\nexport const UserAccesstokensAction = 'UserAccesstokensAction';\nexport const UserLoginDetailsAction = 'UserLoginDetailsAction';\nexport const createUserSignInStatusAction = actionCreator(UserSignInStatusAction);\nexport const createUserSignInStatusDataAction = actionCreator(UserSignInStatusDataAction);\nexport const createUserSignInFetchStatusAction = actionCreator(UserSignInFetchStatusAction);\nexport const createUserAccesstokensAction = actionCreator(UserAccesstokensAction);\nexport const createUserLoginDetailsAction = actionCreator(UserLoginDetailsAction);\nexport const ABTestingEnableAction = 'ABTestingEnableAction';\nexport const createABTestingAction = actionCreator(ABTestingEnableAction);\nexport const EmbedUserSignInAction = 'EmbedUserSignInAction';\nexport const createEmbedUserSignInAction = actionCreator(EmbedUserSignInAction);\nexport const NpsAction = 'NpsAction';\nexport const createNpsAction = actionCreator(NpsAction);\nexport const UserReviewUpdateAction = 'UserReviewUpdateAction';\nexport const createUserReviewUpdatedAction = actionCreator(UserReviewUpdateAction);\nexport const EmbeddedAppSettingAction = 'EmbeddedAppSettingAction';\nexport const createEmbeddedAppSettingAction = actionCreator(EmbeddedAppSettingAction);\nexport const SetInitLoadingAction = 'SetInitLoadingAction';\nexport const createSetInitLoadingAction = actionCreator(SetInitLoadingAction);\nexport const NationalCloudSettingAction = 'NationalCloudSettingAction';\nexport const createNationalCloudSettingAction = actionCreator(NationalCloudSettingAction);\nexport const EmbeddedHostAction = 'EmbeddedHostAction';\nexport const createEmbeddedHostAction = actionCreator(EmbeddedHostAction);\nexport const LocStringsReceivedAction = 'LocStringsReceivedAction';\nexport const createLocStringsReceivedAction = actionCreator(LocStringsReceivedAction);\nexport const I18nextReceivedAction = 'I18nextReceivedAction';\nexport const createI18nextReceivedAction = actionCreator(I18nextReceivedAction);\nexport const FlightCodesReceivedAction = 'FlightCodesReceivedAction';\nexport const createFlightCodesReceivedAction = actionCreator(FlightCodesReceivedAction);\nexport const IncludeTestProductsReceivedAction = 'IncludeTestProductsReceivedAction';\nexport const createIncludeTestProductsReceivedAction = actionCreator(IncludeTestProductsReceivedAction);\nexport const IsConverged = 'IsConverged';\nexport const createIsConverged = actionCreator(IsConverged);\nexport const CorrelationIdReceivedAction = 'CorrelationIdReceivedAction';\nexport const createCorrelationIdAction = actionCreator(CorrelationIdReceivedAction);\nexport const RequestIdReceivedAction = 'RequestIdReceivedAction';\nexport const createRequestIdAction = actionCreator(RequestIdReceivedAction);\nexport const TelemetryLoggedAction = 'TelemetryLoggedAction';\nexport const createAppViewTelemetryLoggedAction = actionCreator(TelemetryLoggedAction);\nexport const AppsPricingDataReceivedAction = 'AppsPricingAction';\nexport const createAppsPricingDataReceivedAction = actionCreator(AppsPricingDataReceivedAction);\nexport const AppPricingDataReceivedAction = 'AppPricingAction';\nexport const createAppPricingDataReceivedAction = actionCreator(AppPricingDataReceivedAction);\nexport const AppPricingDataRequestedAction = 'AppPricingRequestedAction';\nexport const createAppPricingDataRequestedAction = actionCreator(AppPricingDataRequestedAction);\nexport const FeatureFlagsReceivedAction = 'FeatureFlagsReceivedAction';\nexport const createFeatureFlagsReceivedAction = actionCreator(FeatureFlagsReceivedAction);\nexport const AddSubscriptionsInTenant = 'AddSubscriptionsInTenant';\nexport const createAddSubscriptionsInTenant = actionCreator(AddSubscriptionsInTenant);\nexport const UpdateUserRoleDefinitions = 'UpdateUserRoleDefinitions';\nexport const createUpdateUserRoleDefinitions = actionCreator(UpdateUserRoleDefinitions);\nexport const UserSegmentInitializeAction = 'UserSegmentInitializeAction';\nexport const createUserSegmentInitializeAction = actionCreator(UserSegmentInitializeAction);\nexport const UserSignOutAction = 'UserSignOutAction';\nexport const createUserSignOutAction = actionCreator(UserSignOutAction);\nexport const UserFieldHubTypeAction = 'UserFieldHubTypeAction';\nexport const createUserFieldHubTypeAction = actionCreator(UserFieldHubTypeAction);\nexport const CountriesDataReceivedAction = 'CountriesDataReceivedAction';\nexport const createServicesCountriesDataReceivedAction = actionCreator(CountriesDataReceivedAction);\nexport const SetEntityDataRegionFiltersAction = 'SetEntityDataRegionFiltersAction';\nexport const createSetEntityDataRegionFiltersAction = actionCreator(SetEntityDataRegionFiltersAction);\nexport const GlobalSettingsReceivedAction = 'GlobalSettingsReceivedAction';\nexport const createGlobalSettingsReceivedAction = actionCreator(GlobalSettingsReceivedAction);\nexport const IsMobileReceivedAction = 'IsMobileReceivedAction';\nexport const createIsMobileReceivedAction = actionCreator(IsMobileReceivedAction);\nexport const DynamicCampaignReceivedAction = 'CampaignReceivedAction';\nexport const createDynamicCampaignReceivedAction = actionCreator(DynamicCampaignReceivedAction);\nexport const CheckoutConfigAction = 'CheckoutConfigAction';\nexport const createCheckoutConfigAction = actionCreator(CheckoutConfigAction);\nexport const SetTenantTypeAction = 'SetTenantTypeAction';\nexport const createSetTenantTypeAction = actionCreator(SetTenantTypeAction);\nexport const UserOrdersAction = 'UserOrdersAction';\nexport const createUserOrdersAction = actionCreator(UserOrdersAction);\nexport const SetUserOrdersLoadingAction = 'SetUserOrdersLoadingAction';\nexport const createSetUserOrdersLoadingAction = actionCreator(SetUserOrdersLoadingAction);\nexport const IsManageModalOpenAction = 'IsManageModalOpenAction';\nexport const createIsManageModalOpenAction = actionCreator(IsManageModalOpenAction);\nexport const SetWCPConsentAction = 'SetWCPConsentAction';\nexport const createSetWCPConsentAction = actionCreator(SetWCPConsentAction);\nexport const SetIsConsentRequired = 'SetIsConsentRequired';\nexport const createSetIsConsentRequiredAction = actionCreator(SetIsConsentRequired);\nexport const LoadFavouriteDataStateAction = 'LoadFavouriteDataStateAction';\nexport const createLoadFavouriteDataStateAction = actionCreator(LoadFavouriteDataStateAction);\nexport const UserPrivateOffersAction = 'UserPrivateOffersAction';\nexport const createUserPrivateOffersAction = actionCreator(UserPrivateOffersAction);\nexport const ToggleShowContextPanel = 'ToggleShowContextPanel';\nexport const createToggleShowContextPanel = actionCreator(ToggleShowContextPanel);\nexport const SetUserPrivateOffersLoadingAction = 'SetPrivateOffersLoadingAction';\nexport const createSetUserPrivateOffersLoadingAction = actionCreator(SetUserPrivateOffersLoadingAction);\nexport const SetAccessTokenAction = 'SetAccessTokenAction';\nexport const createSetAccessTokenAction = actionCreator(SetAccessTokenAction);\nexport const ChangeLocaleLanguage = 'ChangeLocaleLanguage';\nexport const createChangeLocaleLanguage = actionCreator(ChangeLocaleLanguage);\nexport const SetIsDisabledBilling = 'createIsDisabledBilling';\nexport const createSetIsDisabledBilling = actionCreator(SetIsDisabledBilling);\nexport const LoadingRecommenededSizes = 'LoadingRecommenededSizes';\nexport const createLoadingRecommenededSizes = actionCreator(LoadingRecommenededSizes);\nexport const SetRecommenededSizes = 'SetRecommenededSizes';\nexport const createSetRecommenededSizes = actionCreator(SetRecommenededSizes);\n","import { actionCreator } from './../actions/actions';\n// todo: type the any payloads\nexport const SetReceiptAction = 'SetReceiptAction';\nexport const createSetReceiptAction = actionCreator(SetReceiptAction);\nexport const SetBillingAddressAction = 'SetBillingAddressAction';\nexport const createSetBillingAddressAction = actionCreator(SetBillingAddressAction);\nexport const SetCheckoutId = 'SetCheckoutId';\nexport const createSetCheckoutId = actionCreator(SetCheckoutId);\nexport const SetActiveStep = 'SetActiveStep';\nexport const createSetActiveStep = actionCreator(SetActiveStep);\nexport const SetProduct = 'setProduct';\nexport const createProduct = actionCreator(SetProduct);\nexport const SetBillingTerm = 'SetBillingTerm';\nexport const createSetBillingTerm = actionCreator(SetBillingTerm);\nexport const SetTermId = 'SetTermId';\nexport const createSetTermId = actionCreator(SetTermId);\nexport const SetSeatNumber = 'SetSeatNumber';\nexport const createSetSeatNumber = actionCreator(SetSeatNumber);\nexport const SetRecurringBilling = 'SetRecurringBilling';\nexport const createSetRecurringBilling = actionCreator(SetRecurringBilling);\nexport const SetItemInCartAction = 'SetItemInCartAction';\nexport const createSetItemInCartAction = actionCreator(SetItemInCartAction);\nexport const SetCheckoutSource = 'SetCheckoutSource';\nexport const createSetCheckoutSource = actionCreator(SetCheckoutSource);\nexport const UpdateCustomerAction = 'UpdateCustomerAction';\nexport const createUpdateCustomerAction = actionCreator(UpdateCustomerAction);\nexport const SetCustomersAction = 'SetCustomersAction';\nexport const createSetCustomersAction = actionCreator(SetCustomersAction);\nexport const SetActiveCustomerAction = 'SetActiveCustomerAction';\nexport const createSetActiveCustomerAction = actionCreator(SetActiveCustomerAction);\nexport const SetPublisherTokenResponse = 'SetPublisherTokenResponse';\nexport const createSetPublisherTokenResponse = actionCreator(SetPublisherTokenResponse);\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport const ClearCheckoutState = 'ClearCheckoutState';\nexport const createClearCheckoutState = actionCreator(ClearCheckoutState);\nexport const ClearErrorAction = 'ClearErrorAction';\nexport const createClearErrorAction = actionCreator(ClearErrorAction);\nexport const ErrorAction = 'ErrorAction';\nexport const createErrorAction = actionCreator(ErrorAction);\nexport const FetchingProductAction = 'FetchingProductAction';\nexport const createFetchingProductAction = actionCreator(FetchingProductAction);\n","import { actionCreator } from './../actions/actions';\nexport const SetFilterLocationAction = 'SetFilterLocationAction';\nexport const createSetFilterLocationAction = actionCreator(SetFilterLocationAction);\nexport const SetContactDetailsAction = 'SetContactDetailsAction';\nexport const createSetContactDetailsAction = actionCreator(SetContactDetailsAction);\n","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n    try {\n        var info = gen[key](arg);\n        var value = info.value;\n    } catch (error) {\n        reject(error);\n        return;\n    }\n    if (info.done) {\n        resolve(value);\n    } else {\n        Promise.resolve(value).then(_next, _throw);\n    }\n}\nfunction _async_to_generator(fn) {\n    return function() {\n        var self = this, args = arguments;\n        return new Promise(function(resolve, reject) {\n            var gen = fn.apply(self, args);\n            function _next(value) {\n                asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n            }\n            function _throw(err) {\n                asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n            }\n            _next(undefined);\n        });\n    };\n}\nimport { createSetUserPrivateOffersLoadingAction, createUserPrivateOffersAction } from './actions';\nimport * as armRestClient from '@shared/services/http/armRestClient';\nimport { Constants } from '../utils/constants';\nimport { stringifyError } from '@shared/utils/errorUtils';\nimport { telemtry } from './thunkActions';\nexport function ensurePrivateOffer(id, billingRegion, getState) {\n    return _ensurePrivateOffer.apply(this, arguments);\n}\nfunction _ensurePrivateOffer() {\n    _ensurePrivateOffer = _async_to_generator(function*(id, billingRegion, getState) {\n        const { isMSAUser, privateOffers } = getState().users;\n        if (isMSAUser) {\n            return null;\n        }\n        const offer = privateOffers.dataList.find(({ entityId })=>entityId === id);\n        telemtry(Constants.Telemetry.Action.GetPrivateOffer, 'checking for spesific private offer', {\n            id\n        });\n        if ((offer === null || offer === void 0 ? void 0 : offer.pricingInformation.billingRegion) === billingRegion) {\n            return offer;\n        } else {\n            return armRestClient.getUserPrivateApp(id, billingRegion);\n        }\n    });\n    return _ensurePrivateOffer.apply(this, arguments);\n}\nexport function getUserPrivateOffers() {\n    return /*#__PURE__*/ function() {\n        var _ref = _async_to_generator(function*(dispatch, getState) {\n            const { config: { isEmbedded, billingCountryCode: billingRegion }, users: { isMSAUser, signedIn, tid } } = getState();\n            if (!signedIn || isEmbedded || isMSAUser) {\n                dispatch(createSetUserPrivateOffersLoadingAction(false));\n                return null;\n            }\n            const action = Constants.Telemetry.Action.GetPrivateOffers;\n            const start = Date.now();\n            telemtry(action, Constants.Telemetry.ActionModifier.Start, {\n                tid,\n                billingRegion\n            });\n            try {\n                dispatch(createSetUserPrivateOffersLoadingAction(true));\n                const privateOffersResponse = yield armRestClient.getUserPrivateApps(billingRegion);\n                dispatch(createUserPrivateOffersAction({\n                    apps: privateOffersResponse,\n                    billingRegion\n                }));\n                dispatch(createSetUserPrivateOffersLoadingAction(false));\n                telemtry(action, Constants.Telemetry.ActionModifier.End, {\n                    tid,\n                    duration: Date.now() - start\n                });\n                return null;\n            } catch (error) {\n                dispatch(createSetUserPrivateOffersLoadingAction(false));\n                telemtry(action, Constants.Telemetry.ActionModifier.Error, {\n                    tid,\n                    duration: Date.now() - start,\n                    error: stringifyError(error)\n                });\n                return null;\n            }\n        });\n        return function(dispatch, getState) {\n            return _ref.apply(this, arguments);\n        };\n    }();\n}\n","export var BillingAccountType = /*#__PURE__*/ function(BillingAccountType) {\n    BillingAccountType[\"Enterprise\"] = \"Enterprise\";\n    BillingAccountType[\"Individual\"] = \"Individual\";\n    BillingAccountType[\"Partner\"] = \"Partner\";\n    return BillingAccountType;\n}({});\nexport var BillingAgreementType = /*#__PURE__*/ function(BillingAgreementType) {\n    BillingAgreementType[\"MicrosoftCustomerAgreement\"] = \"MicrosoftCustomerAgreement\";\n    BillingAgreementType[\"EnterpriseAgreement\"] = \"EnterpriseAgreement\";\n    BillingAgreementType[\"MicrosoftOnlineServicesProgram\"] = \"MicrosoftOnlineServicesProgram\";\n    BillingAgreementType[\"MicrosoftPartnerAgreement\"] = \"MicrosoftPartnerAgreement\";\n    return BillingAgreementType;\n}({});\nexport var EnrollmentChannelType = /*#__PURE__*/ function(EnrollmentChannelType) {\n    EnrollmentChannelType[\"EaDirect\"] = \"EaDirect\";\n    EnrollmentChannelType[\"EaIndirect\"] = \"EaIndirect\";\n    return EnrollmentChannelType;\n}({});\n","import { Constants } from '@shared/utils/constants';\nimport { DataMap } from '@shared/utils/dataMapping';\nimport deepCopy from 'deepcopy';\nimport { logger } from '@src/logger';\nimport sha256 from 'crypto-js/sha256';\nconst getLeadSourceAndSubSource = (isEmbedded, embedHost)=>{\n    let leadSource = Constants.LeadSource.SPZA;\n    let leadSubSource;\n    if (isEmbedded) {\n        if (embedHost === DataMap.products.Dynamics365forSales.UrlKey) {\n            leadSource = Constants.LeadSource.D365Sales;\n        } else if (embedHost === DataMap.products.Dynamics365forBusinessCentral.UrlKey) {\n            leadSource = Constants.LeadSource.D365BusinessCentral;\n        } else if (embedHost === DataMap.products.AdminPortal.UrlKey) {\n            leadSource = Constants.LeadSource.Office;\n            leadSubSource = Constants.LeadSubSource.Admin;\n        } else if (embedHost === DataMap.products.PowerBI.UrlKey) {\n            leadSource = Constants.LeadSource.PowerBI;\n        }\n    }\n    return {\n        leadSource,\n        leadSubSource\n    };\n};\nexport function createLeadPayload({ entityId, privateApp, ctaType, actionCode, campaigns, customerInfo, notes, uniquePlanId, isEmbedded, embedHost }) {\n    const { leadSource, leadSubSource } = getLeadSourceAndSubSource(isEmbedded, embedHost);\n    const leadPayload = {\n        uniqueProductId: entityId !== null && entityId !== void 0 ? entityId : '',\n        uniquePlanId,\n        callToAction: ctaType ? Constants.ActionStrings[Constants.CTAType[`${ctaType}`]] : undefined,\n        actionCode: actionCode !== null && actionCode !== void 0 ? actionCode : undefined,\n        category: privateApp ? Constants.LeadCategory.Private : Constants.LeadCategory.Public,\n        notes,\n        customerInfo,\n        leadSource,\n        leadSubSource\n    };\n    if (campaigns) {\n        leadPayload.campaigns = campaigns;\n    }\n    return leadPayload;\n}\nfunction generateHashCode(input) {\n    if (!input) {\n        return input;\n    }\n    const hashBytes = sha256(input).toString().toUpperCase();\n    const hashCode = hashBytes.replace('-', '');\n    return hashCode.substring(0, 8);\n}\nfunction scrubPiiField(piiField = '') {\n    return (piiField === null || piiField === void 0 ? void 0 : piiField.length) ? `length: ${piiField.length}, Hash: ${generateHashCode(piiField)}` : piiField;\n}\nfunction scrubPii(user) {\n    Constants.PIIFields.forEach((piiField)=>{\n        if (user[`${piiField}`]) {\n            user[`${piiField}`] = scrubPiiField(user[`${piiField}`]);\n        }\n    });\n}\nexport function scrubLeadPayload(payload) {\n    try {\n        const payloadCopy = deepCopy(payload);\n        if (payloadCopy.customerInfo) {\n            scrubPii(payloadCopy.customerInfo);\n        }\n        payloadCopy.notes = scrubPiiField(payloadCopy.notes);\n        return payloadCopy;\n    } catch (error) {\n        logger.error(`Failed to scrubLeadPayload with error ${error.error.message}`);\n        return {};\n    }\n}\n","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n    try {\n        var info = gen[key](arg);\n        var value = info.value;\n    } catch (error) {\n        reject(error);\n        return;\n    }\n    if (info.done) {\n        resolve(value);\n    } else {\n        Promise.resolve(value).then(_next, _throw);\n    }\n}\nfunction _async_to_generator(fn) {\n    return function() {\n        var self = this, args = arguments;\n        return new Promise(function(resolve, reject) {\n            var gen = fn.apply(self, args);\n            function _next(value) {\n                asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n            }\n            function _throw(err) {\n                asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n            }\n            _next(undefined);\n        });\n    };\n}\nimport * as httpProtocol from '@shared/services/http/httpProtocol';\nimport { Constants } from '@shared/utils/constants';\nimport { getAppConfig } from '@shared/services/init/appConfig';\nimport { logError } from '@shared/utils/httpClientUtil';\nimport { marketplaceLeadsApiVersion } from '@shared/specifics';\nconst marketplaceLeadsTimeoutInMs = 30000;\nexport function sendLead(payload, options) {\n    return _sendLead.apply(this, arguments);\n}\nfunction _sendLead() {\n    _sendLead = _async_to_generator(function*(payload, options) {\n        try {\n            const { requestId } = options || {};\n            const endpoint = `${getAppConfig('marketplaceLeadsHost')}/api/leads`;\n            const httpOptions = {\n                requireCorrelationId: true,\n                stringifyPostData: false,\n                allowOrigin: true,\n                authenticationType: httpProtocol.AuthenticationTypes.MarketplaceLeads,\n                setBearerHeader: true,\n                contentType: 'application/json',\n                requestId,\n                timeout: marketplaceLeadsTimeoutInMs\n            };\n            const post = httpProtocol.post(endpoint, httpOptions);\n            return post.addQueryEntry(Constants.QueryStrings.apiVersion, marketplaceLeadsApiVersion).setData(payload).request();\n        } catch (error) {\n            logError('sendLead', error);\n            throw error;\n        }\n    });\n    return _sendLead.apply(this, arguments);\n}\n","import * as httpProtocol from './httpProtocol';\nimport { logError } from '@shared/utils/httpClientUtil';\nimport { getAppConfig } from '@shared/services/init/appConfig';\nimport { Constants } from '@shared/utils/constants';\nconst option = {\n    requireCorrelationId: true,\n    stringifyPostData: false,\n    authenticationType: httpProtocol.AuthenticationTypes.Spza\n};\nexport function post(authMethod, authKey, review) {\n    const endpoint = '/api/userreview';\n    if (authMethod === 'accessKey') {\n        option.authenticationType = httpProtocol.AuthenticationTypes.Unauthenticated;\n    } else {\n        option.authenticationType = httpProtocol.AuthenticationTypes.Spza;\n    }\n    const post = httpProtocol.post(endpoint, option);\n    if (option.authenticationType === httpProtocol.AuthenticationTypes.Unauthenticated) {\n        post.setHeader(authMethod, authKey);\n    }\n    return post.setData(review).request().catch((error)=>{\n        logError('reviewRestClient.post', error);\n        return Promise.reject(error);\n    });\n}\nexport function get(authMethod, authKey, appId) {\n    if (!appId || appId === '*') {\n        appId = '';\n    }\n    const endpoint = '/api/userreview/' + appId;\n    if (authMethod === 'accessKey') {\n        option.authenticationType = httpProtocol.AuthenticationTypes.Unauthenticated;\n    } else {\n        option.authenticationType = httpProtocol.AuthenticationTypes.Spza;\n    }\n    const get = httpProtocol.get(endpoint, option);\n    if (option.authenticationType === httpProtocol.AuthenticationTypes.Unauthenticated) {\n        get.setHeader(authMethod, authKey);\n    }\n    return get.request().catch((error)=>{\n        logError('reviewRestClient.get', error);\n        return Promise.reject(error);\n    });\n}\nexport function del(authMethod, authKey, appId, review) {\n    const endpoint = '/api/userreview/' + appId;\n    if (!appId) {\n        logError('reviewRestClient.del', 'missing appId');\n        return null;\n    }\n    if (authMethod === 'accessKey') {\n        option.authenticationType = httpProtocol.AuthenticationTypes.Unauthenticated;\n    } else {\n        option.authenticationType = httpProtocol.AuthenticationTypes.Spza;\n    }\n    const del = httpProtocol.del(endpoint, option);\n    del.option.parseResult = false;\n    if (option.authenticationType === httpProtocol.AuthenticationTypes.Unauthenticated) {\n        del.setHeader(authMethod, authKey);\n    }\n    return del.setData(review).request().catch((error)=>{\n        logError('reviewRestClient.del', error);\n        return Promise.reject(error);\n    });\n}\nexport function getPurchaseStatus(appId) {\n    if (!appId) {\n        return Promise.reject(new Error('AppId is required. Operation: reviewRestClient.getPurchaseStatus'));\n    }\n    const endpoint = '/view/app/' + appId + '/purchase';\n    option.authenticationType = httpProtocol.AuthenticationTypes.Spza;\n    const get = httpProtocol.get(endpoint, option);\n    get.addQueryEntry(Constants.QueryStrings.ApplicationId, appId);\n    return get.addQueryEntry(Constants.QueryStrings.version, getAppConfig(Constants.apiVersion)).request().catch((error)=>{\n        logError('reviewRestClient.getPurchaseStatus', error);\n        return Promise.resolve(false);\n    });\n}\n","import * as httpProtocol from './httpProtocol';\nimport { logError } from '../../utils/httpClientUtil';\nimport { getAppConfig } from '../../services/init/appConfig';\nconst option = {\n    requireCorrelationId: true,\n    stringifyPostData: false,\n    parseResult: false,\n    authenticationType: httpProtocol.AuthenticationTypes.Graph\n};\nexport function generateReportEmbedToken(reportData) {\n    const endpoint = '/view/generateReportEmbedToken';\n    const post = httpProtocol.post(endpoint, option);\n    const body = {\n        groupId: reportData.groupId,\n        reportId: reportData.reportId,\n        datasetId: reportData.datasetId\n    };\n    return post.addQueryEntry('version', getAppConfig('apiVersion')).setData(body).request().catch((error)=>{\n        logError('generateReportEmbedToken', error);\n        return Promise.resolve(null);\n    });\n}\n","import * as httpProtocol from './httpProtocol';\nimport { logError } from '../../utils/httpClientUtil';\nimport { getAppConfig } from '../../services/init/appConfig';\nconst option = {\n    requireCorrelationId: true,\n    stringifyPostData: false,\n    authenticationType: httpProtocol.AuthenticationTypes.Unauthenticated,\n    contentType: 'text/html'\n};\nexport function getDynamicCampaign(request) {\n    const campaignId = request.params.id;\n    const publisher = request.params.publisher;\n    const isPreview = request.query.preview === 'true';\n    const endpoint = `/view/campaigns/${publisher}/${campaignId}`;\n    const get = httpProtocol.get(endpoint, option);\n    if (isPreview) get.addQueryEntry('preview', request.query.preview);\n    return get.addQueryEntry('version', getAppConfig('apiVersion')).request().catch((error)=>{\n        logError('getDynamicCampaign', error);\n        return Promise.reject(error);\n    });\n}\n","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n    try {\n        var info = gen[key](arg);\n        var value = info.value;\n    } catch (error) {\n        reject(error);\n        return;\n    }\n    if (info.done) {\n        resolve(value);\n    } else {\n        Promise.resolve(value).then(_next, _throw);\n    }\n}\nfunction _async_to_generator(fn) {\n    return function() {\n        var self = this, args = arguments;\n        return new Promise(function(resolve, reject) {\n            var gen = fn.apply(self, args);\n            function _next(value) {\n                asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n            }\n            function _throw(err) {\n                asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n            }\n            _next(undefined);\n        });\n    };\n}\nimport * as httpProtocol from './httpProtocol';\nimport { logError } from '@shared/utils/httpClientUtil';\nimport { getAppConfig } from '@shared/services/init/appConfig';\nconst option = {\n    requireCorrelationId: true,\n    authenticationType: httpProtocol.AuthenticationTypes.Spza,\n    retry: 3\n};\n/**\n * Returns customer object with address and other customer information.\n *\n * @export\n * @returns {Promise<ICustomer[]>}\n */ export function getCustomers() {\n    return _getCustomers.apply(this, arguments);\n}\nfunction _getCustomers() {\n    _getCustomers = _async_to_generator(function*() {\n        const endpoint = '/view/customers';\n        return httpProtocol.get(endpoint, option).request().catch((error)=>{\n            logError('purchaseRestClient.getCustomersMPAPI', error);\n            return Promise.reject(error);\n        });\n    });\n    return _getCustomers.apply(this, arguments);\n}\n/**\n * Creates a new object with the data that's passed in.\n *\n * @export\n * @param {ICustomer} customerRequest\n * @returns\n */ export function createCustomer(customer) {\n    const endpoint = '/view/customer';\n    const post = httpProtocol.post(endpoint, option);\n    return post.setData(customer).request().catch((error)=>{\n        logError('purchaseRestClient.createCustomer', error);\n        return Promise.reject(error);\n    });\n}\n/**\n * Updates the customer address with the data that's passed in.\n *\n * @export\n * @param {ICustomer} customerRequest\n * @returns\n */ export function updateCustomer(address) {\n    const endpoint = '/view/address';\n    const post = httpProtocol.post(endpoint, option);\n    return post.addQueryEntry('version', getAppConfig('apiVersion')).setData(address).request().catch((error)=>{\n        logError('purchaseRestClient.updateCustomer', error);\n        return Promise.reject(error);\n    });\n}\n/**\n * Gets publisher offer details for the subscription\n *\n * @export\n * @param {subscriptionId} request\n * @returns\n */ export function getPublisherOfferInfo(subscriptionId) {\n    const endpoint = '/view/publisherOfferInfo';\n    const post = httpProtocol.post(endpoint, option);\n    return post.addQueryEntry('version', getAppConfig('apiVersion')).setData({\n        subscriptionId: subscriptionId\n    }).request().catch((error)=>{\n        logError('purchaseRestClient.publisherOfferInfo', error);\n        return Promise.reject(error);\n    });\n}\n","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n    try {\n        var info = gen[key](arg);\n        var value = info.value;\n    } catch (error) {\n        reject(error);\n        return;\n    }\n    if (info.done) {\n        resolve(value);\n    } else {\n        Promise.resolve(value).then(_next, _throw);\n    }\n}\nfunction _async_to_generator(fn) {\n    return function() {\n        var self = this, args = arguments;\n        return new Promise(function(resolve, reject) {\n            var gen = fn.apply(self, args);\n            function _next(value) {\n                asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n            }\n            function _throw(err) {\n                asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n            }\n            _next(undefined);\n        });\n    };\n}\nimport { AuthenticationTypes } from '@shared/services/http/httpProtocol';\nimport { Constants } from '@shared/utils/constants';\nimport { logger } from '@src/logger';\nimport { logError } from '@shared/utils/httpClientUtil';\nimport * as httpProtocol from './httpProtocol';\nconst commerceHttpOptions = {\n    requireCorrelationId: true,\n    stringifyPostData: false,\n    allowOrigin: true,\n    authenticationType: AuthenticationTypes.CommerceApi,\n    setBearerHeader: true,\n    returnRawResponse: true\n};\n/**\n * PreWarm an account\n * @param Object containing named parameters for the call\n * @returns Promise with the response, containing a list of comments for the given review\n */ export function preWarmAccount(_) {\n    return _preWarmAccount.apply(this, arguments);\n}\nfunction _preWarmAccount() {\n    _preWarmAccount = _async_to_generator(function*({ addTestHeader, commerceApiHost }) {\n        try {\n            const endpoint = `${commerceApiHost}/v1/my-org/purchaseService.PreloadData`;\n            const post = httpProtocol.post(endpoint, commerceHttpOptions);\n            const headers = addTestHeader ? {\n                'x-ms-test': 'test'\n            } : {};\n            post.addHeader(headers);\n            return yield post.request();\n        } catch (error) {\n            logError('preWarmingCommerceAPIAJAX', error);\n            logger.error('preWarmingCommerceAPIAJAX', {\n                action: Constants.Telemetry.Action.PreWarmAJAX,\n                actionModifier: Constants.Telemetry.ActionModifier.Error,\n                error\n            });\n            return Promise.resolve(error);\n        }\n    });\n    return _preWarmAccount.apply(this, arguments);\n}\n","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n    try {\n        var info = gen[key](arg);\n        var value = info.value;\n    } catch (error) {\n        reject(error);\n        return;\n    }\n    if (info.done) {\n        resolve(value);\n    } else {\n        Promise.resolve(value).then(_next, _throw);\n    }\n}\nfunction _async_to_generator(fn) {\n    return function() {\n        var self = this, args = arguments;\n        return new Promise(function(resolve, reject) {\n            var gen = fn.apply(self, args);\n            function _next(value) {\n                asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n            }\n            function _throw(err) {\n                asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n            }\n            _next(undefined);\n        });\n    };\n}\nimport { Constants } from '@shared/utils/constants';\nimport { get, post, patch, del, AuthenticationTypes } from '@shared/services/http/httpProtocol';\nimport { mapEnrichReviewCommentToIAppReviewComment } from '@shared/utils/reviewsUtils';\nconst commonHttpOptions = {\n    requireCorrelationId: true,\n    stringifyPostData: false,\n    authenticationType: AuthenticationTypes.Spza,\n    setBearerHeader: true\n};\nexport const ReviewCommentsQueryStrings = {\n    OfferId: 'offerId',\n    ApiVersion: 'api-version',\n    PageNumber: 'PageNum',\n    PageSize: 'PageSize',\n    Sorting: 'Sorting'\n};\n/**\n * Creates a review comment\n * @param Object containing named parameters for the call\n * @returns Promise with the response, both for success and failure. in case of success, will contain the created comment\n */ export function createReviewComment(_) {\n    return _createReviewComment.apply(this, arguments);\n}\nfunction _createReviewComment() {\n    _createReviewComment = _async_to_generator(function*({ commentContent, offerId, reviewId, reviewsAPI, reviewsAPIVersion, source }) {\n        try {\n            const reviewComment = yield post(`${reviewsAPI}/${reviewId}/comments/`, commonHttpOptions).addQueryEntry(ReviewCommentsQueryStrings.ApiVersion, reviewsAPIVersion).addQueryEntry(ReviewCommentsQueryStrings.OfferId, offerId).setData({\n                content: commentContent.trim(),\n                source\n            }).request();\n            return {\n                reviewComment: mapEnrichReviewCommentToIAppReviewComment(reviewComment)\n            };\n        } catch (error) {\n            var _error_response;\n            return {\n                error: ((_error_response = error.response) === null || _error_response === void 0 ? void 0 : _error_response.text) || error\n            };\n        }\n    });\n    return _createReviewComment.apply(this, arguments);\n}\n/**\n * Get a review's comment list\n * @param Object containing named parameters for the call\n * @returns Promise with the response, containing a list of comments for the given review\n */ export function getAppReviewComments(_) {\n    return _getAppReviewComments.apply(this, arguments);\n}\nfunction _getAppReviewComments() {\n    _getAppReviewComments = _async_to_generator(function*({ offerId, reviewId, page, itemsPerPage = Constants.Reviews.CommentsPerPage, reviewsAPI, reviewsAPIVersion }) {\n        try {\n            const { comments, pagination_info: paginationInfo, total_comments: totalComments } = yield get(`${reviewsAPI}/${reviewId}/comments/`, commonHttpOptions).addQueryEntry(ReviewCommentsQueryStrings.ApiVersion, reviewsAPIVersion).addQueryEntry(ReviewCommentsQueryStrings.OfferId, offerId).addQueryEntry(ReviewCommentsQueryStrings.PageNumber, page.toString()).addQueryEntry(ReviewCommentsQueryStrings.PageSize, itemsPerPage.toString()).addQueryEntry(ReviewCommentsQueryStrings.Sorting, 'asc').request();\n            return {\n                comments: comments.map((c)=>mapEnrichReviewCommentToIAppReviewComment(c)),\n                paginationInfo: {\n                    pageNumber: paginationInfo.page_number,\n                    pageSize: paginationInfo.page_size\n                },\n                totalComments\n            };\n        } catch (error) {\n            return {\n                error,\n                comments: [],\n                totalComments: 0,\n                paginationInfo: {\n                    pageNumber: 0,\n                    pageSize: 0\n                }\n            };\n        }\n    });\n    return _getAppReviewComments.apply(this, arguments);\n}\n/**\n * Updates a review comment's content\n * @param Object containing named parameters for the call\n * @returns Promise with the response, both for success and failure. in case of success, will contain the modified comment\n */ export function updateReviewComment(_) {\n    return _updateReviewComment.apply(this, arguments);\n}\nfunction _updateReviewComment() {\n    _updateReviewComment = _async_to_generator(function*({ commentId, commentContent, offerId, reviewId, reviewsAPI, reviewsAPIVersion }) {\n        try {\n            const reviewComment = yield patch(`${reviewsAPI}/${reviewId}/comments/${commentId}`, commonHttpOptions).addQueryEntry(ReviewCommentsQueryStrings.ApiVersion, reviewsAPIVersion).addQueryEntry(ReviewCommentsQueryStrings.OfferId, offerId).setData({\n                content: commentContent.trim()\n            }).request();\n            return {\n                reviewComment: mapEnrichReviewCommentToIAppReviewComment(reviewComment)\n            };\n        } catch (error) {\n            return {\n                error\n            };\n        }\n    });\n    return _updateReviewComment.apply(this, arguments);\n}\n/**\n * Deletes a review comment (this is a soft deletion, meaning that the comment will still be in the database and will show in the list as deleted)\n * @param Object containing named parameters for the call\n * @returns Promise with the response, both for success and failure. in case of success, will contain the comment after the deletion\n */ export function deleteReviewComment(_) {\n    return _deleteReviewComment.apply(this, arguments);\n}\nfunction _deleteReviewComment() {\n    _deleteReviewComment = _async_to_generator(function*({ commentId, offerId, reviewId, reviewsAPI, reviewsAPIVersion }) {\n        try {\n            const reviewComment = yield del(`${reviewsAPI}/${reviewId}/comments/${commentId}`, commonHttpOptions).addQueryEntry(ReviewCommentsQueryStrings.ApiVersion, reviewsAPIVersion).addQueryEntry(ReviewCommentsQueryStrings.OfferId, offerId).request();\n            return {\n                reviewComment: mapEnrichReviewCommentToIAppReviewComment(reviewComment)\n            };\n        } catch (error) {\n            return {\n                error\n            };\n        }\n    });\n    return _deleteReviewComment.apply(this, arguments);\n}\n","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n    try {\n        var info = gen[key](arg);\n        var value = info.value;\n    } catch (error) {\n        reject(error);\n        return;\n    }\n    if (info.done) {\n        resolve(value);\n    } else {\n        Promise.resolve(value).then(_next, _throw);\n    }\n}\nfunction _async_to_generator(fn) {\n    return function() {\n        var self = this, args = arguments;\n        return new Promise(function(resolve, reject) {\n            var gen = fn.apply(self, args);\n            function _next(value) {\n                asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n            }\n            function _throw(err) {\n                asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n            }\n            _next(undefined);\n        });\n    };\n}\nimport { get, post, AuthenticationTypes } from '@shared/services/http/httpProtocol';\nconst commonHttpOptions = {\n    requireCorrelationId: true,\n    stringifyPostData: false,\n    authenticationType: AuthenticationTypes.Spza,\n    setBearerHeader: true\n};\nexport const ReviewCommentsQueryStrings = {\n    OfferId: 'offerId',\n    ApiVersion: 'api-version'\n};\n/**\n * Toggles marked as helpful for a given review\n * @param Object containing named parameters for the call\n * @returns Promise with the response, both for success and failure\n */ export function setReviewMarkedAsHelpful(_) {\n    return _setReviewMarkedAsHelpful.apply(this, arguments);\n}\nfunction _setReviewMarkedAsHelpful() {\n    _setReviewMarkedAsHelpful = _async_to_generator(function*({ offerId, reviewId, reviewsAPI, reviewsAPIVersion, isHelpful, source }) {\n        try {\n            const result = yield post(`${reviewsAPI}/${reviewId}/helpful`, commonHttpOptions).addQueryEntry(ReviewCommentsQueryStrings.ApiVersion, reviewsAPIVersion).addQueryEntry(ReviewCommentsQueryStrings.OfferId, offerId).setData({\n                is_helpful: isHelpful,\n                source\n            }).request();\n            return {\n                result\n            };\n        } catch (error) {\n            var _error_response;\n            return {\n                error: ((_error_response = error.response) === null || _error_response === void 0 ? void 0 : _error_response.text) || error\n            };\n        }\n    });\n    return _setReviewMarkedAsHelpful.apply(this, arguments);\n}\n/**\n * Get a list of review ids which the current user marked as helpful for a given offer\n * @param Object containing named parameters for the call\n * @returns Promise with the response, containing a list of comments for the given review\n */ export function getUserReviewsMarkedAsHelpful(_) {\n    return _getUserReviewsMarkedAsHelpful.apply(this, arguments);\n}\nfunction _getUserReviewsMarkedAsHelpful() {\n    _getUserReviewsMarkedAsHelpful = _async_to_generator(function*({ offerId, reviewsAPI, reviewsAPIVersion }) {\n        try {\n            const reviewIds = yield get(`${reviewsAPI}/helpful`, commonHttpOptions).addQueryEntry(ReviewCommentsQueryStrings.ApiVersion, reviewsAPIVersion).addQueryEntry(ReviewCommentsQueryStrings.OfferId, offerId).request();\n            return {\n                reviewIds\n            };\n        } catch (error) {\n            return {\n                error,\n                reviewIds: []\n            };\n        }\n    });\n    return _getUserReviewsMarkedAsHelpful.apply(this, arguments);\n}\n","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n    try {\n        var info = gen[key](arg);\n        var value = info.value;\n    } catch (error) {\n        reject(error);\n        return;\n    }\n    if (info.done) {\n        resolve(value);\n    } else {\n        Promise.resolve(value).then(_next, _throw);\n    }\n}\nfunction _async_to_generator(fn) {\n    return function() {\n        var self = this, args = arguments;\n        return new Promise(function(resolve, reject) {\n            var gen = fn.apply(self, args);\n            function _next(value) {\n                asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n            }\n            function _throw(err) {\n                asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n            }\n            _next(undefined);\n        });\n    };\n}\nimport { Constants } from '@shared/utils/constants';\nimport { get, AuthenticationTypes } from '@shared/services/http/httpProtocol';\nconst commonHttpOptions = {\n    requireCorrelationId: true,\n    stringifyPostData: false,\n    authenticationType: AuthenticationTypes.Spza,\n    setBearerHeader: true,\n    timeout: 120000\n};\nexport const ReviewsQueryStrings = {\n    OfferId: 'offer_id',\n    ApiVersion: 'api-version',\n    Source: 'source',\n    UserId: 'user_id',\n    From: 'from'\n};\nexport function getReviewsByOfferId({ offerId, reviewsAPI, reviewsAPIVersion, correlationId, requestId, userId }) {\n    const req = get(`${reviewsAPI}`, commonHttpOptions);\n    if (userId) {\n        req.addQueryEntry(ReviewsQueryStrings.UserId, userId);\n    }\n    return req.addQueryEntry(ReviewsQueryStrings.ApiVersion, reviewsAPIVersion).addQueryEntry(ReviewsQueryStrings.OfferId, offerId).setHeader(Constants.Headers.RequestId, requestId).setHeader(Constants.Headers.CorrelationId, correlationId).request();\n}\nexport function getUserReviewByOfferId({ token, offerId, source, correlationId, requestId, reviewsAPI, reviewsAPIVersion }) {\n    const req = get(`${reviewsAPI}/private/user`, commonHttpOptions);\n    req.setQuery({\n        source\n    });\n    return req.addQueryEntry(ReviewsQueryStrings.ApiVersion, reviewsAPIVersion).addQueryEntry(ReviewsQueryStrings.OfferId, offerId).setHeader(Constants.Headers.RequestId, requestId).setHeader(Constants.Headers.CorrelationId, correlationId).setAuthHeader(token).request();\n}\nexport function getReviewsMetadata(_) {\n    return _getReviewsMetadata.apply(this, arguments);\n}\nfunction _getReviewsMetadata() {\n    _getReviewsMetadata = _async_to_generator(function*({ reviewsAPI, reviewsAPIVersion, legacyId }) {\n        return yield get(`${reviewsAPI}/private/metadata`, commonHttpOptions).addQueryEntry(ReviewsQueryStrings.ApiVersion, reviewsAPIVersion).addQueryEntry(ReviewsQueryStrings.OfferId, legacyId).request();\n    });\n    return _getReviewsMetadata.apply(this, arguments);\n}\n/**\n * @deprecated - This API is deprecated and should not be used, this is currently in use in order to retain legacy behaviour.\n */ export function getAllReviewsByTimestamp(_) {\n    return _getAllReviewsByTimestamp.apply(this, arguments);\n}\nfunction _getAllReviewsByTimestamp() {\n    _getAllReviewsByTimestamp = _async_to_generator(function*({ reviewsAPI, reviewsAPIVersion, timestamp, correlationId, requestId, source }) {\n        return get(`${reviewsAPI}/deprecated`, commonHttpOptions).setQuery({\n            source\n        }).setHeader(Constants.Headers.RequestId, requestId).setHeader(Constants.Headers.CorrelationId, correlationId).addQueryEntry(ReviewsQueryStrings.ApiVersion, reviewsAPIVersion).addQueryEntry(ReviewsQueryStrings.From, new Date(timestamp * 1000).toJSON()).request();\n    });\n    return _getAllReviewsByTimestamp.apply(this, arguments);\n}\n","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n    try {\n        var info = gen[key](arg);\n        var value = info.value;\n    } catch (error) {\n        reject(error);\n        return;\n    }\n    if (info.done) {\n        resolve(value);\n    } else {\n        Promise.resolve(value).then(_next, _throw);\n    }\n}\nfunction _async_to_generator(fn) {\n    return function() {\n        var self = this, args = arguments;\n        return new Promise(function(resolve, reject) {\n            var gen = fn.apply(self, args);\n            function _next(value) {\n                asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n            }\n            function _throw(err) {\n                asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n            }\n            _next(undefined);\n        });\n    };\n}\nimport { get, AuthenticationTypes } from '@shared/services/http/httpProtocol';\nconst commonHttpOptions = {\n    requireCorrelationId: true,\n    stringifyPostData: false,\n    authenticationType: AuthenticationTypes.Spza,\n    setBearerHeader: true\n};\nexport const LinkedInQueryStrings = {\n    LegacyOfferId: 'offer_id',\n    ApiVersion: 'api-version'\n};\n/**\n * Get Linkedin product group information.\n * @param legacyOfferId legacy offer identifier.\n * @param linkedInAPI Linkedin API route.\n * @param legacyOfferId Linkedin API version.\n * @returns Promise with the response, containing Linkedin product group information or null if information doesn't exist.\n */ export function getLinkedInProductgroupInfo(_) {\n    return _getLinkedInProductgroupInfo.apply(this, arguments);\n}\nfunction _getLinkedInProductgroupInfo() {\n    _getLinkedInProductgroupInfo = _async_to_generator(function*({ legacyOfferId, linkedinAPI, linkedinAPIVersion }) {\n        const linkedInProductGroup = yield get(`${linkedinAPI}/product_groups`, commonHttpOptions).addQueryEntry(LinkedInQueryStrings.ApiVersion, linkedinAPIVersion).addQueryEntry(LinkedInQueryStrings.LegacyOfferId, legacyOfferId).request();\n        return {\n            linkedInProductGroup\n        };\n    });\n    return _getLinkedInProductgroupInfo.apply(this, arguments);\n}\n","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n    try {\n        var info = gen[key](arg);\n        var value = info.value;\n    } catch (error) {\n        reject(error);\n        return;\n    }\n    if (info.done) {\n        resolve(value);\n    } else {\n        Promise.resolve(value).then(_next, _throw);\n    }\n}\nfunction _async_to_generator(fn) {\n    return function() {\n        var self = this, args = arguments;\n        return new Promise(function(resolve, reject) {\n            var gen = fn.apply(self, args);\n            function _next(value) {\n                asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n            }\n            function _throw(err) {\n                asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n            }\n            _next(undefined);\n        });\n    };\n}\nimport { post, AuthenticationTypes } from '@shared/services/http/httpProtocol';\nconst commonHttpOptions = {\n    requireCorrelationId: true,\n    stringifyPostData: false,\n    authenticationType: AuthenticationTypes.Spza,\n    setBearerHeader: true\n};\nexport const ReportReviewQueryStrings = {\n    ApiVersion: 'api-version'\n};\nexport function createReportReview(_) {\n    return _createReportReview.apply(this, arguments);\n}\nfunction _createReportReview() {\n    _createReportReview = _async_to_generator(function*({ itemReport, communityAPI, communityAPIVersion }) {\n        try {\n            yield post(`${communityAPI}/report`, commonHttpOptions).addQueryEntry(ReportReviewQueryStrings.ApiVersion, communityAPIVersion).setData(itemReport).request();\n            return true;\n        } catch (error) {\n            return false;\n        }\n    });\n    return _createReportReview.apply(this, arguments);\n}\n","import * as httpProtocol from './httpProtocol';\nimport { getAppConfig } from '@shared/services/init/appConfig';\nimport { logError } from '@shared/utils/httpClientUtil';\nimport { Constants } from '@shared/utils/constants';\nconst option = {\n    clientType: 'webBrowser',\n    requireCorrelationId: true,\n    stringifyPostData: false,\n    allowOrigin: true,\n    authenticationType: httpProtocol.AuthenticationTypes.Graph,\n    contentType: 'image/jpeg',\n    responseType: 'blob',\n    returnRawResponse: true\n};\n/**\n * Checks if user is billing admin or global admin\n * Returns an array of RoleDefinitions user is a member of\n */ export function checkAdminMemberShips() {\n    const membershipOptions = {\n        clientType: 'webBrowser',\n        requireCorrelationId: true,\n        stringifyPostData: true,\n        allowOrigin: true,\n        authenticationType: httpProtocol.AuthenticationTypes.Graph,\n        contentType: 'application/json',\n        returnRawResponse: false\n    };\n    const endpoint = getAppConfig('graphApi') + `/v1.0/me/checkMemberObjects`;\n    const body = {\n        ids: Constants.RoleDefinitions.rolesToCheck\n    };\n    const post = httpProtocol.post(endpoint, membershipOptions);\n    return post.setData(JSON.stringify(body)).request().then((result)=>result.value).catch((error)=>{\n        logError('graphRestClient.get', error);\n        return [];\n    });\n}\n","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n    try {\n        var info = gen[key](arg);\n        var value = info.value;\n    } catch (error) {\n        reject(error);\n        return;\n    }\n    if (info.done) {\n        resolve(value);\n    } else {\n        Promise.resolve(value).then(_next, _throw);\n    }\n}\nfunction _async_to_generator(fn) {\n    return function() {\n        var self = this, args = arguments;\n        return new Promise(function(resolve, reject) {\n            var gen = fn.apply(self, args);\n            function _next(value) {\n                asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n            }\n            function _throw(err) {\n                asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n            }\n            _next(undefined);\n        });\n    };\n}\nimport { get, AuthenticationTypes } from '@shared/services/http/httpProtocol';\nimport { logError } from '@shared/utils/httpClientUtil';\nconst commonHttpOptions = {\n    requireCorrelationId: true,\n    stringifyPostData: false,\n    authenticationType: AuthenticationTypes.Unauthenticated,\n    setBearerHeader: false\n};\nexport const AppReviewsQueryStrings = {\n    OfferId: 'offer_Id',\n    ApiVersion: 'api-version',\n    Source: 'source',\n    FilterEmptyTitles: 'filter_empty_titles'\n};\n/*\n * Gets reviews for a given offer Id\n * @param Object containing named parameters for the call\n * @returns Promise with the response, containing the reviews for the offer\n */ export function getAppReviews(_) {\n    return _getAppReviews.apply(this, arguments);\n}\nfunction _getAppReviews() {\n    _getAppReviews = _async_to_generator(function*({ entityId, reviewsAPI, reviewsAPIVersion }) {\n        try {\n            if (!entityId) {\n                logError('reviewAppReviewsRestClient.getAppReviews - AppId is empty');\n                return Promise.reject(new Error('AppId is required'));\n            }\n            return yield get(`${reviewsAPI}`, commonHttpOptions).addQueryEntry(AppReviewsQueryStrings.ApiVersion, reviewsAPIVersion).addQueryEntry(AppReviewsQueryStrings.OfferId, entityId).addQueryEntry(AppReviewsQueryStrings.FilterEmptyTitles, 'true').request();\n        } catch (error) {\n            logError('reviewAppReviewsRestClient.getAppReviews', error);\n            return Promise.reject(error);\n        }\n    });\n    return _getAppReviews.apply(this, arguments);\n}\n","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n    try {\n        var info = gen[key](arg);\n        var value = info.value;\n    } catch (error) {\n        reject(error);\n        return;\n    }\n    if (info.done) {\n        resolve(value);\n    } else {\n        Promise.resolve(value).then(_next, _throw);\n    }\n}\nfunction _async_to_generator(fn) {\n    return function() {\n        var self = this, args = arguments;\n        return new Promise(function(resolve, reject) {\n            var gen = fn.apply(self, args);\n            function _next(value) {\n                asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n            }\n            function _throw(err) {\n                asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n            }\n            _next(undefined);\n        });\n    };\n}\nimport * as httpProtocol from '@shared/services/http/httpProtocol';\nimport { logError } from '@shared/utils/httpClientUtil';\nconst commonHttpOptions = {\n    requireCorrelationId: true,\n    stringifyPostData: false,\n    authenticationType: httpProtocol.AuthenticationTypes.Spza,\n    setBearerHeader: true\n};\nexport const UserReviewQueryStrings = {\n    OfferId: 'offer_id',\n    ApiVersion: 'api-version',\n    Source: 'source',\n    ReviewId: 'review_id'\n};\nexport function get(_) {\n    return _get.apply(this, arguments);\n}\nfunction _get() {\n    _get = _async_to_generator(function*({ offerId, reviewsAPI, reviewsAPIVersion, source }) {\n        try {\n            return yield httpProtocol.get(`${reviewsAPI}/private/user`, commonHttpOptions).addQueryEntry(UserReviewQueryStrings.OfferId, offerId).addQueryEntry(UserReviewQueryStrings.Source, source).addQueryEntry(UserReviewQueryStrings.ApiVersion, reviewsAPIVersion).request();\n        } catch (e) {\n            logError('userReviewRestClient.getUserReview', e);\n            throw e;\n        }\n    });\n    return _get.apply(this, arguments);\n}\nexport function submit({ reviewsAPI, reviewsAPIVersion, content, isAnonymous, rating, reviewId, sendEmailConsent, title, source, offerId }) {\n    try {\n        return httpProtocol.post(`${reviewsAPI}/private`, commonHttpOptions).addQueryEntry(UserReviewQueryStrings.ApiVersion, reviewsAPIVersion).setData({\n            content: content,\n            is_anonymous: isAnonymous,\n            rating,\n            id: reviewId,\n            title,\n            send_email_consent: sendEmailConsent,\n            source,\n            offer_id: offerId,\n            offer_type: 'Application'\n        }).request();\n    } catch (e) {\n        logError('userReviewRestClient.updateReview', e);\n        throw e;\n    }\n}\nexport function update(_) {\n    return _update.apply(this, arguments);\n}\nfunction _update() {\n    _update = _async_to_generator(function*({ reviewsAPI, reviewsAPIVersion, content, isAnonymous, rating, reviewId, sendEmailConsent, title }) {\n        try {\n            return yield httpProtocol.patch(`${reviewsAPI}/private/update`, commonHttpOptions).addQueryEntry(UserReviewQueryStrings.ApiVersion, reviewsAPIVersion).setData({\n                content: content,\n                is_anonymous: isAnonymous,\n                rating,\n                id: reviewId,\n                title,\n                send_email_consent: sendEmailConsent\n            }).request();\n        } catch (e) {\n            logError('userReviewRestClient.updateReview', e);\n            throw e;\n        }\n    });\n    return _update.apply(this, arguments);\n}\nexport function remove(_) {\n    return _remove.apply(this, arguments);\n}\nfunction _remove() {\n    _remove = _async_to_generator(function*({ reviewsAPI, reviewsAPIVersion, reviewId }) {\n        try {\n            return yield httpProtocol.del(`${reviewsAPI}/private/delete_my_review`, commonHttpOptions).addQueryEntry(UserReviewQueryStrings.ApiVersion, reviewsAPIVersion).addQueryEntry(UserReviewQueryStrings.ReviewId, reviewId).request();\n        } catch (e) {\n            logError('userReviewRestClient.updateReview', e);\n            throw e;\n        }\n    });\n    return _remove.apply(this, arguments);\n}\n","import * as httpProtocol from './httpProtocol';\nimport { logError } from '../../utils/httpClientUtil';\nimport { getAppConfig } from '../../services/init/appConfig';\nconst option = {\n    requireCorrelationId: true,\n    stringifyPostData: false,\n    authenticationType: httpProtocol.AuthenticationTypes.Spza\n};\nexport function getUserAuthStatus() {\n    const isEmbed = getAppConfig('embedded');\n    if (!isEmbed) {\n        const endpoint = '/view/signinStatus';\n        const get = httpProtocol.get(endpoint, option);\n        return get.addQueryEntry('version', getAppConfig('apiVersion')).request().then((result)=>{\n            return result;\n        }).catch((error)=>{\n            logError('getSigninStatus', error);\n            return Promise.resolve(null);\n        });\n    }\n}\n","function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nfunction _object_spread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        var ownKeys = Object.keys(source);\n        if (typeof Object.getOwnPropertySymbols === \"function\") {\n            ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n            }));\n        }\n        ownKeys.forEach(function(key) {\n            _define_property(target, key, source[key]);\n        });\n    }\n    return target;\n}\nfunction ownKeys(object, enumerableOnly) {\n    var keys = Object.keys(object);\n    if (Object.getOwnPropertySymbols) {\n        var symbols = Object.getOwnPropertySymbols(object);\n        if (enumerableOnly) {\n            symbols = symbols.filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n            });\n        }\n        keys.push.apply(keys, symbols);\n    }\n    return keys;\n}\nfunction _object_spread_props(target, source) {\n    source = source != null ? source : {};\n    if (Object.getOwnPropertyDescriptors) {\n        Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n        ownKeys(Object(source)).forEach(function(key) {\n            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n    }\n    return target;\n}\nimport { PricingAudience, IAvailabilityActions } from '@shared/Models';\nimport { getTermPriorityForSorting } from '@shared/utils/pricing';\nexport class Product {\n    populateTermsByPlanIdMap() {\n        // Populates terms by planId\n        this.plans.forEach((plan)=>{\n            const tempPlanTerms = [];\n            this.termsByPlanId[`${plan.planId}`] = [];\n            /** Meters are unused yet, but is preparation for the future when AppSource would contain apps with custom meters */ this.metersByPlanId[`${plan.planId}`] = [];\n            plan.availabilities.forEach((a)=>{\n                tempPlanTerms.push(...a.terms);\n                /** Meters are unused yet, but is preparation for the future when AppSource would contain apps with custom meters */ this.metersByPlanId[`${plan.planId}`].push(a.meter);\n            });\n            const unsortedTerms = tempPlanTerms.reduce((accumulatedArray, curr)=>{\n                // in Professional Service offer type the renewTermUnit can be null\n                if (this.isProfessionalService && !curr.renewTermId) {\n                    curr.renewTermId = curr.termId;\n                }\n                // Iterate over all non-free trial terms (termId===renewTermId)\n                if (curr.renewTermId === curr.termId) {\n                    let freeTrialTermId = '';\n                    let freeTrialTermUnit;\n                    // Find relevant free trial term for specific termId\n                    const freeTrialTerm = tempPlanTerms.find((term)=>term.renewTermId === curr.termId && term.renewTermId !== term.termId);\n                    // Populate free trial info for term\n                    if (freeTrialTerm) {\n                        freeTrialTermId = freeTrialTerm.termId;\n                        freeTrialTermUnit = freeTrialTerm.termUnits;\n                    }\n                    // Only added if non-free trial. Meaning we have a merged term with both freeTrial termId as well as non-free trial termId\n                    accumulatedArray.push(_object_spread_props(_object_spread({}, curr), {\n                        freeTrialTermId,\n                        freeTrialTermUnit\n                    }));\n                }\n                return accumulatedArray;\n            }, []);\n            this.termsByPlanId[`${plan.planId}`] = this.sortTermPrices(unsortedTerms);\n        });\n    }\n    /** Extract all unique terms durations of product. Relies on renewTermId rather than termId */ populateUniqueTermsPerPlan() {\n        this.plans.forEach((plan)=>{\n            const uniqueTerms = [];\n            const termsOfAllAvailabilitiesByPlan = plan.availabilities.map((avail)=>avail.terms);\n            termsOfAllAvailabilitiesByPlan.forEach((terms)=>{\n                terms.forEach((term)=>{\n                    // in Professional Service offer type the renewTermUnit can be null\n                    if (this.isProfessionalService && !term.renewTermUnits) {\n                        term.renewTermUnits = term.termUnits;\n                    }\n                    if (!uniqueTerms.includes(term.renewTermUnits)) {\n                        uniqueTerms.push(term.renewTermUnits);\n                    }\n                });\n            });\n            this.TermsPerPlanMapping[plan.planId] = uniqueTerms;\n        });\n    }\n    constructor({ legacyId, bigId, plans, offerType }){\n        /** List of term duration  */ _define_property(this, \"TermsPerPlanMapping\", {});\n        /** Equivalent to entityId <PublisherId.OfferId> */ _define_property(this, \"legacyId\", void 0);\n        _define_property(this, \"bigId\", void 0);\n        _define_property(this, \"plans\", void 0);\n        _define_property(this, \"isProfessionalService\", void 0);\n        _define_property(this, \"offerType\", void 0);\n        _define_property(this, \"termsByPlanId\", {});\n        /** This is unused yet, but is preparation for the future when AppSource would contain apps with custom meters */ _define_property(this, \"metersByPlanId\", {});\n        /**\n   * Extract a specific availability from the plan's availabilities\n   * The termId depends on the plan, and availability properties: termUnits (P1Y, month, ...), free trial and billing plan;\n   */ _define_property(this, \"getPlanAvailabilityByTermId\", (planId, termId)=>{\n            // Get the selected plan\n            const plan = this.plans.find((plan)=>plan.planId === planId);\n            // AppsSource only has direct commercial customers (no CSP or special type pricingAudience).\n            // There should *always* be availabilities at this point since we filter by billing region prior to fetching the item\n            const directAvailabilities = (plan.availabilities || []).filter((availability)=>availability.pricingAudience === PricingAudience.DirectCommercial && availability.actions.includes(IAvailabilityActions.Browse));\n            // Filter by term, there could be multiple billingPlans with the same duration (termUnits) so this could still be an array\n            return directAvailabilities.find((availability)=>availability.terms.some((term)=>term.termId === termId)) || {};\n        });\n        /** Extract default availability by planId */ _define_property(this, \"getFirstTermFromPlan\", (planId)=>{\n            var _this_termsByPlanId_;\n            return (_this_termsByPlanId_ = this.termsByPlanId[`${planId}`]) === null || _this_termsByPlanId_ === void 0 ? void 0 : _this_termsByPlanId_[0];\n        });\n        /** Returns the distinct of possible term durations by planId */ _define_property(this, \"getTermDurationsByPlanId\", (planId)=>{\n            return this.TermsPerPlanMapping[`${planId}`];\n        });\n        /** Helper method to get selected plan by planId rather than access plans array by index */ _define_property(this, \"getPlanByPlanId\", (targetPlanId)=>{\n            const plan = this.plans.find((plan)=>plan.planId === targetPlanId);\n            return plan;\n        });\n        /** Used to get terms entity by termId. TermId should be the renew termId  */ _define_property(this, \"getFirstTermByPlanId\", (planId)=>{\n            var _this_termsByPlanId_;\n            return (_this_termsByPlanId_ = this.termsByPlanId[`${planId}`]) === null || _this_termsByPlanId_ === void 0 ? void 0 : _this_termsByPlanId_[0];\n        });\n        /** Used to get terms entity by termId. TermId should be the renew termId  */ _define_property(this, \"getTermByTermId\", ({ planId, termId })=>{\n            return this.termsByPlanId[`${planId}`].find((term)=>{\n                // Compare the given termId with either the free trial termId or non free trial termId\n                const foundTerm = termId === term.termId || termId === term.freeTrialTermId;\n                return foundTerm;\n            });\n        });\n        /** Returns a new array of ascending sorted term prices. First by billing term and if the billing terms are equal then by the billing period frequency */ _define_property(this, \"sortTermPrices\", (termPrices)=>{\n            if (!(termPrices === null || termPrices === void 0 ? void 0 : termPrices.length)) {\n                return [];\n            }\n            // Cloning before calling \".sort\" is a must because \".sort\" sorts the array in-place.\n            return [\n                ...termPrices\n            ].sort((a, b)=>{\n                if (a.renewTermUnits === b.renewTermUnits) {\n                    var _a_billingPlan, _b_billingPlan;\n                    return getTermPriorityForSorting((_a_billingPlan = a.billingPlan) === null || _a_billingPlan === void 0 ? void 0 : _a_billingPlan.billingPeriod) - getTermPriorityForSorting((_b_billingPlan = b.billingPlan) === null || _b_billingPlan === void 0 ? void 0 : _b_billingPlan.billingPeriod);\n                }\n                return getTermPriorityForSorting(a.renewTermUnits) - getTermPriorityForSorting(b.renewTermUnits);\n            });\n        });\n        _define_property(this, \"getTermByPlanAndBillingTermDuration\", ({ planId, billingTermDuration })=>{\n            var _this_termsByPlanId__filter;\n            return (_this_termsByPlanId__filter = this.termsByPlanId[`${planId}`].filter((term)=>term.renewTermUnits === billingTermDuration)) === null || _this_termsByPlanId__filter === void 0 ? void 0 : _this_termsByPlanId__filter[0];\n        });\n        this.legacyId = legacyId;\n        this.bigId = bigId;\n        this.plans = plans;\n        this.offerType = offerType;\n        this.isProfessionalService = plans.some(({ isHiddenPrivateOffer })=>isHiddenPrivateOffer);\n        this.populateTermsByPlanIdMap();\n        this.populateUniqueTermsPerPlan();\n    }\n}\n","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n    try {\n        var info = gen[key](arg);\n        var value = info.value;\n    } catch (error) {\n        reject(error);\n        return;\n    }\n    if (info.done) {\n        resolve(value);\n    } else {\n        Promise.resolve(value).then(_next, _throw);\n    }\n}\nfunction _async_to_generator(fn) {\n    return function() {\n        var self = this, args = arguments;\n        return new Promise(function(resolve, reject) {\n            var gen = fn.apply(self, args);\n            function _next(value) {\n                asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n            }\n            function _throw(err) {\n                asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n            }\n            _next(undefined);\n        });\n    };\n}\nfunction _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nfunction _object_spread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        var ownKeys = Object.keys(source);\n        if (typeof Object.getOwnPropertySymbols === \"function\") {\n            ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n            }));\n        }\n        ownKeys.forEach(function(key) {\n            _define_property(target, key, source[key]);\n        });\n    }\n    return target;\n}\nfunction ownKeys(object, enumerableOnly) {\n    var keys = Object.keys(object);\n    if (Object.getOwnPropertySymbols) {\n        var symbols = Object.getOwnPropertySymbols(object);\n        if (enumerableOnly) {\n            symbols = symbols.filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n            });\n        }\n        keys.push.apply(keys, symbols);\n    }\n    return keys;\n}\nfunction _object_spread_props(target, source) {\n    source = source != null ? source : {};\n    if (Object.getOwnPropertyDescriptors) {\n        Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n        ownKeys(Object(source)).forEach(function(key) {\n            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n    }\n    return target;\n}\nimport { StatusCodes } from 'http-status-codes';\nimport { createEntityDataReceivedAction, createSearchboxInputChangedAction, createEntityDetailsReceivedAction, createAppsPricingDataReceivedAction, createAppPricingDataRequestedAction, createAppDetailPricingReceivedAction, createBillingRegionReadFromCookieAction, createUserSignOutAction, createUserProfileAction, createUserSignInFetchStatusAction, createUpdateUserProfileAction, createClearUserPropertiesAction, createDynamicCampaignReceivedAction, createSetTenantTypeAction, createServicesCountriesDataReceivedAction, createDataMapReceivedAction, createFilteredSearchResultsReceivedAction, createRelatedAppsItemsReceivedAction, createRelatedAppsItemsLoadingAction, createRelatedAppsItemsPricingDataReceivedAction, createSetEntityIdLoadingAction, createSetEntityIdFailedAction, createGetAppReviewsAction, createUserTenantsDetailsAction, createEntityFullDataReceivedAction, createUserTenantsDetailsLoadingAction, createUserProfileLoadingAction, createPartnerSearchResultsReceivedAction, createAppPricingDataReceivedAction, createEntityReviewCommentsReceivedAction, createEntityReviewCommentsCleanupAction, createEntityReviewCommentCreateResult, createEntityReviewCommentDeleteResult, createEntityReviewCommentUpdateResult, createEntityReviewCommentModalAction, createUserLoginDetailsAction, createEntityReviewCommentsLoadingAction, createEntityReviewCommentsInitializeStateAction, createEntityReviewCommentsUpdateTotalCommentCountAction, createEntityMarkedAsHelpfulReviewUpdateListAction, createEntityLinkedInProductGroupUpdateAction, createEntityReviewMarkAsHelpfulModalAction, createEntityReviewSetIsHelpfulAction, createEntityReviewSetMarkAsHelpfulCount, createEntityReviewSetIsHelpfulLoadingAction, createSetStorefrontNameAction, createLoadingRecommenededSizes, createSetRecommenededSizes, createEntityUserCommentedReviewIdsUpdateListAction, createRecommendedWhatsNewAppsReceivedAction, createRecommendedTrendingAppsReceivedAction, createShowingResultsForReceivedAction, createRecommendedAppsItemsPricingDataReceivedAction, createRecommendedWhatsNewServiceReceivedAction, createRecommendedTrendingServiceReceivedAction, createRecommendedMicrosoft365WhatsNewAppsReceivedAction, createRecommendedMicrosoft365TrendingAppsReceivedAction, createUpdateUserRoleDefinitions, createSetAccountIsLoadingAction, createSetAccountAction } from '@shared/actions/actions';\nimport { createUpdateCustomerAction, createSetActiveCustomerAction, createSetPublisherTokenResponse, createSetCustomersAction, createErrorAction, createClearErrorAction, createProduct, createFetchingProductAction } from '@shared/actions/checkoutActions';\nimport { isOnMicrosoftEmail, shouldEnsureAppDetails, shouldEnsureAppRelatedApps, shouldEnsureAppPricings, shouldEnsureServiceDetails, shouldEnsureServiceRelatedApps, shouldEnsureAppReviews, getTileDataQueryParams, getActiveFeaturedFlags, parseCatalogRecommendedSizes, getProductByUrlKey, generateGuid } from '@shared/utils/appUtils';\nimport { createLeadPayload, scrubLeadPayload } from '@shared/utils/leadsUtils';\nimport { dispatchSearchQueryChangedAction, takeTopResults } from '@shared/utils/thunkActionUtils';\nimport * as suggestionsRestClient from '@shared/services/http/suggestionsRestClient';\nimport * as catalogApiRestClient from '@shared/services/http/catalogApiRestClient';\nimport * as armRestClient from '@shared/services/http/armRestClient';\nimport * as entityRestClient from '@shared/services/http/entityRestClient';\nimport * as leadgenRestClient from '@shared/services/http/leadgenRestClient';\nimport * as reviewRestClient from '@shared/services/http/reviewRestClient';\nimport * as fieldHubRestClient from '@shared/services/http/fieldHubRestClient';\nimport * as userRestClient from '@shared/services/http/userRestClient';\nimport * as dynamicCampaignRestClient from '@shared/services/http/dynamicCampaignRestClient';\nimport * as purchaseRestClient from '@shared/services/http/purchaseRestClient';\nimport * as commerceApiRestClient from '@shared/services/http/commerceApiRestClient';\nimport * as appReviewCommentsRestClient from '@shared/services/http/reviewCommentsRestClient';\nimport * as appReviewMarkAsHelpfulRestClient from '@shared/services/http/reviewMarkAsHelpfulRestClient';\nimport * as reviewsCatalogRestClient from '@shared/services/http/reviewsCatalogRestClient';\nimport * as linkedInRestClient from '@shared/services/http/linkedInRestClient';\nimport * as graphRestClient from '@shared/services/http/graphRestClient';\nimport * as reportReviewRestClient from '@shared/services/http/reportReviewRestClient';\nimport * as reviewAppReviewsRestClient from '@shared/services/http/reviewAppReviewsRestClient';\nimport * as userReviewRestClient from '@shared/services/http/userReviewRestClient';\n// Constant API version that maps to the app schema,\n// inflight browser never calls the API directly hence this is the only place the version lives\nimport { getCookieItem, saveCookieItem } from '@shared/utils/browserStorageUtils';\nimport { Constants } from '@shared/utils/constants';\nimport { getWindow } from '@shared/services/window';\nimport { UserSegment, CustomerType } from '@shared/Models';\nimport { SpzaInstrumentService } from '@shared/services/telemetry/spza/spzaInstrument';\nimport { SharedInstrumentService } from '@shared/services/telemetry/shared/sharedInstrument';\nimport { AzureEnvironmentSettings } from '@shared/AzureEnvironmentSettings';\nimport * as authRestClient from '@shared/services/http/authRestClient';\nimport { shouldRefreshToken, logError } from '@shared/utils/httpClientUtil';\nimport { previousPage, routes } from '@shared/routerHistory';\nimport { getCampaignsForAcquisitionFromUrl } from '@shared/utils/routeUtils';\nimport { getSearchQuery, removeDuplicateAddIns } from '@shared/utils/search';\nimport { stringifyError } from '@shared/utils/errorUtils';\nimport { extractCountryCodeFromQueryParam } from '@shared/utils/consultingServicesUtils';\nimport { createFavouriteAppsPricingDataReceivedAction } from './userFavouriteActions';\nimport { ensurePrivateOffer } from './privateOffersThunkActions';\nimport { Product } from 'services/product/product';\nimport { logger } from '@src/logger';\nimport { launchTelemetry as launchReviewsTelemetry } from '@shared/utils/reviewsUtils';\nimport { request } from '@shared/utils/requestUtils';\nimport { HttpModule } from '@shared/services/http/httpProtocol';\nimport { fetchUserFavourites } from './userFavouriteThunkActions';\nimport { BillingAccountType, BillingAgreementType } from '@src/interfaces/IBilling';\nlet tilesViewService;\nlet servicesViewService;\nlet recommendationsViewService;\nlet cloudsIndustryViewService;\nlet detailsViewService;\nlet servicesDetailsViewService;\nlet pricingViewService;\nif (__SERVER__) {\n    tilesViewService = require('@src/server/viewAPIServices/tilesViewService');\n    servicesViewService = require('@src/server/viewAPIServices/servicesViewService');\n    recommendationsViewService = require('@src/server/viewAPIServices/recommendationsViewService');\n    cloudsIndustryViewService = require('@src/server/viewAPIServices/cloudsIndustryViewService');\n    detailsViewService = require('@src/server/viewAPIServices/detailsViewService');\n    servicesDetailsViewService = require('@src/server/viewAPIServices/servicesDetailsViewService');\n    pricingViewService = require('@src/server/viewAPIServices/pricingViewService');\n}\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function telemtry(action, actionModifier, details) {\n    const payload = {\n        page: getWindow() && getWindow().location && getWindow().location.href,\n        action,\n        actionModifier,\n        details: JSON.stringify(details)\n    };\n    SpzaInstrumentService.getProvider().probe('logTelemetryInfo', payload);\n    logger.info(payload.details, {\n        action: payload.action,\n        actionModifier: payload.actionModifier\n    });\n}\nfunction mockRequest({ state, query = {}, request: req = {} }) {\n    return request({\n        correlationId: state.config.correlationId,\n        requestId: state.config.requestId,\n        context: _object_spread({}, req.context),\n        query: _object_spread_props(_object_spread({}, query), {\n            [Constants.QueryStrings.flightCodes]: state.config.flightCodes,\n            [Constants.QueryStrings.isConverged]: state.config.isConverged ? 'true' : 'false'\n        })\n    });\n}\nexport function ensureAppsDataMap() {\n    return /*#__PURE__*/ function() {\n        var _ref = _async_to_generator(function*(dispatch, getState) {\n            var _getProductByUrlKey;\n            if (getState().apps.dataMapLoaded) {\n                return Promise.resolve();\n            }\n            const embedHost = (_getProductByUrlKey = getProductByUrlKey({\n                urlKey: getState().config.embedHost\n            })) === null || _getProductByUrlKey === void 0 ? void 0 : _getProductByUrlKey.UrlKey;\n            let dataMap$;\n            if (__CLIENT__) {\n                dataMap$ = entityRestClient.getAppsDataMap({\n                    embedHost\n                });\n            } else {\n                dataMap$ = tilesViewService.getAppsDataMap({\n                    request: mockRequest({\n                        state: getState()\n                    }),\n                    embedHost\n                });\n            }\n            const dataMap = yield dataMap$;\n            dispatch(createDataMapReceivedAction({\n                entityType: Constants.EntityType.App,\n                dataMap\n            }));\n            return dataMap;\n        });\n        return function(dispatch, getState) {\n            return _ref.apply(this, arguments);\n        };\n    }();\n}\nexport function ensureCloudsIndustryDataMap() {\n    return function(dispatch, getState) {\n        if (getState().cloudsIndustry.dataMapLoaded) {\n            return Promise.resolve();\n        }\n        let dataMap$;\n        if (__CLIENT__) {\n            dataMap$ = entityRestClient.getCloudsIndustryDataMap();\n        } else {\n            dataMap$ = cloudsIndustryViewService.getCloudsIndustryDataMap({\n                request: mockRequest({\n                    state: getState()\n                })\n            });\n        }\n        return dataMap$.then((dataMap)=>{\n            dispatch(createDataMapReceivedAction({\n                entityType: Constants.EntityType.CloudsIndustry,\n                dataMap\n            }));\n            return dataMap;\n        });\n    };\n}\nexport function ensureServicesDataMap() {\n    return function(dispatch, getState) {\n        if (getState().services.dataMapLoaded) {\n            return Promise.resolve();\n        }\n        let dataMap$;\n        if (__CLIENT__) {\n            dataMap$ = entityRestClient.getServicesDataMap();\n        } else {\n            dataMap$ = servicesViewService.getServicesDataMap({\n                request: mockRequest({\n                    state: getState()\n                })\n            });\n        }\n        return dataMap$.then((dataMap)=>{\n            dispatch(createDataMapReceivedAction({\n                entityType: Constants.EntityType.Service,\n                dataMap\n            }));\n            return dataMap;\n        });\n    };\n}\nexport function ensureServiceData({ request }) {\n    return function(dispatch, getState) {\n        const state = getState();\n        const { search: { previousSearchText }, config: { includeTestProducts, isConverged } } = state;\n        const options = {\n            includeTestProducts,\n            isConverged\n        };\n        const requestId = request.headers[Constants.Headers.RequestId] || '';\n        const userSegment = Constants.ServicesUserSegment;\n        if (state.services.dataLoaded[`${userSegment}`]) {\n            return Promise.resolve();\n        }\n        const urlQuery = _object_spread({}, getTileDataQueryParams(state.config.query), getActiveFeaturedFlags(state.config.featureFlags));\n        let getFilteredServices$;\n        if (__CLIENT__) {\n            getFilteredServices$ = entityRestClient.getFilteredServices({\n                urlQuery,\n                requestId,\n                options\n            });\n        } else {\n            getFilteredServices$ = servicesViewService.getFilteredServices({\n                request: mockRequest({\n                    state: getState(),\n                    query: urlQuery,\n                    request\n                }),\n                options\n            });\n        }\n        return getFilteredServices$.then((result)=>{\n            const { items, count, showingResultsFor = '' } = result;\n            dispatch(createEntityDataReceivedAction({\n                entityType: Constants.EntityType.Service,\n                dataList: items,\n                isEmbedded: state.config.isEmbedded,\n                userSegment: Constants.ServicesUserSegment,\n                count,\n                urlQuery\n            }));\n            // This is to ensure we don't accidently reset the showing results for due to the 3 searches we're doing: Apps, Consulting Services, Industry Clouds\n            if (urlQuery.search !== previousSearchText && showingResultsFor.length > 0) {\n                dispatch(createShowingResultsForReceivedAction({\n                    showingResultsFor,\n                    previousSearchText: urlQuery.search\n                }));\n            }\n            return result;\n        });\n    };\n}\nexport function ensureServiceCountries() {\n    return function(dispatch, getState) {\n        let countryDate = Promise.resolve();\n        if (!Object.keys(getState().services.countriesList).length && getState().config.isAppSource) {\n            countryDate = new Promise((resolve, reject)=>{\n                servicesViewService.getAllServicesCountries({\n                    request: mockRequest({\n                        state: getState()\n                    })\n                }).then((countries)=>{\n                    dispatch(createServicesCountriesDataReceivedAction({\n                        countries\n                    }));\n                    resolve();\n                }).catch((error)=>{\n                    reject(error);\n                });\n            });\n        }\n        return countryDate;\n    };\n}\nexport function getUserAuthStatus() {\n    return function(dispatch, getState) {\n        return new Promise((resolve, reject)=>{\n            const state = getState();\n            if (state.config.embedHost) {\n                return resolve(Constants.SigninStatus.ValidationSkipped);\n            }\n            if (state.users.accessToken && !shouldRefreshToken(state.users.accessToken.spza)) {\n                // The token is still valid and not nearing expiry dont make a server call, let the flow continue.\n                resolve(Constants.SigninStatus.ValidTokenUnknownCookie);\n            } else {\n                authRestClient.getUserAuthStatus().then((result)=>{\n                    // the token has expired and cookie is guest sign the user out from state\n                    if (result.status === Constants.SigninStatus.ExpiredTokenInvalidCookie) {\n                        dispatch(createUserSignOutAction(null));\n                    }\n                    resolve(result);\n                }).catch((error)=>{\n                    reject(error);\n                });\n            }\n        });\n    };\n}\nexport function getAppReviews(entityId) {\n    return /*#__PURE__*/ function() {\n        var _ref = _async_to_generator(function*(dispatch, getState) {\n            const { config: { reviewsAPI, reviewsAPIVersion, storefrontName: source }, users: { signedIn } } = getState();\n            const reviews$ = reviewAppReviewsRestClient.getAppReviews({\n                entityId,\n                reviewsAPI,\n                reviewsAPIVersion\n            });\n            const isPurchased$ = signedIn && reviewRestClient.getPurchaseStatus(entityId);\n            const userReview$ = signedIn && userReviewRestClient.get({\n                offerId: entityId,\n                reviewsAPI,\n                reviewsAPIVersion,\n                source\n            }) || Promise.resolve([]);\n            const [reviews, isPurchased, [userReview]] = yield Promise.all([\n                reviews$,\n                isPurchased$,\n                userReview$\n            ]);\n            return dispatch(createGetAppReviewsAction({\n                entityId,\n                reviews,\n                isPurchased,\n                userReview\n            }));\n        });\n        return function(dispatch, getState) {\n            return _ref.apply(this, arguments);\n        };\n    }();\n}\nexport function ensureAppReviewsData(entityId, forceUpdate = false) {\n    return function(dispatch, getState) {\n        if (!entityId) {\n            return Promise.resolve(false);\n        }\n        const start = Date.now();\n        if (shouldEnsureAppReviews(entityId, getState()) || forceUpdate) {\n            return Promise.resolve(dispatch(getAppReviews(entityId))).catch((error)=>{\n                const payload = {\n                    page: getWindow() && getWindow().location.href,\n                    action: Constants.Telemetry.Action.EnsureAppReviewsData,\n                    actionModifier: Constants.Telemetry.ActionModifier.Error,\n                    details: JSON.stringify({\n                        duration: Date.now() - start,\n                        error: stringifyError(error)\n                    })\n                };\n                SpzaInstrumentService.getProvider().probe('logTelemetryInfo', payload);\n                logger.error(payload.details, {\n                    action: payload.action,\n                    actionModifier: payload.actionModifier\n                });\n                return false;\n            });\n        }\n        return Promise.resolve(true);\n    };\n}\nexport function ensureAppData({ billingRegion, request }) {\n    return function(dispatch, getState) {\n        var _getProductByUrlKey;\n        const state = getState();\n        const { search: { previousSearchText } } = state;\n        const requestId = request.headers[Constants.Headers.RequestId] || '';\n        const userSegment = UserSegment[UserSegment.unauthenticated];\n        if (state.apps.dataLoaded[`${userSegment}`]) {\n            return Promise.resolve();\n        }\n        const { flightCodes, includeTestProducts, isConverged } = state.config;\n        const options = {\n            includeTestProducts,\n            isConverged\n        };\n        const urlQuery = _object_spread({}, getTileDataQueryParams(state.config.query), getActiveFeaturedFlags(state.config.featureFlags));\n        const embedHost = (_getProductByUrlKey = getProductByUrlKey({\n            urlKey: state.config.embedHost\n        })) === null || _getProductByUrlKey === void 0 ? void 0 : _getProductByUrlKey.UrlKey;\n        let getFilteredApps$;\n        if (__CLIENT__) {\n            getFilteredApps$ = entityRestClient.getFilteredApps({\n                billingRegion,\n                flightCodes,\n                embedHost,\n                urlQuery,\n                requestId,\n                options\n            });\n        } else {\n            getFilteredApps$ = tilesViewService.getFilteredApps({\n                request: mockRequest({\n                    state: getState(),\n                    query: urlQuery,\n                    request\n                }),\n                billingRegion,\n                flightCodes,\n                embedHost,\n                options\n            });\n        }\n        return getFilteredApps$.then((result)=>{\n            const { items, count, showingResultsFor = '' } = result;\n            dispatch(createEntityDataReceivedAction({\n                entityType: Constants.EntityType.App,\n                dataList: items,\n                isEmbedded: state.config.isEmbedded,\n                userSegment,\n                count,\n                urlQuery\n            }));\n            // This is to ensure we don't accidently reset the showing results for due to the 3 searches we're doing: Apps, Consulting Services, Industry Clouds\n            if (urlQuery.search !== previousSearchText && showingResultsFor.length > 0) {\n                dispatch(createShowingResultsForReceivedAction({\n                    showingResultsFor,\n                    previousSearchText: urlQuery.search\n                }));\n            }\n            return result;\n        });\n    };\n}\nexport function ensureWhatsNewAppsRecommendationsData() {\n    return /*#__PURE__*/ function() {\n        var _ref = _async_to_generator(function*(dispatch, getState) {\n            const action = Constants.Telemetry.Action.GetAppRecommendedItems;\n            const start = Date.now();\n            telemtry(action, Constants.Telemetry.ActionModifier.Start, {});\n            try {\n                const recommendedItems = (yield recommendationsViewService.getWhatsNewRecommendedApps({\n                    request: mockRequest({\n                        state: getState()\n                    })\n                })) || [];\n                telemtry(action, Constants.Telemetry.ActionModifier.End, {\n                    duration: Date.now() - start,\n                    recommendedWhatsNewApps: recommendedItems === null || recommendedItems === void 0 ? void 0 : recommendedItems.map((item)=>item.entityId)\n                });\n                dispatch(createRecommendedWhatsNewAppsReceivedAction(recommendedItems));\n                return recommendedItems;\n            } catch (error) {\n                telemtry(action, Constants.Telemetry.ActionModifier.Error, {\n                    duration: Date.now() - start,\n                    error: stringifyError(error)\n                });\n            }\n        });\n        return function(dispatch, getState) {\n            return _ref.apply(this, arguments);\n        };\n    }();\n}\nexport function ensureTrendingAppsRecommendationsData() {\n    return /*#__PURE__*/ function() {\n        var _ref = _async_to_generator(function*(dispatch, getState) {\n            const action = Constants.Telemetry.Action.GetAppRecommendedItems;\n            const start = Date.now();\n            telemtry(action, Constants.Telemetry.ActionModifier.Start, {});\n            try {\n                const recommendedItems = (yield recommendationsViewService.getTrendingRecommendedApps({\n                    request: mockRequest({\n                        state: getState()\n                    })\n                })) || [];\n                telemtry(action, Constants.Telemetry.ActionModifier.End, {\n                    duration: Date.now() - start,\n                    RecommendedTrendingApps: recommendedItems === null || recommendedItems === void 0 ? void 0 : recommendedItems.map((item)=>item.entityId)\n                });\n                dispatch(createRecommendedTrendingAppsReceivedAction(recommendedItems));\n                return recommendedItems;\n            } catch (error) {\n                telemtry(action, Constants.Telemetry.ActionModifier.Error, {\n                    duration: Date.now() - start,\n                    error: stringifyError(error)\n                });\n            }\n        });\n        return function(dispatch, getState) {\n            return _ref.apply(this, arguments);\n        };\n    }();\n}\nexport function ensureWhatsNewServiceRecommendationsData() {\n    return /*#__PURE__*/ function() {\n        var _ref = _async_to_generator(function*(dispatch, getState) {\n            const action = Constants.Telemetry.Action.GetServiceRecommendedItems;\n            const start = Date.now();\n            telemtry(action, Constants.Telemetry.ActionModifier.Start, {});\n            try {\n                const request = mockRequest({\n                    state: getState()\n                });\n                const recommendedItems = (yield recommendationsViewService.getWhatsNewRecommendedService({\n                    request,\n                    country: request.query[Constants.QueryStrings.country],\n                    region: request.query[Constants.QueryStrings.region]\n                })) || [];\n                telemtry(action, Constants.Telemetry.ActionModifier.End, {\n                    duration: Date.now() - start,\n                    recommendedWhatsNewService: recommendedItems === null || recommendedItems === void 0 ? void 0 : recommendedItems.map((item)=>item.entityId)\n                });\n                dispatch(createRecommendedWhatsNewServiceReceivedAction(recommendedItems));\n                return recommendedItems;\n            } catch (error) {\n                telemtry(action, Constants.Telemetry.ActionModifier.Error, {\n                    duration: Date.now() - start,\n                    error: stringifyError(error)\n                });\n            }\n        });\n        return function(dispatch, getState) {\n            return _ref.apply(this, arguments);\n        };\n    }();\n}\nexport function ensureTrendingServiceRecommendationsData() {\n    return /*#__PURE__*/ function() {\n        var _ref = _async_to_generator(function*(dispatch, getState) {\n            const action = Constants.Telemetry.Action.GetServiceRecommendedItems;\n            const start = Date.now();\n            telemtry(action, Constants.Telemetry.ActionModifier.Start, {});\n            try {\n                const request = mockRequest({\n                    state: getState()\n                });\n                const recommendedItems = (yield recommendationsViewService.getTrendingRecommendedService({\n                    request,\n                    country: request.query[Constants.QueryStrings.country],\n                    region: request.query[Constants.QueryStrings.region]\n                })) || [];\n                telemtry(action, Constants.Telemetry.ActionModifier.End, {\n                    duration: Date.now() - start,\n                    RecommendedTrendingService: recommendedItems === null || recommendedItems === void 0 ? void 0 : recommendedItems.map((item)=>item.entityId)\n                });\n                dispatch(createRecommendedTrendingServiceReceivedAction(recommendedItems));\n                return recommendedItems;\n            } catch (error) {\n                telemtry(action, Constants.Telemetry.ActionModifier.Error, {\n                    duration: Date.now() - start,\n                    error: stringifyError(error)\n                });\n            }\n        });\n        return function(dispatch, getState) {\n            return _ref.apply(this, arguments);\n        };\n    }();\n}\nexport function ensureMicrosoft365WhatsNewAppsRecommendationsData() {\n    return /*#__PURE__*/ function() {\n        var _ref = _async_to_generator(function*(dispatch, getState) {\n            const action = Constants.Telemetry.Action.GetAppRecommendedItems;\n            const start = Date.now();\n            telemtry(action, Constants.Telemetry.ActionModifier.Start, {});\n            try {\n                const recommendedItems = (yield recommendationsViewService.getMicrosoft365WhatsNewRecommendedApps({\n                    request: mockRequest({\n                        state: getState()\n                    })\n                })) || [];\n                telemtry(action, Constants.Telemetry.ActionModifier.End, {\n                    duration: Date.now() - start,\n                    recommendedMicrosoft365WhatsNewApps: recommendedItems === null || recommendedItems === void 0 ? void 0 : recommendedItems.map((item)=>item.entityId)\n                });\n                dispatch(createRecommendedMicrosoft365WhatsNewAppsReceivedAction(recommendedItems));\n                return recommendedItems;\n            } catch (error) {\n                telemtry(action, Constants.Telemetry.ActionModifier.Error, {\n                    duration: Date.now() - start,\n                    error: stringifyError(error)\n                });\n            }\n        });\n        return function(dispatch, getState) {\n            return _ref.apply(this, arguments);\n        };\n    }();\n}\nexport function ensureMicrosoft365TrendingAppsRecommendationsData() {\n    return /*#__PURE__*/ function() {\n        var _ref = _async_to_generator(function*(dispatch, getState) {\n            const action = Constants.Telemetry.Action.GetAppRecommendedItems;\n            const start = Date.now();\n            telemtry(action, Constants.Telemetry.ActionModifier.Start, {});\n            try {\n                const recommendedItems = (yield recommendationsViewService.getMicrosoft365TrendingRecommendedApps({\n                    request: mockRequest({\n                        state: getState()\n                    })\n                })) || [];\n                telemtry(action, Constants.Telemetry.ActionModifier.End, {\n                    duration: Date.now() - start,\n                    RecommendedTrendingApps: recommendedItems === null || recommendedItems === void 0 ? void 0 : recommendedItems.map((item)=>item.entityId)\n                });\n                dispatch(createRecommendedMicrosoft365TrendingAppsReceivedAction(recommendedItems));\n                return recommendedItems;\n            } catch (error) {\n                telemtry(action, Constants.Telemetry.ActionModifier.Error, {\n                    duration: Date.now() - start,\n                    error: stringifyError(error)\n                });\n            }\n        });\n        return function(dispatch, getState) {\n            return _ref.apply(this, arguments);\n        };\n    }();\n}\nfunction ensureRecommendationsData(dispatch) {\n    return [\n        dispatch(ensureWhatsNewAppsRecommendationsData()),\n        dispatch(ensureTrendingAppsRecommendationsData()),\n        dispatch(ensureWhatsNewServiceRecommendationsData()),\n        dispatch(ensureTrendingServiceRecommendationsData()),\n        dispatch(ensureMicrosoft365WhatsNewAppsRecommendationsData()),\n        dispatch(ensureMicrosoft365TrendingAppsRecommendationsData())\n    ];\n}\nexport function ensureCloudsIndustryData({ request }) {\n    return function(dispatch, getState) {\n        const state = getState();\n        const { search: { previousSearchText } } = state;\n        const requestId = request.headers[Constants.Headers.RequestId] || '';\n        const userSegment = UserSegment[UserSegment.unauthenticated];\n        if (state.apps.dataLoaded[`${userSegment}`]) {\n            return Promise.resolve();\n        }\n        const urlQuery = _object_spread_props(_object_spread({}, getTileDataQueryParams(state.config.query), getActiveFeaturedFlags(state.config.featureFlags)), {\n            [Constants.QueryStrings.UseSecondarySearch]: state.config.featureFlags.UseSecondarySearch\n        });\n        let getFilteredCloudsIndustry$;\n        if (__CLIENT__) {\n            getFilteredCloudsIndustry$ = entityRestClient.getFilteredCloudsIndustry({\n                urlQuery,\n                requestId\n            });\n        } else {\n            getFilteredCloudsIndustry$ = cloudsIndustryViewService.getFilteredCloudsIndustry({\n                request: mockRequest({\n                    state: getState(),\n                    query: urlQuery,\n                    request\n                })\n            });\n        }\n        return getFilteredCloudsIndustry$.then((result)=>{\n            const { items, count, showingResultsFor = '' } = result;\n            dispatch(createEntityDataReceivedAction({\n                entityType: Constants.EntityType.CloudsIndustry,\n                dataList: items,\n                isEmbedded: false,\n                userSegment,\n                count,\n                urlQuery\n            }));\n            // This is to ensure we don't accidently reset the showing results for due to the 3 searches we're doing: Apps, Consulting Services, Industry Clouds\n            if (urlQuery.search !== previousSearchText && showingResultsFor.length > 0) {\n                dispatch(createShowingResultsForReceivedAction({\n                    showingResultsFor,\n                    previousSearchText: urlQuery.search\n                }));\n            }\n            return result;\n        });\n    };\n}\nexport function fetchStateCacheData({ billingRegion, request }) {\n    return /*#__PURE__*/ function() {\n        var _ref = _async_to_generator(function*(dispatch, getState) {\n            const dataMaps = [\n                dispatch(ensureAppsDataMap()),\n                dispatch(ensureServicesDataMap())\n            ];\n            if (getState().config.isAppSource && !getState().config.isEmbedded) {\n                dataMaps.push(dispatch(ensureCloudsIndustryDataMap()));\n            }\n            yield Promise.all(dataMaps);\n            const offers = [\n                dispatch(ensureAppData({\n                    billingRegion,\n                    request\n                }))\n            ];\n            if (!getState().config.isEmbedded) {\n                offers.push(dispatch(ensureServiceData({\n                    request\n                })));\n                if (getState().config.isAppSource) {\n                    offers.push(dispatch(ensureCloudsIndustryData({\n                        request\n                    })));\n                }\n            }\n            yield Promise.all(offers);\n            yield Promise.all(ensureRecommendationsData(dispatch));\n            if (!getState().config.isEmbedded) {\n                yield dispatch(ensureServiceCountries());\n            }\n        });\n        return function(dispatch, getState) {\n            return _ref.apply(this, arguments);\n        };\n    }();\n}\nfunction logSearchTelemetry(actionModifier, detailsObject) {\n    const payload = {\n        page: getWindow().location.href,\n        action: Constants.Telemetry.Action.Search,\n        actionModifier,\n        details: JSON.stringify(detailsObject)\n    };\n    SpzaInstrumentService.getProvider().probe('logTelemetryInfo', payload);\n    logger.info(payload.details, {\n        action: payload.action,\n        actionModifier: payload.actionModifier\n    });\n}\nconst logSearchApiSuggestions = ({ details })=>{\n    const payload = {\n        page: getWindow().location.href,\n        action: Constants.Telemetry.Action.NewSearchApi,\n        actionModifier: Constants.Telemetry.ActionModifier.SearchApiSuggestions,\n        details\n    };\n    SpzaInstrumentService.getProvider().probe('logTelemetryInfo', payload);\n    logger.info(details, {\n        action: payload.action,\n        actionModifier: payload.actionModifier\n    });\n};\nconst logSearchApiSuggestionsError = ({ details })=>{\n    const payload = {\n        page: getWindow().location.href,\n        action: Constants.Telemetry.Action.NewSearchApi,\n        actionModifier: Constants.Telemetry.ActionModifier.SearchApiSuggestionsError,\n        details\n    };\n    SpzaInstrumentService.getProvider().probe('logTelemetryInfo', payload);\n    logger.error(details, {\n        action: payload.action,\n        actionModifier: payload.actionModifier\n    });\n};\nexport const extractSuggestionsResults = ({ suggestions = {\n    totalCount: 0,\n    value: []\n} })=>{\n    let wordSearches;\n    let entityIds;\n    suggestions.value.forEach((suggestion)=>{\n        if (suggestion.suggestionType === Constants.Search.SuggestionTypes.Entity) {\n            entityIds = [\n                ...entityIds,\n                suggestion.id\n            ];\n        }\n        if (suggestion.suggestionType === Constants.Search.SuggestionTypes.WordSearch) {\n            wordSearches = [\n                ...wordSearches,\n                suggestion.displayText\n            ];\n        }\n    });\n    return {\n        wordSearches,\n        entityIds\n    };\n};\nexport function callSearchApiSuggestionsAction({ language, searchText, requestId }) {\n    return function(dispatch, getState) {\n        const { config: { searchApiEndpoint, storefrontName, siteEnvironment } } = getState();\n        const appName = `${storefrontName}-${siteEnvironment}`;\n        suggestionsRestClient.callSearchApiSuggestions({\n            searchText,\n            language,\n            endpoint: searchApiEndpoint,\n            requestId,\n            appName\n        }).then((suggestions)=>{\n            const { wordSearches, entityIds } = extractSuggestionsResults({\n                suggestions\n            });\n            const details = JSON.stringify({\n                searchText,\n                totalCount: suggestions.totalCount,\n                totalWordSearch: wordSearches.length,\n                totalEntity: entityIds.length,\n                wordSearches,\n                entityIds,\n                language,\n                requestId\n            });\n            logSearchApiSuggestions({\n                details\n            });\n        }).catch((error)=>{\n            logSearchApiSuggestionsError({\n                details: JSON.stringify({\n                    searchText,\n                    requestId,\n                    error\n                })\n            });\n        });\n    };\n}\nconst extractSearchPromises = ({ entityType, urlQuery, requestId, state })=>{\n    const emptyResults = Promise.resolve({\n        items: [],\n        count: 0,\n        requestId: Constants.ReservedCorrelationIds.EmptyId\n    });\n    const appsResults$ = entityType === Constants.FilteredSearchType.All || entityType === Constants.FilteredSearchType.Apps ? entityRestClient.getFilteredApps({\n        urlQuery,\n        searchActionType: Constants.Search.ActionType.Suggestions,\n        requestId\n    }) : emptyResults;\n    const servicesResults$ = entityType === Constants.FilteredSearchType.All || entityType === Constants.FilteredSearchType.Services ? entityRestClient.getFilteredServices({\n        urlQuery,\n        searchActionType: Constants.Search.ActionType.Suggestions,\n        requestId\n    }) : emptyResults;\n    const cloudsIndustryResults$ = state.config.isAppSource && (entityType === Constants.FilteredSearchType.All || entityType === Constants.FilteredSearchType.CloudsIndustry) ? entityRestClient.getFilteredCloudsIndustry({\n        urlQuery,\n        searchActionType: Constants.Search.ActionType.Suggestions,\n        requestId\n    }) : emptyResults;\n    return {\n        appsResults$,\n        servicesResults$,\n        cloudsIndustryResults$\n    };\n};\nexport function performFilteredSearch({ entityType, searchString, searchId, considerFilters, requestId }) {\n    return /*#__PURE__*/ function() {\n        var _ref = _async_to_generator(function*(dispatch, getState) {\n            const startTime = Date.now();\n            let searchPhase = Constants.FilteredSearchPhase.Started;\n            const resultsString = Constants.searchTypeString.AppsAndServices;\n            searchString = getSearchQuery(searchString);\n            dispatch(createSearchboxInputChangedAction({\n                searchString\n            }));\n            const state = getState();\n            const urlQuery = _object_spread(_object_spread_props(_object_spread({}, considerFilters ? state.config.requestFilteredQuery : {}), {\n                [Constants.TileDataAdditionalQueryParams.country]: state.services.selectedCountry,\n                [Constants.TileDataAdditionalQueryParams.region]: state.services.selectedRegion,\n                [Constants.TileDataAdditionalQueryParams.page]: '1',\n                [Constants.TileDataFilteredQueryParams.search]: searchString\n            }), getActiveFeaturedFlags(state.config.featureFlags));\n            const { appsResults$, servicesResults$, cloudsIndustryResults$ } = extractSearchPromises({\n                entityType,\n                urlQuery,\n                requestId,\n                state\n            });\n            return Promise.all([\n                appsResults$,\n                servicesResults$,\n                cloudsIndustryResults$\n            ]).then(([appsResults, servicesResults, cloudsIndustryResults])=>{\n                var _apps_, _services_, _cloudsIndustry_;\n                searchPhase = Constants.FilteredSearchPhase.SearchResultsReturned;\n                const duration = Date.now() - startTime;\n                let bundleCount = 0;\n                let apps = appsResults.items;\n                const services = servicesResults.items;\n                const cloudsIndustry = cloudsIndustryResults.items;\n                const results = removeDuplicateAddIns(apps, 'entityId');\n                apps = results.apps;\n                bundleCount = results.bundleCount;\n                searchPhase = Constants.FilteredSearchPhase.DuplicateAddInsRemoved;\n                const requestId = appsResults.requestId || servicesResults.requestId || cloudsIndustryResults.requestId;\n                const searchResponseId = appsResults.searchResponseId;\n                dispatch(createFilteredSearchResultsReceivedAction({\n                    appSearchResults: apps,\n                    servicesSearchResults: services,\n                    cloudsIndustrySearchResults: cloudsIndustry,\n                    appsCount: appsResults.count - results.duplicateAddInsCount,\n                    servicesCount: servicesResults.count,\n                    cloudsIndustryCount: cloudsIndustryResults.count,\n                    searchid: searchId + 1,\n                    requestId,\n                    searchResponseId\n                }));\n                searchPhase = Constants.FilteredSearchPhase.SearchActionCreated;\n                logSearchTelemetry(Constants.Telemetry.ActionModifier.Suggestions, {\n                    results: resultsString,\n                    searchTerm: searchString,\n                    appResults: (apps === null || apps === void 0 ? void 0 : apps.length) || 0,\n                    servicesResults: (services === null || services === void 0 ? void 0 : services.length) || 0,\n                    cloudsIndustry: (cloudsIndustry === null || cloudsIndustry === void 0 ? void 0 : cloudsIndustry.length) || 0,\n                    bundleAppResults: bundleCount,\n                    duration,\n                    origin: ((_apps_ = apps[0]) === null || _apps_ === void 0 ? void 0 : _apps_.origin) || ((_services_ = services[0]) === null || _services_ === void 0 ? void 0 : _services_.origin) || ((_cloudsIndustry_ = cloudsIndustry[0]) === null || _cloudsIndustry_ === void 0 ? void 0 : _cloudsIndustry_.origin) || null,\n                    topResults: takeTopResults({\n                        apps,\n                        services,\n                        cloudsIndustry\n                    }),\n                    requestId,\n                    searchResponseId\n                });\n                searchPhase = Constants.FilteredSearchPhase.SearchTelemetryLogged;\n                return [\n                    apps,\n                    services,\n                    cloudsIndustry\n                ];\n            }).catch((error)=>{\n                var _error_response;\n                logSearchTelemetry(Constants.Telemetry.ActionModifier.Error, {\n                    results: resultsString,\n                    searchTerm: searchString,\n                    duration: Date.now() - startTime,\n                    error: stringifyError(error),\n                    responseError: (_error_response = error.response) === null || _error_response === void 0 ? void 0 : _error_response.body,\n                    searchPhase\n                });\n                return [\n                    [],\n                    [],\n                    []\n                ];\n            });\n        });\n        return function(dispatch, getState) {\n            return _ref.apply(this, arguments);\n        };\n    }();\n}\n/** Get product from ARM, for private OR for public. If private or both do cannot be found, this means one of the following:\n * 1. There's an issue with catalog and ingestion (probably ICM)\n * 2. It's a preview offer, in that case there should be flightcode with the request\n * */ export function getProduct(entityId, market) {\n    return /*#__PURE__*/ function() {\n        var _ref = _async_to_generator(function*(dispatch, getState) {\n            dispatch(createFetchingProductAction());\n            let product;\n            try {\n                const mprpAppData = yield armRestClient.getPrivateOrPublicPublicId(entityId, market); // Catches restricted audience\n                product = new Product(mprpAppData);\n            } catch (ex) {\n                // Search for preview offer in CatalogApi with flightCode.\n                // Call from armRestClient doesn't accept flight code so we have to call catalogApi directly.\n                // This is relevant for publishers who want to test the preview without adding themselves to the restricted audience list for preview\n                const flightCodes = getState().config.flightCodes;\n                const mprpAppData = yield catalogApiRestClient.getProduct(entityId, flightCodes, market);\n                product = new Product(mprpAppData);\n            } finally{\n                dispatch(createProduct({\n                    id: entityId,\n                    product\n                }));\n            }\n        });\n        return function(dispatch, getState) {\n            return _ref.apply(this, arguments);\n        };\n    }();\n}\nexport function performPartnersSearch(searchString) {\n    return /*#__PURE__*/ function() {\n        var _ref = _async_to_generator(function*(dispatch, getState) {\n            const startTime = Date.now();\n            const searchPhase = Constants.FilteredSearchPhase.Started;\n            const resultsString = Constants.searchTypeString.Partners;\n            searchString = getSearchQuery(searchString);\n            dispatch(createSearchboxInputChangedAction({\n                searchString\n            }));\n            if (searchString.length < 2) {\n                return;\n            }\n            const partnerSearchResponse = yield entityRestClient.searchPartners(searchString, getState().config.locale || Constants.DefaultLocale, getState().config.partnersApiHost).catch((error)=>{\n                logSearchTelemetry(Constants.Telemetry.ActionModifier.Error, {\n                    results: resultsString,\n                    searchTerm: searchString,\n                    duration: Date.now() - startTime,\n                    error: stringifyError(error),\n                    searchPhase\n                });\n                return [\n                    [],\n                    [],\n                    []\n                ];\n            });\n            let partnerSearchResults = [];\n            if (partnerSearchResponse && partnerSearchResponse.suggestions) {\n                partnerSearchResults = partnerSearchResponse.suggestions.map((suggestion)=>{\n                    return {\n                        id: suggestion.val,\n                        logo: undefined,\n                        text: suggestion.text,\n                        type: Constants.searchItemType.partner,\n                        original: {\n                            type: suggestion.type,\n                            val: suggestion.val,\n                            text: suggestion.text\n                        }\n                    };\n                });\n            }\n            dispatch(createPartnerSearchResultsReceivedAction({\n                partnerSearchResults\n            }));\n        });\n        return function(dispatch, getState) {\n            return _ref.apply(this, arguments);\n        };\n    }();\n}\nexport function performSearchAll(rawSearchText, // eslint-disable-next-line @typescript-eslint/no-unused-vars\nsearchSortingOption = Constants.SearchSortingOption.BestMatch) {\n    return function(dispatch) {\n        return dispatchSearchQueryChangedAction(dispatch, rawSearchText);\n    };\n}\nexport function getAppPricing(entityId) {\n    return /*#__PURE__*/ function() {\n        var _ref = _async_to_generator(function*(dispatch, getState) {\n            const { isEmbedded, billingCountryCode: billingRegion, flightCodes, featureFlags } = getState().config;\n            const urlQuery = getActiveFeaturedFlags(featureFlags);\n            let appPricing$;\n            if (__CLIENT__) {\n                appPricing$ = entityRestClient.getAppPricing({\n                    entityId,\n                    isEmbedded,\n                    flightCodes,\n                    billingRegion,\n                    urlQuery\n                });\n            } else {\n                appPricing$ = pricingViewService.getAppDetailPricing({\n                    request: mockRequest({\n                        state: getState()\n                    }),\n                    entityId,\n                    isEmbedded,\n                    billingRegion,\n                    flightCodes,\n                    featureFlags\n                });\n            }\n            let futurePrices$;\n            if (__CLIENT__) {\n                futurePrices$ = entityRestClient.getFuturePrices({\n                    entityId,\n                    isEmbedded,\n                    flightCodes,\n                    billingRegion\n                });\n            } else {\n                futurePrices$ = pricingViewService.getAppDetailFuturePricing({\n                    request: mockRequest({\n                        state: getState()\n                    }),\n                    entityId,\n                    isEmbedded,\n                    billingRegion,\n                    flightCodes,\n                    featureFlags\n                });\n            }\n            const [pricing, futurePrices] = yield Promise.all([\n                appPricing$.catch((error)=>{\n                    dispatch(createAppDetailPricingReceivedAction({\n                        entityId,\n                        pricing: {\n                            billingRegion\n                        },\n                        futurePrices: null\n                    }));\n                    throw error;\n                }),\n                futurePrices$.catch(()=>{\n                    // If the request for future price failed the PDP will be load without future price.\n                    return null;\n                })\n            ]);\n            dispatch(createAppDetailPricingReceivedAction({\n                entityId,\n                pricing,\n                futurePrices\n            }));\n            return [\n                pricing,\n                futurePrices\n            ];\n        });\n        return function(dispatch, getState) {\n            return _ref.apply(this, arguments);\n        };\n    }();\n}\nexport function getAppDetail(entityId, isPrivate) {\n    return /*#__PURE__*/ function() {\n        var _ref = _async_to_generator(function*(dispatch, getState) {\n            const { billingCountryCode: billingRegion, flightCodes } = getState().config;\n            let entityDetails$;\n            if (isPrivate) {\n                entityDetails$ = ensurePrivateOffer(entityId, billingRegion, getState);\n            } else {\n                if (__CLIENT__) {\n                    entityDetails$ = entityRestClient.getApp({\n                        entityId,\n                        flightCodes\n                    });\n                } else {\n                    entityDetails$ = detailsViewService.getAppDetailView({\n                        entityId,\n                        flightCodes,\n                        request: mockRequest({\n                            state: getState()\n                        })\n                    });\n                }\n            }\n            const entityDetails = yield entityDetails$;\n            if (isPrivate) {\n                dispatch(createEntityFullDataReceivedAction({\n                    entityType: Constants.EntityType.App,\n                    entityDetails\n                }));\n            } else {\n                dispatch(createEntityDetailsReceivedAction({\n                    entityType: Constants.EntityType.App,\n                    entityDetails\n                }));\n                dispatch(createEntityDetailsReceivedAction({\n                    entityType: Constants.EntityType.CloudsIndustry,\n                    entityDetails\n                }));\n                if (getState().apps.pricingPayload) {\n                    dispatch(createAppPricingDataReceivedAction({\n                        entityId,\n                        pricingPayload: getState().apps.pricingPayload\n                    }));\n                }\n            }\n            return entityDetails;\n        });\n        return function(dispatch, getState) {\n            return _ref.apply(this, arguments);\n        };\n    }();\n}\nexport function getAppRelatedAppsItems(entityId) {\n    return /*#__PURE__*/ function() {\n        var _ref = _async_to_generator(function*(dispatch, getState) {\n            var _getProductByUrlKey;\n            const action = Constants.Telemetry.Action.GetAppSuggestedItems;\n            const start = Date.now();\n            const embedHost = (_getProductByUrlKey = getProductByUrlKey({\n                urlKey: getState().config.embedHost\n            })) === null || _getProductByUrlKey === void 0 ? void 0 : _getProductByUrlKey.UrlKey;\n            telemtry(action, Constants.Telemetry.ActionModifier.Start, {\n                entityId,\n                embedHost\n            });\n            dispatch(createRelatedAppsItemsLoadingAction({\n                entityType: Constants.EntityType.App,\n                entityId\n            }));\n            let relatedAppsItems$;\n            if (__CLIENT__) {\n                relatedAppsItems$ = entityRestClient.getAppRelatedAppsItems(entityId, embedHost);\n            } else {\n                relatedAppsItems$ = tilesViewService.getAppRelatedAppsItemsView({\n                    entityId,\n                    embedHost,\n                    request: mockRequest({\n                        state: getState()\n                    }),\n                    flightCodes: getState().config.flightCodes\n                });\n            }\n            try {\n                var _relatedAppsItems_suggestedItems, _relatedAppsItems_saasLinkingItems, _relatedAppsItems_linkedAddIns;\n                const relatedAppsItems = (yield relatedAppsItems$) || {\n                    saasLinkingItems: [],\n                    suggestedItems: [],\n                    linkedAddIns: []\n                };\n                telemtry(action, Constants.Telemetry.ActionModifier.End, {\n                    duration: Date.now() - start,\n                    entityId,\n                    suggestedItems: (_relatedAppsItems_suggestedItems = relatedAppsItems.suggestedItems) === null || _relatedAppsItems_suggestedItems === void 0 ? void 0 : _relatedAppsItems_suggestedItems.map((item)=>item.entityId),\n                    saasLinkingItems: (_relatedAppsItems_saasLinkingItems = relatedAppsItems.saasLinkingItems) === null || _relatedAppsItems_saasLinkingItems === void 0 ? void 0 : _relatedAppsItems_saasLinkingItems.map((item)=>item.entityId),\n                    linkedAddIns: (_relatedAppsItems_linkedAddIns = relatedAppsItems.linkedAddIns) === null || _relatedAppsItems_linkedAddIns === void 0 ? void 0 : _relatedAppsItems_linkedAddIns.map((item)=>item.entityId)\n                });\n                dispatch(createRelatedAppsItemsReceivedAction({\n                    entityType: Constants.EntityType.App,\n                    entityId,\n                    relatedAppsItems\n                }));\n                if (getState().apps.pricingPayload) {\n                    dispatch(createRelatedAppsItemsPricingDataReceivedAction(getState().apps.pricingPayload));\n                }\n                return relatedAppsItems;\n            } catch (error) {\n                telemtry(action, Constants.Telemetry.ActionModifier.Error, {\n                    duration: Date.now() - start,\n                    entityId,\n                    error: stringifyError(error)\n                });\n                throw error;\n            }\n        });\n        return function(dispatch, getState) {\n            return _ref.apply(this, arguments);\n        };\n    }();\n}\nexport function getServiceRelatedAppsItems(entityId) {\n    return /*#__PURE__*/ function() {\n        var _ref = _async_to_generator(function*(dispatch, getState) {\n            const start = Date.now();\n            const action = Constants.Telemetry.Action.GetServiceSuggestedItems;\n            const query = getState().config.query;\n            const country = extractCountryCodeFromQueryParam(query);\n            const region = query && query.region || getState().services.selectedRegion;\n            telemtry(action, Constants.Telemetry.ActionModifier.Start, {\n                entityId\n            });\n            dispatch(createRelatedAppsItemsLoadingAction({\n                entityType: Constants.EntityType.Service,\n                entityId\n            }));\n            try {\n                var _relatedAppsItems_suggestedItems, _relatedAppsItems_saasLinkingItems, _relatedAppsItems_linkedAddIns;\n                let relatedAppsItems$;\n                if (__CLIENT__) {\n                    relatedAppsItems$ = entityRestClient.getServiceRelatedAppsItems(entityId, country, region);\n                } else {\n                    relatedAppsItems$ = servicesViewService.getServiceSuggestedItemsView({\n                        country,\n                        region,\n                        entityId,\n                        request: mockRequest({\n                            state: getState()\n                        })\n                    });\n                }\n                const relatedAppsItems = (yield relatedAppsItems$) || {\n                    saasLinkingItems: [],\n                    suggestedItems: [],\n                    linkedAddIns: []\n                };\n                telemtry(action, Constants.Telemetry.ActionModifier.End, {\n                    duration: Date.now() - start,\n                    entityId,\n                    suggestedItems: (_relatedAppsItems_suggestedItems = relatedAppsItems.suggestedItems) === null || _relatedAppsItems_suggestedItems === void 0 ? void 0 : _relatedAppsItems_suggestedItems.map((item)=>item.entityId),\n                    saasLinkingItems: (_relatedAppsItems_saasLinkingItems = relatedAppsItems.saasLinkingItems) === null || _relatedAppsItems_saasLinkingItems === void 0 ? void 0 : _relatedAppsItems_saasLinkingItems.map((item)=>item.entityId),\n                    linkedAddIns: (_relatedAppsItems_linkedAddIns = relatedAppsItems.linkedAddIns) === null || _relatedAppsItems_linkedAddIns === void 0 ? void 0 : _relatedAppsItems_linkedAddIns.map((item)=>item.entityId)\n                });\n                dispatch(createRelatedAppsItemsReceivedAction({\n                    entityType: Constants.EntityType.Service,\n                    entityId,\n                    relatedAppsItems\n                }));\n                return relatedAppsItems;\n            } catch (error) {\n                telemtry(action, Constants.Telemetry.ActionModifier.Error, {\n                    duration: Date.now() - start,\n                    entityId,\n                    error: stringifyError(error)\n                });\n                throw error;\n            }\n        });\n        return function(dispatch, getState) {\n            return _ref.apply(this, arguments);\n        };\n    }();\n}\nexport function changeBillingRegion({ countryCode, shouldSetCountyCodeCookie = true }) {\n    return /*#__PURE__*/ function() {\n        var _ref = _async_to_generator(function*(dispatch, getState) {\n            const { billingCountryCode, pricingDataLoaded, featureFlags } = getState().config;\n            const urlQuery = getActiveFeaturedFlags(featureFlags);\n            if (!countryCode) {\n                countryCode = getCookieItem(Constants.Cookies.billingRegionCookie, false) || AzureEnvironmentSettings.defaultCountryCode;\n                dispatch(createBillingRegionReadFromCookieAction({\n                    billingRegion: countryCode\n                }));\n            }\n            if (countryCode === billingCountryCode && pricingDataLoaded) {\n                return;\n            }\n            dispatch(createAppPricingDataRequestedAction(null));\n            try {\n                const appsPricings = yield entityRestClient.getAllAppsPricing({\n                    billingRegion: countryCode,\n                    urlQuery\n                });\n                const { billingRegion, startingPrices } = appsPricings || {};\n                if (billingRegion && shouldSetCountyCodeCookie) {\n                    saveCookieItem(Constants.Cookies.billingRegionCookie, billingRegion);\n                }\n                const pricingPayload = {\n                    pricingData: startingPrices,\n                    countryCode: billingRegion\n                };\n                dispatch(createAppsPricingDataReceivedAction(pricingPayload));\n                dispatch(createFavouriteAppsPricingDataReceivedAction(pricingPayload));\n                dispatch(createRelatedAppsItemsPricingDataReceivedAction(pricingPayload));\n                dispatch(createRecommendedAppsItemsPricingDataReceivedAction(pricingPayload));\n                return appsPricings;\n            } catch (error) {\n                const pricingPayload = {\n                    pricingData: {},\n                    countryCode\n                };\n                dispatch(createAppsPricingDataReceivedAction(pricingPayload));\n                dispatch(createRecommendedAppsItemsPricingDataReceivedAction(pricingPayload));\n            }\n        });\n        return function(dispatch, getState) {\n            return _ref.apply(this, arguments);\n        };\n    }();\n}\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nfunction updateUserInfoForEmbed(userInfo) {\n    const cookie = getCookieItem('appsourcelead');\n    let isAlternateEmailFromCookie = false;\n    if (cookie && cookie.alternateEmail && cookie.email) {\n        const userEmail = userInfo && userInfo.email ? userInfo.email.toLowerCase() : ' ';\n        // If userInfo already has alternateEmail (from graph call on server), do NOT overwrite it here\n        // also ensure that cookie's email is matching useremail to avoid scenario where user signs in into other sites that updated the cookie to some MSA\n        if (!userInfo.alternateEmail && userEmail === cookie.email.toLowerCase()) {\n            userInfo.alternateEmail = cookie.alternateEmail;\n            isAlternateEmailFromCookie = true;\n        }\n    }\n    const payload = {\n        page: getWindow().location.href,\n        action: Constants.Telemetry.Action.PageLoad,\n        actionModifier: Constants.Telemetry.ActionModifier.CookieData,\n        details: JSON.stringify({\n            alternateEmailExists: !!(cookie && cookie.alternateEmail),\n            emailHasOnMicrosoft: userInfo && userInfo.email ? isOnMicrosoftEmail(userInfo.email) : false,\n            alternateEmailFromCookie: isAlternateEmailFromCookie\n        })\n    };\n    SpzaInstrumentService.getProvider().probe('logTelemetryInfo', payload);\n    logger.info(payload.details, {\n        action: payload.action,\n        actionModifier: payload.actionModifier\n    });\n    return userInfo;\n}\nexport function sendLead(payload) {\n    return /*#__PURE__*/ _async_to_generator(function*() {\n        const requestId = generateGuid();\n        telemtry(Constants.Telemetry.Action.SendLead, Constants.Telemetry.ActionModifier.InProgress, {\n            payload: scrubLeadPayload(payload),\n            requestId\n        });\n        const startTime = Date.now();\n        try {\n            yield leadgenRestClient.sendLead(payload, {\n                requestId\n            });\n            telemtry(Constants.Telemetry.Action.SendLead, Constants.Telemetry.ActionModifier.End, {\n                duration: Date.now() - startTime,\n                requestId\n            });\n        } catch (error) {\n            const errorMessage = stringifyError(error);\n            telemtry(Constants.Telemetry.Action.SendLead, Constants.Telemetry.ActionModifier.Error, {\n                errorMessage,\n                duration: Date.now() - startTime,\n                requestId\n            });\n            throw new Error(errorMessage);\n        }\n    });\n}\nexport function sendLeadInfo({ item, ctaType, notes, planId }) {\n    return function(dispatch, getState) {\n        try {\n            telemtry(Constants.Telemetry.Action.SendLeadInfo, Constants.Telemetry.ActionModifier.Start, {});\n            if (!item) {\n                throw new Error(Constants.Telemetry.LeadsDropReason.ItemNotAvailable);\n            }\n            const isService = item.entityType === Constants.EntityType.Service;\n            const state = getState();\n            const userState = state.users;\n            const customerInfo = {\n                firstName: userState.profile.firstName,\n                lastName: userState.profile.lastName,\n                phone: userState.profile.phone,\n                country: userState.profile.country,\n                company: userState.profile.company,\n                title: userState.profile.title\n            };\n            const { landingView, currentView, isEmbedded, embedHost } = state.config;\n            const url = getWindow().location.href;\n            const campaigns = getCampaignsForAcquisitionFromUrl({\n                url,\n                landingView,\n                currentView,\n                previousPage,\n                routes,\n                entityId: item.entityId\n            });\n            const privateApp = isService ? false : item === null || item === void 0 ? void 0 : item.privateApp;\n            const actionCode = isService ? Constants.ActionCodes.ConsultingServices : undefined;\n            const payload = createLeadPayload({\n                entityId: item.entityId,\n                privateApp,\n                ctaType,\n                actionCode,\n                campaigns,\n                customerInfo,\n                notes,\n                uniquePlanId: planId,\n                isEmbedded,\n                embedHost\n            });\n            return Promise.all([\n                dispatch(sendLead(payload)),\n                dispatch(createClearUserPropertiesAction(null))\n            ]);\n        } catch (error) {\n            telemtry(Constants.Telemetry.Action.SendLeadInfo, Constants.Telemetry.ActionModifier.Error, {\n                error\n            });\n            throw error;\n        }\n    };\n}\nexport function loadUserProductReviewMetadata({ legacyId }) {\n    return /*#__PURE__*/ function() {\n        var _ref = _async_to_generator(function*(dispatch, getState) {\n            const { reviewsAPI, reviewsAPIVersion, featureFlags: { ReviewsMyCommentsFilter } } = getState().config;\n            if (ReviewsMyCommentsFilter === 'true') {\n                try {\n                    const { commentReviewIds } = yield reviewsCatalogRestClient.getReviewsMetadata({\n                        reviewsAPI,\n                        reviewsAPIVersion,\n                        legacyId\n                    });\n                    dispatch(createEntityUserCommentedReviewIdsUpdateListAction({\n                        commentReviewIds\n                    }));\n                } catch (error) {\n                    launchReviewsTelemetry(Constants.Telemetry.Action.Error, Constants.Telemetry.ActionModifier.ReviewItemCommentedReviewIds, {\n                        error\n                    });\n                    logger.error(stringifyError(error), {\n                        action: Constants.Telemetry.Action.Error,\n                        actionModifier: Constants.Telemetry.ActionModifier.ReviewItemCommentedReviewIds\n                    });\n                    dispatch(createEntityUserCommentedReviewIdsUpdateListAction({\n                        commentReviewIds: []\n                    }));\n                }\n            }\n        });\n        return function(dispatch, getState) {\n            return _ref.apply(this, arguments);\n        };\n    }();\n}\nexport function getReviews(authMethod, authKey, entityId) {\n    return function() {\n        return reviewRestClient.get(authMethod, authKey, entityId);\n    };\n}\nexport function deleteReview(reviewFormData) {\n    return function(dispatch, getState) {\n        const { reviewsAPI, reviewsAPIVersion } = getState().config;\n        const { reviewId, offerId } = reviewFormData;\n        return userReviewRestClient.remove({\n            reviewsAPI,\n            reviewsAPIVersion,\n            reviewId\n        }).then(()=>dispatch(getAppReviews(offerId)), dispatch(loadUserProductReviewMetadata({\n            legacyId: offerId\n        })));\n    };\n}\nexport function submitReview(reviewFormData) {\n    return function(dispatch, getState) {\n        const { reviewsAPI, reviewsAPIVersion, storefrontName: source } = getState().config;\n        const { offerId } = reviewFormData;\n        return userReviewRestClient.submit(_object_spread_props(_object_spread({\n            reviewsAPI,\n            reviewsAPIVersion\n        }, reviewFormData), {\n            source\n        })).then(()=>dispatch(getAppReviews(offerId)));\n    };\n}\nexport function updateReview(reviewFormData) {\n    return function(dispatch, getState) {\n        const { reviewsAPI, reviewsAPIVersion } = getState().config;\n        const { offerId } = reviewFormData;\n        return userReviewRestClient.update(_object_spread({\n            reviewsAPI,\n            reviewsAPIVersion\n        }, reviewFormData)).then(()=>dispatch(getAppReviews(offerId)));\n    };\n}\nexport function getReportEmbedToken(reportData) {\n    return function() {\n        return fieldHubRestClient.generateReportEmbedToken(reportData);\n    };\n}\n// for appsource, we do not support field hub yet\nexport function updateFieldHubUserType() {\n    return function() {\n        return Promise.resolve();\n    };\n}\nexport function getFilteredServiceData() {\n    return function() {\n        return Promise.resolve();\n    };\n}\nexport function getAppReviewCommentCollection({ offerId, reviewId, page, itemsPerPage }) {\n    return /*#__PURE__*/ function() {\n        var _ref = _async_to_generator(function*(dispatch, getState) {\n            const { reviewsAPI, reviewsAPIVersion } = getState().config;\n            dispatch(createEntityReviewCommentsLoadingAction({\n                offerId,\n                reviewId,\n                isLoading: true\n            }));\n            const res = yield appReviewCommentsRestClient.getAppReviewComments({\n                offerId,\n                reviewId,\n                page,\n                itemsPerPage,\n                reviewsAPI,\n                reviewsAPIVersion\n            });\n            dispatch(createEntityReviewCommentsUpdateTotalCommentCountAction({\n                reviewId,\n                offerId,\n                totalComments: res.totalComments\n            }));\n            dispatch(createEntityReviewCommentsReceivedAction({\n                offerId,\n                reviewId,\n                comments: res.comments,\n                pageNumber: page\n            }));\n            dispatch(createEntityReviewCommentsLoadingAction({\n                offerId,\n                reviewId,\n                isLoading: false\n            }));\n        });\n        return function(dispatch, getState) {\n            return _ref.apply(this, arguments);\n        };\n    }();\n}\nexport function clearAppReviewCommentCollection({ offerId, reviewId }) {\n    return function(dispatch) {\n        dispatch(createEntityReviewCommentsCleanupAction({\n            reviewId,\n            offerId\n        }));\n    };\n}\nexport function ensureAppReviewCommentCollectionData({ offerId, reviewId, page, itemsPerPage }) {\n    return function(dispatch) {\n        dispatch(getAppReviewCommentCollection({\n            offerId,\n            reviewId,\n            page,\n            itemsPerPage\n        }));\n    };\n}\nexport function ensureAppReviewCommentCollectionStateInitialized({ offerId, reviewId, totalComments }) {\n    return function(dispatch) {\n        dispatch(createEntityReviewCommentsInitializeStateAction({\n            offerId,\n            reviewId,\n            totalComments\n        }));\n    };\n}\nexport function ensureClearAppReviewCommentCollectionData({ offerId, reviewId }) {\n    return function(dispatch) {\n        dispatch(clearAppReviewCommentCollection({\n            offerId,\n            reviewId\n        }));\n    };\n}\nexport function createAppReviewComment({ offerId, reviewId, commentContent, isNewlyAddedComment = false }) {\n    return /*#__PURE__*/ function() {\n        var _ref = _async_to_generator(function*(dispatch, getState) {\n            const { reviewsAPI, reviewsAPIVersion, storefrontName: source } = getState().config;\n            dispatch(createEntityReviewCommentModalAction({\n                showModal: true,\n                modalMode: Constants.Reviews.ReviewCommentModalMode.Loading\n            }));\n            const actionResult = yield appReviewCommentsRestClient.createReviewComment({\n                offerId,\n                reviewId,\n                commentContent,\n                reviewsAPI,\n                reviewsAPIVersion,\n                source\n            });\n            dispatch(createEntityReviewCommentCreateResult({\n                reviewId,\n                offerId,\n                actionResult,\n                isNewlyAddedComment\n            }));\n            if (!actionResult || actionResult.error) {\n                dispatch(createEntityReviewCommentModalAction({\n                    showModal: true,\n                    modalMode: actionResult.error === Constants.Reviews.ReviewCommentActionError.ContentViolation ? Constants.Reviews.ReviewCommentModalMode.ContentViolation : Constants.Reviews.ReviewCommentModalMode.CreateError\n                }));\n            } else {\n                // Hide loader\n                dispatch(createEntityReviewCommentModalAction({\n                    showModal: false,\n                    modalMode: Constants.Reviews.ReviewCommentModalMode.Loading\n                }));\n                dispatch(loadUserProductReviewMetadata({\n                    legacyId: offerId\n                }));\n            }\n            return actionResult;\n        });\n        return function(dispatch, getState) {\n            return _ref.apply(this, arguments);\n        };\n    }();\n}\nexport function deleteReviewComment({ offerId, reviewId, commentId, isNewlyAddedComment = false }) {\n    return /*#__PURE__*/ function() {\n        var _ref = _async_to_generator(function*(dispatch, getState) {\n            const { reviewsAPI, reviewsAPIVersion } = getState().config;\n            const actionResult = yield appReviewCommentsRestClient.deleteReviewComment({\n                offerId,\n                reviewId,\n                commentId,\n                reviewsAPI,\n                reviewsAPIVersion\n            });\n            dispatch(createEntityReviewCommentDeleteResult({\n                reviewId,\n                offerId,\n                actionResult,\n                isNewlyAddedComment\n            }));\n            dispatch(loadUserProductReviewMetadata({\n                legacyId: offerId\n            }));\n            return actionResult;\n        });\n        return function(dispatch, getState) {\n            return _ref.apply(this, arguments);\n        };\n    }();\n}\nexport function updateReviewComment({ offerId, reviewId, commentId, commentContent, isNewlyAddedComment = false }) {\n    return /*#__PURE__*/ function() {\n        var _ref = _async_to_generator(function*(dispatch, getState) {\n            const { reviewsAPI, reviewsAPIVersion } = getState().config;\n            const actionResult = yield appReviewCommentsRestClient.updateReviewComment({\n                offerId,\n                reviewId,\n                commentId,\n                commentContent,\n                reviewsAPI,\n                reviewsAPIVersion\n            });\n            dispatch(createEntityReviewCommentUpdateResult({\n                reviewId,\n                offerId,\n                actionResult,\n                isNewlyAddedComment\n            }));\n            return actionResult;\n        });\n        return function(dispatch, getState) {\n            return _ref.apply(this, arguments);\n        };\n    }();\n}\nexport function loadUserMarkedAsHelpfulReviews({ offerId }) {\n    return /*#__PURE__*/ function() {\n        var _ref = _async_to_generator(function*(dispatch, getState) {\n            const { reviewsAPI, reviewsAPIVersion } = getState().config;\n            const { reviewIds, error } = yield appReviewMarkAsHelpfulRestClient.getUserReviewsMarkedAsHelpful({\n                reviewsAPI,\n                reviewsAPIVersion,\n                offerId\n            });\n            if (!error) {\n                dispatch(createEntityMarkedAsHelpfulReviewUpdateListAction({\n                    offerId,\n                    reviewIds\n                }));\n            } else {\n                launchReviewsTelemetry(Constants.Telemetry.Action.Error, Constants.Telemetry.ActionModifier.ReviewsGetMarkedAsHelpful, {\n                    error\n                });\n                logger.error(JSON.stringify({\n                    error\n                }), {\n                    action: Constants.Telemetry.Action.Error,\n                    actionModifier: Constants.Telemetry.ActionModifier.ReviewsGetMarkedAsHelpful\n                });\n            }\n        });\n        return function(dispatch, getState) {\n            return _ref.apply(this, arguments);\n        };\n    }();\n}\nexport function loadLinkedInProductGroup({ legacyOfferId }) {\n    return /*#__PURE__*/ function() {\n        var _ref = _async_to_generator(function*(dispatch, getState) {\n            const { linkedinAPI, linkedinAPIVersion } = getState().config;\n            try {\n                const { linkedInProductGroup } = yield linkedInRestClient.getLinkedInProductgroupInfo({\n                    legacyOfferId,\n                    linkedinAPI,\n                    linkedinAPIVersion\n                });\n                dispatch(createEntityLinkedInProductGroupUpdateAction({\n                    legacyOfferId,\n                    linkedInProductGroup\n                }));\n            } catch (error) {\n                launchReviewsTelemetry(Constants.Telemetry.Action.Error, Constants.Telemetry.ActionModifier.GetLinkedInProductGroup, {\n                    error\n                });\n                logger.error(stringifyError({\n                    error\n                }), {\n                    action: Constants.Telemetry.Action.Error,\n                    actionModifier: Constants.Telemetry.ActionModifier.GetLinkedInProductGroup\n                });\n            }\n        });\n        return function(dispatch, getState) {\n            return _ref.apply(this, arguments);\n        };\n    }();\n}\nexport function reportItem(itemReport) {\n    return /*#__PURE__*/ function() {\n        var _ref = _async_to_generator(function*(dispatch, getState) {\n            const { communityAPI, communityAPIVersion } = getState().config;\n            try {\n                yield reportReviewRestClient.createReportReview({\n                    itemReport,\n                    communityAPI,\n                    communityAPIVersion\n                });\n            } catch (error) {\n                launchReviewsTelemetry(Constants.Telemetry.Action.Error, Constants.Telemetry.ActionModifier.ReportReview, {\n                    error\n                });\n                logger.error(stringifyError({\n                    error\n                }), {\n                    action: Constants.Telemetry.Action.Error,\n                    actionModifier: Constants.Telemetry.ActionModifier.ReportReview\n                });\n            }\n        });\n        return function(dispatch, getState) {\n            return _ref.apply(this, arguments);\n        };\n    }();\n}\nexport function setReviewMarkedAsHelpful({ offerId, review, isHelpful }) {\n    return /*#__PURE__*/ function() {\n        var _ref = _async_to_generator(function*(dispatch, getState) {\n            const state = getState();\n            const { reviewsAPI, reviewsAPIVersion, storefrontName: source } = state.config;\n            const { userReviewIdsLoading } = state.apps.appReviewsData.markedAsHelpful;\n            const { id: reviewId, mark_as_helpful_count: prevMarkAsHelpfulCount } = review;\n            const telemetryBasePayload = {\n                offerId,\n                reviewId,\n                isHelpful\n            };\n            if (!userReviewIdsLoading[`${reviewId}`]) {\n                dispatch(createEntityReviewSetIsHelpfulLoadingAction({\n                    reviewId,\n                    isLoading: true\n                }));\n                // Immediately update both the isHelpful value and the review's marked as helpful count to reflect the user's action\n                dispatch(createEntityReviewSetIsHelpfulAction({\n                    reviewId,\n                    isHelpful\n                }));\n                dispatch(createEntityReviewSetMarkAsHelpfulCount({\n                    count: prevMarkAsHelpfulCount + (isHelpful ? 1 : -1),\n                    reviewId\n                }));\n                launchReviewsTelemetry(Constants.Telemetry.Action.Submitting, Constants.Telemetry.ActionModifier.ReviewSetMarkedAsHelpful, telemetryBasePayload);\n                logger.info(JSON.stringify(telemetryBasePayload), {\n                    action: Constants.Telemetry.Action.Submitting,\n                    actionModifier: Constants.Telemetry.ActionModifier.ReviewSetMarkedAsHelpful\n                });\n                const { error } = yield appReviewMarkAsHelpfulRestClient.setReviewMarkedAsHelpful({\n                    offerId,\n                    reviewId,\n                    reviewsAPI,\n                    reviewsAPIVersion,\n                    isHelpful,\n                    source: isHelpful ? source : null\n                });\n                if (error) {\n                    launchReviewsTelemetry(Constants.Telemetry.Action.SubmitError, Constants.Telemetry.ActionModifier.ReviewSetMarkedAsHelpful, _object_spread_props(_object_spread({}, telemetryBasePayload), {\n                        error\n                    }));\n                    logger.error(JSON.stringify(_object_spread_props(_object_spread({}, telemetryBasePayload), {\n                        error\n                    })), {\n                        action: Constants.Telemetry.Action.SubmitError,\n                        actionModifier: Constants.Telemetry.ActionModifier.ReviewSetMarkedAsHelpful\n                    });\n                    // Display the error message\n                    dispatch(createEntityReviewMarkAsHelpfulModalAction({\n                        showModal: true\n                    }));\n                    // Set the is helpful and the count values back to what they were\n                    dispatch(createEntityReviewSetMarkAsHelpfulCount({\n                        count: prevMarkAsHelpfulCount,\n                        reviewId\n                    }));\n                    dispatch(createEntityReviewSetIsHelpfulAction({\n                        reviewId,\n                        isHelpful: !isHelpful\n                    }));\n                } else {\n                    launchReviewsTelemetry(Constants.Telemetry.Action.Submitted, Constants.Telemetry.ActionModifier.ReviewSetMarkedAsHelpful, telemetryBasePayload);\n                    logger.info(JSON.stringify(telemetryBasePayload), {\n                        action: Constants.Telemetry.Action.Submitted,\n                        actionModifier: Constants.Telemetry.ActionModifier.ReviewSetMarkedAsHelpful\n                    });\n                }\n                dispatch(createEntityReviewSetIsHelpfulLoadingAction({\n                    reviewId,\n                    isLoading: false\n                }));\n            }\n        });\n        return function(dispatch, getState) {\n            return _ref.apply(this, arguments);\n        };\n    }();\n}\nexport function ensureAppDetailsData(entityId, isPrivate) {\n    return function(dispatch, getState) {\n        if (!entityId) {\n            return Promise.resolve(false);\n        }\n        entityId = entityId.toLowerCase();\n        if (entityId === getState().apps.entityIdLoading) {\n            return Promise.resolve(false);\n        }\n        if (entityId === getState().apps.entityIdFailed) {\n            return Promise.resolve(false);\n        }\n        const promises = [];\n        if (shouldEnsureAppDetails(entityId, getState()) || isPrivate && shouldEnsureAppPricings(entityId, getState())) {\n            promises.push(dispatch(getAppDetail(entityId, isPrivate)));\n        }\n        if (shouldEnsureAppPricings(entityId, getState()) && !isPrivate) {\n            promises.push(dispatch(getAppPricing(entityId)));\n        }\n        if (shouldEnsureAppRelatedApps(entityId, getState()) && !isPrivate) {\n            promises.push(dispatch(getAppRelatedAppsItems(entityId)));\n        }\n        if (!promises.length) {\n            return Promise.resolve(false);\n        }\n        dispatch(createSetEntityIdLoadingAction({\n            entityType: Constants.EntityType.App,\n            entityId\n        }));\n        dispatch(createSetEntityIdFailedAction({\n            entityType: Constants.EntityType.App,\n            entityId: ''\n        }));\n        const start = Date.now();\n        return Promise.all(promises).then(()=>{\n            const payload = {\n                page: getWindow() && getWindow().location.href,\n                action: Constants.Telemetry.Action.EnsureAppDetailsData,\n                actionModifier: Constants.Telemetry.ActionModifier.End,\n                details: JSON.stringify({\n                    duration: Date.now() - start,\n                    entityId\n                })\n            };\n            SharedInstrumentService.getProvider().probe('logTelemetryInfo', payload);\n            logger.info(payload.details, {\n                action: payload.action,\n                actionModifier: payload.actionModifier\n            });\n            dispatch(createSetEntityIdLoadingAction({\n                entityType: Constants.EntityType.App,\n                entityId: ''\n            }));\n            return true;\n        }).catch((error)=>{\n            var _error_error;\n            const payload = {\n                page: getWindow() && getWindow().location.href,\n                action: Constants.Telemetry.Action.EnsureAppDetailsData,\n                actionModifier: Constants.Telemetry.ActionModifier.Error,\n                details: JSON.stringify({\n                    duration: Date.now() - start,\n                    error: stringifyError(error)\n                })\n            };\n            SharedInstrumentService.getProvider().probe('logTelemetryInfo', payload);\n            if ((error === null || error === void 0 ? void 0 : (_error_error = error.error) === null || _error_error === void 0 ? void 0 : _error_error.code) === StatusCodes.NOT_FOUND) {\n                logger.info(payload.details, {\n                    action: payload.action,\n                    actionModifier: payload.actionModifier\n                });\n            } else {\n                logger.error(payload.details, {\n                    action: payload.action,\n                    actionModifier: payload.actionModifier\n                });\n            }\n            dispatch(createSetEntityIdLoadingAction({\n                entityType: Constants.EntityType.App,\n                entityId: ''\n            }));\n            dispatch(createSetEntityIdFailedAction({\n                entityType: Constants.EntityType.App,\n                entityId\n            }));\n            throw error;\n        });\n    };\n}\nexport function getServiceDetail(entityId) {\n    return /*#__PURE__*/ function() {\n        var _ref = _async_to_generator(function*(dispatch, getState) {\n            const state = getState();\n            const { flightCodes } = state.config;\n            try {\n                let serviceDetailData$;\n                if (__CLIENT__) {\n                    serviceDetailData$ = entityRestClient.getServices(entityId, undefined, undefined, flightCodes);\n                } else {\n                    serviceDetailData$ = servicesDetailsViewService.getServiceDetailView({\n                        entityId,\n                        flightCodes,\n                        request: mockRequest({\n                            state: getState()\n                        })\n                    });\n                }\n                const serviceDetailData = yield serviceDetailData$;\n                const dispatchActionAndResolve = ()=>{\n                    dispatch(createEntityDetailsReceivedAction({\n                        entityType: Constants.EntityType.Service,\n                        entityDetails: serviceDetailData\n                    }));\n                    dispatch(createEntityDetailsReceivedAction({\n                        entityType: Constants.EntityType.CloudsIndustry,\n                        entityDetails: serviceDetailData\n                    }));\n                    return serviceDetailData;\n                };\n                dispatchActionAndResolve();\n            } catch (error) {\n                // we can recover from not getting app details, but for now I do not want to (no designed experience)\n                // the below dispatch is to make sure\n                dispatch(createEntityDetailsReceivedAction({\n                    entityType: Constants.EntityType.Service,\n                    entityDetails: null\n                }));\n                dispatch(createEntityDetailsReceivedAction({\n                    entityType: Constants.EntityType.CloudsIndustry,\n                    entityDetails: null\n                }));\n                throw error;\n            }\n        });\n        return function(dispatch, getState) {\n            return _ref.apply(this, arguments);\n        };\n    }();\n}\nexport function ensureServiceDetailsData(entityId) {\n    return function(dispatch, getState) {\n        if (!entityId) {\n            return Promise.resolve(false);\n        }\n        entityId = entityId.toLowerCase();\n        if (entityId === getState().services.entityIdLoading) {\n            return Promise.resolve(false);\n        }\n        if (entityId === getState().services.entityIdFailed) {\n            return Promise.resolve(false);\n        }\n        const promises = [];\n        if (shouldEnsureServiceDetails(entityId, getState())) {\n            promises.push(dispatch(getServiceDetail(entityId)));\n        }\n        if (shouldEnsureServiceRelatedApps(entityId, getState())) {\n            promises.push(dispatch(getServiceRelatedAppsItems(entityId)));\n        }\n        if (!promises.length) {\n            return Promise.resolve(false);\n        }\n        dispatch(createSetEntityIdFailedAction({\n            entityType: Constants.EntityType.Service,\n            entityId: ''\n        }));\n        dispatch(createSetEntityIdLoadingAction({\n            entityType: Constants.EntityType.Service,\n            entityId\n        }));\n        const start = Date.now();\n        return Promise.all(promises).then(()=>{\n            const payload = {\n                page: getWindow() && getWindow().location.href,\n                action: Constants.Telemetry.Action.EnsureServiceDetailsData,\n                actionModifier: Constants.Telemetry.ActionModifier.End,\n                details: JSON.stringify({\n                    duration: Date.now() - start,\n                    entityId\n                })\n            };\n            SpzaInstrumentService.getProvider().probe('logTelemetryInfo', payload);\n            logger.info(payload.details, {\n                action: payload.action,\n                actionModifier: payload.actionModifier\n            });\n            dispatch(createSetEntityIdLoadingAction({\n                entityType: Constants.EntityType.Service,\n                entityId: ''\n            }));\n            return true;\n        }).catch((error)=>{\n            const payload = {\n                page: getWindow() && getWindow().location.href,\n                action: Constants.Telemetry.Action.EnsureServiceDetailsData,\n                actionModifier: Constants.Telemetry.ActionModifier.Error,\n                details: JSON.stringify({\n                    duration: Date.now() - start,\n                    error: stringifyError(error)\n                })\n            };\n            SpzaInstrumentService.getProvider().probe('logTelemetryInfo', payload);\n            logger.error(payload.details, {\n                action: payload.action,\n                actionModifier: payload.actionModifier\n            });\n            dispatch(createSetEntityIdLoadingAction({\n                entityType: Constants.EntityType.Service,\n                entityId: ''\n            }));\n            dispatch(createSetEntityIdFailedAction({\n                entityType: Constants.EntityType.Service,\n                entityId\n            }));\n            throw error;\n        });\n    };\n}\nexport function getUserProfile() {\n    return /*#__PURE__*/ function() {\n        var _ref = _async_to_generator(function*(dispatch, getState) {\n            // user must be signed to get user profile and flag ProfileExp\n            if (!getState().users.signedIn || !(getState().config.featureFlags.ProfileExp === 'true')) {\n                return;\n            }\n            const payload = {\n                page: getWindow().location.href,\n                action: Constants.Telemetry.Action.getUserProfile,\n                actionModifier: Constants.Telemetry.ActionModifier.Start,\n                details: ''\n            };\n            SpzaInstrumentService.getProvider().probe('logTelemetryInfo', payload);\n            logger.info(payload.details, {\n                action: payload.action,\n                actionModifier: payload.actionModifier\n            });\n            dispatch(createUserProfileLoadingAction({\n                isLoading: true\n            }));\n            try {\n                const userProfile = yield userRestClient.getUserProfile();\n                SpzaInstrumentService.getProvider().probe('logTelemetryInfo', _object_spread_props(_object_spread({}, payload), {\n                    actionModifier: Constants.Telemetry.ActionModifier.End\n                }));\n                logger.info(payload.details, {\n                    action: payload.action,\n                    actionModifier: Constants.Telemetry.ActionModifier.End\n                });\n                dispatch(createUserProfileAction(userProfile));\n            } catch (err) {\n                const stringifiedError = stringifyError(err);\n                SpzaInstrumentService.getProvider().probe('logTelemetryInfo', _object_spread_props(_object_spread({}, payload), {\n                    actionModifier: Constants.Telemetry.ActionModifier.Error,\n                    details: stringifiedError\n                }));\n                logger.info(stringifiedError, {\n                    action: payload.action,\n                    actionModifier: Constants.Telemetry.ActionModifier.Error\n                });\n            } finally{\n                dispatch(createUserProfileLoadingAction({\n                    isLoading: false\n                }));\n            }\n        });\n        return function(dispatch, getState) {\n            return _ref.apply(this, arguments);\n        };\n    }();\n}\nexport function getCustomers() {\n    return function(dispatch, getState) {\n        const user = getState().users;\n        if (!user || !user.signedIn || user.isMSAUser) {\n            return Promise.resolve();\n        }\n        return new Promise((resolve)=>{\n            purchaseRestClient.getCustomers({\n                oid: user.oid,\n                tid: user.tid\n            }).then((customers)=>{\n                dispatch(createSetCustomersAction(customers));\n                if (customers && customers.length > 0) {\n                    let selectedCustomer = customers.filter((x)=>x.type === CustomerType.Organization);\n                    if (selectedCustomer.length === 0) {\n                        selectedCustomer = customers.filter((x)=>x.type === CustomerType.Individual);\n                    }\n                    if (selectedCustomer && selectedCustomer.length > 0) {\n                        dispatch(createSetActiveCustomerAction(selectedCustomer[0]));\n                    }\n                }\n                resolve();\n            }).catch((error)=>{\n                logError('thunkActions.getCustomers', error);\n            });\n        });\n    };\n}\nexport function getUserTenantsDetails() {\n    return function(dispatch, getState) {\n        const state = getState();\n        if (!getState().users.signedIn && !state.config.isEmbedded) {\n            return Promise.resolve();\n        }\n        const payload = {\n            page: getWindow().location.href,\n            action: Constants.Telemetry.Action.GetTenantDetails,\n            actionModifier: Constants.Telemetry.ActionModifier.Start,\n            details: JSON.stringify({\n                isSignedIn: state.users.signedIn,\n                tid: state.users.tid\n            })\n        };\n        SpzaInstrumentService.getProvider().probe('logTelemetryInfo', payload);\n        logger.info(payload.details, {\n            action: payload.action,\n            actionModifier: payload.actionModifier\n        });\n        dispatch(createUserTenantsDetailsLoadingAction({\n            isLoading: true,\n            hasError: false\n        }));\n        return userRestClient.getUserTenantsDetails().then(({ value })=>{\n            const selectedTenant = value.find((tenant)=>state.users.tid === tenant.tenantId) || {\n                tenantId: '',\n                displayName: '',\n                defaultDomain: '',\n                countryCode: '',\n                domains: [],\n                id: '',\n                tenantCategory: '',\n                tenantType: '',\n                azureSubscriptions: {}\n            };\n            dispatch(createUserTenantsDetailsAction(selectedTenant));\n            dispatch(createUserTenantsDetailsLoadingAction({\n                isLoading: false,\n                hasError: false\n            }));\n            SpzaInstrumentService.getProvider().probe('logTelemetryInfo', _object_spread_props(_object_spread({}, payload), {\n                actionModifier: Constants.Telemetry.ActionModifier.End\n            }));\n            logger.info(payload.details, {\n                action: payload.action,\n                actionModifier: Constants.Telemetry.ActionModifier.End\n            });\n        }).catch((error)=>{\n            dispatch(createUserTenantsDetailsLoadingAction({\n                isLoading: false,\n                hasError: true\n            }));\n            SpzaInstrumentService.getProvider().probe('logTelemetryInfo', _object_spread_props(_object_spread({}, payload), {\n                actionModifier: Constants.Telemetry.ActionModifier.Error,\n                details: JSON.stringify({\n                    isSignedIn: state.users.signedIn,\n                    tid: state.users.tid,\n                    error\n                })\n            }));\n            logger.error(JSON.stringify({\n                isSignedIn: state.users.signedIn,\n                tid: state.users.tid,\n                error\n            }), {\n                action: payload.action,\n                actionModifier: Constants.Telemetry.ActionModifier.Error\n            });\n        });\n    };\n}\nexport function getUserBillingAccounts() {\n    return function(dispatch, getState) {\n        const state = getState();\n        if (!state.users.signedIn && !state.config.isEmbedded) {\n            return Promise.resolve();\n        }\n        const payload = {\n            page: getWindow().location.href,\n            action: Constants.Telemetry.Action.getUserBillingAccounts,\n            actionModifier: Constants.Telemetry.ActionModifier.Start,\n            details: JSON.stringify({\n                isSignedIn: state.users.signedIn,\n                tid: state.users.tid\n            })\n        };\n        SpzaInstrumentService.getProvider().probe('logTelemetryInfo', payload);\n        logger.info(payload.details, {\n            action: payload.action,\n            actionModifier: payload.actionModifier\n        });\n        dispatch(createSetAccountIsLoadingAction({\n            isLoading: true\n        }));\n        return userRestClient.getUserBillingAccounts().then((billingAccounts)=>{\n            const billingEAAccounts = billingAccounts.value.filter((account)=>{\n                const { properties: { agreementType, accountType } } = account;\n                return (agreementType === BillingAgreementType.EnterpriseAgreement || agreementType === BillingAgreementType.MicrosoftCustomerAgreement) && accountType === BillingAccountType.Enterprise;\n            });\n            dispatch(createSetAccountAction({\n                isLoading: false,\n                isEAAccount: !!billingEAAccounts.length,\n                accounts: billingAccounts.value,\n                hasError: false\n            }));\n            payload.details = JSON.stringify({\n                isSignedIn: state.users.signedIn,\n                tid: state.users.tid,\n                billingEAAccounts\n            });\n            SpzaInstrumentService.getProvider().probe('logTelemetryInfo', _object_spread_props(_object_spread({}, payload), {\n                actionModifier: Constants.Telemetry.ActionModifier.End\n            }));\n            logger.info(payload.details, {\n                action: payload.action,\n                actionModifier: Constants.Telemetry.ActionModifier.End\n            });\n        }).catch((error)=>{\n            createSetAccountAction({\n                isLoading: false,\n                isEAAccount: false,\n                accounts: null,\n                hasError: true\n            });\n            SpzaInstrumentService.getProvider().probe('logTelemetryInfo', _object_spread_props(_object_spread({}, payload), {\n                actionModifier: Constants.Telemetry.ActionModifier.Error,\n                details: JSON.stringify({\n                    isSignedIn: state.users.signedIn,\n                    tid: state.users.tid,\n                    error\n                })\n            }));\n            logger.error(JSON.stringify({\n                isSignedIn: state.users.signedIn,\n                tid: state.users.tid,\n                error: stringifyError(error)\n            }), {\n                action: payload.action,\n                actionModifier: Constants.Telemetry.ActionModifier.Error\n            });\n        });\n    };\n}\nexport function getTenantType() {\n    return function(dispatch, getState) {\n        const user = getState().users;\n        const payload = {\n            page: getWindow().location.href,\n            action: Constants.Telemetry.Action.GetTenantType,\n            actionModifier: Constants.Telemetry.ActionModifier.Start,\n            details: JSON.stringify({\n                isSignedIn: user.signedIn,\n                isMSAUser: user.isMSAUser\n            })\n        };\n        SpzaInstrumentService.getProvider().probe('logTelemetryInfo', payload);\n        logger.info(payload.details, {\n            action: payload.action,\n            actionModifier: payload.actionModifier\n        });\n        if (!user.signedIn) {\n            // if user is not signed in we cannot make this call\n            return Promise.resolve();\n        }\n        if (user.isMSAUser) {\n            dispatch(createSetTenantTypeAction(Constants.TenantType.Msa));\n            return Promise.resolve();\n        }\n        // Prefetch the customer checkout page performance.\n        dispatch(getCustomers());\n        return new Promise((resolve)=>{\n            const email = user.email;\n            const payload = {\n                page: getWindow().location.href,\n                action: Constants.Telemetry.Action.GetTenantType,\n                actionModifier: Constants.Telemetry.ActionModifier.Debug,\n                details: JSON.stringify({\n                    isSignedIn: user.signedIn,\n                    isMSAUser: user.isMSAUser,\n                    hasEmail: !!email\n                })\n            };\n            SpzaInstrumentService.getProvider().probe('logTelemetryInfo', payload);\n            logger.debug(payload.details, {\n                action: payload.action,\n                actionModifier: payload.actionModifier\n            });\n        });\n    };\n}\nexport function checkAdminMemberships() {\n    return /*#__PURE__*/ function() {\n        var _ref = _async_to_generator(function*(dispatch, getState) {\n            const state = getState();\n            if (!state.users.signedIn || state.config.isEmbedded) {\n                return Promise.resolve();\n            }\n            try {\n                const adminMemberships = yield graphRestClient.checkAdminMemberShips();\n                if (adminMemberships) {\n                    dispatch(createUpdateUserRoleDefinitions(adminMemberships));\n                }\n                const payload = {\n                    page: getWindow().location.href,\n                    action: Constants.Telemetry.Action.GetUserTenantInfo,\n                    actionModifier: Constants.Telemetry.ActionModifier.Info,\n                    details: JSON.stringify({\n                        adminType: adminMemberships\n                    })\n                };\n                SpzaInstrumentService.getProvider().probe('logTelemetryInfo', payload);\n                logger.info(payload.details, {\n                    action: payload.action,\n                    actionModifier: payload.actionModifier\n                });\n            } catch (error) {\n                const payload = {\n                    page: getWindow().location.href,\n                    action: Constants.Telemetry.Action.GetUserTenantInfo,\n                    actionModifier: Constants.Telemetry.ActionModifier.Error,\n                    details: stringifyError(error)\n                };\n                SpzaInstrumentService.getProvider().probe('logTelemetryInfo', payload);\n                logger.error(payload.details, {\n                    action: payload.action,\n                    actionModifier: payload.actionModifier\n                });\n            }\n        });\n        return function(dispatch, getState) {\n            return _ref.apply(this, arguments);\n        };\n    }();\n}\nexport function updateUser({ userDetails }) {\n    return /*#__PURE__*/ function() {\n        var _ref = _async_to_generator(function*(dispatch, getState) {\n            HttpModule.updateAccessToken(userDetails.accessToken);\n            dispatch(createUserLoginDetailsAction(userDetails));\n            // dispatch finished loading\n            dispatch(createUserSignInFetchStatusAction({\n                loading: false\n            }));\n            // update user data\n            dispatch(getUserProfile());\n            dispatch(fetchUserFavourites());\n            dispatch(checkAdminMemberships());\n            if (getState().config.isAppSource && !getState().config.isEmbedded) {\n                dispatch(getUserTenantsDetails());\n                dispatch(getTenantType());\n                dispatch(getUserBillingAccounts());\n            }\n        });\n        return function(dispatch, getState) {\n            return _ref.apply(this, arguments);\n        };\n    }();\n}\nexport function updateUserProfile(data) {\n    return function(dispatch) {\n        return Promise.resolve().then(()=>{\n            dispatch(createUpdateUserProfileAction(data));\n            return Promise.resolve();\n        })// eslint-disable-next-line node/handle-callback-err\n        .catch(()=>{\n            return Promise.resolve();\n        });\n    };\n}\nexport function getDynamicCampaign(request) {\n    return function(dispatch) {\n        return new Promise((resolve, reject)=>{\n            const dispatchActionAndResolve = (campaignData)=>{\n                dispatch(createDynamicCampaignReceivedAction({\n                    campaignInfo: campaignData\n                }));\n                resolve();\n            };\n            dynamicCampaignRestClient.getDynamicCampaign(request).then((campaignHtml)=>{\n                dispatchActionAndResolve({\n                    html: campaignHtml\n                });\n            }).catch((error)=>{\n                if (error.status !== 404) {\n                    // dispatch a received campaign action with no campaign info (null)\n                    dispatchActionAndResolve(null);\n                }\n                reject(error);\n            });\n        });\n    };\n}\nexport function createCustomer() {\n    return function(dispatch, getState) {\n        dispatch(createClearErrorAction());\n        const customers = getState().checkout.customers;\n        if (customers && customers.length > 0) {\n            // check to see if we already have a customer, if so, don't create it\n            return Promise.resolve();\n        }\n        return new Promise((resolve, reject)=>{\n            // new customer that's not bootstrapped, create the customer\n            let firstName = getState().users.firstName;\n            let lastName = getState().users.lastName;\n            const displayName = getState().users.displayName;\n            // firstname/lastname are required, so check if we have them otherwise work around the issue\n            if (!firstName && !lastName && displayName) {\n                firstName = displayName;\n                lastName = '-';\n            } else if (!firstName) {\n                firstName = '-';\n                lastName = '-';\n            } else if (!lastName) {\n                lastName = '-';\n            }\n            const newCustomer = {\n                type: CustomerType.Individual,\n                address: {\n                    firstName,\n                    lastName,\n                    country: getState().config.billingCountryCode.toUpperCase()\n                }\n            };\n            purchaseRestClient.createCustomer(newCustomer).then((response)=>{\n                // create response does not include the address, so we need to update that ourselves\n                const customer = _object_spread_props(_object_spread({}, response), {\n                    address: newCustomer.address\n                });\n                dispatch(createSetActiveCustomerAction(customer));\n                resolve();\n            }).catch((error)=>{\n                dispatch(createErrorAction());\n                reject(error);\n            });\n        });\n    };\n}\nexport function updateCustomer(address) {\n    return function(dispatch) {\n        return new Promise((resolve)=>{\n            purchaseRestClient.updateCustomer(address).then(()=>{\n                dispatch(createUpdateCustomerAction(address));\n                resolve();\n            }).catch((error)=>{\n                logError('thunkActions.updateCustomer', error);\n            });\n        });\n    };\n}\nexport function generatePublisherOffer(subscriptionId) {\n    return function(dispatch) {\n        return new Promise((resolve, reject)=>{\n            purchaseRestClient.getPublisherOfferInfo(subscriptionId).then((response)=>{\n                dispatch(createSetPublisherTokenResponse(response));\n                resolve();\n            }).catch((error)=>{\n                dispatch(createSetPublisherTokenResponse({}));\n                reject(error);\n            });\n        });\n    };\n}\nexport function preWarmAccount(addTestHeader) {\n    return function(_, getState) {\n        const { config: { commerceApiHost } } = getState();\n        try {\n            commerceApiRestClient.preWarmAccount({\n                commerceApiHost,\n                addTestHeader\n            });\n        } catch (ex) {}\n    };\n}\nexport function updatePurchaseStatus() {\n    return (dispatch, getState)=>{\n        const reviewsData = getState().apps.appReviewsData;\n        dispatch(createGetAppReviewsAction(_object_spread_props(_object_spread({}, reviewsData), {\n            isPurchased: true\n        })));\n    };\n}\nexport function setStorefrontName(storefrontName) {\n    return (dispatch)=>{\n        dispatch(createSetStorefrontNameAction(storefrontName));\n    };\n}\nexport function getRecommenedSizes({ entityId, planId, createUiDefinitionEndpoint }) {\n    return /*#__PURE__*/ function() {\n        var _ref = _async_to_generator(function*(dispatch, getState) {\n            const { entityId: prevEntityId, planId: prevPlanId, loading } = getState().apps.recommendedSizesState;\n            if (loading || prevEntityId === entityId && prevPlanId === planId) {\n                return;\n            }\n            dispatch(createLoadingRecommenededSizes({\n                entityId,\n                planId\n            }));\n            try {\n                const createUiDefinition = yield entityRestClient.getCreateUiDefinition({\n                    createUiDefinitionEndpoint\n                });\n                const recommendedSizes = parseCatalogRecommendedSizes(createUiDefinition);\n                dispatch(createSetRecommenededSizes({\n                    entityId,\n                    planId,\n                    recommendedSizes\n                }));\n            } catch (error) {\n                dispatch(createSetRecommenededSizes({\n                    entityId,\n                    planId,\n                    recommendedSizes: []\n                }));\n            }\n        });\n        return function(dispatch, getState) {\n            return _ref.apply(this, arguments);\n        };\n    }();\n}\nexport function ensureCheckoutApp({ entityId }) {\n    return /*#__PURE__*/ function() {\n        var _ref = _async_to_generator(function*(dispatch, getState) {\n            try {\n                return yield Promise.all([\n                    dispatch(getAppDetail(entityId, false)),\n                    dispatch(getAppPricing(entityId))\n                ]);\n            } catch (error) {\n                const servicePromises = yield dispatch(ensureServiceDetailsData(entityId));\n                const state = getState();\n                const targetApp = state.services.dataList.find((offer)=>(offer === null || offer === void 0 ? void 0 : offer.entityId.toString().toLowerCase()) === entityId.toString().toLowerCase());\n                if (targetApp === null || targetApp === void 0 ? void 0 : targetApp.isHiddenPrivateOffer) {\n                    return servicePromises;\n                }\n                throw error;\n            }\n        });\n        return function(dispatch, getState) {\n            return _ref.apply(this, arguments);\n        };\n    }();\n}\n","import { Constants } from '@shared/utils/constants';\nimport { logError } from '@shared/utils/httpClientUtil';\nimport { getAppConfig } from '@shared/services/init/appConfig';\nimport { logger } from '@src/logger';\nimport * as httpProtocol from './httpProtocol';\nexport function getProduct(productId, hideKey, market = 'US') {\n    const endpoint = `${getAppConfig('MPRPHost')}/offers/${productId}`;\n    const options = {\n        requireCorrelationId: true,\n        stringifyPostData: false,\n        allowOrigin: true,\n        authenticationType: httpProtocol.AuthenticationTypes.Unauthenticated,\n        returnRawResponse: false\n    };\n    const get = httpProtocol.get(endpoint, options);\n    if (hideKey) {\n        get.addQueryEntry(`${Constants.QueryStrings.hideKeys}[0]`, hideKey);\n    }\n    return get.addQueryEntry(Constants.QueryStrings.apiVersion, Constants.mprpApiVersion).addQueryEntry(Constants.QueryStrings.market, market).request().catch((error)=>{\n        logError('getProductById', error);\n        logger.error('getProductById', {\n            action: Constants.Telemetry.Action.getProduct,\n            actionModifier: Constants.Telemetry.ActionModifier.Error,\n            error\n        });\n        return Promise.reject(error);\n    });\n}\n","import { Constants } from '@shared/utils/constants';\nimport { createSearchQueryChangedAction } from '@shared/actions/actions';\nexport function dispatchSearchQueryChangedAction(dispatch, searchText) {\n    return Promise.resolve().then(()=>{\n        dispatch(createSearchQueryChangedAction({\n            performedQuery: searchText,\n            entityType: Constants.EntityType.App\n        }));\n        dispatch(createSearchQueryChangedAction({\n            performedQuery: searchText,\n            entityType: Constants.EntityType.Service\n        }));\n    });\n}\nconst numProductsToTake = 5;\nconst takeTopN = (entities)=>{\n    return entities.slice(0, numProductsToTake).map(({ entityId })=>entityId).join(', ');\n};\nexport const takeTopResults = ({ apps = [], cloudsIndustry = [], services = [] })=>{\n    const topApps = takeTopN(apps);\n    const topConsultingServices = takeTopN(services);\n    const topIndustryClouds = takeTopN(cloudsIndustry);\n    return JSON.stringify({\n        topApps,\n        topConsultingServices,\n        topIndustryClouds\n    });\n};\n","import * as httpProtocol from './httpProtocol';\nimport { Constants } from '../../utils/constants';\nimport { getAppConfig } from '../../services/init/appConfig';\nimport { logError } from '../../utils/httpClientUtil';\nexport function getUserProfile() {\n    const endpoint = '/view/userProfile';\n    const options = {\n        requireCorrelationId: true,\n        stringifyPostData: false,\n        authenticationType: httpProtocol.AuthenticationTypes.MarketplaceLeads,\n        setBearerHeader: true\n    };\n    const get = httpProtocol.get(endpoint, options);\n    return get.request().catch((error)=>{\n        logError('getUserProfile', error);\n        return Promise.reject(error);\n    });\n}\nexport function getUserTenantsDetails() {\n    const endpoint = `${getAppConfig('armApiHost')}/tenants?api-version=2020-01-01`;\n    const options = {\n        requireCorrelationId: true,\n        stringifyPostData: false,\n        authenticationType: httpProtocol.AuthenticationTypes.Arm,\n        setBearerHeader: false\n    };\n    const get = httpProtocol.get(endpoint, options);\n    return get.request().catch((error)=>{\n        logError('getUserTenantsDetails', error);\n        return Promise.reject(error);\n    });\n}\nexport function getUserBillingAccounts() {\n    const endpoint = `${getAppConfig('armApiHost')}/providers/Microsoft.Billing/billingAccounts`;\n    const options = {\n        requireCorrelationId: true,\n        stringifyPostData: false,\n        allowOrigin: true,\n        authenticationType: httpProtocol.AuthenticationTypes.Arm,\n        contentType: 'application/json',\n        returnRawResponse: false\n    };\n    const get = httpProtocol.get(endpoint, options);\n    return get.addQueryEntry(Constants.QueryStrings.apiVersion, Constants.armBillingAccountsApiVersion).addQueryEntry(Constants.QueryStrings.expand, 'properties/enrollmentDetails').request().catch((error)=>{\n        logError('getUserBillingAccounts', error);\n        return Promise.reject(error);\n    });\n}\n","import { actionCreator } from '@shared/actions/actions';\nexport const UpdateUserFavouriteFetchDataStatusAction = 'UpdateUserFavouriteFetchDataStatusAction';\nexport const createUpdateUserFavouriteFetchDataStatusAction = actionCreator(UpdateUserFavouriteFetchDataStatusAction);\nexport const ReceiveUserFavouriteDataAction = 'ReceiveUserFavouriteDataAction';\nexport const createReceiveUserFavouriteDataAction = actionCreator(ReceiveUserFavouriteDataAction);\nexport const DeleteUserFavouriteItemAction = 'DeleteUserFavouriteItemAction';\nexport const createDeleteUserFavouriteItemAction = actionCreator(DeleteUserFavouriteItemAction);\nexport const UpsertUserFavouriteItemAction = 'UpsertUserFavouriteItemAction';\nexport const createUpsertUserFavouriteItemAction = actionCreator(UpsertUserFavouriteItemAction);\nexport const FavouriteAppsPricingDataReceivedAction = 'FavouriteAppsPricingDataReceivedAction';\nexport const createFavouriteAppsPricingDataReceivedAction = actionCreator(FavouriteAppsPricingDataReceivedAction);\n","import * as httpProtocol from './httpProtocol';\nimport { Constants } from './../../utils/constants';\nimport { getAppConfig } from './../init/appConfig';\nimport { logError } from './../../utils/httpClientUtil';\nconst options = {\n    requireCorrelationId: true,\n    stringifyPostData: false,\n    authenticationType: httpProtocol.AuthenticationTypes.Agreement,\n    setBearerHeader: true\n};\nexport function getUserFavouriteItems() {\n    const endpoint = Constants.UserFavourite.ViewEndpoint;\n    const httpGet = httpProtocol.get(endpoint, options);\n    return httpGet.addQueryEntry(Constants.QueryStrings.version, getAppConfig(Constants.marketplaceApiVersion)).request().catch((error)=>{\n        logError('getUserFavouriteItems', error);\n        return Promise.reject(error);\n    });\n}\nexport function addUserFavouriteItem(payload) {\n    const endpoint = Constants.UserFavourite.ViewEndpoint;\n    const httpPost = httpProtocol.post(endpoint, options);\n    return httpPost.addQueryEntry(Constants.QueryStrings.version, getAppConfig(Constants.marketplaceApiVersion)).setData(payload).request().catch((error)=>{\n        logError('addUserFavouriteItem', error);\n        return Promise.reject(error);\n    });\n}\nexport function deleteUserFavouriteItem(entityGuid, applicationType) {\n    const params = entityGuid;\n    const endpoint = `${Constants.UserFavourite.ViewEndpoint}/${params}`;\n    const httpDelete = httpProtocol.del(endpoint, options);\n    return httpDelete.addQueryEntry(Constants.QueryStrings.version, getAppConfig(Constants.marketplaceApiVersion)).addQueryEntry(Constants.QueryStrings.applicationType, applicationType).request().catch((error)=>{\n        logError('deleteUserFavouriteItem', error);\n        return Promise.reject(error);\n    });\n}\n","function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nfunction _object_spread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        var ownKeys = Object.keys(source);\n        if (typeof Object.getOwnPropertySymbols === \"function\") {\n            ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n            }));\n        }\n        ownKeys.forEach(function(key) {\n            _define_property(target, key, source[key]);\n        });\n    }\n    return target;\n}\nfunction ownKeys(object, enumerableOnly) {\n    var keys = Object.keys(object);\n    if (Object.getOwnPropertySymbols) {\n        var symbols = Object.getOwnPropertySymbols(object);\n        if (enumerableOnly) {\n            symbols = symbols.filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n            });\n        }\n        keys.push.apply(keys, symbols);\n    }\n    return keys;\n}\nfunction _object_spread_props(target, source) {\n    source = source != null ? source : {};\n    if (Object.getOwnPropertyDescriptors) {\n        Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n        ownKeys(Object(source)).forEach(function(key) {\n            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n    }\n    return target;\n}\nimport * as favouriteRestClient from '@shared/services/http/userFavouriteRestClient';\nimport { createReceiveUserFavouriteDataAction, createUpdateUserFavouriteFetchDataStatusAction, createDeleteUserFavouriteItemAction, createUpsertUserFavouriteItemAction, createFavouriteAppsPricingDataReceivedAction } from '@shared/actions/userFavouriteActions';\nimport { Constants } from '@shared/utils/constants';\nimport { shouldPerformFetchFavourite, invalidateFavourites, validateFavourites, failedDataStatus, fetchPricing } from '@shared/utils/userFavouriteThunkActionUtils';\nimport { SharedInstrumentService } from '@shared/services/telemetry/shared/sharedInstrument';\nimport { getWindow } from '@shared/services/window';\nimport { stringifyError } from '@shared/utils/errorUtils';\nimport { logger } from '@src/logger';\n/**\n * fetch favourite if needed, i.e. favourite entity are invalid\n */ export function fetchUserFavourites() {\n    return (dispatch, getState)=>{\n        const favourite = getState().userFavourite;\n        const user = getState().users;\n        // if user is not signed in, we will\n        // 1) skip fetching favourite\n        // 2) update fetch status to invalid\n        if (!user.signedIn) {\n            // dispatch invalidate action only if needed\n            if (favourite.fetchDataStatus !== Constants.UserFavourite.FetchDataStatus.Invalid) {\n                dispatch(invalidateFavourites());\n            }\n            return Promise.resolve();\n        }\n        // if user is signed in, we will\n        // 1) skip fetching favourite, if favourite in redux store is already valid, or is performing a fetch in another thread\n        // 3) will fetch favourite, if favourite is invalid\n        if (!shouldPerformFetchFavourite(favourite.fetchDataStatus)) {\n            return Promise.resolve();\n        }\n        dispatch(createUpdateUserFavouriteFetchDataStatusAction({\n            fetchDataStatus: Constants.UserFavourite.FetchDataStatus.IsFetching\n        }));\n        return favouriteRestClient.getUserFavouriteItems().then((rawUserFavourites)=>{\n            dispatch(createReceiveUserFavouriteDataAction(_object_spread({}, rawUserFavourites)));\n            if (getState().apps.pricingPayload) {\n                dispatch(createFavouriteAppsPricingDataReceivedAction(getState().apps.pricingPayload));\n            }\n            dispatch(validateFavourites());\n            return Promise.resolve();\n        }).catch((error)=>{\n            var _getWindow;\n            const payload = {\n                page: (_getWindow = getWindow()) === null || _getWindow === void 0 ? void 0 : _getWindow.location.href,\n                action: Constants.Telemetry.Action.FetchUserFavourites,\n                actionModifier: Constants.Telemetry.ActionModifier.Error,\n                details: JSON.stringify({\n                    error: stringifyError(error)\n                })\n            };\n            SharedInstrumentService.getProvider().probe('logTelemetryInfo', payload);\n            logger.error(payload.details, {\n                action: payload.action,\n                actionModifier: payload.actionModifier\n            });\n            dispatch(failedDataStatus());\n            return Promise.resolve();\n        });\n    };\n}\n/**\n * upsert a favourite given an applicationType, i.e. add or update\n *\n * @param payload consists as same with marketplace api payload, which are\n *      applicationId: application ID of a favourite entity\n *      planId: plan ID of a favourite entity\n *      applicationType: application type of a favourite entity\n *\n * @param entityId if given, it will try to fetch pricing details to obtain its 1st plan Id, if any\n */ export function upsertUserFavourite(payload, item, entityId = undefined) {\n    return (dispatch, getState)=>{\n        return dispatch(fetchUserFavourites()).then(()=>{\n            const favourite = getState().userFavourite;\n            // skip upsertting favourite item, if favourite data is invalid\n            if (favourite.fetchDataStatus === Constants.UserFavourite.FetchDataStatus.Invalid) {\n                return Promise.resolve();\n            }\n            // upsert favourite item, if favourite data is valid\n            return dispatch(fetchPricing(entityId, payload.applicationType)).then((planId)=>{\n                const updatedPayload = _object_spread_props(_object_spread({}, payload), {\n                    planId: planId\n                });\n                return favouriteRestClient.addUserFavouriteItem(updatedPayload);\n            }).then((response)=>{\n                const errorResponse = response;\n                if (errorResponse.nonCriticalError !== Constants.UserFavourite.NotCriticalFailure.ItemExist && errorResponse.nonCriticalError !== Constants.UserFavourite.NotCriticalFailure.MaximumQuotaReached) {\n                    const postResponse = response;\n                    dispatch(createUpsertUserFavouriteItemAction(_object_spread_props(_object_spread({}, postResponse), {\n                        item\n                    })));\n                    return Promise.resolve();\n                }\n            }).catch((error)=>{\n                var _getWindow;\n                const payload = {\n                    page: (_getWindow = getWindow()) === null || _getWindow === void 0 ? void 0 : _getWindow.location.href,\n                    action: Constants.Telemetry.Action.UpsertUserFavourite,\n                    actionModifier: Constants.Telemetry.ActionModifier.Error,\n                    details: JSON.stringify({\n                        error: stringifyError(error)\n                    })\n                };\n                SharedInstrumentService.getProvider().probe('logTelemetryInfo', payload);\n                logger.error(payload.details, {\n                    action: payload.action,\n                    actionModifier: payload.actionModifier\n                });\n                return Promise.resolve();\n            });\n        }).catch((error)=>{\n            var _getWindow;\n            const payload = {\n                page: (_getWindow = getWindow()) === null || _getWindow === void 0 ? void 0 : _getWindow.location.href,\n                action: Constants.Telemetry.Action.UpsertUserFavourite,\n                actionModifier: Constants.Telemetry.ActionModifier.Error,\n                details: JSON.stringify({\n                    error: stringifyError(error)\n                })\n            };\n            SharedInstrumentService.getProvider().probe('logTelemetryInfo', payload);\n            logger.error(payload.details, {\n                action: payload.action,\n                actionModifier: payload.actionModifier\n            });\n            return Promise.resolve();\n        });\n    };\n}\n/**\n * delete favourite\n *\n * @param entityGuid: guid generated to identify a favourite entity\n * @param applicationType: application type of a favourite entity\n */ export function deleteUserFavourite(entityGuid, applicationType) {\n    return (dispatch, getState)=>{\n        return dispatch(fetchUserFavourites()).then(()=>{\n            const favourite = getState().userFavourite;\n            // skip deleting favourite item, if favourite data is invalid\n            if (favourite.fetchDataStatus === Constants.UserFavourite.FetchDataStatus.Invalid) {\n                return Promise.resolve();\n            }\n            // delete favourite item, if favourite data is valid\n            return favouriteRestClient.deleteUserFavouriteItem(entityGuid, applicationType).then((response)=>{\n                if (response !== Constants.UserFavourite.NotCriticalFailure.ItemNotExist) {\n                    dispatch(createDeleteUserFavouriteItemAction({\n                        entityGuid: entityGuid,\n                        applicationType: applicationType\n                    }));\n                }\n                return Promise.resolve();\n            }).catch((error)=>{\n                var _getWindow;\n                const payload = {\n                    page: (_getWindow = getWindow()) === null || _getWindow === void 0 ? void 0 : _getWindow.location.href,\n                    action: Constants.Telemetry.Action.DeleteUserFavourite,\n                    actionModifier: Constants.Telemetry.ActionModifier.Error,\n                    details: JSON.stringify({\n                        error: stringifyError(error)\n                    })\n                };\n                SharedInstrumentService.getProvider().probe('logTelemetryInfo', payload);\n                logger.error(payload.details, {\n                    action: payload.action,\n                    actionModifier: payload.actionModifier\n                });\n                return Promise.resolve();\n            });\n        }).catch((error)=>{\n            var _getWindow;\n            const payload = {\n                page: (_getWindow = getWindow()) === null || _getWindow === void 0 ? void 0 : _getWindow.location.href,\n                action: Constants.Telemetry.Action.DeleteUserFavourite,\n                actionModifier: Constants.Telemetry.ActionModifier.Error,\n                details: JSON.stringify({\n                    error: stringifyError(error)\n                })\n            };\n            SharedInstrumentService.getProvider().probe('logTelemetryInfo', payload);\n            logger.error(payload.details, {\n                action: payload.action,\n                actionModifier: payload.actionModifier\n            });\n            return Promise.resolve();\n        });\n    };\n}\n","import { Constants } from './../utils/constants';\nimport { createUpdateUserFavouriteFetchDataStatusAction } from './../actions/userFavouriteActions';\nexport function shouldPerformFetchFavourite(fetchDataStatus) {\n    // fetch favourite data only if favourite entity state is invalid\n    return fetchDataStatus === Constants.UserFavourite.FetchDataStatus.Invalid;\n}\n/**\n * invalidate redux favourite store by flagging fetch data status as invalid\n */ export function invalidateFavourites() {\n    return (dispatch, getState)=>{\n        const fetchDataStatus = Constants.UserFavourite.FetchDataStatus.Invalid;\n        dispatch(createUpdateUserFavouriteFetchDataStatusAction({\n            fetchDataStatus: fetchDataStatus\n        }));\n    };\n}\n/**\n * validate redux favourite store by flagging fetch data status as valid\n */ export function validateFavourites() {\n    return (dispatch, getState)=>{\n        const fetchDataStatus = Constants.UserFavourite.FetchDataStatus.Valid;\n        dispatch(createUpdateUserFavouriteFetchDataStatusAction({\n            fetchDataStatus: fetchDataStatus\n        }));\n    };\n}\nexport function fetchPricing(entityId, applicationType) {\n    return (dispatch, getState)=>{\n        return Promise.resolve(undefined);\n    };\n}\n/**\n * mark call failure to redux favourite store by flagging fetch data status as failure to avoid infinite loop\n */ export function failedDataStatus() {\n    return (dispatch, getState)=>{\n        const fetchDataStatus = Constants.UserFavourite.FetchDataStatus.Failure;\n        dispatch(createUpdateUserFavouriteFetchDataStatusAction({\n            fetchDataStatus: fetchDataStatus\n        }));\n    };\n}\n","function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport * as React from 'react';\nimport SpzaComponent from './spzaComponent';\nimport { InternalLink } from './internalLink';\nimport { Constants } from './../utils/constants';\nexport class ButtonLink extends SpzaComponent {\n    renderImpl() {\n        let button = null;\n        switch(this.props.type){\n            case Constants.ButtonType.Link:\n                button = /*#__PURE__*/ _jsxs(InternalLink, {\n                    accEnabled: this.props.accEnabled,\n                    href: this.props.href,\n                    role: \"link\",\n                    children: [\n                        /*#__PURE__*/ _jsx(\"span\", {\n                            className: \"ms-fontSize-14\",\n                            children: this.props.label + ' '\n                        }),\n                        /*#__PURE__*/ _jsx(\"span\", {\n                            className: \"ms-fontSize-16 ms-fontWeight-semibold\",\n                            children: this.props.value\n                        })\n                    ]\n                });\n                break;\n            case Constants.ButtonType.Label:\n                button = /*#__PURE__*/ _jsxs(\"div\", {\n                    className: \"buttonLinkContainer\",\n                    children: [\n                        /*#__PURE__*/ _jsx(\"span\", {\n                            className: \"ms-fontSize-14 label\",\n                            children: this.props.label + ' '\n                        }),\n                        /*#__PURE__*/ _jsx(\"span\", {\n                            className: \"ms-fontSize-16 ms-fontWeight-semibold\",\n                            children: this.props.value\n                        })\n                    ]\n                });\n                break;\n            default:\n                button = /*#__PURE__*/ _jsx(\"div\", {});\n        }\n        return /*#__PURE__*/ _jsx(\"div\", {\n            className: 'button-link ' + this.props.className,\n            children: button\n        });\n    }\n    constructor(...args){\n        super(...args), _define_property(this, \"context\", void 0);\n    }\n}\nButtonLink.contextTypes = {};\n","import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from \"react/jsx-runtime\";\nimport React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { Text, mergeStyleSets, Stack } from '@fluentui/react';\nconst contentStyles = mergeStyleSets({\n    italicFont: {\n        fontStyle: 'italic'\n    },\n    title: {\n        marginTop: 4\n    },\n    subTitle: {\n        marginTop: 8\n    },\n    leftSpace: {\n        paddingLeft: 6\n    }\n});\nexport const ShowingResultsFor = ({ showingResultsForText, previousSearchText }, context)=>{\n    const { title, leftSpace, italicFont } = contentStyles;\n    return /*#__PURE__*/ _jsxs(_Fragment, {\n        children: [\n            /*#__PURE__*/ _jsxs(Stack, {\n                horizontal: true,\n                children: [\n                    /*#__PURE__*/ _jsx(Stack.Item, {\n                        children: /*#__PURE__*/ _jsx(Text, {\n                            variant: \"medium\",\n                            children: `${context.loc('Showing_Results_For_NoResults_Prefix', 'No results found for')} `\n                        })\n                    }),\n                    /*#__PURE__*/ _jsx(Stack.Item, {\n                        className: leftSpace,\n                        children: /*#__PURE__*/ _jsx(Text, {\n                            className: \"ms-fontSize-14 ms-fontWeight-semibold\",\n                            children: `‘${previousSearchText}’`\n                        })\n                    })\n                ]\n            }),\n            /*#__PURE__*/ _jsxs(Stack, {\n                horizontal: true,\n                className: title,\n                children: [\n                    /*#__PURE__*/ _jsx(Stack.Item, {\n                        children: /*#__PURE__*/ _jsx(Text, {\n                            className: \"ms-fontSize-20\",\n                            children: `${context.loc('Showing_Results_For_Prefix', 'Showing results for')} `\n                        })\n                    }),\n                    /*#__PURE__*/ _jsx(Stack.Item, {\n                        className: leftSpace,\n                        children: /*#__PURE__*/ _jsx(Text, {\n                            as: 'h1',\n                            variant: \"xLarge\",\n                            className: italicFont,\n                            children: `‘${showingResultsForText}’`\n                        })\n                    })\n                ]\n            })\n        ]\n    });\n};\nShowingResultsFor.contextTypes = {\n    loc: PropTypes.func,\n    locParams: PropTypes.func\n};\n","import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from \"react/jsx-runtime\";\nimport React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { Text, mergeStyleSets, Stack, Link } from '@fluentui/react';\nimport { useSelector } from 'react-redux';\nimport { ShowingResultsFor } from '@appsource/components/ShowingResultsFor';\nimport { SortingDropdown } from '@shared/components/sortingDropdown';\nimport { Constants } from '@shared/utils/constants';\nimport { routes } from '@shared/routerHistory';\nimport { useNavigate, useSearchParams } from 'react-router-dom';\nimport { ThumbsUpDown } from '@appsource/components/thumbsUpDown';\nexport const TitleComponent = ({ localizedTitle, previousSearchText = '', showingResultsForText = '', titleAsH1 = true })=>{\n    return showingResultsForText.length > 0 ? /*#__PURE__*/ _jsx(ShowingResultsFor, {\n        showingResultsForText: showingResultsForText,\n        previousSearchText: previousSearchText\n    }) : /*#__PURE__*/ _jsx(Text, {\n        as: titleAsH1 ? 'h1' : 'h2',\n        variant: \"xLarge\",\n        className: \"galleryTitle\",\n        children: localizedTitle\n    });\n};\nconst contentStyles = mergeStyleSets({\n    subTitle: {\n        marginTop: 8\n    },\n    container: {\n        marginBottom: 20\n    },\n    leftSpace: {\n        paddingLeft: 6\n    }\n});\nconst { Popularity, RecentlyUpdated, BestMatch, RatingAverage } = Constants.SearchSortingOption;\nconst nonDefaultSortingOptions = [\n    Popularity,\n    RecentlyUpdated,\n    RatingAverage\n];\nconst { marketplaceServices, marketplace, marketplaceCloudsIndustry } = routes;\nconst viewToRouteMap = {\n    [Constants.Views.appGallery]: marketplace,\n    [Constants.Views.serviceGallery]: marketplaceServices,\n    [Constants.Views.cloudsIndustryGallery]: marketplaceCloudsIndustry\n};\nexport const FilteredGalleryHeader = ({ otherGalleriesLinks, subTitle, numResults, localizedTitle, hideSortingDropdown, titleAsH1 }, context)=>{\n    var _searchParams_get;\n    const { showingResultsFor: showingResultsForText = '', previousSearchText = '', currentView } = useSelector(({ search: { showingResultsFor, previousSearchText }, config: { currentView, featureFlags: { sortByRatingEnabled, allNewSortsEnabled, sortByRecentlyUpdatedEnabled } } })=>({\n            showingResultsFor,\n            previousSearchText,\n            currentView,\n            sortByRatingEnabled,\n            allNewSortsEnabled,\n            sortByRecentlyUpdatedEnabled\n        }));\n    const navigate = useNavigate();\n    const [searchParams] = useSearchParams();\n    const sortByQueryParam = searchParams.get(Constants.FilterQuery.sortBy);\n    let defaultSortValue = BestMatch;\n    if (sortByQueryParam && nonDefaultSortingOptions.includes(sortByQueryParam)) {\n        defaultSortValue = sortByQueryParam;\n    }\n    const baseRoute = viewToRouteMap[`${currentView}`] || marketplace;\n    const { container, leftSpace, subTitle: subTitleClass } = contentStyles;\n    const handleClearSearch = ()=>{\n        const url = context.buildHref(baseRoute, {}, {\n            [Constants.FilterQuery.search]: ''\n        }, false);\n        navigate(url);\n    };\n    const shouldDisplayClearSearch = previousSearchText || ((_searchParams_get = searchParams.get('search')) === null || _searchParams_get === void 0 ? void 0 : _searchParams_get.length) > 0;\n    return /*#__PURE__*/ _jsxs(_Fragment, {\n        children: [\n            /*#__PURE__*/ _jsx(\"div\", {\n                role: \"status\",\n                \"aria-label\": `${numResults} items found`\n            }),\n            /*#__PURE__*/ _jsxs(Stack, {\n                horizontal: true,\n                horizontalAlign: \"space-between\",\n                className: container,\n                wrap: true,\n                tokens: {\n                    childrenGap: 6\n                },\n                children: [\n                    /*#__PURE__*/ _jsxs(Stack.Item, {\n                        children: [\n                            /*#__PURE__*/ _jsx(TitleComponent, {\n                                localizedTitle: localizedTitle,\n                                previousSearchText: previousSearchText,\n                                showingResultsForText: showingResultsForText,\n                                titleAsH1: titleAsH1\n                            }),\n                            /*#__PURE__*/ _jsxs(Stack, {\n                                tokens: {\n                                    childrenGap: 4\n                                },\n                                horizontal: true,\n                                className: subTitleClass,\n                                wrap: true,\n                                children: [\n                                    /*#__PURE__*/ _jsx(Stack.Item, {\n                                        children: /*#__PURE__*/ _jsx(Text, {\n                                            block: true,\n                                            children: subTitle\n                                        })\n                                    }),\n                                    !shouldDisplayClearSearch && otherGalleriesLinks && /*#__PURE__*/ _jsx(Stack.Item, {\n                                        className: leftSpace,\n                                        children: otherGalleriesLinks\n                                    }),\n                                    /*#__PURE__*/ _jsx(Stack.Item, {\n                                        children: shouldDisplayClearSearch && /*#__PURE__*/ _jsx(Link, {\n                                            onClick: ()=>handleClearSearch(),\n                                            underline: true,\n                                            as: \"button\",\n                                            children: context.loc('ClearSearch', 'Clear search')\n                                        })\n                                    })\n                                ]\n                            }),\n                            shouldDisplayClearSearch && otherGalleriesLinks && /*#__PURE__*/ _jsx(Stack.Item, {\n                                tokens: {\n                                    margin: '8px 0'\n                                },\n                                children: otherGalleriesLinks\n                            }),\n                            !!showingResultsForText.length && /*#__PURE__*/ _jsx(Stack.Item, {\n                                children: /*#__PURE__*/ _jsx(ThumbsUpDown, {\n                                    localizedQuestion: context.loc('Feedback_ShowingResultsFor', \"Are these results what you're looking for?\")\n                                })\n                            })\n                        ]\n                    }),\n                    /*#__PURE__*/ _jsx(Stack.Item, {\n                        children: /*#__PURE__*/ _jsx(Stack, {\n                            verticalAlign: \"start\",\n                            horizontalAlign: \"end\",\n                            children: numResults > 0 && /*#__PURE__*/ _jsx(Stack.Item, {\n                                children: /*#__PURE__*/ _jsx(SortingDropdown, {\n                                    defaultKey: defaultSortValue,\n                                    route: baseRoute,\n                                    hide: hideSortingDropdown\n                                })\n                            })\n                        })\n                    })\n                ]\n            })\n        ]\n    });\n};\nFilteredGalleryHeader.contextTypes = {\n    loc: PropTypes.func,\n    buildHref: PropTypes.func\n};\n","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n    try {\n        var info = gen[key](arg);\n        var value = info.value;\n    } catch (error) {\n        reject(error);\n        return;\n    }\n    if (info.done) {\n        resolve(value);\n    } else {\n        Promise.resolve(value).then(_next, _throw);\n    }\n}\nfunction _async_to_generator(fn) {\n    return function() {\n        var self = this, args = arguments;\n        return new Promise(function(resolve, reject) {\n            var gen = fn.apply(self, args);\n            function _next(value) {\n                asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n            }\n            function _throw(err) {\n                asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n            }\n            _next(undefined);\n        });\n    };\n}\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport React, { useState } from 'react';\nimport Tooltip from '@shared/components/tooltip';\nimport { DirectionalHint, Stack, Text, Spinner, SpinnerSize } from '@fluentui/react';\nimport { AppTileLinkedItems } from '@shared/components/appTileLinkedItems';\nimport { logger } from '@src/logger';\nimport { Constants } from '@shared/utils/constants';\nimport { SpzaInstrumentService } from '@shared/services/telemetry/spza/spzaInstrument';\nimport { ItemsContainerComponent } from '@shared/components/itemsContainer';\nimport { getAppRelatedAppsItems } from '@shared/services/http/entityRestClient';\nconst tooltipHostStyles = {\n    root: {\n        overflow: 'hidden',\n        display: 'inline-block'\n    }\n};\nconst stackContainerTokens = {\n    childrenGap: 8\n};\nconst textSize = 'smallPlus';\nconst maxTooltipWidth = 450;\nconst calloutProps = {\n    isBeakVisible: true,\n    gapSpace: 6\n};\nexport const ItemsTooltip = ({ children, title, linkedItemsIds, items, parentItem })=>{\n    const [linkedItemsData, setLinkedItemsData] = useState([]);\n    const getLinkedAppDataItems = /*#__PURE__*/ function() {\n        var _ref = _async_to_generator(function*() {\n            const items = yield getAppRelatedAppsItems(parentItem.entityId, '');\n            if (items.saasLinkingItems.length) {\n                setLinkedItemsData(items.saasLinkingItems);\n            }\n            if (items.linkedAddIns.length) {\n                setLinkedItemsData(items.linkedAddIns);\n            }\n        });\n        return function getLinkedAppDataItems() {\n            return _ref.apply(this, arguments);\n        };\n    }();\n    const toolipToggled = (isTooltipVisible)=>{\n        const instrument = SpzaInstrumentService.getProvider();\n        const { title, entityId } = parentItem;\n        if (isTooltipVisible) {\n            const payload = {\n                page: location.pathname,\n                action: Constants.Telemetry.Action.Hover,\n                actionModifier: Constants.Telemetry.ActionModifier.SaasLinkTooltip,\n                details: JSON.stringify({\n                    title,\n                    entityId\n                })\n            };\n            instrument.probe(Constants.Telemetry.ProbeName.LogInfo, payload);\n            logger.info('', payload);\n            if (!(linkedItemsData === null || linkedItemsData === void 0 ? void 0 : linkedItemsData.length) && (linkedItemsIds === null || linkedItemsIds === void 0 ? void 0 : linkedItemsIds.length)) {\n                getLinkedAppDataItems();\n            }\n        }\n    };\n    const renderAppTileLinkedItem = ()=>{\n        return (linkedItemsData === null || linkedItemsData === void 0 ? void 0 : linkedItemsData.length) ? /*#__PURE__*/ _jsx(AppTileLinkedItems, {\n            title: title,\n            linkedItems: linkedItemsData,\n            hoveredItem: parentItem\n        }) : /*#__PURE__*/ _jsx(Spinner, {\n            size: SpinnerSize.large\n        });\n    };\n    return (linkedItemsIds === null || linkedItemsIds === void 0 ? void 0 : linkedItemsIds.length) || (items === null || items === void 0 ? void 0 : items.length) ? /*#__PURE__*/ _jsx(Tooltip, {\n        onTooltipToggle: (linkedItemsIds === null || linkedItemsIds === void 0 ? void 0 : linkedItemsIds.length) ? toolipToggled : null,\n        tooltipHostProps: {\n            tooltipProps: {\n                onRenderContent: ()=>(linkedItemsIds === null || linkedItemsIds === void 0 ? void 0 : linkedItemsIds.length) ? renderAppTileLinkedItem() : (items === null || items === void 0 ? void 0 : items.length) ? /*#__PURE__*/ _jsxs(Stack, {\n                        tokens: stackContainerTokens,\n                        children: [\n                            title && /*#__PURE__*/ _jsx(Text, {\n                                variant: textSize,\n                                children: title\n                            }),\n                            /*#__PURE__*/ _jsx(ItemsContainerComponent, {\n                                items: items,\n                                withText: true,\n                                wrap: true,\n                                textSize: textSize,\n                                withDivider: false\n                            })\n                        ]\n                    }) : null,\n                maxWidth: `${maxTooltipWidth}px`\n            },\n            calloutProps,\n            styles: tooltipHostStyles,\n            directionalHint: (linkedItemsIds === null || linkedItemsIds === void 0 ? void 0 : linkedItemsIds.length) ? DirectionalHint.rightCenter : DirectionalHint.topCenter\n        },\n        children: children\n    }) : null;\n};\n","/* eslint-disable react/forbid-dom-props */ function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport React from 'react';\nimport * as PropTypes from 'prop-types';\nimport SpzaComponent from './spzaComponent';\nimport { routes } from '@shared/routerHistory';\nimport { Link } from 'react-router-dom';\nexport class SuccessStory extends SpzaComponent {\n    getAppTile(app, tileKey) {\n        const { iconURL, shortDescription, shortDescriptionFallback, entityId, productFamily, title } = app;\n        const route = this.context.buildHref(routes.appDetails, {\n            productId: productFamily,\n            entityId\n        }, {\n            tab: 'Overview'\n        });\n        const description = this.context.loc(shortDescription, shortDescriptionFallback);\n        return /*#__PURE__*/ _jsxs(\"div\", {\n            className: \"tileWrapper\",\n            children: [\n                /*#__PURE__*/ _jsx(\"img\", {\n                    className: \"icon\",\n                    src: iconURL,\n                    alt: description\n                }),\n                /*#__PURE__*/ _jsx(\"h2\", {\n                    className: \"title\",\n                    children: title\n                }),\n                /*#__PURE__*/ _jsx(\"span\", {\n                    className: \"description\",\n                    children: description\n                }),\n                /*#__PURE__*/ _jsx(Link, {\n                    className: \"link\",\n                    \"data-bi-id\": entityId,\n                    \"data-bi-area\": \"SuccessStory learn more link\",\n                    to: route,\n                    children: this.context.loc('AppSource_Banner_LearnMore', 'Learn more >')\n                })\n            ]\n        }, tileKey);\n    }\n    renderImpl() {\n        const { author: { name, title }, description, descriptionFallback, recommendations, image } = this.props;\n        const backgroundImage = {\n            backgroundImage: `linear-gradient(256.63deg, rgba(0, 0, 0, 0) 45%, rgba(0, 0, 0, 0.55)), url(${image})`\n        };\n        return /*#__PURE__*/ _jsxs(\"div\", {\n            className: \"storyContainer\",\n            children: [\n                /*#__PURE__*/ _jsx(\"div\", {\n                    className: \"image\",\n                    style: backgroundImage,\n                    children: /*#__PURE__*/ _jsxs(\"div\", {\n                        className: \"contentContainer\",\n                        children: [\n                            /*#__PURE__*/ _jsxs(\"div\", {\n                                className: \"testimonial\",\n                                children: [\n                                    /*#__PURE__*/ _jsx(\"span\", {\n                                        className: \"title\",\n                                        children: this.context.loc(description, descriptionFallback)\n                                    }),\n                                    /*#__PURE__*/ _jsxs(\"div\", {\n                                        className: \"author\",\n                                        children: [\n                                            /*#__PURE__*/ _jsx(\"span\", {\n                                                className: \"authorName\",\n                                                children: name\n                                            }),\n                                            /*#__PURE__*/ _jsx(\"span\", {\n                                                className: \"authorTitle\",\n                                                children: title\n                                            })\n                                        ]\n                                    })\n                                ]\n                            }),\n                            /*#__PURE__*/ _jsx(\"div\", {\n                                className: \"apps appsDesktop\",\n                                children: recommendations.map((app, index)=>this.getAppTile(app, index))\n                            })\n                        ]\n                    })\n                }),\n                /*#__PURE__*/ _jsx(\"div\", {\n                    className: \"apps appsMobile\",\n                    children: recommendations.map((app, index)=>this.getAppTile(app, index))\n                })\n            ]\n        });\n    }\n    constructor(...args){\n        super(...args), _define_property(this, \"context\", void 0);\n    }\n}\nSuccessStory.contextTypes = {\n    buildHref: PropTypes.func,\n    renderErrorModal: PropTypes.func,\n    loc: PropTypes.func\n};\n","import Finance from '@shared/images/homepage/Finance.jpg';\nimport LowCode from '@shared/images/homepage/LowCode.jpg';\nimport Service from '@shared/images/homepage/Service.jpg';\nimport SupplyChain from '@shared/images/homepage/SupplyChain.jpg';\nimport CustomerExperience from '@shared/images/homepage/CustomerExperience.jpg';\n/**  ™  */ const trademark = '\\u2122';\nexport const TestimonialsId = {\n    Finance: 'Finance',\n    LowCode: 'LowCode',\n    Service: 'Service',\n    SupplyChain: 'SupplyChain',\n    CustomerExperience: 'CustomerExperience'\n};\nexport const testimonials = [\n    {\n        id: TestimonialsId.LowCode,\n        title: 'Success_Story_Area1_Title',\n        image: LowCode,\n        description: 'Testimonial_LowCode',\n        descriptionFallback: '\"The smart features in Maplytics have made our search process faster and easier for users, saving hours of employee time.\"',\n        author: {\n            name: 'Abby Torres',\n            title: 'Director of Information Technology ReEmployAbility'\n        },\n        recommendations: [\n            {\n                productFamily: 'dynamics-365',\n                entityId: 'inogic.f6f3c73f-29de-4fa8-a396-87ea8a07b6c4',\n                title: 'Maplytics: Maps + CRM',\n                iconURL: 'https://store-images.s-microsoft.com/image/apps.6214.3b6ff61e-e12d-44db-aeaf-5145a958ce40.be7576ed-81f3-4957-bbba-9c34161e56b6.dbc37bc4-11b0-4899-b229-23d1be6473b8',\n                shortDescription: 'Testimonial_LowCode_Product_Description',\n                shortDescriptionFallback: 'Leverage the power of location-based intelligence'\n            }\n        ]\n    },\n    {\n        id: TestimonialsId.Finance,\n        title: 'Success_Story_Area2_Title',\n        image: Finance,\n        description: 'Testimonial_Finance',\n        descriptionFallback: '\"With Binary Stream, we can produce auditable reports with certainty and confidence. This has proven very effective, and we are now reaping the cost savings.\"',\n        author: {\n            name: 'Lyn Donnelly',\n            title: 'Management Accountant at PR Finance Group Ltd.'\n        },\n        recommendations: [\n            {\n                productFamily: 'dynamics-365-business-central',\n                entityId: 'binary-stream-software.ec403ee3-66eb-4565-95db-30cacf093e19',\n                title: 'Subscription Billing Suite',\n                iconURL: 'https://store-images.s-microsoft.com/image/apps.48588.41a6f731-100c-49a6-b081-360e15c6678f.0c64271c-afe2-48ae-821f-bf6276ecf4be.c7a3b37e-4942-4970-bd07-7c335ae0507b',\n                shortDescription: 'Testimonial_Finance_Product_Description',\n                shortDescriptionFallback: 'Manage contracts with ease by automating complex recurring billing cycles'\n            }\n        ]\n    },\n    {\n        id: TestimonialsId.Service,\n        title: 'Success_Story_Area3_Title',\n        image: Service,\n        description: 'Testimonial_Service',\n        descriptionFallback: '\"b+s has been a great partner! Our contact center has unique use cases that their technical team helped us navigate and resolve.\"',\n        author: {\n            name: 'Lee Christiansen',\n            title: 'Director – Network Infrastructure and Operations Mountain America Credit Union'\n        },\n        recommendations: [\n            {\n                productFamily: 'dynamics-365',\n                entityId: 'buchersuterag1580892733541.connects',\n                title: 'b+s Connects',\n                iconURL: 'https://store-images.s-microsoft.com/image/apps.27812.5094e61f-ca74-440b-bc07-9e3ff81af5a9.7985c97a-706b-455e-aa98-552c5b2be291.39338e28-b888-4224-9893-835a4feb9b24',\n                shortDescription: 'Testimonial_Service_Product_Description',\n                shortDescriptionFallback: 'Designed to assist contact center agents in their delivery of outstanding customer service'\n            }\n        ]\n    },\n    {\n        id: TestimonialsId.SupplyChain,\n        title: 'Success_Story_Area4_Title',\n        image: SupplyChain,\n        description: 'Testimonial_SupplyChain',\n        descriptionFallback: '\"We decided to look for a new ERP system that would integrate with SPS Commerce because we had such a positive experience working with SPS.\"',\n        author: {\n            name: 'Anthony Flores',\n            title: 'Demand Planning and Analytics Manager'\n        },\n        recommendations: [\n            {\n                productFamily: 'dynamics-365-for-operations',\n                entityId: 'spscommerce1602261903756.spscommerce_edi',\n                title: 'SPS Commerce EDI for Dynamics 365',\n                iconURL: 'https://store-images.s-microsoft.com/image/apps.35888.58b103f3-e263-4602-a5e2-63ef90aacf25.e9d91376-8efa-481f-8994-56316cded698.16f16b87-f998-4e36-aef4-041694ea7a11',\n                shortDescription: 'Testimonial_SupplyChain_Product_Description',\n                shortDescriptionFallback: 'Eliminate the time and cost of human errors due to manual data entry'\n            }\n        ]\n    },\n    {\n        id: TestimonialsId.CustomerExperience,\n        title: 'Success_Story_Area5_Title',\n        image: CustomerExperience,\n        description: 'Testimonial_CustomerExperience',\n        descriptionFallback: '\"Powerful deduplication solution with many options to refine the merging options. On top: an excellent support, fast and competent!\"',\n        author: {\n            name: 'Georg Grawatsch',\n            title: 'Product Owner CRM Falstaff Verlags-GmbH'\n        },\n        recommendations: [\n            {\n                productFamily: 'dynamics-365',\n                entityId: 'data8.duplicare',\n                title: `Data8 Duplicare${trademark}`,\n                iconURL: 'https://store-images.s-microsoft.com/image/apps.13144.a4207375-054f-4781-b7c7-91f123382727.05a75a43-af0e-4390-9bd9-73f7902f3853.d772ae32-0844-4d46-b68a-d30493d2ce55',\n                shortDescription: 'Testimonial_CustomerExperience_Product_Description',\n                shortDescriptionFallback: 'Deduplication via advanced fuzzy duplicate detection and multi-record merging'\n            }\n        ]\n    }\n];\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { Tab, Tabs, TabsTheme } from '@shared/components/tabs';\nimport { SuccessStory } from '@shared/components/successStory';\nimport { urlReplace, routes } from '@shared/routerHistory';\nimport { testimonials } from './Testimonials.data';\nimport { OwnerType } from '@shared/utils/detailUtils';\nconst biArea = 'homePage';\nexport const Testimonials = ({ defaultTestimonialTabName }, context)=>{\n    const getSuccessStoryTabHref = (tabId)=>{\n        const params = {\n            filterTab: null,\n            successStoryTab: tabId,\n            industry: null\n        };\n        return context === null || context === void 0 ? void 0 : context.buildHref(routes.home, null, params);\n    };\n    const changeSuccessStoryTabCallback = (tabId)=>{\n        const newPath = getSuccessStoryTabHref(tabId) || '';\n        urlReplace(newPath);\n    };\n    return /*#__PURE__*/ _jsx(Tabs, {\n        defaultTab: defaultTestimonialTabName,\n        ownerType: OwnerType.App,\n        theme: TabsTheme.gray,\n        ownerId: 'homeSuccessStory',\n        centerize: true,\n        changeTabCallback: (tabId)=>{\n            changeSuccessStoryTabCallback(tabId);\n        },\n        getTabHref: (tabId)=>getSuccessStoryTabHref(tabId),\n        children: testimonials.map((story)=>{\n            const { title, id, author, description, descriptionFallback, image, recommendations } = story;\n            return /*#__PURE__*/ _jsx(Tab, {\n                title: context.loc(title, title),\n                name: id,\n                otherProps: {\n                    'data-bi-id': id,\n                    'data-bi-type': 'successStory',\n                    'data-bi-area': biArea\n                },\n                children: /*#__PURE__*/ _jsx(SuccessStory, {\n                    author: author,\n                    description: description,\n                    descriptionFallback: descriptionFallback,\n                    id: id,\n                    image: image,\n                    recommendations: recommendations,\n                    title: title\n                })\n            }, id);\n        })\n    });\n};\nTestimonials.contextTypes = {\n    buildHref: PropTypes.func,\n    loc: PropTypes.func\n};\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport SpzaComponent from './spzaComponent';\nclass Animation extends SpzaComponent {\n    renderImpl() {\n        return this.props.isCircular ? /*#__PURE__*/ _jsxs(\"div\", {\n            className: \"c-progress f-indeterminate-local f-progress-small\",\n            role: \"progressbar\",\n            \"aria-valuetext\": \"Loading...\",\n            tabIndex: 0,\n            \"aria-label\": \"indeterminate local small progress bar\",\n            children: [\n                /*#__PURE__*/ _jsx(\"span\", {}),\n                /*#__PURE__*/ _jsx(\"span\", {}),\n                /*#__PURE__*/ _jsx(\"span\", {}),\n                /*#__PURE__*/ _jsx(\"span\", {}),\n                /*#__PURE__*/ _jsx(\"span\", {})\n            ]\n        }) : /*#__PURE__*/ _jsxs(\"div\", {\n            className: \"c-progress f-indeterminate-regional\",\n            role: \"progressbar\",\n            \"aria-valuetext\": \"Loading...\",\n            tabIndex: 0,\n            children: [\n                /*#__PURE__*/ _jsx(\"span\", {\n                    className: \"aniDot\"\n                }),\n                /*#__PURE__*/ _jsx(\"span\", {\n                    className: \"aniDot\"\n                }),\n                /*#__PURE__*/ _jsx(\"span\", {\n                    className: \"aniDot\"\n                }),\n                /*#__PURE__*/ _jsx(\"span\", {\n                    className: \"aniDot\"\n                }),\n                /*#__PURE__*/ _jsx(\"span\", {\n                    className: \"aniDot\"\n                })\n            ]\n        });\n    }\n}\nexport { Animation as default };\nAnimation.contextTypes = {\n    renderErrorModal: PropTypes.func\n};\n","import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from \"react/jsx-runtime\";\nimport React from 'react';\nimport { getTotalExternalRatingSummariesInfo, getRatingSummaryByType } from '@shared/utils/reviewsUtils';\nimport * as PropTypes from 'prop-types';\nimport { Text, mergeStyleSets } from '@fluentui/react';\nimport { NeutralColors } from '@fluentui/theme';\nimport { Constants } from '@shared/utils/constants';\nimport { RatingsInfo } from '@shared/components/ratings/ratingsInfo';\nconst contentStyles = mergeStyleSets({\n    separator: {\n        color: NeutralColors.gray90,\n        margin: '0px 12px',\n        fontSize: 18\n    }\n});\nvar HeaderRatingBarInfoKey = /*#__PURE__*/ function(HeaderRatingBarInfoKey) {\n    HeaderRatingBarInfoKey[\"Internal\"] = \"internal\";\n    HeaderRatingBarInfoKey[\"External\"] = \"external\";\n    HeaderRatingBarInfoKey[\"All\"] = \"all\";\n    return HeaderRatingBarInfoKey;\n}(HeaderRatingBarInfoKey || {});\nexport const AppDetailsHeaderRatingBar = ({ app }, context)=>{\n    const allRatingSummaryObj = getRatingSummaryByType(app === null || app === void 0 ? void 0 : app.ratingSummaries, Constants.Reviews.ReviewsSource.All);\n    const avgRating = (allRatingSummaryObj === null || allRatingSummaryObj === void 0 ? void 0 : allRatingSummaryObj.AverageRating) || app.AverageRating || 0;\n    const ratingsCount = (allRatingSummaryObj === null || allRatingSummaryObj === void 0 ? void 0 : allRatingSummaryObj.TotalRatings) || app.NumberOfRatings || 0;\n    const externalSummariesInfo = getTotalExternalRatingSummariesInfo(app.ratingSummaries);\n    if (ratingsCount <= 0 && externalSummariesInfo.totalRatings <= 0) {\n        return null;\n    }\n    return /*#__PURE__*/ _jsxs(\"div\", {\n        itemProp: \"itemReviewed\",\n        itemScope: true,\n        itemType: Constants.Reviews.Microdata.AppItemType,\n        children: [\n            /*#__PURE__*/ _jsx(\"meta\", {\n                itemProp: \"name\",\n                content: app.title\n            }),\n            /*#__PURE__*/ _jsx(\"meta\", {\n                itemProp: \"applicationCategory\",\n                content: Constants.Reviews.Microdata.AppCategory\n            }),\n            /*#__PURE__*/ _jsxs(\"div\", {\n                className: \"appRatingCell\",\n                itemProp: \"aggregateRating\",\n                itemScope: true,\n                itemType: \"https://schema.org/AggregateRating\",\n                children: [\n                    /*#__PURE__*/ _jsx(\"div\", {\n                        children: /*#__PURE__*/ _jsx(\"div\", {\n                            className: \"detailsRating\",\n                            children: allRatingSummaryObj ? /*#__PURE__*/ _jsx(RatingsInfo, {\n                                avgRating: avgRating,\n                                ratingsCount: ratingsCount,\n                                title: context.loc('Global_Loc_ratingsLower', 'ratings'),\n                                context: context\n                            }, \"all\") : /*#__PURE__*/ _jsxs(_Fragment, {\n                                children: [\n                                    /*#__PURE__*/ _jsx(RatingsInfo, {\n                                        avgRating: avgRating,\n                                        ratingsCount: ratingsCount,\n                                        title: context.loc('RatingSummary_Title', 'Marketplace ratings'),\n                                        context: context\n                                    }, \"internal\"),\n                                    externalSummariesInfo.totalRatings > 0 && /*#__PURE__*/ _jsx(Text, {\n                                        className: contentStyles.separator,\n                                        children: \"|\"\n                                    }),\n                                    externalSummariesInfo.totalRatings > 0 && /*#__PURE__*/ _jsx(RatingsInfo, {\n                                        avgRating: externalSummariesInfo.averageRatings,\n                                        ratingsCount: externalSummariesInfo.totalRatings,\n                                        title: context.loc('appDetails_ExternalRatings', 'external ratings'),\n                                        context: context\n                                    }, \"external\")\n                                ]\n                            })\n                        })\n                    }),\n                    /*#__PURE__*/ _jsx(\"meta\", {\n                        itemProp: \"reviewCount\",\n                        content: ratingsCount.toString()\n                    }),\n                    /*#__PURE__*/ _jsx(\"meta\", {\n                        itemProp: \"ratingValue\",\n                        content: parseFloat(avgRating.toString()).toFixed(2)\n                    })\n                ]\n            })\n        ]\n    });\n};\nAppDetailsHeaderRatingBar.contextTypes = {\n    loc: PropTypes.func,\n    locParams: PropTypes.func\n};\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { Text, mergeStyleSets, Stack, ScreenWidthMinXLarge } from '@fluentui/react';\nimport { Constants } from '@shared/utils/constants';\nimport { routes } from '@shared/routerHistory';\nimport { NeutralColors } from '@fluentui/theme';\nimport { LinkedItem } from '@shared/components/linkedItem';\nimport classNames from 'classnames';\nconst titleAndTileStackStyle = {\n    childrenGap: 16\n};\nconst appDetailsLinkedItemsStyles = mergeStyleSets({\n    container: {\n        marginTop: 20\n    },\n    linkedItemsContainer: {\n        marginTop: 15\n    },\n    header: {\n        color: NeutralColors.gray130,\n        fontWeight: 600\n    },\n    LinkedItemsStyle: {\n        width: '456px',\n        [`@media (max-width: ${ScreenWidthMinXLarge}px)`]: {\n            width: '312px'\n        }\n    }\n});\nconst horizontalGapStackTokens = {\n    childrenGap: 24\n};\nconst getLinkedItemLink = ({ linkedItem, productId, context })=>{\n    return context.buildHref(routes.appDetails, {\n        productId,\n        entityId: linkedItem.entityId\n    }, {\n        tab: 'Overview'\n    });\n};\nconst addinOnClick = ({ linkedItem, context, event })=>{\n    const lastCtaType = linkedItem.ctaTypes[linkedItem.ctaTypes.length - 1];\n    context.ctaCallback({\n        entity: linkedItem,\n        entityType: Constants.EntityType.App,\n        ctaType: lastCtaType,\n        actionModifier: Constants.Telemetry.ActionModifier.AppDetailCTAButton,\n        hasLicense: false\n    });\n    event.preventDefault();\n};\nconst renderLinkedItems = ({ billingCountryCode, context, productId, linkedItems, isSaaSRendering, isLoadingUserData, locale })=>{\n    return /*#__PURE__*/ _jsx(Stack, {\n        horizontal: true,\n        wrap: true,\n        tokens: horizontalGapStackTokens,\n        children: linkedItems.map((item, index)=>/*#__PURE__*/ _jsx(Stack.Item, {\n                className: classNames([\n                    appDetailsLinkedItemsStyles.LinkedItemsStyle\n                ]),\n                children: /*#__PURE__*/ _jsx(LinkedItem, {\n                    linkedItem: item,\n                    billingCountryCode: billingCountryCode,\n                    isInAppDetail: true,\n                    isSaaSRendering: isSaaSRendering,\n                    ctaButtonClick: isSaaSRendering ? ({ linkedItem })=>{\n                        getLinkedItemLink({\n                            linkedItem,\n                            productId,\n                            context\n                        });\n                    } : ({ linkedItem, event })=>{\n                        addinOnClick({\n                            linkedItem,\n                            context,\n                            event\n                        });\n                    },\n                    isLoadingUserData: isLoadingUserData,\n                    getLinkedItemLink: getLinkedItemLink,\n                    locale: locale\n                })\n            }, index))\n    });\n};\nexport const AppDetailsLinkedItemsComponent = ({ billingCountryCode, productId, linkedItems, isSaaSRendering, isLoadingUserData, headerString, locale }, context)=>{\n    return (linkedItems === null || linkedItems === void 0 ? void 0 : linkedItems.length) ? /*#__PURE__*/ _jsxs(Stack, {\n        tokens: titleAndTileStackStyle,\n        className: classNames([\n            'linkedItemsContainer',\n            [\n                appDetailsLinkedItemsStyles.container\n            ]\n        ]),\n        children: [\n            /*#__PURE__*/ _jsx(Stack.Item, {\n                children: headerString && /*#__PURE__*/ _jsx(Text, {\n                    variant: \"mediumPlus\",\n                    className: appDetailsLinkedItemsStyles.header,\n                    children: headerString\n                })\n            }),\n            /*#__PURE__*/ _jsx(Stack.Item, {\n                children: renderLinkedItems({\n                    billingCountryCode,\n                    productId,\n                    linkedItems,\n                    isSaaSRendering,\n                    isLoadingUserData,\n                    context,\n                    locale\n                })\n            })\n        ]\n    }) : null;\n};\nAppDetailsLinkedItemsComponent.contextTypes = {\n    buildHref: PropTypes.func,\n    ctaCallback: PropTypes.func\n};\nexport const AppDetailsLinkedItems = AppDetailsLinkedItemsComponent;\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport React from 'react';\nimport { mergeStyleSets } from '@fluentui/react';\nimport * as PropTypes from 'prop-types';\nimport { NeutralColors } from '@fluentui/theme';\nimport { AppReviewCommentCollectionPaginationButton } from '@shared/components/appReviewCommentCollection';\nconst contentStyles = mergeStyleSets({\n    commentsContainer: {\n        marginBottom: '20px'\n    },\n    paginationContainer: {\n        marginTop: '10px'\n    },\n    emptyMessage: {\n        margin: '15px 0',\n        color: NeutralColors.gray130\n    },\n    loader: {\n        margin: '25px 0'\n    }\n});\nexport function AppReviewItemCommentPagination({ currentPage, totalPageCount, onSeeMoreClick, onSeeLessClick }, context) {\n    return /*#__PURE__*/ _jsxs(\"div\", {\n        className: contentStyles.paginationContainer,\n        children: [\n            currentPage < totalPageCount && /*#__PURE__*/ _jsx(AppReviewCommentCollectionPaginationButton, {\n                \"data-bi-id\": \"reviewCommentsPaginationSeeMore\",\n                \"data-bi-name\": \"Review Comments Section See More Button\",\n                onClick: ()=>onSeeMoreClick(),\n                text: context.loc('ReviewItem_CommentSection_LoadMore_Button_Label', 'See more'),\n                iconName: \"ChevronDown\"\n            }),\n            totalPageCount > 1 && currentPage >= totalPageCount && /*#__PURE__*/ _jsx(AppReviewCommentCollectionPaginationButton, {\n                \"data-bi-id\": \"reviewCommentsPaginationSeeLess\",\n                \"data-bi-name\": \"Review Comments Section See Less Button\",\n                onClick: ()=>onSeeLessClick(),\n                text: context.loc('ReviewItem_CommentSection_Collapse_Button_Label', 'See less'),\n                iconName: \"ChevronUp\"\n            })\n        ]\n    });\n}\nAppReviewItemCommentPagination.contextTypes = {\n    loc: PropTypes.func\n};\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { NeutralColors } from '@fluentui/theme';\nimport { mergeStyleSets } from '@fluentui/react';\nconst appReviewCommentStyles = mergeStyleSets({\n    commentsContainer: {\n        marginBottom: '20px'\n    },\n    paginationContainer: {\n        marginTop: '10px'\n    },\n    emptyMessage: {\n        margin: '15px 0',\n        color: NeutralColors.gray130\n    },\n    loader: {\n        margin: '25px 0'\n    }\n});\nexport function AppReviewItemCommentEmptyMessage(params, context) {\n    return /*#__PURE__*/ _jsx(\"div\", {\n        className: appReviewCommentStyles.emptyMessage,\n        children: context.loc('ReviewItem_CommentSection_Empty_Message', 'No comments yet. Be the first one to comment.')\n    });\n}\nAppReviewItemCommentEmptyMessage.contextTypes = {\n    loc: PropTypes.func\n};\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport React from 'react';\nimport { AppReviewCommentItem } from '@shared/components/appReviewCommentItem';\nimport { mergeStyleSets, Spinner, SpinnerSize, Stack } from '@fluentui/react';\nimport { Constants } from '@shared/utils/constants';\nimport { NeutralColors } from '@fluentui/theme';\nimport { AppReviewItemCommentPagination } from '@shared/components/appReviewCommentCollection/appReviewItemCommentPagination';\nimport { AppReviewItemCommentEmptyMessage } from '@shared/components/appReviewCommentCollection/appReviewItemCommentEmptyMessage';\nconst contentStyles = mergeStyleSets({\n    commentsContainer: {\n        marginBottom: '20px'\n    },\n    paginationContainer: {\n        marginTop: '10px'\n    },\n    emptyMessage: {\n        margin: '15px 0',\n        color: NeutralColors.gray130\n    },\n    loader: {\n        margin: '25px 0'\n    }\n});\nexport function AppReviewItemCommentCollectionListSection({ comments, currentPage, locale, totalPageCount, onSeeMoreClick, onSeeLessClick, onCommentDelete, onCommentEdit }) {\n    const mapCommentsToComponents = ({ reducedCommentIds, commentsById })=>{\n        return reducedCommentIds.slice(0, currentPage * Constants.Reviews.CommentsPerPage).map((commentId)=>/*#__PURE__*/ _jsx(AppReviewCommentItem, {\n                onEdit: (updatedContent)=>{\n                    onCommentEdit(commentId, updatedContent, false);\n                },\n                onDelete: ()=>{\n                    onCommentDelete(commentId, false);\n                },\n                locale: locale,\n                comment: commentsById[`${commentId}`]\n            }, commentId));\n    };\n    const mapNewlyAddedCommentsToComponents = (comments)=>{\n        return comments.map((comment)=>/*#__PURE__*/ _jsx(AppReviewCommentItem, {\n                onEdit: (updatedContent)=>onCommentEdit(comment.id, updatedContent, true),\n                onDelete: ()=>onCommentDelete(comment.id, true),\n                locale: locale,\n                comment: comment\n            }, comment.id));\n    };\n    return /*#__PURE__*/ _jsxs(\"div\", {\n        className: contentStyles.commentsContainer,\n        children: [\n            (comments === null || comments === void 0 ? void 0 : comments.reducedCommentIds.length) ? [\n                ...mapCommentsToComponents(comments),\n                /*#__PURE__*/ _jsx(AppReviewItemCommentPagination, {\n                    currentPage: currentPage,\n                    totalPageCount: totalPageCount,\n                    onSeeMoreClick: ()=>onSeeMoreClick(),\n                    onSeeLessClick: ()=>onSeeLessClick()\n                }, \"pagination\")\n            ] : !(comments === null || comments === void 0 ? void 0 : comments.isLoading) && /*#__PURE__*/ _jsx(AppReviewItemCommentEmptyMessage, {}),\n            (comments === null || comments === void 0 ? void 0 : comments.isLoading) && /*#__PURE__*/ _jsx(Stack, {\n                horizontal: true,\n                className: contentStyles.loader,\n                children: /*#__PURE__*/ _jsx(Spinner, {\n                    size: SpinnerSize.large\n                })\n            }),\n            (comments === null || comments === void 0 ? void 0 : comments.newlyAddedComments) ? mapNewlyAddedCommentsToComponents(comments.newlyAddedComments) : null\n        ]\n    });\n}\n","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n    try {\n        var info = gen[key](arg);\n        var value = info.value;\n    } catch (error) {\n        reject(error);\n        return;\n    }\n    if (info.done) {\n        resolve(value);\n    } else {\n        Promise.resolve(value).then(_next, _throw);\n    }\n}\nfunction _async_to_generator(fn) {\n    return function() {\n        var self = this, args = arguments;\n        return new Promise(function(resolve, reject) {\n            var gen = fn.apply(self, args);\n            function _next(value) {\n                asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n            }\n            function _throw(err) {\n                asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n            }\n            _next(undefined);\n        });\n    };\n}\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport React, { useEffect, useState } from 'react';\nimport { Constants } from '@shared/utils/constants';\nimport { launchTelemetry } from '@shared/utils/reviewsUtils';\nimport { AppReviewItemCommentComposer } from '@shared/components/appReviewItemCommentComposer';\nimport { logger } from '@src/logger';\nimport { AppReviewItemCommentCollectionListSection } from '@shared/components/appReviewCommentCollection/appReviewItemCommentCollectionListSection';\nexport const AppReviewCommentCollection = ({ comments = null, expanded, review, loadData, clearData, locale, signedIn, openModal, createComment, deleteComment, editComment, ensureStateInitialized, unloadPages, isStateInitialized = false })=>{\n    const [currentPage, setCurrentPage] = useState(1);\n    const [composeText, setComposeText] = useState('');\n    /**\n   * Triggers loading of comments for the current page, if necessary,\n   * e.g. during an initial expansion of the component, page navigation.\n   */ const loadCurrentPageDataIfNeeded = ()=>{\n        if (expanded && loadData && comments) {\n            // Load the current page if there are no comments, if the initial loading was never triggered,\n            // or if the user navigated to the next page which hasn't yet bee loaded.\n            if (!comments.commentIds.length || currentPage > comments.currentLoadedPage) {\n                loadData({\n                    offerId: review.offer_id,\n                    reviewId: review.id,\n                    page: currentPage,\n                    itemsPerPage: Constants.Reviews.CommentsPerPage\n                });\n            }\n        }\n    };\n    const loadNextPage = ()=>{\n        // If we already loaded enough data, simply append the visible page - otherwise, append both\n        setCurrentPage((prev)=>prev + 1);\n    };\n    const resetPagination = ()=>{\n        unloadPages({\n            offerId: review.offer_id,\n            reviewId: review.id\n        });\n        setCurrentPage(1);\n    };\n    const onSeeLessClick = ()=>{\n        resetPagination();\n        launchTelemetry(Constants.Telemetry.Action.Click, Constants.Telemetry.ActionModifier.ReviewItemCommentsSeeLess, {\n            reviewId: review === null || review === void 0 ? void 0 : review.id,\n            offerId: review === null || review === void 0 ? void 0 : review.offer_id\n        });\n        logger.info(JSON.stringify({\n            reviewId: review === null || review === void 0 ? void 0 : review.id,\n            offerId: review === null || review === void 0 ? void 0 : review.offer_id\n        }), {\n            action: Constants.Telemetry.Action.Click,\n            actionModifier: Constants.Telemetry.ActionModifier.ReviewItemCommentsSeeLess\n        });\n    };\n    const onSeeMoreClick = ()=>{\n        loadNextPage();\n        launchTelemetry(Constants.Telemetry.Action.Click, Constants.Telemetry.ActionModifier.ReviewItemCommentsSeeMore, {\n            reviewId: review === null || review === void 0 ? void 0 : review.id,\n            offerId: review === null || review === void 0 ? void 0 : review.offer_id\n        });\n        logger.info(JSON.stringify({\n            reviewId: review === null || review === void 0 ? void 0 : review.id,\n            offerId: review === null || review === void 0 ? void 0 : review.offer_id\n        }), {\n            action: Constants.Telemetry.Action.Click,\n            actionModifier: Constants.Telemetry.ActionModifier.ReviewItemCommentsSeeMore\n        });\n    };\n    const openSignInModal = ()=>{\n        openModal({\n            modalId: Constants.ModalType.SignIn\n        });\n        launchTelemetry(Constants.Telemetry.Action.Click, Constants.Telemetry.ActionModifier.ReviewItemCommentsSignIn, {\n            reviewId: review === null || review === void 0 ? void 0 : review.id,\n            offerId: review === null || review === void 0 ? void 0 : review.offer_id\n        });\n        logger.info(JSON.stringify({\n            reviewId: review === null || review === void 0 ? void 0 : review.id,\n            offerId: review === null || review === void 0 ? void 0 : review.offer_id\n        }), {\n            action: Constants.Telemetry.Action.Click,\n            actionModifier: Constants.Telemetry.ActionModifier.ReviewItemCommentsSignIn\n        });\n    };\n    const shouldNewCommentEnterNewlyAddedList = ()=>{\n        return currentPage < comments.totalPages;\n    };\n    const onSubmitComment = /*#__PURE__*/ function() {\n        var _ref = _async_to_generator(function*(content) {\n            if (createComment) {\n                try {\n                    const res = yield createComment({\n                        offerId: review.offer_id,\n                        reviewId: review.id,\n                        addToNewlyAdded: shouldNewCommentEnterNewlyAddedList(),\n                        content\n                    });\n                    if (!(res === null || res === void 0 ? void 0 : res.error)) {\n                        setComposeText('');\n                        launchTelemetry(Constants.Telemetry.Action.Submitted, Constants.Telemetry.ActionModifier.ReviewItemCommentCreationSubmit, {\n                            reviewId: review === null || review === void 0 ? void 0 : review.id,\n                            offerId: review === null || review === void 0 ? void 0 : review.offer_id,\n                            content\n                        });\n                        logger.info(JSON.stringify({\n                            reviewId: review === null || review === void 0 ? void 0 : review.id,\n                            offerId: review === null || review === void 0 ? void 0 : review.offer_id,\n                            content\n                        }), {\n                            action: Constants.Telemetry.Action.Submitted,\n                            actionModifier: Constants.Telemetry.ActionModifier.ReviewItemCommentCreationSubmit\n                        });\n                    }\n                } catch (e) {\n                    launchTelemetry(Constants.Telemetry.Action.SubmitError, Constants.Telemetry.ActionModifier.ReviewItemCommentCreationSubmit, {\n                        reviewId: review === null || review === void 0 ? void 0 : review.id,\n                        offerId: review === null || review === void 0 ? void 0 : review.offer_id,\n                        error: `Encountered an error while attempting to create a comment, error: ${e}`\n                    });\n                    logger.error(JSON.stringify({\n                        reviewId: review === null || review === void 0 ? void 0 : review.id,\n                        offerId: review === null || review === void 0 ? void 0 : review.offer_id,\n                        error: `Encountered an error while attempting to create a comment, error: ${e}`\n                    }), {\n                        action: Constants.Telemetry.Action.SubmitError,\n                        actionModifier: Constants.Telemetry.ActionModifier.ReviewItemCommentCreationSubmit\n                    });\n                }\n            }\n        });\n        return function onSubmitComment(content) {\n            return _ref.apply(this, arguments);\n        };\n    }();\n    const onComposerTextChange = (newContent)=>{\n        setComposeText(newContent);\n    };\n    useEffect(()=>{\n        if (expanded) {\n            ensureStateInitialized({\n                offerId: review.offer_id,\n                reviewId: review.id,\n                totalComments: review.comments_count\n            });\n        }\n        loadCurrentPageDataIfNeeded();\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n    }, [\n        expanded,\n        currentPage,\n        isStateInitialized\n    ]);\n    useEffect(()=>{\n        if (isStateInitialized && comments.currentLoadedPage) {\n            clearData({\n                offerId: review.offer_id,\n                reviewId: review.id\n            });\n        }\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n    }, [\n        signedIn\n    ]);\n    useEffect(()=>{\n        return ()=>{\n            clearData({\n                offerId: review.offer_id,\n                reviewId: review.id\n            });\n        };\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n    }, []);\n    return expanded && comments !== null && /*#__PURE__*/ _jsxs(\"div\", {\n        children: [\n            /*#__PURE__*/ _jsx(AppReviewItemCommentCollectionListSection, {\n                comments: comments,\n                currentPage: currentPage,\n                locale: locale,\n                totalPageCount: comments.totalPages,\n                onSeeMoreClick: ()=>onSeeMoreClick(),\n                onSeeLessClick: ()=>onSeeLessClick(),\n                onCommentDelete: (commentId, isNewlyAddedComment)=>{\n                    deleteComment({\n                        commentId,\n                        offerId: review.offer_id,\n                        reviewId: review.id,\n                        isNewlyAddedComment\n                    });\n                },\n                onCommentEdit: (commentId, updatedContent, isNewlyAddedComment)=>{\n                    editComment({\n                        offerId: review.offer_id,\n                        reviewId: review.id,\n                        commentId,\n                        isNewlyAddedComment,\n                        updatedContent\n                    });\n                }\n            }),\n            /*#__PURE__*/ _jsx(AppReviewItemCommentComposer, {\n                onChange: (content)=>onComposerTextChange(content),\n                signedIn: signedIn,\n                openSignInModal: ()=>openSignInModal(),\n                onSubmit: ()=>{\n                    onSubmitComment(composeText);\n                },\n                initialContent: composeText\n            })\n        ]\n    });\n};\n","function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nfunction _object_spread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        var ownKeys = Object.keys(source);\n        if (typeof Object.getOwnPropertySymbols === \"function\") {\n            ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n            }));\n        }\n        ownKeys.forEach(function(key) {\n            _define_property(target, key, source[key]);\n        });\n    }\n    return target;\n}\nfunction ownKeys(object, enumerableOnly) {\n    var keys = Object.keys(object);\n    if (Object.getOwnPropertySymbols) {\n        var symbols = Object.getOwnPropertySymbols(object);\n        if (enumerableOnly) {\n            symbols = symbols.filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n            });\n        }\n        keys.push.apply(keys, symbols);\n    }\n    return keys;\n}\nfunction _object_spread_props(target, source) {\n    source = source != null ? source : {};\n    if (Object.getOwnPropertyDescriptors) {\n        Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n        ownKeys(Object(source)).forEach(function(key) {\n            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n    }\n    return target;\n}\nfunction _object_without_properties(source, excluded) {\n    if (source == null) return {};\n    var target = _object_without_properties_loose(source, excluded);\n    var key, i;\n    if (Object.getOwnPropertySymbols) {\n        var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n        for(i = 0; i < sourceSymbolKeys.length; i++){\n            key = sourceSymbolKeys[i];\n            if (excluded.indexOf(key) >= 0) continue;\n            if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n            target[key] = source[key];\n        }\n    }\n    return target;\n}\nfunction _object_without_properties_loose(source, excluded) {\n    if (source == null) return {};\n    var target = {};\n    var sourceKeys = Object.keys(source);\n    var key, i;\n    for(i = 0; i < sourceKeys.length; i++){\n        key = sourceKeys[i];\n        if (excluded.indexOf(key) >= 0) continue;\n        target[key] = source[key];\n    }\n    return target;\n}\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport React from 'react';\nimport { Icon, Link, mergeStyleSets, Stack } from '@fluentui/react';\nconst contentStyles = mergeStyleSets({\n    stack: {\n        alignItems: 'center'\n    },\n    link: {\n        padding: '5px 0'\n    }\n});\nconst stackTokens = {\n    childrenGap: 8\n};\nexport const AppReviewCommentCollectionPaginationButton = (_param)=>{\n    var { iconName, text, onClick } = _param, additionalProps = _object_without_properties(_param, [\n        \"iconName\",\n        \"text\",\n        \"onClick\"\n    ]);\n    return /*#__PURE__*/ _jsx(Link, _object_spread_props(_object_spread({\n        className: contentStyles.link,\n        onClick: onClick\n    }, additionalProps), {\n        children: /*#__PURE__*/ _jsxs(Stack, {\n            horizontal: true,\n            className: contentStyles.stack,\n            tokens: stackTokens,\n            children: [\n                /*#__PURE__*/ _jsx(Stack.Item, {\n                    children: text\n                }),\n                /*#__PURE__*/ _jsx(Stack.Item, {\n                    children: /*#__PURE__*/ _jsx(Icon, {\n                        iconName: iconName\n                    })\n                })\n            ]\n        })\n    }));\n};\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport React, { useEffect, useState } from 'react';\nimport { getLocaleDate } from '@shared/utils/appUtils';\nimport * as PropTypes from 'prop-types';\nimport { mergeStyleSets, Text, Persona, PersonaSize, Stack } from '@fluentui/react';\nimport { NeutralColors } from '@fluentui/theme';\nimport { AppReviewItemCommentComposer } from '@shared/components/appReviewItemCommentComposer';\nimport { Constants } from '@shared/utils/constants';\nimport { launchTelemetry } from '@shared/utils/reviewsUtils';\nimport { logger } from '@src/logger';\nimport { AppReviewCommentItemToolbar } from '@shared/components/appReviewCommentItemToolbar';\nconst appReviewCommentItemStyles = mergeStyleSets({\n    commentItem: {\n        marginTop: '24px'\n    },\n    commentAuthorName: {\n        color: NeutralColors.gray130,\n        fontWeight: 600\n    },\n    deletedItemText: {\n        color: '#4f4f4f',\n        fontStyle: 'italic'\n    },\n    commentAuthorInfoBar: {\n        marginBottom: '10px',\n        minHeight: '35px'\n    },\n    editedLabel: {\n        color: NeutralColors.gray120\n    },\n    postTime: {\n        color: NeutralColors.gray130,\n        overflow: 'hidden'\n    },\n    smallScreenToolbar: [\n        'ms-hiddenLgUp',\n        {\n            marginTop: 10,\n            marginBottom: 10\n        }\n    ],\n    mediumScreenToolbar: [\n        'ms-hiddenMdDown',\n        {\n            margin: '0 4px'\n        }\n    ],\n    personaDetails: {\n        paddingRight: 0\n    }\n});\nconst commentAuthorInfoBarStackTokenDef = {\n    childrenGap: 4\n};\nexport function AppReviewCommentItemContent({ comment }) {\n    return /*#__PURE__*/ _jsx(Text, {\n        children: comment.content\n    });\n}\nexport function AppReviewCommentItemEditedLabel({ context }) {\n    return /*#__PURE__*/ _jsx(Text, {\n        className: appReviewCommentItemStyles.editedLabel,\n        children: context.loc('ReviewItem_CommentSection_Comment_Updated_Label', 'Edited')\n    });\n}\nAppReviewCommentItemEditedLabel.contextTypes = {\n    loc: PropTypes.func\n};\nexport function AppReviewCommentItemPostTime({ comment, locale }, context) {\n    return /*#__PURE__*/ _jsxs(\"div\", {\n        className: appReviewCommentItemStyles.postTime,\n        children: [\n            /*#__PURE__*/ _jsx(Text, {\n                nowrap: true,\n                block: true,\n                className: \"ms-hiddenMdDown\",\n                children: context.locParams('ReviewItem_CommentSection_Comment_Posted_Time_Label_Long', [\n                    getLocaleDate(comment.updatedAt, locale)\n                ], 'replied on {0}')\n            }),\n            /*#__PURE__*/ _jsx(Text, {\n                nowrap: true,\n                block: true,\n                className: \"ms-hiddenLgUp\",\n                children: context.locParams('ReviewItem_CommentSection_Comment_Posted_Time_Label_Short', [\n                    getLocaleDate(comment.updatedAt, locale)\n                ], '- {0}')\n            })\n        ]\n    });\n}\nAppReviewCommentItemPostTime.contextTypes = {\n    locParams: PropTypes.func\n};\nexport function AppReviewCommentItemAuthorName({ comment }) {\n    var _comment_customerInfo;\n    return /*#__PURE__*/ _jsx(Persona, {\n        onRenderPrimaryText: ()=>{\n            var _comment_customerInfo;\n            return /*#__PURE__*/ _jsx(Text, {\n                className: appReviewCommentItemStyles.commentAuthorName,\n                children: (_comment_customerInfo = comment.customerInfo) === null || _comment_customerInfo === void 0 ? void 0 : _comment_customerInfo.name\n            });\n        },\n        text: (_comment_customerInfo = comment.customerInfo) === null || _comment_customerInfo === void 0 ? void 0 : _comment_customerInfo.name,\n        size: PersonaSize.size24,\n        styles: {\n            details: appReviewCommentItemStyles.personaDetails\n        }\n    });\n}\nexport const AppReviewCommentItem = ({ comment, locale, onDelete, onEdit }, context)=>{\n    const [isEditing, setIsEditing] = useState(false);\n    const [updatedContent, setUpdatedContent] = useState(comment.content);\n    const toggleEdit = ()=>{\n        setIsEditing((prevState)=>!prevState);\n    };\n    const onDeleteClick = ()=>{\n        launchTelemetry(Constants.Telemetry.Action.Click, Constants.Telemetry.ActionModifier.ReviewItemCommentDeleteButton, {\n            commentId: comment.id,\n            reviewId: comment.reviewId\n        });\n        logger.info(JSON.stringify({\n            commentId: comment.id,\n            reviewId: comment.reviewId\n        }), {\n            action: Constants.Telemetry.Action.Click,\n            actionModifier: Constants.Telemetry.ActionModifier.ReviewItemCommentDeleteButton\n        });\n        onDelete();\n    };\n    const onEditClick = ()=>{\n        launchTelemetry(Constants.Telemetry.Action.Click, Constants.Telemetry.ActionModifier.ReviewItemCommentEditButton, {\n            commentId: comment === null || comment === void 0 ? void 0 : comment.id,\n            reviewId: comment === null || comment === void 0 ? void 0 : comment.reviewId\n        });\n        logger.info(JSON.stringify({\n            commentId: comment === null || comment === void 0 ? void 0 : comment.id,\n            reviewId: comment === null || comment === void 0 ? void 0 : comment.reviewId\n        }), {\n            action: Constants.Telemetry.Action.Click,\n            actionModifier: Constants.Telemetry.ActionModifier.ReviewItemCommentEditButton\n        });\n        toggleEdit();\n    };\n    useEffect(()=>{\n        setIsEditing(false);\n    }, [\n        comment\n    ]);\n    return /*#__PURE__*/ _jsx(\"div\", {\n        className: appReviewCommentItemStyles.commentItem,\n        tabIndex: 0,\n        children: !(comment === null || comment === void 0 ? void 0 : comment.isDeleted) ? /*#__PURE__*/ _jsxs(\"div\", {\n            children: [\n                /*#__PURE__*/ _jsxs(Stack, {\n                    tokens: commentAuthorInfoBarStackTokenDef,\n                    horizontal: true,\n                    verticalAlign: \"center\",\n                    className: appReviewCommentItemStyles.commentAuthorInfoBar,\n                    children: [\n                        /*#__PURE__*/ _jsx(Stack.Item, {\n                            disableShrink: true,\n                            children: /*#__PURE__*/ _jsx(AppReviewCommentItemAuthorName, {\n                                comment: comment\n                            })\n                        }),\n                        /*#__PURE__*/ _jsx(AppReviewCommentItemPostTime, {\n                            comment: comment,\n                            locale: locale\n                        }),\n                        comment.isOwner && /*#__PURE__*/ _jsx(AppReviewCommentItemToolbar, {\n                            className: appReviewCommentItemStyles.mediumScreenToolbar,\n                            onDeleteToggle: onDeleteClick,\n                            onEditToggle: onEditClick,\n                            isEditing: isEditing\n                        }),\n                        comment.createdAt !== comment.updatedAt && /*#__PURE__*/ _jsx(AppReviewCommentItemEditedLabel, {\n                            context: context\n                        })\n                    ]\n                }),\n                !isEditing && /*#__PURE__*/ _jsx(AppReviewCommentItemContent, {\n                    comment: comment\n                }),\n                comment.isOwner && !isEditing && /*#__PURE__*/ _jsx(AppReviewCommentItemToolbar, {\n                    className: appReviewCommentItemStyles.smallScreenToolbar,\n                    onDeleteToggle: onDeleteClick,\n                    onEditToggle: onEditClick,\n                    isEditing: isEditing\n                }),\n                isEditing && /*#__PURE__*/ _jsx(AppReviewItemCommentComposer, {\n                    initialContent: updatedContent,\n                    editMode: true,\n                    onCloseEdit: toggleEdit,\n                    onChange: (content)=>setUpdatedContent(content),\n                    onSubmit: ()=>onEdit(updatedContent),\n                    onDeleteToggle: onDeleteClick,\n                    onEditToggle: onEditClick\n                })\n            ]\n        }) : /*#__PURE__*/ _jsx(\"div\", {\n            children: /*#__PURE__*/ _jsx(Stack, {\n                horizontal: true,\n                verticalAlign: \"center\",\n                tokens: {\n                    childrenGap: 8\n                },\n                children: /*#__PURE__*/ _jsx(Persona, {\n                    size: PersonaSize.size24,\n                    initialsColor: \"#919191\",\n                    onRenderPrimaryText: ()=>/*#__PURE__*/ _jsx(Text, {\n                            className: appReviewCommentItemStyles.deletedItemText,\n                            children: context.loc('ReviewItem_CommentSection_Comment_Deleted_Label', 'This comment was deleted.')\n                        }),\n                    styles: {\n                        details: appReviewCommentItemStyles.personaDetails\n                    }\n                })\n            })\n        })\n    });\n};\nAppReviewCommentItem.contextTypes = {\n    locParams: PropTypes.func,\n    loc: PropTypes.func\n};\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport React from 'react';\nimport { IconButton, Stack, TooltipDelay, TooltipHost } from '@fluentui/react';\nimport * as PropTypes from 'prop-types';\nexport const AppReviewCommentItemToolbar = ({ onDeleteToggle, onEditToggle, className, isEditing = false }, context)=>{\n    const icons = {\n        delete: {\n            iconName: 'Delete'\n        },\n        edit: {\n            iconName: 'Edit'\n        }\n    };\n    const tooltipCalloutProps = {\n        gapSpace: 5\n    };\n    return /*#__PURE__*/ _jsx(\"div\", {\n        className: className,\n        children: /*#__PURE__*/ _jsxs(Stack, {\n            horizontal: true,\n            tokens: {\n                childrenGap: 4\n            },\n            children: [\n                /*#__PURE__*/ _jsx(TooltipHost, {\n                    content: context.loc('ReviewItem_CommentSection_Comment_Edit_Button_Tooltip', 'Edit your comment'),\n                    calloutProps: tooltipCalloutProps,\n                    delay: TooltipDelay.zero,\n                    children: /*#__PURE__*/ _jsx(IconButton, {\n                        iconProps: icons.edit,\n                        onClick: ()=>{\n                            !isEditing && onEditToggle();\n                        },\n                        checked: isEditing,\n                        text: context.loc('ReviewItem_CommentSection_Comment_Edit_Button_Label', 'Edit'),\n                        ariaLabel: context.loc('ReviewItem_CommentSection_Comment_Edit_Button_Label', 'Edit')\n                    })\n                }),\n                /*#__PURE__*/ _jsx(TooltipHost, {\n                    content: context.loc('ReviewItem_CommentSection_Comment_Delete_Button_Tooltip', 'Delete your comment'),\n                    calloutProps: tooltipCalloutProps,\n                    delay: TooltipDelay.zero,\n                    children: /*#__PURE__*/ _jsx(IconButton, {\n                        iconProps: icons.delete,\n                        onClick: onDeleteToggle,\n                        text: context.loc('ReviewItem_CommentSection_Comment_Delete_Button_Label', 'Delete'),\n                        ariaLabel: context.loc('ReviewItem_CommentSection_Comment_Delete_Button_Label', 'Delete')\n                    })\n                })\n            ]\n        })\n    });\n};\nAppReviewCommentItemToolbar.contextTypes = {\n    loc: PropTypes.func\n};\n","/* eslint-disable @typescript-eslint/no-empty-function */ import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport * as React from 'react';\nimport { Link, mergeStyleSets, MessageBar, PrimaryButton, TextField, DefaultButton, Stack } from '@fluentui/react';\nimport { Constants } from '@shared/utils/constants';\nimport * as PropTypes from 'prop-types';\nimport { useEffect, useState } from 'react';\nimport { AppReviewCommentItemToolbar } from './appReviewCommentItemToolbar';\nconst BUTTON_SPACING = 10;\nconst appReviewCommentComposerStyles = mergeStyleSets({\n    commentTextArea: {\n        marginBottom: '10px'\n    },\n    submitButton: {\n        marginLeft: `${BUTTON_SPACING / 2} !important`\n    },\n    commentToolbar: [\n        'ms-hiddenLgUp',\n        {\n            marginRight: BUTTON_SPACING / 2\n        }\n    ]\n});\nconst tokenDef = {\n    childrenGap: BUTTON_SPACING\n};\nexport function AppReviewItemCommentComposer({ signedIn = true, openSignInModal = ()=>{}, onSubmit, initialContent = '', editMode = false, onCloseEdit = ()=>{}, onChange = ()=>{}, onDeleteToggle = ()=>{}, onEditToggle = ()=>{} }, context) {\n    const [isDisabled, setIsDisabled] = useState(false);\n    const [isShowContentLengthError, setIsShowContentLengthError] = useState(false);\n    const isContentValid = (content)=>{\n        if (content) {\n            return content.length > 0 && content.length <= Constants.Reviews.MaxCommentComposeLength;\n        }\n        return false;\n    };\n    useEffect(()=>{\n        setIsDisabled(!isContentValid(initialContent));\n        setIsShowContentLengthError(false);\n    }, [\n        initialContent\n    ]);\n    if (!signedIn) {\n        return /*#__PURE__*/ _jsxs(MessageBar, {\n            children: [\n                context.loc('ReviewItem_CommentSection_Unauthenticated_Compose_Info_SignIn_Description', 'To post comments please '),\n                /*#__PURE__*/ _jsx(Link, {\n                    onClick: openSignInModal,\n                    children: context.loc('ReviewItem_CommentSection_Unauthenticated_Compose_Info_SignIn_Link', 'sign in.')\n                })\n            ]\n        });\n    } else {\n        return /*#__PURE__*/ _jsxs(\"div\", {\n            children: [\n                /*#__PURE__*/ _jsx(TextField, {\n                    ariaLabel: context.loc('ReviewItem_CommentSection_Compose_TextBox_Aria_Label', 'Review comment text box'),\n                    multiline: true,\n                    resizable: false,\n                    value: initialContent,\n                    maxLength: Constants.Reviews.MaxCommentComposeLength,\n                    className: appReviewCommentComposerStyles.commentTextArea,\n                    onChange: (e, value)=>{\n                        onChange(value);\n                        // If the content length warning is showing and the user reduced the content length, hide the warning\n                        if (isShowContentLengthError && value.length < Constants.Reviews.MaxCommentComposeLength) {\n                            setIsShowContentLengthError(false);\n                        }\n                    },\n                    onKeyDown: ()=>{\n                        setIsShowContentLengthError(initialContent.length >= Constants.Reviews.MaxCommentComposeLength);\n                    },\n                    errorMessage: isShowContentLengthError && context.locParams('ReviewItem_CommentSection_Compose_LongContent_Warning', [\n                        Constants.Reviews.MaxCommentComposeLength.toString()\n                    ], 'You can enter a comment with a maximum of {0} characters') || null\n                }),\n                /*#__PURE__*/ _jsxs(Stack, {\n                    horizontal: true,\n                    wrap: true,\n                    tokens: tokenDef,\n                    children: [\n                        editMode && /*#__PURE__*/ _jsx(AppReviewCommentItemToolbar, {\n                            className: appReviewCommentComposerStyles.commentToolbar,\n                            onDeleteToggle: onDeleteToggle,\n                            onEditToggle: onEditToggle,\n                            isEditing: true\n                        }),\n                        /*#__PURE__*/ _jsx(PrimaryButton, {\n                            className: appReviewCommentComposerStyles.submitButton,\n                            text: context.loc(!editMode ? 'ReviewItem_CommentSection_Compose_Post_Button_Label' : 'ReviewItem_CommentSection_Compose_Edit_Button_Label'),\n                            onClick: onSubmit,\n                            allowDisabledFocus: true,\n                            disabled: isDisabled\n                        }),\n                        editMode && /*#__PURE__*/ _jsx(DefaultButton, {\n                            text: context.loc('ReviewItem_CommentSection_Compose_Edit_Discard_Button_Label'),\n                            onClick: onCloseEdit,\n                            allowDisabledFocus: true\n                        })\n                    ]\n                })\n            ]\n        });\n    }\n}\nAppReviewItemCommentComposer.contextTypes = {\n    loc: PropTypes.func,\n    locParams: PropTypes.func\n};\n","/* eslint-disable @typescript-eslint/no-empty-function */ function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nfunction _object_spread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        var ownKeys = Object.keys(source);\n        if (typeof Object.getOwnPropertySymbols === \"function\") {\n            ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n            }));\n        }\n        ownKeys.forEach(function(key) {\n            _define_property(target, key, source[key]);\n        });\n    }\n    return target;\n}\nfunction ownKeys(object, enumerableOnly) {\n    var keys = Object.keys(object);\n    if (Object.getOwnPropertySymbols) {\n        var symbols = Object.getOwnPropertySymbols(object);\n        if (enumerableOnly) {\n            symbols = symbols.filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n            });\n        }\n        keys.push.apply(keys, symbols);\n    }\n    return keys;\n}\nfunction _object_spread_props(target, source) {\n    source = source != null ? source : {};\n    if (Object.getOwnPropertyDescriptors) {\n        Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n        ownKeys(Object(source)).forEach(function(key) {\n            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n    }\n    return target;\n}\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport React, { useCallback, useRef } from 'react';\nimport { Callout, CommandBar, CommandBarButton, DirectionalHint, mergeStyleSets } from '@fluentui/react';\nimport * as PropTypes from 'prop-types';\nconst contentStyles = mergeStyleSets({\n    reviewButtonsStack: {\n        padding: 0\n    },\n    markedAsHelpfulThanksCallout: {\n        padding: '8px 24px'\n    }\n});\nexport const AppReviewItemToolbar = ({ onToggleComments = ()=>{}, onReportAbuse = ()=>{}, onMarkAsHelpful = ()=>{}, review, isMarkedAsHelpful = false, showMarkAsHelpfulThanks }, context)=>{\n    const markAsHelpfulButtonRef = useRef(null);\n    const toolbarButtonsContainerRef = useRef(null);\n    const initializeItems = useCallback(()=>{\n        const items = [];\n        items.push({\n            key: 'markAsHelpful',\n            onClick: onMarkAsHelpful,\n            iconProps: {\n                iconName: !isMarkedAsHelpful ? 'Like' : 'LikeSolid'\n            },\n            text: context.locParams('ReviewItem_MarkAsHelpfulButton_Label', [\n                review.mark_as_helpful_count.toString()\n            ], 'Mark as helpful ({0})'),\n            commandBarButtonAs: ({ key, onClick, iconProps, text })=>{\n                const buttonProps = {\n                    key,\n                    role: 'button',\n                    onClick,\n                    iconProps,\n                    text,\n                    elementRef: markAsHelpfulButtonRef\n                };\n                return /*#__PURE__*/ _jsx(CommandBarButton, _object_spread_props(_object_spread({}, buttonProps), {\n                    role: \"menuitem\"\n                }));\n            }\n        });\n        items.push({\n            key: 'comments',\n            onClick: onToggleComments,\n            iconProps: {\n                iconName: 'Chat'\n            },\n            text: context.locParams('ReviewItem_CommentsButton_Label', [\n                review.comments_count.toString()\n            ], 'Comments ({0})')\n        });\n        items.push({\n            key: 'report',\n            onClick: onReportAbuse,\n            iconProps: {\n                iconName: 'Flag'\n            },\n            text: context.loc('ReportButton_Label', 'Report review')\n        });\n        return items;\n    }, [\n        isMarkedAsHelpful,\n        onMarkAsHelpful\n    ]);\n    const items = initializeItems();\n    return /*#__PURE__*/ _jsxs(\"div\", {\n        className: \"appReviewButtons\",\n        ref: toolbarButtonsContainerRef,\n        children: [\n            /*#__PURE__*/ _jsx(CommandBar, {\n                items: items,\n                overflowButtonProps: {\n                    menuProps: {\n                        isBeakVisible: false,\n                        items: []\n                    }\n                },\n                styles: {\n                    root: contentStyles.reviewButtonsStack\n                }\n            }),\n            showMarkAsHelpfulThanks && /*#__PURE__*/ _jsx(Callout, {\n                directionalHint: DirectionalHint.topCenter,\n                className: contentStyles.markedAsHelpfulThanksCallout,\n                target: markAsHelpfulButtonRef.current ? markAsHelpfulButtonRef : toolbarButtonsContainerRef,\n                doNotLayer: true,\n                children: context.loc('ReviewItem_MarkAsHelpful_Submitted_Thanks_Label', 'Thank you')\n            })\n        ]\n    });\n};\nAppReviewItemToolbar.contextTypes = {\n    loc: PropTypes.func,\n    locParams: PropTypes.func,\n    reportAbuseCallback: PropTypes.func\n};\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport * as React from 'react';\nimport { getLocaleDate } from '../../shared/utils/appUtils';\nexport const ReviewIsvReply = (props)=>{\n    const classNames = require('classnames-minimal');\n    const [isImageLoadingError, setIsImageLoadingError] = React.useState(false);\n    const imageClassName = classNames({\n        isvIcon: !isImageLoadingError\n    });\n    const containerClasses = classNames({\n        isvReplyContainer: true,\n        [props.classes]: props.classes\n    });\n    const replyDate = getLocaleDate(props.isvReply.replied_at, props.locale);\n    const handleLoadError = ()=>{\n        setIsImageLoadingError(true);\n    };\n    return /*#__PURE__*/ _jsxs(\"div\", {\n        className: containerClasses,\n        children: [\n            /*#__PURE__*/ _jsxs(\"div\", {\n                className: \"isvReplyTitle\",\n                children: [\n                    /*#__PURE__*/ _jsx(\"img\", {\n                        className: imageClassName,\n                        alt: \"product-icon\",\n                        src: props.iconUrl,\n                        onError: handleLoadError\n                    }),\n                    /*#__PURE__*/ _jsx(\"div\", {\n                        className: \"isvName\",\n                        children: props.publisherName ? props.publisherName : ''\n                    }),\n                    /*#__PURE__*/ _jsxs(\"div\", {\n                        className: \"replyDate\",\n                        children: [\n                            \"replied on \",\n                            replyDate\n                        ]\n                    })\n                ]\n            }),\n            /*#__PURE__*/ _jsx(\"div\", {\n                className: \"isvReplyContent\",\n                children: props.isvReply.content\n            })\n        ]\n    });\n};\n","import { ensureAppReviewCommentCollectionData, ensureClearAppReviewCommentCollectionData, createAppReviewComment, ensureAppReviewCommentCollectionStateInitialized } from '@shared/actions/thunkActions';\nimport { AppReviewCommentCollection as AppReviewCommentCollectionComponent } from '@shared/components/appReviewCommentCollection';\nimport { connect } from 'react-redux';\nimport { createModalAction, createEntityReviewCommentModalAction, createEntityReviewCommentsUnloadPagesAction } from '@shared/actions/actions';\nimport { Constants } from '@shared/utils/constants';\nconst mapStateToProps = (state, ownProps)=>{\n    var _state_apps_appReviewsData, _state_apps, _ownProps_review, _state_apps_appReviewsData1, _state_apps1, _state_users;\n    const commentsState = ((_state_apps = state.apps) === null || _state_apps === void 0 ? void 0 : (_state_apps_appReviewsData = _state_apps.appReviewsData) === null || _state_apps_appReviewsData === void 0 ? void 0 : _state_apps_appReviewsData.reviewComments) && ((_state_apps1 = state.apps) === null || _state_apps1 === void 0 ? void 0 : (_state_apps_appReviewsData1 = _state_apps1.appReviewsData) === null || _state_apps_appReviewsData1 === void 0 ? void 0 : _state_apps_appReviewsData1.reviewComments[(_ownProps_review = ownProps.review) === null || _ownProps_review === void 0 ? void 0 : _ownProps_review.id]) || null;\n    return {\n        signedIn: (_state_users = state.users) === null || _state_users === void 0 ? void 0 : _state_users.signedIn,\n        comments: commentsState,\n        expanded: ownProps.expanded,\n        locale: ownProps.locale,\n        review: ownProps.review,\n        isStateInitialized: commentsState !== null\n    };\n};\nconst mapDispatchToProps = (dispatch)=>{\n    return {\n        loadData: ({ offerId, reviewId, page, itemsPerPage })=>dispatch(ensureAppReviewCommentCollectionData({\n                offerId,\n                reviewId,\n                page,\n                itemsPerPage\n            })),\n        clearData: ({ offerId, reviewId })=>dispatch(ensureClearAppReviewCommentCollectionData({\n                offerId,\n                reviewId\n            })),\n        createComment: ({ offerId, reviewId, content, addToNewlyAdded })=>dispatch(createAppReviewComment({\n                offerId,\n                reviewId,\n                commentContent: content,\n                isNewlyAddedComment: addToNewlyAdded\n            })),\n        editComment: ({ offerId, reviewId, commentId, updatedContent, isNewlyAddedComment = false })=>dispatch(createEntityReviewCommentModalAction({\n                showModal: true,\n                modalMode: Constants.Reviews.ReviewCommentModalMode.ConfirmUpdate,\n                actionPayload: {\n                    offerId,\n                    reviewId,\n                    commentId,\n                    commentContent: updatedContent,\n                    isNewlyAddedComment\n                }\n            })),\n        deleteComment: ({ offerId, reviewId, commentId, isNewlyAddedComment = false })=>dispatch(createEntityReviewCommentModalAction({\n                showModal: true,\n                modalMode: Constants.Reviews.ReviewCommentModalMode.ConfirmDelete,\n                actionPayload: {\n                    commentId,\n                    reviewId,\n                    offerId,\n                    isNewlyAddedComment\n                }\n            })),\n        openModal: ({ modalId })=>{\n            return dispatch(createModalAction({\n                showModal: true,\n                modalId: modalId\n            }));\n        },\n        ensureStateInitialized: ({ offerId, reviewId, totalComments })=>{\n            return dispatch(ensureAppReviewCommentCollectionStateInitialized({\n                offerId,\n                reviewId,\n                totalComments\n            }));\n        },\n        unloadPages: ({ offerId, reviewId })=>{\n            return dispatch(createEntityReviewCommentsUnloadPagesAction({\n                offerId,\n                reviewId\n            }));\n        }\n    };\n};\nexport const AppReviewCommentCollection = connect(mapStateToProps, mapDispatchToProps)(AppReviewCommentCollectionComponent);\n","import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from \"react/jsx-runtime\";\nimport React, { useEffect, useState } from 'react';\nimport { Link, mergeStyleSets, MessageBar } from '@fluentui/react';\nimport { AppReviewItemToolbar } from '@shared/components/appReviewItemToolbar';\nimport { ReviewIsvReply } from '@shared/components/reviewIsvReply';\nimport { AppReviewCommentCollection } from '@shared/containers/appReviewCommentCollection';\nimport { launchTelemetry } from '@shared/utils/reviewsUtils';\nimport { Constants } from '@shared/utils/constants';\nimport { logger } from '@src/logger';\nimport { useBoolean } from '@fluentui/react-hooks';\nimport * as PropTypes from 'prop-types';\nconst contentStyles = mergeStyleSets({\n    markAsHelpfulAuthMsg: {\n        marginTop: 24\n    }\n});\nconst MARK_AS_HELPFUL_MESSAGE_HIDE_MS = 2000;\nexport const AppReviewSocialContent = ({ isEmbed, review, onReportClick, locale, iconUrl, publisherName, isSignedIn, isMarkedAsHelpful, onToggleMarkAsHelpful, openSignInModal }, context)=>{\n    const [commentsExpanded, setCommentsExpanded] = useState(false);\n    const [markAsHelpfulAuthMsgExpanded, setMarkAsHelpfulAuthMsgExpanded] = useState(false);\n    const [showMarkedAsHelpfulThanks, { setFalse: hideMarkAsHelpfulMessage, setTrue: showMarkAsHelpfulMessage }] = useBoolean(false);\n    const triggerMarkAsHelpfulThanksMessage = ()=>{\n        showMarkAsHelpfulMessage();\n        // Hide the \"Thank you\" callout after the configured amount of milliseconds\n        const timeout = setTimeout(()=>{\n            hideMarkAsHelpfulMessage();\n            clearTimeout(timeout);\n        }, MARK_AS_HELPFUL_MESSAGE_HIDE_MS);\n    };\n    useEffect(()=>{\n        if (markAsHelpfulAuthMsgExpanded && isSignedIn) {\n            setMarkAsHelpfulAuthMsgExpanded(false);\n        }\n    }, [\n        isSignedIn\n    ]);\n    const toggleComments = ()=>{\n        const payload = {\n            action: commentsExpanded ? Constants.Telemetry.Action.Collapse : Constants.Telemetry.Action.Expand,\n            actionModifier: Constants.Telemetry.ActionModifier.ReviewItemCommentsToggleButton,\n            details: {\n                reviewId: review === null || review === void 0 ? void 0 : review.id,\n                appId: review === null || review === void 0 ? void 0 : review.offer_id\n            }\n        };\n        launchTelemetry(payload.action, payload.actionModifier, payload.details);\n        logger.info(JSON.stringify(payload.details), {\n            action: payload.action,\n            actionModifier: payload.actionModifier\n        });\n        setMarkAsHelpfulAuthMsgExpanded(false);\n        setCommentsExpanded((prevCommentsExpanded)=>!prevCommentsExpanded);\n    };\n    const toggleMarkAsHelpfulAuthMsg = ()=>{\n        const payload = {\n            action: markAsHelpfulAuthMsgExpanded ? Constants.Telemetry.Action.Collapse : Constants.Telemetry.Action.Expand,\n            actionModifier: Constants.Telemetry.ActionModifier.ReviewItemMarkAsHelpfulUnauthorizedMessage,\n            details: {\n                reviewId: review === null || review === void 0 ? void 0 : review.id,\n                appId: review === null || review === void 0 ? void 0 : review.offer_id\n            }\n        };\n        launchTelemetry(payload.action, payload.actionModifier, payload.details);\n        logger.info(JSON.stringify(payload.details), {\n            action: payload.action,\n            actionModifier: payload.actionModifier\n        });\n        setCommentsExpanded(false);\n        setMarkAsHelpfulAuthMsgExpanded((prevMarkAsHelpfulAuthMsgExpanded)=>!prevMarkAsHelpfulAuthMsgExpanded);\n    };\n    const onMarkAsHelpfulClick = ()=>{\n        const { id: reviewId, offer_id: offerId } = review;\n        const telemetryPayload = {\n            reviewId,\n            offerId,\n            prevIsMarkedAsHelpful: isMarkedAsHelpful\n        };\n        launchTelemetry(Constants.Telemetry.Action.Click, Constants.Telemetry.ActionModifier.ReviewItemMarkAsHelpfulButton, telemetryPayload);\n        logger.info(JSON.stringify(telemetryPayload), {\n            action: Constants.Telemetry.Action.Click,\n            actionModifier: Constants.Telemetry.ActionModifier.ReviewItemMarkAsHelpfulButton\n        });\n        if (isSignedIn) {\n            const isHelpful = !isMarkedAsHelpful;\n            onToggleMarkAsHelpful({\n                isHelpful\n            });\n            if (isHelpful) {\n                triggerMarkAsHelpfulThanksMessage();\n            }\n        } else {\n            toggleMarkAsHelpfulAuthMsg();\n        }\n    };\n    const onMarkAsHelpfulSignInClick = ()=>{\n        openSignInModal();\n        launchTelemetry(Constants.Telemetry.Action.Click, Constants.Telemetry.ActionModifier.ReviewItemMarkAsHelpfulSignIn, {\n            reviewId: review === null || review === void 0 ? void 0 : review.id,\n            offerId: review === null || review === void 0 ? void 0 : review.offer_id\n        });\n        logger.info(JSON.stringify({\n            reviewId: review === null || review === void 0 ? void 0 : review.id,\n            offerId: review === null || review === void 0 ? void 0 : review.offer_id\n        }), {\n            action: Constants.Telemetry.Action.Click,\n            actionModifier: Constants.Telemetry.ActionModifier.ReviewItemMarkAsHelpfulSignIn\n        });\n    };\n    return /*#__PURE__*/ _jsxs(_Fragment, {\n        children: [\n            isEmbed || !review.title && !review.content ? null : /*#__PURE__*/ _jsx(AppReviewItemToolbar, {\n                onReportAbuse: onReportClick,\n                onToggleComments: toggleComments,\n                onMarkAsHelpful: onMarkAsHelpfulClick,\n                review: review,\n                isMarkedAsHelpful: isMarkedAsHelpful,\n                showMarkAsHelpfulThanks: showMarkedAsHelpfulThanks\n            }),\n            review.isv_reply && /*#__PURE__*/ _jsx(ReviewIsvReply, {\n                isvReply: review.isv_reply,\n                locale: locale,\n                iconUrl: iconUrl,\n                publisherName: publisherName\n            }),\n            /*#__PURE__*/ _jsx(AppReviewCommentCollection, {\n                expanded: commentsExpanded,\n                review: review,\n                locale: locale\n            }),\n            markAsHelpfulAuthMsgExpanded && /*#__PURE__*/ _jsxs(MessageBar, {\n                styles: {\n                    root: contentStyles.markAsHelpfulAuthMsg\n                },\n                children: [\n                    context.loc('ReviewItem_MarkAsHelpful_Unauthenticated_SignIn_Description', 'To mark as helpful please '),\n                    /*#__PURE__*/ _jsx(Link, {\n                        onClick: onMarkAsHelpfulSignInClick,\n                        children: context.loc('ReviewItem_MarkAsHelpful_Unauthenticated_SignIn_Link', 'sign in.')\n                    })\n                ]\n            })\n        ]\n    });\n};\nAppReviewSocialContent.contextTypes = {\n    loc: PropTypes.func\n};\n","/* eslint-disable react/forbid-dom-props */ function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { Stack, Text, Image } from '@fluentui/react';\nimport { v4 } from 'uuid';\nimport SpzaComponent from '@shared/components/spzaComponent';\nimport { PricingStates, AppTag } from '@shared/Models';\nimport { DataMap } from '@shared/utils/dataMapping';\nimport { BaseTile } from '@shared/containers/baseTile';\nimport { Constants, OfferType } from '@shared/utils/constants';\nimport { isOfficeNonSaasApp, isOfficeApp, isSaaS, getParentProductTitle, getCTATypeForActionString, isTransactApp, isAvailableInThisRegion, isPrivateOffer, getPDPRoute, isBagTransactable, isPowerBIVisuals, getCtaBagTransactable, getBadgeTypes, getProductByUrlKey } from '@shared/utils/appUtils';\nimport { generateTileClickPayloadAndLogTelemetry, getProductsList, hideCertificateBadges } from '@shared/utils/detailUtils';\nimport { getStartingFromPriceText } from '@shared/utils/pricing';\nimport { getComponentXYCoordinate, getTileComponentRank } from '@shared/utils/reactUtils';\nimport { isAppSource, isEmbed } from '@embed/embedHostUtils';\nimport { getPrimaryProductUrl, bitMasksMatchFilter } from '@shared/utils/datamappingHelpers';\nimport { SharedColors } from '@fluentui/theme';\nimport PBICertified from '@shared/images/badges/PBICertified.svg';\nimport AzureExpertsMSP from '@shared/images/badges/AzureExpertsMSP.svg';\nimport PrivateOffer from '@shared/images/badges/PrivateOffer.svg';\nimport OfficeAwards from '@shared/images/badges/OfficeAwards.svg';\nimport SolutionMap from '@shared/images/badges/SolutionMap.svg';\nimport MicrosoftCertified from '@shared/images/badges/MicrosoftCertified.svg';\nimport AzureBenefitEligibleIMG from '@shared/images/badges/AzureBenefitEligible.svg';\nimport CertifiedSoftware from '@shared/images/badges/badge_CertifiedSoftware.svg';\nimport freeTrial from '@shared/images/tileFreeTrialBadge.svg';\nimport { ItemsTooltip } from '@shared/components/ItemsTooltip';\nimport { isOneTimePaymentOffer } from '@shared/utils/onetimepaymentoffers';\nimport { getRatingSummaryByType } from '@shared/utils/reviewsUtils';\nconst { CTAType: { Install: CTAInstall, BuyLicense: CTABuyLicense, Get: CTAGet, RequestTrial: CTARequestTrial, Try: CTATry, Purchase: CTAPurchase }, ActionStrings: { Install: ActionInstall, BuyLicense: ActionBuyLicense, Get: ActionGet, RequestTrial: ActionRequestTrial, Try: ActionTry }, JsllCTAId: { Install: JsllCTAIdInstall, Try: JsllCTAIdTry, BuyLicense: JsllCTAIdBuyLicense } } = Constants;\nconst badgesInformation = [\n    {\n        badge: Constants.BadgeType.AzureBenefitEligible,\n        loc: 'Global_Loc_Azure_benefit',\n        title: 'Azure benefit eligible',\n        src: AzureBenefitEligibleIMG\n    },\n    {\n        badge: Constants.BadgeType.MicrosoftCertified,\n        loc: 'Microsoft365Certified_Badge',\n        title: 'Microsoft 365 Certified',\n        src: MicrosoftCertified,\n        hidden: ()=>hideCertificateBadges()\n    },\n    {\n        badge: Constants.BadgeType.PBICertified,\n        loc: 'PowerBICertified_Badge',\n        title: 'Power BI Certified',\n        src: PBICertified\n    },\n    {\n        badge: Constants.BadgeType.CertifiedSoftware,\n        loc: 'CertifiedSoftware',\n        title: 'Certified software',\n        src: CertifiedSoftware\n    },\n    {\n        badge: Constants.BadgeType.PreferredSolution,\n        loc: 'MicrosoftPreferredSolution_Badge',\n        title: 'Microsoft preferred solution',\n        src: SolutionMap\n    },\n    {\n        badge: Constants.BadgeType.AzureExpertsMSP,\n        loc: 'AzureExpertsMSP_Badge',\n        title: 'Azure Experts MSP',\n        src: AzureExpertsMSP\n    },\n    {\n        badge: Constants.BadgeType.Microsoft365AppAward,\n        loc: 'Microsoft365AppAward_Badge',\n        title: 'Microsoft 365 App Award',\n        src: OfficeAwards\n    },\n    {\n        badge: Constants.BadgeType.PrivateOffer,\n        loc: 'UserPrivatePlan_Badge',\n        title: 'Private Plan',\n        src: PrivateOffer,\n        customClassName: 'size-14'\n    },\n    {\n        badge: Constants.BadgeType.FreeTrial,\n        loc: 'FreeTrial_Badge',\n        title: 'Free trial',\n        src: freeTrial\n    }\n];\nexport class AppTile extends SpzaComponent {\n    handleKeyPress(event) {\n        // only enter key should open the corresponding pop up\n        if (event.charCode === Constants.SystemKey.Enter) {\n            if (event.preventDefault) {\n                event.preventDefault();\n            }\n            this.getApp(event);\n        }\n    }\n    getApp(e) {\n        e.stopPropagation();\n        const { closeTile, currentView, actionString, ctaTypes, licenseManagement, entityId, AverageRating, NumberOfRatings, doesTenantHasLicenseForApp, linkedAddIns, uiRole, activeFilters, searchSortingOption, count, searchReqId, setTileCheckoutSource, ribbonKey } = this.props;\n        if (closeTile && currentView === Constants.currentView.AppDetails) {\n            this.props.closeTile();\n        }\n        let ctaType = getCTATypeForActionString(actionString);\n        // Since Get and Purchase have the same action strings, fix the CTA type for purchase\n        if (ctaTypes.length && ctaTypes[0] === CTAPurchase) {\n            ctaType = CTAPurchase;\n        }\n        if (this.isPBIVApp) {\n            ctaType = CTAGet;\n        } else if (isBagTransactable(this.props)) {\n            ctaType = getCtaBagTransactable(uiRole, doesTenantHasLicenseForApp, licenseManagement === null || licenseManagement === void 0 ? void 0 : licenseManagement.isFreemium);\n        } else if (licenseManagement === null || licenseManagement === void 0 ? void 0 : licenseManagement.isMicrosoftManaged) {\n            var _this_getCtaMicrosoftManaged;\n            ctaType = (_this_getCtaMicrosoftManaged = this.getCtaMicrosoftManaged()) === null || _this_getCtaMicrosoftManaged === void 0 ? void 0 : _this_getCtaMicrosoftManaged.type;\n        }\n        const reference = this.refs[`appTile ${entityId}`];\n        const coordinate = getComponentXYCoordinate(reference);\n        const tileRank = getTileComponentRank(reference);\n        const badgeTypes = getBadgeTypes(this.props);\n        setTileCheckoutSource();\n        const details = {\n            id: entityId,\n            rank: JSON.stringify(tileRank),\n            xOffset: coordinate.x,\n            yOffset: coordinate.y,\n            CTAType: ctaType,\n            currentView,\n            appAverageRating: AverageRating,\n            appNumOfRatings: NumberOfRatings,\n            isMicrosoftManaged: licenseManagement && licenseManagement.isMicrosoftManaged,\n            isFreemium: licenseManagement && licenseManagement.isFreemium,\n            hasLicense: doesTenantHasLicenseForApp,\n            isSaaSBundle: false,\n            discoveryData: {\n                totalNumOfResults: count,\n                activeFilters,\n                sortingBy: searchSortingOption,\n                searchRequestId: searchReqId\n            },\n            badge: JSON.stringify(badgeTypes)\n        };\n        // Add Legacy Telemetry Properties for Bundle App Tile CTA Click\n        if (linkedAddIns && linkedAddIns.length > 0) {\n            details.isSaaSBundle = true;\n        }\n        generateTileClickPayloadAndLogTelemetry(Constants.Telemetry.ActionModifier.AppTileCTAButton, details);\n        this.context.ctaCallback({\n            entity: this.props,\n            entityType: Constants.EntityType.App,\n            ctaType,\n            actionModifier: Constants.Telemetry.ActionModifier.AppTileCTAButton,\n            hasLicense: doesTenantHasLicenseForApp,\n            ribbonKey\n        });\n    }\n    renderStartingPrice() {\n        const { startingPrice, billingCountryCode, offerType, entityId, locale } = this.props;\n        const isOneTimePayment = isOneTimePaymentOffer(entityId);\n        if ((startingPrice === null || startingPrice === void 0 ? void 0 : startingPrice.pricingData) && startingPrice.pricingData !== PricingStates.NoPricingData) {\n            if (startingPrice.pricingData === PricingStates.FreeApp) {\n                return `${this.context.loc('Pricing_Free', 'Free')}`;\n            }\n            if (startingPrice.pricingData === PricingStates.StartFromFree) {\n                return `${this.context.loc('Pricing_StartsAt', 'Starts at')} ${this.context.loc('Pricing_Free', 'Free')}`;\n            }\n            if (startingPrice.pricingData === PricingStates.AdditionalPurchasesRequired) {\n                return `${this.context.loc('AdditionalPurchaseMayBeRequired', 'Additional purchase may be required')}`;\n            }\n            if (startingPrice.pricingData === PricingStates.BYOL) {\n                return `${this.context.loc('Bring_Your_Own_License_Shortcut', 'Bring your own license')}`;\n            }\n            if (typeof startingPrice.pricingData === 'object') {\n                const price = getStartingFromPriceText({\n                    startingPrice,\n                    offerType,\n                    context: this.context,\n                    countryCode: billingCountryCode,\n                    locale,\n                    isOneTimePaymentOffer: isOneTimePayment\n                });\n                return `${this.context.loc('Pricing_StartsAt', 'Starts at')} ${price}`;\n            }\n            if (!isAvailableInThisRegion(this.props)) {\n                return `${this.context.loc('Not_Available_In_Billing_Region', 'Not available in your region')}`;\n            }\n        }\n    }\n    renderPopularity() {\n        if (this.props.showPopularity && this.props.popularity) {\n            return /*#__PURE__*/ _jsxs(\"div\", {\n                className: \"pricingText\",\n                children: [\n                    \"P#: \",\n                    this.props.popularity * 1000 || 'none'\n                ]\n            });\n        }\n        return null;\n    }\n    getTag(keys) {\n        const res = [];\n        for(let i = 0; i < keys.length; i++){\n            const tag = AppTag[`${keys[`${i}`]}`];\n            if (tag) {\n                res.push(tag);\n            }\n        }\n        return res;\n    }\n    // Returns array of products an app tile is built for\n    getBuiltFor() {\n        const builtForList = [];\n        const productTitle = getPrimaryProductUrl(this.props.primaryProduct);\n        // Temporary fix for PowerApps to have their builtfor displayed as Apps\n        // until we come up with the complete design\n        if (this.props.products[DataMap.products.PowerApps.FilterGroup] && (this.props.products[DataMap.products.PowerApps.FilterGroup] & DataMap.products.PowerApps.FilterID) > 0) {\n            builtForList.push('Apps');\n        } else if (this.props.primaryProduct && productTitle && isOfficeNonSaasApp(productTitle, this.props.products)) {\n            for(const key in DataMap.products){\n                if (isOfficeNonSaasApp(DataMap.products[`${key}`].UrlKey) && bitMasksMatchFilter(this.props.products, DataMap.products[`${key}`])) {\n                    if (!DataMap.products[`${key}`].ShortcutFilters) {\n                        builtForList.push(DataMap.products[`${key}`].Title);\n                    }\n                }\n            }\n        } else {\n            const parentProductTitle = getParentProductTitle(productTitle, 'dynamics-365');\n            builtForList.push(parentProductTitle || this.props.builtFor);\n        }\n        return builtForList;\n    }\n    renderLinkedAddIns() {\n        const { linkedAddIns, shouldShowLinkedAddIn, item } = this.props;\n        const stackTokens = {\n            childrenGap: 8\n        };\n        const textStyles = {\n            root: {\n                color: SharedColors.cyanBlue10,\n                textDecoration: 'underline',\n                whiteSpace: 'nowrap'\n            }\n        };\n        if ((linkedAddIns === null || linkedAddIns === void 0 ? void 0 : linkedAddIns.length) && shouldShowLinkedAddIn) {\n            return /*#__PURE__*/ _jsx(Stack, {\n                horizontal: true,\n                tokens: stackTokens,\n                children: /*#__PURE__*/ _jsx(ItemsTooltip, {\n                    linkedItemsIds: linkedAddIns.map(({ entityId })=>entityId),\n                    title: this.context.loc('AppTileText_RelatedAddInsOnHoverText', 'This app includes the full version of these add-ins:'),\n                    parentItem: item,\n                    children: /*#__PURE__*/ _jsx(Text, {\n                        variant: \"smallPlus\",\n                        styles: textStyles,\n                        tabIndex: 0,\n                        children: this.context.loc('AppTileText_RelatedAddIns', '+included add-ins')\n                    })\n                })\n            });\n        }\n    }\n    renderLinkedWebApps() {\n        const { linkedSaaS, shouldShowLinkedWebApps, item } = this.props;\n        const stackTokens = {\n            childrenGap: 4\n        };\n        const textStyles = {\n            root: {\n                color: SharedColors.cyanBlue10,\n                textDecoration: 'underline',\n                whiteSpace: 'nowrap'\n            }\n        };\n        if ((linkedSaaS === null || linkedSaaS === void 0 ? void 0 : linkedSaaS.length) && shouldShowLinkedWebApps) {\n            return /*#__PURE__*/ _jsx(Stack, {\n                horizontal: true,\n                reversed: true,\n                horizontalAlign: \"end\",\n                tokens: stackTokens,\n                children: /*#__PURE__*/ _jsx(ItemsTooltip, {\n                    linkedItemsIds: linkedSaaS.map(({ entityId })=>entityId),\n                    title: this.context.loc('AppTileText_RelatedWebAppsOnHoverText', 'Available SaaS package (includes a full version of this add-in):'),\n                    parentItem: item,\n                    children: /*#__PURE__*/ _jsx(Text, {\n                        variant: \"smallPlus\",\n                        styles: textStyles,\n                        tabIndex: 0,\n                        children: this.context.loc('AppTileText_RelatedWebApps', 'view package options')\n                    })\n                })\n            });\n        }\n    }\n    // Returns brand icon for a product\n    getBrandIconFromProduct(title) {\n        return title === 'Web app' ? /*#__PURE__*/ _jsx(\"div\", {\n            className: 'icon-webapp-12'\n        }) : /*#__PURE__*/ _jsx(\"div\", {\n            className: 'ms-BrandIcon-svg--icon16 product-icon-12 ms-BrandIcon--' + title.toLowerCase()\n        });\n    }\n    // Returns component in the form icon + product name\n    getBuiltForRenderItem(title) {\n        return /*#__PURE__*/ _jsxs(\"div\", {\n            className: \"built-for-product-container\",\n            children: [\n                /*#__PURE__*/ _jsx(\"div\", {\n                    className: \"built-for-product-icon-wrapper\",\n                    children: /*#__PURE__*/ _jsx(\"div\", {\n                        className: \"built-for-icon\",\n                        children: this.getBrandIconFromProduct(title)\n                    })\n                }),\n                /*#__PURE__*/ _jsx(\"span\", {\n                    className: \"built-for-product-title\",\n                    children: title\n                })\n            ]\n        });\n    }\n    // Renders built for prduct type information for app (product type can be one or more)\n    renderBuiltForProductType() {\n        const builtForProducts = this.getBuiltFor();\n        let builtForItems;\n        const productTitle = getPrimaryProductUrl(this.props.primaryProduct);\n        if ((isAppSource(this.props.embedHost) || isEmbed(this.props.embedHost)) && (isOfficeApp(productTitle) || isSaaS(productTitle))) {\n            if (builtForProducts.length === 1 && (builtForProducts[0] === DataMap.products.Office365.Title || builtForProducts[0] === DataMap.products.AzureforWebApps.Title)) {\n                builtForItems = /*#__PURE__*/ _jsx(\"div\", {\n                    className: \"built-for-outer-wrapper\",\n                    children: /*#__PURE__*/ _jsx(\"div\", {\n                        className: \"built-for-container\",\n                        children: this.getBuiltForRenderItem('Web app')\n                    })\n                });\n            } else {\n                const builtForItemsFirstRow = [];\n                const builtForItemsSecondRow = [];\n                for(let i = 0; i < builtForProducts.length; i++){\n                    if (i < 2) {\n                        builtForItemsFirstRow.push(this.getBuiltForRenderItem(builtForProducts[`${i}`]));\n                    } else if (i < 4) {\n                        builtForItemsSecondRow.push(this.getBuiltForRenderItem(builtForProducts[`${i}`]));\n                    } else if (i >= 4) {\n                        const moreHintStr = '...';\n                        builtForItemsSecondRow.push(/*#__PURE__*/ _jsx(\"div\", {\n                            className: \"built-for-product-container\",\n                            children: /*#__PURE__*/ _jsx(\"span\", {\n                                className: \"product-tip\",\n                                children: moreHintStr\n                            })\n                        }));\n                        break;\n                    }\n                }\n                builtForItems = /*#__PURE__*/ _jsxs(\"div\", {\n                    className: \"built-for-outer-wrapper\",\n                    children: [\n                        builtForItemsFirstRow.length > 0 && /*#__PURE__*/ _jsx(\"div\", {\n                            className: \"built-for-container\",\n                            children: builtForItemsFirstRow\n                        }),\n                        builtForItemsSecondRow.length > 0 && /*#__PURE__*/ _jsx(\"div\", {\n                            className: \"built-for-container\",\n                            children: builtForItemsSecondRow\n                        })\n                    ]\n                });\n            }\n        } else {\n            builtForItems = null;\n        }\n        return builtForItems;\n    }\n    renderDescription(id, shortDescription) {\n        let maxNumberOfLines = 3;\n        if (this.props.AverageRating) maxNumberOfLines--;\n        const builtFor = this.getBuiltFor();\n        if (builtFor && builtFor.length > 2) maxNumberOfLines--;\n        const style = {\n            '-webkit-line-clamp': maxNumberOfLines.toString(),\n            maxHeight: `${maxNumberOfLines * 17}px`\n        };\n        return(// eslint-disable-next-line react/forbid-dom-props\n        /*#__PURE__*/ _jsx(\"h5\", {\n            style: style,\n            id: 'desc-' + id,\n            className: \"c-paragraph-4 description\",\n            children: shortDescription\n        }));\n    }\n    renderRatings() {\n        const { ratingSummaries } = this.props;\n        const allRatingSummaryObj = getRatingSummaryByType(ratingSummaries, Constants.Reviews.ReviewsSource.All);\n        const avgRating = (allRatingSummaryObj === null || allRatingSummaryObj === void 0 ? void 0 : allRatingSummaryObj.AverageRating) || this.props.AverageRating;\n        const ratingsCount = (allRatingSummaryObj === null || allRatingSummaryObj === void 0 ? void 0 : allRatingSummaryObj.TotalRatings) || this.props.NumberOfRatings;\n        return ratingsCount >= 1 && {\n            avgRating,\n            ratingsCount,\n            key: 'internal',\n            text: this.context.loc('Tile_ASRatings', 'ratings')\n        };\n    }\n    getCTAData() {\n        const { isEmbedded, ctaTypes, billingCountryCode } = this.props;\n        const ctaBaseData = this.getCtaBaseData();\n        const { area, view } = this.getCtaExtraData();\n        return (ctaBaseData === null || ctaBaseData === void 0 ? void 0 : ctaBaseData.text) && {\n            id: ctaBaseData.id || Constants.JsllCTAId[Constants.CTAType[ctaBaseData.type]],\n            title: ctaBaseData.text,\n            area,\n            view,\n            onClick: this.getApp.bind(this),\n            entityId: this.props.entityId,\n            CtaType: this.props.offerType === OfferType.SaaSApp ? isTransactApp({\n                isEmbedded,\n                ctaTypes,\n                appData: this.props,\n                billingRegion: billingCountryCode\n            }) ? Constants.JsllSaas.SaasTransactable : Constants.JsllSaas.SaasNonTransactable : Constants.JsllCTAId[Constants.CTAType[ctaBaseData.type]],\n            disabled: !isAvailableInThisRegion(this.props)\n        };\n    }\n    getCtaBaseData() {\n        const { licenseManagement, startingPrice, trials, uiRole, doesTenantHasLicenseForApp } = this.props;\n        if (this.isPBIVApp) {\n            return this.getCtaInstall();\n        } else if (isBagTransactable(this.props)) {\n            return getCtaBagTransactable(uiRole, doesTenantHasLicenseForApp, licenseManagement === null || licenseManagement === void 0 ? void 0 : licenseManagement.isFreemium) === CTAInstall ? this.getCtaInstall() : this.getCtaBuyLicense();\n        } else if (licenseManagement === null || licenseManagement === void 0 ? void 0 : licenseManagement.isMicrosoftManaged) {\n            return this.getCtaMicrosoftManaged();\n        } else if ((startingPrice === null || startingPrice === void 0 ? void 0 : startingPrice.hasFreeTrial) || trials === DataMap.trials['free-trial'].FilterID) {\n            return this.getCtaTry();\n        }\n        return this.getCtaByActionString();\n    }\n    getCtaMicrosoftManaged() {\n        const { uiRole, licenseManagement, doesTenantHasLicenseForApp: doesTenantHaveAppLicense, signedIn } = this.props;\n        if (!isAvailableInThisRegion(this.props)) {\n            return null; // This means the button would dissappear\n        }\n        if (!signedIn) {\n            return this.getCtaRequestTrial();\n        }\n        const adminCanInstall = (licenseManagement === null || licenseManagement === void 0 ? void 0 : licenseManagement.isFreemium) || doesTenantHaveAppLicense;\n        if (uiRole === Constants.UiRole.Admin && adminCanInstall) {\n            return this.getCtaGet();\n        } else {\n            return this.getCtaRequestTrial();\n        }\n    }\n    getCtaGet() {\n        return {\n            id: Constants.JsllCTAId[`${ActionGet}`],\n            type: CTAGet,\n            text: this.context.loc(ActionGet, 'Get')\n        };\n    }\n    getCtaRequestTrial() {\n        return {\n            id: Constants.JsllCTAId[`${ActionRequestTrial}`],\n            type: CTARequestTrial,\n            text: this.context.loc(ActionRequestTrial, 'Contact Me')\n        };\n    }\n    getCtaTry() {\n        return {\n            id: JsllCTAIdTry,\n            type: CTATry,\n            text: this.context.loc(ActionTry, 'Free Trial')\n        };\n    }\n    getCtaInstall() {\n        return {\n            id: JsllCTAIdInstall,\n            type: CTAInstall,\n            text: this.context.loc(ActionInstall, 'Install')\n        };\n    }\n    getCtaBuyLicense() {\n        return {\n            id: JsllCTAIdBuyLicense,\n            type: CTABuyLicense,\n            text: this.context.loc(ActionBuyLicense, 'Buy License')\n        };\n    }\n    getCtaByActionString() {\n        return {\n            id: Constants.JsllCTAId[this.props.actionString] || this.props.actionString,\n            text: this.context.loc(this.props.actionString)\n        };\n    }\n    getCtaExtraData() {\n        let area;\n        let view;\n        const linkedAddIns = this.props.linkedAddIns;\n        if (linkedAddIns && linkedAddIns.length > 0) {\n            if (this.props.currentView === Constants.currentView.AppDetails) {\n                area = Constants.Telemetry.AreaName.ParentSaaSTile;\n            } else if (this.props.currentView === Constants.currentView.AppGallery || this.props.currentView === Constants.currentView.SearchAppGallery) {\n                area = Constants.Telemetry.AreaName.AppTile;\n            }\n            view = Constants.Telemetry.TemplateName.SaaSBundle;\n        } else if (this.props.linkedSaaS) {\n            view = Constants.Telemetry.AreaName.BundleAddIn;\n            area = Constants.Telemetry.AreaName.AppTile;\n        } else {\n            area = Constants.Telemetry.AreaName.AppTile;\n        }\n        return {\n            area,\n            view\n        };\n    }\n    getAppDetailsUrl(productType, appType) {\n        return this.context.buildHref(getPDPRoute(appType), {\n            productId: productType,\n            entityId: this.props.entityId\n        }, {\n            tab: 'Overview'\n        });\n    }\n    getProducts() {\n        return this.props.products && Object.keys(this.props.products).length > 0 && getProductsList(this.props.products);\n    }\n    renderBadge() {\n        const { entityId } = this.props;\n        const badges = getBadgeTypes(this.props);\n        const hasFreeTrial = badges.includes(Constants.BadgeType.FreeTrial);\n        const filteredBadges = hasFreeTrial && badges.length > 3 ? badges.slice(0, 2).concat([\n            Constants.BadgeType.FreeTrial\n        ]) : badges.slice(0, 4);\n        return this.props.isHydrated && filteredBadges.length > 0 ? /*#__PURE__*/ _jsx(Stack, {\n            className: \"tileBadgeContainer\",\n            horizontal: true,\n            children: badgesInformation.filter(({ badge })=>filteredBadges.includes(badge)).map(({ src, loc = '', title = '', customClassName = '', hidden }, idx)=>/*#__PURE__*/ _jsx(Stack.Item, {\n                    children: /*#__PURE__*/ _jsx(Image, {\n                        className: `tileBadge ${customClassName}`,\n                        hidden: hidden === null || hidden === void 0 ? void 0 : hidden(),\n                        src: src,\n                        title: this.context.loc(loc, title),\n                        alt: this.context.loc(loc, title)\n                    })\n                }, `${entityId}-badge-${idx}`))\n        }) : null;\n    }\n    renderImpl() {\n        const productString = getPrimaryProductUrl(this.props.primaryProduct);\n        const productData = getProductByUrlKey({\n            urlKey: productString\n        });\n        const product = productData ? productData.UrlKey : productString;\n        const isPrivate = isPrivateOffer(this.props.appType);\n        const appDetailUrl = this.getAppDetailsUrl(product, this.props.appType);\n        const { showPopularity, popularity, shouldShowLinkedAddIn, shouldShowLinkedWebApps, ribbonKey = '' } = this.props;\n        return /*#__PURE__*/ _jsx(BaseTile, {\n            totalTiles: this.props.totalTiles,\n            badge: this.renderBadge(),\n            id: this.props.entityId,\n            componentInstance: this.componentInstance,\n            item: this.props.item,\n            iconURL: this.props.iconURL,\n            title: this.props.title,\n            tileDataRequestId: this.props.tileDataRequestId,\n            publisher: this.props.publisher,\n            description: this.props.shortDescription,\n            ctaData: this.getCTAData(),\n            detailUrl: appDetailUrl,\n            tileIndex: this.props.tileIndex,\n            currentView: this.props.currentView,\n            userFavouriteEntityType: isPrivate ? null : Constants.UserFavourite.ApplicationTypes.ITApplications,\n            linkedAddIns: this.renderLinkedAddIns(),\n            linkedWebApps: this.renderLinkedWebApps(),\n            price: this.renderStartingPrice(),\n            rating: this.renderRatings(),\n            openTileCallback: this.context.openTileCallback,\n            products: this.getProducts(),\n            context: this.context,\n            popularity: showPopularity && popularity,\n            shouldShowLinkedAddIn: shouldShowLinkedAddIn,\n            shouldShowLinkedWebApps: shouldShowLinkedWebApps,\n            badgeTypes: getBadgeTypes(this.props),\n            ribbonKey: ribbonKey\n        });\n    }\n    constructor(props, context){\n        super(props, context), _define_property(this, \"context\", void 0), _define_property(this, \"componentInstance\", void 0), _define_property(this, \"isPBIVApp\", isPowerBIVisuals(getPrimaryProductUrl(this.props.primaryProduct)));\n        this.componentInstance = v4();\n    }\n}\nAppTile.contextTypes = {\n    loc: PropTypes.func,\n    locParams: PropTypes.func,\n    buildHref: PropTypes.func,\n    ctaCallback: PropTypes.func,\n    renderErrorModal: PropTypes.func,\n    openTileCallback: PropTypes.func\n};\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport ProductsComponent from '@shared/components/products';\nimport * as PropTypes from 'prop-types';\nimport { DataMap } from '@shared/utils/dataMapping';\nimport { getProductsList } from '@shared/utils/detailUtils';\nimport { TelemetryImage } from '@shared/components/telemetryImage';\nimport { Stack, Text, mergeStyleSets, FontIcon, StackItem, Separator } from '@fluentui/react';\nimport React, { Fragment } from 'react';\nimport classNames from 'classnames';\nimport { NeutralColors, SharedColors } from '@fluentui/theme';\nimport { logger } from '@src/logger';\nimport { Constants } from '@shared/utils/constants';\nimport { SpzaInstrumentService } from '@shared/services/telemetry/spza/spzaInstrument';\nimport { routes } from '@shared/routerHistory';\nimport { Link, useLocation } from 'react-router-dom';\nimport { RatingsInfo } from '@shared/components/ratings/ratingsInfo';\nconst containerTokens = {\n    childrenGap: 24,\n    padding: 20\n};\nconst itemsTokens = {\n    childrenGap: 8\n};\nconst itemsInsideLinkedTokens = {\n    childrenGap: 8\n};\nconst titleAndStarsStackToken = {\n    childrenGap: 8\n};\nconst parentStackTokens = {\n    childrenGap: 8,\n    padding: 8\n};\nconst appTileLinkedItemsStyles = mergeStyleSets({\n    itemImage: {\n        width: 60,\n        height: 60,\n        display: 'flex',\n        backgroundColor: NeutralColors.white\n    },\n    textWeight: {\n        fontWeight: 600\n    },\n    linkItemTitle: {\n        fontWeight: 600,\n        color: NeutralColors.gray160,\n        overflow: 'hidden',\n        '-webkit-box-orient': 'vertical',\n        display: '-webkit-box',\n        '-webkit-line-clamp': '2'\n    },\n    linkItemContainer: {\n        justifyContent: 'space-around'\n    },\n    moreProductsStyle: {\n        paddingTop: 3\n    },\n    imageStackItemStyle: {\n        '& .appTileHoverImage': {\n            width: 40,\n            height: 40,\n            margin: 'auto'\n        }\n    },\n    starsAndRattingContainer: {\n        '& .ratingInfoSection .detailsRatingStar': {\n            marginBottom: 0\n        }\n    },\n    rattingText: {\n        color: NeutralColors.gray130\n    },\n    rattingStarText: {\n        marginRight: 4,\n        padding: 0,\n        fontSize: 12\n    },\n    iconClass: {\n        height: 16,\n        width: 16,\n        color: SharedColors.cyanBlue10\n    }\n});\nconst seperatorStyle = {\n    root: [\n        {\n            selectors: {\n                '::before': {\n                    background: NeutralColors.gray40\n                }\n            }\n        }\n    ]\n};\nconst tileStyle = {\n    root: {\n        selectors: {\n            '&:hover': {\n                backgroundColor: NeutralColors.gray10\n            }\n        }\n    }\n};\nconst getProducts = (products)=>{\n    var _ref;\n    return (_ref = products && Object.keys(products).length > 0 && getProductsList(products)) !== null && _ref !== void 0 ? _ref : [];\n};\nconst getRatingsData = ({ context, ratingsAverage, ratingsNum })=>{\n    return ratingsNum >= 1 && {\n        avgRating: ratingsAverage,\n        ratingsCount: ratingsNum,\n        key: 'internal',\n        text: context.loc('Tile_ASRatings', 'ratings')\n    };\n};\nconst getLinkedItemLink = ({ linkedItem, context })=>{\n    const { entityId, linkedSaaS } = linkedItem;\n    const productId = linkedSaaS ? DataMap.products.AzureforWebApps.UrlKey : DataMap.products.Office365.UrlKey;\n    return context.buildHref(routes.appDetails, {\n        productId,\n        entityId\n    }, {\n        tab: 'Overview'\n    });\n};\nconst logTelemetryInfo = ({ linkedItem, hoveredItem, location })=>{\n    const instrument = SpzaInstrumentService.getProvider();\n    const { title, entityId } = linkedItem;\n    const { title: hoveredTitle, entityId: hoveredEntityId } = hoveredItem;\n    const payload = {\n        page: location.pathname,\n        action: Constants.Telemetry.Action.Click,\n        actionModifier: Constants.Telemetry.ActionModifier.SaasLinkTooltip,\n        details: JSON.stringify({\n            title,\n            entityId,\n            hoveredTitle,\n            hoveredEntityId\n        })\n    };\n    instrument.probe(Constants.Telemetry.ProbeName.LogInfo, payload);\n    logger.info('', payload);\n};\nconst LinkedItem = ({ linkedItem, hoveredItem }, context)=>{\n    const location = useLocation();\n    const itemProducts = getProducts(linkedItem.products);\n    const ratingsData = getRatingsData({\n        context,\n        ratingsAverage: linkedItem.AverageRating,\n        ratingsNum: linkedItem.NumberOfRatings\n    });\n    return /*#__PURE__*/ _jsx(Link, {\n        to: getLinkedItemLink({\n            linkedItem,\n            context\n        }),\n        onClick: ()=>{\n            logTelemetryInfo({\n                linkedItem,\n                hoveredItem,\n                location\n            });\n        },\n        children: /*#__PURE__*/ _jsx(Stack, {\n            tokens: parentStackTokens,\n            styles: tileStyle,\n            children: /*#__PURE__*/ _jsx(Stack.Item, {\n                children: /*#__PURE__*/ _jsxs(Stack, {\n                    horizontal: true,\n                    tokens: itemsInsideLinkedTokens,\n                    children: [\n                        /*#__PURE__*/ _jsx(Stack.Item, {\n                            className: classNames([\n                                appTileLinkedItemsStyles.imageStackItemStyle\n                            ]),\n                            align: \"center\",\n                            children: /*#__PURE__*/ _jsx(TelemetryImage, {\n                                src: linkedItem.iconURL,\n                                alt: context.loc('Linked_Item_Icon', 'linked item icon'),\n                                className: classNames([\n                                    appTileLinkedItemsStyles.itemImage\n                                ], 'ms-depth-8'),\n                                imgClassName: \"appTileHoverImage\"\n                            })\n                        }),\n                        /*#__PURE__*/ _jsx(Stack.Item, {\n                            grow: 1,\n                            children: /*#__PURE__*/ _jsxs(Stack, {\n                                tokens: titleAndStarsStackToken,\n                                className: appTileLinkedItemsStyles.linkItemContainer,\n                                children: [\n                                    /*#__PURE__*/ _jsx(Stack.Item, {\n                                        children: /*#__PURE__*/ _jsx(Text, {\n                                            variant: \"mediumPlus\",\n                                            block: true,\n                                            className: classNames([\n                                                appTileLinkedItemsStyles.linkItemTitle\n                                            ]),\n                                            children: linkedItem.title\n                                        })\n                                    }),\n                                    (itemProducts === null || itemProducts === void 0 ? void 0 : itemProducts.length) && /*#__PURE__*/ _jsx(Stack.Item, {\n                                        grow: 1,\n                                        className: classNames([\n                                            appTileLinkedItemsStyles.moreProductsStyle\n                                        ]),\n                                        children: /*#__PURE__*/ _jsx(ProductsComponent, {\n                                            textSize: \"smallPlus\",\n                                            withText: true,\n                                            productsItems: itemProducts\n                                        })\n                                    }),\n                                    ratingsData && /*#__PURE__*/ _jsx(Stack.Item, {\n                                        className: classNames([\n                                            appTileLinkedItemsStyles.starsAndRattingContainer\n                                        ]),\n                                        children: /*#__PURE__*/ _jsx(RatingsInfo, {\n                                            avgRating: ratingsData.avgRating,\n                                            ratingsCount: ratingsData.ratingsCount,\n                                            title: ratingsData.text,\n                                            context: context,\n                                            textSize: \"smallPlus\",\n                                            starClass: classNames([\n                                                appTileLinkedItemsStyles.rattingStarText\n                                            ]),\n                                            ratingClass: classNames([\n                                                appTileLinkedItemsStyles.rattingText\n                                            ])\n                                        }, ratingsData.key)\n                                    })\n                                ]\n                            })\n                        }),\n                        /*#__PURE__*/ _jsx(Stack.Item, {\n                            align: \"center\",\n                            children: /*#__PURE__*/ _jsx(FontIcon, {\n                                iconName: \"ChevronRight\",\n                                className: appTileLinkedItemsStyles.iconClass\n                            })\n                        })\n                    ]\n                })\n            })\n        })\n    });\n};\nexport const AppTileLinkedItems = ({ title, linkedItems, hoveredItem })=>{\n    return /*#__PURE__*/ _jsxs(Stack, {\n        tokens: containerTokens,\n        children: [\n            /*#__PURE__*/ _jsx(Stack.Item, {\n                children: title && /*#__PURE__*/ _jsx(Text, {\n                    variant: \"medium\",\n                    className: appTileLinkedItemsStyles.textWeight,\n                    children: title\n                })\n            }),\n            /*#__PURE__*/ _jsx(Stack.Item, {\n                children: /*#__PURE__*/ _jsx(Stack, {\n                    tokens: itemsTokens,\n                    children: linkedItems === null || linkedItems === void 0 ? void 0 : linkedItems.map((item, index, linkedItems)=>/*#__PURE__*/ _jsxs(Fragment, {\n                            children: [\n                                /*#__PURE__*/ _jsx(Stack.Item, {\n                                    children: /*#__PURE__*/ _jsx(LinkedItem, {\n                                        linkedItem: item,\n                                        hoveredItem: hoveredItem\n                                    })\n                                }),\n                                index + 1 !== linkedItems.length && /*#__PURE__*/ _jsx(Stack.Item, {\n                                    children: /*#__PURE__*/ _jsx(Stack, {\n                                        children: /*#__PURE__*/ _jsx(StackItem, {\n                                            children: /*#__PURE__*/ _jsx(Separator, {\n                                                styles: seperatorStyle\n                                            })\n                                        })\n                                    })\n                                })\n                            ]\n                        }, index))\n                })\n            })\n        ]\n    });\n};\nLinkedItem.contextTypes = {\n    loc: PropTypes.func,\n    locParams: PropTypes.func,\n    buildHref: PropTypes.func\n};\n","function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nfunction _object_spread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        var ownKeys = Object.keys(source);\n        if (typeof Object.getOwnPropertySymbols === \"function\") {\n            ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n            }));\n        }\n        ownKeys.forEach(function(key) {\n            _define_property(target, key, source[key]);\n        });\n    }\n    return target;\n}\nimport React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { Constants, OfferType } from '@shared/utils/constants';\nimport { isTransactApp, isAvailableInThisRegion } from '@shared/utils/appUtils';\nexport const getDataBiView = ({ linkedAddIns, linkedSaaS })=>{\n    let dataBiView = '';\n    if ((linkedAddIns === null || linkedAddIns === void 0 ? void 0 : linkedAddIns.length) > 0) {\n        dataBiView = Constants.Telemetry.TemplateName.SaaSBundle;\n    } else if (linkedSaaS) {\n        dataBiView = Constants.Telemetry.AreaName.BundleAddIn;\n    }\n    return dataBiView;\n};\nexport const getDataBiType = ({ app, billingCountryCode })=>{\n    const { ctaTypes = [] } = app;\n    return app.offerType === OfferType.SaaSApp ? isTransactApp({\n        isEmbedded: false,\n        ctaTypes,\n        appData: app,\n        billingRegion: billingCountryCode\n    }) ? Constants.JsllSaas.SaasTransactable : Constants.JsllSaas.SaasNonTransactable : '';\n};\nexport const BaseCtaButton = ({ app, startingPrice, isLoadingUserData, billingCountryCode, CtaComponent, ctaType })=>{\n    const newProp = {\n        disabled: !isAvailableInThisRegion({\n            startingPrice\n        }) || isLoadingUserData,\n        'data-bi-id': Constants.JsllCTAId[Constants.CTAType[`${ctaType}`]],\n        'data-bi-name': app.entityId,\n        'data-bi-type': getDataBiType({\n            app,\n            billingCountryCode\n        }),\n        'data-bi-area': Constants.Telemetry.AreaName.AppDetails,\n        'data-bi-view': getDataBiView(app)\n    };\n    const ClonedElementWithMoreProps = /*#__PURE__*/ React.cloneElement(CtaComponent, _object_spread({}, newProp));\n    return ClonedElementWithMoreProps;\n};\nBaseCtaButton.contextTypes = {\n    locParams: PropTypes.func,\n    loc: PropTypes.func\n};\n","/* eslint-disable react/forbid-dom-props */ function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport SpzaComponent from './spzaComponent';\nimport { InternalLink } from './internalLink';\nimport * as DetailUtils from './../utils/detailUtils';\nexport class BreadcrumbUrl extends SpzaComponent {\n    buildGalleryLink(title, href) {\n        return /*#__PURE__*/ _jsx(InternalLink, {\n            href: href,\n            role: \"link\",\n            className: 'c-button goBackButton',\n            additionalCommand: ()=>{\n                DetailUtils.generateBreadcrumbPayloadAndLogTelemetry('Apps');\n            },\n            accEnabled: true,\n            \"aria-label\": `${title} link breadcrumb region`,\n            \"aria-current\": \"page\",\n            children: title\n        });\n    }\n    renderImpl() {\n        const { hideBreadcrumbUrl } = this.props;\n        return /*#__PURE__*/ _jsx(\"div\", {\n            children: /*#__PURE__*/ _jsx(\"div\", {\n                className: \"navigationBar\",\n                id: \"maincontent\",\n                children: !hideBreadcrumbUrl && /*#__PURE__*/ _jsx(\"nav\", {\n                    className: \"breadcrumb\",\n                    \"aria-label\": \"breadcrumbs\",\n                    children: this.props.linksList.map((link, index)=>{\n                        const title = this.context.loc(link.locKey);\n                        const key = `breadcrumb-${link.href}-${title}`;\n                        link.href = link.href || this.props.href;\n                        if (index === this.props.linksList.length - 1) {\n                            return /*#__PURE__*/ _jsx(\"h1\", {\n                                className: \"appTabButton\",\n                                \"aria-label\": \"breadcrumb\",\n                                \"aria-current\": \"page\",\n                                children: this.context.loc(link.locKey)\n                            }, key);\n                        }\n                        return /*#__PURE__*/ _jsxs(\"div\", {\n                            className: \"breadcrumbItem\",\n                            children: [\n                                this.buildGalleryLink(title, link.href),\n                                /*#__PURE__*/ _jsx(\"span\", {\n                                    className: \"c-glyph\"\n                                })\n                            ]\n                        }, key);\n                    })\n                })\n            })\n        });\n    }\n    constructor(...args){\n        super(...args), _define_property(this, \"context\", void 0);\n    }\n}\nBreadcrumbUrl.contextTypes = {\n    loc: PropTypes.func\n};\n","/* eslint-disable react/prop-types */ import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport * as React from 'react';\nimport { TelemetryImage } from './telemetryImage';\nexport const Card = ({ logoURL, title, subtitle, children })=>{\n    return /*#__PURE__*/ _jsxs(\"div\", {\n        className: \"card ms-depth-8\",\n        children: [\n            logoURL && /*#__PURE__*/ _jsx(\"div\", {\n                className: \"iconHost ms-depth-8\",\n                children: /*#__PURE__*/ _jsx(TelemetryImage, {\n                    src: logoURL,\n                    className: \"appLargeIcon\",\n                    itemPropName: \"image\",\n                    title: title\n                })\n            }),\n            /*#__PURE__*/ _jsx(\"div\", {\n                className: \"header\",\n                children: /*#__PURE__*/ _jsxs(\"div\", {\n                    className: \"titleBlock\",\n                    children: [\n                        /*#__PURE__*/ _jsx(\"h1\", {\n                            className: \"ms-fontSize-28 ms-fontWeight-semibold title\",\n                            children: title\n                        }),\n                        /*#__PURE__*/ _jsx(\"h2\", {\n                            className: \"ms-fontSize-14 subTitle\",\n                            children: subtitle\n                        }),\n                        /*#__PURE__*/ _jsx(\"div\", {\n                            className: \"mainContent\",\n                            children: children\n                        })\n                    ]\n                })\n            })\n        ]\n    });\n};\n","function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nfunction _object_spread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        var ownKeys = Object.keys(source);\n        if (typeof Object.getOwnPropertySymbols === \"function\") {\n            ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n            }));\n        }\n        ownKeys.forEach(function(key) {\n            _define_property(target, key, source[key]);\n        });\n    }\n    return target;\n}\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport React from 'react';\nimport { AppTile } from '@shared/containers/appTile';\nimport { Constants } from '@shared/utils/constants';\nimport SpzaComponent from '@shared/components/spzaComponent';\nimport { ServiceTile } from '@shared/containers/serviceTile';\nclass CommonTile extends SpzaComponent {\n    renderImpl() {\n        if (this.props.entityType === Constants.EntityType.Service) {\n            return /*#__PURE__*/ _jsx(ServiceTile, _object_spread({}, this.props));\n        }\n        return /*#__PURE__*/ _jsx(AppTile, _object_spread({}, this.props));\n    }\n}\nexport { CommonTile as default };\n","import { mergeStyleSets } from '@fluentui/react';\nexport const openInNewWindowButtonStyles = mergeStyleSets({\n    openInNewWindowButton: {\n        '& .ms-Button-flexContainer': {\n            display: 'flex',\n            flexDirection: 'row-reverse'\n        }\n    }\n});\n","function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nimport { jsx as _jsx, Fragment as _Fragment } from \"react/jsx-runtime\";\nimport React from 'react';\nimport classNames from 'classnames';\nimport * as PropTypes from 'prop-types';\nimport { getWindow } from '@shared/services/window';\nimport { Constants } from '@shared/utils/constants';\nimport { getActionStringForCTAType, isAvailableInThisRegion, isOpenInNewWindowButton, processHandoffURLAndTitle } from '@shared/utils/appUtils';\nimport { getTooltipSilentLogIn } from '@shared/utils/silentLogInUtils';\nimport SpzaComponent from '@shared/components/spzaComponent';\nimport { BaseCtaButton } from '@shared/components/baseCtaButton';\nimport { PrimaryButton, mergeStyleSets, DefaultButton } from '@fluentui/react';\nimport { openInNewWindowButtonStyles } from '@shared/components/contentStyles';\nimport { hidePowerBiVisualPricing } from '@shared/utils/pricing';\nconst ctaButtonsClassNames = mergeStyleSets({\n    ctaButton: {\n        padding: '5px 25px',\n        marginTop: 4,\n        marginRight: 8\n    }\n});\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport class CtaButtons extends SpzaComponent {\n    componentDidMount() {\n        var _getWindow_performance, _getWindow;\n        const window = getWindow();\n        const { navigationStart = 0, requestStart = 0 } = ((_getWindow = getWindow()) === null || _getWindow === void 0 ? void 0 : (_getWindow_performance = _getWindow.performance) === null || _getWindow_performance === void 0 ? void 0 : _getWindow_performance.timing) || {};\n        if (window) {\n            window.loadTimePDPCTA = performance.now() - (requestStart - navigationStart);\n        }\n    }\n    ctaDefaultButton(ctaType, isOpenInNewWindow) {\n        const { startingPrice, isLoadingUserData, onCTAClick } = this.props;\n        const { loc } = this.context;\n        return /*#__PURE__*/ _jsx(DefaultButton, {\n            text: loc(getActionStringForCTAType(ctaType)),\n            className: classNames([\n                ctaButtonsClassNames.ctaButton,\n                'pdpButton',\n                {\n                    [openInNewWindowButtonStyles.openInNewWindowButton]: isOpenInNewWindow\n                }\n            ]),\n            disabled: !isAvailableInThisRegion({\n                startingPrice\n            }) || isLoadingUserData,\n            onClick: ()=>onCTAClick(ctaType),\n            iconProps: isOpenInNewWindow ? {\n                iconName: 'OpenInNewWindow'\n            } : {}\n        }, ctaType);\n    }\n    ctaPrimaryButton(ctaType, isOpenInNewWindow) {\n        const { startingPrice, isLoadingUserData, onCTAClick, isEmbedded, app } = this.props;\n        const { loc } = this.context;\n        const isPBIVisualPriceHidden = hidePowerBiVisualPricing({\n            app,\n            isEmbedded\n        });\n        return /*#__PURE__*/ _jsx(PrimaryButton, {\n            text: isPBIVisualPriceHidden && ctaType === Constants.CTAType.Install ? loc('CTA_Install_free', 'Install free') : loc(getActionStringForCTAType(ctaType)),\n            className: classNames([\n                ctaButtonsClassNames.ctaButton,\n                'requestButton',\n                {\n                    [openInNewWindowButtonStyles.openInNewWindowButton]: isOpenInNewWindow\n                }\n            ]),\n            disabled: !isAvailableInThisRegion({\n                startingPrice\n            }) || isLoadingUserData,\n            onClick: ()=>onCTAClick(ctaType),\n            iconProps: isOpenInNewWindow ? {\n                iconName: 'OpenInNewWindow'\n            } : {}\n        }, ctaType);\n    }\n    renderImpl() {\n        const { app, startingPrice, isLoadingUserData, billingCountryCode, isEmbedded, openInNewWindowButtonFlag } = this.props;\n        const { url } = processHandoffURLAndTitle(app);\n        const buttons = app.ctaTypes.map((ctaType, index)=>{\n            const isOpenInNewWindow = openInNewWindowButtonFlag && isOpenInNewWindowButton({\n                isEmbedded,\n                ctaType,\n                appData: app,\n                billingRegion: billingCountryCode,\n                url\n            });\n            const button = index ? this.ctaDefaultButton(ctaType, isOpenInNewWindow) : this.ctaPrimaryButton(ctaType, isOpenInNewWindow);\n            const baseCtaCompoent = /*#__PURE__*/ _jsx(BaseCtaButton, {\n                app: app,\n                billingCountryCode: billingCountryCode,\n                startingPrice: startingPrice,\n                isLoadingUserData: isLoadingUserData,\n                CtaComponent: button,\n                ctaType: ctaType\n            });\n            return getTooltipSilentLogIn(baseCtaCompoent, isLoadingUserData);\n        });\n        return /*#__PURE__*/ _jsx(_Fragment, {\n            children: buttons\n        });\n    }\n    constructor(...args){\n        super(...args), _define_property(this, \"context\", void 0);\n    }\n}\nCtaButtons.contextTypes = {\n    locParams: PropTypes.func,\n    loc: PropTypes.func\n};\n","import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from \"react/jsx-runtime\";\nimport React from 'react';\nimport * as PropTypes from 'prop-types';\n// eslint-disable-next-line import/named\nimport { Text, mergeStyleSets } from '@fluentui/react';\nimport { getPricingLocale } from '@shared/utils/pricing';\nconst classes = mergeStyleSets({\n    customMeterRoot: {\n        whiteSpace: 'break-spaces'\n    },\n    plusText: {\n        marginTop: 10\n    }\n});\nexport const CustomMeterPricingMaxFractionDigits = 5;\nconst MetersInclude = ({ customMeter, variant }, context)=>{\n    const includedMeters = customMeter.filter((cm)=>cm.includedQuantity !== '0');\n    if (!includedMeters.length) {\n        return null;\n    }\n    return /*#__PURE__*/ _jsxs(_Fragment, {\n        children: [\n            /*#__PURE__*/ _jsx(Text, {\n                variant: variant,\n                block: true,\n                children: context.loc('CustomMeter_Includes', 'Includes:')\n            }),\n            includedMeters.map((meter)=>/*#__PURE__*/ _jsx(Text, {\n                    block: true,\n                    variant: variant,\n                    children: `${meter.title}: ${meter.includedQuantity}`\n                }, meter.availabilityId))\n        ]\n    });\n};\nconst MetersBreakdown = ({ sku, customMeter, billingCountry, variant, locale }, context)=>{\n    const { countryCode } = billingCountry;\n    return /*#__PURE__*/ _jsxs(_Fragment, {\n        children: [\n            /*#__PURE__*/ _jsx(Text, {\n                block: true,\n                className: classes.plusText,\n                variant: variant,\n                children: context.loc('CustomMeter_Plus', 'Plus:')\n            }),\n            customMeter.map((meter)=>{\n                const localeString = getPricingLocale({\n                    locale,\n                    countryCode\n                });\n                const priceString = meter.rate.toLocaleString(localeString, {\n                    style: 'currency',\n                    currency: sku.currencyCode,\n                    maximumFractionDigits: CustomMeterPricingMaxFractionDigits\n                });\n                return /*#__PURE__*/ _jsx(Text, {\n                    block: true,\n                    variant: variant,\n                    children: `${meter.title}: ${priceString} ${meter.unit.toLowerCase()}`\n                }, meter.availabilityId);\n            })\n        ]\n    });\n};\nexport const CustomMeterPricing = ({ price, billingCountry, sku, variant, locale })=>{\n    const { customMeter } = price;\n    if (!(customMeter === null || customMeter === void 0 ? void 0 : customMeter.length)) {\n        return null;\n    }\n    return /*#__PURE__*/ _jsxs(\"div\", {\n        className: classes.customMeterRoot,\n        children: [\n            /*#__PURE__*/ _jsx(MetersInclude, {\n                customMeter: customMeter,\n                variant: variant\n            }),\n            /*#__PURE__*/ _jsx(MetersBreakdown, {\n                sku: sku,\n                billingCountry: billingCountry,\n                customMeter: customMeter,\n                variant: variant,\n                locale: locale\n            })\n        ]\n    });\n};\nMetersInclude.contextTypes = {\n    locParams: PropTypes.func,\n    loc: PropTypes.func\n};\nMetersBreakdown.contextTypes = {\n    locParams: PropTypes.func,\n    loc: PropTypes.func\n};\n","function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nfunction _object_spread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        var ownKeys = Object.keys(source);\n        if (typeof Object.getOwnPropertySymbols === \"function\") {\n            ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n            }));\n        }\n        ownKeys.forEach(function(key) {\n            _define_property(target, key, source[key]);\n        });\n    }\n    return target;\n}\nfunction ownKeys(object, enumerableOnly) {\n    var keys = Object.keys(object);\n    if (Object.getOwnPropertySymbols) {\n        var symbols = Object.getOwnPropertySymbols(object);\n        if (enumerableOnly) {\n            symbols = symbols.filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n            });\n        }\n        keys.push.apply(keys, symbols);\n    }\n    return keys;\n}\nfunction _object_spread_props(target, source) {\n    source = source != null ? source : {};\n    if (Object.getOwnPropertyDescriptors) {\n        Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n        ownKeys(Object(source)).forEach(function(key) {\n            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n    }\n    return target;\n}\nfunction _object_without_properties(source, excluded) {\n    if (source == null) return {};\n    var target = _object_without_properties_loose(source, excluded);\n    var key, i;\n    if (Object.getOwnPropertySymbols) {\n        var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n        for(i = 0; i < sourceSymbolKeys.length; i++){\n            key = sourceSymbolKeys[i];\n            if (excluded.indexOf(key) >= 0) continue;\n            if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n            target[key] = source[key];\n        }\n    }\n    return target;\n}\nfunction _object_without_properties_loose(source, excluded) {\n    if (source == null) return {};\n    var target = {};\n    var sourceKeys = Object.keys(source);\n    var key, i;\n    for(i = 0; i < sourceKeys.length; i++){\n        key = sourceKeys[i];\n        if (excluded.indexOf(key) >= 0) continue;\n        target[key] = source[key];\n    }\n    return target;\n}\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport * as React from 'react';\nimport SpzaComponent from './spzaComponent';\nimport { getAttributes } from '../utils/externalLinkUtils';\nimport { SpzaInstrumentService } from '@shared/services/telemetry/spza/spzaInstrument';\nimport { getWindow } from '@shared/services/window';\nimport { Constants } from '@shared/utils/constants';\nimport { logger } from '@src/logger';\n/**\n * Behaves similar with HTML DOM <a></a>\n * But dedicated to open a new tab, and log telemetry for link clicked.\n * When a link contains a 'mail:to', instead of opening a new tab, showing an email dialog\n */ export class ExternalLink extends SpzaComponent {\n    renderImpl() {\n        const _this_props = this.props, { href, children, telemetryDetails } = _this_props, rest = _object_without_properties(_this_props, [\n            \"href\",\n            \"children\",\n            \"telemetryDetails\"\n        ]);\n        const attributes = getAttributes(_object_spread({\n            href,\n            children\n        }, rest));\n        return /*#__PURE__*/ _jsx(\"a\", _object_spread_props(_object_spread({}, attributes), {\n            onClick: (event)=>{\n                var _this_props_onClickHandle, _this_props;\n                const payload = {\n                    page: getWindow().location.href,\n                    action: Constants.Telemetry.Action.Click,\n                    actionModifier: Constants.Telemetry.ActionModifier.ExternalLink,\n                    details: telemetryDetails || JSON.stringify(href)\n                };\n                this.provider.probe(Constants.Telemetry.ProbeName.LogInfo, payload);\n                logger.info(payload.details, {\n                    action: payload.action,\n                    actionModifier: payload.actionModifier\n                });\n                (_this_props_onClickHandle = (_this_props = this.props).onClickHandle) === null || _this_props_onClickHandle === void 0 ? void 0 : _this_props_onClickHandle.call(_this_props, event);\n            },\n            children: children\n        }));\n    }\n    constructor(props, context){\n        super(props, context), _define_property(this, \"context\", void 0), _define_property(this, \"provider\", void 0);\n        this.provider = SpzaInstrumentService.getProvider();\n    }\n}\n","function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nfunction _object_spread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        var ownKeys = Object.keys(source);\n        if (typeof Object.getOwnPropertySymbols === \"function\") {\n            ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n            }));\n        }\n        ownKeys.forEach(function(key) {\n            _define_property(target, key, source[key]);\n        });\n    }\n    return target;\n}\nimport { Constants } from '../utils/constants';\nimport { urlAssign } from './../routerHistory';\nimport { getWindow } from './../services/window';\nimport { SpzaInstrumentService } from '../services/telemetry/spza/spzaInstrument';\nimport { logger } from '@src/logger';\nexport function getOverrideAttributes(props) {\n    const isEmailLink = props.href.indexOf('mailto:') === 0;\n    const overrideAttributes = {};\n    // override attribute onClick event\n    overrideAttributes.onClick = (event)=>{\n        if (props.onClickHandle) {\n            props.onClickHandle(event);\n        }\n        if (props.onClick) {\n            props.onClick(event);\n        }\n        const detailText = isEmailLink ? 'External Link Clicked, Email Dialog opened' : 'External Link Clicked, New Tab opened';\n        logTelemetry(Constants.Telemetry.Action.Click, Constants.Telemetry.ActionModifier.Link, detailText);\n        logger.info(detailText, {\n            action: Constants.Telemetry.Action.Click,\n            actionModifier: Constants.Telemetry.ActionModifier.Link\n        });\n        event.preventDefault();\n        // props.shouldOpenInTab is true as default\n        const shouldOpenInTab = !isEmailLink && props.shouldOpenInTab !== false;\n        urlAssign(props.href, shouldOpenInTab);\n    };\n    // override attribute tabIndex\n    overrideAttributes.tabIndex = props.tabIndex || (props.accessibilityEnabled ? 0 : -1);\n    return overrideAttributes;\n}\nexport function getAttributes(props) {\n    // override attributes\n    const overrideAttributes = getOverrideAttributes(props);\n    // attributes\n    let attributes = {};\n    Object.keys(props).filter((propName)=>[\n            'children',\n            'accessibilityEnabled',\n            'onClickHandle',\n            'shouldOpenInTab'\n        ].indexOf(propName) < 0).forEach((propName)=>attributes[`${propName}`] = props[`${propName}`]);\n    attributes = _object_spread({}, attributes, overrideAttributes);\n    return attributes;\n}\n/**\n * log telemetry\n */ export function logTelemetry(action, actionModifier, details) {\n    const pageUrl = getWindow() && getWindow().location && getWindow().location.href;\n    const payload = {\n        page: pageUrl,\n        action: action,\n        actionModifier: actionModifier\n    };\n    if (details) {\n        const detailsName = 'details';\n        payload[`${detailsName}`] = details;\n    }\n    SpzaInstrumentService.getProvider().probe(Constants.Telemetry.ProbeName.LogInfo, payload);\n}\n","function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport SpzaComponent from '@shared/components/spzaComponent';\nimport { Icon, TooltipHost } from '@fluentui/react';\nimport { getUTCDateString } from '@shared/utils/futurePricesUtils';\nimport { uniqueId } from 'lodash-es';\nimport classNames from 'classnames';\nimport { Text } from '@fluentui/react/lib/Text';\nclass FuturePriceTooltip extends SpzaComponent {\n    renderImpl() {\n        const iconId = 'futurePriceTooltipIcon' + uniqueId();\n        const { className = '' } = this.props.futurePrice;\n        const futurePriceTooltipClass = classNames('futurePrice', className);\n        const textClass = classNames('futurePriceLabel', className);\n        return /*#__PURE__*/ _jsx(\"div\", {\n            className: futurePriceTooltipClass,\n            children: /*#__PURE__*/ _jsx(TooltipHost, {\n                tooltipProps: this.tooltipProps,\n                id: 'future-price-tooltip',\n                calloutProps: {\n                    target: `#${iconId}`,\n                    gapSpace: 5\n                },\n                children: /*#__PURE__*/ _jsxs(\"div\", {\n                    className: 'futurePriceTooltip',\n                    children: [\n                        /*#__PURE__*/ _jsx(Icon, {\n                            \"aria-describedby\": 'future-price-tooltip',\n                            iconName: \"Info\",\n                            className: \"futurePriceIcon\",\n                            id: iconId\n                        }),\n                        /*#__PURE__*/ _jsx(Text, {\n                            className: textClass,\n                            children: this.context.loc('FuturePrices_upcomingPriceChange', 'Upcoming price change')\n                        })\n                    ]\n                })\n            })\n        });\n    }\n    constructor(...args){\n        super(...args), _define_property(this, \"context\", void 0), _define_property(this, \"tooltipContent\", ()=>{\n            const { startDate, price, priceComponent, className = '' } = this.props.futurePrice;\n            const startDateText = getUTCDateString(startDate, this.context);\n            const futurePriceTooltipClass = classNames('futurePriceTooltipContent', className);\n            return /*#__PURE__*/ _jsxs(\"div\", {\n                className: futurePriceTooltipClass,\n                children: [\n                    /*#__PURE__*/ _jsx(\"span\", {\n                        children: this.context.locParams('FuturePrices_message', [\n                            startDateText\n                        ])\n                    }),\n                    /*#__PURE__*/ _jsx(\"span\", {\n                        className: \"price\",\n                        // eslint-disable-next-line react/no-danger\n                        dangerouslySetInnerHTML: {\n                            __html: price\n                        }\n                    }),\n                    priceComponent\n                ]\n            });\n        }), _define_property(this, \"tooltipProps\", {\n            onRenderContent: this.tooltipContent\n        });\n    }\n}\nexport { FuturePriceTooltip as default };\nFuturePriceTooltip.contextTypes = {\n    renderErrorModal: PropTypes.func,\n    locParams: PropTypes.func,\n    loc: PropTypes.func,\n    locDateString: PropTypes.func\n};\n","function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport SpzaComponent from '@shared/components/spzaComponent';\nimport { mergeStyleSets, MessageBar } from '@fluentui/react';\nimport { Text } from '@fluentui/react/lib/Text';\nconst classes = mergeStyleSets({\n    warningText: {\n        lineHeight: 'normal'\n    }\n});\nclass FuturePriceWarning extends SpzaComponent {\n    renderImpl() {\n        var _this_props_futurePrices_skus, _this_props_futurePrices;\n        return !!((_this_props_futurePrices = this.props.futurePrices) === null || _this_props_futurePrices === void 0 ? void 0 : (_this_props_futurePrices_skus = _this_props_futurePrices.skus) === null || _this_props_futurePrices_skus === void 0 ? void 0 : _this_props_futurePrices_skus.length) && /*#__PURE__*/ _jsx(MessageBar, {\n            className: \"futurePriceMessageBar\",\n            isMultiline: false,\n            children: /*#__PURE__*/ _jsx(Text, {\n                className: classes.warningText,\n                children: this.context.loc('FuturePrices_warning', 'Please note some prices will be changing. View details below.')\n            })\n        });\n    }\n    constructor(...args){\n        super(...args), _define_property(this, \"context\", void 0);\n    }\n}\nexport { FuturePriceWarning as default };\nFuturePriceWarning.contextTypes = {\n    renderErrorModal: PropTypes.func,\n    loc: PropTypes.func\n};\n","/* eslint-disable react/prop-types */ import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { InternalLink } from './internalLink';\nexport const IconLink = ({ iconClassName, accEnabled, href, className, onClick, title, children })=>{\n    return /*#__PURE__*/ _jsxs(\"div\", {\n        className: \"icon-link\",\n        children: [\n            /*#__PURE__*/ _jsx(\"div\", {\n                className: classNames(iconClassName, 'icon')\n            }),\n            /*#__PURE__*/ _jsx(InternalLink, {\n                accEnabled: accEnabled,\n                href: href,\n                role: \"link\",\n                className: className,\n                onClick: onClick,\n                title: title,\n                children: children\n            })\n        ]\n    });\n};\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport React from 'react';\nimport { DefaultPalette, mergeStyleSets, Text } from '@fluentui/react';\nimport * as PropTypes from 'prop-types';\nconst classes = mergeStyleSets({\n    freeTrialText: {\n        color: DefaultPalette.green,\n        background: '#DFF6DD',\n        padding: '5.25px 8px 7px 8px',\n        borderRadius: 2,\n        fontSize: 13,\n        height: 28,\n        display: 'inline-block'\n    }\n});\nexport const FreeTrialBadge = (_, context)=>{\n    return /*#__PURE__*/ _jsx(Text, {\n        className: classes.freeTrialText,\n        nowrap: true,\n        variant: \"smallPlus\",\n        children: context.loc('CTA_Try')\n    });\n};\nFreeTrialBadge.contextTypes = {\n    loc: PropTypes.func\n};\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { TelemetryImage } from '@shared/components/telemetryImage';\nimport pdpPrivateBadge from '@shared/images/pdp-privateBadge.svg';\nimport React from 'react';\nexport const PrivatePlanBadge = ()=>{\n    return /*#__PURE__*/ _jsx(TelemetryImage, {\n        src: pdpPrivateBadge,\n        alt: \"Private plan badge\"\n    });\n};\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { Stack, Text, mergeStyleSets, PrimaryButton } from '@fluentui/react';\nimport { FreeTrialBadge, PrivatePlanBadge } from '@shared/components';\nimport classNames from 'classnames';\nimport { NeutralColors } from '@fluentui/theme';\nconst classes = mergeStyleSets({\n    planNameText: {\n        minWidth: 144,\n        maxWidth: 296,\n        whiteSpace: 'break-spaces',\n        fontWeight: 600,\n        color: NeutralColors.gray160\n    },\n    hidden: {\n        visibility: 'hidden'\n    },\n    getItNowButton: {\n        marginTop: 16\n    }\n});\nconst FreeTrialBadgeItem = ({ sku })=>{\n    return /*#__PURE__*/ _jsx(Stack.Item, {\n        className: classNames({\n            [classes.hidden]: !sku.freeTrialDurationDays\n        }),\n        children: /*#__PURE__*/ _jsx(FreeTrialBadge, {})\n    });\n};\nconst PrivateBadgeItem = ({ sku })=>{\n    return /*#__PURE__*/ _jsx(Stack.Item, {\n        className: classNames({\n            [classes.hidden]: !sku.isPrivate\n        }),\n        children: /*#__PURE__*/ _jsx(PrivatePlanBadge, {})\n    });\n};\nconst Badges = ({ sku, offerHasFreeTrialPlans, offerHasPrivatePlans })=>{\n    if (!offerHasFreeTrialPlans && !offerHasPrivatePlans) {\n        return null;\n    }\n    return /*#__PURE__*/ _jsxs(Stack, {\n        horizontal: true,\n        tokens: {\n            childrenGap: 8\n        },\n        children: [\n            offerHasFreeTrialPlans && /*#__PURE__*/ _jsx(FreeTrialBadgeItem, {\n                sku: sku\n            }),\n            offerHasPrivatePlans && /*#__PURE__*/ _jsx(PrivateBadgeItem, {\n                sku: sku\n            })\n        ]\n    });\n};\nexport const SaasPlanNameCell = ({ offerHasPrivatePlans, offerHasFreeTrialPlans, sku, onGetInNowClicked }, context)=>{\n    return /*#__PURE__*/ _jsxs(Stack, {\n        horizontal: true,\n        horizontalAlign: \"space-between\",\n        tokens: {\n            childrenGap: 16\n        },\n        children: [\n            /*#__PURE__*/ _jsxs(Stack.Item, {\n                children: [\n                    /*#__PURE__*/ _jsx(Text, {\n                        className: classes.planNameText,\n                        block: true,\n                        children: sku.title\n                    }),\n                    /*#__PURE__*/ _jsx(PrimaryButton, {\n                        className: classes.getItNowButton,\n                        text: context.loc('CTA_Get', 'Get it now'),\n                        onClick: onGetInNowClicked\n                    })\n                ]\n            }),\n            /*#__PURE__*/ _jsx(Badges, {\n                sku: sku,\n                offerHasFreeTrialPlans: offerHasFreeTrialPlans,\n                offerHasPrivatePlans: offerHasPrivatePlans\n            })\n        ]\n    });\n};\nSaasPlanNameCell.contextTypes = {\n    locParams: PropTypes.func,\n    loc: PropTypes.func\n};\n","import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from \"react/jsx-runtime\";\nimport React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { Text, mergeStyleSets } from '@fluentui/react';\nimport { getPriceWithFrequencyText } from '@shared/utils/pricing';\nimport { CustomMeterPricing } from '@shared/components';\nimport FuturePriceTooltip from '@shared/components/futurePriceTooltip';\nconst classes = mergeStyleSets({\n    pricingCellRoot: {\n        whiteSpace: 'break-spaces'\n    }\n});\nconst SaasPricingContent = ({ sku, price, billingCountry, variant, locale }, context)=>{\n    const { countryCode } = billingCountry;\n    const priceText = getPriceWithFrequencyText({\n        context,\n        priceObject: price,\n        isQuantifiable: sku.isQuantifiable,\n        countryCode,\n        currency: sku.currencyCode,\n        maximumFractionDigits: 2,\n        onetimePaymentTranslation: 'Pricing_Onetime_Payment',\n        locale\n    });\n    const freeTrialText = price.freeDurationDays ? context.loc('First_Month_Free_Trial', 'First month free, then ') : ''; // SaaS offers can only have 30 days(1 month) trial\n    const fullPricingText = `${freeTrialText}${priceText}`;\n    return /*#__PURE__*/ _jsxs(_Fragment, {\n        children: [\n            /*#__PURE__*/ _jsx(Text, {\n                variant: variant,\n                children: fullPricingText\n            }),\n            /*#__PURE__*/ _jsx(CustomMeterPricing, {\n                sku: sku,\n                billingCountry: billingCountry,\n                price: price,\n                variant: variant,\n                locale: locale\n            })\n        ]\n    });\n};\nexport const SaasPricingCell = ({ sku, futurePriceSku, price, billingCountry, shouldBlockPrices, locale }, context)=>{\n    var _futurePriceSku_termPrices;\n    if (shouldBlockPrices) {\n        return /*#__PURE__*/ _jsx(Text, {\n            children: context.loc('Pricing_ContactPublisher', 'Contact the publisher for pricing information and to purchase the license')\n        });\n    }\n    const futurePriceTerm = futurePriceSku === null || futurePriceSku === void 0 ? void 0 : (_futurePriceSku_termPrices = futurePriceSku.termPrices) === null || _futurePriceSku_termPrices === void 0 ? void 0 : _futurePriceSku_termPrices.find((futurePriceTerm)=>futurePriceTerm.termId === price.termId);\n    return /*#__PURE__*/ _jsxs(\"div\", {\n        className: classes.pricingCellRoot,\n        children: [\n            /*#__PURE__*/ _jsx(SaasPricingContent, {\n                sku: sku,\n                price: price,\n                billingCountry: billingCountry,\n                locale: locale\n            }),\n            futurePriceTerm && /*#__PURE__*/ _jsx(FuturePriceTooltip, {\n                futurePrice: {\n                    priceComponent: /*#__PURE__*/ _jsx(\"div\", {\n                        children: /*#__PURE__*/ _jsx(SaasPricingContent, {\n                            sku: futurePriceSku,\n                            price: futurePriceTerm,\n                            billingCountry: billingCountry,\n                            variant: \"small\",\n                            locale: locale\n                        })\n                    }),\n                    startDate: futurePriceSku.startDate\n                }\n            })\n        ]\n    });\n};\nSaasPricingCell.contextTypes = {\n    locParams: PropTypes.func,\n    loc: PropTypes.func\n};\nSaasPricingContent.contextTypes = {\n    locParams: PropTypes.func,\n    loc: PropTypes.func\n};\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { DirectionalHint, mergeStyleSets, Text } from '@fluentui/react';\nimport { NeutralColors } from '@fluentui/theme';\nimport Tooltip from '@shared/components/tooltip';\nimport { getPriceWithCurrencySymbol } from '@shared/utils/pricing';\nconst classes = mergeStyleSets({\n    subtotalText: {\n        fontWeight: 600,\n        color: NeutralColors.gray160\n    }\n});\nexport const SaasSubtotalCell = ({ sku, price, billingCountry, locale }, context)=>{\n    const { countryCode } = billingCountry;\n    const subtotalPriceText = getPriceWithCurrencySymbol(price.value, countryCode, sku.currencyCode, 2, locale);\n    const subtotalText = sku.isQuantifiable ? context.locParams('Pricing_Multiyear_Subtotal_Per_User', [\n        subtotalPriceText\n    ], `${subtotalPriceText}/user`) : subtotalPriceText;\n    return /*#__PURE__*/ _jsx(Tooltip, {\n        tooltipHostProps: {\n            content: subtotalText,\n            directionalHint: DirectionalHint.bottomLeftEdge\n        },\n        children: /*#__PURE__*/ _jsx(Text, {\n            className: classes.subtotalText,\n            children: subtotalText\n        })\n    });\n};\nSaasSubtotalCell.contextTypes = {\n    locParams: PropTypes.func,\n    loc: PropTypes.func\n};\n","function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nfunction _object_spread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        var ownKeys = Object.keys(source);\n        if (typeof Object.getOwnPropertySymbols === \"function\") {\n            ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n            }));\n        }\n        ownKeys.forEach(function(key) {\n            _define_property(target, key, source[key]);\n        });\n    }\n    return target;\n}\nfunction ownKeys(object, enumerableOnly) {\n    var keys = Object.keys(object);\n    if (Object.getOwnPropertySymbols) {\n        var symbols = Object.getOwnPropertySymbols(object);\n        if (enumerableOnly) {\n            symbols = symbols.filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n            });\n        }\n        keys.push.apply(keys, symbols);\n    }\n    return keys;\n}\nfunction _object_spread_props(target, source) {\n    source = source != null ? source : {};\n    if (Object.getOwnPropertyDescriptors) {\n        Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n        ownKeys(Object(source)).forEach(function(key) {\n            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n    }\n    return target;\n}\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport React from 'react';\nimport { Text } from '@fluentui/react';\nimport { SafeHtmlWrapper } from '@shared/components';\nimport { Constants } from '@shared/utils/constants';\nimport { getBillingTermTranslated } from '@shared/utils/pricing';\nimport { SaasPlanNameCell } from '../saasPlanNameCell';\nimport { SaasPricingCell } from '../saasPricingCell';\nimport { SaasSubtotalCell } from '../saasSubtotalCell';\nconst planNameWidthsByNumberOfTags = [\n    {\n        // 0 Tags\n        minWidth: 176,\n        maxWidth: 422\n    },\n    {\n        // 1 Tag\n        minWidth: 284,\n        maxWidth: 530\n    },\n    {\n        // 2 Tags\n        minWidth: 366,\n        maxWidth: 612\n    }\n];\nconst baseColumn = {\n    styles: {\n        cellTitle: {\n            paddingLeft: 16\n        },\n        root: {\n            height: 'fit-content'\n        }\n    }\n};\nconst getPlanNameColumn = (context, skus, onGetInNowClicked)=>{\n    const hasPrivatePlans = skus.some((sku)=>sku.isPrivate);\n    const hasFreeTrial = skus.some((sku)=>sku.freeTrialDurationDays);\n    const planNameWidths = planNameWidthsByNumberOfTags[Number(hasPrivatePlans) + Number(hasFreeTrial)];\n    return _object_spread_props(_object_spread({}, baseColumn), {\n        key: 'plan-name',\n        name: context.loc('SimplePlanPricing_ColumnHeader_Plan', 'Plan'),\n        minWidth: planNameWidths.minWidth,\n        maxWidth: planNameWidths.maxWidth,\n        onRender: ({ sku })=>/*#__PURE__*/ _jsx(SaasPlanNameCell, {\n                sku: sku,\n                offerHasFreeTrialPlans: skus.some((sku)=>sku.freeTrialDurationDays),\n                offerHasPrivatePlans: skus.some((sku)=>sku.isPrivate),\n                onGetInNowClicked: ()=>onGetInNowClicked(sku.id)\n            })\n    });\n};\nconst getDescriptionColumn = (context)=>_object_spread_props(_object_spread({}, baseColumn), {\n        key: 'description',\n        name: context.loc('SimplePlanPricing_ColumnHeader_Description', 'Description'),\n        minWidth: 320,\n        maxWidth: 696,\n        onRender: ({ sku })=>/*#__PURE__*/ _jsx(SafeHtmlWrapper, {\n                className: \"plan-description-wrapper\",\n                html: sku.description\n            })\n    });\nconst getPriceAndPaymentOptionsColumn = (context, billingCountry, shouldBlockPrices, locale)=>_object_spread_props(_object_spread({}, baseColumn), {\n        key: 'price-and-payment',\n        name: context.loc('SimplePlanPricing_ColumnHeader_PriceAndPaymentOptions', 'Price/payment options'),\n        minWidth: 206,\n        isMultiline: true,\n        onRender: ({ price, sku, futurePriceSku })=>/*#__PURE__*/ _jsx(SaasPricingCell, {\n                price: price,\n                sku: sku,\n                futurePriceSku: futurePriceSku,\n                billingCountry: billingCountry,\n                shouldBlockPrices: shouldBlockPrices,\n                locale: locale\n            })\n    });\nconst getBillingTermColumn = (context)=>_object_spread_props(_object_spread({}, baseColumn), {\n        key: 'billing-term',\n        name: context.loc('SimplePlanPricing_ColumnHeader_BillingTerm', 'Billing term'),\n        minWidth: 136,\n        isMultiline: true,\n        onRender: ({ price })=>/*#__PURE__*/ _jsx(Text, {\n                children: `${getBillingTermTranslated({\n                    context,\n                    term: price.unit,\n                    useHyphen: true,\n                    isSubscription: true\n                })}`\n            })\n    });\nexport const subtotalColumnKey = 'subtotal';\nconst getSubtotalColumn = (context, billingCountry, locale)=>_object_spread_props(_object_spread({}, baseColumn), {\n        key: subtotalColumnKey,\n        name: context.loc('SimplePlanPricing_ColumnHeader_Subtotal', 'Subtotal'),\n        minWidth: 136,\n        isMultiline: true,\n        onRender: ({ price, sku })=>/*#__PURE__*/ _jsx(SaasSubtotalCell, {\n                sku: sku,\n                price: price,\n                billingCountry: billingCountry,\n                locale: locale\n            })\n    });\nconst getNumberOfUsersColumn = (context, locale)=>_object_spread_props(_object_spread({}, baseColumn), {\n        key: 'number-of-users',\n        name: context.loc('SimplePlanPricing_ColumnHeader_NumberOfUsers', 'No. of users'),\n        minWidth: 136,\n        onRender: ({ sku: { minQuantity, maxQuantity } })=>{\n            const minQuantityText = minQuantity.toLocaleString(locale);\n            const maxQuantityText = Math.min(Constants.Checkout.MaxQuantity, maxQuantity).toLocaleString(locale);\n            return /*#__PURE__*/ _jsx(Text, {\n                children: `${minQuantityText} - ${maxQuantityText}`\n            });\n        }\n    });\nexport const getColumns = ({ context, skus, billingCountry, locale, onGetInNowClicked, shouldBlockPrices, isOneTimePayment })=>{\n    const planNameColumn = getPlanNameColumn(context, skus, onGetInNowClicked);\n    const descriptionColumn = getDescriptionColumn(context);\n    const priceAndPaymentOptionsColumn = getPriceAndPaymentOptionsColumn(context, billingCountry, shouldBlockPrices, locale);\n    const billingTermColumn = getBillingTermColumn(context);\n    const subtotalColumn = getSubtotalColumn(context, billingCountry, locale);\n    const columns = isOneTimePayment ? [\n        planNameColumn,\n        descriptionColumn,\n        priceAndPaymentOptionsColumn,\n        subtotalColumn\n    ] : [\n        planNameColumn,\n        descriptionColumn,\n        priceAndPaymentOptionsColumn,\n        billingTermColumn,\n        subtotalColumn\n    ];\n    const isSeatBased = skus.some((sku)=>sku.minQuantity && sku.maxQuantity);\n    if (isSeatBased) {\n        const numberOfUsersColumn = getNumberOfUsersColumn(context, locale);\n        const descriptionColumnIndex = 1;\n        columns.splice(descriptionColumnIndex + 1, 0, numberOfUsersColumn);\n    }\n    return columns;\n};\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport React, { useMemo } from 'react';\nimport { NeutralColors } from '@fluentui/theme';\nimport classNames from 'classnames';\nimport { sortTermPrices } from '@shared/utils/pricing';\nimport { subtotalColumnKey } from '../saasPricingTableColumns';\nimport { mergeStyleSets, Stack } from '@fluentui/react';\nconst classes = mergeStyleSets({\n    cell: {\n        borderBottom: `1px solid ${NeutralColors.gray30}`\n    },\n    rightBorder: {\n        borderRight: `1px solid ${NeutralColors.gray20}`\n    },\n    topBorder: {\n        borderTop: `1px solid ${NeutralColors.gray20}`\n    },\n    padding: {\n        padding: '16px'\n    },\n    subtotalCell: {\n        whiteSpace: 'nowrap',\n        overflow: 'hidden',\n        textOverflow: 'ellipsis'\n    }\n});\nexport const SaasPricingRow = ({ item, columns, rowWidth })=>{\n    const { sku, futurePriceSku } = item;\n    const sortedPrices = useMemo(()=>sortTermPrices(sku.termPrices), [\n        sku.termPrices\n    ]);\n    const multilineColumns = useMemo(()=>columns.filter((column)=>column.isMultiline), [\n        columns\n    ]);\n    const numberOfPrices = sortedPrices.length;\n    const cellHeightPercentage = `${100 / numberOfPrices}%`;\n    const getRowsForColumn = (column)=>multilineColumns.includes(column) ? sortedPrices : [\n            sortedPrices[0]\n        ];\n    const getCellStyle = (column)=>({\n            width: column.calculatedWidth,\n            maxWidth: column.calculatedWidth\n        });\n    return /*#__PURE__*/ _jsx(Stack, {\n        role: \"row\",\n        horizontal: true,\n        horizontalAlign: \"start\",\n        style: {\n            width: rowWidth\n        },\n        children: columns.map((column, columnIndex)=>{\n            const rowsForColumn = getRowsForColumn(column);\n            return /*#__PURE__*/ _jsx(Stack, {\n                role: \"cell\",\n                style: getCellStyle(column),\n                className: classNames(classes.cell, {\n                    [classes.rightBorder]: columnIndex !== columns.length - 1,\n                    [classes.subtotalCell]: column.key === subtotalColumnKey\n                }),\n                children: rowsForColumn.map((price, index)=>{\n                    const isTopBorder = index !== 0;\n                    const stackHeight = rowsForColumn.length > 1 ? cellHeightPercentage : 'auto';\n                    const className = classNames(classes.padding, {\n                        [classes.topBorder]: isTopBorder\n                    });\n                    return /*#__PURE__*/ _jsx(Stack, {\n                        className: className,\n                        style: {\n                            height: stackHeight\n                        },\n                        children: column.onRender({\n                            sku,\n                            futurePriceSku,\n                            price\n                        })\n                    }, index);\n                })\n            }, column.key);\n        })\n    });\n};\n","function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nfunction _object_spread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        var ownKeys = Object.keys(source);\n        if (typeof Object.getOwnPropertySymbols === \"function\") {\n            ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n            }));\n        }\n        ownKeys.forEach(function(key) {\n            _define_property(target, key, source[key]);\n        });\n    }\n    return target;\n}\nfunction ownKeys(object, enumerableOnly) {\n    var keys = Object.keys(object);\n    if (Object.getOwnPropertySymbols) {\n        var symbols = Object.getOwnPropertySymbols(object);\n        if (enumerableOnly) {\n            symbols = symbols.filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n            });\n        }\n        keys.push.apply(keys, symbols);\n    }\n    return keys;\n}\nfunction _object_spread_props(target, source) {\n    source = source != null ? source : {};\n    if (Object.getOwnPropertyDescriptors) {\n        Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n        ownKeys(Object(source)).forEach(function(key) {\n            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n    }\n    return target;\n}\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport React, { useEffect, useMemo } from 'react';\nimport * as PropTypes from 'prop-types';\nimport { CheckboxVisibility, ConstrainMode, DetailsHeader, DetailsList, DetailsListLayoutMode } from '@fluentui/react';\nimport { Constants } from '@shared/utils/constants';\nimport { renderNotAvailablePriceUI } from '@shared/utils/pricing';\nimport { getColumns } from '@shared/components/saasPricingTableBase/saasPricingTableColumns';\nimport { SaasPricingRow } from '@shared/components/saasPricingTableBase/saasPricingRow';\nimport { logger } from '@src/logger';\nimport { getWindow } from '@shared/services/window';\nimport { useSpzaInstrumentService } from '@shared/hooks';\nimport { sortingSKUs } from '@shared/utils/appUtils';\nimport { isOneTimePaymentOffer } from '@shared/utils/onetimepaymentoffers';\nconst renderRow = (rowProps)=>/*#__PURE__*/ _jsx(SaasPricingRow, _object_spread({}, rowProps));\nconst headerStyles = {\n    root: {\n        height: 20,\n        lineHeight: 20,\n        paddingBottom: 8\n    }\n};\nconst cellStyles = {\n    cellExtraRightPadding: 0,\n    cellLeftPadding: 0,\n    cellRightPadding: 0\n};\nconst sortRows = (rows)=>rows.sort(({ sku: a }, { sku: b })=>sortingSKUs({\n            a,\n            b\n        }));\nexport const defaultRenderHeader = (headerProps)=>{\n    return /*#__PURE__*/ _jsx(DetailsHeader, _object_spread_props(_object_spread({}, headerProps), {\n        styles: headerStyles\n    }));\n};\nexport const SaasPricingTableBase = ({ app, billingCountry, locale, shouldBlockPrices, onGetInNowClicked, detailsListPropsOverride }, context)=>{\n    const { pricingInformation: pricing, futurePricesInformation: futurePrices, entityId } = app;\n    const isOneTimePayment = isOneTimePaymentOffer(entityId);\n    const skus = (pricing === null || pricing === void 0 ? void 0 : pricing.skus) || [];\n    const futurePricesSkus = (futurePrices === null || futurePrices === void 0 ? void 0 : futurePrices.skus) || [];\n    const [instrument] = useSpzaInstrumentService();\n    const columns = useMemo(()=>getColumns({\n            context,\n            skus,\n            billingCountry,\n            onGetInNowClicked,\n            shouldBlockPrices,\n            locale,\n            isOneTimePayment\n        }), [\n        context,\n        skus,\n        billingCountry,\n        onGetInNowClicked,\n        shouldBlockPrices,\n        locale\n    ]);\n    const items = useMemo(()=>sortRows(skus.map((sku)=>{\n            const futurePriceSku = futurePricesSkus.find((futureSku)=>futureSku.id === sku.id);\n            return {\n                sku,\n                futurePriceSku\n            };\n        })), [\n        skus,\n        futurePricesSkus\n    ]);\n    useEffect(()=>{\n        const { bigId, entityId } = app;\n        const payload = {\n            page: getWindow().location.href,\n            action: Constants.Telemetry.Action.LongTermSaaS,\n            actionModifier: Constants.Telemetry.ActionModifier.LongTermSaasTablePresented,\n            details: JSON.stringify({\n                bigId,\n                entityId\n            })\n        };\n        logger.info(`LongTermSaas PDP table was loaded. bigId: ${bigId}, entityId: ${entityId}`, payload);\n        // Using old logger for the transition period\n        instrument.probe('logAndFlushTelemetryInfo', payload);\n    }, []);\n    if (!pricing) {\n        return /*#__PURE__*/ _jsx(\"div\", {\n            children: context.loc('Loading')\n        });\n    }\n    if (!(skus === null || skus === void 0 ? void 0 : skus.length)) {\n        return renderNotAvailablePriceUI(context);\n    }\n    return /*#__PURE__*/ _jsx(DetailsList, _object_spread({\n        items: items,\n        columns: columns,\n        onRenderRow: renderRow,\n        onRenderDetailsHeader: defaultRenderHeader,\n        layoutMode: DetailsListLayoutMode.justified,\n        checkboxVisibility: CheckboxVisibility.hidden,\n        disableSelectionZone: true,\n        cellStyleProps: cellStyles,\n        constrainMode: ConstrainMode.unconstrained\n    }, detailsListPropsOverride));\n};\nSaasPricingTableBase.contextTypes = {\n    locParams: PropTypes.func,\n    loc: PropTypes.func\n};\n","function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nfunction _object_spread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        var ownKeys = Object.keys(source);\n        if (typeof Object.getOwnPropertySymbols === \"function\") {\n            ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n            }));\n        }\n        ownKeys.forEach(function(key) {\n            _define_property(target, key, source[key]);\n        });\n    }\n    return target;\n}\nfunction ownKeys(object, enumerableOnly) {\n    var keys = Object.keys(object);\n    if (Object.getOwnPropertySymbols) {\n        var symbols = Object.getOwnPropertySymbols(object);\n        if (enumerableOnly) {\n            symbols = symbols.filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n            });\n        }\n        keys.push.apply(keys, symbols);\n    }\n    return keys;\n}\nfunction _object_spread_props(target, source) {\n    source = source != null ? source : {};\n    if (Object.getOwnPropertyDescriptors) {\n        Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n        ownKeys(Object(source)).forEach(function(key) {\n            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n    }\n    return target;\n}\nfunction _object_without_properties(source, excluded) {\n    if (source == null) return {};\n    var target = _object_without_properties_loose(source, excluded);\n    var key, i;\n    if (Object.getOwnPropertySymbols) {\n        var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n        for(i = 0; i < sourceSymbolKeys.length; i++){\n            key = sourceSymbolKeys[i];\n            if (excluded.indexOf(key) >= 0) continue;\n            if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n            target[key] = source[key];\n        }\n    }\n    return target;\n}\nfunction _object_without_properties_loose(source, excluded) {\n    if (source == null) return {};\n    var target = {};\n    var sourceKeys = Object.keys(source);\n    var key, i;\n    for(i = 0; i < sourceKeys.length; i++){\n        key = sourceKeys[i];\n        if (excluded.indexOf(key) >= 0) continue;\n        target[key] = source[key];\n    }\n    return target;\n}\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport * as React from 'react';\nimport SpzaComponent from './spzaComponent';\nimport { urlPush } from '../../shared/routerHistory';\nimport { getWindow } from '@shared/services/window';\nimport { Constants } from '@shared/utils/constants';\nimport { SpzaInstrumentService } from '@shared/services/telemetry/spza/spzaInstrument';\nimport { logger } from '@src/logger';\nimport { omit } from 'lodash-es';\nexport class InternalLink extends SpzaComponent {\n    addHiddenFocus() {\n        if (this.internalLinkElement) {\n            this.internalLinkElement.classList.add('x-hidden-focus');\n        }\n    }\n    removeHiddenFocus() {\n        if (this.internalLinkElement) {\n            this.internalLinkElement.classList.remove('x-hidden-focus');\n        }\n    }\n    renderImpl() {\n        const _this_props = this.props, { telemetryDetails } = _this_props, rest = _object_without_properties(_this_props, [\n            \"telemetryDetails\"\n        ]);\n        let href = null;\n        let onClick = null;\n        let children = null;\n        const aTagAccEnabled = rest.role !== 'checkbox' && rest.accEnabled ? 0 : -1;\n        const otherProps = {};\n        let additionalCommand = null;\n        for(const p in omit(rest, 'accEnabled')){\n            const val = rest[`${p}`];\n            if (p === 'href') {\n                href = val;\n            } else if (p === 'onClick') {\n                onClick = val;\n            } else if (p === 'children') {\n                children = val;\n            } else if (p === 'additionalCommand') {\n                additionalCommand = val;\n            } else {\n                otherProps[`${p}`] = val;\n            }\n        }\n        let callback;\n        if (onClick) {\n            callback = (e)=>{\n                if (additionalCommand) {\n                    additionalCommand(e);\n                }\n                onClick(e);\n                e.preventDefault();\n            };\n        } else {\n            callback = (e)=>{\n                if (additionalCommand) {\n                    additionalCommand(e);\n                }\n                e.preventDefault();\n                urlPush(href, this.props.scrollToTop);\n            };\n        }\n        const { scrollToTop } = otherProps, domProps = _object_without_properties(otherProps, [\n            \"scrollToTop\"\n        ]);\n        return /*#__PURE__*/ _jsx(\"a\", _object_spread_props(_object_spread({}, domProps), {\n            href: href,\n            onClick: (event)=>{\n                const payload = {\n                    page: getWindow().location.href,\n                    action: Constants.Telemetry.Action.Click,\n                    actionModifier: Constants.Telemetry.ActionModifier.InternalLink,\n                    details: telemetryDetails || JSON.stringify(href)\n                };\n                this.provider.probe(Constants.Telemetry.ProbeName.LogInfo, payload);\n                logger.info(payload.details, {\n                    action: payload.action,\n                    actionModifier: payload.actionModifier\n                });\n                return callback(event);\n            },\n            tabIndex: aTagAccEnabled,\n            ref: (element)=>this.internalLinkElement = element,\n            onMouseDown: ()=>this.addHiddenFocus(),\n            onBlur: ()=>this.removeHiddenFocus(),\n            children: children\n        }));\n    }\n    constructor(props, context){\n        super(props, context), _define_property(this, \"internalLinkElement\", void 0), _define_property(this, \"provider\", void 0);\n        this.provider = SpzaInstrumentService.getProvider();\n        this.addHiddenFocus = this.addHiddenFocus.bind(this);\n        this.removeHiddenFocus = this.removeHiddenFocus.bind(this);\n    }\n}\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport React, { useRef, useEffect, useState } from 'react';\nimport { NeutralColors, SharedColors } from '@fluentui/theme';\nimport { Text, FontIcon, mergeStyleSets } from '@fluentui/react';\nimport { getWindow } from '@shared/services/window';\nimport { Constants } from '@shared/utils/constants';\nimport { ItemsTooltip } from '@shared/components/ItemsTooltip';\nimport { InternalLink } from '@shared/components/internalLink';\nimport word from '@shared/images/ProductIcons/Word.svg';\nimport outlook from '@shared/images/ProductIcons/Outlook.svg';\nimport onenote from '@shared/images/ProductIcons/OneNote.svg';\nimport officemetaos from '@shared/images/ProductIcons/OfficeMetaOS.svg';\nimport teams from '@shared/images/ProductIcons/Teams.svg';\nimport excel from '@shared/images/ProductIcons/Excel.svg';\nimport sharepoint from '@shared/images/ProductIcons/SharePoint.svg';\nimport viva from '@shared/images/ProductIcons/Viva.svg';\nimport powerpoint from '@shared/images/ProductIcons/PowerPoint.svg';\nimport project from '@shared/images/ProductIcons/Project.svg';\nimport azure from '@shared/images/ProductIcons/azure.png';\nimport webApps from '@shared/images/ProductIcons/web-apps.svg';\nimport dynamics365Marketing from '@shared/images/ProductIcons/dynamics-365-marketing.svg';\nimport dynamics365Commerce from '@shared/images/ProductIcons/dynamics-365-commerce.svg';\nimport dynamics365SupplyChainManagment from '@shared/images/ProductIcons/dynamics-365-supply-chain-management.svg';\nimport dynamics365ForFinanceAndOperations from '@shared/images/ProductIcons/dynamics-365-for-finance-and-operations.svg';\nimport dynamics365ForSales from '@shared/images/ProductIcons/dynamics-365-for-sales.svg';\nimport dynamics365BusinessCentral from '@shared/images/ProductIcons/dynamics-365-business-central.svg';\nimport dynamics365ForCustomerServices from '@shared/images/ProductIcons/dynamics-365-for-customer-services.svg';\nimport dynamics365ForFieldServices from '@shared/images/ProductIcons/dynamics-365-for-field-services.svg';\nimport dynamics365ForProjectServiceAutomation from '@shared/images/ProductIcons/dynamics-365-for-project-service-automation.svg';\nimport dynamics365CustomerInsights from '@shared/images/ProductIcons/dynamics-365-customer-insights.svg';\nimport dynamics365CustomerVoice from '@shared/images/ProductIcons/dynamics-365-customer-voice.svg';\nimport dynamics365ProjectOperations from '@shared/images/ProductIcons/dynamics-365-project-operations.svg';\nimport dynamics365MixedReality from '@shared/images/ProductIcons/dynamics-365-mixed-reality.svg';\nimport dynamics365HumanResources from '@shared/images/ProductIcons/dynamics-365-human-resources.svg';\nimport m365AdoptionAndChangeManagement from '@shared/images/ProductIcons/m365-sa-adoption-and-change-management.svg';\nimport m365CallingForMicrosoftTeams from '@shared/images/ProductIcons/m365-sa-calling-for-microsoft-teams.svg';\nimport m365CloudSecurity from '@shared/images/ProductIcons/m365-sa-cloud-security.svg';\nimport m365ComplianceAdvisoryServices from '@shared/images/ProductIcons/m365-sa-compliance-advisory-services.svg';\nimport m365DeviceDeploymentAndManagement from '@shared/images/ProductIcons/m365-sa-device-deployment-and-management.svg';\nimport m365FirstlineWorkers from '@shared/images/ProductIcons/m365-sa-firstline-workers.svg';\nimport m365IdentityAndAccessManagement from '@shared/images/ProductIcons/m365-sa-identity-and-access-management.svg';\nimport m365InformationProtectionAndGovernance from '@shared/images/ProductIcons/m365-sa-information-protection-and-governance.svg';\nimport m365InsiderRisk from '@shared/images/ProductIcons/m365-sa-insider-risk.svg';\nimport m365KnowledgeAndInsights from '@shared/images/ProductIcons/m365-sa-knowledge-and-insights.svg';\nimport m365MeetingRoomsForMicrosoftTeams from '@shared/images/ProductIcons/m365-sa-meeting-rooms-for-microsoft-teams.svg';\nimport m365MeetingsForMicrosoftTeams from '@shared/images/ProductIcons/m365-sa-meetings-for-microsoft-teams.svg';\nimport m365LiveEvents from '@shared/images/ProductIcons/m365-sa-microsoft-365-live-events.svg';\nimport m365MobileDeviceManagement from '@shared/images/ProductIcons/m365-sa-mobile-device-management.svg';\nimport m365PowerPlatformForTeams from '@shared/images/ProductIcons/m365-sa-power-platform-for-teams.svg';\nimport m365TeamsCustomSolutions from '@shared/images/ProductIcons/m365-sa-teams-custom-solutions.svg';\nimport m365TeamworkDeployment from '@shared/images/ProductIcons/m365-sa-teamwork-deployment.svg';\nimport m365ThreatProtection from '@shared/images/ProductIcons/m365-sa-threat-protection.svg';\nimport m365WorkspaceAnalytics from '@shared/images/ProductIcons/m365-sa-workplace-analytics.svg';\nimport powerBI from '@shared/images/ProductIcons/power-bi.svg';\nimport powerBIVisuals from '@shared/images/ProductIcons/power-bi-visuals.svg';\nimport powerAutomate from '@shared/images/ProductIcons/power-automate.svg';\nimport powerVirtualAgents from '@shared/images/ProductIcons/power-virtual-agents.svg';\nimport powerapps from '@shared/images/ProductIcons/PowerApps.svg';\nimport powerpages from '@shared/images/ProductIcons/powerpages.svg';\nimport appServices from '@shared/images/ProductIcons/App-Services.svg';\nimport azureServices from '@shared/images/ProductIcons/Azure.svg';\nimport kubernetesServices from '@shared/images/ProductIcons/Kubernetes-Services.svg';\nimport managedService from '@shared/images/ProductIcons/Managed-Service.svg';\nimport virtualMachine from '@shared/images/ProductIcons/Virtual-Machine.svg';\nimport entraId from '@shared/images/ProductIcons/entra-id.svg';\nimport classNames from 'classnames';\nconst iconsMap = {\n    word,\n    outlook,\n    onenote,\n    officemetaos,\n    teams,\n    excel,\n    sharepoint,\n    viva,\n    powerpoint,\n    project,\n    azure,\n    'web-apps': webApps,\n    // 'power-platform': true,\n    // 'dynamics-365': true,\n    'dynamics-365-marketing': dynamics365Marketing,\n    'dynamics-365-commerce': dynamics365Commerce,\n    'dynamics-365-supply-chain-management': dynamics365SupplyChainManagment,\n    // 'dynamics-365-for-operations': true,\n    'dynamics-365-for-finance-and-operations': dynamics365ForFinanceAndOperations,\n    'dynamics-365-for-sales': dynamics365ForSales,\n    'dynamics-365-business-central': dynamics365BusinessCentral,\n    'dynamics-365-for-customer-services': dynamics365ForCustomerServices,\n    'dynamics-365-for-field-services': dynamics365ForFieldServices,\n    'dynamics-365-for-project-service-automation': dynamics365ForProjectServiceAutomation,\n    'dynamics-365-customer-insights': dynamics365CustomerInsights,\n    'dynamics-365-customer-voice': dynamics365CustomerVoice,\n    'dynamics-365-project-operations': dynamics365ProjectOperations,\n    // 'dynamics-365-project-services': true,\n    'dynamics-365-mixed-reality': dynamics365MixedReality,\n    'dynamics-365-human-resources': dynamics365HumanResources,\n    'm365-sa-adoption-and-change-management': m365AdoptionAndChangeManagement,\n    'm365-sa-calling-for-microsoft-teams': m365CallingForMicrosoftTeams,\n    'm365-sa-cloud-security': m365CloudSecurity,\n    'm365-sa-compliance-advisory-services': m365ComplianceAdvisoryServices,\n    'm365-sa-device-deployment-and-management': m365DeviceDeploymentAndManagement,\n    'm365-sa-firstline-workers': m365FirstlineWorkers,\n    'm365-sa-identity-and-access-management': m365IdentityAndAccessManagement,\n    'm365-sa-information-protection-and-governance': m365InformationProtectionAndGovernance,\n    'm365-sa-insider-risk': m365InsiderRisk,\n    'm365-sa-knowledge-and-insights': m365KnowledgeAndInsights,\n    'm365-sa-meeting-rooms-for-microsoft-teams': m365MeetingRoomsForMicrosoftTeams,\n    'm365-sa-meetings-for-microsoft-teams': m365MeetingsForMicrosoftTeams,\n    'm365-sa-microsoft-365-live-events': m365LiveEvents,\n    'm365-sa-mobile-device-management': m365MobileDeviceManagement,\n    'm365-sa-power-platform-for-teams': m365PowerPlatformForTeams,\n    'm365-sa-teams-custom-solutions': m365TeamsCustomSolutions,\n    'm365-sa-teamwork-deployment': m365TeamworkDeployment,\n    'm365-sa-threat-protection': m365ThreatProtection,\n    'm365-sa-workplace-analytics': m365WorkspaceAnalytics,\n    'power-bi': powerBI,\n    'power-bi-visuals': powerBIVisuals,\n    'power-automate': powerAutomate,\n    'power-virtual-agents': powerVirtualAgents,\n    powerapps,\n    powerpages,\n    'azure-services': azureServices,\n    container: kubernetesServices,\n    'virtual-machine': virtualMachine,\n    'entra-apps': entraId,\n    'azure-application': appServices,\n    'managed-services': managedService\n};\nconst pixelsPerChar = {\n    medium: 9,\n    smallPlus: 6\n};\nconst firstIconMargin = 2;\nconst iconSize = 16;\nconst totalIconMargin = 8;\nconst totalTextMargin = totalIconMargin;\nconst dividerSize = iconSize;\nconst optionalLeftNumberSize = (textSize)=>2 * pixelsPerChar[`${textSize}`];\nconst minTextSize = (textSize)=>3 * pixelsPerChar[`${textSize}`];\nconst classStyles = mergeStyleSets({\n    icon: [\n        {\n            display: 'inline-block',\n            margin: `0 ${totalIconMargin / 2}px`\n        }\n    ],\n    firstIcon: [\n        {\n            margin: `0 ${totalIconMargin / 2}px 0 0`\n        }\n    ],\n    divider: [\n        {\n            fontSize: iconSize,\n            color: NeutralColors.gray40\n        }\n    ],\n    hoveredText: [\n        {\n            margin: `0px ${totalTextMargin / 2}px`,\n            color: SharedColors.cyanBlue10,\n            textDecoration: 'underline'\n        }\n    ],\n    link: [\n        {\n            margin: `2px ${totalTextMargin / 2}px`\n        }\n    ],\n    linkText: [\n        {\n            color: SharedColors.cyanBlue10\n        }\n    ],\n    text: [\n        {\n            margin: `0px ${totalTextMargin / 2}px`\n        },\n        {\n            color: NeutralColors.gray130\n        }\n    ]\n});\nconst containerClassName = (wrap)=>mergeStyleSets({\n        container: [\n            'itemsContainer',\n            {\n                flexWrap: wrap ? 'wrap' : 'nowrap'\n            }\n        ]\n    });\nconst sizes = {\n    icon: iconSize + totalIconMargin,\n    text: (length, textSize)=>length * pixelsPerChar[`${textSize}`] + totalTextMargin\n};\nexport const ItemsContainerIcon = ({ itemType, className = classStyles.icon })=>/*#__PURE__*/ _jsx(\"img\", {\n        src: iconsMap[`${itemType}`],\n        width: iconSize,\n        height: iconSize,\n        alt: `${itemType} product icon`,\n        className: className\n    });\nexport const ItemsContainerDivider = ()=>/*#__PURE__*/ _jsx(FontIcon, {\n        iconName: \"Separator\",\n        className: classStyles.divider\n    });\nexport const ItemsContainerText = ({ text, hovered = false, textSize = 'medium' })=>{\n    const classes = classNames({\n        [classStyles.hoveredText]: hovered\n    });\n    return /*#__PURE__*/ _jsx(Text, {\n        variant: textSize,\n        className: hovered ? classes : classStyles.text,\n        children: text\n    });\n};\nexport const ItemsContainerLinkText = ({ entityId, type, text, hovered, hrefCallback, logOnClick, dataBiId, textSize = 'medium' })=>{\n    return hrefCallback ? /*#__PURE__*/ _jsx(InternalLink, {\n        href: hrefCallback(entityId),\n        additionalCommand: logOnClick ? ()=>logOnClick(type) : null,\n        \"data-bi-id\": dataBiId,\n        \"data-bi-name\": entityId,\n        \"data-bi-view\": Constants.Telemetry.TemplateName.SaaSBundle,\n        \"data-bi-area\": Constants.Telemetry.AreaName.AppDetails,\n        accEnabled: true,\n        className: classStyles.link,\n        children: /*#__PURE__*/ _jsx(Text, {\n            className: classStyles.linkText,\n            variant: textSize,\n            children: text\n        })\n    }) : /*#__PURE__*/ _jsx(ItemsContainerText, {\n        text: text,\n        textSize: textSize,\n        hovered: hovered\n    });\n};\nexport const ItemsContainerComponent = ({ items, logOnClick, hrefCallback, tooltipTitle, textSize = 'medium', wrap = false, withText = false, withTooltip = false, dataBiId = 'View AddIn', withDivider = true, linkedAddIns = null, linkedWebApps = null })=>{\n    var _ref_current;\n    const ref = useRef(null);\n    const [elementWidth, setElementWidth] = useState((ref === null || ref === void 0 ? void 0 : (_ref_current = ref.current) === null || _ref_current === void 0 ? void 0 : _ref_current.clientWidth) || 0);\n    const onResize = ()=>{\n        if (ref.current) {\n            setElementWidth(ref.current.clientWidth);\n        }\n    };\n    useEffect(()=>setElementWidth(ref.current.clientWidth), []);\n    useEffect(()=>{\n        var _getWindow;\n        (_getWindow = getWindow()) === null || _getWindow === void 0 ? void 0 : _getWindow.addEventListener('resize', onResize);\n        return ()=>{\n            var _getWindow;\n            (_getWindow = getWindow()) === null || _getWindow === void 0 ? void 0 : _getWindow.removeEventListener('resize', onResize);\n        };\n    }, []);\n    const insertEllipsis = (itemIndex, productIndex, elements, productsNumber)=>{\n        let leftNumber = productsNumber - productIndex;\n        if (itemIndex > 0) {\n            elements.push(/*#__PURE__*/ _jsx(ItemsContainerText, {\n                text: \"...\",\n                textSize: textSize,\n                hovered: withTooltip\n            }, `${itemIndex}_ellipsis`));\n            leftNumber -= 1;\n        }\n        if (leftNumber > 0) elements.push(/*#__PURE__*/ _jsx(ItemsContainerText, {\n            text: `+${leftNumber}`,\n            textSize: textSize,\n            hovered: withTooltip\n        }, `${itemIndex}_ellipsis2`));\n        return elements;\n    };\n    const renderElements = ()=>{\n        const productsCount = items.length;\n        const shouldAddLeftNumber = productsCount > 1;\n        const additionalLeftNumberSize = shouldAddLeftNumber ? optionalLeftNumberSize(textSize) : 0;\n        const maxWidth = wrap ? Infinity : elementWidth - additionalLeftNumberSize;\n        const elementsToRender = [];\n        let currentWidth = 0;\n        for(let productIndex = 0; productIndex < productsCount; productIndex++){\n            const icons = items[`${productIndex}`].icons;\n            const lastProduct = productIndex >= productsCount - 1;\n            for(let itemIndex = 0; itemIndex < icons.length; itemIndex++){\n                const lastType = items[`${productIndex}`].urlKey ? itemIndex === icons.length - 1 : true;\n                const shouldAddDivider = itemIndex === 0 && !lastProduct && withDivider;\n                let additionalSize = shouldAddDivider ? dividerSize : 0;\n                if (currentWidth + sizes.icon + additionalSize < maxWidth) {\n                    currentWidth += sizes.icon + additionalSize;\n                    if (!withDivider && productIndex === 0) {\n                        elementsToRender.push(/*#__PURE__*/ _jsx(ItemsContainerIcon, {\n                            itemType: icons[`${itemIndex}`],\n                            className: classStyles.firstIcon\n                        }, `${productIndex}_${itemIndex}`));\n                        additionalSize -= firstIconMargin;\n                    } else {\n                        elementsToRender.push(/*#__PURE__*/ _jsx(ItemsContainerIcon, {\n                            itemType: icons[`${itemIndex}`]\n                        }, `${productIndex}_${itemIndex}`));\n                    }\n                    if (lastType) {\n                        const productName = items[`${productIndex}`].title;\n                        const productNameLength = sizes.text(productName.length, textSize);\n                        const totalMaxWidth = lastProduct ? maxWidth + additionalLeftNumberSize : maxWidth;\n                        const totalProductNameLength = withDivider ? productNameLength : productNameLength + totalTextMargin / 2;\n                        if (withText) {\n                            if (currentWidth + minTextSize(textSize) <= totalMaxWidth) {\n                                if (currentWidth + productNameLength > totalMaxWidth) {\n                                    const leftNumber = productsCount - productIndex;\n                                    // if we cant push the whole product name, then remove the icon and add +1\n                                    elementsToRender.pop();\n                                    elementsToRender.push(/*#__PURE__*/ _jsx(ItemsContainerText, {\n                                        text: `+${leftNumber}`,\n                                        textSize: textSize,\n                                        hovered: withTooltip\n                                    }, `${items[`${productIndex}`].urlKey}_linkText3`));\n                                    return elementsToRender;\n                                } else {\n                                    elementsToRender.push(/*#__PURE__*/ _jsx(ItemsContainerLinkText, {\n                                        entityId: items[`${productIndex}`].urlKey,\n                                        type: icons[0],\n                                        text: productName,\n                                        textSize: textSize,\n                                        hrefCallback: hrefCallback,\n                                        logOnClick: logOnClick,\n                                        dataBiId: dataBiId\n                                    }, `${items[`${productIndex}`].urlKey}_${productIndex}_linkText`));\n                                }\n                                currentWidth += totalProductNameLength;\n                            } else {\n                                elementsToRender.push(/*#__PURE__*/ _jsx(ItemsContainerText, {\n                                    text: \"...\",\n                                    textSize: textSize,\n                                    hovered: withTooltip\n                                }, `${productIndex}_linkText2`));\n                                if (lastProduct) return elementsToRender;\n                                const leftNumber = productsCount - productIndex - 1;\n                                if (leftNumber > 0) elementsToRender.push(/*#__PURE__*/ _jsx(ItemsContainerText, {\n                                    text: `+${leftNumber}`,\n                                    textSize: textSize,\n                                    hovered: withTooltip\n                                }, `${items[`${productIndex}`].urlKey}_linkText3`));\n                                return elementsToRender;\n                            }\n                        }\n                        if (!lastProduct && withDivider) elementsToRender.push(/*#__PURE__*/ _jsx(ItemsContainerDivider, {}, `${items[`${productIndex}`].urlKey}_linkDivider`));\n                    }\n                } else {\n                    return insertEllipsis(itemIndex, productIndex, elementsToRender, productsCount);\n                }\n            }\n        }\n        if (linkedWebApps) {\n            elementsToRender.push(linkedWebApps);\n        }\n        if (linkedAddIns) {\n            elementsToRender.push(linkedAddIns);\n        }\n        return elementsToRender.map((element, index)=>/*#__PURE__*/ _jsx(React.Fragment, {\n                children: element\n            }, index));\n    };\n    return /*#__PURE__*/ _jsx(\"div\", {\n        ref: ref,\n        className: \"itemsRootContainer\",\n        children: withTooltip ? /*#__PURE__*/ _jsx(ItemsTooltip, {\n            title: tooltipTitle,\n            items: items,\n            children: /*#__PURE__*/ _jsx(\"div\", {\n                className: containerClassName(wrap).container,\n                children: renderElements()\n            })\n        }) : /*#__PURE__*/ _jsx(\"div\", {\n            className: containerClassName(wrap).container,\n            children: renderElements()\n        })\n    });\n};\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport React, { useState } from 'react';\nimport ProductsComponent from '@shared/components/products';\nimport * as PropTypes from 'prop-types';\nimport { getProductsList } from '@shared/utils/detailUtils';\nimport { TelemetryImage } from '@shared/components/telemetryImage';\nimport { Stack, Text, mergeStyleSets, DefaultButton, ScreenWidthMinXLarge } from '@fluentui/react';\nimport classNames from 'classnames';\nimport { NeutralColors } from '@fluentui/theme';\nimport { bulidStartingPriceElement, getStartingPriceElement, shouldBlockPricing } from '@shared/utils/pricing';\nimport { BaseCtaButton } from '@shared/components/baseCtaButton';\nimport { Constants } from '@shared/utils/constants';\nimport { Link, useLocation } from 'react-router-dom';\nimport { SpzaInstrumentService } from '@shared/services/telemetry/spza/spzaInstrument';\nimport { logger } from '@src/logger';\nimport { RatingsInfo } from '@shared/components/ratings/ratingsInfo';\nconst containerTokens = {\n    childrenGap: 16,\n    padding: 16\n};\nconst verticalItemsTokens = {\n    childrenGap: 8,\n    paddingTop: 16,\n    paddingBottom: 16\n};\nconst linkedItemStyles = mergeStyleSets({\n    itemImage: {\n        width: 60,\n        height: 60,\n        display: 'flex',\n        backgroundColor: NeutralColors.white\n    },\n    linkItemTitle: {\n        height: 48,\n        fontWeight: 600,\n        color: NeutralColors.gray160,\n        overflow: 'hidden',\n        display: '-webkit-box',\n        textOverflow: 'ellipsis',\n        '-webkit-box-orient': 'vertical',\n        '-webkit-line-clamp': '2'\n    },\n    linkItemContainer: {\n        justifyContent: 'space-around'\n    },\n    moreProductsStyle: {\n        paddingTop: 3\n    },\n    imageStackItemStyle: {\n        '& .appTileHoverImage': {\n            width: 50,\n            height: 50,\n            margin: 'auto'\n        }\n    },\n    productsAndStarsStackItemStyle: {\n        marginBottom: 8\n    },\n    startingPriceElementContainer: {\n        maxWidth: '237px',\n        display: 'block',\n        '& .button-link': {\n            overflow: 'hidden',\n            textOverflow: 'ellipsis',\n            whiteSpace: 'nowrap',\n            textAlign: 'start'\n        },\n        '& .buttonLinkContainer': {\n            overflow: 'hidden',\n            textOverflow: 'ellipsis',\n            whiteSpace: 'nowrap',\n            textAlign: 'start'\n        },\n        '& .dark': {\n            marginTop: 0\n        },\n        [`@media (max-width: ${ScreenWidthMinXLarge}px)`]: {\n            display: 'none'\n        }\n    },\n    starsAndRattingContainer: {\n        height: 20,\n        '& .ratingInfoSection .detailsRatingStar': {\n            marginBottom: 0\n        }\n    },\n    rattingText: {\n        color: NeutralColors.gray130\n    },\n    rattingStarText: {\n        marginRight: 4,\n        padding: 0,\n        fontSize: 12\n    },\n    pricingAndCtaToken: {\n        marginTop: 12\n    },\n    ctaButton: {\n        maxWidth: 115\n    }\n});\nconst tileStyle = {\n    root: {\n        selectors: {\n            '&:hover': {\n                backgroundColor: NeutralColors.gray10\n            }\n        }\n    }\n};\nconst ctaButtonStyle = {\n    textContainer: {\n        overflow: 'hidden'\n    },\n    label: {\n        overflow: 'hidden',\n        whiteSpace: 'nowrap',\n        textOverflow: 'ellipsis'\n    }\n};\nconst getProducts = (products)=>{\n    return products && Object.keys(products).length > 0 && getProductsList(products);\n};\nconst getRatingsData = (context, ratingsAverage, ratingsNum)=>{\n    return ratingsNum >= 1 && {\n        avgRating: ratingsAverage,\n        ratingsCount: ratingsNum,\n        key: 'internal',\n        text: context.loc('Tile_ASRatings', 'ratings')\n    };\n};\nconst logTelemetryInfo = ({ linkedItem, location })=>{\n    const instrument = SpzaInstrumentService.getProvider();\n    const { title, entityId } = linkedItem;\n    const payload = {\n        page: location.pathname,\n        action: Constants.Telemetry.Action.Click,\n        actionModifier: Constants.Telemetry.ActionModifier.SaaSLinkingTile,\n        details: JSON.stringify({\n            title,\n            entityId\n        })\n    };\n    instrument.probe(Constants.Telemetry.ProbeName.LogInfo, payload);\n    logger.info('', payload);\n};\nexport const LinkedItem = ({ linkedItem, isInAppDetail, billingCountryCode, isSaaSRendering, ctaButtonClick, isLoadingUserData, getLinkedItemLink, productId, locale }, context)=>{\n    const [isCardHover, setIsCardHover] = useState(false);\n    const location = useLocation();\n    const itemProducts = getProducts(linkedItem.products);\n    const ratingsData = getRatingsData(context, linkedItem.AverageRating, linkedItem.NumberOfRatings);\n    const startingPrice = shouldBlockPricing(linkedItem) ? null : linkedItem.startingPrice;\n    const pricingElement = getStartingPriceElement({\n        app: linkedItem,\n        billingCountryCode,\n        startingPrice,\n        context,\n        locale\n    });\n    return /*#__PURE__*/ _jsx(Link, {\n        to: getLinkedItemLink({\n            linkedItem,\n            productId,\n            context\n        }),\n        onClick: ()=>{\n            logTelemetryInfo({\n                linkedItem,\n                location\n            });\n        },\n        children: /*#__PURE__*/ _jsxs(Stack, {\n            tokens: containerTokens,\n            horizontal: true,\n            className: classNames({\n                'ms-depth-8': isInAppDetail\n            }),\n            onMouseEnter: ()=>setIsCardHover(true),\n            onMouseLeave: ()=>setIsCardHover(false),\n            styles: tileStyle,\n            children: [\n                /*#__PURE__*/ _jsx(Stack.Item, {\n                    className: classNames([\n                        linkedItemStyles.imageStackItemStyle\n                    ]),\n                    children: /*#__PURE__*/ _jsx(TelemetryImage, {\n                        src: linkedItem.iconURL,\n                        alt: \"linked item icon\",\n                        className: classNames([\n                            linkedItemStyles.itemImage\n                        ], 'ms-depth-8'),\n                        imgClassName: \"appTileHoverImage\"\n                    })\n                }),\n                /*#__PURE__*/ _jsx(Stack.Item, {\n                    grow: 1,\n                    children: /*#__PURE__*/ _jsxs(Stack, {\n                        tokens: verticalItemsTokens,\n                        className: linkedItemStyles.linkItemContainer,\n                        children: [\n                            /*#__PURE__*/ _jsx(Stack.Item, {\n                                children: /*#__PURE__*/ _jsx(Text, {\n                                    variant: \"large\",\n                                    className: classNames([\n                                        linkedItemStyles.linkItemTitle\n                                    ]),\n                                    children: linkedItem.title\n                                })\n                            }),\n                            (itemProducts === null || itemProducts === void 0 ? void 0 : itemProducts.length) && /*#__PURE__*/ _jsx(Stack.Item, {\n                                grow: 1,\n                                className: classNames([\n                                    linkedItemStyles.moreProductsStyle\n                                ]),\n                                children: /*#__PURE__*/ _jsx(ProductsComponent, {\n                                    withTooltip: true,\n                                    textSize: \"smallPlus\",\n                                    withText: true,\n                                    productsItems: itemProducts\n                                })\n                            }),\n                            /*#__PURE__*/ _jsx(Stack.Item, {\n                                className: classNames([\n                                    linkedItemStyles.starsAndRattingContainer\n                                ]),\n                                children: ratingsData && /*#__PURE__*/ _jsx(RatingsInfo, {\n                                    avgRating: ratingsData.avgRating,\n                                    ratingsCount: ratingsData.ratingsCount,\n                                    title: ratingsData.text,\n                                    context: context,\n                                    textSize: \"smallPlus\",\n                                    starClass: classNames([\n                                        linkedItemStyles.rattingStarText\n                                    ]),\n                                    ratingClass: classNames([\n                                        linkedItemStyles.rattingText\n                                    ])\n                                }, ratingsData.key)\n                            }),\n                            /*#__PURE__*/ _jsx(Stack.Item, {\n                                children: /*#__PURE__*/ _jsxs(Stack, {\n                                    horizontal: true,\n                                    className: classNames([\n                                        linkedItemStyles.pricingAndCtaToken\n                                    ]),\n                                    children: [\n                                        /*#__PURE__*/ _jsx(Stack.Item, {\n                                            className: linkedItemStyles.startingPriceElementContainer,\n                                            title: pricingElement === null || pricingElement === void 0 ? void 0 : pricingElement.value,\n                                            children: bulidStartingPriceElement({\n                                                app: linkedItem,\n                                                pricingLinkClassName: 'dark',\n                                                billingCountryCode,\n                                                context,\n                                                locale\n                                            })\n                                        }),\n                                        /*#__PURE__*/ _jsx(Stack.Item, {\n                                            disableShrink: true,\n                                            children: isSaaSRendering ? /*#__PURE__*/ _jsx(DefaultButton, {\n                                                primary: isCardHover,\n                                                text: context.loc('Button_LearnMore', 'Learn more'),\n                                                onClick: (event)=>{\n                                                    ctaButtonClick({\n                                                        linkedItem,\n                                                        event\n                                                    });\n                                                },\n                                                className: classNames([\n                                                    linkedItemStyles.ctaButton\n                                                ]),\n                                                styles: ctaButtonStyle,\n                                                title: context.loc('Button_LearnMore', 'Learn more')\n                                            }) : /*#__PURE__*/ _jsx(BaseCtaButton, {\n                                                app: linkedItem,\n                                                billingCountryCode: billingCountryCode,\n                                                startingPrice: linkedItem.startingPrice,\n                                                isLoadingUserData: isLoadingUserData,\n                                                CtaComponent: /*#__PURE__*/ _jsx(DefaultButton, {\n                                                    primary: isCardHover,\n                                                    text: context.loc('CTA_Get', 'Get it now'),\n                                                    onClick: (event)=>{\n                                                        ctaButtonClick({\n                                                            linkedItem,\n                                                            event\n                                                        });\n                                                    },\n                                                    className: classNames([\n                                                        linkedItemStyles.ctaButton\n                                                    ]),\n                                                    styles: ctaButtonStyle,\n                                                    title: context.loc('CTA_Get', 'Get it now')\n                                                }),\n                                                ctaType: Constants.CTAType.Get\n                                            })\n                                        })\n                                    ]\n                                })\n                            })\n                        ]\n                    })\n                })\n            ]\n        })\n    });\n};\nLinkedItem.contextTypes = {\n    loc: PropTypes.func,\n    locParams: PropTypes.func,\n    buildHref: PropTypes.func\n};\n","function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nfunction _object_spread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        var ownKeys = Object.keys(source);\n        if (typeof Object.getOwnPropertySymbols === \"function\") {\n            ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n            }));\n        }\n        ownKeys.forEach(function(key) {\n            _define_property(target, key, source[key]);\n        });\n    }\n    return target;\n}\nfunction ownKeys(object, enumerableOnly) {\n    var keys = Object.keys(object);\n    if (Object.getOwnPropertySymbols) {\n        var symbols = Object.getOwnPropertySymbols(object);\n        if (enumerableOnly) {\n            symbols = symbols.filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n            });\n        }\n        keys.push.apply(keys, symbols);\n    }\n    return keys;\n}\nfunction _object_spread_props(target, source) {\n    source = source != null ? source : {};\n    if (Object.getOwnPropertyDescriptors) {\n        Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n        ownKeys(Object(source)).forEach(function(key) {\n            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n    }\n    return target;\n}\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport React from 'react';\nimport { Dialog, DialogType, DialogFooter, PrimaryButton, Stack, FontIcon, mergeStyleSets } from '@fluentui/react';\nimport { NeutralColors } from '@fluentui/theme';\nconst closeButtonText = 'Done';\nconst iconName = 'Completed';\nconst modalMinWidth = '560px';\nconst modalProps = {\n    isDarkOverlay: false\n};\nconst stackTokens = {\n    childrenGap: 8\n};\nconst classNames = mergeStyleSets({\n    icon: [\n        {\n            fontSize: 16,\n            height: 16,\n            width: 16,\n            color: '#107C10',\n            marginTop: 2\n        }\n    ]\n});\nconst dialogStyles = {\n    main: {\n        minHeight: 100\n    }\n};\nconst dialogContentStyles = {\n    header: {\n        color: NeutralColors.gray160\n    }\n};\nconst dialogContentProps = (context)=>{\n    return {\n        type: DialogType.close,\n        closeButtonAriaLabel: context.loc('SubmittedModal_CloseButton_AriaText', 'Close'),\n        styles: dialogContentStyles\n    };\n};\nexport const SubmittedModal = ({ hidden, onDismiss, title, children, context })=>{\n    return /*#__PURE__*/ _jsxs(Dialog, {\n        hidden: hidden,\n        dialogContentProps: _object_spread_props(_object_spread({}, dialogContentProps(context)), {\n            title\n        }),\n        minWidth: modalMinWidth,\n        modalProps: modalProps,\n        styles: dialogStyles,\n        onDismiss: onDismiss,\n        children: [\n            /*#__PURE__*/ _jsxs(Stack, {\n                horizontal: true,\n                tokens: stackTokens,\n                children: [\n                    /*#__PURE__*/ _jsx(FontIcon, {\n                        iconName: iconName,\n                        className: classNames.icon\n                    }),\n                    /*#__PURE__*/ _jsx(Stack.Item, {\n                        children: children\n                    })\n                ]\n            }),\n            /*#__PURE__*/ _jsx(DialogFooter, {\n                children: /*#__PURE__*/ _jsx(PrimaryButton, {\n                    text: context.loc('SubmittedModal_CloseButton_Text', closeButtonText),\n                    onClick: onDismiss\n                })\n            })\n        ]\n    });\n};\n","import { jsx as _jsx, Fragment as _Fragment } from \"react/jsx-runtime\";\nimport React from 'react';\nimport { useSelector } from 'react-redux';\nimport { Constants, Environment } from '@shared/utils/constants';\nimport { getLocalStorageItem } from '@shared/utils/browserStorageUtils';\nimport { useMsClarityIdentify, useMsClarityTracking } from '@shared/hooks';\n// Learn more about clarity API here: https://learn.microsoft.com/en-us/clarity/setup-and-installation/clarity-api\nexport const IClarityFunctionNames = {\n    IDENTIFY: 'identify',\n    SET: 'set',\n    CONSENT: 'consent',\n    UPGRADE: 'upgrade'\n};\nexport const MsClarityEnabledEnvironments = [\n    Environment.Canary,\n    Environment.Production,\n    Environment.Development\n];\nexport const MsClarity = ({ allowTracking })=>{\n    const { correlationId } = useSelector((state)=>state.config);\n    const spzaId = getLocalStorageItem(Constants.LocalStorage.spzaUserId);\n    useMsClarityTracking({\n        allowTracking\n    });\n    useMsClarityIdentify({\n        spzaId,\n        correlationId\n    });\n    return /*#__PURE__*/ _jsx(_Fragment, {});\n};\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport React from 'react';\nimport { ItemsContainerComponent } from '@shared/components/itemsContainer';\nconst ProductsComponent = ({ productsItems, tooltipTitle, textSize = 'medium', wrap = false, withText = false, withTooltip = false, linkedAddIns = null, linkedWebApps = null })=>{\n    const items = React.useMemo(()=>productsItems.map((item)=>{\n            return {\n                icons: [\n                    item.urlKey\n                ],\n                title: item.title\n            };\n        }), [\n        productsItems\n    ]);\n    return /*#__PURE__*/ _jsx(ItemsContainerComponent, {\n        items: items,\n        textSize: textSize,\n        tooltipTitle: tooltipTitle,\n        withText: withText,\n        withTooltip: withTooltip,\n        wrap: wrap,\n        withDivider: false,\n        linkedAddIns: linkedAddIns,\n        linkedWebApps: linkedWebApps\n    });\n};\nexport default ProductsComponent;\n","function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nimport * as React from 'react';\nimport { logClientError } from '@shared/utils/appUtils';\nclass PureSpzaComponent extends React.PureComponent {\n    renderImpl() {\n        // should never be called\n        throw new Error('PureSpzaComponent renderImpl method should never be called!\\nMake sure you are implementing renderImpl in your Component');\n    }\n    renderFailImpl(err) {\n        // rendering must _never_ let an error escape. This puts react in a bad state and\n        // current versions (15.x) cannot deal with that.\n        logClientError(err, 'client side error: [From pureSpzaComponent] ');\n        // no longer we render the error modal from here the main client hook up handles all errors.\n        throw err;\n    }\n    render() {\n        try {\n            return this.renderImpl();\n        } catch (err) {\n            return this.renderFailImpl(err);\n        }\n    }\n    constructor(...args){\n        super(...args), _define_property(this, \"context\", void 0);\n    }\n}\nexport { PureSpzaComponent as default };\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport React from 'react';\nimport { Text, Icon, Label } from '@fluentui/react';\nimport classNames from 'classnames';\nimport { NeutralColors } from '@fluentui/theme';\nexport const RatingsInfo = ({ avgRating, ratingsCount, key, title, context, textSize, starClass, ratingClass })=>{\n    const styles = {\n        root: [\n            'detailsRatingStar',\n            textSize ? {\n                fontSize: 13,\n                margin: '0 4px 0 0'\n            } : {\n                fontSize: 16,\n                margin: '0 4px 3px 0'\n            },\n            !ratingsCount && {\n                color: NeutralColors.gray90\n            }\n        ]\n    };\n    return /*#__PURE__*/ _jsxs(\"div\", {\n        className: \"ratingInfoSection\",\n        children: [\n            /*#__PURE__*/ _jsx(Icon, {\n                iconName: ratingsCount ? 'FavoriteStarFill' : 'FavoriteStar',\n                title: title || context.loc('RatingSummary_Title', 'Marketplace ratings'),\n                styles: styles\n            }),\n            /*#__PURE__*/ _jsx(Label, {\n                className: classNames([\n                    starClass || 'detailsRatingAvgNumOfStars'\n                ]),\n                children: avgRating.toFixed(1)\n            }),\n            /*#__PURE__*/ _jsxs(Text, {\n                className: classNames([\n                    ratingClass || 'detailsRatingNumOfRatingText'\n                ]),\n                variant: textSize || 'medium',\n                children: [\n                    \"(\",\n                    ratingsCount,\n                    \" \",\n                    title,\n                    \")\"\n                ]\n            })\n        ]\n    }, `${key}DetailsRating`);\n};\n","function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nfunction _object_spread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        var ownKeys = Object.keys(source);\n        if (typeof Object.getOwnPropertySymbols === \"function\") {\n            ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n            }));\n        }\n        ownKeys.forEach(function(key) {\n            _define_property(target, key, source[key]);\n        });\n    }\n    return target;\n}\nfunction ownKeys(object, enumerableOnly) {\n    var keys = Object.keys(object);\n    if (Object.getOwnPropertySymbols) {\n        var symbols = Object.getOwnPropertySymbols(object);\n        if (enumerableOnly) {\n            symbols = symbols.filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n            });\n        }\n        keys.push.apply(keys, symbols);\n    }\n    return keys;\n}\nfunction _object_spread_props(target, source) {\n    source = source != null ? source : {};\n    if (Object.getOwnPropertyDescriptors) {\n        Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n        ownKeys(Object(source)).forEach(function(key) {\n            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n    }\n    return target;\n}\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { ScreenWidthMinLarge, ScreenWidthMinXLarge, ScreenWidthMinXXLarge, Text, mergeStyleSets } from '@fluentui/react';\nimport Slider from 'react-slick';\nimport SpzaComponent from './spzaComponent';\nimport { urlPush } from 'routerHistory';\nimport { InternalLink } from './internalLink';\nimport { getNpsModule } from '@appsource/utils/nps';\nimport classNames from 'classnames';\nimport { TelemetryImage } from '@shared/components/telemetryImage';\nconst contentStyles = mergeStyleSets({\n    ribbonHeaderImage: {\n        verticalAlign: 'top',\n        display: 'inline-block',\n        marginLeft: '8px'\n    }\n});\nfunction CrouselNextArrow(props) {\n    const { onClick } = props;\n    return /*#__PURE__*/ _jsx(\"button\", {\n        className: classNames({\n            crouselArrow: true,\n            crouselArrowRight: true,\n            'icon-arrow-right-32': true\n        }),\n        onClick: onClick,\n        \"aria-label\": \"Next page\"\n    });\n}\nfunction CrouselPrevArrow(props) {\n    const { onClick } = props;\n    return /*#__PURE__*/ _jsx(\"button\", {\n        className: classNames({\n            crouselArrow: true,\n            crouselArrowLeft: true,\n            'icon-arrow-left-32': true\n        }),\n        onClick: onClick,\n        \"aria-label\": \"Previous page\"\n    });\n}\nclass Ribbon extends SpzaComponent {\n    componentDidMount() {\n        window.addEventListener('resize', this.hideAriaHiddenTiles);\n    }\n    componentWillUnmount() {\n        window.removeEventListener('resize', this.hideAriaHiddenTiles);\n    }\n    componentDidUpdate() {\n        this.hideAriaHiddenTiles();\n    }\n    hideAriaHiddenTiles() {\n        // Fix https://github.com/akiran/react-slick/issues/1535\n        Array.from(document.querySelectorAll('.slick-slide')).forEach((slide)=>{\n            var _slide_classList;\n            if ((_slide_classList = slide.classList) === null || _slide_classList === void 0 ? void 0 : _slide_classList.contains('slick-active')) {\n                slide.style.visibility = 'visible';\n            } else {\n                slide.style.visibility = 'hidden';\n            }\n        });\n    }\n    visibleAriaHiddenTiles() {\n        Array.from(document.querySelectorAll('.slick-slide')).forEach((slide)=>{\n            slide.style.visibility = 'visible';\n        });\n    }\n    onRibbonButtonClick() {\n        var _getNpsModule;\n        if (this.props.onClick) {\n            this.props.onClick();\n        } else {\n            urlPush(this.props.seeMoreUrl, true);\n        }\n        (_getNpsModule = getNpsModule()) === null || _getNpsModule === void 0 ? void 0 : _getNpsModule.increaseActionsCounter('seeAllActionsCount');\n    }\n    renderRibbonButton() {\n        return this.props.seeMoreUrl && /*#__PURE__*/ _jsxs(InternalLink, {\n            onClick: ()=>this.onRibbonButtonClick(),\n            className: \"ribbonHeaderButton\",\n            href: this.props.seeMoreUrl,\n            accEnabled: true,\n            \"aria-label\": `see all for ${this.props.title}`,\n            children: [\n                this.props.seeMoreText,\n                this.props.isSeeMoreButton && /*#__PURE__*/ _jsx(Text, {\n                    variant: \"medium\",\n                    className: \"c-glyph\"\n                })\n            ]\n        });\n    }\n    renderCarouselTiles() {\n        const { children } = this.props;\n        const childrenCount = React.Children.count(children);\n        const settings = {\n            speed: 500,\n            slidesToShow: 4,\n            // Critical for dealing with a bug in react-slick which caused to double elements when infinite is true and slidesToShow is less than children count - https://github.com/akiran/react-slick/issues/1171\n            infinite: childrenCount > 4,\n            slidesToScroll: 1,\n            swipeToSlide: false,\n            responsive: [\n                {\n                    breakpoint: ScreenWidthMinXXLarge,\n                    settings: {\n                        slidesToShow: 3,\n                        infinite: childrenCount > 3\n                    }\n                },\n                {\n                    breakpoint: ScreenWidthMinXLarge,\n                    settings: {\n                        slidesToShow: 2,\n                        infinite: childrenCount > 2\n                    }\n                },\n                {\n                    breakpoint: ScreenWidthMinLarge,\n                    settings: {\n                        slidesToShow: 1,\n                        infinite: childrenCount > 1\n                    }\n                }\n            ],\n            nextArrow: /*#__PURE__*/ _jsx(CrouselNextArrow, {}),\n            prevArrow: /*#__PURE__*/ _jsx(CrouselPrevArrow, {}),\n            beforeChange: ()=>this.visibleAriaHiddenTiles(),\n            afterChange: ()=>this.hideAriaHiddenTiles()\n        };\n        return /*#__PURE__*/ _jsx(\"div\", {\n            className: \"ribbonSlider\",\n            children: /*#__PURE__*/ _jsx(Slider, _object_spread_props(_object_spread({}, settings), {\n                children: this.props.children\n            }))\n        });\n    }\n    renderTiles() {\n        return /*#__PURE__*/ _jsx(\"div\", {\n            className: \"ribbonTiles\",\n            children: this.props.carousel ? this.renderCarouselTiles() : this.props.children\n        });\n    }\n    renderHeader() {\n        const { imgSource, title, subHeader } = this.props;\n        return title ? /*#__PURE__*/ _jsxs(\"div\", {\n            className: \"ribbonHeaderContainer\",\n            children: [\n                /*#__PURE__*/ _jsxs(\"div\", {\n                    className: \"ribbonHeader\",\n                    children: [\n                        /*#__PURE__*/ _jsx(Text, {\n                            variant: \"large\",\n                            className: \"ribbonHeaderText\",\n                            as: 'h2',\n                            children: title\n                        }),\n                        this.renderRibbonButton(),\n                        imgSource && /*#__PURE__*/ _jsx(TelemetryImage, {\n                            className: contentStyles.ribbonHeaderImage,\n                            src: imgSource\n                        })\n                    ]\n                }),\n                subHeader ? /*#__PURE__*/ _jsx(\"div\", {\n                    className: \"ribbonSubHeader\",\n                    children: subHeader\n                }) : null\n            ]\n        }) : null;\n    }\n    renderImpl() {\n        return /*#__PURE__*/ _jsxs(\"div\", {\n            className: 'ribbon',\n            \"aria-label\": `${this.props.title} swimlane`,\n            role: \"banner\",\n            children: [\n                this.renderHeader(),\n                this.renderTiles()\n            ]\n        });\n    }\n    constructor(...args){\n        super(...args), _define_property(this, \"context\", void 0);\n    }\n}\nexport { Ribbon as default };\nRibbon.contextTypes = {\n    renderErrorModal: PropTypes.func\n};\n","import { deepEqual, isArray } from './objectUtils';\nimport { Constants } from './constants';\n/**\n * get option index\n *\n *  get option index by comparing with option to-find by value, instead of reference\n *\n *  NOTE:\n *      Always use this function to get option index,\n *      finds a match by comparing two options are deep equal\n *\n * @param options: array of options\n * @param optionToFind: option to find in array of options\n */ export function getOptionIndex(options, optionToFind) {\n    let optionIndex = -1;\n    if (!isArray(options) || !optionToFind) {\n        return optionIndex;\n    }\n    options.some((option, index)=>{\n        const match = deepEqual(option, optionToFind);\n        if (match) {\n            optionIndex = index;\n        }\n        return match;\n    });\n    return optionIndex;\n}\n// for search input\nexport function getFilteredOptions(options, optionToFind) {\n    let res = options;\n    if (optionToFind.length) {\n        res = res.filter((o)=>o.text.toLowerCase().indexOf(optionToFind.toLowerCase()) !== -1);\n    }\n    return res;\n}\nexport function getContainerClassName(className) {\n    return `c-select-menu richTextDropDown outline-focus ${className || ''}`;\n}\nexport function getContainerAriaLabel(dropdownLabel) {\n    return dropdownLabel || '';\n}\nexport const CONTAINER_ROLE = 'button';\nexport function getOptionClassName(option, highLightOption) {\n    const highlightClassName = isOptionSelected(option, highLightOption) ? 'highlight' : '';\n    return `c-menu-item ${highlightClassName}`;\n}\nexport function isOptionSelected(option, highLightOption) {\n    return deepEqual(highLightOption, option, true);\n}\nexport function isHoverEvent(eventType) {\n    return eventType === Constants.EventType.MouseEnter || eventType === Constants.EventType.MouseLeave || eventType === Constants.EventType.ReactMouseEnter || eventType === Constants.EventType.ReactMouseLeave;\n}\n","function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { SearchBox } from '@fluentui/react';\nimport SpzaComponent from './spzaComponent';\nimport { Constants } from './../utils/constants';\nimport { deepEqual } from './../utils/objectUtils';\nimport { getOptionIndex, getContainerAriaLabel, getContainerClassName, getOptionClassName, CONTAINER_ROLE, isHoverEvent, getFilteredOptions, isOptionSelected } from './../utils/richTextDropDownUtils';\nimport classNames from 'classnames';\nexport class RichTextDropDown extends SpzaComponent {\n    renderValueMethod(item) {\n        if (this.props.renderValueHandle) {\n            return this.props.renderValueHandle(item);\n        }\n        return /*#__PURE__*/ _jsx(\"div\", {\n            className: \"item\",\n            children: /*#__PURE__*/ _jsx(\"span\", {\n                className: \"text-item\",\n                children: item.text\n            })\n        });\n    }\n    renderOptionMethod(item) {\n        if (this.props.renderOptionHandle) {\n            return this.props.renderOptionHandle(item);\n        }\n        if (this.isSearchEnabled() && this.state.searchValue.length) {\n            const searchValue = this.state.searchValue;\n            const countryName = item.text;\n            const start = countryName.toLowerCase().indexOf(searchValue.toLowerCase());\n            const end = start + searchValue.length - 1;\n            return /*#__PURE__*/ _jsxs(\"div\", {\n                className: \"item\",\n                children: [\n                    countryName.substr(0, start),\n                    /*#__PURE__*/ _jsx(\"b\", {\n                        className: \"item-search\",\n                        children: countryName.substr(start, end - start + 1)\n                    }),\n                    countryName.substr(end + 1)\n                ]\n            });\n        }\n        return /*#__PURE__*/ _jsx(\"div\", {\n            className: \"item\",\n            children: item.text\n        });\n    }\n    UNSAFE_componentWillReceiveProps(nextProps) {\n        if (!deepEqual(this.props.options, nextProps.options) || !deepEqual(this.props.value, nextProps.value)) {\n            this.setState({\n                value: nextProps.value\n            });\n        }\n    }\n    openDropDown(eventType) {\n        var _this_dropdownElement;\n        (_this_dropdownElement = this.dropdownElement) === null || _this_dropdownElement === void 0 ? void 0 : _this_dropdownElement.classList.remove('outline-focus');\n        if (this.shouldSkipEventHandle(eventType)) {\n            return;\n        }\n        this.setState({\n            isOpen: true\n        }, ()=>{\n            if (this.isHoverEnabled()) {\n                var _this_dropdownElement;\n                (_this_dropdownElement = this.dropdownElement) === null || _this_dropdownElement === void 0 ? void 0 : _this_dropdownElement.focus();\n            }\n            if (this.isSearchEnabled() && this.searchBoxElement) {\n                this.searchBoxElement.focus();\n            }\n        });\n        if (this.state.value) {\n            this.setState({\n                highLightOption: this.state.value\n            });\n        }\n        // reset to true everytime dropdown opens\n        this.shouldCloseOnBlur = true;\n    }\n    closeDropDown(eventType) {\n        var _this_dropdownElement;\n        if (this.shouldSkipEventHandle(eventType)) {\n            return;\n        }\n        (_this_dropdownElement = this.dropdownElement) === null || _this_dropdownElement === void 0 ? void 0 : _this_dropdownElement.setAttribute('aria-expanded', 'false');\n        this.setState({\n            isOpen: false,\n            searchValue: ''\n        });\n        this.removeTabIndex();\n        this.lastFocusableIndex = -1;\n        this.lastFocusableGroupIndex = -1;\n        // reset to true everytime dropdown closes\n        this.shouldCloseOnBlur = true;\n    }\n    onBlur(eventType, event) {\n        var _this_dropdownElement;\n        (_this_dropdownElement = this.dropdownElement) === null || _this_dropdownElement === void 0 ? void 0 : _this_dropdownElement.classList.add('outline-focus');\n        // after change onMouseDown to onClick for menu item need not to close dropdown.\n        // header menu items have tabindex and this onBlur method fires before item onClick handler\n        if (this.isHoverEnabled() || this.isEventOnSearch(event)) {\n            return;\n        }\n        if (this.shouldCloseOnBlur) {\n            this.closeDropDown(eventType);\n            if (this.props.onBlurHandle) {\n                this.props.onBlurHandle();\n            }\n        }\n        // reset to true everytime dropdown loses focues\n        this.shouldCloseOnBlur = true;\n    }\n    isHoverEnabled() {\n        return this.props.hoverEnabled && this.userInteractionType === Constants.UserInteractionType.Mouse || !this.props.isDisabled;\n    }\n    isSearchEnabled() {\n        return (this.props.searchEnabled || false) && !this.props.isDisabled;\n    }\n    isEventOnSearch(event) {\n        if (event.type === Constants.EventType.Click) {\n            return this.isSearchEnabled() && event.target.tagName === Constants.HTMLElements.INPUT;\n        } else if (event.type === Constants.EventType.Blur) {\n            return this.isSearchEnabled() && event.currentTarget.contains(event.relatedTarget) && (event.relatedTarget.tagName === Constants.HTMLElements.INPUT || Constants.HTMLElements.BUTTON);\n        } else {\n            return false;\n        }\n    }\n    shouldSkipEventHandle(eventType) {\n        return isHoverEvent(eventType) && !this.isHoverEnabled();\n    }\n    removeTabIndex() {\n        if (this.lastFocusableIndex !== -1 && this.lastFocusableGroupIndex !== -1) {\n            const previousMenu = document.getElementsByClassName('richTextDropDown')[this.lastFocusableGroupIndex];\n            if (previousMenu) {\n                const previousMenuItem = previousMenu.getElementsByClassName('c-menu-item')[this.lastFocusableIndex];\n                if (previousMenuItem) {\n                    previousMenuItem.removeAttribute('tabIndex');\n                }\n            }\n        }\n    }\n    resetFocus(targetIndex) {\n        this.removeTabIndex();\n        const richMenus = document.getElementsByClassName('richTextDropDown');\n        if (richMenus) {\n            for(let i = 0; i < richMenus.length; i++){\n                if (richMenus[`${i}`].getAttribute('aria-expanded') === 'true') {\n                    this.lastFocusableGroupIndex = i;\n                    break;\n                }\n            }\n        }\n        this.lastFocusableIndex = targetIndex;\n        const currentMenu = document.getElementsByClassName('richTextDropDown')[this.lastFocusableGroupIndex];\n        if (currentMenu) {\n            const currentMenuItem = currentMenu.getElementsByClassName('c-menu-item')[`${targetIndex}`];\n            if (currentMenuItem) {\n                currentMenuItem.setAttribute('tabIndex', '0');\n                currentMenuItem.focus();\n            }\n        }\n    }\n    onKeyDown(event, eventType) {\n        let isEventDefaultEnabled = false;\n        const options = this.props.options;\n        const optionLength = this.props.options.length;\n        if (this.props.isDisabled) return;\n        switch(event.keyCode){\n            case Constants.SystemKey.Up:\n                if (event.altKey) {\n                    this.toggleOpen(eventType);\n                } else {\n                    if (!this.state.isOpen) {\n                        let index = getOptionIndex(options, this.state.value);\n                        index = index >= 0 ? index : 0;\n                        const prevItemIndex = (index - 1 + optionLength) % optionLength;\n                        const value = options[`${prevItemIndex}`];\n                        this.setState({\n                            value: value\n                        });\n                        this.props.onChangeHandle(value, options);\n                    } else {\n                        this.shouldCloseOnBlur = false;\n                        if (!this.state.highLightOption) {\n                            this.setState({\n                                highLightOption: options[optionLength - 1]\n                            });\n                        } else {\n                            const itemIndex = getOptionIndex(options, this.state.highLightOption);\n                            const prevItemIndex = (itemIndex - 1 + optionLength) % optionLength;\n                            this.setState({\n                                highLightOption: options[`${prevItemIndex}`]\n                            });\n                            this.resetFocus(prevItemIndex);\n                        }\n                    }\n                }\n                break;\n            case Constants.SystemKey.Down:\n                if (event.altKey) {\n                    this.toggleOpen(eventType);\n                } else {\n                    if (!this.state.isOpen) {\n                        let index = getOptionIndex(options, this.state.value);\n                        index = index >= 0 ? index : 0;\n                        const nextItemIndex = (index + 1) % optionLength;\n                        const value = options[`${nextItemIndex}`];\n                        this.setState({\n                            value: value\n                        });\n                        this.props.onChangeHandle(value, options);\n                    } else {\n                        this.shouldCloseOnBlur = false;\n                        if (!this.state.highLightOption) {\n                            this.setState({\n                                highLightOption: options[0]\n                            });\n                        } else {\n                            const itemIndex = getOptionIndex(options, this.state.highLightOption);\n                            const nextItemIndex = (itemIndex + 1) % optionLength;\n                            this.setState({\n                                highLightOption: options[`${nextItemIndex}`]\n                            });\n                            this.resetFocus(nextItemIndex);\n                        }\n                    }\n                }\n                break;\n            case Constants.SystemKey.Enter:\n            case Constants.SystemKey.Space:\n                this.toggleOpen(eventType);\n                break;\n            case Constants.SystemKey.Esc:\n                var _this_dropdownElement;\n                (_this_dropdownElement = this.dropdownElement) === null || _this_dropdownElement === void 0 ? void 0 : _this_dropdownElement.focus();\n                this.closeDropDown(eventType);\n                break;\n            case Constants.SystemKey.Tab:\n                var _this_dropdownElement1;\n                isEventDefaultEnabled = true;\n                (_this_dropdownElement1 = this.dropdownElement) === null || _this_dropdownElement1 === void 0 ? void 0 : _this_dropdownElement1.focus();\n                this.closeDropDown(eventType);\n                break;\n        }\n        if (!isEventDefaultEnabled && !this.isSearchEnabled()) {\n            event.preventDefault();\n        }\n    }\n    onDropdownClicked(eventType, event) {\n        if (this.state.isOpen && !this.isEventOnSearch(event)) {\n            this.closeDropDown(eventType);\n        } else if (!this.props.isDisabled) {\n            this.openDropDown(eventType);\n        }\n        if (eventType === Constants.EventType.Click) {\n            this.userInteractionType = Constants.UserInteractionType.Mouse;\n        }\n    }\n    onOptionClicked(option, eventType) {\n        this.setState({\n            value: option\n        });\n        this.props.onChangeHandle(option, this.props.options);\n        this.closeDropDown(eventType);\n    }\n    toggleOpen(eventType) {\n        if (!this.state.isOpen) {\n            this.openDropDown(eventType);\n        } else {\n            var _this_dropdownElement;\n            if (this.state.highLightOption) {\n                this.onOptionClicked(this.state.highLightOption, eventType);\n            }\n            (_this_dropdownElement = this.dropdownElement) === null || _this_dropdownElement === void 0 ? void 0 : _this_dropdownElement.focus();\n            this.closeDropDown(eventType);\n        }\n    }\n    sortOptions(options) {\n        const sortedOptions = options.sort((a, b)=>{\n            const titleA = a.title.toUpperCase();\n            const titleB = b.title.toUpperCase();\n            return titleA < titleB ? 1 : titleA > titleB ? -1 : 0;\n        });\n        return sortedOptions;\n    }\n    renderImpl() {\n        const labelPrefix = this.props.dropdownLabel || (this.dropdownElement && this.dropdownElement.innerText ? this.dropdownElement.innerText.split('\\n')[0].trim() : '');\n        let options = !this.isSearchEnabled() ? this.props.options : getFilteredOptions(this.props.options, this.state.searchValue);\n        options = this.props.isSorted ? this.sortOptions(options) : options;\n        const dropdownClass = classNames({\n            [getContainerClassName(this.props.className)]: true,\n            disabledDropdown: this.props.isDisabled\n        });\n        const selectedOption = this.state.value ? this.state.value.text + ' selected' : this.context.loc('Menu_Aria_Label', 'Menu');\n        return /*#__PURE__*/ _jsxs(\"div\", {\n            className: dropdownClass,\n            onBlur: (event)=>this.onBlur(event.type, event),\n            onTouchStart: ()=>this.userInteractionType = Constants.UserInteractionType.Touch,\n            onClick: (event)=>this.onDropdownClicked(event.type, event),\n            onMouseEnter: (event)=>this.openDropDown(event.type),\n            onMouseLeave: (event)=>this.closeDropDown(event.type),\n            onKeyDown: (event)=>this.onKeyDown(event, event.type),\n            suppressContentEditableWarning: true,\n            tabIndex: 0,\n            \"aria-expanded\": this.state.isOpen,\n            \"aria-label\": getContainerAriaLabel(labelPrefix) + ' ' + selectedOption,\n            ref: (element)=>this.dropdownElement = element,\n            role: CONTAINER_ROLE,\n            \"aria-haspopup\": \"listbox\",\n            children: [\n                !this.state.isOpen || this.state.isOpen && !this.isSearchEnabled() ? /*#__PURE__*/ _jsxs(\"a\", {\n                    className: \"valueBox\",\n                    \"aria-hidden\": true,\n                    children: [\n                        this.renderValueMethod(this.state.value),\n                        /*#__PURE__*/ _jsx(\"div\", {\n                            className: \"toggle\",\n                            \"aria-hidden\": true,\n                            children: /*#__PURE__*/ _jsx(\"span\", {\n                                className: \"c-glyph\"\n                            })\n                        })\n                    ]\n                }) : /*#__PURE__*/ _jsx(SearchBox, {\n                    placeholder: this.context.loc('Search_Placeholder'),\n                    value: this.state.searchValue,\n                    onEscape: (event)=>this.closeDropDown(event.type),\n                    onClear: ()=>{\n                        this.setState({\n                            searchValue: ''\n                        });\n                    },\n                    onChange: (event, newValue)=>this.setState({\n                            searchValue: newValue\n                        }),\n                    onSearch: (newValue)=>this.setState({\n                            searchValue: newValue\n                        }),\n                    disableAnimation: true,\n                    disabled: this.props.isDisabled,\n                    componentRef: (element)=>this.searchBoxElement = element\n                }),\n                this.state.isOpen && /*#__PURE__*/ _jsx(\"ul\", {\n                    className: \"c-menu\",\n                    role: \"listbox\",\n                    children: options.map((option, index)=>/*#__PURE__*/ _jsxs(\"li\", {\n                            role: \"option\",\n                            className: getOptionClassName(option, this.state.highLightOption),\n                            onClick: (event)=>this.onOptionClicked(option, event.type),\n                            onTouchEnd: (event)=>this.onOptionClicked(option, event.type),\n                            onMouseEnter: ()=>this.setState({\n                                    highLightOption: option\n                                }),\n                            \"aria-selected\": isOptionSelected(option, this.state.highLightOption),\n                            children: [\n                                /*#__PURE__*/ _jsx(\"div\", {\n                                    className: \"value\",\n                                    children: this.renderOptionMethod(option)\n                                }),\n                                /*#__PURE__*/ _jsx(\"div\", {\n                                    className: \"placeholder\"\n                                })\n                            ]\n                        }, index))\n                })\n            ]\n        });\n    }\n    constructor(props, context){\n        super(props, context), _define_property(this, \"context\", void 0), _define_property(this, \"dropdownElement\", void 0), _define_property(this, \"searchBoxElement\", void 0), _define_property(this, \"lastFocusableIndex\", -1), _define_property(this, \"lastFocusableGroupIndex\", -1), _define_property(this, \"shouldCloseOnBlur\", void 0), _define_property(this, \"userInteractionType\", Constants.UserInteractionType.Mouse);\n        this.state = {\n            value: this.props.value,\n            searchValue: ''\n        };\n        this.renderValueMethod = this.renderValueMethod.bind(this);\n        this.renderOptionMethod = this.renderOptionMethod.bind(this);\n    }\n}\nRichTextDropDown.contextTypes = {\n    loc: PropTypes.func,\n    renderErrorModal: PropTypes.func\n};\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport DOMPurify from 'dompurify';\nimport React, { useMemo } from 'react';\nimport { JSDOM } from 'jsdom';\nlet DOMPurifyServer;\nif (!__CLIENT__) {\n    const { window } = new JSDOM('');\n    DOMPurifyServer = DOMPurify(window);\n}\nexport const SafeHtmlWrapper = ({ html, className })=>{\n    const sanitize = __CLIENT__ ? DOMPurify.sanitize : DOMPurifyServer.sanitize;\n    const sanitizedHtml = useMemo(()=>sanitize(html, {\n            ADD_ATTR: [\n                'target'\n            ]\n        }), [\n        html\n    ]);\n    // eslint-disable-next-line react/no-danger\n    return /*#__PURE__*/ _jsx(\"div\", {\n        className: className,\n        dangerouslySetInnerHTML: {\n            __html: sanitizedHtml\n        }\n    });\n};\n","import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from \"react/jsx-runtime\";\nimport React, { useState } from 'react';\nimport * as PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { useLocation, useNavigate } from 'react-router-dom';\nimport { Dropdown, mergeStyleSets } from '@fluentui/react';\nimport { Constants } from '@shared/utils/constants';\nimport { SpzaInstrumentService } from '@shared/services/telemetry/spza/spzaInstrument';\nimport { windowScrollToTop } from '@shared/utils/filterHelpers';\nimport { logger } from '@src/logger';\nimport { BusinessTelemetry } from '@shared/utils/businessConstants';\nimport sortByImage from '@shared/images/sortByIcon.svg';\nconst DataBi = BusinessTelemetry.dataBi;\nconst $backgroundColor = '#ffffff';\nconst $primaryText = '#323130';\nconst contentStyles = mergeStyleSets({\n    dropdownWidth: {\n        minWidth: '150px'\n    },\n    SearchSortBy: {\n        display: 'flex',\n        fontSize: '14px',\n        lineHeight: '20px',\n        marginTop: 'auto',\n        paddingBottom: '4px',\n        '& .spza-sub-filter-dropdown': {\n            '& .valueBox': {\n                outline: 'none',\n                width: 'max-content',\n                border: 'none',\n                '& .item': {\n                    padding: '3px 7px 3px 3px'\n                },\n                '.item > span': {\n                    width: 'max-content'\n                },\n                '.toggle': {\n                    width: '24px'\n                }\n            }\n        }\n    },\n    sortByIconAndText: {\n        color: {\n            $primaryText\n        },\n        margin: '0px 5px 0px 0px',\n        backgroundSize: '16px 16px',\n        padding: '5px 0px 0px 24px',\n        backgroundRepeat: 'no-repeat',\n        backgroundPosition: 'left',\n        backgroundColor: {\n            $backgroundColor\n        },\n        backgroundImage: `url(${sortByImage})`,\n        '& .ms-Dropdown:not(.is-open)': {\n            '& .ms-Dropdown-title': {\n                borderWidth: '0px'\n            }\n        }\n    }\n});\nexport const SortingDropdown = ({ defaultKey, route, hide }, context)=>{\n    const [isOpen, setIsOpen] = useState(false);\n    const [searchByKey, setSearchByKey] = useState(defaultKey);\n    const isSortingSupported = route.name !== Constants.Views.cloudsIndustryGallery;\n    const location = useLocation();\n    const navigate = useNavigate();\n    const getSortingOptions = ()=>{\n        let options = [\n            {\n                text: context.loc('AppsGlobalFilters_SearchSortingOptions_BestMatch', 'Best match'),\n                key: Constants.SearchSortingOption.BestMatch\n            },\n            {\n                text: context.loc('AppsGlobalFilters_SearchSortingOptions_Popularity', 'Most viewed'),\n                key: Constants.SearchSortingOption.Popularity\n            }\n        ];\n        const areNewSortsSupported = route.name === Constants.Views.appGallery;\n        if (areNewSortsSupported) {\n            options = [\n                ...options,\n                {\n                    text: context.loc('AppsGlobalFilters_SearchSortingOptions_Rating', 'Average rating'),\n                    key: Constants.SearchSortingOption.RatingAverage\n                },\n                {\n                    text: context.loc('AppsGlobalFilters_SearchSortingOptions_LastUpdated', 'Recent version update '),\n                    key: Constants.SearchSortingOption.RecentlyUpdated\n                }\n            ];\n        }\n        return options;\n    };\n    const options = getSortingOptions();\n    const onSortingChangeHandle = (option)=>{\n        const payload = {\n            page: location.pathname,\n            action: Constants.Telemetry.Action.Click,\n            actionModifier: Constants.Telemetry.ActionModifier.SortSearchResults,\n            details: option.key\n        };\n        SpzaInstrumentService.getProvider().probe(Constants.Telemetry.ProbeName.LogInfo, payload);\n        logger.info(payload.details, payload);\n        const sortingLink = context.buildHref(route, null, {\n            sortBy: option.key === Constants.SearchSortingOption.BestMatch ? null : option.key\n        });\n        // Set the state for display to update immediately (testability)\n        setSearchByKey(option.key);\n        // Navigate to the URL for functionality\n        navigate(sortingLink);\n    };\n    const onSortingClickHandle = ()=>{\n        const payload = {\n            page: location.pathname,\n            action: Constants.Telemetry.Action.Click,\n            actionModifier: Constants.Telemetry.ActionModifier.SortSearchOpened\n        };\n        SpzaInstrumentService.getProvider().probe(Constants.Telemetry.ProbeName.LogInfo, payload);\n        logger.info('', payload);\n        if (!isOpen) {\n            setIsOpen((isOpen)=>!isOpen);\n        }\n    };\n    const detectKeyboardClick = ({ event: { key } })=>{\n        const currentOptionsIndex = options.findIndex((option)=>option.key === searchByKey);\n        if (key === Constants.SystemKeyAsString.Enter || key === Constants.SystemKeyAsString.Space) {\n            onSortingChangeHandle(options[`${currentOptionsIndex}`]);\n        }\n        if (key === Constants.SystemKeyAsString.ArrowUp) {\n            const nextIdx = currentOptionsIndex - 1 <= 0 ? 0 : currentOptionsIndex - 1;\n            setSearchByKey(options[`${nextIdx}`].key);\n        }\n        if (key === Constants.SystemKeyAsString.ArrowDown) {\n            const nextIdx = currentOptionsIndex + 1 >= options.length ? options.length : currentOptionsIndex + 1;\n            setSearchByKey(options[`${nextIdx}`].key);\n        }\n    };\n    const onDropdownChange = ({ option })=>{\n        onSortingChangeHandle(option);\n        windowScrollToTop();\n    };\n    const activeSortByOption = options.filter((option)=>option.key === searchByKey)[0] || options[0];\n    const sortingDropdownClass = classNames({\n        [contentStyles.dropdownWidth]: isOpen\n    });\n    return /*#__PURE__*/ _jsx(_Fragment, {\n        children: !hide && isSortingSupported && /*#__PURE__*/ _jsxs(\"div\", {\n            className: contentStyles.SearchSortBy,\n            children: [\n                /*#__PURE__*/ _jsx(\"div\", {\n                    className: contentStyles.sortByIconAndText,\n                    children: context.loc('AppsGlobalFilters_SearchSortingOptions_Title', 'Sort By:')\n                }),\n                /*#__PURE__*/ _jsx(Dropdown, {\n                    \"data-bi-id\": DataBi.sortingDropdownId,\n                    \"data-bi-name\": DataBi.sortingDropdownName,\n                    selectedKey: activeSortByOption.key,\n                    options: options,\n                    onKeyDown: (event)=>detectKeyboardClick({\n                            event\n                        }),\n                    ariaLabel: context.loc('AppsGlobalFilters_SearchSortingOptions_AriaLabel', 'Sort by'),\n                    className: sortingDropdownClass,\n                    onChange: (_, option)=>onDropdownChange({\n                            option\n                        }),\n                    onClick: onSortingClickHandle,\n                    onDismiss: ()=>{\n                        setIsOpen((isOpen)=>!isOpen);\n                    },\n                    selectedKeys: [\n                        activeSortByOption.key.toString()\n                    ]\n                })\n            ]\n        })\n    });\n};\nSortingDropdown.contextTypes = {\n    loc: PropTypes.func,\n    buildHref: PropTypes.func\n};\n","function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nimport * as React from 'react';\nimport { logClientError } from '../utils/appUtils';\nclass SpzaComponent extends React.Component {\n    renderImpl() {\n        // should never be called\n        throw new Error('SpzaComponent renderImpl method should never be called!\\nMake sure you are implementing renderImpl in your Component');\n    }\n    renderFailImpl(err) {\n        // rendering must _never_ let an error escape. This puts react in a bad state and\n        // current versions (15.x) cannot deal with that.\n        logClientError(err, 'client side error: [From spzaComponent] ');\n        // no longer we render the error modal from here the main client hook up handles all errors.\n        throw err;\n    }\n    render() {\n        try {\n            return this.renderImpl();\n        } catch (err) {\n            return this.renderFailImpl(err);\n        }\n    }\n    constructor(...args){\n        super(...args), _define_property(this, \"context\", void 0);\n    }\n}\nexport { SpzaComponent as default };\n","function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport SpzaComponent from './spzaComponent';\n// eslint-disable-next-line import/named\nimport { Text } from '@fluentui/react';\nimport * as React from 'react';\nimport { Tab, Tabs } from './tabs';\nexport class StickyCard extends SpzaComponent {\n    static handleScroll(curWindow, appearUnderElementId) {\n        const elementToAppearAfter = document.getElementById(appearUnderElementId);\n        if (curWindow && elementToAppearAfter && elementToAppearAfter.offsetTop) {\n            const tabsYOffset = elementToAppearAfter.offsetTop + 43;\n            if (curWindow.pageYOffset > tabsYOffset) {\n                return true;\n            }\n            return false;\n        }\n    }\n    renderImpl() {\n        const titleStyles = {\n            root: {\n                marginLeft: 8,\n                fontWeight: 600,\n                lineHeight: 20\n            }\n        };\n        return /*#__PURE__*/ _jsx(\"div\", {\n            className: \"stickyCard\",\n            children: /*#__PURE__*/ _jsxs(\"div\", {\n                className: \"stickyCardContainer\",\n                children: [\n                    /*#__PURE__*/ _jsx(\"div\", {\n                        className: \"stickyCardSubContainer\",\n                        children: /*#__PURE__*/ _jsxs(\"div\", {\n                            className: \"stickyCardLeft\",\n                            children: [\n                                /*#__PURE__*/ _jsxs(\"div\", {\n                                    className: \"stickCardPublisher\",\n                                    children: [\n                                        /*#__PURE__*/ _jsx(\"div\", {\n                                            className: \"stickyCardIcon\",\n                                            children: /*#__PURE__*/ _jsx(\"div\", {\n                                                children: /*#__PURE__*/ _jsx(\"img\", {\n                                                    className: \"StickyIconImg\",\n                                                    src: this.props.logoURL,\n                                                    alt: this.props.title + ' icon',\n                                                    onError: (e)=>e && e.target && e.target.style ? e.target.style.display = 'none' : null\n                                                })\n                                            })\n                                        }),\n                                        /*#__PURE__*/ _jsx(Text, {\n                                            variant: \"medium\",\n                                            block: true,\n                                            nowrap: true,\n                                            styles: titleStyles,\n                                            children: this.props.title\n                                        })\n                                    ]\n                                }),\n                                /*#__PURE__*/ _jsx(\"div\", {\n                                    className: \"stickyCardTabs\",\n                                    children: /*#__PURE__*/ _jsx(Tabs, {\n                                        defaultTab: this.props.tabsProps.defaultTab,\n                                        ownerType: this.props.tabsProps.ownerType,\n                                        ownerId: this.props.tabsProps.ownerId,\n                                        changeTabCallback: this.props.tabsProps.changeTabCallback,\n                                        getTabHref: this.props.tabsProps.getTabHref,\n                                        children: this.props.tabsChilds.map((tabChild, index)=>/*#__PURE__*/ _jsx(Tab, {\n                                                title: tabChild.title,\n                                                name: tabChild.name,\n                                                textBadge: tabChild.textBadge,\n                                                children: /*#__PURE__*/ _jsx(\"div\", {})\n                                            }, index))\n                                    })\n                                })\n                            ]\n                        })\n                    }),\n                    /*#__PURE__*/ _jsx(\"div\", {\n                        children: /*#__PURE__*/ _jsx(\"div\", {\n                            className: \"stickyCardRight\",\n                            children: /*#__PURE__*/ _jsx(\"div\", {\n                                className: \"stickyCardSubContainer\",\n                                children: this.props.children\n                            })\n                        })\n                    })\n                ]\n            })\n        });\n    }\n    constructor(...args){\n        super(...args), _define_property(this, \"context\", void 0);\n    }\n}\n","function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nfunction _object_spread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        var ownKeys = Object.keys(source);\n        if (typeof Object.getOwnPropertySymbols === \"function\") {\n            ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n            }));\n        }\n        ownKeys.forEach(function(key) {\n            _define_property(target, key, source[key]);\n        });\n    }\n    return target;\n}\nfunction ownKeys(object, enumerableOnly) {\n    var keys = Object.keys(object);\n    if (Object.getOwnPropertySymbols) {\n        var symbols = Object.getOwnPropertySymbols(object);\n        if (enumerableOnly) {\n            symbols = symbols.filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n            });\n        }\n        keys.push.apply(keys, symbols);\n    }\n    return keys;\n}\nfunction _object_spread_props(target, source) {\n    source = source != null ? source : {};\n    if (Object.getOwnPropertyDescriptors) {\n        Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n        ownKeys(Object(source)).forEach(function(key) {\n            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n    }\n    return target;\n}\nimport { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from \"react/jsx-runtime\";\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport SpzaComponent from './spzaComponent';\nimport * as DetailUtils from '@shared/utils/detailUtils';\nimport { Constants } from '@shared/utils/constants';\nimport { mergeStyles } from '@fluentui/react';\nimport classNames from 'classnames';\nimport { Link } from 'react-router-dom';\nexport const TAB_SELECTED = 'tabSelected';\nexport const DEFAULT_TAB = 'defaultTab';\nexport const SELECTED_TAB_QUERY = `.${DEFAULT_TAB}.${TAB_SELECTED}`;\nexport class Tab extends SpzaComponent {\n    renderImpl() {\n        return this.props.children;\n    }\n}\nconst tabsClass = mergeStyles({\n    display: 'flex',\n    flexWrap: 'wrap',\n    justifyContent: 'center'\n});\nexport var TabsTheme = /*#__PURE__*/ function(TabsTheme) {\n    TabsTheme[TabsTheme[\"gray\"] = 0] = \"gray\";\n    return TabsTheme;\n}({});\nexport class Tabs extends SpzaComponent {\n    changeTabWithName(e, name) {\n        e.preventDefault();\n        const detailsObject = {\n            tab: name\n        };\n        DetailUtils.generateClickPayloadAndLogTelemetry(this.props.ownerType, this.props.ownerId, Constants.Telemetry.ActionModifier.Tab, detailsObject);\n        this.props.changeTabCallback(name);\n    }\n    getCurrentTabIndex() {\n        const tabsList = this.getNonNullChildren();\n        const length = tabsList.length;\n        for(let index = 0; index < length; index++){\n            const tab = tabsList[`${index}`].valueOf();\n            if (tab.props.name === this.props.defaultTab) {\n                return index;\n            }\n        }\n        return 0;\n    }\n    getHeaderElement(currentTabIndex) {\n        const { getTabHref } = this.props;\n        return function(child, index) {\n            var _child_props;\n            const classes = classNames({\n                [TAB_SELECTED]: currentTabIndex === index,\n                [DEFAULT_TAB]: true\n            });\n            if (child === null || child === void 0 ? void 0 : (_child_props = child.props) === null || _child_props === void 0 ? void 0 : _child_props.children) {\n                const otherProps = child.props.otherProps || {};\n                const { name, title, textBadge } = child.props;\n                return /*#__PURE__*/ _jsx(Link, _object_spread_props(_object_spread({\n                    to: getTabHref(name),\n                    className: classes,\n                    role: \"tab\",\n                    \"aria-selected\": currentTabIndex === index,\n                    onClick: (e)=>{\n                        this.changeTabWithName(e, name);\n                    }\n                }, otherProps), {\n                    children: textBadge ? /*#__PURE__*/ _jsxs(\"label\", {\n                        children: [\n                            title,\n                            \" \",\n                            /*#__PURE__*/ _jsx(\"span\", {\n                                className: \"tabTextBadge\",\n                                children: textBadge\n                            })\n                        ]\n                    }) : /*#__PURE__*/ _jsx(\"label\", {\n                        children: title\n                    })\n                }), 'tab' + index);\n            } else {\n                return null;\n            }\n        };\n    }\n    getNonNullChildren() {\n        return React.Children.toArray(this.props.children);\n    }\n    // Returns the number of non-null children.\n    getNonNullChildrenCount() {\n        return this.getNonNullChildren().length;\n    }\n    shouldRenderHeader() {\n        return this.getNonNullChildrenCount() > 1;\n    }\n    renderHeaders(currentTabIndex) {\n        // we do not render a header if there's only one tab\n        if (!this.shouldRenderHeader()) {\n            return null;\n        } else {\n            const createHeaderElement = this.getHeaderElement(currentTabIndex);\n            const tabClass = classNames({\n                [tabsClass]: this.props.centerize\n            });\n            return /*#__PURE__*/ _jsx(\"div\", {\n                className: tabClass,\n                children: this.getNonNullChildren().map(createHeaderElement.bind(this))\n            });\n        }\n    }\n    renderImpl() {\n        const currentTabIndex = this.getCurrentTabIndex();\n        const tabContainerClass = 'tabContainer ' + (this.props.theme === 0 ? 'gray' : '');\n        return /*#__PURE__*/ _jsxs(_Fragment, {\n            children: [\n                /*#__PURE__*/ _jsx(\"div\", {\n                    className: tabContainerClass,\n                    role: \"tablist\",\n                    \"aria-busy\": \"true\",\n                    children: this.renderHeaders(currentTabIndex)\n                }),\n                /*#__PURE__*/ _jsx(\"div\", {\n                    className: \"tabContent\",\n                    children: this.getNonNullChildren()[`${currentTabIndex}`]\n                })\n            ]\n        });\n    }\n}\nTab.contextTypes = {\n    renderErrorModal: PropTypes.func\n};\nTabs.contextTypes = {\n    renderErrorModal: PropTypes.func\n};\n","function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport * as React from 'react';\nimport SpzaComponent from './spzaComponent';\nimport { SpzaInstrumentService } from '../services/telemetry/spza/spzaInstrument';\nimport { Constants } from '../utils/constants';\nimport { logger } from '@src/logger';\nimport classNames from 'classnames';\nconst minimumLoatimeForTelemetry = 10000;\nconst processedImageLoadedSrcList = {};\nconst processedImageErrorSrcList = {};\nexport function onImageLoaded(src, startTime) {\n    const timeTaken = Date.now() - startTime;\n    if (!processedImageLoadedSrcList[`${src}`] && timeTaken > minimumLoatimeForTelemetry) {\n        processedImageLoadedSrcList[`${src}`] = true;\n        const payload = {\n            page: src,\n            action: Constants.Telemetry.Action.ImageLoad,\n            actionModifier: Constants.Telemetry.ActionModifier.End,\n            details: `Elapsed time: ${timeTaken} ms`\n        };\n        SpzaInstrumentService.getProvider().probe('logTelemetryInfo', payload);\n        logger.info(payload.details, {\n            action: payload.action,\n            actionModifier: payload.actionModifier,\n            page: payload.page\n        });\n    }\n}\nexport function onImageErrored(src, startTime) {\n    if (!processedImageErrorSrcList[`${src}`]) {\n        processedImageErrorSrcList[`${src}`] = true;\n        const payload = {\n            page: src,\n            action: Constants.Telemetry.Action.ImageLoad,\n            actionModifier: Constants.Telemetry.ActionModifier.Error,\n            details: `Elapsed time: ${Date.now() - startTime} ms`\n        };\n        SpzaInstrumentService.getProvider().probe('logTelemetryInfo', payload);\n        logger.error(payload.details, {\n            action: payload.action,\n            actionModifier: payload.actionModifier,\n            page: payload.page\n        });\n    }\n}\nexport class TelemetryImage extends SpzaComponent {\n    getAlt(alt, title, isVideo) {\n        if (alt) {\n            return alt;\n        } else if (title) {\n            return title + ' image';\n        } else if (isVideo) {\n            return 'play video';\n        } else {\n            return 'image';\n        }\n    }\n    componentDidMount() {\n        // since componentDidMount is only called at client side after the initial client side rendering\n        // is finished which would be consistent with the server side rendering result.\n        // then readyForNonInitialRendering is set to true here which would trigger another round of client side rendering.\n        this.setState({\n            readyForNonInitialRendering: true,\n            startTime: Date.now()\n        });\n    }\n    renderImpl() {\n        const { title, alt, isVideo, className, src, onError, imgClassName } = this.props;\n        const { startTime } = this.state;\n        return /*#__PURE__*/ _jsx(\"div\", {\n            className: classNames('delayLoadImage', 'telemetry', className),\n            children: this.state.readyForNonInitialRendering ? /*#__PURE__*/ _jsx(\"img\", {\n                itemProp: this.microTaggingItemPropName,\n                src: src,\n                alt: this.getAlt(alt, title, isVideo),\n                onLoad: ()=>onImageLoaded(src, startTime),\n                onError: (event)=>{\n                    onImageErrored(src, startTime);\n                    onError === null || onError === void 0 ? void 0 : onError(event);\n                },\n                \"aria-label\": this.getAlt(alt, title, isVideo),\n                className: imgClassName || null\n            }) : src\n        });\n    }\n    constructor(props){\n        super(props), _define_property(this, \"microTaggingItemPropName\", '');\n        const { itemPropName } = this.props;\n        this.state = {\n            readyForNonInitialRendering: false,\n            startTime: 0\n        };\n        this.microTaggingItemPropName = itemPropName || 'thumbnailUrl';\n    }\n}\n","function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nfunction _object_spread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        var ownKeys = Object.keys(source);\n        if (typeof Object.getOwnPropertySymbols === \"function\") {\n            ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n            }));\n        }\n        ownKeys.forEach(function(key) {\n            _define_property(target, key, source[key]);\n        });\n    }\n    return target;\n}\nfunction ownKeys(object, enumerableOnly) {\n    var keys = Object.keys(object);\n    if (Object.getOwnPropertySymbols) {\n        var symbols = Object.getOwnPropertySymbols(object);\n        if (enumerableOnly) {\n            symbols = symbols.filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n            });\n        }\n        keys.push.apply(keys, symbols);\n    }\n    return keys;\n}\nfunction _object_spread_props(target, source) {\n    source = source != null ? source : {};\n    if (Object.getOwnPropertyDescriptors) {\n        Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n        ownKeys(Object(source)).forEach(function(key) {\n            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n    }\n    return target;\n}\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport React from 'react';\nimport { TooltipDelay, TooltipHost } from '@fluentui/react';\nimport { useId } from '@fluentui/react-hooks';\nimport { noop } from 'lodash-es';\nconst Tooltip = ({ children, tooltipHostProps = {}, onTooltipToggle = noop })=>{\n    const tooltipId = useId('tooltip');\n    const tooltipStyles = {\n        content: {\n            cursor: 'default'\n        }\n    };\n    const tooltipProps = {\n        styles: tooltipStyles\n    };\n    const calloutProps = {\n        gapSpace: 5,\n        isBeakVisible: false,\n        setInitialFocus: false,\n        dismissOnTargetClick: true\n    };\n    const onTooltipToggleHandle = (isTooltipVisible)=>{\n        onTooltipToggle === null || onTooltipToggle === void 0 ? void 0 : onTooltipToggle(isTooltipVisible);\n    };\n    return /*#__PURE__*/ _jsx(TooltipHost, _object_spread_props(_object_spread({\n        id: tooltipId,\n        onTooltipToggle: onTooltipToggleHandle,\n        delay: TooltipDelay.long,\n        closeDelay: 0,\n        tooltipProps: tooltipProps,\n        calloutProps: calloutProps\n    }, tooltipHostProps), {\n        children: children\n    }));\n};\nexport default Tooltip;\n","function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nfunction _object_spread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        var ownKeys = Object.keys(source);\n        if (typeof Object.getOwnPropertySymbols === \"function\") {\n            ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n            }));\n        }\n        ownKeys.forEach(function(key) {\n            _define_property(target, key, source[key]);\n        });\n    }\n    return target;\n}\nfunction ownKeys(object, enumerableOnly) {\n    var keys = Object.keys(object);\n    if (Object.getOwnPropertySymbols) {\n        var symbols = Object.getOwnPropertySymbols(object);\n        if (enumerableOnly) {\n            symbols = symbols.filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n            });\n        }\n        keys.push.apply(keys, symbols);\n    }\n    return keys;\n}\nfunction _object_spread_props(target, source) {\n    source = source != null ? source : {};\n    if (Object.getOwnPropertyDescriptors) {\n        Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n        ownKeys(Object(source)).forEach(function(key) {\n            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n    }\n    return target;\n}\nimport * as React from 'react';\nimport { connect } from 'react-redux';\nimport { getTelemetryDetailContentCurrentView, isSaaS, isOfficeSaasApp } from '@shared/utils/appUtils';\nimport { PricingStates, CheckoutSource } from '@shared/Models';\nimport { isAppSource, isEmbed } from '@embed/embedHostUtils';\nimport { getPrimaryProductUrl } from '@shared/utils/datamappingHelpers';\nimport { createSetCheckoutSource } from '@shared/actions/checkoutActions';\nimport { AppTile as AppTileComponent } from '@shared/components/appTile/appTile';\nimport { isMaccUser } from '@shared/utils/userUtils';\nimport { withHydration } from '@shared/hooks/useHydration';\n// If the Addin has a preview offer in his linkedSaas, we dont need to count them. only the non-preview offers\nconst previewOffers = '-preview';\nconst skipPreviewSaaS = (linkedSaas)=>{\n    const linkedItemsIds = linkedSaas.map(({ entityId })=>entityId);\n    return linkedItemsIds.filter((entityId)=>!entityId.endsWith(previewOffers));\n};\nconst mapStateToProps = (state, ownProps)=>{\n    var _ownProps_linkedSaaS;\n    const productUrlkey = getPrimaryProductUrl(ownProps.primaryProduct);\n    let shouldShowLinkedAddIn = ownProps.shouldShowLinkedAddIn;\n    let shouldShowLinkedWebApps = ((_ownProps_linkedSaaS = ownProps.linkedSaaS) === null || _ownProps_linkedSaaS === void 0 ? void 0 : _ownProps_linkedSaaS.length) > 0 && skipPreviewSaaS(ownProps.linkedSaaS).length > 0;\n    if (isSaaS(productUrlkey) || isOfficeSaasApp(productUrlkey, ownProps.products)) {\n        if ((isAppSource(ownProps.embedHost) || isEmbed(ownProps.embedHost)) && ownProps.linkedAddIns !== undefined && ownProps.linkedAddIns.length > 0) {\n            shouldShowLinkedAddIn = true;\n            shouldShowLinkedWebApps = false;\n        }\n    } else if (!(isSaaS(productUrlkey) && isOfficeSaasApp(productUrlkey, ownProps.products)) && shouldShowLinkedWebApps) {\n        shouldShowLinkedAddIn = false;\n    }\n    const { billingCountryCode, correlationId, isEmbedded, currentView, currentGalleryViewIsCurated, isMobile, featureFlags, query, requestId: searchReqId, locale } = state.config;\n    const { signedIn, profile, loading } = state.users;\n    const { ShowPopularity } = featureFlags;\n    const { activeFilters: appsActiveFilters, count: appsCount } = state.apps;\n    const { activeFilters: servicesActiveFilters, count: servicesCount } = state.services;\n    const managedLicenses = (profile === null || profile === void 0 ? void 0 : profile.managedLicenses) || [];\n    const doesTenantHasLicenseForApp = managedLicenses.some((x)=>x.productId === ownProps.bigId);\n    const startingPrice = isEmbedded && !(ownProps.licenseManagement && ownProps.licenseManagement.isMicrosoftManaged) ? {\n        pricingData: PricingStates.AlwaysAvailable\n    } : ownProps.startingPrice;\n    return _object_spread_props(_object_spread({}, ownProps), {\n        billingCountryCode,\n        startingPrice,\n        tileDataRequestId: state.apps.tileDataRequestId,\n        correlationId,\n        isEmbedded,\n        signedIn,\n        currentView: getTelemetryDetailContentCurrentView(currentView, currentGalleryViewIsCurated),\n        isMobile,\n        showPopularity: ShowPopularity === 'true',\n        uiRole: profile && profile.uiRole,\n        shouldShowLinkedAddIn,\n        shouldShowLinkedWebApps,\n        doesTenantHasLicenseForApp,\n        isLoadingUserData: loading,\n        searchSortingBy: query.sortBy,\n        activeFilters: currentView === 'appGallery' ? appsActiveFilters : servicesActiveFilters,\n        count: currentView === 'appGallery' ? appsCount : servicesCount,\n        searchReqId,\n        locale,\n        isMaccUser: isMaccUser(state.users)\n    });\n};\nexport const mapDispatchToProps = (dispatch)=>{\n    return {\n        setTileCheckoutSource: ()=>dispatch(createSetCheckoutSource({\n                source: CheckoutSource.Tile\n            }))\n    };\n};\nexport const AppTile = connect(mapStateToProps, mapDispatchToProps)(withHydration(AppTileComponent));\n","function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nfunction _object_spread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        var ownKeys = Object.keys(source);\n        if (typeof Object.getOwnPropertySymbols === \"function\") {\n            ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n            }));\n        }\n        ownKeys.forEach(function(key) {\n            _define_property(target, key, source[key]);\n        });\n    }\n    return target;\n}\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport React from 'react';\nimport * as PropTypes from 'prop-types';\nimport SpzaComponent from './spzaComponent';\nimport { SpzaInstrumentService } from './../services/telemetry/spza/spzaInstrument';\nimport { Constants } from './../utils/constants';\nimport { getUserFavouriteEntity } from './../utils/userFavouriteUtils';\nimport { getWindow } from '../../shared/services/window';\nimport { ActionButton } from '@fluentui/react';\nimport { CommunicationColors, NeutralColors } from '@fluentui/theme';\nimport { logger } from '@src/logger';\nconst favoriteStarFilled = {\n    iconName: 'FavoriteStarFill',\n    styles: {\n        root: {\n            color: NeutralColors.gray130\n        }\n    }\n};\nconst favoriteStarAdd = {\n    iconName: 'AddFavorite',\n    styles: {\n        root: {\n            color: NeutralColors.gray130\n        }\n    }\n};\nconst favoriteStarFilledHover = {\n    iconName: 'FavoriteStarFill',\n    styles: {\n        root: {\n            color: CommunicationColors.primary\n        }\n    }\n};\nconst favoriteStarAddHover = {\n    iconName: 'AddFavorite',\n    styles: {\n        root: {\n            color: CommunicationColors.primary\n        }\n    }\n};\nexport class UserFavouriteTileButton extends SpzaComponent {\n    componentDidMount() {\n        this.props.fetchUserFavouriteData();\n    }\n    componentWillUnmount() {\n        this.disposed = true;\n    }\n    setFavouriteItemModifyComplete() {\n        if (!this.disposed) {\n            this.setState({\n                itemModifyStatus: Constants.UserFavourite.DataItemModifyStatus.Done\n            });\n        }\n    }\n    onClickUserFavouriteButton(event) {\n        event.preventDefault();\n        event.stopPropagation();\n        const entityId = this.props.entityId;\n        const userFavouriteEntity = getUserFavouriteEntity(this.props.userFavourite, entityId);\n        const upsertPayload = {\n            applicationType: this.props.entityType,\n            applicationId: entityId,\n            // plan Id will be updated when savefavourite called\n            planId: ''\n        };\n        // telemetry\n        const details = userFavouriteEntity ? {\n            action: Constants.Telemetry.Action.Delete,\n            userFavouriteInfo: _object_spread({}, userFavouriteEntity)\n        } : {\n            action: Constants.Telemetry.Action.Upsert,\n            userFavouriteInfo: _object_spread({}, upsertPayload)\n        };\n        const payload = {\n            page: getWindow().location.href,\n            action: Constants.Telemetry.Action.Click,\n            actionModifier: Constants.Telemetry.ActionModifier.UserFavouriteTileButton,\n            details: JSON.stringify(details)\n        };\n        this.instrument.probe(Constants.Telemetry.ProbeName.LogInfo, payload);\n        logger.info(payload.details, {\n            action: payload.action,\n            actionModifier: payload.actionModifier\n        });\n        // toggle user favourite on entity\n        if (userFavouriteEntity) {\n            // Delete a favourite\n            // save the user action\n            // display saved result beforehand\n            this.setState({\n                itemModifyStatus: Constants.UserFavourite.DataItemModifyStatus.Delete\n            });\n            // REST DELETE\n            this.props.deleteFavourite(userFavouriteEntity.entityGuid, userFavouriteEntity.applicationType)// TO-DO: cannot use .finally() on promise\n            .then(()=>{\n                this.setFavouriteItemModifyComplete();\n            }).catch(()=>{\n                this.setFavouriteItemModifyComplete();\n            });\n        } else {\n            // Upsert a favourite\n            // save the user action\n            // display saved result beforehand\n            this.setState({\n                itemModifyStatus: Constants.UserFavourite.DataItemModifyStatus.Upsert\n            });\n            // REST POST\n            this.props.savefavourite(entityId, _object_spread({}, upsertPayload), this.props.item)// TO-DO: cannot use .finally() on promise\n            .then(()=>{\n                this.setFavouriteItemModifyComplete();\n            }).catch(()=>{\n                this.setFavouriteItemModifyComplete();\n            });\n        }\n    }\n    shouldShowSavedStatus(hasUserSavedFavourite) {\n        const { itemModifyStatus } = this.state;\n        return hasUserSavedFavourite && (itemModifyStatus === Constants.UserFavourite.DataItemModifyStatus.Done || itemModifyStatus === Constants.UserFavourite.DataItemModifyStatus.None) || !hasUserSavedFavourite && itemModifyStatus === Constants.UserFavourite.DataItemModifyStatus.Upsert;\n    }\n    handleMouseEnter() {\n        this.setState({\n            isCardHover: true\n        });\n    }\n    handleMouseLeave() {\n        this.setState({\n            isCardHover: false\n        });\n    }\n    renderImpl() {\n        const hasUserSavedFavourite = !!getUserFavouriteEntity(this.props.userFavourite, this.props.entityId);\n        const shouldShowSavedStatus = this.shouldShowSavedStatus(hasUserSavedFavourite);\n        const title = shouldShowSavedStatus ? this.context.loc('UserFavourite_TileButton_Remove') : this.context.loc('UserFavourite_TileButton_Save');\n        return this.props.userInfo.signedIn && /*#__PURE__*/ _jsx(ActionButton, {\n            \"data-bi-id\": 'TileAddToFavorites',\n            iconProps: hasUserSavedFavourite ? this.state.isCardHover ? favoriteStarFilledHover : favoriteStarFilled : this.state.isCardHover ? favoriteStarAddHover : favoriteStarAdd,\n            onClick: this.onClickUserFavouriteButton,\n            title: title,\n            \"aria-label\": title,\n            onMouseEnter: this.handleMouseEnter.bind(this),\n            onMouseLeave: this.handleMouseLeave.bind(this)\n        });\n    }\n    constructor(props, context){\n        super(props, context), _define_property(this, \"context\", void 0), _define_property(this, \"instrument\", void 0), _define_property(this, \"disposed\", false);\n        this.instrument = SpzaInstrumentService.getProvider();\n        this.state = {\n            // this state property is to fix the flicker when user (un)save an favourite, due to the delay of a REST call to server\n            // makes user think (un)save is an immediate action to effect,\n            // this is done by changing the classname before the REST call, and reset the classname after REST call\n            // in order to change and change it back, we need to record the user action\n            itemModifyStatus: Constants.UserFavourite.DataItemModifyStatus.None,\n            isCardHover: false\n        };\n        this.onClickUserFavouriteButton = this.onClickUserFavouriteButton.bind(this);\n    }\n}\nUserFavouriteTileButton.contextTypes = {\n    loc: PropTypes.func,\n    locParams: PropTypes.func,\n    buildHref: PropTypes.func,\n    renderErrorModal: PropTypes.func\n};\n","import * as React from 'react';\nimport { upsertUserFavourite, deleteUserFavourite, fetchUserFavourites } from './../actions/userFavouriteThunkActions';\nimport { UserFavouriteTileButton as UserFavouriteTileButtonComponent } from '@shared/components/userFavouriteTileButton';\nconst { connect } = require('react-redux');\nexport const mapStateToProps = (state, ownProps)=>{\n    return {\n        userInfo: state.users,\n        userFavourite: state.userFavourite,\n        entityId: ownProps.entityId,\n        entityType: ownProps.entityType,\n        item: ownProps.item\n    };\n};\nexport const mapDispatchToProps = (dispatch, ownProps)=>{\n    return {\n        fetchUserFavouriteData: ()=>dispatch(fetchUserFavourites()),\n        savefavourite: (entityId, payload, item)=>dispatch(upsertUserFavourite(payload, item, entityId)),\n        deleteFavourite: (entityGuid, applicationType)=>dispatch(deleteUserFavourite(entityGuid, applicationType))\n    };\n};\nconst UserFavouriteTileButton = connect(mapStateToProps, mapDispatchToProps)(UserFavouriteTileButtonComponent);\nexport default UserFavouriteTileButton;\n","/* eslint-disable react/forbid-dom-props */ import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport * as React from 'react';\nimport { Constants } from './../utils/constants';\nimport { generateTileClickPayloadAndLogTelemetry } from './../utils/detailUtils';\nimport { getComponentXYCoordinate, getTileComponentRank } from './../utils/reactUtils';\nimport UserFavouriteTileButton from './../containers/userFavouriteTileButton';\nimport { DefaultButton, Stack, Text, mergeStyleSets } from '@fluentui/react';\nimport { useEffect, useRef } from 'react';\nimport { TelemetryImage } from './telemetryImage';\nimport { getNpsModule } from '@appsource/utils/nps';\nimport ProductsComponent from './products';\nimport { NeutralColors } from '@fluentui/theme';\nimport { getTooltipSilentLogIn } from '@shared/utils/silentLogInUtils';\nimport classNames from 'classnames';\nimport { isOneTimePaymentOffer } from '@shared/utils/onetimepaymentoffers';\nimport { InternalLink } from '@shared/components/internalLink';\nimport { RatingsInfo } from './ratings/ratingsInfo';\nimport { useHydration } from '@shared/hooks/useHydration';\nconst pricingStyle = {\n    root: {\n        whiteSpace: 'nowrap',\n        overflow: 'hidden',\n        textOverflow: 'ellipsis'\n    }\n};\nconst contentStyle = mergeStyleSets({\n    subText: [\n        {\n            color: NeutralColors.gray130,\n            marginBottom: '5px'\n        }\n    ],\n    startingPriceText: [\n        {\n            color: NeutralColors.gray160,\n            'font-weight': 600\n        }\n    ],\n    lightText: [\n        {\n            marginRight: '4px'\n        }\n    ],\n    ctaButton: [\n        {\n            marginTop: '12px'\n        }\n    ],\n    publisher: [\n        {\n            height: '48px'\n        }\n    ],\n    linkesButton: [\n        {\n            background: 'none',\n            border: 'none',\n            padding: 0\n        }\n    ],\n    tileContent: [\n        {\n            height: '320px'\n        }\n    ],\n    embedTileContent: [\n        {\n            height: '380px'\n        }\n    ]\n});\nexport const TileCTAbutton = ({ ctaData, isLoadingUserData, isEmbedded })=>{\n    const [isCTAHover, setIsCTAHover] = React.useState(false);\n    const { title, disabled, id, entityId, CtaType, area, view, onClick } = ctaData;\n    const button = /*#__PURE__*/ _jsx(DefaultButton, {\n        primary: isCTAHover,\n        className: contentStyle.ctaButton,\n        name: \"button\",\n        type: \"submit\",\n        text: title,\n        disabled: disabled || isLoadingUserData && !isEmbedded,\n        \"data-bi-id\": id,\n        \"data-bi-name\": entityId,\n        \"data-bi-type\": CtaType,\n        \"data-bi-area\": area,\n        \"data-bi-view\": view,\n        onClick: (e)=>{\n            e.preventDefault();\n            return onClick(e);\n        },\n        onKeyDown: (e)=>{\n            if (e.charCode === Constants.SystemKey.Enter) {\n                onClick();\n            }\n        },\n        onMouseEnter: ()=>setIsCTAHover(true),\n        onMouseLeave: ()=>setIsCTAHover(false)\n    });\n    return getTooltipSilentLogIn(button, isLoadingUserData);\n};\nconst TileFooter = ({ isEmbedded, isLoadingUserData, onKeyDown, ctaData, price, popularity, onClick, rating, context, userFavouriteEntityType, id, item })=>{\n    return /*#__PURE__*/ _jsxs(Stack, {\n        verticalAlign: \"end\",\n        className: \"tileFooterBox\",\n        tokens: {\n            childrenGap: 2\n        },\n        children: [\n            rating && /*#__PURE__*/ _jsx(Stack.Item, {\n                children: /*#__PURE__*/ _jsx(RatingsInfo, {\n                    avgRating: rating.avgRating,\n                    ratingsCount: rating.ratingsCount,\n                    title: rating.text,\n                    context: context,\n                    textSize: 'smallPlus'\n                }, rating.key)\n            }),\n            price && /*#__PURE__*/ _jsx(Stack.Item, {\n                children: /*#__PURE__*/ _jsx(Stack, {\n                    horizontal: true,\n                    tokens: {\n                        childrenGap: 2\n                    },\n                    children: /*#__PURE__*/ _jsx(Stack.Item, {\n                        shrink: 1,\n                        styles: pricingStyle,\n                        children: /*#__PURE__*/ _jsx(Text, {\n                            variant: 'small',\n                            className: `${contentStyle.startingPriceText}`,\n                            children: price\n                        })\n                    })\n                })\n            }),\n            /*#__PURE__*/ _jsxs(Stack, {\n                horizontal: true,\n                verticalAlign: \"baseline\",\n                tokens: {\n                    childrenGap: 5\n                },\n                children: [\n                    ctaData && /*#__PURE__*/ _jsx(TileCTAbutton, {\n                        onKeyDown: onKeyDown,\n                        isLoadingUserData: isLoadingUserData,\n                        ctaData: ctaData,\n                        isEmbedded: isEmbedded\n                    }),\n                    userFavouriteEntityType && /*#__PURE__*/ _jsx(UserFavouriteTileButton, {\n                        entityId: id,\n                        entityType: userFavouriteEntityType,\n                        item: item\n                    })\n                ]\n            }),\n            popularity && /*#__PURE__*/ _jsxs(Text, {\n                children: [\n                    \"P#: \",\n                    popularity * 1000 || 'none'\n                ]\n            })\n        ]\n    });\n};\nexport const BaseTile = ({ id, item, iconURL, title, tileDataRequestId, publisher, description, ctaData, detailUrl, tileIndex, componentInstance, userFavouriteEntityType, currentView, linkedAddIns, linkedWebApps, price, rating, badge, onOpenTile, products, totalTiles, context, isLoadingUserData, popularity, count, activeFilters, searchSortingBy, searchReqId, shouldShowLinkedAddIn, shouldShowLinkedWebApps, badgeTypes, ribbonKey = '', isEmbedded })=>{\n    const index = tileIndex + 1;\n    const tileId = `${componentInstance}-${id.replace('.', '-')}_${index}`;\n    const [imgUrlError, setImgUrlError] = React.useState(false);\n    const isHydrated = useHydration();\n    useEffect(()=>{\n        setImgUrlError(true);\n    }, []);\n    const ref = useRef(null);\n    const logOnClick = ()=>{\n        const reference = ref.current;\n        const coordinate = getComponentXYCoordinate(reference);\n        const tileRank = getTileComponentRank(reference);\n        const details = {\n            id,\n            rank: JSON.stringify(tileRank),\n            xOffset: coordinate.x,\n            yOffset: coordinate.y,\n            currentView,\n            tileDataRequestId,\n            discoveryData: {\n                totalNumOfResults: count,\n                activeFilters,\n                sortingBy: searchSortingBy,\n                searchRequestId: searchReqId\n            },\n            badges: JSON.stringify(badgeTypes),\n            ribbonKey,\n            publisherId: item.publisherId,\n            appName: item.entityId\n        };\n        // Add Legacy Telemetry Properties for Bundle Tile Click\n        if (shouldShowLinkedAddIn || shouldShowLinkedWebApps) {\n            details.isSaaSBundle = true;\n        }\n        generateTileClickPayloadAndLogTelemetry(Constants.Telemetry.ActionModifier.Tile, details);\n    };\n    const handleTileClick = (event)=>{\n        onOpenTile === null || onOpenTile === void 0 ? void 0 : onOpenTile(event);\n        logOnClick();\n    };\n    const handleTileKeyDown = (event)=>{\n        if (event.key === Constants.SystemKeyString.Enter) {\n            handleTileClick(event);\n        }\n    };\n    const preventNavigation = (e)=>{\n        e.preventDefault();\n        e.stopPropagation();\n    };\n    const descriptionclassNames = classNames({\n        multineEllipsis: true,\n        description: !linkedAddIns,\n        mobileDescription: true\n    });\n    const oneTimePaymentOffer = isOneTimePaymentOffer(id);\n    return /*#__PURE__*/ _jsx(InternalLink, {\n        \"data-testid\": `tile-link-container`,\n        title: title,\n        className: \"tileContainer\",\n        href: detailUrl,\n        ref: ref,\n        role: \"link\",\n        \"aria-labelledby\": `label-${tileId} labelBy-${tileId}`,\n        \"aria-describedby\": `desc-${tileId} descPrice-${tileId} descCompetency-${tileId}`,\n        \"data-bi-name\": id,\n        \"data-bi-area\": linkedAddIns && currentView === Constants.currentView.AppDetails ? Constants.Telemetry.AreaName.ParentSaaSTile : Constants.Telemetry.AreaName.AppTile,\n        \"data-bi-view\": Constants.Telemetry.TemplateName.SaaSBundle,\n        accEnabled: true,\n        onKeyDown: handleTileKeyDown,\n        children: /*#__PURE__*/ _jsxs(Stack, {\n            verticalAlign: \"space-between\",\n            className: \"tileContent ms-depth-8\",\n            onClick: (e)=>{\n                var _getNpsModule;\n                handleTileClick(e);\n                (_getNpsModule = getNpsModule()) === null || _getNpsModule === void 0 ? void 0 : _getNpsModule.increaseActionsCounter('pdpViewsCount');\n            },\n            children: [\n                badge,\n                /*#__PURE__*/ _jsxs(Stack, {\n                    tokens: {\n                        childrenGap: 8\n                    },\n                    children: [\n                        /*#__PURE__*/ _jsx(\"div\", {\n                            className: 'tileIcon ms-depth-8',\n                            children: iconURL && imgUrlError && /*#__PURE__*/ _jsx(TelemetryImage, {\n                                src: iconURL,\n                                alt: `${title} icon`,\n                                onError: ()=>setImgUrlError(false),\n                                itemPropName: 'tileImage'\n                            })\n                        }),\n                        /*#__PURE__*/ _jsxs(Stack, {\n                            className: 'tileHeaderBox',\n                            tokens: {\n                                childrenGap: 8\n                            },\n                            children: [\n                                /*#__PURE__*/ _jsx(Text, {\n                                    variant: 'large',\n                                    nowrap: true,\n                                    block: true,\n                                    className: `${contentStyle.publisher} title multineEllipsis ms-fontWeight-semibold`,\n                                    children: title\n                                }),\n                                /*#__PURE__*/ _jsx(Text, {\n                                    variant: 'small',\n                                    className: `${contentStyle.subText} publisher`,\n                                    children: publisher\n                                }),\n                                !oneTimePaymentOffer && !!(products === null || products === void 0 ? void 0 : products.length) && /*#__PURE__*/ _jsx(ProductsComponent, {\n                                    textSize: 'smallPlus',\n                                    withTooltip: true,\n                                    tooltipTitle: 'Applicable to:',\n                                    withText: true,\n                                    productsItems: products,\n                                    linkedAddIns: linkedAddIns,\n                                    linkedWebApps: linkedWebApps\n                                }),\n                                /*#__PURE__*/ _jsx(Text, {\n                                    variant: 'small',\n                                    className: `${contentStyle.subText} ${descriptionclassNames} `,\n                                    children: description\n                                }),\n                                /*#__PURE__*/ _jsx(\"div\", {\n                                    id: `labelIndexString-${tileId}`,\n                                    className: \"totalTiles\",\n                                    children: `${index} out of ${totalTiles}`\n                                })\n                            ]\n                        })\n                    ]\n                }),\n                isHydrated && /*#__PURE__*/ _jsx(TileFooter, {\n                    onClick: preventNavigation,\n                    onKeyDown: handleTileKeyDown,\n                    isEmbedded: isEmbedded,\n                    isLoadingUserData: isLoadingUserData,\n                    item: item,\n                    userFavouriteEntityType: userFavouriteEntityType,\n                    ctaData: ctaData,\n                    id: id,\n                    price: price,\n                    popularity: popularity,\n                    rating: rating,\n                    context: context\n                }),\n                /*#__PURE__*/ _jsx(\"div\", {\n                    className: \"mobileUserFavourite\",\n                    onClick: preventNavigation,\n                    children: userFavouriteEntityType && /*#__PURE__*/ _jsx(UserFavouriteTileButton, {\n                        entityId: id,\n                        entityType: userFavouriteEntityType,\n                        item: item\n                    })\n                })\n            ]\n        })\n    });\n};\n","function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nfunction _object_spread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        var ownKeys = Object.keys(source);\n        if (typeof Object.getOwnPropertySymbols === \"function\") {\n            ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n            }));\n        }\n        ownKeys.forEach(function(key) {\n            _define_property(target, key, source[key]);\n        });\n    }\n    return target;\n}\nfunction ownKeys(object, enumerableOnly) {\n    var keys = Object.keys(object);\n    if (Object.getOwnPropertySymbols) {\n        var symbols = Object.getOwnPropertySymbols(object);\n        if (enumerableOnly) {\n            symbols = symbols.filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n            });\n        }\n        keys.push.apply(keys, symbols);\n    }\n    return keys;\n}\nfunction _object_spread_props(target, source) {\n    source = source != null ? source : {};\n    if (Object.getOwnPropertyDescriptors) {\n        Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n        ownKeys(Object(source)).forEach(function(key) {\n            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n    }\n    return target;\n}\nimport { BaseTile as BaseTileComponent } from '@shared/components/baseTile';\nimport { connect } from 'react-redux';\nconst mapStateToProps = (state, ownProps)=>{\n    const { activeFilters: appsActiveFilters, count: appsCount } = state.apps;\n    const { activeFilters: servicesActiveFilters, count: servicesCount } = state.services;\n    const { currentView, query, requestId: searchReqId, isEmbedded } = state.config;\n    return _object_spread_props(_object_spread({}, ownProps), {\n        isLoadingUserData: state.users.loading,\n        activeFilters: currentView === 'appGallery' ? appsActiveFilters : servicesActiveFilters,\n        count: currentView === 'appGallery' ? appsCount : servicesCount,\n        searchReqId,\n        searchSortingBy: query.sortBy,\n        isEmbedded\n    });\n};\nexport const BaseTile = connect(mapStateToProps, null)(BaseTileComponent);\n","function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport SpzaComponent from './spzaComponent';\nimport { Constants } from '../utils/constants';\nimport { getWindow } from 'services/window';\nimport { SpzaInstrumentService } from '../services/telemetry/spza/spzaInstrument';\nimport { logger } from '@src/logger';\nexport class DynamicCampaign extends SpzaComponent {\n    componentDidMount() {\n        // add a function to the window object to be able to call a component method from the html\n        window.ctaCallback = (ctaEntity)=>this.showDialog(ctaEntity);\n        this.generateLoadingPageTelemetry();\n    }\n    generateLoadingPageTelemetry() {\n        if (this.props.dynamicCampaign) {\n            const payload = {\n                page: getWindow().location.href,\n                action: Constants.Telemetry.Action.PageLoad,\n                actionModifier: Constants.Telemetry.ActionModifier.End\n            };\n            this.instrument.probe('logTelemetryInfo', payload);\n            logger.info('', {\n                action: payload.action,\n                actionModifier: payload.actionModifier\n            });\n        }\n    }\n    generateCtaClickTelemetry() {\n        const payload = {\n            page: getWindow().location.href,\n            action: Constants.Telemetry.Action.Click,\n            actionModifier: Constants.Telemetry.ActionModifier.AppDynamicCampaignCTAButton\n        };\n        SpzaInstrumentService.getProvider().probe('logTelemetryInfo', payload);\n        logger.info('', {\n            action: payload.action,\n            actionModifier: payload.actionModifier\n        });\n    }\n    showDialog(ctaEntity) {\n        this.generateCtaClickTelemetry();\n        const entity = {\n            entityId: ctaEntity.appId\n        };\n        this.context.ctaCallback({\n            entity,\n            entityType: ctaEntity.entityType,\n            ctaType: ctaEntity.ctaType,\n            actionModifier: Constants.Telemetry.ActionModifier.AppDynamicCampaignCTAButton\n        });\n    }\n    createHtmlMarkup() {\n        const dynamicCampaign = this.props.dynamicCampaign;\n        return {\n            __html: dynamicCampaign.html\n        };\n    }\n    renderDefaultPage() {\n        return /*#__PURE__*/ _jsx(\"div\", {\n            className: \"campaignDefaultPage Header c-heading-2\",\n            children: \"Campaign not found !\"\n        });\n    }\n    renderImpl() {\n        // eslint-disable-next-line react/no-danger\n        return this.props.dynamicCampaign ? /*#__PURE__*/ _jsx(\"div\", {\n            dangerouslySetInnerHTML: this.createHtmlMarkup()\n        }) : this.renderDefaultPage();\n    }\n    constructor(props, context){\n        super(props, context), _define_property(this, \"context\", void 0), _define_property(this, \"instrument\", void 0);\n        this.instrument = SpzaInstrumentService.getProvider();\n        this.showDialog = this.showDialog.bind(this);\n    }\n}\nDynamicCampaign.contextTypes = {\n    loc: PropTypes.func,\n    locDateString: PropTypes.func,\n    locParams: PropTypes.func,\n    buildHref: PropTypes.func,\n    ctaCallback: PropTypes.func,\n    contactCallback: PropTypes.func,\n    renderErrorModal: PropTypes.func,\n    openTileCallback: PropTypes.func\n};\n","import { DynamicCampaign as DynamicCampaignComponent } from './../components/dynamicCampaign';\nimport { getDynamicCampaign } from '../actions/thunkActions';\nimport { connect } from 'react-redux';\nexport const mapStateToProps = (state)=>{\n    return {\n        dynamicCampaign: state.dynamicCampaign\n    };\n};\nconst Campaign = connect(mapStateToProps)(DynamicCampaignComponent);\nexport default Campaign;\nexport const ensureAsyncDataSSR = (dispatch, getState, params, request)=>{\n    request.params.id = params.id;\n    request.params.publisher = params.publisher;\n    return dispatch(getDynamicCampaign(request));\n};\n","/* eslint-disable react/forbid-dom-props */ function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { TooltipHost } from '@fluentui/react';\nimport { v4 } from 'uuid';\nimport { getUserFavouriteEntityServiceType } from '@shared/utils/userFavouriteDedicatedUtils';\nimport SpzaComponent from '@shared/components/spzaComponent';\nimport { BaseTile } from '@shared/containers/baseTile';\nimport { Constants } from '@shared/utils/constants';\nimport { generateTileClickPayloadAndLogTelemetry, getProductsList } from '@shared/utils/detailUtils';\nimport { getComponentXYCoordinate, getTileComponentRank } from '@shared/utils/reactUtils';\nimport { routes } from '@shared/routerHistory';\nimport { findBestMatchCountryCode, getReplacedCountryQueryParam, createCountryFilterQueryParam, getProductTitleForTile, getStartingPriceHeader } from '@shared/utils/consultingServicesUtils';\nimport { stripHTML } from '@shared/utils/appUtils';\nimport IntegratedSolution from '@shared/images/badges/IntegratedSolution.svg';\nimport AzureExpertsMSPBadge from '@shared/images/badges/AzureExpertsMSP.svg';\nexport class ServiceTile extends SpzaComponent {\n    getService(e) {\n        var _this_props_extraData;\n        e.stopPropagation();\n        const { setTileCheckoutSource } = this.props;\n        const reference = this.refs['appTile' + this.props.entityId];\n        const coordinate = getComponentXYCoordinate(reference);\n        const tileRank = getTileComponentRank(reference);\n        const { ribbonKey = '' } = this.props;\n        setTileCheckoutSource();\n        const details = {\n            id: this.props.entityId,\n            rank: JSON.stringify(tileRank),\n            xOffset: coordinate.x,\n            yOffset: coordinate.y,\n            CTAType: ((_this_props_extraData = this.props.extraData) === null || _this_props_extraData === void 0 ? void 0 : _this_props_extraData.serviceActionType) || '',\n            currentView: this.props.currentView\n        };\n        generateTileClickPayloadAndLogTelemetry(Constants.Telemetry.ActionModifier.ServiceTileCTAButton, details);\n        this.context.ctaCallback({\n            entity: this.props,\n            entityType: Constants.EntityType.Service,\n            ctaType: Constants.CTAType.Service,\n            actionModifier: Constants.Telemetry.ActionModifier.ServiceTileCTAButton,\n            ribbonKey\n        });\n    }\n    shouldComponentUpdate(nextProps) {\n        return this.props.entityId !== nextProps.entityId || this.props.currentView !== nextProps.currentView || this.props.countryContext !== nextProps.countryContext;\n    }\n    renderPrice() {\n        const { extraData, countryContext, selectedLocale } = this.props;\n        return getStartingPriceHeader(extraData === null || extraData === void 0 ? void 0 : extraData.multiCountryPricing, countryContext, selectedLocale, this.context);\n    }\n    renderBuiltForItem() {\n        return /*#__PURE__*/ _jsx(\"div\", {\n            children: getProductTitleForTile(this.props.products)\n        });\n    }\n    getReplacedCountryQueryParamIfNeeded() {\n        // Play defense - return alternative country only if we can find one.\n        if (this.props.extraData && this.props.extraData.multiCountryPricing && this.props.extraData.multiCountryPricing[0]) {\n            // No country context - use first country as default.\n            if (!this.props.countryContext) {\n                const firstCountry = this.props.extraData.multiCountryPricing[0].countryRegion;\n                let replaceCountryParam = getReplacedCountryQueryParam(this.props.query, firstCountry);\n                // No country query param to replace - create new one.\n                if (!replaceCountryParam) {\n                    replaceCountryParam = createCountryFilterQueryParam(firstCountry, this.props.isAppSource);\n                }\n                return replaceCountryParam;\n            }\n            const foundCountryCode = findBestMatchCountryCode(this.props.extraData.multiCountryPricing, this.props.countryContext);\n            // If there is mismatch between country context and what we found in the service. replace the country param.\n            if (foundCountryCode !== this.props.countryContext && this.props.query) {\n                return getReplacedCountryQueryParam(this.props.query, foundCountryCode);\n            }\n        }\n        return null;\n    }\n    renderBadge() {\n        var _this_props_tags;\n        const AzureExpertsMSP = ((_this_props_tags = this.props.tags) === null || _this_props_tags === void 0 ? void 0 : _this_props_tags.length) > 0 && this.props.tags.indexOf(Constants.BadgeType.AzureExpertsMSP) >= 0;\n        const hasIntSolutionBadge = Object.prototype.hasOwnProperty.call(Constants.ServicesIdWithBadge, this.props.entityId);\n        const tooltipText = this.context.loc('MicrosoftIntegratedSolution_badge', 'Microsoft Integrated Solution badge');\n        if (!hasIntSolutionBadge && !AzureExpertsMSP) {\n            return null;\n        }\n        return /*#__PURE__*/ _jsxs(\"div\", {\n            className: 'tileBadgeContainer',\n            children: [\n                hasIntSolutionBadge && /*#__PURE__*/ _jsx(\"div\", {\n                    className: \"serviceTileBadge\",\n                    tabIndex: 0,\n                    children: /*#__PURE__*/ _jsx(TooltipHost, {\n                        content: tooltipText,\n                        children: /*#__PURE__*/ _jsx(\"img\", {\n                            src: IntegratedSolution,\n                            alt: tooltipText\n                        })\n                    })\n                }),\n                AzureExpertsMSP && /*#__PURE__*/ _jsx(\"div\", {\n                    className: \"expertBadge\",\n                    children: /*#__PURE__*/ _jsx(\"img\", {\n                        className: \"tileBadge\",\n                        src: AzureExpertsMSPBadge,\n                        title: this.context.loc('AzureExpertsMSP_Badge', 'Azure Experts MSP'),\n                        alt: this.context.loc('AzureExpertsMSP_Badge', 'Azure Experts MSP')\n                    })\n                })\n            ]\n        });\n    }\n    getCTAData() {\n        var _this_props_extraData;\n        const ctaText = ((_this_props_extraData = this.props.extraData) === null || _this_props_extraData === void 0 ? void 0 : _this_props_extraData.serviceActionType) || '';\n        return ctaText && {\n            id: Constants.JsllCTAId.ContactMe,\n            title: this.context.loc('CTA_Services'),\n            area: 'Services Tile',\n            onClick: this.getService.bind(this),\n            entityId: this.props.entityId\n        };\n    }\n    getProducts() {\n        var _this_props;\n        return ((_this_props = this.props) === null || _this_props === void 0 ? void 0 : _this_props.products) && Object.keys(this.props.products).length > 0 && getProductsList(this.props.products);\n    }\n    renderImpl() {\n        var _this_props_extraData;\n        const replaceCountryParams = this.getReplacedCountryQueryParamIfNeeded();\n        const serviceDetailUrl = this.context.buildHref(routes.serviceDetail, {\n            entityId: this.props.entityId\n        }, replaceCountryParams, true);\n        const { ribbonKey = '' } = this.props;\n        var _this_props_extraData_shortDescription;\n        return /*#__PURE__*/ _jsx(BaseTile, {\n            totalTiles: this.props.totalTiles,\n            id: this.props.entityId,\n            componentInstance: this.componentInstance,\n            item: this.props.item,\n            iconURL: this.props.extraData && this.props.extraData.smallIconUri,\n            title: this.props.title,\n            description: stripHTML((_this_props_extraData_shortDescription = (_this_props_extraData = this.props.extraData) === null || _this_props_extraData === void 0 ? void 0 : _this_props_extraData.shortDescription) !== null && _this_props_extraData_shortDescription !== void 0 ? _this_props_extraData_shortDescription : ''),\n            publisher: this.props.publisher,\n            ctaData: this.getCTAData(),\n            detailUrl: serviceDetailUrl,\n            tileIndex: this.props.tileIndex,\n            currentView: this.props.currentView,\n            userFavouriteEntityType: getUserFavouriteEntityServiceType(),\n            price: this.renderPrice(),\n            badge: this.renderBadge(),\n            openTileCallback: this.context.openTileCallback,\n            products: this.getProducts(),\n            context: this.context,\n            ribbonKey: ribbonKey\n        });\n    }\n    constructor(props, context){\n        super(props, context), _define_property(this, \"context\", void 0), _define_property(this, \"componentInstance\", v4());\n        this.getReplacedCountryQueryParamIfNeeded = this.getReplacedCountryQueryParamIfNeeded.bind(this);\n    }\n}\nServiceTile.contextTypes = {\n    loc: PropTypes.func,\n    locParams: PropTypes.func,\n    buildHref: PropTypes.func,\n    ctaCallback: PropTypes.func,\n    renderErrorModal: PropTypes.func,\n    openTileCallback: PropTypes.func\n};\n","import * as React from 'react';\nimport { connect } from 'react-redux';\nimport { ServiceTile as ServiceTileComponent } from 'components/serviceTile';\nimport { getTelemetryDetailContentCurrentView } from '@shared/utils/appUtils';\nimport { createSetCheckoutSource } from '@shared/actions/checkoutActions';\nimport { CheckoutSource } from '@shared/Models';\nconst mapStateToProps = (state, ownProps)=>{\n    var _state_config, _state_config1, _state_config2, _state_config3, _state_users;\n    return {\n        currentView: getTelemetryDetailContentCurrentView((_state_config = state.config) === null || _state_config === void 0 ? void 0 : _state_config.currentView, (_state_config1 = state.config) === null || _state_config1 === void 0 ? void 0 : _state_config1.currentGalleryViewIsCurated),\n        query: (_state_config2 = state.config) === null || _state_config2 === void 0 ? void 0 : _state_config2.query,\n        isAppSource: (_state_config3 = state.config) === null || _state_config3 === void 0 ? void 0 : _state_config3.isAppSource,\n        isLoadingUserData: (_state_users = state.users) === null || _state_users === void 0 ? void 0 : _state_users.loading,\n        ribbonKey: ownProps.ribbonKey\n    };\n};\nexport const mapDispatchToProps = (dispatch)=>{\n    return {\n        setTileCheckoutSource: ()=>dispatch(createSetCheckoutSource({\n                source: CheckoutSource.Tile\n            }))\n    };\n};\nexport const ServiceTile = connect(mapStateToProps, mapDispatchToProps)(ServiceTileComponent);\n","function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nfunction _object_spread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        var ownKeys = Object.keys(source);\n        if (typeof Object.getOwnPropertySymbols === \"function\") {\n            ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n            }));\n        }\n        ownKeys.forEach(function(key) {\n            _define_property(target, key, source[key]);\n        });\n    }\n    return target;\n}\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport SpzaComponent from './spzaComponent';\nimport { SpzaInstrumentService } from '@shared/services/telemetry/spza/spzaInstrument';\nimport { Constants } from '@shared/utils/constants';\nimport { getUserFavouriteEntity } from '@shared/utils/userFavouriteUtils';\nimport { getWindow } from '@shared/services/window';\nimport { ActionButton } from '@fluentui/react';\nimport { logger } from '@src/logger';\nconst favoriteStarHollow = {\n    iconName: 'FavoriteStar'\n};\nconst favoriteStarFilled = {\n    iconName: 'FavoriteStarFill'\n};\nexport class UserFavouriteTileDetailButton extends SpzaComponent {\n    componentDidMount() {\n        this.props.fetchUserFavouriteData();\n    }\n    setFavouriteItemModifyComplete() {\n        this.setState({\n            itemModifyStatus: Constants.UserFavourite.DataItemModifyStatus.Done\n        });\n    }\n    onClickUserFavouriteButton() {\n        const userFavouriteEntity = getUserFavouriteEntity(this.props.userFavourite, this.props.entityId);\n        const upsertPayload = {\n            applicationType: this.props.entityType,\n            applicationId: this.props.entityId\n        };\n        // telemetry\n        const details = userFavouriteEntity ? {\n            action: Constants.Telemetry.Action.Delete,\n            userFavouriteInfo: _object_spread({}, userFavouriteEntity)\n        } : {\n            action: Constants.Telemetry.Action.Upsert,\n            userFavouriteInfo: _object_spread({}, upsertPayload)\n        };\n        const payload = {\n            page: getWindow().location.href,\n            action: Constants.Telemetry.Action.Click,\n            actionModifier: Constants.Telemetry.ActionModifier.UserFavouriteTileDetailButton,\n            details: JSON.stringify(details)\n        };\n        this.instrument.probe(Constants.Telemetry.ProbeName.LogInfo, payload);\n        logger.info(payload.details, {\n            action: payload.action,\n            actionModifier: payload.actionModifier\n        });\n        // toggle user favourite on entity\n        if (userFavouriteEntity) {\n            // Delete a favourite\n            // save the user action\n            // display saved result beforehand\n            this.setState({\n                itemModifyStatus: Constants.UserFavourite.DataItemModifyStatus.Delete\n            });\n            // REST DELETE\n            this.props.deleteFavourite(userFavouriteEntity.entityGuid, userFavouriteEntity.applicationType)// TO-DO: cannot use .finally() on promise\n            .then(()=>{\n                this.setFavouriteItemModifyComplete();\n            }).catch(()=>{\n                this.setFavouriteItemModifyComplete();\n            });\n        } else {\n            // Upsert a favourite\n            // save the user action\n            // display saved result beforehand\n            this.setState({\n                itemModifyStatus: Constants.UserFavourite.DataItemModifyStatus.Upsert\n            });\n            // REST POST\n            this.props.savefavourite(_object_spread({}, upsertPayload), this.props.item)// TO-DO: cannot use .finally() on promise\n            .then(()=>{\n                this.setFavouriteItemModifyComplete();\n            }).catch(()=>{\n                this.setFavouriteItemModifyComplete();\n            });\n        }\n    }\n    renderImpl() {\n        const hasUserSavedFavourite = !!getUserFavouriteEntity(this.props.userFavourite, this.props.entityId);\n        const itemModifyStatus = this.state.itemModifyStatus;\n        const shouldShowSavedStatus = hasUserSavedFavourite && (itemModifyStatus === Constants.UserFavourite.DataItemModifyStatus.Done || itemModifyStatus === Constants.UserFavourite.DataItemModifyStatus.None) || !hasUserSavedFavourite && itemModifyStatus === Constants.UserFavourite.DataItemModifyStatus.Upsert;\n        const title = shouldShowSavedStatus ? this.context.loc('UserFavourite_TileDetailButton_Saved') : this.context.loc('UserFavourite_TileDetailButton_Save');\n        return this.props.userInfo.signedIn && /*#__PURE__*/ _jsx(ActionButton, {\n            iconProps: hasUserSavedFavourite ? favoriteStarFilled : favoriteStarHollow,\n            allowDisabledFocus: true,\n            onClick: this.onClickUserFavouriteButton,\n            className: this.props.className,\n            children: title\n        });\n    }\n    constructor(props, context){\n        super(props, context), _define_property(this, \"context\", void 0), _define_property(this, \"instrument\", void 0);\n        this.instrument = SpzaInstrumentService.getProvider();\n        this.state = {\n            // this state property is to fix the flicker when user (un)save an favourite, due to the delay of a REST call to server\n            // makes user think (un)save is an immediate action to effect,\n            // this is done by changing the classname before the REST call, and reset the classname after REST call\n            // in order to change and change it back, we need to record the user action\n            itemModifyStatus: Constants.UserFavourite.DataItemModifyStatus.None\n        };\n        this.onClickUserFavouriteButton = this.onClickUserFavouriteButton.bind(this);\n    }\n}\nUserFavouriteTileDetailButton.contextTypes = {\n    loc: PropTypes.func,\n    locParams: PropTypes.func,\n    buildHref: PropTypes.func,\n    renderErrorModal: PropTypes.func\n};\n","import * as React from 'react';\nimport { upsertUserFavourite, deleteUserFavourite, fetchUserFavourites } from '@shared/actions/userFavouriteThunkActions';\nimport { UserFavouriteTileDetailButton as UserFavouriteTileDetailButtonComponent } from '@shared/components/userFavouriteTileDetailButton';\nimport { connect } from 'react-redux';\nexport const mapStateToProps = (state, ownProps)=>{\n    return {\n        userInfo: state.users,\n        userFavourite: state.userFavourite,\n        entityId: ownProps.entityId,\n        entityType: ownProps.entityType,\n        item: ownProps.item,\n        className: ownProps.className\n    };\n};\nexport const mapDispatchToProps = (dispatch)=>{\n    return {\n        fetchUserFavouriteData: ()=>dispatch(fetchUserFavourites()),\n        savefavourite: (payload, item)=>dispatch(upsertUserFavourite(payload, item)),\n        deleteFavourite: (entityGuid, applicationType)=>dispatch(deleteUserFavourite(entityGuid, applicationType))\n    };\n};\nconst UserFavouriteTileDetailButton = connect(mapStateToProps, mapDispatchToProps)(UserFavouriteTileDetailButtonComponent);\nexport default UserFavouriteTileDetailButton;\n","import { useEffect } from 'react';\nimport { getWindow } from '@fluentui/react';\nimport { IClarityFunctionNames } from '@shared/components';\nexport const useMsClarityIdentify = ({ correlationId, spzaId })=>{\n    useEffect(()=>{\n        if (correlationId && spzaId && getWindow()) {\n            var _getWindow;\n            (_getWindow = getWindow()) === null || _getWindow === void 0 ? void 0 : _getWindow.clarity(IClarityFunctionNames.IDENTIFY, spzaId, correlationId);\n        }\n    }, [\n        spzaId,\n        correlationId\n    ]);\n};\nexport const useMsClarityTracking = ({ allowTracking })=>{\n    useEffect(()=>{\n        const currentWindow = getWindow();\n        if (allowTracking && (currentWindow === null || currentWindow === void 0 ? void 0 : currentWindow.clarity)) {\n            currentWindow === null || currentWindow === void 0 ? void 0 : currentWindow.clarity(IClarityFunctionNames.CONSENT);\n        }\n    }, [\n        allowTracking\n    ]);\n};\n","/* istanbul ignore file */ function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nfunction _object_spread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        var ownKeys = Object.keys(source);\n        if (typeof Object.getOwnPropertySymbols === \"function\") {\n            ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n            }));\n        }\n        ownKeys.forEach(function(key) {\n            _define_property(target, key, source[key]);\n        });\n    }\n    return target;\n}\nfunction ownKeys(object, enumerableOnly) {\n    var keys = Object.keys(object);\n    if (Object.getOwnPropertySymbols) {\n        var symbols = Object.getOwnPropertySymbols(object);\n        if (enumerableOnly) {\n            symbols = symbols.filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n            });\n        }\n        keys.push.apply(keys, symbols);\n    }\n    return keys;\n}\nfunction _object_spread_props(target, source) {\n    source = source != null ? source : {};\n    if (Object.getOwnPropertyDescriptors) {\n        Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n        ownKeys(Object(source)).forEach(function(key) {\n            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n    }\n    return target;\n}\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport React, { useEffect, useState } from 'react';\n/**\n * This hook is used in functional components.\n * Use it whenever you must render only when the hydration phase is complete (i.e. first lifecycle has been invoked)\n */ export function useHydration() {\n    const [isHydrated, setIsHydrated] = useState(false);\n    useEffect(()=>{\n        setIsHydrated(true);\n    }, []);\n    return isHydrated;\n}\n/**\n * Used for legacy class components. Please avoid using this and use the hook {@link useHydration} instead inside a functional component.\n */ export function withHydration(WrappedComponent) {\n    return function ComponentWithHydration(props) {\n        const isHydrated = useHydration();\n        return /*#__PURE__*/ _jsx(WrappedComponent, _object_spread_props(_object_spread({}, props), {\n            isHydrated: isHydrated\n        }));\n    };\n}\n","import { useRef } from 'react';\nimport { SpzaInstrumentService } from '@shared/services/telemetry/spza/spzaInstrument';\nexport const useSpzaInstrumentService = ()=>{\n    const refInstrument = useRef(SpzaInstrumentService.getProvider());\n    return [\n        refInstrument.current\n    ];\n};\n","import { ApplicationInsights } from '@microsoft/1ds-analytics-web-js';\nimport { AuthPlugin, AuthType } from '@microsoft/1ds-auth-js';\nimport * as appConfig from '@shared/services/init/appConfig';\nimport { PropertiesPlugin } from '@microsoft/1ds-properties-js';\nimport { CorrelationVectorPlugin } from '@microsoft/1ds-cv-js';\nimport { getWindow } from '@shared/services/window';\nimport { Constants, Environment, OneDSEnvs } from '@shared/utils/constants';\nimport { getGPCValue } from '@shared/utils/privacyUtils';\nconst envsMap = {\n    [Environment.Production]: OneDSEnvs.Production,\n    [Environment.Canary]: OneDSEnvs.Canary,\n    [Environment.Development]: OneDSEnvs.Internal,\n    [Environment.Dogfood]: OneDSEnvs.Dogfood,\n    [Environment.Test]: OneDSEnvs.Test\n};\nconst getEnvName = ()=>{\n    var _getWindow___INITIAL_STATE___config_siteEnvironment, _getWindow___INITIAL_STATE___config, _getWindow___INITIAL_STATE__, _getWindow;\n    var _getWindow___INITIAL_STATE___config_siteEnvironment_toLowerCase;\n    const siteEnvironment = (_getWindow___INITIAL_STATE___config_siteEnvironment_toLowerCase = (_getWindow = getWindow()) === null || _getWindow === void 0 ? void 0 : (_getWindow___INITIAL_STATE__ = _getWindow.__INITIAL_STATE__) === null || _getWindow___INITIAL_STATE__ === void 0 ? void 0 : (_getWindow___INITIAL_STATE___config = _getWindow___INITIAL_STATE__.config) === null || _getWindow___INITIAL_STATE___config === void 0 ? void 0 : (_getWindow___INITIAL_STATE___config_siteEnvironment = _getWindow___INITIAL_STATE___config.siteEnvironment) === null || _getWindow___INITIAL_STATE___config_siteEnvironment === void 0 ? void 0 : _getWindow___INITIAL_STATE___config_siteEnvironment.toLowerCase()) !== null && _getWindow___INITIAL_STATE___config_siteEnvironment_toLowerCase !== void 0 ? _getWindow___INITIAL_STATE___config_siteEnvironment_toLowerCase : process.env.siteEnvironment;\n    const env = envsMap[`${siteEnvironment}`];\n    if (!env) {\n        throw new Error('failed to load env name for telemetry');\n    }\n    return env;\n};\nconst initiate1DS = ()=>{\n    var _getWindow___INITIAL_STATE___config, _getWindow___INITIAL_STATE__, _getWindow, _getWindow___INITIAL_STATE___config1, _getWindow___INITIAL_STATE__1, _getWindow1;\n    const analytics = new ApplicationInsights();\n    const authPlugin = new AuthPlugin();\n    const propertiesPlugin = new PropertiesPlugin();\n    const cvPlugin = new CorrelationVectorPlugin();\n    const webAnalyticsConfig = {\n        urlCollectQuery: true,\n        urlCollectHash: true,\n        // Web Analytics Plugin configuration\n        autoCapture: {\n            scroll: true,\n            pageView: true,\n            onLoad: true,\n            onUnload: true,\n            click: true,\n            resize: true,\n            lineage: true,\n            jsError: true\n        },\n        shareAuthStatus: true,\n        callback: {\n            signedinStatus: ()=>{\n                var _getWindow___INITIAL_STATE___users, _getWindow___INITIAL_STATE__, _getWindow;\n                var _getWindow___INITIAL_STATE___users_signedIn;\n                return (_getWindow___INITIAL_STATE___users_signedIn = (_getWindow = getWindow()) === null || _getWindow === void 0 ? void 0 : (_getWindow___INITIAL_STATE__ = _getWindow.__INITIAL_STATE__) === null || _getWindow___INITIAL_STATE__ === void 0 ? void 0 : (_getWindow___INITIAL_STATE___users = _getWindow___INITIAL_STATE__.users) === null || _getWindow___INITIAL_STATE___users === void 0 ? void 0 : _getWindow___INITIAL_STATE___users.signedIn) !== null && _getWindow___INITIAL_STATE___users_signedIn !== void 0 ? _getWindow___INITIAL_STATE___users_signedIn : false;\n            }\n        }\n    };\n    const authConfig = {\n        authType: AuthType.AAD,\n        loggedInStatusCallback: ()=>{\n            var _getWindow___INITIAL_STATE___users, _getWindow___INITIAL_STATE__, _getWindow;\n            var _getWindow___INITIAL_STATE___users_signedIn;\n            return (_getWindow___INITIAL_STATE___users_signedIn = (_getWindow = getWindow()) === null || _getWindow === void 0 ? void 0 : (_getWindow___INITIAL_STATE__ = _getWindow.__INITIAL_STATE__) === null || _getWindow___INITIAL_STATE__ === void 0 ? void 0 : (_getWindow___INITIAL_STATE___users = _getWindow___INITIAL_STATE__.users) === null || _getWindow___INITIAL_STATE___users === void 0 ? void 0 : _getWindow___INITIAL_STATE___users.signedIn) !== null && _getWindow___INITIAL_STATE___users_signedIn !== void 0 ? _getWindow___INITIAL_STATE___users_signedIn : false;\n        }\n    };\n    var _getGPCValue;\n    const propertiesPluginConfig = {\n        populateBrowserInfo: true,\n        populateOperatingSystemInfo: true,\n        enableApplicationInsightsTrace: true,\n        enableApplicationInsightsUser: true,\n        userConsentCookieName: Constants.Cookies.privacyConsentAcceptedDate,\n        env: getEnvName(),\n        // eslint-disable-next-line camelcase\n        gpcDataSharingOptIn: (_getGPCValue = getGPCValue()) !== null && _getGPCValue !== void 0 ? _getGPCValue : true,\n        callback: {\n            userConsentDetails: ()=>appConfig.get('siteConsent')\n        }\n    };\n    const config = {\n        propertyConfiguration: propertiesPluginConfig,\n        instrumentationKey: (_getWindow = getWindow()) === null || _getWindow === void 0 ? void 0 : (_getWindow___INITIAL_STATE__ = _getWindow.__INITIAL_STATE__) === null || _getWindow___INITIAL_STATE__ === void 0 ? void 0 : (_getWindow___INITIAL_STATE___config = _getWindow___INITIAL_STATE__.config) === null || _getWindow___INITIAL_STATE___config === void 0 ? void 0 : _getWindow___INITIAL_STATE___config.telemetryInstrumentationKey,\n        endpointUrl: (_getWindow1 = getWindow()) === null || _getWindow1 === void 0 ? void 0 : (_getWindow___INITIAL_STATE__1 = _getWindow1.__INITIAL_STATE__) === null || _getWindow___INITIAL_STATE__1 === void 0 ? void 0 : (_getWindow___INITIAL_STATE___config1 = _getWindow___INITIAL_STATE__1.config) === null || _getWindow___INITIAL_STATE___config1 === void 0 ? void 0 : _getWindow___INITIAL_STATE___config1.telemetryEndpoint,\n        webAnalyticsConfiguration: webAnalyticsConfig,\n        extensions: [\n            authPlugin,\n            propertiesPlugin,\n            cvPlugin\n        ],\n        extensionConfig: {\n            [authPlugin.identifier]: authConfig,\n            [propertiesPlugin.identifier]: propertiesPluginConfig\n        },\n        perfEvtsSendAll: true\n    };\n    analytics.initialize(config, []);\n    return analytics;\n};\nexport default (()=>__CLIENT__ && initiate1DS());\n","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n    try {\n        var info = gen[key](arg);\n        var value = info.value;\n    } catch (error) {\n        reject(error);\n        return;\n    }\n    if (info.done) {\n        resolve(value);\n    } else {\n        Promise.resolve(value).then(_next, _throw);\n    }\n}\nfunction _async_to_generator(fn) {\n    return function() {\n        var self = this, args = arguments;\n        return new Promise(function(resolve, reject) {\n            var gen = fn.apply(self, args);\n            function _next(value) {\n                asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n            }\n            function _throw(err) {\n                asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n            }\n            _next(undefined);\n        });\n    };\n}\nimport initBusinessTelemetry from '@shared/services/telemetry/1DSClient';\nimport { logger } from '@src/logger';\nconst telemetryClient = ()=>{\n    let telemetryClient = null;\n    return ()=>{\n        if (!telemetryClient) {\n            telemetryClient = initBusinessTelemetry();\n        }\n        return telemetryClient;\n    };\n};\nconst getTelemetryClient = telemetryClient();\nexport const initBusinessTelemetryClient = getTelemetryClient;\nexport const useTelemetry = ()=>{\n    const pageView = /*#__PURE__*/ function() {\n        var _ref = _async_to_generator(function*(overrideValues, customProperties) {\n            const telemetryClient = getTelemetryClient();\n            telemetryClient.capturePageView(overrideValues, customProperties);\n            logger.clientLogger.logger.capturePageView(overrideValues, customProperties);\n        });\n        return function pageView(overrideValues, customProperties) {\n            return _ref.apply(this, arguments);\n        };\n    }();\n    const pageAction = /*#__PURE__*/ function() {\n        var _ref = _async_to_generator(function*(element, overrideValues, customProperties, isRightClick) {\n            const telemetryClient = getTelemetryClient();\n            telemetryClient.capturePageAction(element, overrideValues, customProperties, isRightClick);\n            logger.clientLogger.logger.capturePageAction(element, overrideValues, customProperties, isRightClick);\n        });\n        return function pageAction(element, overrideValues, customProperties, isRightClick) {\n            return _ref.apply(this, arguments);\n        };\n    }();\n    const flushTelemetryBuffer = ()=>{\n        const telemetryClient = getTelemetryClient();\n        telemetryClient.getPostChannel().flush(false);\n        logger.flush();\n    };\n    return [\n        {\n            pageAction,\n            pageView,\n            flushTelemetryBuffer\n        },\n        {\n            telemetryClient\n        }\n    ];\n};\n","import { Logger } from './base';\nimport { stringifyError } from '@shared/utils/errorUtils';\nexport var ClientLogsCollection = /*#__PURE__*/ function(ClientLogsCollection) {\n    ClientLogsCollection[\"Telemetry\"] = \"Telemetry\";\n    ClientLogsCollection[\"Feedback\"] = \"Feedback\";\n    return ClientLogsCollection;\n}({});\nexport class ClientLoggerTelemetry extends Logger {\n    info({ error, collection = \"Telemetry\", action = '', actionModifier = '', details = '', appName = '', page = '', product = '-1' }) {\n        this.log('Info', collection, {\n            details,\n            appName,\n            product,\n            page,\n            error: error ? stringifyError(error) : '',\n            action,\n            actionModifier\n        });\n    }\n    debug({ error, collection = \"Telemetry\", action = '', actionModifier = '', details = '', appName = '', page = '', product = '-1' }) {\n        this.log('Debug', collection, {\n            details,\n            appName,\n            product,\n            page,\n            error: error ? stringifyError(error) : '',\n            action,\n            actionModifier\n        });\n    }\n    warning({ error, collection = \"Telemetry\", action = '', actionModifier = '', details = '', appName = '', page = '', product = '-1' }) {\n        this.log('Warn', collection, {\n            details,\n            appName,\n            product,\n            page,\n            error: error ? stringifyError(error) : '',\n            action,\n            actionModifier\n        });\n    }\n    error({ error, collection = \"Telemetry\", action = '', actionModifier = '', details = '', appName = '', page = '', product = '-1' }) {\n        this.log('Error', collection, {\n            details,\n            appName,\n            product,\n            page,\n            error: error ? stringifyError(error) : '',\n            action,\n            actionModifier\n        });\n    }\n}\n","function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nfunction _object_spread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        var ownKeys = Object.keys(source);\n        if (typeof Object.getOwnPropertySymbols === \"function\") {\n            ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n            }));\n        }\n        ownKeys.forEach(function(key) {\n            _define_property(target, key, source[key]);\n        });\n    }\n    return target;\n}\nfunction ownKeys(object, enumerableOnly) {\n    var keys = Object.keys(object);\n    if (Object.getOwnPropertySymbols) {\n        var symbols = Object.getOwnPropertySymbols(object);\n        if (enumerableOnly) {\n            symbols = symbols.filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n            });\n        }\n        keys.push.apply(keys, symbols);\n    }\n    return keys;\n}\nfunction _object_spread_props(target, source) {\n    source = source != null ? source : {};\n    if (Object.getOwnPropertyDescriptors) {\n        Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n        ownKeys(Object(source)).forEach(function(key) {\n            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n    }\n    return target;\n}\nimport sha256 from 'crypto-js/sha256';\nimport { getWindow } from '@shared/services/window';\nimport { getSpzaUserIdAndNewUserModifier, getTrailIdAndData } from '@shared/utils/appUtils';\nimport { Constants } from '@shared/utils/constants';\nconst OneDSEventNames = {\n    ClientError: 'Ms.Web.ClientError'\n};\nconst getCommonData = ()=>{\n    var _initialConfiguration_siteEnvironment, _initialConfiguration_query, _getTrailIdAndData, _getWindow_navigator, _getWindow_location, _getWindow_navigator_connection, _getWindow_navigator1;\n    const initialConfiguration = getWindow().__INITIAL_STATE__.config;\n    return {\n        environment: ((_initialConfiguration_siteEnvironment = initialConfiguration.siteEnvironment) === null || _initialConfiguration_siteEnvironment === void 0 ? void 0 : _initialConfiguration_siteEnvironment.toLowerCase()) || '',\n        appVersion: initialConfiguration.appVersion || '',\n        region: initialConfiguration.region || '',\n        spzaId: getSpzaUserIdAndNewUserModifier().spzaUserId || '',\n        hostType: !initialConfiguration.isEmbedded ? Constants.appSource : Constants.appSourceEmbed,\n        locale: ((_initialConfiguration_query = initialConfiguration.query) === null || _initialConfiguration_query === void 0 ? void 0 : _initialConfiguration_query.locale) || '',\n        correlationId: initialConfiguration.correlationId || Constants.ReservedCorrelationIds.EmptyId,\n        mshash: ((_getTrailIdAndData = getTrailIdAndData()) === null || _getTrailIdAndData === void 0 ? void 0 : _getTrailIdAndData.trailId) || '',\n        userAgent: ((_getWindow_navigator = getWindow().navigator) === null || _getWindow_navigator === void 0 ? void 0 : _getWindow_navigator.userAgent) || '',\n        host: ((_getWindow_location = getWindow().location) === null || _getWindow_location === void 0 ? void 0 : _getWindow_location.host) || '',\n        landingView: initialConfiguration.landingView || '',\n        connectionEffectiveType: ((_getWindow_navigator1 = getWindow().navigator) === null || _getWindow_navigator1 === void 0 ? void 0 : (_getWindow_navigator_connection = _getWindow_navigator1.connection) === null || _getWindow_navigator_connection === void 0 ? void 0 : _getWindow_navigator_connection.effectiveType) || ''\n    };\n};\nexport class Logger {\n    modifyClientError(item) {\n        if (item.name !== OneDSEventNames.ClientError) {\n            return;\n        }\n        if (Array.isArray(item.baseData.exceptions)) {\n            item.baseData.exceptions = JSON.stringify(item.baseData.exceptions);\n        }\n        if (Array.isArray(item.tags)) {\n            delete item.tags;\n        }\n    }\n    get logger() {\n        return this._1dsLogger;\n    }\n    initialize(_1dsLogger, store) {\n        this._1dsLogger = _1dsLogger;\n        this.store = store;\n        this.logMetadata = getCommonData();\n        this._1dsLogger.addTelemetryInitializer(this.modifyClientError);\n        Object.entries(this.logMetadata).forEach(([key, value])=>{\n            this._1dsLogger.getPropertyManager().setProperty(key, value);\n        });\n        // Flush preload events - if any\n        Promise.resolve().then(()=>this.preLoadEvents.forEach(({ level, collection, payload })=>this.log(level, collection, payload)));\n    }\n    log(level, collection, loggerPayload) {\n        if (this._1dsLogger && this.logMetadata) {\n            try {\n                var _this_store, _state_modal, _state_checkout_items_, _state_checkout_items, _state_checkout, _getWindow_navigator, _getWindow, _getWindow_navigator1, _getWindow1, _getWindow_location, _getWindow2, _getWindow3, _this__1dsLogger;\n                const state = (_this_store = this.store) === null || _this_store === void 0 ? void 0 : _this_store.getState();\n                const { oid, tid, signedIn, isMSAUser, userSegment } = (state === null || state === void 0 ? void 0 : state.users) || {};\n                const { config: { featureFlags } } = state;\n                const hashedOid = oid ? sha256(oid).toString().toLowerCase() : '';\n                const appName = loggerPayload.appName ? loggerPayload.appName : (state === null || state === void 0 ? void 0 : (_state_modal = state.modal) === null || _state_modal === void 0 ? void 0 : _state_modal.entityId) || ((_state_checkout = state.checkout) === null || _state_checkout === void 0 ? void 0 : (_state_checkout_items = _state_checkout.items) === null || _state_checkout_items === void 0 ? void 0 : (_state_checkout_items_ = _state_checkout_items[0]) === null || _state_checkout_items_ === void 0 ? void 0 : _state_checkout_items_.entityId) || '';\n                const data = _object_spread_props(_object_spread({}, loggerPayload), {\n                    browserLanguage: ((_getWindow = getWindow()) === null || _getWindow === void 0 ? void 0 : (_getWindow_navigator = _getWindow.navigator) === null || _getWindow_navigator === void 0 ? void 0 : _getWindow_navigator.language) || ((_getWindow1 = getWindow()) === null || _getWindow1 === void 0 ? void 0 : (_getWindow_navigator1 = _getWindow1.navigator) === null || _getWindow_navigator1 === void 0 ? void 0 : _getWindow_navigator1.userLanguage) || '',\n                    page: loggerPayload.page || ((_getWindow2 = getWindow()) === null || _getWindow2 === void 0 ? void 0 : (_getWindow_location = _getWindow2.location) === null || _getWindow_location === void 0 ? void 0 : _getWindow_location.href) || '',\n                    embed: `${((_getWindow3 = getWindow()) === null || _getWindow3 === void 0 ? void 0 : _getWindow3.AppsourceMode) === 'Embed'}`,\n                    duration: loggerPayload.duration || -1,\n                    clientTimestamp: new Date().toISOString(),\n                    hashedOid,\n                    tid: tid || '',\n                    isLoggedIn: `${!!signedIn}`,\n                    isMSA: `${!!isMSAUser}`,\n                    accountType: userSegment || '',\n                    collection,\n                    level,\n                    appName\n                });\n                (_this__1dsLogger = this._1dsLogger) === null || _this__1dsLogger === void 0 ? void 0 : _this__1dsLogger.trackEvent({\n                    name: `${this.logMetadata.environment.toUpperCase()}.${collection}`\n                }, data);\n                if (featureFlags.logToConsole) {\n                    console.log(JSON.stringify(data));\n                }\n            } catch (e) {}\n        } else {\n            this.preLoadEvents.push({\n                level,\n                collection,\n                payload: loggerPayload\n            });\n        }\n    }\n    flush() {\n        this._1dsLogger.getPostChannel().flush(false);\n    }\n    constructor(){\n        _define_property(this, \"_1dsLogger\", void 0);\n        _define_property(this, \"logMetadata\", void 0);\n        _define_property(this, \"store\", void 0);\n        _define_property(this, \"preLoadEvents\", []);\n    }\n}\n","function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nfunction _object_spread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        var ownKeys = Object.keys(source);\n        if (typeof Object.getOwnPropertySymbols === \"function\") {\n            ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n            }));\n        }\n        ownKeys.forEach(function(key) {\n            _define_property(target, key, source[key]);\n        });\n    }\n    return target;\n}\nimport { Logger } from './base';\nexport var SystemLogsCollection = /*#__PURE__*/ function(SystemLogsCollection) {\n    SystemLogsCollection[\"OutgoingRequests\"] = \"OutgoingRequests\";\n    return SystemLogsCollection;\n}({});\nexport class SystemLoggerTelemetry extends Logger {\n    info({ collection = \"OutgoingRequests\", event }) {\n        this.log('Info', collection, _object_spread({}, event));\n    }\n    debug({ collection = \"OutgoingRequests\", event }) {\n        this.log('Debug', collection, _object_spread({}, event));\n    }\n    error({ collection = \"OutgoingRequests\", event }) {\n        this.log('Error', collection, _object_spread({}, event));\n    }\n    warning({ collection = \"OutgoingRequests\", event }) {\n        this.log('Warn', collection, _object_spread({}, event));\n    }\n}\n","import { AuthPlugin, AuthType } from '@microsoft/1ds-auth-js';\nimport { PropertiesPlugin } from '@microsoft/1ds-properties-js';\nimport { CorrelationVectorPlugin } from '@microsoft/1ds-cv-js';\nimport { QosPlugin } from '@microsoft/1ds-qos-js';\nimport { getWindow } from '@shared/services/window';\nimport { Constants, Environment, OneDSEnvs } from '@shared/utils/constants';\nimport * as appConfig from '@shared/services/init/appConfig';\nimport { getGPCValue } from '@shared/utils/privacyUtils';\nconst envsMap = {\n    [Environment.Production]: OneDSEnvs.Production,\n    [Environment.Canary]: OneDSEnvs.Canary,\n    [Environment.Development]: OneDSEnvs.Internal,\n    [Environment.Dogfood]: OneDSEnvs.Dogfood,\n    [Environment.Test]: OneDSEnvs.Test\n};\nconst getEnvName = ()=>{\n    var _getWindow___INITIAL_STATE___config_siteEnvironment, _getWindow___INITIAL_STATE___config, _getWindow___INITIAL_STATE__, _getWindow, _process_env, _process;\n    var _getWindow___INITIAL_STATE___config_siteEnvironment_toLowerCase;\n    const siteEnvironment = (_getWindow___INITIAL_STATE___config_siteEnvironment_toLowerCase = (_getWindow = getWindow()) === null || _getWindow === void 0 ? void 0 : (_getWindow___INITIAL_STATE__ = _getWindow.__INITIAL_STATE__) === null || _getWindow___INITIAL_STATE__ === void 0 ? void 0 : (_getWindow___INITIAL_STATE___config = _getWindow___INITIAL_STATE__.config) === null || _getWindow___INITIAL_STATE___config === void 0 ? void 0 : (_getWindow___INITIAL_STATE___config_siteEnvironment = _getWindow___INITIAL_STATE___config.siteEnvironment) === null || _getWindow___INITIAL_STATE___config_siteEnvironment === void 0 ? void 0 : _getWindow___INITIAL_STATE___config_siteEnvironment.toLowerCase()) !== null && _getWindow___INITIAL_STATE___config_siteEnvironment_toLowerCase !== void 0 ? _getWindow___INITIAL_STATE___config_siteEnvironment_toLowerCase : (_process = process) === null || _process === void 0 ? void 0 : (_process_env = _process.env) === null || _process_env === void 0 ? void 0 : _process_env.siteEnvironment;\n    const env = envsMap[`${siteEnvironment}`];\n    if (!env) {\n        throw new Error('failed to load env name for telemetry');\n    }\n    return env;\n};\nconst authPlugin = new AuthPlugin();\nconst propertiesPlugin = new PropertiesPlugin();\nconst cvPlugin = new CorrelationVectorPlugin();\nconst qosPlugin = new QosPlugin();\nconst webAnalyticsConfig = {\n    urlCollectQuery: true,\n    urlCollectHash: true,\n    autoCapture: {\n        scroll: true,\n        pageView: true,\n        onLoad: true,\n        onUnload: true,\n        click: true,\n        resize: true,\n        lineage: true,\n        jsError: true\n    },\n    shareAuthStatus: true,\n    callback: {\n        signedinStatus: ()=>{\n            var _getWindow___INITIAL_STATE___users, _getWindow___INITIAL_STATE__, _getWindow;\n            var _getWindow___INITIAL_STATE___users_signedIn;\n            return (_getWindow___INITIAL_STATE___users_signedIn = (_getWindow = getWindow()) === null || _getWindow === void 0 ? void 0 : (_getWindow___INITIAL_STATE__ = _getWindow.__INITIAL_STATE__) === null || _getWindow___INITIAL_STATE__ === void 0 ? void 0 : (_getWindow___INITIAL_STATE___users = _getWindow___INITIAL_STATE__.users) === null || _getWindow___INITIAL_STATE___users === void 0 ? void 0 : _getWindow___INITIAL_STATE___users.signedIn) !== null && _getWindow___INITIAL_STATE___users_signedIn !== void 0 ? _getWindow___INITIAL_STATE___users_signedIn : false;\n        }\n    }\n};\nconst authConfig = {\n    authType: AuthType.AAD,\n    loggedInStatusCallback: ()=>{\n        var _getWindow___INITIAL_STATE___users, _getWindow___INITIAL_STATE__, _getWindow;\n        var _getWindow___INITIAL_STATE___users_signedIn;\n        return (_getWindow___INITIAL_STATE___users_signedIn = (_getWindow = getWindow()) === null || _getWindow === void 0 ? void 0 : (_getWindow___INITIAL_STATE__ = _getWindow.__INITIAL_STATE__) === null || _getWindow___INITIAL_STATE__ === void 0 ? void 0 : (_getWindow___INITIAL_STATE___users = _getWindow___INITIAL_STATE__.users) === null || _getWindow___INITIAL_STATE___users === void 0 ? void 0 : _getWindow___INITIAL_STATE___users.signedIn) !== null && _getWindow___INITIAL_STATE___users_signedIn !== void 0 ? _getWindow___INITIAL_STATE___users_signedIn : false;\n    }\n};\nconst propertiesPluginConfig = ()=>{\n    var _getGPCValue;\n    return {\n        populateBrowserInfo: true,\n        populateOperatingSystemInfo: true,\n        enableApplicationInsightsTrace: true,\n        enableApplicationInsightsUser: true,\n        userConsentCookieName: Constants.Cookies.privacyConsentAcceptedDate,\n        env: getEnvName(),\n        // eslint-disable-next-line camelcase\n        gpcDataSharingOptIn: (_getGPCValue = getGPCValue()) !== null && _getGPCValue !== void 0 ? _getGPCValue : true,\n        callback: {\n            userConsentDetails: ()=>appConfig.get('siteConsent')\n        }\n    };\n};\nconst qosConfig = ()=>{\n    var _getWindow;\n    return {\n        disableAjaxTracking: false,\n        disableFetchTracking: false,\n        maxAjaxCallsPerView: -1,\n        excludeRequestFromAutoTrackingPatterns: [\n            (_getWindow = getWindow()) === null || _getWindow === void 0 ? void 0 : _getWindow.__INITIAL_STATE__.config.telemetryEndpoint.toLowerCase()\n        ]\n    };\n};\nexport const config = ()=>{\n    var _getWindow, _getWindow1;\n    return {\n        propertyConfiguration: propertiesPluginConfig(),\n        instrumentationKey: (_getWindow = getWindow()) === null || _getWindow === void 0 ? void 0 : _getWindow.__INITIAL_STATE__.config.loggingInstrumentationKey,\n        endpointUrl: (_getWindow1 = getWindow()) === null || _getWindow1 === void 0 ? void 0 : _getWindow1.__INITIAL_STATE__.config.telemetryEndpoint,\n        webAnalyticsConfiguration: webAnalyticsConfig,\n        extensions: [\n            authPlugin,\n            propertiesPlugin,\n            cvPlugin,\n            qosPlugin\n        ],\n        extensionConfig: {\n            [authPlugin.identifier]: authConfig,\n            [propertiesPlugin.identifier]: propertiesPluginConfig(),\n            [qosPlugin.identifier]: qosConfig()\n        },\n        perfEvtsSendAll: true\n    };\n};\n","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n    try {\n        var info = gen[key](arg);\n        var value = info.value;\n    } catch (error) {\n        reject(error);\n        return;\n    }\n    if (info.done) {\n        resolve(value);\n    } else {\n        Promise.resolve(value).then(_next, _throw);\n    }\n}\nfunction _async_to_generator(fn) {\n    return function() {\n        var self = this, args = arguments;\n        return new Promise(function(resolve, reject) {\n            var gen = fn.apply(self, args);\n            function _next(value) {\n                asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n            }\n            function _throw(err) {\n                asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n            }\n            _next(undefined);\n        });\n    };\n}\nfunction _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nfunction _object_spread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        var ownKeys = Object.keys(source);\n        if (typeof Object.getOwnPropertySymbols === \"function\") {\n            ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n            }));\n        }\n        ownKeys.forEach(function(key) {\n            _define_property(target, key, source[key]);\n        });\n    }\n    return target;\n}\nfunction ownKeys(object, enumerableOnly) {\n    var keys = Object.keys(object);\n    if (Object.getOwnPropertySymbols) {\n        var symbols = Object.getOwnPropertySymbols(object);\n        if (enumerableOnly) {\n            symbols = symbols.filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n            });\n        }\n        keys.push.apply(keys, symbols);\n    }\n    return keys;\n}\nfunction _object_spread_props(target, source) {\n    source = source != null ? source : {};\n    if (Object.getOwnPropertyDescriptors) {\n        Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n        ownKeys(Object(source)).forEach(function(key) {\n            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n    }\n    return target;\n}\nimport { BrowserPerformanceClient, PublicClientApplication } from '@azure/msal-browser';\nimport { logger } from '@src/logger';\nimport { Constants } from '@shared/utils/constants';\nimport { stringifyError } from '@shared/utils/errorUtils';\nimport { getConfig } from './config';\nclass AuthClient {\n    static getInstance() {\n        if (__CLIENT__) {\n            if (!AuthClient.instance) {\n                const config = getConfig();\n                AuthClient.instance = new PublicClientApplication(_object_spread_props(_object_spread({}, config), {\n                    telemetry: {\n                        client: new BrowserPerformanceClient(config)\n                    }\n                }));\n            }\n            return AuthClient.instance;\n        } else {\n            console.warn('Cannot get PCA instance on server');\n            return null;\n        }\n    }\n    static initialize({ onSuccess, onFailure }) {\n        return _async_to_generator(function*() {\n            const instance = AuthClient.getInstance();\n            if (!AuthClient.initialized) {\n                try {\n                    yield instance.initialize();\n                    AuthClient.initialized = true;\n                    onSuccess();\n                    logger.info('MSAL initialized successfully', {\n                        action: Constants.Telemetry.Action.Login,\n                        actionModifier: Constants.Telemetry.ActionModifier.MsalInitializationSuccess\n                    });\n                } catch (error) {\n                    onFailure === null || onFailure === void 0 ? void 0 : onFailure();\n                    logger.error(stringifyError(error), {\n                        action: Constants.Telemetry.Action.Login,\n                        actionModifier: Constants.Telemetry.ActionModifier.MsalInitializationError,\n                        error\n                    });\n                }\n            } else {\n                onSuccess();\n            }\n        })();\n    }\n    // eslint-disable-next-line no-useless-constructor\n    constructor(){\n    // Private constructor to prevent direct construction calls\n    }\n}\n_define_property(AuthClient, \"instance\", void 0);\n_define_property(AuthClient, \"initialized\", false);\nexport default AuthClient;\n","import { BrowserCacheLocation } from '@azure/msal-browser';\nimport { getWindow } from '@shared/services/window';\nimport { getRedirectLoginUrl } from './windowUtils';\nexport const getSilentRedirectUri = ()=>`${getRedirectLoginUrl()}/auth-redirect.html`;\nexport const getImplicitRedirectUri = ()=>`${getRedirectLoginUrl()}/redirect`;\nexport const getConfig = ()=>{\n    const { aadApplicationId, aadLoginUrl } = getWindow().__INITIAL_STATE__.config;\n    return {\n        auth: {\n            clientId: aadApplicationId,\n            authority: `${aadLoginUrl}organizations`,\n            redirectUri: getSilentRedirectUri(),\n            navigateToLoginRequestUrl: true\n        },\n        system: {\n            allowNativeBroker: false,\n            iframeHashTimeout: 20000\n        },\n        cache: {\n            cacheLocation: BrowserCacheLocation.MemoryStorage,\n            storeAuthStateInCookie: true,\n            secureCookies: true\n        }\n    };\n};\n","import { getWindow } from '@shared/services/window';\nimport { isEmbedded } from '@shared/utils/appUtils';\nexport const getScopeByAADResource = ()=>{\n    const { aadApplicationId, marketplaceLeadsAudienceId, jarvisCM, mprpAadApplicationId, pifdEndpoint, commerceApi, graphApi, agreementAppId } = getWindow().__INITIAL_STATE__.config;\n    return {\n        spza: `${aadApplicationId}/.default`,\n        arm: `${mprpAadApplicationId}.default`,\n        graph: `${graphApi}/.default`,\n        pifd: `${pifdEndpoint}.default`,\n        commerce: `${commerceApi}/.default`,\n        jarvis: `${jarvisCM}.default`,\n        marketplaceLeads: `${marketplaceLeadsAudienceId}/.default`,\n        agreement: `${agreementAppId}/.default`\n    };\n};\nexport const getExtraScopesToConsent = ()=>{\n    return isEmbedded() ? [] : [\n        getScopeByAADResource().arm\n    ];\n};\n","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n    try {\n        var info = gen[key](arg);\n        var value = info.value;\n    } catch (error) {\n        reject(error);\n        return;\n    }\n    if (info.done) {\n        resolve(value);\n    } else {\n        Promise.resolve(value).then(_next, _throw);\n    }\n}\nfunction _async_to_generator(fn) {\n    return function() {\n        var self = this, args = arguments;\n        return new Promise(function(resolve, reject) {\n            var gen = fn.apply(self, args);\n            function _next(value) {\n                asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n            }\n            function _throw(err) {\n                asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n            }\n            _next(undefined);\n        });\n    };\n}\nfunction _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nfunction _object_spread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        var ownKeys = Object.keys(source);\n        if (typeof Object.getOwnPropertySymbols === \"function\") {\n            ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n            }));\n        }\n        ownKeys.forEach(function(key) {\n            _define_property(target, key, source[key]);\n        });\n    }\n    return target;\n}\nfunction ownKeys(object, enumerableOnly) {\n    var keys = Object.keys(object);\n    if (Object.getOwnPropertySymbols) {\n        var symbols = Object.getOwnPropertySymbols(object);\n        if (enumerableOnly) {\n            symbols = symbols.filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n            });\n        }\n        keys.push.apply(keys, symbols);\n    }\n    return keys;\n}\nfunction _object_spread_props(target, source) {\n    source = source != null ? source : {};\n    if (Object.getOwnPropertyDescriptors) {\n        Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n        ownKeys(Object(source)).forEach(function(key) {\n            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n    }\n    return target;\n}\nimport { getScopeByAADResource } from './scopes';\nimport { Constants } from '@shared/utils/constants';\nimport { logger } from '@src/logger';\nimport AuthClient from './client';\nimport { pick } from 'lodash-es';\nexport const fetchAccessTokens = /*#__PURE__*/ function() {\n    var _ref = _async_to_generator(function*({ resources }) {\n        const scopesByResource = getScopeByAADResource();\n        const filteredScopesByResource = pick(scopesByResource, resources);\n        const filteredResources = Object.keys(filteredScopesByResource);\n        const results = yield Promise.allSettled(filteredResources.map((resource)=>{\n            return AuthClient.getInstance().acquireTokenSilent({\n                scopes: [\n                    filteredScopesByResource[`${resource}`]\n                ],\n                forceRefresh: true\n            });\n        }));\n        return results.reduce((acc, result, index)=>{\n            const resource = filteredResources[`${index}`];\n            if (result.status === 'rejected') {\n                logger.error(JSON.stringify({\n                    resource,\n                    error: result.reason\n                }), {\n                    action: Constants.Telemetry.Action.Login,\n                    actionModifier: Constants.Telemetry.ActionModifier.AccessTokenSilentFetchingError,\n                    error: result.reason\n                });\n            } else {\n                logger.info(JSON.stringify({\n                    resource,\n                    fromCache: result.value.fromCache\n                }), {\n                    action: Constants.Telemetry.Action.Login,\n                    actionModifier: Constants.Telemetry.ActionModifier.AccessTokenSilentFetchingSuccess\n                });\n            }\n            return _object_spread_props(_object_spread({}, acc), {\n                [`${resource}`]: result.status === 'fulfilled' ? result.value.accessToken : ''\n            });\n        }, {});\n    });\n    return function fetchAccessTokens(_) {\n        return _ref.apply(this, arguments);\n    };\n}();\n","import { getWindow } from '@shared/services/window';\nconst redirectLoginSuffix = ()=>{\n    var _getWindow, _getWindow1, _getWindow2;\n    const isHttps = ((_getWindow = getWindow()) === null || _getWindow === void 0 ? void 0 : _getWindow.location.port) === '443' || ((_getWindow1 = getWindow()) === null || _getWindow1 === void 0 ? void 0 : _getWindow1.location.protocol) === 'https:';\n    const retVal = !isHttps && `:${(_getWindow2 = getWindow()) === null || _getWindow2 === void 0 ? void 0 : _getWindow2.location.port}` || '';\n    return retVal;\n};\nexport const getRedirectLoginUrl = ()=>{\n    var _getWindow, _getWindow1;\n    return `${(_getWindow = getWindow()) === null || _getWindow === void 0 ? void 0 : _getWindow.location.protocol}//${(_getWindow1 = getWindow()) === null || _getWindow1 === void 0 ? void 0 : _getWindow1.location.hostname}${redirectLoginSuffix()}`;\n};\n","import { getWindow } from '../services/window';\nexport const listOfUrlKeysToExcludeInAppsource = [\n    'all',\n    'admin-portal',\n    'other-unsegmented',\n    'all-office',\n    'azure',\n    'dynamics-365-for-operations'\n];\nexport const listOfUrlKeysTopLevelInAmp = [\n    'apps',\n    'featured',\n    'trending',\n    'top-test-drives',\n    'operating-systems',\n    'devops',\n    'onprem-to-cloud-migration',\n    'consulting-services'\n];\nexport const listOfUrlKeysToShowInHomePageAppsource = [\n    'web-apps',\n    'power-platform',\n    'dynamics-365',\n    'office',\n    'analytics',\n    'ai-machine-learning',\n    'ai-for-business',\n    'bot-apps',\n    'collaboration',\n    'project-management',\n    'compliance-legals',\n    'customer-service',\n    'finance',\n    'geolocation',\n    'human-resources',\n    'internet-of-things',\n    'it-management-tools',\n    'commerce',\n    'marketing',\n    'operations',\n    'productivity',\n    'sales',\n    'automotive',\n    'defense-and-intelligence',\n    'distribution',\n    'education',\n    'financial-services',\n    'government',\n    'healthcare',\n    'hospitality-and-travel',\n    'energy',\n    'manufacturing-resources',\n    'retail-and-consumer-goods',\n    'media-communications',\n    'professional-services',\n    'nonprofit',\n    'sustainability'\n];\nexport const oldToNewUrlKeys = {\n    'dashboard-data-visualization': 'visualization-reporting',\n    'ai-machine-learning': 'ai-plus-machine-learning',\n    'contact-management': 'contact-and-people',\n    'meeting-calendar-management': 'meeting-management',\n    'site-design-management': 'site-design-and-management',\n    'voice-video-conferencing': 'voice-and-video-conferencing',\n    'project-management': 'task-and-project-management',\n    'compliance-legals': 'compliance-and-legal',\n    'tax-audit': 'tax-and-audit',\n    'data-governance-privacy': 'data-governance-and-privacy',\n    'health-safety': 'health-and-safety',\n    'back-office-employee-service': 'back-office-and-employee-service',\n    'knowledge-case-management': 'knowledge-and-case-management',\n    'social-media-omnichannel-engagement': 'social-media-and-omnichannel-engagement',\n    'analytics-consolidation-reporting': 'analytics-consolidation-and-reporting',\n    'payments-credit-collections': 'credit-and-collections',\n    'compliance-risk-management': 'compliance-and-risk-management',\n    'geolocation-maps': 'maps',\n    'people-analytics-and-Insights': 'workforce-planning-and-analytics',\n    'asset-management-operations': 'asset-management-and-operations',\n    'safety-security': 'safety-and-security',\n    'smart-infrastructure-resources': 'smart-infrastructure-and-resources',\n    'vehicles-mobility': 'vehicles-and-mobility',\n    'it-management-tools': 'it-and-management-tools',\n    commerce: 'Commerce',\n    'e-commerce-social-commerce-and-marketplaces': 'e-commerce',\n    'marketing-analytics': 'analytics-marketing',\n    'campaign-management-automation': 'campaign-management-and-automation',\n    'events-resource-management': 'events-and-resource-management',\n    'research-analysist': 'research-and-analysis',\n    operations: 'operations-and-supply-chain',\n    'asset-production-management': 'asset-and-production-management',\n    'information-management-connectivity': 'information-management-and-connectivity',\n    'planning-purchasing-reporting': 'planning-purchasing-and-reporting',\n    'quality-service-management': 'quality-and-service-management',\n    'sales-order-management': 'sales-and-order-management',\n    'transportation-warehouse-management': 'transportation-and-warehouse-management',\n    'content-creation-management': 'content-creation-and-management',\n    'language-translation': 'language-and-translation',\n    'document-and-file-management': 'document-management',\n    'search-reference': 'search-and-reference',\n    sales: 'Sales',\n    'business-data-management': 'business-data-enrichment',\n    'primary-secondary-education': 'primary-and-secondary-education',\n    banking: 'banking-and-capital-markets',\n    'life-sciences': 'pharmaceuticals',\n    'manufacturing-resources': 'manufacturing-and-resources',\n    'process-manufacturing': 'chemical-and-agrochemical',\n    retailL2: 'retailers',\n    'media-communications': 'media-and-communications',\n    'media-entertainment': 'media-and-entertainment',\n    nonprofit: 'other-public-sector-industries',\n    sustainability: 'SustainabilityIndustry'\n};\nexport const filterHideList = [\n    'automated-ml',\n    'bot-services',\n    'business-robotic-process-automation',\n    'cognitive-services',\n    'data-labelling',\n    'data-preparation',\n    'knowledge-mining',\n    'ml-operations',\n    'ml-service',\n    'bigData',\n    'data-analytics',\n    'data-insights',\n    'predictive-analytics',\n    'real-time-streaming-analytics',\n    'blockchain',\n    'compute',\n    'containers',\n    'databases',\n    'developer-tools',\n    'devops',\n    'identity',\n    'integration',\n    'data-analytics-and-visualization',\n    'iot-connectivity',\n    'iot-core-services',\n    'iot-edge-modules',\n    'iot-iiot-platforms',\n    'iot-security',\n    'iot-solutions',\n    'media',\n    'migration',\n    'mixed-reality',\n    'monitoring-and-diagnostics',\n    'networking',\n    'security',\n    'storage',\n    'web',\n    'marketing-analytics',\n    'agriculture',\n    'architecture-and-construction',\n    'real-estate'\n];\n// The key is the old, and the value is the oneTaxonomy\nexport const legacyKeyMapping = {\n    Analytics: 'analytics',\n    ArtificialIntelligence: 'ai-plus-machine-learning',\n    Collaboration: 'collaboration',\n    Commerce_AS_L1: 'Commerce',\n    ComplianceLegal_AS: 'compliance-and-legal',\n    CustomerService: 'customer-service',\n    Finance: 'finance',\n    Geolocation_AS: 'geolocation',\n    HumanResources: 'human-resources',\n    IoT: 'internet-of-things',\n    ITandAdministration: 'it-and-management-tools',\n    Marketing: 'marketing',\n    OperationsSupplyChain: 'operations-and-supply-chain',\n    Productivity: 'productivity',\n    ProjectManagement: 'task-and-project-management',\n    Automotive_AS: 'automotive',\n    DefenseIntelligence_AS_L1: 'defense-and-intelligence',\n    Distribution: 'distribution',\n    Education: 'education',\n    FinancialServices: 'financial-services',\n    Government: 'government',\n    HealthCareandLifeSciences: 'healthcare',\n    HospitalityTravel_AS: 'hospitality-and-travel',\n    Energy_AS_L1: 'energy',\n    'manufacturing-resources': 'manufacturing-and-resources',\n    RetailandConsumerGoods: 'retail-and-consumer-goods',\n    MediaCommunications_AS: 'media-and-communications',\n    ProfessionalServices: 'professional-services',\n    NonprofitIGO_AS_L1: 'other-public-sector-industries',\n    Sustainability_AS: 'SustainabilityIndustry'\n};\nexport const legacySubKeyMapping = {\n    AdvancedAnalytics: 'advanced-analytics',\n    DashboardDataVisualization_AS: 'visualization-reporting',\n    AIBusiness_AS: 'ai-for-business',\n    BotApps_AS: 'bot-apps',\n    ContactManagement_AS: 'contact-and-people',\n    Chat_AS: 'chat',\n    MeetingCalendarManagement_AS: 'meeting-management',\n    SiteManagement_AS: 'site-design-and-management',\n    VoiceVidedoConferencing_AS: 'voice-and-video-conferencing',\n    ProjectSalesProposalsBids_AS_L2: 'project-sales-proposals-bids',\n    ProjectPlanningTracking_AS_L2: 'project-planning-tracking',\n    ProjectResourcePlanningUtilizationMetrics_AS_L2: 'project-resource-planning-utilization-metrics',\n    ProjectTimeExpenseReporting_AS_L2: 'project-time-expense-reporting',\n    ProjectInvoicing_AS_L2: 'project-invoicing',\n    ProjectAccountingRevenueRecognition_AS_L2: 'project-accounting-revenue-recognition',\n    TaxAudit_AS: 'tax-and-audit',\n    Legal_AS: 'legal',\n    DataGovernancePrivacy_AS: 'data-governance-and-privacy',\n    HealthSafety_AS: 'health-and-safety',\n    ContactCenter_AS: 'contact-center',\n    FaceToFaceService_AS: 'face-to-face-service',\n    BackOfficeEmployeeService_AS: 'back-office-and-employee-service',\n    KnowledgeManagement_AS: 'knowledge-and-case-management',\n    SocialOmnichannelEngagement_AS: 'social-media-and-omnichannel-engagement',\n    Accounting_AS: 'accounting',\n    AssetManagement_AS: 'asset-management',\n    AnalyticsReporting_AS: 'analytics-consolidation-and-reporting',\n    PaymentsCreditCollections_AS: 'credit-and-collections',\n    ComplianceRiskManagement_AS: 'compliance-and-risk-management',\n    Maps_AS: 'maps',\n    NewsWeather_AS: 'news-and-weather',\n    AddressValidation_AS: 'address-validation',\n    TalentAcquisition_AS: 'talent-acquisition',\n    TalentManagement_AS: 'talent-management',\n    HROperations_AS: 'hr-operations',\n    PeopleAnalyticsInsights_AS: 'workforce-planning-and-analytics',\n    AssetManagementOperations_AS: 'asset-management-and-operations',\n    ConnectedProducts_AS: 'connected-products',\n    IntelligentSupplyChain_AS: 'intelligent-supply-chain',\n    PredictiveMaintenance_AS: 'predictive-maintenance',\n    RemoteMonitoring_AS: 'remote-monitoring',\n    SafetySecurity_AS: 'safety-and-security',\n    SmartInfraResources_AS: 'smart-infrastructure-and-resources',\n    VehiclesMobility_AS: 'vehicles-and-mobility',\n    ManagementSolutions_AS: 'management-solutions',\n    BusinessApplications_AS: 'business-applications',\n    StoreManagement_AS_L2: 'store-management',\n    LoyaltyGifting_AS_L2: 'loyalty-gifting',\n    ProductInformationContentManagement_AS_L2: 'product-information-content-management',\n    PersonalizationRatingsReviews_AS_L2: 'personalization-ratings-reviews',\n    SubscriptionPostPurchaseServices_AS_L2: 'subscription-post-purchase-services',\n    Advertisement_AS: 'advertisement',\n    Analytics_AS: 'analytics-marketing',\n    CampaignMgMAutomation_AS: 'campaign-management-and-automation',\n    EmailMarketing_AS: 'email-marketing',\n    EventsResourceManagement_AS: 'events-and-resource-management',\n    ResearchAnalysis_AS: 'research-and-analysis',\n    SocialMedia_AS: 'social-media',\n    PricingOptimization_AS: 'pricing-optimization',\n    AssetProdManagement_AS: 'asset-and-production-management',\n    DemandForecasting_AS: 'demand-forecasting',\n    InfoMgMConnectivity_AS: 'information-management-and-connectivity',\n    PlanPurchasingReporting_AS: 'planning-purchasing-and-reporting',\n    QualityServiceManagement_AS: 'quality-and-service-management',\n    SalesOrderManagement_AS: 'sales-and-order-management',\n    TransportManagement_AS: 'transportation-and-warehouse-management',\n    ContentCreationMgmt_AS: 'content-creation-and-management',\n    LanguageTranslation_AS: 'language-and-translation',\n    DocumentFileManagement_AS: 'document-management',\n    WorkflowAutomation_AS: 'workflow-automation',\n    Blogs_AS: 'blogs',\n    EmailManagement_AS: 'email-management',\n    SearchReference_AS: 'search-and-reference',\n    Gamification_AS: 'gamification',\n    Telesales_AS: 'telesales',\n    ConfigurePriceQuote_AS: 'configure-price-quote',\n    ContractManagement_AS: 'contract-management',\n    CRM_AS: 'crm',\n    BusinessDataManagement_AS: 'business-data-enrichment',\n    SalesEnablement_AS: 'sales-enablement',\n    ParcelPackageShipping_AS: 'parcel-and-package-shipping',\n    Wholesale_AS: 'wholesale',\n    HigherEducation_AS: 'higher-education',\n    PrimarySecondaryEducation_AS: 'primary-and-secondary-education',\n    LibrariesMuseums_AS: 'libraries-and-museums',\n    Banking_AS: 'banking-and-capital-markets',\n    Insurance_AS: 'insurance',\n    CapitalMarkets_AS: 'capital-markets',\n    PublicFinance_AS: 'public-finance',\n    CriticalInfrastructure_AS: 'critical-infrastructure',\n    CivilianGovernment_AS: 'civilian-government',\n    PublicSafetyJustice_AS: 'public-safety-and-justice',\n    HealthPayor_AS: 'health-payor',\n    HealthProvider_AS: 'health-provider',\n    Life_Sciences_AS: 'pharmaceuticals',\n    HotelsLeisure_AS: 'hotels-and-leisure',\n    TravelTransportation_AS: 'travel-and-transportation',\n    RestaurantsFoodServices_AS: 'restaurants-and-food-services',\n    ProcessManufacturing_AS_L2: 'chemical-and-agrochemical',\n    DiscreteManufacturing_AS_L2: 'discrete-manufacturing',\n    ConsumerGoods_AS_L2: 'consumer-goods',\n    Retail_AS_L2: 'retailers',\n    MediaEntertainment_AS: 'media-and-entertainment',\n    Telecommunications_AS: 'telecommunications',\n    PartnerProfessionalServices_AS: 'partner-professional-services',\n    ArchitectureConstruction_AS_L2: 'architecture-and-construction',\n    RealEstate_AS_L2: 'real-estate'\n};\nexport const urlKeysMapping = {\n    'dashboard-data-visualization': 'visualization-reporting',\n    'ai-machine-learning': 'ai-plus-machine-learning',\n    'contact-management': 'contact-and-people',\n    'meeting-calendar-management': 'meeting-management',\n    'site-design-management': 'site-design-and-management',\n    'voice-video-conferencing': 'voice-and-video-conferencing',\n    'project-management': 'task-and-project-management',\n    'compliance-legals': 'compliance-and-legal',\n    'tax-audit': 'tax-and-audit',\n    'data-governance-privacy': 'data-governance-and-privacy',\n    'health-safety': 'health-and-safety',\n    'back-office-employee-service': 'back-office-and-employee-service',\n    'knowledge-case-management': 'knowledge-and-case-management',\n    'social-media-omnichannel-engagement': 'social-media-and-omnichannel-engagement',\n    'analytics-consolidation-reporting': 'analytics-consolidation-and-reporting',\n    'payments-credit-collections': 'credit-and-collections',\n    'compliance-risk-management': 'compliance-and-risk-management',\n    'geolocation-maps': 'maps',\n    'people-analytics-and-Insights': 'workforce-planning-and-analytics',\n    'asset-management-operations': 'asset-management-and-operations',\n    'safety-security': 'safety-and-security',\n    'smart-infrastructure-resources': 'smart-infrastructure-and-resources',\n    'vehicles-mobility': 'vehicles-and-mobility',\n    'it-management-tools': 'it-and-management-tools',\n    commerce: 'Commerce',\n    'e-commerce-social-commerce-and-marketplaces': 'undefined',\n    'marketing-analytics': 'analytics-marketing',\n    'campaign-management-automation': 'campaign-management-and-automation',\n    'events-resource-management': 'events-and-resource-management',\n    'research-analysist': 'research-and-analysis',\n    operations: 'operations-and-supply-chain',\n    'asset-production-management': 'asset-and-production-management',\n    'information-management-connectivity': 'information-management-and-connectivity',\n    'planning-purchasing-reporting': 'planning-purchasing-and-reporting',\n    'quality-service-management': 'quality-and-service-management',\n    'sales-order-management': 'sales-and-order-management',\n    'transportation-warehouse-management': 'transportation-and-warehouse-management',\n    'content-creation-management': 'content-creation-and-management',\n    'language-translation': 'language-and-translation',\n    'document-and-file-management': 'document-management',\n    'search-reference': 'search-and-reference',\n    sales: 'Sales',\n    'business-data-management': 'business-data-enrichment',\n    'primary-secondary-education': 'primary-and-secondary-education',\n    banking: 'banking-and-capital-markets',\n    'life-sciences': 'pharmaceuticals',\n    'manufacturing-resources': 'manufacturing-and-resources',\n    'process-manufacturing': 'chemical-and-agrochemical',\n    retailL2: 'retailers',\n    'media-communications': 'media-and-communications',\n    'media-entertainment': 'media-and-entertainment',\n    nonprofit: 'other-public-sector-industries',\n    sustainability: 'SustainabilityIndustry'\n};\nexport const isOneTaxonomyEnabled = ()=>{\n    var _process, _getWindow___INITIAL_STATE___config, _getWindow___INITIAL_STATE__, _getWindow;\n    return ((_process = process) === null || _process === void 0 ? void 0 : _process.env.enableOneTaxonomy) === 'true' || ((_getWindow = getWindow()) === null || _getWindow === void 0 ? void 0 : (_getWindow___INITIAL_STATE__ = _getWindow.__INITIAL_STATE__) === null || _getWindow___INITIAL_STATE__ === void 0 ? void 0 : (_getWindow___INITIAL_STATE___config = _getWindow___INITIAL_STATE__.config) === null || _getWindow___INITIAL_STATE___config === void 0 ? void 0 : _getWindow___INITIAL_STATE___config.enableOneTaxonomy);\n};\nexport const newToOldUrlKeys = Object.fromEntries(Object.entries(oldToNewUrlKeys).map(([newKey, oldKey])=>[\n        oldKey,\n        newKey\n    ]));\n","function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nfunction _object_spread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        var ownKeys = Object.keys(source);\n        if (typeof Object.getOwnPropertySymbols === \"function\") {\n            ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n            }));\n        }\n        ownKeys.forEach(function(key) {\n            _define_property(target, key, source[key]);\n        });\n    }\n    return target;\n}\nfunction ownKeys(object, enumerableOnly) {\n    var keys = Object.keys(object);\n    if (Object.getOwnPropertySymbols) {\n        var symbols = Object.getOwnPropertySymbols(object);\n        if (enumerableOnly) {\n            symbols = symbols.filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n            });\n        }\n        keys.push.apply(keys, symbols);\n    }\n    return keys;\n}\nfunction _object_spread_props(target, source) {\n    source = source != null ? source : {};\n    if (Object.getOwnPropertyDescriptors) {\n        Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n        ownKeys(Object(source)).forEach(function(key) {\n            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n    }\n    return target;\n}\nimport { reduce, isEmpty, isEqualWith, isArray, differenceWith, isEqual } from 'lodash-es';\nimport xss from 'xss';\nimport { stringifyError } from '@shared/utils/errorUtils';\nimport { logger } from '@src/logger';\nconst objCompare = (obj1, obj2)=>{\n    return isEqualWith(obj1, obj2, function(v1, v2, key) {\n        if (key === undefined) {\n            return undefined;\n        }\n        if (v1 === v2) {\n            return true;\n        }\n        if (isArray(v1) && isArray(v2)) {\n            if (isEmpty(differenceWith(v1, v2, isEqual))) {\n                return true;\n            }\n        }\n        return false;\n    });\n};\nconst recursiveDecode = ({ value, run = 3 })=>{\n    if (run <= 0) {\n        return value;\n    }\n    const decodedValue = decodeURIComponent(value);\n    return decodedValue === value ? value : recursiveDecode({\n        value: decodedValue,\n        run: --run\n    });\n};\nconst parseQuery = ({ query = {}, parser })=>reduce(query, (acc, value, key)=>{\n        const decodedValue = isArray(value) && value.map((arrayValue)=>parser(arrayValue)) || parser(value);\n        return _object_spread_props(_object_spread({}, acc), {\n            [parser(key)]: decodedValue\n        });\n    }, {});\nconst decodeString = (value)=>recursiveDecode({\n        value\n    });\nconst xssDecodeString = (value)=>{\n    return xss(decodeString(value));\n};\nconst decodeQuery = (query)=>{\n    return parseQuery({\n        query,\n        parser: (value)=>decodeString(value)\n    });\n};\nconst xssDecodeQuery = (query)=>{\n    return parseQuery({\n        query,\n        parser: (value)=>xssDecodeString(value)\n    });\n};\nexport const getXssDiff = ({ req: { url, query } })=>{\n    let hasDiff = false;\n    try {\n        const decodedUrl = decodeString(JSON.parse(`\"${url}\"`));\n        const xssDecodedUrl = xssDecodeString(decodedUrl);\n        const hasUrlDiff = decodedUrl !== xssDecodedUrl;\n        const decodedQuery = decodeQuery(query);\n        const xssDecodedQuery = xssDecodeQuery(query);\n        const hasQueryDiff = !objCompare(decodedQuery, xssDecodedQuery);\n        hasDiff = hasQueryDiff || hasUrlDiff;\n    } catch (e) {\n        hasDiff = true;\n        logger.debug(stringifyError({\n            msg: 'failed to parse query diff',\n            err: e\n        }), {\n            action: 'xssMiddleware'\n        });\n    }\n    return hasDiff;\n};\nexport const getXssDiffString = ({ url })=>{\n    const urlObject = new URL(url);\n    return getXssDiff({\n        req: {\n            url: urlObject.pathname,\n            query: Object.fromEntries(urlObject.searchParams)\n        }\n    });\n};\n","/* eslint-disable security/detect-non-literal-fs-filename */ function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nfunction _object_spread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        var ownKeys = Object.keys(source);\n        if (typeof Object.getOwnPropertySymbols === \"function\") {\n            ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n            }));\n        }\n        ownKeys.forEach(function(key) {\n            _define_property(target, key, source[key]);\n        });\n    }\n    return target;\n}\nfunction ownKeys(object, enumerableOnly) {\n    var keys = Object.keys(object);\n    if (Object.getOwnPropertySymbols) {\n        var symbols = Object.getOwnPropertySymbols(object);\n        if (enumerableOnly) {\n            symbols = symbols.filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n            });\n        }\n        keys.push.apply(keys, symbols);\n    }\n    return keys;\n}\nfunction _object_spread_props(target, source) {\n    source = source != null ? source : {};\n    if (Object.getOwnPropertyDescriptors) {\n        Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n        ownKeys(Object(source)).forEach(function(key) {\n            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n    }\n    return target;\n}\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { createBrowserHistory } from 'history';\nimport React from 'react';\nimport { matchRoutes, useLocation, useNavigate, useParams } from 'react-router';\nimport { Constants } from '@shared/utils/constants';\nimport { SpzaInstrumentService } from '@shared/services/telemetry/spza/spzaInstrument';\nimport { getWindow, getDocument } from '@shared/services/window';\nimport { IFeatureFlags } from '../State';\nimport { campaignParams, getAppViewParams } from '@shared/utils/routeUtils';\nimport { saveDataToBrowserAfterUserAgreedPrivacyConsent } from '@shared/utils/browserStorageUtils';\nimport { getCanonicalLink } from '@shared/utils/seoUtils';\nimport { getHostFromBrowserUrl, getProtocolFromBrowserUrl } from './utils/urlUtils';\nimport { getAppConfig } from '@shared/services/init/appConfig';\nimport { useTelemetry } from '@shared/hooks/useTelemetry';\nimport { logger } from '@src/logger';\nimport { getXssDiffString } from '@shared/utils/xssUtils';\nconst EMBED_PREFIX = '/embed';\nlet isEmbedded = false;\nlet appRoutes = [];\nexport let previousPage = '';\nexport let appHistory = null;\nexport const canonicalLink = (originalUrl)=>{\n    var _document_documentElement;\n    const document = getDocument();\n    const canonical = document === null || document === void 0 ? void 0 : (_document_documentElement = document.documentElement) === null || _document_documentElement === void 0 ? void 0 : _document_documentElement.querySelector(\"link[rel='canonical']\");\n    if (canonical) {\n        const appName = getAppConfig('appName');\n        const isMac = appName === Constants.canonicalAMPEnvAppName;\n        const host = getHostFromBrowserUrl();\n        const protocol = getProtocolFromBrowserUrl();\n        const canonicalLinkPrefix = `${protocol}//${host}`;\n        const canonicalLink = getCanonicalLink(originalUrl, isMac);\n        const documentCanonicalLink = `${canonicalLinkPrefix}${canonicalLink}`;\n        canonical.setAttribute('href', documentCanonicalLink);\n    }\n};\nfunction embedURL(url) {\n    return url.startsWith(EMBED_PREFIX) ? url : `${EMBED_PREFIX}${url}`;\n}\nfunction isRouteChangingAction(action) {\n    return [\n        'PUSH',\n        'POP',\n        'REPLACE'\n    ].indexOf(action) > -1;\n}\nexport function isValidRoute(location) {\n    const base = isEmbedded ? EMBED_PREFIX : '/';\n    return Boolean(matchRoutes(appRoutes, location, base));\n}\nfunction onRouteChanged(location) {\n    const originalUrl = location.pathname + location.search;\n    const payload = {\n        page: originalUrl,\n        action: Constants.Telemetry.Action.RouteChanged,\n        actionModifier: Constants.Telemetry.ActionModifier.Start,\n        details: JSON.stringify({\n            previousPage\n        })\n    };\n    SpzaInstrumentService.getProvider().probe('logTelemetryInfo', payload);\n    logger.info(payload.details, {\n        action: payload.action,\n        actionModifier: payload.actionModifier,\n        page: payload.page\n    });\n    canonicalLink(originalUrl);\n}\nfunction refererByCallbackUrl(location) {\n    const { pathname, search } = location;\n    if (pathname.includes('/callback')) {\n        const searchParams = new URLSearchParams(search);\n        const state = searchParams.get('state');\n        if (!state) {\n            return null;\n        }\n        try {\n            const _state = JSON.parse(state);\n            const decodedFrom = decodeURIComponent(_state.from);\n            const stateHostname = decodeURIComponent(_state.hostName);\n            return (decodedFrom === null || decodedFrom === void 0 ? void 0 : decodedFrom.startsWith(stateHostname)) && !getXssDiffString({\n                url: decodedFrom\n            }) ? decodedFrom : pathname;\n        } catch (e) {\n            return null;\n        }\n    }\n    return null;\n}\nexport function initRouterHistory(args) {\n    var _args_embedded;\n    const embedded = (_args_embedded = args.embedded) !== null && _args_embedded !== void 0 ? _args_embedded : false;\n    appRoutes = args.appRoutes;\n    isEmbedded = embedded;\n    appHistory = createBrowserHistory({\n        window: getWindow()\n    });\n    let previousLocation = getWindow().location;\n    // in case client receives a /callback path as a result of post-sso-login we want the client to render the referer url and not the callback url\n    if (previousLocation.pathname.includes('/callback')) {\n        const refererPathname = refererByCallbackUrl(previousLocation);\n        if (refererPathname) {\n            appHistory.push(refererPathname);\n        }\n    }\n    appHistory.listen((update)=>{\n        if (isRouteChangingAction(update.action)) {\n            onRouteChanged(previousLocation);\n        }\n        previousLocation = getWindow().location;\n    });\n}\n// These object defines valid queryParams for the different states in the app.  This allows us to\n// 'smartly' drop and add query parameters when navigating between pages\nconst FilterQuery = Constants.FilterQuery;\nexport const routeParams = {\n    appView: getAppViewParams().concat(Object.keys(new IFeatureFlags())),\n    home: [\n        'successStoryTab'\n    ],\n    marketplace: [\n        FilterQuery.industry,\n        FilterQuery.category,\n        FilterQuery.subcategories,\n        FilterQuery.subindustries,\n        FilterQuery.product,\n        'search',\n        'showPrivateApps',\n        'page',\n        'pageSize',\n        'serviceType',\n        'country',\n        'region',\n        'certification',\n        'filters',\n        FilterQuery.sortBy\n    ],\n    partnersDir: [\n        'filter',\n        'contact'\n    ],\n    partnerSuggestion: [\n        'text',\n        'type',\n        'value'\n    ],\n    blog: [],\n    appDetails: [\n        'breadcrumbUrl',\n        'tab',\n        'survey'\n    ],\n    checkout: [],\n    orderConfirmation: [],\n    myReviews: [],\n    localePicker: [],\n    partners: [],\n    partnersForm: [],\n    partnerDetail: [\n        'breadcrumbUrl',\n        'tab'\n    ],\n    sell: [],\n    about: [],\n    serviceDetail: [\n        'breadcrumbUrl'\n    ],\n    userFavouriteDetail: [],\n    privateOffersDetail: [],\n    sitemap: []\n};\nexport const routes = {\n    localePicker: {\n        name: Constants.Views.locale,\n        getPath: ()=>'/localepicker',\n        params: routeParams.localePicker.concat(routeParams.appView)\n    },\n    home: {\n        name: Constants.Views.home,\n        getPath: ()=>'/home',\n        params: routeParams.home.concat(routeParams.appView)\n    },\n    marketplace: {\n        name: Constants.Views.appGallery,\n        getPath: ()=>`/${Constants.appsGallery}`,\n        params: routeParams.marketplace.concat(routeParams.appView),\n        initialParamsValue: {\n            page: '1',\n            search: null,\n            sortBy: null,\n            [FilterQuery.filters]: null,\n            [FilterQuery.category]: null,\n            [FilterQuery.industry]: null,\n            [FilterQuery.subcategories]: null,\n            [FilterQuery.subindustries]: null,\n            [FilterQuery.product]: null,\n            serviceType: null\n        }\n    },\n    marketplaceCloudsIndustry: {\n        name: Constants.Views.cloudsIndustryGallery,\n        getPath: ()=>`/${Constants.cloudsIndustryGallery}`,\n        params: routeParams.marketplace.concat(routeParams.appView),\n        initialParamsValue: {\n            page: '1',\n            search: null,\n            sortBy: null,\n            [FilterQuery.filters]: null,\n            [FilterQuery.category]: null,\n            [FilterQuery.industry]: null,\n            [FilterQuery.subcategories]: null,\n            [FilterQuery.subindustries]: null,\n            [FilterQuery.product]: null,\n            serviceType: null\n        }\n    },\n    appDetails: {\n        name: Constants.Views.appDetails,\n        getPath: (routeArgs)=>'/product/' + routeArgs.productId + '/' + routeArgs.entityId,\n        params: routeParams.appDetails.concat(routeParams.appView)\n    },\n    checkout: {\n        name: Constants.Views.checkout,\n        getPath: (routeArgs)=>'/marketplace/checkout/' + routeArgs.entityId,\n        params: routeParams.checkout.concat(routeParams.appView)\n    },\n    orderConfirmation: {\n        name: Constants.Views.orderConfirmation,\n        getPath: ()=>'/marketplace/order-confirmation',\n        params: routeParams.orderConfirmation.concat(routeParams.appView)\n    },\n    partners: {\n        name: Constants.Views.partners,\n        getPath: ()=>'/partners',\n        params: routeParams.partners.concat(routeParams.appView)\n    },\n    blog: {\n        name: Constants.Views.blog,\n        getPath: ()=>'/blog',\n        params: routeParams.blog.concat(routeParams.appView)\n    },\n    myReviews: {\n        name: Constants.Views.reviews,\n        getPath: ()=>'/user/my-reviews',\n        params: routeParams.myReviews.concat(routeParams.appView)\n    },\n    marketing: {\n        name: Constants.Views.sell,\n        getPath: ()=>'/sell',\n        params: routeParams.sell.concat(routeParams.appView)\n    },\n    about: {\n        name: Constants.Views.about,\n        getPath: ()=>'/about',\n        params: routeParams.about.concat(routeParams.appView)\n    },\n    billingRegion: {\n        name: Constants.Views.billingregion,\n        getPath: ()=>'/billingregion',\n        params: routeParams.about.concat(routeParams.appView)\n    },\n    fieldHub: {\n        name: Constants.Views.fieldHub,\n        getPath: ()=>'/account-hub',\n        params: routeParams.about.concat(routeParams.appView)\n    },\n    marketplaceServices: {\n        name: Constants.Views.serviceGallery,\n        getPath: ()=>`/${Constants.csGallery}`,\n        params: routeParams.marketplace.concat(routeParams.appView),\n        featureFlag: 'ServiceOffers'\n    },\n    serviceDetail: {\n        name: Constants.Views.serviceDetails,\n        getPath: (routeArgs)=>`/${Constants.csGallery}/` + routeArgs.entityId,\n        params: routeParams.serviceDetail.concat(routeParams.appView)\n    },\n    marketplacePartners: {\n        name: Constants.Views.partnersHost,\n        getPath: ()=>`/${Constants.partnersAppSource}`,\n        params: routeParams.partnersDir.concat(routeParams.appView)\n    },\n    marketplacePartnerDetail: {\n        name: Constants.Views.partnerDetails,\n        getPath: (routeArgs)=>`/${Constants.partnersAppSource}/` + routeArgs.entityId + '/' + routeArgs.tabId,\n        params: routeParams.partnerDetail.concat(routeParams.appView)\n    },\n    marketplacePartnerDetailContact: {\n        name: Constants.Views.partnerDetailsContact,\n        getPath: (routeArgs)=>`/${Constants.partnersAppSource}/` + routeArgs.entityId + '/' + routeArgs.tabId + '/contact',\n        params: routeParams.partnerDetail.concat(routeParams.appView)\n    },\n    marketplacePartnerSuggestion: {\n        name: Constants.Views.partnerSuggestion,\n        getPath: ()=>`/${Constants.partnersAppSource}/suggestion`,\n        params: routeParams.partnerSuggestion.concat(routeParams.appView)\n    },\n    userFavouriteDetail: {\n        name: Constants.Views.userFavouriteDetail,\n        getPath: ()=>'/user/my-favourites',\n        params: routeParams.userFavouriteDetail.concat(routeParams.appView)\n    },\n    privateOffers: {\n        name: Constants.Views.privateOffers,\n        getPath: ()=>'/user/private-offers',\n        params: routeParams.privateOffersDetail.concat(routeParams.appView)\n    },\n    privateOfferDetails: {\n        name: Constants.Views.privateOfferDetails,\n        getPath: (routeArgs)=>`/${Constants.privateOffers}/product/${routeArgs.productId}/${routeArgs.entityId}`,\n        params: routeParams.appDetails.concat(routeParams.appView)\n    },\n    campaigns: {\n        name: Constants.Views.campaigns,\n        getPath: (routeArgs)=>`campaigns/${routeArgs.publisher}/${routeArgs.id}`,\n        params: routeParams.sitemap.concat(routeParams.appView)\n    },\n    sitemap: {\n        name: Constants.Views.sitemap,\n        getPath: ()=>'/sitemap',\n        params: routeParams.sitemap.concat(routeParams.appView)\n    },\n    redirect: {\n        name: 'redirect',\n        getPath: ()=>'/redirect',\n        params: routeParams.sitemap.concat(routeParams.appView)\n    }\n};\n// TODO: Support L2 categories\nexport function buildHref(route, oldRouteParams, newRouteParams, oldParams, newParams, keepAllParams, locale, keepCampaignParams) {\n    const validQueryParams = route.params;\n    // merge old route params\n    if (oldRouteParams) {\n        const routeKeys = Object.keys(oldRouteParams);\n        if (!newRouteParams) {\n            newRouteParams = {};\n        }\n        routeKeys.forEach(function(key) {\n            if (oldRouteParams && newRouteParams[`${key}`] === undefined) {\n                newRouteParams[`${key}`] = oldRouteParams[`${key}`];\n            }\n        });\n    }\n    let path = route.getPath(newRouteParams);\n    if (locale) {\n        path = '/' + locale + path;\n    }\n    const targetParams = {};\n    for(const op in oldParams){\n        targetParams[`${op}`] = oldParams[`${op}`];\n    }\n    if (!keepCampaignParams) {\n        campaignParams.forEach((campaignParam)=>{\n            if (targetParams[`${campaignParam}`]) {\n                delete targetParams[`${campaignParam}`];\n            }\n        });\n    }\n    for(const np in newParams){\n        const v = newParams[`${np}`];\n        if (!v) {\n            if (targetParams[`${np}`]) {\n                delete targetParams[`${np}`];\n            }\n            continue;\n        }\n        const startChar = v.charAt(0);\n        // ';' leading a string means to append to exist params\n        if (startChar === ';') {\n            const newParam = v.substr(1);\n            // No existing params for the current key\n            if (!oldParams[`${np}`]) {\n                targetParams[`${np}`] = newParam;\n            } else {\n                const splitParams = newParam.split(';');\n                targetParams[`${np}`] = splitParams.reduce((acc, key)=>{\n                    const keyLength = key.length;\n                    const keyIndex = targetParams[`${np}`].indexOf(key);\n                    // make sure it's not a subset of another item\n                    // e.g web-apps: starter-web-apps or web-apps-framework\n                    // the word web-apps is found in both however it is also an option on its own\n                    if (keyIndex > 0) {\n                        const previousCharacter = targetParams[`${np}`][keyIndex - 1];\n                        const endCharacter = targetParams[`${np}`][keyIndex + keyLength];\n                        // if it is encapsulated by ';'\n                        // or preceded by ';' and is the last word\n                        // it means we found the perfect match\n                        if (previousCharacter === ';' && (!endCharacter || endCharacter === ';')) {\n                            return acc;\n                        }\n                    }\n                    return acc + ';' + key;\n                }, targetParams[`${np}`]);\n            // should split and join without dupes\n            }\n        } else if (startChar === '!') {\n            const newParam = v.substr(1);\n            if (oldParams[`${np}`]) {\n                // should split and join without dupes\n                const splitNewParams = newParam.split(';');\n                const splitOldParams = oldParams[`${np}`].split(';');\n                // eslint-disable-next-line array-callback-return\n                splitNewParams.map((key)=>{\n                    const pos = splitOldParams.indexOf(key);\n                    if (pos >= 0) {\n                        splitOldParams.splice(pos, 1);\n                    }\n                });\n                targetParams[`${np}`] = splitOldParams.join(';');\n                if (targetParams[`${np}`].length === 0) {\n                    delete targetParams[`${np}`];\n                }\n            }\n        } else {\n            targetParams[`${np}`] = v;\n        }\n    }\n    // DIY createHref because browserHistory doesn't work\n    // return browserHistory.createHref({ pathname: path, query: targetParams });\n    let queryString = '';\n    let emptyQuery = true;\n    for(const tp in targetParams){\n        if (validQueryParams.indexOf(tp) >= 0 || validQueryParams.indexOf(tp && tp.toLowerCase()) >= 0 || keepAllParams) {\n            queryString += (emptyQuery ? '?' : '&') + tp + '=' + encodeURIComponent(targetParams[`${tp}`]);\n            emptyQuery = false;\n        }\n    }\n    const relativeUrl = `${path}${queryString}`;\n    return relativeUrl;\n}\nexport function appendQueryParams(path, queryParams) {\n    if (!path) {\n        path = '';\n    }\n    if (queryParams) {\n        const keys = Object.keys(queryParams);\n        if (keys.length > 0) {\n            path += path.indexOf('?') > 0 ? '&' : '?';\n            path += keys.map((k)=>k + '=' + queryParams[`${k}`]).join('&');\n        }\n    }\n    return path;\n}\n// This function returns a full relative path\n// for '/embed' paths in the embedded app, it will remove the '/embed' part\nexport const getCurrentRelativeUrl = ()=>{\n    const currWindow = getWindow();\n    let breadcrumbUrl = currWindow.location.pathname;\n    if (currWindow.location.search) {\n        breadcrumbUrl += currWindow.location.search;\n    }\n    if (breadcrumbUrl.indexOf(EMBED_PREFIX) === 0) {\n        breadcrumbUrl = breadcrumbUrl.substr(6);\n    }\n    return breadcrumbUrl;\n};\nexport const urlPush = (location, scrollToTop = false)=>{\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    const [{ pageView }] = useTelemetry();\n    if (!appHistory) {\n        return;\n    }\n    previousPage = getWindow().location.href;\n    const data = {\n        previousPage\n    };\n    const payload = {\n        page: location,\n        action: Constants.Telemetry.Action.PageLoad,\n        actionModifier: Constants.Telemetry.ActionModifier.Start,\n        details: JSON.stringify(data)\n    };\n    SpzaInstrumentService.getProvider().probe('logTelemetryInfo', payload);\n    logger.info(payload.details, {\n        action: payload.action,\n        actionModifier: payload.actionModifier,\n        page: payload.page\n    });\n    // The embedded app should never push anything onto the history stack\n    if (isEmbedded) {\n        const embedLocation = embedURL(location);\n        if (isValidRoute(embedLocation)) {\n            appHistory.replace(embedLocation); // CodeQL [SM01507] already checking if safe redirect by checking isValidRoute\n        }\n    } else {\n        // save cookie and local storage if needed and not show cookie banner, until the cookie is expired (which is for 13 months)\n        saveDataToBrowserAfterUserAgreedPrivacyConsent();\n        if (isValidRoute(location)) {\n            appHistory.push(location);\n        }\n        if (scrollToTop) {\n            scrollTo(0, 0);\n        }\n    }\n    pageView({\n        referrerUri: previousPage\n    });\n};\nexport const urlReplace = (location)=>{\n    if (!appHistory) {\n        return;\n    }\n    // save cookie and local storage if needed and not show cookie banner, until the cookie is expired (which is for 13 months)\n    saveDataToBrowserAfterUserAgreedPrivacyConsent();\n    previousPage = getWindow().location.href;\n    const nextLocation = isEmbedded ? embedURL(location) : location;\n    if (isValidRoute(nextLocation)) {\n        appHistory.replace(nextLocation); // CodeQL [SM01507] already checking if safe redirect by checking isValidRoute\n    }\n};\nexport const urlBack = (fallbackLocation)=>{\n    if (appHistory && previousPage) {\n        appHistory.back();\n    } else if (fallbackLocation) {\n        urlPush(fallbackLocation);\n    }\n};\n/**\n * simple assign to window.location.href\n * @param href should be fully constructed, with host, pathname, and etc.\n */ export const urlAssign = (href, shouldOpenInNewTab)=>{\n    if (shouldOpenInNewTab) {\n        getWindow() && getWindow().open(href, '_blank');\n    } else if (getWindow() && getWindow().location) {\n        getWindow().location.href = href;\n    }\n};\nexport function getQueryParamsObject(search) {\n    const searchParams = new URLSearchParams(search);\n    const result = {};\n    searchParams.forEach((value, key)=>{\n        result[`${key}`] = value;\n    });\n    return result;\n}\nexport const removeUserUniqueQueryParams = ()=>{\n    const currentLocation = getWindow().location;\n    const urlToReplace = new URL(currentLocation.href);\n    if (urlToReplace.searchParams.get(Constants.QueryStrings.CorrelationId)) {\n        urlToReplace.searchParams.delete(Constants.QueryStrings.CorrelationId);\n    }\n    if (urlToReplace.searchParams.get(Constants.QueryStrings.Referer)) {\n        urlToReplace.searchParams.delete(Constants.QueryStrings.Referer);\n    }\n    if (urlToReplace.href !== currentLocation.href) urlReplace(urlToReplace.href);\n};\n/**\n * @deprecated\n * This function exists for migrating react-router v3 to react-router-dom v6\n * and will serve only legacy Class Components that haven't been transitioned to functional components\n * Please use the relevant hooks instead in functional components\n */ export function withRouter(Component) {\n    return function ComponentWithRouter(props) {\n        const location = useLocation();\n        const navigate = useNavigate();\n        const params = useParams();\n        const query = getQueryParamsObject(location === null || location === void 0 ? void 0 : location.search);\n        return /*#__PURE__*/ _jsx(Component, _object_spread_props(_object_spread({}, props), {\n            // @ts-expect-error location with backwards compatible query\n            location: _object_spread_props(_object_spread({}, location), {\n                query\n            }),\n            params: params,\n            router: {\n                location,\n                navigate,\n                params\n            },\n            routeParams: params\n        }));\n    };\n}\n","import { logger } from '@src/logger';\nimport { ClientLogsCollection } from '@shared/logger';\nexport function storeFeedback({ action, actionModifier, details }) {\n    logger.clientLogger.info({\n        collection: ClientLogsCollection.Feedback,\n        action,\n        actionModifier,\n        details\n    });\n}\n","import { Constants } from '@shared/utils/constants';\nimport { logError } from '@shared/utils/httpClientUtil';\nimport { getAppConfig } from '@shared/services/init/appConfig';\nimport { logger } from '@src/logger';\nimport * as httpProtocol from './httpProtocol';\nexport function getUserPrivateApps(billingRegion) {\n    const endpoint = '/view/privateApps';\n    const options = {\n        requireCorrelationId: true,\n        stringifyPostData: false,\n        authenticationType: httpProtocol.AuthenticationTypes.Arm,\n        setBearerHeader: true\n    };\n    const get = httpProtocol.get(endpoint, options);\n    return get.addQueryEntry(Constants.QueryStrings.version, Constants.mprpApiVersion).addQueryEntry(Constants.QueryStrings.billingRegion, billingRegion).request().catch((error)=>{\n        logError('getUserPrivateOffers', error);\n        return Promise.reject(error);\n    });\n}\nexport function getUserPrivateApp(entitiyId, billingRegion) {\n    const endpoint = '/view/privateApp/' + entitiyId;\n    const options = {\n        requireCorrelationId: true,\n        stringifyPostData: false,\n        authenticationType: httpProtocol.AuthenticationTypes.Arm,\n        setBearerHeader: true\n    };\n    const get = httpProtocol.get(endpoint, options);\n    return get.addQueryEntry(Constants.QueryStrings.version, Constants.mprpApiVersion).addQueryEntry(Constants.QueryStrings.billingRegion, billingRegion).request().catch((error)=>{\n        logError('getUserPrivateOffers', error);\n        return Promise.reject(error);\n    });\n}\n/** This method uses ARM to get the signed-in user's subscriptions (via bearer) */ export function getUserSubscriptions() {\n    const endpoint = `${getAppConfig('armApiHost')}/subscriptions`;\n    const options = {\n        requireCorrelationId: true,\n        stringifyPostData: false,\n        allowOrigin: true,\n        authenticationType: httpProtocol.AuthenticationTypes.Arm,\n        contentType: 'application/json',\n        returnRawResponse: false\n    };\n    const get = httpProtocol.get(endpoint, options);\n    return get.addQueryEntry(Constants.QueryStrings.apiVersion, Constants.armSubscriptionApiVersion).request().catch((error)=>{\n        logError('getUserSubscriptions', error);\n        return Promise.reject(error);\n    });\n}\nexport function getPrivateOrPublicPublicId(productId, market = 'US') {\n    const endpoint = `${getAppConfig('armApiHost')}/providers/Microsoft.Marketplace/offers/${productId}`;\n    const options = {\n        requireCorrelationId: true,\n        stringifyPostData: false,\n        allowOrigin: true,\n        authenticationType: httpProtocol.AuthenticationTypes.Arm,\n        contentType: 'application/json',\n        returnRawResponse: false\n    };\n    const get = httpProtocol.get(endpoint, options);\n    return get.addQueryEntry(Constants.QueryStrings.apiVersion, Constants.mprpApiVersion).addQueryEntry(Constants.QueryStrings.market, market === null || market === void 0 ? void 0 : market.toUpperCase()).addQueryEntry(Constants.QueryStrings.ExcludePublic, 'false') // Hardcoded false since we always want to get an offer, public or private, during checkout\n    .addQueryEntry(Constants.QueryStrings.includeStopSoldPlans, 'false').addQueryEntry(Constants.QueryStrings.includePrivateOffers, 'True').request().catch((error)=>{\n        logError('getPrivateOfferById', error);\n        logger.error('getPrivateOfferById', {\n            action: 'Get product from catalog',\n            actionModifier: Constants.Telemetry.ActionModifier.Error,\n            error\n        });\n        return Promise.reject(error);\n    });\n}\n","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n    try {\n        var info = gen[key](arg);\n        var value = info.value;\n    } catch (error) {\n        reject(error);\n        return;\n    }\n    if (info.done) {\n        resolve(value);\n    } else {\n        Promise.resolve(value).then(_next, _throw);\n    }\n}\nfunction _async_to_generator(fn) {\n    return function() {\n        var self = this, args = arguments;\n        return new Promise(function(resolve, reject) {\n            var gen = fn.apply(self, args);\n            function _next(value) {\n                asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n            }\n            function _throw(err) {\n                asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n            }\n            _next(undefined);\n        });\n    };\n}\nfunction _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nfunction _object_spread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        var ownKeys = Object.keys(source);\n        if (typeof Object.getOwnPropertySymbols === \"function\") {\n            ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n            }));\n        }\n        ownKeys.forEach(function(key) {\n            _define_property(target, key, source[key]);\n        });\n    }\n    return target;\n}\nfunction ownKeys(object, enumerableOnly) {\n    var keys = Object.keys(object);\n    if (Object.getOwnPropertySymbols) {\n        var symbols = Object.getOwnPropertySymbols(object);\n        if (enumerableOnly) {\n            symbols = symbols.filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n            });\n        }\n        keys.push.apply(keys, symbols);\n    }\n    return keys;\n}\nfunction _object_spread_props(target, source) {\n    source = source != null ? source : {};\n    if (Object.getOwnPropertyDescriptors) {\n        Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n        ownKeys(Object(source)).forEach(function(key) {\n            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n    }\n    return target;\n}\nimport * as httpProtocol from './httpProtocol';\nimport { Constants } from '@shared/utils/constants';\nimport { getAppConfig } from '@shared/services/init/appConfig';\nimport { logError } from '@shared/utils/httpClientUtil';\nconst option = {\n    requireCorrelationId: true,\n    stringifyPostData: false,\n    authenticationType: httpProtocol.AuthenticationTypes.Unauthenticated\n};\nexport function getTileData({ flightCodes, embedHost, billingRegion, requestId, entityType, urlQuery, isConverged }) {\n    const endpoint = Constants.Endpoints.View.TileData;\n    let _request;\n    const tileDataOption = _object_spread_props(_object_spread({}, option), {\n        requestId,\n        requestCallback: (request)=>_request = request\n    });\n    const get = httpProtocol.get(endpoint, tileDataOption);\n    if (flightCodes) {\n        get.addQueryEntry(Constants.QueryStrings.flightCodes, flightCodes);\n    }\n    if (isConverged) {\n        get.addQueryEntry(Constants.QueryStrings.isConverged, 'true');\n    }\n    if (embedHost) {\n        get.addQueryEntry(Constants.QueryStrings.embedHost, embedHost);\n    }\n    if (billingRegion) {\n        get.addQueryEntry(Constants.QueryStrings.billingRegion, billingRegion);\n    }\n    if (entityType) {\n        get.addQueryEntry(Constants.QueryStrings.entityType, entityType);\n    }\n    if (urlQuery) {\n        for(const key in urlQuery){\n            if (Object.prototype.hasOwnProperty.call(urlQuery, key)) {\n                get.addQueryEntry(key, urlQuery[`${key}`]);\n            }\n        }\n    }\n    const data$ = get.request().catch((error)=>{\n        logError('getTileData', error);\n        return Promise.reject(error);\n    });\n    return {\n        data$,\n        request: ()=>_request\n    };\n}\nexport function getAppPricing(_) {\n    return _getAppPricing.apply(this, arguments);\n}\nfunction _getAppPricing() {\n    _getAppPricing = _async_to_generator(function*({ entityId, isEmbedded, flightCodes, billingRegion, urlQuery = {} }) {\n        let endpoint = `${Constants.Endpoints.View.AppPricing}/${entityId}`;\n        if (billingRegion) {\n            endpoint += '/' + billingRegion;\n        }\n        const get = httpProtocol.get(endpoint, option);\n        if (isEmbedded) {\n            get.addQueryEntry(Constants.QueryStrings.isEmbedded, true.toString());\n        }\n        if (flightCodes) {\n            get.addQueryEntry(Constants.QueryStrings.flightCodes, flightCodes);\n        }\n        for(const key in urlQuery){\n            get.addQueryEntry(key, urlQuery[`${key}`]);\n        }\n        try {\n            return yield get.request();\n        } catch (error) {\n            logError('getAppPricing', error);\n            throw error;\n        }\n    });\n    return _getAppPricing.apply(this, arguments);\n}\nexport function getFuturePrices(_) {\n    return _getFuturePrices.apply(this, arguments);\n}\nfunction _getFuturePrices() {\n    _getFuturePrices = _async_to_generator(function*({ entityId, isEmbedded, billingRegion, flightCodes }) {\n        let endpoint = `${Constants.Endpoints.View.AppFuturePricing}/${entityId}`;\n        if (billingRegion) {\n            endpoint += '/' + billingRegion;\n        }\n        const get = httpProtocol.get(endpoint, option);\n        if (isEmbedded) {\n            get.addQueryEntry(Constants.QueryStrings.isEmbedded, true.toString());\n        }\n        if (flightCodes) {\n            get.addQueryEntry(Constants.QueryStrings.flightCodes, flightCodes);\n        }\n        try {\n            return yield get.request();\n        } catch (error) {\n            logError('getFuturePrices', error);\n            throw error;\n        }\n    });\n    return _getFuturePrices.apply(this, arguments);\n}\nexport function getApp(_) {\n    return _getApp.apply(this, arguments);\n}\nfunction _getApp() {\n    _getApp = _async_to_generator(function*({ entityId, flightCodes }) {\n        const endpoint = `/view/app/${entityId}`;\n        const get = httpProtocol.get(endpoint, option);\n        if (flightCodes) {\n            get.addQueryEntry(Constants.QueryStrings.flightCodes, flightCodes);\n        }\n        try {\n            return yield get.request();\n        } catch (error) {\n            logError('getApp', error);\n            return yield Promise.reject(error);\n        }\n    });\n    return _getApp.apply(this, arguments);\n}\nexport function getAppRelatedAppsItems(entityId, embedHost) {\n    const endpoint = `/view/app/${entityId}/relatedApps`;\n    const get = httpProtocol.get(endpoint, option);\n    if (embedHost) {\n        get.addQueryEntry(Constants.QueryStrings.embedHost, embedHost);\n    }\n    return get.addQueryEntry(Constants.QueryStrings.version, getAppConfig(Constants.apiVersion)).request().catch((error)=>{\n        logError('getAppRelatedAppsItems', error);\n        return Promise.reject(error);\n    });\n}\nexport function getFilteredApps({ billingRegion, flightCodes, embedHost, options: { includeTestProducts = false, isConverged = false } = {}, urlQuery, searchActionType = Constants.Search.ActionType.Search, requestId = '' }) {\n    const endpoint = '/view/filteredapps';\n    const get = httpProtocol.get(endpoint, option);\n    get.setRetry(2);\n    if (flightCodes) {\n        get.addQueryEntry(Constants.QueryStrings.flightCodes, flightCodes);\n    }\n    if (includeTestProducts) {\n        get.addQueryEntry(Constants.QueryStrings.includeTestProducts, 'true');\n    }\n    if (isConverged) {\n        get.addQueryEntry(Constants.QueryStrings.isConverged, 'true');\n    }\n    if (embedHost) {\n        get.addQueryEntry(Constants.QueryStrings.embedHost, embedHost);\n    }\n    if (billingRegion) {\n        get.addQueryEntry(Constants.QueryStrings.billingRegion, billingRegion);\n    }\n    for(const key in urlQuery){\n        get.addQueryEntry(key, urlQuery[`${key}`]);\n    }\n    get.addHeader({\n        SearchActionType: searchActionType\n    });\n    return get.addQueryEntry(Constants.QueryStrings.version, getAppConfig(Constants.apiVersion)).setHeader(Constants.Headers.CatalogApiClientRequestId, requestId).request().catch((error)=>{\n        logError('getFilteredApps', error);\n        return Promise.reject(error);\n    });\n}\nexport function getFilteredCloudsIndustry({ urlQuery, requestId, searchActionType = Constants.Search.ActionType.Search }) {\n    const queryParams = _object_spread({\n        [Constants.QueryStrings.version]: getAppConfig(Constants.apiVersion)\n    }, urlQuery);\n    const get = httpProtocol.get(Constants.Endpoints.View.CloudsIndustryFiltered, _object_spread_props(_object_spread({}, option), {\n        queryParams\n    }));\n    get.setRetry(2);\n    get.addHeader({\n        SearchActionType: searchActionType\n    });\n    return get.setHeader(Constants.Headers.CatalogApiClientRequestId, requestId).request().catch((error)=>{\n        logError('getFilteredCloudsIndustry', error);\n        return Promise.reject(error);\n    });\n}\nexport function getAllAppsPricing(_) {\n    return _getAllAppsPricing.apply(this, arguments);\n}\nfunction _getAllAppsPricing() {\n    _getAllAppsPricing = _async_to_generator(function*({ billingRegion, urlQuery = {} }) {\n        let endpoint = Constants.Endpoints.View.AppPricing;\n        if (billingRegion) {\n            endpoint += '/' + billingRegion;\n        }\n        const get = httpProtocol.get(endpoint, option);\n        for(const key in urlQuery){\n            get.addQueryEntry(key, urlQuery[`${key}`]);\n        }\n        try {\n            return get.request();\n        } catch (error) {\n            logError('getAllAppsPricing', error);\n            throw error;\n        }\n    });\n    return _getAllAppsPricing.apply(this, arguments);\n}\nexport function getServices(id = '', country = '', region = '', flightCode = '') {\n    let endpoint = '';\n    if (id) {\n        endpoint += '/view/consultingservice/' + id;\n    } else {\n        endpoint += '/view/services';\n    }\n    const get = httpProtocol.get(endpoint, option);\n    if (country) {\n        get.addQueryEntry(Constants.QueryStrings.country, country);\n    }\n    if (region) {\n        get.addQueryEntry(Constants.QueryStrings.region, region);\n    }\n    if (flightCode) {\n        get.addQueryEntry(Constants.QueryStrings.flightCodes, flightCode);\n    }\n    return get.request().catch((error)=>{\n        logError('getServices', error);\n        return Promise.reject(error);\n    });\n}\nexport function getServiceRelatedAppsItems(entityId, country, region) {\n    const endpoint = `/view/consultingservice/${entityId}/relatedServices`;\n    const get = httpProtocol.get(endpoint, option);\n    if (country) {\n        get.addQueryEntry(Constants.QueryStrings.country, country);\n    }\n    if (region) {\n        get.addQueryEntry(Constants.QueryStrings.region, region);\n    }\n    return get.request().catch((error)=>{\n        logError('getServiceRelatedItems', error);\n        return Promise.reject(error);\n    });\n}\nexport function getFilteredServices({ urlQuery, searchActionType = Constants.Search.ActionType.Search, requestId, options: { includeTestProducts = false, isConverged = false } = {} }) {\n    const endpoint = '/view/filteredservices';\n    const get = httpProtocol.get(endpoint, option);\n    get.setRetry(2);\n    for(const key in urlQuery){\n        if (Object.prototype.hasOwnProperty.call(urlQuery, key)) {\n            get.addQueryEntry(key, urlQuery[`${key}`]);\n        }\n    }\n    if (includeTestProducts) {\n        get.addQueryEntry(Constants.QueryStrings.includeTestProducts, 'true');\n    }\n    if (isConverged) {\n        get.addQueryEntry(Constants.QueryStrings.isConverged, 'true');\n    }\n    get.addHeader({\n        SearchActionType: searchActionType\n    });\n    return get.setHeader(Constants.Headers.CatalogApiClientRequestId, requestId).request().catch((error)=>{\n        logError('getFilteredServices', error);\n        return Promise.reject(error);\n    });\n}\nexport function searchPartners(query, locale, partnersApiHost) {\n    return _searchPartners.apply(this, arguments);\n}\nfunction _searchPartners() {\n    _searchPartners = _async_to_generator(function*(query, locale, partnersApiHost) {\n        const searchOption = {\n            clientType: 'webBrowser',\n            authenticationType: httpProtocol.AuthenticationTypes.Unauthenticated\n        };\n        const endpoint = `${partnersApiHost}/${Constants.partnersSearchApiRoute}`;\n        try {\n            return httpProtocol.get(endpoint, searchOption).addQueryEntry(Constants.QueryStrings.searchLocale, locale).addQueryEntry(Constants.QueryStrings.searchQuery, query).request();\n        } catch (error) {\n            logError('searchPartners error', error);\n            return Promise.reject(error);\n        }\n    });\n    return _searchPartners.apply(this, arguments);\n}\nexport function getAppsDataMap({ embedHost }) {\n    const endpoint = '/view/appsdatamap';\n    const get = httpProtocol.get(endpoint, option);\n    if (embedHost) {\n        get.addQueryEntry(Constants.QueryStrings.embedHost, embedHost);\n    }\n    return get.addQueryEntry(Constants.QueryStrings.version, getAppConfig(Constants.apiVersion)).request().catch((error)=>{\n        logError('getAppsDataMap', error);\n        return Promise.reject(error);\n    });\n}\nexport function getCloudsIndustryDataMap() {\n    const get = httpProtocol.get(Constants.Endpoints.View.CloudsIndustryDataMap, option);\n    return get.addQueryEntry(Constants.QueryStrings.version, getAppConfig(Constants.apiVersion)).request().catch((error)=>{\n        logError('getCloudsIndustryDataMap', error);\n        return Promise.reject(error);\n    });\n}\nexport function getServicesDataMap() {\n    const endpoint = '/view/servicesdatamap';\n    const get = httpProtocol.get(endpoint, option);\n    return get.request().catch((error)=>{\n        logError('getServicesDataMap', error);\n        return Promise.reject(error);\n    });\n}\nexport function getCreateUiDefinition(_) {\n    return _getCreateUiDefinition.apply(this, arguments);\n}\nfunction _getCreateUiDefinition() {\n    _getCreateUiDefinition = _async_to_generator(function*({ createUiDefinitionEndpoint }) {\n        const get = httpProtocol.get(createUiDefinitionEndpoint, option);\n        return get.request().catch((error)=>{\n            logError('getCreateUiDefinition', error);\n            return Promise.reject(error);\n        });\n    });\n    return _getCreateUiDefinition.apply(this, arguments);\n}\n","function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nfunction _object_spread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        var ownKeys = Object.keys(source);\n        if (typeof Object.getOwnPropertySymbols === \"function\") {\n            ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n            }));\n        }\n        ownKeys.forEach(function(key) {\n            _define_property(target, key, source[key]);\n        });\n    }\n    return target;\n}\nimport { isEmpty } from 'lodash-es';\nimport * as superagent from 'superagent';\nimport { generateGuid } from '@shared/utils/appUtils';\nimport { Constants } from '@shared/utils/constants';\nimport { HttpError } from '@server/errors';\nimport { getAppConfig } from '@shared/services/init/appConfig';\nimport { shouldRefreshToken, logOutRequestStart, logOutRequestEnd, logOutRequestError, scrubHeaders } from '@shared/utils/httpClientUtil';\nimport { createSetAccessTokenAction } from '@shared/actions/actions';\nimport { mergeAccessToken } from '@shared/utils/accessToken';\nimport { fetchAccessTokens } from '@shared/msal/tokens';\n// eslint-disable-next-line @typescript-eslint/no-var-requires\nconst queryString = require('query-string');\n(function(HttpModule) {\n    let accessToken = null;\n    let store = null;\n    function updateAccessToken(newAccessToken) {\n        if (!isEmpty(newAccessToken)) {\n            accessToken = _object_spread({}, newAccessToken);\n        }\n    }\n    HttpModule.updateAccessToken = updateAccessToken;\n    function getAccessToken() {\n        return accessToken;\n    }\n    HttpModule.getAccessToken = getAccessToken;\n    function updateStore(outerStore) {\n        store = outerStore;\n    }\n    HttpModule.updateStore = updateStore;\n    function getStore() {\n        return store;\n    }\n    HttpModule.getStore = getStore;\n})(HttpModule || (HttpModule = {}));\n// bitmasks for the authentication types\nexport var AuthenticationTypes = /*#__PURE__*/ function(AuthenticationTypes) {\n    AuthenticationTypes[AuthenticationTypes[\"Unauthenticated\"] = 0] = \"Unauthenticated\";\n    AuthenticationTypes[AuthenticationTypes[\"Spza\"] = 1] = \"Spza\";\n    AuthenticationTypes[AuthenticationTypes[\"Graph\"] = 4] = \"Graph\";\n    AuthenticationTypes[AuthenticationTypes[\"Arm\"] = 16] = \"Arm\";\n    AuthenticationTypes[AuthenticationTypes[\"JarvisCM\"] = 64] = \"JarvisCM\";\n    AuthenticationTypes[AuthenticationTypes[\"Pifd\"] = 128] = \"Pifd\";\n    AuthenticationTypes[AuthenticationTypes[\"CommerceApi\"] = 256] = \"CommerceApi\";\n    AuthenticationTypes[AuthenticationTypes[\"MarketplaceLeads\"] = 512] = \"MarketplaceLeads\";\n    AuthenticationTypes[AuthenticationTypes[\"Agreement\"] = 1024] = \"Agreement\";\n    return AuthenticationTypes;\n}({});\nfunction isResponseWithHeader(response) {\n    return !!(response === null || response === void 0 ? void 0 : response._header);\n}\nfunction isResponseWithRequest(response) {\n    return !!(response === null || response === void 0 ? void 0 : response.request);\n}\nfunction isResponseWithReq(response) {\n    return !!(response === null || response === void 0 ? void 0 : response.req);\n}\nexport function scrubResponseHeaders(response) {\n    if (response === null || response === void 0 ? void 0 : response.headers) {\n        response.headers = scrubHeaders(response.headers);\n    }\n    if (response === null || response === void 0 ? void 0 : response.header) {\n        response.header = scrubHeaders(response.header);\n    }\n    if (isResponseWithHeader(response)) {\n        response._header = scrubHeaders(response._header);\n    }\n}\nfunction scrubErrorHeaders(error) {\n    scrubResponseHeaders(error === null || error === void 0 ? void 0 : error.response);\n    if (isResponseWithRequest(error === null || error === void 0 ? void 0 : error.response)) {\n        scrubResponseHeaders(error.response.request);\n    }\n    if (isResponseWithReq(error === null || error === void 0 ? void 0 : error.response)) {\n        scrubResponseHeaders(error.response.req);\n    }\n    return error;\n}\nexport class HttpWrapper {\n    initQuery(queryParams) {\n        for(const key in queryParams){\n            if (Object.prototype.hasOwnProperty.call(queryParams, key)) {\n                const value = queryParams[`${key}`];\n                if (value !== null && value !== undefined) {\n                    this.addQueryEntry(key, value);\n                }\n            }\n        }\n        return this;\n    }\n    addOption(option) {\n        for(const entry in option){\n            // eslint-disable-next-line no-prototype-builtins\n            if (option.hasOwnProperty(entry)) {\n                this.option[`${entry}`] = option[`${entry}`];\n            }\n        }\n        return this.option;\n    }\n    copyOption(option) {\n        option = option || this.option;\n        const copy = {\n            authenticationType: 0\n        };\n        for(const entry in option){\n            // eslint-disable-next-line no-prototype-builtins\n            if (option.hasOwnProperty(entry)) {\n                copy[`${entry}`] = option[`${entry}`];\n            }\n        }\n        return copy;\n    }\n    setQuery(query) {\n        if (query) {\n            this.query = query;\n        }\n        return this;\n    }\n    addQuery(query) {\n        for(const entry in query){\n            // eslint-disable-next-line no-prototype-builtins\n            if (query.hasOwnProperty(entry)) {\n                this.query[`${entry}`] = query[`${entry}`];\n            }\n        }\n        return this;\n    }\n    addQueryEntry(entry, value) {\n        if (!this.query) {\n            this.setQuery({});\n        }\n        this.query[`${entry}`] = value;\n        return this;\n    }\n    getQueryString(query) {\n        query = query || this.query;\n        if (query) {\n            // It uses encodeURIComponent if 'strict' is set to false. Otherwise it strictly encodes URI components with strict-uri-encode.\n            return queryString.stringify(query, {\n                strict: false\n            });\n        } else {\n            return '';\n        }\n    }\n    setData(data) {\n        this.data = data;\n        return this;\n    }\n    setRetry(retry) {\n        this.option.retry = retry;\n        return this;\n    }\n    setHeader(entry, value) {\n        this.header[`${entry}`] = value;\n        return this;\n    }\n    setAuthHeader(token, authHeaderTitle = Constants.Headers.Authorization) {\n        if (token) {\n            this.header[`${authHeaderTitle}`] = token.startsWith('Bearer') ? token : 'Bearer ' + token;\n        }\n        return this;\n    }\n    addHeader(header) {\n        for(const entry in header){\n            // eslint-disable-next-line no-prototype-builtins\n            if (header.hasOwnProperty(entry)) {\n                this.header[`${entry}`] = header[`${entry}`];\n            }\n        }\n        return this;\n    }\n    emptyQuery() {\n        if (!this.query) {\n            return true;\n        }\n        for(const entry in this.query){\n            // eslint-disable-next-line no-prototype-builtins\n            if (this.query.hasOwnProperty(entry)) {\n                return false;\n            }\n        }\n        return true;\n    }\n    request(retry) {\n        return this.requestWithHeaders(retry).then((d)=>d.data);\n    }\n    requestWithHeaders(retry) {\n        let url = this.endpoint;\n        if (!this.emptyQuery()) {\n            url += '?' + this.getQueryString(this.query);\n        }\n        let request = null;\n        if (this.method === 'POST') {\n            request = superagent.post(url);\n        }\n        if (this.method === 'PATCH') {\n            request = superagent.patch(url);\n        }\n        if (this.method === 'PUT') {\n            request = superagent.put(url);\n        }\n        if (this.method === 'GET') {\n            request = superagent.get(url);\n        }\n        if (this.method === 'DELETE') {\n            request = superagent.delete(url);\n        }\n        if (retry == null) {\n            retry = this.option.retry;\n        }\n        if (retry > 0) {\n            request.retry(retry);\n        }\n        const timeout = this.option.timeout;\n        if (timeout && timeout > 0) {\n            request.timeout(timeout);\n        }\n        if (this.option.setBuffer) {\n            request.buffer();\n        }\n        if (this.option.responseType) {\n            request.responseType(this.option.responseType);\n        }\n        if (this.option.type) {\n            request.type(this.option.type);\n        }\n        if (getAppConfig().agent && this.endpoint.startsWith('https')) {\n            request.agent(getAppConfig().agent);\n        }\n        if (this.option.allowOrigin) {\n            this.addHeader({\n                'Access-Control-Allow-Origin': '*',\n                'Access-Control-Allow-Methods': 'POST, PUT, GET, OPTIONS, DELETE',\n                'Access-Control-Allow-Headers': 'x-requested-with'\n            });\n        }\n        if (this.option.requireCorrelationId && !this.header[Constants.Headers.CorrelationId]) {\n            return Promise.reject(Error('CorrelationId not found in the header'));\n        }\n        // set headers\n        for(const property in this.header){\n            // eslint-disable-next-line no-prototype-builtins\n            if (this.header.hasOwnProperty(property)) {\n                request.set(property, this.header[`${property}`]);\n            }\n        }\n        // POST & DELETE\n        if (this.method === 'POST' || this.method === 'PATCH' || this.method === 'PUT' || this.method === 'DELETE') {\n            if (this.option.contentType === 'application/json' && typeof this.data !== 'string' && this.option.stringifyPostData) {\n                request.send(JSON.stringify(this.data));\n            } else {\n                request.send(this.data);\n            }\n        }\n        // eslint-disable-next-line @typescript-eslint/no-this-alias\n        const self = this;\n        // refresh access token\n        let shouldRefreshAccessToken = false;\n        if (this.option.authenticationType > 0) {\n            // eslint-disable-next-line @typescript-eslint/no-use-before-define\n            const accessToken = HttpModule.getAccessToken();\n            if (__CLIENT__ && accessToken) {\n                if (this.option.authenticationType & 1) {\n                    shouldRefreshAccessToken = shouldRefreshAccessToken || shouldRefreshToken(accessToken.spza);\n                }\n                if (this.option.authenticationType & 4) {\n                    shouldRefreshAccessToken = shouldRefreshAccessToken || shouldRefreshToken(accessToken.graph);\n                }\n                if (this.option.authenticationType & 16) {\n                    shouldRefreshAccessToken = shouldRefreshAccessToken || shouldRefreshToken(accessToken.arm);\n                }\n                if (this.option.authenticationType & 256) {\n                    shouldRefreshAccessToken = shouldRefreshAccessToken || shouldRefreshToken(accessToken.commerce);\n                }\n                if (this.option.authenticationType & 64) {\n                    shouldRefreshAccessToken = shouldRefreshAccessToken || shouldRefreshToken(accessToken.jarvis);\n                }\n                if (this.option.authenticationType & 128) {\n                    shouldRefreshAccessToken = shouldRefreshAccessToken || shouldRefreshToken(accessToken.pifd);\n                }\n                if (this.option.authenticationType & 512) {\n                    shouldRefreshAccessToken = shouldRefreshAccessToken || shouldRefreshToken(accessToken.marketplaceLeads);\n                }\n                if (this.option.authenticationType & 1024) {\n                    shouldRefreshAccessToken = shouldRefreshAccessToken || shouldRefreshToken(accessToken.agreement);\n                }\n            }\n        }\n        const setAuthenticationHeaders = (authenticationType, accessToken, setBearerHeader = false)=>{\n            if (accessToken) {\n                if (authenticationType & 1 && accessToken.spza) {\n                    if (setBearerHeader) {\n                        request.set(Constants.Headers.Authorization, Constants.Headers.Bearer + accessToken.spza);\n                    } else {\n                        request.set(Constants.Headers.Authorization, accessToken.spza);\n                    }\n                }\n                if (authenticationType & 4 && accessToken.graph) {\n                    request.set(Constants.Headers.Authorization, Constants.Headers.Bearer + accessToken.graph);\n                }\n                if (authenticationType & 16 && accessToken.arm) {\n                    request.set(Constants.Headers.Authorization, Constants.Headers.Bearer + accessToken.arm);\n                }\n                if (authenticationType & 256 && accessToken.commerce) {\n                    request.set(Constants.Headers.Authorization, Constants.Headers.Bearer + accessToken.commerce);\n                }\n                if (authenticationType & 64 && accessToken.jarvis) {\n                    request.set(Constants.Headers.Authorization, Constants.Headers.Bearer + accessToken.jarvis);\n                }\n                if (authenticationType & 128 && accessToken.pifd) {\n                    request.set(Constants.Headers.Authorization, Constants.Headers.Bearer + accessToken.pifd);\n                }\n                if (authenticationType & 512 && accessToken.marketplaceLeads) {\n                    request.set(Constants.Headers.Authorization, Constants.Headers.Bearer + accessToken.marketplaceLeads);\n                }\n                if (authenticationType & 1024 && accessToken.agreement) {\n                    request.set(Constants.Headers.Authorization, Constants.Headers.Bearer + accessToken.agreement);\n                }\n            }\n        };\n        // the end request promise\n        // it will perform the actual POST, PUT, GET or DEL\n        const endRequest = ()=>{\n            // sets the authentication headers depending on authentication type (if needed)\n            setAuthenticationHeaders(this.option.authenticationType, HttpModule.getAccessToken(), this.option.setBearerHeader);\n            return new Promise((resolve, reject)=>{\n                setTimeout(()=>logOutRequestStart(request));\n                if (self.option.requestCallback) {\n                    self.option.requestCallback({\n                        abort: ()=>{\n                            return request.abort();\n                        }\n                    });\n                }\n                const start = Date.now();\n                request.end((err, res)=>{\n                    var _res_headers_contenttype, _res_headers_contenttype1;\n                    const duration = Date.now() - start;\n                    if (self.option.requestCallback) {\n                        self.option.requestCallback(null);\n                    }\n                    if (err) {\n                        const error = new HttpError(err);\n                        setTimeout(()=>logOutRequestError(request, res, duration, error, false));\n                        return reject(error);\n                    }\n                    const isJSON = (_res_headers_contenttype = res.headers['content-type']) === null || _res_headers_contenttype === void 0 ? void 0 : _res_headers_contenttype.includes('application/json');\n                    const isRemoteChunk = ((_res_headers_contenttype1 = res.headers['content-type']) === null || _res_headers_contenttype1 === void 0 ? void 0 : _res_headers_contenttype1.includes('application/javascript')) && (this.endpoint.includes('agorasstatic') || this.endpoint.endsWith('remoteEntry.js'));\n                    setTimeout(()=>logOutRequestEnd(request, res, duration));\n                    if (self.option.returnRawResponse) {\n                        resolve({\n                            data: res,\n                            headers: res.headers\n                        });\n                    } else if (res.ok && isJSON) {\n                        resolve({\n                            data: res.body,\n                            headers: res.headers\n                        });\n                    } else if (isRemoteChunk) {\n                        resolve({\n                            data: res.body.toString('utf-8'),\n                            headers: res.headers\n                        });\n                    } else {\n                        resolve({\n                            data: res.text,\n                            headers: res.headers\n                        });\n                    }\n                });\n            });\n        };\n        if (shouldRefreshAccessToken) {\n            // refresh access token will never fail\n            // it is designed to always resolve even if the refresh itself fails\n            const promise = fetchAccessTokens({\n                resources: [\n                    'spza',\n                    'arm',\n                    'graph',\n                    'commerce',\n                    'jarvis',\n                    'marketplaceLeads',\n                    'pifd',\n                    'agreement'\n                ]\n            });\n            return promise.then((accessToken)=>{\n                var _HttpModule_getStore;\n                // update the accesstoken in the state\n                if (!accessToken) {\n                    return Promise.reject(Constants.Telemetry.Action.RefreshToken);\n                }\n                const storedToken = mergeAccessToken({\n                    currentAccessToken: HttpModule.getAccessToken(),\n                    newAccessToken: accessToken\n                });\n                (_HttpModule_getStore = HttpModule.getStore()) === null || _HttpModule_getStore === void 0 ? void 0 : _HttpModule_getStore.dispatch(createSetAccessTokenAction(storedToken));\n                HttpModule.updateAccessToken(storedToken);\n                // endRequest returns a promise. So we need not catch exceptions from this then(..)\n                return endRequest();\n            });\n        }\n        return endRequest();\n    }\n    constructor(endpoint, method, option){\n        _define_property(this, \"endpoint\", '');\n        _define_property(this, \"query\", {});\n        _define_property(this, \"baseUrl\", '');\n        _define_property(this, \"header\", {});\n        _define_property(this, \"option\", {});\n        _define_property(this, \"method\", '');\n        _define_property(this, \"data\", void 0);\n        const appConfig = getAppConfig();\n        // set default option\n        this.addOption({\n            clientType: appConfig.runtimeEnvironment,\n            contentType: 'application/json',\n            requireCorrelationId: true,\n            flushTelemetry: false,\n            retry: 2,\n            stringifyPostData: false,\n            parseResult: true,\n            allowOrigin: false,\n            fullEndpoint: false,\n            returnRawResponse: false,\n            authenticationType: 0,\n            setBearerHeader: false,\n            queryParams: {}\n        });\n        // merge custom option\n        if (option) {\n            this.addOption(option);\n        }\n        if (this.option.fullEndpoint) {\n            this.baseUrl = appConfig.hostname;\n            this.endpoint = `${this.baseUrl}${endpoint}`;\n        } else {\n            if (__SERVER__ && endpoint.startsWith('/')) {\n                endpoint = `${appConfig.hostname}${endpoint}`;\n            }\n            this.endpoint = endpoint;\n        }\n        if (appConfig.XMSClientName) {\n            this.header[Constants.Headers.XMSClientName] = appConfig.XMSClientName;\n        }\n        if (this.option.clientType !== 'browser') {\n            this.header[Constants.Headers.UserAgent] = appConfig.httpUserAgent;\n        }\n        // set correlationId\n        if (this.option.requireCorrelationId) {\n            this.header[Constants.Headers.CorrelationId] = appConfig.correlationId;\n        }\n        this.header[Constants.Headers.ContentType] = this.option.contentType;\n        this.header[Constants.Headers.RequestId] = this.option.requestId || generateGuid();\n        this.initQuery(this.option.queryParams);\n        this.method = method;\n    }\n}\nexport function post(endpoint, option) {\n    return new HttpWrapper(endpoint, 'POST', option);\n}\nexport function patch(endpoint, option) {\n    return new HttpWrapper(endpoint, 'PATCH', option);\n}\nexport function put(endpoint, option) {\n    return new HttpWrapper(endpoint, 'PUT', option);\n}\nexport function get(endpoint, option) {\n    return new HttpWrapper(endpoint, 'GET', option);\n}\nexport function del(endpoint, option) {\n    return new HttpWrapper(endpoint, 'DELETE', option);\n}\nexport const errorMessage = {\n    'Failed to post': 'Failed to make a POST request',\n    'Failed to get': 'Failed to make a GET request',\n    'Failed to delete': 'Failed to make a DELETE request',\n    'appId not availble': 'appId is not available to perform this operation',\n    'correlationId not availble': 'correlationId is missing to perform this operation'\n};\nexport var HttpModule;\n","function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nclass RequestError extends Error {\n    getRequestUrl(err) {\n        var _err_response_request, _err_response, _err_response_req, _err_response1;\n        // @ts-expect-error - superagent types do not reflect the existence of the req property\n        return ((_err_response = err.response) === null || _err_response === void 0 ? void 0 : (_err_response_request = _err_response.request) === null || _err_response_request === void 0 ? void 0 : _err_response_request.url) || ((_err_response1 = err.response) === null || _err_response1 === void 0 ? void 0 : (_err_response_req = _err_response1.req) === null || _err_response_req === void 0 ? void 0 : _err_response_req.url);\n    }\n    constructor(err){\n        super(err.toString()), _define_property(this, \"status\", void 0), _define_property(this, \"statusCode\", void 0), _define_property(this, \"name\", void 0), _define_property(this, \"message\", void 0), _define_property(this, \"stack\", void 0);\n        const requestUrl = this.getRequestUrl(err);\n        this.message = `failed requesting ${requestUrl}: ${err.message}; status code ${err.status}`;\n        this.status = err.status;\n        this.statusCode = err.status;\n        this.name = err.name;\n        this.stack = err.stack;\n    }\n}\nexport default RequestError;\n","function getRootObject() {\n    const root = globalThis;\n    return root;\n}\nexport function get(entry) {\n    let root = getRootObject();\n    if (entry) {\n        return root.APPCONFIG[entry];\n    }\n    return root.APPCONFIG;\n}\nexport function set(entry, value) {\n    let root = getRootObject();\n    root.APPCONFIG[entry] = value;\n}\nexport function setConfigs(configs) {\n    let root = getRootObject();\n    for(let entry in configs){\n        if (configs.hasOwnProperty(entry)) {\n            root.APPCONFIG[entry] = configs[entry];\n        }\n    }\n}\nexport let getAppConfig = get;\nexport function init(configs) {\n    let root = getRootObject();\n    root.APPCONFIG = {};\n    root.getAppConfig = get;\n    if (configs) {\n        setConfigs(configs);\n    }\n}\n","// ----------------------------------------------------------------------\n// <copyright company=\"Microsoft Corporation\">\n//        Copyright (c) Microsoft Corporation.  All rights reserved.\n// </copyright>\n// ----------------------------------------------------------------------\nexport class LibAction {\n    count(aggregratingName, service) {\n        service.aggregation.increase(aggregratingName);\n    }\n}\n","// ----------------------------------------------------------------------\n// <copyright company=\"Microsoft Corporation\">\n//        Copyright (c) Microsoft Corporation.  All rights reserved.\n// </copyright>\n// ----------------------------------------------------------------------\nfunction _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nexport class InfoBuffer {\n    lookup(entryName) {\n        return this.record[entryName];\n    }\n    remove(entryName) {\n        this.record[entryName] = undefined;\n    }\n    create(entryName, info) {\n        if (this.record[entryName]) {\n            return false;\n        }\n        this.record[entryName] = info;\n        return true;\n    }\n    update(entryName, info) {\n        if (!this.record[entryName]) {\n            return false;\n        }\n        this.record[entryName] = info;\n        return true;\n    }\n    constructor(name){\n        _define_property(this, \"name\", void 0);\n        _define_property(this, \"record\", void 0);\n        this.name = name || 'instrument.core.InfoBuffer';\n        this.record = {};\n    }\n}\nexport class AggregationBuffer {\n    increase(entryName) {\n        this.record[entryName] += 1;\n        let action = this.callback['increase'];\n        if (action) {\n            action.apply(this, [\n                entryName,\n                this.record[entryName]\n            ]);\n        }\n        return true;\n    }\n    add(entryName, size) {\n        this.record[entryName] += size;\n        let action = this.callback['add'];\n        if (action) {\n            action.apply(this, [\n                entryName,\n                this.record[entryName]\n            ]);\n        }\n        return true;\n    }\n    empty(entryName) {\n        if (!this.record[entryName]) {\n            return false;\n        }\n        this.record[entryName] = 0;\n        let action = this.callback['empty'];\n        if (action) {\n            action.apply(this, [\n                entryName,\n                this.record[entryName]\n            ]);\n        }\n        return true;\n    }\n    addEntry(entryName) {\n        if (this.record[entryName]) {\n            return false;\n        }\n        this.record[entryName] = 0;\n        return true;\n    }\n    constructor(name){\n        _define_property(this, \"name\", void 0);\n        _define_property(this, \"record\", void 0);\n        _define_property(this, \"callback\", void 0);\n        this.name = name || 'instrument.core.AggregationBuffer';\n        this.record = {};\n        this.callback = {};\n    }\n}\nexport class Buffer {\n    push(item) {\n        if (this.overflow && this.size + 1 > this.length) {\n            this.overflow(this.data[(this.end + 1) % this.length], this);\n        }\n        this.data[(this.end + 1) % this.length] = item;\n        if (this.size < this.length) {\n            if (this.size + 1 > this.length) {\n                this.size = this.length;\n            } else {\n                this.size += 1;\n            }\n        }\n        this.end = (this.end + 1) % this.length;\n        this.start = (this.length + this.end - this.size + 1) % this.length;\n        return this.size;\n    }\n    pop() {\n        if (this.size === 0) {\n            return null;\n        }\n        let item = this.data[this.end];\n        delete this.data[this.end];\n        this.end = (this.end - 1 + this.length) % this.length;\n        this.size--;\n        return item;\n    }\n    firstItem() {\n        return this.data[this.start];\n    }\n    lastItem() {\n        return this.data[this.end];\n    }\n    getItem(index) {\n        return this.data[(this.start + index) % this.length];\n    }\n    setItem(index, item) {\n        this.data[(this.start + index) % this.length] = item;\n    }\n    isEmpty() {\n        return this.size === 0;\n    }\n    isFull(additionalSize = 0) {\n        return this.getLength() + additionalSize > this.size;\n    }\n    setOverflow(overflow) {\n        this.overflow = overflow;\n    }\n    getLength() {\n        return this.length;\n    }\n    getSize() {\n        return this.size;\n    }\n    getEnd() {\n        return this.end;\n    }\n    empty() {\n        this.size = this.start = 0;\n        this.end = this.length - 1;\n        return this;\n    }\n    jsondump() {\n        return JSON.stringify(this.data);\n    }\n    constructor(length){\n        _define_property(this, \"name\", void 0);\n        _define_property(this, \"data\", void 0);\n        _define_property(this, \"size\", void 0);\n        _define_property(this, \"length\", void 0);\n        _define_property(this, \"start\", void 0);\n        _define_property(this, \"end\", void 0);\n        _define_property(this, \"overflow\", void 0);\n        this.name = 'instrument.core.Buffer';\n        this.data = [];\n        this.size = 0;\n        this.overflow = null;\n        this.start = 0;\n        this.end = 0;\n        this.length = length;\n    }\n}\n","// ----------------------------------------------------------------------\n// <copyright company='Microsoft Corporation'>\n//        Copyright (c) Microsoft Corporation.  All rights reserved.\n// </copyright>\n// ----------------------------------------------------------------------\nfunction _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nexport class ConsumerService {\n    register(service) {\n        return service.addConsumerService(this);\n    }\n    constructor(name, instrumentService){\n        _define_property(this, \"name\", void 0);\n        _define_property(this, \"action\", void 0);\n        _define_property(this, \"buffer\", void 0);\n        _define_property(this, \"aggregation\", void 0);\n        _define_property(this, \"instrumentService\", void 0);\n        this.name = name;\n        if (instrumentService) {\n            this.instrumentService = instrumentService;\n            this.register(instrumentService);\n        }\n    }\n}\n","// ----------------------------------------------------------------------\n// <copyright company='Microsoft Corporation'>\n//        Copyright (c) Microsoft Corporation.  All rights reserved.\n// </copyright>\n// ----------------------------------------------------------------------\nfunction _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nimport { InfoBuffer } from './buffer';\nexport class InstrumentService {\n    getProvider(name) {\n        let providerName = name ? name : 'static';\n        return this.provider[providerName];\n    }\n    addProvider(provider) {\n        let name = provider.name;\n        if (this.provider[name] !== undefined) {\n            return false;\n        }\n        this.provider[name] = provider;\n        return true;\n    }\n    updateProvider(provider) {\n        let name = provider.name;\n        if (this.provider[name] === undefined) {\n            return false;\n        }\n        this.provider[name] = provider;\n        return true;\n    }\n    removeProvider(name) {\n        this.provider[name] = undefined;\n    }\n    getConsumerService(name) {\n        return this.service[name];\n    }\n    addConsumerService(ConsumerService) {\n        let name = ConsumerService.name;\n        if (this.service[name] !== undefined) {\n            return false;\n        }\n        this.service[name] = ConsumerService;\n        return true;\n    }\n    updateConsumerService(service) {\n        let name = service.name;\n        if (this.service[name] === undefined) {\n            return false;\n        }\n        this.service[name] = service;\n        return true;\n    }\n    removeConsumerService(name) {\n        this.service[name] = undefined;\n    }\n    // its not private, its public.\n    constructor(){\n        _define_property(this, \"name\", void 0);\n        _define_property(this, \"provider\", void 0);\n        _define_property(this, \"service\", void 0);\n        _define_property(this, \"systemInfo\", void 0);\n        this.name = 'instrumentService';\n        this.provider = {};\n        this.service = {};\n        this.systemInfo = new InfoBuffer();\n    }\n}\n","// ----------------------------------------------------------------------\n// <copyright company='Microsoft Corporation'>\n//        Copyright (c) Microsoft Corporation.  All rights reserved.\n// </copyright>\n// ----------------------------------------------------------------------\nfunction _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nexport class Provider {\n    register(service) {\n        return service.addProvider(this);\n    }\n    enableProbe(probeName, service, action) {\n        let ecb = {\n            service: service,\n            action: action\n        };\n        if (!this.enabling[probeName]) {\n            this.enabling[probeName] = [];\n        }\n        this.enabling[probeName].push(ecb);\n        return true;\n    }\n    disableProbe(probeName) {\n        this.enabling[probeName] = undefined;\n    }\n    probe(name, context) {\n        let enablings = this.enabling[name];\n        if (enablings) {\n            for (let enabling of enablings){\n                enabling.action(name, enabling.service, context);\n            }\n        }\n    }\n    constructor(name, instrumentService){\n        _define_property(this, \"name\", void 0);\n        _define_property(this, \"namedProbe\", void 0);\n        _define_property(this, \"enabling\", void 0);\n        this.name = name;\n        if (instrumentService) {\n            this.register(instrumentService);\n        }\n        this.enabling = {};\n    }\n}\n","// ----------------------------------------------------------------------\n// <copyright company=\"Microsoft Corporation\">\n//        Copyright (c) Microsoft Corporation.  All rights reserved.\n// </copyright>\n// ----------------------------------------------------------------------\nimport { Provider } from '../core/provider';\nexport class StaticProvider extends Provider {\n    constructor(name, instrumentService){\n        super(name, instrumentService);\n    }\n}\n","// ----------------------------------------------------------------------\n// <copyright company='Microsoft Corporation'>\n//        Copyright (c) Microsoft Corporation.  All rights reserved.\n// </copyright>\n// ----------------------------------------------------------------------\nfunction _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nimport { LibAction } from '../core/action';\nimport { Buffer, AggregationBuffer } from '../core/buffer';\nimport { ConsumerService } from '../core/consumer';\nimport { SpzaInstrumentService } from '../spza/spzaInstrument';\nimport { Constants } from '../../../utils/constants';\nimport * as httpProtocol from '../../http/httpProtocol';\nimport { getAppConfig } from '../../init/appConfig';\nimport { getWindow } from '../../../services/window';\nimport { logger } from '@src/logger';\nconst PUBLISH_RETRY_COUNT = 2;\nclass TelemetryActions extends LibAction {\n    initSystemInfo(probeName, service) {\n        service.systemInfo.correlationId = getAppConfig('correlationId');\n    }\n    loggerFlush(probeName, service) {\n        const buffer = service.buffer;\n        const events = [];\n        if (buffer && buffer.getSize() > 0) {\n            while(!buffer.isEmpty()){\n                const event = buffer.pop().data;\n                events.push(event);\n            }\n            const correlationId = getAppConfig('correlationId');\n            const telemetryPayload = {\n                events,\n                correlationId\n            };\n            service.action.publishTelemetryEvent(telemetryPayload);\n        }\n    }\n    serverLogInfoMessageEvent(probeName, service, payload) {\n        if (payload.actionModifier === Constants.Telemetry.ActionModifier.Error) {\n            service.action.logHelper.Logger.logError(payload.action, payload.details, '');\n            logger.error(payload.details, {\n                action: payload.action,\n                actionModifier: payload.actionModifier,\n                appName: payload.appName,\n                page: payload.page\n            });\n        } else {\n            service.action.logHelper.Logger.logInfoMessage(payload.action, payload.details);\n            logger.info(payload.details, {\n                action: payload.action,\n                actionModifier: payload.actionModifier,\n                appName: payload.appName,\n                page: payload.page\n            });\n        }\n    }\n    clientLogInfoMessageEvent(probeName, service, payload) {\n        SpzaInstrumentService.getProvider().probe('logTelemetryInfo', payload);\n    }\n    serverLogErrorMessageEvent(probeName, service, payload) {\n        service.action.logHelper.Logger.logError(payload.operation, payload.message, '');\n        logger.error(payload.message, {\n            action: payload.operation\n        });\n    }\n    clientLogErrorMessageEvent(probeName, service, payload) {}\n    serverLogOutRequestEvent(probeName, service, payload) {\n        service.action.logHelper.Logger.ServerLogOutRequest(payload);\n    }\n    clientLogOutRequestEvent(probeName, service, payload) {\n        service.action.pushRecordInBuffer(probeName, service, payload, false);\n    }\n    clientlogAndFlushOutRequestEvent(probeName, service, payload) {\n        service.action.pushRecordInBuffer(probeName, service, payload, true);\n    }\n    publishTelemetryEvent(telemetryPayload) {\n        const window = getWindow();\n        if (window) {\n            const outEvents = {\n                TelemetryEvents: telemetryPayload.events\n            };\n            const serializedEvents = JSON.stringify(outEvents);\n            const options = {\n                authenticationType: httpProtocol.AuthenticationTypes.Unauthenticated,\n                retry: PUBLISH_RETRY_COUNT\n            };\n            const { region } = getAppConfig('config');\n            httpProtocol.post('/api/logOutRequests', options).setData(serializedEvents).setHeader(Constants.Headers.CorrelationId, telemetryPayload.correlationId).setHeader(Constants.Headers.XMSClientRegion, region).request().then((res)=>{\n                console.log('[Success] Telemetry Out Requsts Logs submitted successfully');\n            }, (err)=>{\n                console.log('[Fail] Telemetry Out Requsts Log failed : ' + err);\n            });\n        }\n    }\n    pushRecordInBuffer(probeName, service, event, flushLog) {\n        const record = {\n            provider: 'shared',\n            probe: probeName,\n            time: new Date().getTime(),\n            data: event\n        };\n        service.buffer.push(record);\n        if (service.buffer.getSize() > service.maxBufferSize || flushLog) {\n            service.action.loggerFlush(probeName, service);\n        } else {\n            // let's start a timer to flush the buffer\n            // this will help safeguard against never reaching the maxBufferSize\n            // and risk not storing anything at all\n            service.action.startBufferTimer(probeName, service);\n        }\n    }\n    startBufferTimer(probeName, service) {\n        const window = getWindow();\n        if (window) {\n            const flushTimer = 30000; // 30 seconds\n            if (this.timer) {\n                window.clearTimeout(this.timer);\n                this.timer = 0;\n            }\n            this.timer = window.setTimeout(()=>{\n                // flush the buffer if we have anything in it\n                if (service.buffer.getSize() > 0) {\n                    service.action.loggerFlush(probeName, service);\n                }\n                this.timer = 0;\n            }, flushTimer);\n        }\n    }\n    constructor(isClient){\n        super(), _define_property(this, \"timer\", 0), _define_property(this, \"logHelper\", null);\n        if (!isClient) {\n            this.logHelper = require('../../../../server/LogHelper');\n        }\n    }\n}\nexport class SharedTelemetryService extends ConsumerService {\n    registerProbes(isClient) {\n        const p = this.instrumentService.getProvider('shared');\n        if (p) {\n            p.enableProbe('initSystemInfo', this, this.action.initSystemInfo);\n            p.enableProbe('logTelemetryInfo', this, isClient ? this.action.clientLogInfoMessageEvent : this.action.serverLogInfoMessageEvent);\n            p.enableProbe('logMessageError', this, isClient ? this.action.clientLogErrorMessageEvent : this.action.serverLogErrorMessageEvent);\n            p.enableProbe('logOutRequestEventInfo', this, isClient ? this.action.clientLogOutRequestEvent : this.action.serverLogOutRequestEvent);\n            p.enableProbe('logAndFlushOutRequestEventInfo', this, isClient ? this.action.clientlogAndFlushOutRequestEvent : this.action.serverLogOutRequestEvent);\n            p.enableProbe('flushTelemetryInfo', this, isClient ? this.action.loggerFlush : ()=>{});\n        }\n    }\n    constructor(instrumentService, isClient){\n        super('shared telemetry', instrumentService), _define_property(this, \"buffer\", void 0), _define_property(this, \"action\", void 0), _define_property(this, \"systemInfo\", void 0), _define_property(this, \"host\", void 0), _define_property(this, \"maxBufferSize\", void 0);\n        this.action = new TelemetryActions(isClient);\n        if (instrumentService) {\n            this.systemInfo = instrumentService.systemInfo;\n        }\n        if (isClient) {\n            this.buffer = new Buffer(150);\n            this.maxBufferSize = 20;\n            this.aggregation = new AggregationBuffer();\n        }\n        this.registerProbes(isClient);\n    }\n}\n","// ----------------------------------------------------------------------\n// <copyright company='Microsoft Corporation'>\n//        Copyright (c) Microsoft Corporation.  All rights reserved.\n// </copyright>\n// ---------------------------------------------------------------------\nfunction _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nimport { InstrumentService } from '../core/instrument';\nimport { StaticProvider } from '../providers/staticProvider';\nimport { SharedTelemetryService } from './sharedTelemetry';\nimport * as appConfig from '../../init/appConfig';\nexport class SharedInstrumentService extends InstrumentService {\n    static getInstance() {\n        if (SharedInstrumentService._instance === null) {\n            const isClient = appConfig.get('runtimeEnvironment') === 'browser';\n            SharedInstrumentService._instance = new SharedInstrumentService(isClient);\n        }\n        return SharedInstrumentService._instance;\n    }\n    static getProvider() {\n        return SharedInstrumentService.getInstance().getProvider('shared');\n    }\n    constructor(isClient){\n        if (SharedInstrumentService._instance) {\n            throw new Error('Error : Instantiation failed. Use SharedInstrumentService.getInstance');\n        } else {\n            super(), _define_property(this, \"staticProvider\", void 0), _define_property(this, \"telemetryService\", void 0);\n            this.name = 'SharedInstrument';\n            this.staticProvider = new StaticProvider('shared', this);\n            this.telemetryService = new SharedTelemetryService(this, isClient);\n            SharedInstrumentService._instance = this;\n        }\n    }\n}\n_define_property(SharedInstrumentService, \"_instance\", null);\n","function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nimport { logger } from '@src/logger';\nimport { LibAction } from '../core/action';\nimport { Buffer, AggregationBuffer } from '../core/buffer';\nimport { ConsumerService } from '../core/consumer';\nimport { Constants } from '../../../utils/constants';\nimport * as httpProtocol from '../../http/httpProtocol';\nimport { getAppConfig } from '../../init/appConfig';\nimport { getNetworkStats } from '@shared/utils/appUtils';\nimport { getWindow } from '@shared/services/window';\nconst PUBLISH_RETRY_COUNT = 2;\nclass TelemetryActions extends LibAction {\n    initSystemInfo(probeName, service) {\n        service.systemInfo.correlationId = getAppConfig('correlationId');\n    }\n    loggerFlush(probeName, service) {\n        const buffer = service.buffer;\n        const events = [];\n        if (buffer && buffer.getSize() > 0) {\n            while(!buffer.isEmpty()){\n                const event = buffer.pop().data;\n                events.push(event);\n            }\n            const correlationId = getAppConfig('correlationId');\n            const telemetryPayload = {\n                events: events,\n                correlationId: correlationId\n            };\n            service.action.publishTelemetryEvent(telemetryPayload);\n        }\n    }\n    logEvent(probeName, service, payload) {\n        const event = service.createDebugEvent(payload);\n        service.action.pushRecordInBuffer(probeName, service, event, payload.flushLog);\n    }\n    logAndFlushEvent(probeName, service, payload) {\n        const event = service.createDebugEvent(payload);\n        service.action.pushRecordInBuffer(probeName, service, event, true);\n    }\n    logUserSystemInfo(probeName, service, locale) {\n        const screenResolution = {\n            Width: screen.width,\n            Height: screen.height,\n            PixelRatio: window.devicePixelRatio ? window.devicePixelRatio : 0\n        };\n        const browser = service.action.detectBrowser().split(' ');\n        const browserInfo = {\n            Browser: browser[0],\n            version: browser[1]\n        };\n        const data = {\n            'Screen Resolution': screenResolution,\n            'Browser Info': browserInfo,\n            Locale: locale,\n            connection: getNetworkStats()\n        };\n        const obj = {\n            page: '',\n            action: Constants.Telemetry.Action.UserSettings,\n            actionModifier: 'Info',\n            details: JSON.stringify(data)\n        };\n        const event = service.createDebugEvent(obj);\n        service.action.pushRecordInBuffer(probeName, service, event, false);\n        logger.info(obj.details, {\n            action: obj.action,\n            actionModifier: obj.actionModifier,\n            page: obj.page\n        });\n    }\n    logOneTimeInfo(probeName, service, payload) {\n        const obj = {\n            page: '',\n            action: payload.eventName,\n            actionModifier: payload.actionModifier ? payload.actionModifier : 'Info',\n            details: payload.data,\n            isFeedback: payload.isFeedback ? payload.isFeedback : false\n        };\n        const event = service.createDebugEvent(obj);\n        service.action.pushRecordInBuffer(probeName, service, event, payload.flushLog);\n    }\n    publishTelemetryEvent(telemetryPayload) {\n        const outEvents = {\n            TelemetryEvents: telemetryPayload.events\n        };\n        const serializedEvents = JSON.stringify(outEvents);\n        const options = {\n            authenticationType: httpProtocol.AuthenticationTypes.Unauthenticated,\n            retry: PUBLISH_RETRY_COUNT\n        };\n        const { region } = getAppConfig('config');\n        httpProtocol.post('/api/log', options).setData(serializedEvents).setHeader(Constants.Headers.CorrelationId, telemetryPayload.correlationId).setHeader(Constants.Headers.XMSClientRegion, region).request().then(()=>{\n            console.log('[Success] Telemetry Logs submitted successfully');\n        }, (err)=>{\n            console.log('[Fail] Telemetry Log failed : ' + err);\n        });\n    }\n    detectBrowser() {\n        const ua = navigator.userAgent;\n        let tem;\n        let M = ua.match(/(opera|chrome|safari|firefox|msie|trident(?=\\/))\\/?\\s*(\\d+)/i) || [];\n        if (/trident/i.test(M[1])) {\n            tem = /\\brv[ :]+(\\d+)/g.exec(ua) || [];\n            return 'IE ' + (tem[1] || '');\n        }\n        if (M[1] === 'Chrome') {\n            tem = ua.match(/\\b(OPR|Edge)\\/(\\d+)/);\n            if (tem != null) {\n                return tem.slice(1).join(' ').replace('OPR', 'Opera');\n            }\n        }\n        M = M[2] ? [\n            M[1],\n            M[2]\n        ] : [\n            navigator.appName,\n            navigator.appVersion,\n            '-?'\n        ];\n        if ((tem = ua.match(/version\\/(\\d+)/i)) != null) {\n            M.splice(1, 1, tem[1]);\n        }\n        return M.join(' ');\n    }\n    pushRecordInBuffer(probeName, service, event, flushLog) {\n        const record = {\n            provider: 'static',\n            probe: probeName,\n            time: new Date().getTime(),\n            data: event\n        };\n        service.buffer.push(record);\n        if (service.buffer.getSize() > service.maxBufferSize || flushLog) {\n            service.action.loggerFlush(probeName, service);\n        } else {\n            // let's start a timer to flush the buffer\n            // this will help safeguard against never reaching the maxBufferSize\n            // and risk not storing anything at all\n            service.action.startBufferTimer(probeName, service);\n        }\n    }\n    startBufferTimer(probeName, service) {\n        var _getWindow_setTimeout, _getWindow;\n        const flushTimer = 30000; // 30 seconds\n        if (this.timeoutID > -1) {\n            window.clearTimeout(this.timeoutID);\n            this.timeoutID = -1;\n        }\n        this.timeoutID = (_getWindow = getWindow()) === null || _getWindow === void 0 ? void 0 : (_getWindow_setTimeout = _getWindow.setTimeout) === null || _getWindow_setTimeout === void 0 ? void 0 : _getWindow_setTimeout.call(_getWindow, ()=>{\n            // flush the buffer if we have anything in it\n            if (service.buffer.getSize() > 0) {\n                service.action.loggerFlush(probeName, service);\n            }\n            this.timeoutID = -1;\n        }, flushTimer);\n    }\n    constructor(...args){\n        super(...args), _define_property(this, \"timeoutID\", -1);\n    }\n}\nexport class SpzaTelemetryService extends ConsumerService {\n    createDebugEvent(obj) {\n        const event = {\n            page: obj.page ? obj.page : '',\n            action: obj.action ? obj.action : '',\n            actionModifier: obj.actionModifier ? obj.actionModifier : '',\n            clientTimestamp: new Date().toISOString(),\n            appName: obj.appName ? obj.appName : '',\n            product: obj.product ? obj.product : -1,\n            featureFlag: obj.featureFlag ? obj.featureFlag : '',\n            details: obj.details ? obj.details : '',\n            oid: this._tenantInfo && this._tenantInfo.oid ? this._tenantInfo.oid : '',\n            tid: this._tenantInfo && this._tenantInfo.tid ? this._tenantInfo.tid : '',\n            spzaId: this._spzaId ? this._spzaId : '',\n            mshash: this._trailId ? this._trailId : '',\n            hostType: this._hostType ? this._hostType : '',\n            isFeedback: obj.isFeedback ? obj.isFeedback : false\n        };\n        return event;\n    }\n    registerProbes() {\n        const p = this.instrumentService.getProvider('static');\n        if (p) {\n            p.enableProbe('initSystemInfo', this, this.action.initSystemInfo);\n            p.enableProbe('logTelemetryInfo', this, this.action.logEvent);\n            p.enableProbe('logAndFlushTelemetryInfo', this, this.action.logAndFlushEvent);\n            p.enableProbe('flushTelemetryInfo', this, this.action.loggerFlush);\n            // These are one time telemetry events\n            p.enableProbe('logUserSystemInfo', this, this.action.logUserSystemInfo);\n            p.enableProbe('logOneTimeInfo', this, this.action.logOneTimeInfo);\n        }\n    }\n    registerSpzaId(spzaId) {\n        this._spzaId = spzaId;\n    }\n    registerTrailId(trailId) {\n        this._trailId = trailId;\n    }\n    registerTenantInfo(oid, tid) {\n        this._tenantInfo.oid = oid;\n        this._tenantInfo.tid = tid;\n    }\n    registerHostType(hostType) {\n        this._hostType = hostType;\n    }\n    constructor(instrumentService, isClient){\n        const name = isClient ? 'client telemetry' : 'server telemetry';\n        super(name, instrumentService), _define_property(this, \"buffer\", void 0), _define_property(this, \"action\", void 0), _define_property(this, \"systemInfo\", void 0), _define_property(this, \"host\", void 0), _define_property(this, \"maxBufferSize\", void 0), _define_property(this, \"_spzaId\", void 0), _define_property(this, \"_trailId\", void 0), _define_property(this, \"_tenantInfo\", void 0), _define_property(this, \"_hostType\", void 0);\n        this._spzaId = '';\n        this._trailId = '';\n        this._tenantInfo = {\n            oid: '',\n            tid: ''\n        };\n        this._hostType = '';\n        if (isClient) {\n            this.action = new TelemetryActions();\n            this.buffer = new Buffer(150);\n            // This is the maximum number of records stored in the buffer before flushing\n            this.maxBufferSize = 20;\n            this.aggregation = new AggregationBuffer();\n            if (instrumentService) {\n                this.systemInfo = instrumentService.systemInfo;\n            }\n            this.registerProbes();\n        }\n    }\n}\n","// ----------------------------------------------------------------------\n// <copyright company='Microsoft Corporation'>\n//        Copyright (c) Microsoft Corporation.  All rights reserved.\n// </copyright>\n// ---------------------------------------------------------------------\nfunction _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nimport { InstrumentService } from '../core/instrument';\nimport { StaticProvider } from '../providers/staticProvider';\nimport { SpzaTelemetryService } from './spzaTelemetry';\nexport class SpzaInstrumentService extends InstrumentService {\n    static getInstance(isClient = true) {\n        if (SpzaInstrumentService._instance === null) {\n            SpzaInstrumentService._instance = new SpzaInstrumentService(isClient);\n        }\n        return SpzaInstrumentService._instance;\n    }\n    static getProvider(isClient = true) {\n        return SpzaInstrumentService.getInstance(isClient).getProvider();\n    }\n    static registerSpzaId(spzaId) {\n        return SpzaInstrumentService.getInstance().telemetryService.registerSpzaId(spzaId);\n    }\n    static registerTrailId(trailId) {\n        return SpzaInstrumentService.getInstance().telemetryService.registerTrailId(trailId);\n    }\n    static registerTenantInfo(oid, tid) {\n        return SpzaInstrumentService.getInstance().telemetryService.registerTenantInfo(oid, tid);\n    }\n    static registerHostType(hostType) {\n        return SpzaInstrumentService.getInstance().telemetryService.registerHostType(hostType);\n    }\n    // Ideally the design should leverage the Add\\RemoveProvider and Add\\RemoveConsumerServices\n    // for this. However, we currently hard code the usage of StaticProvider as well as use\n    // probe method directly all over our client code for instrumentation.\n    // This will be the cheapest change, with no fall-outs\\open issues for now.\n    // In future if we add other types of providers, we will anyway need to decouple our dependency\n    // on static providers and at the time we can make both client and server explcitly op-into\n    // the providers\\consumers of their choice.\n    static disableInstrumentation() {\n        SpzaInstrumentService.getInstance(false);\n    }\n    constructor(isClient){\n        if (SpzaInstrumentService._instance) {\n            throw new Error('Error : Instantiation failed. Use SpzaInstrumentService.getInstance');\n        } else {\n            super(), _define_property(this, \"staticProvider\", void 0), _define_property(this, \"telemetryService\", void 0);\n            this.name = 'SpzaInstrument';\n            this.staticProvider = new StaticProvider('static', this);\n            this.telemetryService = new SpzaTelemetryService(this, isClient);\n            SpzaInstrumentService._instance = this;\n        }\n    }\n}\n_define_property(SpzaInstrumentService, \"_instance\", null);\n","import jsdom from 'jsdom';\nexport const getWindow = ()=>{\n    return typeof window !== 'undefined' && window;\n};\nexport const getDocument = ()=>{\n    let doc;\n    if (__SERVER__) {\n        const vDOM = new jsdom.JSDOM('');\n        doc = vDOM.window.document;\n    }\n    return typeof document !== 'undefined' && document || doc;\n};\nexport function getActiveElement() {\n    return getDocument().activeElement;\n}\nexport function isActiveElement(element) {\n    return element === getActiveElement();\n}\n","export const ApiVersion = '2017-04-24';\nexport const marketplaceApiVersion = '2017-04-15';\nexport const enrichReviewCommentsApiVersion = '2021-03-01';\nexport const catalogServicesApiVersion = '2021-06-01';\nexport const reviewsCatalogApiVersion = '2021-03-01';\nexport const newSearchApiVersion = '2023-01-01-preview';\nexport const rnrApiVersion = '2021-03-01';\nexport const marketplaceLeadsApiVersion = '2022-07-01';\nexport const oneTaxonomyApiVersion = '2022-02-02';\n","function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nfunction _object_spread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        var ownKeys = Object.keys(source);\n        if (typeof Object.getOwnPropertySymbols === \"function\") {\n            ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n            }));\n        }\n        ownKeys.forEach(function(key) {\n            _define_property(target, key, source[key]);\n        });\n    }\n    return target;\n}\nfunction ownKeys(object, enumerableOnly) {\n    var keys = Object.keys(object);\n    if (Object.getOwnPropertySymbols) {\n        var symbols = Object.getOwnPropertySymbols(object);\n        if (enumerableOnly) {\n            symbols = symbols.filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n            });\n        }\n        keys.push.apply(keys, symbols);\n    }\n    return keys;\n}\nfunction _object_spread_props(target, source) {\n    source = source != null ? source : {};\n    if (Object.getOwnPropertyDescriptors) {\n        Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n        ownKeys(Object(source)).forEach(function(key) {\n            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n    }\n    return target;\n}\nexport const mergeAccessToken = ({ currentAccessToken, newAccessToken })=>{\n    return Object.keys(newAccessToken).reduce((previousObject, currentKey)=>{\n        return _object_spread_props(_object_spread({}, previousObject), {\n            [currentKey]: newAccessToken[`${currentKey}`] || currentAccessToken[`${currentKey}`]\n        });\n    }, currentAccessToken);\n};\n","/* istanbul ignore file */ export const countryCodeToNameMap = {\n    AD: 'Andorra',\n    AE: 'United Arab Emirates',\n    AF: 'Afghanistan',\n    AG: 'Antigua and Barbuda',\n    AI: 'Anguilla',\n    AL: 'Albania',\n    AM: 'Armenia',\n    AO: 'Angola',\n    AQ: 'Antarctica',\n    AR: 'Argentina',\n    AS: 'American Samoa',\n    AT: 'Austria',\n    AU: 'Australia',\n    AW: 'Aruba',\n    AX: 'Åland Islands',\n    AZ: 'Azerbaijan',\n    BA: 'Bosnia and Herzegovina',\n    BB: 'Barbados',\n    BD: 'Bangladesh',\n    BE: 'Belgium',\n    BF: 'Burkina Faso',\n    BG: 'Bulgaria',\n    BH: 'Bahrain',\n    BI: 'Burundi',\n    BJ: 'Benin',\n    BL: 'Saint Barthélemy',\n    BM: 'Bermuda',\n    BN: 'Brunei Darussalam',\n    BO: 'Bolivia, Plurinational State of',\n    BQ: 'Bonaire, Sint Eustatius and Saba',\n    BR: 'Brazil',\n    BS: 'Bahamas',\n    BT: 'Bhutan',\n    BV: 'Bouvet Island',\n    BW: 'Botswana',\n    BY: 'Belarus',\n    BZ: 'Belize',\n    CA: 'Canada',\n    CC: 'Cocos (Keeling) Islands',\n    CD: 'Congo, the Democratic Republic of the',\n    CF: 'Central African Republic',\n    CG: 'Congo',\n    CH: 'Switzerland',\n    CI: \"Côte d'Ivoire\",\n    CK: 'Cook Islands',\n    CL: 'Chile',\n    CM: 'Cameroon',\n    CN: 'China',\n    CO: 'Colombia',\n    CR: 'Costa Rica',\n    CU: 'Cuba',\n    CV: 'Cabo Verde',\n    CW: 'Curaçao',\n    CX: 'Christmas Island',\n    CY: 'Cyprus',\n    CZ: 'Czechia',\n    DE: 'Germany',\n    DJ: 'Djibouti',\n    DK: 'Denmark',\n    DM: 'Dominica',\n    DO: 'Dominican Republic',\n    DZ: 'Algeria',\n    EC: 'Ecuador',\n    EE: 'Estonia',\n    EG: 'Egypt',\n    EH: 'Western Sahara',\n    ER: 'Eritrea',\n    ES: 'Spain',\n    ET: 'Ethiopia',\n    FI: 'Finland',\n    FJ: 'Fiji',\n    FK: 'Falkland Islands (Malvinas)',\n    FM: 'Micronesia, Federated States of',\n    FO: 'Faroe Islands',\n    FR: 'France',\n    GA: 'Gabon',\n    GB: 'United Kingdom of Great Britain and Northern Ireland',\n    GD: 'Grenada',\n    GE: 'Georgia',\n    GF: 'French Guiana',\n    GG: 'Guernsey',\n    GH: 'Ghana',\n    GI: 'Gibraltar',\n    GL: 'Greenland',\n    GM: 'Gambia',\n    GN: 'Guinea',\n    GP: 'Guadeloupe',\n    GQ: 'Equatorial Guinea',\n    GR: 'Greece',\n    GS: 'South Georgia and the South Sandwich Islands',\n    GT: 'Guatemala',\n    GU: 'Guam',\n    GW: 'Guinea-Bissau',\n    GY: 'Guyana',\n    HK: 'Hong Kong',\n    HM: 'Heard Island and McDonald Islands',\n    HN: 'Honduras',\n    HR: 'Croatia',\n    HT: 'Haiti',\n    HU: 'Hungary',\n    ID: 'Indonesia',\n    IE: 'Ireland',\n    IL: 'Israel',\n    IM: 'Isle of Man',\n    IN: 'India',\n    IO: 'British Indian Ocean Territory',\n    IQ: 'Iraq',\n    IR: 'Iran, Islamic Republic of',\n    IS: 'Iceland',\n    IT: 'Italy',\n    JE: 'Jersey',\n    JM: 'Jamaica',\n    JO: 'Jordan',\n    JP: 'Japan',\n    KE: 'Kenya',\n    KG: 'Kyrgyzstan',\n    KH: 'Cambodia',\n    KI: 'Kiribati',\n    KM: 'Comoros',\n    KN: 'Saint Kitts and Nevis',\n    KP: \"Korea, Democratic People's Republic of\",\n    KR: 'Korea, Republic of',\n    KW: 'Kuwait',\n    KY: 'Cayman Islands',\n    KZ: 'Kazakhstan',\n    LA: \"Lao People's Democratic Republic\",\n    LB: 'Lebanon',\n    LC: 'Saint Lucia',\n    LI: 'Liechtenstein',\n    LK: 'Sri Lanka',\n    LR: 'Liberia',\n    LS: 'Lesotho',\n    LT: 'Lithuania',\n    LU: 'Luxembourg',\n    LV: 'Latvia',\n    LY: 'Libya',\n    MA: 'Morocco',\n    MC: 'Monaco',\n    MD: 'Moldova, Republic of',\n    ME: 'Montenegro',\n    MF: 'Saint Martin (French part)',\n    MG: 'Madagascar',\n    MH: 'Marshall Islands',\n    MK: 'Macedonia, the former Yugoslav Republic of',\n    ML: 'Mali',\n    MM: 'Myanmar',\n    MN: 'Mongolia',\n    MO: 'Macao',\n    MP: 'Northern Mariana Islands',\n    MQ: 'Martinique',\n    MR: 'Mauritania',\n    MS: 'Montserrat',\n    MT: 'Malta',\n    MU: 'Mauritius',\n    MV: 'Maldives',\n    MW: 'Malawi',\n    MX: 'Mexico',\n    MY: 'Malaysia',\n    MZ: 'Mozambique',\n    NA: 'Namibia',\n    NC: 'New Caledonia',\n    NE: 'Niger',\n    NF: 'Norfolk Island',\n    NG: 'Nigeria',\n    NI: 'Nicaragua',\n    NL: 'Netherlands',\n    NO: 'Norway',\n    NP: 'Nepal',\n    NR: 'Nauru',\n    NU: 'Niue',\n    NZ: 'New Zealand',\n    OM: 'Oman',\n    PA: 'Panama',\n    PE: 'Peru',\n    PF: 'French Polynesia',\n    PG: 'Papua New Guinea',\n    PH: 'Philippines',\n    PK: 'Pakistan',\n    PL: 'Poland',\n    PM: 'Saint Pierre and Miquelon',\n    PN: 'Pitcairn',\n    PR: 'Puerto Rico',\n    PS: 'Palestine, State of',\n    PT: 'Portugal',\n    PW: 'Palau',\n    PY: 'Paraguay',\n    QA: 'Qatar',\n    RE: 'Réunion',\n    RO: 'Romania',\n    RS: 'Serbia',\n    RU: 'Russian Federation',\n    RW: 'Rwanda',\n    SA: 'Saudi Arabia',\n    SB: 'Solomon Islands',\n    SC: 'Seychelles',\n    SD: 'Sudan',\n    SE: 'Sweden',\n    SG: 'Singapore',\n    SH: 'Saint Helena, Ascension and Tristan da Cunha',\n    SI: 'Slovenia',\n    SJ: 'Svalbard and Jan Mayen',\n    SK: 'Slovakia',\n    SL: 'Sierra Leone',\n    SM: 'San Marino',\n    SN: 'Senegal',\n    SO: 'Somalia',\n    SR: 'Suriname',\n    SS: 'South Sudan',\n    ST: 'Sao Tome and Principe',\n    SV: 'El Salvador',\n    SX: 'Sint Maarten (Dutch part)',\n    SY: 'Syrian Arab Republic',\n    SZ: 'Swaziland',\n    TC: 'Turks and Caicos Islands',\n    TD: 'Chad',\n    TF: 'French Southern Territories',\n    TG: 'Togo',\n    TH: 'Thailand',\n    TJ: 'Tajikistan',\n    TK: 'Tokelau',\n    TL: 'Timor-Leste',\n    TM: 'Turkmenistan',\n    TN: 'Tunisia',\n    TO: 'Tonga',\n    TR: 'Turkey',\n    TT: 'Trinidad and Tobago',\n    TV: 'Tuvalu',\n    TW: 'Taiwan, Province of China',\n    TZ: 'Tanzania, United Republic of',\n    UA: 'Ukraine',\n    UG: 'Uganda',\n    UM: 'United States Minor Outlying Islands',\n    US: 'United States of America',\n    UY: 'Uruguay',\n    UZ: 'Uzbekistan',\n    VA: 'Holy See',\n    VC: 'Saint Vincent and the Grenadines',\n    VE: 'Venezuela, Bolivarian Republic of',\n    VG: 'Virgin Islands, British',\n    VI: 'Virgin Islands, U.S.',\n    VN: 'Viet Nam',\n    VU: 'Vanuatu',\n    WF: 'Wallis and Futuna',\n    WS: 'Samoa',\n    YE: 'Yemen',\n    YT: 'Mayotte',\n    ZA: 'South Africa',\n    ZM: 'Zambia',\n    ZW: 'Zimbabwe'\n};\n","/* eslint-disable no-useless-escape */ import { Constants } from '@shared/utils/constants';\nimport { countryCodeToNameMap } from '@shared/utils/countryCodeMap';\nimport { serviceOffersSupportedStatesCodes } from '@shared/utils/serviceOffersSupportedStatesCodes';\nimport { urlKeys } from '@shared/utils/datamappingHelpers';\nconst paramToDataMapKey = {\n    [Constants.QueryStrings.product]: Constants.DataMapCollectionKeys.products,\n    [Constants.QueryStrings.category]: Constants.DataMapCollectionKeys.categories,\n    [Constants.QueryStrings.industry]: Constants.DataMapCollectionKeys.industries,\n    [Constants.QueryStrings.serviceType]: Constants.DataMapCollectionKeys.serviceTypes\n};\nfunction parseQuery(queryString) {\n    const query = {};\n    const pairs = queryString.split('&');\n    for (const pair of pairs){\n        const matches = pair.match(/([^\\=]+)(\\=?)(.*)/);\n        if (matches) {\n            const name = matches[1];\n            const value = matches[3];\n            query[decodeURIComponent(name)] = value || '';\n        }\n    }\n    return query;\n}\nexport function optimizeQueryParameters({ queryParams }) {\n    const optimizeQueryParameters = {};\n    for(const name in queryParams){\n        const rawValue = queryParams[`${name}`] || '';\n        // TODO (technical debt): although rawValue has a string type, the value might be different (an array for example). The toString call is necessary to prevent crashes until the IUrlQuery casting will work as expected.\n        const valueUpper = rawValue.toString().toUpperCase();\n        const loweredName = name.toLowerCase();\n        const dataMappingName = paramToDataMapKey[`${loweredName}`];\n        if (rawValue) {\n            if (loweredName === Constants.QueryStrings.country) {\n                if (countryCodeToNameMap[`${valueUpper}`]) {\n                    optimizeQueryParameters[Constants.QueryStrings.country] = valueUpper;\n                }\n            } else if (loweredName === Constants.QueryStrings.region) {\n                if (serviceOffersSupportedStatesCodes[`${valueUpper}`]) {\n                    optimizeQueryParameters[Constants.QueryStrings.region] = valueUpper;\n                }\n            } else if (dataMappingName && typeof rawValue === 'string') {\n                const value = rawValue.split(';').sort().filter((value)=>urlKeys[`${dataMappingName}`][`${value}`]).join(';');\n                if (value) {\n                    optimizeQueryParameters[`${name}`] = value;\n                }\n            } else {\n                optimizeQueryParameters[`${name}`] = rawValue;\n            }\n        }\n    }\n    return optimizeQueryParameters;\n}\n/**\n * This function will remove any non-existing URL values which will not found in the DataMapping file.\n * Hence we will optimize the cache keys and increase cache hits\n * @param originalUrl Original URL from client, composite from path and query params\n * @param paramToDataMapKey Helper function which convert URL query parameter name to DataMapping.UrlKeys collection\n */ export function optimizeUrl(originalUrl) {\n    const decodedUrl = decodeURIComponent(originalUrl);\n    // Helper regex to extract the queryy params\n    const matchResult = decodedUrl.match(/([^\\?]+)\\?(.*)/);\n    if (!matchResult) {\n        return decodedUrl;\n    }\n    const [fullMatch, path, queryParamsString] = matchResult;\n    if (!fullMatch || !path || !queryParamsString) {\n        return decodedUrl;\n    }\n    const queryParams = parseQuery(queryParamsString);\n    const optimizedQueryParameters = optimizeQueryParameters({\n        queryParams\n    });\n    const newQueryString = Object.keys(optimizedQueryParameters).map((name)=>`${name}=${optimizedQueryParameters[`${name}`]}`).join('&');\n    // Helper regex to return the original url path with the optimized query params\n    return decodedUrl.replace(/\\?(.*)/, `?${newQueryString}`);\n}\n","export const getHttpPrefix = ()=>process.env.useHTTPS === 'true' ? 'https:' : 'http:';\n","function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nimport qs from 'qs';\nimport urljoin from 'url-join';\nimport queryStringUtils from 'query-string';\nimport { getAppConfig } from '@shared/services/init/appConfig';\nimport { getHttpPrefix } from '@src/server/utils/func';\nexport class Url {\n    getUrl(stringifyWithQs = false) {\n        if (!this.host) {\n            return '';\n        }\n        let url = this.host.startsWith('http') ? this.host : urljoin(getHttpPrefix(), this.host);\n        url += this.endpoint;\n        if (this.query) {\n            url += '?' + (stringifyWithQs ? qs.stringify(this.query) : queryStringUtils.stringify(this.query));\n        }\n        return url;\n    }\n    constructor(endpoint, query, host){\n        _define_property(this, \"host\", void 0);\n        _define_property(this, \"query\", void 0);\n        _define_property(this, \"endpoint\", void 0);\n        this.host = host || getAppConfig('hostname');\n        this.endpoint = endpoint;\n        this.query = query || {};\n    }\n}\n","function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nfunction _object_spread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        var ownKeys = Object.keys(source);\n        if (typeof Object.getOwnPropertySymbols === \"function\") {\n            ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n            }));\n        }\n        ownKeys.forEach(function(key) {\n            _define_property(target, key, source[key]);\n        });\n    }\n    return target;\n}\nfunction ownKeys(object, enumerableOnly) {\n    var keys = Object.keys(object);\n    if (Object.getOwnPropertySymbols) {\n        var symbols = Object.getOwnPropertySymbols(object);\n        if (enumerableOnly) {\n            symbols = symbols.filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n            });\n        }\n        keys.push.apply(keys, symbols);\n    }\n    return keys;\n}\nfunction _object_spread_props(target, source) {\n    source = source != null ? source : {};\n    if (Object.getOwnPropertyDescriptors) {\n        Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n        ownKeys(Object(source)).forEach(function(key) {\n            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n    }\n    return target;\n}\nimport { parse } from 'stack-trace';\nimport isEmail from 'validator/lib/isEmail';\nimport { getDataValuesFromUrlKey } from '@shared/utils/dataMappingUtils';\nimport { optimizeQueryParameters } from '@shared/utils/optimizeUrlHelper';\nimport { Constants, OfferType, PlanPricingType } from '@shared/utils/constants';\nimport { PricingStates, UserSegment, OdataRawObjectAppType, ISearchFilterCategory, TermsStrings, AppTag, Badges } from '@shared/Models';\nimport { getWindow } from '@shared/services/window';\nimport { SpzaInstrumentService } from '@shared/services/telemetry/spza/spzaInstrument';\nimport { SharedInstrumentService } from '@shared/services/telemetry/shared/sharedInstrument';\nimport { DataMap } from '@shared/utils/dataMapping';\nimport { getAppConfig } from '@shared/services/init/appConfig';\nimport { Url } from '@shared/services/http/urlUtils';\nimport * as embedHostUtils from '@embed/embedHostUtils';\nimport { createAppViewTelemetryLoggedAction, createFeatureFlagsReceivedAction } from '@shared/actions/actions';\nimport { IFeatureFlags } from '@src/State';\nimport { extractCampaignsFromUrl, getEntityIdFromUrl, updateHandOffUrlWithCampaignParams } from '@shared/utils/routeUtils';\nimport { getLocalStorageItem, getSessionStorageItem, hasUserAgreedPrivacyConsent, saveLocalStorageItem, saveSessionStorageItem } from '@shared/utils/browserStorageUtils';\nimport { isArray, isNullorUndefined } from '@shared/utils/objectUtils';\nimport { buildHref, routes } from '@shared/routerHistory';\nimport { getQueryFromBrowserUrl } from '@shared/utils/urlUtils';\nimport { getTrimmedWords, isEmptyNullorUndefinedString } from '@shared/utils/stringUtils';\nimport { getPrimaryProductUrl, bitMasksContainSomeBitMask, bitMasksMatch, bitMasksMatchFilter, bitMasksMatchBitMask, productKeyByUrlKey, productKeyByBackendKey, getShortCutBitmask } from '@shared/utils/datamappingHelpers';\nimport { loadPartnerManifest } from '@shared/utils/partnerManifestLoader';\nimport { logger } from '@src/logger';\nimport { isString } from 'lodash-es';\nimport { useTelemetry } from '@shared/hooks/useTelemetry';\nimport sha256 from 'crypto-js/sha256';\nimport { BusinessTelemetry } from '@shared/utils/businessConstants';\nimport { isAppContactForm } from '@shared/utils/modals';\nimport { v4 as uuidv4 } from 'uuid';\n// eslint-disable-next-line react-hooks/rules-of-hooks\nconst [{ flushTelemetryBuffer }] = useTelemetry();\nexport function generateGuid() {\n    return uuidv4(); // random string, no time sequenced.\n}\nexport function attachClickHandlerToElement(id, handler) {\n    const el = document.getElementById(id);\n    if (el) {\n        el.onclick = handler;\n    }\n}\nexport const getProductByUrlKey = ({ urlKey })=>{\n    const productKey = productKeyByUrlKey[`${urlKey}`];\n    return DataMap.products[`${productKey}`];\n};\nexport const getProductByBackendKey = ({ backendKey })=>{\n    const productKey = productKeyByBackendKey[`${backendKey}`];\n    return DataMap.products[`${productKey}`];\n};\nexport function categoryInfoToBitmask(categoryInfo) {\n    const { FilterGroup, FilterID } = categoryInfo || {};\n    return categoryInfo ? {\n        property: FilterGroup,\n        mask: FilterID\n    } : null;\n}\nfunction getCategoryBitmaskInfo({ collection, dataValueKey, subCollection, dataValueChildKey }) {\n    var _DataMap____SubCategoryDataMapping, _DataMap___;\n    const categoryInfo = (_DataMap___ = DataMap[`${collection}`][`${subCollection}`][`${dataValueKey}`]) === null || _DataMap___ === void 0 ? void 0 : (_DataMap____SubCategoryDataMapping = _DataMap___.SubCategoryDataMapping) === null || _DataMap____SubCategoryDataMapping === void 0 ? void 0 : _DataMap____SubCategoryDataMapping[`${dataValueChildKey}`];\n    return categoryInfoToBitmask(categoryInfo);\n}\nfunction getGeneralBitmaskInfo({ collection, dataValueKey }) {\n    const categoryInfo = DataMap[`${collection}`][`${dataValueKey}`];\n    return categoryInfoToBitmask(categoryInfo);\n}\nfunction getIndustriesBitmaskInfo({ collection, dataValueKey, dataValueChildKey }) {\n    var _DataMap___SubCategoryDataMapping, _DataMap__;\n    const categoryInfo = (_DataMap__ = DataMap[`${collection}`][`${dataValueKey}`]) === null || _DataMap__ === void 0 ? void 0 : (_DataMap___SubCategoryDataMapping = _DataMap__.SubCategoryDataMapping) === null || _DataMap___SubCategoryDataMapping === void 0 ? void 0 : _DataMap___SubCategoryDataMapping[`${dataValueChildKey}`];\n    return categoryInfoToBitmask(categoryInfo);\n}\nconst bitmaskInfoType = {\n    [Constants.DataMapCollectionKeys.categories]: getCategoryBitmaskInfo,\n    [Constants.DataMapCollectionKeys.products]: getGeneralBitmaskInfo,\n    [Constants.DataMapCollectionKeys.industries]: getIndustriesBitmaskInfo,\n    [Constants.DataMapCollectionKeys.cloudIndustries]: getIndustriesBitmaskInfo,\n    [Constants.DataMapCollectionKeys.serviceTypes]: getGeneralBitmaskInfo,\n    [Constants.DataMapCollectionKeys.trials]: getGeneralBitmaskInfo,\n    [Constants.DataMapCollectionKeys.pricingModel]: getGeneralBitmaskInfo,\n    [Constants.DataMapCollectionKeys.ratings]: getGeneralBitmaskInfo,\n    [Constants.DataMapCollectionKeys.appCompliance]: getGeneralBitmaskInfo,\n    [Constants.DataMapCollectionKeys.azureBenefitEligible]: getGeneralBitmaskInfo,\n    [Constants.DataMapCollectionKeys.copilotExtension]: getGeneralBitmaskInfo,\n    [Constants.DataMapCollectionKeys.productType]: getGeneralBitmaskInfo\n};\nexport const getBitMaskInfo = ({ collection, dataValueKey, subCollection, dataValueChildKey })=>{\n    const bitmaskType = bitmaskInfoType[`${collection}`];\n    return bitmaskType({\n        collection,\n        dataValueKey,\n        subCollection,\n        dataValueChildKey\n    });\n};\nexport const getProdcutBitMaskInfo = (categoryInfo)=>{\n    const { FilterGroup, FilterID } = categoryInfo || {};\n    return categoryInfo ? {\n        property: FilterGroup,\n        mask: FilterID\n    } : null;\n};\nexport const isEmbedded = ()=>{\n    const AppsourceMode = getWindow().AppsourceMode;\n    return AppsourceMode === 'Embed';\n};\n// Does a reverse look up on the data map from the product display name to get the product key\n// Reverse lookup as dont want to create a new map to maintain\nexport function getProductLongTitleFromDisplayName(displayName) {\n    for(const item in DataMap.products){\n        // When you iterate over an Enum it gives you both the indexes and the string values\n        // The regex makes sure you dont compare the indexes.\n        // eslint-disable-next-line no-prototype-builtins\n        if (DataMap.products.hasOwnProperty(item) && !/^\\d+$/.test(item)) {\n            if (displayName === DataMap.products[`${item}`].BackendKey) {\n                return DataMap.products[`${item}`].LongTitle;\n            }\n        }\n    }\n    // Came here means none the expected products matched,\n    // Some one handcrafted the Url with a non existant prod.\n    // return an empty string as you cannot show details anyways\n    return displayName;\n}\n// format the string which has {0}, {1} arguments\nexport function getFormattedString(baseString, args) {\n    for(let i = 0; i < args.length; i++){\n        // eslint-disable-next-line security/detect-non-literal-regexp\n        const regEx = new RegExp('\\\\{' + i + '\\\\}', 'gm');\n        baseString = baseString.replace(regEx, args[`${i}`]);\n    }\n    return baseString;\n}\nexport function getTelemetryResponseUrl(appId) {\n    const query = {};\n    query[Constants.QueryStrings.ApplicationId] = appId;\n    query[Constants.QueryStrings.CorrelationId] = getAppConfig('correlationId');\n    const url = new Url('/api/notifyresult', query);\n    return url.getUrl();\n}\nexport function getPaymentRedirectUrl(entityId, referredBy) {\n    const url = new Url(buildHref(routes.checkout, null, {\n        entityId\n    }, null, null), {\n        referredBy\n    });\n    return url.getUrl();\n}\nfunction bitmaskMatch(product, bitmaskValue, products) {\n    let match = false;\n    if (products) {\n        match = bitMasksContainSomeBitMask(bitmaskValue, products);\n    } else {\n        const productInfo = getProductByUrlKey({\n            urlKey: product\n        });\n        if (product && productInfo) {\n            match = bitMasksMatchFilter(bitmaskValue, productInfo);\n        }\n    }\n    return match;\n}\n// This API returns if a product belongs to office Add-ins\n// ShortcutBitmask contains the bitmask value of all the office child products.\n// DataMap.products['office365'].ShortcutBitmask = 8355840 which is equal to 'OR' of all the child product filterIds\n// we are sending office365 as the primary product for both Saas apps and Saas add-ins. So, added the products param as well\nexport function isOfficeNonSaasApp(product, products) {\n    const productMask = {\n        [DataMap.products.AzureforWebApps.FilterGroup]: DataMap.products.AzureforWebApps.FilterID\n    };\n    return bitmaskMatch(product, getShortCutBitmask(DataMap.products.Office365), products) && !bitmaskMatch(product, productMask, products);\n}\n// returns the title of the parent product if product belongs to parent product\n// checks whether product belongs to parent Product\nexport function getParentProductTitle(product, parentProduct) {\n    const productInfo = getProductByUrlKey({\n        urlKey: parentProduct\n    });\n    if (bitmaskMatch(product, getShortCutBitmask(productInfo))) {\n        return productInfo.LongTitle;\n    }\n}\n// This API returns if a product belongs to office Saas apps\n// we are sending office365 as the primary product for both Saas apps and Saas add-ins. So, added the products param as well\nexport function isOfficeSaasApp(product, products) {\n    const productOfficeMask = {\n        [DataMap.products.Office365.FilterGroup]: DataMap.products.Office365.FilterID\n    };\n    const productWebAppsMask = {\n        [DataMap.products.AzureforWebApps.FilterGroup]: DataMap.products.AzureforWebApps.FilterID\n    };\n    return bitmaskMatch(product, productOfficeMask, products) && bitmaskMatch(product, productWebAppsMask, products);\n}\n// This API returns if a product belongs to office category (Add-ins + Saas apps)\n// we are sending office365 as the primary product for both Saas apps and Saas add-ins. So, added the products param as well\nexport function isOfficeApp(product, products) {\n    const bitmaskVal = getShortCutBitmask(DataMap.products.Office365);\n    return bitmaskMatch(product, bitmaskVal, products);\n}\nexport function isSaaS(product, products) {\n    const bitmaskVal = getShortCutBitmask(DataMap.products.AzureforWebApps);\n    return bitmaskMatch(product, bitmaskVal, products);\n}\nexport const isSaaSApp = ({ primaryProduct })=>{\n    return isSaaS(getPrimaryProductUrl(primaryProduct));\n};\nexport function isD365(product, products) {\n    const bitmaskVal = getShortCutBitmask(DataMap.products.Dynamics365);\n    return bitmaskMatch(product, bitmaskVal, products);\n}\nexport const isD365App = ({ primaryProduct })=>{\n    return isD365(getPrimaryProductUrl(primaryProduct));\n};\nexport function isD365BC(product, products) {\n    const bitmaskVal = getShortCutBitmask(DataMap.products.Dynamics365forBusinessCentral);\n    return bitmaskMatch(product, bitmaskVal, products);\n}\nexport const isD365BCApp = ({ primaryProduct })=>{\n    return isD365BC(getPrimaryProductUrl(primaryProduct));\n};\nexport const isPowerBIVisuals = (product, products)=>{\n    const bitmaskVal = getShortCutBitmask(DataMap.products.PowerBICustomVisual);\n    return bitmaskMatch(product, bitmaskVal, products);\n};\nexport const isPowerBIVisualsApp = ({ primaryProduct })=>{\n    return isPowerBIVisuals(getPrimaryProductUrl(primaryProduct));\n};\nexport function isPowerBI(product, products) {\n    const bitmaskVal = getShortCutBitmask(DataMap.products.PowerBI);\n    return bitmaskMatch(product, bitmaskVal, products);\n}\nexport function isAzure(product, products) {\n    const bitmaskVal = getShortCutBitmask(DataMap.products.Azure);\n    return bitmaskMatch(product, bitmaskVal, products);\n}\nexport function isAzureApp({ primaryProduct }) {\n    return isAzure(getPrimaryProductUrl(primaryProduct));\n}\n/** This is a temporary function.\n * AppSource has to support offers from Office and from BigCat during the migration.\n * Once all offers have been migrated, this function and all references to it can be deleted. */ export function isMigratedPowerBIVisual(appInfo) {\n    return appInfo && appInfo.downloadLink && appInfo.downloadSampleLink && appInfo.bigId;\n}\nexport function shouldDownloadPowerBIVisual(appInfo, isEmbedded) {\n    return appInfo && isPowerBIVisuals(getPrimaryProductUrl(appInfo.primaryProduct)) && isMigratedPowerBIVisual(appInfo) && !isEmbedded;\n}\nexport function isTransactableOfferType(app) {\n    return app && [\n        isSaaSApp,\n        isD365App,\n        isD365BCApp,\n        isPowerBIVisualsApp\n    ].some((fn)=>fn(app));\n}\nexport function isLTS(app) {\n    var _app_pricingInformation_skus, _app_pricingInformation;\n    return (_app_pricingInformation = app.pricingInformation) === null || _app_pricingInformation === void 0 ? void 0 : (_app_pricingInformation_skus = _app_pricingInformation.skus) === null || _app_pricingInformation_skus === void 0 ? void 0 : _app_pricingInformation_skus.find((sku)=>{\n        var _sku_termPrices;\n        return (_sku_termPrices = sku.termPrices) === null || _sku_termPrices === void 0 ? void 0 : _sku_termPrices.find((termPrice)=>termPrice.unit === TermsStrings.Term2YString || termPrice.unit === TermsStrings.Term3YString || termPrice.billingPlan);\n    });\n}\nexport const isTransactApp = ({ isEmbedded, ctaTypes, appData, billingRegion })=>{\n    return !isEmbedded && appData && (ctaTypes === null || ctaTypes === void 0 ? void 0 : ctaTypes.some((ctaType)=>[\n            Constants.CTAType.Purchase,\n            Constants.CTAType.BuyLicense\n        ].includes(ctaType))) && billingRegion && isTransactableOfferType(appData);\n};\n/** An offer is considered BAG transactable if it:\n *  - Is of offer type Dynamics 365 CE, Dynamics 365 BC or Power BI Visuals\n *  - Has prices associated with the offer\n */ export const isBagTransactable = (appData)=>{\n    const primaryProductUrl = getPrimaryProductUrl(appData === null || appData === void 0 ? void 0 : appData.primaryProduct);\n    const isBagEnabledD365BC = isD365BC(primaryProductUrl);\n    const isBagEnabledD365 = isD365(primaryProductUrl) && primaryProductUrl !== 'dynamics-365-business-central';\n    const isBagEnabledPowerBIVisual = isPowerBIVisuals(primaryProductUrl);\n    const isBagOfferType = isBagEnabledD365 || isBagEnabledD365BC || isBagEnabledPowerBIVisual;\n    return isBagOfferType && appData.hasPrices;\n};\nexport function getTransactCTATypes(targetApp, uiRole, doesTenantHasLicenseForApp, isEmbedded, billingRegion) {\n    var _targetApp_licenseManagement;\n    const ctaTypes = [];\n    const isAdmin = uiRole === Constants.UiRole.Admin;\n    if (isBagTransactable(targetApp)) {\n        var _targetApp_licenseManagement1;\n        /* Only administrator can install D365CE apps for users in tenant.\n      Administrator and Non-Administrator can install D365BC apps for users in tenant if it has licenses.\n      Any user can install Power BI Visuals, since they are all Freemium.\n      If the offer is Freemium, Install must be the primary action.\n    */ const showInstallFirst = isD365(getPrimaryProductUrl(targetApp === null || targetApp === void 0 ? void 0 : targetApp.primaryProduct)) && isAdmin && (targetApp === null || targetApp === void 0 ? void 0 : (_targetApp_licenseManagement1 = targetApp.licenseManagement) === null || _targetApp_licenseManagement1 === void 0 ? void 0 : _targetApp_licenseManagement1.isFreemium) || isPowerBIVisuals(getPrimaryProductUrl(targetApp === null || targetApp === void 0 ? void 0 : targetApp.primaryProduct));\n        const isD365BCApp = isD365BC(getPrimaryProductUrl(targetApp === null || targetApp === void 0 ? void 0 : targetApp.primaryProduct));\n        if (!isD365BCApp && showInstallFirst) {\n            ctaTypes.push(Constants.CTAType.Install);\n            ctaTypes.push(Constants.CTAType.BuyLicense);\n        } else if (!isD365BCApp && isAdmin && doesTenantHasLicenseForApp || isD365BCApp && doesTenantHasLicenseForApp) {\n            ctaTypes.push(Constants.CTAType.BuyLicense);\n            ctaTypes.push(Constants.CTAType.Install);\n        } else {\n            ctaTypes.push(Constants.CTAType.BuyLicense);\n        }\n    } else if (isPowerBIVisuals(getPrimaryProductUrl(targetApp === null || targetApp === void 0 ? void 0 : targetApp.primaryProduct))) {\n        ctaTypes.push(Constants.CTAType.Get);\n    } else if (targetApp === null || targetApp === void 0 ? void 0 : (_targetApp_licenseManagement = targetApp.licenseManagement) === null || _targetApp_licenseManagement === void 0 ? void 0 : _targetApp_licenseManagement.isMicrosoftManaged) {\n        const showGetCta = targetApp.licenseManagement.isFreemium || doesTenantHasLicenseForApp;\n        if (isAdmin && showGetCta) {\n            ctaTypes.push(Constants.CTAType.Get);\n            ctaTypes.push(Constants.CTAType.RequestTrial);\n        } else {\n            ctaTypes.push(Constants.CTAType.RequestTrial);\n        }\n    }\n    const isTransactableD365App = isD365(getPrimaryProductUrl(targetApp === null || targetApp === void 0 ? void 0 : targetApp.primaryProduct)) && isTransactApp({\n        isEmbedded,\n        ctaTypes: targetApp.ctaTypes,\n        appData: targetApp,\n        billingRegion\n    });\n    if (isTransactableD365App) {\n        ctaTypes.push(Constants.CTAType.RequestTrial);\n    }\n    return ctaTypes.length ? ctaTypes : null;\n}\nexport function getCtaBagTransactable(uiRole, doesTenantHasLicenseForApp, isFreemium) {\n    const isAdmin = uiRole === Constants.UiRole.Admin;\n    const { CTAType: { Install, BuyLicense } } = Constants;\n    if (isAdmin && (doesTenantHasLicenseForApp || isFreemium)) {\n        return Install;\n    } else {\n        return BuyLicense;\n    }\n}\nexport function isSharepointApp(products) {\n    return bitMasksMatchBitMask(products, getProdcutBitMaskInfo(DataMap.products.SharePoint));\n}\nexport function isLeadGenEnabled(appData) {\n    return appData.leadgenEnabled !== undefined ? appData.leadgenEnabled : null;\n}\nfunction getOfficeHandoffParams(appId, correlationId, locale) {\n    const urlArgs = [];\n    // These values for auth type are given by Office Store team\n    const storeConfig = getAppConfig('config');\n    // default values\n    let ui = 'en-us';\n    // 'locale' also denote the content market applicable for the app.\n    // This can be removed once we build support for localization.\n    let contentMarket = locale || 'en-us';\n    if (storeConfig === null || storeConfig === void 0 ? void 0 : storeConfig.locale) {\n        contentMarket = ui = storeConfig.locale;\n    }\n    // This is the URL which we are trying to fill the parameters for: https://pages.store.office.com/addininstaller.aspx?assetid={0}&ui={1}&rs={2}&sourcecorrid={3}\n    urlArgs.push(appId);\n    urlArgs.push(ui); // ui => UI language\n    urlArgs.push(contentMarket); // rs => Content Market\n    urlArgs.push(correlationId);\n    return urlArgs;\n}\nexport function getHandoffUrlForProduct(productUrlKey, appId, products, locale) {\n    const config = loadPartnerManifest();\n    const handOffUrl = config.handoff[`${productUrlKey}`];\n    // For office Saas apps, we use the default handoff url which we receive from the backend\n    // For Power BI Visuals, we no longer route externally to Office\n    if (!handOffUrl || isOfficeSaasApp(productUrlKey, products)) {\n        return null;\n    }\n    const correlationId = getAppConfig('correlationId');\n    let urlArgs = [];\n    if (isOfficeApp(productUrlKey)) {\n        urlArgs = getOfficeHandoffParams(appId, correlationId, locale);\n    } else {\n        urlArgs = [\n            encodeURIComponent(appId),\n            encodeURIComponent(getTelemetryResponseUrl(appId)),\n            correlationId\n        ];\n    }\n    const handOffURL = getFormattedString(handOffUrl, urlArgs);\n    return handOffURL;\n}\nexport function processHandoffURLAndTitle(appData) {\n    var _getWindow_location, _getWindow;\n    if (!appData) {\n        return {\n            url: null,\n            handoffTitle: null\n        };\n    }\n    const { primaryProduct, entityId, products, locale, title, handoffURL } = appData;\n    // We get the Handoff URL from the Partners Manifest file. If the url is null,\n    // we need to read the url from the app meta data.\n    let handoffTitle;\n    let url = getHandoffUrlForProduct(getPrimaryProductUrl(primaryProduct), entityId, products, locale);\n    if (!url) {\n        if (handoffURL) {\n            url = handoffURL;\n            const notifyURL = getTelemetryResponseUrl(entityId);\n            const queryParams = url.indexOf('?') > -1 ? '&responseUrl=' + notifyURL : '?responseUrl=' + notifyURL;\n            url = url + queryParams;\n            // Taking you to Azure/Office doesn't make sense for ISV SaaS apps during transition animation popup.\n            // So, for only this case, we update the builtFor field.\n            // Also, there is a special case for Power BI. For all the content packs, we use the title as Power BI\n            const { property, mask } = getProdcutBitMaskInfo(DataMap.products.PowerBI);\n            if (!bitMasksMatch(primaryProduct, property, mask)) {\n                handoffTitle = title;\n            }\n        }\n    }\n    url = updateHandOffUrlWithCampaignParams(url, (_getWindow = getWindow()) === null || _getWindow === void 0 ? void 0 : (_getWindow_location = _getWindow.location) === null || _getWindow_location === void 0 ? void 0 : _getWindow_location.href);\n    return {\n        url,\n        handoffTitle\n    };\n}\nexport function isPrivateOffer(appType) {\n    if (appType === OdataRawObjectAppType.private) {\n        return true;\n    }\n    return false;\n}\nexport function isOpenInNewWindowButton({ isEmbedded, ctaType, appData, billingRegion, url }) {\n    const isTransactable = isTransactApp({\n        isEmbedded,\n        ctaTypes: [\n            ctaType\n        ],\n        appData,\n        billingRegion\n    }) || isPrivateOffer(appData === null || appData === void 0 ? void 0 : appData.appType);\n    return(// Product decision that for test drive we always show the \"open in new tab\" icon.\n    // We couldn't know if the test drive will send the user outside before the button is created\n    ctaType === Constants.CTAType.TestDrive || !!url && !isAppContactForm(appData, ctaType) && !isTransactable && !shouldDownloadPowerBIVisual(appData, isEmbedded) && !isEmbedded);\n}\nexport function getDataMapValues(collection, bitmask) {\n    return Object.keys(collection).reduce((acc, value)=>{\n        if (bitMasksMatchFilter(bitmask, collection[`${value}`])) {\n            acc.push(collection[`${value}`]);\n        }\n        return acc;\n    }, []);\n}\nexport function getProductFieldFromDataMap(collection, bitmask, field) {\n    const dataMapValues = getDataMapValues(collection, bitmask);\n    return dataMapValues ? dataMapValues[0][`${field}`] : '';\n}\nexport function getActionStringForCTAType(ctaType) {\n    // Falling back to Get if we ctaType does not match.\n    return Constants.ActionStrings[Constants.CTAType[`${ctaType}`]];\n}\n// Utility function to determine if an email has 'onmicrosoft.com' or 'ccsctp.net' [email sufixes for PROD/DF and INT respectively]\nexport function isOnMicrosoftEmail(email) {\n    return !!(email && (email.substr(-'onmicrosoft.com'.length) === 'onmicrosoft.com' || email.substr(-'ccsctp.net'.length) === 'ccsctp.net'));\n}\nexport function getLeadGenEmailId(userInfo) {\n    return userInfo.email && userInfo.alternateEmail && isOnMicrosoftEmail(userInfo.email) && userInfo.alternateEmail !== 'undefined' ? userInfo.alternateEmail : userInfo.email;\n}\nconst urlList = [\n    'https://powerbi-df.analysis-df.windows.net',\n    'https://dxt.powerbi.com',\n    'https://msit.powerbi.com',\n    'https://app.powerbi.com',\n    'https://app.powerbi.cn',\n    'https://app.powerbigov.us',\n    'https://app.powerbi.de',\n    'https://app.analysis.windows-int.net',\n    'https://home.dynamics.com',\n    'https://tip1.home.dynamics.com',\n    'https://tip1.web.powerapps.com',\n    'https://powerapps.cloudapp.net',\n    'https://portal.analysis.windows-int.net',\n    'https://appgallery.spza-internal.net',\n    'https://appgallery.spza-staging.net',\n    'http://localhost:3000',\n    'https://service.powerapps.com',\n    'https://dxtcurrent.powerbi.com',\n    'https://dxtprevious.powerbi.com',\n    'https://dxtnext.powerbi.com',\n    'https://cosell.dev.microsoft.com',\n    'https://cosell.ppe.microsoft.com',\n    'https://cosell.microsoft.com',\n    'https://partnersalespreview.microsoft.com',\n    'https://partnersales.microsoft.com'\n];\nconst httpsSubString = 'https://';\nexport function checkOriginSource(endpoint) {\n    if (!endpoint) {\n        return false;\n    }\n    let origin = endpoint;\n    let originStartIndex = 0;\n    if (origin.indexOf(httpsSubString) === 0) {\n        originStartIndex = httpsSubString.length;\n    }\n    const firstSlashIndex = origin.indexOf('/', originStartIndex);\n    if (firstSlashIndex >= 0) {\n        origin = origin.substr(0, firstSlashIndex);\n    }\n    for(let i = 0; i < urlList.length; i++){\n        if (origin.toLocaleLowerCase() === urlList[`${i}`]) {\n            return true;\n        }\n    }\n    if (/^https:\\/\\/.*analysis.windows(-int)?.net/.test(origin) || // PowerBI (daily) env\n    /^https:\\/\\/.*.dynamics.com/.test(origin) || // Dynamics CRM\n    /^https:\\/\\/.*.dynamics.de/.test(origin) || // Dinamics CRM\n    /^https:\\/\\/.*.financials.dynamics-tie.com/.test(origin) || /^https:\\/\\/.*.financials.dynamics-ppe.com/.test(origin) || /^https:\\/\\/.*.projectmadeira.com/.test(origin) || // Madeira PROD\n    /^https:\\/\\/.*.projectmadeira-ppe.com/.test(origin) || // Madeira INT\n    /^https:\\/\\/.*.projectmadeira-test.com/.test(origin)) {\n        // Madeira test\n        return true;\n    } else {\n        return false;\n    }\n}\nexport function removeURLParameter(url, parameter) {\n    // Split the url into 2 parts. The right side of the '?' has all the query parameters.\n    const urlparts = url.split('?');\n    if (urlparts.length >= 2) {\n        const prefix = encodeURIComponent(parameter) + '=';\n        // We use either '&' or ';' as the parameter seperaters. Use the second part of the urlParts which has queryParams\n        const queryParams = urlparts[1].split(/[&;]/g);\n        for(let i = queryParams.length; i-- > 0;){\n            // Search the string for the last occurance of the prefix : Equivalent of string starts with\n            if (queryParams[`${i}`].lastIndexOf(prefix, 0) !== -1) {\n                queryParams.splice(i, 1); // Removes that element from the queryParams array\n            }\n        }\n        const newUrl = urlparts[0] + (queryParams.length > 0 ? '?' + queryParams.join('&') : '');\n        return newUrl;\n    } else {\n        return url;\n    }\n}\n// Telemetry Helper Functions\nexport function getDataMapString(collection, bitmask, field) {\n    const dataMapValues = getDataMapValues(collection, bitmask);\n    const result = dataMapValues.map((value)=>{\n        return value[`${field}`];\n    }).join(', ');\n    return result;\n}\nexport function getProductStringArray(productBitmask) {\n    const productUrlKeyString = getDataMapString(DataMap.products, productBitmask, 'UrlKey');\n    return getTrimmedWords(productUrlKeyString, ',');\n}\n/**\n * get consent dialog info for telemetry detail content\n *\n * @param hasCheckBox consent Dialog has consent checkbox: e.x. By click this ...\n * @param hasUserProfile consent Dialog has user profile: e.x. name, email, phone, job, company, ...\n *\n * @return\n *     an object which has following properties\n *         hasPhone: boolean determine whether dialog has phone or not\n *         hasCheckbox: boolean determine whether dialog has checkbox or not\n */ export function getTelemetryDetailContentConsentDialogInfo(hasCheckbox = false, hasUserProfile = false) {\n    const consentDialogInfo = {\n        hasContactInfo: isNullorUndefined(hasUserProfile) ? undefined : hasUserProfile,\n        hasCheckbox: isNullorUndefined(hasCheckbox) ? undefined : hasCheckbox\n    };\n    return consentDialogInfo;\n}\nfunction getTag(keys) {\n    return keys.map((key)=>AppTag[`${key}`]);\n}\nexport function isCertifiedSoftware(app) {\n    var _app_badges;\n    return !!(app === null || app === void 0 ? void 0 : (_app_badges = app.badges) === null || _app_badges === void 0 ? void 0 : _app_badges.includes(Badges.MAICPPCertifiedSolution));\n}\nexport function isFreeTrial(app) {\n    var _app_startingPrice, _app_pricingInformation;\n    if (app.actionString === Constants.ActionStrings.Try) {\n        return true;\n    }\n    // simple plan has startingPrice\n    if ((_app_startingPrice = app.startingPrice) === null || _app_startingPrice === void 0 ? void 0 : _app_startingPrice.hasFreeTrial) {\n        return true;\n    }\n    return (_app_pricingInformation = app.pricingInformation) === null || _app_pricingInformation === void 0 ? void 0 : _app_pricingInformation.skus.some((sku)=>sku.freeTrialDurationDays);\n}\nfunction isMicrosoftCertified({ CertificationState }) {\n    return CertificationState === Constants.CertificationType.MicrosoftCertified;\n}\nfunction isPreferredSolution({ isSolutionMap = false }) {\n    return isSolutionMap || false;\n}\nfunction isOfficeAwards({ tags, entityId }) {\n    return (tags === null || tags === void 0 ? void 0 : tags.length) && getTag(tags)[0] === AppTag.OfficeAward || (entityId === null || entityId === void 0 ? void 0 : entityId.toUpperCase()) === Constants.HyperfishEntityId.toUpperCase();\n}\nfunction isPBICertified({ tags }) {\n    return (tags === null || tags === void 0 ? void 0 : tags.length) && getTag(tags)[0] === AppTag.PowerBICertified;\n}\nfunction isAzureExpertsMSP({ tags }) {\n    return tags === null || tags === void 0 ? void 0 : tags.includes(Constants.BadgeType.AzureExpertsMSP);\n}\nfunction isPrivateOfferBadge({ appType = OdataRawObjectAppType.public }) {\n    return isPrivateOffer(appType);\n}\nfunction isAzureBenefitEligible({ AzureBenefitEligible = 0 }) {\n    return AzureBenefitEligible !== 0;\n}\nconst badgesConditions = {\n    [Constants.BadgeType.MicrosoftCertified]: isMicrosoftCertified,\n    [Constants.BadgeType.PreferredSolution]: isPreferredSolution,\n    [Constants.BadgeType.OfficeAwards]: isOfficeAwards,\n    [Constants.BadgeType.PBICertified]: isPBICertified,\n    [Constants.BadgeType.AzureExpertsMSP]: isAzureExpertsMSP,\n    [Constants.BadgeType.PrivateOffer]: isPrivateOfferBadge,\n    [Constants.BadgeType.AzureBenefitEligible]: isAzureBenefitEligible,\n    [Constants.BadgeType.CertifiedSoftware]: isCertifiedSoftware,\n    [Constants.BadgeType.FreeTrial]: isFreeTrial\n};\nexport function getBadgeTypes(appData) {\n    return Object.entries(badgesConditions).filter(([, condition])=>condition(appData)).map(([badge])=>badge);\n}\n/**\n * get application telemetry detail content as string\n *\n * @param appInfo: application information\n * @param isNationalCloud: detetmine this application is Microsoft National Clouds: e.g. Azure, Dynamics 365, and Office 365\n * @param ctaTypes: click to action types\n * @param consentDialogHasUserProfile: if current view is a consent modal dialog, determine it has user contact information\n * @param consentDialogHasCheckbox: if current view is a consent modal dialog, determine it has checkbox\n *\n * @return:\n *  a string serialized for telemetry property details\n */ export function getAppTelemetryDetailContentText({ appInfo, isNationalCloud, isEmbedded, ctaTypes, consentDialogHasUserProfile, consentDialogHasCheckbox, currentView, tileDataRequestId, uiRole, hasLicense, shouldShowUserTerms, planId, ribbonKey, trailId }) {\n    if (!appInfo) {\n        return '';\n    }\n    const { privateApp, leadgenEnabled: leadGenEnabled, title, builtFor, actionString, licenseManagement, entityId, offerType, startingPrice, products, publisher, publisherId } = appInfo;\n    // data map, e.g. filter, property 'Title'\n    const dataMapField = 'Title';\n    const appPublisher = publisher && isNationalCloud ? sha256(publisher).toString() : publisher;\n    const appPublisherId = publisherId && isNationalCloud ? sha256(publisherId).toString() : publisherId;\n    const ctaTypeString = isArray(ctaTypes) && ctaTypes.map((ctaType)=>Constants.CTAType[`${ctaType}`]).join(', ') || undefined;\n    const badgeTypes = getBadgeTypes(appInfo);\n    const productAvailabilityType = privateApp ? BusinessTelemetry.ProductAvailabilityType.Private : BusinessTelemetry.ProductAvailabilityType.Public;\n    const isSaasTransactApp = offerType === OfferType.SaaSApp ? startingPrice && typeof startingPrice.pricingData === 'object' ? 'true' : 'false' : '';\n    const isTransactable = startingPrice && typeof startingPrice.pricingData === 'object' ? 'true' : 'false';\n    const appTelemetryDetailContent = {\n        title,\n        publisher: appPublisher,\n        builtFor,\n        actionString,\n        products: getDataMapString(DataMap.products, products, dataMapField),\n        leadGenEnabled,\n        ctaType: ctaTypeString,\n        type: productAvailabilityType,\n        currentView,\n        tileDataRequestId: tileDataRequestId || '',\n        isSaasTransactApp,\n        isEmbedded,\n        isTransactable,\n        isMicrosoftManaged: licenseManagement === null || licenseManagement === void 0 ? void 0 : licenseManagement.isMicrosoftManaged,\n        isFreemium: licenseManagement === null || licenseManagement === void 0 ? void 0 : licenseManagement.isFreemium,\n        uiRole,\n        hasLicense,\n        showTerms: shouldShowUserTerms,\n        badgeTypes,\n        publisherId: appPublisherId,\n        entityId,\n        planId,\n        ribbonKey,\n        trailId\n    };\n    // if any of consentDialogHasUserProfile and consentDialogHasCheckbox has value\n    // add consent dialog info into telemetry detail content\n    if (!isNullorUndefined(consentDialogHasUserProfile) || !isNullorUndefined(consentDialogHasCheckbox)) {\n        const consentDialogInfoKey = 'consentDialogInfo';\n        appTelemetryDetailContent[`${consentDialogInfoKey}`] = getTelemetryDetailContentConsentDialogInfo(consentDialogHasCheckbox, consentDialogHasUserProfile);\n    }\n    return JSON.stringify(appTelemetryDetailContent);\n}\n/**\n * get consulting service telemetry detail content as string\n *\n * @param serviceInfo: consulting service information\n * @param isNationalCloud: detetmine this application is Microsoft National Clouds: e.g. Azure, Dynamics 365, and Office 365\n * @param ctaTypes: click to action types\n * @param consentDialogHasUserProfile: if current view is a consent modal dialog, determine it has user contact information\n * @param consentDialogHasCheckbox: if current view is a consent modal dialog, determine it has checkbox\n * @param currentView: name of main container component rendered in current page, e.x. 'galleryPage'\n *\n * @return:\n *  a string serialized for telemetry property details\n */ export function getServiceTelemetryDetailContentText({ serviceInfo, isNationalCloud, ctaTypes, consentDialogHasUserProfile, consentDialogHasCheckbox, currentView, ribbonKey = '', trailId }) {\n    if (!serviceInfo) {\n        return '';\n    }\n    const { serviceTypes, title, industries, products, publisher, entityId, publisherId } = serviceInfo;\n    // data map, e.g. filter, property 'Title'\n    const dataMapField = 'Title';\n    const ctaTypeString = isArray(ctaTypes) && ctaTypes.map((ctaType)=>Constants.CTAType[`${ctaType}`]).join(', ') || undefined;\n    const appPublisher = publisher && isNationalCloud ? sha256(publisher).toString() : publisher;\n    const appPublisherId = publisherId && isNationalCloud ? sha256(publisherId).toString() : publisherId;\n    const serviceTelemetryDetailContent = {\n        serviceName: title,\n        publisher: appPublisher,\n        actionString: Constants.ActionStrings.Service,\n        products: getDataMapString(DataMap.products, products, dataMapField),\n        industries: getDataMapString(DataMap.industries, industries, dataMapField),\n        serviceTypes: Constants.ServiceTypes[`${serviceTypes}`],\n        ctaType: ctaTypeString,\n        currentView,\n        entityId,\n        publisherId: appPublisherId,\n        ribbonKey,\n        trailId\n    };\n    // if any of consentDialogHasUserProfile and consentDialogHasCheckbox has value\n    // add consent dialog info into telemetry detail content\n    if (!isNullorUndefined(consentDialogHasUserProfile) || !isNullorUndefined(consentDialogHasCheckbox)) {\n        const consentDialogInfoKey = 'consentDialogInfo';\n        serviceTelemetryDetailContent[`${consentDialogInfoKey}`] = getTelemetryDetailContentConsentDialogInfo(consentDialogHasCheckbox, consentDialogHasUserProfile);\n    }\n    return JSON.stringify(serviceTelemetryDetailContent);\n}\nexport function isEmbedHostDataDynamic(embedHost) {\n    if (embedHost === DataMap.products.PowerBI.UrlKey) {\n        return true;\n    }\n    return false;\n}\nexport function getEmbedHostName(embedHost) {\n    var _getProductByUrlKey;\n    return embedHost != null ? (_getProductByUrlKey = getProductByUrlKey({\n        urlKey: embedHost\n    })) === null || _getProductByUrlKey === void 0 ? void 0 : _getProductByUrlKey.UrlKey : 'portal';\n}\nexport function compareApiVersion(sourceVersion, targetVersion) {\n    return sourceVersion < targetVersion ? -1 : sourceVersion > targetVersion ? 1 : 0;\n}\nexport function IsMoonCakeNationalCloud(nationalCloud) {\n    if (nationalCloud) {\n        if (nationalCloud.toLowerCase() === Constants.mooncakeNationalCloud) {\n            return true;\n        }\n    }\n    return false;\n}\nfunction getProductPropertyByProductKey(productKey, value, propertyName) {\n    for(const key in DataMap.products){\n        if (!!DataMap.products[`${key}`] && DataMap.products[`${key}`][`${productKey}`] === value) {\n            return DataMap.products[`${key}`][`${propertyName}`];\n        }\n    }\n    return null;\n}\nexport function getProductBackendKeyByLongTitle(productTitle) {\n    return getProductPropertyByProductKey('LongTitle', productTitle, 'BackendKey');\n}\nexport function serializeUserProfileEmbedInfo(userInfo) {\n    let profileToSave = '';\n    for(const key in userInfo){\n        if (key === Constants.userAcceptField) {\n            continue;\n        }\n        profileToSave += key + ':' + userInfo[`${key}`] + '|';\n    }\n    return profileToSave;\n}\nexport function readUserProfileEmbedCookie(userProfileInCookie, user) {\n    const userProfileInfo = userProfileInCookie.split('|');\n    userProfileInfo.forEach((pair)=>{\n        const colenIndex = pair.indexOf(':');\n        if (colenIndex !== -1) {\n            const key = pair.substring(0, colenIndex);\n            const value = pair.substring(colenIndex + 1, pair.length);\n            user[`${key}`] = value;\n        }\n    });\n}\nexport function logClientError(err, additionalDetails, file = '', isWarning = false) {\n    try {\n        var _getWindow_location, _getWindow;\n        const value = err ? parse(err) : [];\n        const stringifiedStack = value.map((sf)=>sf.toString()).join('\\n');\n        let errorMessage = '';\n        if (err && err.message) {\n            errorMessage = `Error Message: ${err.message}\\n `;\n        }\n        additionalDetails = errorMessage + additionalDetails + '\\n Stack: ' + stringifiedStack;\n        // adding the file to query errors based on the ones that have a valid file path hence raised from our code base vs ones raised by external components\n        const details = {\n            file,\n            additionalDetails\n        };\n        console.error(err);\n        const payload = {\n            page: (_getWindow = getWindow()) === null || _getWindow === void 0 ? void 0 : (_getWindow_location = _getWindow.location) === null || _getWindow_location === void 0 ? void 0 : _getWindow_location.href,\n            action: Constants.Telemetry.Action.PageLoad,\n            actionModifier: isWarning ? Constants.Telemetry.ActionModifier.Warning : Constants.Telemetry.ActionModifier.Error,\n            details: JSON.stringify(details),\n            flushLog: true\n        };\n        SpzaInstrumentService.getProvider().probe('logTelemetryInfo', payload);\n        const log = isWarning ? logger.warning.bind(logger) : logger.error.bind(logger);\n        log(payload.details, {\n            action: payload.action,\n            actionModifier: payload.actionModifier\n        });\n    } catch (error) {\n        console.error(error);\n    }\n}\n// Utility function which determines if a string is a JSON or not.\n// Added this to avoid crash in few cases where we receive an object instead of a json string.\nexport function isJsonString(str) {\n    let parsedObj = null;\n    try {\n        parsedObj = JSON.parse(str);\n    } catch (e) {\n        return null;\n    }\n    return parsedObj;\n}\n// function to loop through feature flags\n// and check if at least one of them is present in the queries or in the app settings\nexport function queryConfigContainsFeatureFlags(queryParams) {\n    const featureFlags = new IFeatureFlags();\n    const keys = Object.getOwnPropertyNames(featureFlags);\n    const keysLength = keys.length;\n    for(let i = 0; i < keysLength; i++){\n        if (queryParams && queryParams[keys[`${i}`]]) {\n            return true;\n        } else if (process.env[keys[`${i}`]]) {\n            return true;\n        }\n    }\n    return false;\n}\n// function to loop through feature flags\n// and return an object with featureFlag values that are present in the query or in the app settings\n// while ignoring other params in the query\nexport function getParsedFeatureFlags(queryParams) {\n    const result = new IFeatureFlags();\n    if (queryParams) {\n        const keys = Object.getOwnPropertyNames(result);\n        const keysLength = keys.length;\n        for(let i = 0; i < keysLength; i++){\n            const ff = keys[`${i}`];\n            if (queryParams[`${ff}`]) {\n                if (typeof result[`${ff}`] === 'boolean') {\n                    result[`${ff}`] = queryParams[`${ff}`] === 'true';\n                } else {\n                    result[`${ff}`] = queryParams[`${ff}`];\n                }\n            } else if (process.env[`${ff}`]) {\n                result[`${ff}`] = process.env[`${ff}`];\n            }\n        }\n    }\n    result.activeCloudMarketplaceFeatures();\n    return result;\n}\n// returns true or false whether the regular expression matches pattern\nexport function matchesExpression(spzaUserId, pattern) {\n    const match = spzaUserId.match(pattern);\n    if (match) {\n        return match.index === 0;\n    }\n    return false;\n}\nexport function getSpzaUserIdAndNewUserModifier() {\n    const spzaUserData = {\n        spzaUserId: '',\n        newUserModifier: Constants.Telemetry.ActionModifier.SpzaUserIdNew\n    };\n    // get spza user id\n    spzaUserData.spzaUserId = getLocalStorageItem(Constants.LocalStorage.spzaUserId);\n    // create spza user id\n    if (isEmptyNullorUndefinedString(spzaUserData.spzaUserId)) {\n        // NOTE: if local storage is not enabled in browser, we always create a new one everytime we access it\n        spzaUserData.spzaUserId = generateGuid();\n        // store spza user id\n        saveLocalStorageItem(Constants.LocalStorage.spzaUserId, spzaUserData.spzaUserId);\n    } else if (hasUserAgreedPrivacyConsent()) {\n        // a returned user must meet following criteria\n        //  1) user has agreed privacy agreement <=> spzaUserId is in browser local storage, and\n        //  2) spzaUserId is found\n        spzaUserData.newUserModifier = Constants.Telemetry.ActionModifier.SpzaUserIdReturn;\n    }\n    return spzaUserData;\n}\nexport function getTrailIdAndData(forceUpdate = false, action) {\n    // get spza user trail id\n    const data = JSON.parse(getSessionStorageItem(Constants.LocalStorage.trailId) || JSON.stringify({}));\n    const trailData = _object_spread({\n        trailId: '',\n        trailIdModifier: Constants.Telemetry.ActionModifier.TrailIdUpdate,\n        time: Date.now().toString()\n    }, data);\n    const sessionTimeOut = 1000 * 60 * 60 * 2; // 2h\n    const isValid = new Date(parseInt(trailData.time)).getTime() + sessionTimeOut > Date.now();\n    // create user trail id\n    if (isEmptyNullorUndefinedString(trailData.trailId) || !isValid || forceUpdate) {\n        trailData.trailId = `${generateGuid()}_${trailData.time}`;\n        // store trail id\n        saveSessionStorageItem(Constants.LocalStorage.trailId, JSON.stringify(trailData));\n        if (forceUpdate) {\n            trailData.trailIdModifier = `${Constants.Telemetry.ActionModifier.TrailIdUpdate} by force duo to ${action}`;\n            SpzaInstrumentService.registerTrailId(trailData.trailId);\n        }\n        console.log('[TrailID]', trailData.trailId, trailData.trailIdModifier);\n    } else if (hasUserAgreedPrivacyConsent()) {\n        trailData.trailIdModifier = Constants.Telemetry.ActionModifier.TrailIdValid;\n    }\n    const payload = {\n        page: getWindow().location.href,\n        action: Constants.Telemetry.Action.TrailData,\n        actionModifier: trailData.trailIdModifier,\n        details: JSON.stringify(trailData)\n    };\n    SpzaInstrumentService.getProvider().probe('logTelemetryInfo', payload);\n    logger.info(payload.details, {\n        action: payload.action,\n        actionModifier: payload.actionModifier\n    });\n    return trailData;\n}\nexport function getLocaleDate(date, locale) {\n    const options = {\n        weekday: 'short',\n        year: 'numeric',\n        month: 'short',\n        day: 'numeric'\n    };\n    if (date) {\n        const parsedDate = new Date(date);\n        return locale ? parsedDate.toLocaleDateString(locale, options) : parsedDate.toLocaleDateString();\n    }\n    return '';\n}\nexport function getNetworkStats() {\n    var _navigator;\n    const { effectiveType, rtt, downlink } = ((_navigator = navigator) === null || _navigator === void 0 ? void 0 : _navigator.connection) || {};\n    return {\n        downlink,\n        rtt,\n        effectiveType\n    };\n}\nexport function logAssetsTelemetryEvents(store) {\n    var _state_config, _state_config1, _getWindow_performance, _getWindow, _getWindow_performance1, _getWindow1;\n    const state = store.getState();\n    const instrument = SpzaInstrumentService.getProvider();\n    const page = getWindow().location.href;\n    const landingView = state === null || state === void 0 ? void 0 : (_state_config = state.config) === null || _state_config === void 0 ? void 0 : _state_config.currentView;\n    const isEmbedded = ((_state_config1 = state.config) === null || _state_config1 === void 0 ? void 0 : _state_config1.isEmbedded) || false;\n    const connection = getNetworkStats();\n    const userAgent = navigator.userAgent;\n    const additionalTelemetry = {\n        landingView,\n        isEmbedded,\n        connection,\n        userAgent\n    };\n    const { navigationStart = 0, requestStart = 0 } = ((_getWindow = getWindow()) === null || _getWindow === void 0 ? void 0 : (_getWindow_performance = _getWindow.performance) === null || _getWindow_performance === void 0 ? void 0 : _getWindow_performance.timing) || {};\n    const perfEntries = ((_getWindow1 = getWindow()) === null || _getWindow1 === void 0 ? void 0 : (_getWindow_performance1 = _getWindow1.performance) === null || _getWindow_performance1 === void 0 ? void 0 : _getWindow_performance1.getEntriesByType('resource')) || [];\n    perfEntries.filter(({ initiatorType })=>initiatorType === 'script' || initiatorType === 'link').forEach((perfEntry)=>{\n        const { name: src, initiatorType, responseEnd: performanceNow, duration } = perfEntry;\n        const telemetryData = {\n            page,\n            action: Constants.Telemetry.Action.PerfResources,\n            actionModifier: Constants.Telemetry.ActionModifier.Complete,\n            details: JSON.stringify(_object_spread({\n                src,\n                initiatorType,\n                performanceNow,\n                durationSinceRequestStart: performanceNow - (requestStart - navigationStart),\n                duration\n            }, additionalTelemetry))\n        };\n        instrument.probe('logTelemetryInfo', telemetryData);\n        logger.info(telemetryData.details, {\n            action: telemetryData.action,\n            actionModifier: telemetryData.actionModifier\n        });\n    });\n}\nexport function getHostType(isEmbed) {\n    const hostType = !isEmbed ? Constants.appSource : Constants.appSourceEmbed;\n    return hostType;\n}\nexport function getCTATypeForActionString(actionString) {\n    if (!actionString) {\n        return undefined;\n    }\n    const actionStrings = Object.keys(Constants.ActionStrings);\n    for (const key of actionStrings){\n        if (Constants.ActionStrings[`${key}`] === actionString) {\n            return Constants.CTAType[`${key}`];\n        }\n    }\n    return undefined;\n}\nexport function logTenantInfo(users, isAutoSign, spzaUserId) {\n    const instrument = SpzaInstrumentService.getProvider();\n    if (users && users.signedIn && users.email) {\n        let tenant = '';\n        const emailParts = users.email.split('@');\n        if (emailParts.length > 1) {\n            tenant = emailParts[1];\n        }\n        // When the user is signed in, we need to correlate the spzaUserId with the signed-in information.\n        // We extract the tid and oid and then map it to the spzaUserId\n        const userDetails = {\n            'tenant name': tenant,\n            'tenand id': users.tid ? users.tid : '',\n            oid: users.oid ? users.oid : '',\n            spzaUserId,\n            isAutoSign,\n            isMSAUser: users.isMSAUser,\n            userSegment: users.userSegment && UserSegment[users.userSegment] || '',\n            fieldHubUserType: Constants.FieldHubUserType.None,\n            emailHash: sha256(users.email).toString(),\n            alternateEmailHash: users.alternateEmail && users.alternateEmail !== 'undefined' ? sha256(users.alternateEmail).toString() : '',\n            tenantType: users.tenantType\n        };\n        const tenantPayload = {\n            eventName: Constants.Telemetry.Action.UserTenantInfo,\n            data: JSON.stringify(userDetails)\n        };\n        instrument.probe('logOneTimeInfo', tenantPayload);\n        logger.info(tenantPayload.data, {\n            action: tenantPayload.eventName,\n            actionModifier: Constants.Telemetry.ActionModifier.Info\n        });\n    }\n}\n// This method logs the landing page details, user settings, perf\nexport function logInitialTelemetryEvents(store) {\n    var _getWindow_location, _getWindow;\n    const timeAtTelemetryMethodCall = new Date().getTime();\n    const state = store.getState();\n    const instrument = SpzaInstrumentService.getProvider();\n    // This sets the correlationId which will be passed to the telemetry request header\n    instrument.probe('initSystemInfo');\n    const sharedInstrument = SharedInstrumentService.getProvider();\n    // This sets the correlationId which will be passed to the telemetry request header\n    sharedInstrument.probe('initSystemInfo');\n    // These are one time telemetry events\n    instrument.probe('logUserSystemInfo', state.config.locale);\n    const { spzaUserId, newUserModifier } = getSpzaUserIdAndNewUserModifier();\n    SpzaInstrumentService.registerSpzaId(spzaUserId);\n    const trailIdData = getTrailIdAndData();\n    SpzaInstrumentService.registerTrailId(trailIdData.trailId);\n    SpzaInstrumentService.registerHostType(getHostType(state.config.isEmbedded));\n    const spzaUserIDPayload = _object_spread({\n        eventName: Constants.Telemetry.Action.SpzaUserId,\n        actionModifier: newUserModifier,\n        data: spzaUserId\n    }, trailIdData);\n    instrument.probe('logOneTimeInfo', spzaUserIDPayload);\n    logger.info(spzaUserIDPayload.data, {\n        action: spzaUserIDPayload.eventName,\n        actionModifier: spzaUserIDPayload.actionModifier\n    });\n    // Logs user tenant info if logged in\n    logTenantInfo(state.users, false, spzaUserId);\n    const embedHostName = getEmbedHostName(state.config.embedHost);\n    const { landingView } = state.config;\n    const landingDetails = {\n        landingPageURL: getWindow().location.href,\n        landingView,\n        referrer: getWindow().document.referrer,\n        isEmbedded: state.config.isEmbedded,\n        embedHost: embedHostName,\n        isAuthenticated: state.users ? state.users.signedIn : '',\n        cloudType: state.config.nationalCloud,\n        campaign: extractCampaignsFromUrl(getWindow().location.href),\n        commitHash: __COMMIT_HASH__,\n        userSegment: state.users && state.users.userSegment && UserSegment[state.users.userSegment] || ''\n    };\n    const appName = getEntityIdFromUrl({\n        pathName: (_getWindow = getWindow()) === null || _getWindow === void 0 ? void 0 : (_getWindow_location = _getWindow.location) === null || _getWindow_location === void 0 ? void 0 : _getWindow_location.pathname\n    });\n    getWindow().telemetry({\n        action: Constants.Telemetry.Action.Landing,\n        actionModifier: Constants.Telemetry.ActionModifier.End,\n        details: landingDetails,\n        spzaId: spzaUserId,\n        appName\n    });\n    // if app data is fetched after bundle load (like power bi), the page will not be rendered on\n    // component mount. There will be an additional network call to fetch app data after the\n    // initial window/frame load. So defer perf event to post app data retrieval\n    if (!embedHostUtils.hasDynamicData(state.config.embedHost)) {\n        const timing = performance.timing;\n        // Telemetry for Network Latency\n        const networkLatency = timing.responseEnd - timing.fetchStart;\n        // The time taken for page load once the page is received from the server\n        // we may find timing.loadEventEnd as 0 if called before load event fires.\n        // If so, use current time as approximation till we fix it properly\n        const loadEventEnd = timing.loadEventEnd !== 0 ? timing.loadEventEnd : timeAtTelemetryMethodCall;\n        // The time taken for page load once the page is received from the server\n        const pageLoadTime = loadEventEnd - timing.responseEnd;\n        // The whole process of navigation and page load\n        // notice the inconsistent usage of time (loadEventEnd), which makes the below not too useful for me\n        const navigationToPageLoad = loadEventEnd - timing.navigationStart;\n        // the data we are getting here is valuable, but seems very browser specific (some browsers do not properly support)\n        // so introducing a new number here that will always be consistent:\n        const timePassedSinceNavigationStart = timeAtTelemetryMethodCall - timing.navigationStart;\n        const perfTimings = {\n            networkLatency,\n            pageLoadTime,\n            navigationToPageLoad,\n            timePassedSinceNavigationStart,\n            allTimings: timing,\n            isEmbedded: state.config.isEmbedded,\n            embedHost: embedHostName,\n            isAuthenticated: state.users ? state.users.signedIn : '',\n            // The server created state will have the count set as 0, in case we are seeing any issue,\n            // wherein without going to server we see app view being loaded this well let us know.\n            TelemetryLoggedCount: state.config.appViewTelemetryLoggedCount,\n            landingPageURL: getWindow().location.href\n        };\n        const perfPayload = {\n            eventName: Constants.Telemetry.Action.PerfEvents,\n            data: JSON.stringify(perfTimings),\n            flushLog: true\n        };\n        // This would dispatch an action to update the incremented count in state\n        store.dispatch(createAppViewTelemetryLoggedAction(null));\n        instrument.probe('logOneTimeInfo', perfPayload);\n        logger.info(perfPayload.data, {\n            action: perfPayload.eventName,\n            actionModifier: Constants.Telemetry.ActionModifier.Info\n        });\n    }\n}\n/**\n * Sets the Profile feature flag in the state tree to true\n * @param store application state tree\n */ export function setProfileFeatureFlag(store) {\n    const state = store.getState();\n    // need feature flags from config\n    if (!state || !state.config) {\n        return;\n    }\n    const data = {\n        page: getWindow().location.href,\n        action: Constants.Telemetry.Action.EnableFeature,\n        actionModifier: Constants.Telemetry.ActionModifier.Info,\n        details: JSON.stringify('User Profile phone number feature enabled.')\n    };\n    SpzaInstrumentService.getProvider().probe('logTelemetryInfo', data);\n    logger.info(data.details, {\n        action: data.action,\n        actionModifier: data.actionModifier\n    });\n    const featureFlags = _object_spread_props(_object_spread({}, state.config.featureFlags), {\n        ProfileExp: 'true'\n    });\n    store.dispatch(createFeatureFlagsReceivedAction(featureFlags));\n}\n/**\n * Checks and sets whether we need to set the profileExp flag to true in the state depending on the pattern\n * @param store application state tree\n * @param pattern regular expression to apply to spza user id.\n */ export function setProfileFeatureFlagWithPattern(store, pattern) {\n    const userIdInfo = getSpzaUserIdAndNewUserModifier();\n    // eslint-disable-next-line security/detect-non-literal-regexp\n    const profileRegex = new RegExp(pattern);\n    if (matchesExpression(userIdInfo.spzaUserId, profileRegex)) {\n        setProfileFeatureFlag(store);\n    }\n}\nexport function encodeVulnerableDataInInitalState(initialState) {\n    const userState = initialState.users;\n    userState.firstName = encodeURI(userState.firstName);\n    userState.lastName = encodeURI(userState.lastName);\n    userState.displayName = encodeURI(userState.displayName);\n    userState.email = encodeURI(userState.email);\n    userState.alternateEmail = encodeURI(userState.alternateEmail);\n}\nexport function decodeVulnerableDataInInitalState(initialState) {\n    const userState = initialState.users;\n    userState.firstName = decodeURI(userState.firstName);\n    userState.lastName = decodeURI(userState.lastName);\n    userState.displayName = decodeURI(userState.displayName);\n    userState.email = decodeURI(userState.email);\n    userState.alternateEmail = decodeURI(userState.alternateEmail);\n}\nexport function isMSASupported(products) {\n    const matched = Object.values(DataMap.products).filter((product)=>!product.ShortcutFilters && bitMasksMatchFilter(products, product));\n    return !!(matched.length && matched.every(({ AllowMSA })=>AllowMSA));\n}\nexport function isAppForMSAAccountOnly(primaryProduct, products, ctaType) {\n    return isOfficeApp(getPrimaryProductUrl(primaryProduct)) && !isSharepointApp(products) && ctaType === Constants.CTAType.Purchase;\n}\nexport function getSignInModalTypeHelper(primaryProduct, products, userInfo, ctaType, isService, isTransactApp = false) {\n    // If the user is in a consulting service\n    if (isService) {\n        // And already signed in, then we show the AAD sign in modal\n        if (!userInfo.signedIn) {\n            return Constants.SignInType.SignInWith_AAD;\n        }\n        // Otherwise, the user is already authorized.\n        return Constants.SignInType.Authorized;\n    }\n    const isMSAUser = userInfo.isMSAUser;\n    const isMSASupportedProduct = isMSASupported(products) && !isTransactApp;\n    // To buy any office product other than sharepoint, the user should be signed in as a MSA user.\n    const shouldForceMSA = isAppForMSAAccountOnly(primaryProduct, products, ctaType);\n    if (!userInfo.signedIn) {\n        if (shouldForceMSA) {\n            return Constants.SignInType.SignInWith_MSA;\n        } else if (isMSASupportedProduct) {\n            return Constants.SignInType.SignInWith_MSA_AAD; // For WXPO products which support both\n        } else {\n            return Constants.SignInType.SignInWith_AAD;\n        }\n    }\n    // already signed in as MSA and it is a transact app switch to AAD.\n    if (userInfo.signedIn && isMSAUser && isTransactApp) {\n        return Constants.SignInType.SwitchTo_AAD;\n    }\n    // If the user is not an MSA User and we have to force the user to be MSA, then we do so.\n    if (userInfo.signedIn && !isMSAUser && shouldForceMSA) {\n        return Constants.SignInType.SwitchTo_MSA;\n    }\n    // We need to switch to AAD signin dialog when :\n    // 1) User is already signed in\n    // 2) The product doesn't support MSA\n    // 3) The user is an MSA user\n    if (userInfo.signedIn && !isMSASupportedProduct && isMSAUser) {\n        return Constants.SignInType.SwitchTo_AAD;\n    }\n    // If all the above conditions failed, it means the user is already signed in with proper authentication and can continue to Consent modal.\n    return Constants.SignInType.Authorized;\n}\nexport function getSignInModalType(primaryProduct, products, userInfo, ctaType, isService, isTransactApp = false) {\n    const isServiceEntity = !!isService;\n    return isServiceEntity ? getSignInModalTypeHelper(null, null, userInfo, ctaType, isServiceEntity, isTransactApp) : getSignInModalTypeHelper(primaryProduct, products, userInfo, ctaType, isServiceEntity, isTransactApp);\n}\nexport function isAppForAdminCenter(app) {\n    return !app.hideFromAdminPortal && bitMasksContainSomeBitMask(app.products, getShortCutBitmask(DataMap.products.AdminPortal)) && !(bitmaskMatch('web-apps', app.primaryProduct) && app.ctaTypes.length === 1 && app.ctaTypes[0] === Constants.CTAType.RequestTrial);\n}\nexport function embeddedAppDataFiltering(appData, embedHost) {\n    let filteredApps = appData;\n    if (embedHost) {\n        let appFilter = (app)=>{\n            const productInfo = getProductByUrlKey({\n                urlKey: embedHost\n            });\n            const bitmaskInfo = getProdcutBitMaskInfo(productInfo);\n            return bitMasksMatchBitMask(app.primaryProduct, bitmaskInfo);\n        };\n        // HACK: remove after Legacy CRM EmbedHost path is fixed\n        if (embedHost === Constants.dynamics365.salesED) {\n            appFilter = (app)=>{\n                const bitmaskInfo = getProdcutBitMaskInfo(DataMap.products.Dynamics365);\n                return bitMasksMatchBitMask(app.primaryProduct, bitmaskInfo);\n            };\n        }\n        if (embedHost === Constants.dynamics365.dynamics365) {\n            appFilter = (app)=>{\n                const bitmaskOperationsED = getProdcutBitMaskInfo(DataMap.products.Dynamics365forOperations);\n                const bitmaskDynamics365 = getProdcutBitMaskInfo(DataMap.products.Dynamics365);\n                const bitmaskFinanceAndOperationsBD = getProdcutBitMaskInfo(DataMap.products.Dynamics365forBusinessCentral);\n                return bitMasksMatchBitMask(app.primaryProduct, bitmaskOperationsED) || bitMasksMatchBitMask(app.primaryProduct, bitmaskDynamics365) || bitMasksMatchBitMask(app.primaryProduct, bitmaskFinanceAndOperationsBD);\n            };\n        }\n        if (embedHost === Constants.adminPortal) {\n            appFilter = (app)=>{\n                return isAppForAdminCenter(app);\n            };\n        }\n        filteredApps = appData.filter(appFilter);\n    }\n    return filteredApps;\n}\nexport function isEmailValid(email) {\n    if (!email) {\n        return false;\n    }\n    return isEmail(email);\n}\n// Validates whether the input is empty or not empty by trimming white spaces\n// validate callback is optional for extra validation\nexport function isValidInput(input, validateCallBack) {\n    if (input) {\n        const inputNoSpaces = input.trim();\n        if (inputNoSpaces.length > 0) {\n            if (validateCallBack) {\n                return validateCallBack(input);\n            } else {\n                return true;\n            }\n        }\n    }\n    return false;\n}\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function getElement(search, key, selectorFunc) {\n    let element = null;\n    switch(search){\n        case Constants.SearchBy.Id:\n            element = document.getElementById(key);\n            break;\n        case Constants.SearchBy.Class:\n            element = document.getElementsByClassName(key)[0];\n            break;\n        case Constants.SearchBy.Tag:\n            element = document.getElementsByTagName(key)[0];\n            break;\n        case Constants.SearchBy.QuerySelector:\n            {\n                const elements = document.querySelectorAll(key);\n                if (selectorFunc) {\n                    element = selectorFunc(elements);\n                } else {\n                    element = elements.length > 0 ? elements[0] : null;\n                }\n                break;\n            }\n    }\n    return element;\n}\nexport function focusElementByObject(elementToFocus) {\n    const element = getElement(elementToFocus.search, elementToFocus.key, elementToFocus.selectorFunc);\n    if (element) {\n        element.focus();\n    }\n    return element;\n}\nexport function addClassToElement(search, key, className) {\n    const element = getElement(search, key);\n    if (element && element.classList) {\n        element.classList.add(className);\n    }\n}\nexport function removeClassToFirstMatchedElement(search, key, className) {\n    const element = getElement(search, key);\n    if (element && element.classList) {\n        element.classList.remove(className);\n    }\n}\nexport function removeClassFromElements(elementsClassName) {\n    const elements = document.getElementsByClassName(elementsClassName);\n    for(const clearElement in elements){\n        if (elements[`${clearElement}`].classList && elements[`${clearElement}`].classList.contains(elementsClassName)) {\n            elements[`${clearElement}`].classList.remove(elementsClassName);\n        }\n    }\n}\nexport function focusElement(search, key) {\n    const element = getElement(search, key);\n    if (element) {\n        element.focus();\n    }\n}\nexport function setTabindex(search, key, index) {\n    const element = getElement(search, key);\n    if (element) {\n        element.tabIndex = index;\n    }\n}\nexport function removeTabindex(search, key) {\n    const element = getElement(search, key);\n    if (element) {\n        element.removeAttribute(Constants.HTMLAttribute.tabIndex);\n    }\n}\nexport function addAttributes(search, key, attributes) {\n    const element = getElement(search, key);\n    if (element) {\n        attributes.forEach((attribute)=>{\n            element.setAttribute(attribute.key, attribute.value);\n        });\n    }\n}\nconst postMessageLogTemplate = (msg)=>`Embed: ${msg}`;\nexport function postMessageToHost(payload) {\n    console.log(postMessageLogTemplate('emitting telemetry before post message'));\n    flushTelemetryBuffer();\n    console.log(postMessageLogTemplate(`Message posted with msgType ${payload.msgType}`));\n    // Added a lag of 150ms here so that when we do a handoff, the telemetry call is not failed.\n    // We use this 150ms buffer to construct the telemetry call and make it before we leave SPZA portal.\n    getWindow().setTimeout(()=>{\n        getWindow().parent.postMessage(payload, '*');\n    }, 150);\n}\nexport function getQueryParam(req, param) {\n    const value = req && req.query && req.query[`${param}`];\n    return value;\n}\nexport function getListOfDynamics365Products(productsBitmask) {\n    const productsList = [];\n    DataMap.products.Dynamics365.ShortcutFilters.forEach((filter)=>{\n        if (bitMasksMatch(productsBitmask, DataMap.products[`${filter}`].FilterGroup, DataMap.products[`${filter}`].FilterID)) {\n            productsList.push(DataMap.products[`${filter}`].Title);\n        }\n    });\n    return productsList;\n}\nexport function licenseDisplayTextSet(licenseType, license) {\n    if (licenseType === Constants.Dynamics365LicenseType.dynamics365License) {\n        if ((license.hasLicense ? 1 : 0) ^ (license.isDisputed ? 1 : 0)) {\n            return Constants.dynamicsLicense.dynamics365License;\n        } else {\n            return Constants.dynamicsLicense.noLicense;\n        }\n    } else if (licenseType === Constants.Dynamics365LicenseType.dynamics365forBusinessLicense) {\n        if ((license.hasLicense ? 1 : 0) ^ (license.isDisputed ? 1 : 0)) {\n            return Constants.dynamicsLicense.dynamics365FinancialLicense;\n        } else {\n            return Constants.dynamicsLicense.noLicense;\n        }\n    } else {\n        return '';\n    }\n}\nexport function dynamicsLicenseTypeForEmbed(productBitmask) {\n    const productList = getListOfDynamics365Products(productBitmask);\n    if (productList && productList.length > 0) {\n        for(let i = 0; i < productList.length; i++){\n            if (productList[`${i}`] === DataMap.products.Dynamics365forSales.Title || productList[`${i}`] === DataMap.products.Dynamics365forFieldServices.Title || productList[`${i}`] === DataMap.products.Dynamics365forProjectServicesAutomation.Title || productList[`${i}`] === DataMap.products.Dynamics365forCustomerServices.Title) {\n                return Constants.Dynamics365LicenseType.dynamics365License;\n            }\n            if (productList[`${i}`] === DataMap.products.Dynamics365forBusinessCentral.Title) {\n                return Constants.Dynamics365LicenseType.dynamics365forBusinessLicense;\n            }\n        }\n    }\n}\nexport function dynamicsLicenseType(userProfile, productsBitMask) {\n    if (userProfile && userProfile.licenses && userProfile.licenses.length === Constants.dynamicsLicense.currentD365LicenseNumber) {\n        return dynamicsLicenseTypeForEmbed(productsBitMask);\n    } else {\n        return Constants.Dynamics365LicenseType.noLicense;\n    }\n}\nexport function setInitialLocalLicenseStore(licenses, licenseType) {\n    if (licenseType === Constants.Dynamics365LicenseType.dynamics365License) {\n        return licenses[Constants.Dynamics365LicenseIndex.dynamics365LicenseIndex];\n    } else {\n        return licenses[Constants.Dynamics365LicenseIndex.dynamics365ForBusinessLicenseIndex];\n    }\n}\nexport function setInitialLicenseDisplayText(licenses, licenseType) {\n    if (licenseType === Constants.Dynamics365LicenseType.dynamics365License) {\n        return licenseDisplayTextSet(licenseType, licenses[Constants.Dynamics365LicenseIndex.dynamics365LicenseIndex]);\n    } else {\n        return licenseDisplayTextSet(licenseType, licenses[Constants.Dynamics365LicenseIndex.dynamics365ForBusinessLicenseIndex]);\n    }\n}\nexport function shouldSendUserProfile(state, isService = false) {\n    const isProfileExp = state && state.config && state.config.featureFlags && state.config.featureFlags.ProfileExp === 'true';\n    const userState = state && state.users;\n    const isUpdateRequiredByUserBeforeSend = userState && userState.profile && userState.profile.updateRequired === false;\n    return (isProfileExp || isService) && isUpdateRequiredByUserBeforeSend;\n}\nexport function getLocaleFromState(state) {\n    return !!state && !!state.config && !!state.config.locale ? state.config.locale : null;\n}\n/**\n * get currentView which contains curated data for Telemetry detail content\n *\n *  helper for getTelemetryDetailContentCurrentView\n *\n * @param query broser url queries\n * @param filterQueryName browser url query name\n * @param isAppGallery is application gallery page\n *\n * @return\n *  1) detailed product curated, e.g. dynamics 365 curated, office 365 curated\n *  2) detailed industry e.g. education, distribution\n *  3) empty string, if filtered view is not a industry view which shows both curated and filtered\n */ export function getTelemetryDetailContentCurrentCuratedViewPrefix(query, filterQueryName, isAppGallery) {\n    const filterQueryToFilterCollectionName = {\n        product: Constants.filterMaps.products,\n        industry: Constants.filterMaps.industries,\n        category: Constants.filterMaps.categories,\n        serviceType: Constants.filterMaps.serviceTypes\n    };\n    const isProcessingAppGalleryIndustryFilters = isAppGallery && filterQueryName === Constants.FilterQuery.industry;\n    // industy view, shows both curated and filtered, so skip adding specific keyword 'curated'\n    let curatedViewPrefix = isProcessingAppGalleryIndustryFilters ? '' : 'curated';\n    if (!query) {\n        return curatedViewPrefix;\n    }\n    // get first query value of query filterQueryName\n    const filterQueryValues = typeof query[`${filterQueryName}`] === 'string' && query[`${filterQueryName}`].split(';').filter((queryValue)=>!!queryValue.trim()) || [];\n    const filterQueryValue = filterQueryValues[0] || '';\n    if (!filterQueryValue) {\n        return curatedViewPrefix;\n    }\n    // for industry filterd view, it also shows curated data,\n    // but only when one and only one active filter is a industry filter\n    // check if it is not the case, return an empty string\n    if (isProcessingAppGalleryIndustryFilters) {\n        const areMultipleFilterCollectionsActive = Object.keys(query).filter((queryName)=>!!DataMap[filterQueryToFilterCollectionName[`${queryName}`]]).length >= 2;\n        const areMultipleIndustryFiltersActive = filterQueryValues.length >= 2;\n        const querySearch = query && query[Constants.filterTileTypes.search] || '';\n        const isSearchMode = !!querySearch.trim();\n        if (areMultipleFilterCollectionsActive || areMultipleIndustryFiltersActive || isSearchMode) {\n            // it is not a industry view which shows curated or filtered, return empty string\n            return curatedViewPrefix;\n        }\n    }\n    const filterCollection = DataMap[filterQueryToFilterCollectionName[`${filterQueryName}`]];\n    if (!filterCollection) {\n        return curatedViewPrefix;\n    }\n    Object.keys(filterCollection).some((filterName)=>{\n        const filter = filterCollection[`${filterName}`];\n        const match = filter.UrlKey === filterQueryValue;\n        // query matches with filter url key\n        if (match) {\n            const filterTitle = filter.Title && filter.Title.toLowerCase() || '';\n            // note using 'join', which takes care of empty filterTitle, which avoids adding a space\n            curatedViewPrefix = [\n                filterTitle.trim(),\n                curatedViewPrefix\n            ].filter((word)=>word.trim()).join(' ');\n        }\n        return match;\n    });\n    return curatedViewPrefix;\n}\n/**\n * get currentView for Telemetry detail content\n *\n *   additionally for gallery page, need to determine further whether it is\n *        a) curated view\n *        b) detailed product curated view (e.g. office 365 curated appGallery)\n *        c) filtered view\n *        d) industry view (e.g. education appGallery)\n *        e) search filtered view\n *\n * @param currentView current rendered view name, one of routes property `name` in routerHistory.tsx\n * @param currentGalleryViewIsCurated only applies when current view is a gallery view, determine whether it is curated\n */ export function getTelemetryDetailContentCurrentView(currentView, currentGalleryViewIsCurated) {\n    if (!currentView) {\n        return undefined;\n    }\n    // get all gallery views from routes in routerHistory.tsx\n    // e.g. appGallery, serviceGallery\n    const galleryViews = [\n        routes.marketplace.name,\n        routes.marketplaceServices.name\n    ];\n    // if new current view is not a gallery view\n    if (galleryViews.indexOf(currentView) < 0) {\n        // simply return current view\n        return currentView;\n    }\n    // get browser url query, needed to determine curated view, also to determine whether gallery page is showing search results\n    // NOTE:\n    //  since this function is called in components may or may in coupled in routes\n    //  which means container may or may not get props.location.query, props.params\n    //  use function below to process queries\n    const query = getQueryFromBrowserUrl();\n    const isAppGallery = currentView === routes.marketplace.name;\n    let galleryViewPrefix;\n    // if gallery shows curated data, need to determine further whether it is\n    //  1) product curated view, or\n    //  2) curated view\n    if (currentGalleryViewIsCurated) {\n        galleryViewPrefix = getTelemetryDetailContentCurrentCuratedViewPrefix(query, Constants.FilterQuery.product, isAppGallery);\n    } else {\n        // if gallery shows filtered data, need to determine further whether it is\n        //  1) filtered\n        //  2) detailed industry view (shows both curated and filtered, if one and only one active filter is a industry filter)\n        const querySearch = query && query[Constants.filterTileTypes.search] || '';\n        galleryViewPrefix = // detailed industry view, or\n        getTelemetryDetailContentCurrentCuratedViewPrefix(query, Constants.FilterQuery.industry, isAppGallery) || // simply filtered view\n        (querySearch.trim() ? 'search filtered' : 'filtered');\n    }\n    const galleryView = [\n        galleryViewPrefix,\n        currentView\n    ].filter((word)=>word.trim()).join(' ');\n    return galleryView;\n}\nexport function getTileDataCuratedQueryParams(queryParams) {\n    if (!queryParams) {\n        return {};\n    }\n    const tileDataCuratedQueryParams = {};\n    for(const urlKey in queryParams){\n        if (Constants.TileDataCuratedQueryParams[`${urlKey}`]) {\n            tileDataCuratedQueryParams[`${urlKey}`] = queryParams[`${urlKey}`];\n        }\n    }\n    return tileDataCuratedQueryParams;\n}\nexport function getTileDataFilteredQueryParams(queryParams) {\n    if (!queryParams) {\n        return {};\n    }\n    const tileDataFilteredQueryParams = {};\n    for(const urlKey in queryParams){\n        if (Constants.TileDataFilteredQueryParams[`${urlKey}`]) {\n            if (urlKey === Constants.TileDataFilteredQueryParams.search) {\n                // Consider search when query length is properly\n                if (queryParams[`${urlKey}`] && queryParams[`${urlKey}`].length > 1) {\n                    tileDataFilteredQueryParams[`${urlKey}`] = queryParams[`${urlKey}`];\n                }\n            } else {\n                tileDataFilteredQueryParams[`${urlKey}`] = queryParams[`${urlKey}`];\n            }\n        }\n    }\n    return tileDataFilteredQueryParams;\n}\nexport function getTileDataAdditionalQueryParams(queryParams) {\n    if (!queryParams) {\n        return {};\n    }\n    const tileDataAdditionalQueryParams = {};\n    for(const urlKey in queryParams){\n        if (Constants.TileDataAdditionalQueryParams[`${urlKey}`]) {\n            tileDataAdditionalQueryParams[`${urlKey}`] = queryParams[`${urlKey}`];\n        }\n    }\n    // Initialize page\n    tileDataAdditionalQueryParams[Constants.TileDataAdditionalQueryParams.page] = tileDataAdditionalQueryParams[Constants.TileDataAdditionalQueryParams.page] || '1';\n    // Initialize country\n    tileDataAdditionalQueryParams[Constants.TileDataAdditionalQueryParams.country] = (tileDataAdditionalQueryParams[Constants.TileDataAdditionalQueryParams.country] || Constants.usCountryCode).toUpperCase();\n    // Initialize region\n    tileDataAdditionalQueryParams[Constants.TileDataAdditionalQueryParams.region] = (tileDataAdditionalQueryParams[Constants.TileDataAdditionalQueryParams.region] || Constants.allStatesCode).toUpperCase();\n    return tileDataAdditionalQueryParams;\n}\nexport function getTileDataQueryParams(queryParams) {\n    if (!queryParams) {\n        return {};\n    }\n    const optimizedTileDataQueryParams = optimizeQueryParameters({\n        queryParams\n    });\n    const tileDataQueryParams = _object_spread({}, getTileDataCuratedQueryParams(optimizedTileDataQueryParams), getTileDataFilteredQueryParams(optimizedTileDataQueryParams), getTileDataAdditionalQueryParams(optimizedTileDataQueryParams));\n    return tileDataQueryParams;\n}\nexport function getAppsTileDataQueryParams(queryParams) {\n    const tileDataQueryParams = getTileDataQueryParams(queryParams);\n    delete tileDataQueryParams[Constants.TileDataAdditionalQueryParams.country];\n    delete tileDataQueryParams[Constants.TileDataAdditionalQueryParams.region];\n    return tileDataQueryParams;\n}\nexport function validateTileDataAdditionalQueryParams(queryParams) {\n    const country = queryParams[Constants.TileDataAdditionalQueryParams.country];\n    const region = queryParams[Constants.TileDataAdditionalQueryParams.region];\n    if (country && !isString(country) || region && !isString(region)) {\n        throw new Error('Country or Region query params that are not strings are not supported');\n    }\n}\nconst multipleAllowList = {\n    [Constants.TileDataCuratedQueryParams.product]: true\n};\nexport function isQueryParamsPersist(queryParams) {\n    var _tileDataQueryParams_Constants_TileDataAdditionalQueryParams_country, _tileDataQueryParams_Constants_TileDataAdditionalQueryParams_region;\n    const tileDataQueryParams = getTileDataAdditionalQueryParams(queryParams);\n    const tileDataCuratedQueryParams = getTileDataCuratedQueryParams(queryParams);\n    const tileDataFilteredQueryParams = getTileDataFilteredQueryParams(queryParams);\n    let isMultiple = false;\n    if (Object.keys(tileDataCuratedQueryParams).length === 1) {\n        const key = Object.keys(tileDataCuratedQueryParams)[0];\n        if (!(key in multipleAllowList)) {\n            const value = tileDataCuratedQueryParams[`${key}`];\n            isMultiple = !!((value === null || value === void 0 ? void 0 : value.indexOf(';')) > -1);\n        }\n    }\n    let isValidated = true;\n    if (Object.keys(tileDataCuratedQueryParams).length === 1) {\n        const curatedUrlKey = Object.keys(tileDataCuratedQueryParams)[0];\n        const curatedUrlValue = typeof tileDataCuratedQueryParams[`${curatedUrlKey}`] === 'string' ? tileDataCuratedQueryParams[`${curatedUrlKey}`].split(';') : [];\n        isValidated = curatedUrlValue.every((value)=>!!getDataValuesFromUrlKey(curatedUrlKey, value));\n    }\n    return tileDataQueryParams[Constants.TileDataAdditionalQueryParams.page] === '1' && ((_tileDataQueryParams_Constants_TileDataAdditionalQueryParams_country = tileDataQueryParams[Constants.TileDataAdditionalQueryParams.country]) === null || _tileDataQueryParams_Constants_TileDataAdditionalQueryParams_country === void 0 ? void 0 : _tileDataQueryParams_Constants_TileDataAdditionalQueryParams_country.toLowerCase()) === Constants.usCountryCode && ((_tileDataQueryParams_Constants_TileDataAdditionalQueryParams_region = tileDataQueryParams[Constants.TileDataAdditionalQueryParams.region]) === null || _tileDataQueryParams_Constants_TileDataAdditionalQueryParams_region === void 0 ? void 0 : _tileDataQueryParams_Constants_TileDataAdditionalQueryParams_region.toLowerCase()) === Constants.allStatesCode && Object.keys(tileDataFilteredQueryParams).length === 0 && Object.keys(tileDataCuratedQueryParams).length <= 1 && !isMultiple && isValidated;\n}\nexport function filterOutArrayFromIds(items, idField) {\n    const map = {};\n    return items.filter((item)=>{\n        const id = item[`${idField}`] && item[`${idField}`].toString();\n        return !map[`${id}`];\n    });\n}\nexport function filterInArrayFromIds(items, idField, sections, sectionIdField) {\n    const map = {};\n    for (const item of items){\n        const id = item[`${idField}`] && item[`${idField}`].toString();\n        if (id) {\n            map[`${id}`] = item;\n        }\n    }\n    const filteredItems = [];\n    for (const section of sections){\n        const sectionId = section[`${sectionIdField}`] && section[`${sectionIdField}`].toString();\n        if (map[`${sectionId}`]) {\n            filteredItems.push(map[`${sectionId}`]);\n        }\n    }\n    return filteredItems;\n}\n// Convert time stamp of the form \"_h_m_s\" for example \"1h30m10s\"\nexport function convertTimeToSeconds(timeStamp) {\n    let totalTimeInSeconds = 0;\n    if (timeStamp) {\n        // eslint-disable-next-line security/detect-unsafe-regex\n        const hours = timeStamp.match(/(\\d+)+h/);\n        // eslint-disable-next-line security/detect-unsafe-regex\n        const minutes = timeStamp.match(/(\\d+)+m/);\n        // eslint-disable-next-line security/detect-unsafe-regex\n        const seconds = timeStamp.match(/(\\d+)+s/);\n        if (hours && hours[1]) {\n            totalTimeInSeconds += parseInt(hours[1]) * 60 * 60;\n        }\n        if (minutes && minutes[1]) {\n            totalTimeInSeconds += parseInt(minutes[1]) * 60;\n        }\n        if (seconds && seconds[1]) {\n            totalTimeInSeconds += parseInt(seconds[1]);\n        }\n    }\n    return isNaN(totalTimeInSeconds) ? 0 : totalTimeInSeconds;\n}\nexport function shouldEnsureAppDetails(entityId, state) {\n    const appIndex = state.apps.idMap[`${entityId}`];\n    if (isNaN(appIndex)) {\n        return true;\n    }\n    const app = state.apps.dataList[`${appIndex}`];\n    if (!app) {\n        return true;\n    }\n    if (!app.detailInformation) {\n        return true;\n    }\n    return false;\n}\nexport function shouldEnsureServiceDetails(entityId, state) {\n    const appIndex = state.services.idMap[`${entityId}`];\n    if (isNaN(appIndex)) {\n        return true;\n    }\n    const service = state.services.dataList[`${appIndex}`];\n    if (!service) {\n        return true;\n    }\n    if (!service.detailInformation) {\n        return true;\n    }\n    return false;\n}\nexport function shouldEnsureAppPricings(entityId, state) {\n    var _app_pricingInformation_billingRegion, _app_pricingInformation, _state_config_billingCountryCode;\n    if (__SERVER__) {\n        return false;\n    }\n    const appIndex = state.apps.idMap[`${entityId}`];\n    if (isNaN(appIndex)) {\n        return true;\n    }\n    const app = state.apps.dataList[`${appIndex}`];\n    if (!app) {\n        return true;\n    }\n    if ((app === null || app === void 0 ? void 0 : (_app_pricingInformation = app.pricingInformation) === null || _app_pricingInformation === void 0 ? void 0 : (_app_pricingInformation_billingRegion = _app_pricingInformation.billingRegion) === null || _app_pricingInformation_billingRegion === void 0 ? void 0 : _app_pricingInformation_billingRegion.toLowerCase()) === ((_state_config_billingCountryCode = state.config.billingCountryCode) === null || _state_config_billingCountryCode === void 0 ? void 0 : _state_config_billingCountryCode.toLowerCase())) {\n        return false;\n    }\n    return true;\n}\nexport function shouldEnsureAppReviews(entityId, state) {\n    if (state.apps.appReviewsData && state.apps.appReviewsData.entityId === entityId) {\n        return false;\n    }\n    return true;\n}\nexport function shouldEnsureAppRelatedApps(entityId, state) {\n    if (entityId === state.apps.relatedAppsItems.entityId) {\n        return false;\n    }\n    if (state.config.embedHost === DataMap.products.PowerBICustomVisual.UrlKey) {\n        return false;\n    }\n    return true;\n}\nexport function shouldEnsureServiceRelatedApps(entityId, state) {\n    if (entityId === state.services.relatedAppsItems.entityId) {\n        return false;\n    }\n    return true;\n}\nexport function isAvailableInThisRegion({ startingPrice }) {\n    return !!(startingPrice && startingPrice.pricingData !== PricingStates.NotAvailableInThisRegion);\n}\nexport function isExtensionFile(file) {\n    const browsersExtensions = [\n        'chrome-extension',\n        'moz-extension'\n    ];\n    return browsersExtensions.some((browsersExtension)=>file.indexOf(browsersExtension) > -1);\n}\nexport function windowOnErrorHandler({ msg, file, line, error }) {\n    try {\n        const isWarning = isExtensionFile(file);\n        logClientError(error, `client side error: [From mainClientHookup] ${msg} in file ${file} on line: ${line}`, file, isWarning);\n    } catch (e) {\n        console.error('something went wrong during logging' + e);\n    }\n}\nconst allowedListUrlValuesCache = {\n    [Constants.QueryStrings.country]: Constants.usCountryCode,\n    [Constants.QueryStrings.region]: Constants.allStatesCode\n};\nfunction isAllowedListUrlValuesCache({ query = {} }) {\n    return Object.entries(query).every(([key, value])=>{\n        const validator = allowedListUrlValuesCache[key === null || key === void 0 ? void 0 : key.toLowerCase()];\n        if (validator) {\n            return (value === null || value === void 0 ? void 0 : value.toLowerCase()) === validator;\n        }\n        return true;\n    });\n}\nexport function generateUrlCacheKey({ isEmbedded, landingView, locale, query, isMobile = false }) {\n    const urlCacheKeys = [];\n    const isMainRoute = [\n        Constants.Views.home,\n        Constants.Views.appGallery,\n        Constants.Views.serviceGallery\n    ].indexOf(landingView) > -1;\n    if (isMainRoute) {\n        const urlParamCacheKeyBlackList = isEmbedded ? Constants.EmbedUrlParamCacheKeyBlackList : Constants.UrlParamCacheKeyBlackList;\n        const isBlackListUrlCache = Object.keys(query).some((urlKey)=>urlParamCacheKeyBlackList[urlKey === null || urlKey === void 0 ? void 0 : urlKey.toLowerCase()]);\n        if (!isBlackListUrlCache && isAllowedListUrlValuesCache({\n            query\n        })) {\n            const cacheParameters = _object_spread({}, query);\n            cacheParameters[Constants.QueryStrings.page] = cacheParameters[Constants.QueryStrings.page] || '1';\n            if (cacheParameters[Constants.QueryStrings.page] === '1') {\n                urlCacheKeys.push(landingView);\n                urlCacheKeys.push(`locale:${locale === null || locale === void 0 ? void 0 : locale.toLowerCase()}`);\n                urlCacheKeys.push(`isEmbedded:${isEmbedded}`);\n                urlCacheKeys.push(`isMobile:${isMobile}`);\n                urlCacheKeys.push(`cacheParameters:[${Object.keys(cacheParameters).filter(Boolean).filter((key)=>Constants.UrlParamCacheKeyWhiteList[key.toLowerCase()]).sort().map((key)=>`${key.toLowerCase()}:${cacheParameters[`${key}`]}`).join(',')}]`);\n            }\n        }\n    }\n    return urlCacheKeys.join('|');\n}\nexport function getXMSClientName(appName) {\n    return Constants.browserConfigsToClientNames[`${appName}`] || Constants.ClientNames.Default;\n}\nexport function getPDPRoute(appType) {\n    return isPrivateOffer(appType) ? routes.privateOfferDetails : routes.appDetails;\n}\nexport function getGalleryRoute(appType) {\n    const isPrivate = isPrivateOffer(appType);\n    return {\n        locKey: isPrivate ? 'UserPrivateOffers_Detail_AppTitle' : 'Embedded_Apps',\n        href: isPrivate ? routes.privateOffers : routes.marketplace\n    };\n}\nexport function productsUrlValuesToSearchFilter(applicationTarget, products) {\n    const searchFilter = {\n        category: ISearchFilterCategory.Products,\n        values: []\n    };\n    if (applicationTarget === Constants.appSourceApplicationTargetName && products) {\n        for (const productUrlKey of products){\n            const dataValues = getDataValuesFromUrlKey(Constants.TileDataCuratedQueryParams.product, productUrlKey);\n            if (typeof (dataValues === null || dataValues === void 0 ? void 0 : dataValues.ShortcutUrlKey) === 'string') {\n                const shortcutUrlKeys = dataValues.ShortcutUrlKey.split(';').filter((shortcutUrlKey)=>shortcutUrlKey !== (dataValues === null || dataValues === void 0 ? void 0 : dataValues.UrlKey));\n                for (const shortcutUrlKey of shortcutUrlKeys){\n                    const shortcutDataValues = getDataValuesFromUrlKey(Constants.TileDataCuratedQueryParams.product, shortcutUrlKey);\n                    if (shortcutDataValues === null || shortcutDataValues === void 0 ? void 0 : shortcutDataValues.Title) {\n                        searchFilter.values.push(shortcutDataValues.Title);\n                    }\n                }\n            }\n            if (dataValues === null || dataValues === void 0 ? void 0 : dataValues.Title) {\n                searchFilter.values.push(dataValues.Title);\n            }\n        }\n    }\n    return searchFilter;\n}\nexport function getTileDataEntityType(currentView) {\n    const mapping = {\n        [routes.marketplaceServices.name]: Constants.TileDataEntityType.Service,\n        [routes.marketplaceCloudsIndustry.name]: Constants.TileDataEntityType.CloudsIndustry\n    };\n    return mapping[`${currentView}`] || Constants.TileDataEntityType.App;\n}\nexport function getMaxPageSize(req) {\n    return req.headers.searchactiontype === Constants.Search.ActionType.Suggestions ? Constants.Search.maxNumOfSuggestions : Constants.FilteredGallery.pageSize;\n}\nexport function isService(offer) {\n    return offer.entityType === Constants.EntityType.Service;\n}\nexport function isApp(offer) {\n    return offer.entityType === Constants.EntityType.App;\n}\nexport function stripHTML(html) {\n    return html.replace(Constants.removeHtmlRegex, '').trim();\n}\nexport function isEncoded({ txt = '' } = {}) {\n    return txt !== decodeURIComponent(txt);\n}\nexport function isSignedInChanged(currentSignedIn, prevSignedIn) {\n    return currentSignedIn && !prevSignedIn;\n}\nexport function getActiveFeaturedFlags(featureFlags) {\n    return Object.keys(featureFlags || {}).filter((flag)=>featureFlags[`${flag}`] === 'true' && flag !== 'ProfileExp').reduce((acc, flag)=>_object_spread_props(_object_spread({}, acc), {\n            [flag]: featureFlags[`${flag}`]\n        }), {});\n}\nexport const shouldRenderPricing = ({ app, isEmbedded, billingRegion })=>{\n    const { ctaTypes, licenseManagement, planPricingType } = app;\n    const transactApp = isTransactApp({\n        isEmbedded,\n        ctaTypes,\n        appData: app,\n        billingRegion\n    });\n    const isMicrosoftManaged = !!(licenseManagement === null || licenseManagement === void 0 ? void 0 : licenseManagement.isMicrosoftManaged);\n    return planPricingType !== PlanPricingType.None && (transactApp || isMicrosoftManaged);\n};\nexport function canRenderPricing({ app, isEmbedded, billingRegion }) {\n    return isEmbedded && isPowerBIVisualsApp(app) ? isBagTransactable(app) : shouldRenderPricing({\n        app,\n        isEmbedded,\n        billingRegion\n    });\n}\nexport function shouldRenderPlanAndPricing(planPricingType) {\n    return planPricingType !== PlanPricingType.None;\n}\nexport function parseCatalogRecommendedSizes({ parameters: { osPlatform, recommendedSizes } } = {\n    parameters: {\n        osPlatform: '',\n        recommendedSizes: []\n    }\n}) {\n    return recommendedSizes.map((recommendedSize)=>{\n        const parts = (recommendedSize || '').split('_');\n        if (parts.length < 2) {\n            return null;\n        }\n        const [tier, instance, version = '', version2 = ''] = parts;\n        return [\n            `${osPlatform}-${instance}${version}-${tier}`.toLowerCase(),\n            `${osPlatform}-${instance}${version}${version2}-${tier}`.toLowerCase()\n        ];\n    }).reduce((accumulator, value)=>accumulator.concat(value), []).filter(Boolean);\n}\nexport function sortingSKUs({ a, b }) {\n    var _a_title, _b_title;\n    return a.displayRank - b.displayRank || ((_b_title = b.title) === null || _b_title === void 0 ? void 0 : _b_title.toUpperCase().localeCompare((_a_title = a.title) === null || _a_title === void 0 ? void 0 : _a_title.toUpperCase()));\n}\nexport function isProfessionalService({ service }) {\n    return (service === null || service === void 0 ? void 0 : service.entityType) === Constants.EntityType.Service && (service === null || service === void 0 ? void 0 : service.isHiddenPrivateOffer);\n}\nexport function openInNewWindow(url) {\n    const newWindow = window.open(url, '_blank');\n    if (!newWindow || newWindow.closed || typeof newWindow.closed === 'undefined') {\n        var _getWindow_location, _getWindow;\n        const payload = {\n            page: (_getWindow = getWindow()) === null || _getWindow === void 0 ? void 0 : (_getWindow_location = _getWindow.location) === null || _getWindow_location === void 0 ? void 0 : _getWindow_location.href,\n            action: Constants.Telemetry.Action.openInNewWindow,\n            actionModifier: Constants.Telemetry.ActionModifier.Error,\n            details: `Failed to open the URL: ${url} in new window`\n        };\n        logger.error('Failed to open in new window', {\n            action: payload.action,\n            actionModifier: payload.actionModifier,\n            page: payload.page,\n            error: payload.details\n        });\n        SpzaInstrumentService.getProvider().probe('logTelemetryInfo', payload);\n    }\n}\nexport const getServiceTypeFromBackEndKey = (serviceTypeBackendKey)=>{\n    return Object.values(DataMap.serviceTypes).find((serviceType)=>serviceType.BackendKey === serviceTypeBackendKey);\n};\n","/* eslint-disable @typescript-eslint/no-namespace */ /* eslint-disable @typescript-eslint/no-use-before-define */ /* eslint-disable @typescript-eslint/prefer-namespace-keyword */ /* eslint-disable @typescript-eslint/no-inferrable-types */ function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nimport { Constants } from './constants';\nimport { getCookieOptionExpires } from './cookieUtils';\nimport { getWindow, getDocument } from './../services/window';\nimport { isNullorUndefined } from './objectUtils';\nimport { isEmptyNullorUndefinedString } from './stringUtils';\nimport { SpzaInstrumentService } from '../services/telemetry/spza/spzaInstrument';\nimport { stringifyError } from './errorUtils';\nimport { logger } from '@src/logger';\n// NOTE:\n//  DO NOT access directly to, or from browser, for following items\n//      1) cookie data, or\n//      2) local storage data\n//\n//  instead, please use methods in this util to access\n//  e.g.\n//      get cookie data\n//          1) BrowserStorage.getBrowserStorage().getCookieItem(...)\n//          2) getCookieItem(...)\n//      set cookie data\n//          1) BrowserStorage.getBrowserStorage().setCookieItem(...)\n//          2) saveCookieItem(...)\n//      get local storage data\n//          1) BrowserStorage.getBrowserStorage().getLocalStorageItem(...)\n//          2) getLocalStorageItem(...)\n//      set local storage data\n//          1) BrowserStorage.getBrowserStorage().setLocalStorageItem(...)\n//          2) saveLocalStorageItem(...)\n//\n// shortcut methods below are for ease of access\nexport function hasUserAgreedPrivacyConsent() {\n    return BrowserStorage.getBrowserStorage().hasUserAgreedPrivacyConsent();\n}\nexport function saveDataToBrowserAfterUserAgreedPrivacyConsent() {\n    BrowserStorage.getBrowserStorage().saveDataToBrowserAfterUserAgreedPrivacyConsent();\n}\nexport function saveCookieItem(itemName, itemValue, optionText = getCookieOptionExpires()) {\n    BrowserStorage.getBrowserStorage().setCookieItem(itemName, itemValue, optionText);\n}\nexport function getCookieItem(itemName, shouldDecode = true) {\n    return BrowserStorage.getBrowserStorage().getCookieItem(itemName, shouldDecode);\n}\nexport function saveLocalStorageItem(itemName, itemValue) {\n    BrowserStorage.getBrowserStorage().setLocalStorageItem(itemName, itemValue);\n}\nexport function getLocalStorageItem(itemName) {\n    return BrowserStorage.getBrowserStorage().getLocalStorageItem(itemName);\n}\nexport function saveSessionStorageItem(itemName, itemValue) {\n    BrowserStorage.getBrowserStorage().setSessionStorageItem(itemName, itemValue);\n}\nexport function getSessionStorageItem(itemName) {\n    return BrowserStorage.getBrowserStorage().getSessionStorageItem(itemName);\n}\n(function(BrowserStorage) {\n    // singleton\n    // eslint-disable-next-line no-undef-init\n    let browserStorage = undefined;\n    function getBrowserStorage() {\n        if (!browserStorage) {\n            browserStorage = new BrowserStorage1();\n        }\n        return browserStorage;\n    }\n    BrowserStorage.getBrowserStorage = getBrowserStorage;\n    // DO NOT export class\n    class BrowserStorage1 {\n        getDefaultBrowserStorageData() {\n            const browserStorageData = {\n                localStorage: {},\n                cookies: {}\n            };\n            return browserStorageData;\n        }\n        // since we have a flushStore method, store may be undefined when called after privacy consent expired, or\n        getStore() {\n            if (!this.store) {\n                this.store = this.getDefaultBrowserStorageData();\n            }\n            return this.store;\n        }\n        /**\n     * get cookie item value\n     *\n     *  get cookie item value\n     *      1) directly from browser, if user accepted privacy consent, and privacy consent has not expired, or\n     *      2) from store buffer, if user hasn't accepted privacy consent, or privacy consent has expired\n     *\n     * @param itemName cookie item name\n     * @param shouldDecode cookie should be decoded\n     *\n     * @returns value of cookie item, as primitive or an object\n     */ getCookieItem(itemName, shouldDecode = true) {\n            if (this.hasUserAgreedPrivacyConsent() || Constants.Cookies.Essential[`${itemName}`]) {\n                return cookieUtils.getCookieItemFromBrowser(itemName, shouldDecode);\n            }\n            return this.getStore().cookies[`${itemName}`];\n        }\n        /**\n     * set cookie item value\n     *\n     *  set cookie item value\n     *      1) directly to browser, if user accepted privacy consent, and privacy consent has not expired, or\n     *      2) to store buffer, if user hasn't accepted privacy consent, or privacy consent has expired\n     *\n     * @param itemName cookie item name\n     * @param itemName cookie item value\n     * @param optionText cookie options as a string\n     */ setCookieItem(itemName, itemValue, optionText = getCookieOptionExpires()) {\n            if (this.hasUserAgreedPrivacyConsent() || Constants.Cookies.Essential[`${itemName}`]) {\n                cookieUtils.setCookieItemToBrowser(itemName, itemValue, optionText);\n                return;\n            }\n            const cookieData = this.getStore().cookies;\n            cookieData[`${itemName}`] = itemValue;\n        }\n        /**\n     * get local storage item value\n     *\n     *  get local storage item value\n     *      1) directly from browser, if user accepted privacy consent, and privacy consent has not expired, or\n     *      2) from store buffer, if user hasn't accepted privacy consent, or privacy consent has expired\n     *\n     * @param itemName local storage item name\n     *\n     * @returns value of local storage item, as primitive or an object\n     */ getLocalStorageItem(itemName) {\n            const userAgreedPrivacyConsent = this.hasUserAgreedPrivacyConsent();\n            logger.info(JSON.stringify({\n                userAgreedPrivacyConsent,\n                itemName\n            }), {\n                action: Constants.Telemetry.Action.LocalStorage,\n                actionModifier: Constants.Telemetry.ActionModifier.GetItem\n            });\n            if (userAgreedPrivacyConsent || Constants.LocalStorage.Essentials.includes(itemName)) {\n                return localStorageUtils.getLocalStorageItemFromBrowser(itemName);\n            }\n            return this.getStore().localStorage[`${itemName}`];\n        }\n        getSessionStorageItem(itemName) {\n            if (this.hasUserAgreedPrivacyConsent()) {\n                return localStorageUtils.getSessionStorageItemFromBrowser(itemName);\n            }\n            return this.getStore().localStorage[`${itemName}`];\n        }\n        /**\n     * set local storage item value\n     *\n     *  set local storage item value\n     *      1) directly to browser, if user accepted privacy consent, and privacy consent has not expired, or\n     *      2) to store buffer, if user hasn't accepted privacy consent, or privacy consent has expired\n     *\n     * @param itemName local storage item name\n     * @param itemValue local storage item value\n     */ setLocalStorageItem(itemName, itemValue) {\n            const userAgreedPrivacyConsent = this.hasUserAgreedPrivacyConsent();\n            logger.info(JSON.stringify({\n                userAgreedPrivacyConsent,\n                itemName\n            }), {\n                action: Constants.Telemetry.Action.LocalStorage,\n                actionModifier: Constants.Telemetry.ActionModifier.SaveItem\n            });\n            if (userAgreedPrivacyConsent || Constants.LocalStorage.Essentials.includes(itemName)) {\n                localStorageUtils.setLocalStorageItemToBrowser(itemName, itemValue);\n                return;\n            }\n            const localStorageData = this.getStore().localStorage;\n            localStorageData[`${itemName}`] = itemValue;\n        }\n        setSessionStorageItem(itemName, itemValue) {\n            if (this.hasUserAgreedPrivacyConsent()) {\n                localStorageUtils.setSessionStorageItemToBrowser(itemName, itemValue);\n                return;\n            }\n            const sessionStorageData = this.getStore().localStorage;\n            sessionStorageData[`${itemName}`] = itemValue;\n        }\n        /**\n     * save browser storage buffer data to browser, then flush buffer\n     */ saveDataToBrowserAfterUserAgreedPrivacyConsent() {\n            if (!this.hasUserAgreedPrivacyConsent()) {\n                // indicate user has agreed our privacy consent\n                this.setUserHasAgreedPrivacyConsent();\n            }\n            // dump and flush\n            this.dumpAndFlushStore();\n        }\n        /**\n     * save browser storage buffer data to browser, then flush buffer\n     */ dumpAndFlushStore() {\n            // dump\n            this.copyStoreToBrowser();\n            // flush\n            this.flushStore();\n        }\n        /**\n     * copy browser storage buffer data to brower storage, i.e. cookie, and local storage\n     */ copyStoreToBrowser() {\n            // dump cookie\n            this.copyStoreCookiesToBrowser();\n            // dump local storage\n            this.copyStoreLocalStorageToBrowser();\n        }\n        /**\n     * copy browser storage cookie buffer data to brower storage cookie\n     */ copyStoreCookiesToBrowser() {\n            try {\n                const cookieData = this.getStore().cookies;\n                Object.keys(cookieData).forEach((cookieName)=>{\n                    const cookieValue = cookieData[`${cookieName}`];\n                    if (isEmptyNullorUndefinedString(cookieValue)) {\n                        return;\n                    }\n                    this.setCookieItem(cookieName, cookieValue);\n                });\n            } catch (error) {\n                const errorText = isNullorUndefined(error) ? undefined : stringifyError(error);\n                const errorMessage = `Failed: Dump browser storage cookie buffer data to browser storage cookie, Error: ${errorText}`;\n                BrowserStorage.TelemetryUtils.logTelemetryForAccessError(Constants.Telemetry.Action.Copy, Constants.Telemetry.ActionModifier.BrowserStorageCookieDataBuffer, errorMessage);\n            }\n        }\n        /**\n     * copy browser storage local storage buffer data to brower storage local storage\n     */ copyStoreLocalStorageToBrowser() {\n            try {\n                const localStorageData = this.getStore().localStorage;\n                Object.keys(localStorageData).forEach((localStorageItemName)=>{\n                    const localStorageItemValue = localStorageData[`${localStorageItemName}`];\n                    if (isEmptyNullorUndefinedString(localStorageItemValue)) {\n                        return;\n                    }\n                    this.setLocalStorageItem(localStorageItemName, localStorageItemValue);\n                });\n            } catch (error) {\n                const errorText = isNullorUndefined(error) ? undefined : stringifyError(error);\n                const errorMessage = `Failed: Dump browser storage local storage buffer data to brower storage local storage, Error: ${errorText}`;\n                BrowserStorage.TelemetryUtils.logTelemetryForAccessError(Constants.Telemetry.Action.Copy, Constants.Telemetry.ActionModifier.BrowserStorageLocalStorageDataBuffer, errorMessage);\n            }\n        }\n        // flush browser storage buffer data\n        flushStore() {\n            this.store = this.getDefaultBrowserStorageData();\n        }\n        hasUserAgreedPrivacyConsent() {\n            return cookieUtils.isValidForUserAgreedPrivacyConsent();\n        }\n        setUserHasAgreedPrivacyConsent() {\n            cookieUtils.setUserHasAgreedPrivacyConsent();\n        }\n        constructor(store){\n            // browser storage buffer consists of local storage data and cookie data\n            _define_property(this, \"store\", void 0);\n            this.store = store;\n            if (!this.store) {\n                this.store = this.getDefaultBrowserStorageData();\n            }\n        }\n    }\n    // NOTE: This module should only be used in class BrowserStorage\n    // DO NOT export module\n    (function(cookieUtils) {\n        function getCookieItemFromBrowser(itemName, shouldDecode = true) {\n            try {\n                const cookiePrefix = `${itemName}=`;\n                const cookieArray = getDocument().cookie.split(';').map((cookie)=>cookie.trim());\n                // eslint-disable-next-line no-undef-init\n                let cookieValue = undefined;\n                // find the cookie\n                // break the loop immediately once found\n                cookieArray.some((cookie)=>{\n                    if (cookie.indexOf(cookiePrefix) === 0) {\n                        const rawValue = cookie.substring(cookiePrefix.length);\n                        cookieValue = shouldDecode ? JSON.parse(decodeURIComponent(rawValue)) : rawValue;\n                        return true;\n                    }\n                    return false;\n                });\n                return cookieValue;\n            } catch (error) {\n                const errorText = isNullorUndefined(error) ? undefined : stringifyError(error);\n                const errorMessage = `Failed: read access of cookie item ${itemName} shouldDecode ${shouldDecode}, Error: ${errorText}`;\n                BrowserStorage.TelemetryUtils.logTelemetryForAccessError(Constants.Telemetry.Action.ReadAccess, Constants.Telemetry.ActionModifier.CookieItem, errorMessage);\n                return undefined;\n            }\n        }\n        /**\n     * read cookie directly from browser\n     *\n     *  NOTE: this method should not be directly called elsewhere but only in class BrowserStorage\n     *\n     * @param itemName cookie item name\n     * @param shouldDecode cookie should be decoded\n     *\n     * @returns value of cookie item, as primitive or an object\n     */ cookieUtils.getCookieItemFromBrowser = getCookieItemFromBrowser;\n        function setCookieItemToBrowser(itemName, itemValue, optionText = getCookieOptionExpires()) {\n            try {\n                getDocument().cookie = `${itemName}=${itemValue};path=/;${optionText}`;\n            } catch (error) {\n                const errorText = isNullorUndefined(error) ? undefined : stringifyError(error);\n                const errorMessage = `Failed: write access of cookie item ${itemName} value ${itemValue}, Error: ${errorText}`;\n                BrowserStorage.TelemetryUtils.logTelemetryForAccessError(Constants.Telemetry.Action.WriteAccess, Constants.Telemetry.ActionModifier.CookieItem, errorMessage);\n                return errorMessage;\n            }\n        }\n        /**\n     * save cookie directly to browser\n     *\n     *  NOTE: this method should not be directly called elsewhere but only in class BrowserStorage\n     *\n     * @param itemName cookie item name\n     * @param itemValue cookie item value\n     * @param optionText cookie options as a string\n     */ cookieUtils.setCookieItemToBrowser = setCookieItemToBrowser;\n        function isValidForUserAgreedPrivacyConsent() {\n            const cookie = getCookieItemFromBrowser(Constants.Cookies.privacyConsentAcceptedDate, false);\n            return !isCookieExpired(cookie);\n        }\n        /**\n     * check whether user has agreed privacy consent, which should also be valid\n     *\n     *  NOTE: this method is an exception which directly access the browser storage\n     *\n     * @returns true if all following apllies:\n     *      1) user has agreed to privacy consent\n     *      2) agreed privacy consent has not expired\n     */ cookieUtils.isValidForUserAgreedPrivacyConsent = isValidForUserAgreedPrivacyConsent;\n        /**\n     * Check if user accepted privacy consent is expired.\n     *\n     *  NOTE: currently is only capable of checking if cookie value consists only of a time string\n     *  TO DO: update to check other cookie expiry, whose cookie value has a substring of `;path=\\;${expiry}`\n     *\n     *  @param cookieValue: cookie item value\n     *  @param expiry: valid duration, default is 13 months after saved in browser\n     *\n     *  @returns\n     *      true, if cookie is empty, or has no expiration date, or expired\n     *      false, otherwise\n     */ function isCookieExpired(cookieValue, expiry = Constants.CookieExpiry.Default) {\n            if (!cookieValue) {\n                return true;\n            }\n            const date = new Date();\n            const currentTime = date.getTime();\n            const cookieInitialTime = parseInt(cookieValue, 10);\n            const cookieEndTime = cookieInitialTime + expiry;\n            return currentTime > cookieEndTime;\n        }\n        function setUserHasAgreedPrivacyConsent() {\n            setCookieItemToBrowserForUserAgreedPrivacyConsentDate();\n        }\n        /**\n     * set a flag indicating user has agreed to privacy consent, banner at the top\n     *\n     *  this is achieved by simply setting a privacy consent accepted date as a cookie in browser\n     *  NOTE: this method is an exception which directly access the browser storage\n     */ cookieUtils.setUserHasAgreedPrivacyConsent = setUserHasAgreedPrivacyConsent;\n        /**\n     * save expiration date of privacy consent cookie (banner at the top)\n     *\n     *  cookie banner won't show to user for next 13 months.\n     *  NOTE: this method is an exception which directly access the browser storage\n     */ function setCookieItemToBrowserForUserAgreedPrivacyConsentDate() {\n            // skip if user-agreed privacy consent is valid\n            if (isValidForUserAgreedPrivacyConsent()) {\n                return;\n            }\n            // update cookie accepted date to current\n            const cookieAcceptedDate = Date.now().toString();\n            // a cookie serves as\n            //  a) a value when checking expiry, also serves as\n            //  b) a flag indicating user has agreed privacy consent\n            setCookieItemToBrowser(Constants.Cookies.privacyConsentAcceptedDate, cookieAcceptedDate);\n        }\n    })(cookieUtils || (cookieUtils = {}));\n    // NOTE: This module should only be used in class BrowserStorage\n    // DO NOT export module\n    (function(localStorageUtils) {\n        function getLocalStorageItemFromBrowser(itemName) {\n            try {\n                const localStorage = getWindow().localStorage;\n                return localStorage.getItem(itemName);\n            } catch (error) {\n                const errorText = isNullorUndefined(error) ? undefined : stringifyError(error);\n                const errorMessage = `Failed: read access of local storage item ${itemName}, Error: ${errorText}`;\n                BrowserStorage.TelemetryUtils.logTelemetryForAccessError(Constants.Telemetry.Action.ReadAccess, Constants.Telemetry.ActionModifier.LocalStorageItem, errorMessage);\n                return errorMessage;\n            }\n        }\n        /**\n     * read local storage item directly from browser\n     *\n     *  NOTE: this method should not be directly called elsewhere but only in class BrowserStorage\n     *\n     * @param itemName local storage item name\n     *\n     * @returns local storage item value, as primitive or an object\n     */ localStorageUtils.getLocalStorageItemFromBrowser = getLocalStorageItemFromBrowser;\n        function getSessionStorageItemFromBrowser(itemName) {\n            try {\n                const sessionStorage = getWindow().sessionStorage;\n                return sessionStorage.getItem(itemName);\n            } catch (error) {\n                const errorText = isNullorUndefined(error) ? undefined : stringifyError(error);\n                const errorMessage = `Failed: read access of session storage item ${itemName}, Error: ${errorText}`;\n                BrowserStorage.TelemetryUtils.logTelemetryForAccessError(Constants.Telemetry.Action.ReadAccess, Constants.Telemetry.ActionModifier.SessionStorageItem, errorMessage);\n                throw errorMessage;\n            }\n        }\n        localStorageUtils.getSessionStorageItemFromBrowser = getSessionStorageItemFromBrowser;\n        function setLocalStorageItemToBrowser(itemName, itemValue) {\n            try {\n                const localStorage = getWindow().localStorage;\n                localStorage.setItem(itemName, itemValue);\n            } catch (error) {\n                const errorText = isNullorUndefined(error) ? undefined : stringifyError(error);\n                const errorMessage = `Failed: write access of local storage item ${itemName} value ${itemValue}, Error: ${errorText}`;\n                BrowserStorage.TelemetryUtils.logTelemetryForAccessError(Constants.Telemetry.Action.WriteAccess, Constants.Telemetry.ActionModifier.LocalStorageItem, errorMessage);\n                return errorMessage;\n            }\n        }\n        /**\n     * save local storage directly to browser\n     *\n     *  NOTE: this method should not be directly called elsewhere but only in class BrowserStorage\n     *\n     * @param itemName local storage item name\n     * @param itemValue local storage item value\n     */ localStorageUtils.setLocalStorageItemToBrowser = setLocalStorageItemToBrowser;\n        function setSessionStorageItemToBrowser(itemName, itemValue) {\n            try {\n                const sessionStorage = getWindow().sessionStorage;\n                sessionStorage.setItem(itemName, itemValue);\n            } catch (error) {\n                const errorText = isNullorUndefined(error) ? undefined : stringifyError(error);\n                const errorMessage = `Failed: write access of session storage item ${itemName} value ${itemValue}, Error: ${errorText}`;\n                BrowserStorage.TelemetryUtils.logTelemetryForAccessError(Constants.Telemetry.Action.WriteAccess, Constants.Telemetry.ActionModifier.SessionStorageItem, errorMessage);\n                throw errorMessage;\n            }\n        }\n        localStorageUtils.setSessionStorageItemToBrowser = setSessionStorageItemToBrowser;\n    })(localStorageUtils || (localStorageUtils = {}));\n    (function(TelemetryUtils) {\n        function logTelemetryForAccessError(action, actionModifier, errorMessage = undefined) {\n            const page = getWindow() && getWindow().location && getWindow().location.href;\n            const payload = {\n                page: page,\n                action: action,\n                actionModifier: actionModifier,\n                details: errorMessage\n            };\n            SpzaInstrumentService.getProvider().probe(Constants.Telemetry.ProbeName.LogInfo, payload);\n            logger.info(payload.details, {\n                action: payload.action,\n                actionModifier: payload.actionModifier\n            });\n        }\n        /**\n     * log telemetry read, or write access error on browser storage, cookie, and local storage\n     *\n     * @param action telemetry action\n     * @param actionModifier telemetry action modifier\n     * @param errorMessage telemetry details message\n     */ TelemetryUtils.logTelemetryForAccessError = logTelemetryForAccessError;\n    })(BrowserStorage.TelemetryUtils || (BrowserStorage.TelemetryUtils = {}));\n    var cookieUtils, localStorageUtils;\n})(BrowserStorage || (BrowserStorage = {}));\nexport var BrowserStorage;\n","import { Constants } from './constants';\n// NOTE:\n//  DO NOT access directly to, or from browser, for following items\n//      1) cookie data, or\n//      2) local storage data\n//\n//  instead, please use methods in browserStorageUtils util to access\n//  e.g.\n//      get cookie data\n//          1) BrowserStorage.getBrowserStorage().getCookieItem(...)\n//          2) getCookieItem(...)\n//      set cookie data\n//          1) BrowserStorage.getBrowserStorage().setCookieItem(...)\n//          2) saveCookieItem(...)\n//      get local storage data\n//          1) BrowserStorage.getBrowserStorage().getLocalStorageItem(...)\n//          2) getLocalStorageItem(...)\n//      set local storage data\n//          1) BrowserStorage.getBrowserStorage().setLocalStorageItem(...)\n//          2) saveLocalStorageItem(...)\n//\n/**\n * get cookie expires option\n *\n * @param expiry: cookie expiry\n *\n * @returns expiration date which is 13 months afterwards in milli-seconds.\n */ export function getCookieOptionExpires(expiry = Constants.CookieExpiry.Default) {\n    const date = new Date();\n    date.setTime(date.getTime() + expiry);\n    const expiresOptionText = `expires=${date.toUTCString()}`;\n    return expiresOptionText;\n}\n","/* istanbul ignore file */ /* eslint-disable @typescript-eslint/no-namespace */ (function(BusinessTelemetry) {\n    (function(dataBi) {\n        dataBi[\"sortingDropdownId\"] = \"sortByDropdown\";\n        dataBi[\"sortingDropdownName\"] = \"Sorting dropdown\";\n    })(BusinessTelemetry.dataBi || (BusinessTelemetry.dataBi = {}));\n    (function(Filters) {\n        Filters[\"Activating\"] = \"Activating\";\n        Filters[\"Deactivating\"] = \"Deactivating\";\n        Filters[\"FiltersCleared\"] = \"Filters cleared\";\n    })(BusinessTelemetry.Filters || (BusinessTelemetry.Filters = {}));\n    (function(ProductAvailabilityType) {\n        ProductAvailabilityType[\"Private\"] = \"private\";\n        ProductAvailabilityType[\"Public\"] = \"public\";\n    })(BusinessTelemetry.ProductAvailabilityType || (BusinessTelemetry.ProductAvailabilityType = {}));\n})(BusinessTelemetry || (BusinessTelemetry = {}));\nexport var BusinessTelemetry;\n","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n    try {\n        var info = gen[key](arg);\n        var value = info.value;\n    } catch (error) {\n        reject(error);\n        return;\n    }\n    if (info.done) {\n        resolve(value);\n    } else {\n        Promise.resolve(value).then(_next, _throw);\n    }\n}\nfunction _async_to_generator(fn) {\n    return function() {\n        var self = this, args = arguments;\n        return new Promise(function(resolve, reject) {\n            var gen = fn.apply(self, args);\n            function _next(value) {\n                asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n            }\n            function _throw(err) {\n                asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n            }\n            _next(undefined);\n        });\n    };\n}\nimport { TermsStrings, PricingStates, IAvailabilityActions } from '@shared/Models';\nimport { Constants, Environment, supportedCountries as SUPPORTED_COUNTRIES, IConsentOption, allBillingCountries } from '@shared/utils/constants';\nimport { getWindow } from '@shared/services/window';\nimport { SpzaInstrumentService } from '@shared/services/telemetry/spza/spzaInstrument';\nimport { getFullPriceString } from './pricing';\nimport { logger } from '@src/logger';\nimport { getPrimaryProductUrl } from '@shared/utils/datamappingHelpers';\nimport { getPDPRoute, getProductByUrlKey } from '@shared/utils/appUtils';\nimport { urlReplace } from '@shared/routerHistory';\nexport const updateCart = ({ props, id, title, description, quantity, isQuantifiable, minQuantity, currency, maxQuantity, billingTerm, termId, isRecurring, showAutoRenewMessage, bigId, skuId, hasFreeTrial, price })=>{\n    const prevCartItem = props.checkout.items[0];\n    const cartItem = {\n        id,\n        title,\n        description,\n        entityId: props.app.entityId,\n        appTitle: props.app.title,\n        appImageUri: props.app.iconURL,\n        unitPrice: {\n            currency: currency || prevCartItem && prevCartItem.unitPrice.currency,\n            unit: billingTerm,\n            value: price\n        },\n        linkedAddIns: props.app.linkedAddIns\n    };\n    cartItem.isQuantifiable = typeof isQuantifiable !== 'undefined' ? isQuantifiable : prevCartItem === null || prevCartItem === void 0 ? void 0 : prevCartItem.isQuantifiable;\n    let quantityAsInt = parseInt(quantity, 10);\n    if (isNaN(quantityAsInt)) {\n        quantityAsInt = prevCartItem.quantity;\n    }\n    cartItem.quantityString = quantity || prevCartItem.quantityString;\n    cartItem.quantity = quantityAsInt;\n    cartItem.minQuantity = minQuantity || (prevCartItem === null || prevCartItem === void 0 ? void 0 : prevCartItem.minQuantity);\n    cartItem.maxQuantity = maxQuantity || (prevCartItem === null || prevCartItem === void 0 ? void 0 : prevCartItem.maxQuantity);\n    cartItem.termId = termId || (prevCartItem === null || prevCartItem === void 0 ? void 0 : prevCartItem.termId);\n    cartItem.termDuration = billingTerm || (prevCartItem === null || prevCartItem === void 0 ? void 0 : prevCartItem.termDuration);\n    cartItem.recurringBilling = isRecurring || (prevCartItem === null || prevCartItem === void 0 ? void 0 : prevCartItem.recurringBilling);\n    cartItem.showAutoRenewMessage = showAutoRenewMessage || (prevCartItem === null || prevCartItem === void 0 ? void 0 : prevCartItem.showAutoRenewMessage);\n    cartItem.bigId = bigId || (prevCartItem === null || prevCartItem === void 0 ? void 0 : prevCartItem.bigId);\n    cartItem.skuId = skuId || (prevCartItem === null || prevCartItem === void 0 ? void 0 : prevCartItem.skuId);\n    cartItem.hasFreeTrial = hasFreeTrial;\n    // No need for input as it won't change during plan update\n    cartItem.product = prevCartItem === null || prevCartItem === void 0 ? void 0 : prevCartItem.product;\n    // every time something changes in the cart we reset status for calculate now link,\n    // this should only be done if we also have a payment instrument selected\n    if (JSON.stringify(cartItem) !== JSON.stringify(prevCartItem)) {\n        props.setCartItem(cartItem);\n    }\n};\nexport const isNewCustomer = ({ activeCustomer, customers })=>{\n    return !activeCustomer && (customers === null || customers === void 0 ? void 0 : customers.length) === 0;\n};\nexport const checkoutBillingCountry = ({ activeCustomer, customers, defaultBillingCountry })=>{\n    var _activeCustomer_address;\n    var _activeCustomer_address_country;\n    const billingCountry = isNewCustomer({\n        activeCustomer,\n        customers\n    }) ? defaultBillingCountry : (_activeCustomer_address_country = activeCustomer === null || activeCustomer === void 0 ? void 0 : (_activeCustomer_address = activeCustomer.address) === null || _activeCustomer_address === void 0 ? void 0 : _activeCustomer_address.country) !== null && _activeCustomer_address_country !== void 0 ? _activeCustomer_address_country : customers[0].address.country;\n    return billingCountry.toLowerCase();\n};\nexport function isAvailableInThisRegion({ startingPrice }) {\n    return startingPrice && startingPrice.pricingData !== PricingStates.NotAvailableInThisRegion;\n}\nexport const isDevelopmentEnvironment = (env)=>{\n    return env !== Environment.Production;\n};\nexport function getCountries() {\n    const countriesList = allBillingCountries.filter((country)=>!!country.transactable).map((country)=>{\n        return {\n            text: country.name,\n            value: country.countryCode\n        };\n    });\n    return countriesList;\n}\nexport function logConfirmTelemetry(countryCode) {\n    const logPayload = {\n        page: getWindow().location.href,\n        action: Constants.Telemetry.Action.Click,\n        actionModifier: Constants.Telemetry.ActionModifier.BillingCountry,\n        details: `Country ${countryCode} confirmed`\n    };\n    SpzaInstrumentService.getProvider().probe('logTelemetryInfo', logPayload);\n    logger.info(logPayload.details, {\n        action: logPayload.action,\n        actionModifier: logPayload.actionModifier\n    });\n}\nexport function confirmBillingCountry(_) {\n    return _confirmBillingCountry.apply(this, arguments);\n}\nfunction _confirmBillingCountry() {\n    _confirmBillingCountry = _async_to_generator(function*({ config, setBillingCountry, createCustomer }) {\n        try {\n            yield setBillingCountry(config.billingCountryCode);\n            createCustomer();\n        } catch (e) {\n            const logPayload = {\n                page: getWindow().location.href,\n                action: Constants.Telemetry.Action.Click,\n                actionModifier: Constants.Telemetry.ActionModifier.CreateCustomer,\n                details: `Error during create customer, or setting billing country, retrying create customer.`\n            };\n            createCustomer();\n            SpzaInstrumentService.getProvider().probe('logTelemetryInfo', logPayload);\n            logger.info(logPayload.details, {\n                action: logPayload.action,\n                actionModifier: logPayload.actionModifier\n            });\n        } finally{\n            logConfirmTelemetry(config.billingCountryCode);\n        }\n    });\n    return _confirmBillingCountry.apply(this, arguments);\n}\nexport const getConsentState = (countryCode)=>{\n    const selectedCountry = SUPPORTED_COUNTRIES.find((country)=>country.countryCode.toLowerCase() === countryCode.toLowerCase());\n    return selectedCountry.consentRequired;\n};\n/**\n * Determine if should show contact info in purchase disclaimer\n * @param consentOption The consent type to check if requires checkbox\n * @returns true if country doesn't require consent checkbox\n */ export const isContactInfoHiddenInDisclaimer = (consentOption)=>{\n    const consentsNotContactInfo = [\n        IConsentOption.Exclude\n    ];\n    return consentsNotContactInfo.includes(consentOption);\n};\n/**\n * These shouldn't be localized, they are used for logging purposes only.\n * @param stepId The stepId to convert back to string\n */ export const convertStepIdToName = (stepId)=>{\n    const mapping = {\n        0: 'Billing region picker',\n        1: 'Select plan',\n        2: 'Price and payment options',\n        3: 'Purchase Blends screen',\n        4: 'Configure your purchase'\n    };\n    return mapping[`${stepId}`];\n};\nexport const getBillingPlanPricesPerTermDuration = ({ plan, billingDuration })=>{\n    var _renewAvailability_terms_filter, _renewAvailability_terms;\n    const renewAvailability = plan.availabilities.find((availability)=>{\n        const { actions } = availability;\n        return actions.includes(IAvailabilityActions.Renew) && actions.includes(IAvailabilityActions.Browse);\n    });\n    const prices = renewAvailability === null || renewAvailability === void 0 ? void 0 : (_renewAvailability_terms = renewAvailability.terms) === null || _renewAvailability_terms === void 0 ? void 0 : (_renewAvailability_terms_filter = _renewAvailability_terms.filter((term)=>term.termUnits === billingDuration)) === null || _renewAvailability_terms_filter === void 0 ? void 0 : _renewAvailability_terms_filter.map((term)=>({\n            totalPrice: term.price,\n            billingPlan: term.billingPlan,\n            termDuration: term.termUnits,\n            /** This is the RENEW termId in a free-trial availability-term */ termId: term.termId\n        }));\n    return prices || [];\n};\n/**\n * This method returns the full price string in the format of: \"First month three, then <SomePrice+Currency>\"\n * Depends on hasFree trial for first month free prefix\n * TermId should always be the renew termId with price, if it's the free trial termId, the price you'll see is 0.0 which is misleading.\n */ export const convertTermToString = ({ context, term, countryCode, isQuantifiable, hasFreeTrial, locale })=>{\n    return getFullPriceString({\n        context,\n        countryCode,\n        currency: term.price.currencyCode,\n        priceValue: term.price.msrp,\n        billingPlan: term.billingPlan,\n        termDuration: term.renewTermUnits,\n        isQuantifiable,\n        hasFreeTrial,\n        locale\n    });\n};\nexport const pbAnnually = 'Annually';\nexport const pbMonthly = 'Monthly';\nexport const pbOther = 'Other';\nexport const getBillingCycle = (term, billingPlan)=>{\n    const MultiYearTerms = [\n        TermsStrings.Term3YString,\n        TermsStrings.Term2YString\n    ];\n    if (MultiYearTerms.includes(term) || billingPlan) {\n        return pbOther;\n    }\n    if ([\n        TermsStrings.Term1YString,\n        TermsStrings.YearString\n    ].includes(term)) {\n        return pbAnnually;\n    }\n    if ([\n        TermsStrings.Term1MString,\n        TermsStrings.MonthString\n    ].includes(term)) {\n        return pbMonthly;\n    }\n};\nexport const buildUrlToAppDetails = (tab, app, buildHref)=>{\n    const productString = getPrimaryProductUrl(app.primaryProduct);\n    const productData = getProductByUrlKey({\n        urlKey: productString\n    });\n    const product = productData ? productData.UrlKey : productString;\n    // redirect to PDP page, Plan and Price tab\n    const pdpUrl = buildHref(getPDPRoute(app.appType), {\n        productId: product,\n        entityId: app.entityId\n    }, {\n        tab\n    }, true);\n    return pdpUrl;\n};\nexport const redirectToAppDetails = (tab, app, buildHref)=>{\n    const pdpUrl = buildUrlToAppDetails(tab, app, buildHref);\n    urlReplace(pdpUrl);\n};\nexport const getPurchaseBlendsMessageOverrides = (context, isOneTimePayment, isProfessionalService)=>{\n    const riskRejected = context.locParams('PurchaseBlends_Risk_Rejected_Error', [\n        'https://go.microsoft.com/fwlink/?linkid=2101400&clcid=0x409'\n    ], 'This purchase cannot be completed. Please contact Microsoft support via this link: https://go.microsoft.com/fwlink/?linkid=2101400&clcid=0x409');\n    return isOneTimePayment ? {\n        'component.message-center.risk_rejected_error': riskRejected,\n        'component.line-item.product-details.billing_term': ' ',\n        'component.line-item.product-details.recurring_billing': ' ',\n        'component.line-item.recurring-billing.off': ' ',\n        'component.line-item.duration.one_month': ' ',\n        'component.line-item.monthly_billing_cycle_per_user': ' ',\n        'component.line-item.duration.total.one_month': ' ',\n        'component.common.line-item.subtotal_term_message': ' '\n    } : isProfessionalService ? {\n        'component.message-center.risk_rejected_error': riskRejected,\n        'component.line-item.product-details.recurring_billing': ' ',\n        'component.line-item.recurring-billing.off': ' '\n    } : {\n        'component.message-center.risk_rejected_error': riskRejected\n    };\n};\n","/* eslint-disable @typescript-eslint/no-namespace */ /* eslint-disable camelcase */ /* eslint-disable no-redeclare */ /* eslint-disable no-use-before-define */ /* This file should contain all the app constants which we use in the SPZA project */ function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nfunction _object_spread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        var ownKeys = Object.keys(source);\n        if (typeof Object.getOwnPropertySymbols === \"function\") {\n            ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n            }));\n        }\n        ownKeys.forEach(function(key) {\n            _define_property(target, key, source[key]);\n        });\n    }\n    return target;\n}\nfunction ownKeys(object, enumerableOnly) {\n    var keys = Object.keys(object);\n    if (Object.getOwnPropertySymbols) {\n        var symbols = Object.getOwnPropertySymbols(object);\n        if (enumerableOnly) {\n            symbols = symbols.filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n            });\n        }\n        keys.push.apply(keys, symbols);\n    }\n    return keys;\n}\nfunction _object_spread_props(target, source) {\n    source = source != null ? source : {};\n    if (Object.getOwnPropertyDescriptors) {\n        Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n        ownKeys(Object(source)).forEach(function(key) {\n            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n    }\n    return target;\n}\nimport { stringifyError } from '@shared/utils/errorUtils';\nexport var IConsentOption = /*#__PURE__*/ function(IConsentOption) {\n    /** Requires users to manually tick the lead generation box to enable - default is disabled */ IConsentOption[\"OptIn\"] = \"optin\";\n    /** Requires users to manually tick the lead generation box to disable - default is enabled */ IConsentOption[\"OptOut\"] = \"optout\";\n    /** No checkbox, leads should be sent and this is for a notice only */ IConsentOption[\"Notice\"] = \"notice\";\n    /** Text is different no leads are sent. */ IConsentOption[\"Exclude\"] = \"exclude\";\n    /** Treated as OptIn */ IConsentOption[\"Unknown\"] = \"unknown\";\n    return IConsentOption;\n}({});\nexport var LoginType = /*#__PURE__*/ function(LoginType) {\n    LoginType[\"Silent\"] = \"Silent\";\n    LoginType[\"Implicit\"] = \"Implicit\";\n    return LoginType;\n}({});\n(function(Constants) {\n    (function(Environment) {\n        Environment[\"development\"] = \"development\";\n        Environment[\"df\"] = \"df\";\n        Environment[\"canary\"] = \"canary\";\n        Environment[\"prod\"] = \"prod\";\n    })(Constants.Environment || (Constants.Environment = {}));\n    Constants.MSTenantId = '72f988bf-86f1-41af-91ab-2d7cd011db47';\n    (function(AppName) {\n        AppName[\"AppSource\"] = \"appsource\";\n    })(Constants.AppName || (Constants.AppName = {}));\n    Constants.UNKNOWN_NETWORK_INFO = 'unknown';\n    Constants.notAvailable = 'N/A';\n    (function(Featured) {\n        Featured.AppDocId = 'featuredapps';\n        Featured.ServiceDocId = 'featuredservices';\n    })(Constants.Featured || (Constants.Featured = {}));\n    (function(Tabs) {\n        Tabs[\"PlansAndPrice\"] = \"PlansAndPrice\";\n        Tabs[\"Overview\"] = \"Overview\";\n        Tabs[\"DetailsAndSupport\"] = \"DetailsAndSupport\";\n        Tabs[\"Reviews\"] = \"Reviews\";\n        Tabs[\"Linkedin\"] = \"Linkedin\";\n    })(Constants.Tabs || (Constants.Tabs = {}));\n    (function(FilteredSearchType) {\n        FilteredSearchType[\"All\"] = \"All\";\n        FilteredSearchType[\"Apps\"] = \"Apps\";\n        FilteredSearchType[\"Services\"] = \"Services\";\n        FilteredSearchType[\"CloudsIndustry\"] = \"CloudsIndustry\";\n        FilteredSearchType[\"Partners\"] = \"Partners\";\n    })(Constants.FilteredSearchType || (Constants.FilteredSearchType = {}));\n    (function(FilteredSearchPhase) {\n        FilteredSearchPhase[\"Started\"] = \"Started\";\n        FilteredSearchPhase[\"SearchResultsReturned\"] = \"Search Results Returned\";\n        FilteredSearchPhase[\"DuplicateAddInsRemoved\"] = \"Duplicate Add Ins Removed\";\n        FilteredSearchPhase[\"SearchActionCreated\"] = \"Search Action Created\";\n        FilteredSearchPhase[\"SearchTelemetryLogged\"] = \"Search Telemetry Logged\";\n    })(Constants.FilteredSearchPhase || (Constants.FilteredSearchPhase = {}));\n    (function(HTMLElements) {\n        HTMLElements[\"INPUT\"] = \"INPUT\";\n        HTMLElements[\"BUTTON\"] = \"BUTTON\";\n    })(Constants.HTMLElements || (Constants.HTMLElements = {}));\n    (function(SigninStatus) {\n        SigninStatus[SigninStatus[\"ValidTokenValidCookie\"] = 1] = \"ValidTokenValidCookie\";\n        SigninStatus[SigninStatus[\"ExpiredTokenValidCookie\"] = 2] = \"ExpiredTokenValidCookie\";\n        SigninStatus[SigninStatus[\"ExpiredTokenInvalidCookie\"] = 3] = \"ExpiredTokenInvalidCookie\";\n        SigninStatus[SigninStatus[\"ValidTokenInvalidCookie\"] = 4] = \"ValidTokenInvalidCookie\";\n        // Only client side state, where you cannot read the cookie and tell\n        SigninStatus[SigninStatus[\"ValidTokenUnknownCookie\"] = 5] = \"ValidTokenUnknownCookie\";\n        SigninStatus[SigninStatus[\"ValidationSkipped\"] = 6] = \"ValidationSkipped\";\n    })(Constants.SigninStatus || (Constants.SigninStatus = {}));\n    (function(PageToGiveMetaTag) {\n        PageToGiveMetaTag[PageToGiveMetaTag[\"PageNotReady\"] = -1] = \"PageNotReady\";\n        PageToGiveMetaTag[PageToGiveMetaTag[\"SpzaHomePage\"] = 1] = \"SpzaHomePage\";\n        PageToGiveMetaTag[PageToGiveMetaTag[\"SpzaGalleryPage\"] = 2] = \"SpzaGalleryPage\";\n        PageToGiveMetaTag[PageToGiveMetaTag[\"SpzaCSGalleryPage\"] = 3] = \"SpzaCSGalleryPage\";\n        PageToGiveMetaTag[PageToGiveMetaTag[\"SpzaDetailPage\"] = 4] = \"SpzaDetailPage\";\n        PageToGiveMetaTag[PageToGiveMetaTag[\"SpzaCSDetailPage\"] = 5] = \"SpzaCSDetailPage\";\n        PageToGiveMetaTag[PageToGiveMetaTag[\"SpzaWordGalleryPage\"] = 6] = \"SpzaWordGalleryPage\";\n        PageToGiveMetaTag[PageToGiveMetaTag[\"SpzaExcelGalleryPage\"] = 7] = \"SpzaExcelGalleryPage\";\n        PageToGiveMetaTag[PageToGiveMetaTag[\"SpzaPowerpointGalleryPage\"] = 8] = \"SpzaPowerpointGalleryPage\";\n        PageToGiveMetaTag[PageToGiveMetaTag[\"SpzaOutlookGalleryPage\"] = 9] = \"SpzaOutlookGalleryPage\";\n        PageToGiveMetaTag[PageToGiveMetaTag[\"SpzaOfficeGalleryPage\"] = 10] = \"SpzaOfficeGalleryPage\";\n    })(Constants.PageToGiveMetaTag || (Constants.PageToGiveMetaTag = {}));\n    (function(RatingShowMode) {\n        RatingShowMode[RatingShowMode[\"Error\"] = 1] = \"Error\";\n        RatingShowMode[RatingShowMode[\"ContentViolation\"] = 2] = \"ContentViolation\";\n        RatingShowMode[RatingShowMode[\"Success\"] = 3] = \"Success\";\n        RatingShowMode[RatingShowMode[\"DeleteSuccess\"] = 4] = \"DeleteSuccess\";\n        RatingShowMode[RatingShowMode[\"WriteNewReview\"] = 5] = \"WriteNewReview\";\n        RatingShowMode[RatingShowMode[\"Loading\"] = 6] = \"Loading\";\n        RatingShowMode[RatingShowMode[\"EnsureDelete\"] = 7] = \"EnsureDelete\";\n        RatingShowMode[RatingShowMode[\"EditReview\"] = 8] = \"EditReview\";\n    })(Constants.RatingShowMode || (Constants.RatingShowMode = {}));\n    (function(CookieExpiry) {\n        CookieExpiry.Default = 13 * 30 * 24 * 60 * 60 * 1000;\n        CookieExpiry.Spza = 1000 * 60 * 60 * 24 * 13;\n        CookieExpiry.RefreshToken = 1000 * 60 * 60 * 24 * 14;\n        CookieExpiry.ExperimentDuration = 1000 * 60 * 60 * 24 * 90;\n    })(Constants.CookieExpiry || (Constants.CookieExpiry = {}));\n    (function(Reviews) {\n        Reviews.CommentsPerPage = 10;\n        Reviews.MaxSubsequentDeletedComments = 4;\n        Reviews.MaxCommentComposeLength = 500;\n        (function(ReviewCommentModalMode) {\n            ReviewCommentModalMode[ReviewCommentModalMode[\"ContentViolation\"] = 0] = \"ContentViolation\";\n            ReviewCommentModalMode[ReviewCommentModalMode[\"ConfirmDelete\"] = 1] = \"ConfirmDelete\";\n            ReviewCommentModalMode[ReviewCommentModalMode[\"DeleteError\"] = 2] = \"DeleteError\";\n            ReviewCommentModalMode[ReviewCommentModalMode[\"ConfirmUpdate\"] = 3] = \"ConfirmUpdate\";\n            ReviewCommentModalMode[ReviewCommentModalMode[\"UpdateError\"] = 4] = \"UpdateError\";\n            ReviewCommentModalMode[ReviewCommentModalMode[\"CreateError\"] = 5] = \"CreateError\";\n            ReviewCommentModalMode[ReviewCommentModalMode[\"Loading\"] = 6] = \"Loading\";\n        })(Reviews.ReviewCommentModalMode || (Reviews.ReviewCommentModalMode = {}));\n        (function(ReviewCommentActionError) {\n            ReviewCommentActionError[\"ContentViolation\"] = \"ContentViolation\";\n        })(Reviews.ReviewCommentActionError || (Reviews.ReviewCommentActionError = {}));\n        (function(Microdata) {\n            Microdata.AppItemType = 'https://schema.org/SoftwareApplication';\n            Microdata.AppCategory = 'UtilitiesApplication';\n        })(Reviews.Microdata || (Reviews.Microdata = {}));\n        (function(ReviewsSource) {\n            ReviewsSource.Internal = 'Internal';\n            ReviewsSource.External = 'External';\n            ReviewsSource.All = 'All';\n        })(Reviews.ReviewsSource || (Reviews.ReviewsSource = {}));\n    })(Constants.Reviews || (Constants.Reviews = {}));\n    (function(EntityType) {\n        EntityType[EntityType[\"App\"] = 1] = \"App\";\n        EntityType[EntityType[\"Service\"] = 2] = \"Service\";\n        EntityType[EntityType[\"Partner\"] = 5] = \"Partner\";\n        EntityType[EntityType[\"CloudsIndustry\"] = 6] = \"CloudsIndustry\";\n    })(Constants.EntityType || (Constants.EntityType = {}));\n    Constants.ECAPayloadAction = 'Create';\n    (function(Dynamics365LicenseType) {\n        Dynamics365LicenseType[Dynamics365LicenseType[\"dynamics365License\"] = 1] = \"dynamics365License\";\n        Dynamics365LicenseType[Dynamics365LicenseType[\"dynamics365forBusinessLicense\"] = 2] = \"dynamics365forBusinessLicense\";\n        Dynamics365LicenseType[Dynamics365LicenseType[\"noLicense\"] = -1] = \"noLicense\";\n    })(Constants.Dynamics365LicenseType || (Constants.Dynamics365LicenseType = {}));\n    (function(Dynamics365LicenseIndex) {\n        Dynamics365LicenseIndex[Dynamics365LicenseIndex[\"dynamics365LicenseIndex\"] = 0] = \"dynamics365LicenseIndex\";\n        Dynamics365LicenseIndex[Dynamics365LicenseIndex[\"dynamics365ForBusinessLicenseIndex\"] = 1] = \"dynamics365ForBusinessLicenseIndex\";\n    })(Constants.Dynamics365LicenseIndex || (Constants.Dynamics365LicenseIndex = {}));\n    (function(SearchBy) {\n        SearchBy[SearchBy[\"Id\"] = 0] = \"Id\";\n        SearchBy[SearchBy[\"Class\"] = 1] = \"Class\";\n        SearchBy[SearchBy[\"Tag\"] = 2] = \"Tag\";\n        SearchBy[SearchBy[\"None\"] = 3] = \"None\";\n        SearchBy[SearchBy[\"QuerySelector\"] = 4] = \"QuerySelector\";\n    })(Constants.SearchBy || (Constants.SearchBy = {}));\n    (function(SystemKey) {\n        SystemKey[SystemKey[\"Space\"] = 32] = \"Space\";\n        SystemKey[SystemKey[\"Tab\"] = 9] = \"Tab\";\n        SystemKey[SystemKey[\"Enter\"] = 13] = \"Enter\";\n        SystemKey[SystemKey[\"Esc\"] = 27] = \"Esc\";\n        SystemKey[SystemKey[\"Up\"] = 38] = \"Up\";\n        SystemKey[SystemKey[\"Down\"] = 40] = \"Down\";\n    })(Constants.SystemKey || (Constants.SystemKey = {}));\n    (function(SystemKeyAsString) {\n        SystemKeyAsString[\"Space\"] = \" \";\n        SystemKeyAsString[\"Tab\"] = \"Tab\";\n        SystemKeyAsString[\"Enter\"] = \"Enter\";\n        SystemKeyAsString[\"Esc\"] = \"Escape\";\n        SystemKeyAsString[\"ArrowUp\"] = \"ArrowUp\";\n        SystemKeyAsString[\"ArrowDown\"] = \"ArrowDown\";\n    })(Constants.SystemKeyAsString || (Constants.SystemKeyAsString = {}));\n    (function(SystemKeyString) {\n        SystemKeyString[\"Space\"] = \"Space\";\n        SystemKeyString[\"Tab\"] = \"Tab\";\n        SystemKeyString[\"Enter\"] = \"Enter\";\n        SystemKeyString[\"Esc\"] = \"Esc\";\n        SystemKeyString[\"Up\"] = \"Up\";\n        SystemKeyString[\"Down\"] = \"Down\";\n    })(Constants.SystemKeyString || (Constants.SystemKeyString = {}));\n    (function(Recommendations) {\n        Recommendations[\"WhatsNew\"] = \"WhatsNew\";\n        Recommendations[\"Trending\"] = \"Trending\";\n        Recommendations[\"WhatsNewMicrosoft365\"] = \"WhatsNewMicrosoft365\";\n        Recommendations[\"TrendingMicrosoft365\"] = \"TrendingMicrosoft365\";\n    })(Constants.Recommendations || (Constants.Recommendations = {}));\n    (function(FieldHubUserType) {\n        FieldHubUserType[FieldHubUserType[\"None\"] = 0] = \"None\";\n        FieldHubUserType[FieldHubUserType[\"Limited\"] = 1] = \"Limited\";\n        FieldHubUserType[FieldHubUserType[\"Full\"] = 2] = \"Full\";\n    })(Constants.FieldHubUserType || (Constants.FieldHubUserType = {}));\n    (function(VaritionKey) {\n        VaritionKey[VaritionKey[\"Default\"] = 0] = \"Default\";\n        VaritionKey[VaritionKey[\"Treatment\"] = 1] = \"Treatment\";\n        VaritionKey[VaritionKey[\"TreatmentNewFilterAMP\"] = 2] = \"TreatmentNewFilterAMP\";\n    })(Constants.VaritionKey || (Constants.VaritionKey = {}));\n    (function(TenantType) {\n        TenantType[TenantType[\"None\"] = 0] = \"None\";\n        TenantType[TenantType[\"Viral\"] = 1] = \"Viral\";\n        TenantType[TenantType[\"Managed\"] = 2] = \"Managed\";\n        TenantType[TenantType[\"Msa\"] = 3] = \"Msa\";\n        TenantType[TenantType[\"Unknown\"] = 4] = \"Unknown\";\n    })(Constants.TenantType || (Constants.TenantType = {}));\n    Constants.InvoiceLink = 'https://aka.ms/appsource/paybyinvoice';\n    Constants.AzureSubscriptionLink = 'http://aka.ms/appsource/azuresub';\n    Constants.AzureBenefitURL = 'http://aka.ms/appsource/azurebenefit';\n    Constants.MicrosoftTermsURL = 'https://aka.ms/azuremarketplaceterms';\n    Constants.MyOrdersLink = 'https://admin.microsoft.com/Adminportal/Home#/subscriptions/apps';\n    Constants.AdminCenterLink = 'https://admin.microsoft.com/Adminportal/Home';\n    Constants.AdminCenterYourProductsLink = 'https://admin.microsoft.com/adminportal/home?#/subscriptions';\n    Constants.AdminCenterLicensesLink = 'https://admin.microsoft.com/adminportal/home?#/licenses';\n    Constants.MicrosoftPrivacyStatementURL = 'https://aka.ms/AppSourcePrivacyStatement';\n    Constants.MicrosoftRatingReviewPolicy = 'https://docs.microsoft.com/en-us/legal/marketplace/rating-review-policies';\n    Constants.FeaturedAppsId = '99';\n    Constants.InitializationRetryAttempts = process.env.initializationRetryAttempts ? parseInt(process.env.initializationRetryAttempts, 10) : 1;\n    Constants.InitializationRetryDelay = process.env.initializationRetryDelay ? parseInt(process.env.initializationRetryDelay, 10) : 1000 * 60 * 5; // 5 minutes\n    Constants.MaxItemsPerPageInReviews = 10;\n    Constants.mooncakeNationalCloud = 'mooncake';\n    Constants.fairfaxNationalCloud = 'fairfax';\n    Constants.blackforestNationalCloud = 'blackforest';\n    Constants.EmailRegex = /^\\w+([-+.']\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$/;\n    Constants.LocaleRegex = /^[a-zA-Z- ]*$/;\n    Constants.AlphaNumericRegex = /^[a-zA-Z0-9 ]+$/;\n    Constants.SeoLocaleRegex = /[/][a-zA-Z]{2}-[a-zA-Z]{2,4}/;\n    Constants.removeHtmlRegex = /<(.|\\n)*?>/g;\n    Constants.crossListingRibbonItemCount = 5;\n    Constants.memCacheExpiry = 1200000;\n    Constants.testDriveDocumentationLink = 'https://go.microsoft.com/fwlink/?linkid=845086';\n    Constants.ampTestDriveDocumentationLink = 'https://azure.microsoft.com/en-us/blog/azure-marketplace-test-drive/';\n    Constants.purchaseInAppSourceLink = 'https://aka.ms/AppSourceDocOverview';\n    Constants.appSourceContactUsLink = 'https://aka.ms/AppSourceContactUs';\n    Constants.GraphResourceUrl = 'https://graph.windows.net';\n    Constants.AccessTokenUrl = 'https://login.microsoftonline.com/common/oauth2/token';\n    Constants.PowerBIResourceUrl = 'https://analysis.windows.net/powerbi/api';\n    Constants.PowerBIVisualInstructionsUrl = 'https://go.microsoft.com/fwlink/?linkid=2161918';\n    Constants.learnMoreCertifiedPBI = 'https://aka.ms/power-bi-custom-visuals-certified';\n    Constants.learnMoreBillingPane = 'https://aka.ms/appsourcecountries';\n    Constants.refreshAccessTokenInterval = 1000 * 60 * 45; // 45 minutes in ms\n    Constants.ServicesUserSegment = 'Services';\n    Constants.UserSegmentQueryParameter = 'usersegment';\n    Constants.InitialStateCacheKey = 'initialState';\n    Constants.everywhereFilterView = 'everywhere';\n    Constants.URLCacheKeyIsMobileView = 'ismobileview';\n    Constants.ABTesting = 'ABTesting';\n    Constants.canoninalfilterQuery = 'filters=';\n    Constants.canonicalAMPEnvWebAppName = 'mac';\n    Constants.canonicalAMPEnvAppName = 'azureMarketPlace';\n    Constants.tfsStringFieldMaxLength = 255;\n    Constants.mpnIdMaxDigits = 7;\n    Constants.enterpriseContractLink = 'https://go.microsoft.com/fwlink/?linkid=2041178';\n    Constants.M365Admin = 'M365Admin';\n    Constants.PanelWidth = '340px';\n    Constants.PrimaryProductBitMaskKey = 'product_mask_1';\n    Constants.AppSourceStorefronts = [\n        'appsource',\n        'teamsadmin',\n        'm365admin'\n    ];\n    Constants.redirectRoute = 'redirect';\n    (function(ReviewsEnrichApiResponse) {\n        ReviewsEnrichApiResponse.ContentViolation = 'ContentViolation';\n        ReviewsEnrichApiResponse.UserDidntPurchase = 'user has not acquired the app';\n    })(Constants.ReviewsEnrichApiResponse || (Constants.ReviewsEnrichApiResponse = {}));\n    (function(Checkout) {\n        Checkout.MaxQuantity = 1000000;\n        Checkout.IsSaasBundle = 'isSaaSBundle';\n        Checkout.ContentId = 'contentId';\n        Checkout.OperationLocation = 'operation-location';\n        Checkout.RetryAfter = 'retry-after';\n        Checkout.DefaultPlanIdQueryParam = 'defaultPlanId';\n        (function(TermId) {\n            TermId.Monthly = 'hjdtn7tfnxcy';\n            TermId.Yearly = 'nm5o4wf9fbfy';\n        })(Checkout.TermId || (Checkout.TermId = {}));\n    })(Constants.Checkout || (Constants.Checkout = {}));\n    (function(OrderConfirmation) {\n        OrderConfirmation.InternalServerErrorLimit = 3;\n        OrderConfirmation.PreviewOffer = '-preview';\n        OrderConfirmation.OfferNotFoundErrorMessage = 'was not found in the catalog';\n        OrderConfirmation.TestHeaderLowerCase = 'test header';\n        OrderConfirmation.CustomMetersErrorMessage = 'The purchase has failed because the plan you selected is not available for purchase from AppSource. It is available for purchase in Azure Portal.';\n        OrderConfirmation.RiskPrepaidCardErrorReason = 'AzurePrepaidBINPolicy_Reject_Terminate';\n    })(Constants.OrderConfirmation || (Constants.OrderConfirmation = {}));\n    (function(StatusError) {\n        StatusError.Conflict = 409;\n        StatusError.InternalServerError = 500;\n    })(Constants.StatusError || (Constants.StatusError = {}));\n    (function(Cookies) {\n        Cookies.AppSourceCookie = 'appsource';\n        Cookies.unifiedExperience = 'unifiedExperience';\n        Cookies.AppSourceLeadCookie = 'appsourcelead';\n        Cookies.LocaleCookie = 'spzaLocale';\n        Cookies.billingRegionCookie = 'appsourcebillingregion';\n        Cookies.correlationId = 'correlationId';\n        Cookies.privacyConsentAcceptedDate = 'privacyConsentAcceptedDate';\n        Cookies.WCPBannerName = 'WCPcookieBannerId';\n        Cookies.WCPManageCookieBtnId = 'c-uhff-footer_managecookies';\n        Cookies.WCPDefaultLocale = 'en-US';\n        Cookies.WCPEventName = 'wcpconsent-download-done';\n        Cookies.AMC3PAdsOptOut = '3PAdsOptOut';\n        (function(Errors) {\n            Errors[\"ParsingExperimentsCookieError\"] = \"Failed to parse experiments cookie\";\n            Errors[\"ParsingVariantsError\"] = \"Failed to parse variants within experiments cookie\";\n        })(Cookies.Errors || (Cookies.Errors = {}));\n        Cookies.Essential = {\n            /** Cookie to track the session, essential for tracking user behavior */ [Constants.Cookies.correlationId]: true,\n            [Constants.Cookies.AMC3PAdsOptOut]: true\n        };\n    })(Constants.Cookies || (Constants.Cookies = {}));\n    (function(ConsentAnalyticAssets) {\n        ConsentAnalyticAssets[\"GA\"] = \"GA\";\n    })(Constants.ConsentAnalyticAssets || (Constants.ConsentAnalyticAssets = {}));\n    (function(Catalog) {\n        Catalog.RatingAverageDecimalPoints = 3;\n        Catalog.RatingAverageDecimalPointsHelper = Math.pow(10, Catalog.RatingAverageDecimalPoints);\n        Catalog.ImageNameUnavailable = 'Unavailable';\n        Catalog.DefaultTestDriveVideoName = 'About this test drive';\n        Catalog.DefaultTestDriveManual = 'Test drive manual';\n        Catalog.DefaultOfficeLocale = 'en';\n        Catalog.AllMarkets = 'ALL';\n        Catalog.legacyPlanIdARM = '-arm';\n        (function(CategoryId) {\n            CategoryId[\"MicrosoftIotEdgeModule\"] = \"microsoft-iot-edge-module\";\n        })(Catalog.CategoryId || (Catalog.CategoryId = {}));\n        (function(MeterUnit) {\n            MeterUnit[\"HR\"] = \"HR\";\n        })(Catalog.MeterUnit || (Catalog.MeterUnit = {}));\n        (function(MeterType) {\n            MeterType[\"FreeTrialMeterType\"] = \"1 Compute Hour - FreeTrial\";\n        })(Catalog.MeterType || (Catalog.MeterType = {}));\n        (function(ArtificatsName) {\n            ArtificatsName[\"DefaultTemplate\"] = \"DefaultTemplate\";\n            ArtificatsName[\"UiDefinition\"] = \"UiDefinition.json\";\n            ArtificatsName[\"CreateUiDefinition\"] = \"createuidefinition\";\n        })(Catalog.ArtificatsName || (Catalog.ArtificatsName = {}));\n    })(Constants.Catalog || (Constants.Catalog = {}));\n    (function(LocalStorage) {\n        LocalStorage.spzaUserId = 'spzaUserId';\n        LocalStorage.trailId = 'trailId';\n        LocalStorage.nps = 'nps';\n        LocalStorage.npsNext = 'next';\n        LocalStorage.npsNextText = 'nextText';\n        LocalStorage.dontShowInstructions = 'dontShowInstructions';\n        LocalStorage.LoginHint = 'loginHint';\n        LocalStorage.Essentials = [\n            Constants.LocalStorage.LoginHint\n        ];\n    })(Constants.LocalStorage || (Constants.LocalStorage = {}));\n    Constants.usCountryCode = 'us';\n    Constants.usCountryCodeUpper = Constants.usCountryCode.toUpperCase();\n    Constants.caCountryCode = 'ca';\n    Constants.auCountryCode = 'au';\n    Constants.allCountriesCode = 'ALL';\n    Constants.allStatesCode = 'all';\n    Constants.allStatesCodeUpper = Constants.allStatesCode.toUpperCase();\n    Constants.usdCurrency = 'USD';\n    Constants.countryCodeQueryParam = 'country';\n    Constants.regionCodeQueryParam = 'region';\n    Constants.usFilterText = 'United States';\n    Constants.auFilterText = 'Austrilia';\n    Constants.allRegionsFilterText = 'All States/Provinces';\n    Constants.userAcceptField = 'accepted';\n    Constants.userProfileEmbedCookieName = 'userProfileEmbedHost';\n    Constants.Country = 'country';\n    (function(EventsApi) {\n        EventsApi.View = 'view';\n        EventsApi.BusinessApplicationsType = 'BusinessApplications';\n    })(Constants.EventsApi || (Constants.EventsApi = {}));\n    (function(UrlParamCacheKeyWhiteListKey) {\n        UrlParamCacheKeyWhiteListKey[\"Product\"] = \"product\";\n        UrlParamCacheKeyWhiteListKey[\"Service\"] = \"service\";\n        UrlParamCacheKeyWhiteListKey[\"Default\"] = \"default\";\n    })(Constants.UrlParamCacheKeyWhiteListKey || (Constants.UrlParamCacheKeyWhiteListKey = {}));\n    (function(Search) {\n        Search.numberOfTops = 1000;\n        Search.searchFullQueryType = 'full';\n        Search.maxNumOfSuggestions = 5;\n        Search.cloudIndustryCategoriesFilter = 'CloudIndustryCategories/any()';\n        Search.maxSearchTextLength = 200;\n        (function(SuggestionTypes) {\n            SuggestionTypes[\"WordSearch\"] = \"WordSearch\";\n            SuggestionTypes[\"Entity\"] = \"Entity\";\n        })(Search.SuggestionTypes || (Search.SuggestionTypes = {}));\n        (function(QueryParams) {\n            QueryParams.SuggestionTypes = 'suggestionTypes';\n            QueryParams.SearchQuery = 'searchQuery';\n            QueryParams.IndustryCloud = 'industryCloud';\n            QueryParams.Language = 'language';\n            QueryParams.Gallery = 'gallery';\n            QueryParams.ProductTypes = 'productTypes';\n        })(Search.QueryParams || (Search.QueryParams = {}));\n        (function(Endpoints) {\n            Endpoints.Search = '/search';\n            Endpoints.Suggestions = 'suggestions/products';\n        })(Search.Endpoints || (Search.Endpoints = {}));\n        (function(ApiVersions) {\n            ApiVersions.SearchApiSuggestions = '2022-09-25-preview';\n        })(Search.ApiVersions || (Search.ApiVersions = {}));\n        (function(SelectEntry) {\n            SelectEntry.ApplicationId = 'ApplicationId';\n            SelectEntry.ServiceId = 'ServiceId';\n        })(Search.SelectEntry || (Search.SelectEntry = {}));\n        (function(SearchMode) {\n            SearchMode.All = 'all';\n        })(Search.SearchMode || (Search.SearchMode = {}));\n        (function(ActionType) {\n            ActionType[\"Suggestions\"] = \"Suggestions\";\n            ActionType[\"Search\"] = \"Search\";\n        })(Search.ActionType || (Search.ActionType = {}));\n        (function(OrderBy) {\n            OrderBy[\"asc\"] = \"asc\";\n            OrderBy[\"desc\"] = \"desc\";\n        })(Search.OrderBy || (Search.OrderBy = {}));\n    })(Constants.Search || (Constants.Search = {}));\n    (function(FilteredGallery) {\n        FilteredGallery.pageSize = 60;\n        FilteredGallery.officeFilter = 'office';\n    })(Constants.FilteredGallery || (Constants.FilteredGallery = {}));\n    (function(TileDataEntityType) {\n        TileDataEntityType[\"App\"] = \"App\";\n        TileDataEntityType[\"Service\"] = \"Service\";\n        TileDataEntityType[\"CloudsIndustry\"] = \"CloudsIndustry\";\n        TileDataEntityType[\"All\"] = \"All\";\n    })(Constants.TileDataEntityType || (Constants.TileDataEntityType = {}));\n    (function(TileDataAdditionalQueryParams) {\n        TileDataAdditionalQueryParams[\"sortBy\"] = \"sortBy\";\n        TileDataAdditionalQueryParams[\"page\"] = \"page\";\n        TileDataAdditionalQueryParams[\"region\"] = \"region\";\n        TileDataAdditionalQueryParams[\"country\"] = \"country\";\n        TileDataAdditionalQueryParams[\"includeTestProducts\"] = \"includeTestProducts\";\n    })(Constants.TileDataAdditionalQueryParams || (Constants.TileDataAdditionalQueryParams = {}));\n    (function(TileDataFilteredQueryParams) {\n        TileDataFilteredQueryParams[\"search\"] = \"search\";\n        TileDataFilteredQueryParams[\"subcategories\"] = \"subcategories\";\n        TileDataFilteredQueryParams[\"subindustries\"] = \"subindustries\";\n        TileDataFilteredQueryParams[\"filters\"] = \"filters\";\n        TileDataFilteredQueryParams[\"serviceType\"] = \"serviceType\";\n    })(Constants.TileDataFilteredQueryParams || (Constants.TileDataFilteredQueryParams = {}));\n    (function(TileDataCuratedQueryParams) {\n        TileDataCuratedQueryParams[\"category\"] = \"category\";\n        TileDataCuratedQueryParams[\"industry\"] = \"industry\";\n        TileDataCuratedQueryParams[\"product\"] = \"product\";\n    })(Constants.TileDataCuratedQueryParams || (Constants.TileDataCuratedQueryParams = {}));\n    (function(DataMapCollectionKeys) {\n        DataMapCollectionKeys[\"categories\"] = \"categories\";\n        DataMapCollectionKeys[\"industries\"] = \"industries\";\n        DataMapCollectionKeys[\"cloudIndustries\"] = \"cloudIndustries\";\n        DataMapCollectionKeys[\"products\"] = \"products\";\n        DataMapCollectionKeys[\"serviceTypes\"] = \"serviceTypes\";\n        DataMapCollectionKeys[\"trials\"] = \"trials\";\n        DataMapCollectionKeys[\"pricingModel\"] = \"pricingModel\";\n        DataMapCollectionKeys[\"ratings\"] = \"ratings\";\n        DataMapCollectionKeys[\"appCompliance\"] = \"appCompliance\";\n        DataMapCollectionKeys[\"azureBenefitEligible\"] = \"AzureBenefitEligible\";\n        DataMapCollectionKeys[\"copilotExtension\"] = \"CopilotExtension\";\n        DataMapCollectionKeys[\"productType\"] = \"productType\";\n    })(Constants.DataMapCollectionKeys || (Constants.DataMapCollectionKeys = {}));\n    (function(CategoriesDataMapCollectionKeys) {\n        CategoriesDataMapCollectionKeys[\"default\"] = \"default\";\n        CategoriesDataMapCollectionKeys[\"office\"] = \"office\";\n        CategoriesDataMapCollectionKeys[\"powerBiVisuals\"] = \"powerBiVisuals\";\n        CategoriesDataMapCollectionKeys[\"addIns\"] = \"addIns\";\n    })(Constants.CategoriesDataMapCollectionKeys || (Constants.CategoriesDataMapCollectionKeys = {}));\n    Constants.CuratedQueryParamsToDataMapCollectionKeyMap = {\n        [\"category\"]: \"categories\",\n        [\"industry\"]: \"industries\",\n        [\"product\"]: \"products\"\n    };\n    Constants.UrlParamCacheKeyWhiteList = {\n        country: true,\n        region: true,\n        tab: true,\n        product: true,\n        embedhost: true\n    };\n    Constants.UrlParamCacheKeyBlackList = {\n        search: true,\n        product: true,\n        category: true,\n        industry: true,\n        subcategories: true,\n        subindustries: true,\n        filters: true,\n        servicetype: true\n    };\n    Constants.EmbedUrlParamCacheKeyBlackList = _object_spread_props(_object_spread({}, Constants.UrlParamCacheKeyBlackList), {\n        product: undefined\n    });\n    let UserPII = /*#__PURE__*/ function(UserPII) {\n        UserPII[\"firstName\"] = \"firstName\";\n        UserPII[\"lastName\"] = \"lastName\";\n        UserPII[\"email\"] = \"email\";\n        UserPII[\"phone\"] = \"phone\";\n        UserPII[\"oid\"] = \"oid\";\n        UserPII[\"alternateEmail\"] = \"alternateEmail\";\n        return UserPII;\n    }({});\n    Constants.PIIFields = [\n        \"firstName\",\n        \"lastName\",\n        \"email\",\n        \"phone\",\n        \"oid\",\n        \"alternateEmail\"\n    ];\n    Constants.RawDataCacheKeyPrefix = 'RawData|';\n    (function(Headers) {\n        Headers.CV = 'ms-cv';\n        Headers.RequestId = 'x-ms-requestid';\n        Headers.CorrelationId = 'x-ms-correlationid';\n        Headers.XMSUserAgent = 'x-ms-useragent';\n        Headers.Source = 'x-ms-source';\n        Headers.Bearer = 'Bearer '; // Please do not remove the whitespace at the end\n        Headers.AccessKey = 'accesskey';\n        Headers.Authorization = 'authorization';\n        Headers.Referer = 'referer';\n        Headers.InternalAuthorizationHeader = 'x-ms-authorization';\n        Headers.Cookie = 'cookie';\n        Headers.Host = 'host';\n        Headers.iframeOptions = 'X-Frame-Options';\n        Headers.ContentType = 'Content-Type';\n        Headers.UserAgent = 'user-agent';\n        Headers.XMSSourceAppSource = 'AppSource';\n        Headers.XMSSourceAMP = 'AzureMarketplace';\n        Headers.XMSClientName = 'x-ms-client-name';\n        Headers.XForwardedFor = 'x-forwarded-for';\n        Headers.XIISNodeRemoteAddr = 'x-iisnode-remote_addr';\n        Headers.AcceptLanguages = 'accept-language';\n        Headers.ApplicationType = 'x-ms-applicationType';\n        Headers.CatalogApiClientRequestId = 'x-ms-client-request-id';\n        Headers.ETag = 'ETag';\n        Headers.CacheControl = 'Cache-Control';\n        Headers.Pragma = 'Pragma';\n        Headers.Expires = 'Expires';\n        Headers.ApiKey = 'api-key';\n        Headers.Origin = 'Origin';\n        Headers.Accept = 'accept';\n        Headers.XMsApp = 'x-ms-app';\n        Headers.SetCookie = 'set-cookie';\n        Headers.XMSAuthInternalToken = 'x-ms-auth-internal-token';\n        Headers.XAPIKey = 'X-API-Key';\n        Headers.XProofToken = 'x-proof-token';\n        Headers.ProxyAuthorization = 'proxy-authorization';\n        Headers.XMSClientObjectId = 'x-ms-client-object-id';\n        Headers.XMSClientTenantId = 'x-ms-client-tenant-id';\n        Headers.XMSClientRegion = 'x-ms-client-region';\n    })(Constants.Headers || (Constants.Headers = {}));\n    (function(OperationNames) {\n        OperationNames.PassThroughLog = 'PassThroughLog ';\n        OperationNames.PostTokens = 'Post Tokens';\n        OperationNames.Server = 'Server';\n        OperationNames.Request = 'Request';\n        OperationNames.PreRequest = 'Potential AAD Callback Request';\n        OperationNames.RateLimit = 'Rate Limit';\n        OperationNames.TokenLog = 'Token Log';\n        OperationNames.ParamsValidation = 'params Validation';\n        OperationNames.MainRequest = 'Request Received';\n        OperationNames.EnsureAsyncData = 'Ensure Async Data';\n        OperationNames.GetHeaderData = 'Get Header Data';\n        OperationNames.RenderReactApp = 'Render React App';\n        OperationNames.WarmupRemoteModulesRendering = 'Warmup Remote Modules Rendering';\n        OperationNames.FulFillRequest = 'Ful Fill Request';\n        OperationNames.ProcessReduxStore = 'Process Redux Store';\n        OperationNames.PreSSRPromises = 'Pre SSR Promises';\n        OperationNames.SSRRequest = 'SSR Request';\n        OperationNames.Embed = 'Embed';\n        OperationNames.Signin = 'Signin';\n        OperationNames.Signout = 'Logout';\n        OperationNames.AADCallback = 'AAD Callback Request';\n        OperationNames.LeadGen = 'LeadGeneration';\n        OperationNames.SaveLeadGenSettings = 'SaveLeadGenSettings';\n        OperationNames.SolutionsTestDriveAcquisition = 'Solutions Test Drive Acquisition';\n        OperationNames.SolutionsInstanceStatus = 'Solutions Instance Status';\n        OperationNames.SolutionsInstanceAction = 'Solutions Instance Action';\n        OperationNames.AmpTestDriveAcquisition = 'AmpTestDriveAcquisition';\n        OperationNames.AmpSolutionsInstanceStatus = 'AmpSolutionsInstanceStatusProcessor';\n        OperationNames.AmpSolutionsInstanceAction = 'AmpSolutionsInstanceAction';\n        OperationNames.AutoSignin = 'Auto Signin';\n        OperationNames.Acquisition = 'Acquisition';\n        OperationNames.LogCreateLeadPayload = 'LogCreateLeadPayload';\n        OperationNames.LogAcquisitionPayload = 'LogAcquisitionPayload';\n        OperationNames.UserAgent = 'User Agent';\n        OperationNames.ObtainAccessToken = 'Obtain Access Token';\n        OperationNames.CreateUser = 'create User';\n        OperationNames.MsalGetTokenOnBehalf = 'msal.getTokenOnBehalf';\n        OperationNames.SearchApi = 'searchRestClient.callSearch';\n        OperationNames.SearchApiRemovedOffers = 'searchRestClient.callSearch.removedOffers';\n        OperationNames.MarkoApi = 'searchRestClient.callMarkoSearch';\n        OperationNames.CombinedSearch = 'searchRestClient.callSearchWithMarko';\n        OperationNames.GetRefreshTokenFromCache = 'GetRefreshTokenFromCache';\n    })(Constants.OperationNames || (Constants.OperationNames = {}));\n    (function(CacheStatus) {\n        CacheStatus[\"Healthy\"] = \"Healthy\";\n        CacheStatus[\"Unhealthy\"] = \"Unhealthy\";\n    })(Constants.CacheStatus || (Constants.CacheStatus = {}));\n    (function(BrowserConfigs) {\n        BrowserConfigs[\"appsource\"] = \"appsource\";\n        BrowserConfigs[\"azureMarketPlace\"] = \"azureMarketPlace\";\n        BrowserConfigs[\"embed\"] = \"embed\";\n    })(Constants.BrowserConfigs || (Constants.BrowserConfigs = {}));\n    (function(ClientNames) {\n        ClientNames[\"AppSource\"] = \"AppSource\";\n        ClientNames[\"AMP\"] = \"AMP\";\n        ClientNames[\"Embedded\"] = \"Embedded\";\n        ClientNames[\"Default\"] = \"\";\n    })(Constants.ClientNames || (Constants.ClientNames = {}));\n    (function(AppConfig) {\n        AppConfig[\"correlationId\"] = \"correlationId\";\n    })(Constants.AppConfig || (Constants.AppConfig = {}));\n    Constants.browserConfigsToClientNames = {\n        [\"appsource\"]: \"AppSource\",\n        [\"azureMarketPlace\"]: \"AMP\",\n        [\"embed\"]: \"Embedded\"\n    };\n    (function(HttpMessage) {\n        HttpMessage.InvalidQueryParams = 'Invalid query parameters';\n        HttpMessage.OneOrMoreErrors = 'One or more errors occured';\n        HttpMessage.Forbidden = 'Forbidden';\n        HttpMessage.NotFound = 'Not Found';\n        HttpMessage.InternalServerError = 'Internal Server Error';\n        HttpMessage.BadRequest = 'BadRequest';\n        HttpMessage.AccessKeyExpired = 'Access key expired';\n        HttpMessage.AccessKeyInvalid = 'Invalid access key, invalid cipher: Message integrity check failed';\n    })(Constants.HttpMessage || (Constants.HttpMessage = {}));\n    (function(ControllerOperations) {\n        ControllerOperations.ValidateQueryParams = 'Validation of query parameters';\n        ControllerOperations.ValidatePayload = 'Validation of payload';\n        ControllerOperations.GenerateLead = 'Generation of lead';\n        ControllerOperations.SaveLeadSettings = 'Saving lead settings';\n        ControllerOperations.AuthoriseRequest = 'Authorization of request';\n    })(Constants.ControllerOperations || (Constants.ControllerOperations = {}));\n    (function(QueryStrings) {\n        QueryStrings.isConverged = 'isConverged';\n        QueryStrings.includeStopSoldPlans = 'includeStopSoldPlans';\n        QueryStrings.CorrelationId = 'correlationId';\n        QueryStrings.Referer = 'referer';\n        QueryStrings.ApplicationId = 'appId';\n        QueryStrings.PartnerId = 'partnerId';\n        QueryStrings.Product = 'product';\n        QueryStrings.PlanId = 'planId';\n        QueryStrings.DemoId = 'demoId';\n        QueryStrings.LabId = 'labId';\n        QueryStrings.PublisherId = 'publisherId';\n        QueryStrings.DemoSessionId = 'demoSessionId';\n        QueryStrings.UrlQuery = 'urlQuery';\n        QueryStrings.flightCodes = 'flightCodes';\n        QueryStrings.flightCode = 'flightCode';\n        QueryStrings.locale = 'locale';\n        QueryStrings.tab = 'tab';\n        QueryStrings.region = 'region';\n        QueryStrings.billingRegion = 'billingregion';\n        QueryStrings.entityType = 'entityType';\n        QueryStrings.modalAppId = 'modalAppId';\n        QueryStrings.modalECAId = 'modalECAId';\n        QueryStrings.signInModalType = 'signInModalType';\n        QueryStrings.productId = 'productId';\n        QueryStrings.modalServiceId = 'modalServiceId';\n        QueryStrings.modalReviewId = 'modalReviewId';\n        QueryStrings.modalReviewAppId = 'modalReviewAppId';\n        QueryStrings.modalReviewTitle = 'modalReviewTitle';\n        QueryStrings.country = 'country';\n        QueryStrings.ctaType = 'ctaType';\n        QueryStrings.ete = 'ete';\n        QueryStrings.apiVersion = 'api-version';\n        QueryStrings.version = 'version';\n        QueryStrings.showAllApps = 'showAllApps';\n        QueryStrings.applicationType = 'applicationType';\n        QueryStrings.modalRatingId = 'modalRatingId';\n        QueryStrings.extraData = 'extraData';\n        QueryStrings.embedHost = 'embedHost';\n        QueryStrings.includeTestProducts = 'includeTestProducts';\n        QueryStrings.isEmbedded = 'isEmbedded';\n        QueryStrings.search = 'search';\n        QueryStrings.industry = 'industry';\n        QueryStrings.serviceType = 'serviceType';\n        QueryStrings.category = 'category';\n        QueryStrings.product = 'product';\n        QueryStrings.page = 'page';\n        QueryStrings.certification = 'certification';\n        QueryStrings.UseSecondarySearch = 'UseSecondarySearch';\n        QueryStrings.market = 'market';\n        QueryStrings.productsFlow = 'productsFlow';\n        QueryStrings.ExcludePublic = 'excludePublic';\n        QueryStrings.hideKeys = 'HideKeys';\n        QueryStrings.searchLocale = 'searchLocale';\n        QueryStrings.searchQuery = 'searchQuery';\n        QueryStrings.filter = '$filter';\n        QueryStrings.skiptoken = '$skiptoken';\n        QueryStrings.storefront = 'storefront';\n        QueryStrings.HideKeys = 'HideKeys[]';\n        QueryStrings.includePrivateOffers = 'includePrivateOffers';\n        QueryStrings.expand = '$expand';\n        (function(Auth) {\n            Auth.HOST_NAME = 'hostName';\n            Auth.LOGIN_TYPE = 'loginType';\n            Auth.MSAL_USER_HOME_ID = 'msalUserHomeId';\n            Auth.FROM = 'from';\n            Auth.REFRESH_TOKEN = 'refreshToken';\n        })(QueryStrings.Auth || (QueryStrings.Auth = {}));\n    })(Constants.QueryStrings || (Constants.QueryStrings = {}));\n    (function(Curated) {\n        Curated.top = 'top';\n        Curated.everything = 'everything';\n        Curated.office365 = 'Office365';\n        Curated.dynamics365 = 'Dynamics 365';\n        Curated.powerPlatform = 'PowerPlatform';\n        Curated.powerBi = 'Power BI';\n    })(Constants.Curated || (Constants.Curated = {}));\n    (function(AppActionTypes) {\n        AppActionTypes.GET = 'GET';\n        AppActionTypes.CREATE = 'CREATE';\n        AppActionTypes.FREE = 'FREE';\n        AppActionTypes.TRIAL = 'TRIAL';\n        AppActionTypes.REQUESTFORTRIAL = 'REQUESTFORTRIAL';\n    })(Constants.AppActionTypes || (Constants.AppActionTypes = {}));\n    (function(ActionStrings) {\n        ActionStrings.Get = 'CTA_Get';\n        ActionStrings.Try = 'CTA_Try';\n        ActionStrings.RequestTrial = 'CTA_ContactMe';\n        ActionStrings.Contact = 'Contact';\n        ActionStrings.TestDrive = 'CTA_TestDrive';\n        ActionStrings.Service = 'Inquire';\n        ActionStrings.Purchase = 'CTA_Get';\n        ActionStrings.Select = 'Select';\n        ActionStrings.Add = 'CTA_Add';\n        ActionStrings.BuyLicense = 'CTA_BuyLicense';\n        ActionStrings.Install = 'CTA_Install';\n    })(Constants.ActionStrings || (Constants.ActionStrings = {}));\n    (function(NpsActions) {\n        NpsActions[\"pdpViewsCount\"] = \"pdpViewsCount\";\n        NpsActions[\"searchActionsCount\"] = \"pdpViewsCount\";\n        NpsActions[\"filterActionsCount\"] = \"filterActionsCount\";\n        NpsActions[\"galleryChangesCount\"] = \"galleryChangesCount\";\n        NpsActions[\"categoryChangesCount\"] = \"categoryChangesCount\";\n        NpsActions[\"paginationActionsCount\"] = \"paginationActionsCount\";\n        NpsActions[\"seeAllActionsCount\"] = \"seeAllActionsCount\";\n    })(Constants.NpsActions || (Constants.NpsActions = {}));\n    (function(BadgeType) {\n        BadgeType[\"OfficeAwards\"] = \"OfficeAwards\";\n        BadgeType[\"SolutionMap\"] = \"SolutionMap\";\n        BadgeType[\"PBICertified\"] = \"PBICertified\";\n        BadgeType[\"FreeTrial\"] = \"FreeTrial\";\n        BadgeType[\"AzureExpertsMSP\"] = \"AzureExpertsMSP\";\n        BadgeType[\"MicrosoftCertified\"] = \"MicrosoftCertified\";\n        BadgeType[\"SelfAttested\"] = \"SelfAttested\";\n        BadgeType[\"PrivateOffer\"] = \"PrivateOffer\";\n        BadgeType[\"IntegratedSolution\"] = \"IntegratedSolution\";\n        BadgeType[\"AzureBenefitEligible\"] = \"AzureBenefitEligible\";\n        BadgeType[\"CertifiedSoftware\"] = \"CertifiedSoftware\";\n        BadgeType[\"PreferredSolution\"] = \"PreferredSolution\";\n        BadgeType[\"Microsoft365AppAward\"] = \"Microsoft365AppAward\";\n    })(Constants.BadgeType || (Constants.BadgeType = {}));\n    (function(ButtonType) {\n        ButtonType[\"Link\"] = \"link\";\n        ButtonType[\"Label\"] = \"label\";\n    })(Constants.ButtonType || (Constants.ButtonType = {}));\n    (function(CTAType) {\n        CTAType[CTAType[\"Get\"] = 1] = \"Get\";\n        CTAType[CTAType[\"Try\"] = 2] = \"Try\";\n        CTAType[CTAType[\"RequestTrial\"] = 3] = \"RequestTrial\";\n        CTAType[CTAType[\"Contact\"] = 4] = \"Contact\";\n        CTAType[CTAType[\"TestDrive\"] = 5] = \"TestDrive\";\n        CTAType[CTAType[\"Service\"] = 6] = \"Service\";\n        CTAType[CTAType[\"Purchase\"] = 7] = \"Purchase\";\n        CTAType[CTAType[\"Select\"] = 8] = \"Select\";\n        CTAType[CTAType[\"AlreadyPurchased\"] = 9] = \"AlreadyPurchased\";\n        CTAType[CTAType[\"Partner\"] = 10] = \"Partner\";\n        CTAType[CTAType[\"DownloadSample\"] = 11] = \"DownloadSample\";\n        CTAType[CTAType[\"Add\"] = 12] = \"Add\";\n        CTAType[CTAType[\"BuyLicense\"] = 13] = \"BuyLicense\";\n        CTAType[CTAType[\"Install\"] = 14] = \"Install\";\n    })(Constants.CTAType || (Constants.CTAType = {}));\n    (function(CertificationType) {\n        CertificationType[\"Undefined\"] = \"Undefined\";\n        CertificationType[\"None\"] = \"None\";\n        CertificationType[\"SelfAttested\"] = \"SelfAttested\";\n        CertificationType[\"MicrosoftCertified\"] = \"MicrosoftCertified\";\n    })(Constants.CertificationType || (Constants.CertificationType = {}));\n    (function(currentView) {\n        currentView[\"AppDetails\"] = \"appDetails\";\n        currentView[\"AppGallery\"] = \"curated appGallery\";\n        currentView[\"SearchAppGallery\"] = \"search filtered appGallery\";\n    })(Constants.currentView || (Constants.currentView = {}));\n    (function(SignInType) {\n        SignInType[SignInType[\"OldSignInModal\"] = 0] = \"OldSignInModal\";\n        SignInType[SignInType[\"SignInWith_MSA_AAD\"] = 1] = \"SignInWith_MSA_AAD\";\n        SignInType[SignInType[\"SignInWith_AAD\"] = 2] = \"SignInWith_AAD\";\n        SignInType[SignInType[\"SignInWith_MSA\"] = 3] = \"SignInWith_MSA\";\n        SignInType[SignInType[\"SwitchTo_AAD\"] = 4] = \"SwitchTo_AAD\";\n        SignInType[SignInType[\"SwitchTo_MSA\"] = 5] = \"SwitchTo_MSA\";\n        SignInType[SignInType[\"Authorized\"] = 6] = \"Authorized\";\n    })(Constants.SignInType || (Constants.SignInType = {}));\n    (function(SignInRedirect) {\n        SignInRedirect.App = 'app';\n        SignInRedirect.Service = 'service';\n        SignInRedirect.ECA = 'eca';\n        SignInRedirect.Review = 'review';\n        SignInRedirect.Report = 'reportAbuse';\n        SignInRedirect.Checkout = 'checkout';\n    })(Constants.SignInRedirect || (Constants.SignInRedirect = {}));\n    (function(ActionCodes) {\n        ActionCodes.RequestTrial = 'PLT';\n        ActionCodes.TryGet = 'INS';\n        ActionCodes.Contact = 'CTT';\n        ActionCodes.CrossListingContact = 'DNC';\n        ActionCodes.TestDrive = 'StartTestDrive';\n        ActionCodes.ConsultingServices = 'CSC';\n    })(Constants.ActionCodes || (Constants.ActionCodes = {}));\n    Constants.TestDriveOfferIdVersion = '0.1';\n    (function(ModalType) {\n        ModalType[ModalType[\"NoModalShow\"] = 0] = \"NoModalShow\";\n        ModalType[ModalType[\"SignIn\"] = 1] = \"SignIn\";\n        ModalType[ModalType[\"SignOut\"] = 2] = \"SignOut\";\n        ModalType[ModalType[\"CTA\"] = 3] = \"CTA\";\n        ModalType[ModalType[\"Contact\"] = 4] = \"Contact\";\n        ModalType[ModalType[\"Image\"] = 5] = \"Image\";\n        ModalType[ModalType[\"Video\"] = 6] = \"Video\";\n        ModalType[ModalType[\"MediaModal\"] = 7] = \"MediaModal\";\n        ModalType[ModalType[\"NPS\"] = 8] = \"NPS\";\n        ModalType[ModalType[\"Rating\"] = 9] = \"Rating\";\n        ModalType[ModalType[\"Error\"] = 10] = \"Error\";\n        ModalType[ModalType[\"Drive\"] = 11] = \"Drive\";\n        ModalType[ModalType[\"Iframe\"] = 12] = \"Iframe\";\n        ModalType[ModalType[\"Disclaimer\"] = 13] = \"Disclaimer\";\n        ModalType[ModalType[\"Animation\"] = 14] = \"Animation\";\n        ModalType[ModalType[\"ReportAbuse\"] = 15] = \"ReportAbuse\";\n        ModalType[ModalType[\"Instructions\"] = 16] = \"Instructions\";\n        ModalType[ModalType[\"DownloadSample\"] = 17] = \"DownloadSample\";\n        ModalType[ModalType[\"ReviewComment\"] = 18] = \"ReviewComment\";\n        ModalType[ModalType[\"ReviewMarkAsHelpful\"] = 19] = \"ReviewMarkAsHelpful\";\n    })(Constants.ModalType || (Constants.ModalType = {}));\n    (function(dynamicsLicense) {\n        dynamicsLicense.dynamics365License = 'Dynamics 365';\n        dynamicsLicense.dynamics365FinancialLicense = 'Dynamics 365 for Financials';\n        dynamicsLicense.noLicense = 'No License';\n        dynamicsLicense.currentD365LicenseNumber = 2;\n    })(Constants.dynamicsLicense || (Constants.dynamicsLicense = {}));\n    Constants.adminPortal = 'admin-portal';\n    Constants.adminPortalBackendKey = 'Admin Portal';\n    Constants.officeBackendKey = 'Office 365';\n    Constants.officeFlatBackendKey = 'Office365';\n    (function(dynamics365) {\n        dynamics365.dynamics365 = 'dynamics-365';\n        dynamics365.operationsED = 'dynamics-365-for-operations';\n        dynamics365.financeED = 'dynamics-365-for-finance-and-operations';\n        dynamics365.salesED = 'dynamics-365-for-sales';\n        dynamics365.fieldServicesED = 'dynamics-365-for-field-services';\n        dynamics365.serviceAutomationED = 'dynamics-365-for-project-service-automation';\n        dynamics365.customerServiceED = 'dynamics-365-for-customer-services';\n        dynamics365.customerInsightsED = 'dynamics-365-customer-insights';\n        dynamics365.financeAndOperationsBD = 'dynamics-365-business-central';\n        dynamics365.marketingED = 'dynamics-365-marketing';\n        dynamics365.commerceED = 'dynamics-365-commerce';\n        dynamics365.supplyChainManagementED = 'dynamics-365-supply-chain-management';\n    })(Constants.dynamics365 || (Constants.dynamics365 = {}));\n    (function(PowerBI) {\n        PowerBI.powerBi = 'power-bi';\n        PowerBI.visuals = 'power-bi-visuals';\n    })(Constants.PowerBI || (Constants.PowerBI = {}));\n    (function(InternetOfThings) {\n        InternetOfThings.urlKey = 'internet-of-things';\n    })(Constants.InternetOfThings || (Constants.InternetOfThings = {}));\n    (function(filterTileTypes) {\n        filterTileTypes[\"search\"] = \"search\";\n        filterTileTypes[\"product\"] = \"product\";\n        filterTileTypes[\"industry\"] = \"industry\";\n        filterTileTypes[\"category\"] = \"category\";\n        filterTileTypes[\"serviceType\"] = \"serviceType\";\n    })(Constants.filterTileTypes || (Constants.filterTileTypes = {}));\n    (function(filterMaps) {\n        filterMaps[\"products\"] = \"products\";\n        filterMaps[\"industries\"] = \"industries\";\n        filterMaps[\"categories\"] = \"categories\";\n        filterMaps[\"serviceTypes\"] = \"serviceTypes\";\n    })(Constants.filterMaps || (Constants.filterMaps = {}));\n    (function(embedMessage) {\n        embedMessage.refreshToken = 'refreshToken';\n        embedMessage.loadMarketplaceV2 = 'loadMarketplaceV2';\n        embedMessage.loadMarketplace = 'loadMarketplace';\n        embedMessage.renewToken = 'renewToken';\n    })(Constants.embedMessage || (Constants.embedMessage = {}));\n    (function(Avert) {\n        Avert.ReportAbuseCategories = [\n            {\n                locKey: 'ReportModal_None_Label',\n                dropDownValue: 'None',\n                avertIdentifier: 'None'\n            },\n            {\n                locKey: 'ReportModal_OffensiveContent_Label',\n                dropDownValue: 'OffensiveContent',\n                avertIdentifier: 'OffensiveContent'\n            },\n            {\n                locKey: 'ReportModal_SpamAndAdvertising_Label',\n                dropDownValue: 'SpamAndAdvertising',\n                avertIdentifier: 'Other'\n            },\n            {\n                locKey: 'ReportModal_InvalidReview_Label',\n                dropDownValue: 'InvalidReview',\n                avertIdentifier: 'InvalidReview'\n            },\n            {\n                locKey: 'ReportModal_Other_Label',\n                dropDownValue: 'Other',\n                avertIdentifier: 'Other'\n            }\n        ];\n    })(Constants.Avert || (Constants.Avert = {}));\n    (function(TeachingBubblePurchaseConfirmation) {\n        TeachingBubblePurchaseConfirmation.AdminCenterLinkId = 'adminCenter';\n        TeachingBubblePurchaseConfirmation.AdminCenterLinkName = 'Admin center link teaching bubble';\n        TeachingBubblePurchaseConfirmation.AdminCenterYourProductsLinkId = 'adminCenterYourProducts';\n        TeachingBubblePurchaseConfirmation.AdminCenterYourProductsLinkName = 'Admin center your products link teaching bubble';\n        TeachingBubblePurchaseConfirmation.AdminCenterLicensesLinkId = 'adminCenterLicenses';\n        TeachingBubblePurchaseConfirmation.AdminCenterLicensesLinkName = 'Admin center licenses link teaching bubble';\n    })(Constants.TeachingBubblePurchaseConfirmation || (Constants.TeachingBubblePurchaseConfirmation = {}));\n    (function(RequestsMethods) {\n        RequestsMethods[\"GET\"] = \"GET\";\n        RequestsMethods[\"POST\"] = \"POST\";\n        RequestsMethods[\"PUT\"] = \"PUT\";\n        RequestsMethods[\"PATCH\"] = \"PATCH\";\n        RequestsMethods[\"DELETE\"] = \"DELETE\";\n        RequestsMethods[\"OPTIONS\"] = \"OPTIONS\";\n        RequestsMethods[\"HEAD\"] = \"HEAD\";\n    })(Constants.RequestsMethods || (Constants.RequestsMethods = {}));\n    (function(SearchSources) {\n        SearchSources[\"Search\"] = \"Search\";\n        SearchSources[\"Marko\"] = \"Marko\";\n        SearchSources[\"SearchApi\"] = \"SearchApi\";\n    })(Constants.SearchSources || (Constants.SearchSources = {}));\n    (function(LeadCategory) {\n        LeadCategory[\"Public\"] = \"public\";\n        LeadCategory[\"Private\"] = \"private\";\n    })(Constants.LeadCategory || (Constants.LeadCategory = {}));\n    Constants.LeadSource = {\n        SPZA: 'SPZA',\n        D365BusinessCentral: 'D365BusinessCentral',\n        D365Sales: 'D365Sales',\n        Office: 'Office',\n        PowerBI: 'PowerBI'\n    };\n    Constants.LeadSubSource = {\n        InClient: 'InClient',\n        Admin: 'Admin',\n        Web: 'Web'\n    };\n    (function(Telemetry) {\n        (function(Action) {\n            Action.EmbedMessaging = 'Embed Messaging';\n            Action.Country = 'Country';\n            Action.Click = 'Click';\n            Action.Skip = 'Skip';\n            Action.VariantAssignment = 'VariantAssignment';\n            Action.Search = 'Search';\n            Action.MarkoSearchTestTraffic = 'Marko Search Test Traffic';\n            Action.NewSearchApi = 'New Search Api';\n            Action.ACS = 'ACS';\n            Action.SortingSearch = 'SortingSearch';\n            Action.Landing = 'Landing';\n            Action.PageLoad = 'Page Load';\n            Action.openInNewWindow = 'Open In New Window';\n            Action.PerfResources = 'Perf resources';\n            Action.EmbedMessageListener = 'Embed Message Listener';\n            Action.NetworkCall = 'Network Call';\n            Action.FilterClick = 'Filter Click';\n            Action.FilterExpand = 'Filter Expand';\n            Action.FilterChange = 'Filter Change';\n            Action.FilterSearchChange = 'Filter Search Change';\n            Action.NotifyResult = 'Notify Result';\n            Action.ImageLoad = 'Image Load';\n            Action.RefreshToken = 'Refresh Token';\n            Action.ErrorModal = 'Error Modal';\n            Action.MyOrgApps = 'My Org Apps';\n            Action.PublishAcquisitionInfo = 'Publish AcquisitionInfo';\n            Action.Check = 'Check';\n            Action.Uncheck = 'Uncheck';\n            Action.CreateUserFromToken = 'createUserFromToken';\n            Action.SpzaUserId = 'spzaUserId';\n            Action.GoogleId = 'googleClientId';\n            Action.UserSettings = 'User Settings';\n            Action.UserTenantInfo = 'User Tenant Info';\n            Action.PerfEvents = 'Perf Telemetry Events';\n            Action.NPS = 'NPS';\n            Action.Feedback = 'Feedback';\n            Action.FieldHub = 'FieldHub';\n            Action.CrossListingInfo = 'Cross Listing Info';\n            Action.EnableFeature = 'EnableFeature';\n            Action.ClientLocation = 'ClientLocation';\n            Action.Open = 'Open';\n            Action.Close = 'Close';\n            Action.Cancel = 'Cancel';\n            Action.Expand = 'Expand';\n            Action.Collapse = 'Collapse';\n            Action.ReadAccess = 'Read Access';\n            Action.WriteAccess = 'Write Access';\n            Action.Copy = 'Copy';\n            Action.Upsert = 'Upsert';\n            Action.Delete = 'Delete';\n            Action.Redirecting = 'Redirecting';\n            Action.Submitting = 'Submitting';\n            Action.Submitted = 'Submitted';\n            Action.TileData = 'Tile Data';\n            Action.MarkoSearch = 'Marko Search';\n            Action.SearchCombinedResults = 'search combined results';\n            Action.Error = 'Error';\n            Action.SubmitError = 'Submit Error';\n            Action.SessionError = 'Session Error';\n            Action.LocalStorage = 'LocalStorage';\n            Action.Hover = 'Hover';\n            Action.ConsentBanner = 'ConsentBanner';\n            Action.RouteChanged = 'Route Changed';\n            Action.GetTenantType = 'Get Tenant Type';\n            Action.GetTenantDetails = 'Get Tenant Details';\n            Action.GetUserTenantInfo = \"Get user's tenant info\";\n            Action.GetProduct = 'Get product';\n            Action.GetPreviewProduct = 'GetPreviewProduct';\n            Action.GetAppSuggestedItems = 'Get Suggested App Items';\n            Action.GetAppRecommendedItems = 'Get Recommended App Items';\n            Action.GetServiceRecommendedItems = 'Get Recommended Service Items';\n            Action.GetPrivateOffers = 'Get Private Offers API';\n            Action.GetPrivateOffer = 'Get Private Offer by ID API';\n            Action.GetServiceSuggestedItems = 'Get Suggested Service Items';\n            Action.EnsureAppDetailsData = 'Ensure App Details Data';\n            Action.EnsureAppReviewsData = 'Ensure App Reviews Data';\n            Action.EnsureServiceDetailsData = 'Ensure Service Details Data';\n            Action.DeleteUserFavourite = 'Delete User Favourite';\n            Action.UpsertUserFavourite = 'Upsert User Favourite';\n            Action.FetchUserFavourites = 'Fetch User Favourites';\n            Action.InputValidations = 'Inputs validations';\n            Action.PartnerMessageListener = 'Partners Message Listener';\n            Action.PartnerMessageSender = 'Partners Message Sender';\n            Action.getUserBillingAccounts = 'get User BillingAccounts';\n            Action.getUserProfile = 'get User Profile';\n            Action.AssignFlight = 'Assign Flight';\n            Action.OldCheckout = 'OldCheckout';\n            Action.PlaceOrder = 'Place order';\n            Action.Checkout = 'Checkout';\n            Action.Purchase = 'Purchase';\n            Action.PreWarm = 'PreWarm';\n            Action.PreWarmAJAX = 'PreWarmAJAX';\n            Action.TrailData = 'Trail Data';\n            Action.RootHandler = 'Root Handler';\n            Action.LongTermSaaS = 'LongTermSaaS';\n            Action.PerfTiming = 'Perf timing';\n            Action.PerfRedirect = 'Perf redirect';\n            Action.PerfFetchStart = 'Perf fetch start';\n            Action.PerfRequestStart = 'Perf request start';\n            Action.PerfResponseStart = 'Perf response start';\n            Action.PerfResponseEnd = 'Perf response end';\n            Action.PerfDOMLoading = 'Perf DOM loading';\n            Action.PerfDOMInteractive = 'Perf DOM interactive';\n            Action.PerfDOMContentLoaded = 'Perf DOM content loaded';\n            Action.Logout = 'Logout';\n            Action.Login = 'Login';\n            Action.LoginIframe = 'Login Iframe';\n            Action.CVA = 'CVA';\n            Action.TeachingBubble = 'Teaching bubble';\n            Action.EmbedBuyLicenseClick = 'Embed Buy License Click';\n            Action.EmbedInstallClick = 'Embed Install Click';\n            Action.RemoteStatus = 'RemoteStatus';\n            Action.SendLead = 'SendLead';\n            Action.SendLeadInfo = 'SendLeadInfo';\n            Action.GetLeadActionCode = 'GetLeadActionCode';\n            Action.ProcessLeadInfo = 'ProcessLeadInfo';\n            Action.GetCustomers = 'getCustomers';\n        })(Telemetry.Action || (Telemetry.Action = {}));\n        (function(ActionModifier) {\n            ActionModifier.ReceiveMessage = 'Receive Message';\n            ActionModifier.CloseAuth = 'close_auth';\n            ActionModifier.PaymentLoaded = 'Payment Loaded';\n            ActionModifier.SaasLinkTooltip = 'saaslinking tooltip';\n            ActionModifier.SaaSLinkingTile = 'saaslinking tile';\n            ActionModifier.RedirectButton = 'RedirectButton';\n            ActionModifier.RedirectModal = 'RedirectModal';\n            ActionModifier.FlagClicked = 'Country clicked';\n            ActionModifier.FooterLocale = 'Footer locale';\n            ActionModifier.CountryModal = 'Country modal';\n            ActionModifier.SearchV1End = 'SearchV1End';\n            ActionModifier.UserType = 'User Type';\n            ActionModifier.AdminCenter = 'Admin Center';\n            ActionModifier.AdminCenterYourProducts = 'Admin Center Your Products';\n            ActionModifier.AdminCenterLicenses = 'Admin Center Licenses';\n            ActionModifier.Start = 'Start';\n            ActionModifier.InProgress = 'InProgress';\n            ActionModifier.End = 'End';\n            ActionModifier.Abandon = 'Abandon';\n            ActionModifier.Skip = 'Skip';\n            ActionModifier.StartBack = 'StartBack';\n            ActionModifier.Error = 'Error';\n            ActionModifier.Info = 'Info';\n            ActionModifier.RRSubmit = 'R&R';\n            ActionModifier.RRDelete = 'R&R Delete';\n            ActionModifier.Link = 'Link';\n            ActionModifier.Tab = 'Tab';\n            ActionModifier.Debug = 'Debug';\n            ActionModifier.Exception = 'Exception';\n            ActionModifier.Warning = 'Warning';\n            ActionModifier.Declined = 'Declined';\n            ActionModifier.ConsentModal = 'Consent Modal Dialog';\n            ActionModifier.LoginModal = 'Login Modal';\n            ActionModifier.MyOrders = 'My Orders';\n            ActionModifier.Signup = 'Signup';\n            ActionModifier.ChangeCheckoutView = 'Change checkout view';\n            ActionModifier.CrossListingContact = 'Cross Listing Contact';\n            ActionModifier.SubmitLeadGen = 'Submit Lead Gen';\n            ActionModifier.AppSearchSuggestions = 'App Search Suggestions';\n            ActionModifier.ServiceSearchSuggestions = 'Consulting Service Search Suggestions';\n            ActionModifier.ECASearchSuggestions = 'ECA Offer Search Suggestions';\n            ActionModifier.AppSearchForAll = 'App Search For All';\n            ActionModifier.ServicesSearchForAll = 'Consulting Services Search For All';\n            ActionModifier.CloudsIndustrySearchForAll = 'Industry Clouds Search For All';\n            ActionModifier.ParnerSearchAll = 'Partners Search For All';\n            ActionModifier.ECASearchForAll = 'ECA Offers Search For All';\n            ActionModifier.SearchReturned = 'Search Returned From Server';\n            ActionModifier.TrailIdUpdate = 'TrailId update';\n            ActionModifier.TrailIdValid = 'TrailId valid';\n            ActionModifier.HeaderFromUrl = 'HeaderFromUrl';\n            ActionModifier.HeaderFromCookie = 'HeaderFromCookie';\n            ActionModifier.SpzaUserIdNew = 'New User';\n            ActionModifier.SpzaUserIdReturn = 'Returning User';\n            ActionModifier.Tile = 'Tile';\n            ActionModifier.CookieData = 'CookieData';\n            ActionModifier.BillingCountry = 'Billing Country';\n            ActionModifier.ChooseSKU = 'Choose SKU';\n            ActionModifier.OfferUnavailableInRegion = 'Offer Unavailable in Region';\n            ActionModifier.DownloadCSV = 'Download CSV';\n            ActionModifier.DownloadPBIVisual = 'Download Power BI Visual';\n            ActionModifier.DownloadPBIVisualSample = 'Download Power BI Visual Sample';\n            ActionModifier.VMFilter = 'VM Filter';\n            ActionModifier.TestDrive = 'Test Drive';\n            ActionModifier.AzureTestDrive = 'Azure Test Drive';\n            ActionModifier.NavigatingToTestDrive = 'Navigating to test drive';\n            ActionModifier.TestDriveDismissed = 'Test Drive Dismissed';\n            ActionModifier.FilterClear = 'Filter Clear';\n            ActionModifier.FilterPane = 'Filter Pane';\n            ActionModifier.FilterTag = 'Filter Tag';\n            ActionModifier.Feedback = 'feedback';\n            ActionModifier.FeedbackModal = 'feedbackModal';\n            ActionModifier.ShowingResultsForFeedback = 'ShowingResultsFor feedback';\n            ActionModifier.Breadcrumb = 'Breadcrumb';\n            ActionModifier.Results = 'Results';\n            ActionModifier.FirstPartyAppPromotion = 'First Party App Promotion';\n            ActionModifier.CTAInfo = 'CTA Info';\n            ActionModifier.ResetFilters = 'Reset Filters';\n            ActionModifier.GoogleInfo = 'Google Info';\n            ActionModifier.SearchApiSuggestions = 'SearchApi Suggestions';\n            ActionModifier.SearchApiSuggestionsError = 'SearchApi Suggestions Error';\n            ActionModifier.Suggestions = 'Suggestions';\n            ActionModifier.MailToCTA = 'CTA MailTo';\n            ActionModifier.ContentDrawer = 'Content Drawer';\n            ActionModifier.ReportCTA = 'Report CTA';\n            ActionModifier.ReportModal = 'Report Modal';\n            ActionModifier.D365License = 'Dynamic license dispute';\n            ActionModifier.EmbedD365InstallButton = 'Dynamic Install Button';\n            ActionModifier.EmbedBAGBuyLicenseButton = 'BAG Offer Buy License Button';\n            ActionModifier.UserProfileEdit = 'User profile edit';\n            ActionModifier.LeadCampaignGeneration = 'Lead Campaign Generate';\n            ActionModifier.CTACheckBox = 'CTA Dialog Checkbox';\n            ActionModifier.AppDetailCTAButton = 'App Detail Page CTA Button';\n            ActionModifier.AppDetailCTAButtonFromTable = 'App Detail Page CTA Button From Table';\n            ActionModifier.ECADetailCTAButton = 'ECA Detail Page CTA Button';\n            ActionModifier.AppDynamicCampaignCTAButton = 'Dynamic Campaign CTA Button';\n            ActionModifier.AppTileCTAButton = 'App Tile CTA Button';\n            ActionModifier.ServiceDetailCTAButton = 'Service Detail Page CTA Button';\n            ActionModifier.ServiceTileCTAButton = 'Service Tile CTA Button';\n            ActionModifier.PartnerCTAButton = 'Partner CTA Button';\n            ActionModifier.ReviewItemMoreButton = 'Review Item More Button';\n            ActionModifier.ReviewPageNavigationButton = 'Review Page Navigation Button';\n            ActionModifier.ReviewsGetMarkedAsHelpful = 'Reviews Get Marked As Helpful';\n            ActionModifier.ReviewSetMarkedAsHelpful = 'Review Set Marked As Helpful';\n            ActionModifier.ReviewItemMarkAsHelpfulUnauthorizedMessage = 'Review Item Mark As Helpful Unauthorized Message';\n            ActionModifier.ReviewItemMarkAsHelpfulButton = 'Review Item Mark As Helpful Button';\n            ActionModifier.ReviewItemMarkAsHelpfulSignIn = 'Review Item Mark As Helpful SignIn';\n            ActionModifier.ReviewItemMarkAsHelpfulDialog = 'Review Item Mark As Helpful Dialog';\n            ActionModifier.ReviewItemCommentsToggleButton = 'Review Item Comments Toggle Button';\n            ActionModifier.ReviewItemCommentsSeeMore = 'Review Item Comments See More';\n            ActionModifier.ReviewItemCommentsSignIn = 'Review Item Comments Sign In';\n            ActionModifier.ReviewItemCommentsSeeLess = 'Review Item Comments See Less';\n            ActionModifier.ReviewItemCommentDialog = 'Review Item Comment Dialog';\n            ActionModifier.ReviewItemCommentDialogUpdate = 'Review Item Comment Dialog Update';\n            ActionModifier.ReviewItemCommentDialogDelete = 'Review Item Comment Dialog Delete';\n            ActionModifier.ReviewItemCommentCreationSubmit = 'Review Item Comment Creation Submit';\n            ActionModifier.ReviewItemCommentEditButton = 'Review Item Comment Edit Button';\n            ActionModifier.ReviewItemCommentDeleteButton = 'Review Item Comment Delete Button';\n            ActionModifier.ReviewItemCommentedReviewIds = 'Review Item Commented Review Ids';\n            ActionModifier.ReportReview = 'Report review';\n            ActionModifier.LocalStorageItem = 'Local Storage Item';\n            ActionModifier.SessionStorageItem = 'Session Storage Item';\n            ActionModifier.CookieItem = 'Cookie Item';\n            ActionModifier.BrowserStorageCookieDataBuffer = 'Browser Storage Cookie Data Buffer';\n            ActionModifier.BrowserStorageLocalStorageDataBuffer = 'Browser Storage Local Storage Data Buffer';\n            ActionModifier.AssignLicensesButton = 'Assign Licenses Button';\n            ActionModifier.UserFavouriteNavigationBarButton = 'User Favourite Navigation Bar Button';\n            ActionModifier.UserFavouriteTileDetailButton = 'User Favourite Tile Detail Button';\n            ActionModifier.UserFavouriteTileButton = 'User Favourite Tile Button';\n            ActionModifier.UserFavouriteDetailPage = 'User Favourite Detail Page';\n            ActionModifier.OpenRatingModalFromReviewTab = 'Open Rating Modal From Review Tab';\n            ActionModifier.HeaderTextItem = 'Header Text Item';\n            ActionModifier.Purchase = 'Purchase';\n            ActionModifier.CompletePurchase = 'CompletePurchase';\n            ActionModifier.ToggleAdminExperience = 'ToggleAdminExperience';\n            ActionModifier.PidlNoSelectionOptionsFound = 'No Selection PI Option Found';\n            ActionModifier.PidlAddNewPaymentMethod = 'Add New Payment Method Button';\n            ActionModifier.PidlAddPILoad = 'PIDL Load - Add Payment Method';\n            ActionModifier.PidlHandlePaymentChallenge = 'PIDL Handle Payment Challenge';\n            ActionModifier.ConfigureNowButton = 'Configure Now Button';\n            ActionModifier.ConfigureNowLink = 'Configure Now Link';\n            ActionModifier.PlanSelected = 'PlanSelected';\n            ActionModifier.TermSelected = 'TermSelected';\n            ActionModifier.PlaceOrderClicked = 'PlaceOrderClicked';\n            ActionModifier.HandleTransactCheckout = 'Handle Transact Checkout Modal Redirect';\n            ActionModifier.ScrollToTopButton = 'ScrollToTopButton';\n            ActionModifier.FilterPDPReviews = 'Filter PDP Reviews';\n            ActionModifier.SortPDPReviews = 'Sort PDP Reviews';\n            ActionModifier.SortSearchResults = 'Sort Search Results';\n            ActionModifier.SortSearchOpened = 'Sort Search Opened';\n            ActionModifier.SearchWithinCurrentFilter = 'Search within current filter';\n            ActionModifier.HomeApps = 'Home Apps Info';\n            ActionModifier.PrivateOffers = 'private offers nav bar';\n            ActionModifier.WriteReview = 'Write a review';\n            ActionModifier.UpdateReview = 'Update a review';\n            ActionModifier.DeleteReview = 'Delete a review';\n            ActionModifier.OfficeOffersPurchase = 'Office Offers Purchase';\n            ActionModifier.SitemapLinkClick = 'Sitemap Link Click';\n            ActionModifier.ExternalRatingSummaryLink = 'External Rating Summary Link';\n            ActionModifier.ExternalReviewLink = 'External Review Link';\n            ActionModifier.ExternalLink = 'External Link';\n            ActionModifier.InternalLink = 'Internal Link';\n            ActionModifier.PurchaseErrorLink = 'Purchase Error Link';\n            ActionModifier.CreateCustomer = 'Create customer';\n            ActionModifier.NextCheckoutStep = 'Next Checkout Page';\n            ActionModifier.ViewAllButton = 'View all button';\n            ActionModifier.ClearFilters = 'Clear filters';\n            ActionModifier.ClearSearchBoxText = 'Clear search box text';\n            ActionModifier.ClearSearch = 'Clear search';\n            ActionModifier.NoSearchResultsPage = 'No search results page';\n            ActionModifier.NpsPreviewDismissed = 'Preview dismissed';\n            ActionModifier.NpsSurveyDismissed = 'Survey dismissed';\n            ActionModifier.NpsSurveySubmitted = 'Survey submitted';\n            ActionModifier.NpsPresented = 'Presented';\n            ActionModifier.SmileFrownFeedbackOpened = 'Opened';\n            ActionModifier.SmileFrownFeedbackDismissed = 'Dismissed';\n            ActionModifier.SearchApiNoResults = 'search api no results';\n            ActionModifier.MarkoApiNoResults = 'marko api no results';\n            ActionModifier.LongTermSaasTablePresented = 'Long Term SaaS Table Presented';\n            ActionModifier.Complete = 'complete';\n            ActionModifier.BillingCountrySelected = 'BillingCountrySelected';\n            ActionModifier.BannerHyperLink = 'BannerHL';\n            ActionModifier.BannerClick = 'BannerCL';\n            ActionModifier.SSO_DETACHED_IFRAME_FROM_DOM = 'SSO iframe detached from DOM';\n            ActionModifier.SSO_LOGIN_SUCCEEDED = 'SSO Login succeeded';\n            ActionModifier.WINDOW_LISTENERS_INITIATED = 'Window listeners initiated';\n            ActionModifier.SSR_LOGIN_STARTED = 'SSR login in process';\n            ActionModifier.SSO_LOGIN_STARTED = 'SSO login started';\n            ActionModifier.SSO_IFRAME_LOADED = 'SSO iframe loaded';\n            ActionModifier.SSO_IFRAME_ATTACHED_TO_DOM = 'SSO iframe attached to DOM';\n            ActionModifier.SSO_GET_LOGIN_URL = 'got user login url';\n            ActionModifier.SSO_EXTRACT_CODE_NO_IFRAME = 'missing iframe element to extract code';\n            ActionModifier.SSO_EMPTY_IFRAME_CODE = 'missing code in iframe';\n            ActionModifier.SSO_LOGIN_ERROR = 'SSO login error';\n            ActionModifier.SSO_LOGIN_TIMEOUT = 'SSO login timeout';\n            ActionModifier.SSO_IFRAME_CODE_FOUND = 'found iframe code to extract refresh token';\n            ActionModifier.SSO_FIRST_ATTEMPT = 'silent login attempt';\n            ActionModifier.SSO_FALLBACK_ATTEMPT = 'explicit login attempt';\n            ActionModifier.AccessTokenSilentFetchingError = 'AccessTokenSilentFetchingError';\n            ActionModifier.AccessTokenSilentFetchingSuccess = 'AccessTokenSilentFetchingSuccess';\n            ActionModifier.CreateAuthenticatedUserFailure = 'CreateAuthenticatedUserFailure';\n            ActionModifier.CreateAuthenticatedUserSuccess = 'CreateAuthenticatedUserSuccess';\n            ActionModifier.MsalInitializationSuccess = 'MsalInitializationSuccess';\n            ActionModifier.MsalInitializationError = 'MsalInitializationError';\n            ActionModifier.PreAuthRedirectFailed = 'PreAuthRedirectFailed';\n            ActionModifier.AuthRedirectFailed = 'AuthRedirectFailed';\n            ActionModifier.AuthRedirectSucceed = 'AuthRedirectSucceed';\n            ActionModifier.AuthRedirectNotFromAAD = 'AuthRedirectNotFromAAD';\n            ActionModifier.LogoutFailed = 'LogoutFailed';\n            ActionModifier.AzureRedirect = 'AzureRedirect';\n            ActionModifier.GetLinkedInProductGroup = 'get LinkedIn product group';\n            ActionModifier.MenuClick = 'Menu Click';\n            ActionModifier.Linkedin = 'Linkedin';\n            ActionModifier.LinkedinFeedbackButton = 'Linkedin feedback button';\n            ActionModifier.LinkedinLink = 'Linkedin link';\n            ActionModifier.LinkedinEventLink = 'Linkedin event link';\n            ActionModifier.LinkedinFeedbackSubmit = 'Linkedin feedback submit';\n            ActionModifier.LinkedinFeedbackDismiss = 'Linkedin feedback dismiss';\n            ActionModifier.OfflineRemote = 'Offline Remote';\n            ActionModifier.OnlineRemote = 'Online Remote';\n            ActionModifier.RemoveEventListener = 'Remove event listener';\n            ActionModifier.HandleNewConsent = 'Handle new consent';\n            ActionModifier.GetConsent = 'Get consent';\n            ActionModifier.WcpConsentCallBack = 'WCP consent callback';\n            ActionModifier.GetItem = 'GetItem';\n            ActionModifier.SaveItem = 'SaveItem';\n            ActionModifier.MigrationStateOldOnly = 'OldOnly';\n            ActionModifier.MigrationStateNewOnly = 'NewOnly';\n            ActionModifier.MigrationStateSideBySide = 'SideBySide';\n        })(Telemetry.ActionModifier || (Telemetry.ActionModifier = {}));\n        (function(LeadsDropReason) {\n            LeadsDropReason.PreviewOffer = 'Preview offer.';\n            LeadsDropReason.AppNotAvailableOrPrivate = 'App is not available or private.';\n            LeadsDropReason.PowerBiTransact = 'Power BI Visuals leads allowed only for transact apps, with Buy Now CTA.';\n            LeadsDropReason.ConsultingServices = 'Consulting services app is not part of the leads migration for now.';\n            LeadsDropReason.EmbedWithoutLead = 'Embedded with offer type that defined not to generate lead.';\n            LeadsDropReason.UserNotSignedIn = 'User not signed in.';\n            LeadsDropReason.ItemNotAvailable = 'Item not available';\n        })(Telemetry.LeadsDropReason || (Telemetry.LeadsDropReason = {}));\n        (function(OutRequest) {\n            OutRequest.Start = 'HttpOutboundRequest';\n            OutRequest.EndWithSuccess = 'HttpOutboundRequestEndWithSuccess';\n            OutRequest.EndWithClientError = 'HttpOutboundRequestEndWithClientError';\n            OutRequest.EndWithServerError = 'HttpOutboundRequestEndWithServerError';\n        })(Telemetry.OutRequest || (Telemetry.OutRequest = {}));\n        (function(ProbeName) {\n            ProbeName.LogInfo = 'logTelemetryInfo';\n            ProbeName.FlushInfo = 'flushTelemetryInfo';\n            ProbeName.LogAndFlushInfo = 'logAndFlushTelemetryInfo';\n        })(Telemetry.ProbeName || (Telemetry.ProbeName = {}));\n        (function(AreaName) {\n            AreaName.FilterPane = 'Filter Pane';\n            AreaName.AppDetails = 'App Details';\n            AreaName.SuggestedSearch = 'Suggested Search';\n            AreaName.SearchEntityDropDown = 'Search Entity Drop Down';\n            AreaName.AppTile = 'App Tile';\n            AreaName.ParentSaaSTile = 'Parent SaaS Tile';\n            AreaName.BundleAddIn = 'Bundle Add-In';\n            AreaName.ConsentModal = 'Consent Modal Dialog';\n        })(Telemetry.AreaName || (Telemetry.AreaName = {}));\n        (function(FeedbackName) {\n            FeedbackName.Nps = 'NPS';\n        })(Telemetry.FeedbackName || (Telemetry.FeedbackName = {}));\n        (function(TemplateName) {\n            TemplateName.SaaSBundle = 'SaaS Bundle';\n        })(Telemetry.TemplateName || (Telemetry.TemplateName = {}));\n        (function(Id) {\n            Id.SuggestedClick = 'Suggested Click';\n            Id.SearchDropDownClick = 'Search Drop Down Click';\n            Id.Nps = 'NPS';\n        })(Telemetry.Id || (Telemetry.Id = {}));\n        (function(ContentType) {\n            ContentType.LinkExpanded = 'Gallery filter link expanded';\n            ContentType.LinkClicked = 'Gallery filter link clicked';\n            ContentType.SaaSBundlePageView = 'SaaS Bundle Page View';\n            ContentType.AddInBundlePageView = 'AddIn Bundle Page View';\n            ContentType.CheckoutBundlePageView = 'SaaSBundle Checkout PageView';\n            ContentType.OrderConfirmationBundlePageView = 'SaaSBundle OrderConfirmation PageView';\n            ContentType.PlaceOrderSaaSBundle = 'SaaSBundle Place Order';\n            ContentType.SkipConsentModal = 'SKIP_CONSENT';\n        })(Telemetry.ContentType || (Telemetry.ContentType = {}));\n        (function(PurchaseBlendsTelemetry) {\n            PurchaseBlendsTelemetry.Bootstrapped = 'Bootstrapped';\n            (function(Errors) {\n                Errors.PBErrorPrefix = '[PB] Failure with status: ';\n                Errors.ErrorIdPrefix = 'Error ids: ';\n            })(PurchaseBlendsTelemetry.Errors || (PurchaseBlendsTelemetry.Errors = {}));\n            PurchaseBlendsTelemetry.DismissedPrefix = 'Dismissed: ';\n            PurchaseBlendsTelemetry.TotalTimeForPlaceOrderPrefix = 'Total time for purchase since place order: ';\n            PurchaseBlendsTelemetry.PlaceOrderSuccess = '[PB] Place order success: ';\n            PurchaseBlendsTelemetry.FinishedLoading = '[PB] FinishedLoading';\n            PurchaseBlendsTelemetry.PageName = 'PurchaseBlends';\n            PurchaseBlendsTelemetry.EditProfile = 'EditProfile';\n            PurchaseBlendsTelemetry.EditProfileName = '[PB] Edit profile';\n            PurchaseBlendsTelemetry.AddProfile = 'AddProfile';\n            PurchaseBlendsTelemetry.AddProfileName = '[PB] Add profile';\n            PurchaseBlendsTelemetry.PickBillingFrequency = 'PickBillingFrequency';\n            PurchaseBlendsTelemetry.BillingFrequencyComponent = 'BillingFrequencyComponent';\n            PurchaseBlendsTelemetry.PickBillingTerm = 'PickBillingTerm';\n            PurchaseBlendsTelemetry.BillingTermComponent = 'BillingTermComponent';\n            PurchaseBlendsTelemetry.AddPayment = 'AddPayment';\n            PurchaseBlendsTelemetry.AddPaymentName = '[PB] Add payment';\n            PurchaseBlendsTelemetry.AddBillingProfile = 'AddBillingProfile';\n            PurchaseBlendsTelemetry.AddBillingProfileName = '[PB] Add billing profile';\n            PurchaseBlendsTelemetry.EditBillingProfile = 'EditBillingProfile';\n            PurchaseBlendsTelemetry.EditBillingProfileName = '[PB] Edit billing profile';\n            PurchaseBlendsTelemetry.PurchaseBlendsDisclaimerComponent = 'PurchaseBlendsDisclaimerComponent';\n            PurchaseBlendsTelemetry.PurchaseBlendsDisclaimerComponentName = 'Show user consent for disclaimer';\n        })(Telemetry.PurchaseBlendsTelemetry || (Telemetry.PurchaseBlendsTelemetry = {}));\n    })(Constants.Telemetry || (Constants.Telemetry = {}));\n    (function(PurchaseBlends) {\n        PurchaseBlends.NewCheckout = 'NewCheckout';\n        PurchaseBlends.OldCheckout = 'OldCheckout';\n        PurchaseBlends.AlreadyPurchasedKey = 'AlreadyPurchasedWithNewExperience';\n        PurchaseBlends.AdminFlow = 'AdminFlow';\n        PurchaseBlends.IWFlow = 'IWFlow';\n        PurchaseBlends.Enrolled = 'true';\n        PurchaseBlends.Excluded = 'false';\n        PurchaseBlends.AlreadyPurchased = 'v';\n    })(Constants.PurchaseBlends || (Constants.PurchaseBlends = {}));\n    (function(RoleDefinitions) {\n        RoleDefinitions.globalAdmin = '62e90394-69f5-4237-9190-012177145e10';\n        RoleDefinitions.billingAdmin = 'b0f54661-2d74-4c50-afa3-1ec803f12efe';\n        RoleDefinitions.rolesToCheck = [\n            RoleDefinitions.globalAdmin,\n            RoleDefinitions.billingAdmin\n        ];\n    })(Constants.RoleDefinitions || (Constants.RoleDefinitions = {}));\n    (function(Flighting) {\n        Flighting.OldCheckout = 'OldCheckout';\n        Flighting.NewCheckout = 'NewCheckout';\n    })(Constants.Flighting || (Constants.Flighting = {}));\n    Constants.scrubbedHeaderValue = 'SCRUBBED';\n    Constants.apiServicePrefix = 'api/v2.0';\n    Constants.marketplaceApiServicePrefix = 'api';\n    Constants.armSubscriptionApiVersion = '2020-01-01';\n    Constants.armBillingAccountsApiVersion = '2019-10-01-preview';\n    Constants.armIsMaccApiVersion = '2018-08-01-beta';\n    Constants.mprpApiVersion = '2018-08-01-beta';\n    Constants.appsourceApiVersion = '2017-04-24';\n    Constants.dbSchemaVersion = '2017-04-24';\n    Constants.userCollectionSchemaVersion = '2016-10-14';\n    Constants.acquisitionCollectionSchemaVersion = '2017-04-27';\n    Constants.TestDrivePath = 'JwtTokenDemoSession';\n    Constants.MetadataDocType = 'Metadata';\n    Constants.partitionedCollectionVersion = '2017-04-24';\n    Constants.apiVersion = 'apiVersion';\n    Constants.reviewsAPI = 'reviewsAPI';\n    Constants.reviewsAPIVersion = 'reviewsAPIVersion';\n    Constants.bundleVersion = 'bundleVersion';\n    Constants.regionName = 'regionName';\n    Constants.marketplaceApiVersion = 'marketplaceApiVersion';\n    Constants.azureMarketplace = 'AzureMarketplace';\n    Constants.appSource = 'AppSource';\n    Constants.appSourceEmbed = 'AppSource_Embed';\n    (function(CompetencyBadge) {\n        CompetencyBadge[CompetencyBadge[\"Gold\"] = 0] = \"Gold\";\n        CompetencyBadge[CompetencyBadge[\"Silver\"] = 1] = \"Silver\";\n        CompetencyBadge[CompetencyBadge[\"BadgeNotFound\"] = 2] = \"BadgeNotFound\";\n    })(Constants.CompetencyBadge || (Constants.CompetencyBadge = {}));\n    Constants.FeaturedAppsOrder = [\n        '99',\n        '64',\n        '128',\n        '1024',\n        '256',\n        '1',\n        '8',\n        '512',\n        '4',\n        '32',\n        '16'\n    ];\n    Constants.validEmbedExperienceProducts = [\n        'power-bi',\n        'power-bi-visuals',\n        'dynamics-365-business-central',\n        'dynamics-365-for-sales',\n        'dynamics-365'\n    ];\n    Constants.validEmbedExperienceEmbedHost = [\n        'admin-portal',\n        'dynamics-365'\n    ];\n    (function(TestDriveType) {\n        TestDriveType.Showcase = 'Showcase';\n        TestDriveType.AzureTestDriveService = 'AzureTestDriveService';\n        TestDriveType.SolutionsTestDrive = 'SolutionsTestDrive';\n    })(Constants.TestDriveType || (Constants.TestDriveType = {}));\n    (function(TestDriveOutputType) {\n        TestDriveOutputType.HandOffUrl = 'handoffurl';\n        TestDriveOutputType.MetadataMarkdown = 'metadatamarkdown';\n    })(Constants.TestDriveOutputType || (Constants.TestDriveOutputType = {}));\n    (function(EmailCategories) {\n        EmailCategories.ContactSI = 'Contact SI';\n        EmailCategories.ContactSICrossListing = 'Contact SI (Cross listing)';\n        EmailCategories.CorrelationIdArgKey = 'correlationId';\n        EmailCategories.UserIdArgKey = 'userId';\n    })(Constants.EmailCategories || (Constants.EmailCategories = {}));\n    (function(ReservedCorrelationIds) {\n        ReservedCorrelationIds.EmptyId = '00000000-0000-0000-0000-000000000000';\n        ReservedCorrelationIds.RepoCacheRefresh = '00000000-0000-0000-0000-000000000001';\n        ReservedCorrelationIds.SignInEmptyId = '00000000-0000-0000-0000-000000000002';\n        ReservedCorrelationIds.ErrorId = '00000000-0000-0000-0000-111111111111';\n    })(Constants.ReservedCorrelationIds || (Constants.ReservedCorrelationIds = {}));\n    (function(ReservedOperationNames) {\n        ReservedOperationNames.RepoCacheRefresh = 'RepoCacheRefresh';\n    })(Constants.ReservedOperationNames || (Constants.ReservedOperationNames = {}));\n    (function(CloudsIndustry) {\n        CloudsIndustry.bitmaskPrefix = 'clouds_';\n    })(Constants.CloudsIndustry || (Constants.CloudsIndustry = {}));\n    (function(Endpoints) {\n        (function(View) {\n            View.AppPricing = '/view/appPricing';\n            View.TileData = '/view/tiledata';\n            View.FilteredApps = '/view/filteredapps';\n            View.AppFuturePricing = '/view/appFuturePricing';\n            View.CloudsIndustryDataMap = '/view/cloudsindustrydatamap';\n            View.CloudsIndustryFeatured = '/view/featuredcloudsindustry';\n            View.CloudsIndustryFiltered = '/view/filteredcloudsindustry';\n        })(Endpoints.View || (Endpoints.View = {}));\n    })(Constants.Endpoints || (Constants.Endpoints = {}));\n    (function(TestDriveResponse) {\n        TestDriveResponse.DemoSessionId = 'demoSessionId';\n        TestDriveResponse.Status = 'status';\n        TestDriveResponse.OutputItemList = 'outputItemList';\n        TestDriveResponse.HandOffUrl = 'HandOffUrl';\n        TestDriveResponse.StringKey = 'String';\n        TestDriveResponse.AppUri = 'app Uri';\n        TestDriveResponse.TestDrive = 'TestDrive';\n        TestDriveResponse.SessionSource = 'sessionSource';\n        TestDriveResponse.StoppedTime = 'stoppedTime';\n        TestDriveResponse.MarketPlaceMetadataMarkdownKey = '_marketPlaceMetadataMarkdown';\n    })(Constants.TestDriveResponse || (Constants.TestDriveResponse = {}));\n    (function(VersionNeutralCollection) {\n        VersionNeutralCollection.Reviews = 'reviews';\n        VersionNeutralCollection.Users = 'users';\n    })(Constants.VersionNeutralCollection || (Constants.VersionNeutralCollection = {}));\n    (function(DocTypes) {\n        DocTypes.App = 'App';\n        DocTypes.Pricing = 'Pricing';\n        DocTypes.SolutionManifest = 'SolutionManifest';\n    })(Constants.DocTypes || (Constants.DocTypes = {}));\n    (function(TestDriveState) {\n        TestDriveState[TestDriveState[\"Hot\"] = 0] = \"Hot\";\n        TestDriveState[TestDriveState[\"Cold\"] = 1] = \"Cold\";\n        TestDriveState[TestDriveState[\"Error\"] = 2] = \"Error\";\n        TestDriveState[TestDriveState[\"Unknown\"] = 3] = \"Unknown\";\n    })(Constants.TestDriveState || (Constants.TestDriveState = {}));\n    (function(StorefrontName) {\n        StorefrontName.AppSource = 'AppSource';\n        StorefrontName.Amp = 'Amp';\n        StorefrontName.Ibiza = 'Ibiza';\n        StorefrontName.G2 = 'G2';\n        StorefrontName.Embed = 'Embed';\n    })(Constants.StorefrontName || (Constants.StorefrontName = {}));\n    Constants.InternalStoreFronts = [\n        Constants.StorefrontName.AppSource,\n        Constants.StorefrontName.Amp,\n        Constants.StorefrontName.Ibiza\n    ];\n    (function(AuthType) {\n        AuthType[AuthType[\"MSA\"] = 1] = \"MSA\";\n        AuthType[AuthType[\"AAD\"] = 2] = \"AAD\";\n    })(Constants.AuthType || (Constants.AuthType = {}));\n    (function(ResourceTypes) {\n        ResourceTypes[ResourceTypes[\"AppRelatedItems\"] = 0] = \"AppRelatedItems\";\n        ResourceTypes[ResourceTypes[\"ServiceRelatedItems\"] = 1] = \"ServiceRelatedItems\";\n        ResourceTypes[ResourceTypes[\"DataMapCloudsIndustry\"] = 2] = \"DataMapCloudsIndustry\";\n        ResourceTypes[ResourceTypes[\"DataMapApps\"] = 3] = \"DataMapApps\";\n        ResourceTypes[ResourceTypes[\"DataMapServices\"] = 4] = \"DataMapServices\";\n        ResourceTypes[ResourceTypes[\"FilteredApps\"] = 5] = \"FilteredApps\";\n        ResourceTypes[ResourceTypes[\"FilteredServices\"] = 6] = \"FilteredServices\";\n        ResourceTypes[ResourceTypes[\"FilteredCloudsIndustry\"] = 7] = \"FilteredCloudsIndustry\";\n        ResourceTypes[ResourceTypes[\"CuratedServices\"] = 8] = \"CuratedServices\";\n        ResourceTypes[ResourceTypes[\"CuratedApps\"] = 9] = \"CuratedApps\";\n        ResourceTypes[ResourceTypes[\"CuratedCloudsIndustry\"] = 10] = \"CuratedCloudsIndustry\";\n        ResourceTypes[ResourceTypes[\"FlightCodedApp\"] = 11] = \"FlightCodedApp\";\n        ResourceTypes[ResourceTypes[\"PreviewServices\"] = 12] = \"PreviewServices\";\n        ResourceTypes[ResourceTypes[\"PreviewPricing\"] = 13] = \"PreviewPricing\";\n        ResourceTypes[ResourceTypes[\"PreviewApps\"] = 14] = \"PreviewApps\";\n        ResourceTypes[ResourceTypes[\"PreviewCloudsIndustry\"] = 15] = \"PreviewCloudsIndustry\";\n        ResourceTypes[ResourceTypes[\"HashMapApps\"] = 16] = \"HashMapApps\";\n        ResourceTypes[ResourceTypes[\"HashMapServices\"] = 17] = \"HashMapServices\";\n        ResourceTypes[ResourceTypes[\"HashMapPreviewApps\"] = 18] = \"HashMapPreviewApps\";\n        ResourceTypes[ResourceTypes[\"HashMapPreviewServices\"] = 19] = \"HashMapPreviewServices\";\n        ResourceTypes[ResourceTypes[\"App\"] = 20] = \"App\";\n        ResourceTypes[ResourceTypes[\"Service\"] = 21] = \"Service\";\n        ResourceTypes[ResourceTypes[\"AllPublicCloudsIndustry\"] = 22] = \"AllPublicCloudsIndustry\";\n        ResourceTypes[ResourceTypes[\"AllCloudsIndustry\"] = 23] = \"AllCloudsIndustry\";\n        ResourceTypes[ResourceTypes[\"AllApps\"] = 24] = \"AllApps\";\n        ResourceTypes[ResourceTypes[\"RawAllApps\"] = 25] = \"RawAllApps\";\n        ResourceTypes[ResourceTypes[\"RawAllAppsCatalog\"] = 26] = \"RawAllAppsCatalog\";\n        ResourceTypes[ResourceTypes[\"AllAppsExtra\"] = 27] = \"AllAppsExtra\";\n        ResourceTypes[ResourceTypes[\"FeaturedApps\"] = 28] = \"FeaturedApps\";\n        ResourceTypes[ResourceTypes[\"FeaturedCloudsIndustry\"] = 29] = \"FeaturedCloudsIndustry\";\n        ResourceTypes[ResourceTypes[\"FlightCodedAndLiveApps\"] = 30] = \"FlightCodedAndLiveApps\";\n        ResourceTypes[ResourceTypes[\"User\"] = 31] = \"User\";\n        ResourceTypes[ResourceTypes[\"Pricing\"] = 32] = \"Pricing\";\n        ResourceTypes[ResourceTypes[\"AppPricing\"] = 33] = \"AppPricing\";\n        ResourceTypes[ResourceTypes[\"SolutionMetadata\"] = 34] = \"SolutionMetadata\";\n        ResourceTypes[ResourceTypes[\"SolutionRuntime\"] = 35] = \"SolutionRuntime\";\n        ResourceTypes[ResourceTypes[\"Acquisition\"] = 36] = \"Acquisition\";\n        ResourceTypes[ResourceTypes[\"AllServices\"] = 37] = \"AllServices\";\n        ResourceTypes[ResourceTypes[\"CatalogStartingPrices\"] = 38] = \"CatalogStartingPrices\";\n        ResourceTypes[ResourceTypes[\"RawAllServices\"] = 39] = \"RawAllServices\";\n        ResourceTypes[ResourceTypes[\"AllServicesExtra\"] = 40] = \"AllServicesExtra\";\n        ResourceTypes[ResourceTypes[\"FeaturedServives\"] = 41] = \"FeaturedServives\";\n        ResourceTypes[ResourceTypes[\"UserProfile\"] = 42] = \"UserProfile\";\n        ResourceTypes[ResourceTypes[\"Event\"] = 43] = \"Event\";\n        ResourceTypes[ResourceTypes[\"Review\"] = 44] = \"Review\";\n        ResourceTypes[ResourceTypes[\"AllConsultingServices\"] = 45] = \"AllConsultingServices\";\n        ResourceTypes[ResourceTypes[\"FeaturedServicesSections\"] = 46] = \"FeaturedServicesSections\";\n        ResourceTypes[ResourceTypes[\"ServiceAcquisitions\"] = 47] = \"ServiceAcquisitions\";\n        ResourceTypes[ResourceTypes[\"Favourites\"] = 48] = \"Favourites\";\n        ResourceTypes[ResourceTypes[\"AllECAOffers\"] = 49] = \"AllECAOffers\";\n        ResourceTypes[ResourceTypes[\"AllAppReviews\"] = 50] = \"AllAppReviews\";\n        ResourceTypes[ResourceTypes[\"ECAAcquisitions\"] = 51] = \"ECAAcquisitions\";\n        ResourceTypes[ResourceTypes[\"ReviewsByAppId\"] = 52] = \"ReviewsByAppId\";\n        ResourceTypes[ResourceTypes[\"ReviewByIdByUser\"] = 53] = \"ReviewByIdByUser\";\n        ResourceTypes[ResourceTypes[\"Customer\"] = 54] = \"Customer\";\n        ResourceTypes[ResourceTypes[\"CustomerAddress\"] = 55] = \"CustomerAddress\";\n        ResourceTypes[ResourceTypes[\"CalculatePrice\"] = 56] = \"CalculatePrice\";\n        ResourceTypes[ResourceTypes[\"Purchase\"] = 57] = \"Purchase\";\n        ResourceTypes[ResourceTypes[\"PublisherOffer\"] = 58] = \"PublisherOffer\";\n        ResourceTypes[ResourceTypes[\"AllServicesCountries\"] = 59] = \"AllServicesCountries\";\n        ResourceTypes[ResourceTypes[\"PrivateApps\"] = 60] = \"PrivateApps\";\n        ResourceTypes[ResourceTypes[\"BillingAccounts\"] = 61] = \"BillingAccounts\";\n    })(Constants.ResourceTypes || (Constants.ResourceTypes = {}));\n    Constants.Office365Mapping = {\n        // Legacy Online\n        SharePoint_Online: [\n            'SharePoint Online'\n        ],\n        Access_Online: [\n            'Access Online'\n        ],\n        OneNote_Online: [\n            'OneNote Online'\n        ],\n        Project_Online: [\n            'Project Online'\n        ],\n        // On The Web\n        Outlook_Online: [\n            'ProductOnTheWeb',\n            'Outlook'\n        ],\n        Excel_Online: [\n            'ProductOnTheWeb',\n            'Excel'\n        ],\n        PowerPoint_Online: [\n            'ProductOnTheWeb',\n            'PowerPoint'\n        ],\n        Word_Online: [\n            'ProductOnTheWeb',\n            'Word'\n        ],\n        Office_Online: [\n            'ProductOnTheWeb',\n            'Office app'\n        ],\n        // iPad\n        Excel_iPad: [\n            'ProductOnIpad',\n            'Excel'\n        ],\n        Word_iPad: [\n            'ProductOnIpad',\n            'Word'\n        ],\n        PowerPoint_iPad: [\n            'ProductOnIpad',\n            'PowerPoint'\n        ],\n        // iOS\n        Office_iOS: [\n            'ProductOnIos',\n            'Office app'\n        ],\n        Outlook_iOS: [\n            'ProductOnIos',\n            'Outlook'\n        ],\n        // Android\n        Office_Android: [\n            'ProductOnAndroid',\n            'Office app'\n        ],\n        Outlook_Android: [\n            'ProductOnAndroid',\n            'Outlook'\n        ],\n        // Other\n        App_Details_Requirements_Products_Office365: [\n            'Office 365'\n        ],\n        App_Details_Requirements_Products_ExcelIOS: [\n            'Excel for iPad'\n        ],\n        App_Details_Requirements_Products_WordIOS: [\n            'Word for iPad'\n        ],\n        App_Details_Requirements_Products_OutlookOnWeb: [\n            'ProductOnTheWeb',\n            'Outlook'\n        ],\n        App_Details_Requirements_Products_PowerPointIOS: [\n            'PowerPoint for iPad'\n        ],\n        App_Details_Requirements_Products_OneNoteWindows10: [\n            'OneNote for Windows 10'\n        ],\n        App_Details_Requirements_Products_PowerBI: [\n            'Power BI'\n        ],\n        App_Details_Requirements_Products_Teams: [\n            'Teams'\n        ],\n        OfficeProductForAndroid: [\n            'Outlook for Android'\n        ],\n        OfficeProductForIOS: [\n            'Outlook for iOS'\n        ],\n        Office: [\n            'Office app on Windows'\n        ],\n        // MAC products\n        Word_2016_Mac: [\n            'ProductVersionOrLaterOnPlatform',\n            [\n                'Word 2016',\n                'Mac'\n            ]\n        ],\n        Word_2019_Mac: [\n            'ProductVersionOrLaterOnPlatform',\n            [\n                'Word 2019',\n                'Mac'\n            ]\n        ],\n        Excel_2016_Mac: [\n            'ProductVersionOrLaterOnPlatform',\n            [\n                'Excel 2016',\n                'Mac'\n            ]\n        ],\n        Excel_2019_Mac: [\n            'ProductVersionOrLaterOnPlatform',\n            [\n                'Excel 2019',\n                'Mac'\n            ]\n        ],\n        PowerPoint_2016_Mac: [\n            'ProductVersionOrLaterOnPlatform',\n            [\n                'PowerPoint 2016',\n                'Mac'\n            ]\n        ],\n        PowerPoint_2019_Mac: [\n            'ProductVersionOrLaterOnPlatform',\n            [\n                'PowerPoint 2019',\n                'Mac'\n            ]\n        ],\n        Outlook_2016_Mac: [\n            'ProductVersionOrLaterOnPlatform',\n            [\n                'Outlook 2016',\n                'Mac'\n            ]\n        ],\n        Outlook_2019_Mac: [\n            'ProductVersionOrLaterOnPlatform',\n            [\n                'Outlook 2019',\n                'Mac'\n            ]\n        ],\n        // WIN products\n        Word_2013: [\n            'ProductVersionOrLaterOnPlatform',\n            [\n                'Word 2013',\n                'Windows'\n            ]\n        ],\n        Word_2013_SP1: [\n            'ProductVersionOrLaterOnPlatform',\n            [\n                'Word 2013 SP1',\n                'Windows'\n            ]\n        ],\n        Word_2016: [\n            'ProductVersionOrLaterOnPlatform',\n            [\n                'Word 2016',\n                'Windows'\n            ]\n        ],\n        Word_2019: [\n            'ProductVersionOrLaterOnPlatform',\n            [\n                'Word 2019',\n                'Windows'\n            ]\n        ],\n        Excel_2013: [\n            'ProductVersionOrLaterOnPlatform',\n            [\n                'Excel 2013',\n                'Windows'\n            ]\n        ],\n        Excel_2013_SP1: [\n            'ProductVersionOrLaterOnPlatform',\n            [\n                'Excel 2013 SP1',\n                'Windows'\n            ]\n        ],\n        Excel_2016: [\n            'ProductVersionOrLaterOnPlatform',\n            [\n                'Excel 2016',\n                'Windows'\n            ]\n        ],\n        Excel_2019: [\n            'ProductVersionOrLaterOnPlatform',\n            [\n                'Excel 2019',\n                'Windows'\n            ]\n        ],\n        PowerPoint_2013: [\n            'ProductVersionOrLaterOnPlatform',\n            [\n                'PowerPoint 2013',\n                'Windows'\n            ]\n        ],\n        PowerPoint_2013_SP1: [\n            'ProductVersionOrLaterOnPlatform',\n            [\n                'PowerPoint 2013 SP1',\n                'Windows'\n            ]\n        ],\n        PowerPoint_2016: [\n            'ProductVersionOrLaterOnPlatform',\n            [\n                'PowerPoint 2016',\n                'Windows'\n            ]\n        ],\n        PowerPoint_2019: [\n            'ProductVersionOrLaterOnPlatform',\n            [\n                'PowerPoint 2019',\n                'Windows'\n            ]\n        ],\n        Outlook_2013: [\n            'ProductVersionOrLaterOnPlatform',\n            [\n                'Outlook 2013',\n                'Windows'\n            ]\n        ],\n        Outlook_2013_SP1: [\n            'ProductVersionOrLaterOnPlatform',\n            [\n                'Outlook 2013 SP1',\n                'Windows'\n            ]\n        ],\n        Outlook_2016: [\n            'ProductVersionOrLaterOnPlatform',\n            [\n                'Outlook 2016',\n                'Windows'\n            ]\n        ],\n        Outlook_2019: [\n            'ProductVersionOrLaterOnPlatform',\n            [\n                'Outlook 2019',\n                'Windows'\n            ]\n        ],\n        // M365 products\n        Excel_M365_Win: [\n            'ProductOnM365Plaform',\n            [\n                'Excel',\n                'Windows'\n            ]\n        ],\n        Excel_M365_Mac: [\n            'ProductOnM365Plaform',\n            [\n                'Excel',\n                'Mac'\n            ]\n        ],\n        Word_M365_Win: [\n            'ProductOnM365Plaform',\n            [\n                'Word',\n                'Windows'\n            ]\n        ],\n        Word_M365_Mac: [\n            'ProductOnM365Plaform',\n            [\n                'Word',\n                'Mac'\n            ]\n        ],\n        Outlook_M365_Win: [\n            'ProductOnM365Plaform',\n            [\n                'Outlook',\n                'Windows'\n            ]\n        ],\n        Outlook_M365_Mac: [\n            'ProductOnM365Plaform',\n            [\n                'Outlook',\n                'Mac'\n            ]\n        ],\n        PowerPoint_M365_Win: [\n            'ProductOnM365Plaform',\n            [\n                'PowerPoint',\n                'Windows'\n            ]\n        ],\n        PowerPoint_M365_Mac: [\n            'ProductOnM365Plaform',\n            [\n                'PowerPoint',\n                'Mac'\n            ]\n        ],\n        // Legacy products\n        OfficeProductOrLater_SharePoint_2013: [\n            'ProductVersionOrLater',\n            'SharePoint 2013'\n        ],\n        OfficeProductOrLater_SharePoint_2016: [\n            'ProductVersionOrLater',\n            'SharePoint 2016'\n        ],\n        Access_2016_SP1: [\n            'ProductVersionOrLater',\n            'Access 2016 SP1'\n        ],\n        Excel_2016_SP1: [\n            'ProductVersionOrLater',\n            'Excel 2016 SP1'\n        ],\n        OneNote_2016_SP1: [\n            'ProductVersionOrLater',\n            'OneNote 2016 SP1'\n        ],\n        Outlook_2016_SP1: [\n            'ProductVersionOrLater',\n            'Outlook 2016 SP1'\n        ],\n        Project_2016_SP1: [\n            'ProductVersionOrLater',\n            'Project 2016 SP1'\n        ],\n        PowerPoint_2016_SP1: [\n            'ProductVersionOrLater',\n            'PowerPoint 2016 SP1'\n        ],\n        Word_2016_SP1: [\n            'ProductVersionOrLater',\n            'Word 2016 SP1'\n        ],\n        Access_2013_SP1: [\n            'ProductVersionOrLater',\n            'Access 2013 SP1'\n        ],\n        OneNote_2013_SP1: [\n            'ProductVersionOrLater',\n            'OneNote 2013 SP1'\n        ],\n        Project_2013_SP1: [\n            'ProductVersionOrLater',\n            'Project 2013 SP1'\n        ],\n        Access_2016: [\n            'ProductVersionOrLater',\n            'Access 2016'\n        ],\n        OneNote_2016: [\n            'ProductVersionOrLater',\n            'OneNote 2016'\n        ],\n        Project_2016: [\n            'ProductVersionOrLater',\n            'Project 2016'\n        ],\n        Access_2013: [\n            'ProductVersionOrLater',\n            'Access 2013'\n        ],\n        OneNote_2013: [\n            'ProductVersionOrLater',\n            'OneNote 2013'\n        ],\n        Project_2013: [\n            'ProductVersionOrLater',\n            'Project 2013'\n        ]\n    };\n    Constants.OfficeAwardsMapping = {\n        // Office 2017 App Awards\n        AppAwards_2017_BestBizValue_Place1: [\n            'Best_Business_Value_for_An',\n            'Merchandise_Winner',\n            '2017'\n        ],\n        AppAwards_2017_BestBizValue_Place2: [\n            'Best_Business_Value_for_An',\n            'Merchandise_Second',\n            '2017'\n        ],\n        AppAwards_2017_BestBizValue_Place3: [\n            'Best_Business_Value_for_An',\n            'Merchandise_Third',\n            '2017'\n        ],\n        AppAwards_2017_BestUX_Place1: [\n            'Best_User_Experience_For_An',\n            'Merchandise_Winner',\n            '2017'\n        ],\n        AppAwards_2017_BestUX_Place2: [\n            'Best_User_Experience_For_An',\n            'Merchandise_Second',\n            '2017'\n        ],\n        AppAwards_2017_BestUX_Place3: [\n            'Best_User_Experience_For_An',\n            'Merchandise_Third',\n            '2017'\n        ],\n        AppAwards_2017_BestInt_Place1: [\n            'Best_Office_Integration_For_An',\n            'Merchandise_Winner',\n            '2017'\n        ],\n        AppAwards_2017_BestInt_Place2: [\n            'Best_Office_Integration_For_An',\n            'Merchandise_Second',\n            '2017'\n        ],\n        AppAwards_2017_BestInt_Place3: [\n            'Best_Office_Integration_For_An',\n            'Merchandise_Third',\n            '2017'\n        ],\n        AppAwards_2017_Mobile_Place1: [\n            'Mobile_Award_For_An',\n            'Merchandise_Winner',\n            '2017'\n        ],\n        AppAwards_2017_Overall_Place1: [\n            'Best_Overall_For_An',\n            'Merchandise_Winner',\n            '2017'\n        ],\n        AppAwards_2017_Overall_Place2: [\n            'Best_Overall_For_An',\n            'Merchandise_Second',\n            '2017'\n        ],\n        AppAwards_2017_Overall_Place3: [\n            'Best_Overall_For_An',\n            'Merchandise_Third',\n            '2017'\n        ],\n        AppAwards_2017_Peoples_Choice: [\n            'Peoples_Choice_For_An',\n            'Merchandise_Winner',\n            '2017'\n        ],\n        // Office 2018 App Awards\n        AppAwards_2018_BestBizValue_Place1: [\n            'Best_Business_Value_for_An',\n            'Merchandise_Winner',\n            '2018'\n        ],\n        AppAwards_2018_BestBizValue_Place2: [\n            'Best_Business_Value_for_An',\n            'Merchandise_Second',\n            '2018'\n        ],\n        AppAwards_2018_BestBizValue_Place3: [\n            'Best_Business_Value_for_An',\n            'Merchandise_Third',\n            '2018'\n        ],\n        AppAwards_2018_BestUX_Place1: [\n            'Best_User_Experience_For_An',\n            'Merchandise_Winner',\n            '2018'\n        ],\n        AppAwards_2018_BestUX_Place2: [\n            'Best_User_Experience_For_An',\n            'Merchandise_Second',\n            '2018'\n        ],\n        AppAwards_2018_BestUX_Place3: [\n            'Best_User_Experience_For_An',\n            'Merchandise_Third',\n            '2018'\n        ],\n        AppAwards_2018_BestInt_Place1: [\n            'Best_Office_Integration_For_An',\n            'Merchandise_Winner',\n            '2018'\n        ],\n        AppAwards_2018_BestInt_Place2: [\n            'Best_Office_Integration_For_An',\n            'Merchandise_Second',\n            '2018'\n        ],\n        AppAwards_2018_BestInt_Place3: [\n            'Best_Office_Integration_For_An',\n            'Merchandise_Third',\n            '2018'\n        ],\n        AppAwards_2018_Overall_Place1: [\n            'Best_Overall_For_An',\n            'Merchandise_Winner',\n            '2018'\n        ],\n        AppAwards_2018_Overall_Place2: [\n            'Best_Overall_For_An',\n            'Merchandise_Second',\n            '2018'\n        ],\n        AppAwards_2018_Overall_Place3: [\n            'Best_Overall_For_An',\n            'Merchandise_Third',\n            '2018'\n        ],\n        AppAwards_2018_Peoples_Choice: [\n            'Peoples_Choice_For_An',\n            'Merchandise_Winner',\n            '2018'\n        ],\n        // Office 2019+ App Awards\n        AppAwards: [\n            'Office App Awards',\n            'General Office App Awards',\n            '2019'\n        ]\n    };\n    Constants.AcquisitionCtaContactIgnored = 'CTA_Contact';\n    Constants.DefaultLocale = 'en-us';\n    Constants.DefaultLanguage = 'en';\n    (function(AcquisitionCategories) {\n        AcquisitionCategories.Private = 'private';\n        AcquisitionCategories.Public = 'public';\n    })(Constants.AcquisitionCategories || (Constants.AcquisitionCategories = {}));\n    Constants.defaultRoute = '/';\n    Constants.privateOffers = 'private-offers';\n    Constants.home = 'home';\n    Constants.csGallery = 'marketplace/consulting-services';\n    Constants.appsGallery = 'marketplace/apps';\n    Constants.cloudsIndustryGallery = 'marketplace/cloudsIndustry';\n    Constants.appDetailsCanonicalTabSuffix = '?tab=overview';\n    Constants.partnersAppSource = 'marketplace/partner-dir';\n    Constants.partnersIframe = 'partners';\n    Constants.partnersSearchApiRoute = 'api/search/autocomplete';\n    Constants.product = 'product';\n    Constants.category = 'category';\n    Constants.serviceType = 'serviceType';\n    Constants.industry = 'industry';\n    Constants.KeepInCanonicalFilters = [\n        'product',\n        'category',\n        'serviceType',\n        'industry'\n    ];\n    Constants.semicolon = '%3B';\n    (function(GalleryTypes) {\n        GalleryTypes.consultingServices = 'consulting-services';\n        GalleryTypes.apps = 'apps';\n    })(Constants.GalleryTypes || (Constants.GalleryTypes = {}));\n    (function(GalleryOffersTypes) {\n        GalleryOffersTypes[\"ConsultingServices\"] = \"consulting services\";\n        GalleryOffersTypes[\"Apps\"] = \"apps\";\n        GalleryOffersTypes[\"CloudsIndustry\"] = \"Industry Clouds\";\n        GalleryOffersTypes[\"Partners\"] = \"Partners\";\n    })(Constants.GalleryOffersTypes || (Constants.GalleryOffersTypes = {}));\n    (function(Views) {\n        Views[\"locale\"] = \"locale\";\n        Views[\"appDetails\"] = \"appDetails\";\n        Views[\"checkout\"] = \"checkout\";\n        Views[\"orderConfirmation\"] = \"orderConfirmation\";\n        Views[\"partners\"] = \"partners\";\n        Views[\"blog\"] = \"blog\";\n        Views[\"reviews\"] = \"reviews\";\n        Views[\"sell\"] = \"sell\";\n        Views[\"about\"] = \"about\";\n        Views[\"billingregion\"] = \"billingregion\";\n        Views[\"testdrive\"] = \"testdrive\";\n        Views[\"fieldHub\"] = \"fieldHub\";\n        Views[\"serviceDetails\"] = \"serviceDetails\";\n        Views[\"partnerDetails\"] = \"partnerDetails\";\n        Views[\"partnerDetailsContact\"] = \"partnerDetailsContact\";\n        Views[\"partnerSuggestion\"] = \"partnerSuggestion\";\n        Views[\"userFavouriteDetail\"] = \"userFavouriteDetail\";\n        Views[\"privateOffers\"] = \"privateOffers\";\n        Views[\"privateOfferDetails\"] = \"privateOfferDetails\";\n        Views[\"campaigns\"] = \"campaigns\";\n        Views[\"sitemap\"] = \"sitemap\";\n        Views[\"home\"] = \"home\";\n        Views[\"serviceGallery\"] = \"serviceGallery\";\n        Views[\"appGallery\"] = \"appGallery\";\n        Views[\"cloudsIndustryGallery\"] = \"cloudsIndustryGallery\";\n        Views[\"partnersHost\"] = \"partnersHost\";\n    })(Constants.Views || (Constants.Views = {}));\n    (function(ReportAbuseDialog) {\n        ReportAbuseDialog.dropdownHTMLIdName = 'report-abuse-dialog-category-dropdown';\n    })(Constants.ReportAbuseDialog || (Constants.ReportAbuseDialog = {}));\n    (function(HTMLAttribute) {\n        HTMLAttribute.href = 'href';\n        HTMLAttribute.className = 'class';\n        HTMLAttribute.alt = 'alt';\n        HTMLAttribute.text = 'text';\n        HTMLAttribute.ariaExpanded = 'aria-expanded';\n        HTMLAttribute.textContent = 'textContent';\n        HTMLAttribute.ariaSelected = 'aria-selected';\n        HTMLAttribute.ariaChecked = 'aria-checked';\n        HTMLAttribute.ariaLabel = 'aria-label';\n        HTMLAttribute.role = 'role';\n        HTMLAttribute.id = 'id';\n        HTMLAttribute.ariaActivedescendant = 'aria-activedescendant';\n        HTMLAttribute.ariaLabeledBy = 'aria-labelledby';\n        HTMLAttribute.tabIndex = 'tabIndex';\n        HTMLAttribute.title = 'title';\n        HTMLAttribute.autoComplete = 'autoComplete';\n    })(Constants.HTMLAttribute || (Constants.HTMLAttribute = {}));\n    (function(HTMLTag) {\n        HTMLTag.button = 'button';\n    })(Constants.HTMLTag || (Constants.HTMLTag = {}));\n    (function(HTMLClassNameStrings) {\n        HTMLClassNameStrings.tile = 'spza_tileWrapper';\n    })(Constants.HTMLClassNameStrings || (Constants.HTMLClassNameStrings = {}));\n    (function(searchItemType) {\n        searchItemType.app = 'AppSearchResult';\n        searchItemType.service = 'ServicesSearchResult';\n        searchItemType.cloudsIndustry = 'CloudsIndustrySearchResult';\n        searchItemType.showAll = 'SearchShowAll';\n        searchItemType.searchWithinFilters = 'searchWithinFilters';\n        searchItemType.eca = 'ECASearchResult';\n        searchItemType.partner = 'PartnerSearchResult';\n    })(Constants.searchItemType || (Constants.searchItemType = {}));\n    (function(searchTypeString) {\n        searchTypeString.AppsAndServices = 'Apps and Services';\n        searchTypeString.ECAoffers = 'ECA Offers';\n        searchTypeString.Partners = 'Partners';\n    })(Constants.searchTypeString || (Constants.searchTypeString = {}));\n    Constants.defaultCountryForPrivacy = 'EU';\n    (function(TokenClaims) {\n        TokenClaims[\"givenName\"] = \"given_name\";\n        TokenClaims[\"familyName\"] = \"family_name\";\n    })(Constants.TokenClaims || (Constants.TokenClaims = {}));\n    (function(AzurePortal) {\n        AzurePortal.PDPBladeById = 'https://portal.azure.com/#blade/Microsoft_Azure_Marketplace/galleryItemDetailsBladeNopdl/id/{0}';\n        AzurePortal.CreateOfferById = 'https://portal.azure.com/#create/';\n        AzurePortal.CreateOfferPreview = '/preview';\n    })(Constants.AzurePortal || (Constants.AzurePortal = {}));\n    Constants.partnerCenterLink = 'https://partner.microsoft.com/en-us/dashboard/account/v3/enrollment/introduction/azureisv';\n    Constants.FilterCategoryToGlobalStrings = [\n        'virtual-machine-images',\n        'solution-templates'\n    ];\n    (function(FilterQuery) {\n        // azure marketplace\n        FilterQuery[\"filters\"] = \"filters\";\n        FilterQuery[\"subcategories\"] = \"subcategories\";\n        FilterQuery[\"subindustries\"] = \"subindustries\";\n        // appsource\n        FilterQuery[\"product\"] = \"product\";\n        FilterQuery[\"industry\"] = \"industry\";\n        FilterQuery[\"category\"] = \"category\";\n        FilterQuery[\"serviceType\"] = \"serviceType\";\n        FilterQuery[\"trials\"] = \"trials\";\n        FilterQuery[\"pricingModel\"] = \"pricingModel\";\n        FilterQuery[\"ratings\"] = \"ratings\";\n        FilterQuery[\"appCompliance\"] = \"appCompliance\";\n        FilterQuery[\"sortBy\"] = \"sortBy\";\n        FilterQuery[\"azureBenefitEligible\"] = \"azureBenefitEligible\";\n        FilterQuery[\"copilotExtension\"] = \"copilotExtension\";\n        FilterQuery[\"productType\"] = \"productType\";\n        FilterQuery[\"country\"] = \"country\";\n        FilterQuery[\"region\"] = \"region\";\n        FilterQuery[\"search\"] = \"search\";\n        FilterQuery[\"page\"] = \"page\";\n    })(Constants.FilterQuery || (Constants.FilterQuery = {}));\n    (function(MACSubCategoryStrings) {\n        MACSubCategoryStrings.FreeTrial = 'trials_freeTrial';\n        MACSubCategoryStrings.Windows = 'windows';\n        MACSubCategoryStrings.Linux = 'linux';\n        MACSubCategoryStrings.WindowsBased = 'windowsBased';\n        MACSubCategoryStrings.LinuxBased = 'linuxBased';\n        MACSubCategoryStrings.SystemWindows = 'operatingSystem_windows';\n        MACSubCategoryStrings.SystemLinux = 'operatingSystem_linux';\n        MACSubCategoryStrings.TestDrive = 'trials_testDrive';\n        MACSubCategoryStrings.Microsoft = 'Microsoft';\n        MACSubCategoryStrings.PublisherMicrosoft = 'publisher_microsoft';\n        MACSubCategoryStrings.PublisherPartner = 'publisher_partners';\n        MACSubCategoryStrings.SaaS = 'SaaS';\n        MACSubCategoryStrings.Containers = 'Containers_MP';\n        MACSubCategoryStrings.ContainerImages = 'ContainerImages_MP';\n        MACSubCategoryStrings.Countries = 'country';\n    })(Constants.MACSubCategoryStrings || (Constants.MACSubCategoryStrings = {}));\n    (function(TypeOf) {\n        TypeOf.objectName = 'object';\n        TypeOf.functionName = 'function';\n        TypeOf.stringName = 'string';\n        TypeOf.numberName = 'number';\n        TypeOf.booleanName = 'boolean';\n        TypeOf.undefinedName = 'undefined';\n        TypeOf.nullName = 'null';\n    })(Constants.TypeOf || (Constants.TypeOf = {}));\n    (function(ServiceTypes) {\n        ServiceTypes[ServiceTypes[\"Assessment\"] = 1] = \"Assessment\";\n        ServiceTypes[ServiceTypes[\"Briefing\"] = 2] = \"Briefing\";\n        ServiceTypes[ServiceTypes[\"Implementation\"] = 4] = \"Implementation\";\n        ServiceTypes[ServiceTypes[\"ProofOfConcept\"] = 8] = \"ProofOfConcept\";\n        ServiceTypes[ServiceTypes[\"WorkShop\"] = 16] = \"WorkShop\";\n    })(Constants.ServiceTypes || (Constants.ServiceTypes = {}));\n    (function(RegExpFlag) {\n        RegExpFlag.Global = 'g';\n        RegExpFlag.MultiLine = 'm';\n        RegExpFlag.CaseInsensitive = 'i';\n        RegExpFlag.Sticky = 'y';\n        RegExpFlag.Unicode = 'g';\n        RegExpFlag.SingleLine = 'i';\n    })(Constants.RegExpFlag || (Constants.RegExpFlag = {}));\n    (function(UserFavourite) {\n        (function(ApplicationTypes) {\n            ApplicationTypes[\"ITApplications\"] = \"ITApplications\";\n            ApplicationTypes[\"BusinessApplications\"] = \"BusinessApplications\";\n            ApplicationTypes[\"ITConsultingServices\"] = \"ITConsultingServices\";\n            ApplicationTypes[\"BusinessConsultingServices\"] = \"BusinessConsultingServices\";\n        })(UserFavourite.ApplicationTypes || (UserFavourite.ApplicationTypes = {}));\n        (function(NotCriticalFailure) {\n            NotCriticalFailure[\"ItemExist\"] = \"ItemExist\";\n            NotCriticalFailure[\"ItemNotExist\"] = \"ItemNotExist\";\n            NotCriticalFailure[\"MaximumQuotaReached\"] = \"MaximumQuotaReached\";\n        })(UserFavourite.NotCriticalFailure || (UserFavourite.NotCriticalFailure = {}));\n        (function(FetchDataStatus) {\n            FetchDataStatus[\"Invalid\"] = \"Invalid\";\n            FetchDataStatus[\"IsFetching\"] = \"IsFetching\";\n            FetchDataStatus[\"Valid\"] = \"Valid\";\n            FetchDataStatus[\"Failure\"] = \"Failure\";\n        })(UserFavourite.FetchDataStatus || (UserFavourite.FetchDataStatus = {}));\n        (function(DataItemModifyStatus) {\n            DataItemModifyStatus[\"Delete\"] = \"Delete\";\n            DataItemModifyStatus[\"Upsert\"] = \"Upsert\";\n            DataItemModifyStatus[\"None\"] = \"None\";\n            // after an operation has finished\n            DataItemModifyStatus[\"Done\"] = \"Done\";\n        })(UserFavourite.DataItemModifyStatus || (UserFavourite.DataItemModifyStatus = {}));\n        UserFavourite.ViewEndpoint = '/view/favourites';\n    })(Constants.UserFavourite || (Constants.UserFavourite = {}));\n    (function(ODataError) {\n        ODataError.DefaultCode = 500;\n        ODataError.DefaultMessage = 'Error Object Not Found, Default to Internal Server Error';\n        ODataError.DefaultMessageCircularObject = 'Circular Object Cannot Expand for Details';\n        ODataError.DefaultMessageHandle = (error)=>`Error Message Not Found, Showing Original Error Object: ${stringifyError(error)}`;\n    })(Constants.ODataError || (Constants.ODataError = {}));\n    (function(AccessToken) {\n        AccessToken.DefaultHost = 'https://login.microsoftonline.com/';\n        AccessToken.DefaultCommonPath = '/oauth2/token';\n    })(Constants.AccessToken || (Constants.AccessToken = {}));\n    (function(appSourceUrls) {\n        appSourceUrls.prod = 'https://appsource.microsoft.com';\n        appSourceUrls.df = 'https://appgallery.spza-staging.net';\n        appSourceUrls.canary = 'https://appgallery.spza-canary.net';\n        appSourceUrls.development = 'http://localhost:3000/';\n    })(Constants.appSourceUrls || (Constants.appSourceUrls = {}));\n    (function(Header) {\n        Header.classNamePrefix = 'spza-header';\n        Header.localizationNamePrefix = 'Appsource_Header';\n        (function(Classname) {\n            Classname.itemActive = 'active';\n            Classname.itemNotActive = 'inactive';\n        })(Header.Classname || (Header.Classname = {}));\n    })(Constants.Header || (Constants.Header = {}));\n    (function(UserInteractionType) {\n        UserInteractionType[\"Touch\"] = \"Touch\";\n        UserInteractionType[\"Mouse\"] = \"Mouse\";\n    })(Constants.UserInteractionType || (Constants.UserInteractionType = {}));\n    (function(EventType) {\n        EventType[\"None\"] = \"none\";\n        EventType[\"Click\"] = \"click\";\n        EventType[\"MouseEnter\"] = \"mouseenter\";\n        EventType[\"ReactMouseEnter\"] = \"react-mouseenter\";\n        EventType[\"MouseLeave\"] = \"mouseleave\";\n        EventType[\"ReactMouseLeave\"] = \"react-mouseleave\";\n        EventType[\"KeyDown\"] = \"keydown\";\n        EventType[\"KeyUp\"] = \"keyup\";\n        EventType[\"Blur\"] = \"blur\";\n    })(Constants.EventType || (Constants.EventType = {}));\n    (function(UserActionComponentType) {\n        UserActionComponentType[\"Dialog\"] = \"Dialog\";\n        UserActionComponentType[\"DropdownOptionItem\"] = \"DropdownOptionItem\";\n    })(Constants.UserActionComponentType || (Constants.UserActionComponentType = {}));\n    (function(UserComponent) {\n        (function(DropdownItemName) {\n            DropdownItemName[\"userAction\"] = \"userAction\";\n            DropdownItemName[\"userFavourite\"] = \"userFavourite\";\n            DropdownItemName[\"feedback\"] = \"feeback\";\n        })(UserComponent.DropdownItemName || (UserComponent.DropdownItemName = {}));\n        UserComponent.dropdownItemNameToClassName = {\n            [\"userAction\"]: 'userActions .userTabSignOut button',\n            [\"userFavourite\"]: 'spza-user-favourite-navigation-bar-button-container',\n            [\"feeback\"]: 'spza_feedback'\n        };\n        UserComponent.dropdownItemClassNameArray = Object.keys(UserComponent.dropdownItemNameToClassName).map((key)=>UserComponent.dropdownItemNameToClassName[`${key}`]);\n        UserComponent.activeClassName = 'dropdown-item-active';\n        UserComponent.dropdownOptionContainerClassName = 'spza-user-mobile-nav-bar-dropdown';\n        UserComponent.dropdownActiveOptionContainerClassName = `${UserComponent.dropdownOptionContainerClassName}.active`;\n        UserComponent.dropdownValueClassName = 'spza-user-mobile-container .spza-user-nav-bar-button';\n        UserComponent.dropdownContainerClassName = 'spza-user-mobile-container';\n    })(Constants.UserComponent || (Constants.UserComponent = {}));\n    Constants.MACPrivacyTermsURL = 'https://aka.ms/azuremarketplaceterms';\n    Constants.HyperfishEntityId = 'hyperfish.8437f635-56d2-402b-bb8b-2b5549267c61';\n    Constants.IgnoredPricingEntityId = 'dummy';\n    (function(ErrorCodes) {\n        ErrorCodes[ErrorCodes[\"XSS\"] = 1] = \"XSS\";\n    })(Constants.ErrorCodes || (Constants.ErrorCodes = {}));\n    Constants.ServicesIdWithBadge = {\n        'bardess.customer-360-powered-by-zero2hero': 1,\n        'publicis-sapient.rapid_commerce': 2,\n        'xentit.azure-xentit-trendmicro-qualys-hcss-12months': 3,\n        'rcg-us.rcg-enable-credit-analytics': 4,\n        'sirrus7.sirrus7-devops-acceleration-engine': 5,\n        'new-signature.eos_appfactory': 6,\n        'prodware.devicetone_iot_for_connected_field_service': 7,\n        'avanadeinc.intelligent_ma_due_diligence': 8,\n        'rivermeadowsoftwareinc.rapid-datacenter-consolidation-jumpstart': 9,\n        'barhead_solutions.unison_p2p': 10\n    };\n    Constants.appSourceApplicationTargetName = 'appsource';\n    (function(JsllCTAId) {\n        JsllCTAId.Contact = 'CTA_Contact';\n        JsllCTAId.ContactMe = 'CTA_ContactMe';\n        JsllCTAId.Select = 'CTA_Select';\n        JsllCTAId.Get = 'CTA_Get';\n        JsllCTAId.Try = 'CTA_Try';\n        JsllCTAId.RequestTrial = 'CTA_ContactMe';\n        JsllCTAId.TestDrive = 'CTA_TestDrive';\n        JsllCTAId.Service = 'CTA_Inquire';\n        JsllCTAId.Purchase = 'CTA_Get';\n        JsllCTAId.MailALink = 'CTA_MailMeALink';\n        JsllCTAId.Configure = 'CTA_Configure';\n        JsllCTAId.ContactPartner = 'CTA_ContactPartner';\n        JsllCTAId.RepeatTestDrive = 'CTA_RepeatTestDrive';\n        JsllCTAId.RetryTestDrive = 'CTA_RetryTestDrive';\n        JsllCTAId.Continue = 'CTA_Continue';\n        JsllCTAId.Close = 'CTA_Close';\n        JsllCTAId.Done = 'CTA_Done';\n        JsllCTAId.SubmitFeedback = 'CTA_SubmitFeedback';\n        JsllCTAId.SendFeedbackEmail = 'CTA_SendFeedbackEmail';\n        JsllCTAId.WriteReview = 'CTA_WriteReview';\n        JsllCTAId.UpdateReview = 'CTA_UpdateReview';\n        JsllCTAId.SubmitReview = 'CTA_SubmitReview';\n        JsllCTAId.DeleteReview = 'CTA_DeleteReview';\n        JsllCTAId.SignIn = 'CTA_SignIn';\n        JsllCTAId.SignUp = 'CTA_SignUp';\n        JsllCTAId.ViewAllButton = 'CTA_ViewAllButton';\n        JsllCTAId.ClearFilters = 'CTA_ClearFilters';\n        JsllCTAId.DownloadSample = 'CTA_DownloadSample';\n        JsllCTAId.Add = 'CTA_Add';\n        JsllCTAId.BuyLicense = 'CTA_BuyLicense';\n        JsllCTAId.Install = 'CTA_Install';\n        JsllCTAId.AlreadyPurchased = 'CTA_AlreadyPurchased';\n        JsllCTAId.Partner = 'CTA_Partner';\n    })(Constants.JsllCTAId || (Constants.JsllCTAId = {}));\n    (function(JsllSaas) {\n        JsllSaas.OrderConfirmed = 'OrderConfirmed';\n        JsllSaas.TransactableSaasPdpView = 'TransactableSaasPdpView';\n        JsllSaas.SaasTransactable = 'SaaS transactable';\n        JsllSaas.SaasNonTransactable = 'SaaS non-transactable';\n        JsllSaas.ViewImage = 'ViewImage';\n        JsllSaas.ViewImageOfVideo = 'ViewImageOfVideo';\n        JsllSaas.WatchVideo = 'WatchVideo';\n        JsllSaas.SignIn = 'SignIn';\n        JsllSaas.SignInModalShow = 'SignInModalShow';\n    })(Constants.JsllSaas || (Constants.JsllSaas = {}));\n    (function(JsllCheckout) {\n        JsllCheckout.RedirectButton = 'RedirectButton';\n        JsllCheckout.NewCustomer = 'NewCustomer';\n    })(Constants.JsllCheckout || (Constants.JsllCheckout = {}));\n    (function(AzureExpertsMSPApps) {\n        AzureExpertsMSPApps[AzureExpertsMSPApps[\"ans_group.glasssaas\"] = 0] = \"ans_group.glasssaas\";\n        AzureExpertsMSPApps[AzureExpertsMSPApps[\"capside.enzime-azure-code-deployments-capside\"] = 1] = \"capside.enzime-azure-code-deployments-capside\";\n        AzureExpertsMSPApps[AzureExpertsMSPApps[\"capside.replica-azure-cloud-governance-capside\"] = 2] = \"capside.replica-azure-cloud-governance-capside\";\n        AzureExpertsMSPApps[AzureExpertsMSPApps[\"elasticbox.elasticbox-enterprise\"] = 3] = \"elasticbox.elasticbox-enterprise\";\n        AzureExpertsMSPApps[AzureExpertsMSPApps[\"comparex.portfolio-management-platform\"] = 4] = \"comparex.portfolio-management-platform\";\n        AzureExpertsMSPApps[AzureExpertsMSPApps[\"comparex.sam2go-nextgen-platform\"] = 5] = \"comparex.sam2go-nextgen-platform\";\n        AzureExpertsMSPApps[AzureExpertsMSPApps[\"comparex.ucm-insights\"] = 6] = \"comparex.ucm-insights\";\n        AzureExpertsMSPApps[AzureExpertsMSPApps[\"coretek.coretekams\"] = 7] = \"coretek.coretekams\";\n        AzureExpertsMSPApps[AzureExpertsMSPApps[\"crayon-group-as-1129016.cloud_iq_saas\"] = 8] = \"crayon-group-as-1129016.cloud_iq_saas\";\n        AzureExpertsMSPApps[AzureExpertsMSPApps[\"hanu.hanu-insight-v2\"] = 9] = \"hanu.hanu-insight-v2\";\n        AzureExpertsMSPApps[AzureExpertsMSPApps[\"hanu.hanu-managed-services\"] = 10] = \"hanu.hanu-managed-services\";\n        AzureExpertsMSPApps[AzureExpertsMSPApps[\"hcl-technologies.hcl17cp1104\"] = 11] = \"hcl-technologies.hcl17cp1104\";\n        AzureExpertsMSPApps[AzureExpertsMSPApps[\"ibm.ibm_security_access_manager\"] = 12] = \"ibm.ibm_security_access_manager\";\n        AzureExpertsMSPApps[AzureExpertsMSPApps[\"ibm.qradar_security_analytics\"] = 13] = \"ibm.qradar_security_analytics\";\n        AzureExpertsMSPApps[AzureExpertsMSPApps[\"infosysltd.infosys-analytics-workbench\"] = 14] = \"infosysltd.infosys-analytics-workbench\";\n        AzureExpertsMSPApps[AzureExpertsMSPApps[\"infront-consulting-group-ltd.beekeeper-patch_maangement\"] = 15] = \"infront-consulting-group-ltd.beekeeper-patch_maangement\";\n        AzureExpertsMSPApps[AzureExpertsMSPApps[\"infront-consulting-group-ltd.hive-self-service-portal\"] = 16] = \"infront-consulting-group-ltd.hive-self-service-portal\";\n        AzureExpertsMSPApps[AzureExpertsMSPApps[\"linkbynet.linkbynet_1\"] = 17] = \"linkbynet.linkbynet_1\";\n        AzureExpertsMSPApps[AzureExpertsMSPApps[\"new-signature.ef2bfc07-9398-483d-b46f-78bccae4cb42\"] = 18] = \"new-signature.ef2bfc07-9398-483d-b46f-78bccae4cb42\";\n        AzureExpertsMSPApps[AzureExpertsMSPApps[\"wipro_india.botwiproapi\"] = 19] = \"wipro_india.botwiproapi\";\n        AzureExpertsMSPApps[AzureExpertsMSPApps[\"wipro_india.facewiproapi\"] = 20] = \"wipro_india.facewiproapi\";\n        AzureExpertsMSPApps[AzureExpertsMSPApps[\"wipro_india.imageclassificationwiproapi\"] = 21] = \"wipro_india.imageclassificationwiproapi\";\n        AzureExpertsMSPApps[AzureExpertsMSPApps[\"wipro_india.wca\"] = 22] = \"wipro_india.wca\";\n        AzureExpertsMSPApps[AzureExpertsMSPApps[\"wipro_india.wiprotexact\"] = 23] = \"wipro_india.wiprotexact\";\n    })(Constants.AzureExpertsMSPApps || (Constants.AzureExpertsMSPApps = {}));\n    (function(ProductBitmaskFieldNames) {\n        ProductBitmaskFieldNames[\"backendKey\"] = \"backendKey\";\n        ProductBitmaskFieldNames[\"urlKey\"] = \"urlKey\";\n    })(Constants.ProductBitmaskFieldNames || (Constants.ProductBitmaskFieldNames = {}));\n    (function(SearchFieldNames) {\n        SearchFieldNames[\"linkedAddIns\"] = \"linkedAddIns\";\n        SearchFieldNames[\"linkedAddInsTypes\"] = \"LinkedAddInsTypes\";\n    })(Constants.SearchFieldNames || (Constants.SearchFieldNames = {}));\n    (function(SearchSortingOption) {\n        SearchSortingOption[\"BestMatch\"] = \"Best Match\";\n        SearchSortingOption[\"Popularity\"] = \"Popularity\";\n        SearchSortingOption[\"RatingAverage\"] = \"Rating Average\";\n        SearchSortingOption[\"RecentlyUpdated\"] = \"Recently Updated\";\n    })(Constants.SearchSortingOption || (Constants.SearchSortingOption = {}));\n    (function(LicenseManagementType) {\n        LicenseManagementType[\"MicrosoftManaged\"] = \"MicrosoftManaged\";\n        LicenseManagementType[\"ISVManaged\"] = \"ISVManaged\";\n    })(Constants.LicenseManagementType || (Constants.LicenseManagementType = {}));\n    (function(LicenseModel) {\n        LicenseModel[\"Freemium\"] = \"Freemium\";\n    })(Constants.LicenseModel || (Constants.LicenseModel = {}));\n    (function(UiRole) {\n        UiRole[UiRole[\"Admin\"] = 1] = \"Admin\";\n        UiRole[UiRole[\"Other\"] = 2] = \"Other\";\n    })(Constants.UiRole || (Constants.UiRole = {}));\n    (function(TermPeriod) {\n        TermPeriod[\"Month\"] = \"month\";\n        TermPeriod[\"Year\"] = \"year\";\n    })(Constants.TermPeriod || (Constants.TermPeriod = {}));\n    (function(TermId) {\n        // Entitlement renew monthly\n        TermId[\"Monthly\"] = \"hjdtn7tfnxcy\";\n        // Entitlement renew yearly\n        TermId[\"Yearly\"] = \"nm5o4wf9fbfy\";\n        // Entitlement first month free then renew monthly\n        TermId[\"TrialMonthly\"] = \"ccdjsqgba7zo\";\n        // Entitlement first month free then renew yearly\n        TermId[\"TrialYearly\"] = \"o6p5ue5yng9o\";\n    })(Constants.TermId || (Constants.TermId = {}));\n})(Constants || (Constants = {}));\nexport var OfferType = /*#__PURE__*/ function(OfferType) {\n    OfferType[OfferType[\"Other\"] = 0] = \"Other\";\n    OfferType[OfferType[\"VirtualMachine\"] = 1] = \"VirtualMachine\";\n    OfferType[OfferType[\"DevService\"] = 2] = \"DevService\";\n    OfferType[OfferType[\"SolutionTemplate\"] = 3] = \"SolutionTemplate\";\n    OfferType[OfferType[\"ManagedApp\"] = 4] = \"ManagedApp\";\n    OfferType[OfferType[\"SaaSApp\"] = 5] = \"SaaSApp\";\n    OfferType[OfferType[\"Container\"] = 6] = \"Container\";\n    OfferType[OfferType[\"ContainerApp\"] = 7] = \"ContainerApp\";\n    OfferType[OfferType[\"CrossChargedManagedApp\"] = 8] = \"CrossChargedManagedApp\";\n    OfferType[OfferType[\"AAD\"] = 9] = \"AAD\";\n    OfferType[OfferType[\"IoTEdgeModule\"] = 10] = \"IoTEdgeModule\";\n    OfferType[OfferType[\"PowerBICustomVisual\"] = 11] = \"PowerBICustomVisual\";\n    // 'Mixed' should be the last value and is special\n    // It implies multiple offer types\n    // If we ever used this as a flag (bitwise operation),\n    // remember that 'Mixed' is a special case\n    // Add new offer types above\n    OfferType[OfferType[\"Mixed\"] = 2147483647] = \"Mixed\";\n    return OfferType;\n}({});\nexport var PlanPricingType = /*#__PURE__*/ function(PlanPricingType) {\n    PlanPricingType[PlanPricingType[\"None\"] = 1] = \"None\";\n    PlanPricingType[PlanPricingType[\"VM\"] = 2] = \"VM\";\n    PlanPricingType[PlanPricingType[\"SimplePlanPricing\"] = 3] = \"SimplePlanPricing\";\n    PlanPricingType[PlanPricingType[\"SolutionTemplate\"] = 4] = \"SolutionTemplate\";\n    return PlanPricingType;\n}({});\n(function(Plan) {\n    Plan.displayRank = 'displayRank';\n})(Plan || (Plan = {}));\nexport const supportedCountries = [\n    {\n        countryCode: 'AF',\n        name: 'Afghanistan',\n        currencyCode: 'USD',\n        consentRequired: \"unknown\"\n    },\n    {\n        countryCode: 'AL',\n        name: 'Albania',\n        currencyCode: 'USD',\n        consentRequired: \"optin\"\n    },\n    {\n        countryCode: 'DZ',\n        name: 'Algeria',\n        currencyCode: 'USD',\n        consentRequired: \"optout\"\n    },\n    {\n        countryCode: 'AD',\n        name: 'Andorra',\n        currencyCode: 'EUR',\n        consentRequired: \"unknown\"\n    },\n    {\n        countryCode: 'AO',\n        name: 'Angola',\n        currencyCode: 'USD',\n        consentRequired: \"optin\"\n    },\n    {\n        countryCode: 'AR',\n        name: 'Argentina',\n        currencyCode: 'USD',\n        consentRequired: \"optin\"\n    },\n    {\n        countryCode: 'AM',\n        name: 'Armenia',\n        currencyCode: 'USD',\n        consentRequired: \"optin\"\n    },\n    {\n        countryCode: 'AU',\n        name: 'Australia',\n        currencyCode: 'AUD',\n        consentRequired: \"optin\"\n    },\n    {\n        countryCode: 'AT',\n        name: 'Austria',\n        currencyCode: 'EUR',\n        consentRequired: \"optin\"\n    },\n    {\n        countryCode: 'AZ',\n        name: 'Azerbaijan',\n        currencyCode: 'USD',\n        consentRequired: \"optin\"\n    },\n    {\n        countryCode: 'BH',\n        name: 'Bahrain',\n        currencyCode: 'USD',\n        consentRequired: \"notice\"\n    },\n    {\n        countryCode: 'BD',\n        name: 'Bangladesh',\n        currencyCode: 'USD',\n        consentRequired: \"unknown\"\n    },\n    {\n        countryCode: 'BB',\n        name: 'Barbados',\n        currencyCode: 'USD',\n        consentRequired: \"unknown\"\n    },\n    {\n        countryCode: 'BY',\n        name: 'Belarus',\n        currencyCode: 'USD',\n        consentRequired: \"optin\"\n    },\n    {\n        countryCode: 'BE',\n        name: 'Belgium',\n        currencyCode: 'EUR',\n        consentRequired: \"optin\"\n    },\n    {\n        countryCode: 'BZ',\n        name: 'Belize',\n        currencyCode: 'USD',\n        consentRequired: \"unknown\"\n    },\n    {\n        countryCode: 'BM',\n        name: 'Bermuda',\n        currencyCode: 'USD',\n        consentRequired: \"unknown\"\n    },\n    {\n        countryCode: 'BO',\n        name: 'Bolivia',\n        currencyCode: 'USD',\n        consentRequired: \"notice\"\n    },\n    {\n        countryCode: 'BA',\n        name: 'Bosnia and Herzegovina',\n        currencyCode: 'USD',\n        consentRequired: \"optin\"\n    },\n    {\n        countryCode: 'BW',\n        name: 'Botswana',\n        currencyCode: 'USD',\n        consentRequired: \"notice\"\n    },\n    {\n        countryCode: 'BR',\n        name: 'Brazil',\n        currencyCode: 'BRL',\n        consentRequired: \"notice\"\n    },\n    {\n        countryCode: 'BN',\n        name: 'Brunei',\n        currencyCode: 'USD',\n        consentRequired: \"unknown\"\n    },\n    {\n        countryCode: 'BG',\n        name: 'Bulgaria',\n        currencyCode: 'EUR',\n        consentRequired: \"notice\"\n    },\n    {\n        countryCode: 'CM',\n        name: 'Cameroon',\n        currencyCode: 'USD',\n        consentRequired: \"notice\"\n    },\n    {\n        countryCode: 'CA',\n        name: 'Canada',\n        currencyCode: 'CAD',\n        consentRequired: \"optin\"\n    },\n    {\n        countryCode: 'CV',\n        name: 'Cabo Verde',\n        currencyCode: 'USD',\n        consentRequired: \"optin\"\n    },\n    {\n        countryCode: 'KY',\n        name: 'Cayman Islands',\n        currencyCode: 'USD',\n        consentRequired: \"unknown\"\n    },\n    {\n        countryCode: 'CL',\n        name: 'Chile',\n        currencyCode: 'USD',\n        consentRequired: \"optout\"\n    },\n    {\n        countryCode: 'CO',\n        name: 'Colombia',\n        currencyCode: 'USD',\n        consentRequired: \"optin\"\n    },\n    {\n        countryCode: 'CR',\n        name: 'Costa Rica',\n        currencyCode: 'USD',\n        consentRequired: \"optin\"\n    },\n    {\n        countryCode: 'CI',\n        name: 'Côte d\"Ivoire',\n        currencyCode: 'USD',\n        consentRequired: \"notice\"\n    },\n    {\n        countryCode: 'HR',\n        name: 'Croatia',\n        currencyCode: 'EUR',\n        consentRequired: \"optin\"\n    },\n    {\n        countryCode: 'CW',\n        name: 'Curaçao',\n        currencyCode: 'USD',\n        consentRequired: \"unknown\"\n    },\n    {\n        countryCode: 'CY',\n        name: 'Cyprus',\n        currencyCode: 'EUR',\n        consentRequired: \"optin\"\n    },\n    {\n        countryCode: 'CZ',\n        name: 'Czech Republic',\n        currencyCode: 'CZK',\n        consentRequired: \"optout\"\n    },\n    {\n        countryCode: 'DK',\n        name: 'Denmark',\n        currencyCode: 'DKK',\n        consentRequired: \"optin\"\n    },\n    {\n        countryCode: 'DO',\n        name: 'Dominican Republic',\n        currencyCode: 'USD',\n        consentRequired: \"notice\"\n    },\n    {\n        countryCode: 'EC',\n        name: 'Ecuador',\n        currencyCode: 'USD',\n        consentRequired: \"notice\"\n    },\n    {\n        countryCode: 'EG',\n        name: 'Egypt',\n        currencyCode: 'EGP',\n        consentRequired: \"optout\"\n    },\n    {\n        countryCode: 'SV',\n        name: 'El Salvador',\n        currencyCode: 'USD',\n        consentRequired: \"notice\"\n    },\n    {\n        countryCode: 'EE',\n        name: 'Estonia',\n        currencyCode: 'EUR',\n        consentRequired: \"optin\"\n    },\n    {\n        countryCode: 'ET',\n        name: 'Ethiopia',\n        currencyCode: 'USD',\n        consentRequired: \"optout\"\n    },\n    {\n        countryCode: 'FO',\n        name: 'Faroe Islands',\n        currencyCode: 'DKK',\n        consentRequired: \"unknown\"\n    },\n    {\n        countryCode: 'FJ',\n        name: 'Fiji',\n        currencyCode: 'AUD',\n        consentRequired: \"unknown\"\n    },\n    {\n        countryCode: 'FI',\n        name: 'Finland',\n        currencyCode: 'EUR',\n        consentRequired: \"optin\"\n    },\n    {\n        countryCode: 'FR',\n        name: 'France',\n        currencyCode: 'EUR',\n        consentRequired: \"optin\"\n    },\n    {\n        countryCode: 'GE',\n        name: 'Georgia',\n        currencyCode: 'USD',\n        consentRequired: \"optin\"\n    },\n    {\n        countryCode: 'DE',\n        name: 'Germany',\n        currencyCode: 'EUR',\n        consentRequired: \"optin\"\n    },\n    {\n        countryCode: 'GH',\n        name: 'Ghana',\n        currencyCode: 'USD',\n        consentRequired: \"optin\"\n    },\n    {\n        countryCode: 'GR',\n        name: 'Greece',\n        currencyCode: 'EUR',\n        consentRequired: \"optin\"\n    },\n    {\n        countryCode: 'GT',\n        name: 'Guatemala',\n        currencyCode: 'USD',\n        consentRequired: \"optout\"\n    },\n    {\n        countryCode: 'HN',\n        name: 'Honduras',\n        currencyCode: 'USD',\n        consentRequired: \"notice\"\n    },\n    {\n        countryCode: 'HK',\n        name: 'Hong Kong SAR',\n        currencyCode: 'USD',\n        consentRequired: \"optout\"\n    },\n    {\n        countryCode: 'HU',\n        name: 'Hungary',\n        currencyCode: 'EUR',\n        consentRequired: \"optin\"\n    },\n    {\n        countryCode: 'IS',\n        name: 'Iceland',\n        currencyCode: 'EUR',\n        consentRequired: \"optin\"\n    },\n    {\n        countryCode: 'IN',\n        name: 'India',\n        currencyCode: 'INR',\n        consentRequired: \"notice\"\n    },\n    {\n        countryCode: 'ID',\n        name: 'Indonesia',\n        currencyCode: 'USD',\n        consentRequired: \"optout\"\n    },\n    {\n        countryCode: 'IQ',\n        name: 'Iraq',\n        currencyCode: 'USD',\n        consentRequired: \"optout\"\n    },\n    {\n        countryCode: 'IE',\n        name: 'Ireland',\n        currencyCode: 'EUR',\n        consentRequired: \"optin\"\n    },\n    {\n        countryCode: 'IL',\n        name: 'Israel',\n        currencyCode: 'USD',\n        consentRequired: \"optin\"\n    },\n    {\n        countryCode: 'IT',\n        name: 'Italy',\n        currencyCode: 'EUR',\n        consentRequired: \"optin\"\n    },\n    {\n        countryCode: 'JM',\n        name: 'Jamaica',\n        currencyCode: 'USD',\n        consentRequired: \"notice\"\n    },\n    {\n        countryCode: 'JP',\n        name: 'Japan',\n        currencyCode: 'JPY',\n        consentRequired: \"optout\"\n    },\n    {\n        countryCode: 'JO',\n        name: 'Jordan',\n        currencyCode: 'USD',\n        consentRequired: \"optout\"\n    },\n    {\n        countryCode: 'KZ',\n        name: 'Kazakhstan',\n        currencyCode: 'USD',\n        consentRequired: \"optin\"\n    },\n    {\n        countryCode: 'KE',\n        name: 'Kenya',\n        currencyCode: 'USD',\n        consentRequired: \"optin\"\n    },\n    {\n        countryCode: 'KR',\n        name: 'Korea (South)',\n        currencyCode: 'KRW',\n        consentRequired: \"optin\"\n    },\n    {\n        countryCode: 'KW',\n        name: 'Kuwait',\n        currencyCode: 'USD',\n        consentRequired: \"optin\"\n    },\n    {\n        countryCode: 'KG',\n        name: 'Kyrgyzstan',\n        currencyCode: 'USD',\n        consentRequired: \"exclude\"\n    },\n    {\n        countryCode: 'LV',\n        name: 'Latvia',\n        currencyCode: 'EUR',\n        consentRequired: \"optin\"\n    },\n    {\n        countryCode: 'LB',\n        name: 'Lebanon',\n        currencyCode: 'USD',\n        consentRequired: \"optout\"\n    },\n    {\n        countryCode: 'LY',\n        name: 'Libya',\n        currencyCode: 'USD',\n        consentRequired: \"notice\"\n    },\n    {\n        countryCode: 'LI',\n        name: 'Liechtenstein',\n        currencyCode: 'EUR',\n        consentRequired: \"optin\"\n    },\n    {\n        countryCode: 'LT',\n        name: 'Lithuania',\n        currencyCode: 'EUR',\n        consentRequired: \"optin\"\n    },\n    {\n        countryCode: 'LU',\n        name: 'Luxembourg',\n        currencyCode: 'EUR',\n        consentRequired: \"optin\"\n    },\n    {\n        countryCode: 'MO',\n        name: 'Macao SAR',\n        currencyCode: 'USD',\n        consentRequired: \"notice\"\n    },\n    {\n        countryCode: 'MK',\n        name: 'North Macedonia',\n        currencyCode: 'USD',\n        consentRequired: \"optout\"\n    },\n    {\n        countryCode: 'MY',\n        name: 'Malaysia',\n        currencyCode: 'USD',\n        consentRequired: \"optin\"\n    },\n    {\n        countryCode: 'MT',\n        name: 'Malta',\n        currencyCode: 'EUR',\n        consentRequired: \"optin\"\n    },\n    {\n        countryCode: 'MU',\n        name: 'Mauritius',\n        currencyCode: 'USD',\n        consentRequired: \"optin\"\n    },\n    {\n        countryCode: 'MX',\n        name: 'Mexico',\n        currencyCode: 'USD',\n        consentRequired: \"optout\"\n    },\n    {\n        countryCode: 'MD',\n        name: 'Moldova',\n        currencyCode: 'USD',\n        consentRequired: \"unknown\"\n    },\n    {\n        countryCode: 'MC',\n        name: 'Monaco',\n        currencyCode: 'EUR',\n        consentRequired: \"optin\"\n    },\n    {\n        countryCode: 'MN',\n        name: 'Mongolia',\n        currencyCode: 'USD',\n        consentRequired: \"optin\"\n    },\n    {\n        countryCode: 'ME',\n        name: 'Montenegro',\n        currencyCode: 'USD',\n        consentRequired: \"optin\"\n    },\n    {\n        countryCode: 'MA',\n        name: 'Morocco',\n        currencyCode: 'USD',\n        consentRequired: \"optin\"\n    },\n    {\n        countryCode: 'NA',\n        name: 'Namibia',\n        currencyCode: 'USD',\n        consentRequired: \"optout\"\n    },\n    {\n        countryCode: 'NP',\n        name: 'Nepal',\n        currencyCode: 'USD',\n        consentRequired: \"unknown\"\n    },\n    {\n        countryCode: 'NL',\n        name: 'Netherlands',\n        currencyCode: 'EUR',\n        consentRequired: \"optin\"\n    },\n    {\n        countryCode: 'NI',\n        name: 'Nicaragua',\n        currencyCode: 'USD',\n        consentRequired: \"unknown\"\n    },\n    {\n        countryCode: 'NZ',\n        name: 'New Zealand',\n        currencyCode: 'NZD',\n        consentRequired: \"optin\"\n    },\n    {\n        countryCode: 'NG',\n        name: 'Nigeria',\n        currencyCode: 'USD',\n        consentRequired: \"optout\"\n    },\n    {\n        countryCode: 'NO',\n        name: 'Norway',\n        currencyCode: 'NOK',\n        consentRequired: \"optin\"\n    },\n    {\n        countryCode: 'OM',\n        name: 'Oman',\n        currencyCode: 'USD',\n        consentRequired: \"notice\"\n    },\n    {\n        countryCode: 'PK',\n        name: 'Pakistan',\n        currencyCode: 'USD',\n        consentRequired: \"optin\"\n    },\n    {\n        countryCode: 'PS',\n        name: 'Palestinian Authority',\n        currencyCode: 'USD',\n        consentRequired: \"unknown\"\n    },\n    {\n        countryCode: 'PA',\n        name: 'Panama',\n        currencyCode: 'USD',\n        consentRequired: \"optout\"\n    },\n    {\n        countryCode: 'PY',\n        name: 'Paraguay',\n        currencyCode: 'USD',\n        consentRequired: \"notice\"\n    },\n    {\n        countryCode: 'PE',\n        name: 'Peru',\n        currencyCode: 'USD',\n        consentRequired: \"optin\"\n    },\n    {\n        countryCode: 'PH',\n        name: 'Philippines',\n        currencyCode: 'USD',\n        consentRequired: \"optin\"\n    },\n    {\n        countryCode: 'PL',\n        name: 'Poland',\n        currencyCode: 'EUR',\n        consentRequired: \"optin\"\n    },\n    {\n        countryCode: 'PT',\n        name: 'Portugal',\n        currencyCode: 'EUR',\n        consentRequired: \"optin\"\n    },\n    {\n        countryCode: 'PR',\n        name: 'Puerto Rico',\n        currencyCode: 'USD',\n        consentRequired: \"unknown\"\n    },\n    {\n        countryCode: 'QA',\n        name: 'Qatar',\n        currencyCode: 'USD',\n        consentRequired: \"notice\"\n    },\n    {\n        countryCode: 'RO',\n        name: 'Romania',\n        currencyCode: 'EUR',\n        consentRequired: \"optin\"\n    },\n    {\n        countryCode: 'RU',\n        name: 'Russia',\n        currencyCode: 'RUB',\n        consentRequired: \"optin\"\n    },\n    {\n        countryCode: 'RW',\n        name: 'Rwanda',\n        currencyCode: 'USD',\n        consentRequired: \"notice\"\n    },\n    {\n        countryCode: 'KN',\n        name: 'Saint Kitts and Nevis',\n        currencyCode: 'USD',\n        consentRequired: \"unknown\"\n    },\n    {\n        countryCode: 'SA',\n        name: 'Saudi Arabia',\n        currencyCode: 'USD',\n        consentRequired: \"optin\"\n    },\n    {\n        countryCode: 'SN',\n        name: 'Senegal',\n        currencyCode: 'USD',\n        consentRequired: \"optout\"\n    },\n    {\n        countryCode: 'RS',\n        name: 'Serbia',\n        currencyCode: 'USD',\n        consentRequired: \"optin\"\n    },\n    {\n        countryCode: 'SG',\n        name: 'Singapore',\n        currencyCode: 'USD',\n        consentRequired: \"optin\"\n    },\n    {\n        countryCode: 'SK',\n        name: 'Slovakia',\n        currencyCode: 'EUR',\n        consentRequired: \"optin\"\n    },\n    {\n        countryCode: 'SI',\n        name: 'Slovenia',\n        currencyCode: 'EUR',\n        consentRequired: \"optin\"\n    },\n    {\n        countryCode: 'ZA',\n        name: 'South Africa',\n        currencyCode: 'USD',\n        consentRequired: \"optout\"\n    },\n    {\n        countryCode: 'ES',\n        name: 'Spain',\n        currencyCode: 'EUR',\n        consentRequired: \"optin\"\n    },\n    {\n        countryCode: 'LK',\n        name: 'Sri Lanka',\n        currencyCode: 'USD',\n        consentRequired: \"unknown\"\n    },\n    {\n        countryCode: 'SE',\n        name: 'Sweden',\n        currencyCode: 'SEK',\n        consentRequired: \"optin\"\n    },\n    {\n        countryCode: 'CH',\n        name: 'Switzerland',\n        currencyCode: 'CHF',\n        consentRequired: \"optin\"\n    },\n    {\n        countryCode: 'TW',\n        name: 'Taiwan',\n        currencyCode: 'TWD',\n        consentRequired: \"optin\"\n    },\n    {\n        countryCode: 'TJ',\n        name: 'Tajikistan',\n        currencyCode: 'USD',\n        consentRequired: \"optin\"\n    },\n    {\n        countryCode: 'TZ',\n        name: 'Tanzania',\n        currencyCode: 'USD',\n        consentRequired: \"notice\"\n    },\n    {\n        countryCode: 'TH',\n        name: 'Thailand',\n        currencyCode: 'USD',\n        consentRequired: \"optout\"\n    },\n    {\n        countryCode: 'TT',\n        name: 'Trinidad and Tobago',\n        currencyCode: 'USD',\n        consentRequired: \"notice\"\n    },\n    {\n        countryCode: 'TN',\n        name: 'Tunisia',\n        currencyCode: 'USD',\n        consentRequired: \"optin\"\n    },\n    {\n        countryCode: 'TR',\n        name: 'Turkey',\n        currencyCode: 'USD',\n        consentRequired: \"optin\"\n    },\n    {\n        countryCode: 'TM',\n        name: 'Turkmenistan',\n        currencyCode: 'USD',\n        consentRequired: \"optin\"\n    },\n    {\n        countryCode: 'VA',\n        name: 'Vatican City (Holy See)',\n        currencyCode: 'EUR',\n        consentRequired: \"unknown\"\n    },\n    {\n        countryCode: 'VI',\n        name: 'Virgin Islands of the United States',\n        currencyCode: 'USD',\n        consentRequired: \"unknown\"\n    },\n    {\n        countryCode: 'UG',\n        name: 'Uganda',\n        currencyCode: 'USD',\n        consentRequired: \"notice\"\n    },\n    {\n        countryCode: 'UA',\n        name: 'Ukraine',\n        currencyCode: 'USD',\n        consentRequired: \"optin\"\n    },\n    {\n        countryCode: 'AE',\n        name: 'United Arab Emirates',\n        currencyCode: 'USD',\n        consentRequired: \"optin\"\n    },\n    {\n        countryCode: 'GB',\n        name: 'United Kingdom',\n        currencyCode: 'GB',\n        consentRequired: \"optin\"\n    },\n    {\n        countryCode: 'US',\n        name: 'United States',\n        currencyCode: 'USD',\n        consentRequired: \"notice\"\n    },\n    {\n        countryCode: 'UY',\n        name: 'Uruguay',\n        currencyCode: 'USD',\n        consentRequired: \"optin\"\n    },\n    {\n        countryCode: 'UZ',\n        name: 'Uzbekistan',\n        currencyCode: 'USD',\n        consentRequired: \"optin\"\n    },\n    {\n        countryCode: 'VE',\n        name: 'Venezuela',\n        currencyCode: 'USD',\n        consentRequired: \"optin\"\n    },\n    {\n        countryCode: 'VN',\n        name: 'Vietnam',\n        currencyCode: 'USD',\n        consentRequired: \"optin\"\n    },\n    {\n        countryCode: 'YE',\n        name: 'Yemen',\n        currencyCode: 'USD',\n        consentRequired: \"notice\"\n    },\n    {\n        countryCode: 'ZM',\n        name: 'Zambia',\n        currencyCode: 'USD',\n        consentRequired: \"notice\"\n    },\n    {\n        countryCode: 'ZW',\n        name: 'Zimbabwe',\n        currencyCode: 'USD',\n        consentRequired: \"notice\"\n    }\n];\nexport var Environment = /*#__PURE__*/ function(Environment) {\n    Environment[\"Development\"] = \"development\";\n    Environment[\"Dogfood\"] = \"df\";\n    Environment[\"Canary\"] = \"canary\";\n    Environment[\"Test\"] = \"test\";\n    Environment[\"Production\"] = \"prod\";\n    return Environment;\n}({});\nexport const UNAUTHENTICATED_ROUTES = {\n    '/api/log': false,\n    '/api/logOutRequests': false,\n    '/view': false,\n    '/api': false,\n    '/api/userreview': true\n};\nexport var OneDSEnvs = /*#__PURE__*/ function(OneDSEnvs) {\n    OneDSEnvs[\"Production\"] = \"production\";\n    OneDSEnvs[\"Canary\"] = \"preprod\";\n    OneDSEnvs[\"Dogfood\"] = \"ppe\";\n    OneDSEnvs[\"Internal\"] = \"dev\";\n    OneDSEnvs[\"Test\"] = \"test\";\n    return OneDSEnvs;\n}({});\nexport const LocalizationSettings = {\n    defaultLng: 'en-US',\n    defaultNS: 'header'\n};\nexport const ResourcesFiles = {\n    resources: 'resources',\n    resourcesMac: 'resourcesMac',\n    resourcesAppSource: 'resourcesAppSource',\n    header: 'header',\n    search: 'search',\n    home: 'home',\n    taxonomy: 'taxonomy'\n};\nexport var AwaMetaTags = /*#__PURE__*/ function(AwaMetaTags) {\n    AwaMetaTags[\"correlationId\"] = \"awa-correlationId\";\n    AwaMetaTags[\"locale\"] = \"awa-locale\";\n    AwaMetaTags[\"signedIn\"] = \"awa-signedIn\";\n    AwaMetaTags[\"version\"] = \"awa-version\";\n    AwaMetaTags[\"region\"] = \"awa-region\";\n    return AwaMetaTags;\n}({});\nexport var LocaleStringStyles = /*#__PURE__*/ function(LocaleStringStyles) {\n    LocaleStringStyles[\"Currency\"] = \"currency\";\n    return LocaleStringStyles;\n}({});\nexport const allBillingCountries = [\n    {\n        name: 'United States',\n        transactable: true,\n        countryCode: 'US',\n        currency: 'USD'\n    },\n    {\n        name: 'Afghanistan',\n        transactable: true,\n        countryCode: 'AF',\n        currency: 'USD'\n    },\n    {\n        name: 'Åland Islands',\n        currency: 'USD',\n        countryCode: 'AX'\n    },\n    {\n        name: 'Albania',\n        transactable: true,\n        countryCode: 'AL',\n        currency: 'USD'\n    },\n    {\n        name: 'Algeria',\n        transactable: true,\n        countryCode: 'DZ',\n        currency: 'USD'\n    },\n    {\n        name: 'American Samoa',\n        countryCode: 'AS',\n        currency: 'USD'\n    },\n    {\n        name: 'Andorra',\n        transactable: true,\n        countryCode: 'AD',\n        currency: 'EUR'\n    },\n    {\n        name: 'Angola',\n        transactable: true,\n        countryCode: 'AO',\n        currency: 'USD'\n    },\n    {\n        name: 'Anguilla',\n        countryCode: 'AI',\n        currency: 'USD'\n    },\n    {\n        name: 'Antarctica',\n        countryCode: 'AQ',\n        currency: 'USD'\n    },\n    {\n        name: 'Antigua and Barbuda',\n        countryCode: 'AG',\n        currency: 'USD'\n    },\n    {\n        name: 'Argentina',\n        transactable: true,\n        countryCode: 'AR',\n        currency: 'USD'\n    },\n    {\n        name: 'Armenia',\n        transactable: true,\n        countryCode: 'AM',\n        currency: 'USD'\n    },\n    {\n        name: 'Aruba',\n        countryCode: 'AW',\n        currency: 'USD'\n    },\n    {\n        name: 'Australia',\n        transactable: true,\n        countryCode: 'AU',\n        currency: 'AUD'\n    },\n    {\n        name: 'Austria',\n        transactable: true,\n        countryCode: 'AT',\n        currency: 'EUR'\n    },\n    {\n        name: 'Azerbaijan',\n        transactable: true,\n        countryCode: 'AZ',\n        currency: 'USD'\n    },\n    {\n        name: 'Bahamas',\n        countryCode: 'BS',\n        currency: 'USD'\n    },\n    {\n        name: 'Bahrain',\n        transactable: true,\n        countryCode: 'BH',\n        currency: 'USD'\n    },\n    {\n        name: 'Bangladesh',\n        transactable: true,\n        countryCode: 'BD',\n        currency: 'USD'\n    },\n    {\n        name: 'Barbados',\n        transactable: true,\n        countryCode: 'BB',\n        currency: 'USD'\n    },\n    {\n        name: 'Belarus',\n        transactable: true,\n        countryCode: 'BY',\n        currency: 'USD'\n    },\n    {\n        name: 'Belgium',\n        transactable: true,\n        countryCode: 'BE',\n        currency: 'EUR'\n    },\n    {\n        name: 'Belize',\n        transactable: true,\n        countryCode: 'BZ',\n        currency: 'USD'\n    },\n    {\n        name: 'Benin',\n        countryCode: 'BJ',\n        currency: 'USD'\n    },\n    {\n        name: 'Bermuda',\n        transactable: true,\n        countryCode: 'BM',\n        currency: 'USD'\n    },\n    {\n        name: 'Bhutan',\n        countryCode: 'BT',\n        currency: 'USD'\n    },\n    {\n        name: 'Bolivia',\n        transactable: true,\n        countryCode: 'BO',\n        currency: 'USD'\n    },\n    {\n        name: 'Bonaire, Saint Eustatius and Saba',\n        countryCode: 'BQ',\n        currency: 'USD'\n    },\n    {\n        name: 'Bosnia and Herzegovina',\n        transactable: true,\n        countryCode: 'BA',\n        currency: 'USD'\n    },\n    {\n        name: 'Botswana',\n        transactable: true,\n        countryCode: 'BW',\n        currency: 'USD'\n    },\n    {\n        name: 'Bouvet Island',\n        countryCode: 'BV',\n        currency: 'USD'\n    },\n    {\n        name: 'Brazil',\n        transactable: true,\n        countryCode: 'BR',\n        currency: 'BRL'\n    },\n    {\n        name: 'British Indian Ocean Territory',\n        countryCode: 'IO',\n        currency: 'USD'\n    },\n    {\n        name: 'British Virgin Islands',\n        countryCode: 'VG',\n        currency: 'USD'\n    },\n    {\n        name: 'Brunei',\n        transactable: true,\n        countryCode: 'BN',\n        currency: 'USD'\n    },\n    {\n        name: 'Bulgaria',\n        transactable: true,\n        countryCode: 'BG',\n        currency: 'EUR'\n    },\n    {\n        name: 'Burkina Faso',\n        countryCode: 'BF',\n        currency: 'USD'\n    },\n    {\n        name: 'Burundi',\n        countryCode: 'BI',\n        currency: 'USD'\n    },\n    {\n        name: 'Cabo Verde',\n        transactable: true,\n        countryCode: 'CV',\n        currency: 'USD'\n    },\n    {\n        name: 'Cambodia',\n        countryCode: 'KH',\n        currency: 'KHR'\n    },\n    {\n        name: 'Cameroon',\n        transactable: true,\n        countryCode: 'CM',\n        currency: 'USD'\n    },\n    {\n        name: 'Canada',\n        transactable: true,\n        countryCode: 'CA',\n        currency: 'CAD'\n    },\n    {\n        name: 'Cayman Islands',\n        transactable: true,\n        countryCode: 'KY',\n        currency: 'USD'\n    },\n    {\n        name: 'Central African Republic',\n        countryCode: 'CF',\n        currency: 'USD'\n    },\n    {\n        name: 'Chad',\n        countryCode: 'TD',\n        currency: 'USD'\n    },\n    {\n        name: 'Chile',\n        transactable: true,\n        countryCode: 'CL',\n        currency: 'USD'\n    },\n    {\n        name: 'China',\n        countryCode: 'CN',\n        currency: 'CNY'\n    },\n    {\n        name: 'Christmas Island',\n        countryCode: 'CX',\n        currency: 'USD'\n    },\n    {\n        name: 'Cocos (Keeling) Islands',\n        countryCode: 'CC',\n        currency: 'USD'\n    },\n    {\n        name: 'Colombia',\n        transactable: true,\n        countryCode: 'CO',\n        currency: 'USD'\n    },\n    {\n        name: 'Comoros',\n        countryCode: 'KM',\n        currency: 'USD'\n    },\n    {\n        name: 'Congo',\n        countryCode: 'CG',\n        currency: 'USD'\n    },\n    {\n        name: 'Congo (DRC)',\n        countryCode: 'CD',\n        currency: 'USD'\n    },\n    {\n        name: 'Cook Islands',\n        countryCode: 'CK',\n        currency: 'USD'\n    },\n    {\n        name: 'Costa Rica',\n        transactable: true,\n        countryCode: 'CR',\n        currency: 'USD'\n    },\n    {\n        name: \"Côte d'Ivoire\",\n        transactable: true,\n        countryCode: 'CI',\n        currency: 'USD'\n    },\n    {\n        name: 'Croatia',\n        transactable: true,\n        countryCode: 'HR',\n        currency: 'EUR'\n    },\n    {\n        name: 'Curaçao',\n        transactable: true,\n        countryCode: 'CW',\n        currency: 'USD'\n    },\n    {\n        name: 'Cyprus',\n        transactable: true,\n        countryCode: 'CY',\n        currency: 'EUR'\n    },\n    {\n        name: 'Czechia',\n        transactable: true,\n        countryCode: 'CZ',\n        currency: 'EUR'\n    },\n    {\n        name: 'Denmark',\n        transactable: true,\n        countryCode: 'DK',\n        currency: 'DKK'\n    },\n    {\n        name: 'Djibouti',\n        countryCode: 'DJ',\n        currency: 'USD'\n    },\n    {\n        name: 'Dominica',\n        countryCode: 'DM',\n        currency: 'USD'\n    },\n    {\n        name: 'Dominican Republic',\n        transactable: true,\n        countryCode: 'DO',\n        currency: 'USD'\n    },\n    {\n        name: 'Ecuador',\n        transactable: true,\n        countryCode: 'EC',\n        currency: 'USD'\n    },\n    {\n        name: 'Egypt',\n        transactable: true,\n        countryCode: 'EG',\n        currency: 'USD'\n    },\n    {\n        name: 'El Salvador',\n        transactable: true,\n        countryCode: 'SV',\n        currency: 'USD'\n    },\n    {\n        name: 'Equatorial Guinea',\n        countryCode: 'GQ',\n        currency: 'USD'\n    },\n    {\n        name: 'Eritrea',\n        countryCode: 'ER',\n        currency: 'USD'\n    },\n    {\n        name: 'Estonia',\n        transactable: true,\n        countryCode: 'EE',\n        currency: 'EUR'\n    },\n    {\n        name: 'Ethiopia',\n        transactable: true,\n        countryCode: 'ET',\n        currency: 'USD'\n    },\n    {\n        name: 'Falkland Islands',\n        countryCode: 'FK',\n        currency: 'USD'\n    },\n    {\n        name: 'Faroe Islands',\n        transactable: true,\n        countryCode: 'FO',\n        currency: 'DKK'\n    },\n    {\n        name: 'Fiji',\n        transactable: true,\n        countryCode: 'FJ',\n        currency: 'AUD'\n    },\n    {\n        name: 'Finland',\n        transactable: true,\n        countryCode: 'FI',\n        currency: 'EUR'\n    },\n    {\n        name: 'France',\n        transactable: true,\n        countryCode: 'FR',\n        currency: 'EUR'\n    },\n    {\n        name: 'French Guiana',\n        countryCode: 'GF',\n        currency: 'USD'\n    },\n    {\n        name: 'French Polynesia',\n        countryCode: 'PF',\n        currency: 'USD'\n    },\n    {\n        name: 'French Southern Territories',\n        countryCode: 'TF',\n        currency: 'USD'\n    },\n    {\n        name: 'Gabon',\n        countryCode: 'GA',\n        currency: 'USD'\n    },\n    {\n        name: 'Gambia',\n        countryCode: 'GM',\n        currency: 'USD'\n    },\n    {\n        name: 'Georgia',\n        transactable: true,\n        countryCode: 'GE',\n        currency: 'USD'\n    },\n    {\n        name: 'Germany',\n        transactable: true,\n        countryCode: 'DE',\n        currency: 'EUR'\n    },\n    {\n        name: 'Ghana',\n        transactable: true,\n        countryCode: 'GH',\n        currency: 'USD'\n    },\n    {\n        name: 'Gibraltar',\n        countryCode: 'GI',\n        currency: 'EUR'\n    },\n    {\n        name: 'Greece',\n        transactable: true,\n        countryCode: 'GR',\n        currency: 'EUR'\n    },\n    {\n        name: 'Greenland',\n        countryCode: 'GL',\n        currency: 'USD'\n    },\n    {\n        name: 'Grenada',\n        countryCode: 'GD',\n        currency: 'USD'\n    },\n    {\n        name: 'Guadeloupe',\n        countryCode: 'GP',\n        currency: 'USD'\n    },\n    {\n        name: 'Guam',\n        countryCode: 'GU',\n        currency: 'USD'\n    },\n    {\n        name: 'Guatemala',\n        transactable: true,\n        countryCode: 'GT',\n        currency: 'USD'\n    },\n    {\n        name: 'Guernsey',\n        countryCode: 'GG',\n        currency: 'EUR'\n    },\n    {\n        name: 'Guinea',\n        countryCode: 'GN',\n        currency: 'USD'\n    },\n    {\n        name: 'Guinea-Bissau',\n        countryCode: 'GW',\n        currency: 'USD'\n    },\n    {\n        name: 'Guyana',\n        countryCode: 'GY',\n        currency: 'USD'\n    },\n    {\n        name: 'Haiti',\n        countryCode: 'HT',\n        currency: 'USD'\n    },\n    {\n        name: 'Heard Island and McDonald Islands',\n        countryCode: 'HM',\n        currency: 'USD'\n    },\n    {\n        name: 'Honduras',\n        transactable: true,\n        countryCode: 'HN',\n        currency: 'USD'\n    },\n    {\n        name: 'Hong Kong SAR',\n        transactable: true,\n        countryCode: 'HK',\n        currency: 'USD'\n    },\n    {\n        name: 'Hungary',\n        transactable: true,\n        countryCode: 'HU',\n        currency: 'EUR'\n    },\n    {\n        name: 'Iceland',\n        transactable: true,\n        countryCode: 'IS',\n        currency: 'EUR'\n    },\n    {\n        name: 'India',\n        transactable: true,\n        countryCode: 'IN',\n        currency: 'INR'\n    },\n    {\n        name: 'Indonesia',\n        transactable: true,\n        countryCode: 'ID',\n        currency: 'USD'\n    },\n    {\n        name: 'Iraq',\n        transactable: true,\n        countryCode: 'IQ',\n        currency: 'USD'\n    },\n    {\n        name: 'Ireland',\n        transactable: true,\n        countryCode: 'IE',\n        currency: 'EUR'\n    },\n    {\n        name: 'Isle of Man',\n        countryCode: 'IM',\n        currency: 'USD'\n    },\n    {\n        name: 'Israel',\n        transactable: true,\n        countryCode: 'IL',\n        currency: 'USD'\n    },\n    {\n        name: 'Italy',\n        transactable: true,\n        countryCode: 'IT',\n        currency: 'EUR'\n    },\n    {\n        name: 'Jamaica',\n        transactable: true,\n        countryCode: 'JM',\n        currency: 'USD'\n    },\n    {\n        name: 'Japan',\n        transactable: true,\n        countryCode: 'JP',\n        currency: 'JPY'\n    },\n    {\n        name: 'Jersey',\n        countryCode: 'JE',\n        currency: 'EUR'\n    },\n    {\n        name: 'Jordan',\n        transactable: true,\n        countryCode: 'JO',\n        currency: 'USD'\n    },\n    {\n        name: 'Kazakhstan',\n        transactable: true,\n        countryCode: 'KZ',\n        currency: 'USD'\n    },\n    {\n        name: 'Kenya',\n        transactable: true,\n        countryCode: 'KE',\n        currency: 'USD'\n    },\n    {\n        name: 'Kiribati',\n        countryCode: 'KI',\n        currency: 'USD'\n    },\n    {\n        name: 'Korea (South)',\n        transactable: true,\n        countryCode: 'KR',\n        currency: 'KRW'\n    },\n    {\n        name: 'Kosovo',\n        countryCode: 'XK',\n        currency: 'USD'\n    },\n    {\n        name: 'Kuwait',\n        transactable: true,\n        countryCode: 'KW',\n        currency: 'USD'\n    },\n    {\n        name: 'Kyrgyzstan',\n        transactable: true,\n        countryCode: 'KG',\n        currency: 'USD'\n    },\n    {\n        name: 'Laos',\n        countryCode: 'LA',\n        currency: 'USD'\n    },\n    {\n        name: 'Latvia',\n        transactable: true,\n        countryCode: 'LV',\n        currency: 'EUR'\n    },\n    {\n        name: 'Lebanon',\n        transactable: true,\n        countryCode: 'LB',\n        currency: 'USD'\n    },\n    {\n        name: 'Lesotho',\n        countryCode: 'LS',\n        currency: 'USD'\n    },\n    {\n        name: 'Liberia',\n        countryCode: 'LR',\n        currency: 'USD'\n    },\n    {\n        name: 'Libya',\n        transactable: true,\n        countryCode: 'LY',\n        currency: 'USD'\n    },\n    {\n        name: 'Liechtenstein',\n        transactable: true,\n        countryCode: 'LI',\n        currency: 'EUR'\n    },\n    {\n        name: 'Lithuania',\n        transactable: true,\n        countryCode: 'LT',\n        currency: 'EUR'\n    },\n    {\n        name: 'Luxembourg',\n        transactable: true,\n        countryCode: 'LU',\n        currency: 'EUR'\n    },\n    {\n        name: 'Macao SAR',\n        transactable: true,\n        countryCode: 'MO',\n        currency: 'USD'\n    },\n    {\n        name: 'Madagascar',\n        countryCode: 'MG',\n        currency: 'USD'\n    },\n    {\n        name: 'Malawi',\n        countryCode: 'MW',\n        currency: 'USD'\n    },\n    {\n        name: 'Malaysia',\n        transactable: true,\n        countryCode: 'MY',\n        currency: 'USD'\n    },\n    {\n        name: 'Maldives',\n        countryCode: 'MV',\n        currency: 'USD'\n    },\n    {\n        name: 'Mali',\n        countryCode: 'ML',\n        currency: 'USD'\n    },\n    {\n        name: 'Malta',\n        transactable: true,\n        countryCode: 'MT',\n        currency: 'EUR'\n    },\n    {\n        name: 'Marshall Islands',\n        countryCode: 'MH',\n        currency: 'USD'\n    },\n    {\n        name: 'Martinique',\n        countryCode: 'MQ',\n        currency: 'EUR'\n    },\n    {\n        name: 'Mauritania',\n        countryCode: 'MR',\n        currency: 'MRO'\n    },\n    {\n        name: 'Mauritius',\n        transactable: true,\n        countryCode: 'MU',\n        currency: 'USD'\n    },\n    {\n        name: 'Mayotte',\n        countryCode: 'YT',\n        currency: 'EUR'\n    },\n    {\n        name: 'Mexico',\n        transactable: true,\n        countryCode: 'MX',\n        currency: 'USD'\n    },\n    {\n        name: 'Micronesia',\n        countryCode: 'FM',\n        currency: 'USD'\n    },\n    {\n        name: 'Moldova',\n        transactable: true,\n        countryCode: 'MD',\n        currency: 'USD'\n    },\n    {\n        name: 'Monaco',\n        transactable: true,\n        countryCode: 'MC',\n        currency: 'EUR'\n    },\n    {\n        name: 'Mongolia',\n        transactable: true,\n        countryCode: 'MN',\n        currency: 'USD'\n    },\n    {\n        name: 'Montenegro',\n        transactable: true,\n        countryCode: 'ME',\n        currency: 'USD'\n    },\n    {\n        name: 'Montserrat',\n        countryCode: 'MS',\n        currency: 'USD'\n    },\n    {\n        name: 'Morocco',\n        transactable: true,\n        countryCode: 'MA',\n        currency: 'USD'\n    },\n    {\n        name: 'Mozambique',\n        countryCode: 'MZ',\n        currency: 'USD'\n    },\n    {\n        name: 'Myanmar',\n        countryCode: 'MM',\n        currency: 'USD'\n    },\n    {\n        name: 'Namibia',\n        transactable: true,\n        countryCode: 'NA',\n        currency: 'USD'\n    },\n    {\n        name: 'Nauru',\n        countryCode: 'NR',\n        currency: 'USD'\n    },\n    {\n        name: 'Nepal',\n        transactable: true,\n        countryCode: 'NP',\n        currency: 'USD'\n    },\n    {\n        name: 'Netherlands',\n        transactable: true,\n        countryCode: 'NL',\n        currency: 'EUR'\n    },\n    {\n        name: 'New Caledonia',\n        countryCode: 'NC',\n        currency: 'USD'\n    },\n    {\n        name: 'New Zealand',\n        transactable: true,\n        countryCode: 'NZ',\n        currency: 'NZD'\n    },\n    {\n        name: 'Nicaragua',\n        transactable: true,\n        countryCode: 'NI',\n        currency: 'USD'\n    },\n    {\n        name: 'Niger',\n        countryCode: 'NE',\n        currency: 'USD'\n    },\n    {\n        name: 'Nigeria',\n        transactable: true,\n        countryCode: 'NG',\n        currency: 'USD'\n    },\n    {\n        name: 'Niue',\n        countryCode: 'NU',\n        currency: 'USD'\n    },\n    {\n        name: 'Norfolk Island',\n        countryCode: 'NF',\n        currency: 'USD'\n    },\n    {\n        name: 'North Macedonia',\n        transactable: true,\n        countryCode: 'MK',\n        currency: 'USD'\n    },\n    {\n        name: 'Northern Mariana Islands',\n        countryCode: 'MP',\n        currency: 'USD'\n    },\n    {\n        name: 'Norway',\n        transactable: true,\n        countryCode: 'NO',\n        currency: 'NOK'\n    },\n    {\n        name: 'Oman',\n        transactable: true,\n        countryCode: 'OM',\n        currency: 'USD'\n    },\n    {\n        name: 'Pakistan',\n        transactable: true,\n        countryCode: 'PK',\n        currency: 'USD'\n    },\n    {\n        name: 'Palau',\n        countryCode: 'PW',\n        currency: 'USD'\n    },\n    {\n        name: 'Palestinian Authority',\n        transactable: true,\n        countryCode: 'PS',\n        currency: 'USD'\n    },\n    {\n        name: 'Panama',\n        transactable: true,\n        countryCode: 'PA',\n        currency: 'USD'\n    },\n    {\n        name: 'Papua New Guinea',\n        countryCode: 'PG',\n        currency: 'USD'\n    },\n    {\n        name: 'Paraguay',\n        transactable: true,\n        countryCode: 'PY',\n        currency: 'USD'\n    },\n    {\n        name: 'Peru',\n        transactable: true,\n        countryCode: 'PE',\n        currency: 'USD'\n    },\n    {\n        name: 'Philippines',\n        transactable: true,\n        countryCode: 'PH',\n        currency: 'USD'\n    },\n    {\n        name: 'Pitcairn Islands',\n        countryCode: 'PN',\n        currency: 'USD'\n    },\n    {\n        name: 'Poland',\n        transactable: true,\n        countryCode: 'PL',\n        currency: 'EUR'\n    },\n    {\n        name: 'Portugal',\n        transactable: true,\n        countryCode: 'PT',\n        currency: 'EUR'\n    },\n    {\n        name: 'Puerto Rico',\n        transactable: true,\n        countryCode: 'PR',\n        currency: 'USD'\n    },\n    {\n        name: 'Qatar',\n        transactable: true,\n        countryCode: 'QA',\n        currency: 'USD'\n    },\n    {\n        name: 'Réunion',\n        countryCode: 'RE',\n        currency: 'EUR'\n    },\n    {\n        name: 'Romania',\n        transactable: true,\n        countryCode: 'RO',\n        currency: 'EUR'\n    },\n    {\n        name: 'Russia',\n        transactable: true,\n        countryCode: 'RU',\n        currency: 'RUB'\n    },\n    {\n        name: 'Rwanda',\n        transactable: true,\n        countryCode: 'RW',\n        currency: 'USD'\n    },\n    {\n        name: 'Saint Barthélemy',\n        countryCode: 'BL',\n        currency: 'EUR'\n    },\n    {\n        name: 'Saint Helena, Ascension, Tristan da Cunha',\n        countryCode: 'SH',\n        currency: 'EUR'\n    },\n    {\n        name: 'Saint Kitts and Nevis',\n        transactable: true,\n        countryCode: 'KN',\n        currency: 'USD'\n    },\n    {\n        name: 'Saint Lucia',\n        countryCode: 'LC',\n        currency: 'USD'\n    },\n    {\n        name: 'Saint Martin',\n        countryCode: 'MF',\n        currency: 'USD'\n    },\n    {\n        name: 'Saint Pierre and Miquelon',\n        countryCode: 'PM',\n        currency: 'USD'\n    },\n    {\n        name: 'Saint Vincent and the Grenadines',\n        countryCode: 'VC',\n        currency: 'USD'\n    },\n    {\n        name: 'Samoa',\n        countryCode: 'WS',\n        currency: 'USD'\n    },\n    {\n        name: 'San Marino',\n        countryCode: 'SM',\n        currency: 'EUR'\n    },\n    {\n        name: 'São Tomé and Príncipe',\n        countryCode: 'ST',\n        currency: 'USD'\n    },\n    {\n        name: 'Saudi Arabia',\n        transactable: true,\n        countryCode: 'SA',\n        currency: 'USD'\n    },\n    {\n        name: 'Senegal',\n        transactable: true,\n        countryCode: 'SN',\n        currency: 'USD'\n    },\n    {\n        name: 'Serbia',\n        transactable: true,\n        countryCode: 'RS',\n        currency: 'USD'\n    },\n    {\n        name: 'Seychelles',\n        countryCode: 'SC',\n        currency: 'USD'\n    },\n    {\n        name: 'Sierra Leone',\n        countryCode: 'SL',\n        currency: 'USD'\n    },\n    {\n        name: 'Singapore',\n        transactable: true,\n        countryCode: 'SG',\n        currency: 'USD'\n    },\n    {\n        name: 'Sint Maarten',\n        countryCode: 'SX',\n        currency: 'USD'\n    },\n    {\n        name: 'Slovakia',\n        transactable: true,\n        countryCode: 'SK',\n        currency: 'EUR'\n    },\n    {\n        name: 'Slovenia',\n        transactable: true,\n        countryCode: 'SI',\n        currency: 'EUR'\n    },\n    {\n        name: 'Solomon Islands',\n        countryCode: 'SB',\n        currency: 'USD'\n    },\n    {\n        name: 'Somalia',\n        countryCode: 'SO',\n        currency: 'USD'\n    },\n    {\n        name: 'South Africa',\n        transactable: true,\n        countryCode: 'ZA',\n        currency: 'USD'\n    },\n    {\n        name: 'South Georgia and South Sandwich Islands',\n        countryCode: 'GS',\n        currency: 'USD'\n    },\n    {\n        name: 'South Sudan',\n        countryCode: 'SS',\n        currency: 'USD'\n    },\n    {\n        name: 'Spain',\n        transactable: true,\n        countryCode: 'ES',\n        currency: 'EUR'\n    },\n    {\n        name: 'Sri Lanka',\n        transactable: true,\n        countryCode: 'LK',\n        currency: 'USD'\n    },\n    {\n        name: 'Suriname',\n        countryCode: 'SR',\n        currency: 'USD'\n    },\n    {\n        name: 'Svalbard and Jan Mayen',\n        countryCode: 'SJ',\n        currency: 'USD'\n    },\n    {\n        name: 'Swaziland',\n        countryCode: 'SZ',\n        currency: 'USD'\n    },\n    {\n        name: 'Sweden',\n        transactable: true,\n        countryCode: 'SE',\n        currency: 'SEK'\n    },\n    {\n        name: 'Switzerland',\n        transactable: true,\n        countryCode: 'CH',\n        currency: 'CHF'\n    },\n    {\n        name: 'Taiwan',\n        transactable: true,\n        countryCode: 'TW',\n        currency: 'TWD'\n    },\n    {\n        name: 'Tajikistan',\n        transactable: true,\n        countryCode: 'TJ',\n        currency: 'USD'\n    },\n    {\n        name: 'Tanzania',\n        transactable: true,\n        countryCode: 'TZ',\n        currency: 'USD'\n    },\n    {\n        name: 'Thailand',\n        transactable: true,\n        countryCode: 'TH',\n        currency: 'USD'\n    },\n    {\n        name: 'Timor-Leste',\n        countryCode: 'TL',\n        currency: 'USD'\n    },\n    {\n        name: 'Togo',\n        countryCode: 'TG',\n        currency: 'USD'\n    },\n    {\n        name: 'Tokelau',\n        countryCode: 'TK',\n        currency: 'USD'\n    },\n    {\n        name: 'Tonga',\n        countryCode: 'TO',\n        currency: 'USD'\n    },\n    {\n        name: 'Trinidad and Tobago',\n        transactable: true,\n        countryCode: 'TT',\n        currency: 'USD'\n    },\n    {\n        name: 'Tunisia',\n        transactable: true,\n        countryCode: 'TN',\n        currency: 'USD'\n    },\n    {\n        name: 'Turkey',\n        transactable: true,\n        countryCode: 'TR',\n        currency: 'USD'\n    },\n    {\n        name: 'Turkmenistan',\n        transactable: true,\n        countryCode: 'TM',\n        currency: 'USD'\n    },\n    {\n        name: 'Turks and Caicos Islands',\n        countryCode: 'TC',\n        currency: 'USD'\n    },\n    {\n        name: 'Tuvalu',\n        countryCode: 'TV',\n        currency: 'USD'\n    },\n    {\n        name: 'U.S. Outlying Islands',\n        countryCode: 'UM',\n        currency: 'USD'\n    },\n    {\n        name: 'U.S. Virgin Islands',\n        transactable: true,\n        countryCode: 'VI',\n        currency: 'USD'\n    },\n    {\n        name: 'Uganda',\n        transactable: true,\n        countryCode: 'UG',\n        currency: 'USD'\n    },\n    {\n        name: 'Ukraine',\n        transactable: true,\n        countryCode: 'UA',\n        currency: 'USD'\n    },\n    {\n        name: 'United Arab Emirates',\n        transactable: true,\n        countryCode: 'AE',\n        currency: 'USD'\n    },\n    {\n        name: 'United Kingdom',\n        transactable: true,\n        countryCode: 'GB',\n        currency: 'GBP'\n    },\n    {\n        name: 'Uruguay',\n        transactable: true,\n        countryCode: 'UY',\n        currency: 'USD'\n    },\n    {\n        name: 'Uzbekistan',\n        transactable: true,\n        countryCode: 'UZ',\n        currency: 'USD'\n    },\n    {\n        name: 'Vanuatu',\n        countryCode: 'VU',\n        currency: 'USD'\n    },\n    {\n        name: 'Vatican City (Holy See)',\n        transactable: true,\n        countryCode: 'VA',\n        currency: 'EUR'\n    },\n    {\n        name: 'Venezuela',\n        transactable: true,\n        countryCode: 'VE',\n        currency: 'USD'\n    },\n    {\n        name: 'Vietnam',\n        transactable: true,\n        countryCode: 'VN',\n        currency: 'USD'\n    },\n    {\n        name: 'Wallis and Futuna',\n        countryCode: 'WF',\n        currency: 'USD'\n    },\n    {\n        name: 'Yemen',\n        transactable: true,\n        countryCode: 'YE',\n        currency: 'USD'\n    },\n    {\n        name: 'Zambia',\n        transactable: true,\n        countryCode: 'ZM',\n        currency: 'USD'\n    },\n    {\n        name: 'Zimbabwe',\n        transactable: true,\n        countryCode: 'ZW',\n        currency: 'USD'\n    }\n];\nexport var SearchType = /*#__PURE__*/ function(SearchType) {\n    SearchType[\"App\"] = \"App\";\n    SearchType[\"ConsultingService\"] = \"ConsultingService\";\n    SearchType[\"CloudIndustry\"] = \"CloudIndustry\";\n    return SearchType;\n}({});\nexport var Constants, Plan;\n","/* istanbul ignore file */ export const catalogToStorefrontsProducts = {\n    'dynamics-365-for-business-central': 'Dynamics 365 for Business Central',\n    'cortana-intelligence': 'Azure for Cortana Intelligence',\n    'dynamics-365-for-customer-services': 'Dynamics 365 for Customer Services',\n    'dynamics-365-for-field-services': 'Dynamics 365 for Field Services',\n    'dynamics-365-for-operations': 'Dynamics 365 for Financials',\n    'dynamics-365-for-financials': 'Dynamics 365 for Business Central',\n    'dynamics-365-for-project-services-automation': 'Dynamics 365 for Project Services Automation',\n    'dynamics-365-for-sales': 'Dynamics 365 for Sales',\n    'dynamics-365-customer-voice': 'Dynamics 365 Customer Voice',\n    'dynamics-365-human-resources': 'Dynamics 365 Human Resources',\n    'dynamics-365-marketing': 'Dynamics 365 Marketing',\n    'dynamics-365-commerce': 'Dynamics 365 Commerce',\n    'dynamics-365-supply-chain-management': 'Dynamics 365 Supply Chain Management',\n    'dynamics-365-mixed-reality': 'Dynamics 365 Mixed Reality',\n    'dynamics-365-customer-insights': 'Dynamics 365 Customer Insights',\n    Office365: 'Office365',\n    powerapps: 'PowerApps',\n    'power-bi': 'Power BI',\n    'power-automate': 'Power Automate',\n    'power-virtual-agents': 'Power Virtual Agents',\n    'microsoft-365': 'Office365',\n    'dynamics-365-project-operations': 'Dynamics 365 Project Operations',\n    'dynamics-365-project-services': 'Dynamics 365 Project Services',\n    'm365-sa-adoption-and-change-management': 'M365 Sa Adoption And Change Management',\n    'm365-sa-calling-for-microsoft-teams': 'M365 Sa Calling For Microsoft Teams',\n    'm365-sa-cloud-security': 'M365 Sa Cloud Security',\n    'm365-sa-compliance-advisory-services': 'M365 Sa Compliance Advisory Services',\n    'm365-sa-device-deployment-and-management': 'M365 Sa Device Deployment And Management',\n    'm365-sa-firstline-workers': 'M365 Sa Firstline Workers',\n    'm365-sa-identity-and-access-management': 'M365 Sa Identity And Access Management',\n    'm365-sa-information-protection-and-governance': 'M365 Sa Information Protection And Governance',\n    'm365-sa-insider-risk': 'M365 Sa Insider Risk',\n    'm365-sa-knowledge-and-insights': 'M365 Sa Knowledge And Insights',\n    'm365-sa-meeting-rooms-for-microsoft-teams': 'M365 Sa Meeting Rooms For Microsoft Teams',\n    'm365-sa-meetings-for-microsoft-teams': 'M365 Sa Meetings For Microsoft Teams',\n    'm365-sa-microsoft-365-live-events': 'M365 Sa Microsoft 365 Live Events',\n    'm365-sa-mobile-device-management': 'M365 Sa Mobile Device Management',\n    'm365-sa-power-platform-for-teams': 'M365 Sa Power Platform For Teams',\n    'm365-sa-teams-custom-solutions': 'M365 Sa Teams Custom Solutions',\n    'm365-sa-teamwork-deployment': 'M365 Sa Teamwork Deployment',\n    'm365-sa-threat-protection': 'M365 Sa Threat Protection',\n    'm365-sa-workplace-analytics': 'M365 Sa Workplace Analytics',\n    PowerPages: 'Power Pages'\n};\nexport const BackendKeyToURLKey = {\n    home: 'apps',\n    featured: 'featured',\n    trending: 'trending',\n    featuredtestdrives: 'top-test-drives',\n    operatingsystems: 'operating-systems',\n    devops: 'devops',\n    inframigration: 'onprem-to-cloud-migration',\n    Analytics_MP: 'analytics',\n    dataInsights: 'data-insights',\n    analytics: 'data-analytics',\n    bigData: 'big-data',\n    predictiveAnalytics: 'predictive-analytics',\n    realTimeStreamingAnalytics: 'real-time-streaming-analytics',\n    All_Analytics_MP: 'all',\n    CognitiveServices_MP: 'ai-plus-machine-learning',\n    AutomatedML: 'automated-ml',\n    BotService: 'bot-service',\n    BusinessRoboticAutomation: 'business-robotic-process-automation',\n    CognitiveService: 'cognitive-service',\n    DataLabelling: 'data-labelling',\n    DataPreparation: 'data-preparation',\n    KnowledgeMining: 'knowledge-mining',\n    MlOperations: 'ml-operations',\n    MachineLearning: 'ml-service',\n    All_CognitiveServices_MP: 'all',\n    AADapps: 'azure-active-directory-apps',\n    Featured: 'featured',\n    BusinessManagement: 'business-management',\n    Collaboration: 'collaboration',\n    Construction: 'construction',\n    Consumer: 'consumer',\n    ContentManagement: 'content-management',\n    CRM: 'crm',\n    DataServices: 'data-services',\n    DeveloperServices: 'developer-services',\n    ECommerce: 'ecommerce',\n    Education: 'education',\n    ERP: 'erp',\n    Finance: 'finance',\n    Health: 'health',\n    HR: 'human-resources',\n    ITInfra: 'it-infrastructure',\n    Mail: 'mail',\n    Marketing: 'marketing',\n    Media: 'media',\n    Productivity: 'productivity',\n    ProjectMgmt: 'project-management',\n    Security: 'security',\n    Social: 'social',\n    SupplyMgmt: 'supply-management',\n    Telecommunications: 'telecommunications',\n    tools: 'tools',\n    Travel: 'travel',\n    WebDesign: 'web-design-hosting',\n    'media-and-communications': 'media-and-communications',\n    'architecture-and-construction': 'architecture-and-construction',\n    'hospitality-and-travel': 'hospitality-and-travel',\n    'real-estate': 'real-estate',\n    'other-public-sector-industries': 'other-public-sector-industries',\n    Blockchain_MP: 'blockchain',\n    BlockChainAppAccelerators_MP: 'app-accelerators',\n    BlockChainSingleNodeLedgers_MP: 'single-node-ledger',\n    BlockChainMultiNodeLedgers_MP: 'multi-node-ledger',\n    BlockchainTools_MP: 'tools',\n    All_Blockchain_MP: 'all',\n    Compute_MP: 'compute',\n    recommended: 'featured',\n    applicationInfrastructure: 'application-infrastructure',\n    operatingSystems: 'operating-systems',\n    cache: 'cache',\n    All_Compute_MP: 'all',\n    Containers_MP: 'containers',\n    WebDH: 'featured',\n    ContainerApps_MP: 'container-apps',\n    All_Containers_MP: 'all',\n    Databases_MP: 'databases',\n    noSql: 'nosql-databases',\n    relationalDatabases: 'relational-databases',\n    ledgerBlockchainDatabases: 'ledger-blockchain-databases',\n    dataLakes: 'data-lakes',\n    dataWarehouse: 'data-warehouse',\n    All_Databases_MP: 'all',\n    DeveloperTools_MP: 'developer-tools',\n    toolsDeveloperTools: 'tools',\n    scripts: 'scripts',\n    devService: 'devService',\n    All_DeveloperTools_MP: 'all',\n    Devops_MP: 'devops',\n    All_Devops_MP: 'all',\n    Identity_MP: 'identity',\n    Identity: 'identity-access-mgmt',\n    All_Identity_MP: 'all',\n    Integration_MP: 'integration',\n    messaging: 'messaging',\n    All_Integration_MP: 'all',\n    InternetOfThings_MP: 'internet-of-things',\n    IoTConnectivity: 'iot-connectivity',\n    IoTSolutions: 'iot-solutions',\n    IOTVisualizations: 'data-analytics-visualizations',\n    IoTSecurity: 'iot-security',\n    IoTAndIIoTPlatforms: 'iot-iiot-platforms',\n    IoTCoreServices: 'iot-core-services',\n    IoTEdgeModules: 'iot-edge-modules',\n    All_InternetOfThings_MP: 'all',\n    MonitoringAndManagement_MP: 'management-tools',\n    managementSolutions: 'management-solutions',\n    bizApps: 'business-applications',\n    All_MonitoringAndManagement_MP: 'all',\n    MonitoringAndDiagnostics_MP: 'monitoring-and-diagnostics',\n    All_MonitoringAndDiagnostics_MP: 'all',\n    Media_MP: 'media',\n    mediaServices: 'media-services',\n    contentProtection: 'content-protection',\n    liveOnDemandStreaming: 'live-and-on-demand-streaming',\n    All_Media_MP: 'all',\n    Migration_MP: 'migration',\n    dataMigration: 'data-migration',\n    All_Migration_MP: 'all',\n    MixedReality_MP: 'mixed-reality',\n    gaming: 'gaming',\n    All_MixedReality_MP: 'all',\n    Networking_MP: 'networking',\n    applianceManagers: 'appliance-managers',\n    connectivity: 'connectivity',\n    firewalls: 'firewalls',\n    loadBalancers: 'load-balancers',\n    All_Networking_MP: 'all',\n    Security_MP: 'security',\n    identityAccessManagement: 'identity-and-access-management',\n    SecurityProtection: 'threat-protection',\n    informationProtection: 'information-protection',\n    All_Security_MP: 'all',\n    Storage_MP: 'storage',\n    backupAndRecovery: 'backup-and-recovery',\n    hybridStorageAndGlobalDataAccess: 'enterprise-hybrid-storage',\n    fileSharing: 'file-sharing',\n    dataLifecycleManagement: 'data-lifecycle-management',\n    All_Storage_MP: 'all',\n    WebAndMobile_MP: 'web',\n    blogsCMS: 'blogs-cmss',\n    starterSites: 'starter-web-apps',\n    eCommerce: 'ecommerce',\n    appFrameworks: 'web-app-frameworks',\n    web_recommended: 'web-apps',\n    All_WebAndMobile_MP: 'all',\n    trials: 'trials',\n    freeTrial: 'free-trial',\n    testDrive: 'test-drive',\n    operatingSystem: 'operating-system',\n    linux: 'linux',\n    windows: 'windows',\n    publisher: 'publisher',\n    microsoft: 'microsoft',\n    partners: 'partners',\n    pricingModel: 'pricing-model',\n    byol: 'byol',\n    free: 'pricing-free',\n    payAsYouGo: 'pay-as-you-go',\n    paid: 'pricing-paid',\n    virtualMachineImages: 'virtual-machine-images',\n    solutionTemplates: 'solution-templates',\n    SaaS: 'product-type',\n    Assessment: 'assessment',\n    Briefing: 'briefing',\n    Implementation: 'implementation',\n    ProofofConcept: 'proof-of-concept',\n    Training: 'training',\n    Workshop: 'workshop',\n    getStarted: 'consulting-services',\n    appModernization: 'app-modernization',\n    archive: 'archive',\n    artificialIntelligence: 'ai-plus-machine-learning',\n    backup: 'backup',\n    bigdata: 'big-data',\n    dataPlatform: 'data-platform',\n    datacenterManagemenet: 'datacenter-managemenet',\n    disasterRecovery: 'disaster-recovery',\n    identity: 'identity',\n    internetOfThings: 'internet-of-things',\n    migration: 'migration',\n    networking: 'networking',\n    security: 'security',\n    storage: 'storage',\n    Automotive_CS: 'automotive',\n    Agriculture: 'agriculture',\n    ArchitectureConstruction_CS: 'architecture-construction',\n    Distribution: 'distribution',\n    FinancialServices: 'finance',\n    Government: 'government',\n    HealthCareandLifeSciences: 'healthcare',\n    HospitalityTravel_CS: 'hospitality-travel',\n    Manufacturing: 'manufacturing',\n    MediaCommunications_CS: 'Media-communications',\n    ProfessionalServices: 'professional-services',\n    RealEstate_CS: 'real-estate',\n    RetailandConsumerGoods: 'retail',\n    Sustainability_AS: 'sustainability',\n    OtherPublicSectorIndustries_CS: 'other-public-sector-industries',\n    country: 'country',\n    AF: 'country-afghanistan',\n    AL: 'country-albania',\n    DZA: 'country-algeria',\n    AD: 'country-andorra',\n    AO: 'country-angola',\n    AR: 'country-argentina',\n    AM: 'country-armenia',\n    AU: 'country-australia',\n    AT: 'country-austria',\n    AZ: 'country-azerbaijan',\n    BH: 'country-bahrain',\n    BD: 'country-bangladesh',\n    BB: 'country-barbados',\n    BY: 'country-belarus',\n    BE: 'country-belgium',\n    BZ: 'country-belize',\n    BM: 'country-bermuda',\n    BO: 'country-bolivia',\n    BA: 'country-bosnia and herzegovina',\n    BW: 'country-botswana',\n    BR: 'country-brazil',\n    BN: 'country-brunei',\n    BG: 'country-bulgaria',\n    CM: 'country-cameroon',\n    CA: 'country-canada',\n    CV: 'country-cabo-verde',\n    KY: 'country-cayman-islands',\n    CL: 'country-chile',\n    CO: 'country-colombia',\n    CR: 'country-costa-rica',\n    CI: 'country-côte-divoire',\n    CW: 'country-curaçao',\n    CY: 'country-cyprus',\n    CZ: 'country-czech-republic',\n    DK: 'country-denmark',\n    DO: 'country-dominican-republic',\n    EC: 'country-ecuador',\n    EG: 'country-egypt',\n    SV: 'country-el-salvador',\n    EE: 'country-estonia',\n    ET: 'country-ethiopia',\n    FO: 'country-faroe-islands',\n    FJ: 'country-fiji',\n    FI: 'country-finland',\n    FR: 'country-france',\n    GE: 'country-georgia',\n    DE: 'country-germany',\n    GH: 'country-ghana',\n    GR: 'country-greece',\n    GT: 'country-guatemala',\n    HN: 'country-honduras',\n    HK: 'country-hong-kong',\n    HU: 'country-hungary',\n    IS: 'country-iceland',\n    IN: 'country-india',\n    ID: 'country-indonesia',\n    IQ: 'country-iraq',\n    IE: 'country-ireland',\n    IL: 'country-israel',\n    IT: 'country-italy',\n    JM: 'country-jamaica',\n    JP: 'country-japan',\n    JO: 'country-jordan',\n    KZ: 'country-kazakhstan',\n    KE: 'country-kenya',\n    KR: 'country-korea',\n    KW: 'country-kuwait',\n    KG: 'country-kyrgyzstan',\n    LV: 'country-latvia',\n    LB: 'country-lebanon',\n    LY: 'country-libya',\n    LI: 'country-liechtenstein',\n    LT: 'country-lithuania',\n    LU: 'country-luxembourg',\n    MO: 'country-macao-sar',\n    MK: 'country-macedonia',\n    MY: 'country-malaysia',\n    MT: 'country-malta',\n    MX: 'country-mexico',\n    MD: 'country-moldova',\n    MC: 'country-monaco',\n    MN: 'country-mongolia',\n    ME: 'country-montenegro',\n    MA: 'country-morocco',\n    NA: 'country-namibia',\n    NP: 'country-nepal',\n    NL: 'country-netherlands',\n    NI: 'country-nicaragua',\n    NZ: 'country-newzealand',\n    NG: 'country-nigeria',\n    NO: 'country-norway',\n    OM: 'country-oman',\n    PK: 'country-pakistan',\n    PS: 'country-palestinian-authority',\n    PA: 'country-panama',\n    PY: 'country-paraguay',\n    PE: 'country-peru',\n    PH: 'country-philippines',\n    PL: 'country-poland',\n    PT: 'country-portugal',\n    PR: 'country-puerto-rico',\n    QA: 'country-qatar',\n    RO: 'country-romania',\n    RU: 'country-russia',\n    RW: 'country-rwanda',\n    KN: 'country-saint-kitts-and-nevis',\n    SA: 'country-saudi-arabia',\n    SN: 'country-Senegal',\n    RS: 'country-serbia',\n    SG: 'country-singapore',\n    SK: 'country-slovakia',\n    SI: 'country-slovenia',\n    ZA: 'country-southafrica',\n    ES: 'country-spain',\n    LK: 'country-sri-lanka',\n    SE: 'country-sweden',\n    CH: 'country-switzerland',\n    TW: 'country-taiwan',\n    TJ: 'country-tajikistan',\n    TZ: 'country-tanzania',\n    TH: 'country-thailand',\n    TT: 'country-trinidad-and-tobago',\n    TN: 'country-tunisia',\n    TR: 'country-turkey',\n    TM: 'country-turkmenistan',\n    VA: 'country-vatican-city',\n    VI: 'country-virgin-islands-of-the-united-states',\n    UG: 'country-uganda',\n    UA: 'country-ukraine',\n    AE: 'country-united-arab-emirates',\n    GB: 'country-unitedkingdom',\n    US: 'country-unitedstates',\n    UY: 'country-uruguay',\n    UZ: 'country-uzbekistan',\n    VE: 'country-venezuela',\n    VN: 'country-vietnam',\n    YE: 'country-yemen',\n    ZM: 'country-zambia',\n    ZW: 'country-zimbabwe'\n};\n","import { DataMap } from '@shared/utils/dataMapping';\nimport { BackendKeyToURLKey } from '@shared/utils/dataMappingConstants';\nimport { Constants } from '@shared/utils/constants';\nimport { bitMasksMatchFilter } from '@shared/utils/datamappingHelpers';\nexport function getProductTitleForTile(serviceProducts) {\n    let products = '';\n    // eslint-disable-next-line array-callback-return\n    Object.keys(DataMap.products).map((value)=>{\n        if (serviceProducts && bitMasksMatchFilter(serviceProducts, DataMap.products[`${value}`])) {\n            // If the product is a d365 sub prod just insert d365 once for all the sub products, else insert the product\n            if (DataMap.products.Dynamics365.ShortcutFilters.indexOf(value) > -1 && products.indexOf(DataMap.products.Dynamics365.LongTitle) < 0) {\n                products += DataMap.products.Dynamics365.LongTitle + ' | ';\n            } else if (DataMap.products.Dynamics365.ShortcutFilters.indexOf(value) < 0) {\n                // !!! Temporary HACK: If the product is 'Power BI apps' we want to display it as 'Power BI'\n                // in Consulting services tab alone.\n                let longTitle = DataMap.products[`${value}`].LongTitle;\n                if (longTitle === 'Power BI apps') {\n                    longTitle = 'Power BI';\n                }\n                products += longTitle + ' | ';\n            }\n        }\n    });\n    return products.substring(0, products.lastIndexOf('|'));\n}\nfunction getServicePricingByCountry(multiGeoCountryPricings, country) {\n    var _multiGeoCountryPricings_find;\n    return multiGeoCountryPricings === null || multiGeoCountryPricings === void 0 ? void 0 : (_multiGeoCountryPricings_find = multiGeoCountryPricings.find((multiGeoCountryPricing)=>{\n        var _multiGeoCountryPricing_countryRegion;\n        return ((_multiGeoCountryPricing_countryRegion = multiGeoCountryPricing.countryRegion) === null || _multiGeoCountryPricing_countryRegion === void 0 ? void 0 : _multiGeoCountryPricing_countryRegion.toLowerCase()) === (country === null || country === void 0 ? void 0 : country.toLowerCase());\n    })) === null || _multiGeoCountryPricings_find === void 0 ? void 0 : _multiGeoCountryPricings_find.pricing;\n}\nexport function getServicePricingByCountryWithFallback(multiGeoCountryPricings, country) {\n    var _multiGeoCountryPricings_;\n    return getServicePricingByCountry(multiGeoCountryPricings, country) || getServicePricingByCountry(multiGeoCountryPricings, Constants.usCountryCode) || (multiGeoCountryPricings === null || multiGeoCountryPricings === void 0 ? void 0 : (_multiGeoCountryPricings_ = multiGeoCountryPricings[0]) === null || _multiGeoCountryPricings_ === void 0 ? void 0 : _multiGeoCountryPricings_.pricing);\n}\nexport function getCountryRegionByCountry(detailInformation, country) {\n    if (country && detailInformation && detailInformation.MultiCountryRegions && detailInformation.MultiCountryRegions.length > 0) {\n        for(let i = 0; i < detailInformation.MultiCountryRegions.length; i++){\n            if (detailInformation.MultiCountryRegions[`${i}`].countryRegion && detailInformation.MultiCountryRegions[`${i}`].countryRegion.toLowerCase() === country.toLowerCase()) {\n                return detailInformation.MultiCountryRegions[`${i}`];\n            }\n        }\n    } else if (detailInformation && detailInformation.countryRegion) {\n        return {\n            countryRegion: detailInformation.countryRegion,\n            regions: detailInformation.regions\n        };\n    }\n    return null;\n}\nexport function findBestMatchCountryCode(multiCountryServicePricing, country) {\n    if (country && multiCountryServicePricing && multiCountryServicePricing.length > 0) {\n        for(let i = 0; i < multiCountryServicePricing.length; i++){\n            if (multiCountryServicePricing[`${i}`].countryRegion && multiCountryServicePricing[`${i}`].countryRegion.toLowerCase() === country.toLowerCase()) {\n                return multiCountryServicePricing[`${i}`].countryRegion;\n            }\n        }\n        // Input country not found - return the first country we can find.\n        return multiCountryServicePricing[0].countryRegion;\n    }\n    return null;\n}\nexport function extractCountryCodeFromFilterQueryParam(query) {\n    // Try to get (AMP) filter-country query param.\n    if (typeof (query === null || query === void 0 ? void 0 : query.filters) === 'string') {\n        const subFilters = query.filters.split(';');\n        if (subFilters && subFilters.length > 0) {\n            for(let i = 0; i < subFilters.length; i++){\n                if (subFilters[`${i}`] && subFilters[`${i}`].toLowerCase().indexOf('country-') !== -1) {\n                    for(const key in BackendKeyToURLKey){\n                        if (BackendKeyToURLKey[`${key}`].toLowerCase() === subFilters[`${i}`].toLowerCase()) {\n                            return key;\n                        }\n                    }\n                }\n            }\n        }\n    }\n    return null;\n}\nexport function extractCountryCodeFromCountryQueryParam(query) {\n    return query && query.country ? query.country : null;\n}\nexport function extractCountryCodeFromQueryParam(query) {\n    // Try to get country code from country(AppSource) query param.\n    let countryCode = extractCountryCodeFromCountryQueryParam(query);\n    if (countryCode) {\n        return countryCode;\n    }\n    // Try to get country code from filter-country(AMP) query param.  }\n    countryCode = extractCountryCodeFromFilterQueryParam(query);\n    if (countryCode) {\n        return countryCode;\n    }\n    return null;\n}\nexport function createCountryFilterQueryParam(countryCode, isAppSource) {\n    if (isAppSource) {\n        return {\n            [Constants.countryCodeQueryParam]: countryCode\n        };\n    } else {\n        return {\n            [Constants.FilterQuery.filters]: BackendKeyToURLKey[`${countryCode}`]\n        };\n    }\n}\nexport function getReplacedCountryQueryParam(query, newCountryCode) {\n    if (!query || !newCountryCode) {\n        return null;\n    }\n    // AppSource\n    if (query.country) {\n        return {\n            [Constants.countryCodeQueryParam]: newCountryCode\n        };\n    }\n    // AMP\n    if (query.filters) {\n        const countryCodeToReplace = extractCountryCodeFromFilterQueryParam(query);\n        // No country code to replace.\n        let newFilter;\n        if (!countryCodeToReplace) {\n            if (query.filters.length > 0) {\n                newFilter = query.filters += ';' + BackendKeyToURLKey[`${newCountryCode}`];\n            } else {\n                newFilter = BackendKeyToURLKey[`${newCountryCode}`];\n            }\n        } else {\n            newFilter = query.filters.toLowerCase().replace(BackendKeyToURLKey[`${countryCodeToReplace}`], BackendKeyToURLKey[`${newCountryCode}`]);\n        }\n        return {\n            [Constants.FilterQuery.filters]: newFilter\n        };\n    }\n    return null;\n}\nexport function getStartingPriceCurrency(multiCountryPricing, country) {\n    const pricing = getServicePricingByCountryWithFallback(multiCountryPricing, country);\n    return (pricing === null || pricing === void 0 ? void 0 : pricing.currencyCode) || Constants.usdCurrency;\n}\nexport function getStartingPriceHeader(multiCountryPricing, country, locale, context) {\n    var _pricing_planPrices;\n    const pricing = getServicePricingByCountryWithFallback(multiCountryPricing, country);\n    const currency = pricing === null || pricing === void 0 ? void 0 : pricing.currencyCode;\n    const planPrice = pricing === null || pricing === void 0 ? void 0 : (_pricing_planPrices = pricing.planPrices) === null || _pricing_planPrices === void 0 ? void 0 : _pricing_planPrices[0];\n    const header = (planPrice === null || planPrice === void 0 ? void 0 : planPrice.price) ? planPrice.price.toLocaleString(locale, {\n        style: 'currency',\n        currency,\n        maximumFractionDigits: 0,\n        minimumFractionDigits: 0\n    }) : context.loc('Pricing_Free');\n    return header;\n}\n","function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nfunction _object_spread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        var ownKeys = Object.keys(source);\n        if (typeof Object.getOwnPropertySymbols === \"function\") {\n            ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n            }));\n        }\n        ownKeys.forEach(function(key) {\n            _define_property(target, key, source[key]);\n        });\n    }\n    return target;\n}\nfunction ownKeys(object, enumerableOnly) {\n    var keys = Object.keys(object);\n    if (Object.getOwnPropertySymbols) {\n        var symbols = Object.getOwnPropertySymbols(object);\n        if (enumerableOnly) {\n            symbols = symbols.filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n            });\n        }\n        keys.push.apply(keys, symbols);\n    }\n    return keys;\n}\nfunction _object_spread_props(target, source) {\n    source = source != null ? source : {};\n    if (Object.getOwnPropertyDescriptors) {\n        Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n        ownKeys(Object(source)).forEach(function(key) {\n            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n    }\n    return target;\n}\nfunction _object_without_properties(source, excluded) {\n    if (source == null) return {};\n    var target = _object_without_properties_loose(source, excluded);\n    var key, i;\n    if (Object.getOwnPropertySymbols) {\n        var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n        for(i = 0; i < sourceSymbolKeys.length; i++){\n            key = sourceSymbolKeys[i];\n            if (excluded.indexOf(key) >= 0) continue;\n            if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n            target[key] = source[key];\n        }\n    }\n    return target;\n}\nfunction _object_without_properties_loose(source, excluded) {\n    if (source == null) return {};\n    var target = {};\n    var sourceKeys = Object.keys(source);\n    var key, i;\n    for(i = 0; i < sourceKeys.length; i++){\n        key = sourceKeys[i];\n        if (excluded.indexOf(key) >= 0) continue;\n        target[key] = source[key];\n    }\n    return target;\n}\nimport { Constants } from './constants';\nimport datamapJson from '@appsource/datamapping/datamappingTaxonomy.json';\nimport oneTaxonomyDatamapJson from '@src/shared/oneTaxonomy/oneTaxonomyDatamapping.json';\nimport { isOneTaxonomyEnabled } from '@shared/oneTaxonomy/utils';\nconst MAX_BITMASK_INDEX = Math.pow(2, 30);\nconst CATEGORY_WITH_SUB_PREFIX = 'sub';\nconst URLGROUP_SEPERATOR_NAME = '_mask_';\nconst getDatamappingJsonFile = ()=>{\n    return isOneTaxonomyEnabled() ? oneTaxonomyDatamapJson.dataMappings : datamapJson.dataMappings;\n};\nvar FilterType = /*#__PURE__*/ function(FilterType) {\n    FilterType[\"product\"] = \"product\";\n    FilterType[\"category\"] = \"category\";\n    FilterType[\"industry\"] = \"industry\";\n    FilterType[\"cloudIndustries\"] = \"cloudIndustries\";\n    FilterType[\"serviceType\"] = \"serviceType\";\n    FilterType[\"filters\"] = \"filters\";\n    return FilterType;\n}(FilterType || {});\nconst filterTypeToFilterGroup = {\n    [\"product\"]: \"product\",\n    [\"category\"]: \"category\",\n    [\"industry\"]: \"industry\",\n    [\"cloudIndustries\"]: Constants.CloudsIndustry.bitmaskPrefix + \"industry\",\n    [\"serviceType\"]: \"serviceType\",\n    [\"filters\"]: \"filters\"\n};\nconst categoryFilterGroup = {\n    products: \"product\",\n    categories: \"category\",\n    industries: \"industry\",\n    cloudIndustries: \"cloudIndustries\",\n    serviceTypes: \"serviceType\",\n    pricingModel: \"filters\",\n    ratings: \"filters\",\n    trials: \"filters\",\n    appCompliance: \"filters\",\n    AzureBenefitEligible: \"filters\",\n    productType: \"filters\",\n    CopilotExtension: \"filters\"\n};\nconst categoryUrlGroup = _object_spread_props(_object_spread({}, categoryFilterGroup), {\n    cloudIndustries: \"industry\"\n});\nconst subCategoryUrlGroup = _object_spread_props(_object_spread({}, Object.fromEntries(Object.keys(categoryFilterGroup).map((key)=>[\n        key,\n        key\n    ]))), {\n    cloudIndustries: Constants.DataMapCollectionKeys.industries\n});\nconst productsToCategoriesReferences = {\n    [Constants.CategoriesDataMapCollectionKeys.addIns]: [\n        'analytics',\n        'ai-plus-machine-learning',\n        'collaboration',\n        'Commerce',\n        'compliance-and-legal',\n        'customer-service',\n        'finance',\n        'geolocation',\n        'human-resources',\n        'internet-of-things',\n        'it-and-management-tools',\n        'marketing',\n        'operations-and-supply-chain',\n        'productivity',\n        'task-and-project-management',\n        'Sales'\n    ],\n    [Constants.CategoriesDataMapCollectionKeys.powerBiVisuals]: [\n        'pbiv-comparison',\n        'pbiv-correlation',\n        'pbiv-distribution',\n        'pbiv-flow',\n        'Filters',\n        'Infographics',\n        'KPI',\n        'pbiv-narratives',\n        'Maps',\n        'pbiv-other',\n        'pbiv-part-to-whole',\n        'pbiv-r-visuals',\n        'Time'\n    ],\n    [Constants.CategoriesDataMapCollectionKeys.office]: [\n        'analytics',\n        'collaboration',\n        'task-and-project-management',\n        'Connectors',\n        'customer-service',\n        'finance',\n        'human-resources',\n        'it-and-management-tools',\n        'marketing',\n        'operations-and-supply-chain',\n        'productivity',\n        'Sales',\n        'Utilities',\n        'ContentManagement',\n        'FileManagers',\n        'CRM',\n        'NewsWeather',\n        'Reference',\n        'SiteDesign',\n        'Social',\n        'TrainingAndTutorial'\n    ]\n};\nconst _getDatamappingJsonFile = getDatamappingJsonFile(), { categories: categoriesMapping } = _getDatamappingJsonFile, restMappings = _object_without_properties(_getDatamappingJsonFile, [\n    \"categories\"\n]);\nexport const DataMap = getDatamappingJsonFile();\nconst maskCounters = {};\nconst increaseMaskIndex = (currentMask)=>{\n    currentMask.index *= 2;\n    if (currentMask.index > MAX_BITMASK_INDEX) {\n        currentMask.mask++;\n        currentMask.index = 1;\n    }\n};\nconst calculateShortcutUrlKey = ({ ShortcutFilters, UrlKey })=>{\n    if (ShortcutFilters) {\n        return ShortcutFilters.map((currentShortcutUrl)=>{\n            var _DataMap_products_;\n            return (_DataMap_products_ = DataMap.products[`${currentShortcutUrl}`]) === null || _DataMap_products_ === void 0 ? void 0 : _DataMap_products_.UrlKey;\n        }).join(';');\n    }\n    return UrlKey;\n};\nconst getBaseFilterGroup = ({ mask, filterType })=>{\n    return `${filterTypeToFilterGroup[filterType]}${URLGROUP_SEPERATOR_NAME}${mask}`;\n};\nconst getFilterGroup = ({ dataCollectionKey, mask, filterType, isBaseFilterGroup })=>{\n    const filterGroup = getBaseFilterGroup({\n        mask,\n        filterType\n    });\n    return isBaseFilterGroup ? filterGroup : categoryFilterGroup[`${dataCollectionKey}`];\n};\nconst getDataValueBitMask = ({ dataCollectionKey, isBaseFilterGroup })=>{\n    const currentMask = maskCounters[`${dataCollectionKey}`];\n    const filterGroup = getFilterGroup({\n        dataCollectionKey,\n        filterType: categoryFilterGroup[`${dataCollectionKey}`],\n        mask: currentMask.mask,\n        isBaseFilterGroup\n    });\n    const filterInfo = {\n        FilterGroup: filterGroup,\n        FilterID: currentMask.index\n    };\n    return filterInfo;\n};\nconst initDataValue = ({ dataValueKey, dataCollectionKey, dataValue, isBaseFilterGroup, isSubDataValue })=>{\n    const currentMask = maskCounters[`${dataCollectionKey}`];\n    const filterInfo = getDataValueBitMask({\n        dataCollectionKey,\n        isBaseFilterGroup\n    });\n    const { IsReference, SubCategoryDataMapping, IsChildFilter } = dataValue;\n    if (!SubCategoryDataMapping && !IsReference) {\n        increaseMaskIndex(currentMask);\n    }\n    Object.assign(dataValue, _object_spread_props(_object_spread({}, filterInfo), {\n        UrlGroup: isSubDataValue ? `${CATEGORY_WITH_SUB_PREFIX}${subCategoryUrlGroup[dataCollectionKey]}` : categoryUrlGroup[`${dataCollectionKey}`],\n        ShortcutUrlKey: calculateShortcutUrlKey(dataValue),\n        IsChildFilter: IsChildFilter || isSubDataValue\n    }));\n};\nconst initMaskCounters = (dataCollectionKey)=>{\n    if (!maskCounters[`${dataCollectionKey}`]) {\n        maskCounters[`${dataCollectionKey}`] = {\n            mask: 1,\n            index: 1\n        };\n    }\n};\nconst initCollection = ({ dataCollectionKey, dataCollection })=>{\n    initMaskCounters(dataCollectionKey);\n    Object.entries(dataCollection).forEach(([dataValueKey, dataValue])=>{\n        initDataValue({\n            dataValueKey,\n            dataCollectionKey,\n            dataValue,\n            isBaseFilterGroup: dataCollectionKey === Constants.DataMapCollectionKeys.products,\n            isSubDataValue: false\n        });\n        Object.values(dataValue.SubCategoryDataMapping || {}).forEach((subCategoryCollectionValue)=>{\n            initDataValue({\n                dataValueKey,\n                dataCollectionKey,\n                dataValue: subCategoryCollectionValue,\n                isBaseFilterGroup: true,\n                isSubDataValue: true\n            });\n        });\n    });\n};\nconst createCategoryReference = (id)=>{\n    return {\n        [`${id}`]: {\n            IsReference: true,\n            HideReferenceSubCategories: true\n        }\n    };\n};\nconst updateCategoriesReferences = ()=>{\n    const categoriesReference = Object.fromEntries(Object.entries(productsToCategoriesReferences).map(([productCategoryReference, productCategoryTaxonomy])=>{\n        return [\n            productCategoryReference,\n            productCategoryTaxonomy.filter((uniqueFilter)=>DataMap.categories.default[`${uniqueFilter}`]).reduce((acc, productCategoryTaxonomy)=>_object_spread({}, acc, createCategoryReference(productCategoryTaxonomy)), {})\n        ];\n    }));\n    DataMap.categories = _object_spread({}, DataMap.categories, categoriesReference);\n};\nconst initDataMap = ()=>{\n    const { categories } = DataMap, collections = _object_without_properties(DataMap, [\n        \"categories\"\n    ]);\n    [\n        ...Object.entries(collections),\n        ...Object.values(categories).map((categoryCollection)=>[\n                Constants.DataMapCollectionKeys.categories,\n                categoryCollection\n            ])\n    ].forEach(([dataCollectionKey, dataCollection])=>{\n        initCollection({\n            dataCollectionKey,\n            dataCollection\n        });\n    });\n    if (isOneTaxonomyEnabled()) {\n        updateCategoriesReferences();\n    }\n};\ninitDataMap();\n","import { Constants } from './constants';\nimport { DataMap } from './dataMapping';\nfunction dataValuesSubCategoryToMap(dataValues) {\n    const dataMapArray = [];\n    Object.keys(dataValues.SubCategoryDataMapping).forEach((dataValueKey)=>{\n        const subDataValues = dataValues.SubCategoryDataMapping[`${dataValueKey}`];\n        if (!subDataValues.IsReference) {\n            dataMapArray.push(subDataValues);\n        }\n    });\n    return dataMapArray;\n}\nfunction dataCollectionToMap(dataCollection) {\n    const dataMapArray = [];\n    Object.keys(dataCollection).forEach((categoryKey)=>{\n        const dataValues = dataCollection[`${categoryKey}`];\n        if (!dataValues.IsReference) {\n            dataMapArray.push(dataValues);\n        }\n        if (dataValues.SubCategoryDataMapping) {\n            dataMapArray.push(...dataValuesSubCategoryToMap(dataValues));\n        }\n    });\n    return dataMapArray;\n}\nexport function dataMapToArray(dataMap) {\n    const dataMapArray = [];\n    Object.keys(dataMap).forEach((dataCollectionKey)=>{\n        if (dataCollectionKey === Constants.DataMapCollectionKeys.categories) {\n            Object.keys(dataMap.categories).forEach((categoryDataKey)=>{\n                const categoryDataMap = dataCollectionToMap(dataMap.categories[`${categoryDataKey}`]);\n                dataMapArray.push(...categoryDataMap);\n            });\n        } else {\n            const dataCollectionMap = dataCollectionToMap(dataMap[`${dataCollectionKey}`]);\n            dataMapArray.push(...dataCollectionMap);\n        }\n    });\n    return dataMapArray;\n}\nfunction getDataCollectionDataValuesFromUrlKey(dataCollection, curatedUrlValue) {\n    let dataValues;\n    Object.keys(dataCollection).forEach((dataKey)=>{\n        if (dataCollection[`${dataKey}`].UrlKey === curatedUrlValue) {\n            dataValues = dataCollection[`${dataKey}`];\n        }\n    });\n    return dataValues;\n}\nexport function getDataValuesFromUrlKey(curatedUrlKey, curatedUrlValue) {\n    const dataCollectionKey = Constants.CuratedQueryParamsToDataMapCollectionKeyMap[`${curatedUrlKey}`];\n    if (!DataMap[`${dataCollectionKey}`]) {\n        return null;\n    }\n    let dataValues;\n    if (dataCollectionKey === Constants.DataMapCollectionKeys.categories) {\n        Object.keys(DataMap.categories).forEach((categoryDataKey)=>{\n            if (!dataValues) {\n                dataValues = getDataCollectionDataValuesFromUrlKey(DataMap.categories[`${categoryDataKey}`], curatedUrlValue);\n            }\n        });\n    } else {\n        dataValues = getDataCollectionDataValuesFromUrlKey(DataMap[`${dataCollectionKey}`], curatedUrlValue);\n    }\n    return dataValues;\n}\nexport function isRequiredPricings() {\n    return false;\n}\n","function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nfunction _object_spread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        var ownKeys = Object.keys(source);\n        if (typeof Object.getOwnPropertySymbols === \"function\") {\n            ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n            }));\n        }\n        ownKeys.forEach(function(key) {\n            _define_property(target, key, source[key]);\n        });\n    }\n    return target;\n}\nfunction ownKeys(object, enumerableOnly) {\n    var keys = Object.keys(object);\n    if (Object.getOwnPropertySymbols) {\n        var symbols = Object.getOwnPropertySymbols(object);\n        if (enumerableOnly) {\n            symbols = symbols.filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n            });\n        }\n        keys.push.apply(keys, symbols);\n    }\n    return keys;\n}\nfunction _object_spread_props(target, source) {\n    source = source != null ? source : {};\n    if (Object.getOwnPropertyDescriptors) {\n        Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n        ownKeys(Object(source)).forEach(function(key) {\n            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n    }\n    return target;\n}\nfunction _object_without_properties(source, excluded) {\n    if (source == null) return {};\n    var target = _object_without_properties_loose(source, excluded);\n    var key, i;\n    if (Object.getOwnPropertySymbols) {\n        var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n        for(i = 0; i < sourceSymbolKeys.length; i++){\n            key = sourceSymbolKeys[i];\n            if (excluded.indexOf(key) >= 0) continue;\n            if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n            target[key] = source[key];\n        }\n    }\n    return target;\n}\nfunction _object_without_properties_loose(source, excluded) {\n    if (source == null) return {};\n    var target = {};\n    var sourceKeys = Object.keys(source);\n    var key, i;\n    for(i = 0; i < sourceKeys.length; i++){\n        key = sourceKeys[i];\n        if (excluded.indexOf(key) >= 0) continue;\n        target[key] = source[key];\n    }\n    return target;\n}\nimport { DataMap } from './dataMapping';\nimport { getTrimmedWords } from './../utils/stringUtils';\nimport { Constants } from './constants';\nconst getAllCategoriesReferences = ()=>{\n    return Object.values(DataMap.categories).map((category)=>Object.values(category)).flat();\n};\nconst createBackendKeysFromSubCategories = (subCategories)=>{\n    return Object.values(subCategories).reduce((acc, curr)=>_object_spread_props(_object_spread({}, acc), {\n            [curr.BackendKey]: curr\n        }), {});\n};\nconst getAllChildKeys = ({ SubCategoryDataMapping, BackendKey })=>{\n    return SubCategoryDataMapping ? Object.values(SubCategoryDataMapping).filter(({ UrlKey })=>UrlKey !== 'all' && BackendKey && SubCategoryDataMapping.all).reduce((acc, { BackendKey: currentBackendKey })=>_object_spread_props(_object_spread({}, acc), {\n            [currentBackendKey]: SubCategoryDataMapping.all.BackendKey\n        }), {}) : {};\n};\nconst createAllChildMap = (categories)=>{\n    return categories.filter(({ BackendKey, SubCategoryDataMapping })=>BackendKey && SubCategoryDataMapping.all).reduce((acc, { BackendKey, SubCategoryDataMapping })=>_object_spread_props(_object_spread({}, acc), {\n            [BackendKey]: SubCategoryDataMapping.all.BackendKey\n        }), {});\n};\nexport const categoryKeyByBackendKey = Object.assign({}, ...getAllCategoriesReferences().map(({ SubCategoryDataMapping })=>{\n    return SubCategoryDataMapping ? createBackendKeysFromSubCategories(SubCategoryDataMapping) : {};\n}));\nexport const industryKeyByBackendKey = Object.assign({}, ...Object.values(DataMap.industries).map(({ SubCategoryDataMapping })=>createBackendKeysFromSubCategories(SubCategoryDataMapping)));\nexport const cloudIndustryKeyByBackendKey = Object.assign({}, ...Object.values(DataMap.cloudIndustries).map(({ SubCategoryDataMapping })=>createBackendKeysFromSubCategories(SubCategoryDataMapping)));\nexport const productKeyByUrlKey = Object.keys(DataMap.products).reduce((acc, curr)=>_object_spread_props(_object_spread({}, acc), {\n        [DataMap.products[`${curr}`].UrlKey]: curr\n    }), {});\nexport const productKeyByBackendKey = Object.keys(DataMap.products).reduce((acc, curr)=>_object_spread_props(_object_spread({}, acc), {\n        [DataMap.products[`${curr}`].BackendKey]: curr\n    }), {});\nconst productKeyByBitmaskFilter = Object.keys(DataMap.products).reduce((acc, curr)=>{\n    const { FilterGroup, FilterID } = DataMap.products[`${curr}`];\n    return _object_spread_props(_object_spread({}, acc), {\n        [`${FilterGroup}_${FilterID}`]: curr\n    });\n}, {});\nconst calculateShortCutBitmask = (productInfo)=>{\n    const { ShortcutFilters, FilterGroup, FilterID } = productInfo || {};\n    return (ShortcutFilters === null || ShortcutFilters === void 0 ? void 0 : ShortcutFilters.length) ? ShortcutFilters.map((productKey)=>DataMap.products[`${productKey}`]).reduce((currMask, shortcutProductInfo)=>{\n        const { FilterGroup: currentFilterGroup, FilterID } = shortcutProductInfo;\n        return _object_spread_props(_object_spread({}, currMask), {\n            [currentFilterGroup]: currMask[`${currentFilterGroup}`] ? currMask[`${currentFilterGroup}`] | FilterID : FilterID\n        });\n    }, {\n        [FilterGroup]: FilterID\n    }) : {\n        [FilterGroup]: FilterID\n    };\n};\nconst productShortcutBitmask = Object.keys(DataMap.products).reduce((acc, curr)=>_object_spread_props(_object_spread({}, acc), {\n        [DataMap.products[`${curr}`].UrlKey]: calculateShortCutBitmask(DataMap.products[`${curr}`])\n    }), {});\nexport const categoryAllChildMap = Object.assign({}, ...getAllCategoriesReferences().map((category)=>getAllChildKeys(category)).concat(createAllChildMap(getAllCategoriesReferences())));\nexport const industryAllChildMap = Object.assign({}, ...Object.values(DataMap.industries).map((industry)=>getAllChildKeys(industry)).concat(createAllChildMap(Object.values(DataMap.industries))));\nexport const cloudIndustryAllChildMap = Object.assign({}, ...Object.values(DataMap.cloudIndustries).map((cloudIndustry)=>getAllChildKeys(cloudIndustry)).concat(createAllChildMap(Object.values(DataMap.cloudIndustries))));\nexport const allChildMaps = {\n    [Constants.DataMapCollectionKeys.categories]: categoryAllChildMap,\n    [Constants.DataMapCollectionKeys.products]: {},\n    [Constants.DataMapCollectionKeys.industries]: industryAllChildMap,\n    [Constants.DataMapCollectionKeys.cloudIndustries]: cloudIndustryAllChildMap,\n    [Constants.DataMapCollectionKeys.serviceTypes]: {},\n    [Constants.DataMapCollectionKeys.trials]: {},\n    [Constants.DataMapCollectionKeys.pricingModel]: {},\n    [Constants.DataMapCollectionKeys.ratings]: {},\n    [Constants.DataMapCollectionKeys.appCompliance]: {},\n    [Constants.DataMapCollectionKeys.azureBenefitEligible]: {},\n    [Constants.DataMapCollectionKeys.copilotExtension]: {},\n    [Constants.DataMapCollectionKeys.productType]: {}\n};\nexport const addAllIdToChildCategory = ({ ids, collection })=>{\n    return ids === null || ids === void 0 ? void 0 : ids.concat(ids.filter((id)=>allChildMaps[`${collection}`][`${id}`]).map((id)=>allChildMaps[`${collection}`][`${id}`]));\n};\nexport const getShortCutBitmask = (productInfo)=>{\n    return productShortcutBitmask[`${productInfo.UrlKey}`];\n};\nconst getUrlKeys = ({ collection })=>{\n    return Object.keys(collection).reduce((urlKeys, currentDataValue)=>{\n        return _object_spread_props(_object_spread({}, urlKeys), {\n            [collection[`${currentDataValue}`].UrlKey]: true\n        });\n    }, {});\n};\nconst getCategoryUrlKeys = ()=>{\n    return _object_spread({}, getUrlKeys({\n        collection: DataMap.categories.default\n    }), getUrlKeys({\n        collection: DataMap.categories.office\n    }), getUrlKeys({\n        collection: DataMap.categories.addIns\n    }), getUrlKeys({\n        collection: DataMap.categories.powerBiVisuals\n    }));\n};\nexport const urlKeys = {\n    [Constants.DataMapCollectionKeys.categories]: getCategoryUrlKeys(),\n    [Constants.DataMapCollectionKeys.products]: getUrlKeys({\n        collection: DataMap.products\n    }),\n    [Constants.DataMapCollectionKeys.industries]: getUrlKeys({\n        collection: DataMap.industries\n    }),\n    [Constants.DataMapCollectionKeys.serviceTypes]: getUrlKeys({\n        collection: DataMap.serviceTypes\n    }),\n    [Constants.DataMapCollectionKeys.trials]: getUrlKeys({\n        collection: DataMap.trials\n    }),\n    [Constants.DataMapCollectionKeys.pricingModel]: getUrlKeys({\n        collection: DataMap.pricingModel\n    }),\n    [Constants.DataMapCollectionKeys.ratings]: getUrlKeys({\n        collection: DataMap.ratings\n    }),\n    [Constants.DataMapCollectionKeys.appCompliance]: getUrlKeys({\n        collection: DataMap.appCompliance\n    }),\n    [Constants.DataMapCollectionKeys.azureBenefitEligible]: getUrlKeys({\n        collection: DataMap.AzureBenefitEligible\n    }),\n    [Constants.DataMapCollectionKeys.copilotExtension]: getUrlKeys({\n        collection: DataMap.CopilotExtension\n    }),\n    [Constants.DataMapCollectionKeys.productType]: getUrlKeys({\n        collection: DataMap.productType\n    }),\n    [Constants.DataMapCollectionKeys.cloudIndustries]: getUrlKeys({\n        collection: DataMap.cloudIndustries\n    })\n};\nconst getSubUrlKeys = ({ collection })=>{\n    return Object.values(collection).filter((collection)=>collection.SubCategoryDataMapping).reduce((urlKeys, { SubCategoryDataMapping: currentSubCategoryKey })=>{\n        const subUrlKeys = Object.fromEntries(Object.keys(currentSubCategoryKey).map((subCategoryKey)=>[\n                currentSubCategoryKey[`${subCategoryKey}`].UrlKey,\n                true\n            ]));\n        return _object_spread({}, urlKeys, subUrlKeys);\n    }, {});\n};\nconst getSubCategoryUrlKeys = ()=>{\n    return Object.values(DataMap.categories).reduce((acc, collection)=>{\n        return _object_spread({}, acc, getSubUrlKeys({\n            collection\n        }));\n    }, {});\n};\nexport const subUrlKeys = {\n    [Constants.DataMapCollectionKeys.categories]: getSubCategoryUrlKeys(),\n    [Constants.DataMapCollectionKeys.products]: getSubUrlKeys({\n        collection: DataMap.products\n    }),\n    [Constants.DataMapCollectionKeys.industries]: getSubUrlKeys({\n        collection: DataMap.industries\n    }),\n    [Constants.DataMapCollectionKeys.serviceTypes]: getSubUrlKeys({\n        collection: DataMap.serviceTypes\n    }),\n    [Constants.DataMapCollectionKeys.trials]: getSubUrlKeys({\n        collection: DataMap.trials\n    }),\n    [Constants.DataMapCollectionKeys.pricingModel]: getSubUrlKeys({\n        collection: DataMap.pricingModel\n    }),\n    [Constants.DataMapCollectionKeys.ratings]: getSubUrlKeys({\n        collection: DataMap.ratings\n    }),\n    [Constants.DataMapCollectionKeys.appCompliance]: getSubUrlKeys({\n        collection: DataMap.appCompliance\n    }),\n    [Constants.DataMapCollectionKeys.azureBenefitEligible]: getSubUrlKeys({\n        collection: DataMap.AzureBenefitEligible\n    }),\n    [Constants.DataMapCollectionKeys.copilotExtension]: getSubUrlKeys({\n        collection: DataMap.CopilotExtension\n    }),\n    [Constants.DataMapCollectionKeys.productType]: getSubUrlKeys({\n        collection: DataMap.productType\n    })\n};\nexport function bitMasksMatch(bitMasks, property, mask) {\n    return !!(bitMasks && bitMasks[`${property}`] && (bitMasks[`${property}`] & mask) > 0);\n}\nexport function bitMasksMatchBitMask(bitMasksA, bitMasksB) {\n    return bitMasksMatch(bitMasksA, bitMasksB.property, bitMasksB.mask);\n}\nexport function bitMasksMatchFilter(bitMasksA, filter) {\n    return bitMasksMatch(bitMasksA, filter.FilterGroup, filter.FilterID);\n}\nexport function bitMasksContainSomeBitMask(bitMasksA, bitMasksB) {\n    for (const key of Object.keys(bitMasksA)){\n        if (bitMasksB[`${key}`] && (bitMasksB[`${key}`] & bitMasksA[`${key}`]) > 0) {\n            return true;\n        }\n    }\n    return false;\n}\nexport function getPrimaryProductUrl(primaryProduct) {\n    if (primaryProduct) {\n        var _DataMap_products_;\n        const property = Object.keys(primaryProduct)[0];\n        const mask = primaryProduct[`${property}`];\n        const maskKey = `${property}_${mask}`;\n        const productKey = productKeyByBitmaskFilter[`${maskKey}`];\n        return (_DataMap_products_ = DataMap.products[`${productKey}`]) === null || _DataMap_products_ === void 0 ? void 0 : _DataMap_products_.UrlKey;\n    }\n}\nexport function getProductFilter(primaryProduct) {\n    for (const key of Object.keys(primaryProduct)){\n        for(const product in DataMap.products){\n            if (DataMap.products[`${product}`].FilterID === primaryProduct[`${key}`] && DataMap.products[`${product}`].FilterGroup === key) {\n                return DataMap.products[`${product}`];\n            }\n        }\n    }\n    return null;\n}\nexport function getCategoryListByProductId(productBitMaskFilter, datamap) {\n    if (!productBitMaskFilter || Object.keys(productBitMaskFilter).length === 0) {\n        return DataMap.categories.default;\n    }\n    const productFilter = getProductFilter(productBitMaskFilter);\n    if (productFilter !== null) {\n        if (datamap) {\n            return datamap.categories[productFilter.categoryList];\n        }\n        return DataMap.categories[productFilter.categoryList];\n    }\n    return null;\n}\nexport function getCategoryListByListName(name, datamap) {\n    if (datamap) {\n        return datamap.categories[`${name}`];\n    }\n    return DataMap.categories[`${name}`];\n}\nconst _DataMap_categories = DataMap.categories, { default: defaultCateogires } = _DataMap_categories, specificCategories = _object_without_properties(_DataMap_categories, [\n    \"default\"\n]);\nexport const overidedCategories = _object_spread({}, Object.values(specificCategories).reduce((acc, curr)=>_object_spread({}, curr, acc), {}), defaultCateogires);\nexport function removeUnmatchedCategories(query, newProductUrlKey, newProductFilterData) {\n    const newQuery = {\n        product: newProductUrlKey\n    };\n    if (!query) {\n        return newQuery;\n    }\n    const L1Product = newProductFilterData;\n    const categoryListL1Product = getCategoryListByProductId(L1Product);\n    const categories = query.category ? getTrimmedWords(query.category, ';') : [];\n    let newCategory = '';\n    for(const key in query){\n        if (key === 'product') {\n            continue;\n        }\n        if (key !== 'category') {\n            newQuery[`${key}`] = query[`${key}`];\n        } else {\n            for(const queryCategory in categories){\n                for(const category in categoryListL1Product){\n                    if (category === categories[`${queryCategory}`]) {\n                        newCategory += category + ';';\n                        break;\n                    }\n                }\n            }\n        }\n    }\n    newCategory = newCategory !== '' ? newCategory.slice(0, -1) : newCategory;\n    newQuery.category = newCategory !== '' ? newCategory : null;\n    return newQuery;\n}\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport * as React from 'react';\nimport { Constants } from '@shared/utils/constants';\nimport { getWindow } from '@shared/services/window';\nimport { SpzaInstrumentService } from '@shared/services/telemetry/spza/spzaInstrument';\nimport { DataMap } from '@shared/utils/dataMapping';\nimport { bitMasksContainSomeBitMask, getShortCutBitmask } from '@shared/utils/datamappingHelpers';\nimport { logger } from '@src/logger';\nimport { isAzureApp, isTransactApp } from '@shared/utils/appUtils';\nexport var OwnerType = /*#__PURE__*/ function(OwnerType) {\n    OwnerType[OwnerType[\"App\"] = 0] = \"App\";\n    OwnerType[OwnerType[\"Service\"] = 1] = \"Service\";\n    return OwnerType;\n}({});\n// temp method to hide badge certificates.\nexport function hideCertificateBadges() {\n    return false;\n}\nexport function getDetailInformation(item, id) {\n    if (item.detailInformation && item.detailInformation[`${id}`]) {\n        return item.detailInformation[`${id}`];\n    } else {\n        return '';\n    }\n}\n// Use this method only for the Array items in the details fields\nexport function getDetailArrayItem(item, id) {\n    if (item.detailInformation && item.detailInformation[`${id}`] && item.detailInformation[`${id}`].length > 0) {\n        return item.detailInformation[`${id}`];\n    } else {\n        return '';\n    }\n}\nexport function getDetailInformationAsDivElement(item, id) {\n    const information = this.getDetailInformation(item, id);\n    if (information) {\n        return /*#__PURE__*/ _jsx(\"div\", {\n            children: information\n        });\n    } else {\n        return null;\n    }\n}\nexport function getListElements(list, maxItems = -1) {\n    const listRender = [];\n    if (list) {\n        for(let i = 0; i < list.length; i++){\n            if (i === maxItems) {\n                break;\n            }\n            listRender.push(/*#__PURE__*/ _jsx(\"div\", {\n                className: \"leftSideItem\",\n                children: list[`${i}`]\n            }));\n        }\n    }\n    return listRender;\n}\nexport function generateClickPayloadAndLogTelemetry(ownerType, ownerId, actionModifier, detailsObject) {\n    const payload = {\n        page: getWindow().location.href,\n        action: Constants.Telemetry.Action.Click,\n        actionModifier,\n        details: JSON.stringify(detailsObject)\n    };\n    if (ownerType === 0) {\n        payload.appName = ownerId;\n    }\n    SpzaInstrumentService.getProvider().probe('logTelemetryInfo', payload);\n    logger.info(payload.details, {\n        action: payload.action,\n        actionModifier: payload.actionModifier\n    });\n}\nexport function generateLinkPayloadAndLogTelemetry(ownerType, ownerId, linkType, link, tabOwner) {\n    const detailsObject = {\n        linkType,\n        link,\n        tab: tabOwner || ''\n    };\n    generateClickPayloadAndLogTelemetry(ownerType, ownerId, Constants.Telemetry.ActionModifier.Link, detailsObject);\n}\nexport function generateFilterClickPayloadAndLogTelemetry(ownerType, ownerId, actionModifier, detailsObject) {\n    const payload = {\n        page: getWindow().location.href,\n        action: Constants.Telemetry.Action.FilterClick,\n        actionModifier,\n        details: JSON.stringify(detailsObject)\n    };\n    if (ownerType === 0) {\n        payload.appName = ownerId;\n    }\n    SpzaInstrumentService.getProvider().probe('logTelemetryInfo', payload);\n    logger.info(payload.details, {\n        action: payload.action,\n        actionModifier: payload.actionModifier\n    });\n}\nexport function generateTileClickPayloadAndLogTelemetry(actionModifier, detailsObject) {\n    const payload = {\n        page: getWindow().location.href,\n        action: Constants.Telemetry.Action.Click,\n        actionModifier,\n        details: JSON.stringify(detailsObject),\n        appName: detailsObject.appName\n    };\n    SpzaInstrumentService.getProvider().probe('logTelemetryInfo', payload);\n    logger.info(payload.details, {\n        action: payload.action,\n        actionModifier: payload.actionModifier,\n        appName: payload.appName\n    });\n}\nexport function generateBreadcrumbPayloadAndLogTelemetry(linkType) {\n    const detailsObject = {\n        linkType,\n        link: getWindow().location.href\n    };\n    const payload = {\n        page: getWindow().location.href,\n        action: Constants.Telemetry.Action.Click,\n        actionModifier: Constants.Telemetry.ActionModifier.Breadcrumb,\n        details: JSON.stringify(detailsObject)\n    };\n    SpzaInstrumentService.getProvider().probe('logTelemetryInfo', payload);\n    logger.info(payload.details, {\n        action: payload.action,\n        actionModifier: payload.actionModifier\n    });\n}\n// Each version of appDetails.tsx (SMP/AMP/Mobile) seem to have a copy of this method\n// They should try and use this common method. It could be marked export at that point\nfunction getDetailHyperlinkElement(ownerId, information, id, locString, parentLocString) {\n    if (!information) {\n        return null;\n    } else {\n        return /*#__PURE__*/ _jsx(\"a\", {\n            className: \"c-hyperlink\",\n            rel: \"noreferrer\",\n            target: \"_blank\",\n            href: information,\n            onClick: ()=>{\n                generateLinkPayloadAndLogTelemetry(0, ownerId, id, information, 'Default');\n            },\n            \"aria-label\": `${parentLocString} ${locString}`,\n            children: locString\n        });\n    }\n}\n/**\n * Gets the elements of the Support section\n * on the App Details page for AMP/Mobile\n * @export\n * @param {*} item (this.props.App passed down from any of the appDetails.tsx)\n * @param {*} context (this.context passed down from any of the appDetails.tsx)\n * @returns Div containing Support link and/or Help Link if available\n */ export function getSupportElements(item, context) {\n    // Both SupportLink and HelpLink are optional and could be null\n    // If both are null, don't show 'Support' section. Otherwise, do\n    if (!getDetailInformation(item, 'SupportLink') && !getDetailInformation(item, 'HelpLink')) {\n        return null;\n    } else {\n        return /*#__PURE__*/ _jsxs(\"div\", {\n            className: \"cell\",\n            children: [\n                /*#__PURE__*/ _jsx(\"header\", {\n                    children: context.loc('App_Support')\n                }),\n                getDetailHyperlinkElement(item.entityId, getDetailInformation(item, 'SupportLink'), 'SupportLink', context.loc('App_Support'), context.loc('App_Support')),\n                getDetailHyperlinkElement(item.entityId, getDetailInformation(item, 'HelpLink'), 'HelpLink', context.loc('App_Help'), context.loc('App_Support'))\n            ]\n        });\n    }\n}\nexport function addSaaSBundleProperties(payloadDetails, app) {\n    if (payloadDetails && app.linkedAddIns && app.linkedAddIns.length > 0) {\n        payloadDetails.isSaaSBundle = true;\n    }\n    return payloadDetails;\n}\nexport function getProductsList(products) {\n    const filterDatamapBlocks = DataMap[`${Constants.filterMaps.products}`];\n    const filteritems = [];\n    Object.keys(filterDatamapBlocks).map((value)=>{\n        const currentDatamapBlock = filterDatamapBlocks[`${value}`];\n        if (products && !currentDatamapBlock.ShortcutFilters && bitMasksContainSomeBitMask(getShortCutBitmask(currentDatamapBlock), products)) {\n            const filter = currentDatamapBlock;\n            if (!filter) {\n                return null;\n            }\n            filteritems.push({\n                title: filter.Title,\n                urlKey: filter.UrlKey\n            });\n        }\n        return null;\n    });\n    return filteritems;\n}\nexport const shouldShowUserTerms = ({ app, billingCountryCode })=>{\n    const { ctaTypes } = app;\n    const CtaRequiringTerms = [\n        Constants.CTAType.Contact,\n        Constants.CTAType.RequestTrial\n    ];\n    return !isAzureApp(app) && !isTransactApp({\n        isEmbedded: false,\n        ctaTypes,\n        appData: app,\n        billingRegion: billingCountryCode\n    }) && !CtaRequiringTerms.includes(ctaTypes[0]);\n};\n","import { routes } from 'routerHistory';\nimport { AppTile } from '@shared/containers/appTile';\nimport { Constants } from '@shared/utils/constants';\nimport { ServiceTile } from '@shared/containers/serviceTile';\nimport CommonTile from '@shared/components/commonTile';\nconst registration = {\n    // The following keys map to the enum values of Constants.EntityType\n    App: {\n        route: routes.marketplace,\n        tileType: AppTile,\n        identifier: 'ApplicationId',\n        statePropertyName: 'apps'\n    },\n    Service: {\n        route: routes.marketplaceServices,\n        tileType: ServiceTile,\n        identifier: 'ServiceId',\n        statePropertyName: 'services'\n    },\n    CloudsIndustry: {\n        route: routes.marketplaceCloudsIndustry,\n        tileType: CommonTile,\n        identifier: 'ApplicationId',\n        statePropertyName: 'cloudsIndustry'\n    }\n};\nexport function getEntityRegistration(entityType) {\n    return registration[Constants.EntityType[`${entityType}`]];\n}\nexport function getEntityRegistrationByView(viewName) {\n    let result = null;\n    for(const entityType in registration){\n        if (registration[`${entityType}`].route && registration[`${entityType}`].route.name === viewName) {\n            result = Constants.EntityType[`${entityType}`];\n            break;\n        }\n    }\n    return result;\n}\nexport function getEntityDataState({ state, entityType }) {\n    return state[registration[Constants.EntityType[`${entityType}`]].statePropertyName];\n}\nexport function getAllEntityTypes() {\n    const keys = Object.keys(Constants.EntityType);\n    const result = [];\n    keys.forEach((key)=>{\n        if (typeof Constants.EntityType[`${key}`] === 'number') {\n            result.push(Constants.EntityType[`${key}`]);\n        }\n    });\n    return result;\n}\n","import { inspect } from 'util';\nimport { pick } from 'lodash-es';\nexport function parseError(error) {\n    if (error instanceof Error) {\n        return pick(error, Object.getOwnPropertyNames(error));\n    } else {\n        return {\n            message: inspect(error)\n        };\n    }\n}\nexport function stringifyError(error) {\n    return JSON.stringify(parseError(error));\n}\n","function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nfunction _object_spread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        var ownKeys = Object.keys(source);\n        if (typeof Object.getOwnPropertySymbols === \"function\") {\n            ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n            }));\n        }\n        ownKeys.forEach(function(key) {\n            _define_property(target, key, source[key]);\n        });\n    }\n    return target;\n}\nfunction ownKeys(object, enumerableOnly) {\n    var keys = Object.keys(object);\n    if (Object.getOwnPropertySymbols) {\n        var symbols = Object.getOwnPropertySymbols(object);\n        if (enumerableOnly) {\n            symbols = symbols.filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n            });\n        }\n        keys.push.apply(keys, symbols);\n    }\n    return keys;\n}\nfunction _object_spread_props(target, source) {\n    source = source != null ? source : {};\n    if (Object.getOwnPropertyDescriptors) {\n        Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n        ownKeys(Object(source)).forEach(function(key) {\n            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n    }\n    return target;\n}\nimport { match } from './filterModule';\nimport { DataMap as constantDataMap } from './dataMapping';\nimport { removeUnmatchedCategories, bitMasksContainSomeBitMask, bitMasksMatch, getShortCutBitmask } from './datamappingHelpers';\nimport { Constants, supportedCountries } from './constants';\nimport { getEntityRegistration } from '../utils/entityRegistration';\nimport { urlPush } from './../routerHistory';\nimport { getWindow } from '../services/window';\nimport { SpzaInstrumentService } from '../services/telemetry/spza/spzaInstrument';\nimport { isPureObject } from './objectUtils';\nimport * as embedHostUtils from '../../embed/embedHostUtils';\nimport { logger } from '@src/logger';\nimport { getProductByUrlKey } from '@shared/utils/appUtils';\nimport { isOneTaxonomyEnabled } from '@shared/oneTaxonomy/utils';\nconst FilterQuery = Constants.FilterQuery;\n// To do: Improvement in DataMapping.tsx\n// could we add query to a filter collection in DataMapping.tsx\n// instead of hard coding filter collection queries\nconst filterCollectionNameToFilterQuery = {\n    products: FilterQuery.product,\n    industries: FilterQuery.industry,\n    categories: FilterQuery.category,\n    serviceTypes: FilterQuery.serviceType,\n    trials: FilterQuery.trials,\n    pricingModel: FilterQuery.pricingModel,\n    ratings: FilterQuery.ratings,\n    appCompliance: FilterQuery.appCompliance,\n    AzureBenefitEligible: FilterQuery.azureBenefitEligible,\n    productType: FilterQuery.productType,\n    CopilotExtension: FilterQuery.copilotExtension\n};\n// TODO: merge with the generic function\nfunction getProductsFilterData(filterQueries, filterCollection, filterData, shouldResetCounts) {\n    const bitmask = {};\n    filterQueries.forEach((activeQuery)=>{\n        const activeFilter = getProductByUrlKey({\n            urlKey: activeQuery\n        });\n        if (activeFilter) {\n            if (bitmask[activeFilter.FilterGroup]) {\n                bitmask[activeFilter.FilterGroup] |= activeFilter.FilterID;\n            } else {\n                bitmask[activeFilter.FilterGroup] = activeFilter.FilterID;\n            }\n        } else {\n            filterData.ignore = false;\n        }\n    });\n    filterData.ignore = filterData.ignore && Object.keys(bitmask).length === 0;\n    // push each filter under one filter collection into filterData.filters\n    // and determine values of two properties, isActive and checkFilter\n    Object.keys(filterCollection).forEach((filterKey)=>{\n        const filter = filterCollection[`${filterKey}`];\n        if (shouldResetCounts) {\n            filter.count = 0;\n        }\n        const filterBitmaskMatch = bitMasksContainSomeBitMask(bitmask, getShortCutBitmask(filter));\n        // isActive will determine if the checkbox should be toggled\n        filter.isActive = filterBitmaskMatch;\n        // checkFilter will determine if apps will be filtered against this filter\n        filter.checkFilter = filter.isActive;\n        const parentFilterQuery = getProductByUrlKey({\n            urlKey: filterQueries[0]\n        });\n        const selectedParentFilter = filterCollection[`${parentFilterQuery}`];\n        const shouldExpandChildFilters = !!selectedParentFilter && selectedParentFilter.ShouldExpandChildFilters;\n        // deactivating if current filter is a child filter of an active parent filter (selectedParentFilter, about to expand)\n        if (filter !== selectedParentFilter && shouldExpandChildFilters) {\n            filter.isActive = false;\n            filter.checkFilter = false;\n        }\n        filterData.filters.push(filter);\n    });\n}\nfunction isGlobalFilter(filterQueryName) {\n    return filterQueryName === 'trials' || filterQueryName === 'pricingModel' || filterQueryName === 'ratings' || filterQueryName === 'appCompliance' || filterQueryName === 'azureBenefitEligible' || filterQueryName === 'productType' || filterQueryName === 'copilotExtension';\n}\n/**\n * get filter data based on filterQueryName for a filter collection <=> a DataMap (DataMapping.tsx) property, and\n * update filter properties of both isActive and checkFilter in each filter, (updated in both returned filter data and in runtime DataMap)\n *\n *  helper function\n *      to get filter data\n *          from filterQueryName and,\n *          from filter collection processed in its wrapper function getFilterDataForQuery, and\n *      to process filter data and determine two properties of each filter, namely isActive, and checkFilter\n *\n * @param query: url queries in browser url\n * @param filterQueryName:\n *  name of url filter query, which corresponds to a DataMap property <=> a filter collection\n *  namely: product, industry, category, serviceType\n *\n *  hence, the value of filter query should be query[filterQueryName],\n *  a string which joins the actual should-be-active filter name under one filter collection with ';'\n * @param filterCollection:\n *  a DataMap property (DataMapping.tsx), except for 'categories' properties, whose each sub filter collection is the input value instead\n *  namely: products, industries, categories, serviceTypes\n * @param shouldResetCounts:\n *  optionally to reset counts of app which applied to each filter,\n *  the purpose of optional is for accumulate counts for different offers (app, and consulting service) in sequence\n *\n * @return:\n *  return filter data for one filter collection\n *      filters: an array of all filters under one filter collection, where its two properties are modified\n *          isActive: determines if the filter should be active based on\n *              filter url query values: namely query[filterQueryName] <=> filter names under one filter collection joined by ';'\n *              mask: Bit-OR result of mask values for all active filters, indicated by filter url query values\n *          checkFilter: a shorcut boolean to notify performFilter function (filterModule) to ignore this filter\n *      ignore:\n *          same concept with checkFilter, a shortcut boolean to notify performFilter function (filterModule) to\n *          completely ignore perform filter against offers (apps and consulting sevices) with this filter data\n */ function getFilterDataForQueryHelper(query, filterQueryName, filterCollection, shouldResetCounts) {\n    const filterData = {\n        filters: [],\n        ignore: true\n    };\n    if (!filterCollection) {\n        return filterData;\n    }\n    const hasGlobalFilter = isGlobalFilter(filterQueryName);\n    let filterQuery = null;\n    if (query) {\n        filterQuery = hasGlobalFilter ? query.filters : query[`${filterQueryName}`];\n    }\n    let filterQueries = [];\n    if (hasGlobalFilter) {\n        const rawFilterQueries = typeof filterQuery === 'string' ? filterQuery.split(';') : [];\n        for(let i = 0; i < rawFilterQueries.length; i++){\n            var _constantDataMap_trials_rawFilterQueries_, _constantDataMap_pricingModel_rawFilterQueries_, _constantDataMap_ratings_rawFilterQueries_, _constantDataMap_appCompliance_rawFilterQueries_, _constantDataMap_AzureBenefitEligible_rawFilterQueries_, _constantDataMap_CopilotExtension_rawFilterQueries_, _constantDataMap_productType_rawFilterQueries_;\n            if (filterQueryName === 'trials' && ((_constantDataMap_trials_rawFilterQueries_ = constantDataMap.trials[rawFilterQueries[`${i}`]]) === null || _constantDataMap_trials_rawFilterQueries_ === void 0 ? void 0 : _constantDataMap_trials_rawFilterQueries_.FilterID)) {\n                filterQueries.push(rawFilterQueries[`${i}`]);\n            }\n            if (filterQueryName === 'pricingModel' && ((_constantDataMap_pricingModel_rawFilterQueries_ = constantDataMap.pricingModel[rawFilterQueries[`${i}`]]) === null || _constantDataMap_pricingModel_rawFilterQueries_ === void 0 ? void 0 : _constantDataMap_pricingModel_rawFilterQueries_.FilterID)) {\n                filterQueries.push(rawFilterQueries[`${i}`]);\n            }\n            if (filterQueryName === 'ratings' && ((_constantDataMap_ratings_rawFilterQueries_ = constantDataMap.ratings[rawFilterQueries[`${i}`]]) === null || _constantDataMap_ratings_rawFilterQueries_ === void 0 ? void 0 : _constantDataMap_ratings_rawFilterQueries_.FilterID)) {\n                filterQueries.push(rawFilterQueries[`${i}`]);\n            }\n            if (filterQueryName === 'appCompliance' && ((_constantDataMap_appCompliance_rawFilterQueries_ = constantDataMap.appCompliance[rawFilterQueries[`${i}`]]) === null || _constantDataMap_appCompliance_rawFilterQueries_ === void 0 ? void 0 : _constantDataMap_appCompliance_rawFilterQueries_.FilterID)) {\n                filterQueries.push(rawFilterQueries[`${i}`]);\n            }\n            if (filterQueryName === Constants.FilterQuery.azureBenefitEligible && ((_constantDataMap_AzureBenefitEligible_rawFilterQueries_ = constantDataMap.AzureBenefitEligible[rawFilterQueries[`${i}`]]) === null || _constantDataMap_AzureBenefitEligible_rawFilterQueries_ === void 0 ? void 0 : _constantDataMap_AzureBenefitEligible_rawFilterQueries_.FilterID)) {\n                filterQueries.push(rawFilterQueries[`${i}`]);\n            }\n            if (filterQueryName === Constants.FilterQuery.copilotExtension && ((_constantDataMap_CopilotExtension_rawFilterQueries_ = constantDataMap.CopilotExtension[rawFilterQueries[`${i}`]]) === null || _constantDataMap_CopilotExtension_rawFilterQueries_ === void 0 ? void 0 : _constantDataMap_CopilotExtension_rawFilterQueries_.FilterID)) {\n                filterQueries.push(rawFilterQueries[`${i}`]);\n            }\n            if (filterQueryName === Constants.FilterQuery.productType && ((_constantDataMap_productType_rawFilterQueries_ = constantDataMap.productType[rawFilterQueries[`${i}`]]) === null || _constantDataMap_productType_rawFilterQueries_ === void 0 ? void 0 : _constantDataMap_productType_rawFilterQueries_.FilterID)) {\n                filterQueries.push(rawFilterQueries[`${i}`]);\n            }\n        }\n    } else {\n        filterQueries = typeof filterQuery === 'string' ? filterQuery.split(';') : [];\n    }\n    // to set which filter should be active <=> bold in UI, tags in gallery header, and also query in browser\n    // use only FilterId property of active filters to check against filters' bitmask (FilterID | ShortcutBitmask)\n    // this is to avoid child filter checkboxes being checked automatically,\n    // when user clicked on a parent filter consists of checkbox-style child filters\n    // Since the FilterIDs of those parent filters doesn't include bitmasks of its childfilters'\n    // so when use only FilterIDs, the child filters will stay unchecked when parent filter has just been clicked\n    //\n    // the reason why we want to disable selecting child filters, is because\n    // we want to show curated gallery page, instead of filtered result page when user click on a parent filter\n    //\n    // the gallery page will show with\n    // curated data (swim lanes), when parent filter and only parent filter is selected\n    // fitlered result data, when parent filter along with its child filters selected\n    //\n    // TO DO:\n    // We should do the same with expandable parent filter whose children is not checkbox-style\n    if (filterQueryName === 'product') {\n        getProductsFilterData(filterQueries, filterCollection, filterData, shouldResetCounts);\n    } else {\n        let bitmask = 0;\n        filterQueries.forEach((activeQuery)=>{\n            const activeFilter = filterCollection[`${activeQuery}`];\n            if (activeFilter) {\n                bitmask = bitmask | activeFilter.FilterID;\n            } else {\n                filterData.ignore = false;\n            }\n        });\n        filterData.ignore = filterData.ignore && bitmask === 0;\n        // push each filter under one filter collection into filterData.filters\n        // and determine values of two properties, isActive and checkFilter\n        Object.keys(filterCollection).forEach((filterKey)=>{\n            const filter = filterCollection[`${filterKey}`];\n            if (shouldResetCounts) {\n                filter.count = 0;\n            }\n            const filterBitmaskMatch = filter.FilterID & bitmask;\n            // isActive will determine if the checkbox should be toggled\n            filter.isActive = filterBitmaskMatch > 0;\n            // checkFilter will determine if apps will be filtered against this filter\n            filter.checkFilter = filter.isActive;\n            // to show curated page when parent filter is clicked upon\n            // that is, as mention aboved in setting bitmask\n            // we should keep child filter inactive\n            // we took care of parent filter whose children is checkbox-style filters\n            //\n            // here, we still need to take care of parent filter whose children is not checkbox-style filters\n            // since bitmask which sums up from FilterID, deosn't take care of such case\n            //\n            // to get the parent filter, we use first element of filterQueries (of current filter collection filterQueryName), query[filterQueryName] seperated by ';',\n            // this is kind of hack, but current rule of building href when filters are clicked is that\n            // only one (most nested active) parent filter will be shown in filterQueries, for each filter collection, i.e. products, industries, categories, serviceTypes\n            //\n            // e.g. product filter add-ins has a child filter dynamics-365, which has many child filters, business central, etc.\n            //  a. when user clicked filter add-ins, filterQueries will show add-ins (product=add-ins)\n            //  b.\n            //      when user clicked filter dynmamics-365,\n            //      although active filters (when performFilter funtion calls) have both add-ins and dynamics-365,\n            //      filterQueries will only show dynamics-365(product=dynamics-365)\n            //      which is the only one and also most nested parent active filter for the product filter collection\n            //\n            // to determine whether first filter is a parent, and whether this parent filter is about to expand (currently callapsed)\n            // we could simply check whether it has ShouldExpandChildFilters property\n            //\n            // TO DO:\n            // getting the parent filter is kind of hack, but you could play around with filters in UI, and notice it's only currently happening for\n            // product root filters, i.e. web-apps, and add-ins\n            // to improve, instead of only taking first one in filterQueries,\n            // we should check each of filterQueries (i.e. selectedParentFilters) against current filter (filter)\n            // we should set filter as inactive, if below are all met\n            // 1) selectedParentFilter has children (ShortcutFilters)\n            // 2) selectedParentFilter is about to expand\n            // 3) filter is one of its children\n            // 4) filter is not in filterQueries (not active)\n            const selectedParentFilter = filterCollection[filterQueries[0]];\n            const shouldExpandChildFilters = !!selectedParentFilter && selectedParentFilter.ShouldExpandChildFilters;\n            // deactivating if current filter is a child filter of an active parent filter (selectedParentFilter, about to expand)\n            if (filter !== selectedParentFilter && shouldExpandChildFilters) {\n                filter.isActive = false;\n                filter.checkFilter = false;\n            }\n            filterData.filters.push(filter);\n        });\n    }\n    // clear each active parent filter's checkFilter if any of its children is active,\n    // this is to avoid duplicate checking entities (app and consulting service) against filters, (see performFilter function in filterModule.tsx)\n    // if entities are checked against more specific filters, i.e. child filters, there's no need to check its parent\n    filterData.filters.forEach((filter)=>{\n        const childFilterNames = filter.ShortcutFilters;\n        if (!childFilterNames) {\n            return;\n        }\n        // unlike Azure Marketplace, the child filters are on the same level with its parent filter, in DataMap (DataMapping.tsx)\n        // to indicate relation with parent and child in appsource is through parent filter ShortcutFilters property\n        //\n        // TO INVESTIGATE:\n        // filter ShortcutFilters property, after several initial renders, will change from string[], to {[index: number]: string}\n        // someone may have misuse object.keys, or wrongly implemented deep copy, results in turning array into object\n        Object.keys(childFilterNames)// return immediately if active child filter is found, and clear checkFilter of parent filter property\n        .some((key)=>{\n            const childFilterName = childFilterNames[`${key}`];\n            const childFilter = filterCollection[`${childFilterName}`];\n            const childFilterIsActive = !!childFilter && childFilter.isActive;\n            if (childFilterIsActive) {\n                filter.checkFilter = false;\n            }\n            return childFilterIsActive;\n        });\n    });\n    return filterData;\n}\nfunction getFilterDataForQueryHelperV2(query, filterQueryName, subgFilterQueryName, filterCollection, shouldResetCounts) {\n    const filterData = {\n        filters: [],\n        ignore: true\n    };\n    if (!filterCollection) {\n        return filterData;\n    }\n    const selectedFilter = query && query[`${filterQueryName}`];\n    Object.keys(filterCollection).forEach((filterKey)=>{\n        const filter = filterCollection[`${filterKey}`];\n        if (filter) {\n            if (shouldResetCounts) {\n                filter.count = 0;\n            }\n            const primaryFilter = filterQueryName === FilterQuery.category && filter.IsReference ? constantDataMap.categories.default[`${filterKey}`] : filter;\n            const isActive = primaryFilter.UrlKey === selectedFilter;\n            let isContainsSubActive = false;\n            if (isActive) {\n                filterData.ignore = false;\n            }\n            if (primaryFilter.SubCategoryDataMapping) {\n                Object.keys(primaryFilter.SubCategoryDataMapping).forEach((subKey)=>{\n                    const subFilter = primaryFilter.SubCategoryDataMapping[`${subKey}`];\n                    const selectedSubFilters = query[`${subgFilterQueryName}`];\n                    const isSubActive = !!(selectedSubFilters && selectedSubFilters.indexOf(subFilter.UrlKey) > -1);\n                    subFilter.isActive = isSubActive;\n                    subFilter.checkFilter = isSubActive;\n                    if (isSubActive) {\n                        isContainsSubActive = true;\n                        if (!filter.IsReference) {\n                            filterData.filters.push(subFilter);\n                        }\n                    }\n                });\n            }\n            filter.isActive = isActive;\n            filter.checkFilter = isActive && !isContainsSubActive;\n            filterData.filters.push(filter);\n        }\n    });\n    return filterData;\n}\n/**\n * get filter data based on filterQueryName for a filter collection <=> a DataMap (DataMapping.tsx) property, and\n * update filter properties of both isActive and checkFilter in each filter, (updated in both returned filter data and in runtime DataMap)\n *\n *  a wrapper function to determine how to process DataMap (DataMapping) to get the actual filter collection\n *  and with the actual filter collection, call getFilterDataForQueryHelper function to get filter data\n *\n * @param query: url queries in browser url\n * @param filterQueryName:\n *  name of url filter query, which corresponds to a DataMap property <=> a filter collection\n *  namely: product, industry, category, serviceType\n *\n *  hence, the value of filter query should be query[filterQueryName],\n *  a string which joins the actual should-be-active filter name under one filter collection with ';'\n * @param filterCollection:\n *  a DataMap property (DataMapping.tsx)\n *  namely: products, industries, categories, serviceTypes\n * @param shouldResetCounts:\n *  optionally to reset counts of app which applied to each filter,\n *  the purpose of optional is for accumulate counts for different offers (app, and consulting service) in sequence\n *\n * @return: one filter collection\n *      filters: an array of all filters under one filter collection, where its two properties are modified\n *          isActive: determines if the filter should be active based on\n *              filter url query values: namely query[filterQueryName] <=> filter names under one filter collection joined by ';'\n *              mask: Bit-OR result of mask values for all active filters, indicated by filter url query values\n *          checkFilter: a shorcut boolean to notify performFilter function (filterModule) to ignore this filter\n *      ignore:\n *          same concept with checkFilter, a shortcut boolean to notify performFilter function (filterModule) to\n *          completely ignore perform filter against offers (apps and consulting sevices) with this filter data\n */ function getFilterDataForQuery(query, filterQueryName, filterCollection, shouldResetCounts) {\n    // Special Case:\n    // To get filter data in 'categories' filter collection of DataMap (DataMapping.tsx)\n    // need to go one level deeper from its wrapper filter group\n    if (filterQueryName === FilterQuery.category) {\n        const filterData = {\n            filters: [],\n            ignore: true\n        };\n        if (!filterCollection) {\n            return filterData;\n        }\n        const categoryFilterCollection = filterCollection;\n        // access each sub collection to get its actual filter data\n        Object.keys(categoryFilterCollection).forEach((subCollectionKey)=>{\n            // sub collection is the actual filter collection which contains filter in 'categories' filter collection\n            const categoryFilterSubCollection = categoryFilterCollection[`${subCollectionKey}`];\n            // get actual filter sub collection data\n            const filterSubCollectionData = getFilterDataForQueryHelperV2(query, filterQueryName, FilterQuery.subcategories, categoryFilterSubCollection, shouldResetCounts);\n            filterData.filters = filterData.filters.concat(filterSubCollectionData.filters);\n            filterData.ignore = filterData.ignore && filterSubCollectionData.ignore;\n        });\n        return filterData;\n    } else if (filterQueryName === FilterQuery.industry) {\n        return getFilterDataForQueryHelperV2(query, filterQueryName, FilterQuery.subindustries, filterCollection, shouldResetCounts);\n    }\n    return getFilterDataForQueryHelper(query, filterQueryName, filterCollection, shouldResetCounts);\n}\n/**\n * get all filter data based on query for a filter collection <=> a DataMap (DataMapping.tsx) property, and\n * update filter properties of both isActive and checkFilter in each filter, (updated in both returned filter data and in runtime DataMap)\n *\n *  a wrapper function to determine how to process DataMap (DataMapping) to get the actual filter collection\n *  and with the actual filter collection, call getFilterDataForQueryHelper function to get filter data\n *\n * @param query: url queries in browser url\n * @param DataMap:\n *  could be DataMap (DataMapping.tsx) or runtime dataMap,\n *  runtime dataMap same as DataMap (DataMapping.tsx),\n *  which is a collection of all filter collections, namely products, industries, categories, serviceTypes\n *  but where each filter in each filter collection is a valid filter which applies to at least one offer (app and consulting service),\n *  this is one of the differences from DataMap (DataMapping.tsx), other differences are that additional properties are added in runtime dataMap\n * @param shouldResetCounts:\n *  optionally to reset counts of app which applied to each filter,\n *  the purpose of optional is for accumulate counts for different offers (app, and consulting service) in sequence\n *\n * @return:\n *  return filter data for one filter collection\n *      filters: an array of all filters under one filter collection, where its two properties are modified\n *          isActive: determines if the filter should be active based on\n *              filter url query values: namely query[filterQueryName] <=> filter names under one filter collection joined by ';'\n *              mask: Bit-OR result of mask values for all active filters, indicated by filter url query values\n *          checkFilter: a shorcut boolean to notify performFilter function (filterModule) to ignore this filter\n *      ignore:\n *          same concept with checkFilter, a shortcut boolean to notify performFilter function (filterModule) to\n *          completely ignore perform filter against offers (apps and consulting sevices) with this filter data\n */ export function getFilterData(params, query, DataMap, shouldResetCounts) {\n    // get filter data by checking each filter collection in DataMap (DataMapping.tsx, here constantDataMap) against input paremeter DataMap,\n    // which could be either runtime dataMap or constantDataMap\n    return Object.keys(constantDataMap).map((filterCollectionName)=>{\n        const filterCollection = DataMap ? DataMap[`${filterCollectionName}`] : {};\n        // this is one of possible properties in query, which is a filter query key,\n        // namely product, industry, category, serviceType\n        const filterCollectionQueryName = filterCollectionNameToFilterQuery[`${filterCollectionName}`];\n        return getFilterDataForQuery(query, filterCollectionQueryName, filterCollection, shouldResetCounts);\n    });\n}\n/**\n * add match function in each filter under each filter collection <=> a DataMap (DataMapping.tsx) property\n *\n * @param DataMap:\n *  could be DataMap (DataMapping.tsx) or runtime dataMap,\n *  runtime dataMap same as DataMap (DataMapping.tsx),\n *  which is a collection of all filter collections, namely products, industries, categories, serviceTypes\n *  but where each filter in each filter collection is a valid filter which applies to at least one offer (app and consulting service),\n *  this is one of the differences from DataMap (DataMapping.tsx), other differences are that additional properties are added in runtime dataMap\n *\n * @return:\n *  return modified DataMap with updated match function in each filter\n */ export function updateMatchFunctions(DataMap) {\n    // add match function in each filter\n    // by checking each filter collection in DataMap (DataMapping.tsx, here constantDataMap) against input paremeter DataMap,\n    // which could be either runtime dataMap or constantDataMap\n    Object.keys(constantDataMap)// update each filter in each filter collection\n    .forEach((filterCollectionName)=>{\n        const filterCollection = DataMap[`${filterCollectionName}`];\n        if (filterCollection) {\n            // if filter collection is 'categories', need to go one level deeper to get the actual filter\n            if (filterCollectionName === Constants.DataMapCollectionKeys.categories) {\n                const categoryFilterCollection = filterCollection;\n                // access each sub collection to get its actual filter data\n                Object.keys(categoryFilterCollection).forEach((subCategoryCollectionKey)=>{\n                    // sub collection is the actual filter collection which contains filter in 'categories' filter collection\n                    const subCategoryFilterCollection = categoryFilterCollection[`${subCategoryCollectionKey}`];\n                    // access each filter in a sub collection\n                    Object.keys(subCategoryFilterCollection)// update each filter match function in a sub collection\n                    .forEach((filterKey)=>{\n                        const category = subCategoryFilterCollection[`${filterKey}`];\n                        if (!isPureObject(category)) {\n                            return;\n                        }\n                        const subCategoryKeys = category.SubCategoryDataMapping ? Object.keys(category.SubCategoryDataMapping) : [];\n                        const childMatchFns = [];\n                        for (const subCategoryKey of subCategoryKeys){\n                            const subCategory = category.SubCategoryDataMapping[`${subCategoryKey}`];\n                            const matchFn = (app)=>{\n                                return app ? (app[subCategory.FilterGroup] & subCategory.FilterID) > 0 : false;\n                            };\n                            childMatchFns.push(matchFn);\n                            subCategory[`${match}`] = matchFn;\n                        }\n                        category[`${match}`] = (app)=>{\n                            if (!app) {\n                                return false;\n                            }\n                            let primaryProductKey = '';\n                            const productFilterCollection = DataMap.products || {};\n                            // find app primary product name\n                            Object.keys(productFilterCollection)// return immediately after primary product name found\n                            .some((productFilterKey)=>{\n                                const productFilter = productFilterCollection[`${productFilterKey}`];\n                                const isPrimaryProduct = app.primaryProduct ? bitMasksMatch(app.primaryProduct, productFilter.FilterGroup, productFilter.FilterID) : null;\n                                if (isPrimaryProduct) {\n                                    primaryProductKey = productFilterKey;\n                                }\n                                return isPrimaryProduct;\n                            });\n                            if (!primaryProductKey) {\n                                return false;\n                            }\n                            // const primaryProduct: IDataValues = productFilterCollection[primaryProductKey];\n                            // TODO is matchCollection good solution?\n                            // if (matchCollection && primaryProduct.categoryList !== subCategoryCollectionKey) {\n                            //     return false;\n                            // }\n                            if (category.IsReference) {\n                                const primaryFilter = categoryFilterCollection.default[`${filterKey}`];\n                                return primaryFilter.match(app);\n                            }\n                            const matchCategories = (app)=>{\n                                return app && (app[category.FilterGroup] & category.FilterID) > 0;\n                            };\n                            const matchSubCategories = (app)=>{\n                                for(let i = 0; i < childMatchFns.length; i++){\n                                    if (childMatchFns[`${i}`](app)) {\n                                        return true;\n                                    }\n                                }\n                                return false;\n                            };\n                            // TODO: Why did we used ShortcutBitmask?\n                            return childMatchFns.length > 0 ? matchSubCategories(app) : matchCategories(app);\n                        };\n                    });\n                });\n            } else if (filterCollectionName === Constants.DataMapCollectionKeys.industries || isOneTaxonomyEnabled() && filterCollectionName === Constants.DataMapCollectionKeys.cloudIndustries) {\n                Object.keys(filterCollection)// update each filter with match function\n                .forEach((filterKey)=>{\n                    const filter = filterCollection[`${filterKey}`];\n                    const subFilterKeys = filter.SubCategoryDataMapping ? Object.keys(filter.SubCategoryDataMapping) : [];\n                    const childMatchFns = [];\n                    for (const subFilterKey of subFilterKeys){\n                        const subFilter = filter.SubCategoryDataMapping[`${subFilterKey}`];\n                        const matchFn = (app)=>{\n                            return app ? (app[subFilter.FilterGroup] & subFilter.FilterID) > 0 : false;\n                        };\n                        childMatchFns.push(matchFn);\n                        subFilter[`${match}`] = matchFn;\n                    }\n                    filter[`${match}`] = (app)=>{\n                        if (!app) {\n                            return false;\n                        }\n                        const matchCategories = (app)=>{\n                            return app && (app[filter.FilterGroup] & filter.FilterID) > 0;\n                        };\n                        const matchSubCategories = (app)=>{\n                            for(let i = 0; i < childMatchFns.length; i++){\n                                if (childMatchFns[`${i}`](app)) {\n                                    return true;\n                                }\n                            }\n                            return false;\n                        };\n                        // TODO: Why did we used ShortcutBitmask?\n                        return childMatchFns.length > 0 ? matchSubCategories(app) : matchCategories(app);\n                    };\n                });\n            } else if (filterCollectionName === Constants.DataMapCollectionKeys.products) {\n                Object.keys(filterCollection)// update each filter with match function\n                .forEach((filterKey)=>{\n                    const filter = filterCollection[`${filterKey}`];\n                    filter[`${match}`] = (app)=>{\n                        if (!app) {\n                            return false;\n                        }\n                        return bitMasksContainSomeBitMask(getShortCutBitmask(filter), app[`${filterCollectionName}`]);\n                    };\n                });\n            } else {\n                Object.keys(filterCollection)// update each filter with match function\n                .forEach((filterKey)=>{\n                    const filter = filterCollection[`${filterKey}`];\n                    filter[`${match}`] = (app)=>{\n                        if (!app) {\n                            return false;\n                        }\n                        return (app[`${filterCollectionName}`] & filter.FilterID) > 0;\n                    };\n                });\n            }\n        }\n    });\n    return DataMap;\n}\n// TODO Support L2 categories\nexport function getFilterLink(context, filter, entityType, embedHost, allowShortcutFilter, isTreatmentNewFilterAMPEnabled, urlQuery) {\n    let query = filter.FilterGroup;\n    const isProduct = filter.UrlGroup === FilterQuery.product;\n    const isCategory = filter.UrlGroup === FilterQuery.category;\n    const isIndustry = filter.UrlGroup === FilterQuery.industry;\n    const isSubFilter = (isCategory || isIndustry) && filter.IsChildFilter;\n    if (filter.UrlGroup) {\n        query = filter.UrlGroup;\n    }\n    if (isSubFilter) {\n        if (isCategory) {\n            query = FilterQuery.subcategories;\n        }\n        if (isIndustry) {\n            query = FilterQuery.subindustries;\n        }\n    }\n    // Use the ShortctUrlKey if it exists and is allowed - the home page sets that argument to true\n    // because it wants to apply all the child filters instead of a parent filter\n    let filterValue = allowShortcutFilter ? filter.ShortcutUrlKey : filter.UrlKey;\n    const flattedEmbedHost = embedHost && embedHostUtils.shouldFlatProducts(embedHost);\n    // For top level product or category filters, only allow one to be selected at a time, except specific embed host\n    if (isProduct && !filter.IsChildFilter && !flattedEmbedHost || (isCategory || isIndustry) && !isSubFilter) {\n        if (filter.isActive) {\n            filterValue = null;\n        }\n    } else {\n        // For all other filters, append or remove the specific value\n        filterValue = (filter.isActive ? '!' : ';') + filterValue;\n    }\n    const route = getEntityRegistration(entityType).route;\n    const newProps = {\n        [query]: filterValue,\n        page: '1'\n    };\n    // Don't preseve sub filters for top level filter\n    if (!isSubFilter) {\n        if (isCategory) {\n            newProps[FilterQuery.subcategories] = null;\n        }\n        if (isIndustry) {\n            newProps[FilterQuery.subindustries] = null;\n        }\n    }\n    if (urlQuery && isProduct && !filter.IsChildFilter) {\n        if (!filter.isActive) {\n            // render link when the L1 product filter is not active\n            // link is used when it's being checked next time\n            const productMask = {\n                [filter.FilterGroup]: filter.FilterID\n            };\n            const newQuery = removeUnmatchedCategories(urlQuery, filter.UrlKey, productMask);\n            return context.buildHref(route, null, newQuery);\n        } else {\n            // render link when the L1 product filter is active\n            // link is used when it's being unchecked next time\n            const newQuery = removeUnmatchedCategories(urlQuery, null, null);\n            return context.buildHref(route, null, newQuery);\n        }\n    }\n    return context.buildHref(route, null, newProps);\n}\nexport function getCountryRegionfilterLink(context, countryCode, regionCode) {\n    const route = getEntityRegistration(Constants.EntityType.Service).route;\n    const newProps = {\n        country: countryCode,\n        region: regionCode,\n        page: '1'\n    };\n    const url = context.buildHref(route, null, newProps);\n    urlPush(url);\n}\nexport function getActiveFiltersByFilterGroup(activeFilters) {\n    const filtersByFilterGroup = activeFilters.reduce((grouped, item)=>{\n        grouped[item.UrlGroup] = grouped[item.UrlGroup] || [];\n        grouped[item.UrlGroup].push(item);\n        return grouped;\n    }, {});\n    return filtersByFilterGroup;\n}\n// Checks to see if the active filter has a curated section with more than one swim lane\nexport function shouldShowCurationForFilter(activeFilter, curatedData) {\n    const curatedSection = activeFilter.BackendKey && ((curatedData === null || curatedData === void 0 ? void 0 : curatedData[activeFilter.BackendKey]) || (curatedData === null || curatedData === void 0 ? void 0 : curatedData[activeFilter.BackendKey.toLowerCase()]));\n    return !!curatedSection && curatedSection.length > 1;\n}\nexport function shouldShowCurationForProductFilters(activeProductsFilters, curatedData) {\n    const L3ProdFilters = activeProductsFilters.filter((filter)=>!filter.ShortcutFilters);\n    const activeProdFilters = activeProductsFilters.filter((filter)=>!!filter.ShortcutFilters);\n    if (L3ProdFilters.length === 1) {\n        return shouldShowCurationForFilter(L3ProdFilters[0], curatedData);\n    }\n    if (L3ProdFilters.length === 0 && activeProdFilters.length === 1) {\n        return shouldShowCurationForFilter(activeProdFilters[0], curatedData);\n    }\n    return false;\n}\n/**\n * check should provide curated data, based on active filters\n *\n * @param activeFilters: active filters, which are chosen left pane filters, and also shows in gallery header tags\n * @param curatedData: response from the featured api\n * @return\n *  return true, if below conditions are met\n *      1) active filters consists none or only of parent product filters, which have children filters\n *       2) only one industry or category filter is selected and it has curated data.\n *  return false, otherwise\n */ export function shouldShowCuratedDataForActiveFilters(activeFilters, curatedData) {\n    // no filters selected show curation\n    if (activeFilters.length === 0) {\n        return false;\n    }\n    const filtersByGroup = getActiveFiltersByFilterGroup(activeFilters);\n    // filters from more than one group is selected dont show curated view\n    if (Object.keys(filtersByGroup).length > 1) {\n        return false;\n    }\n    // only product filters selected show curation if the product has it\n    if (filtersByGroup[FilterQuery.product] && filtersByGroup[FilterQuery.product].length > 0 && shouldShowCurationForProductFilters(filtersByGroup[FilterQuery.product], curatedData)) {\n        return true;\n    }\n    // only category filters selected show curation if the category has it\n    if (filtersByGroup[FilterQuery.category] && filtersByGroup[FilterQuery.category].length === 1 && shouldShowCurationForFilter(filtersByGroup[FilterQuery.category][0], curatedData)) {\n        return true;\n    }\n    // only industry filters selected show curation if the industry has it\n    if (filtersByGroup[FilterQuery.industry] && filtersByGroup[FilterQuery.industry].length === 1 && shouldShowCurationForFilter(filtersByGroup[FilterQuery.industry][0], curatedData)) {\n        return true;\n    }\n    return false;\n}\nexport function getFilterType(filter) {\n    return filter.FilterGroup ? filter.FilterGroup : '';\n}\nexport function shouldShowFilterForView(currentView, supportedViews) {\n    return supportedViews && Object.values(supportedViews).some((supportedView)=>supportedView === Constants.everywhereFilterView || supportedView === currentView);\n}\nexport function shouldShowSubFilter(filter) {\n    if (filter.count) {\n        return true;\n    }\n    return false;\n}\nexport function sort(textA, textB) {\n    textA = textA.toUpperCase();\n    textB = textB.toUpperCase();\n    if (textA < textB) {\n        return -1;\n    } else {\n        return 1;\n    }\n}\nexport function sortFilters(filterA, filterB) {\n    if (filterA && filterB && filterA.Title && filterB.Title) {\n        return sort(filterA.Title, filterB.Title);\n    }\n    return 0;\n}\nexport function sortFiltersKeys(filterKeyA, filterKeyB, filters) {\n    if (filters) {\n        return sortFilters(filters[`${filterKeyA}`], filters[`${filterKeyB}`]);\n    }\n    return 0;\n}\nexport function onClickTrackHitCountsForTreatmentNewFilter(filterUrlKey) {\n    const eventDetails = {\n        urlKey: filterUrlKey || ''\n    };\n    const payload = {\n        page: getWindow().location.href,\n        action: Constants.Telemetry.Action.Click,\n        actionModifier: Constants.Telemetry.Action.FilterClick,\n        details: JSON.stringify(eventDetails)\n    };\n    SpzaInstrumentService.getProvider().probe('logTelemetryInfo', payload);\n    logger.info(payload.details, {\n        action: payload.action,\n        actionModifier: payload.actionModifier\n    });\n}\nexport const isFilterChosen = (currentView, appsActiveFilters, servicesActiveFilters, cloudsIndustryActiveFilters)=>{\n    if (currentView === Constants.Views.appGallery && appsActiveFilters.length > 0) {\n        return true;\n    }\n    if (currentView === Constants.Views.serviceGallery && servicesActiveFilters.length > 0) {\n        return true;\n    }\n    if (currentView === Constants.Views.cloudsIndustryGallery && cloudsIndustryActiveFilters.length > 0) {\n        return true;\n    }\n    return false;\n};\nexport const getResetFiltersHref = (context, entityType)=>{\n    const route = getEntityRegistration(entityType).route;\n    return context.buildHref(route, null, {\n        [Constants.FilterQuery.page]: '1',\n        [Constants.FilterQuery.sortBy]: null,\n        [Constants.FilterQuery.filters]: null,\n        [Constants.FilterQuery.category]: null,\n        [Constants.FilterQuery.industry]: null,\n        [Constants.FilterQuery.subcategories]: null,\n        [Constants.FilterQuery.subindustries]: null,\n        [Constants.FilterQuery.product]: null,\n        [Constants.FilterQuery.serviceType]: null\n    });\n};\nexport const getResetFiltersAndSearchHref = (context, entityType)=>{\n    const route = getEntityRegistration(entityType).route;\n    return context.buildHref(route, null, {\n        [Constants.FilterQuery.page]: '1',\n        [Constants.FilterQuery.sortBy]: null,\n        [Constants.FilterQuery.filters]: null,\n        [Constants.FilterQuery.category]: null,\n        [Constants.FilterQuery.industry]: null,\n        [Constants.FilterQuery.subcategories]: null,\n        [Constants.FilterQuery.subindustries]: null,\n        [Constants.FilterQuery.product]: null,\n        [Constants.FilterQuery.serviceType]: null,\n        [Constants.FilterQuery.search]: null\n    });\n};\nexport function increaseCountOfReferenceCategoryInDefaultCategoryList(filterData, filter) {\n    for(let i = 0; i < filterData.length; i++){\n        const category = filterData[`${i}`];\n        if (category.IsReference) {\n            continue;\n        }\n        if (category.FilterID === filter.FilterID) {\n            category.count++;\n            return;\n        }\n    }\n}\nexport function getTopCuratedLane(filterKey, curatedData) {\n    if (filterKey && curatedData) {\n        const curatedSection = curatedData[`${filterKey}`] || curatedData[filterKey.toLowerCase()];\n        if (curatedSection && curatedSection.length === 1) {\n            return curatedSection[0].items;\n        }\n    }\n    return [];\n}\nexport function getPopularItems({ allItems, featuredItems = [], maxLength = 5 }) {\n    return allItems.slice().filter((item)=>featuredItems.every((featuredItem)=>featuredItem.entityId !== item.entityId)).sort((a, b)=>b.popularity - a.popularity).slice(0, maxLength);\n}\nexport function getFeaturedItemsFilter(activeFilters) {\n    const filters = activeFilters === null || activeFilters === void 0 ? void 0 : activeFilters.filter((filter)=>filter === null || filter === void 0 ? void 0 : filter.BackendKey);\n    if (filters.length !== 1) {\n        return null;\n    }\n    const filter = filters[0];\n    if (filter.FilterGroup !== Constants.filterTileTypes.industry && filter.FilterGroup !== Constants.filterTileTypes.category) {\n        return null;\n    }\n    return filter;\n}\nexport function getFeaturedItemsByFilter(activeFilters, curatedData, itemsHashMap, allItems) {\n    const filter = getFeaturedItemsFilter(activeFilters);\n    if (!filter) {\n        return [];\n    }\n    const topCuratedLane = getTopCuratedLane(filter.BackendKey, curatedData);\n    const itemsIndexes = topCuratedLane.map((curatedItem)=>{\n        var _curatedItem_id;\n        return itemsHashMap[curatedItem === null || curatedItem === void 0 ? void 0 : (_curatedItem_id = curatedItem.id) === null || _curatedItem_id === void 0 ? void 0 : _curatedItem_id.toLowerCase()];\n    }).filter((appIndex)=>appIndex >= 0);\n    return itemsIndexes.map((appIndex)=>allItems[`${appIndex}`]);\n}\nexport function windowScrollToTop() {\n    const window = getWindow();\n    if (window) {\n        getWindow().scrollTo(0, 0);\n    }\n}\nexport function getInternetOfThingsLink(category) {\n    if (category === Constants.InternetOfThings.urlKey) {\n        return [\n            {\n                className: [\n                    'secondary_link',\n                    'secondary_link_left'\n                ],\n                href: 'https://aka.ms/devicecatalog',\n                accessibilityEnabled: true,\n                locKey: 'IoT_Devices_Catalog'\n            }\n        ];\n    }\n    return [];\n}\nexport const serviceOffersSupportedCountries = [\n    {\n        countryCode: Constants.allCountriesCode,\n        code: Constants.allCountriesCode,\n        name: 'All Countries'\n    },\n    ...supportedCountries\n];\nexport const serviceOffersSupportedCountriesMap = serviceOffersSupportedCountries.reduce((acc, curr)=>_object_spread_props(_object_spread({}, acc), {\n        [curr.countryCode]: curr\n    }), {});\nexport function findServiceSupportedCountry(countryCode) {\n    const foundCountries = serviceOffersSupportedCountries.filter((item)=>{\n        return item.countryCode === countryCode;\n    });\n    if (!foundCountries || foundCountries.length === 0) {\n        return undefined;\n    }\n    return foundCountries[0];\n}\nexport function isPricingFilter() {\n    return false;\n}\n","import { getFilterData, increaseCountOfReferenceCategoryInDefaultCategoryList } from 'utils/filterHelpers';\nexport const match = 'match';\n// Helper method to increase the counts for all Filters in a FilterList where the item matches.\nfunction increaseCounts(filterData, item) {\n    for(let i = 0, len = filterData.length; i < len; i++){\n        let f = filterData[i];\n        if (f.match && f.match(item)) {\n            f.count++;\n            if (f.IsReference) {\n                increaseCountOfReferenceCategoryInDefaultCategoryList(filterData, f);\n            } else if (f.SubCategoryDataMapping) {\n                // TODO: need to think of a way to count the categories per all the active filters\n                // if I selected power bi then re count again and show only the relevant categories and industries\n                let subFilters = f.SubCategoryDataMapping || [];\n                Object.keys(subFilters).forEach((subFilterKey)=>{\n                    let subFilter = subFilters[subFilterKey];\n                    if (subFilter.match(item)) {\n                        subFilter.count ? subFilter.count++ : subFilter.count = 1;\n                    }\n                });\n            }\n        }\n    }\n    return;\n}\n/*\n    Calls into a platform specific 'getFilterData' function to get the list of filters to\n    iterate over.  Then adds matching apps to an array and does counting.\n    Parameters:\n        'params': React-router params object.  It will contain pieces of the URL that might be\n            needed by an app specific module to determine which filters are active.\n        'query': React-router query object.  Contains key-value pairs of URL query params\n        'items': this is an array of either apps or partners\n        'data': TODO: Rename + typing? -- this is a reference to a DataMapping object\n    TODO: Should counting be optional?  It adds extra CPU time and is only used by Home right now\n    TODO: 'isMac' parameter should be removed\n*/ export function performFilter(params, query, items, data, performCounting, resetCounts = true) {\n    // this block of code builds up an array of 'active' filters.  This is used to\n    // determine if a 'curated' page should be shown\n    const activeFilters = [];\n    const filterData = getFilterData(params, query, data, resetCounts);\n    filterData.forEach((filterList)=>{\n        filterList.filters.forEach((filter)=>{\n            if (filter.isActive) {\n                activeFilters.push(filter);\n            }\n        });\n    });\n    // TODO: Ideally we could skip the filtering/counting if no filters are applied\n    // but for cloning the DataMap for a specific collection, it requires doing a count\n    // with no filters applied to decide which items to drop.  Maybe a parameter to indicate\n    // if counting should be done?  We also technically don't need to count on the GalleryPage\n    // Loop over all items\n    let matchingItems = [];\n    for(let a = 0, itemLength = items.length; a < itemLength; a++){\n        let item = items[a];\n        let itemMatches = true;\n        // An array to store for each 'Group' returned as part of 'filterData' if the item\n        // matches that specific 'Group'\n        let matchesGroup = [];\n        // match top level filter (category, industry, product) - AND\n        // can't short circuit if we want to do 'counting' later\n        for(let i = 0, len = filterData.length; i < len; i++){\n            let topFilter = filterData[i].filters;\n            let matchesCategory = filterData[i].ignore;\n            // match sub filters - OR\n            // could short-circuit this as soon as matchesCategory becomes true\n            if (!matchesCategory) {\n                for(let j = 0, len2 = topFilter.length; j < len2; j++){\n                    let f = topFilter[j];\n                    if (f.checkFilter) {\n                        matchesCategory = matchesCategory || f.match(item);\n                    }\n                }\n            }\n            matchesGroup[i] = matchesCategory;\n            itemMatches = itemMatches && matchesCategory;\n        }\n        if (performCounting) {\n            // Perform counting.  Algorithm is as follows:\n            // Loop over each top level group in the filterData array.  If the item matches every\n            // filter group except that one, increment the counts of the filters in the current group\n            for(let i = 0, len = matchesGroup.length; i < len; i++){\n                let passesGroup = true;\n                for(let j = 0, len2 = matchesGroup.length; j < len2; j++){\n                    if (i !== j) {\n                        passesGroup = passesGroup && matchesGroup[j];\n                    }\n                }\n                if (passesGroup) {\n                    increaseCounts(filterData[i].filters, item);\n                }\n            }\n        }\n        if (!itemMatches) {\n            continue;\n        }\n        matchingItems.push(item);\n    }\n    return {\n        items: matchingItems,\n        activeFilters: activeFilters\n    };\n}\n","function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nfunction _object_spread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        var ownKeys = Object.keys(source);\n        if (typeof Object.getOwnPropertySymbols === \"function\") {\n            ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n            }));\n        }\n        ownKeys.forEach(function(key) {\n            _define_property(target, key, source[key]);\n        });\n    }\n    return target;\n}\nimport { IAvailabilityActions, TermsStrings } from '@shared/Models';\nimport { cloneDeep } from 'lodash-es';\nimport { logError } from '@shared/utils/httpClientUtil';\nimport { OfferType } from '@shared/utils/constants';\nexport var OS = /*#__PURE__*/ function(OS) {\n    OS[OS[\"Windows\"] = 1] = \"Windows\";\n    OS[OS[\"Linux\"] = 2] = \"Linux\";\n    return OS;\n}({});\nconst MONTH_UNIT = 'Month';\nconst YEAR_UNIT = 'Year';\nconst MONTH_THERM_UNIT = 'P1M';\nconst YEAR_THERM_UNIT = 'P1Y';\nconst isUnitEqual = (term, termPrice, mightContainMultiyearTerms)=>{\n    if (mightContainMultiyearTerms) {\n        if (!(term === null || term === void 0 ? void 0 : term.termId) || !(termPrice === null || termPrice === void 0 ? void 0 : termPrice.termId)) {\n            return false;\n        }\n        return term.termId === termPrice.termId;\n    }\n    return term && termPrice && (term.termUnits === MONTH_THERM_UNIT && termPrice.unit === MONTH_UNIT || term.termUnits === YEAR_THERM_UNIT && termPrice.unit === YEAR_UNIT);\n};\nconst filterDecreasePrices = (sku, hasMonthlyPriceIncrease, hasYearlyPriceIncrease, hasMeterPriceIncrease)=>{\n    if (!hasMeterPriceIncrease) {\n        const increaseTermPrices = sku.termPrices.filter((termPrice)=>termPrice.unit === MONTH_UNIT && hasMonthlyPriceIncrease || termPrice.unit === YEAR_UNIT && hasYearlyPriceIncrease);\n        if (increaseTermPrices) {\n            sku.termPrices = increaseTermPrices;\n        } else {\n            sku = null;\n        }\n    }\n    return sku;\n};\nconst updateTermPrices = (futurePlan, sku)=>{\n    let hasMonthlyPriceIncrease = false;\n    let hasYearlyPriceIncrease = false;\n    let hasMeterPriceIncrease = false;\n    sku.startDate = futurePlan.availabilities[0].startDate;\n    const mightContainMultiyearTerms = sku.offerType === OfferType.SaaSApp;\n    const increasedTermIds = [];\n    futurePlan.availabilities.forEach((futureAvailability)=>{\n        // Update termPrice value\n        const { actions } = futureAvailability;\n        if (actions.includes(IAvailabilityActions.Purchase) && actions.includes(IAvailabilityActions.Browse)) {\n            futureAvailability.terms.forEach((futureTerm)=>{\n                var _term_billingPlan, _futureTerm_billingPlan;\n                const term = sku.termPrices.find((termPrice)=>isUnitEqual(futureTerm, termPrice, mightContainMultiyearTerms));\n                if (!term) {\n                    return;\n                }\n                const wasPriceIncreased = futureTerm.price.listPrice > term.value;\n                if (wasPriceIncreased) {\n                    if (mightContainMultiyearTerms) {\n                        increasedTermIds.push(term.termId);\n                    } else {\n                        hasMonthlyPriceIncrease = hasMonthlyPriceIncrease || term.unit === TermsStrings.MonthString;\n                        hasYearlyPriceIncrease = hasYearlyPriceIncrease || term.unit === TermsStrings.YearString;\n                    }\n                }\n                term.value = futureTerm.price.listPrice;\n                if (((_term_billingPlan = term.billingPlan) === null || _term_billingPlan === void 0 ? void 0 : _term_billingPlan.price) && ((_futureTerm_billingPlan = futureTerm.billingPlan) === null || _futureTerm_billingPlan === void 0 ? void 0 : _futureTerm_billingPlan.price)) {\n                    term.billingPlan.price = _object_spread({}, futureTerm.billingPlan.price);\n                }\n            });\n        }\n        // Update customMeter price\n        if (actions.includes(IAvailabilityActions.Consume) && actions.includes(IAvailabilityActions.Browse)) {\n            sku.termPrices.forEach((termPrice)=>{\n                const meter = termPrice.customMeter.find((customMeter)=>customMeter.availabilityId === futureAvailability.currentAvailabilityId);\n                if (meter) {\n                    if (futureAvailability.meter.price.listPrice > meter.rate) {\n                        hasMeterPriceIncrease = true;\n                    }\n                    meter.rate = futureAvailability.meter.price.listPrice;\n                }\n            });\n        }\n    });\n    if (mightContainMultiyearTerms) {\n        if (!hasMeterPriceIncrease) {\n            sku.termPrices = sku.termPrices.filter((termPrice)=>increasedTermIds.includes(termPrice.termId));\n        }\n        return sku;\n    } else {\n        return filterDecreasePrices(sku, hasMonthlyPriceIncrease, hasYearlyPriceIncrease, hasMeterPriceIncrease);\n    }\n};\nconst updateThirdPartyPricing = (futurePlan, sku)=>{\n    const futurePricePerCore = {};\n    sku.startDate = futurePlan.availabilities[0].startDate;\n    futurePlan.availabilities.forEach((futureAvailability)=>{\n        if (futureAvailability.meter && sku.thirdPartyPricing.pricePerCore) {\n            const currentMeter = sku.thirdPartyPricing.pricePerCore[futureAvailability.meter.meterId];\n            if (currentMeter && currentMeter.availabilityId === futureAvailability.currentAvailabilityId && futureAvailability.meter.price.listPrice > currentMeter.value) {\n                currentMeter.value = futureAvailability.meter.price.listPrice;\n                futurePricePerCore[futureAvailability.meter.meterId] = currentMeter;\n            }\n        }\n    });\n    sku.thirdPartyPricing.pricePerCore = futurePricePerCore;\n    return Object.keys(futurePricePerCore).length ? sku : null;\n};\nconst getFuturePricesSkus = (futurePlans, currentSkus)=>{\n    const futureSkus = [];\n    if (futurePlans && currentSkus) {\n        futurePlans.forEach((futurePlan)=>{\n            var _futurePlan_availabilities;\n            const currentSku = currentSkus.find((skus)=>skus.id === futurePlan.planId);\n            if (!currentSku) {\n                logError(`getFuturePricesSkus failed to find current sku: ${futurePlan.planId}`);\n            } else if (!((_futurePlan_availabilities = futurePlan.availabilities) === null || _futurePlan_availabilities === void 0 ? void 0 : _futurePlan_availabilities.length)) {\n                logError(`getFuturePricesSkus futurePlan: ${futurePlan.planId} - not contains availabilities`);\n            } else {\n                let futureSku = cloneDeep(currentSku);\n                if (futureSku.termPrices) {\n                    futureSku = updateTermPrices(futurePlan, futureSku);\n                }\n                if (futureSku.thirdPartyPricing) {\n                    futureSku = updateThirdPartyPricing(futurePlan, futureSku);\n                }\n                if (futureSku) {\n                    futureSkus.push(futureSku);\n                }\n            }\n        });\n    }\n    return futureSkus;\n};\nexport const getFuturePricesInformation = (futurePrices, currentPrices)=>{\n    if (futurePrices && currentPrices) {\n        const futureSkus = getFuturePricesSkus(futurePrices.plans, currentPrices.skus);\n        if (futureSkus === null || futureSkus === void 0 ? void 0 : futureSkus.length) {\n            return {\n                billingRegion: currentPrices.billingRegion,\n                skus: futureSkus\n            };\n        }\n    }\n    return null;\n};\nexport const getUTCDateString = (startDateUtcInMinutes, context)=>{\n    return `${context.locDateString(startDateUtcInMinutes * 60000, {\n        timeZone: 'UTC'\n    })} (UTC)`;\n};\n","// hashmap that maps the passed identifier value to the index in the array\n// i.e. if we pass an array of apps with appid as the identifier\n// the returned map will be h[appid] = index in array\nexport function generateHashMap(data, identifiers) {\n    let hash = {};\n    const dataLength = data.length;\n    const idsLength = identifiers.length;\n    for(let i = 0; i < dataLength; i++){\n        // data is allowed to be null\n        if (data[i]) {\n            for(let j = 0; j < idsLength; j++){\n                if (data[i][identifiers[j]]) {\n                    hash[data[i][identifiers[j]].toString().toLowerCase()] = i;\n                }\n            }\n        }\n    }\n    return hash;\n}\nexport function parseCuratedSections(sections, data, hashMap, dataMapSubCats) {\n    let result = [];\n    if (sections) {\n        sections.forEach((section)=>{\n            //dataMapSubCats is only supplied when filling mac app swimlanes\n            //when it's given, use it to make sure each subcategory is in datamapping\n            //otherwise, continue on without checking\n            if (!dataMapSubCats || dataMapSubCats.includes(section.titleId)) {\n                let newItems = [];\n                let items = section.items;\n                if (items) {\n                    items.forEach((item)=>{\n                        const id = item.id;\n                        const index = hashMap[id];\n                        if (index >= 0) {\n                            newItems.push(data[index]);\n                        }\n                    });\n                }\n                // if we can't find any data for any item in the curated section\n                // let's not show the section at all\n                if (newItems.length > 0) {\n                    let newSection = {\n                        titleId: section.titleId,\n                        items: newItems\n                    };\n                    if (section.titleLocId) {\n                        newSection.titleLocId = section.titleLocId;\n                    }\n                    result.push(newSection);\n                }\n            }\n        });\n    }\n    return result;\n}\n","function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nfunction _object_spread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        var ownKeys = Object.keys(source);\n        if (typeof Object.getOwnPropertySymbols === \"function\") {\n            ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n            }));\n        }\n        ownKeys.forEach(function(key) {\n            _define_property(target, key, source[key]);\n        });\n    }\n    return target;\n}\nfunction ownKeys(object, enumerableOnly) {\n    var keys = Object.keys(object);\n    if (Object.getOwnPropertySymbols) {\n        var symbols = Object.getOwnPropertySymbols(object);\n        if (enumerableOnly) {\n            symbols = symbols.filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n            });\n        }\n        keys.push.apply(keys, symbols);\n    }\n    return keys;\n}\nfunction _object_spread_props(target, source) {\n    source = source != null ? source : {};\n    if (Object.getOwnPropertyDescriptors) {\n        Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n        ownKeys(Object(source)).forEach(function(key) {\n            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n    }\n    return target;\n}\nimport { getWindow } from '../services/window';\nimport { Constants } from '../utils/constants';\nimport { SpzaInstrumentService } from '../services/telemetry/spza/spzaInstrument';\nimport { SharedInstrumentService } from '../services/telemetry/shared/sharedInstrument';\nimport { getAppConfig } from '../services/init/appConfig';\nimport { stringifyError } from './errorUtils';\nimport { logger, systemLogger } from '@src/logger';\n// eslint-disable-next-line @typescript-eslint/no-var-requires\nconst jwtDecode = require('jwt-decode');\nexport const headersToRedact = {\n    [Constants.Headers.Cookie.toLowerCase()]: true,\n    [Constants.Headers.Authorization.toLowerCase()]: true,\n    [Constants.Headers.InternalAuthorizationHeader.toLowerCase()]: true,\n    [Constants.Headers.XForwardedFor.toLowerCase()]: true,\n    [Constants.Headers.XIISNodeRemoteAddr.toLowerCase()]: true,\n    [Constants.Headers.ApiKey.toLowerCase()]: true,\n    [Constants.Headers.SetCookie.toLowerCase()]: true,\n    [Constants.Headers.XMSAuthInternalToken.toLowerCase()]: true,\n    [Constants.Headers.XAPIKey.toLowerCase()]: true,\n    [Constants.Headers.XProofToken.toLowerCase()]: true,\n    [Constants.Headers.ProxyAuthorization.toLowerCase()]: true\n};\nfunction generateTelemetryPayload(error, operationName) {\n    const _details = {};\n    _details.operation = operationName;\n    _details.error = error || '';\n    if (typeof error !== 'string') {\n        _details.error = stringifyError(error);\n    }\n    let page = 'server';\n    if (getAppConfig('runtimeEnvironment') === 'browser') {\n        page = getWindow().location.href;\n    }\n    return {\n        page,\n        action: Constants.Telemetry.Action.NetworkCall,\n        actionModifier: Constants.Telemetry.ActionModifier.Error,\n        details: _details\n    };\n}\nfunction parseURL(url) {\n    // eslint-disable-next-line security/detect-non-literal-regexp\n    const reURLInformation = new RegExp([\n        '^(https?:)//',\n        '(([^:/?#]*)(?::([0-9]+))?)',\n        '(/{0,1}[^?#]*)',\n        '(\\\\?[^#]*|)',\n        '(#.*|)$'\n    ].join(''));\n    const match = url.match(reURLInformation);\n    if (!match) {\n        return {};\n    } else {\n        return {\n            protocol: match[1],\n            host: match[2],\n            hostname: match[3],\n            port: match[4],\n            pathname: match[5],\n            search: match[6],\n            hash: match[7]\n        };\n    }\n}\n/**\n * This method removes the values of headers which contains PII or sensitive information.\n * The object returned will maintain the keys, but the senstive header values will be replaced with 'SCRUBBED (Length X)'\n * i.e.\n * {Authorization: SCRUBBED (Length 160), x-ms-correlationId: 04056106-cf0c-40cc-8e68-d657442da7ad\\}\n */ export function scrubHeaders(headers) {\n    return Object.fromEntries(Object.entries(headers).map(([key, value])=>{\n        if (headersToRedact[`${key.toLowerCase()}`]) {\n            var _headers_;\n            value = `${Constants.scrubbedHeaderValue} (Length ${(_headers_ = headers[`${key}`]) === null || _headers_ === void 0 ? void 0 : _headers_.length})`;\n        }\n        return [\n            key,\n            value\n        ];\n    }));\n}\nfunction logOutRequestEventInfo(telemetry) {\n    SharedInstrumentService.getProvider().probe('logOutRequestEventInfo', telemetry);\n}\nexport function logError(operationName, error) {\n    var _error_response, _error_response1;\n    const instrument = SpzaInstrumentService.getProvider();\n    let code = '';\n    if (error === null || error === void 0 ? void 0 : (_error_response = error.response) === null || _error_response === void 0 ? void 0 : _error_response.statusCode) {\n        code = error.response.statusCode.toString();\n    }\n    const payload = generateTelemetryPayload(`${error}. Code: ${code}. Error details: ${error === null || error === void 0 ? void 0 : (_error_response1 = error.response) === null || _error_response1 === void 0 ? void 0 : _error_response1.text}`, operationName);\n    instrument.probe('logAndFlushTelemetryInfo', payload);\n    logger.error(payload.details, {\n        action: payload.action,\n        actionModifier: payload.actionModifier,\n        page: payload.page\n    });\n}\nfunction parseRequest(request, taskName) {\n    let operationName;\n    if (getAppConfig('runtimeEnvironment') === 'browser') {\n        operationName = getWindow().location.href;\n    } else {\n        operationName = 'server';\n    }\n    const requestHeaders = request.header;\n    const correlationId = requestHeaders && requestHeaders[Constants.Headers.CorrelationId] || '';\n    const requestId = requestHeaders && requestHeaders[Constants.Headers.RequestId] || '';\n    const parsedUrl = parseURL(request.url);\n    const telemetry = {\n        taskName,\n        correlationId,\n        requestId,\n        operation: operationName,\n        httpMethod: request.method,\n        hostName: parsedUrl.host || '',\n        targetUri: request.url,\n        requestHeaders: JSON.stringify(scrubHeaders(requestHeaders))\n    };\n    return telemetry;\n}\nexport function logOutRequestStart(request) {\n    // Prevent recusrive logs\n    if (request.url.indexOf('api/log') === -1 && request) {\n        const telemetry = parseRequest(request, Constants.Telemetry.OutRequest.Start);\n        logOutRequestEventInfo(telemetry);\n        systemLogger.info({\n            event: telemetry\n        });\n    }\n}\n// TODO: Merge commong code with logOutRequestError\nexport function logOutRequestEnd(request, response, durationInMilliseconds) {\n    // Prevent recusrive logs\n    if (request.url.indexOf('api/log') === -1 && request && response) {\n        let taskName;\n        let errorMessage;\n        if (response.ok) {\n            taskName = Constants.Telemetry.OutRequest.EndWithSuccess;\n        } else if (response.clientError) {\n            taskName = Constants.Telemetry.OutRequest.EndWithClientError;\n            errorMessage = response.text;\n        } else {\n            taskName = Constants.Telemetry.OutRequest.EndWithServerError;\n            errorMessage = response.text;\n        }\n        const requestStart = parseRequest(request, taskName);\n        const contentLength = response.header && response.header['content-length'] && Number(response.header['content-length']) || 0;\n        const requestEnd = _object_spread_props(_object_spread({}, requestStart), {\n            durationInMilliseconds,\n            httpStatusCode: response.status,\n            errorMessage,\n            contentLength,\n            responseHeaders: JSON.stringify(scrubHeaders(response.header))\n        });\n        logOutRequestEventInfo(requestEnd);\n        systemLogger.info({\n            event: requestEnd\n        });\n    }\n}\n// TODO: Merge commong code with logOutRequestEnd\nexport function logOutRequestError(request, response, duration, error, parsingError) {\n    // Prevent recusrive logs\n    if (request.url.indexOf('api/log') === -1 && request && response) {\n        const actionModifier = parsingError || response.clientError ? Constants.Telemetry.OutRequest.EndWithClientError : Constants.Telemetry.OutRequest.EndWithServerError;\n        const requestStart = parseRequest(request, actionModifier);\n        const errorMessage = stringifyError(error);\n        const contentLength = response.header && response.header['content-length'] && Number(response.header['content-length']) || 0;\n        const requestEnd = _object_spread_props(_object_spread({}, requestStart), {\n            durationInMilliseconds: duration,\n            httpStatusCode: response.status,\n            errorMessage,\n            contentLength,\n            responseHeaders: JSON.stringify(scrubHeaders(response.header))\n        });\n        logOutRequestEventInfo(requestEnd);\n        systemLogger.error({\n            event: requestEnd\n        });\n    }\n}\nexport function shouldRefreshToken(token) {\n    if (__SERVER__) {\n        return false;\n    }\n    const currentTime = Math.round(Date.now() / 1000);\n    const tolerance = 5 * 60;\n    try {\n        const decodedToken = token ? jwtDecode(token) : null;\n        if (decodedToken) {\n            if (typeof decodedToken.exp === 'number') {\n                const expiryTime = decodedToken.exp;\n                if (expiryTime - currentTime < tolerance) {\n                    return true;\n                }\n            }\n        }\n    } catch (err) {\n        return true;\n    }\n    return false;\n}\n","import { DataMap } from '@shared/utils/dataMapping';\nimport { Constants } from '@shared/utils/constants';\nimport { bitMasksMatchBitMask } from '@shared/utils/datamappingHelpers';\nimport { getProdcutBitMaskInfo } from '@shared/utils/appUtils';\nexport function shouldShowPopUp() {\n    return true;\n}\n/**\n * detemine if app consent modal is a contact form\n *\n * @param appInfo: application info\n * @param ctaType: click-to-action type\n *\n * @return:\n *  true, if application click-to-action is Contact Me, and not a test drive\n *  false, otherwise\n */ export const isAppContactForm = (appInfo, ctaType)=>{\n    if (!appInfo) {\n        return false;\n    }\n    if (appInfo.licenseManagement && appInfo.licenseManagement.isMicrosoftManaged) {\n        return ctaType === Constants.CTAType.RequestTrial;\n    }\n    return appInfo.actionString === Constants.ActionStrings.RequestTrial && ctaType !== Constants.CTAType.TestDrive;\n};\nexport function isLeadgenEnabled() {\n    // All apps should be considered as sending leads\n    return true;\n}\nexport function getContactSubmitText(context) {\n    return context.loc('CTA_ContactMe');\n}\nexport function isETERunning(query) {\n    return query && !!query[Constants.QueryStrings.ete];\n}\n// Localization\nexport function getServiceDisclaimerLeadConsentLocalizationName() {\n    return 'Service_Disclaimer_LeadConsent';\n}\nexport function getAppDisclaimerLeadConsentLocalizationName(usesEnterpriseContract, productType) {\n    if (bitMasksMatchBitMask(productType, getProdcutBitMaskInfo(DataMap.products.Dynamics365)) || bitMasksMatchBitMask(productType, getProdcutBitMaskInfo(DataMap.products.Dynamics365forBusinessCentral))) {\n        return 'TRY_Disclaimer_LeadConsent_Dynamics365';\n    }\n    return 'TRY_Disclaimer_LeadConsent';\n}\nexport function getContactMeConsentTermsLocalizationName() {\n    return 'RT_Disclaimer';\n}\nexport function getLegalTermsText(context) {\n    return context.loc('RT_Terms');\n}\n","function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nimport { Constants } from './../utils/constants';\nimport { SpzaInstrumentService } from '../services/telemetry/spza/spzaInstrument';\nimport { getWindow } from './../services/window';\nimport { getAppConfig } from './../services/init/appConfig';\nimport { getLocalStorageItem, saveLocalStorageItem } from './../utils/browserStorageUtils';\nimport { isEmptyNullorUndefinedString } from './../utils/stringUtils';\nimport { logger } from '@src/logger';\n(function(NpsModule) {\n    let showModal;\n    let npsHelper = null;\n    let idleCounter = 0;\n    let blocked = false;\n    let idleTimer = null;\n    let isNotSameCorrelationId = false;\n    let sessionStartTime = 0;\n    function setTimer(callback, interval) {\n        // check every 1 second\n        idleTimer = window.setInterval(callback, interval || 1000);\n    }\n    NpsModule.setTimer = setTimer;\n    function reset() {\n        blocked = false;\n        idleTimer = null;\n    }\n    NpsModule.reset = reset;\n    function dLog(debugMsg) {\n        const instrument = SpzaInstrumentService.getProvider();\n        const data = {\n            npsFrom: debugMsg,\n            npsStore: npsHelper.getStore()\n        };\n        const payload = {\n            page: getWindow().location.href,\n            action: Constants.Telemetry.Action.NPS,\n            actionModifier: Constants.Telemetry.ActionModifier.Debug,\n            details: JSON.stringify(data)\n        };\n        instrument.probe('logAndFlushTelemetryInfo', payload);\n        logger.info(payload.details, {\n            action: payload.action,\n            actionModifier: payload.actionModifier\n        });\n    }\n    function checkForNPS(viewedAppsCount, acquiredAppsCount, interval, debugMsg) {\n        if (npsHelper) {\n            const waitTime = 30 * 1000; // If all conditions are met, we wait for 30 seconds since the start-up to show the NPS popup.\n            const currentTime = Date.now();\n            if (sessionStartTime && currentTime - sessionStartTime > waitTime) {\n                const oneHourInMS = 1000 * 60 * 60;\n                const savedSessionEndTime = npsHelper.getItem('sessionEndTime');\n                const viewedApps = viewedAppsCount || npsHelper.getItem('viewedApps');\n                const acquiredApps = acquiredAppsCount || npsHelper.getItem('acquiredApps');\n                const isAppsCriteriaValid = viewedApps && viewedApps >= npsHelper.viewedAppsTriggerNumber || acquiredApps && acquiredApps >= npsHelper.acquiredAppsTriggerNumber;\n                const isTimeCriteriaValid = savedSessionEndTime && sessionStartTime - savedSessionEndTime > oneHourInMS;\n                if (isTimeCriteriaValid && isAppsCriteriaValid && isNotSameCorrelationId && npsHelper.due() && idleTimer == null) {\n                    // turn on the timer\n                    setTimer(()=>{\n                        if (!blocked) {\n                            idleCounter++;\n                            if (idleCounter >= 3) {\n                                window.clearInterval(idleTimer);\n                                idleTimer = null;\n                                dLog(debugMsg);\n                                ResetNPSCount();\n                                showModal();\n                            }\n                        }\n                    }, interval);\n                }\n            }\n        }\n    }\n    NpsModule.checkForNPS = checkForNPS;\n    function IncreaseAppDetail(interval) {\n        if (npsHelper) {\n            let viewedApps = npsHelper.getItem('viewedApps');\n            if (!viewedApps) {\n                viewedApps = 1;\n            } else {\n                viewedApps += 1;\n            }\n            npsHelper.setItem('viewedApps', viewedApps);\n            checkForNPS(viewedApps, npsHelper.getItem('acquiredApps'), interval, 'detailsPage');\n        }\n    }\n    NpsModule.IncreaseAppDetail = IncreaseAppDetail;\n    function IncreaseAppAcquisition(interval) {\n        if (npsHelper) {\n            let acquiredApps = npsHelper.getItem('acquiredApps') || 0;\n            acquiredApps++;\n            npsHelper.setItem('acquiredApps', acquiredApps);\n            checkForNPS(npsHelper.getItem('viewedApps'), acquiredApps, interval, 'detailsPage');\n        }\n    }\n    NpsModule.IncreaseAppAcquisition = IncreaseAppAcquisition;\n    function ResetNPSIdle() {\n        if (npsHelper) {\n            idleCounter = 0;\n        }\n    }\n    NpsModule.ResetNPSIdle = ResetNPSIdle;\n    function ResetNPSCount() {\n        if (npsHelper) {\n            npsHelper.setItem('viewedApps', 0);\n            npsHelper.setItem('acquiredApps', 0);\n            npsHelper.setItem('sessionEndTime', null);\n        }\n    }\n    NpsModule.ResetNPSCount = ResetNPSCount;\n    function SetShortInterval() {\n        if (npsHelper) {\n            npsHelper.setNext(npsHelper.shortInterval);\n        }\n    }\n    NpsModule.SetShortInterval = SetShortInterval;\n    function SetInterval(interval, offset) {\n        if (npsHelper) {\n            npsHelper.setNext(interval, offset);\n        }\n    }\n    NpsModule.SetInterval = SetInterval;\n    function Declined() {\n        if (npsHelper) {\n            if (npsHelper.getItem('secondTime')) {\n                npsHelper.setItem('secondTime', false);\n                npsHelper.setNext(npsHelper.longInterval);\n            } else {\n                npsHelper.setItem('secondTime', true);\n                npsHelper.setNext(npsHelper.shortInterval);\n            }\n        }\n    }\n    NpsModule.Declined = Declined;\n    function Submitted() {\n        if (npsHelper) {\n            // succeeded\n            npsHelper.setItem('secondTime', false);\n            npsHelper.setNext(npsHelper.longInterval);\n        }\n    }\n    NpsModule.Submitted = Submitted;\n    function BlockShowingNPS() {\n        if (npsHelper) {\n            blocked = true;\n        }\n    }\n    NpsModule.BlockShowingNPS = BlockShowingNPS;\n    function AllowShowingNPS() {\n        if (npsHelper) {\n            blocked = false;\n            ResetNPSIdle();\n        }\n    }\n    NpsModule.AllowShowingNPS = AllowShowingNPS;\n    function SaveSessionEndTime() {\n        if (npsHelper) {\n            const savedSessionEndTime = npsHelper.getItem('sessionEndTime');\n            // save if it is set to null or doesn't exist\n            // opening the NPS model will set it to null (inside ResetNPS)\n            if (!savedSessionEndTime) {\n                npsHelper.setItem('sessionEndTime', Date.now());\n            }\n        }\n    }\n    NpsModule.SaveSessionEndTime = SaveSessionEndTime;\n    function Initialize(showModalFunction, timerInterval) {\n        // only init from client\n        sessionStartTime = Date.now();\n        showModal = showModalFunction;\n        npsHelper = new Nps();\n        const currentCorrelationId = getAppConfig('correlationId');\n        const savedCorrelationId = npsHelper.getItem('correlationId');\n        if (savedCorrelationId && currentCorrelationId !== savedCorrelationId) {\n            isNotSameCorrelationId = true;\n        } else {\n            isNotSameCorrelationId = false;\n            npsHelper.setItem('correlationId', currentCorrelationId);\n        }\n        let viewedApps = npsHelper.getItem('viewedApps');\n        if (!viewedApps) {\n            viewedApps = 0;\n        }\n        let acquiredApps = npsHelper.getItem('acquiredApps');\n        if (!acquiredApps) {\n            acquiredApps = 0;\n        }\n        checkForNPS(viewedApps, acquiredApps, timerInterval, 'landingPage');\n    }\n    NpsModule.Initialize = Initialize;\n    class Nps {\n        reset(next) {\n            let initNext = next || Date.now();\n            initNext += this.timeTriggerInterval; // This is added to find the 'time' at which we need to show the nps for the first time\n            const date = new Date(initNext);\n            const store = {\n                next: initNext,\n                nextText: date.toString(),\n                secondTime: false,\n                viewedApps: 0,\n                acquiredApps: 0,\n                sessionEndTime: null\n            };\n            this.setStore(store);\n            return store;\n        }\n        getStore() {\n            try {\n                const storeString = getLocalStorageItem(this.storeTitle);\n                if (!isEmptyNullorUndefinedString(storeString)) {\n                    return JSON.parse(storeString);\n                } else {\n                    return this.reset();\n                }\n            } catch (e) {\n                return this.reset();\n            }\n        }\n        setStore(store) {\n            const storeString = JSON.stringify(store);\n            try {\n                saveLocalStorageItem(this.storeTitle, storeString);\n            } catch (e) {\n            // In case of quota exceed exception we dont want to crash rather not let NPS show up.\n            }\n        }\n        getItem(section) {\n            const store = this.getStore();\n            if (store && section in store) {\n                return store[`${section}`];\n            } else {\n                return null;\n            }\n        }\n        setItem(section, data) {\n            const store = this.getStore();\n            if (store) {\n                store[`${section}`] = data;\n            }\n            this.setStore(store);\n        }\n        getNext() {\n            const next = this.getItem(Constants.LocalStorage.npsNext);\n            if (next) {\n                return next;\n            } else {\n                return 0;\n            }\n        }\n        setNext(next, offset = true) {\n            if (offset) {\n                next = Date.now() + next;\n            }\n            const nextText = new Date(next);\n            this.setItem(Constants.LocalStorage.npsNext, next);\n            this.setItem(Constants.LocalStorage.npsNextText, nextText.toString());\n        }\n        due(next) {\n            const by = next || this.getNext();\n            const now = Date.now();\n            return now >= by;\n        }\n        constructor(){\n            _define_property(this, \"longInterval\", void 0);\n            _define_property(this, \"shortInterval\", void 0);\n            _define_property(this, \"timeTriggerInterval\", void 0);\n            _define_property(this, \"viewedAppsTriggerNumber\", void 0);\n            _define_property(this, \"acquiredAppsTriggerNumber\", void 0);\n            _define_property(this, \"storeTitle\", void 0);\n            this.storeTitle = Constants.LocalStorage.nps;\n            this.longInterval = 1000 * 3600 * 24 * 30 * 3; // delay after accepting\n            this.shortInterval = 1000 * 3600 * 24 * 30 * 1; // delay after denying\n            this.timeTriggerInterval = 1000 * 3600 * 1; // amount of delay the user needs to wait to see an nps dialog after the first visit\n            this.viewedAppsTriggerNumber = 2; // amount of apps viewed has to be greater than this number in order to trigger nps\n            this.acquiredAppsTriggerNumber = 1; // amount of apps that need to be acquired before triggering nps\n        }\n    }\n})(NpsModule || (NpsModule = {}));\nexport var NpsModule;\n","/* eslint-disable no-prototype-builtins */ import { Constants } from './constants';\nexport const isUndefined = (item)=>{\n    return item === undefined || typeof item === Constants.TypeOf.undefinedName;\n};\n/**\n *  determine item is null or undefined mainly for primitive values\n *\n *   primitive values are booleans (e.x. false), numbers (e.x. 0), and strings (e.x. '')\n *   otherwise for object, array, function, using `!item` is sufficient\n */ export const isNullorUndefined = (item)=>{\n    return isUndefined(item) || item === null;\n};\nexport const isObject = (item)=>{\n    return !!item && typeof item === Constants.TypeOf.objectName;\n};\n/**\n * check if an existing object, or array is empty\n */ export const isEmptyObject = (object)=>{\n    if (!isObject(object)) {\n        return false;\n    }\n    const isNotEmpty = Object.keys(object).some((key)=>{\n        // return as soon as object is not empty\n        return object.hasOwnProperty(key);\n    });\n    return !isNotEmpty;\n};\nexport const isArray = (item)=>{\n    return !!item && Array.isArray(item);\n};\n/**\n * check if it is a pure object, not an array\n */ export const isPureObject = (item)=>{\n    return isObject(item) && !isArray(item);\n};\nexport const isFunction = (item)=>{\n    return !!item && typeof item === Constants.TypeOf.functionName;\n};\nexport const isBoolean = (item)=>{\n    return typeof item === Constants.TypeOf.booleanName;\n};\nexport const isString = (item)=>{\n    return typeof item === Constants.TypeOf.stringName;\n};\nexport const isNumber = (item)=>{\n    return typeof item === Constants.TypeOf.numberName;\n};\n/**\n * deep merge two objects\n */ export const mergeDeep = (target, source)=>{\n    let output = Object.assign({}, target);\n    if (isObject(target) && isObject(source)) {\n        if (Array.isArray(source)) {\n            output = source.concat(target.filter((element)=>source.indexOf(element) < 0));\n        } else {\n            Object.keys(source).forEach((key)=>{\n                const sourceKey = source[`${key}`];\n                if (isObject(sourceKey)) {\n                    if (!(key in target)) {\n                        Object.assign(output, {\n                            [key]: source[`${key}`]\n                        });\n                    } else {\n                        output[`${key}`] = mergeDeep(target[`${key}`], source[`${key}`]);\n                    }\n                } else {\n                    Object.assign(output, {\n                        [key]: source[`${key}`]\n                    });\n                }\n            });\n        }\n    }\n    return output;\n};\n/**\n * deep equal between two objects\n *\n *  NOTE:\n *      EXCEPTION: if two objects have functions they would never be equal\n *      reference:\n *          chai deep equal\n *          https://github.com/chaijs/chai/issues/697\n *\n *          Deep equal is designed to compare deeply not loosely, if that makes sense.\n *          In other words, it is designed to traverse the keys of an object or array (and soon iterables) and\n *          compare the values of those properties with each other.\n *          Importantly, when it gets to a value that isn't an iterable, array, or object,\n *          it actually uses a stricter-than-strict equality comparison (it uses SameValue).\n *          Functions are not iterables, they have no keys which could make a good quality comparison,\n *          and as such are given the SameValue treatment.\n */ export const deepEqual = function(x, y, shouldSkipInlineFunctionCheck = false) {\n    if (x === y) {\n        return true;\n    }\n    if (isFunction(x) && isFunction(y) && shouldSkipInlineFunctionCheck) {\n        return true;\n    } else if (isObject(x) && isObject(y)) {\n        if (Object.keys(x).length !== Object.keys(y).length) {\n            return false;\n        }\n        for(const prop in x){\n            if (y.hasOwnProperty(prop)) {\n                if (!deepEqual(x[`${prop}`], y[`${prop}`], shouldSkipInlineFunctionCheck)) {\n                    return false;\n                }\n            } else {\n                return false;\n            }\n        }\n        return true;\n    }\n    return false;\n};\n","export const oneTimePaymentOffers = [\n    'microsoft_teams.microsoft_teams_virtual_events_basic',\n    'microsoft_teams.microsoft_teams_virtual_events_professional',\n    'microsoft_teams.microsoft_teams_virtual_events_premium',\n    'isvtestuklegacy.teams_virtual_events_premium',\n    'isvtestuklegacy.teams_virtual_events_premium-preview'\n];\nexport const isOneTimePaymentOffer = (entityId)=>{\n    return oneTimePaymentOffers.includes(entityId);\n};\n","import configDf from './partnersManifest_df.json';\nimport configProd from './partnersManifest_prod.json';\nimport { Environment } from '@shared/utils/constants';\nimport { getWindow } from '@shared/services/window';\nconst configsMap = {\n    [Environment.Production]: configProd,\n    [Environment.Canary]: configProd,\n    [Environment.Dogfood]: configDf,\n    [Environment.Test]: configDf,\n    [Environment.Development]: configDf\n};\nexport const loadPartnerManifest = ()=>{\n    var _getWindow___INITIAL_STATE___config, _getWindow___INITIAL_STATE__, _getWindow;\n    return configsMap[((_getWindow = getWindow()) === null || _getWindow === void 0 ? void 0 : (_getWindow___INITIAL_STATE__ = _getWindow.__INITIAL_STATE__) === null || _getWindow___INITIAL_STATE__ === void 0 ? void 0 : (_getWindow___INITIAL_STATE___config = _getWindow___INITIAL_STATE__.config) === null || _getWindow___INITIAL_STATE___config === void 0 ? void 0 : _getWindow___INITIAL_STATE___config.siteEnvironment) || process.env.siteEnvironment];\n};\n","function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nfunction _object_spread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        var ownKeys = Object.keys(source);\n        if (typeof Object.getOwnPropertySymbols === \"function\") {\n            ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n            }));\n        }\n        ownKeys.forEach(function(key) {\n            _define_property(target, key, source[key]);\n        });\n    }\n    return target;\n}\nfunction ownKeys(object, enumerableOnly) {\n    var keys = Object.keys(object);\n    if (Object.getOwnPropertySymbols) {\n        var symbols = Object.getOwnPropertySymbols(object);\n        if (enumerableOnly) {\n            symbols = symbols.filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n            });\n        }\n        keys.push.apply(keys, symbols);\n    }\n    return keys;\n}\nfunction _object_spread_props(target, source) {\n    source = source != null ? source : {};\n    if (Object.getOwnPropertyDescriptors) {\n        Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n        ownKeys(Object(source)).forEach(function(key) {\n            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n    }\n    return target;\n}\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport * as React from 'react';\nimport { PricingStates, OdataRawObjectAppType, TermsStrings } from '@shared/Models';\nimport { AzureEnvironmentSettings, AzureEnvironment } from '@shared/AzureEnvironmentSettings';\nimport { Constants, OfferType, allBillingCountries, PlanPricingType } from '@shared/utils/constants';\nimport FuturePriceTooltip from '@shared/components/futurePriceTooltip';\nimport { CustomMeterPricingMaxFractionDigits } from '@shared/components/customMeterPricing';\nimport { ButtonLink } from '@shared/components/ButtonLink';\nimport { isD365App, isD365BCApp, isPowerBIVisualsApp, isBagTransactable, isTransactApp, getPDPRoute, getProductByUrlKey } from '@shared/utils/appUtils';\nimport { getPrimaryProductUrl } from '@shared/utils/datamappingHelpers';\nconst fallbackCountryCode = 'US';\nexport function loadAppPricing(rawApp, pricesData) {\n    if (!rawApp || rawApp.appType === OdataRawObjectAppType.private) {\n        return rawApp;\n    }\n    const app = _object_spread({}, rawApp);\n    const pricingData = pricesData[app.entityId];\n    if (pricingData) {\n        app.startingPrice = pricingData;\n        if (!app.startingPrice.pricingData) {\n            app.startingPrice.pricingData = PricingStates.NoPricingData;\n        }\n        if (pricingData.pricingBitmask) {\n            Object.keys(pricingData.pricingBitmask).forEach((key)=>{\n                if (!app[`${key}`]) {\n                    app[`${key}`] = 0;\n                }\n                app[`${key}`] |= pricingData.pricingBitmask[`${key}`];\n            });\n        }\n    } else {\n        app.startingPrice = {\n            pricingData: PricingStates.NoPricingData\n        };\n    }\n    return app;\n}\nconst mooncakeBillingCountries = [\n    {\n        countryCode: 'cn',\n        currency: 'CNY',\n        name: 'China'\n    }\n];\nexport const billingCountries = AzureEnvironmentSettings.environment === AzureEnvironment.Mooncake ? mooncakeBillingCountries : allBillingCountries;\nexport function getBillingCountryByCountryCode(countryCode) {\n    return billingCountries.filter((item)=>item.countryCode.toLowerCase() === countryCode.toLowerCase())[0];\n}\nexport function renderNotAvailablePriceUI(context) {\n    return /*#__PURE__*/ _jsxs(\"div\", {\n        className: \"noAvailablePrice\",\n        children: [\n            /*#__PURE__*/ _jsx(\"h6\", {\n                className: \"c-heading-6\",\n                children: context.loc('Pricing_SoftwarePlanDetail_Title')\n            }),\n            /*#__PURE__*/ _jsx(\"p\", {\n                children: context.loc('Pricing_SoftwarePlanDetail_NotAvailableDescription')\n            })\n        ]\n    });\n}\nexport function getContactPublisherText(context) {\n    return `<span class='contactPublisherText'>${context.loc('Pricing_ContactPublisher')}</span>`;\n}\nconst DAYS_IN_MONTH = 30;\nconst DAYS_IN_YEAR = 365;\nexport const TermsStringsToDays = (term)=>{\n    switch(term){\n        case TermsStrings.Term1MString:\n        case TermsStrings.MonthString:\n            return DAYS_IN_MONTH;\n        case TermsStrings.Term1YString:\n        case TermsStrings.YearString:\n            return DAYS_IN_YEAR;\n        case TermsStrings.Term2YString:\n            return DAYS_IN_YEAR * 2; // 365*2 years\n        case TermsStrings.Term3YString:\n            return DAYS_IN_YEAR * 3; // 365*3 years\n        default:\n            return DAYS_IN_MONTH;\n    }\n};\nfunction getFreeTrialText({ context, asInlineHTML, hasFreeTrial, freeTrialTerm, freeDurationDays }) {\n    if (!hasFreeTrial) {\n        return '';\n    }\n    const months = freeDurationDays ? freeDurationDays / DAYS_IN_MONTH : TermsStringsToDays(freeTrialTerm) / DAYS_IN_MONTH;\n    const singleMonthText = asInlineHTML ? context.locParams('FreeTrialFirstMonthFree', [\n        '<span>',\n        '</span>'\n    ]) : context.loc('First_Month_Free_Trial', `First month free, then `);\n    const multiMonthText = asInlineHTML ? context.locParams('FreeTrialFirstSomeMonthsFree', [\n        '<span>',\n        months.toString(),\n        '</span>'\n    ]) : context.locParams('First_Months_Free_Trial', [\n        months.toString()\n    ], `First ${months.toString()} months free, then`);\n    return months === 1 ? singleMonthText : multiMonthText;\n}\nfunction getCustomMeterPricing(context, countryCode, currency, sku, price) {\n    var _price_customMeter;\n    if (!((_price_customMeter = price.customMeter) === null || _price_customMeter === void 0 ? void 0 : _price_customMeter.length)) {\n        return '';\n    }\n    let customMeterPriceText = '';\n    const customMeters = price.customMeter;\n    let firstLine = true;\n    for(let i = 0; i < customMeters.length; i++){\n        if (customMeters[`${i}`].includedQuantity === '0') {\n            continue;\n        }\n        if (firstLine) {\n            customMeterPriceText += context.locParams('PricingInclude', [\n                \"<span id='includedPrice'>\",\n                ':</span><span>',\n                customMeters[`${i}`].title + ': ' + customMeters[`${i}`].includedQuantity,\n                '</span>'\n            ]);\n            firstLine = false;\n        } else {\n            customMeterPriceText += '<span>' + customMeters[`${i}`].title + ': ' + customMeters[`${i}`].includedQuantity + '</span>';\n        }\n    }\n    for(let i = 0; i < customMeters.length; i++){\n        const priceString = customMeters[`${i}`].rate.toLocaleString(countryCode, {\n            style: 'currency',\n            currency: sku.currencyCode || currency,\n            maximumFractionDigits: CustomMeterPricingMaxFractionDigits\n        });\n        if (i === 0) {\n            customMeterPriceText += context.locParams('PricingPlus', [\n                \"<span id='plusPrice'>\",\n                ':</span><span>',\n                customMeters[`${i}`].title + ': ' + priceString,\n                customMeters[`${i}`].unit.toLowerCase(),\n                '</span>'\n            ]);\n        } else {\n            customMeterPriceText += '<span>' + customMeters[`${i}`].title + ': ' + priceString + ' ' + customMeters[`${i}`].unit.toLowerCase() + '</span>';\n        }\n    }\n    return customMeterPriceText;\n}\nfunction getLocaleLanguage({ locale }) {\n    const localeLanguage = (locale === null || locale === void 0 ? void 0 : locale.includes('-')) ? locale.split('-')[0] : Constants.DefaultLocale.split('-')[0];\n    return localeLanguage;\n}\nfunction getCountryCodeRegion({ countryCode }) {\n    const countryCodeRegion = countryCode ? countryCode.includes('-') ? countryCode.split('-')[1] : countryCode : fallbackCountryCode;\n    return countryCodeRegion;\n}\nexport function getPricingLocale({ locale, countryCode }) {\n    const localeLanguage = getLocaleLanguage({\n        locale\n    });\n    const countryCodeRegion = getCountryCodeRegion({\n        countryCode\n    });\n    const localeString = `${localeLanguage.toLowerCase()}-${countryCodeRegion.toUpperCase()}`;\n    return localeString;\n}\nexport function getPriceWithCurrencySymbol(price, countryCode, currency, maximumFractionDigits = 5, locale) {\n    const localeString = getPricingLocale({\n        locale,\n        countryCode\n    });\n    let priceString = price.toLocaleString(localeString, {\n        style: 'currency',\n        currency,\n        maximumFractionDigits\n    });\n    // If the currency code is not converted to a symbol, then we want to display a space between the text and number.\n    // For ex, PHP11.166 should be PHP 11.166. toLocaleString(..) does not support formatting. So we shd do this manually.\n    // We first find out if the currency is present in the resulting priceString. This makes sure we aren't inserting space in a symbol.\n    // We find out the position to insert a space (currencyValuePosition). We make sure that we are inserting\n    // a space in between the price string - we don't want to insert a space at the end. Also, we don't want to insert a space if we already have one.\n    const currencyCodePosition = priceString.indexOf(currency);\n    const currencyValuePosition = currencyCodePosition + currency.length;\n    const matchWhitespace = /\\s/;\n    if (currencyCodePosition >= 0 && currencyValuePosition < priceString.length && !matchWhitespace.test(priceString[`${currencyValuePosition}`])) {\n        priceString = priceString.slice(0, currencyValuePosition) + ' ' + priceString.slice(currencyValuePosition, priceString.length);\n    }\n    return priceString;\n}\nexport function getPriceString({ context, price, countryCode, currency, maximumFractionDigits = 5, formatStringLocalizationKey = '{0}/{1}', isQuantifiable = false, ignoreFreeString = false, isOneTimePaymentOffer = false, locale, offerType }) {\n    if (!price || typeof price !== 'object') {\n        return '';\n    }\n    let text = '';\n    if (price.value === 0 && !ignoreFreeString) {\n        text = context.loc('Pricing_Free');\n    } else {\n        let unitLocalizationKey = '';\n        if (price.unit.toLowerCase() === 'hr' || price.unit.toLowerCase() === 'hour' || price.unit.toLowerCase() === 'hours') {\n            unitLocalizationKey = 'Pricing_Hour';\n        } else if (price.unit.toLowerCase() === 'month') {\n            unitLocalizationKey = 'Pricing_Month';\n        } else if (price.unit.toLowerCase() === 'year') {\n            unitLocalizationKey = 'Pricing_Year';\n        } else if (price.unit.toLowerCase() === 'perpetual') {\n            unitLocalizationKey = '';\n        } else {\n            unitLocalizationKey = price.unit;\n        }\n        if (isQuantifiable && unitLocalizationKey && offerType !== OfferType.VirtualMachine) {\n            unitLocalizationKey = `User_${unitLocalizationKey}`;\n        }\n        if (countryCode && countryCode.toLowerCase() === 'dk') {\n            countryCode = 'CA';\n        }\n        const priceString = getPriceWithCurrencySymbol(price.value, countryCode, currency, maximumFractionDigits, locale);\n        if (isOneTimePaymentOffer) {\n            return priceString;\n        }\n        if (unitLocalizationKey) {\n            text = context.locParams(formatStringLocalizationKey, [\n                priceString,\n                context.loc(unitLocalizationKey)\n            ]);\n        } else {\n            text = priceString;\n        }\n    }\n    return text;\n}\nexport function getVariablePriceString(sku, countryCode, currency, context, isOneTimePaymentOffer, locale) {\n    const returnObj = {\n        monthlyPrice: '',\n        yearlyPrice: '',\n        price: ''\n    };\n    if (sku.priceVaries) {\n        if (sku.offerType === OfferType.SolutionTemplate) {\n            returnObj.price = context.loc('CostOfDeployedTemplateComponents');\n            return returnObj;\n        } else {\n            returnObj.price = context.loc('PriceVaries');\n            return returnObj;\n        }\n    }\n    if (sku.termPrices) {\n        sku.termPrices.forEach((termPrice)=>{\n            let termPriceString = getPriceString({\n                context,\n                price: termPrice,\n                countryCode,\n                currency: sku.currencyCode || currency,\n                locale,\n                isQuantifiable: sku.isQuantifiable,\n                ignoreFreeString: true,\n                isOneTimePaymentOffer\n            });\n            if (sku.azureInfraCostsExtra) {\n                if (sku.offerType !== OfferType.ManagedApp) {\n                    returnObj.price = context.locParams('PriceWithAzureInfraCostsExtra', [\n                        termPriceString\n                    ]);\n                    return returnObj;\n                }\n                // Managed Apps support custom meters, we should show Azure Infra Costs along with custom meters\n                termPriceString = context.locParams('PriceWithAzureInfraCostsExtra', [\n                    termPriceString\n                ]);\n            }\n            termPriceString = '<span>' + termPriceString + '</span>';\n            if (termPrice.customMeter && termPrice.customMeter.length > 0) {\n                const customMeterText = getCustomMeterPricing(context, countryCode, currency, sku, termPrice);\n                termPriceString += customMeterText;\n            }\n            const freeTrialText = getFreeTrialText({\n                context,\n                asInlineHTML: true,\n                hasFreeTrial: termPrice.freeDurationDays > 0,\n                freeTrialTerm: termPrice.unit,\n                freeDurationDays: termPrice.freeDurationDays\n            });\n            termPriceString = freeTrialText + termPriceString;\n            if (termPrice.unit.toLowerCase() === Constants.TermPeriod.Month) {\n                returnObj.monthlyPrice = termPriceString;\n            } else if (termPrice.unit.toLowerCase() === Constants.TermPeriod.Year) {\n                returnObj.yearlyPrice = termPriceString;\n            }\n        });\n        return returnObj;\n    }\n    const price = getPriceString({\n        context,\n        price: sku.startingPrice,\n        countryCode,\n        currency: sku.currencyCode || currency,\n        locale,\n        isQuantifiable: sku.isQuantifiable,\n        ignoreFreeString: true,\n        isOneTimePaymentOffer\n    });\n    if (sku.azureInfraCostsExtra) {\n        returnObj.price = context.locParams('PriceWithAzureInfraCostsExtra', [\n            price\n        ]);\n        return returnObj;\n    }\n    returnObj.price = price;\n    return returnObj;\n}\nfunction getDefaultPrice({ loc }) {\n    return `<span class='contactPublisherText'>${loc('PriceVaries')}</span>`;\n}\nexport function getFuturePriceVariablePriceString({ countryCode, currency, context, futureSku, isOneTimePaymentOffer, locale }) {\n    const futurePriceObj = futureSku && getVariablePriceString(futureSku, countryCode, currency, context, isOneTimePaymentOffer, locale);\n    const futureMonthlyPrice = futurePriceObj === null || futurePriceObj === void 0 ? void 0 : futurePriceObj.monthlyPrice;\n    const futureYearlyPrice = futurePriceObj === null || futurePriceObj === void 0 ? void 0 : futurePriceObj.yearlyPrice;\n    return {\n        futurePriceMonthly: futureMonthlyPrice ? {\n            price: futureMonthlyPrice,\n            startDate: futureSku === null || futureSku === void 0 ? void 0 : futureSku.startDate\n        } : null,\n        futurePriceYearly: futureYearlyPrice ? {\n            price: futureYearlyPrice,\n            startDate: futureSku === null || futureSku === void 0 ? void 0 : futureSku.startDate\n        } : null\n    };\n}\nexport function getVariablePriceStringWithDefault({ sku, showPriceColumn, showYearlyPrice, showMonthlyPrice, isMicrosoftManaged, countryCode, currency, context, futureSku, shouldBlockPrices, isOneTimePaymentOffer, locale }) {\n    const priceObj = showPriceColumn && sku ? getVariablePriceString(sku, countryCode, currency, context, isOneTimePaymentOffer, locale) : {};\n    const monthlyPrice = priceObj === null || priceObj === void 0 ? void 0 : priceObj.monthlyPrice;\n    const yearlyPrice = priceObj === null || priceObj === void 0 ? void 0 : priceObj.yearlyPrice;\n    let defaultMonthlyPrice = getDefaultPrice(context);\n    let defaultYearlyPrice = getDefaultPrice(context);\n    const contactPublisherText = getContactPublisherText(context);\n    if (isMicrosoftManaged && !monthlyPrice && !yearlyPrice) {\n        if (!showMonthlyPrice && showYearlyPrice) {\n            defaultYearlyPrice = contactPublisherText;\n        } else {\n            defaultMonthlyPrice = contactPublisherText;\n        }\n    }\n    // Block prices for non-transactable offer types\n    if (shouldBlockPrices) {\n        return {\n            monthly: monthlyPrice ? contactPublisherText : defaultMonthlyPrice,\n            yearly: yearlyPrice ? contactPublisherText : defaultYearlyPrice,\n            price: '',\n            futurePriceMonthly: null,\n            futurePriceYearly: null\n        };\n    }\n    const { futurePriceMonthly, futurePriceYearly } = getFuturePriceVariablePriceString({\n        countryCode,\n        currency,\n        context,\n        futureSku,\n        isOneTimePaymentOffer,\n        locale\n    });\n    return {\n        monthly: monthlyPrice || (showMonthlyPrice ? defaultMonthlyPrice : ''),\n        yearly: yearlyPrice || (showYearlyPrice ? defaultYearlyPrice : ''),\n        price: priceObj && priceObj.price ? priceObj.price : '',\n        futurePriceMonthly,\n        futurePriceYearly\n    };\n}\nexport function getBillingFrequencyTranslated(context, term, onetimePaymentTranslation = 'Pricing_Onetime_Payment') {\n    if (!term) {\n        return context.loc(onetimePaymentTranslation, 'one-time payment');\n    }\n    switch(term){\n        case TermsStrings.Term1MString:\n        case TermsStrings.MonthString:\n            return context.loc('Pricing_Month', 'month');\n        case TermsStrings.Term1YString:\n        case TermsStrings.YearString:\n            return context.loc('Pricing_Year', 'year');\n        default:\n            return '';\n    }\n}\nexport function getBillingTermTranslated({ context, term, useHyphen = true, isSubscription }) {\n    switch(term){\n        case TermsStrings.Term1MString:\n        case TermsStrings.MonthString:\n            return !useHyphen ? context.loc('Pricing_Term_1_Month', '1 month') : context.locParams('Pricing_Term_termUnit_termDuration', [\n                '1',\n                `${isSubscription ? context.loc('Pricing_Month_Subscription', 'month subscription') : context.loc('Pricing_Month', 'month')}`\n            ], '1-month');\n        case TermsStrings.Term1YString:\n        case TermsStrings.YearString:\n            return !useHyphen ? context.loc('Pricing_Term_1_Year', '1 year') : context.locParams('Pricing_Term_termUnit_termDuration', [\n                '1',\n                `${isSubscription ? context.loc('Pricing_Year_Subscription', 'year subscription') : context.loc('Pricing_Year', 'year')}`\n            ], '1-year');\n        case TermsStrings.Term2YString:\n            return !useHyphen ? context.locParams('Pricing_Term_Years', [\n                '2'\n            ], '2 years') : context.locParams('Pricing_Term_termUnit_termDuration', [\n                '2',\n                `${isSubscription ? context.loc('Pricing_Year_Subscription', 'year subscription') : context.loc('Pricing_Year', 'year')}`\n            ], '2-year');\n        case TermsStrings.Term3YString:\n            return !useHyphen ? context.locParams('Pricing_Term_Years', [\n                '3'\n            ], '3 years') : context.locParams('Pricing_Term_termUnit_termDuration', [\n                '3',\n                `${isSubscription ? context.loc('Pricing_Year_Subscription', 'year subscription') : context.loc('Pricing_Year', 'year')}`\n            ], '3-year');\n        default:\n            return '';\n    }\n}\nexport function getPriceWithFrequencyText({ context, priceObject, isQuantifiable, countryCode, currency, maximumFractionDigits = 5, onetimePaymentTranslation = 'Pricing_Onetime_Payment', locale }) {\n    const { unit, billingPlan, value } = priceObject;\n    const priceValue = (billingPlan === null || billingPlan === void 0 ? void 0 : billingPlan.price) ? billingPlan.price.listPrice : value;\n    const priceText = getPriceWithCurrencySymbol(priceValue, countryCode, currency, maximumFractionDigits, locale);\n    const isOnetimePayment = !billingPlan;\n    const template = isQuantifiable ? 'Pricing_Per_User_Template' : 'Pricing_Flat_Template';\n    if (unit === TermsStrings.Term1MString || unit === TermsStrings.MonthString) {\n        const billingFrequency = getBillingTermTranslated({\n            context,\n            term: unit,\n            useHyphen: true,\n            isSubscription: false\n        });\n        return context.locParams(template, [\n            priceText,\n            billingFrequency\n        ]);\n    } else if (unit === TermsStrings.Term1YString || unit === TermsStrings.YearString) {\n        const billingFrequency = isOnetimePayment ? getBillingTermTranslated({\n            context,\n            term: unit,\n            useHyphen: true,\n            isSubscription: false\n        }) : context.loc('Pricing_Month', 'month');\n        return context.locParams(template, [\n            priceText,\n            billingFrequency\n        ]);\n    } else {\n        const billingFrequency = getBillingFrequencyTranslated(context, billingPlan === null || billingPlan === void 0 ? void 0 : billingPlan.billingPeriod, onetimePaymentTranslation);\n        return context.locParams(template, [\n            priceText,\n            billingFrequency\n        ]);\n    }\n}\nexport function getDetailedPriceText(context, countryCode, currency, sku, termPrice, locale) {\n    var _termPrice_customMeter;\n    const priceWithFrequency = getPriceWithFrequencyText({\n        context,\n        priceObject: termPrice,\n        isQuantifiable: sku.isQuantifiable,\n        countryCode,\n        currency,\n        locale\n    });\n    let priceText = `<span>${priceWithFrequency}</span>`;\n    if ((_termPrice_customMeter = termPrice.customMeter) === null || _termPrice_customMeter === void 0 ? void 0 : _termPrice_customMeter.length) {\n        priceText += getCustomMeterPricing(context, countryCode, currency, sku, termPrice);\n    }\n    const freeTrialText = getFreeTrialText({\n        context,\n        asInlineHTML: true,\n        hasFreeTrial: termPrice.freeDurationDays > 0,\n        freeTrialTerm: termPrice.unit,\n        freeDurationDays: termPrice.freeDurationDays\n    });\n    return `${freeTrialText}${priceText}`;\n}\nexport function getFullPriceString({ context, countryCode, currency, priceValue, billingPlan, termDuration, isQuantifiable, hasFreeTrial, locale }) {\n    const priceWithFrequency = getPriceWithFrequencyText({\n        context,\n        priceObject: {\n            unit: termDuration,\n            billingPlan,\n            value: priceValue\n        },\n        isQuantifiable,\n        countryCode,\n        currency,\n        locale,\n        maximumFractionDigits: 5\n    });\n    // Always sent in 1M free trial as\n    const freeTrialText = getFreeTrialText({\n        context,\n        asInlineHTML: false,\n        hasFreeTrial,\n        freeTrialTerm: TermsStrings.Term1MString\n    });\n    return `${freeTrialText}${priceWithFrequency}`;\n}\n/** Returns ascending order, i.e: 0 is first, then 1, then 2 and so on */ export function getTermPriorityForSorting(termsStrings) {\n    const lastPriority = 1000;\n    switch(termsStrings){\n        case TermsStrings.Term1MString:\n        case TermsStrings.MonthString:\n            return 0;\n        case TermsStrings.Term1YString:\n        case TermsStrings.YearString:\n            return 1;\n        case TermsStrings.Term2YString:\n            return 2;\n        case TermsStrings.Term3YString:\n            return 3;\n        default:\n            return lastPriority;\n    }\n}\n/** Returns a new array of ascendingly sorted term prices. First by billing term and if the billing terms are equal then by the billing period frequency */ export function sortTermPrices(termPrices) {\n    if (!(termPrices === null || termPrices === void 0 ? void 0 : termPrices.length)) {\n        return [];\n    }\n    // Cloning before calling \".sort\" is a must because \".sort\" sorts the array in-place.\n    return [\n        ...termPrices\n    ].sort((a, b)=>{\n        if (a.unit === b.unit) {\n            var _a_billingPlan, _b_billingPlan;\n            return getTermPriorityForSorting((_a_billingPlan = a.billingPlan) === null || _a_billingPlan === void 0 ? void 0 : _a_billingPlan.billingPeriod) - getTermPriorityForSorting((_b_billingPlan = b.billingPlan) === null || _b_billingPlan === void 0 ? void 0 : _b_billingPlan.billingPeriod);\n        }\n        return getTermPriorityForSorting(a.unit) - getTermPriorityForSorting(b.unit);\n    });\n}\nexport const addFuturePricing = (billingTermPeriod, monthlyFuturePrice, yearlyFuturePrice)=>{\n    if ((billingTermPeriod === TermsStrings.Term1MString || billingTermPeriod === TermsStrings.MonthString) && monthlyFuturePrice) {\n        return /*#__PURE__*/ _jsx(FuturePriceTooltip, {\n            futurePrice: _object_spread_props(_object_spread({}, monthlyFuturePrice), {\n                className: 'checkoutCell ms-fontSize-12'\n            })\n        });\n    } else if ((billingTermPeriod === TermsStrings.Term1YString || billingTermPeriod === TermsStrings.YearString) && yearlyFuturePrice) {\n        return /*#__PURE__*/ _jsx(FuturePriceTooltip, {\n            futurePrice: _object_spread_props(_object_spread({}, yearlyFuturePrice), {\n                className: 'checkoutCell ms-fontSize-12'\n            })\n        });\n    }\n    return null;\n};\nfunction saasStartsFromPricing({ startingPrice, context, countryCode, maximumFractionDigits = 5, locale, isOneTimePaymentOffer }) {\n    const { pricingData, isQuantifiable } = startingPrice;\n    if (!pricingData || typeof pricingData !== 'object') {\n        return '';\n    }\n    if (pricingData.value === 0) {\n        return context.loc('Pricing_Free');\n    }\n    const { unit } = pricingData;\n    const priceText = getPriceWithFrequencyText({\n        context,\n        priceObject: pricingData,\n        isQuantifiable,\n        countryCode,\n        currency: pricingData.currency,\n        maximumFractionDigits,\n        locale\n    });\n    if (isOneTimePaymentOffer) {\n        return priceText;\n    }\n    const termTranslated = getBillingTermTranslated({\n        context,\n        term: unit,\n        useHyphen: false\n    });\n    return context.locParams('Pricing_Multiyear_Starts_From_Template', [\n        priceText,\n        termTranslated\n    ]);\n}\nexport function getStartingFromPriceText({ startingPrice, offerType, context, countryCode, startingPriceOptions = {}, isOneTimePaymentOffer, locale }) {\n    const { pricingData } = startingPrice;\n    const { maximumFractionDigits, formatStringLocalizationKey, ignoreFreeString } = startingPriceOptions;\n    if (!pricingData || typeof pricingData !== 'object') {\n        return '';\n    }\n    if (offerType === OfferType.SaaSApp) {\n        return saasStartsFromPricing({\n            startingPrice,\n            context,\n            countryCode,\n            maximumFractionDigits,\n            locale,\n            isOneTimePaymentOffer\n        });\n    } else {\n        return getPriceString({\n            context,\n            price: startingPrice.pricingData,\n            countryCode,\n            currency: pricingData.currency,\n            locale,\n            isQuantifiable: startingPrice.isQuantifiable,\n            ignoreFreeString,\n            isOneTimePaymentOffer,\n            formatStringLocalizationKey,\n            maximumFractionDigits,\n            offerType\n        });\n    }\n}\nconst canRenderPricing = (app, billingCountryCode)=>{\n    const { ctaTypes, licenseManagement, planPricingType } = app;\n    // Render plans and pricing only for Transactable Apps and MicrosoftManaged offers\n    return planPricingType === PlanPricingType.SimplePlanPricing && (isTransactApp({\n        isEmbedded: false,\n        ctaTypes,\n        appData: app,\n        billingRegion: billingCountryCode\n    }) || (licenseManagement === null || licenseManagement === void 0 ? void 0 : licenseManagement.isMicrosoftManaged));\n};\nconst getTabHref = (tabTitle, app, context)=>{\n    const productString = getPrimaryProductUrl(app.primaryProduct);\n    const productData = getProductByUrlKey({\n        urlKey: productString\n    });\n    const product = productData ? productData.UrlKey : productString;\n    return context.buildHref(getPDPRoute(app.appType), {\n        productId: product,\n        entityId: app.entityId\n    }, {\n        tab: tabTitle\n    });\n};\nexport const getStartingPriceElement = ({ app, billingCountryCode, startingPrice, context, locale })=>{\n    if (startingPrice && startingPrice.pricingData && startingPrice.pricingData !== PricingStates.NoPricingData && startingPrice.pricingData !== PricingStates.NotAvailableInThisRegion && startingPrice.pricingData !== PricingStates.AlwaysAvailable && startingPrice.pricingData !== PricingStates.Loading) {\n        const pricingElement = {\n            type: null,\n            label: '',\n            value: '',\n            href: ''\n        };\n        if (startingPrice.pricingData === PricingStates.FreeApp) {\n            pricingElement.type = Constants.ButtonType.Label;\n            pricingElement.label = context.loc('Pricing');\n            pricingElement.value = context.loc('Pricing_Free');\n        } else if (startingPrice.pricingData === PricingStates.AdditionalPurchasesRequired) {\n            pricingElement.type = Constants.ButtonType.Label;\n            pricingElement.label = context.loc('Pricing');\n            pricingElement.value = context.loc('AdditionalPurchaseMayBeRequired');\n        } else if (startingPrice.pricingData === PricingStates.StartFromFree) {\n            // Freemium offers with pricing plans\n            pricingElement.type = Constants.ButtonType.Label;\n            pricingElement.label = context.loc('Pricing_StartsAt');\n            pricingElement.value = context.loc('Pricing_Free');\n        } else if (typeof startingPrice.pricingData === 'object') {\n            if (canRenderPricing(app, billingCountryCode)) {\n                pricingElement.href = getTabHref('PlansAndPrice', app, context);\n                pricingElement.type = Constants.ButtonType.Link;\n                pricingElement.label = context.loc('StartingAt');\n                pricingElement.value = getStartingFromPriceText({\n                    startingPrice,\n                    offerType: app.offerType,\n                    context,\n                    countryCode: billingCountryCode,\n                    locale\n                });\n            } else {\n                pricingElement.type = Constants.ButtonType.Label;\n                pricingElement.label = context.loc('Pricing');\n                pricingElement.value = getPriceString({\n                    context,\n                    price: startingPrice.pricingData,\n                    countryCode: billingCountryCode,\n                    currency: startingPrice.pricingData.currency,\n                    locale\n                });\n            }\n        }\n        if (typeof startingPrice.pricingData === 'object' && !canRenderPricing(app, billingCountryCode)) {\n            if (pricingElement.value) {\n                pricingElement.value = pricingElement.value + ' ' + context.loc('SiteLicenseAlsoAvailable');\n            } else {\n                pricingElement.type = Constants.ButtonType.Label;\n                pricingElement.label = context.loc('Pricing');\n                pricingElement.value = context.loc('SiteLicenseAlsoAvailable');\n            }\n        }\n        return pricingElement;\n    }\n    return null;\n};\nexport const shouldBlockPricing = (app)=>{\n    // hasPrices check is necessary to ensure we don't block pricing for valid Dynamics 365 and PBI Visual offers\n    return (isD365App(app) || isD365BCApp(app) || isPowerBIVisualsApp(app)) && !isBagTransactable(app) && app.hasPrices;\n};\nexport const bulidStartingPriceElement = ({ app, pricingLinkClassName, billingCountryCode, context, locale })=>{\n    const startingPrice = shouldBlockPricing(app) ? null : app.startingPrice;\n    const pricingElement = getStartingPriceElement({\n        app,\n        billingCountryCode,\n        startingPrice,\n        context,\n        locale\n    });\n    if (pricingElement) {\n        return /*#__PURE__*/ _jsx(\"div\", {\n            className: \"cell\",\n            itemProp: \"offers\",\n            itemScope: true,\n            itemType: \"https://schema.org/Offer\",\n            children: /*#__PURE__*/ _jsxs(\"div\", {\n                className: \"pricingText\",\n                children: [\n                    pricingElement && pricingElement.label && pricingElement.type && pricingElement.value ? /*#__PURE__*/ _jsx(ButtonLink, {\n                        href: pricingElement.href ? pricingElement.href : '',\n                        className: pricingLinkClassName,\n                        type: pricingElement.type,\n                        accEnabled: true,\n                        label: pricingElement.label,\n                        value: pricingElement.value\n                    }) : null,\n                    startingPrice.pricingData === PricingStates.FreeApp ? /*#__PURE__*/ _jsxs(\"div\", {\n                        children: [\n                            /*#__PURE__*/ _jsx(\"meta\", {\n                                itemProp: \"price\",\n                                content: \"0\"\n                            }),\n                            /*#__PURE__*/ _jsx(\"meta\", {\n                                itemProp: \"priceCurrency\",\n                                content: \"USD\"\n                            }),\n                            /*#__PURE__*/ _jsx(\"meta\", {\n                                itemProp: \"category\",\n                                content: \"free\"\n                            })\n                        ]\n                    }) : typeof startingPrice.pricingData === 'object' ? /*#__PURE__*/ _jsxs(\"div\", {\n                        children: [\n                            /*#__PURE__*/ _jsx(\"meta\", {\n                                itemProp: \"priceCurrency\",\n                                content: startingPrice.pricingData.currency\n                            }),\n                            /*#__PURE__*/ _jsx(\"meta\", {\n                                itemProp: \"price\",\n                                content: getPriceString({\n                                    context,\n                                    price: startingPrice.pricingData,\n                                    countryCode: billingCountryCode,\n                                    currency: startingPrice.pricingData.currency,\n                                    locale\n                                }).replace(/[^0-9.]/g, '')\n                            })\n                        ]\n                    }) : null\n                ]\n            })\n        });\n    }\n    return null;\n};\nexport const hidePowerBiVisualPricing = ({ app, isEmbedded })=>{\n    return !isEmbedded && isPowerBIVisualsApp(app) && app.hasPrices;\n};\n","import { getCookieItem } from '@shared/utils/browserStorageUtils';\nimport { Constants } from '@shared/utils/constants';\nexport const getGPCValue = ()=>{\n    const globalPrivacyControlEnabled = navigator.globalPrivacyControl;\n    if (globalPrivacyControlEnabled) {\n        return false;\n    }\n    try {\n        const cookieValue = getCookieItem(Constants.Cookies.AMC3PAdsOptOut) || '';\n        return String(cookieValue) !== '1';\n    } catch (e) {\n        return true;\n    }\n};\n","/* eslint-disable react/no-find-dom-node */ import { findDOMNode } from 'react-dom';\nimport { getWindow, getDocument } from './../services/window';\nimport { Constants } from './../utils/constants';\n/**\n * get Component Coordinate on current rendered page\n *\n *  origin of Coodinate (0, 0) is top left point on current rendered page\n *\n * @param componentRef: reference of tile component\n *\n * @return:\n *  The Rank of Component\n *      rank: componet ranking, or -1 if tile not found\n *      total: total number of components with same class name, or -1 if tile not found\n */ export function getComponentXYCoordinate(componentRef) {\n    if (componentRef) {\n        const domNode = findDOMNode(componentRef);\n        if (domNode) {\n            // get relative boundary position, left, right, top, bottom\n            const boundingRectangle = domNode.getBoundingClientRect();\n            // get relative center position\n            // by adding top left point of a tile rectangle with half of width, and height respectively of tile rectangle\n            const relativeCenterX = boundingRectangle.left + Math.floor(boundingRectangle.width / 2);\n            const relativeCenterY = boundingRectangle.top + Math.floor(boundingRectangle.height / 2);\n            // get absolute center position\n            // by adding user scroll offset against origin (0, 0)\n            return {\n                x: relativeCenterX + getWindow().scrollX,\n                y: relativeCenterY + getWindow().scrollY\n            };\n        }\n    }\n    return {\n        x: -1,\n        y: -1\n    };\n}\n/**\n * get tile Component Rank based on coordinate out of Total Components with same class name\n *\n *  ranking is based on Coordinates sorted on x first and then y (zigzag)\n *\n * @param componentRef: reference of tile component\n *\n * @return:\n *  The Rank of Component\n *      rank: componet ranking, or -1 if tile not found\n *      total: total number of components with same class name, or -1 if tile not found\n */ export const getTileComponentRank = (componentRef)=>{\n    const coordinateRanking = {\n        rank: -1,\n        total: -1\n    };\n    // get collection of tile elements whose css classname is tile\n    const elementHTMLCollection = getDocument().getElementsByClassName(Constants.HTMLClassNameStrings.tile);\n    // Note: the return value of getElementsByClassName is not an array, so convert it\n    const elements = Object.keys(elementHTMLCollection).map((key)=>elementHTMLCollection[`${key}`]);\n    if (elements && elements.length) {\n        coordinateRanking.total = elements.length;\n    }\n    if (componentRef) {\n        const domNode = findDOMNode(componentRef);\n        if (domNode) {\n            const attributeAriaLabeledBy = domNode.getAttribute(Constants.HTMLAttribute.ariaLabeledBy);\n            // find position of element out of similar elements by matching with attribute 'aria-labelledby'\n            // Note: 'aria-labelledby' is unique for each tile, it contains entity ID, see baseTile.tsx\n            elements.some((element, elementIndex)=>{\n                const match = element.getAttribute(Constants.HTMLAttribute.ariaLabeledBy) === attributeAriaLabeledBy;\n                if (match) {\n                    coordinateRanking.rank = elementIndex;\n                }\n                // return immediately if found\n                return match;\n            });\n        }\n    }\n    return coordinateRanking;\n};\n","function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nfunction _object_spread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        var ownKeys = Object.keys(source);\n        if (typeof Object.getOwnPropertySymbols === \"function\") {\n            ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n            }));\n        }\n        ownKeys.forEach(function(key) {\n            _define_property(target, key, source[key]);\n        });\n    }\n    return target;\n}\nfunction ownKeys(object, enumerableOnly) {\n    var keys = Object.keys(object);\n    if (Object.getOwnPropertySymbols) {\n        var symbols = Object.getOwnPropertySymbols(object);\n        if (enumerableOnly) {\n            symbols = symbols.filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n            });\n        }\n        keys.push.apply(keys, symbols);\n    }\n    return keys;\n}\nfunction _object_spread_props(target, source) {\n    source = source != null ? source : {};\n    if (Object.getOwnPropertyDescriptors) {\n        Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n        ownKeys(Object(source)).forEach(function(key) {\n            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n    }\n    return target;\n}\nimport React from 'react';\nimport { ContextualMenu, DialogType } from '@fluentui/react';\nimport { getWindow } from '../services/window';\nimport { SpzaInstrumentService } from '../services/telemetry/spza/spzaInstrument';\nimport { Constants } from '@shared/utils/constants';\nimport g2Logo from '@shared/images/g2-logo.svg';\nimport { camelCase, keyBy, keys, mapKeys } from 'lodash-es';\nexport function launchTelemetry(action, actionModifier, telemetryDetails) {\n    const payload = {\n        page: getWindow().location.href,\n        action,\n        actionModifier,\n        details: JSON.stringify(telemetryDetails)\n    };\n    SpzaInstrumentService.getProvider().probe('logTelemetryInfo', payload);\n}\nexport const getProviderNameByReviewSource = (provider, defaultName)=>{\n    switch(provider){\n        case Constants.StorefrontName.AppSource:\n            return Constants.StorefrontName.AppSource;\n        case Constants.StorefrontName.Amp:\n            return 'Azure Marketplace';\n        case Constants.StorefrontName.G2:\n            return Constants.StorefrontName.G2;\n        default:\n            return defaultName;\n    }\n};\nexport function getReviewCtaButtonText(context, userReview) {\n    if (userReview) {\n        return context.loc('AppReviewCollection_Button_Text_Edit', 'Edit your review');\n    }\n    return context.loc('AppReviewCollection_Button_Text_Write', 'Write a review');\n}\nexport function getAddReviewSectionDescription(context, isPurchased) {\n    if (!isPurchased) {\n        return context.loc('AppReviewCollection_addReviewDescription_Text', 'To submit your rating and review, first get the \\napp and let us know about your experience');\n    }\n    return '';\n}\nexport const getReviewModalDialogProps = (title)=>{\n    const dragOptions = {\n        moveMenuItemText: 'Move',\n        closeMenuItemText: 'Close',\n        menu: ContextualMenu\n    };\n    const modalPropsStyles = {\n        main: {\n            maxWidth: 650\n        },\n        scrollableContent: {\n            width: 560\n        }\n    };\n    return {\n        dialogContentProps: {\n            type: DialogType.normal,\n            title: title\n        },\n        modalProps: {\n            isBlocking: true,\n            styles: modalPropsStyles,\n            dragOptions: dragOptions\n        },\n        maxWidth: 560\n    };\n};\nexport const getReviewCommentsModalDialogProps = (title)=>{\n    const dragOptions = {\n        moveMenuItemText: 'Move',\n        closeMenuItemText: 'Close',\n        menu: ContextualMenu\n    };\n    const modalPropsStyles = {\n        main: {\n            maxWidth: 650\n        },\n        scrollableContent: {\n            width: 560\n        }\n    };\n    return {\n        dialogContentProps: {\n            type: DialogType.normal,\n            title: title\n        },\n        modalProps: {\n            isBlocking: true,\n            styles: modalPropsStyles,\n            dragOptions: dragOptions\n        },\n        maxWidth: 560\n    };\n};\nexport const createDefaultPagination = (reviews)=>{\n    const defaultPagination = {\n        startIndex: 1,\n        endIndex: 1,\n        pageIndex: 1\n    };\n    if (reviews && reviews.length > 0) {\n        defaultPagination.endIndex = reviews.length > Constants.MaxItemsPerPageInReviews ? Constants.MaxItemsPerPageInReviews : reviews.length;\n    }\n    return defaultPagination;\n};\nexport const createDeepLinkPagination = (reviews, reviewId)=>{\n    const result = createDefaultPagination(reviews);\n    if ((reviews === null || reviews === void 0 ? void 0 : reviews.length) > 0 && reviewId) {\n        reviews.some((review, index)=>{\n            if (review.id === reviewId) {\n                const currentPageIndex = Math.trunc(index / Constants.MaxItemsPerPageInReviews);\n                result.startIndex = currentPageIndex * Constants.MaxItemsPerPageInReviews + 1;\n                result.pageIndex = currentPageIndex + 1;\n                result.endIndex = Math.min(result.startIndex + Constants.MaxItemsPerPageInReviews - 1, reviews.length);\n                return true;\n            }\n            return false;\n        });\n    }\n    return result;\n};\nexport const combineDeletedComments = ({ commentsById, commentIds })=>{\n    return commentIds.reduce((acc, currId, currIdx)=>{\n        const currentComment = commentsById[`${currId}`];\n        // Accumulate deleted comments\n        if (currentComment.isDeleted) {\n            acc.deletedAccumulator = [\n                ...acc.deletedAccumulator,\n                currId\n            ];\n        }\n        // At the end of the array, or if encountering a normal comment, add the deleted comments or just one if they surpass the limit\n        if (!currentComment.isDeleted || currIdx >= commentIds.length - 1) {\n            // If the subsequent deleted comments number reaches the limit, only add one\n            acc.result = [\n                ...acc.result,\n                ...acc.deletedAccumulator.length >= Constants.Reviews.MaxSubsequentDeletedComments ? [\n                    acc.deletedAccumulator[0]\n                ] // Add first one\n                 : acc.deletedAccumulator\n            ];\n            // Reset the accumulator\n            acc.deletedAccumulator = [];\n        }\n        if (!currentComment.isDeleted) {\n            acc.result = [\n                ...acc.result,\n                currId\n            ];\n        }\n        return acc;\n    }, {\n        deletedAccumulator: [],\n        result: []\n    }).result;\n};\nexport const createInitialReviewCommentsState = ()=>{\n    return {\n        commentIds: [],\n        commentsById: {},\n        reducedCommentIds: [],\n        isLoading: false,\n        newlyAddedComments: [],\n        totalComments: 0,\n        currentLoadedPage: 0,\n        totalPages: 0\n    };\n};\nexport const appendReviewCommentsToState = (state, comments)=>{\n    const commentsById = keyBy(comments, 'id');\n    const newState = _object_spread_props(_object_spread({}, state), {\n        commentsById: _object_spread({}, state.commentsById, commentsById),\n        commentIds: [\n            ...state.commentIds,\n            ...keys(commentsById)\n        ]\n    });\n    return _object_spread_props(_object_spread({}, newState), {\n        // Merge consequent deleted comments\n        reducedCommentIds: combineDeletedComments(newState)\n    });\n};\nexport const mapEnrichReviewCommentToIAppReviewComment = (comment)=>{\n    const keyMapper = (v, key)=>camelCase(key);\n    const { customer_info: customerInfo } = comment;\n    return _object_spread_props(_object_spread({}, mapKeys(comment, keyMapper)), {\n        customerInfo: mapKeys(customerInfo, keyMapper)\n    });\n};\nexport const calculateTotalReviewCommentsPagesCount = (totalComments)=>{\n    if (totalComments) {\n        return Math.ceil(totalComments / Constants.Reviews.CommentsPerPage);\n    }\n    return 0;\n};\nexport const getExternalRatingSummaries = (ratingSummaries = [])=>{\n    const externalRatingSummaries = [];\n    const g2Summary = ratingSummaries.find((summary)=>summary.Source === Constants.StorefrontName.G2);\n    if (g2Summary) {\n        externalRatingSummaries.push({\n            ratingSummary: g2Summary,\n            image: g2Logo\n        });\n    }\n    return externalRatingSummaries;\n};\nexport const getRatingTotals = (ratingSummaries)=>{\n    return (ratingSummaries || []).filter((externalRatingSummary)=>externalRatingSummary.AverageRating && !isNaN(externalRatingSummary.AverageRating) && externalRatingSummary.TotalRatings && externalRatingSummary.Source === Constants.StorefrontName.G2).reduce((accumulatedRatings, currentRating)=>({\n            totalRatingCounts: accumulatedRatings.totalRatingCounts + currentRating.TotalRatings,\n            totalAverageRatingsSum: accumulatedRatings.totalAverageRatingsSum + currentRating.AverageRating * currentRating.TotalRatings\n        }), {\n        totalRatingCounts: 0,\n        totalAverageRatingsSum: 0\n    });\n};\nexport const getTotalExternalRatingSummariesInfo = (ratingSummaries)=>{\n    const { totalRatingCounts, totalAverageRatingsSum } = getRatingTotals(ratingSummaries);\n    return {\n        totalRatings: totalRatingCounts,\n        averageRatings: totalRatingCounts ? totalAverageRatingsSum / totalRatingCounts : 0\n    };\n};\nexport const getRatingSummaryByType = (ratingSummaries, source)=>{\n    return ratingSummaries === null || ratingSummaries === void 0 ? void 0 : ratingSummaries.find((option)=>option.Source === source);\n};\nexport const findReviewsSources = ({ reviews })=>{\n    const { AppSource, Amp, Ibiza } = Constants.StorefrontName;\n    const hasInternalReviews = reviews.some((review)=>[\n            AppSource,\n            Amp,\n            Ibiza\n        ].includes(review.source));\n    const hasExternalReviews = reviews.some((review)=>review.source === Constants.StorefrontName.G2);\n    return {\n        hasExternalReviews,\n        hasInternalReviews\n    };\n};\n","import { logger } from '@src/logger';\nimport { Constants } from './constants';\nimport { SpzaInstrumentService } from '@shared/services/telemetry/spza/spzaInstrument';\nimport { stringifyError } from './errorUtils';\n// special params which are also campaign ones\nexport const specialParams = [\n    'debug',\n    'preview',\n    'embedHost',\n    'fullScreenMode',\n    Constants.QueryStrings.includeTestProducts,\n    Constants.QueryStrings.isConverged\n];\nexport const campaignParams = [\n    'mktcmpid',\n    'mktvid',\n    'ref',\n    'src',\n    'campaignCorrelationId',\n    'embedCorrelationId',\n    'mkt_tok',\n    'utm_source',\n    'utm_medium',\n    'utm_term',\n    'utm_content',\n    'utm_campaign',\n    'source',\n    'placement',\n    'ad_id',\n    'adset_id',\n    'campaign_id',\n    'ad_name',\n    'adset_name',\n    'campaign_name',\n    'fb',\n    'ig',\n    'msg',\n    'an',\n    'ocid'\n];\nexport const excludedCampaignsForAcquisition = [\n    {\n        src: 'office'\n    }\n];\nconst logGetCampaignTelemetry = ({ landingView, currentView, shouldSkipGetCampaigns, campaigns, entityId, error })=>{\n    let detailText;\n    if (error) {\n        detailText = 'Failed Generating Campaigns Before Passing To Lead, ' + `LANDING VIEW: ${landingView}, ` + `CURRENT VIEW: ${currentView}, ` + `ERROR: ${stringifyError(error)}`;\n    } else if (shouldSkipGetCampaigns) {\n        detailText = 'Success Skipping Generating Campaigns Before Passing To Lead, ' + `LANDING VIEW: ${landingView}, ` + `CURRENT VIEW: ${currentView}, ` + `CAMPAIGNS: ${JSON.stringify(campaigns)}`;\n    } else {\n        detailText = 'Success Generating Campaigns Before Passing To Lead, ' + `LANDING VIEW: ${landingView}, ` + `CURRENT VIEW: ${currentView}, ` + `CAMPAIGNS: ${JSON.stringify(campaigns)}`;\n    }\n    const payload = {\n        page: currentView,\n        action: Constants.Telemetry.Action.PublishAcquisitionInfo,\n        actionModifier: Constants.Telemetry.ActionModifier.LeadCampaignGeneration,\n        appName: entityId,\n        details: detailText\n    };\n    SpzaInstrumentService.getProvider().probe('logTelemetryInfo', payload);\n    logger.info(payload.details, {\n        action: payload.action,\n        actionModifier: payload.actionModifier,\n        appName: entityId,\n        page: payload.page\n    });\n};\n// returns the list of the valid route params for app view.\nexport const getAppViewParams = ()=>{\n    return specialParams.concat(campaignParams);\n};\nfunction getParameterByName(param, url) {\n    param = param.replace(/[\\\\[\\]]/g, '\\\\$&');\n    const regex = new RegExp('[?&]' + param + '(=([^&#]*)|&|#|$)', 'i');\n    const results = regex.exec(url);\n    if (!results) {\n        return null;\n    }\n    // 2 represents the value of the param.\n    if (!results[2]) {\n        return '';\n    }\n    return decodeURIComponent(results[2].replace(/\\+/g, ' '));\n}\n// 1) we should always generate, after user redirects to a non-detail page from a campaign\n// 2) we should generate current and only current, if user redirects to a detail page from a campaign\nexport const shouldGetCampaignsForAcquistion = (landingView, previousPage, routes)=>{\n    const isInitiaViewDetailPage = landingView === routes.appDetails.name || landingView === routes.serviceDetail.name;\n    const isCurrentViewLandingView = !previousPage;\n    return !isInitiaViewDetailPage || isCurrentViewLandingView;\n};\nfunction serializeCampaignObject(obj) {\n    const str = [];\n    for(const p in obj){\n        str.push(encodeURIComponent(p) + '=' + encodeURIComponent(obj[`${p}`]));\n    }\n    return str.join('&');\n}\nexport const extractCampaignsFromUrl = (url)=>{\n    const campaigns = {};\n    for(let i = 0; i < campaignParams.length; i++){\n        const campaignParam = getParameterByName(campaignParams[`${i}`], url);\n        if (campaignParam) {\n            campaigns[campaignParams[`${i}`]] = campaignParam;\n        }\n    }\n    return campaigns;\n};\nexport const excludeCampaignsForAcquisition = (campaigns)=>{\n    const keys = Object.keys(campaigns);\n    keys.forEach((key)=>{\n        const value = campaigns[`${key}`];\n        const foundToDelete = excludedCampaignsForAcquisition.some((aExludeCampaign)=>{\n            const excludeKey = Object.keys(aExludeCampaign)[0];\n            const excludeValue = aExludeCampaign[`${key}`];\n            return key === excludeKey && value === excludeValue;\n        });\n        if (foundToDelete) {\n            delete campaigns[`${key}`];\n        }\n    });\n};\nexport const getCampaignsForAcquisitionFromUrl = ({ url, landingView, currentView, previousPage, routes, entityId })=>{\n    try {\n        if (!shouldGetCampaignsForAcquistion(landingView, previousPage, routes)) {\n            logGetCampaignTelemetry({\n                landingView,\n                currentView,\n                shouldSkipGetCampaigns: true,\n                campaigns: null,\n                error: null,\n                entityId\n            });\n            return null;\n        }\n        const campaigns = extractCampaignsFromUrl(url);\n        excludeCampaignsForAcquisition(campaigns);\n        logGetCampaignTelemetry({\n            landingView,\n            currentView,\n            shouldSkipGetCampaigns: false,\n            campaigns,\n            error: null,\n            entityId\n        });\n        return campaigns;\n    } catch (error) {\n        logGetCampaignTelemetry({\n            landingView,\n            currentView,\n            shouldSkipGetCampaigns: false,\n            campaigns: null,\n            error,\n            entityId\n        });\n        return null;\n    }\n};\n// This methods returns just the campaign params from the URL\n// for e.g. if the URL is http://localhost:3000/en-us/home?debug=true&mktcmpid=foo&mktvid=bar\n// the output would be mktcmpid=foo&mktvid=bar\nfunction getCampaingQueryParamsFromUrl(url) {\n    const campaignObj = extractCampaignsFromUrl(url);\n    return serializeCampaignObject(campaignObj);\n}\nexport function updateHandOffUrlWithCampaignParams(handoffUrl, pageUrl) {\n    if (!handoffUrl) {\n        return;\n    }\n    const params = getCampaingQueryParamsFromUrl(pageUrl);\n    if (params) {\n        if (handoffUrl.indexOf('?') >= 0) {\n            handoffUrl = handoffUrl.replace('?', `?${params}&`);\n        } else {\n            handoffUrl = handoffUrl + '?' + params;\n        }\n    }\n    return handoffUrl;\n}\nexport const getEntityIdFromUrl = ({ pathName = '' })=>{\n    let offerIdLocation = 0;\n    let entityId = '';\n    offerIdLocation = pathName.lastIndexOf('/');\n    entityId = pathName.substring(offerIdLocation + 1).split('?')[0];\n    return entityId;\n};\n","import * as React from 'react';\nimport { Constants } from '../utils/constants';\nimport { getTrimmedWords } from './../utils/stringUtils';\nvar css = /*#__PURE__*/ function(css) {\n    css[\"searchInputClassName\"] = \"resizable-input\";\n    css[\"searchButtonClassName\"] = \".spza-c-search .react-selectize-control .react-selectize-toggle-button-container .c-glyph\";\n    css[\"searchInputIdName\"] = \"marketplace-selectize-search-input\";\n    css[\"searchDivInputClassName\"] = \" .spza-header-search-section\";\n    css[\"searchFocusInputClassName\"] = \" .spza-header-row-segment-middle\";\n    css[\"headerPrefixClassName\"] = \".spza-header-\";\n    return css;\n}(css || {});\nexport function getSearchElement(prefix, key) {\n    const elements = document.querySelectorAll(prefix + key);\n    const searchInput = document.querySelector(prefix + \" .spza-header-search-section\");\n    let searchElement = null;\n    if (elements) {\n        for(let i = 0; i < elements.length; i++){\n            if (elements[`${i}`].contains(searchInput)) {\n                searchElement = elements[`${i}`];\n                break;\n            }\n        }\n        return searchElement;\n    }\n}\nexport function onKeyBlurOptionHandle(event, componentKey) {\n    const searchInput = getSearchElement(`${\".spza-header-\"}${componentKey.substring(0, componentKey.indexOf('-'))}`, \" .spza-header-row-segment-middle\");\n    if (searchInput) {\n        searchInput.classList.remove('spza-header-row-segment-middle-focus');\n    }\n}\nexport function onKeyFocusOptionHandle(event, componentKey) {\n    if (event.keyCode === Constants.SystemKey.Tab) {\n        const searchInput = getSearchElement(`${\".spza-header-\"}${componentKey.substring(0, componentKey.indexOf('-'))}`, \" .spza-header-row-segment-middle\");\n        if (searchInput) {\n            searchInput.classList.add('spza-header-row-segment-middle-focus');\n        }\n    }\n}\n/**\n * This method is to escape any special characters required on https://aka.ms/azure-search-full-query\n * In that way, the escaped search text could then be used as search queries when calling azure search api\n *\n * @param rawSearchText raw search text from user input\n * @param excludeQuotes true if double quotes are to be excluded from the escape sequence.\n */ export function getEscapedSearchText(rawSearchText, excludeQuotes = false) {\n    // characters required to escape, reference: https://aka.ms/azure-search-full-query\n    const charactersToEscape = '+ - && || ! ( ) { } [ ] ^ ~ ? : / \\\\ * AND OR NOT' + (excludeQuotes ? '' : ' \"');\n    // make an array of characters to escape, each element is a string, which consists of characters,\n    // e.g. an array of characters to escape ['+', '&&'], '+' and '&&' are strings\n    // and escape every character in each string\n    // e.g. ['+', '&&'] => ['\\+', '\\&\\&']\n    // the purpose of this array is to use in regex pattern\n    const escapedCharactersList = getTrimmedWords(charactersToEscape)// get each string, e.g. +, &&\n    .map((stringToEscape)=>stringToEscape// get each character in current string\n        .split('')// escape each character, e.g. \\+, \\&\n        .map((character)=>`\\\\${character}`)// rejoin each escaped character to form as an escaped string, e.g. \\+, \\&\\&\n        .join(''));\n    // escape pattern is a regex pattern, by OR-ing each escaped string of escaped array,\n    // which means that'd be a match, if an input string include any of escaped string in the escaped array\n    const escapePattern = `${escapedCharactersList// wrap parenthesis around each element as a regex group\n    .map((escapedString)=>`(${escapedString})`)// make regex to match any of them\n    .join('|')}`;\n    // use global to match all occurrences of escape pattern\n    // eslint-disable-next-line security/detect-non-literal-regexp\n    const escapeRegex = new RegExp(escapePattern, Constants.RegExpFlag.Global);\n    // escape input string whenever there's a match with escape pattern\n    const escapedSearchText = rawSearchText.replace(escapeRegex, (matchedString)=>// escape each character in each matched substring\n        `${matchedString.split('').map((character)=>`\\\\${character}`).join('')}`);\n    return escapedSearchText;\n}\n/**\n * Perform a search with the following guidelines:\n * 1) Escape special characters.\n * 2) Add a '+' character as a prefix for a search that starts and ends with a '\"'.\n * 3) Add 'And' between the search words.\n * @param rawSearchText Raw search text from user input.\n */ export function getSearchQuery(rawSearchText = '') {\n    rawSearchText = typeof rawSearchText === 'string' ? rawSearchText : '';\n    if (rawSearchText.length > Constants.Search.maxSearchTextLength) {\n        const isCutInTheMiddleOfWord = rawSearchText[Constants.Search.maxSearchTextLength - 1] !== ' ' && rawSearchText[Constants.Search.maxSearchTextLength] !== ' ';\n        rawSearchText = rawSearchText.slice(0, Constants.Search.maxSearchTextLength);\n        const splittedBySpaces = rawSearchText.split(/\\s+/);\n        if (splittedBySpaces.length > 1 && isCutInTheMiddleOfWord) {\n            splittedBySpaces.pop();\n        }\n        rawSearchText = splittedBySpaces.join(' ');\n    }\n    // catches all phrases surrounded by double quotes.\n    const re = /\"(.*?)\"/g;\n    const phrases = rawSearchText.match(re);\n    const searchPhrases = phrases ? phrases.map((p)=>`+${getEscapedSearchText(p)}`) : [];\n    const words = rawSearchText.replace(re, '').split(' ').map((w)=>w.trim()).filter((w)=>!!w).map((w)=>`${getEscapedSearchText(w)}`);\n    const searchTerm = [\n        ...searchPhrases,\n        ...words\n    ].join(' ');\n    return searchTerm;\n}\nexport function parseSearchAction(request) {\n    var _request_headers;\n    return ((_request_headers = request.headers) === null || _request_headers === void 0 ? void 0 : _request_headers.searchactiontype) === Constants.Search.ActionType.Suggestions ? Constants.Search.ActionType.Suggestions : Constants.Search.ActionType.Search;\n}\nexport function removeDuplicateAddIns(apps, idField) {\n    const linkedAddIns = Constants.SearchFieldNames.linkedAddIns;\n    let bundleCount = 0;\n    const linkedAddInIds = {};\n    for (const currentApp of apps){\n        if (currentApp && currentApp[`${linkedAddIns}`] && currentApp[`${linkedAddIns}`].length > 0) {\n            bundleCount++;\n            for (const currentAddIns of currentApp[`${linkedAddIns}`]){\n                if (currentAddIns && currentAddIns[`${idField}`]) {\n                    linkedAddInIds[currentAddIns[`${idField}`]] = true;\n                }\n            }\n        }\n    }\n    const uniqueApps = apps.filter((currentApp)=>{\n        const currentAppId = currentApp && currentApp[`${idField}`] && currentApp[`${idField}`].toString() || '';\n        return !(currentAppId && linkedAddInIds[`${currentAppId}`]);\n    });\n    const duplicateAddInsCount = apps.length - uniqueApps.length;\n    return {\n        apps,\n        bundleCount,\n        duplicateAddInsCount\n    };\n}\n","/* eslint-disable @typescript-eslint/no-namespace */ import { AwaMetaTags, Constants } from '@shared/utils/constants';\nimport { routes } from '@shared/routerHistory';\nimport { getDocument } from '@shared/services/window';\n(function(metaTagConstants) {\n    metaTagConstants.viewportName = 'viewport';\n    metaTagConstants.viewportValue = 'width=device-width, initial-scale=1';\n    metaTagConstants.typeName = 'type';\n    metaTagConstants.typeValue = 'Website';\n    metaTagConstants.keywordsName = 'keywords';\n    metaTagConstants.spzaGalleryWordKeywordsValue = 'word plugin, word apps, word add ons, word extension, word add-ins, grammar, grammer, chatgpt word, word cloud, citation';\n    metaTagConstants.spzaGalleryExcelKeywordsValue = 'chatgpt excel, excel chatgpt, excel plugins, excel apps, excel add ons, excel add-ins, excel extensions, ai excel, web viewer';\n    metaTagConstants.spzaGalleryPptKeywordsValue = 'ppt plugin, ppt add-ins, ppt apps, ppt add ons, ppt extension, powerpoint add-ins, powerpoint apps, powerpoint plugin, powerpoint add ons, powerpoint extension, power bi visual';\n    metaTagConstants.spzaGalleryOutlookKeywordsValue = 'outlook plugin, outlook add-ins, outlook apps, outlook add ons, outlook extension, email recovery';\n    metaTagConstants.spzaGalleryOfficeKeywordsValue = 'outlook apps, office store, outlook plugin, word plugin, gpt excel, chatgpt excel, excel plugin, microsoft office store, Business apps, microsoft 365 apps, education apps, word apps, excel apps, sharepoint apps, powerpoint apps, grammar, power bi visual';\n    metaTagConstants.spzaGalleryKeywordsValue = 'Business apps, 365 apps, office store, dynamics apps, outlook apps, word apps, government apps, education apps, microsoft office store, excel apps, ppt apps, powerpoint apps, office plugin, excel plugin';\n    metaTagConstants.spzaHomeKeywordsValue = 'Business apps, 365 apps, office store apps, dynamics apps, outlook apps, word apps, government apps, education apps, consulting services';\n    metaTagConstants.csGalleryKeywordsValue = 'PowerBI consulting services, dynamics consulting services, assessment, briefing, consulting services implementation';\n    metaTagConstants.desName = 'description';\n    metaTagConstants.csGalleryDesValue = 'Find the consulting services for your platforms: PowerBI, Dynamics, Web Apps. Get solutions tailored to your industry: Agriculture, Education, Distribution, Financial services, Government, Healthcare, Manufacturing, Professional services, Retail and consumer goods.';\n    metaTagConstants.spzaHomeDesValue = 'Discover the app for your business needs and explore tailored solutions for various industries. Whether you are seeking Microsoft 365 apps for Word, Excel, PowerPoint, or Outlook, or apps for Power Platform, Dynamics 365, SaaS, we have you covered. Enhance your productivity and streamline your work with our diverse range of plugins, including grammar and citation tools, GPT-powered Word and Excel enhancements, word clouds, and more. Find the right tools to excel in your field and make the most of your software experience, right here.';\n    metaTagConstants.spzaWordGalleryDesValue = 'Discover the Word app for your business needs. Explore a diverse range of Word plugins. Whether you are in professional writing, content creation, or any other domain, Word apps are designed to enhance your productivity and simplify your tasks. Unleash the full potential of your documents with tools such as GPT-powered enhancements, grammar and citation plugins, and more.';\n    metaTagConstants.spzaExcelGalleryDesValue = 'Discover the Excel app for your business needs. Explore a diverse range of Excel plugins. Whether you are in finance, data analysis, project management, or any other field, our Excel apps are designed to boost your productivity and streamline your work. Unlock the potential of your spreadsheets with tools including GPT-powered enhancements, web viewer, data analysis plugins, and more.';\n    metaTagConstants.spzaPptGalleryDesValue = 'Discover the PowerPoint app for your business needs. Explore a diverse range of PowerPoint plugins. Whether you are in sales, education, marketing, or any other sector, our PowerPoint apps are designed to boost your creativity and streamline your presentations. Unleash the full potential of your slides with tools like GPT-powered enhancements, interactive plugins, and more.';\n    metaTagConstants.spzaOutlookGalleryDesValue = 'Discover the Outlook app for your business needs. Explore a diverse range of Outlook plugins. Whether you are in sales, education, marketing, or any other sector, our PowerPoint apps are designed to boost your creativity and streamline your presentations. Unleash the full potential of your slides with tools like GPT-powered enhancements, interactive plugins, and more.';\n    metaTagConstants.spzaOfficeGalleryDesValue = 'Discover the Office app for your business needs. Explore a diverse range of Word , Excel, PowerPoint, Outlook, Teams, and SharePoint plugins. Whether you are in sales, education, marketing, or any other sector, our apps are designed to boost your creativity and enhance your productivity. Unleash the full potential of your Office suite with tools like GPT-powered plugins, grammar checker, interactive add-ins, and more.';\n    metaTagConstants.sitenameName = 'site_name';\n    metaTagConstants.sitenameValue = 'Appsource – Business Apps';\n    metaTagConstants.titleName = 'title';\n    metaTagConstants.csTitleValue = 'Appsource –  Consulting services';\n    metaTagConstants.urlName = 'url';\n    metaTagConstants.localeName = 'locale';\n    metaTagConstants.imageName = 'image';\n    metaTagConstants.videoName = 'video';\n    metaTagConstants.spzaEnvironment = 'portal';\n    metaTagConstants.spzaUrl = 'https://appsource.microsoft.com';\n    metaTagConstants.twitterCard = 'twitter:card';\n    metaTagConstants.twitterSite = 'twitter:site';\n    metaTagConstants.twitterTitle = 'twitter:title';\n    metaTagConstants.twitterDes = 'twitter:description';\n    metaTagConstants.twitterImage = 'twitter:image';\n    metaTagConstants.twitterCardValue = 'summary';\n    metaTagConstants.twitterSiteValue = '@appsource';\n})(metaTagConstants || (metaTagConstants = {}));\nexport function getPreventIndexMetatag(siteEnv) {\n    if (siteEnv !== 'prod') {\n        const preventIndexMetatag = getDocument().createElement('meta');\n        preventIndexMetatag.setAttribute('name', 'robots');\n        preventIndexMetatag.setAttribute('content', 'noindex');\n        return preventIndexMetatag;\n    }\n}\nconst isGallery = (path, galleryType)=>{\n    const pathArray = path.split('/');\n    return pathArray[pathArray.length - 1].indexOf(galleryType) > -1 || path.indexOf(Constants.category) > -1;\n};\nexport function getMetaTag(key, value) {\n    if (value) {\n        const metaTag = getDocument().createElement('meta');\n        metaTag.setAttribute('name', key);\n        metaTag.setAttribute('content', value);\n        return metaTag;\n    }\n}\nexport function getOGtag(key, value) {\n    if (value) {\n        const metaTag = getDocument().createElement('meta');\n        metaTag.setAttribute('property', `og:${key}`);\n        metaTag.setAttribute('content', value);\n        return metaTag;\n    }\n}\nexport function getViewPortTag() {\n    return getMetaTag(metaTagConstants.viewportName, metaTagConstants.viewportValue);\n}\nexport function getWebtypeOGTag() {\n    return getOGtag(metaTagConstants.typeName, metaTagConstants.typeValue);\n}\nexport function getAppSourceWordGalleryKeywordsTag() {\n    return getMetaTag(metaTagConstants.keywordsName, metaTagConstants.spzaGalleryWordKeywordsValue);\n}\nexport function getAppSourceExcelGalleryKeywordsTag() {\n    return getMetaTag(metaTagConstants.keywordsName, metaTagConstants.spzaGalleryExcelKeywordsValue);\n}\nexport function getAppSourcePptGalleryKeywordsTag() {\n    return getMetaTag(metaTagConstants.keywordsName, metaTagConstants.spzaGalleryPptKeywordsValue);\n}\nexport function getAppSourceOfficeGalleryKeywordsTag() {\n    return getMetaTag(metaTagConstants.keywordsName, metaTagConstants.spzaGalleryOfficeKeywordsValue);\n}\nexport function getAppSourceOutlookGalleryKeywordsTag() {\n    return getMetaTag(metaTagConstants.keywordsName, metaTagConstants.spzaGalleryOutlookKeywordsValue);\n}\nexport function getAppSourceGalleryKeywordsTag() {\n    return getMetaTag(metaTagConstants.keywordsName, metaTagConstants.spzaGalleryKeywordsValue);\n}\nexport function getAppSourceHomeKeywordsTag() {\n    return getMetaTag(metaTagConstants.keywordsName, metaTagConstants.spzaHomeKeywordsValue);\n}\nexport function getAppSourceCSGalleryKeywordsTag() {\n    return getMetaTag(metaTagConstants.keywordsName, metaTagConstants.csGalleryKeywordsValue);\n}\nexport function getAppSourceCSGalleryDescriptionTag() {\n    return getMetaTag(metaTagConstants.desName, metaTagConstants.csGalleryDesValue);\n}\nexport function getAppSourceWordDescriptionTag() {\n    return getMetaTag(metaTagConstants.desName, metaTagConstants.spzaWordGalleryDesValue);\n}\nexport function getAppSourceExcelDescriptionTag() {\n    return getMetaTag(metaTagConstants.desName, metaTagConstants.spzaExcelGalleryDesValue);\n}\nexport function getAppSourcePptDescriptionTag() {\n    return getMetaTag(metaTagConstants.desName, metaTagConstants.spzaPptGalleryDesValue);\n}\nexport function getAppSourceOutlookDescriptionTag() {\n    return getMetaTag(metaTagConstants.desName, metaTagConstants.spzaOutlookGalleryDesValue);\n}\nexport function getAppSourceOfficeDescriptionTag() {\n    return getMetaTag(metaTagConstants.desName, metaTagConstants.spzaOfficeGalleryDesValue);\n}\nexport function getAppSourceHomeDescriptionTag() {\n    return getMetaTag(metaTagConstants.desName, metaTagConstants.spzaHomeDesValue);\n}\nexport function getAppSourcePageOGSitename() {\n    return getOGtag(metaTagConstants.sitenameName, metaTagConstants.sitenameValue);\n}\nexport function getAppSourcePageOGTitleTag() {\n    return getOGtag(metaTagConstants.titleName, metaTagConstants.sitenameValue);\n}\nexport function getAppSourceCSGalleryOGTitleTag() {\n    return getOGtag(metaTagConstants.titleName, metaTagConstants.csTitleValue);\n}\nexport function getAppSourceGalleryOGDescriptionTag() {\n    return getOGtag(metaTagConstants.desName, metaTagConstants.spzaGalleryKeywordsValue);\n}\nexport function getAppSourceWordGalleryOGDescriptionTag() {\n    return getOGtag(metaTagConstants.desName, metaTagConstants.spzaWordGalleryDesValue);\n}\nexport function getAppSourcePptGalleryOGDescriptionTag() {\n    return getOGtag(metaTagConstants.desName, metaTagConstants.spzaPptGalleryDesValue);\n}\nexport function getAppSourceExcelGalleryOGDescriptionTag() {\n    return getOGtag(metaTagConstants.desName, metaTagConstants.spzaExcelGalleryDesValue);\n}\nexport function getAppSourceOutlookGalleryOGDescriptionTag() {\n    return getOGtag(metaTagConstants.desName, metaTagConstants.spzaOutlookGalleryDesValue);\n}\nexport function getAppSourceOfficeGalleryOGDescriptionTag() {\n    return getOGtag(metaTagConstants.desName, metaTagConstants.spzaOfficeGalleryDesValue);\n}\nexport function getAppSourceHomeOGDescriptionTag() {\n    return getOGtag(metaTagConstants.desName, metaTagConstants.spzaHomeKeywordsValue);\n}\nexport function getAppSourceCSGalleryOGDescriptionTag() {\n    return getOGtag(metaTagConstants.desName, metaTagConstants.csGalleryKeywordsValue);\n}\nexport function getAwaMetaTags(state) {\n    const awaMetaTags = [];\n    if (state === null || state === void 0 ? void 0 : state.config) {\n        var _state_users;\n        awaMetaTags.push(getMetaTag(AwaMetaTags.locale, state.config.locale));\n        var _state_users_signedIn;\n        awaMetaTags.push(getMetaTag(AwaMetaTags.signedIn, `${(_state_users_signedIn = (_state_users = state.users) === null || _state_users === void 0 ? void 0 : _state_users.signedIn) !== null && _state_users_signedIn !== void 0 ? _state_users_signedIn : false}`));\n    }\n    return awaMetaTags;\n}\nfunction isCanonicalQueryKey(queryKey) {\n    return Constants.KeepInCanonicalFilters.indexOf(queryKey) > -1;\n}\nconst parseFirstFilter = (filterstring)=>{\n    return filterstring.split(';')[0].split(Constants.semicolon)[0];\n};\nfunction getGalleryCanonicalSuffix(currentUrl) {\n    if (currentUrl.split('?').length < 2) {\n        return '';\n    }\n    const queryParamsString = currentUrl.split('?')[1];\n    const queryParamsArray = queryParamsString.split('&');\n    for (const queryParam of queryParamsArray){\n        const queryTuple = queryParam.split('=');\n        if (queryTuple.length > 1 && isCanonicalQueryKey(queryTuple[0])) {\n            return '?' + parseFirstFilter(queryParam);\n        }\n    }\n    return '';\n}\nconst parseLocale = (path)=>{\n    const match = path.match(Constants.SeoLocaleRegex);\n    return match ? match[0].substr(1) : Constants.DefaultLocale;\n};\nexport function getCanonicalLink(currentUrl, isMacEnv) {\n    const path = currentUrl && currentUrl.split('?')[0] || '';\n    let canonicalLink = path;\n    const locale = parseLocale(path);\n    if (isMacEnv) {\n        if (path.indexOf(Constants.appsGallery) > -1 && !isGallery(path, Constants.GalleryTypes.apps)) {\n            canonicalLink = path + Constants.appDetailsCanonicalTabSuffix;\n        } else if (path.includes('/sitemap')) {\n            canonicalLink = `/${locale}/sitemap`;\n        } else if (path.split('/').length <= 3) {\n            canonicalLink = `/${locale}/`;\n        }\n    } else {\n        if (path.indexOf(Constants.csGallery) > -1) {\n            canonicalLink = isGallery(path, Constants.GalleryTypes.consultingServices) ? path + getGalleryCanonicalSuffix(currentUrl) : path;\n        } else if (path.indexOf(Constants.appsGallery) > -1) {\n            canonicalLink = path + getGalleryCanonicalSuffix(currentUrl);\n        } else if (path.indexOf(Constants.product) > -1) {\n            canonicalLink = path + Constants.appDetailsCanonicalTabSuffix;\n        } else if (path.includes('/sitemap')) {\n            canonicalLink = `/${locale}/sitemap`;\n        } else {\n            canonicalLink = `/${locale}/`;\n        }\n    }\n    return canonicalLink.toLowerCase();\n}\nexport function getCanonicalLinkTag({ path, protocol, host }) {\n    const runningEnv = process.env.webAppName;\n    const runningOnMac = runningEnv === Constants.canonicalAMPEnvWebAppName;\n    const canonicalLink = `${protocol}://${host}${getCanonicalLink(path, runningOnMac)}`;\n    const canonicalLinkTag = getDocument().createElement('link');\n    canonicalLinkTag.rel = 'canonical';\n    canonicalLinkTag.href = canonicalLink;\n    return canonicalLinkTag;\n}\nexport function getPageName(renderProps, env) {\n    // get cuurent page from pathname and pass to getComponentHTMLData for meta tag\n    let page = Constants.PageToGiveMetaTag.PageNotReady;\n    if (env !== metaTagConstants.spzaEnvironment) {\n        page = Constants.PageToGiveMetaTag.PageNotReady;\n    } else if (renderProps.location.pathname === '/' + renderProps.params.locale + routes.home.getPath(null) || renderProps.location.pathname === '/' + renderProps.params.locale || renderProps.location.pathname === '/' + renderProps.params.locale + '/') {\n        page = Constants.PageToGiveMetaTag.SpzaHomePage;\n    } else if (renderProps.location.pathname.startsWith('/' + renderProps.params.locale + routes.marketplace.getPath(null))) {\n        var _renderProps_query, _renderProps_query1, _renderProps_query2, _renderProps_query3, _renderProps_query4;\n        if (((_renderProps_query = renderProps.query) === null || _renderProps_query === void 0 ? void 0 : _renderProps_query.product) === 'word') {\n            page = Constants.PageToGiveMetaTag.SpzaWordGalleryPage;\n        } else if (((_renderProps_query1 = renderProps.query) === null || _renderProps_query1 === void 0 ? void 0 : _renderProps_query1.product) === 'excel') {\n            page = Constants.PageToGiveMetaTag.SpzaExcelGalleryPage;\n        } else if (((_renderProps_query2 = renderProps.query) === null || _renderProps_query2 === void 0 ? void 0 : _renderProps_query2.product) === 'powerpoint') {\n            page = Constants.PageToGiveMetaTag.SpzaPowerpointGalleryPage;\n        } else if (((_renderProps_query3 = renderProps.query) === null || _renderProps_query3 === void 0 ? void 0 : _renderProps_query3.product) === 'outlook') {\n            page = Constants.PageToGiveMetaTag.SpzaOutlookGalleryPage;\n        } else if (((_renderProps_query4 = renderProps.query) === null || _renderProps_query4 === void 0 ? void 0 : _renderProps_query4.product) === 'office') {\n            page = Constants.PageToGiveMetaTag.SpzaOfficeGalleryPage;\n        } else {\n            page = Constants.PageToGiveMetaTag.SpzaGalleryPage;\n        }\n    } else if (renderProps.location.pathname === '/' + renderProps.params.locale + routes.marketplaceServices.getPath(null)) {\n        page = Constants.PageToGiveMetaTag.SpzaCSGalleryPage;\n    } else if (renderProps.params.productId && renderProps.location.pathname.startsWith('/' + renderProps.params.locale + routes.appDetails.getPath({\n        productId: renderProps.params.productId,\n        entityId: renderProps.params.entityId\n    }))) {\n        page = Constants.PageToGiveMetaTag.SpzaDetailPage;\n    } else if (renderProps.location.pathname.startsWith('/' + renderProps.params.locale + routes.serviceDetail.getPath({\n        entityId: renderProps.params.entityId\n    }))) {\n        page = Constants.PageToGiveMetaTag.SpzaCSDetailPage;\n    } else {\n        page = Constants.PageToGiveMetaTag.PageNotReady;\n    }\n    return page;\n}\nexport function formatMetaTags(metaObj) {\n    let metaTags = '';\n    if (metaObj) {\n        for(const key in metaObj){\n            if (metaObj[`${key}`] !== '') {\n                metaTags += metaObj[`${key}`];\n            }\n        }\n    }\n    return metaTags;\n}\nexport function createMetaTags(store, renderProps, page, url) {\n    let metaObj;\n    if (page === Constants.PageToGiveMetaTag.SpzaHomePage) {\n        metaObj = {\n            metaDescription: getAppSourceHomeDescriptionTag(),\n            metaKeywords: getAppSourceHomeKeywordsTag(),\n            metaOGTitle: getAppSourcePageOGTitleTag(),\n            metaOGUrl: getOGtag(metaTagConstants.urlName, metaTagConstants.spzaUrl + url),\n            metaOGDescription: getAppSourceHomeOGDescriptionTag(),\n            metaOGLocale: getOGtag(metaTagConstants.localeName, renderProps.params.locale ? renderProps.params.locale : 'en-us'),\n            metaOGSiteName: getAppSourcePageOGSitename()\n        };\n    } else if (page === Constants.PageToGiveMetaTag.SpzaWordGalleryPage) {\n        metaObj = {\n            metaDescription: getAppSourceWordDescriptionTag(),\n            metaKeywords: getAppSourceWordGalleryKeywordsTag(),\n            metaOGTitle: getAppSourcePageOGTitleTag(),\n            metaOGUrl: getOGtag(metaTagConstants.urlName, metaTagConstants.spzaUrl + url),\n            metaOGDescription: getAppSourceWordGalleryOGDescriptionTag(),\n            metaOGLocale: getOGtag(metaTagConstants.localeName, renderProps.params.locale ? renderProps.params.locale : 'en-us'),\n            metaOGSiteName: getAppSourcePageOGSitename()\n        };\n    } else if (page === Constants.PageToGiveMetaTag.SpzaExcelGalleryPage) {\n        metaObj = {\n            metaDescription: getAppSourceExcelDescriptionTag(),\n            metaKeywords: getAppSourceExcelGalleryKeywordsTag(),\n            metaOGTitle: getAppSourcePageOGTitleTag(),\n            metaOGUrl: getOGtag(metaTagConstants.urlName, metaTagConstants.spzaUrl + url),\n            metaOGDescription: getAppSourceExcelGalleryOGDescriptionTag(),\n            metaOGLocale: getOGtag(metaTagConstants.localeName, renderProps.params.locale ? renderProps.params.locale : 'en-us'),\n            metaOGSiteName: getAppSourcePageOGSitename()\n        };\n    } else if (page === Constants.PageToGiveMetaTag.SpzaPowerpointGalleryPage) {\n        metaObj = {\n            metaDescription: getAppSourcePptDescriptionTag(),\n            metaKeywords: getAppSourcePptGalleryKeywordsTag(),\n            metaOGTitle: getAppSourcePageOGTitleTag(),\n            metaOGUrl: getOGtag(metaTagConstants.urlName, metaTagConstants.spzaUrl + url),\n            metaOGDescription: getAppSourcePptGalleryOGDescriptionTag(),\n            metaOGLocale: getOGtag(metaTagConstants.localeName, renderProps.params.locale ? renderProps.params.locale : 'en-us'),\n            metaOGSiteName: getAppSourcePageOGSitename()\n        };\n    } else if (page === Constants.PageToGiveMetaTag.SpzaOutlookGalleryPage) {\n        metaObj = {\n            metaDescription: getAppSourceOutlookDescriptionTag(),\n            metaKeywords: getAppSourceOutlookGalleryKeywordsTag(),\n            metaOGTitle: getAppSourcePageOGTitleTag(),\n            metaOGUrl: getOGtag(metaTagConstants.urlName, metaTagConstants.spzaUrl + url),\n            metaOGDescription: getAppSourceOutlookGalleryOGDescriptionTag(),\n            metaOGLocale: getOGtag(metaTagConstants.localeName, renderProps.params.locale ? renderProps.params.locale : 'en-us'),\n            metaOGSiteName: getAppSourcePageOGSitename()\n        };\n    } else if (page === Constants.PageToGiveMetaTag.SpzaOfficeGalleryPage) {\n        metaObj = {\n            metaDescription: getAppSourceOfficeDescriptionTag(),\n            metaKeywords: getAppSourceOfficeGalleryKeywordsTag(),\n            metaOGTitle: getAppSourcePageOGTitleTag(),\n            metaOGUrl: getOGtag(metaTagConstants.urlName, metaTagConstants.spzaUrl + url),\n            metaOGDescription: getAppSourceOfficeGalleryOGDescriptionTag(),\n            metaOGLocale: getOGtag(metaTagConstants.localeName, renderProps.params.locale ? renderProps.params.locale : 'en-us'),\n            metaOGSiteName: getAppSourcePageOGSitename()\n        };\n    } else if (page === Constants.PageToGiveMetaTag.SpzaGalleryPage) {\n        metaObj = {\n            metaDescription: getAppSourceHomeDescriptionTag(),\n            metaKeywords: getAppSourceGalleryKeywordsTag(),\n            metaOGTitle: getAppSourcePageOGTitleTag(),\n            metaOGUrl: getOGtag(metaTagConstants.urlName, metaTagConstants.spzaUrl + url),\n            metaOGDescription: getAppSourceGalleryOGDescriptionTag(),\n            metaOGLocale: getOGtag(metaTagConstants.localeName, renderProps.params.locale ? renderProps.params.locale : 'en-us'),\n            metaOGSiteName: getAppSourcePageOGSitename()\n        };\n    } else if (page === Constants.PageToGiveMetaTag.SpzaCSGalleryPage) {\n        metaObj = {\n            metaDescription: getAppSourceCSGalleryDescriptionTag(),\n            metaKeywords: getAppSourceCSGalleryKeywordsTag(),\n            metaOGTitle: getAppSourceCSGalleryOGTitleTag(),\n            metaOGUrl: getOGtag(metaTagConstants.urlName, metaTagConstants.spzaUrl + url),\n            metaOGDescription: getAppSourceCSGalleryOGDescriptionTag(),\n            metaOGLocale: getOGtag(metaTagConstants.localeName, renderProps.params.locale ? renderProps.params.locale : 'en-us'),\n            metaOGSiteName: getAppSourcePageOGSitename()\n        };\n    } else if (page === Constants.PageToGiveMetaTag.SpzaDetailPage) {\n        const app = store.getState().apps.dataList.find((app)=>{\n            var _app_entityId, _renderProps_params_entityId, _renderProps_params;\n            return (app === null || app === void 0 ? void 0 : (_app_entityId = app.entityId) === null || _app_entityId === void 0 ? void 0 : _app_entityId.toLowerCase()) === (renderProps === null || renderProps === void 0 ? void 0 : (_renderProps_params = renderProps.params) === null || _renderProps_params === void 0 ? void 0 : (_renderProps_params_entityId = _renderProps_params.entityId) === null || _renderProps_params_entityId === void 0 ? void 0 : _renderProps_params_entityId.toLowerCase());\n        });\n        if (app) {\n            let keywords = '';\n            if (app.detailInformation && app.detailInformation.Keywords && app.detailInformation.Keywords.length > 0) {\n                for(let i = 0; i < app.detailInformation.Keywords.length; i++){\n                    if (i !== 0) {\n                        keywords += ', ';\n                    }\n                    keywords += app.detailInformation.Keywords[`${i}`];\n                }\n            }\n            let videoUrl = '';\n            if (app.detailInformation && app.detailInformation.DemoVideos && app.detailInformation.DemoVideos.length > 0) {\n                videoUrl = app.detailInformation.DemoVideos[0].VideoLink;\n            }\n            metaObj = {\n                metaDescription: getMetaTag(metaTagConstants.desName, app.shortDescription),\n                metaKeywords: getMetaTag(metaTagConstants.keywordsName, keywords),\n                metaOGTitle: getOGtag(metaTagConstants.titleName, app.title),\n                metaOGUrl: getOGtag(metaTagConstants.urlName, metaTagConstants.spzaUrl + url),\n                metaOGImage: getOGtag(metaTagConstants.imageName, app.iconURL),\n                metaOGDescription: getOGtag(metaTagConstants.desName, app.shortDescription),\n                metaOGLocale: getOGtag(metaTagConstants.localeName, renderProps.params.locale ? renderProps.params.locale : 'en-us'),\n                metaOGSiteName: getOGtag(metaTagConstants.sitenameName, app.title),\n                metaOGVideo: getOGtag(metaTagConstants.videoName, videoUrl),\n                metaTwitterCard: getMetaTag(metaTagConstants.twitterCard, metaTagConstants.twitterCardValue),\n                metaTwitterSite: getMetaTag(metaTagConstants.twitterSite, metaTagConstants.twitterSiteValue),\n                metaTwitterTitle: getMetaTag(metaTagConstants.twitterTitle, app.title),\n                metaTwitterDescription: getMetaTag(metaTagConstants.twitterDes, app.shortDescription),\n                metaTwitterImage: getMetaTag(metaTagConstants.twitterImage, app.iconURL)\n            };\n        }\n    } else if (page === Constants.PageToGiveMetaTag.SpzaCSDetailPage) {\n        const csApp = store.getState().services.dataList.find((app)=>{\n            var _app_entityId, _renderProps_params_entityId, _renderProps_params;\n            return (app === null || app === void 0 ? void 0 : (_app_entityId = app.entityId) === null || _app_entityId === void 0 ? void 0 : _app_entityId.toLowerCase()) === (renderProps === null || renderProps === void 0 ? void 0 : (_renderProps_params = renderProps.params) === null || _renderProps_params === void 0 ? void 0 : (_renderProps_params_entityId = _renderProps_params.entityId) === null || _renderProps_params_entityId === void 0 ? void 0 : _renderProps_params_entityId.toLowerCase());\n        });\n        if (csApp) {\n            var _csApp_extraData, _csApp_extraData1, _csApp_extraData2;\n            let videoUrl = '';\n            if (csApp.detailInformation && csApp.detailInformation.DemoVideos && csApp.detailInformation.DemoVideos.length > 0) {\n                videoUrl = csApp.detailInformation.DemoVideos[0].VideoLink;\n            }\n            metaObj = {\n                metaDescription: getMetaTag(metaTagConstants.desName, (_csApp_extraData = csApp.extraData) === null || _csApp_extraData === void 0 ? void 0 : _csApp_extraData.shortDescription),\n                metaKeywords: getMetaTag(metaTagConstants.keywordsName, csApp.title + ', consulting service'),\n                metaOGTitle: getOGtag(metaTagConstants.titleName, csApp.title),\n                metaOGUrl: getOGtag(metaTagConstants.urlName, metaTagConstants.spzaUrl + url),\n                metaOGImage: getOGtag(metaTagConstants.imageName, csApp.detailInformation.LargeIconUri),\n                metaOGDescription: getOGtag(metaTagConstants.desName, (_csApp_extraData1 = csApp.extraData) === null || _csApp_extraData1 === void 0 ? void 0 : _csApp_extraData1.shortDescription),\n                metaOGLocale: getOGtag(metaTagConstants.localeName, renderProps.params.locale ? renderProps.params.locale : 'en-us'),\n                metaOGSiteName: getOGtag(metaTagConstants.sitenameName, csApp.title),\n                metaOGVideo: getOGtag(metaTagConstants.videoName, videoUrl),\n                metaTwitterCard: getMetaTag(metaTagConstants.twitterCard, metaTagConstants.twitterCardValue),\n                metaTwitterSite: getMetaTag(metaTagConstants.twitterSite, metaTagConstants.twitterSiteValue),\n                metaTwitterTitle: getMetaTag(metaTagConstants.twitterTitle, csApp.title),\n                metaTwitterDescription: getMetaTag(metaTagConstants.twitterDes, (_csApp_extraData2 = csApp.extraData) === null || _csApp_extraData2 === void 0 ? void 0 : _csApp_extraData2.shortDescription),\n                metaTwitterImage: getMetaTag(metaTagConstants.twitterImage, csApp.detailInformation.LargeIconUri)\n            };\n        }\n    }\n    return metaObj;\n}\nexport var metaTagConstants;\n","function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nfunction _object_spread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        var ownKeys = Object.keys(source);\n        if (typeof Object.getOwnPropertySymbols === \"function\") {\n            ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n            }));\n        }\n        ownKeys.forEach(function(key) {\n            _define_property(target, key, source[key]);\n        });\n    }\n    return target;\n}\nfunction ownKeys(object, enumerableOnly) {\n    var keys = Object.keys(object);\n    if (Object.getOwnPropertySymbols) {\n        var symbols = Object.getOwnPropertySymbols(object);\n        if (enumerableOnly) {\n            symbols = symbols.filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n            });\n        }\n        keys.push.apply(keys, symbols);\n    }\n    return keys;\n}\nfunction _object_spread_props(target, source) {\n    source = source != null ? source : {};\n    if (Object.getOwnPropertyDescriptors) {\n        Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n        ownKeys(Object(source)).forEach(function(key) {\n            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n    }\n    return target;\n}\nexport const serviceOffersSupportedUSStates = [\n    {\n        code: 'ALL',\n        name: 'All States'\n    },\n    {\n        code: 'AL',\n        name: 'Alabama'\n    },\n    {\n        code: 'AK',\n        name: 'Alaska'\n    },\n    {\n        code: 'AZ',\n        name: 'Arizona'\n    },\n    {\n        code: 'AR',\n        name: 'Arkansas'\n    },\n    {\n        code: 'CA',\n        name: 'California'\n    },\n    {\n        code: 'CO',\n        name: 'Colorado'\n    },\n    {\n        code: 'CT',\n        name: 'Connecticut'\n    },\n    {\n        code: 'DC',\n        name: 'District of Columbia'\n    },\n    {\n        code: 'DE',\n        name: 'Delaware'\n    },\n    {\n        code: 'FL',\n        name: 'Florida'\n    },\n    {\n        code: 'GA',\n        name: 'Georgia'\n    },\n    {\n        code: 'HI',\n        name: 'Hawaii'\n    },\n    {\n        code: 'IA',\n        name: 'Iowa'\n    },\n    {\n        code: 'ID',\n        name: 'Idaho'\n    },\n    {\n        code: 'IL',\n        name: 'Illinois'\n    },\n    {\n        code: 'IN',\n        name: 'Indiana'\n    },\n    {\n        code: 'KS',\n        name: 'Kansas'\n    },\n    {\n        code: 'KY',\n        name: 'Kentucky'\n    },\n    {\n        code: 'LA',\n        name: 'Louisiana'\n    },\n    {\n        code: 'ME',\n        name: 'Maine'\n    },\n    {\n        code: 'MD',\n        name: 'Maryland'\n    },\n    {\n        code: 'MA',\n        name: 'Massachusetts'\n    },\n    {\n        code: 'MI',\n        name: 'Michigan'\n    },\n    {\n        code: 'MN',\n        name: 'Minnesota'\n    },\n    {\n        code: 'MS',\n        name: 'Mississippi'\n    },\n    {\n        code: 'MO',\n        name: 'Missouri'\n    },\n    {\n        code: 'MT',\n        name: 'Montana'\n    },\n    {\n        code: 'NE',\n        name: 'Nebraska'\n    },\n    {\n        code: 'NV',\n        name: 'Nevada'\n    },\n    {\n        code: 'NH',\n        name: 'New Hampshire'\n    },\n    {\n        code: 'NJ',\n        name: 'New Jersey'\n    },\n    {\n        code: 'NM',\n        name: 'New Mexico'\n    },\n    {\n        code: 'NY',\n        name: 'New York'\n    },\n    {\n        code: 'NC',\n        name: 'North Carolina'\n    },\n    {\n        code: 'ND',\n        name: 'North Dakota'\n    },\n    {\n        code: 'OH',\n        name: 'Ohio'\n    },\n    {\n        code: 'OK',\n        name: 'Oklahoma'\n    },\n    {\n        code: 'OR',\n        name: 'Oregon'\n    },\n    {\n        code: 'PA',\n        name: 'Pennsylvania'\n    },\n    {\n        code: 'RI',\n        name: 'Rhode Island'\n    },\n    {\n        code: 'SC',\n        name: 'South Carolina'\n    },\n    {\n        code: 'SD',\n        name: 'South Dakota'\n    },\n    {\n        code: 'TN',\n        name: 'Tennessee'\n    },\n    {\n        code: 'TX',\n        name: 'Texas'\n    },\n    {\n        code: 'UT',\n        name: 'Utah'\n    },\n    {\n        code: 'VT',\n        name: 'Vermont'\n    },\n    {\n        code: 'VA',\n        name: 'Virginia'\n    },\n    {\n        code: 'WA',\n        name: 'Washington'\n    },\n    {\n        code: 'WV',\n        name: 'West Virginia'\n    },\n    {\n        code: 'WI',\n        name: 'Wisconsin'\n    },\n    {\n        code: 'WY',\n        name: 'Wyoming'\n    }\n];\nexport const serviceOffersSupportedCAStates = [\n    {\n        code: 'ALL',\n        name: 'All States'\n    },\n    {\n        code: 'AB',\n        name: 'Alberta'\n    },\n    {\n        code: 'BC',\n        name: 'British Columbia'\n    },\n    {\n        code: 'MB',\n        name: 'Manitoba'\n    },\n    {\n        code: 'NB',\n        name: 'New Brunswick'\n    },\n    {\n        code: 'NL',\n        name: 'Newfoundland and Labrador'\n    },\n    {\n        code: 'NS',\n        name: 'Nova Scotia'\n    },\n    {\n        code: 'ON',\n        name: 'Ontario'\n    },\n    {\n        code: 'PE',\n        name: 'Prince Edward Island'\n    },\n    {\n        code: 'QC',\n        name: 'Quebec'\n    },\n    {\n        code: 'SK',\n        name: 'Saskatchewan'\n    },\n    {\n        code: 'NT',\n        name: 'Northwest Territories'\n    },\n    {\n        code: 'NU',\n        name: 'Nunavut'\n    },\n    {\n        code: 'YT',\n        name: 'Yukon'\n    }\n];\nexport const serviceOffersSupportedStatesCodes = [\n    ...serviceOffersSupportedUSStates,\n    ...serviceOffersSupportedCAStates\n].reduce((acc, { code })=>_object_spread_props(_object_spread({}, acc), {\n        [code.toUpperCase()]: true\n    }), {});\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport React from 'react';\nimport { TooltipHost } from '@fluentui/react';\nexport function getTooltipSilentLogIn(element, isLoadingUserData) {\n    const hostStyles = {\n        root: {\n            display: 'inline-block'\n        }\n    };\n    const calloutProps = {\n        gapSpace: 0,\n        hidden: !isLoadingUserData\n    };\n    return /*#__PURE__*/ _jsx(TooltipHost, {\n        styles: hostStyles,\n        calloutProps: calloutProps,\n        content: \"Just a moment, logging you in...\",\n        children: element\n    });\n}\n","import { Constants } from './constants';\n/**\n * get trimmed words speparated by delimiter from string\n *\n * @param text input text\n * @param delimiter text delimiter for text split\n */ export function getTrimmedWords(text, delimiter = ' ') {\n    if (!text) {\n        return [];\n    }\n    return text// split\n    .split(delimiter)// trim words\n    .map((word)=>getTrimmedString(word))// filter out empty words\n    .filter((word)=>!!word);\n}\n/**\n * check whether the string is empty, or consists of spaces only, or 'null', or 'undefined', or null, or undefined, case insensitive\n *\n * @param text input text\n * @returns true if input string is null, undefined, '', '   ', 'null', 'undefined'\n */ export function isEmptyNullorUndefinedString(text) {\n    if (!text) {\n        return true;\n    }\n    const lowerCaseText = text.toLowerCase().trim();\n    return lowerCaseText === Constants.TypeOf.undefinedName || lowerCaseText === Constants.TypeOf.nullName || lowerCaseText === '';\n}\n/**\n * process and return the string with word break enabled\n * @param text raw text input\n */ export function getWorkBreakEnabledString(text) {\n    if (text) {\n        return text.replace(/\\u00a0|&nbsp;|\\s/g, ' ');\n    }\n    return '';\n}\n/**\n * get trimmed string\n * @param text input text\n */ export function getTrimmedString(text) {\n    if (text) {\n        return text.trim();\n    }\n    return '';\n}\nexport function getCapitalizedString(text) {\n    const trimmedText = getTrimmedString(text);\n    const capitalizedString = trimmedText.charAt(0).toUpperCase() + trimmedText.slice(1);\n    return capitalizedString;\n}\nexport function getStringWithoutSpecialCharacters(text, regexToFilterOutSpecialCharacters) {\n    const trimmedText = getTrimmedString(text);\n    const outputText = trimmedText.split(regexToFilterOutSpecialCharacters).join('');\n    return outputText;\n}\n","import { getWindow } from '@shared/services/window';\nimport { Constants } from '@shared/utils/constants';\nimport { SpzaInstrumentService } from '@shared/services/telemetry/spza/spzaInstrument';\n/**\n * log telemetry\n *\n * @param action action on nomination form\n * @param actionModifier action modifier on nomintaion form\n * @param details action details on nomintation form\n */ export const logTelemetry = (action, actionModifier, details = undefined, isFeedback = false)=>{\n    const pageUrl = getWindow() && getWindow().location && getWindow().location.href || Constants.TypeOf.undefinedName;\n    const payload = {\n        page: pageUrl,\n        action,\n        actionModifier,\n        isFeedback,\n        details\n    };\n    SpzaInstrumentService.getProvider().probe(Constants.Telemetry.ProbeName.LogInfo, payload);\n};\n","import { getWindow } from './../services/window';\nimport { getTrimmedString } from './stringUtils';\n/**\n * get query from window.location.search\n *\n * @param search: window.location.search e.g. ?product=dynamics-365%3Bsearch=hmmm\n */ export function getQueryFromWindowLocationSearch(search) {\n    if (!search || !search.trim()) {\n        return {};\n    }\n    const queryArray = search.replace(/\\?/g, ' ').replace(/\\&/g, ' ').replace(/%3B/g, ';').split(' ').map((querySegment)=>querySegment.trim()).filter((querySegment)=>!!querySegment);\n    const query = {};\n    queryArray.forEach((querySegment)=>{\n        const querySegmentKeyValuePair = querySegment.split('=');\n        if (querySegmentKeyValuePair.length === 2) {\n            query[querySegmentKeyValuePair[0]] = querySegmentKeyValuePair[1];\n        }\n    });\n    return query;\n}\nexport function getQueryFromBrowserUrl() {\n    const location = getLocationFromBrowserUrl();\n    const search = location && location.search || '';\n    return getQueryFromWindowLocationSearch(search);\n}\nexport function getPathnameFromBrowserUrl() {\n    const location = getLocationFromBrowserUrl();\n    return location && location.pathname || '';\n}\nexport function getOriginFromBrowserUrl() {\n    const location = getLocationFromBrowserUrl();\n    return location && location.origin || '';\n}\nexport function getHostFromBrowserUrl() {\n    const location = getLocationFromBrowserUrl();\n    return location && location.host || '';\n}\nexport function getProtocolFromBrowserUrl() {\n    const location = getLocationFromBrowserUrl();\n    return location && location.protocol || '';\n}\nexport function getLocationFromBrowserUrl() {\n    return getWindow() && getWindow().location;\n}\nexport function getLocationFromString(href) {\n    const regex = new RegExp([\n        // protocol\n        '^(https?:)//',\n        // host (hostname and port)\n        '(([^:/?#]*)(?::([0-9]+))?)',\n        // pathname\n        '(/{0,1}[^?#]*)',\n        // search\n        '(\\\\?[^#]*|)',\n        // hash\n        '(#.*|)$'\n    ].join(''));\n    const match = href.match(regex);\n    if (!match) {\n        return {\n            href: href,\n            origin: '',\n            protocol: '',\n            host: '',\n            hostname: '',\n            port: '',\n            pathname: '',\n            search: '',\n            hash: '',\n            assign: ()=>{},\n            reload: ()=>{},\n            replace: ()=>{},\n            toString: ()=>href,\n            ancestorOrigins: null\n        };\n    }\n    return {\n        href: href,\n        origin: `${match[1]}//${match[2]}`,\n        protocol: match[1],\n        host: match[2],\n        hostname: match[3],\n        port: match[4],\n        pathname: match[5],\n        search: match[6],\n        hash: match[7],\n        assign: ()=>{},\n        reload: ()=>{},\n        replace: ()=>{},\n        toString: ()=>href,\n        ancestorOrigins: null\n    };\n}\n/**\n * get pathname from a partial url string\n * @param href well-formed input href could be origin + pathname, host + pathname, pathname\n *  Note: when input is pathname only, to conform to well-formed, it must start with character '/'\n */ export function getPathnameFromStringUrl(href) {\n    const trimmedHref = getTrimmedString(href);\n    const protocolRegExp = new RegExp('^https?://');\n    const originRegExp = new RegExp('^https?://([^:/?#]*)(?::([0-9]+))?');\n    // complete href origin if not complete\n    let completeHref = '';\n    // check first if input has complete origin (protocol + host)\n    if (!trimmedHref.match(originRegExp)) {\n        // preprend with protocol first\n        completeHref = `${getProtocolFromBrowserUrl()}//${trimmedHref}`;\n        // if match still fails, means input doesn't have origin at all\n        // prepend with origin\n        if (!completeHref.match(protocolRegExp)) {\n            completeHref = `${getOriginFromBrowserUrl()}${trimmedHref}`;\n        }\n    }\n    return getLocationFromString(completeHref).pathname;\n}\n","import { Constants } from '@shared/utils/constants';\n// dedicated utils, one for spza, one for mac\nexport function getUserFavouriteEntityServiceType() {\n    return Constants.UserFavourite.ApplicationTypes.ITConsultingServices;\n}\nexport function getUserFavouriteEntityAppType() {\n    return Constants.UserFavourite.ApplicationTypes.ITApplications;\n}\n","function _define_property(obj, key, value) {\n    if (key in obj) {\n        Object.defineProperty(obj, key, {\n            value: value,\n            enumerable: true,\n            configurable: true,\n            writable: true\n        });\n    } else {\n        obj[key] = value;\n    }\n    return obj;\n}\nfunction _object_spread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        var ownKeys = Object.keys(source);\n        if (typeof Object.getOwnPropertySymbols === \"function\") {\n            ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n                return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n            }));\n        }\n        ownKeys.forEach(function(key) {\n            _define_property(target, key, source[key]);\n        });\n    }\n    return target;\n}\nimport { Constants } from '@shared/utils/constants';\nimport { routes } from '@shared/routerHistory';\nimport { getUserFavouriteEntityServiceType, getUserFavouriteEntityAppType } from '@shared/utils/userFavouriteDedicatedUtils';\n// general utils\nexport function isApplication(applicationType) {\n    return applicationType === getUserFavouriteEntityAppType();\n}\nexport function isConsultingService(applicationType) {\n    return applicationType === getUserFavouriteEntityServiceType();\n}\nexport function getFavouriteEntityState(favourites, applicationType) {\n    return favourites.map((favourite)=>{\n        return {\n            entityGuid: favourite.id,\n            applicationId: favourite.applicationId,\n            planId: favourite.planId,\n            applicationType: applicationType,\n            item: favourite.item\n        };\n    });\n}\n// redux store related\n// upsert, either add, or update, a favourite based on entityId\nexport function upsertsUserFavouriteEntityState(entityList, payload) {\n    const newEntity = {\n        entityGuid: payload.id,\n        applicationId: payload.applicationId,\n        planId: payload.planId,\n        item: payload.item,\n        applicationType: payload.applicationType\n    };\n    // find update first\n    const shouldUpdate = entityList.some((entity, index)=>{\n        const foundMatch = entity.entityGuid === payload.id;\n        if (foundMatch) {\n            entityList[`${index}`] = newEntity;\n        }\n        return foundMatch;\n    });\n    if (shouldUpdate) {\n        return;\n    }\n    // if it's not an update, it's an add\n    entityList.push(newEntity);\n}\n// delete a favourite based on entityId\nexport function deleteUserFavouriteEntityState(entityList, payload) {\n    let indexToDelete = -1;\n    entityList.some((entity, index)=>{\n        const foundMatch = entity.entityGuid === payload.entityGuid;\n        if (foundMatch) {\n            indexToDelete = index;\n        }\n        return foundMatch;\n    });\n    const numberOfEntityToDelete = indexToDelete === -1 ? 0 : 1;\n    entityList.splice(indexToDelete, numberOfEntityToDelete);\n}\n// component related utils\nexport function getAllUserFavouriteCount(userFavourite) {\n    const userFavouriteCount = userFavourite.fetchDataStatus === Constants.UserFavourite.FetchDataStatus.Valid ? userFavourite.apps.length + userFavourite.services.length : 0;\n    return userFavouriteCount;\n}\nexport function getUserFavouriteAppCount(userFavourite) {\n    const userFavouriteCount = userFavourite.fetchDataStatus === Constants.UserFavourite.FetchDataStatus.Valid ? userFavourite.apps.length : 0;\n    return userFavouriteCount;\n}\nexport function getUserFavouriteServiceCount(userFavourite) {\n    const userFavouriteCount = userFavourite.fetchDataStatus === Constants.UserFavourite.FetchDataStatus.Valid ? userFavourite.services.length : 0;\n    return userFavouriteCount;\n}\nexport function getUserFavouriteDetailPageRedirectUrl(buildHref) {\n    return buildHref(routes.userFavouriteDetail, null, {\n        category: null,\n        industry: null,\n        product: null,\n        search: null,\n        serviceType: null\n    });\n}\nexport function getUserFavouriteEntity(userFavourite, entityId) {\n    let userFavouriteEntity;\n    const hasFoundEntity = userFavourite.apps.some((app)=>{\n        const hasFound = app.applicationId === entityId;\n        if (hasFound) {\n            userFavouriteEntity = _object_spread({}, app);\n        }\n        return hasFound;\n    });\n    if (hasFoundEntity) {\n        return userFavouriteEntity;\n    }\n    userFavourite.services.some((service)=>{\n        const hasFound = service.applicationId === entityId;\n        if (hasFound) {\n            userFavouriteEntity = _object_spread({}, service);\n        }\n        return hasFound;\n    });\n    return userFavouriteEntity;\n}\nexport function getUserFavouriteViewEntityList(userFavouriteEntityList) {\n    if (!userFavouriteEntityList) {\n        return [];\n    }\n    return userFavouriteEntityList.map((userFavouriteEntity)=>userFavouriteEntity.item);\n}\n","import { Constants } from '@shared/utils/constants';\nimport { addClassToElement, getElement, removeClassToFirstMatchedElement } from '@shared/utils/appUtils';\nexport function shouldHideUserFavouriteNavBarButton(currentView) {\n    return false;\n}\nfunction geQueryByDropdownItemClassName(className, isActive) {\n    const activeClassNameSuffix = isActive ? `.${Constants.UserComponent.activeClassName}` : '';\n    const queryToPrevActiveItem = `.${Constants.UserComponent.dropdownActiveOptionContainerClassName} ` + `.${className}${activeClassNameSuffix}`;\n    return queryToPrevActiveItem;\n}\nexport function getActiveItemIndexOfUserMobileDropdown() {\n    let activeIndex = -1;\n    Constants.UserComponent.dropdownItemClassNameArray.some((className, arrayIndex)=>{\n        const query = geQueryByDropdownItemClassName(className, true);\n        const match = !!getElement(Constants.SearchBy.QuerySelector, query);\n        if (match) {\n            activeIndex = arrayIndex;\n        }\n        return match;\n    });\n    return activeIndex;\n}\nexport function addActiveClassNameToMobileUserDropdownItem(dropdownItemName, isMobileDropdown) {\n    if (!isMobileDropdown) {\n        return;\n    }\n    const newActiveItemIndexClassName = Constants.UserComponent.dropdownItemNameToClassName[`${dropdownItemName}`];\n    const newActiveItemIndex = Constants.UserComponent.dropdownItemClassNameArray.indexOf(newActiveItemIndexClassName);\n    const prevActiveItemIndex = getActiveItemIndexOfUserMobileDropdown();\n    // if active dropdown item has not changed, simply return\n    if (newActiveItemIndex === prevActiveItemIndex) {\n        return;\n    }\n    // remove active classname to previous active dropdown item\n    if (prevActiveItemIndex >= 0) {\n        const queryToPrevActiveItem = geQueryByDropdownItemClassName(Constants.UserComponent.dropdownItemClassNameArray[`${prevActiveItemIndex}`], true);\n        removeClassToFirstMatchedElement(Constants.SearchBy.QuerySelector, queryToPrevActiveItem, Constants.UserComponent.activeClassName);\n    }\n    // set active classname to new active dropdown item\n    const newActiveItemClassName = Constants.UserComponent.dropdownItemClassNameArray[`${newActiveItemIndex}`];\n    const queryToNewActiveItem = geQueryByDropdownItemClassName(newActiveItemClassName, false);\n    addClassToElement(Constants.SearchBy.QuerySelector, queryToNewActiveItem, Constants.UserComponent.activeClassName);\n}\nexport const isMaccUser = (userInfo)=>{\n    const { isMaccTenant, accounts: { isEAAccount } = {} } = userInfo;\n    return isMaccTenant || isEAAccount;\n};\n"],"names":["module","deepCopyDataMap","DataMap","newDataMap","k","copy","_define_property","obj","key","value","Object","initialAppReviewsDataState","IFeatureFlags","ff","initialUserFavouriteState","initialDynamicCampaignState","initialSearchState","initialModalState","initialEntityDataState","initialAppDataState","initialCloudsIndustryDataState","initialUserDataState","process","initialConfigState","initialServiceDataState","initialCheckoutState","initialPartnersState","copyState","oldState","newState","contentStyles","HiddenComponentWrapper","className","hide","children","containerClass","RecommendationsRibbon","recommendedItems","title","ribbonKey","selectedCountry","selectedLocale","TileType","item","index","target","source","_object_spread","i","arguments","ownKeys","sym","object","enumerableOnly","keys","symbols","UsefulInfoMetadataCellItemType","_object_spread_props","isUsefulInfoMetadataCellItemFilter","isUsefulInfoMetadataCellItemInternalLink","isUsefulInfoMetadataCellItemLink","isUsefulInfoMetadataCellItemModal","UsefulInfo","filter","e","window","col","cell","Boolean","args","pbTelemetry","GenerateLabelAndTooltip","context","getBillingFrequencyOptions","billingCountryCode","items","futurePriceMonthly","futurePriceYearly","locale","product","id","termDuration","hasFreeTrial","termsByBillingTermDuration","availability","plan","actions","term","termEntity","option","defaultRender","getDefaultOrSelectedBillingFrequency","options","_items_","_items_1","availableTermFrequencies","defaultBillingFrequency","BillingFrequencyChoiceGroup","props","setSelectedTerm","termId","text","_","BillingTermChoiceGroup","setBillingTerm","planId","handleBillingTermChanges","firstTerm","generateBillingOption","getTermMapping","getBillingOptions","listOfTerms","billingOptionsMap","classes","SaasPricingTable","config","app","billingCountry","onGetInNowClicked","shouldBlockPrices","_globalThis_document","isHorizontalScrollbarPresent","setIsHorizontalScrollbarPresent","containerRef","futurePrices","bodyElement","globalThis","isDocumentScrollableVertically","OrderLoadingStyles","OrderLoading","progressMessages","progressMessage","setProgressMessage","percentComplete","setPercentComplete","setInterval","intervalIncrement","Math","clearInterval","spinnerStyles","BusyLoader","MSuserErrorBanner","tenantId","Negative","Positive","getAriaLabel","isFeedbackNull","isFeedbackPositive","feedbackNoun","selectionCondition","feedbackText","sendFeedback","isPositive","requestId","showingResultsFor","didYouMean","previousSearchText","details","JSON","likeIconName","dislikeIconName","ThumbsUpDown","localizedQuestion","feedbackButtons","feedbackButtonsSelected","defaultCursor","pointerCursor","setFeedback","likeAria","dislikeAria","handleFeedbackClick","detectKeyboardClick","positiveIconName","negativeIconName","thumbsUpClass","thumbsDownClass","event","fn","_ref","asyncGeneratorStep","gen","resolve","reject","_next","_throw","arg","info","error","Promise","Checkout","LegacyCheckoutHydration","checkoutDOMRef","contextValue","isHydrated","store","renderCheckout","current","ensureAsyncDataSSR","dispatch","getState","params","entityId","self","err","undefined","PopupType","LongContent","prevState","payload","logger","longContent","ReviewQAContent","QAs","reviewQA","AppReviewItem","authorPersona","appId","reviewItemShown","review","isEmbed","publisher","iconUrl","isSignedIn","isMarkedAsHelpful","onToggleMarkAsHelpful","openSignInModal","fallbackReviewSourceName","dateLabelClassName","_review_review_content","rootDivRef","instrument","showReportAbuseDialog","getFullName","_review_customer_info","result","reviewerName","isThirdPartyReview","rating","max","isReviewEdited","getClassNames","fill","RatingPercentages","numberOfStars","percentagesOfTotal","classNames","fillWidth","chartClasses","getEmptyRatingSummary","renderRatingPercentagesByNumOfStars","numOfStars","timesRated","totalRatings","RatingSummary","ratingSummary","_totalRatingSummary_StarsDistribution","_totalRatingSummary_StarsDistribution1","_totalRatingSummary_StarsDistribution2","_totalRatingSummary_StarsDistribution3","_totalRatingSummary_StarsDistribution4","_totalRatingSummary_StarsDistribution_FiveStars","_totalRatingSummary_StarsDistribution_FourStars","_totalRatingSummary_StarsDistribution_ThreeStars","_totalRatingSummary_StarsDistribution_TwoStars","_totalRatingSummary_StarsDistribution_OneStars","totalRatingSummary","averageRating","isNaN","ratingSummaryAriaText","iconStyles","isUserCommentsExist","userCommentedReviewIds","getFilterBySourceCategories","externalReviewsExist","userReviewExists","internalReviewsExist","userCommentsExist","showMyCommentsFilter","filterBySourceCategories","getSourceFilterOptionByLocaliztionText","allSourceOptions","optionsByText","getSortByCategories","getSortByOptionByLocaliztionText","allSortByOptions","getRatingsFilterNumber","getRatingsFilterOptionByRating","handleDropDowns","sourceFilterOption","ratingFilterOption","sortByOption","updateReviewsState","originalReviewList","curReviewsList","sourceFilter","sortBy","ratingFilter","userReview","updatedRatingsFilter","isDropDownChanged","filteredArray","handleRatingsFilter","telemetryDetails","fliteredAndSortedArray","handleSortBy","updatedReviewsList","updateReviewsSortByState","sortByHelper","getSortByStatus","curSortBy","first","second","Date","handleSourceFilter","reviewsList","filterBySource","updatedCurrentEnd","ReviewsDropDowns","curSourceFilter","curRatingFilter","renderSourceFilterDropDown","sourceFilterCategories","activeFilterOption","renderRatingFilterDropDown","ratingsFilterCategories","curRatingFilterOption","renderSortByDropDown","sortByCategories","getDescriptionText","isOfferPurchased","NoReviewsToShow","openReviewModal","ExternalRatingSummary","image","showImage","productName","ExternalRatingSummaries","externalRatingSummaries","rawRatingSummaries","externalRatingSummary","externalSummariesInfo","state","ownProps","getTermsLink","terms","UsesEnterpriseContract","licenseTermsUrl","generateLink","link","UserTerms","detailInformation","privacyPolicyUrl","termsOfUse","privacyPolicy","termsLink","privacyLink","userTermsFallback","consentDisclaimerTokens","AppReviewCollection","ensureAppReviewsData","userInfo","prevProps","loadReviewIdsMarkedAsHelpful","offerId","loadUserProductReviewMetadata","legacyId","deepLinkMode","reviews","returnedReviews","Array","pagination","scrollToReview","start","end","reviewList","appData","reviewsData","markedAsHelpful","userReviewIdsMarkedAsHelpful","listEnd","appReviewItems","isHelpful","toggleMarkAsHelpful","_this_state_currentStart","_this_state_currentEnd","_this_state_reviewList_length","_event_target","idClicked","pageNumberClicked","startArrayIndex","parseInt","currentPageStart","currentPageEnd","reviewListLength","numberOfPages","pageNumberList","pageNumberStart","pageNumberEnd","isActive","internalSummaries","textButton","_this_props_appData","updateStateByFilters","hasInternalReviews","hasExternalReviews","reviewId","reviewCompRef","offsetPosition","elementPosition","stickyCardHeight","mainMenuHeight","_this_props_location_query","_this_props_location","ctaType","curPageNumber","curStart","currentEnd","updatedReviewList","updatedSourceFilter","updatedSortBy","_state_config_query","forceUpdate","accessKey","callback","MultilineColumn","columnKey","columnValue","shouldUseSetInnerHTML","lines","SortedTableColumn","tableProps","spanColumns","setInnerHTMLColumns","multiLineColumns","columnClassName","shouldAddSpanTag","shouldShowMultiLine","SortedTable","_multiLineRowsConfiguration_multilineColumns","inputArray","propertyName","order","multiLineRowsConfiguration","tbody","defaultSortingDisabled","tableData","a","b","titleA","titleB","arg0","arg1","rowRenderingFunction","hasMultilineConfig","row","columns","shouldIgnore","_this_props_ignore","ignoreKey","columnsClasses","multilineConfig","rowData","_rowData_multilineColumns_","multilineColumns","emptyColumnClassName","lastRowClassName","multilineColumnClass","numberOfMultilineRows","rows","rowIndex","isMultilineColumn","x","SortOrderStyles","SortedTH","nextProps","SimplePriceCell","price","futurePrice","SimplePlanPricing","sortColumnName","skus","unit","sku","termPrice","renderBadges","isOneTimePaymentOffer","showPriceColumn","showYearlyPrice","showMonthlyPrice","formattedSkus","_sku_startingPrice","futureSku","futurePriceSku","monthly","yearly","showGeneralPrice","pricing","hasBadges","MicrosoftManagedIndicatorWrapper","_app_licenseManagement","uiRole","isAvailableInRegion","renderIndicator","userIsAdmin","getLocaleLanguage","getLocale","countryCode","localeLanguage","countryCodeRegion","getCountryCodeRegion","numberToLocaleString","number","localeString","LinkedinProductGroupBarFunction","linkedInProductGroup","location","LinkedinProductGroupBar","LinkedinUpcomingEvent","onExternalLinkClick","startTime","endTime","name","logoUrl","eventType","attendeeCount","detailsUrl","startTimeStr","timeToLocalString","timeUTCSeconds","date","endTimeStr","timeToLocalLocaleString","LinkedinFeaturedCustomer","customer","businessCategory","followersCount","subTextStyles","FeatureFeedbackSubmittedModal","hidden","onDismiss","buttonStyles","scoreValues","scoreValuesMiniLine1","scoreValuesMiniLine2","FeatureFeedbackScoreSection","viewContent","score","onScoreChange","_getWindow","miniMode","ratingValue","FeatureFeedbackTitleSection","onDialogDismissed","FeatureFeedbackChecksSection","checks","setCheckChange","_viewContent_checks","featureCheckDef","element","checked","FeatureFeedbackInputSection","userComment","setUserComment","ev","newValue","FeatureFeedbackEmailSection","email","emailConsent","setEmailConsent","FeatureFeedbackFooterSection","onSubmitClick","submitDisabled","FeatureFeedback","featureName","onFeedbackSubmitted","setScore","setChecks","featureCheck","getEmail","userFeedbackContent","POPUP_DISPLAYED","popups","Map","getTotalDisplayCount","popupType","storageDisplayCount","didPopupExceededMaxCount","displayLogic","FeaturedCustomersList","offerName","_linkedInProductGroup_featuredCustomers","customerElements","UpcomingEventsList","_linkedInProductGroup_upcomingEvents","FeedbackSection","onFeedbackClick","LinkedinProductGroupFunction","userEmail","feedbackScoreRequired","parentTabQuery","feedbackMode","setFeedbackMode","teachingBubbleMode","setTeachingBubbleMode","feedbackSentMode","setFeedbackSentMode","featureFeedbackContent","logTelemetry","action","actionModifier","shouldDisplayPopup","popupDisplayed","updatedTotalDisplayCount","primaryButtonProps","secondaryButtonProps","LinkedinProductGroup","ImageStyles","badgeProps","freeTrial","Badge","handleBadgeClick","contentName","badge","locTitle","pageAction","useTelemetry","BI_AREA","AppDetails","filterItem","filterTileTypes","filteritems","_DataMap_products__match","_DataMap_products_","currentDatamapBlock","pathParams","newPath","property","mask","isPrivate","arm","loadLinkedInProductGroup","_this_props_userInfo","_this_props_app","curWindow","seeAllUrl","noResults","_getWindow_location","appInfo","currentView","doesTenantHasLicenseForApp","nationalCloud","isEmbedded","appName","ctaTypes","linkedAddIns","linkedSaaS","list","res","existAward","v","j","awardKeys","award","hideBreadcrumbUrl","href","locKey","linksList","iconUri","iconBackgroundColor","setCheckoutSourcePDP","linkTitle","indicatorText","indicatorClasses","iconName","iconClasses","indicator","awards","_app_startingPrice","_app_pricingInformation","length","dataBiId","productId","isSaaSRendering","headerString","addIn","information","headerContent","itemPropName","microTaggingItemPropName","locString","tabTitle","productString","productData","startingPrice","isDetailed","pricingElement","isOneTimePayment","pricingLinkClassName","ButtonLink","primaryProduct","products","shouldRenderAADWorkAccountMetaData","filterElements","_this_props_app_pricingInformation_skus","_this_props_app_pricingInformation","suggestedItems","offerType","shortDescription","tags","autoRunLaunchEvents","userSignedIn","tabsChilds","pricingInformation","futurePricesInformation","licenseManagement","oneTimePaymentOffer","usefulInformaionCells","supportCells","moreLinksCells","powerBIVisualCells","metadata","pricingObject","AADWorkAccount","primaryProductFilter","categories","industries","worksWith","supportitems","cells","documents","documentsCells","doc","tabsProps","_this_stickyCardRef_current","_this_stickyCardRef","isPageScrolled","tabChild","offer","filterType","urlKey","longTitle","_state_users_profile","_state_apps_relatedAppsItems_items","_state_apps_relatedAppsItems","_state_apps_relatedAppsItems_items1","_state_apps_relatedAppsItems1","_state_apps_relatedAppsItems_items2","_state_apps_relatedAppsItems2","_state_apps_relatedAppsItems_items_saasLinkingItems","_state_apps_relatedAppsItems_items_linkedAddIns","stateBreadcrumbUrl","correlationId","currentGalleryViewIsCurated","featureFlags","openInNewWindowButton","appList","hashMap","query","appIndex","targetApp","managedLicenses","defaultTab","breadcrumbUrl","Capabilities","AutoRuns","Overview","images","videos","mediaImages","video","mediaRender","isVideo","capabilitiesPane","capability","subCapabilities","subCapabilitiesCount","autorunsPane","autorun","autorunInfo","jsllMediaType","document","selected","_this_props_autoRunLaunchEvents","_this_props_autoRunLaunchEvents1","_crossListings_","crossListings","localizationTexts","ribbonUrl","ribbonSeeAllText","ribbonTitleParam","localizedTitleKey","appDetailContentMaxWidthClasses","tiles","tileType","ctaButtonsClassNames","ServiceDetails","regions","regionLists","columnSize","listValue","region","moreCountries","countriesLists","moreCountryVal","foundCountry","supportedCountry","countryParams","colIndex","closeMoreCountriesModal","moreCountry","serviceDetailHref","countryAndRegion","countryName","regionColumns","columnRegions","regionsAddedToView","regionList","countries","countryCodeLowerCase","country","errorMessage","moreCountriesLists","moreCountriesColumns","columnMoreCountries","countryLists","extraMoreCountries","itemRender","filterTileType","filterValue","filterValueAllowed","routeParams","serviceInfo","isNationalCloud","serviceId","_document_getElementsByTagName","label","_service_extraData","_this_props_service_extraData","_this_props_service","service","isProfessionalService","pricingValue","isLoadingUserData","button","detailUrl","competencyType","_this_props_service_industriesDetails","contextCountryAndRegion","allCountryAndRegions","goldCompetencies","goldCompetency","silverCompetencies","silverCompetency","serviceTypes","serviceType","_service_industriesDetails","industryDetail","mapStateToProps","services","serviceIndex","targetService","offerIsProfessionalService","mapDispatchToProps","prevTileDataRequest","KNOWN_HYDRATION_INTERRUPTION_ERRORS","predefinedPLT","currentSinceRequestStart","_getWindow_performance","_getWindow_performance1","_getWindow1","navigationStart","requestStart","whiteListedAssets","TileDataLoadingAction","createTileDataLoadingAction","TileDataReceivedAction","createTileDataReceivedAction","SetQueryAction","createSetQueryAction","SetRequestFilteredQueryAction","createSetRequestFilteredQueryAction","SetResponseFilteredQueryAction","createSetResponseFilteredQueryAction","SetRequestFilteredEntityTypeAction","createSetRequestFilteredEntityTypeAction","SetRequestFilteredLoadingAction","createSetRequestFilteredLoadingAction","SetRequestFilteredLoadedAction","createSetRequestFilteredLoadedAction","loadTileData","_getProductByUrlKey","_prevTileDataRequest_request","currentEntityType","currentFilteredQuery","prevEntityType","prevFilteredQuery","urlQuery","requestParams","tileData","generateTileDataLog","duration","_tileData_apps_dataList_","styles","withSuspense","Component","appDetails","dynamicCampaign","handleSignUp","_handleSignUp","redirectUrl","encodeURIComponent","getRedirectStartPage","to","redirectStartPage","URL","authClient","SignInModal","modalType","inputEmail","Error","reviewAppId","param","isMultiParam","queryParam","pageURL","_this","signInRedirectUrl","signInModalType","decodeURIComponent","signUpUrl","form","emailField","disableDismissModal","subTitle","disclaimer","accountType","modalContent","ariaLabel","MediaModal","exclude","keysLength","videoUrl","parsedUrl","hostName","pathName","youtubeConfigs","sourceUrl","pathValues","vimeoConfigs","matches","vimeoId","supplier","videoRef","parsedVideo","VideoModal","videoDialogClasses","DriveModal","FieldHubModal","reportName","defaultFieldObj","fieldObj","handOffUrl","reportData","groupId","reportId","embedUrl","token","sectionId","reportContainer","connect","ErrorModal","fallback","translated","AnimationModal","DisclaimerModal","NpsModal","ratingNumber","npsResult","evt","paneContent","arr","emailInputClasses","InstructionsModalStep","step","imageSrc","InstructionsModalBody","stepsMap","cancelIcon","InstructionsModal","isFromDownload","dismissModal","isModalOpen","hideModal","isChecked","setIsChecked","closeModal","_getNpsModule","dialogContentStyles","DownloadSampleModal","buildStore","combinedReducers","initialState","middleware","preserveData","oldEntity","newEntity","dataList","data","isServiceDataState","commonEntityDataReducer","entityType","_state_dataMap","_action_payload_entityDetails_detailInformation","_action_payload_entityDetails","dataMap","results","entity","favouriteItems","favouriteItem","currentEntityDetail","len","indexInOldState","isSelectedCountryValidDataMap","_dataMap_serviceGlobalFilter1_country","_dataMap_serviceGlobalFilter1","countryKey","AzureEnvironmentSettings","prevMarkAsHelpful","newData","newDataList","newCuratedDataLoadedState","buildFullSearchData","ids","sourceData","identifier","tempArray","cutoff","findItem","appIdsToIgnore","parsePBIApp","iconURL","largeIcon","mainIndex","img","industryNumbers","industry","industryMap","friendlyURL","nameStart","productMask","parsePBIApps","appid","pbiCategory","convertPartnerDocument","d","convertPartnerImage","convertPartnerVideo","attemptMap","f","parsePartnerApp","builtFor","productInfo","parsePartnerApps","embedHost","_object_without_properties","excluded","_object_without_properties_loose","sourceKeys","sourceSymbolKeys","_to_property_key","_to_primitive","input","hint","_type_of","prim","Symbol","TypeError","String","Number","newCartActions","isSelectedCountryValid","countriesList","appSearchResults","servicesSearchResults","cloudsIndustrySearchResults","appsCount","servicesCount","cloudsIndustryCount","videoPayload","drivePayload","iframePayload","reviewPayload","instructionsPayload","_action_payload_pricingPayload","_action_payload","newCommonState","_app_entityId","_action_payload_entityId","updatedLinkedAddIns","updatedSaasLinkingItems","updatedSuggestedItems","updatedDataList","pricingData","aTitle","bTitle","currentData","appReviewsData","prevReviewCommentsState","newReviewCommentsState","c","_newState_appReviewsData_reviewComments","_action_payload_reviewId","removedCommentData","isNewlyAddedComment","actionResult","updatedComment","commentId","reviewIdx","r","prevCommentIds","prevCommentsById","totalComments","reviewCommentsState","reviewIds","prevReviewIds","isLoading","prevMarkedAsHelpfulState","prevLoadingIds","_prevMarkedAsHelpfulState_userReviewIdsLoading","removedListing","newUserReviewIdsLoading","count","recommendedSizes","commentReviewIds","offers","userFavourites","userFavourite","favouriteApp","indexToUpdate","cartItem","newCartAction","renderErrorModal","modalBackgroundClasses","modalClasses","finishProcessingAppData","apps","logPageLoadFinished","appDataRequestStart","legacyProductsMap","timeAtTelemetryMethodCall","currentWindow","embedHostUtils","timing","networkLatency","currentTime","pageLoadTime","loadEventEnd","navigationToPageLoad","dataLatency","perfTimings","timePassedSinceNavigationStart","perfPayload","handleError","showErrorModal","hostCorrelationId","UserProfileModalData","user","isEmbedHost","licenseType","userProfileInCookie","newLicenses","localLicenses","licenseInState","licenseNewObj","originalUser","newCurrentLicense","isEmbeddedHost","userProfileModalClassNames","userProfileFieldsContainer","expandedUserProfileTokens","dropDownStyles","UserProfileModal","renderProfile","profileCompleted","userLeadgenProfile","accountInfoUpdate","firstName","lastName","eventKeyCode","shouldHideAccountInfo","currentUserLeadgenProfile","currenttUserSubmittedForm","updateUserProfile","callBackHandler","nextUserLeadgenProfile","nextUserSubmittedForm","currentLicense","nextState","currentCompactUserProfile","currentShowProfile","nextShowProfile","nextCompactUserProfile","defaultCountry","defaultValue","selectedCountryKey","field","placeholder","isRequired","firstCell","secondCell","firstCellId","firstCellDefaultValue","firstCellTitle","firstCellPlaceholder","secondCellId","secondCellDefaultValue","secondCellTitle","secondCellPlaceholder","shouldRenderHeader","isContactForm","getExpandHeaderText","company","phone","getUserProfile","showProfile","compactUserProfile","prevUserLeadgenProfile","profile","newProfile","license","newLicense","successConsentModalClassNames","iconButtonStyles","modalStyles","titleAndContentTokens","descriptionAndIconTokens","descriptionTokens","contentAndBottomTokens","SuccessConsentModal","shouldSkipModal","infoIconStyles","failureConsentModalClassNames","FailureConsentModal","showContactMeError","modalContentItemsTokens","ConsentModalContent","showAnimation","handoffTitle","isTransactApp","withAnimationHeaderText","headerText","URL_PATTERN","containsURLOrEmail","consentModalClassNames","loginUserInfoTokens","desclaimerTokens","animationStackTokens","offerTypesWithoutLeads","ConsentModal","trailId","entityInfo","consentProps","userProfile","modal","isOpenedFromPDP","shouldCTATypeBeSkip","fetchAppDetails","currentUserProfile","currentAppInfo","currentIsLoadingUserProfile","nextUserProfile","nextAppInfo","nextUserInfo","nextIsLoadingUserProfile","nextIsContactForm","nextServiceInfo","_modal_options","updateLicense","localLicenseStore","productShouldntGenerateLead","flightCodes","isService","uniqueProductId","sendLeadInfo","notes","shouldStopFlow","shouldGenerateLead","getUserAuthStatus","openDriveModal","signOutUser","isEmbeddedApp","url","postEmbedAcquisitionMessage","ctaClicked","productTitle","setTimeout","errorString","forceUserProfileCompacted","accountInfo","newAccountInfo","openInstructionsModal","updatePurchaseStatus","shouldGenerateLeadGen","contentId","areaName","hasCheckbox","hasUserProfile","profileFilledOut","isProfileCompleted","showUserSignInError","isNotesInvalid","appPrivacyPolicyUrl","ctaButton","isLoadingUserProfile","isCTADisabled","_this_props_featureFlags","isOpenInNewWindow","isPBIVisualPriceHidden","formSubmitted","displayName","iconSrc","showSuccessDialog","animationImg","appImg","appImgContainer","leadGen","userInfoInCache","accountInfoFromCache","driveUrl","renderOfferInfoSection","appIcon","appTitle","appPublisher","renderRatingSection","IsvReplyExists","curRating","handleRatingChange","renderLinksSection","renderWriteDialogButtonsSection","handleSubmitReview","renderEditDialogButtonsSection","handleDeleteReview","ReviewActionModal","userDisplayName","curReviewTitle","curReviewContent","isAnonymous","handleReviewTitleChange","handleReviewContentChange","handleSendEmailCheckbox","handleDisplayUserNameCheckbox","dialogProps","isEditMode","SubmitReviewResponseModal","content","dialogIcon","shouldRenderLink","RatingModal","_this_props_payload_app_detailInformation","_userReview_customer_info","_userReview_customer_info_is_anonymous","reviewData","isEdit","submitOperation$","_err_response","_err_response1","_err_response_statusCode","_err_response2","_err_response3","errorStatusCode","titleText","contentText","reviewFormData","ReportAbuseModal","abuseCategory","comment","selectedValue","category","storefrontName","postItemReport","submitButton","reportModalClassName","reviewTitle","reviewSource","report","ReviewCommentModalStyles","ReviewCommentModal","onDeleteComment","onEditComment","initialModalMode","modalMode","setModalMode","dismissModalWithTelemetry","innerDialogProps","_payload_actionPayload","_payload_actionPayload1","_payload_actionPayload2","_payload_actionPayload3","_payload_actionPayload4","_payload_actionPayload5","commentContent","ReviewCommentModalConfirmUpdateDialog","ReviewCommentModalConfirmDeleteDialog","ReviewCommentModalUpdateErrorDialog","ReviewCommentModalDeleteErrorDialog","ReviewCommentModalContentViolationDialog","ReviewCommentModalCreateErrorDialog","onUpdate","modalProps","dialogContentProps","maxWidth","onDelete","ReviewMarkAsHelpfulModalStyles","ReviewMarkAsHelpfulModalErrorDialog","ReviewMarkAsHelpfulModal","Modal","currWindow","_this_props_allFavouriteApps_find","_this_props_options","_this_props_options1","_this_props_options2","_this_props_options3","payloadInfo","handleConsentModalCall","isTransactable","signinType","signedIn","loading","shouldShowAnimationModal","shouldShowSignInModal","signinRedirect","serviceTitle","handleRatingModal","getId","_state_users_privateOffers","cookie","isAlternateEmailFromCookie","recommendedServices","entityDetails","hasReview","Footer","toggleContextPanel","hiddenClass","telemetryData","forceAzureHeaderNavStatic","htmlTagName","azureHeaderStaticClassValue","htmlTagDomElement","htmlTagClassValue","htmlTagClassValueList","dialogStyles","NpsPreviewModal","onSubmit","externalUrl","NpsSubmittedModal","stackTokens","dialogTextFieldStyles","checkboxLabelDefaultText","NpsTermsAndPrivacy","NpsDescription","onChange","NpsRatings","selectedRating","NpsSurveyModal","contactCheckboxChecked","toggleContactCheckbox","setSelectedRating","description","setDescription","showPreviewModal","onDismissPreview","onDismissSurvey","onSubmitted","hidePreviewDialog","toggleHidePreviewDialog","hideSurveyDialog","toggleHideSurveyDialog","hideSubmittedDialog","toggleHideSubmittedDialog","answer","Nps","showPreviewModalRef","userTelemetryPayload","userFeedbackPayload","shouldTrack","consent","siteConsent","CookieBannerComponent","cookiesConsent","siteEnvironment","resetCookieManagementModal","updateSiteConsent","updateIsConsentRequired","isManagementModalOpen","allowTracking","setAllowTracking","isComScorePresent","setIsComScorePresent","isMsClarityEnabled","environment","handleNewConsent","newConsent","manageCookies","getConsent","_getWindow_WcpConsent","_siteConsent","wcpConsent","appConfig","wcpConsentCallBack","wcpConsentListener","loadComScoreScript","scriptElement","Loader","EMPTY_ACCESS_TOKEN","isMSAUser","claims","getUserSegment","createGuestUser","createAuthenticatedUser","accessTokens","account","ssoStartTime","_name_split","_name_split1","_name_split2","_name_split3","_name_split4","_ref1","_ref2","_ref3","_ref4","username","homeAccountId","puid","tid","preferredUsername","oid","spza","userClaims","givenName","familyName","hasActiveUser","setHasActiveUser","accounts","instance","inProgress","activeAccount","setActiveUser","stringifiedError","idTokenClaims","RemoteHeader","EmbedHeader","AppView","search","subscetQueryParamChanged","sortingQueryParam","sortingQueryParamChanged","shouldPerformSearchAll","showError","console","_event_","userStore","userIdInfo","userTrailIdInfo","parameterName","modalPartnerId","crossListingAppcontext","textid","regEx","RegExp","currentParam","skuId","hasLicense","payloadDetails","handleCTACallback","_this_headerRef_current","_this_headerRef","closeAzureHeaderNavDropdown","azureHeaderNavDropdownDOMElement","enableNewNps","npsLogicVerified","isMobile","favoritesCount","isInErrorDialog","initLoading","regionDisabled","onMarketChange","onLocaleChange","showModal","locationQuery","regionCode","pcaInstanceInitialized","isConverged","isUserSignedIn","renderNewNps","userFavorites","viewApps","viewServices","route","newQuery","keepAllParams","oldParams","keepCampaignParams","searchSortingOption","searchvalue","verified","pathSegments","Home","GalleryPage","AuthRedirect","SitemapContainer","PartnerContainer","PartnersHostContainer","MyReviews","DynamicCampaign","UserFavouriteDetail","UserPrivateOffersGallery","getRoutes","navigate","setCurrentView","view","featureFlag","URLSearchParams","routes","useClientRoutes","localeRoutes","otherRoutes","ssrEntry","_matchingPath_pattern","_route_path","path","matchingPath","shouldWrapWithSuspense","useLocationChange","useHydration","map","handleLocationChange","_matches__route","_matches_","matchedView","RootHandler","landingView","telemetryPageLoadTime","performanceNow","responseStart","responseEnd","scriptStart","hydrationStart","assets","getAssetsLoadTime","perfEntries","initiatorType","src","slowestAssetDuration","slowestAssetURL","getSlowestAssetDuration","whiteListedAsset","spzaId","hostType","initializeListener","receiveMessage","origin","hostData","msgType","validOrigin","_getProductByUrlKey1","_getProductByUrlKey2","accessToken","privateApps","getAppsEndpoint","workEmail","backendUrlOverride","detailsObject","httpProtocol","pbiApi","logInitListenerFinished","errorInfo","connection","userAgent","navigator","ScrollToTopButton","yOffsetToAppear","_getDocument","isTokenExpiring","minTimeToExpirationSec","decodedToken","timeToExpirationSec","logErrorTelemetry","message","refreshedAccessToken","storedToken","i18nLocales","DEBUG_STATE","language","onError","msg","file","line","handleInterruptedHydration","errorMsg","isKnownIssue","issue","_errorMsg_includes","_getWindow_HYDRATE","appendHeaderTags","awaMetaTags","awaMetaTag","tokenResponse","fallbackRoute","dehydratedState","didInitRouter","hydrateAppSource","_hydrateAppSource","_getWindow_disablePriorityWorkaround","initApp","_store_getState_users","localeFromUrl","initBrowserConfig","embedded","hostname","stylesheet","root","handleRecoverableHydrationError","env","COMSCORE_URL","getComscorePresentedTime","_getWindow_COMSCORE_SiteRecruit_Utils_UserPersistence","_getWindow_COMSCORE_SiteRecruit_Utils","_getWindow_COMSCORE_SiteRecruit","_getWindow_COMSCORE","comscoreCookie","userId","lastPresentedTimeInMs","getGalleryPageTitle","getDetailsPageTitle","getFilterItemRoute","routeArgs","isFilterItemMatch","getFeedbackSubmittedTime","lastSubmittedTime","npsModule","getNpsModule","getEmptyNpsPersistentMetadata","getEmptyNpsMetadata","getNpsFromLocalStorage","npsMetadataTimesString","npsMetadata","comscoreAlreadySubmitted","_lastPresentedTime_getTime","lastPresentedTime","comscoreMaxSubmittedDays","feedbackAlreadySubmitted","_lastSubmittedTime_getTime","feedbackMaxSubmittedDays","otherFeedbacksAlreadySubmitted","storeNpsModule","lastCtaTime","lastDismissedTime","homePageMatch","currentPathname","_lastDismissedTime_getTime","npsMaxDeclinedDays","npsMaxSubmittedDays","_lastCtaTime_getTime","totalActionsCount","_this_onVerified","trigger","checkForOtherFeedbacks","onVerified","initializeNpsModule","onVerify","npsPersistentMetadata","constants","actionTypes","adminPortal","powerBIHost","dynamics365financials","dynamics365","dynamicsCRMLegacy","shouldShowCloseButton","shouldHideFilterPane","shouldHideIndustriesAndProducts","shouldFlatProducts","hasDynamicData","hasPrivateApps","shouldShowCuratedData","shouldShowPowerAppsNoContent","shouldShowLegacyStyle","getPowerAppsTitle","isFullScreenMode","isFullScreen","shouldShowFilter","isAppSource","page","collection","clientLogger","serverLogger","systemLogger","ensureClientLoggerInitialization","_1dsLogger","appDirectory","resolveApp","relativePath","clientDirectory","clientBuild","serverBuild","os","publicStoragePath","hash","paths","apiVersions","RequestHeaders","authorization","req","queryParamKey","queryParamValue","fs","sha256","serverInstanceCorrelationId","MethodTableMap","RequestsLogMethodToTaskName","Logger","getCLRMethod","methodName","LoggerDll","clrLogHttpInboundRequestStart","clrLogHttpInboundRequestEndWithSuccess","clrLogHttpInboundRequestEndWithClientFailure","clrLogHttpInboundRequestEndWithServerFailure","clrLogHttpOutboundRequestStart","clrLogHttpOutboundRequestEndWithSuccess","clrLogHttpOutboundRequestEndWithServerFailure","clrLogHttpOutboundRequestEndWithClientFailure","clrLogAcquisitionInfo","clrLogDbResourceOverUsage","clrLogUserFeedback","logStreamData","correlationIdToWatch","stopWatchingLog","writeToLogStream","operation","now","utc","Exception","operationName","exception","otherInfo","exceptionString","LogFeedback","_LogFeedback","detailsAsJson","callbackFunction","LogHttpInboundRequestStart","httpRequestContext","LogHttpInboundRequestEndWithSuccess","httpRequest","LogHttpInboundRequestEndWithClientFailure","LogHttpInboundRequestEndWithServerFailure","cloneRequest","headers","httpMethod","targetUri","apiVersion","parsedHeaders","LogHttpOutboundRequestEndWithSuccess","striginfyRequest","stringifyError","LogHttpOutboundRequestEndWithServerFailure","LogHttpOutboundRequestEndWithClientFailure","LogTelemetryEvents","telemetrybatch","_telemetrybatch_TelemetryEvents","telemetry","telemetryHelper","clientIP","parsedUserAgent","parseEventDetails","logServerTelemetryEvent","getErrorDetailsWithHash","stringErrorMessage","errorStack","request","requestContext","httpStatus","requestCharge","latency","scrubAcquisitionPayload","_payloadCopy_notes_length","_payloadCopy_notes","payloadCopy","piiField","scrubPiiField","clientIp","logOutRequest","Debug","additionalData","debugMessage","Information","trace","outRequestStartsTelemetryHelper","clientIpAddress","outRequestTelemetryHelper","telemetryEvent","outRequestEndsTelemetryHelper","ServerLogger","winstonLogger","_param","operationModifier","loggerMetadata","AzureEnvironment","settings","PartnerSearchResultType","AppTag","MediaType","CustomerType","PricingStates","UserSegment","CommunityItemType","CheckoutSource","CatalogOfferType","PricingAudience","IAvailabilityActions","TermsStrings","Badges","OdataRawObjectAppType","ratingValues","actionCreator","type","isType","RehydrateClientStateAction","createRehydrateClientStateAction","SearchboxInputChangedAction","createSearchboxInputChangedAction","SuggestedChangeAction","SearchSortingOptionChangedAction","createSearchSortingOptionChangedAction","LiveSearchboxFilterAction","ModalAction","createModalAction","VideoModalAction","createVideoModalAction","MediaModalAction","createMediaModalAction","DriveModalAction","createDriveModalAction","IFieldHubModalAction","IDisclaimerModalAction","InstructionsModalAction","createInstructionsModalAction","RatingAction","createRatingAction","BreadcrumbAction","createBreadcrumbAction","SetCurrentViewAction","createSetCurrentViewAction","UpdateCurrentGalleryViewIsCuratedAction","createUpdateCurrentGalleryViewIsCurated","SetLandingViewAction","EnableNewNpsAction","createEnableNewNpsAction","SetInitializedPCAInstanceAction","createSetInitializedPCAInstanceAction","SetIsNpsLogicVerifiedAction","createSetIsNpsLogicVerifiedAction","ShowingResultsForReceviedAction","createShowingResultsForReceivedAction","FilteredSearchResultsReceivedAction","PartnerSearchResultsReceivedAction","EntityDataReceivedAction","UserProfileLoadingAction","createUserProfileLoadingAction","UserProfileAction","createUserProfileAction","UserTenantsDetailsAction","createUserTenantsDetailsAction","UserTenantsDetailsLoadingAction","createUserTenantsDetailsLoadingAction","UpdateUserProfileAction","createUpdateUserProfileAction","SetAccountAction","createSetAccountAction","SetAccountIsLoadingAction","createSetAccountIsLoadingAction","SetIsMaccTenantAction","UpdateUserProfileLicenseAction","createUpdateUserProfileLicenseAction","ClearUserPropertiesAction","createClearUserPropertiesAction","PowerBIDataReceivedAction","createPowerBIDataReceivedAction","PartnerAppDataReceivedAction","createPartnerAppDataReceivedAction","SetEntityIdLoadingAction","createSetEntityIdLoadingAction","SetEntityIdFailedAction","createSetEntityIdFailedAction","EntityDetailsReceivedAction","createEntityDetailsReceivedAction","EntityFullDataReceivedAction","createEntityFullDataReceivedAction","EntityReviewCommentsReceivedAction","createEntityReviewCommentsReceivedAction","EntityReviewCommentsLoadingAction","createEntityReviewCommentsLoadingAction","EntityReviewCommentsCleanupAction","createEntityReviewCommentsCleanupAction","EntityReviewCommentCreateResult","createEntityReviewCommentCreateResult","EntityReviewCommentDeleteResult","createEntityReviewCommentDeleteResult","EntityReviewCommentUpdateResult","createEntityReviewCommentUpdateResult","EntityReviewCommentModalAction","createEntityReviewCommentModalAction","EntityReviewCommentsUpdateTotalCommentCountAction","createEntityReviewCommentsUpdateTotalCommentCountAction","EntityReviewCommentsUnloadPagesAction","createEntityReviewCommentsUnloadPagesAction","EntityReviewCommentsInitializeStateAction","createEntityReviewCommentsInitializeStateAction","EntityMarkedAsHelpfulReviewUpdateListAction","createEntityMarkedAsHelpfulReviewUpdateListAction","EntityUserCommentedReviewIdsUpdateListAction","createEntityUserCommentedReviewIdsUpdateListAction","EntityLinkedInProductGroupUpdateAction","createEntityLinkedInProductGroupUpdateAction","EntityReviewSetIsHelpfulLoadingAction","createEntityReviewSetIsHelpfulLoadingAction","EntityReviewSetIsHelpfulAction","createEntityReviewSetIsHelpfulAction","EntityReviewMarkAsHelpfulModalAction","createEntityReviewMarkAsHelpfulModalAction","EntityReviewSetMarkAsHelpfulCount","createEntityReviewSetMarkAsHelpfulCount","RelatedAppsItemsLoadingAction","createRelatedAppsItemsLoadingAction","GetAppReviewsAction","createGetAppReviewsAction","SetStorefrontNameAction","createSetStorefrontNameAction","RelatedAppsItemsReceivedAction","createRelatedAppsItemsReceivedAction","RelatedAppsItemsPricingDataReceivedAction","createRelatedAppsItemsPricingDataReceivedAction","RecommendedAppsItemsPricingDataReceivedAction","createRecommendedAppsItemsPricingDataReceivedAction","RecommendedWhatsNewAppsReceivedAction","RecommendedTrendingAppsReceivedAction","RecommendedWhatsNewServiceReceivedAction","RecommendedTrendingServiceReceivedAction","RecommendedMicrosoft365WhatsNewAppsReceivedAction","RecommendedMicrosoft365TrendingAppsReceivedAction","BillingRegionReadFromCookieAction","createBillingRegionReadFromCookieAction","AppDetailPricingReceivedAction","createAppDetailPricingReceivedAction","SearchQueryChangedAction","createSearchQueryChangedAction","SearchDataReceivedAction","createSearchDataReceivedAction","SearchSuggestionsRequestId","setSuggestionsRequestId","CuratedDataReceivedAction","DataMapReceivedAction","UserSignInAction","UserSignInStatusAction","UserSignInFetchStatusAction","UserSignInStatusDataAction","UserAccesstokensAction","UserLoginDetailsAction","createUserSignInFetchStatusAction","createUserLoginDetailsAction","ABTestingEnableAction","EmbedUserSignInAction","createEmbedUserSignInAction","UserReviewUpdateAction","createUserReviewUpdatedAction","EmbeddedAppSettingAction","SetInitLoadingAction","createSetInitLoadingAction","NationalCloudSettingAction","EmbeddedHostAction","LocStringsReceivedAction","I18nextReceivedAction","FlightCodesReceivedAction","IncludeTestProductsReceivedAction","IsConverged","CorrelationIdReceivedAction","RequestIdReceivedAction","TelemetryLoggedAction","createAppViewTelemetryLoggedAction","AppsPricingDataReceivedAction","createAppsPricingDataReceivedAction","AppPricingDataReceivedAction","createAppPricingDataReceivedAction","AppPricingDataRequestedAction","createAppPricingDataRequestedAction","FeatureFlagsReceivedAction","createFeatureFlagsReceivedAction","AddSubscriptionsInTenant","UpdateUserRoleDefinitions","createUpdateUserRoleDefinitions","UserSegmentInitializeAction","UserSignOutAction","createUserSignOutAction","UserFieldHubTypeAction","CountriesDataReceivedAction","SetEntityDataRegionFiltersAction","GlobalSettingsReceivedAction","IsMobileReceivedAction","DynamicCampaignReceivedAction","createDynamicCampaignReceivedAction","CheckoutConfigAction","createSetTenantTypeAction","UserOrdersAction","SetUserOrdersLoadingAction","IsManageModalOpenAction","createIsManageModalOpenAction","SetWCPConsentAction","createSetWCPConsentAction","SetIsConsentRequired","createSetIsConsentRequiredAction","LoadFavouriteDataStateAction","UserPrivateOffersAction","createUserPrivateOffersAction","ToggleShowContextPanel","createToggleShowContextPanel","SetUserPrivateOffersLoadingAction","createSetUserPrivateOffersLoadingAction","SetAccessTokenAction","createSetAccessTokenAction","ChangeLocaleLanguage","createChangeLocaleLanguage","SetIsDisabledBilling","createSetIsDisabledBilling","LoadingRecommenededSizes","SetRecommenededSizes","SetReceiptAction","createSetReceiptAction","SetBillingAddressAction","createSetBillingAddressAction","SetCheckoutId","createSetCheckoutId","SetActiveStep","createSetActiveStep","SetProduct","createProduct","SetBillingTerm","createSetBillingTerm","SetTermId","createSetTermId","SetSeatNumber","createSetSeatNumber","SetRecurringBilling","createSetRecurringBilling","SetItemInCartAction","createSetItemInCartAction","SetCheckoutSource","createSetCheckoutSource","UpdateCustomerAction","createUpdateCustomerAction","SetCustomersAction","createSetCustomersAction","SetActiveCustomerAction","createSetActiveCustomerAction","SetPublisherTokenResponse","createSetPublisherTokenResponse","ClearCheckoutState","createClearCheckoutState","ClearErrorAction","createClearErrorAction","ErrorAction","createErrorAction","FetchingProductAction","createFetchingProductAction","SetFilterLocationAction","createSetFilterLocationAction","SetContactDetailsAction","createSetContactDetailsAction","_async_to_generator","ensurePrivateOffer","billingRegion","_ensurePrivateOffer","privateOffers","getUserPrivateOffers","privateOffersResponse","BillingAccountType","BillingAgreementType","getLeadSourceAndSubSource","leadSubSource","leadSource","hashCode","hashBytes","_sendLead","endpoint","httpOptions","post","_getCustomers","commonHttpOptions","ReviewCommentsQueryStrings","_createReviewComment","reviewsAPI","reviewsAPIVersion","reviewComment","_error_response","_getAppReviewComments","itemsPerPage","comments","paginationInfo","_updateReviewComment","_deleteReviewComment","_setReviewMarkedAsHelpful","_getUserReviewsMarkedAsHelpful","_getReviewsMetadata","_getLinkedInProductgroupInfo","legacyOfferId","linkedinAPI","linkedinAPIVersion","ReportReviewQueryStrings","_createReportReview","itemReport","communityAPI","communityAPIVersion","AppReviewsQueryStrings","_getAppReviews","UserReviewQueryStrings","_get","_update","sendEmailConsent","_remove","Product","tempPlanTerms","unsortedTerms","accumulatedArray","curr","freeTrialTermUnit","freeTrialTermId","freeTrialTerm","uniqueTerms","termsOfAllAvailabilitiesByPlan","avail","bigId","plans","directAvailabilities","_this_termsByPlanId_","targetPlanId","termPrices","_a_billingPlan","_b_billingPlan","billingTermDuration","_this_termsByPlanId__filter","isHiddenPrivateOffer","telemtry","get","reviews$","isPurchased$","userReview$","isPurchased","market","mprpAppData","armRestClient","ex","hideKey","performSearchAll","rawSearchText","getAppPricing","appPricing$","futurePrices$","getAppDetail","entityDetails$","changeBillingRegion","shouldSetCountyCodeCookie","pricingDataLoaded","appsPricings","startingPrices","pricingPayload","userState","customerInfo","campaigns","privateApp","actionCode","createLeadPayload","uniquePlanId","leadPayload","scrubLeadPayload","ReviewsMyCommentsFilter","getReviews","authMethod","authKey","deleteReview","submitReview","updateReview","getReportEmbedToken","body","getFilteredServiceData","ensureAppReviewCommentCollectionData","getAppReviewCommentCollection","ensureAppReviewCommentCollectionStateInitialized","ensureClearAppReviewCommentCollectionData","clearAppReviewCommentCollection","createAppReviewComment","loadUserMarkedAsHelpfulReviews","reportItem","userReviewIdsLoading","prevMarkAsHelpfulCount","telemetryBasePayload","ensureAppDetailsData","promises","_relatedAppsItems_suggestedItems","_relatedAppsItems_saasLinkingItems","_relatedAppsItems_linkedAddIns","relatedAppsItems$","relatedAppsItems","_error_error","ensureServiceDetailsData","serviceDetailData$","serviceDetailData","customers","selectedCustomer","selectedTenant","tenant","getTenantType","updateUser","userDetails","adminMemberships","membershipOptions","billingAccounts","billingEAAccounts","agreementType","dispatchActionAndResolve","campaignData","campaignId","isPreview","campaignHtml","newCustomer","response","address","generatePublisherOffer","subscriptionId","setStorefrontName","ensureCheckoutApp","servicePromises","UpdateUserFavouriteFetchDataStatusAction","createUpdateUserFavouriteFetchDataStatusAction","ReceiveUserFavouriteDataAction","createReceiveUserFavouriteDataAction","DeleteUserFavouriteItemAction","createDeleteUserFavouriteItemAction","UpsertUserFavouriteItemAction","createUpsertUserFavouriteItemAction","FavouriteAppsPricingDataReceivedAction","createFavouriteAppsPricingDataReceivedAction","fetchUserFavourites","favourite","httpGet","rawUserFavourites","fetchDataStatus","upsertUserFavourite","applicationType","httpPost","errorResponse","deleteUserFavourite","entityGuid","httpDelete","ShowingResultsFor","showingResultsForText","leftSpace","italicFont","TitleComponent","localizedTitle","titleAsH1","Popularity","RecentlyUpdated","BestMatch","RatingAverage","nonDefaultSortingOptions","marketplaceServices","marketplace","marketplaceCloudsIndustry","viewToRouteMap","FilteredGalleryHeader","otherGalleriesLinks","numResults","hideSortingDropdown","_searchParams_get","sortByRatingEnabled","allNewSortsEnabled","sortByRecentlyUpdatedEnabled","searchParams","sortByQueryParam","defaultSortValue","baseRoute","container","subTitleClass","handleClearSearch","shouldDisplayClearSearch","tooltipHostStyles","stackContainerTokens","textSize","calloutProps","ItemsTooltip","linkedItemsIds","parentItem","linkedItemsData","setLinkedItemsData","getLinkedAppDataItems","renderAppTileLinkedItem","isTooltipVisible","SuccessStory","tileKey","shortDescriptionFallback","productFamily","descriptionFallback","recommendations","backgroundImage","testimonials","Testimonials","defaultTestimonialTabName","getSuccessStoryTabHref","tabId","changeSuccessStoryTabCallback","story","author","Animation","AppDetailsHeaderRatingBar","allRatingSummaryObj","avgRating","ratingsCount","parseFloat","titleAndTileStackStyle","appDetailsLinkedItemsStyles","horizontalGapStackTokens","getLinkedItemLink","linkedItem","addinOnClick","lastCtaType","renderLinkedItems","linkedItems","AppDetailsLinkedItemsComponent","AppDetailsLinkedItems","AppReviewItemCommentPagination","currentPage","totalPageCount","onSeeMoreClick","onSeeLessClick","AppReviewCommentCollectionPaginationButton","appReviewCommentStyles","AppReviewItemCommentEmptyMessage","AppReviewItemCommentCollectionListSection","onCommentDelete","onCommentEdit","mapCommentsToComponents","reducedCommentIds","commentsById","updatedContent","AppReviewCommentCollection","expanded","loadData","clearData","openModal","createComment","deleteComment","editComment","ensureStateInitialized","unloadPages","isStateInitialized","setCurrentPage","composeText","setComposeText","loadCurrentPageDataIfNeeded","loadNextPage","prev","resetPagination","shouldNewCommentEnterNewlyAddedList","onSubmitComment","onComposerTextChange","newContent","onClick","additionalProps","appReviewCommentItemStyles","commentAuthorInfoBarStackTokenDef","AppReviewCommentItemContent","AppReviewCommentItemEditedLabel","AppReviewCommentItemPostTime","AppReviewCommentItemAuthorName","_comment_customerInfo","AppReviewCommentItem","onEdit","isEditing","setIsEditing","setUpdatedContent","toggleEdit","onDeleteClick","onEditClick","AppReviewCommentItemToolbar","onDeleteToggle","onEditToggle","tooltipCalloutProps","appReviewCommentComposerStyles","BUTTON_SPACING","tokenDef","AppReviewItemCommentComposer","initialContent","editMode","onCloseEdit","isDisabled","setIsDisabled","isShowContentLengthError","setIsShowContentLengthError","isContentValid","AppReviewItemToolbar","onToggleComments","onReportAbuse","onMarkAsHelpful","showMarkAsHelpfulThanks","markAsHelpfulButtonRef","toolbarButtonsContainerRef","initializeItems","iconProps","ReviewIsvReply","isImageLoadingError","setIsImageLoadingError","imageClassName","containerClasses","replyDate","_state_apps_appReviewsData","_state_apps","_ownProps_review","_state_apps_appReviewsData1","_state_apps1","_state_users","commentsState","addToNewlyAdded","modalId","AppReviewSocialContent","onReportClick","publisherName","commentsExpanded","setCommentsExpanded","markAsHelpfulAuthMsgExpanded","setMarkAsHelpfulAuthMsgExpanded","showMarkedAsHelpfulThanks","hideMarkAsHelpfulMessage","showMarkAsHelpfulMessage","triggerMarkAsHelpfulThanksMessage","timeout","clearTimeout","toggleMarkAsHelpfulAuthMsg","prevMarkAsHelpfulAuthMsgExpanded","prevCommentsExpanded","telemetryPayload","CTAInstall","CTABuyLicense","CTAGet","CTARequestTrial","CTATry","CTAPurchase","ActionInstall","ActionBuyLicense","ActionGet","ActionRequestTrial","ActionTry","JsllCTAIdInstall","JsllCTAIdTry","JsllCTAIdBuyLicense","badgesInformation","AzureExpertsMSP","AppTile","closeTile","actionString","AverageRating","NumberOfRatings","activeFilters","searchReqId","setTileCheckoutSource","_this_getCtaMicrosoftManaged","reference","coordinate","tileRank","badgeTypes","tag","builtForList","parentProductTitle","shouldShowLinkedAddIn","textStyles","shouldShowLinkedWebApps","builtForItems","builtForProducts","builtForItemsFirstRow","builtForItemsSecondRow","maxNumberOfLines","style","ratingSummaries","ctaBaseData","area","trials","doesTenantHaveAppLicense","adminCanInstall","productType","appType","badges","filteredBadges","loc","customClassName","idx","appDetailUrl","showPopularity","popularity","containerTokens","itemsTokens","itemsInsideLinkedTokens","titleAndStarsStackToken","parentStackTokens","appTileLinkedItemsStyles","seperatorStyle","tileStyle","getProducts","getRatingsData","ratingsAverage","ratingsNum","logTelemetryInfo","hoveredItem","hoveredTitle","hoveredEntityId","LinkedItem","itemProducts","ratingsData","AppTileLinkedItems","getDataBiView","dataBiView","getDataBiType","BaseCtaButton","CtaComponent","newProp","BreadcrumbUrl","Card","logoURL","subtitle","CommonTile","openInNewWindowButtonStyles","CtaButtons","performance","onCTAClick","openInNewWindowButtonFlag","buttons","baseCtaCompoent","CustomMeterPricingMaxFractionDigits","MetersInclude","customMeter","variant","includedMeters","cm","meter","MetersBreakdown","priceString","CustomMeterPricing","ExternalLink","_this_props","attributes","getAttributes","overrideAttributes","getOverrideAttributes","isEmailLink","detailText","shouldOpenInTab","propName","_this_props_onClickHandle","FuturePriceTooltip","iconId","futurePriceTooltipClass","textClass","startDate","priceComponent","startDateText","FuturePriceWarning","_this_props_futurePrices_skus","_this_props_futurePrices","IconLink","iconClassName","accEnabled","FreeTrialBadge","PrivatePlanBadge","FreeTrialBadgeItem","PrivateBadgeItem","offerHasFreeTrialPlans","offerHasPrivatePlans","SaasPlanNameCell","SaasPricingContent","priceText","freeTrialText","fullPricingText","SaasPricingCell","_futurePriceSku_termPrices","futurePriceTerm","SaasSubtotalCell","subtotalPriceText","subtotalText","planNameWidthsByNumberOfTags","baseColumn","getPlanNameColumn","hasPrivatePlans","planNameWidths","getDescriptionColumn","getPriceAndPaymentOptionsColumn","getBillingTermColumn","subtotalColumnKey","getSubtotalColumn","getNumberOfUsersColumn","minQuantity","maxQuantity","minQuantityText","maxQuantityText","getColumns","planNameColumn","descriptionColumn","priceAndPaymentOptionsColumn","billingTermColumn","subtotalColumn","numberOfUsersColumn","descriptionColumnIndex","SaasPricingRow","rowWidth","sortedPrices","column","numberOfPrices","cellHeightPercentage","getRowsForColumn","getCellStyle","columnIndex","rowsForColumn","stackHeight","renderRow","rowProps","headerStyles","cellStyles","sortRows","defaultRenderHeader","headerProps","SaasPricingTableBase","detailsListPropsOverride","futurePricesSkus","InternalLink","rest","aTagAccEnabled","otherProps","additionalCommand","p","val","scrollToTop","domProps","iconsMap","pixelsPerChar","optionalLeftNumberSize","minTextSize","classStyles","containerClassName","wrap","sizes","iconSize","ItemsContainerIcon","itemType","ItemsContainerDivider","ItemsContainerText","hovered","ItemsContainerLinkText","hrefCallback","logOnClick","ItemsContainerComponent","tooltipTitle","withText","withTooltip","withDivider","linkedWebApps","_ref_current","ref","elementWidth","setElementWidth","onResize","insertEllipsis","itemIndex","productIndex","elements","productsNumber","leftNumber","renderElements","productsCount","additionalLeftNumberSize","shouldAddLeftNumber","Infinity","elementsToRender","currentWidth","icons","lastProduct","lastType","additionalSize","shouldAddDivider","productNameLength","totalMaxWidth","totalProductNameLength","totalTextMargin","verticalItemsTokens","linkedItemStyles","ctaButtonStyle","isInAppDetail","ctaButtonClick","isCardHover","setIsCardHover","SubmittedModal","IClarityFunctionNames","MsClarityEnabledEnvironments","MsClarity","productsItems","PureSpzaComponent","RatingsInfo","starClass","ratingClass","CrouselNextArrow","CrouselPrevArrow","Ribbon","slide","_slide_classList","childrenCount","imgSource","subHeader","getOptionIndex","optionToFind","optionIndex","match","isOptionSelected","highLightOption","RichTextDropDown","searchValue","_this_dropdownElement","isHoverEvent","previousMenu","previousMenuItem","targetIndex","richMenus","currentMenu","currentMenuItem","_this_dropdownElement1","isEventDefaultEnabled","optionLength","prevItemIndex","nextItemIndex","labelPrefix","o","dropdownClass","selectedOption","getContainerAriaLabel","dropdownLabel","getOptionClassName","highlightClassName","SafeHtmlWrapper","html","sanitize","sanitizedHtml","DataBi","$primaryText","$backgroundColor","SortingDropdown","defaultKey","isOpen","setIsOpen","searchByKey","setSearchByKey","isSortingSupported","onSortingChangeHandle","sortingLink","currentOptionsIndex","nextIdx","onDropdownChange","activeSortByOption","sortingDropdownClass","SpzaComponent","StickyCard","appearUnderElementId","elementToAppearAfter","tabsYOffset","TabsTheme","TAB_SELECTED","DEFAULT_TAB","SELECTED_TAB_QUERY","Tab","tabsClass","Tabs","tabsList","tab","currentTabIndex","getTabHref","child","_child_props","textBadge","createHeaderElement","tabClass","tabContainerClass","processedImageLoadedSrcList","processedImageErrorSrcList","TelemetryImage","alt","imgClassName","onImageLoaded","timeTaken","onImageErrored","tooltipHostProps","onTooltipToggle","tooltipId","skipPreviewSaaS","linkedSaas","_ownProps_linkedSaaS","productUrlkey","ShowPopularity","appsActiveFilters","servicesActiveFilters","favoriteStarFilled","favoriteStarAdd","favoriteStarFilledHover","favoriteStarAddHover","UserFavouriteTileButton","userFavouriteEntity","upsertPayload","hasUserSavedFavourite","itemModifyStatus","shouldShowSavedStatus","pricingStyle","contentStyle","TileCTAbutton","ctaData","isCTAHover","setIsCTAHover","disabled","CtaType","TileFooter","onKeyDown","userFavouriteEntityType","tileDataRequestId","tileIndex","componentInstance","onOpenTile","totalTiles","searchSortingBy","tileId","imgUrlError","setImgUrlError","handleTileClick","handleTileKeyDown","preventNavigation","descriptionclassNames","ctaEntity","ServiceTile","_this_props_extraData","extraData","countryContext","firstCountry","replaceCountryParam","foundCountryCode","_this_props_tags","hasIntSolutionBadge","tooltipText","ctaText","_this_props_extraData_shortDescription","replaceCountryParams","serviceDetailUrl","_state_config","_state_config1","_state_config2","_state_config3","favoriteStarHollow","UserFavouriteTileDetailButton","useMsClarityIdentify","useMsClarityTracking","setIsHydrated","withHydration","WrappedComponent","useSpzaInstrumentService","refInstrument","envsMap","getEnvName","_getWindow___INITIAL_STATE___config_siteEnvironment","_getWindow___INITIAL_STATE___config","_getWindow___INITIAL_STATE__","_getWindow___INITIAL_STATE___config_siteEnvironment_toLowerCase","initiate1DS","_getWindow___INITIAL_STATE___config1","_getWindow___INITIAL_STATE__1","_getGPCValue","analytics","authPlugin","propertiesPlugin","cvPlugin","authConfig","_getWindow___INITIAL_STATE___users","_getWindow___INITIAL_STATE___users_signedIn","propertiesPluginConfig","telemetryClient","getTelemetryClient","initBusinessTelemetryClient","pageView","overrideValues","customProperties","isRightClick","flushTelemetryBuffer","ClientLogsCollection","getCommonData","_initialConfiguration_siteEnvironment","_initialConfiguration_query","_getTrailIdAndData","_getWindow_navigator","_getWindow_navigator_connection","_getWindow_navigator1","initialConfiguration","level","loggerPayload","_this_store","_state_modal","_state_checkout_items_","_state_checkout_items","_state_checkout","_getWindow2","_getWindow3","_this__1dsLogger","userSegment","hashedOid","ClientLoggerTelemetry","SystemLoggerTelemetry","_process_env","_process","qosPlugin","webAnalyticsConfig","qosConfig","AuthClient","onSuccess","onFailure","getSilentRedirectUri","getImplicitRedirectUri","getConfig","aadApplicationId","aadLoginUrl","getScopeByAADResource","marketplaceLeadsAudienceId","jarvisCM","mprpAadApplicationId","pifdEndpoint","commerceApi","graphApi","agreementAppId","getExtraScopesToConsent","fetchAccessTokens","resources","scopesByResource","filteredScopesByResource","filteredResources","resource","acc","redirectLoginSuffix","getRedirectLoginUrl","listOfUrlKeysToExcludeInAppsource","filterHideList","isOneTaxonomyEnabled","newKey","oldKey","objCompare","obj1","obj2","v1","v2","recursiveDecode","run","decodedValue","parseQuery","parser","arrayValue","decodeString","xssDecodeString","decodeQuery","xssDecodeQuery","getXssDiff","hasDiff","decodedUrl","xssDecodedUrl","hasUrlDiff","decodedQuery","xssDecodedQuery","hasQueryDiff","getXssDiffString","urlObject","EMBED_PREFIX","appRoutes","previousPage","appHistory","originalUrl","_document_documentElement","canonical","isMac","host","protocol","canonicalLinkPrefix","canonicalLink","documentCanonicalLink","embedURL","isValidRoute","base","initRouterHistory","_args_embedded","previousLocation","refererPathname","refererByCallbackUrl","pathname","_state","decodedFrom","stateHostname","update","onRouteChanged","FilterQuery","buildHref","oldRouteParams","newRouteParams","newParams","validQueryParams","routeKeys","targetParams","op","np","campaignParam","startChar","newParam","splitParams","keyLength","keyIndex","previousCharacter","endCharacter","splitNewParams","splitOldParams","pos","queryString","emptyQuery","tp","appendQueryParams","queryParams","urlPush","embedLocation","scrollTo","urlReplace","nextLocation","urlAssign","shouldOpenInNewTab","removeUserUniqueQueryParams","currentLocation","urlToReplace","withRouter","getQueryParamsObject","storeFeedback","getUserPrivateApps","getUserPrivateApp","entitiyId","getPrivateOrPublicPublicId","getTileData","_request","tileDataOption","data$","_getAppPricing","getFuturePrices","_getFuturePrices","getApp","_getApp","getAppRelatedAppsItems","getAllAppsPricing","_getAllAppsPricing","getServices","flightCode","getServiceRelatedAppsItems","HttpModule","AuthenticationTypes","_err_response_request","_err_response_req","requestUrl","newAccessToken","outerStore","HttpWrapper","entry","retry","authHeaderTitle","header","shouldRefreshAccessToken","setAuthenticationHeaders","authenticationType","setBearerHeader","endRequest","_res_headers_contenttype","_res_headers_contenttype1","isJSON","isRemoteChunk","promise","_HttpModule_getStore","method","patch","del","getRootObject","set","getAppConfig","init","configs","setConfigs","LibAction","aggregratingName","InfoBuffer","entryName","AggregationBuffer","size","Buffer","overflow","ConsumerService","instrumentService","InstrumentService","provider","Provider","probeName","enablings","enabling","StaticProvider","TelemetryActions","buffer","events","serializedEvents","flushLog","record","isClient","SharedTelemetryService","SharedInstrumentService","screenResolution","screen","browser","tem","ua","M","_getWindow_setTimeout","SpzaTelemetryService","SpzaInstrumentService","getWindow","getDocument","ApiVersion","marketplaceApiVersion","enrichReviewCommentsApiVersion","marketplaceLeadsApiVersion","mergeAccessToken","currentAccessToken","previousObject","currentKey","countryCodeToNameMap","paramToDataMapKey","getHttpPrefix","Url","stringifyWithQs","generateGuid","attachClickHandlerToElement","handler","el","getProductByUrlKey","productKey","getProdcutBitMaskInfo","categoryInfo","FilterGroup","FilterID","AppsourceMode","getFormattedString","baseString","getTelemetryResponseUrl","getPaymentRedirectUrl","referredBy","bitmaskMatch","bitmaskValue","isOfficeNonSaasApp","getParentProductTitle","parentProduct","isOfficeSaasApp","productOfficeMask","productWebAppsMask","isOfficeApp","isSaaS","isSaaSApp","isD365","isD365App","isD365BC","isPowerBIVisuals","isPowerBIVisualsApp","isAzureApp","isMigratedPowerBIVisual","shouldDownloadPowerBIVisual","isBagTransactable","primaryProductUrl","isBagEnabledD365BC","isBagEnabledD365","isBagEnabledPowerBIVisual","isBagOfferType","getTransactCTATypes","_targetApp_licenseManagement","_targetApp_licenseManagement1","isAdmin","showInstallFirst","isD365BCApp","showGetCta","getCtaBagTransactable","isFreemium","Install","BuyLicense","getHandoffUrlForProduct","productUrlKey","urlArgs","getOfficeHandoffParams","storeConfig","ui","contentMarket","processHandoffURLAndTitle","handoffURL","notifyURL","isPrivateOffer","isOpenInNewWindowButton","getActionStringForCTAType","isOnMicrosoftEmail","urlList","httpsSubString","checkOriginSource","originStartIndex","firstSlashIndex","removeURLParameter","parameter","urlparts","prefix","getDataMapString","bitmask","dataMapValues","getTelemetryDetailContentConsentDialogInfo","getTag","isCertifiedSoftware","_app_badges","badgesConditions","CertificationState","isSolutionMap","AzureBenefitEligible","getBadgeTypes","condition","getAppTelemetryDetailContentText","consentDialogHasUserProfile","consentDialogHasCheckbox","shouldShowUserTerms","leadGenEnabled","publisherId","appPublisherId","ctaTypeString","productAvailabilityType","isSaasTransactApp","appTelemetryDetailContent","getServiceTelemetryDetailContentText","dataMapField","serviceTelemetryDetailContent","getEmbedHostName","serializeUserProfileEmbedInfo","profileToSave","readUserProfileEmbedCookie","userProfileInfo","pair","colenIndex","logClientError","additionalDetails","isWarning","stringifiedStack","sf","log","isJsonString","str","parsedObj","getSpzaUserIdAndNewUserModifier","spzaUserData","getTrailIdAndData","trailData","isValid","getLocaleDate","parsedDate","getNetworkStats","_navigator","effectiveType","rtt","downlink","getHostType","getCTATypeForActionString","logTenantInfo","users","isAutoSign","spzaUserId","emailParts","tenantPayload","logInitialTelemetryEvents","sharedInstrument","newUserModifier","trailIdData","spzaUserIDPayload","embedHostName","landingDetails","setProfileFeatureFlag","decodeVulnerableDataInInitalState","decodeURI","isMSASupported","matched","AllowMSA","isAppForMSAAccountOnly","getSignInModalTypeHelper","isMSASupportedProduct","shouldForceMSA","getSignInModalType","isServiceEntity","isEmailValid","isValidInput","validateCallBack","inputNoSpaces","getElement","selectorFunc","addClassToElement","removeClassFromElements","elementsClassName","clearElement","focusElement","addAttributes","attribute","postMessageLogTemplate","postMessageToHost","licenseDisplayTextSet","dynamicsLicenseTypeForEmbed","productBitmask","productList","getListOfDynamics365Products","productsBitmask","productsList","dynamicsLicenseType","productsBitMask","setInitialLocalLicenseStore","licenses","setInitialLicenseDisplayText","getTelemetryDetailContentCurrentCuratedViewPrefix","filterQueryName","isAppGallery","filterQueryToFilterCollectionName","isProcessingAppGalleryIndustryFilters","curatedViewPrefix","filterQueryValues","queryValue","filterQueryValue","areMultipleFilterCollectionsActive","queryName","areMultipleIndustryFiltersActive","isSearchMode","querySearch","filterCollection","filterName","filterTitle","word","getTelemetryDetailContentCurrentView","galleryViewPrefix","galleryViews","getTileDataQueryParams","optimizedTileDataQueryParams","optimizeQueryParameters","rawValue","valueUpper","loweredName","dataMappingName","serviceOffersSupportedStatesCodes","getTileDataCuratedQueryParams","tileDataCuratedQueryParams","getTileDataFilteredQueryParams","tileDataFilteredQueryParams","getTileDataAdditionalQueryParams","tileDataAdditionalQueryParams","convertTimeToSeconds","timeStamp","totalTimeInSeconds","hours","minutes","seconds","shouldEnsureAppDetails","shouldEnsureServiceDetails","shouldEnsureAppPricings","_app_pricingInformation_billingRegion","_state_config_billingCountryCode","shouldEnsureAppReviews","shouldEnsureAppRelatedApps","shouldEnsureServiceRelatedApps","isAvailableInThisRegion","windowOnErrorHandler","browsersExtensions","browsersExtension","getXMSClientName","getPDPRoute","getGalleryRoute","getTileDataEntityType","mapping","stripHTML","isSignedInChanged","currentSignedIn","prevSignedIn","getActiveFeaturedFlags","flag","shouldRenderPricing","planPricingType","transactApp","isMicrosoftManaged","canRenderPricing","sortingSKUs","_a_title","_b_title","openInNewWindow","newWindow","getCookieOptionExpires","expiry","hasUserAgreedPrivacyConsent","saveDataToBrowserAfterUserAgreedPrivacyConsent","saveCookieItem","itemName","itemValue","optionText","getCookieItem","shouldDecode","saveLocalStorageItem","getLocalStorageItem","saveSessionStorageItem","getSessionStorageItem","BrowserStorage","cookieUtils","localStorageUtils","browserStorage","BrowserStorage1","cookieData","userAgreedPrivacyConsent","localStorageData","sessionStorageData","cookieName","cookieValue","errorText","localStorageItemName","localStorageItemValue","getCookieItemFromBrowser","cookiePrefix","cookieArray","setCookieItemToBrowser","isValidForUserAgreedPrivacyConsent","isCookieExpired","cookieInitialTime","setCookieItemToBrowserForUserAgreedPrivacyConsentDate","cookieAcceptedDate","localStorage","sessionStorage","TelemetryUtils","BusinessTelemetry","dataBi","Filters","ProductAvailabilityType","updateCart","quantity","isQuantifiable","currency","billingTerm","isRecurring","showAutoRenewMessage","prevCartItem","quantityAsInt","isNewCustomer","activeCustomer","checkoutBillingCountry","defaultBillingCountry","_activeCustomer_address","_activeCustomer_address_country","isDevelopmentEnvironment","getCountries","confirmBillingCountry","_confirmBillingCountry","setBillingCountry","createCustomer","logPayload","logConfirmTelemetry","getConsentState","isContactInfoHiddenInDisclaimer","consentOption","consentsNotContactInfo","convertStepIdToName","stepId","getBillingPlanPricesPerTermDuration","billingDuration","_renewAvailability_terms_filter","_renewAvailability_terms","renewAvailability","prices","convertTermToString","pbOther","getBillingCycle","billingPlan","MultiYearTerms","buildUrlToAppDetails","redirectToAppDetails","pdpUrl","getPurchaseBlendsMessageOverrides","riskRejected","IConsentOption","Constants","Environment","Featured","FilteredSearchType","FilteredSearchPhase","HTMLElements","SigninStatus","PageToGiveMetaTag","RatingShowMode","CookieExpiry","Reviews","ReviewCommentModalMode","Microdata","ReviewsSource","EntityType","Dynamics365LicenseType","Dynamics365LicenseIndex","SearchBy","SystemKey","SystemKeyAsString","SystemKeyString","Recommendations","FieldHubUserType","VaritionKey","TenantType","ReviewsEnrichApiResponse","TermId","OrderConfirmation","StatusError","Cookies","Errors","Catalog","ArtificatsName","LocalStorage","EventsApi","UrlParamCacheKeyWhiteListKey","Search","SuggestionTypes","QueryParams","Endpoints","SelectEntry","ActionType","OrderBy","FilteredGallery","TileDataEntityType","TileDataAdditionalQueryParams","TileDataFilteredQueryParams","TileDataCuratedQueryParams","DataMapCollectionKeys","CategoriesDataMapCollectionKeys","Headers","OperationNames","CacheStatus","BrowserConfigs","ClientNames","HttpMessage","ControllerOperations","QueryStrings","Auth","Curated","AppActionTypes","ActionStrings","NpsActions","BadgeType","ButtonType","CTAType","CertificationType","SignInType","SignInRedirect","ActionCodes","ModalType","dynamicsLicense","PowerBI","filterMaps","embedMessage","TeachingBubblePurchaseConfirmation","RequestsMethods","SearchSources","LeadCategory","Telemetry","Action","ActionModifier","LeadsDropReason","OutRequest","ProbeName","AreaName","Id","ContentType","PurchaseBlendsTelemetry","PurchaseBlends","RoleDefinitions","Flighting","CompetencyBadge","TestDriveType","TestDriveOutputType","EmailCategories","ReservedCorrelationIds","View","TestDriveResponse","VersionNeutralCollection","DocTypes","TestDriveState","StorefrontName","AuthType","ResourceTypes","AcquisitionCategories","GalleryTypes","GalleryOffersTypes","Views","HTMLAttribute","searchItemType","searchTypeString","TokenClaims","AzurePortal","MACSubCategoryStrings","TypeOf","ServiceTypes","RegExpFlag","UserFavourite","ApplicationTypes","NotCriticalFailure","FetchDataStatus","DataItemModifyStatus","ODataError","AccessToken","appSourceUrls","Header","Classname","UserInteractionType","EventType","UserActionComponentType","UserComponent","DropdownItemName","ErrorCodes","JsllCTAId","JsllSaas","JsllCheckout","AzureExpertsMSPApps","ProductBitmaskFieldNames","SearchFieldNames","SearchSortingOption","LicenseManagementType","UiRole","TermPeriod","OfferType","PlanPricingType","OneDSEnvs","AwaMetaTags","Plan","AppName","ReviewCommentActionError","ConsentAnalyticAssets","CategoryId","MeterUnit","MeterType","ApiVersions","SearchMode","AppConfig","InternetOfThings","Avert","FeedbackName","TemplateName","ReservedOperationNames","CloudsIndustry","ReportAbuseDialog","HTMLTag","HTMLClassNameStrings","LicenseModel","supportedCountries","LocalizationSettings","ResourcesFiles","allBillingCountries","BackendKeyToURLKey","getProductTitleForTile","serviceProducts","getServicePricingByCountry","multiGeoCountryPricings","_multiGeoCountryPricings_find","multiGeoCountryPricing","_multiGeoCountryPricing_countryRegion","getServicePricingByCountryWithFallback","_multiGeoCountryPricings_","getCountryRegionByCountry","findBestMatchCountryCode","multiCountryServicePricing","extractCountryCodeFromFilterQueryParam","subFilters","extractCountryCodeFromQueryParam","createCountryFilterQueryParam","getReplacedCountryQueryParam","newCountryCode","newFilter","countryCodeToReplace","getStartingPriceCurrency","multiCountryPricing","getStartingPriceHeader","_pricing_planPrices","planPrice","getDatamappingJsonFile","filterTypeToFilterGroup","categoryFilterGroup","categoryUrlGroup","subCategoryUrlGroup","productsToCategoriesReferences","_getDatamappingJsonFile","categoriesMapping","maskCounters","increaseMaskIndex","currentMask","calculateShortcutUrlKey","ShortcutFilters","UrlKey","currentShortcutUrl","getBaseFilterGroup","getFilterGroup","dataCollectionKey","isBaseFilterGroup","filterGroup","getDataValueBitMask","initDataValue","dataValueKey","dataValue","isSubDataValue","filterInfo","IsReference","SubCategoryDataMapping","IsChildFilter","initMaskCounters","initCollection","dataCollection","subCategoryCollectionValue","createCategoryReference","updateCategoriesReferences","categoriesReference","productCategoryReference","productCategoryTaxonomy","uniqueFilter","initDataMap","categoryCollection","dataCollectionToMap","dataMapArray","categoryKey","dataValues","dataValuesSubCategoryToMap","subDataValues","dataMapToArray","categoryDataKey","categoryDataMap","dataCollectionMap","getAllCategoriesReferences","createBackendKeysFromSubCategories","subCategories","getAllChildKeys","BackendKey","currentBackendKey","createAllChildMap","productKeyByUrlKey","productKeyByBitmaskFilter","calculateShortCutBitmask","currMask","shortcutProductInfo","currentFilterGroup","productShortcutBitmask","cloudIndustry","getShortCutBitmask","getUrlKeys","urlKeys","currentDataValue","getSubUrlKeys","currentSubCategoryKey","subCategoryKey","bitMasksMatch","bitMasks","bitMasksMatchBitMask","bitMasksA","bitMasksB","bitMasksMatchFilter","bitMasksContainSomeBitMask","getPrimaryProductUrl","maskKey","getProductFilter","getCategoryListByProductId","productBitMaskFilter","datamap","productFilter","_DataMap_categories","defaultCateogires","removeUnmatchedCategories","newProductUrlKey","newProductFilterData","categoryListL1Product","newCategory","queryCategory","OwnerType","hideCertificateBadges","getDetailInformation","getDetailArrayItem","generateClickPayloadAndLogTelemetry","ownerType","ownerId","generateLinkPayloadAndLogTelemetry","linkType","tabOwner","generateTileClickPayloadAndLogTelemetry","generateBreadcrumbPayloadAndLogTelemetry","addSaaSBundleProperties","getProductsList","filterDatamapBlocks","CtaRequiringTerms","registration","getEntityRegistration","getEntityRegistrationByView","viewName","getEntityDataState","getAllEntityTypes","filterCollectionNameToFilterQuery","getFilterDataForQueryHelperV2","subgFilterQueryName","shouldResetCounts","filterData","selectedFilter","filterKey","primaryFilter","isContainsSubActive","subKey","subFilter","selectedSubFilters","isSubActive","getFilterData","filterCollectionName","getFilterDataForQuery","subCollectionKey","categoryFilterSubCollection","categoryFilterCollection","filterSubCollectionData","getFilterDataForQueryHelper","_constantDataMap_trials_rawFilterQueries_","_constantDataMap_pricingModel_rawFilterQueries_","_constantDataMap_ratings_rawFilterQueries_","_constantDataMap_appCompliance_rawFilterQueries_","_constantDataMap_AzureBenefitEligible_rawFilterQueries_","_constantDataMap_CopilotExtension_rawFilterQueries_","_constantDataMap_productType_rawFilterQueries_","hasGlobalFilter","filterQuery","filterQueries","rawFilterQueries","getProductsFilterData","activeQuery","activeFilter","filterBitmaskMatch","parentFilterQuery","selectedParentFilter","shouldExpandChildFilters","childFilterNames","childFilterName","childFilter","childFilterIsActive","updateMatchFunctions","subCategoryCollectionKey","subCategoryFilterCollection","subCategoryKeys","childMatchFns","subCategory","matchFn","primaryProductKey","productFilterCollection","productFilterKey","isPrimaryProduct","matchSubCategories","subFilterKeys","subFilterKey","getFilterLink","allowShortcutFilter","isTreatmentNewFilterAMPEnabled","isProduct","isCategory","isIndustry","isSubFilter","flattedEmbedHost","newProps","getCountryRegionfilterLink","shouldShowCurationForFilter","curatedData","curatedSection","shouldShowCuratedDataForActiveFilters","filtersByGroup","grouped","shouldShowCurationForProductFilters","activeProductsFilters","L3ProdFilters","activeProdFilters","getFilterType","shouldShowSubFilter","sort","textA","textB","sortFilters","filterA","filterB","sortFiltersKeys","filterKeyA","filterKeyB","filters","onClickTrackHitCountsForTreatmentNewFilter","filterUrlKey","isFilterChosen","cloudsIndustryActiveFilters","getResetFiltersHref","getResetFiltersAndSearchHref","increaseCountOfReferenceCategoryInDefaultCategoryList","getPopularItems","allItems","featuredItems","maxLength","featuredItem","getFeaturedItemsByFilter","itemsHashMap","getFeaturedItemsFilter","itemsIndexes","topCuratedLane","getTopCuratedLane","curatedItem","_curatedItem_id","windowScrollToTop","getInternetOfThingsLink","serviceOffersSupportedCountries","serviceOffersSupportedCountriesMap","findServiceSupportedCountry","foundCountries","isPricingFilter","performFilter","performCounting","resetCounts","filterList","matchingItems","itemLength","itemMatches","matchesGroup","topFilter","matchesCategory","len2","passesGroup","increaseCounts","MONTH_UNIT","YEAR_UNIT","isUnitEqual","mightContainMultiyearTerms","filterDecreasePrices","hasMonthlyPriceIncrease","hasYearlyPriceIncrease","hasMeterPriceIncrease","increaseTermPrices","updateTermPrices","futurePlan","increasedTermIds","futureAvailability","futureTerm","_term_billingPlan","_futureTerm_billingPlan","updateThirdPartyPricing","futurePricePerCore","currentMeter","getFuturePricesSkus","futurePlans","currentSkus","futureSkus","_futurePlan_availabilities","currentSku","getFuturePricesInformation","currentPrices","getUTCDateString","startDateUtcInMinutes","generateHashMap","identifiers","dataLength","idsLength","parseCuratedSections","sections","dataMapSubCats","section","newItems","newSection","jwtDecode","headersToRedact","scrubHeaders","_headers_","logOutRequestEventInfo","logError","_error_response1","code","generateTelemetryPayload","_details","parseRequest","taskName","requestHeaders","parseURL","reURLInformation","logOutRequestStart","logOutRequestEnd","durationInMilliseconds","contentLength","requestEnd","logOutRequestError","parsingError","shouldRefreshToken","expiryTime","isAppContactForm","isLeadgenEnabled","isETERunning","NpsModule","npsHelper","idleCounter","blocked","idleTimer","isNotSameCorrelationId","sessionStartTime","setTimer","interval","checkForNPS","viewedAppsCount","acquiredAppsCount","debugMsg","savedSessionEndTime","viewedApps","acquiredApps","isAppsCriteriaValid","dLog","ResetNPSCount","ResetNPSIdle","offset","showModalFunction","timerInterval","currentCorrelationId","savedCorrelationId","next","initNext","storeString","nextText","by","isUndefined","isNullorUndefined","isObject","isEmptyObject","isArray","isPureObject","isFunction","deepEqual","y","shouldSkipInlineFunctionCheck","prop","oneTimePaymentOffers","configsMap","loadPartnerManifest","loadAppPricing","rawApp","pricesData","billingCountries","getBillingCountryByCountryCode","renderNotAvailablePriceUI","TermsStringsToDays","DAYS_IN_YEAR","getFreeTrialText","asInlineHTML","freeDurationDays","months","singleMonthText","multiMonthText","getPricingLocale","getPriceWithCurrencySymbol","maximumFractionDigits","currencyCodePosition","currencyValuePosition","matchWhitespace","getPriceString","formatStringLocalizationKey","ignoreFreeString","unitLocalizationKey","getVariablePriceString","returnObj","termPriceString","getCustomMeterPricing","_price_customMeter","customMeterPriceText","customMeters","firstLine","getDefaultPrice","getFuturePriceVariablePriceString","futurePriceObj","futureMonthlyPrice","futureYearlyPrice","getVariablePriceStringWithDefault","priceObj","monthlyPrice","yearlyPrice","defaultMonthlyPrice","defaultYearlyPrice","contactPublisherText","getBillingTermTranslated","useHyphen","isSubscription","getPriceWithFrequencyText","priceObject","onetimePaymentTranslation","isOnetimePayment","template","billingFrequency","getBillingFrequencyTranslated","getFullPriceString","priceValue","priceWithFrequency","getTermPriorityForSorting","termsStrings","sortTermPrices","addFuturePricing","billingTermPeriod","monthlyFuturePrice","yearlyFuturePrice","getStartingFromPriceText","startingPriceOptions","saasStartsFromPricing","termTranslated","getStartingPriceElement","shouldBlockPricing","bulidStartingPriceElement","hidePowerBiVisualPricing","getGPCValue","getComponentXYCoordinate","componentRef","domNode","boundingRectangle","relativeCenterX","relativeCenterY","getTileComponentRank","coordinateRanking","elementHTMLCollection","attributeAriaLabeledBy","elementIndex","launchTelemetry","getProviderNameByReviewSource","defaultName","getReviewCtaButtonText","getAddReviewSectionDescription","getReviewModalDialogProps","dragOptions","getReviewCommentsModalDialogProps","createDefaultPagination","defaultPagination","createDeepLinkPagination","currentPageIndex","combineDeletedComments","commentIds","currId","currIdx","currentComment","createInitialReviewCommentsState","appendReviewCommentsToState","mapEnrichReviewCommentToIAppReviewComment","keyMapper","calculateTotalReviewCommentsPagesCount","getExternalRatingSummaries","g2Summary","summary","getRatingTotals","accumulatedRatings","currentRating","getTotalExternalRatingSummariesInfo","totalRatingCounts","totalAverageRatingsSum","getRatingSummaryByType","findReviewsSources","AppSource","Amp","Ibiza","specialParams","campaignParams","excludedCampaignsForAcquisition","logGetCampaignTelemetry","shouldSkipGetCampaigns","getAppViewParams","shouldGetCampaignsForAcquistion","extractCampaignsFromUrl","getParameterByName","regex","excludeCampaignsForAcquisition","aExludeCampaign","excludeKey","excludeValue","getCampaignsForAcquisitionFromUrl","updateHandOffUrlWithCampaignParams","handoffUrl","pageUrl","serializeCampaignObject","getEntityIdFromUrl","offerIdLocation","removeDuplicateAddIns","idField","bundleCount","linkedAddInIds","currentApp","currentAddIns","uniqueApps","currentAppId","duplicateAddInsCount","metaTagConstants","isGallery","galleryType","pathArray","getMetaTag","metaTag","getAwaMetaTags","_state_users_signedIn","parseFirstFilter","filterstring","getGalleryCanonicalSuffix","currentUrl","queryParamsString","queryKey","queryTuple","parseLocale","getCanonicalLink","isMacEnv","serviceOffersSupportedUSStates","serviceOffersSupportedCAStates","getTooltipSilentLogIn","getTrimmedWords","delimiter","isEmptyNullorUndefinedString","lowerCaseText","getWorkBreakEnabledString","isFeedback","getQueryFromBrowserUrl","getLocationFromBrowserUrl","getQueryFromWindowLocationSearch","queryArray","querySegment","querySegmentKeyValuePair","getHostFromBrowserUrl","getProtocolFromBrowserUrl","getUserFavouriteEntityServiceType","getUserFavouriteEntityAppType","isApplication","isConsultingService","getFavouriteEntityState","favourites","upsertsUserFavouriteEntityState","entityList","foundMatch","deleteUserFavouriteEntityState","indexToDelete","numberOfEntityToDelete","getUserFavouriteEntity","hasFound","getUserFavouriteViewEntityList","userFavouriteEntityList","isMaccUser","isMaccTenant","isEAAccount"],"mappings":"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BACA,aACH,CACD,YAAa,CACT,kBACA,OACH,CACD,cAAe,CACX,kBACA,aACH,CAED,WAAY,CACR,gBACA,QACH,CACD,UAAW,CACP,gBACA,OACH,CACD,gBAAiB,CACb,gBACA,aACH,CAED,WAAY,CACR,eACA,aACH,CACD,YAAa,CACT,eACA,UACH,CAED,eAAgB,CACZ,mBACA,aACH,CACD,gBAAiB,CACb,mBACA,UACH,CAED,4CAA6C,CACzC,aACH,CACD,2CAA4C,CACxC,iBACH,CACD,0CAA2C,CACvC,gBACH,CACD,+CAAgD,CAC5C,kBACA,UACH,CACD,gDAAiD,CAC7C,sBACH,CACD,mDAAoD,CAChD,yBACH,CACD,0CAA2C,CACvC,WACH,CACD,wCAAyC,CACrC,QACH,CACD,wBAAyB,CACrB,sBACH,CACD,oBAAqB,CACjB,kBACH,CACD,OAAQ,CACJ,wBACH,CAED,cAAe,CACX,kCACA,CACI,YACA,MACH,CACJ,CACD,cAAe,CACX,kCACA,CACI,YACA,MACH,CACJ,CACD,eAAgB,CACZ,kCACA,CACI,aACA,MACH,CACJ,CACD,eAAgB,CACZ,kCACA,CACI,aACA,MACH,CACJ,CACD,oBAAqB,CACjB,kCACA,CACI,kBACA,MACH,CACJ,CACD,oBAAqB,CACjB,kCACA,CACI,kBACA,MACH,CACJ,CACD,iBAAkB,CACd,kCACA,CACI,eACA,MACH,CACJ,CACD,iBAAkB,CACd,kCACA,CACI,eACA,MACH,CACJ,CAED,UAAW,CACP,kCACA,CACI,YACA,UACH,CACJ,CACD,cAAe,CACX,kCACA,CACI,gBACA,UACH,CACJ,CACD,UAAW,CACP,kCACA,CACI,YACA,UACH,CACJ,CACD,UAAW,CACP,kCACA,CACI,YACA,UACH,CACJ,CACD,WAAY,CACR,kCACA,CACI,aACA,UACH,CACJ,CACD,eAAgB,CACZ,kCACA,CACI,iBACA,UACH,CACJ,CACD,WAAY,CACR,kCACA,CACI,aACA,UACH,CACJ,CACD,WAAY,CACR,kCACA,CACI,aACA,UACH,CACJ,CACD,gBAAiB,CACb,kCACA,CACI,kBACA,UACH,CACJ,CACD,oBAAqB,CACjB,kCACA,CACI,sBACA,UACH,CACJ,CACD,gBAAiB,CACb,kCACA,CACI,kBACA,UACH,CACJ,CACD,gBAAiB,CACb,kCACA,CACI,kBACA,UACH,CACJ,CACD,aAAc,CACV,kCACA,CACI,eACA,UACH,CACJ,CACD,iBAAkB,CACd,kCACA,CACI,mBACA,UACH,CACJ,CACD,aAAc,CACV,kCACA,CACI,eACA,UACH,CACJ,CACD,aAAc,CACV,kCACA,CACI,eACA,UACH,CACJ,CAED,eAAgB,CACZ,uBACA,CACI,QACA,UACH,CACJ,CACD,eAAgB,CACZ,uBACA,CACI,QACA,MACH,CACJ,CACD,cAAe,CACX,uBACA,CACI,OACA,UACH,CACJ,CACD,cAAe,CACX,uBACA,CACI,OACA,MACH,CACJ,CACD,iBAAkB,CACd,uBACA,CACI,UACA,UACH,CACJ,CACD,iBAAkB,CACd,uBACA,CACI,UACA,MACH,CACJ,CACD,oBAAqB,CACjB,uBACA,CACI,aACA,UACH,CACJ,CACD,oBAAqB,CACjB,uBACA,CACI,aACA,MACH,CACJ,CAED,qCAAsC,CAClC,wBACA,kBACH,CACD,qCAAsC,CAClC,wBACA,kBACH,CACD,gBAAiB,CACb,wBACA,kBACH,CACD,eAAgB,CACZ,wBACA,iBACH,CACD,iBAAkB,CACd,wBACA,mBACH,CACD,iBAAkB,CACd,wBACA,mBACH,CACD,iBAAkB,CACd,wBACA,mBACH,CACD,oBAAqB,CACjB,wBACA,sBACH,CACD,cAAe,CACX,wBACA,gBACH,CACD,gBAAiB,CACb,wBACA,kBACH,CACD,iBAAkB,CACd,wBACA,mBACH,CACD,iBAAkB,CACd,wBACA,mBACH,CACD,YAAa,CACT,wBACA,cACH,CACD,aAAc,CACV,wBACA,eACH,CACD,aAAc,CACV,wBACA,eACH,CACD,YAAa,CACT,wBACA,cACH,CACD,aAAc,CACV,wBACA,eACH,CACD,aAAc,CACV,wBACA,eACH,AACL,EACAA,EAAU,mBAAmB,CAAG,CAE5B,mCAAoC,CAChC,6BACA,qBACA,OACH,CACD,mCAAoC,CAChC,6BACA,qBACA,OACH,CACD,mCAAoC,CAChC,6BACA,oBACA,OACH,CACD,6BAA8B,CAC1B,8BACA,qBACA,OACH,CACD,6BAA8B,CAC1B,8BACA,qBACA,OACH,CACD,6BAA8B,CAC1B,8BACA,oBACA,OACH,CACD,8BAA+B,CAC3B,iCACA,qBACA,OACH,CACD,8BAA+B,CAC3B,iCACA,qBACA,OACH,CACD,8BAA+B,CAC3B,iCACA,oBACA,OACH,CACD,6BAA8B,CAC1B,sBACA,qBACA,OACH,CACD,8BAA+B,CAC3B,sBACA,qBACA,OACH,CACD,8BAA+B,CAC3B,sBACA,qBACA,OACH,CACD,8BAA+B,CAC3B,sBACA,oBACA,OACH,CACD,8BAA+B,CAC3B,wBACA,qBACA,OACH,CAED,mCAAoC,CAChC,6BACA,qBACA,OACH,CACD,mCAAoC,CAChC,6BACA,qBACA,OACH,CACD,mCAAoC,CAChC,6BACA,oBACA,OACH,CACD,6BAA8B,CAC1B,8BACA,qBACA,OACH,CACD,6BAA8B,CAC1B,8BACA,qBACA,OACH,CACD,6BAA8B,CAC1B,8BACA,oBACA,OACH,CACD,8BAA+B,CAC3B,iCACA,qBACA,OACH,CACD,8BAA+B,CAC3B,iCACA,qBACA,OACH,CACD,8BAA+B,CAC3B,iCACA,oBACA,OACH,CACD,8BAA+B,CAC3B,sBACA,qBACA,OACH,CACD,8BAA+B,CAC3B,sBACA,qBACA,OACH,CACD,8BAA+B,CAC3B,sBACA,oBACA,OACH,CACD,8BAA+B,CAC3B,wBACA,qBACA,OACH,CAED,UAAW,CACP,oBACA,4BACA,OACH,AACL,EACAA,EAAU,4BAA4B,CAAG,cACzCA,EAAU,aAAa,CAAG,QAC1BA,EAAU,eAAe,CAAG,KAExByG,CADMA,GAGPzG,EAAU,qBAAqB,EAAKA,CAAAA,EAAU,qBAAqB,CAAG,CAAC,IAFhD,OAAO,CAAG,UAChCyG,GAAsB,MAAM,CAAG,SAEnCzG,EAAU,YAAY,CAAG,IACzBA,EAAU,aAAa,CAAG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AAM,UACN,aAAc,MACd,gBAAiB,OACrB,EACA,CACI,YAAa,KACb,KAAM,UACN,aAAc,MACd,gBAAiB,OACrB,EACA,CACI,YAAa,KACb,KAAM,SACN,aAAc,MACd,gBAAiB,SACrB,EACA,CACI,YAAa,KACb,KAAM,UACN,aAAc,MACd,gBAAiB,SACrB,EACA,CACI,YAAa,KACb,KAAM,UACN,aAAc,MACd,gBAAiB,QACrB,EACA,CACI,YAAa,KACb,KAAM,yBACN,aAAc,MACd,gBAAiB,OACrB,EACA,CACI,YAAa,KACb,KAAM,WACN,aAAc,MACd,gBAAiB,QACrB,EACA,CACI,YAAa,KACb,KAAM,SACN,aAAc,MACd,gBAAiB,QACrB,EACA,CACI,YAAa,KACb,KAAM,SACN,aAAc,MACd,gBAAiB,SACrB,EACA,CACI,YAAa,KACb,KAAM,WACN,aAAc,MACd,gBAAiB,QACrB,EACA,CACI,YAAa,KACb,KAAM,WACN,aAAc,MACd,gBAAiB,QACrB,EACA,CACI,YAAa,KACb,KAAM,SACN,aAAc,MACd,gBAAiB,OACrB,EACA,CACI,YAAa,KACb,KAAM,aACN,aAAc,MACd,gBAAiB,OACrB,EACA,CACI,YAAa,KACb,KAAM,iBACN,aAAc,MACd,gBAAiB,SACrB,EACA,CACI,YAAa,KACb,KAAM,QACN,aAAc,MACd,gBAAiB,QACrB,EACA,CACI,YAAa,KACb,KAAM,WACN,aAAc,MACd,gBAAiB,OACrB,EACA,CACI,YAAa,KACb,KAAM,aACN,aAAc,MACd,gBAAiB,OACrB,EACA,CACI,YAAa,KACb,KAAM,mBACN,aAAc,MACd,gBAAiB,QACrB,EACA,CACI,YAAa,KACb,KAAM,UACN,aAAc,MACd,gBAAiB,OACrB,EACA,CACI,YAAa,KACb,KAAM,aACN,aAAc,MACd,gBAAiB,SACrB,EACA,CACI,YAAa,KACb,KAAM,SACN,aAAc,MACd,gBAAiB,OACrB,EACA,CACI,YAAa,KACb,KAAM,iBACN,aAAc,MACd,gBAAiB,QACrB,EACA,CACI,YAAa,KACb,KAAM,UACN,aAAc,MACd,gBAAiB,OACrB,EACA,CACI,YAAa,KACb,KAAM,qBACN,aAAc,MACd,gBAAiB,QACrB,EACA,CACI,YAAa,KACb,KAAM,UACN,aAAc,MACd,gBAAiB,QACrB,EACA,CACI,YAAa,KACb,KAAM,QACN,aAAc,MACd,gBAAiB,QACrB,EACA,CACI,YAAa,KACb,KAAM,cACN,aAAc,MACd,gBAAiB,QACrB,EACA,CACI,YAAa,KACb,KAAM,UACN,aAAc,MACd,gBAAiB,OACrB,EACA,CACI,YAAa,KACb,KAAM,WACN,aAAc,MACd,gBAAiB,QACrB,EACA,CACI,YAAa,KACb,KAAM,gBACN,aAAc,MACd,gBAAiB,SACrB,EACA,CACI,YAAa,KACb,KAAM,OACN,aAAc,MACd,gBAAiB,SACrB,EACA,CACI,YAAa,KACb,KAAM,UACN,aAAc,MACd,gBAAiB,OACrB,EACA,CACI,YAAa,KACb,KAAM,SACN,aAAc,MACd,gBAAiB,OACrB,EACA,CACI,YAAa,KACb,KAAM,UACN,aAAc,MACd,gBAAiB,OACrB,EACA,CACI,YAAa,KACb,KAAM,UACN,aAAc,MACd,gBAAiB,OACrB,EACA,CACI,YAAa,KACb,KAAM,QACN,aAAc,MACd,gBAAiB,OACrB,EACA,CACI,YAAa,KACb,KAAM,SACN,aAAc,MACd,gBAAiB,OACrB,EACA,CACI,YAAa,KACb,KAAM,YACN,aAAc,MACd,gBAAiB,QACrB,EACA,CACI,YAAa,KACb,KAAM,WACN,aAAc,MACd,gBAAiB,QACrB,EACA,CACI,YAAa,KACb,KAAM,gBACN,aAAc,MACd,gBAAiB,QACrB,EACA,CACI,YAAa,KACb,KAAM,UACN,aAAc,MACd,gBAAiB,OACrB,EACA,CACI,YAAa,KACb,KAAM,UACN,aAAc,MACd,gBAAiB,OACrB,EACA,CACI,YAAa,KACb,KAAM,QACN,aAAc,MACd,gBAAiB,QACrB,EACA,CACI,YAAa,KACb,KAAM,YACN,aAAc,MACd,gBAAiB,QACrB,EACA,CACI,YAAa,KACb,KAAM,OACN,aAAc,MACd,gBAAiB,QACrB,EACA,CACI,YAAa,KACb,KAAM,UACN,aAAc,MACd,gBAAiB,OACrB,EACA,CACI,YAAa,KACb,KAAM,SACN,aAAc,MACd,gBAAiB,OACrB,EACA,CACI,YAAa,KACb,KAAM,QACN,aAAc,MACd,gBAAiB,OACrB,EACA,CACI,YAAa,KACb,KAAM,UACN,aAAc,MACd,gBAAiB,QACrB,EACA,CACI,YAAa,KACb,KAAM,QACN,aAAc,MACd,gBAAiB,QACrB,EACA,CACI,YAAa,KACb,KAAM,SACN,aAAc,MACd,gBAAiB,QACrB,EACA,CACI,YAAa,KACb,KAAM,aACN,aAAc,MACd,gBAAiB,OACrB,EACA,CACI,YAAa,KACb,KAAM,QACN,aAAc,MACd,gBAAiB,OACrB,EACA,CACI,YAAa,KACb,KAAM,gBACN,aAAc,MACd,gBAAiB,OACrB,EACA,CACI,YAAa,KACb,KAAM,SACN,aAAc,MACd,gBAAiB,OACrB,EACA,CACI,YAAa,KACb,KAAM,aACN,aAAc,MACd,gBAAiB,SACrB,EACA,CACI,YAAa,KACb,KAAM,SACN,aAAc,MACd,gBAAiB,OACrB,EACA,CACI,YAAa,KACb,KAAM,UACN,aAAc,MACd,gBAAiB,QACrB,EACA,CACI,YAAa,KACb,KAAM,QACN,aAAc,MACd,gBAAiB,QACrB,EACA,CACI,YAAa,KACb,KAAM,gBACN,aAAc,MACd,gBAAiB,OACrB,EACA,CACI,YAAa,KACb,KAAM,YACN,aAAc,MACd,gBAAiB,OACrB,EACA,CACI,YAAa,KACb,KAAM,aACN,aAAc,MACd,gBAAiB,OACrB,EACA,CACI,YAAa,KACb,KAAM,YACN,aAAc,MACd,gBAAiB,QACrB,EACA,CACI,YAAa,KACb,KAAM,kBACN,aAAc,MACd,gBAAiB,QACrB,EACA,CACI,YAAa,KACb,KAAM,WACN,aAAc,MACd,gBAAiB,OACrB,EACA,CACI,YAAa,KACb,KAAM,QACN,aAAc,MACd,gBAAiB,OACrB,EACA,CACI,YAAa,KACb,KAAM,YACN,aAAc,MACd,gBAAiB,OACrB,EACA,CACI,YAAa,KACb,KAAM,SACN,aAAc,MACd,gBAAiB,QACrB,EACA,CACI,YAAa,KACb,KAAM,UACN,aAAc,MACd,gBAAiB,SACrB,EACA,CACI,YAAa,KACb,KAAM,SACN,aAAc,MACd,gBAAiB,OACrB,EACA,CACI,YAAa,KACb,KAAM,WACN,aAAc,MACd,gBAAiB,OACrB,EACA,CACI,YAAa,KACb,KAAM,aACN,aAAc,MACd,gBAAiB,OACrB,EACA,CACI,YAAa,KACb,KAAM,UACN,aAAc,MACd,gBAAiB,OACrB,EACA,CACI,YAAa,KACb,KAAM,UACN,aAAc,MACd,gBAAiB,QACrB,EACA,CACI,YAAa,KACb,KAAM,QACN,aAAc,MACd,gBAAiB,SACrB,EACA,CACI,YAAa,KACb,KAAM,cACN,aAAc,MACd,gBAAiB,OACrB,EACA,CACI,YAAa,KACb,KAAM,YACN,aAAc,MACd,gBAAiB,SACrB,EACA,CACI,YAAa,KACb,KAAM,cACN,aAAc,MACd,gBAAiB,OACrB,EACA,CACI,YAAa,KACb,KAAM,UACN,aAAc,MACd,gBAAiB,QACrB,EACA,CACI,YAAa,KACb,KAAM,SACN,aAAc,MACd,gBAAiB,OACrB,EACA,CACI,YAAa,KACb,KAAM,OACN,aAAc,MACd,gBAAiB,QACrB,EACA,CACI,YAAa,KACb,KAAM,WACN,aAAc,MACd,gBAAiB,OACrB,EACA,CACI,YAAa,KACb,KAAM,wBACN,aAAc,MACd,gBAAiB,SACrB,EACA,CACI,YAAa,KACb,KAAM,SACN,aAAc,MACd,gBAAiB,QACrB,EACA,CACI,YAAa,KACb,KAAM,WACN,aAAc,MACd,gBAAiB,QACrB,EACA,CACI,YAAa,KACb,KAAM,OACN,aAAc,MACd,gBAAiB,OACrB,EACA,CACI,YAAa,KACb,KAAM,cACN,aAAc,MACd,gBAAiB,OACrB,EACA,CACI,YAAa,KACb,KAAM,SACN,aAAc,MACd,gBAAiB,OACrB,EACA,CACI,YAAa,KACb,KAAM,WACN,aAAc,MACd,gBAAiB,OACrB,EACA,CACI,YAAa,KACb,KAAM,cACN,aAAc,MACd,gBAAiB,SACrB,EACA,CACI,YAAa,KACb,KAAM,QACN,aAAc,MACd,gBAAiB,QACrB,EACA,CACI,YAAa,KACb,KAAM,UACN,aAAc,MACd,gBAAiB,OACrB,EACA,CACI,YAAa,KACb,KAAM,SACN,aAAc,MACd,gBAAiB,OACrB,EACA,CACI,YAAa,KACb,KAAM,SACN,aAAc,MACd,gBAAiB,QACrB,EACA,CACI,YAAa,KACb,KAAM,wBACN,aAAc,MACd,gBAAiB,SACrB,EACA,CACI,YAAa,KACb,KAAM,eACN,aAAc,MACd,gBAAiB,OACrB,EACA,CACI,YAAa,KACb,KAAM,UACN,aAAc,MACd,gBAAiB,QACrB,EACA,CACI,YAAa,KACb,KAAM,SACN,aAAc,MACd,gBAAiB,OACrB,EACA,CACI,YAAa,KACb,KAAM,YACN,aAAc,MACd,gBAAiB,OACrB,EACA,CACI,YAAa,KACb,KAAM,WACN,aAAc,MACd,gBAAiB,OACrB,EACA,CACI,YAAa,KACb,KAAM,WACN,aAAc,MACd,gBAAiB,OACrB,EACA,CACI,YAAa,KACb,KAAM,eACN,aAAc,MACd,gBAAiB,QACrB,EACA,CACI,YAAa,KACb,KAAM,QACN,aAAc,MACd,gBAAiB,OACrB,EACA,CACI,YAAa,KACb,KAAM,YACN,aAAc,MACd,gBAAiB,SACrB,EACA,CACI,YAAa,KACb,KAAM,SACN,aAAc,MACd,gBAAiB,OACrB,EACA,CACI,YAAa,KACb,KAAM,cACN,aAAc,MACd,gBAAiB,OACrB,EACA,CACI,YAAa,KACb,KAAM,SACN,aAAc,MACd,gBAAiB,OACrB,EACA,CACI,YAAa,KACb,KAAM,aACN,aAAc,MACd,gBAAiB,OACrB,EACA,CACI,YAAa,KACb,KAAM,WACN,aAAc,MACd,gBAAiB,QACrB,EACA,CACI,YAAa,KACb,KAAM,WACN,aAAc,MACd,gBAAiB,QACrB,EACA,CACI,YAAa,KACb,KAAM,sBACN,aAAc,MACd,gBAAiB,QACrB,EACA,CACI,YAAa,KACb,KAAM,UACN,aAAc,MACd,gBAAiB,OACrB,EACA,CACI,YAAa,KACb,KAAM,SACN,aAAc,MACd,gBAAiB,OACrB,EACA,CACI,YAAa,KACb,KAAM,eACN,aAAc,MACd,gBAAiB,OACrB,EACA,CACI,YAAa,KACb,KAAM,0BACN,aAAc,MACd,gBAAiB,SACrB,EACA,CACI,YAAa,KACb,KAAM,sCACN,aAAc,MACd,gBAAiB,SACrB,EACA,CACI,YAAa,KACb,KAAM,SACN,aAAc,MACd,gBAAiB,QACrB,EACA,CACI,YAAa,KACb,KAAM,UACN,aAAc,MACd,gBAAiB,OACrB,EACA,CACI,YAAa,KACb,KAAM,uBACN,aAAc,MACd,gBAAiB,OACrB,EACA,CACI,YAAa,KACb,KAAM,iBACN,aAAc,KACd,gBAAiB,OACrB,EACA,CACI,YAAa,KACb,KAAM,gBACN,aAAc,MACd,gBAAiB,QACrB,EACA,CACI,YAAa,KACb,KAAM,UACN,aAAc,MACd,gBAAiB,OACrB,EACA,CACI,YAAa,KACb,KAAM,aACN,aAAc,MACd,gBAAiB,OACrB,EACA,CACI,YAAa,KACb,KAAM,YACN,aAAc,MACd,gBAAiB,OACrB,EACA,CACI,YAAa,KACb,KAAM,UACN,aAAc,MACd,gBAAiB,OACrB,EACA,CACI,YAAa,KACb,KAAM,QACN,aAAc,MACd,gBAAiB,QACrB,EACA,CACI,YAAa,KACb,KAAM,SACN,aAAc,MACd,gBAAiB,QACrB,EACA,CACI,YAAa,KACb,KAAM,WACN,aAAc,MACd,gBAAiB,QACrB,EACH,CACM,IAAIvK,IACPA,CAD4CA,GAO9C,CAAC,GANa,WAAc,CAAG,cAC7BA,GAAY,OAAU,CAAG,KACzBA,GAAY,MAAS,CAAG,SACxBA,GAAY,IAAO,CAAG,OACtBA,GAAY,UAAa,CAAG,OACrBA,IASAiJ,IACPA,CAD0CA,GAO5C,CAAC,GANW,UAAa,CAAG,aAC1BA,GAAU,MAAS,CAAG,UACtBA,GAAU,OAAU,CAAG,MACvBA,GAAU,QAAW,CAAG,MACxBA,GAAU,IAAO,CAAG,OACbA,IAEJ,IAAMuB,GAAuB,CAChC,WAAY,QACZ,UAAW,QACf,EACaC,GAAiB,CAC1B,UAAW,YACX,aAAc,eACd,mBAAoB,qBACpB,OAAQ,SACR,OAAQ,SACR,KAAM,OACN,SAAU,UACd,EACO,IAAIvB,IACPA,CAD4CA,GAO9C,CAAC,GANa,aAAgB,CAAG,oBAC/BA,GAAY,MAAS,CAAG,aACxBA,GAAY,QAAW,CAAG,eAC1BA,GAAY,OAAU,CAAG,cACzBA,GAAY,MAAS,CAAG,aACjBA,IAMJ,IAAMwB,GAAsB,CAC/B,CACI,KAAM,gBACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,cACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,mBACN,SAAU,MACV,YAAa,IACjB,EACA,CACI,KAAM,UACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,UACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,iBACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,UACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,SACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,WACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,aACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,sBACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,YACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,UACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,QACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,YACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,UACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,aACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,UACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,UACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,aACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,WACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,UACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,UACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,SACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,QACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,UACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,SACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,UACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,oCACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,yBACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,WACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,gBACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,SACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,iCACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,yBACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,SACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,WACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,eACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,UACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,aACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,WACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,WACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,SACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,iBACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,2BACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,OACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,QACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,QACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,mBACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,0BACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,WACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,UACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,QACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,cACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,eACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,aACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,mBACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,UACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,aACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,SACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,UACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,UACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,WACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,WACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,qBACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,UACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,QACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,cACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,oBACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,UACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,UACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,WACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,mBACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,gBACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,OACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,UACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,SACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,gBACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,mBACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,8BACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,QACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,SACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,UACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,UACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,QACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,YACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,SACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,YACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,UACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,aACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,OACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,YACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,WACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,SACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,gBACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,SACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,QACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,oCACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,WACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,gBACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,UACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,UACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,QACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,YACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,OACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,UACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,cACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,SACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,QACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,UACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,QACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,SACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,SACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,aACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,QACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,WACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,gBACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,SACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,SACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,aACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,OACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,SACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,UACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,UACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,UACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,QACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,gBACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,YACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,aACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,YACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,aACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,SACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,WACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,WACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,OACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,QACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,mBACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,aACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,aACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,YACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,UACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,SACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,aACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,UACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,SACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,WACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,aACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,aACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,UACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,aACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,UACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,UACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,QACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,QACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,cACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,gBACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,cACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,YACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,QACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,UACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,OACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,iBACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,kBACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,2BACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,SACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,OACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,WACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,QACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,wBACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,SACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,mBACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,WACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,OACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,cACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,mBACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,SACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,WACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,cACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,QACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,aACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,UACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,SACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,SACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,sBACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,4CACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,wBACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,cACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,eACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,4BACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,mCACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,QACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,aACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,iCACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,eACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,UACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,SACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,aACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,eACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,YACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,eACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,WACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,WACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,kBACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,UACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,eACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,2CACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,cACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,QACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,YACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,WACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,yBACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,YACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,SACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,cACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,SACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,aACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,WACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,WACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,cACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,OACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,UACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,QACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,sBACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,UACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,SACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,eACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,2BACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,SACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,wBACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,sBACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,SACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,UACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,uBACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,iBACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,UACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,aACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,UACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,0BACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,YACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,UACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,oBACN,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,QACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,SACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACA,CACI,KAAM,WACN,aAAc,GACd,YAAa,KACb,SAAU,KACd,EACH,A,qICpuJM,IAAMC,EAAqB,CAC9B,KAAM,OACN,SAAU,WACV,SAAU,WACV,mBAAoB,kBACpB,iBAAkB,oBAClB,OAAQ,SACR,eAAgB,4BAChB,aAAc,YACd,aAAc,gBACd,UAAW,iBACX,QAAS,WACT,oBAAqB,uBACrB,2BAA4B,gCAC5B,iBAAkB,MAClB,qBAAsB,2BACtB,YAAa,eACb,WAAY,cACZ,0BAA2B,sCAC3B,iBAAkB,oBAClB,cAAe,iBACf,gBAAiB,mBACjB,gBAAiB,mBACjB,aAAc,gBACd,gBAAiB,aACjB,yBAA0B,MAC1B,QAAS,8BACT,SAAU,WACV,mBAAoB,sBACpB,cAAe,gBACf,aAAc,eACd,SAAU,WACV,kBAAmB,qBACnB,IAAK,MACL,aAAc,gBACd,kBAAmB,qBACnB,UAAW,YACX,UAAW,YACX,IAAK,MACL,QAAS,UACT,OAAQ,SACR,GAAI,kBACJ,QAAS,oBACT,KAAM,OACN,UAAW,YACX,MAAO,QACP,aAAc,eACd,YAAa,qBACb,SAAU,WACV,OAAQ,SACR,WAAY,oBACZ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KAAM,KACN,KAAM,eACV,EACA,CACI,KAAM,KACN,KAAM,UACV,EACA,CACI,KAAM,KACN,KAAM,WACV,EACA,CACI,KAAM,KACN,KAAM,aACV,EACA,CACI,KAAM,KACN,KAAM,UACV,EACA,CACI,KAAM,KACN,KAAM,SACV,EACA,CACI,KAAM,KACN,KAAM,UACV,EACA,CACI,KAAM,KACN,KAAM,QACV,EACA,CACI,KAAM,KACN,KAAM,eACV,EACA,CACI,KAAM,KACN,KAAM,YACV,EACA,CACI,KAAM,KACN,KAAM,YACV,EACA,CACI,KAAM,KACN,KAAM,UACV,EACA,CACI,KAAM,KACN,KAAM,gBACV,EACA,CACI,KAAM,KACN,KAAM,cACV,EACA,CACI,KAAM,KACN,KAAM,MACV,EACA,CACI,KAAM,KACN,KAAM,UACV,EACA,CACI,KAAM,KACN,KAAM,QACV,EACA,CACI,KAAM,KACN,KAAM,cACV,EACA,CACI,KAAM,KACN,KAAM,cACV,EACA,CACI,KAAM,KACN,KAAM,gBACV,EACA,CACI,KAAM,KACN,KAAM,cACV,EACA,CACI,KAAM,KACN,KAAM,WACV,EACA,CACI,KAAM,KACN,KAAM,OACV,EACA,CACI,KAAM,KACN,KAAM,MACV,EACA,CACI,KAAM,KACN,KAAM,SACV,EACA,CACI,KAAM,KACN,KAAM,UACV,EACA,CACI,KAAM,KACN,KAAM,YACV,EACA,CACI,KAAM,KACN,KAAM,eACV,EACA,CACI,KAAM,KACN,KAAM,WACV,EACA,CACI,KAAM,KACN,KAAM,SACV,EACH,CACYC,EAAiC,CAC1C,CACI,KAAM,MACN,KAAM,YACV,EACA,CACI,KAAM,KACN,KAAM,SACV,EACA,CACI,KAAM,KACN,KAAM,kBACV,EACA,CACI,KAAM,KACN,KAAM,UACV,EACA,CACI,KAAM,KACN,KAAM,eACV,EACA,CACI,KAAM,KACN,KAAM,2BACV,EACA,CACI,KAAM,KACN,KAAM,aACV,EACA,CACI,KAAM,KACN,KAAM,SACV,EACA,CACI,KAAM,KACN,KAAM,sBACV,EACA,CACI,KAAM,KA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"}