local l_CorePackages_0 = game:GetService("CorePackages");
local l_useSelector_0 = require(l_CorePackages_0.Workspace.Packages.RoactUtils).Hooks.RoactRodux.useSelector;
local l_Url_0 = require(l_CorePackages_0.Workspace.Packages.Http).Url;
local v3 = require(l_CorePackages_0.Workspace.Packages.VerifiedBadges);
local l_ApiFetchGameDetails_0 = require(l_CorePackages_0.Workspace.Packages.GameDetailRodux).GameDetails.ApiFetchGameDetails;
local l_useGameProductInfoSelector_0 = require(l_CorePackages_0.Workspace.Packages.GameProductInfoRodux).useGameProductInfoSelector;
local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v7 = require(l_Modules_0.Common.memoize);
local v8 = require(l_Modules_0.LuaApp.Constants);
local v9 = require(l_Modules_0.LuaApp.Enum.RetrievalStatus);
local v10 = require(l_Modules_0.LuaApp.Thunks.Games.ApiFetchGameMedia);
local v11 = require(l_CorePackages_0.Workspace.Packages.RobloxAppEnums);
local l_useUiModeInfo_0 = require(l_CorePackages_0.Workspace.Packages.RobloxAppHooks).useUiModeInfo;
local l_UiMode_0 = v11.UiMode;
local v14 = require(l_CorePackages_0.Workspace.Packages.GameIconRodux);
local l_GameIconReducer_0 = v14.GameIcons.GameIconReducer;
local l_useGameIconSelector_0 = v14.GameIcons.useGameIconSelector;
local l_BigGameIconReducer_0 = v14.BigGameIcons.BigGameIconReducer;
local v18 = require(l_Modules_0.LuaApp.Flags.GetFFlagRemoveVerifiedBadgeReducer);
local v19 = require(l_Modules_0.LuaApp.Flags.GetFFlagLuaAppLaunchConnectorFix);
local v20 = require(l_Modules_0.LuaApp.Flags.GetFFlagEnableBigGameIconInDetailsPage);
local l_GetFFlagEnableDetailsPageCommunityLinks_0 = require(l_CorePackages_0.Workspace.Packages.SharedFlags).GetFFlagEnableDetailsPageCommunityLinks;
local l_GetNotificationsExperienceDetailsVariant_0 = require(l_CorePackages_0.Workspace.Packages.SharedFlags).GetNotificationsExperienceDetailsVariant;
local v23 = require(l_Modules_0.LuaApp.Flags.GetFFlagLuaAppShowPillContainsStrongLanguage);
local v24 = require(l_Modules_0.LuaApp.Flags.GetFFlagLuaAppFixNotificationsEnabledLimitReached);
local v25 = require(l_Modules_0.LuaApp.Flags.GetFFlagLuaAppAddNotificationsEnabledAgeGate);
local function _(v26)
    return {
        mediaType = v8.GameMediaImageType.Image,
        imageId = l_Url_0:getPlaceDefaultThumbnailUrl(v26, 768, 432)
    };
end;
local v34 = v7(function(v28, v29, v30)
    local v31 = nil;
    if v28 then
        for _, v33 in pairs(v28) do
            if v33.assetTypeId == v8.GameMediaImageType.Image then
                v31 = v33;
                break;
            end;
        end;
    end;
    if v31 == nil then
        if v30 == v9.Done then
            return {
                mediaType = v8.GameMediaImageType.Image,
                imageId = l_Url_0:getPlaceDefaultThumbnailUrl(v29, 768, 432)
            };
        else
            return nil;
        end;
    else
        return v31;
    end;
end);
return function(v35)
    local v36 = nil;
    if not v20() or not v19() then
        v36 = l_useGameIconSelector_0(v35.universeId);
    else
        local v37 = l_useUiModeInfo_0();
        v36 = l_useSelector_0(function(v38)
            if not (v37 and v37.uiMode == l_UiMode_0.TenFoot) then
                return v38[l_GameIconReducer_0.key][v35.universeId];
            else
                return v38[l_BigGameIconReducer_0.key][v35.universeId] or v38[l_GameIconReducer_0.key][v35.universeId];
            end;
        end);
    end;
    return {
        thumbnail = v36,
        bannerImageId = l_useSelector_0(function(v39)
            local v40 = v34(v39.GameMedia[v35.universeId], v35.placeId, (v10.GetFetchingStatus(v39, v35.universeId)));
            if not v40 then
                return nil;
            else
                return v40.imageId;
            end;
        end),
        gameInfo = l_useSelector_0(function(v41)
            return v41.Games[v35.universeId];
        end),
        gameDetail = l_useSelector_0(function(v42)
            return v42.GameDetails[v35.universeId];
        end),
        creatorVerified = l_useSelector_0(function(v43)
            if not v18() then
                return (v3.isCreatorOfGameVerified(v43, v35));
            else
                return nil;
            end;
        end),
        gameDetailsPageDataStatus = l_useSelector_0(function(v44)
            return l_ApiFetchGameDetails_0.GetFetchingStatus(v44, v35.universeId);
        end),
        gameProductInfo = l_useGameProductInfoSelector_0(v35.universeId),
        socialLinks = l_useSelector_0(function(v45)
            local v46 = v45.GameSocialLinks[v35.universeId];
            if not v46 then
                return nil;
            else
                return v46.externalLinks;
            end;
        end),
        ageRecommendations = l_useSelector_0(function(v47)
            return v47.AgeRecommendations[v35.universeId];
        end),
        communityLink = if not l_GetFFlagEnableDetailsPageCommunityLinks_0() then nil else l_useSelector_0(function(v48)
            return v48.CommunityLinks.ExperienceCommunityLinks[v35.universeId] or nil;
        end),
        assetTextFilterSettings = if not v23() then nil else if not v23() then nil else l_useSelector_0(function(v49)
            return v49.AssetTextFilterSettings[v35.universeId];
        end),
        gameFollowings = if not l_GetNotificationsExperienceDetailsVariant_0.enableNotificationsEDPChanges then nil else if not l_GetNotificationsExperienceDetailsVariant_0.enableNotificationsEDPChanges then nil else l_useSelector_0(function(v50)
            return v50.GameFollowings[v35.universeId];
        end),
        notificationsEnabled = if not v24() then nil else if not v24() then nil else l_useSelector_0(function(v51)
            return v51.ExperienceNotificationsEnabled;
        end),
        isLocalUserUnder13 = if not v25() then nil else if not v25() then nil else l_useSelector_0(function(v52)
            return v52.IsLocalUserUnder13;
        end)
    };
end;


local _ = game:GetService("CoreGui").RobloxGui.Modules;
local l_CorePackages_0 = game:GetService("CorePackages");
local v2 = require(l_CorePackages_0.Packages.t);
local v3 = require(l_CorePackages_0.Roact);
local v4 = require(l_CorePackages_0.RoactRodux);
local l_FormFactor_0 = require(l_CorePackages_0.Workspace.Packages.FormFactor).Enums.FormFactor;
local v6 = require(script.Parent.ExperienceGuidelinesExplainedFull);
local v7 = require(script.Parent.ExperienceGuidelinesExplainedModal);
local v8 = v3.PureComponent:extend("ExperienceGuidelinesExplained");
v8.validateProps = v2.strictInterface({
    formFactor = v2.string,
    universeId = v2.string,
    containerWidth = v2.optional(v2.integer),
    focusController = v2.optional(v2.table),
    defaultChildRef = v2.optional(v2.table),
    hideCloseButton = v2.optional(v2.boolean),
    closeCentralOverlayThunk = v2.optional(v2.callback)
});
v8.render = function(v9)
    if v9.props.formFactor == l_FormFactor_0.WIDE then
        return v3.createElement(v7, {
            universeId = v9.props.universeId,
            hideCloseButton = v9.props.hideCloseButton
        });
    else
        return v3.createElement(v6, {
            universeId = v9.props.universeId
        });
    end;
end;
return (v4.connect(function(v10, _)
    return {
        formFactor = v10.FormFactor
    };
end)(v8));


local l_CorePackages_0 = game:GetService("CorePackages");
local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v2 = require(l_CorePackages_0.Roact);
local v3 = require(l_CorePackages_0.RoactRodux);
local l_RoactServices_0 = require(l_CorePackages_0.Workspace.Packages.RoactServices).RoactServices;
local v5 = require(l_Modules_0.LuaApp.Services.RoactLocalization);
local v6 = require(l_CorePackages_0.UIBlox);
local v7 = require(l_Modules_0.LuaApp.Thunks.NavigateDown);
local l_Focusable_0 = require(l_CorePackages_0.Packages.RoactGamepad).Focusable;
local v9 = require(l_Modules_0.LuaApp.AppPage);
local v10 = require(l_Modules_0.LuaApp.Components.ExperienceGuidelines.ExperienceGuidelinesList);
local v11 = require(l_Modules_0.LuaApp.Components.FullscreenPageWithSafeArea);
local v12 = require(l_Modules_0.LuaApp.Components.TopBar.TopBar);
local v13 = require(l_Modules_0.LuaApp.Enum.TransitionAnimation);
local l_Button_0 = v6.App.Button.Button;
local l_ButtonType_0 = v6.App.Button.Enum.ButtonType;
local l_withStyle_0 = v6.Style.withStyle;
local v17 = require(l_CorePackages_0.Packages.t);
local v18 = require(l_Modules_0.LuaApp.Models.ExperienceGuidelinesApi.AgeRecommendationDetails);
local v19 = require(l_Modules_0.LuaApp.Flags.ExperienceGuidelinesUrls);
local v20 = v2.PureComponent:extend("ExperienceGuidelinesExplainedFull");
v20.validateProps = v17.strictInterface({
    ageRecommendations = v17.optional(v18.validateModel),
    universeId = v17.string,
    localization = v17.table,
    navigateDown = v17.callback
});
v20.init = function(v21)
    local l_FStringExperienceGuidelinesExplainedPageUrl_0 = v19.FStringExperienceGuidelinesExplainedPageUrl;
    v21.onLearnMoreActivated = function()
        v21.props.navigateDown({
            name = v9.GenericWebPage,
            detail = l_FStringExperienceGuidelinesExplainedPageUrl_0,
            extraProps = {
                title = v21.props.localization:Format("Feature.GameDetails.Label.AgeGuidelines"),
                transitionAnimation = v13.SlideInFromRight
            }
        });
    end;
end;
v20.render = function(v23)
    local l_localization_0 = v23.props.localization;
    local l_ageRecommendations_0 = v23.props.ageRecommendations;
    return l_withStyle_0(function(v26)
        return v2.createElement(v11, {
            BackgroundColor3 = v26.Theme.BackgroundDefault.Color,
            BackgroundTransparency = v26.Theme.BackgroundDefault.Transparency,
            includeStatusBar = true
        }, {
            ViewFrame = v2.createElement("Frame", {
                Size = UDim2.new(1, 0, 0, 0),
                BorderSizePixel = 0,
                AutomaticSize = Enum.AutomaticSize.Y,
                Position = UDim2.fromOffset(0, 0),
                BackgroundTransparency = 1
            }),
            TopBar = v2.createElement(v12.Container, {
                leftItem = v12.BackButton
            }),
            PageContent = v2.createElement(v12.PageContent, {}, {
                SectionLayout = v2.createElement("UIListLayout", {
                    SortOrder = Enum.SortOrder.LayoutOrder,
                    FillDirection = Enum.FillDirection.Vertical,
                    HorizontalAlignment = Enum.HorizontalAlignment.Left,
                    Padding = UDim.new(0, 24)
                }),
                SecionPadding = v2.createElement("UIPadding", {
                    PaddingLeft = UDim.new(0, 24),
                    PaddingRight = UDim.new(0, 24),
                    PaddingTop = UDim.new(0, 32),
                    PaddingBottom = UDim.new(0, 32)
                }),
                DescriptorList = l_ageRecommendations_0 and v2.createElement(v10, {
                    layoutOrder = 1,
                    ageRecommendations = l_ageRecommendations_0
                }),
                LearnMoreButton = v2.createElement(l_Focusable_0[l_Button_0], {
                    buttonType = l_ButtonType_0.Secondary,
                    layoutOrder = 2,
                    size = UDim2.new(1, 0, 0, 48),
                    text = l_localization_0:Format("Feature.GameDetails.Label.LearnMore"),
                    onActivated = v23.onLearnMoreActivated
                })
            })
        });
    end);
end;
return (l_RoactServices_0.connect({
    localization = v5
})((v3.connect(function(v27, v28)
    return {
        ageRecommendations = v27.AgeRecommendations[v28.universeId]
    };
end, function(v29)
    return {
        navigateDown = function(v30)
            return v29(v7(v30));
        end
    };
end)(v20))));


local l_CorePackages_0 = game:GetService("CorePackages");
local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v2 = require(l_CorePackages_0.Roact);
local v3 = require(l_CorePackages_0.RoactRodux);
local l_RoactAppPolicy_0 = require(l_CorePackages_0.Workspace.Packages.UniversalAppPolicy).RoactAppPolicy;
local v5 = require(l_CorePackages_0.Packages.t);
local l_RoactServices_0 = require(l_CorePackages_0.Workspace.Packages.RoactServices).RoactServices;
local v7 = require(l_Modules_0.LuaApp.Services.RoactLocalization);
local v8 = require(l_CorePackages_0.UIBlox);
local l_AppLinking_0 = require(l_CorePackages_0.Workspace.Packages.RoactServiceTags).AppLinking;
local v10 = require(l_Modules_0.LuaApp.openExternalBrowser);
local v11 = require(l_Modules_0.LuaApp.Thunks.NavigateDown);
local v12 = require(l_Modules_0.LuaApp.Thunks.NavigateBack);
local v13 = require(l_Modules_0.LuaApp.AppPage);
local v14 = require(l_Modules_0.LuaApp.Components.ExperienceGuidelines.ExperienceGuidelinesList);
local v15 = require(l_Modules_0.LuaApp.Enum.TransitionAnimation);
local l_PartialPageModal_0 = v8.App.Dialog.Modal.PartialPageModal;
local l_ButtonType_0 = v8.App.Button.Enum.ButtonType;
local v18 = require(l_Modules_0.LuaApp.Models.ExperienceGuidelinesApi.AgeRecommendationDetails);
local v19 = require(l_Modules_0.LuaApp.Flags.ExperienceGuidelinesUrls);
local l_GetFFlagAddExperienceGuidelinesToActionBar10ft_0 = require(l_CorePackages_0.Workspace.Packages.SharedFlags).GetFFlagAddExperienceGuidelinesToActionBar10ft;
local l_GetFFlagUseExternalBrowserForAgeGuidelines10ft_0 = require(l_CorePackages_0.Workspace.Packages.SharedFlags).GetFFlagUseExternalBrowserForAgeGuidelines10ft;
local v22 = v2.PureComponent:extend("ExperienceGuidelinesExplainedModal");
v22.validateProps = v5.strictInterface({
    ageRecommendations = v5.optional(v18.validateModel),
    hideCloseButton = v5.optional(v5.boolean),
    universeId = v5.string,
    localization = v5.table,
    navigateDown = v5.callback,
    navigateBack = v5.callback,
    screenSize = v5.Vector2,
    webViewSupport = v5.boolean,
    linking = v5.table,
    useExternalBrowserForAgeGuidelines = v5.optional(v5.boolean)
});
v22.init = function(v23)
    local l_FStringExperienceGuidelinesExplainedPageUrl_0 = v19.FStringExperienceGuidelinesExplainedPageUrl;
    v23.onLearnMoreActivated = function()
        if not v23.props.useExternalBrowserForAgeGuidelines then
            v23.props.navigateDown({
                name = v13.GenericWebPage,
                detail = l_FStringExperienceGuidelinesExplainedPageUrl_0,
                extraProps = {
                    title = v23.props.localization:Format("Feature.GameDetails.Label.AgeGuidelines"),
                    transitionAnimation = v15.SlideInFromRight
                }
            });
            return ;
        else
            v10(v23.props.linking, l_FStringExperienceGuidelinesExplainedPageUrl_0);
            return ;
        end;
    end;
    v23.closeModal = function()
        v23.props.navigateBack();
    end;
end;
v22.render = function(v25)
    local l_localization_0 = v25.props.localization;
    local l_ageRecommendations_0 = v25.props.ageRecommendations;
    return v2.createElement("ImageButton", {
        AutoButtonColor = false,
        Size = UDim2.new(1, 0, 1, 0),
        ImageTransparency = 1,
        BackgroundColor3 = Color3.new(0, 0, 0),
        BackgroundTransparency = 1,
        BorderSizePixel = 0,
        Selectable = (not l_GetFFlagAddExperienceGuidelinesToActionBar10ft_0() or not v25.props.hideCloseButton) and nil
    }, {
        Overlay = v2.createElement("Frame", {
            Size = UDim2.new(1, 0, 1, 0),
            BorderSizePixel = 0,
            BackgroundTransparency = 1
        }, {
            Content = v2.createElement(l_PartialPageModal_0, {
                title = l_localization_0:Format("Feature.GameDetails.Label.AgeGuidelines"),
                screenSize = v25.props.screenSize,
                onCloseClicked = if not not l_GetFFlagAddExperienceGuidelinesToActionBar10ft_0() and v25.props.hideCloseButton then nil else v25.closeModal,
                buttonStackProps = if not v25.props.webViewSupport then nil else {
                    forcedFillDirection = Enum.FillDirection.Vertical,
                    buttonHeight = 48,
                    buttons = {
                        {
                            buttonType = l_ButtonType_0.Secondary,
                            props = {
                                isDisabled = false,
                                onActivated = v25.onLearnMoreActivated,
                                text = l_localization_0:Format("Feature.GameDetails.Label.LearnMore")
                            }
                        }
                    }
                }
            }, {
                ViewFrame = v2.createElement("Frame", {
                    AutomaticSize = Enum.AutomaticSize.XY,
                    BackgroundTransparency = 1
                }, {
                    UIPadding = v2.createElement("UIPadding", {
                        PaddingTop = UDim.new(0, 24),
                        PaddingBottom = UDim.new(0, 24)
                    }),
                    DescriptorList = l_ageRecommendations_0 and v2.createElement(v14, {
                        ageRecommendations = l_ageRecommendations_0
                    })
                })
            })
        })
    });
end;
return (l_RoactAppPolicy_0.connect(function(v28)
    return {
        webViewSupport = v28.getWebViewSupport(),
        useExternalBrowserForAgeGuidelines = if not l_GetFFlagUseExternalBrowserForAgeGuidelines10ft_0() then nil else v28.getUseExternalBrowserForAgeGuidelines()
    };
end)((l_RoactServices_0.connect({
    localization = v7,
    linking = l_AppLinking_0
})((v3.connect(function(v29, v30)
    return {
        screenSize = v29.ScreenSize,
        ageRecommendations = v29.AgeRecommendations[v30.universeId]
    };
end, function(v31)
    return {
        navigateDown = function(v32)
            return v31(v11(v32));
        end,
        navigateBack = function()
            return v31(v12());
        end
    };
end)(v22))))));


local l_CorePackages_0 = game:GetService("CorePackages");
local _ = game:GetService("CoreGui").RobloxGui.Modules;
local v2 = require(l_CorePackages_0.Roact);
local v3 = require(l_CorePackages_0.UIBlox);
local l_withStyle_0 = v3.Style.withStyle;
local l_StyledTextLabel_0 = v3.App.Text.StyledTextLabel;
local v6 = require(l_CorePackages_0.Packages.t);
local v7 = v2.PureComponent:extend("ExperienceGuidelinesHeader");
v7.validateProps = v6.strictInterface({
    ageSummary = v6.string
});
v7.init = function(_)
end;
v7.render = function(v9)
    local l_ageSummary_0 = v9.props.ageSummary;
    return l_withStyle_0(function(v11)
        return v2.createElement("Frame", {
            BackgroundTransparency = 1,
            BorderSizePixel = 0,
            AutomaticSize = Enum.AutomaticSize.XY,
            Position = UDim2.new(1, 0, 0.5, 0),
            AnchorPoint = Vector2.new(1, 0.5)
        }, {
            AgeDescription = v2.createElement(l_StyledTextLabel_0, {
                fontStyle = v11.Font.SubHeader1,
                colorStyle = v11.Theme.TextDefault,
                size = UDim2.new(1, 0, 0, 0),
                fluidSizing = false,
                textXAlignment = Enum.TextXAlignment.Right,
                textYAlignment = Enum.TextYAlignment.Center,
                automaticSize = Enum.AutomaticSize.XY,
                text = l_ageSummary_0
            })
        });
    end);
end;
return v7;


local l_CorePackages_0 = game:GetService("CorePackages");
local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v2 = require(l_CorePackages_0.Packages.t);
local l_memoize_0 = require(l_CorePackages_0.Workspace.Packages.AppCommonLib).memoize;
local v4 = require(l_CorePackages_0.Roact);
local l_RoactServices_0 = require(l_CorePackages_0.Workspace.Packages.RoactServices).RoactServices;
local v6 = require(l_Modules_0.LuaApp.Services.RoactLocalization);
local v7 = require(l_CorePackages_0.UIBlox);
local l_withStyle_0 = v7.Style.withStyle;
local l_StyledTextLabel_0 = v7.App.Text.StyledTextLabel;
local v10 = require(l_Modules_0.LuaApp.Models.ExperienceGuidelinesApi.AgeRecommendationDetails);
local v11 = v4.PureComponent:extend("ExperienceGuidelinesList");
v11.validateProps = v2.strictInterface({
    ageRecommendations = v10.validateModel,
    localization = v2.table,
    layoutOrder = v2.optional(v2.number)
});
v11.init = function(v12)
    v12.createDescriptorLabels = function(v13, v14)
        local v15 = {};
        for v16, v17 in ipairs(v14) do
            v15["Descriptor" .. v16] = v4.createElement(l_StyledTextLabel_0, {
                layoutOrder = v16 + 1,
                fontStyle = v13.Font.Body,
                colorStyle = v13.Theme.TextDefault,
                size = UDim2.new(1, 0, 0, 0),
                fluidSizing = false,
                textXAlignment = Enum.TextXAlignment.Left,
                textYAlignment = Enum.TextYAlignment.Center,
                automaticSize = Enum.AutomaticSize.Y,
                text = v17.displayName
            });
        end;
        return v15;
    end;
    v12.createContentList = function(v18, v19)
        local v20 = {
            Layout = v4.createElement("UIListLayout", {
                SortOrder = Enum.SortOrder.LayoutOrder,
                FillDirection = Enum.FillDirection.Vertical,
                HorizontalAlignment = Enum.HorizontalAlignment.Left,
                Padding = UDim.new(0, 8)
            })
        };
        for v21, v22 in pairs((v12.createDescriptorLabels(v18, v19))) do
            v20[v21] = v22;
        end;
        return v20;
    end;
    v12.createDescriptors = l_memoize_0(function(v23)
        local v24 = {};
        local l_descriptorUsages_0 = v23.descriptorUsages;
        if l_descriptorUsages_0 ~= nil then
            for v26, v27 in ipairs(l_descriptorUsages_0) do
                local l_descriptor_0 = v27.descriptor;
                if l_descriptor_0 then
                    v24[v26] = {
                        displayName = l_descriptor_0.displayName
                    };
                end;
            end;
        end;
        return v24;
    end);
end;
v11.render = function(v29)
    local l_localization_0 = v29.props.localization;
    local l_ageRecommendations_0 = v29.props.ageRecommendations;
    local v32 = nil;
    local v33 = nil;
    if not l_ageRecommendations_0 then
        v32 = {};
        v33 = l_localization_0:Format("Feature.GameDetails.Label.Unavailable");
    else
        v32 = v29.createDescriptors(l_ageRecommendations_0);
        local l_ageRecommendation_0 = l_ageRecommendations_0.summary.ageRecommendation;
        v33 = if not l_ageRecommendation_0 then l_localization_0:Format("Feature.GameDetails.Label.Unavailable") else l_ageRecommendation_0.displayName;
    end;
    return l_withStyle_0(function(v35)
        return v4.createElement("Frame", {
            LayoutOrder = v29.props.layoutOrder,
            BackgroundColor3 = v35.Theme.BackgroundDefault.Color,
            BackgroundTransparency = 1,
            Size = UDim2.new(1, 0, 0, 0),
            AutomaticSize = Enum.AutomaticSize.XY
        }, {
            MainLayout = v4.createElement("UIListLayout", {
                SortOrder = Enum.SortOrder.LayoutOrder,
                FillDirection = Enum.FillDirection.Vertical,
                HorizontalAlignment = Enum.HorizontalAlignment.Left,
                Padding = UDim.new(0, 24)
            }),
            SummaryLabel = v4.createElement(l_StyledTextLabel_0, {
                layoutOrder = 1,
                fontStyle = v35.Font.Title,
                colorStyle = v35.Theme.TextEmphasis,
                size = UDim2.new(1, 0, 0, 0),
                fluidSizing = false,
                textXAlignment = Enum.TextXAlignment.Center,
                textYAlignment = Enum.TextYAlignment.Center,
                automaticSize = Enum.AutomaticSize.Y,
                text = v33
            }),
            ListFrame = v4.createElement("Frame", {
                LayoutOrder = 2,
                Size = UDim2.new(1, 0, 0, 0),
                BorderSizePixel = 1,
                AutomaticSize = Enum.AutomaticSize.Y,
                Position = UDim2.fromOffset(0, 0),
                BackgroundTransparency = 1
            }, (v29.createContentList(v35, v32)))
        });
    end);
end;
return (l_RoactServices_0.connect({
    localization = v6
})(v11));


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v1 = require(game:GetService("CorePackages").Cryo);
local v2 = require(l_Modules_0.Common.Roact);
local v3 = require(l_Modules_0.Common.Text);
local v4 = require(l_Modules_0.LuaApp.Constants);
local v5 = require(l_Modules_0.LuaApp.Components.DEPRECATED_ImageSetButton);
local v6 = require(l_Modules_0.LuaApp.Components.DEPRECATED_ImageSetLabel);
local l_WHITE_0 = v4.Color.WHITE;
local l_SourceSans_0 = Enum.Font.SourceSans;
local l_GREEN_PRIMARY_0 = v4.Color.GREEN_PRIMARY;
local l_Center_0 = Enum.HorizontalAlignment.Center;
local v11 = Rect.new(3, 3, 4, 4);
local l_Slice_0 = Enum.ScaleType.Slice;
local l_game_EngineFeature_0 = game:GetEngineFeature("TextBoundsRoundUp");
local v14 = v2.PureComponent:extend("FitImageTextButton");
v14.defaultProps = {
    backgroundColor = l_GREEN_PRIMARY_0,
    height = 32,
    iconRightPadding = 3,
    iconSize = 16,
    layoutOrder = 0,
    text = "",
    textColor = l_WHITE_0,
    textFont = l_SourceSans_0,
    textSize = 20,
    horizontalPadding = 7,
    verticalPadding = 0,
    maxWidth = 0,
    minWidth = 1000,
    scaleType = l_Slice_0,
    sliceCenter = v11,
    anchorPoint = Vector2.new(0, 0),
    position = UDim2.new(0, 0, 0, 0)
};
v14.getImageButtonAndTextWidth = function(v15)
    local l_maxWidth_0 = v15.props.maxWidth;
    local l_minWidth_0 = v15.props.minWidth;
    local l_text_0 = v15.props.text;
    local l_textFont_0 = v15.props.textFont;
    local l_textSize_0 = v15.props.textSize;
    local l_horizontalPadding_0 = v15.props.horizontalPadding;
    local _ = v15.props.verticalPadding;
    local v23 = v15.props.leftIcon and true;
    local v24 = v3.GetTextWidth(l_text_0, l_textFont_0, l_textSize_0);
    local l_l_Center_0_0 = l_Center_0;
    if not l_game_EngineFeature_0 then
        v24 = v24 - 2;
    end;
    local v26 = v24 + 2 * l_horizontalPadding_0;
    if v23 then
        v26 = (v26 + v15.props.iconRightPadding) + v15.props.iconSize;
    end;
    if l_maxWidth_0 < v26 then
        l_l_Center_0_0 = Enum.HorizontalAlignment.Left;
    end;
    return math.max(l_minWidth_0, (math.min(v26, l_maxWidth_0))), v24, l_l_Center_0_0;
end;
v14.render = function(v27)
    local l_backgroundImage_0 = v27.props.backgroundImage;
    local l_backgroundColor_0 = v27.props.backgroundColor;
    local l_backgroundTransparency_0 = v27.props.backgroundTransparency;
    local l_height_0 = v27.props.height;
    local l_horizontalPadding_1 = v27.props.horizontalPadding;
    local l_verticalPadding_1 = v27.props.verticalPadding;
    local l_iconRightPadding_0 = v27.props.iconRightPadding;
    local l_iconSize_0 = v27.props.iconSize;
    local l_iconColor_0 = v27.props.iconColor;
    local l_layoutOrder_0 = v27.props.layoutOrder;
    local l_leftIcon_0 = v27.props.leftIcon;
    local l_onActivated_0 = v27.props.onActivated;
    local l_text_1 = v27.props.text;
    local l_textColor_0 = v27.props.textColor;
    local l_textTransparency_0 = v27.props.textTransparency;
    local l_textFont_1 = v27.props.textFont;
    local l_textSize_1 = v27.props.textSize;
    local l_sliceCenter_0 = v27.props.sliceCenter;
    local l_scaleType_0 = v27.props.scaleType;
    local v47 = l_leftIcon_0 and true;
    local l_anchorPoint_0 = v27.props.anchorPoint;
    local l_position_0 = v27.props.position;
    local v50, v51, v52 = v27:getImageButtonAndTextWidth();
    return v2.createElement(v5, {
        AutoButtonColor = false,
        BackgroundTransparency = 1,
        BorderSizePixel = 0,
        Image = l_backgroundImage_0,
        ImageColor3 = l_backgroundColor_0,
        ImageTransparency = l_backgroundTransparency_0,
        LayoutOrder = l_layoutOrder_0,
        ScaleType = l_scaleType_0,
        SliceCenter = l_sliceCenter_0,
        Size = UDim2.new(0, v50, 0, l_height_0),
        AnchorPoint = l_anchorPoint_0,
        Position = l_position_0,
        [v2.Event.Activated] = l_onActivated_0,
        [v2.Ref] = v27.props.forwardRef
    }, {
        Padding = v2.createElement("UIPadding", {
            PaddingLeft = UDim.new(0, l_horizontalPadding_1),
            PaddingRight = UDim.new(0, l_horizontalPadding_1),
            PaddingTop = UDim.new(0, l_verticalPadding_1),
            PaddingBottom = UDim.new(0, l_verticalPadding_1)
        }),
        Layout = v2.createElement("UIListLayout", {
            FillDirection = Enum.FillDirection.Horizontal,
            HorizontalAlignment = v52,
            Padding = UDim.new(0, not not v47 and l_iconRightPadding_0 or 0),
            SortOrder = Enum.SortOrder.LayoutOrder,
            VerticalAlignment = Enum.VerticalAlignment.Center
        }),
        LeftIcon = v47 and v2.createElement(v6, {
            BackgroundTransparency = 1,
            BorderSizePixel = 0,
            Image = l_leftIcon_0,
            LayoutOrder = 1,
            ScaleType = Enum.ScaleType.Fit,
            Size = UDim2.new(0, l_iconSize_0, 0, l_iconSize_0),
            ImageColor3 = l_iconColor_0
        }),
        Text = v2.createElement("TextLabel", {
            BackgroundTransparency = 1,
            Font = l_textFont_1,
            LayoutOrder = 2,
            Size = UDim2.new(0, v51, 1, 0),
            Text = l_text_1,
            TextColor3 = l_textColor_0,
            TextTransparency = l_textTransparency_0,
            TextSize = l_textSize_1,
            TextXAlignment = Enum.TextXAlignment.Left,
            TextYAlignment = Enum.TextYAlignment.Center
        })
    });
end;
return v2.forwardRef(function(v53, v54)
    return v2.createElement(v14, v1.Dictionary.join(v53, {
        forwardRef = v54
    }));
end);


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local l_CorePackages_0 = game:GetService("CorePackages");
local v2 = require(l_Modules_0.Common.Roact);
local v3 = require(l_Modules_0.LuaApp.Constants);
local v4 = require(l_Modules_0.LuaApp.FitChildren);
local v5 = require(l_Modules_0.LuaApp.Components.FitTextLabel);
local v6 = require(l_Modules_0.LuaApp.Components.LocalizedFitTextLabel);
local l_ImageSetLabel_0 = require(l_CorePackages_0.UIBlox).Core.ImageSet.ImageSetLabel;
local v8 = v2.PureComponent:extend("FitImageTextFrame");
v8.defaultProps = {
    Position = UDim2.new(0, 0, 0, 0),
    Size = UDim2.new(0, 0, 1, 0),
    LayoutOrder = 1,
    VerticalAlignment = Enum.VerticalAlignment.Center,
    padding = 0,
    imageProps = {
        ImageColor3 = v3.Color.GRAY2,
        ImageTransparency = 0
    },
    textProps = {
        Font = Enum.Font.SourceSans,
        TextColor3 = v3.Color.GRAY2,
        TextTransparency = 0,
        useLocalizedText = false
    }
};
v8.render = function(v9)
    local l_l_ImageSetLabel_0_0 = l_ImageSetLabel_0;
    local l_Position_0 = v9.props.Position;
    local l_Size_0 = v9.props.Size;
    local l_LayoutOrder_0 = v9.props.LayoutOrder;
    local l_VerticalAlignment_0 = v9.props.VerticalAlignment;
    local l_padding_0 = v9.props.padding;
    local l_imageProps_0 = v9.props.imageProps;
    local l_textProps_0 = v9.props.textProps;
    return v2.createElement(v4.FitFrame, {
        Position = l_Position_0,
        Size = l_Size_0,
        BackgroundTransparency = 1,
        BorderSizePixel = 0,
        LayoutOrder = l_LayoutOrder_0,
        fitAxis = v4.FitAxis.Width
    }, {
        Layout = v2.createElement("UIListLayout", {
            SortOrder = Enum.SortOrder.LayoutOrder,
            FillDirection = Enum.FillDirection.Horizontal,
            VerticalAlignment = l_VerticalAlignment_0,
            Padding = UDim.new(0, l_padding_0)
        }),
        Image = v2.createElement(l_l_ImageSetLabel_0_0, {
            LayoutOrder = 1,
            Size = l_imageProps_0.Size,
            BackgroundTransparency = 1,
            BorderSizePixel = 0,
            Image = l_imageProps_0.Image,
            ImageColor3 = l_imageProps_0.ImageColor3,
            ImageTransparency = l_imageProps_0.ImageTransparency
        }),
        Text = v2.createElement(not not l_textProps_0.useLocalizedText and v6 or v5, {
            LayoutOrder = 2,
            Size = UDim2.new(0, 0, 1, 0),
            BackgroundTransparency = 1,
            BorderSizePixel = 0,
            Font = l_textProps_0.Font,
            Text = l_textProps_0.Text,
            TextSize = l_textProps_0.TextSize,
            TextColor3 = l_textProps_0.TextColor3,
            TextTransparency = l_textProps_0.TextTransparency,
            fitAxis = v4.FitAxis.Width
        })
    });
end;
return v8;


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v1 = require(game:GetService("CorePackages").Cryo);
local v2 = require(l_Modules_0.Common.Roact);
local v3 = require(l_Modules_0.Common.Immutable);
local v4 = require(l_Modules_0.Common.Text);
local v5 = require(l_Modules_0.LuaApp.FitChildren);
local v6 = v2.PureComponent:extend("FitTextButton");
v6.defaultProps = {
    fitAxis = v5.FitAxis.Height
};
v6.init = function(v7)
    v7.ref = v7.props.forwardRef or v2.createRef();
    v7.resize = function(v8)
        local l_fitAxis_0 = v7.props.fitAxis;
        if not (l_fitAxis_0 ~= v5.FitAxis.Width) or l_fitAxis_0 == v5.FitAxis.Both then
            v8.Size = UDim2.new(UDim.new(0, v4.GetTextWidth(v8.Text, v8.Font, v8.TextSize)), l_fitAxis_0 == v5.FitAxis.Both and UDim.new(0, v8.TextSize) or v8.Size.Height);
            return ;
        else
            v8.Size = UDim2.new(v8.Size.Width, (UDim.new(0, v4.GetTextHeight(v8.Text, v8.Font, v8.TextSize, v8.AbsoluteSize.X))));
            return ;
        end;
    end;
end;
v6.render = function(v10)
    return v2.createElement("TextButton", v3.JoinDictionaries(v3.RemoveFromDictionary(v10.props, "fitAxis", "forwardRef"), {
        [v2.Ref] = v10.ref,
        [v2.Change.Text] = v10.resize,
        [v2.Change.TextSize] = v10.resize,
        [v2.Change.AbsoluteSize] = (v10.props.fitAxis or v5.FitAxis.Height) == v5.FitAxis.Height and v10.resize or nil
    }));
end;
v6.didMount = function(v11)
    v11.resize(v11.ref.current);
end;
return v2.forwardRef(function(v12, v13)
    return v2.createElement(v6, v1.Dictionary.join(v12, {
        forwardRef = v13
    }));
end);


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v1 = require(l_Modules_0.Common.Roact);
local v2 = require(l_Modules_0.Common.Immutable);
local v3 = require(l_Modules_0.Common.Text);
local v4 = require(l_Modules_0.LuaApp.FitChildren);
local v5 = v1.PureComponent:extend("FitTextLabel");
v5.defaultProps = {
    fitAxis = v4.FitAxis.Height,
    maxWidth = nil
};
v5.init = function(v6)
    v6.onRef = function(v7)
        v6.ref = v7;
    end;
    v6.resize = function(v8)
        local l_fitAxis_0 = v6.props.fitAxis;
        local l_maxWidth_0 = v6.props.maxWidth;
        if not (l_fitAxis_0 ~= v4.FitAxis.Width) or l_fitAxis_0 == v4.FitAxis.Both then
            local v11 = UDim.new(0, v3.GetTextWidth(v8.Text, v8.Font, v8.TextSize));
            local v12 = nil;
            if l_maxWidth_0 ~= nil and l_maxWidth_0 < v11.Offset then
                v11 = UDim.new(0, l_maxWidth_0);
                v12 = UDim.new(0, v3.GetTextHeight(v8.Text, v8.Font, v8.TextSize, v11.Offset));
            else
                v12 = l_fitAxis_0 == v4.FitAxis.Both and UDim.new(0, v8.TextSize) or v8.Size.Height;
            end;
            v6:setState({
                width = v11,
                height = v12
            });
            return ;
        else
            v6:setState({
                width = v8.Size.Width,
                height = UDim.new(0, v3.GetTextHeight(v8.Text, v8.Font, v8.TextSize, v8.AbsoluteSize.X))
            });
            return ;
        end;
    end;
    v6:setState({
        width = nil,
        height = nil
    });
end;
v5.render = function(v13)
    local v14 = v13.props.fitAxis or v4.FitAxis.Height;
    local v15 = v2.RemoveFromDictionary(v13.props, "fitAxis", "maxWidth");
    local l_width_0 = v13.state.width;
    local l_height_0 = v13.state.height;
    if not (not l_width_0 or not l_height_0) then
        v15 = v2.JoinDictionaries(v15, {
            Size = UDim2.new(l_width_0, l_height_0)
        });
    end;
    return v1.createElement("TextLabel", v2.JoinDictionaries(v15, {
        [v1.Ref] = v13.onRef,
        [v1.Change.Text] = v13.resize,
        [v1.Change.TextSize] = v13.resize,
        [v1.Change.AbsoluteSize] = v14 == v4.FitAxis.Height and v13.resize or nil
    }));
end;
v5.didMount = function(v18)
    v18.resize(v18.ref);
end;
return v5;


local l_CorePackages_0 = game:GetService("CorePackages");
local v1 = require(l_CorePackages_0.Packages.React);
local v2 = require(l_CorePackages_0.Packages.Dash);
local v3 = require(l_CorePackages_0.Packages.ReactFocusNavigation);
local v4 = require(l_CorePackages_0.Packages.ReactOtter);
local v5 = require(l_CorePackages_0.UIBlox);
local l_useProperties_0 = v5.Core.Hooks.useProperties;
local l_useForwardRef_0 = v5.Core.Hooks.useForwardRef;
local l_useSelectionCursor_0 = v5.App.SelectionImage.useSelectionCursor;
local l_CursorKind_0 = v5.App.SelectionImage.CursorKind;
local l_RoactRodux_0 = require(l_CorePackages_0.Workspace.Packages.RoactUtils).Hooks.RoactRodux;
local _ = require(l_CorePackages_0.Workspace.Packages.TenFootUiCommon);
local l_FocusNavigationEventNameEnum_0 = require(l_CorePackages_0.Workspace.Packages.FocusNavigationUtils).FocusNavigationEventNameEnum;
local _ = game:GetService("CoreGui").RobloxGui.Modules;
local v14 = {
    dampingRatio = 1,
    frequency = 3,
    restingPositionLimit = 0.1,
    restingVelocityLimit = 2
};
local function _(v15, v16)
    return v1.useMemo(function()
        return v1.joinBindings((v2.map(v16, function(v17)
            if not (type(v17) == "table") or not v17.getValue then
                return v1.createBinding(v17);
            else
                return v17;
            end;
        end))):map(function(v18)
            return v15(unpack(v18));
        end);
    end, v16);
end;
local function v23(v20, v21)
    return (v3.useEventHandler(l_FocusNavigationEventNameEnum_0.NavigateBack, v1.useCallback(function(v22)
        if not (not (v22.eventData and v22.eventData.UserInputState == Enum.UserInputState.End) or not v21) then
            v22.cancelled = true;
            v21();
        end;
    end, {
        v21
    }), nil, v20));
end;
local function v36(v24)
    local v25 = v3.useFocusedGuiObject();
    local v26 = v3.useFocusGuiObject();
    local v27 = v1.useRef(nil);
    local v28 = v1.useRef(nil);
    local v30, v31 = v4.useAnimatedBinding(0, (v1.useCallback(function(v29)
        if not (not (v29 == 1) or not v27.current) then
            v27.current();
            v27.current = nil;
        end;
        if not (not (v29 == 0) or not v28.current) then
            v28.current();
            v28.current = nil;
        end;
    end, {})));
    local v32, v33 = v1.useState(false);
    local v34 = v1.useRef(nil);
    return l_useForwardRef_0(v24, (v1.useCallback(function(v35)
        v34.current = function()
            v27.current = function()
                v26(v35);
            end;
            v28.current = function()
                v33(false);
                v26(v25);
            end;
        end;
    end, {
        v25,
        v26
    }))), v32, v30, v1.useCallback(function()
        if not (not (v30:getValue() == 0) or not v34.current) then
            v34.current();
            v33(true);
            v31(v4.spring(1, v14));
        end;
    end, {
        v25,
        v30
    }), (v1.useCallback(function()
        if v30:getValue() == 1 then
            v31(v4.spring(0, v14));
        end;
    end, {
        v30
    }));
end;
return v1.forwardRef(function(v37, v38)
    local v39 = v37.selectionCursor or l_useSelectionCursor_0(l_CursorKind_0.RoundedRect);
    local v41 = l_RoactRodux_0.useSelector(function(v40)
        return v40.ScreenSize or Vector2.zero;
    end);
    local v42 = v1.useMemo(function()
        if not v37.safeAreaSize then
            return v41;
        else
            return Vector2.new(v41.X * v37.safeAreaSize.X.Scale + v37.safeAreaSize.X.Offset, v41.Y * v37.safeAreaSize.Y.Scale + v37.safeAreaSize.Y.Offset);
        end;
    end, {
        v41,
        v37.safeAreaSize
    });
    local v43, v44 = v1.useBinding(Vector2.zero);
    local v45 = l_useProperties_0(v38, v44, "AbsolutePosition");
    local v46, v47 = v1.useBinding(Vector2.zero);
    local v48 = l_useProperties_0(nil, v47, "AbsoluteSize");
    local _, v50 = v1.useBinding(Vector2.zero);
    local v51 = l_useProperties_0(nil, v50, "AbsolutePosition");
    local v52, v53 = v1.useBinding(Vector2.zero);
    local v54 = l_useProperties_0(nil, v53, "AbsoluteSize");
    local v55 = nil;
    local v56 = nil;
    local v57 = nil;
    local v58 = nil;
    local v59, v60, v61, v62, v63 = v36(v45);
    v45 = v59;
    v55 = v60;
    v56 = v61;
    v57 = v62;
    v58 = v63;
    v45 = v23(v45, if not v55 then nil else v58);
    v59, v60 = v1.useState(false);
    v61 = v1.useMemo(function()
        return (v37.renderHeader or v2.noop)(v55);
    end, {
        v55,
        v37.renderHeader
    });
    v62 = v1.useMemo(function()
        return v37.renderContents(v55);
    end, {
        v55,
        v37.renderContents
    });
    local v64;
    v63, v64 = v1.useMemo(function()
        local v65, v66 = v37.renderContentWrapper(v59, v55, (v1.createElement("Frame", {
            Position = UDim2.new(),
            Size = UDim2.fromScale(1, 0),
            AutomaticSize = Enum.AutomaticSize.Y,
            ref = v54,
            BackgroundTransparency = 1,
            Selectable = false,
            SelectionGroup = true,
            SelectionBehaviorDown = Enum.SelectionBehavior.Stop,
            SelectionBehaviorLeft = Enum.SelectionBehavior.Stop,
            SelectionBehaviorRight = Enum.SelectionBehavior.Stop,
            SelectionBehaviorUp = Enum.SelectionBehavior.Stop
        }, v62)));
        return v65, v66 or {};
    end, {
        v62,
        v59,
        v54,
        v37.renderContentWrapper
    });
    local function v72(v67, v68, v69, _, _)
        return UDim2.new(1, 0, 0, ((v67.Y + (v69.top or 0)) + v68.Y) + (v69.bottom or 0));
    end;
    local v73 = {
        v46,
        v52,
        v64,
        v37.limitInlineHeight,
        v42
    };
    local l_v73_0 = v73 --[[ copy: 30 -> 40 ]];
    local l_v72_0 = v72 --[[ copy: 29 -> 41 ]];
    local v78 = v1.useMemo(function()
        return v1.joinBindings((v2.map(l_v73_0, function(v76)
            if not (type(v76) == "table") or not v76.getValue then
                return v1.createBinding(v76);
            else
                return v76;
            end;
        end))):map(function(v77)
            return l_v72_0(unpack(v77));
        end);
    end, v73);
    v73 = function(v79, v80)
        if v79 > 0 then
            return 1000000;
        else
            return v80;
        end;
    end;
    local v81 = {
        v56,
        v37.zIndex
    };
    local l_v81_0 = v81 --[[ copy: 31 -> 42 ]];
    local l_v73_1 = v73 --[[ copy: 30 -> 43 ]];
    v72 = v1.useMemo(function()
        return v1.joinBindings((v2.map(l_v81_0, function(v84)
            if not (type(v84) == "table") or not v84.getValue then
                return v1.createBinding(v84);
            else
                return v84;
            end;
        end))):map(function(v85)
            return l_v73_1(unpack(v85));
        end);
    end, v81);
    v81 = function(v86, v87)
        if v86 > 0 then
            return UDim2.fromOffset(-v87.X, -v87.Y - 200);
        else
            return UDim2.new();
        end;
    end;
    local v88 = {
        v56,
        v43
    };
    local l_v88_0 = v88 --[[ copy: 32 -> 44 ]];
    local l_v81_1 = v81 --[[ copy: 31 -> 45 ]];
    v73 = v1.useMemo(function()
        return v1.joinBindings((v2.map(l_v88_0, function(v91)
            if not (type(v91) == "table") or not v91.getValue then
                return v1.createBinding(v91);
            else
                return v91;
            end;
        end))):map(function(v92)
            return l_v81_1(unpack(v92));
        end);
    end, v88);
    v88 = function(v93, v94)
        if v93 > 0 then
            return UDim2.fromOffset(v94.X, v94.Y + 400);
        else
            return UDim2.new();
        end;
    end;
    local v95 = {
        v56,
        v41
    };
    local l_v95_0 = v95 --[[ copy: 33 -> 46 ]];
    local l_v88_1 = v88 --[[ copy: 32 -> 47 ]];
    v81 = v1.useMemo(function()
        return v1.joinBindings((v2.map(l_v95_0, function(v98)
            if not (type(v98) == "table") or not v98.getValue then
                return v1.createBinding(v98);
            else
                return v98;
            end;
        end))):map(function(v99)
            return l_v88_1(unpack(v99));
        end);
    end, v95);
    v95 = function(v100, v101)
        return 1 - v100 * (1 - v101);
    end;
    local v102 = {
        v56,
        v37.overlayTransparency or 1
    };
    local l_v102_0 = v102 --[[ copy: 34 -> 48 ]];
    local l_v95_1 = v95 --[[ copy: 33 -> 49 ]];
    v88 = v1.useMemo(function()
        return v1.joinBindings((v2.map(l_v102_0, function(v105)
            if not (type(v105) == "table") or not v105.getValue then
                return v1.createBinding(v105);
            else
                return v105;
            end;
        end))):map(function(v106)
            return l_v95_1(unpack(v106));
        end);
    end, v102);
    v102 = function(v107, v108, v109)
        local l_Offset_0 = v108.Y.Offset;
        local v111 = math.min(l_Offset_0, v109.Y) - l_Offset_0;
        local v112 = not v37.limitInlineHeight and 0 or v111;
        local l_v60_0 = v60;
        local v114 = false;
        if v111 < 0 then
            v114 = v107 == 1;
        end;
        l_v60_0(v114);
        return UDim2.new(1, 0, 0, (l_Offset_0 + v107 * v111) + (1 - v107) * v112);
    end;
    local v115 = {
        v56,
        v78,
        v42,
        v59,
        v60
    };
    local l_v115_0 = v115 --[[ copy: 35 -> 50 ]];
    local l_v102_1 = v102 --[[ copy: 34 -> 51 ]];
    v95 = v1.useMemo(function()
        return v1.joinBindings((v2.map(l_v115_0, function(v118)
            if not (type(v118) == "table") or not v118.getValue then
                return v1.createBinding(v118);
            else
                return v118;
            end;
        end))):map(function(v119)
            return l_v102_1(unpack(v119));
        end);
    end, v115);
    v115 = function(v120, v121, v122, v123)
        return UDim2.fromOffset(0, v120 * ((v123.Y - v122.Y.Offset) / 2 - v121.Y));
    end;
    local v124 = {
        v56,
        v43,
        v95,
        v41
    };
    local l_v124_0 = v124 --[[ copy: 36 -> 52 ]];
    local l_v115_1 = v115 --[[ copy: 35 -> 53 ]];
    v102 = v1.useMemo(function()
        return v1.joinBindings((v2.map(l_v124_0, function(v127)
            if not (type(v127) == "table") or not v127.getValue then
                return v1.createBinding(v127);
            else
                return v127;
            end;
        end))):map(function(v128)
            return l_v115_1(unpack(v128));
        end);
    end, v124);
    v124 = function(v129, v130)
        return v129 + UDim2.fromOffset(0, v130.Y);
    end;
    local v131 = {
        v102,
        v46
    };
    local l_v131_0 = v131 --[[ copy: 37 -> 54 ]];
    local l_v124_1 = v124 --[[ copy: 36 -> 55 ]];
    v115 = v1.useMemo(function()
        return v1.joinBindings((v2.map(l_v131_0, function(v134)
            if not (type(v134) == "table") or not v134.getValue then
                return v1.createBinding(v134);
            else
                return v134;
            end;
        end))):map(function(v135)
            return l_v124_1(unpack(v135));
        end);
    end, v131);
    v131 = function(v136, v137)
        return v136 - UDim2.fromOffset(0, v137.Y);
    end;
    local v138 = {
        v95,
        v46
    };
    local l_v138_0 = v138 --[[ copy: 38 -> 56 ]];
    v124 = v1.useMemo(function()
        return v1.joinBindings((v2.map(l_v138_0, function(v140)
            if not (type(v140) == "table") or not v140.getValue then
                return v1.createBinding(v140);
            else
                return v140;
            end;
        end))):map(function(v141)
            return v131(unpack(v141));
        end);
    end, v138);
    v138 = function(v142)
        if v142 < 1 then
            return 4;
        else
            return 2;
        end;
    end;
    local v143 = {
        v56
    };
    return v1.createElement("Frame", {
        Size = if not v37.limitInlineHeight then v78 else v95,
        ref = v45,
        BackgroundTransparency = 1,
        LayoutOrder = v37.layoutOrder,
        ZIndex = v72,
        Selectable = false
    }, {
        Overlay = v1.createElement("TextButton", {
            Text = "",
            Position = v73,
            Size = v81,
            BackgroundColor3 = v37.overlayColor3 or Color3.new(0, 0, 0),
            BackgroundTransparency = v88,
            AutoButtonColor = false,
            ZIndex = 1,
            Selectable = false,
            Active = true,
            [v1.Event.Activated] = v58
        }),
        Header = v1.createElement("Frame", {
            ref = v48,
            Position = v102,
            Size = UDim2.fromScale(1, 0),
            AutomaticSize = Enum.AutomaticSize.Y,
            BackgroundTransparency = 1,
            Selectable = false,
            ZIndex = 3
        }, v61),
        Panel = v1.createElement("Frame", {
            Position = v115,
            Size = v124,
            ref = v51,
            BackgroundTransparency = 1,
            ClipsDescendants = true,
            ZIndex = 3
        }, v63),
        Cover = v1.createElement("TextButton", {
            Text = "",
            Position = v115,
            Size = v124,
            BackgroundTransparency = 1,
            AutoButtonColor = false,
            ZIndex = v1.useMemo(function()
                return v1.joinBindings((v2.map(v143, function(v144)
                    if not (type(v144) == "table") or not v144.getValue then
                        return v1.createBinding(v144);
                    else
                        return v144;
                    end;
                end))):map(function(v145)
                    return v138(unpack(v145));
                end);
            end, v143),
            Active = true,
            Selectable = true,
            SelectionImageObject = v39,
            SelectionOrder = 1,
            SelectionGroup = v55,
            SelectionBehaviorDown = Enum.SelectionBehavior.Stop,
            SelectionBehaviorLeft = Enum.SelectionBehavior.Stop,
            SelectionBehaviorRight = Enum.SelectionBehavior.Stop,
            SelectionBehaviorUp = Enum.SelectionBehavior.Stop,
            [v1.Event.Activated] = v57
        })
    });
end);


local l_CoreGui_0 = game:GetService("CoreGui");
local l_CorePackages_0 = game:GetService("CorePackages");
local l_Modules_0 = l_CoreGui_0.RobloxGui.Modules;
local v3 = require(l_Modules_0.Common.Roact);
local v4 = require(l_Modules_0.Common.RoactRodux);
local l_FormFactor_0 = require(l_CorePackages_0.Workspace.Packages.FormFactor).Enums.FormFactor;
local v6 = require(l_Modules_0.LuaApp.FitChildren);
local v7 = require(l_Modules_0.LuaApp.Components.FramePopOut);
local v8 = require(l_Modules_0.LuaApp.Components.FramePopup);
local v9 = require(l_Modules_0.LuaApp.Thunks.CloseCentralOverlay);
local v10 = v3.PureComponent:extend("FormBasedContextualMenu");
v10.defaultProps = {
    enablePopUpCancelButton = true
};
v10.render = function(v11)
    local l_anchorSpaceSize_0 = v11.props.anchorSpaceSize;
    local l_anchorSpacePosition_0 = v11.props.anchorSpacePosition;
    local l_itemWidth_0 = v11.props.itemWidth;
    local v15 = v11.props[v3.Children];
    local l_screenSize_0 = v11.props.screenSize;
    return v3.createElement(not not (v11.props.formFactor == l_FormFactor_0.WIDE) and v7 or v8, {
        onCancel = v11.props.closeContextualMenu,
        enableCancelButton = v11.props.enablePopUpCancelButton,
        itemWidth = l_itemWidth_0,
        parentShape = {
            x = l_anchorSpacePosition_0.X,
            y = l_anchorSpacePosition_0.Y,
            width = l_anchorSpaceSize_0.X,
            height = l_anchorSpaceSize_0.Y,
            parentWidth = l_screenSize_0.X,
            parentHeight = l_screenSize_0.Y
        }
    }, v3.createElement(v6.FitFrame, {
        BackgroundTransparency = 1,
        fitAxis = v6.FitAxis.Height,
        Size = UDim2.new(0, l_itemWidth_0, 0, 0),
        Selectable = false
    }, v15));
end;
v10.didUpdate = function(v17, v18, _)
    local l_closeContextualMenu_0 = v17.props.closeContextualMenu;
    if v18.currentRoute ~= v17.props.currentRoute then
        l_closeContextualMenu_0();
    end;
end;
return (v4.connect(function(v21, _)
    return {
        formFactor = v21.FormFactor,
        screenSize = v21.ScreenSize,
        currentRoute = v21.Navigation.history[#v21.Navigation.history]
    };
end, function(v23)
    return {
        closeContextualMenu = function()
            v23(v9());
        end
    };
end)(v10));


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local l_CorePackages_0 = game:GetService("CorePackages");
local v2 = require(l_Modules_0.Common.Roact);
local v3 = require(l_Modules_0.LuaApp.FitChildren);
local v4 = require(l_Modules_0.LuaApp.RoactMotion);
local v5 = require(l_Modules_0.LuaApp.Components.DEPRECATED_ImageSetLabel);
local l_withStyle_0 = require(l_CorePackages_0.UIBlox).Style.withStyle;
local function _(v7, v8, v9)
    return (1 - v7) * v8 + v7 * v9;
end;
local function v19(v11, v12, v13)
    local v14 = {};
    local v15 = v11.x + v11.width * 0.5;
    local v16 = v11.y + v11.height * 0.5;
    local v17 = 0.1 * v13;
    v14.pointerHeight = 6;
    v14.pointerWidth = 12;
    v14.x = (v11.x + v11.width * 0.5) - v12 * 0.5;
    v14.pointerX = v15 - v14.pointerWidth * 0.5;
    if v16 < v11.parentHeight * 0.5 then
        v14.y = (v11.y + v11.height) + v14.pointerHeight;
        v14.height = math.min((v11.parentHeight - v14.y) - 10, v13);
        v14.pointerIcon = "LuaApp/dropdown/gr-tip-up";
        v14.pointerY = v11.y + v11.height;
        v14.menuStartY = v14.y;
    else
        local v18 = v11.y - v14.pointerHeight;
        v14.height = math.min(v18 - 10, v13);
        v14.y = v18 - v14.height;
        v14.pointerIcon = "LuaApp/dropdown/gr-tip-down";
        v14.pointerY = v18;
        v14.menuStartY = v14.pointerY - v17;
    end;
    if v14.height < v13 then
        v14.pointerHeight = 12;
        v14.pointerWidth = 6;
        v14.height = math.min(v11.parentHeight - 20, v13);
        v14.y = v16 - v14.height * 0.5;
        if v14.y < 10 then
            v14.y = 10;
        elseif v11.parentHeight - 10 < v14.y + v14.height then
            v14.y = (v11.parentHeight - 10) - v14.height;
        end;
        v14.pointerY = v16 - v14.pointerHeight * 0.5;
        v14.menuStartY = (v14.pointerY + v14.pointerHeight / 2) - v17 / 2;
        if v15 <= v11.parentWidth * 0.5 then
            v14.x = (v11.x + v11.width) + v14.pointerWidth;
            if v11.parentWidth - 10 < v14.x + v12 then
                v14.x = (v11.parentWidth - v12) - 10;
            end;
            v14.pointerIcon = "LuaApp/dropdown/gr-tip-left";
            v14.pointerX = v14.x - v14.pointerWidth;
        else
            v14.x = (v11.x - v12) - v14.pointerWidth;
            if v14.x < 10 then
                v14.x = 10;
            end;
            v14.pointerIcon = "LuaApp/dropdown/gr-tip-right";
            v14.pointerX = v14.x + v12;
        end;
    elseif v14.x < 10 then
        v14.x = 10;
    elseif v11.parentWidth - 10 < v14.x + v12 then
        v14.x = (v11.parentWidth - v12) - 10;
    end;
    v14.pointerX = v14.pointerX + -1;
    v14.pointerY = v14.pointerY + -1;
    v14.pointerWidth = v14.pointerWidth + 2;
    v14.pointerHeight = v14.pointerHeight + 2;
    return v14;
end;
local v20 = v2.PureComponent:extend("FramePopOut");
v20.defaultProps = {
    isAnimated = false
};
v20.init = function(v21)
    v21.state = {
        hidden = v21.props.isAnimated,
        frameHeight = 0
    };
    v21.isMounted = false;
    v21.animationPercentage = not v21.state.hidden and 1 or 0;
    v21.stiffness = nil;
    v21.damping = nil;
    v21.onRested = nil;
    v21.onActivated = function()
        v21:close();
    end;
    v21.onSizeChanged = function(v22)
        spawn(function()
            if v21.isMounted then
                v21:setState({
                    frameHeight = v22.AbsoluteSize.Y
                });
            end;
        end);
    end;
end;
v20.open = function(v23)
    if not (not v23.state.hidden or not v23.props.isAnimated) then
        v23.animationPercentage = 1;
        v23.stiffness = nil;
        v23.damping = nil;
        v23.onRested = nil;
        v23:setState({
            hidden = false
        });
    end;
    v23.animationPercentage = 1;
    v23.stiffness = nil;
    v23.damping = nil;
    v23.onRested = nil;
    v23:setState({
        hidden = false
    });
end;
v20.close = function(v24)
    local l_onCancel_0 = v24.props.onCancel;
    if v24.state.hidden or not v24.props.isAnimated then
        if not v24.props.isAnimated then
            l_onCancel_0();
        end;
        return ;
    else
        v24.animationPercentage = 0;
        v24.stiffness = 270;
        v24.damping = nil;
        v24.onRested = l_onCancel_0;
        v24:setState({
            hidden = true
        });
        return ;
    end;
end;
v20.didMount = function(v26)
    v26.isMounted = true;
    v26:open();
end;
v20.willUnmount = function(v27)
    v27.isMounted = false;
end;
v20.render = function(v28)
    local v29 = v28.props[v2.Children];
    local l_itemWidth_0 = v28.props.itemWidth;
    local l_parentShape_0 = v28.props.parentShape;
    if v28.state.frameHeight == 0 then
        l_itemWidth_0 = 0;
    end;
    local v32 = v19(l_parentShape_0, l_itemWidth_0, v28.state.frameHeight);
    return l_withStyle_0(function(v33)
        return v2.createElement("TextButton", {
            Size = UDim2.new(1, 0, 1, 0),
            AutoButtonColor = false,
            BackgroundTransparency = 1,
            Text = "",
            Selectable = false,
            [v2.Event.Activated] = v28.onActivated
        }, {
            Pointer = v2.createElement(v5, {
                BackgroundTransparency = 1,
                BorderSizePixel = 0,
                ClipsDescendants = false,
                Image = v32.pointerIcon,
                ImageColor3 = v33.Theme.BackgroundUIDefault.Color,
                ImageTransparency = v33.Theme.BackgroundUIDefault.Transparency,
                Position = UDim2.new(0, v32.pointerX, 0, v32.pointerY),
                Size = UDim2.new(0, v32.pointerWidth, 0, v32.pointerHeight)
            }),
            AnimatedPopout = v2.createElement(v4.SimpleMotion, {
                style = {
                    animationPercentage = v4.spring(v28.animationPercentage, v28.stiffness, v28.damping)
                },
                onRested = function()
                    if v28.onRested then
                        v28.onRested();
                    end;
                end,
                render = function(v34)
                    local l_createElement_0 = v2.createElement;
                    local v36 = "Frame";
                    local v37 = {
                        BorderSizePixel = 0,
                        BackgroundColor3 = v33.Theme.BackgroundUIDefault.Color,
                        BackgroundTransparency = v33.Theme.BackgroundUIDefault.Transparency
                    };
                    local l_new_0 = UDim2.new;
                    local v39 = 0;
                    local l_x_0 = v32.x;
                    local v41 = 0;
                    local l_animationPercentage_0 = v34.animationPercentage;
                    v37.Position = l_new_0(v39, l_x_0, v41, (1 - l_animationPercentage_0) * v32.menuStartY + l_animationPercentage_0 * v32.y);
                    l_new_0 = UDim2.new;
                    v39 = 0;
                    l_x_0 = l_itemWidth_0;
                    v41 = 0;
                    local l_animationPercentage_1 = v34.animationPercentage;
                    v37.Size = l_new_0(v39, l_x_0, v41, ((1 - l_animationPercentage_1) * 0.1 + l_animationPercentage_1 * 1) * v28.state.frameHeight);
                    v37.ClipsDescendants = true;
                    return l_createElement_0(v36, v37, {
                        Frame = v2.createElement(v3.FitFrame, {
                            BackgroundTransparency = 1,
                            BorderSizePixel = 0,
                            Position = UDim2.new(0, 0, 0, 0),
                            Size = UDim2.new(1, 0, 1, 0),
                            fitAxis = v3.FitAxis.Height,
                            ClipsDescendants = false,
                            [v2.Change.AbsoluteSize] = v28.onSizeChanged
                        }, v29)
                    });
                end
            })
        });
    end);
end;
return v20;


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local l_CorePackages_0 = game:GetService("CorePackages");
local v2 = require(l_Modules_0.Common.Roact);
local v3 = require(l_Modules_0.Common.RoactRodux);
local v4 = require(l_Modules_0.LuaApp.Constants);
local v5 = require(l_Modules_0.LuaApp.FitChildren);
local v6 = require(l_Modules_0.LuaApp.RoactMotion);
local _ = require(l_Modules_0.LuaApp.Components.DEPRECATED_ImageSetButton);
local v8 = require(l_Modules_0.LuaApp.Components.DEPRECATED_ImageSetLabel);
local _ = require(l_Modules_0.LuaApp.Components.LocalizedTextButton);
local v10 = require(l_Modules_0.LuaApp.Components.LocalizedTextLabel);
local l_withStyle_0 = require(l_CorePackages_0.UIBlox).Style.withStyle;
local _ = Enum.Font.SourceSans;
local l_DEFAULT_CONTEXTUAL_MENU_CANCEL_HEIGHT_0 = v4.DEFAULT_CONTEXTUAL_MENU_CANCEL_HEIGHT;
local v14 = v2.PureComponent:extend("FramePopup");
v14.defaultProps = {
    enableCancelButton = true,
    Selectable = false
};
v14.init = function(v15)
    v15.state = {
        hidden = true
    };
    v15.yAnchorPoint = not v15.state.hidden and 1 or 0;
    v15.stiffness = nil;
    v15.damping = nil;
    v15.onRested = nil;
    v15.closeCallback = function()
        v15:close();
    end;
    v15.renderCancelButton = function(v16)
        return v2.createElement("TextButton", {
            AutoButtonColor = false,
            BorderSizePixel = 0,
            LayoutOrder = 3,
            BackgroundColor3 = v16.Theme.BackgroundUIDefault.Color,
            BackgroundTransparency = v16.Theme.BackgroundUIDefault.Transparency,
            Size = UDim2.new(1, 0, 0, l_DEFAULT_CONTEXTUAL_MENU_CANCEL_HEIGHT_0),
            Text = "",
            [v2.Event.Activated] = v15.closeCallback
        }, {
            Icon = v2.createElement(v8, {
                AnchorPoint = Vector2.new(0, 0.5),
                BackgroundTransparency = 1,
                BorderSizePixel = 0,
                ClipsDescendants = false,
                Image = "LuaApp/icons/navigation/close",
                ImageColor3 = v16.Theme.IconDefault.Color,
                ImageTransparency = v16.Theme.IconDefault.Transparency,
                Position = UDim2.new(0, 20, 0.5, 0),
                Size = UDim2.new(0, 20, 0, 20)
            }),
            Cancel = v2.createElement(v10, {
                AnchorPoint = Vector2.new(0, 0.5),
                BackgroundColor3 = v4.Color.WHITE,
                BackgroundTransparency = 1,
                BorderSizePixel = 0,
                Position = UDim2.new(0, 60, 0.5, 0),
                Size = UDim2.new(1, -70, 1, 0),
                Text = "Feature.GamePage.LabelCancelField",
                Font = v16.Font.Body.Font,
                TextSize = v16.Font.BaseSize * v16.Font.Body.RelativeSize,
                TextColor3 = v16.Theme.TextDefault.Color,
                TextTransparency = v16.Theme.TextDefault.Transparency,
                TextXAlignment = Enum.TextXAlignment.Left,
                TextYAlignment = Enum.TextYAlignment.Center
            })
        });
    end;
    v15.renderPopupFrame = function(v17, v18)
        local v19 = v15.props[v2.Children];
        local l_enableCancelButton_0 = v15.props.enableCancelButton;
        local l_contentPosition_0 = v15.props.contentPosition;
        local l_screenSize_0 = v15.props.screenSize;
        local v23 = UDim2.new(0, 0, 1, 0);
        if l_contentPosition_0 then
            v23 = UDim2.new(0, 0, 0, l_screenSize_0.Y);
        end;
        return v2.createElement(v5.FitFrame, {
            BackgroundTransparency = 1,
            Size = UDim2.new(1, 0, 0, 0),
            Position = v23,
            AnchorPoint = if not v17.Settings.ReducedMotion then Vector2.new(0, v18.animValue) else Vector2.new(0, 1),
            BorderSizePixel = 0,
            fitAxis = v5.FitAxis.Height
        }, {
            UIPadding = l_contentPosition_0 and v2.createElement("UIPadding", {
                PaddingLeft = UDim.new(0, l_screenSize_0.X * l_contentPosition_0.X.Scale + l_contentPosition_0.X.Offset),
                PaddingBottom = UDim.new(0, l_screenSize_0.Y - (l_screenSize_0.Y * l_contentPosition_0.Y.Scale + l_contentPosition_0.Y.Offset))
            }),
            Layout = v2.createElement("UIListLayout", {
                FillDirection = Enum.FillDirection.Vertical,
                HorizontalAlignment = Enum.HorizontalAlignment.Center,
                SortOrder = Enum.SortOrder.LayoutOrder,
                VerticalAlignment = Enum.VerticalAlignment.Bottom
            }),
            Frame = v2.createElement(v5.FitFrame, {
                BackgroundTransparency = 1,
                BorderSizePixel = 0,
                LayoutOrder = 1,
                Size = UDim2.new(1, 0, 0, 0),
                fitAxis = v5.FitAxis.Height
            }, v19),
            Separator = l_enableCancelButton_0 and v2.createElement("Frame", {
                BackgroundColor3 = v17.Theme.BackgroundUIDefault.Color,
                BackgroundTransparency = v17.Theme.BackgroundUIDefault.Transparency,
                BorderSizePixel = 0,
                LayoutOrder = 2,
                Size = UDim2.new(1, 0, 0, 1)
            }, {
                SeparatorBar = v2.createElement("Frame", {
                    Size = UDim2.new(1, 0, 1, 0),
                    BackgroundColor3 = v17.Theme.Divider.Color,
                    BackgroundTransparency = v17.Theme.Divider.Transparency,
                    BorderSizePixel = 0
                })
            }),
            Cancel = l_enableCancelButton_0 and v15.renderCancelButton(v17)
        });
    end;
    v15.onRender = function(v24)
        return l_withStyle_0(function(v25)
            if not v25.Settings.ReducedMotion then
                return v15.renderPopupFrame(v25, v24);
            else
                return v2.createElement("CanvasGroup", {
                    Size = UDim2.fromScale(1, 1),
                    BackgroundTransparency = 1,
                    GroupTransparency = 1 - v24.animValue
                }, {
                    PopupFrame = v15.renderPopupFrame(v25, v24)
                });
            end;
        end);
    end;
end;
v14.open = function(v26)
    v26.yAnchorPoint = 1;
    v26.stiffness = nil;
    v26.damping = nil;
    v26.onRested = nil;
    v26:setState({
        hidden = false
    });
end;
v14.close = function(v27)
    local l_onCancel_0 = v27.props.onCancel;
    v27.yAnchorPoint = 0;
    v27.stiffness = 270;
    v27.damping = nil;
    v27.onRested = l_onCancel_0;
    v27:setState({
        hidden = true
    });
end;
v14.didMount = function(v29)
    v29:open();
end;
v14.render = function(v30)
    return v2.createElement("TextButton", {
        Size = UDim2.new(1, 0, 1, 0),
        AutoButtonColor = false,
        BackgroundTransparency = 1,
        Text = "",
        [v2.Event.Activated] = v30.closeCallback,
        Selectable = v30.props.Selectable
    }, {
        AnimatedPopup = v2.createElement(v6.SimpleMotion, {
            style = {
                animValue = v6.spring(v30.yAnchorPoint, v30.stiffness, v30.damping)
            },
            onRested = v30.onRested,
            render = v30.onRender
        })
    });
end;
return v3.connect(function(v31, _)
    return {
        screenSize = v31.ScreenSize
    };
end)(v14);


local l_CorePackages_0 = game:GetService("CorePackages");
local l_RunService_0 = game:GetService("RunService");
local _ = require(l_CorePackages_0.Roact);
local v3 = require(l_CorePackages_0.Packages.React);
local _ = game:GetService("CoreGui").RobloxGui.Modules;
return require(l_CorePackages_0.Workspace.Packages.UniversalAppPolicy).RoactAppPolicy.connect(function(v5, _)
    return {
        throttleFramerate = v5.getThrottleFramerate()
    };
end)(function(v7)
    v3.useEffect(function()
        if v7.throttleFramerate then
            l_RunService_0:setThrottleFramerateEnabled(true);
        end;
        return function()
            if v7.throttleFramerate then
                l_RunService_0:setThrottleFramerateEnabled(false);
            end;
        end;
    end, {});
end);


local l_CorePackages_0 = game:GetService("CorePackages");
local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v2 = require(l_CorePackages_0.Roact);
local v3 = require(l_CorePackages_0.RoactRodux);
local l_UniversalAppPolicy_0 = require(l_CorePackages_0.Workspace.Packages.UniversalAppPolicy).UniversalAppPolicy;
local l_useNavigation_0 = require(l_CorePackages_0.Workspace.Packages.RoactUtils).Hooks.useNavigation;
local v6 = require(script.Parent.FriendsCarouselWrapper);
local v7 = require(script.Parent.mapDispatchToProps);
local l_utils_0 = script.Parent.Parent.utils;
local v9 = require(l_utils_0.useNavigateFromAddFriends);
local v10 = require(l_utils_0.useShowNewAddFriendsUIVariant);
local l_useContactImporterConfiguration_0 = require(l_CorePackages_0.Workspace.Packages.ContactImporter).Utils.useContactImporterConfiguration;
local v12 = require(l_Modules_0.LuaApp.Hooks.useSocialOnboardingButtonsUniversalWrapper);
local l_Sources_0 = require(l_CorePackages_0.Workspace.Packages.SocialLuaAnalytics).Analytics.Enums.Sources;
local l_isSubjectToDesktopPolicies_0 = require(l_CorePackages_0.Workspace.Packages.SharedFlags).isSubjectToDesktopPolicies;
local l_FFlagFriendsCarouselInjectSocialBtn_0 = require(l_CorePackages_0.Workspace.Packages.SharedFlags).FFlagFriendsCarouselInjectSocialBtn;
return v3.connect(function(_)
    return {};
end, v7)((l_UniversalAppPolicy_0.connect(function(v17)
    return {
        isContactImporterPolicyEnabled = v17.getContactImporterEnabled()
    };
end)(function(v18)
    local v19 = l_useNavigation_0();
    local v20 = v9({
        policyIsEnabled = v18.isContactImporterPolicyEnabled
    });
    local l_shouldShowContactImporterModal_0 = l_useContactImporterConfiguration_0({
        policyIsEnabled = v18.isContactImporterPolicyEnabled
    }).shouldShowContactImporterModal;
    local v22 = v10();
    local v23 = nil;
    local v24 = nil;
    if l_FFlagFriendsCarouselInjectSocialBtn_0 then
        local v25, v26 = v12({
            entryPoint = l_Sources_0.HomePageFriendsCarousel
        });
        v23 = v25;
        v24 = v26;
    end;
    return v2.createElement(v6, {
        navigation = v19,
        showContactImporter = l_shouldShowContactImporterModal_0,
        navigateFromAddFriends = v20,
        showNewAddFriendsUIVariant = v22,
        showRecommendations = not l_isSubjectToDesktopPolicies_0(),
        carousel = v18.carousel,
        carouselProps = v18.carouselProps,
        onSuccessfulRender = v18.onSuccessfulRender,
        openProfilePeekView = v18.openProfilePeekView,
        openPlayerContextualMenu = v18.openPlayerContextualMenu,
        showToast = v18.showToast,
        socialOnboardingBtns = if not l_FFlagFriendsCarouselInjectSocialBtn_0 then nil else v23,
        addFriendsBtn = if not l_FFlagFriendsCarouselInjectSocialBtn_0 then nil else v24
    });
end)));


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local l_Common_0 = l_Modules_0.Common;
local _ = l_Modules_0.LuaApp;
local v3 = require(l_Modules_0.Common.Immutable);
local v4 = require(l_Common_0.Roact);
local v5 = require(script.Parent.UserCarousel);
local v6 = v4.PureComponent:extend("FreezableUserCarousel");
v6.init = function(v7)
    v7.isMounted = false;
    v7.state = {
        peopleListFrozen = false
    };
    v7.setPeopleListFrozen = function(v8)
        if v7.isMounted then
            v7:setState({
                peopleListFrozen = v8
            });
        end;
    end;
end;
v6.render = function(v9)
    return v4.createElement(v5, (v3.JoinDictionaries(v9.props, {
        peopleListFrozen = v9.state.peopleListFrozen,
        setPeopleListFrozen = v9.setPeopleListFrozen
    })));
end;
v6.didMount = function(v10)
    v10.isMounted = true;
end;
v6.willUnmount = function(v11)
    v11.isMounted = false;
end;
return v6;


local l_CorePackages_0 = game:GetService("CorePackages");
local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v2 = require(l_CorePackages_0.Roact);
local l_llama_0 = require(l_CorePackages_0.LuaSocialLibrariesDeps).llama;
local v4 = require(l_Modules_0.LuaApp.Services.RoactAnalytics);
local v5 = require(l_Modules_0.LuaApp.Services.AppEventIngestService);
local l_RoactServices_0 = require(l_CorePackages_0.Workspace.Packages.RoactServices).RoactServices;
local v7 = require(script.Parent.FreezableUserCarousel);
local l_FriendsCarousel_0 = require(l_Modules_0.LuaApp.Components.FriendsCarousel.api).FriendsCarousel;
local v9 = v2.Component:extend("FriendsCarouselWrapper");
v9.defaultProps = {
    carousel = v7
};
v9.render = function(v10)
    local l_props_0 = v10.props;
    return v2.createElement(l_FriendsCarousel_0, l_llama_0.Dictionary.join(l_props_0, {
        roactAnalytics = l_llama_0.None,
        diagService = l_props_0.roactAnalytics.Diag,
        eventIngestService = l_props_0.eventIngestService,
        eventStreamService = l_props_0.eventIngestService
    }));
end;
return (l_RoactServices_0.connect({
    roactAnalytics = v4,
    eventIngestService = v5
})(v9));


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local l_CorePackages_0 = game:GetService("CorePackages");
local l_LuaApp_0 = l_Modules_0.LuaApp;
local v3 = require(l_CorePackages_0.Roact);
local _ = require(l_CorePackages_0.Packages.React);
local v5 = require(l_CorePackages_0.RoactRodux);
local l_withStyle_0 = require(l_CorePackages_0.UIBlox).Style.withStyle;
local v7 = require(l_Modules_0.LuaApp.withLocalization);
local v8 = require(l_Modules_0.Common.Text);
local l_RoactServices_0 = require(l_CorePackages_0.Workspace.Packages.RoactServices).RoactServices;
local v10 = require(l_Modules_0.LuaApp.Services.AppEventIngestService);
local v11 = require(l_LuaApp_0.FitChildren);
local v12 = require(l_Modules_0.LuaApp.Components.Generic.CarouselWidget);
local v13 = require(l_Modules_0.LuaApp.AppPage);
local v14 = require(l_Modules_0.LuaApp.Thunks.NavigateDown);
local v15 = require(l_Modules_0.LuaApp.Components.FriendsCarousel.api);
local l_setupFireEvent_0 = v15.setupFireEvent;
local l_EventNames_0 = v15.EventNames;
local v18 = require(l_CorePackages_0.Packages.RoactAppExperiment);
local l_getFStringSocialFriendsLandingLayer_0 = require(l_CorePackages_0.Workspace.Packages.SharedFlags).getFStringSocialFriendsLandingLayer;
local l_getFFlagNoFriendsUIEnabled_DEV_0 = require(l_CorePackages_0.Workspace.Packages.SharedFlags).getFFlagNoFriendsUIEnabled_DEV;
local l_FIntFriendsCarouselFetchPageDistance_0 = require(l_CorePackages_0.Workspace.Packages.SharedFlags).FIntFriendsCarouselFetchPageDistance;
local l_FFlagFriendsCarouselPagination_0 = require(l_CorePackages_0.Workspace.Packages.SharedFlags).FFlagFriendsCarouselPagination;
local l_FFlagMoveCarouselHeader_0 = require(l_CorePackages_0.Workspace.Packages.SharedFlags).FFlagMoveCarouselHeader;
local v24 = v3.PureComponent:extend("UserCarousel");
v24.defaultProps = {
    friendCount = 0,
    cardPadding = 12,
    friendThumbnailSize = 96,
    renderFindFriendsTile = function()
    end,
    renderFindFriendsHint = function()
    end,
    renderItem = function()
    end
};
local function v25()
end;
v24.init = function(v26)
    v26.state = {
        cardWindowStart = 1,
        cardWindowIndex = 1,
        cardsInWindow = 0,
        cardWidth = 0,
        canvasWidth = if not l_FFlagFriendsCarouselPagination_0 then nil else 0,
        items = nil
    };
    v26.fireAnalyticsEvent = if not l_FFlagMoveCarouselHeader_0 then l_setupFireEvent_0({
        analytics = {
            EventStream = v26.props.eventIngestService
        },
        infoForAllEvents = {
            uid = v26.props.localUserId
        }
    }) else nil;
    v26.onSeeAllFriends = not l_FFlagMoveCarouselHeader_0 and function()
        v26.fireAnalyticsEvent(l_EventNames_0.ViewAllFriends, {
            friendCount = v26.props.friendCount,
            recommendationLimit = true
        });
        v26.props.navigateDown({
            name = v13.ViewFriends,
            extraProps = {
                navigateToFriendsLandingEventStart = {
                    startPage = v13.Home,
                    startTime = os.clock()
                }
            }
        });
    end or nil;
    v26.scrollingFrameRefCallback = function(v27)
        v26.scrollingFrameRef = v27;
    end;
    v26.updateCardWindowBounds = function()
        local l_screenSize_0 = v26.props.screenSize;
        local v29 = v26.props.friendThumbnailSize + v26.props.cardPadding;
        local v30 = math.ceil(l_screenSize_0.X / v29) + 2;
        if v26.scrollingFrameRef then
            local v31 = v26.scrollingFrameRef.CanvasPosition.X - v29;
            local v32 = math.max(1, (math.floor(v31 / v29)));
            local v33 = math.max(0, (math.floor((v31 + v29) / v29))) + 1;
            local v34 = true;
            if v32 == v26.state.cardWindowStart then
                v34 = true;
                if v33 == v26.state.cardWindowIndex then
                    v34 = true;
                    if v30 == v26.state.cardsInWindow then
                        v34 = v29 ~= v26.state.cardWidth;
                    end;
                end;
            end;
            if v34 then
                v26:setState({
                    cardWindowStart = v32,
                    cardWindowIndex = v33,
                    cardsInWindow = v30,
                    cardWidth = v29
                });
            end;
            return ;
        else
            return ;
        end;
    end;
    v26.identifier = function(v35)
        return v35.absoluteIndex;
    end;
    v26.updateFriendsCanvas = function(v36)
        if v36 < v26.scrollingFrameRef.CanvasPosition.X + l_FIntFriendsCarouselFetchPageDistance_0 * v26.props.screenSize.X then
            v26:setState({
                canvasWidth = v36
            });
            if v26.props.fetchNext then
                v26.props.fetchNext();
            end;
        end;
    end;
    v26.createItemEntry = function(v37, v38)
        return v26.props.renderItem({
            data = v37.data,
            absoluteIndex = v37.absoluteIndex,
            layoutOrder = v37.layoutOrder,
            tileInfoHeight = v38.Y + 8,
            setPeopleListFrozen = v26.props.setPeopleListFrozen
        });
    end;
end;
v24.render = function(v39)
    local l_props_0 = v39.props;
    local l_LayoutOrder_0 = v39.props.LayoutOrder;
    local l_friendCount_0 = v39.props.friendCount;
    local l_friendThumbnailSize_0 = v39.props.friendThumbnailSize;
    local l_cardPadding_0 = v39.props.cardPadding;
    local l_sideMargin_0 = v39.props.sideMargin;
    local l_items_0 = v39.state.items;
    local l_cardsInWindow_0 = v39.state.cardsInWindow;
    local l_cardWindowStart_0 = v39.state.cardWindowStart;
    local l_cardWindowIndex_0 = v39.state.cardWindowIndex;
    local v50 = math.min(#l_items_0, (l_cardWindowStart_0 + l_cardsInWindow_0) - 1);
    local v51 = nil;
    if not l_FFlagMoveCarouselHeader_0 then
        v51 = l_friendCount_0 == 0 and "CommonUI.Features.Label.Friends" or {
            "Feature.Home.HeadingFriends";
            friendCount = l_friendCount_0
        };
    end;
    return v7({
        headerText = if not l_FFlagMoveCarouselHeader_0 then v51 else nil
    })(function(v52)
        return l_withStyle_0(function(v53)
            local l_Font_0 = v53.Font;
            local v55 = v8.GetTextBounds("SampleText", l_Font_0.CaptionHeader.Font, l_Font_0.CaptionHeader.RelativeSize * l_Font_0.BaseSize, Vector2.new(10000, 10000));
            local v56 = Vector2.new(l_friendThumbnailSize_0, (l_friendThumbnailSize_0 + v55.Y) + 8);
            local function _()
                return v39.props.renderFindFriendsTile();
            end;
            local v58 = {};
            local v59 = 1;
            if l_cardWindowStart_0 == 1 then
                v58.AddFriend = v39.props.renderFindFriendsTile();
                v59 = v59 + 1;
                local v60 = false;
                if l_friendCount_0 == 0 then
                    v60 = #l_items_0 == 0;
                end;
                if v60 then
                    v58.AddFriendHint = v39.props.renderFindFriendsHint({
                        layoutOrder = v59
                    });
                    v59 = v59 + 1;
                end;
            end;
            for v61 = l_cardWindowStart_0, v50 do
                v58[v61] = v39.createItemEntry({
                    layoutOrder = v59,
                    absoluteIndex = v61 + 1,
                    data = l_items_0[v61]
                }, v55);
                v59 = v59 + 1;
            end;
            v58.Layout = v3.createElement("UIListLayout", {
                SortOrder = Enum.SortOrder.LayoutOrder,
                FillDirection = Enum.FillDirection.Horizontal,
                HorizontalAlignment = Enum.HorizontalAlignment.Left,
                VerticalAlignment = Enum.VerticalAlignment.Top,
                Padding = UDim.new(0, l_cardPadding_0)
            });
            local v62 = l_friendThumbnailSize_0 + l_cardPadding_0;
            local v63 = l_cardWindowStart_0 > 1 and l_cardWindowStart_0 * v62 or 0;
            if v63 > 0 then
                v58.Padding = v3.createElement("UIPadding", {
                    PaddingLeft = UDim.new(0, v63)
                });
            end;
            local v64 = #l_items_0 + 1;
            return v3.createElement(v11.FitFrame, {
                fitAxis = v11.FitAxis.Height,
                LayoutOrder = l_LayoutOrder_0,
                BackgroundTransparency = 1,
                Size = UDim2.new(1, 0, 0, 0)
            }, {
                Padding = v3.createElement("UIPadding", {
                    PaddingLeft = UDim.new(0, l_sideMargin_0)
                }),
                Layout = v3.createElement("UIListLayout"),
                UserCarousel = v3.createElement(v12, {
                    title = if not l_FFlagMoveCarouselHeader_0 then v52.headerText else l_props_0.title,
                    items = v58,
                    index = math.min(l_cardWindowIndex_0, v64),
                    itemCount = v64,
                    itemWidth = v56.X,
                    itemPadding = l_cardPadding_0,
                    carouselMargin = l_sideMargin_0,
                    onSeeAll = if not l_FFlagMoveCarouselHeader_0 then v39.onSeeAllFriends else v39.props.onActivateHeader,
                    carouselHeight = v56.Y,
                    canvasWidth = v64 * v62,
                    onChangeCanvasPosition = v39.updateCardWindowBounds,
                    onRefCallback = v39.scrollingFrameRefCallback,
                    showSeeAll = v39.props.newEmptyPageEnabled or l_friendCount_0 > 0,
                    onRetry = v25
                })
            });
        end);
    end);
end;
v24.getDerivedStateFromProps = function(v65, _)
    if v65.peopleListFrozen then
        return ;
    else
        return {
            items = v65.items
        };
    end;
end;
v24.didMount = function(v67)
    v67.updateCardWindowBounds();
end;
v24.didUpdate = function(v68, v69)
    local v70 = true;
    if v68.props.screenSize == v69.screenSize then
        v70 = v68.props.formFactor ~= v69.formFactor;
    end;
    if v70 then
        v68.updateCardWindowBounds();
    end;
    if l_FFlagFriendsCarouselPagination_0 then
        local l_Offset_0 = v68.scrollingFrameRef.CanvasSize.X.Offset;
        local v72 = l_Offset_0 ~= v68.state.canvasWidth;
        local v73 = l_Offset_0 <= v68.scrollingFrameRef.CanvasPosition.X + v68.props.screenSize.X;
        if not (not (v72 or v70) and not v73) then
            v68.updateFriendsCanvas(l_Offset_0);
        end;
    end;
end;
v24 = v5.connect(function(v74, _)
    return {
        screenSize = v74.ScreenSize,
        localUserId = if not l_FFlagMoveCarouselHeader_0 then v74.LocalUserId else nil
    };
end, function(v76)
    return {
        navigateDown = not l_FFlagMoveCarouselHeader_0 and function(v77)
            v76(v14(v77));
        end or nil
    };
end)(v24);
if not l_FFlagMoveCarouselHeader_0 then
    v24 = l_RoactServices_0.connect({
        eventIngestService = v10
    })(v24);
end;
return (v18.connectUserLayer({
    l_getFStringSocialFriendsLandingLayer_0()
}, function(v78, _)
    return {
        newEmptyPageEnabled = (v78[l_getFStringSocialFriendsLandingLayer_0()] or {}).new_empty_page or l_getFFlagNoFriendsUIEnabled_DEV_0()
    };
end, false)(v24));


local l_script_FirstAncestor_0 = script:FindFirstAncestor("Modules");
local v1 = require(l_script_FirstAncestor_0.LuaApp.Thunks.OpenCentralOverlayForPlayerContextualMenu);
local v2 = require(l_script_FirstAncestor_0.LuaApp.Thunks.NavigateToUserInfo);
local v3 = require(script.Parent.Parent.utils.formatUser);
local v4 = require(l_script_FirstAncestor_0.LuaApp.Actions.SetCurrentToastMessage);
local v5 = require(l_script_FirstAncestor_0.Profile.Analytics.EntryPoints);
return function(v6)
    return {
        openProfilePeekView = function(v7, v8)
            v8.contextualMenuProps.user = v3(v8.contextualMenuProps.user);
            v8.entryPoint = v5.HomePageFriendsCarousel;
            v6(v2(v7, v8));
        end,
        openPlayerContextualMenu = function(v9)
            v6(v1(v9));
        end,
        showToast = function(v10)
            v6(v4({
                toastMessage = v10
            }));
        end
    };
end;


local v0 = require(game:GetService("CorePackages").Workspace.Packages.JestConfigs);
return {
    displayName = "SocialAppIntegration-FriendsCarousel",
    testMatch = {
        "**/*.test"
    },
    setupFilesAfterEnv = {
        v0.setupFiles.LogHandler,
        v0.setupFiles.UIBloxInitializer,
        v0.setupFiles.createPromiseRejectionHandler()
    }
};


local l_CorePackages_0 = game:GetService("CorePackages");
local v1 = require(l_CorePackages_0.LuaSocialLibrariesDeps);
local l_llama_0 = v1.llama;
local l_PresenceType_0 = v1.RoduxPresence.config({}).Enums.PresenceType;
local l_UserModel_0 = require(l_CorePackages_0.Workspace.Packages.UserLib).Models.UserModel;
local l_PresenceType_1 = require(l_CorePackages_0.Workspace.Packages.GraphQLServer).types.PresenceType;
local l_Formatters_0 = require(l_CorePackages_0.Workspace.Packages.ApolloPresence).Formatters;
local l_FFlagFriendsCarouselPaginatedFriendsEnabled_0 = require(l_CorePackages_0.Workspace.Packages.SharedFlags).FFlagFriendsCarouselPaginatedFriendsEnabled;
local v8 = {
    [l_PresenceType_0.InGame] = l_UserModel_0.PresenceType.IN_GAME,
    [l_PresenceType_0.Online] = l_UserModel_0.PresenceType.ONLINE,
    [l_PresenceType_0.InStudio] = l_UserModel_0.PresenceType.IN_STUDIO,
    [l_PresenceType_0.Offline] = l_UserModel_0.PresenceType.OFFLINE
};
return function(v9)
    if l_FFlagFriendsCarouselPaginatedFriendsEnabled_0 and v9.__typename == "Friend" then
        local v10 = {
            [l_PresenceType_1.InGame] = l_UserModel_0.PresenceType.IN_GAME,
            [l_PresenceType_1.Online] = l_UserModel_0.PresenceType.ONLINE,
            [l_PresenceType_1.InStudio] = l_UserModel_0.PresenceType.IN_STUDIO,
            [l_PresenceType_1.Offline] = l_UserModel_0.PresenceType.OFFLINE
        };
        local v11 = v9.presence or {};
        return l_llama_0.Dictionary.join(v9, {
            gameInstanceId = v11.gameId,
            userPresenceType = l_Formatters_0.formatPresenceTypeToNumber(v11.userPresenceType),
            presence = v10[v11.userPresenceType] or v10[l_PresenceType_0.Offline],
            universeId = v11.universeId
        });
    else
        return l_llama_0.Dictionary.join(v9, {
            name = v9.username,
            gameInstanceId = v9.gameId,
            presence = v8[v9.userPresenceType] or v8[l_PresenceType_0.Offline]
        });
    end;
end;


local l_CorePackages_0 = game:GetService("CorePackages");
local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local l_ContactImporter_0 = l_Modules_0.LuaApp.Components.ContactImporter;
local l_useDispatch_0 = require(l_CorePackages_0.Workspace.Packages.RoactUtils).Hooks.RoactRodux.useDispatch;
local v4 = require(l_Modules_0.LuaApp.Thunks.NavigateDownToAddFriendsPage);
local l_useContactImporterConfiguration_0 = require(l_CorePackages_0.Workspace.Packages.ContactImporter).Utils.useContactImporterConfiguration;
local v6 = require(l_ContactImporter_0.useNavigateToContactImporter);
return function(v7)
    local v8 = v6();
    local v9 = l_useContactImporterConfiguration_0(v7);
    local v10 = l_useDispatch_0();
    local function _()
        v10(v4());
    end;
    return function()
        if not v9.shouldShowContactImporterModal then
            v10(v4());
            return ;
        else
            v8();
            return ;
        end;
    end;
end;


local l_useUserExperiment_0 = require(game:GetService("CorePackages").Packages.RoactAppExperiment).useUserExperiment;
local v1 = require(game:GetService("CoreGui").RobloxGui.Modules.LuaApp.Experiment.AppUserLayers);
return function()
    return l_useUserExperiment_0({
        v1.SocialFriendsLayer
    }, function(v2)
        return (v2[v1.SocialFriendsLayer] or {}).social_onboarding_variant == "newUIAddFriendsEntry";
    end);
end;


local l_CorePackages_0 = game:GetService("CorePackages");
local v1 = require(l_CorePackages_0.Packages.React);
local v2 = require(l_CorePackages_0.Packages.Cryo);
local l_AppPage_0 = require(l_CorePackages_0.Workspace.Packages.RobloxAppEnums).AppPage;
local v4 = require(script:FindFirstAncestor("Modules").LuaApp.Components.FriendsLanding.FriendsLandingUniversalAppWrapper.Container);
return function(v5)
    return v1.createElement(v4, v2.Dictionary.join(v5, {
        entryPage = l_AppPage_0.AddFriendsPage
    }));
end;


local _ = script:FindFirstAncestor("Modules");
local l_CorePackages_0 = game:GetService("CorePackages");
local v2 = require(l_CorePackages_0.Roact);
local v3 = require(l_CorePackages_0.RoactRodux);
local l_RoactServices_0 = require(l_CorePackages_0.Workspace.Packages.RoactServices).RoactServices;
local l_AppNotificationService_0 = require(l_CorePackages_0.Workspace.Packages.RoactServiceTags).AppNotificationService;
local v6 = require(script.Parent.FriendsLandingUniversalAppWrapper);
return require(l_CorePackages_0.LuaSocialLibrariesDeps).SocialLibraries.config({}).RoduxTools.compose(v3.connect(require(script.Parent.mapStateToProps), (require(script.Parent.mapDispatchToProps))), l_RoactServices_0.connect({
    notificationService = l_AppNotificationService_0
}))(function(v7)
    return v2.createElement(v6, v7);
end);