local l_script_FirstAncestor_0 = script:FindFirstAncestor("FriendsLanding");
local l_Parent_0 = l_script_FirstAncestor_0.Parent;
local v2 = require(l_script_FirstAncestor_0.dependencies);
local v3 = require(l_script_FirstAncestor_0.EnumScreens);
local l_AppPage_0 = require(l_Parent_0.RobloxAppEnums).AppPage;
local l_llama_0 = v2.llama;
local l_tutils_0 = v2.tutils;
local l_LocalizationService_0 = v2.LocalizationService;
local v8 = require(script.Parent.ButtonClickEvents);
local v9 = require(script.Parent.ImpressionEvents);
local v10 = require(script.Parent.NavigatedFromPagesEnum);
local v11 = require(l_script_FirstAncestor_0.Enums.ShowMoreSectionTypeEnum);
local v12 = require(script.Parent.Logger);
local v13 = {};
v13.__index = v13;
v13.DiagCounters = {
    UserLoadedPage = game:DefineFastString("FriendsLandingUserLoadedPageCounter", "FriendsLandingUserLoadedPage"),
    ShowMoreButtonPressedFriends = game:DefineFastString("ShowMoreButtonPressedFriends", "ShowMoreButtonPressedFriends"),
    ShowMoreButtonPressedFriendRequests = game:DefineFastString("ShowMoreButtonPressedFriendRequests", "ShowMoreButtonPressedFriendRequests")
};
v13.Navigation = {
    [v3.AddFriends] = game:DefineFastString("FriendsLandingNavigationAddFriendsCounter", "FriendsLandingNavigationAddFriends"),
    [v3.ViewUserProfile] = game:DefineFastString("FriendsLandingNavigationViewUserProfileCounter", "FriendsLandingNavigationViewUserProfile"),
    [v3.GameDetailsPeekView] = game:DefineFastString("FriendsLandingNavigationGameDetailsPeekViewCounter", "FriendsLandingNavigationGameDetailsPeekView"),
    [v3.SearchFriends] = game:DefineFastString("FriendsLandingSearchFriendsCounter", "FriendsLandingSearchFriends")
};
v13.Navigation[l_AppPage_0.Home] = game:DefineFastString("AddFriendsHomeEntryCounter", "AddFriendsHomeEntry");
v13.Navigation.ViewUserProfileAddFriends = game:DefineFastString("FriendsLandingViewUserProfileAddFriendsCounter", "FriendsLandingViewUserProfileAddFriends");
v13.Navigation.ConnectWithFriends = game:DefineFastString("AddFriendsConnectWithFriendsCounter", "AddFriendsConnectWithFriends");
v13.DiagStats = {
    LoadingPageTime = game:DefineFastString("FriendsLandingLoadingPageTimeStats", "FriendsLandingLoadingPageTime"),
    MountingPageTime = game:DefineFastString("FriendsLandingMountingPageTimeStats", "FriendsLandingMountingPageTime")
};
v13.BASE_CONTEXT = "friendsLanding";
v13.new = function(v14, v15, v16)
    assert(v15, "FriendsLanding must be passed the ID of the local user");
    local v17 = {
        _diagImpl = v14.Diag,
        _eventStreamImpl = v14.EventStream,
        localUserId = v15,
        _getLoadingTimeInfo = v16,
        _reportedPagePerformanceOnce = {}
    };
    setmetatable(v17, v13);
    return v17;
end;
v13.navigate = function(v18, v19)
    v12:info("navigate to {}", v19);
    local v20 = v13.Navigation[v19];
    if not v20 then
        v12:error("Error from navigate: Invalid destination '{}'", v19);
        return ;
    else
        v18._diagImpl:reportCounter(v20, 1);
        return ;
    end;
end;
v13.buttonClick = function(v21, v22, v23)
    assert(v8.isEnumValue(v22), "invalid button name used");
    v12:info("eventName: buttonClick btn: {}{}", v22, v21:_toStringAdditionalArgs(v23));
    local l_BASE_CONTEXT_0 = v21.BASE_CONTEXT;
    if not (not v23 or not v23.contextOverride) then
        l_BASE_CONTEXT_0 = v23.contextOverride;
    end;
    v23 = l_llama_0.Dictionary.join(v23 or {}, {
        btn = v22:rawValue(),
        uid = v21.localUserId,
        contextOverride = l_llama_0.None
    });
    v21._eventStreamImpl:setRBXEventStream(l_BASE_CONTEXT_0, "buttonClick", v23);
    local v25 = nil;
    if v22 == v8.LoadMoreUsers then
        if v23.sectionType == v11.FriendRequests then
            v25 = v13.DiagCounters.ShowMoreButtonPressedFriendRequests;
        elseif v23.sectionType == v11.Friends then
            v25 = v13.DiagCounters.ShowMoreButtonPressedFriends;
        end;
    end;
    if v25 then
        v21._diagImpl:reportCounter(v25, 1);
    end;
end;
v13.playerSearch = function(v26, v27, v28, v29)
    assert(type(v27) == "string", "Expected act to be a string");
    if v28 then
        assert(type(v28) == "string", "Expected keyword to be a string");
    end;
    if v29 then
        assert(type(v29) == "string", "Expected source to be a string");
    end;
    v12:info("eventName: search ctx: players keyword: {} source: {}", v28, v29);
    v26._eventStreamImpl:setRBXEventStream("players", "search", {
        act = v27,
        kwd = v28,
        source = v29,
        locale = l_LocalizationService_0.RobloxLocaleId
    });
end;
v13._toStringAdditionalArgs = function(_, v31)
    if v31 then
        local v32, _ = string.gsub(" args: " .. l_tutils_0.toString(v31), "%s+", " ");
        return v32;
    else
        return "";
    end;
end;
v13.pageLoaded = function(v34)
    v12:info("pageLoaded");
    v34._diagImpl:reportCounter(v13.DiagCounters.UserLoadedPage, 1);
end;
v13.pageLoadedWithArgs = function(v35, v36, v37)
    v12:info("pageLoaded" .. v36 or v35.BASE_CONTEXT);
    v35._eventStreamImpl:setRBXEventStream(v36 or v35.BASE_CONTEXT, "luaPageLoad", v37);
end;
v13._pagePerformanceReport = function(v38, v39, v40, v41)
    local v42 = v41 or os.clock();
    local v43 = not not v38._getLoadingTimeInfo and v38._getLoadingTimeInfo() or {};
    local l_startPage_0 = v43.startPage;
    local l_startTime_0 = v43.startTime;
    if not v10.fromRawValue(l_startPage_0) or type(l_startTime_0) ~= "number" then
        v12:warning("Cannot report loading time: incorrect startPage or startTime");
        return ;
    else
        local v46 = (v42 - l_startTime_0) * 1000;
        local v47 = v10[l_startPage_0].rawValue();
        local v48 = v39 .. "_" .. v47;
        local v49 = {
            startPage = v47,
            loadingTime = v46,
            uid = v38.localUserId
        };
        v12:info("pageLoaded in " .. v46 .. "ms");
        v38._diagImpl:reportStats(v48, v46);
        v38._eventStreamImpl:setRBXEventStream(v38.BASE_CONTEXT, v40, v49);
        return ;
    end;
end;
v13._reportPagePerformanceOnceCheck = function(v50, v51)
    if not v50._reportedPagePerformanceOnce[v51] then
        v50._reportedPagePerformanceOnce[v51] = true;
        return false;
    else
        return true;
    end;
end;
v13.pageMountingTimeReport = function(v52, v53)
    if not v52:_reportPagePerformanceOnceCheck("pageMountingTime") then
        v52:_pagePerformanceReport(v13.DiagStats.MountingPageTime, "pageMountingTime", v53);
        return ;
    else
        return ;
    end;
end;
v13.pageLoadingTimeReport = function(v54, v55)
    if not v54:_reportPagePerformanceOnceCheck("pageLoadingTime") then
        v54:_pagePerformanceReport(v13.DiagStats.LoadingPageTime, "pageLoadingTime", v55);
        return ;
    else
        return ;
    end;
end;
v13.reportAddFriendsEntrypoint = function(v56, v57, v58)
    assert(v13.Navigation[v57] ~= nil, "invalid screen");
    if v57 == l_AppPage_0.Home then
        v56._eventStreamImpl:setRBXEventStream("addUniversalFriends", "buttonClick", {
            btn = "LegacyAddFriendsButton",
            absolutePosition = 1,
            showContactImporterModal = if not v58 then nil else v58.showContactImporterModal
        });
    end;
    v56._diagImpl:reportCounter(v13.Navigation[v57], 1);
end;
v13.impressionEvent = function(v59, v60, v61)
    assert(v9.isEnumValue(v60), "invalid impression name used");
    v59._eventStreamImpl:setRBXEventStream("addUniversalFriends", v60:rawValue(), v61);
    v59._diagImpl:reportCounter(v60:rawValue(), 1);
end;
return v13;


return require(script:FindFirstAncestor("FriendsLanding").dependencies).enumerate(script.Name, {
    ContactWarningSeen = "contactWarningSeen",
    ContactImporterBannerSeen = "contactImporterBannerSeen",
    ContactImporterOnAddFriends = "contactImporterOnAddFriends",
    FriendPruningTooltipSeen = "friendPruningTooltipSeen",
    FriendPruningNewBadgeSeen = "friendPruningNewBadgeSeen",
    ProfileQRCodeBannerSeen = "profileQRCodeBannerSeen"
});


return require(script:FindFirstAncestor("FriendsLanding").dependencies).enumerate(script.Name, {
    Home = "Home",
    More = "More",
    SocialTab = "SocialTab"
});


local l_script_FirstAncestor_0 = script:FindFirstAncestor("FriendsLanding");
local l_AddFriends_0 = l_script_FirstAncestor_0.AddFriends;
local v2 = require(l_script_FirstAncestor_0.EnumScreens);
local l_Contexts_0 = require(l_AddFriends_0.dependencies).SocialLuaAnalytics.Analytics.Enums.Contexts;
return function(v4, v5, v6)
    local v7 = nil;
    if not v6 or not v6.source then
        local v8 = v6 and v6.currentRoute;
        v7 = if v8 == v2.AddFriends then l_Contexts_0.AddFriends else if v8 == v2.FriendsLanding then l_Contexts_0.FriendsLanding else if v8 == v2.SearchFriends then l_Contexts_0.PlayerSearch else "Unknown";
    else
        v7 = v6.source;
    end;
    v4:playerSearch(v5, not not v6 and v6.kwd or nil, v7);
end;


local l_Context_0 = require(script:FindFirstAncestor("FriendsLanding").dependencies).SocialLibraries.Context;
local v1 = require(script.ButtonClickEvents);
local v2 = require(script.ImpressionEvents);
local v3 = require(script.AnalyticsContext);
return {
    Class = require(script.FriendsLandingAnalytics),
    Context = v3,
    connect = l_Context_0.getConnect(v3),
    with = l_Context_0.getWith(v3),
    ButtonClickEvents = v1,
    AddFriendsPageLoadAnalytics = require(script.AddFriendsPageLoadAnalytics),
    AddFriendsSearchbarPressedEvent = require(script.AddFriendsSearchbarPressedEvent),
    ImpressionEvents = v2,
    PlayerSearchEvent = require(script.PlayerSearchEvent)
};


local v0 = require(script:FindFirstAncestor("FriendsLanding").dependencies);
local l_Context_0 = v0.SocialLibraries.Context;
local l_React_0 = v0.React;
local v3 = require(script.Context);
return {
    Context = v3,
    Provider = v3.Provider,
    Consumer = v3.Consumer,
    with = l_Context_0.getWith(v3),
    connect = l_Context_0.getConnect(v3),
    useContext = function()
        return (l_React_0.useContext(v3));
    end
};


local l_script_FirstAncestor_0 = script:FindFirstAncestor("FriendsLanding");
local v1 = require(l_script_FirstAncestor_0.dependencies);
local l_Roact_0 = v1.Roact;
local l_tutils_0 = v1.tutils;
local l_CINavigator_0 = v1.CINavigator;
local v5 = require(l_script_FirstAncestor_0.FriendsLandingContext);
local v6 = l_Roact_0.PureComponent:extend("CINavigatorInFL");
v6.init = function(v7)
    v7.context = {};
end;
v6.render = function(v8)
    return v5.with(function(v9)
        if not l_tutils_0.deepEqual(v9, v8.context) then
            v8.context = v9;
        end;
        return l_Roact_0.createElement(l_CINavigator_0, {
            navigation = v8.props.navigation,
            context = v8.context
        });
    end);
end;
v6.router = l_CINavigator_0.router;
return v6;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("FriendsLanding");
local l_Parent_0 = l_script_FirstAncestor_0.Parent;
local v2 = require(l_script_FirstAncestor_0.dependencies);
local l_Roact_0 = v2.Roact;
local v4 = require(l_script_FirstAncestor_0.FriendsLandingContext);
local v5 = require(l_script_FirstAncestor_0.EnumScreens);
local l_AppPage_0 = require(l_Parent_0.RobloxAppEnums).AppPage;
local l_compose_0 = v2.SocialLibraries.RoduxTools.compose;
local v8 = l_Roact_0.PureComponent:extend("GatewayComponent");
v8.render = function(_)
    return nil;
end;
v8.didMount = function(v10)
    local function v11()
        v10.props.navigation.replace(v5.SearchFriends, {
            shouldShowUserSearchLandingPage = v10.props.passedNavParams.shouldShowUserSearchLandingPage,
            userSearchSource = v10.props.passedNavParams.userSearchSource
        });
        if not (not v10.props.setScreenTopBar or not v10.props.passedNavParams.screenTopBarParams) then
            v10.props.setScreenTopBar(v5.FriendsLanding, v10.props.passedNavParams.screenTopBarParams);
        end;
    end;
    ({
        [l_AppPage_0.AddFriendsPage] = function()
            v10.props.navigation.replace(v5.AddFriends);
        end,
        [l_AppPage_0.SearchPage] = v11,
        [l_AppPage_0.SearchUsers] = v11,
        [l_AppPage_0.ViewFriends] = function()
            v10.props.navigation.replace(v5.FriendsLanding);
        end
    })[v10.props.entryPage or l_AppPage_0.ViewFriends]();
end;
return l_compose_0(v4.connect(function(v12, _)
    return {
        entryPage = v12.entryPage,
        setScreenTopBar = v12.setScreenTopBar,
        passedNavParams = v12.passedNavParams or {}
    };
end))(v8);


local l_script_FirstAncestor_0 = script:FindFirstAncestor("FriendsLanding");
local l_UserGameSettings_0 = UserSettings():GetService("UserGameSettings");
local l_Parent_0 = l_script_FirstAncestor_0.Parent;
local v3 = require(l_script_FirstAncestor_0.dependencies);
local l_Roact_0 = v3.Roact;
local l_RoactNavigation_0 = v3.RoactNavigation;
local v6 = require(l_script_FirstAncestor_0.Components.FriendsLandingScreen);
local v7 = require(l_script_FirstAncestor_0.Components.AddFriends.AddFriendsScreen);
local v8 = require(l_script_FirstAncestor_0.Components.FriendsLandingScreen.NavigationOptions);
local v9 = require(l_script_FirstAncestor_0.FriendsLandingContext);
local v10 = require(l_script_FirstAncestor_0.EnumScreens);
local v11 = require(l_script_FirstAncestor_0.Navigator.PlayerSearchWrapper);
local v12 = require(l_script_FirstAncestor_0.Components.HeaderBarCenterView);
local v13 = require(l_script_FirstAncestor_0.Components.HeaderBarRightView);
local v14 = require(l_script_FirstAncestor_0.Navigator.GatewayComponent);
local l_FFlagEnableFriendsLandingControllerBar_0 = require(l_Parent_0.SharedFlags).FFlagEnableFriendsLandingControllerBar;
return (l_RoactNavigation_0.createRobloxStackNavigator({
    {
        [v10.Gateway] = {
            screen = v14,
            navigationOptions = {
                headerText = {}
            }
        }
    },
    {
        [v10.FriendsLanding] = {
            screen = v6,
            navigationOptions = v8
        }
    },
    {
        [v10.AddFriends] = {
            screen = v7,
            navigationOptions = function(v16)
                return {
                    headerText = {
                        raw = "Feature.Chat.Label.AddFriends"
                    },
                    renderCenter = function()
                        return l_Roact_0.createElement(v12, v16);
                    end,
                    renderRight = function()
                        return v9.with(function(v17)
                            if not v17.addFriendsPageSearchbarEnabled then
                                return l_Roact_0.createElement(v13, v16);
                            else
                                return false;
                            end;
                        end);
                    end,
                    useSecondaryHeader = true,
                    tabBarVisible = false,
                    transparent = true,
                    absorbInputSelectable = if not l_FFlagEnableFriendsLandingControllerBar_0 then nil else false
                };
            end
        }
    },
    {
        [v10.SearchFriends] = {
            screen = function(v18)
                return l_Roact_0.createElement(v11, {
                    navigation = v18.navigation
                });
            end,
            navigationOptions = function(v19)
                return {
                    headerText = {
                        raw = "Feature.AddFriends.Label.InputPlaceholder.SearchForPeople"
                    },
                    tabBarVisible = false,
                    renderCenter = function()
                        return l_Roact_0.createElement(v12, v19);
                    end,
                    renderRight = function()
                        return l_Roact_0.createElement(v13, v19);
                    end,
                    useSecondaryHeader = true
                };
            end
        }
    }
}, {
    transitionConfig = function()
        if not l_UserGameSettings_0.ReducedMotion then
            return l_RoactNavigation_0.StackViewTransitionConfigs.SlideFromRight;
        else
            return l_RoactNavigation_0.StackViewTransitionConfigs.FadeInPlace;
        end;
    end
}));


local l_script_FirstAncestor_0 = script:FindFirstAncestor("FriendsLanding");
local l_Roact_0 = require(l_script_FirstAncestor_0.dependencies).Roact;
local v2 = require(l_script_FirstAncestor_0.Navigator.MainStackNavigator);
local v3 = require(l_script_FirstAncestor_0.Components.FriendsLandingHeaderBar);
local v4 = l_Roact_0.PureComponent:extend("MainStackNavigatorConnector");
v4.render = function(v5)
    return l_Roact_0.createFragment({
        layout = l_Roact_0.createElement("UIListLayout", {
            SortOrder = Enum.SortOrder.LayoutOrder
        }),
        topBar = l_Roact_0.createElement(v3, {
            navigation = v5.props.navigation
        }),
        navigator = l_Roact_0.createElement(v2, {
            navigation = v5.props.navigation
        })
    });
end;
v4.router = v2.router;
return v4;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("FriendsLanding");
local v1 = require(l_script_FirstAncestor_0.dependencies);
local l_RoactNavigation_0 = v1.RoactNavigation;
local v3 = require(l_script_FirstAncestor_0.EnumScreens);
local v4 = require(l_script_FirstAncestor_0.Navigator.MainStackNavigatorConnector);
local v5 = require(l_script_FirstAncestor_0.Components.FriendsLandingFilter);
local v6 = require(l_script_FirstAncestor_0.Components.FriendsLandingContextualMenu);
local l_DiscoverabilityOverlay_0 = v1.DiscoverabilityOverlay;
local v8 = require(l_script_FirstAncestor_0.Navigator.CINavigatorInFL);
local l_Roact_0 = v1.Roact;
local _ = require(l_script_FirstAncestor_0.Parent.React);
local v11 = require(l_script_FirstAncestor_0.FriendsLandingContext);
local v12 = require(l_script_FirstAncestor_0.Navigator.ProfileQRCodePageWrapper);
local v13 = l_Roact_0.PureComponent:extend("DiscoverabilityWrapped");
v13.render = function(v14)
    return v11.with(function(v15)
        return l_Roact_0.createElement(l_DiscoverabilityOverlay_0, {
            navigation = v14.props.navigation,
            context = v15
        });
    end);
end;
return (l_RoactNavigation_0.createRobloxStackNavigator({
    {
        MainStackNavigator = {
            screen = v4,
            navigationOptions = {
                overlayTransparency = 1
            }
        }
    },
    {
        [v3.FilterByModal] = {
            screen = v5
        }
    },
    {
        [v3.ContextualMenu] = v6
    },
    {
        [v3.ContactImporter] = v8
    },
    {
        [v3.DiscoverabilityOverlay] = v13
    },
    {
        [v3.ProfileQRCodePage] = v12
    }
}, {
    defaultNavigationOptions = {
        overlayEnabled = true,
        absorbInput = true,
        absorbInputSelectable = false
    },
    mode = l_RoactNavigation_0.StackPresentationStyle.Overlay
}));


local l_script_FirstAncestor_0 = script:FindFirstAncestor("FriendsLanding");
local v1 = require(l_script_FirstAncestor_0.dependencies);
local l_Roact_0 = v1.Roact;
local l_withStyle_0 = v1.UIBlox.Style.withStyle;
local v4 = require(l_script_FirstAncestor_0.FriendsLandingContext);
local v5 = l_Roact_0.PureComponent:extend("PlayerSearchWrapper");
v5.defaultProps = {
    layoutOrder = 1,
    onActivated = nil,
    searchText = ""
};
v5.render = function(v6)
    return v4.with(function(v7)
        return l_withStyle_0(function(v8)
            return l_Roact_0.createElement("Frame", {
                Size = UDim2.fromScale(1, 1),
                BackgroundColor3 = v8.Theme.BackgroundDefault.Color,
                BackgroundTransparency = 0,
                BorderSizePixel = 0
            }, {
                l_Roact_0.createElement(v7.playerSearchPage, {
                    searchParameters = {
                        searchKeyword = v6.props.navigation.getParam("searchText", nil) or "",
                        isKeywordSuggestionEnabled = true
                    },
                    shouldShowUserSearchLandingPage = v6.props.navigation.getParam("shouldShowUserSearchLandingPage", nil)
                })
            });
        end);
    end);
end;
return v5;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("FriendsLanding");
local v1 = require(l_script_FirstAncestor_0.dependencies);
local l_Roact_0 = v1.Roact;
local l_llama_0 = v1.llama;
local l_ProfileQRCode_0 = v1.ProfileQRCode;
local l_Contexts_0 = v1.SocialLuaAnalytics.Analytics.Enums.Contexts;
local v6 = require(l_script_FirstAncestor_0.FriendsLandingContext);
return function(v7)
    return l_Roact_0.createElement(l_ProfileQRCode_0.ProfileQRCodeEntryPoint, l_llama_0.Dictionary.join(v7, {
        onClose = function()
            v7.navigation.goBack();
        end,
        source = l_Contexts_0.AddFriends,
        robloxEventReceiver = v6.useContext().robloxEventReceiver
    }));
end;


local v0 = require(script:FindFirstAncestor("FriendsLanding").Parent.RoactNavigation);
local function _(v1)
    local v2 = v1._dangerouslyGetParent();
    return ((not not v2 and v1.state) and v1.state.key) and v2.getChildNavigation(v1.state.key) or v1;
end;
return function(v4)
    local v5 = v4._dangerouslyGetParent();
    return v0.getActiveChildNavigationOptions(((not not v5 and v4.state) and v4.state.key) and v5.getChildNavigation(v4.state.key) or v4);
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("FriendsLanding");
local v1 = require(l_script_FirstAncestor_0.dependencies);
local l_RoactNavigation_0 = v1.RoactNavigation;
return (l_RoactNavigation_0.createRobloxStackNavigator({
    {
        ModalStackNavigator = {
            screen = require(l_script_FirstAncestor_0.Navigator.ModalStackNavigator),
            navigationOptions = {
                transparent = true,
                absorbInputSelectable = false
            }
        }
    },
    {
        [require(l_script_FirstAncestor_0.EnumScreens).GenericToast] = {
            screen = v1.SocialLibraries.Components.ToastScreen,
            navigationOptions = {
                overlayEnabled = true,
                overlayTransparency = 1,
                absorbInput = false,
                renderUnderlyingPage = true
            }
        }
    }
}, {
    mode = l_RoactNavigation_0.StackPresentationStyle.Overlay
}));


local v0 = require(script:FindFirstAncestor("FriendsLanding").devDependencies);
v0.JestGlobals.expect.extend(v0.CollisionMatchers.Jest);


local l_script_FirstAncestor_0 = script:FindFirstAncestor("FriendsLanding");
local l_RoduxNetworking_0 = require(l_script_FirstAncestor_0.dependencies).RoduxNetworking;
require(l_script_FirstAncestor_0.devDependencies).JestGlobals.beforeAll(function()
    l_RoduxNetworking_0.setNetworkImpl(function(v2)
        error(string.format("\n\240\159\148\165 Should have replaced network implementation for url: %s\n", (tostring(v2))));
    end);
end);


local l_script_FirstAncestor_0 = script:FindFirstAncestor("FriendsLanding");
local v1 = require(l_script_FirstAncestor_0.dependencies);
local l_getDeepValue_0 = v1.SocialLibraries.Dictionary.getDeepValue;
local l_RecommendationSourceEnum_0 = v1.SocialCommon.Enums.RecommendationSourceEnum;
local l_RODUX_KEY_0 = require(l_script_FirstAncestor_0.Common.Constants).RODUX_KEY;
return function(v5)
    local v6 = l_getDeepValue_0(v5, string.format("%s.Friends.recommendations.byUserId.%s", l_RODUX_KEY_0, "test")) or {};
    local v7 = {};
    for v8, _ in pairs(v6) do
        v7[v8] = true;
    end;
    v5[l_RODUX_KEY_0].Friends.recommendations.bySource = {
        [l_RecommendationSourceEnum_0.AddFriendsPage] = v7
    };
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("FriendsLanding");
local l_Parent_0 = l_script_FirstAncestor_0.Parent;
local v2 = require(l_script_FirstAncestor_0.dependencies);
local l_UIBlox_0 = v2.UIBlox;
local l_Roact_0 = v2.Roact;
local l_Rodux_0 = v2.Rodux;
local l_RoactRodux_0 = v2.RoactRodux;
local v7 = require(l_script_FirstAncestor_0.installReducer);
local v8 = require(l_Parent_0.ApolloClient);
local l_mockApolloClient_0 = require(l_Parent_0.GraphQLServer).ApolloClientTestUtils.mockApolloClient;
return function(v10)
    return function(v11, v12, v13)
        local l_ScreenGui_0 = Instance.new("ScreenGui");
        l_ScreenGui_0.Parent = game:GetService("CoreGui");
        local _ = nil;
        local v17 = l_Roact_0.mount(v10((l_Roact_0.createFragment({
            styleProvider = l_Roact_0.createElement(l_UIBlox_0.App.Style.AppStyleProvider, {
                style = {
                    themeName = "Dark",
                    fontName = "Gotham"
                }
            }, {
                apolloClient = l_Roact_0.createElement(v8.ApolloProvider, {
                    client = l_mockApolloClient_0({})
                }, {
                    StoreProvider = l_Roact_0.createElement(l_RoactRodux_0.StoreProvider, {
                        store = l_Rodux_0.Store.new(l_Rodux_0.combineReducers({
                            FriendsLanding = v7(),
                            LocalUserId = function(v16)
                                return v16;
                            end
                        }), {}, {
                            l_Rodux_0.thunkMiddleware
                        })
                    }, {
                        myElement = if v13 then l_Roact_0.createElement("Frame", {
                            Size = v13
                        }, {
                            testElement = l_Roact_0.createElement(v11, v12)
                        }) else l_Roact_0.createElement(v11, v12)
                    })
                })
            })
        }))), l_ScreenGui_0);
        return l_ScreenGui_0, function()
            l_Roact_0.unmount(v17);
            l_ScreenGui_0:Destroy();
        end;
    end;
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("FriendsLanding");
local l_Parent_0 = l_script_FirstAncestor_0.Parent;
local v2 = require(l_script_FirstAncestor_0.dependencies);
local l_jest_0 = require(l_script_FirstAncestor_0.devDependencies).JestGlobals.jest;
local v4 = require(l_script_FirstAncestor_0.installReducer);
local l_t_0 = v2.t;
local v6 = require(l_script_FirstAncestor_0.Friends.filterStates);
local v7 = require(l_script_FirstAncestor_0.Utils.foldProviders);
local v8 = require(l_script_FirstAncestor_0.FriendsLandingContext);
local v9 = require(l_script_FirstAncestor_0.FriendsLandingAnalytics);
local v10 = require(l_script_FirstAncestor_0.EnumScreens);
local l_llama_0 = v2.llama;
local l_UIBlox_0 = v2.UIBlox;
local l_Roact_0 = v2.Roact;
local l_Rodux_0 = v2.Rodux;
local l_RoactRodux_0 = v2.RoactRodux;
local l_RoactNavigation_0 = v2.RoactNavigation;
local v17 = require(l_Parent_0.ApolloClient);
local v18 = require(l_Parent_0.GraphQLServer);
local v19 = require(l_Parent_0.UserProfiles);
local l_mockApolloClient_0 = v18.ApolloClientTestUtils.mockApolloClient;
local v21 = require(l_Parent_0.ReactFocusNavigation);
local l_FocusNavigationService_0 = v21.FocusNavigationService;
local l_CoreGui_0 = v21.EngineInterface.CoreGui;
local l_DesignTokenProvider_0 = require(l_Parent_0.Style).DesignTokenProvider;
local v25 = l_t_0.strictInterface({
    context = l_t_0.optional(l_t_0.table),
    initialState = l_t_0.optional(l_t_0.table),
    props = l_t_0.optional(l_t_0.table),
    store = l_t_0.optional(l_t_0.table),
    policy = l_t_0.optional(l_t_0.table),
    analytics = l_t_0.optional(l_t_0.table),
    navigation = l_t_0.optional(l_t_0.table),
    apolloClient = l_t_0.optional(l_t_0.table)
});
local v26 = {
    state = {
        params = {},
        routeName = "",
        key = ""
    },
    dispatch = function()
    end,
    goBack = function()
    end,
    addListener = function()
    end,
    isFocused = function()
    end,
    setParams = function()
    end,
    getParam = function()
    end,
    navigate = function()
    end
};
return function(v27)
    return function(v28, v29)
        assert(v25(v29));
        local l_ScreenGui_0 = Instance.new("ScreenGui");
        l_ScreenGui_0.Parent = game:GetService("CoreGui");
        local v31 = {};
        local v33 = l_Rodux_0.Store.new(l_Rodux_0.combineReducers({
            FriendsLanding = v4(),
            LocalUserId = function(v32)
                return v32;
            end
        }), l_llama_0.Dictionary.join({
            LocalUserId = "LocalUserId",
            FriendsLanding = {
                NetworkStatus = {
                    ["https://friends.roblox.com//v1/users/test/friends"] = "Done"
                }
            }
        }, v29.initialState), {
            l_Rodux_0.thunkMiddleware
        });
        local v34 = {
            getShowDisplayName = function()
                return true;
            end,
            getFriendFinder = function()
                return true;
            end,
            getAccountProviderName = function()
                return "";
            end,
            shouldInviteFromAccountProvider = function()
                return true;
            end,
            getEnableProfileQrCode = function()
                return true;
            end
        };
        table.insert(v31, {
            v2.UniversalAppPolicy.Provider,
            {
                policy = {
                    function()
                        return l_llama_0.Dictionary.join(v34, v29.policy);
                    end
                }
            }
        });
        local v35 = l_mockApolloClient_0({});
        v35:writeQuery({
            variables = {
                userIds = {
                    "0"
                }
            },
            query = v19.Queries.userProfilesCombinedNameAndUsernameByUserIds,
            data = {
                userProfiles = {
                    {
                        __typename = "UserProfile",
                        id = "0",
                        names = {
                            __typename = "Names",
                            combinedName = "test",
                            username = "test"
                        }
                    }
                }
            }
        });
        v35:writeQuery({
            variables = {
                userIds = {
                    "40"
                }
            },
            query = v19.Queries.userProfilesCombinedNameAndUsernameByUserIds,
            data = {
                userProfiles = {
                    {
                        __typename = "UserProfile",
                        id = "40",
                        names = {
                            __typename = "Names",
                            combinedName = "offlineFriend1",
                            username = "offlineFriend1"
                        }
                    }
                }
            }
        });
        v35:writeQuery({
            variables = {
                userIds = {
                    "39"
                }
            },
            query = v19.Queries.userProfilesCombinedNameAndUsernameByUserIds,
            data = {
                userProfiles = {
                    {
                        __typename = "UserProfile",
                        id = "39",
                        names = {
                            __typename = "Names",
                            combinedName = "offlineFriend2",
                            username = "offlineFriend2"
                        }
                    }
                }
            }
        });
        v35:writeQuery({
            variables = {
                userIds = {
                    "38"
                }
            },
            query = v19.Queries.userProfilesCombinedNameAndUsernameByUserIds,
            data = {
                userProfiles = {
                    {
                        __typename = "UserProfile",
                        id = "38",
                        names = {
                            __typename = "Names",
                            combinedName = "onlineFriend",
                            username = "onlineFriend"
                        }
                    }
                }
            }
        });
        v35:writeQuery({
            variables = {
                userIds = {
                    "37"
                }
            },
            query = v19.Queries.userProfilesCombinedNameAndUsernameByUserIds,
            data = {
                userProfiles = {
                    {
                        __typename = "UserProfile",
                        id = "37",
                        names = {
                            __typename = "Names",
                            combinedName = "inGameFriend",
                            username = "inGameFriend"
                        }
                    }
                }
            }
        });
        v35:writeQuery({
            variables = {
                userIds = {
                    "36"
                }
            },
            query = v19.Queries.userProfilesCombinedNameAndUsernameByUserIds,
            data = {
                userProfiles = {
                    {
                        __typename = "UserProfile",
                        id = "36",
                        names = {
                            __typename = "Names",
                            combinedName = "inStudioFriend",
                            username = "inStudioFriend"
                        }
                    }
                }
            }
        });
        v35:writeQuery({
            variables = {
                userIds = {
                    "123"
                }
            },
            query = v19.Queries.userProfilesCombinedNameAndUsernameByUserIds,
            data = {
                userProfiles = {
                    {
                        __typename = "UserProfile",
                        id = "123",
                        names = {
                            __typename = "Names",
                            combinedName = "rowan",
                            username = "mance"
                        }
                    }
                }
            }
        });
        v35:writeQuery({
            variables = {
                userIds = {
                    "456"
                }
            },
            query = v19.Queries.userProfilesCombinedNameAndUsernameByUserIds,
            data = {
                userProfiles = {
                    {
                        __typename = "UserProfile",
                        id = "456",
                        names = {
                            __typename = "Names",
                            combinedName = "henry",
                            username = "williams"
                        }
                    }
                }
            }
        });
        table.insert(v31, {
            v17.ApolloProvider,
            {
                client = v35
            }
        });
        local v36 = {
            setFilterKeys = l_jest_0.fn(),
            refreshPage = l_jest_0.fn(),
            wideMode = true,
            screenSize = Vector2.new(512, 512),
            filter = v6.All,
            navigateToLuaAppPages = {
                [v10.FriendFinder] = l_jest_0.fn()
            },
            getScreenTopBar = function()
                return {
                    shouldRenderCenter = false
                };
            end,
            friendRequestCount = 0,
            setScreenTopBar = l_jest_0.fn()
        };
        if v29.context then
            l_llama_0.Dictionary.map(v29.context, function(v37, v38)
                v36[v38] = v37;
            end);
        end;
        table.insert(v31, {
            v8.Provider,
            {
                value = v36
            }
        });
        table.insert(v31, {
            v9.Context.Provider,
            {
                value = v29.analytics or {
                    buttonClick = l_jest_0.fn(),
                    pageLoaded = l_jest_0.fn(),
                    navigate = l_jest_0.fn(),
                    pageLoadingTimeReport = l_jest_0.fn(),
                    pageLoadedWithArgs = l_jest_0.fn(),
                    pageMountingTimeReport = l_jest_0.fn(),
                    impressionEvent = l_jest_0.fn()
                }
            }
        });
        table.insert(v31, {
            l_UIBlox_0.App.Style.AppStyleProvider,
            {
                style = {
                    themeName = "Dark",
                    fontName = "Gotham"
                }
            }
        });
        table.insert(v31, {
            l_RoactNavigation_0.Provider,
            {
                value = l_llama_0.Dictionary.join(v26, v29.navigation)
            }
        });
        table.insert(v31, {
            l_DesignTokenProvider_0,
            {
                tokenMappers = {
                    App = function(_, v40)
                        return {
                            Page = {
                                BackgroundColor = v40.Semantic.Color.Background.Default.Color3,
                                BackgroundTransparency = v40.Semantic.Color.Background.Default.Transparency,
                                SafeAreaMargin = Vector2.new(v40.Global.Space_800, v40.Global.Space_300)
                            }
                        };
                    end,
                    FriendsLanding = function(_, _)
                        return {
                            AddFriendsPage = {},
                            FriendsLandingPage = {
                                GridViewItemMetrics = {
                                    minimumItemsPerRow = 6,
                                    minimumItemWidth = 258
                                }
                            },
                            ShowMore = {}
                        };
                    end
                }
            }
        });
        local v43 = l_FocusNavigationService_0.new(l_CoreGui_0);
        table.insert(v31, {
            v21.FocusNavigationContext.Provider,
            {
                value = v43
            }
        });
        table.insert(v31, {
            l_RoactRodux_0.StoreProvider,
            {
                store = v29.store or v33
            }
        });
        table.insert(v31, {
            l_UIBlox_0.App.Style.AppStyleProvider,
            {
                style = {
                    themeName = "Dark",
                    fontName = "Gotham"
                }
            }
        });
        local v44 = l_Roact_0.mount(v27((v7(l_Roact_0.createElement(v28, l_llama_0.Dictionary.join(v29.props)), v31))), l_ScreenGui_0);
        return l_ScreenGui_0, function()
            l_Roact_0.unmount(v44);
            l_ScreenGui_0:Destroy();
            v43:focusGuiObject(nil);
            v43:teardown();
        end;
    end;
end;


local v0 = require(script:FindFirstAncestor("FriendsLanding").dependencies);
local l_llama_0 = v0.llama;
local l_Presence_0 = v0.RoduxPresence.Models.Presence;
local l_User_0 = v0.RoduxUsers.Models.User;
local l_RecommendationContextType_0 = v0.RoduxFriends.Enums.RecommendationContextType;
local v5 = {};
for v6 = 1, 40 do
    local v7 = l_User_0.mock({
        id = tostring(v6),
        displayName = "displayName" .. tostring(v6),
        username = "username" .. tostring(v6),
        hasVerifiedBadge = false
    });
    v5[v7.id] = v7;
end;
local v8 = l_llama_0.Dictionary.keys(v5);
v5["40"].displayName = "offlineFriend1";
v5["39"].displayName = "offlineFriend2";
v5["38"].displayName = "onlineFriend";
v5["37"].displayName = "inGameFriend";
v5["36"].displayName = "inStudioFriend";
local v9 = {
    v5["40"].id,
    v5["39"].id,
    v5["38"].id,
    v5["37"].id,
    v5["36"].id
};
local v12 = l_llama_0.List.reduce(v5, function(v10, v11)
    return l_llama_0.Dictionary.join(v10, {
        [v11.id] = l_Presence_0.format(l_Presence_0.mock({
            userPresenceType = 0
        }))
    });
end);
local v13 = {
    recom1 = {
        id = "recom1",
        mutualFriendsList = {},
        rank = 3,
        contextType = l_RecommendationContextType_0.MutualFriends
    },
    recom2 = {
        id = "recom2",
        mutualFriendsList = {},
        rank = 1,
        contextType = l_RecommendationContextType_0.MutualFriends
    },
    recom3 = {
        id = "recom3",
        mutualFriendsList = {},
        rank = 5,
        contextType = l_RecommendationContextType_0.MutualFriends
    },
    recom4 = {
        id = "recom4",
        mutualFriendsList = {},
        rank = 4,
        contextType = l_RecommendationContextType_0.MutualFriends
    }
};
local v16 = l_llama_0.List.reduce(l_llama_0.Dictionary.keys(v13), function(v14, v15)
    v14[v15] = {
        id = tostring(v15),
        displayName = "displayName" .. tostring(v15),
        username = "username" .. tostring(v15),
        rank = v13[v15].rank,
        contextType = v13[v15].contextType
    };
    return v14;
end, {});
v12 = {
    ["40"] = l_Presence_0.format(l_Presence_0.mock({
        userPresenceType = 0
    })),
    ["39"] = l_Presence_0.format(l_Presence_0.mock({
        userPresenceType = 0
    })),
    ["38"] = l_Presence_0.format(l_Presence_0.mock({
        userPresenceType = 1
    })),
    ["37"] = l_Presence_0.format(l_Presence_0.mock({
        userPresenceType = 2
    })),
    ["36"] = l_Presence_0.format(l_Presence_0.mock({
        userPresenceType = 3
    }))
};
return function(v17)
    local v18 = not not v17 and v17.roduxKey or "FriendsLanding";
    return {
        noFriends = {
            LocalUserId = "test",
            GlobalGuiInset = {
                top = 20,
                bottom = 20,
                left = 20,
                right = 20
            },
            [v18] = {
                Friends = {
                    byUserId = {},
                    countsByUserId = {}
                },
                Users = {},
                Presence = {},
                NetworkStatus = {
                    ["https://friends.roblox.com/v1/users/test/friends"] = "Done"
                }
            },
            ScreenSize = Vector2.new(1000, 100)
        },
        smallNumbersOfFriends = {
            LocalUserId = "test",
            GlobalGuiInset = {
                top = 20,
                bottom = 20,
                left = 20,
                right = 20
            },
            [v18] = {
                Friends = {
                    byUserId = {
                        test = v9
                    },
                    countsByUserId = {
                        test = #v9
                    },
                    friendsRankByUserId = {
                        test = {
                            ["36"] = 10,
                            ["37"] = 1,
                            ["38"] = 3,
                            ["39"] = 2,
                            ["40"] = 5
                        }
                    },
                    recommendations = {}
                },
                Users = {
                    byUserId = v5
                },
                Presence = {
                    byUserId = v12
                },
                NetworkStatus = {
                    ["https://friends.roblox.com/v1/users/test/friends"] = "Done"
                }
            },
            ScreenSize = Vector2.new(1000, 100)
        },
        manyFriends = {
            LocalUserId = "test",
            GlobalGuiInset = {
                top = 20,
                bottom = 20,
                left = 20,
                right = 20
            },
            [v18] = {
                Friends = {
                    byUserId = {
                        test = v8
                    },
                    countsByUserId = {
                        test = #v8
                    },
                    requests = {
                        receivedCount = 12
                    },
                    recommendations = {}
                },
                Users = {
                    byUserId = v5
                },
                Presence = {
                    byUserId = v12
                },
                NetworkStatus = {
                    ["https://friends.roblox.com/v1/users/test/friends"] = "Done",
                    ["https://friends.roblox.com/v1/users/test/friends/inactive"] = "Done"
                }
            },
            ScreenSize = Vector2.new(1000, 100)
        },
        deletedFriends = {
            LocalUserId = "test",
            GlobalGuiInset = {
                top = 20,
                bottom = 20,
                left = 20,
                right = 20
            },
            [v18] = {
                Friends = {
                    byUserId = {},
                    countsByUserId = {}
                },
                DeletedUsers = {
                    byUserId = {}
                },
                Users = {},
                Presence = {},
                NetworkStatus = {
                    ["https://friends.roblox.com/v1/users/test/friends"] = "Done"
                }
            },
            ScreenSize = Vector2.new(600, 300)
        },
        friendsAndRecommendations = {
            LocalUserId = "test",
            GlobalGuiInset = {
                top = 20,
                bottom = 20,
                left = 20,
                right = 20
            },
            [v18] = {
                Friends = {
                    byUserId = {
                        test = v9
                    },
                    countsByUserId = {
                        test = #v9
                    },
                    recommendations = {
                        byUserId = {
                            test = v13
                        },
                        bySource = {}
                    },
                    requests = {
                        receivedCount = 28
                    },
                    friendshipStatus = {
                        recom1 = Enum.FriendStatus.NotFriend,
                        recom2 = Enum.FriendStatus.NotFriend,
                        recom3 = Enum.FriendStatus.Unknown,
                        recom4 = Enum.FriendStatus.FriendRequestSent
                    }
                },
                Users = {
                    byUserId = l_llama_0.Dictionary.join(v5, v16)
                },
                Presence = {
                    byUserId = v12
                },
                NetworkStatus = {
                    ["https://friends.roblox.com/v1/users/test/friends"] = "Done"
                }
            },
            ScreenSize = Vector2.new(1000, 100)
        },
        recommendationsOnly = {
            LocalUserId = "test",
            GlobalGuiInset = {
                top = 20,
                bottom = 20,
                left = 20,
                right = 20
            },
            [v18] = {
                Friends = {
                    byUserId = {},
                    countsByUserId = {},
                    recommendations = {
                        byUserId = {
                            test = v13
                        },
                        bySource = {
                            AddFriendsPage = {
                                recom1 = true,
                                recom2 = true,
                                recom3 = true,
                                recom4 = true
                            }
                        }
                    },
                    requests = {
                        receivedCount = 28
                    },
                    friendshipStatus = {
                        recom1 = Enum.FriendStatus.NotFriend,
                        recom2 = Enum.FriendStatus.NotFriend,
                        recom3 = Enum.FriendStatus.Unknown,
                        recom4 = Enum.FriendStatus.FriendRequestSent
                    }
                },
                Users = {
                    byUserId = l_llama_0.Dictionary.join(v5, v16)
                },
                Presence = {
                    byUserId = v12
                },
                NetworkStatus = {
                    ["https://friends.roblox.com/v1/users/test/friends"] = "Done"
                }
            },
            ScreenSize = Vector2.new(1000, 100)
        },
        manyFriendsAndRecommendations = {
            LocalUserId = "test",
            GlobalGuiInset = {
                top = 20,
                bottom = 20,
                left = 20,
                right = 20
            },
            [v18] = {
                Friends = {
                    byUserId = {
                        test = v8
                    },
                    countsByUserId = {
                        test = #v8
                    },
                    recommendations = {
                        byUserId = {
                            test = v13
                        },
                        bySource = {}
                    }
                },
                Users = {
                    byUserId = l_llama_0.Dictionary.join(v5, v16)
                },
                Presence = {
                    byUserId = v12
                },
                NetworkStatus = {
                    ["https://friends.roblox.com/v1/users/test/friends"] = "Done"
                }
            },
            ScreenSize = Vector2.new(1000, 100)
        }
    };
end;


return {
    getBaseTestStates = require(script.getBaseTestStates),
    addFriendRecommendationsToState = require(script.addFriendRecommendationsToState)
};


local l_act_0 = require(script:FindFirstAncestor("FriendsLanding").dependencies).Roact.act;
local l_RunService_0 = game:GetService("RunService");
return function(v2, v3)
    local v4 = v3 or 1;
    local v5 = 0;
    while not (not (v5 < v4) or v2()) do
        l_act_0(function()
            v5 = v5 + l_RunService_0.Heartbeat:Wait();
        end);
    end;
end;


local v0 = require(script:FindFirstAncestor("FriendsLanding").Common.Constants);
local l_game_EngineFeature_0 = game:GetEngineFeature(v0.TOOLTIP_GAME_ENGINE_FEATURE);
return {
    getKey = function(v2)
        if l_game_EngineFeature_0 then
            local l_status_0, l_result_0 = pcall(function()
                return v2:GetItem(v0.TOOLTIP_APP_STORAGE_KEY);
            end);
            if not l_status_0 then
                return false;
            else
                return l_result_0 == "true";
            end;
        else
            return true;
        end;
    end,
    updateKey = function(v5, v6)
        if l_game_EngineFeature_0 then
            pcall(function()
                v5:SetItem(v0.TOOLTIP_APP_STORAGE_KEY, (tostring(v6)));
                v5:Flush();
            end);
            return ;
        else
            return ;
        end;
    end
};


local l_Roact_0 = require(script:FindFirstAncestor("FriendsLanding").dependencies).Roact;
return function(v1, v2)
    local l_v1_0 = v1;
    for _, v5 in v2, nil, nil do
        l_v1_0 = l_Roact_0.createElement(v5[1], v5[2], {
            l_v1_0
        });
    end;
    return l_v1_0;
end;


return function(v0)
    local _ = nil;
    local v2 = nil;
    local l_add_friends_page_pymk_variant_0 = v0.add_friends_page_pymk_variant;
    if l_add_friends_page_pymk_variant_0 == "requestsFiveRows" then
        return true, 5;
    elseif l_add_friends_page_pymk_variant_0 == "requestsTwoRows" then
        return true, 2;
    elseif l_add_friends_page_pymk_variant_0 == "requestsOneRow" then
        return true, 1;
    else
        return false, v2;
    end;
end;


return function(v0)
    local v1 = true;
    if v0.social_onboarding_variant ~= "newUIAddFriendsEntry" then
        v1 = v0.social_onboarding_variant == "oldUIAddFriendsEntry";
    end;
    return v1;
end;


local l_Parent_0 = script.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local v2 = require(l_Parent_1.LuaSocialLibrariesDeps);
local v3 = require(l_Parent_1.SocialLuaAnalytics);
local _ = require(l_Parent_1.React);
local v5 = require(l_Parent_1.Lumberyak).Logger.new(nil, "FriendsLanding");
local v6 = v5:new("FriendsLanding Networking");
local v7 = game:DefineFastInt("FriendsLandingHttpRetryCount", 3);
local l_CoreGui_0 = game:GetService("CoreGui");
local l_Players_0 = game:GetService("Players");
local l_LocalizationService_0 = game:GetService("LocalizationService");
local l_TextService_0 = game:GetService("TextService");
local v12 = require(l_Parent_1.Otter);
local v13 = require(l_Parent_0.Flags.getFFlagVerifiedBadgeInFriendsLanding);
local l_getFStringSocialAddFriendsPageLayer_0 = require(l_Parent_1.SharedFlags).getFStringSocialAddFriendsPageLayer;
local l_getFStringSocialFriendsLandingLayer_0 = require(l_Parent_1.SharedFlags).getFStringSocialFriendsLandingLayer;
local l_getFStringSocialFriendsLayer_0 = require(l_Parent_1.SharedFlags).getFStringSocialFriendsLayer;
local l_FFlagContactRecs_0 = require(l_Parent_1.SharedFlags).FFlagContactRecs;
local l_GetFFlagEnableAppCommonInputHooks_0 = require(l_Parent_1.SharedFlags).GetFFlagEnableAppCommonInputHooks;
local l_httpRequest_0 = v2.httpRequest;
local v25 = v2.RoduxNetworking.config({
    keyPath = "FriendsLanding.NetworkStatus",
    networkImpl = l_httpRequest_0.config({
        requestFunction = function(v20, v21, v22)
            v6:info("Fetching: {}", string.format("[ requestMethod = %q, url = %q ]", v21, v20));
            return l_httpRequest_0.requestFunctions.HttpRbxApi(v20, v21, v22);
        end,
        postRequestFunction = function(v23, v24)
            v6:debug("Returned: {}", string.format("[ requestMethod = %q, url = %q, statusCode = %s, body = %s ]", v24.requestMethod, v24.url, v23.StatusCode, v23.Body));
        end,
        maxRetryCount = v7
    })
});
local v26 = if not l_FFlagContactRecs_0 then v2.RoduxFriends else require(l_Parent_1.RoduxFriends);
local l_RoduxPresence_0 = v2.RoduxPresence;
local l_RoduxUsers_0 = v2.RoduxUsers;
local l_NetworkingFriends_0 = v2.NetworkingFriends;
local v30 = require(l_Parent_1.ContactImporter);
return {
    Promise = require(l_Parent_1.Promise),
    llama = v2.llama,
    Roact = require(l_Parent_1.Roact),
    Rodux = require(l_Parent_1.Rodux),
    React = require(l_Parent_1.React),
    RoactNavigation = require(l_Parent_1.RoactNavigation),
    RoactRodux = require(l_Parent_1.RoactRodux),
    RoactAppExperiment = require(l_Parent_1.RoactAppExperiment),
    Logger = v5,
    Text = require(l_Parent_1.AppCommonLib).Text,
    t = require(l_Parent_1.t),
    UIBlox = require(l_Parent_1.UIBlox),
    withLocalization = require(l_Parent_1.Localization).withLocalization,
    memoize = require(l_Parent_1.AppCommonLib).memoize,
    enumerate = require(l_Parent_1.enumerate),
    LocalizationProvider = require(l_Parent_1.Localization).LocalizationProvider,
    Url = require(l_Parent_1.Http).Url,
    Lumberyak = require(l_Parent_1.Lumberyak),
    FormFactor = require(l_Parent_1.FormFactor).Enums.FormFactor,
    SocialLibraries = v2.SocialLibraries.config({}),
    SocialLuaAnalytics = v3,
    ProfileQRCode = require(l_Parent_1.ProfileQRCode),
    SocialCommon = require(l_Parent_1.SocialCommon),
    ReactFocusNavigation = require(l_Parent_1.ReactFocusNavigation),
    FocusNavigationUtils = require(l_Parent_1.FocusNavigationUtils),
    UniversalAppPolicy = require(l_Parent_1.UniversalAppPolicy).UniversalAppPolicy,
    tutils = require(l_Parent_1.tutils),
    AnalyticsService = require(l_Parent_1.Analytics).Analytics.new(game:GetService("RbxAnalyticsService")),
    RoduxNetworking = v25,
    RoduxFriends = v26.config({
        keyPath = "FriendsLanding.Friends"
    }),
    Dash = require(l_Parent_1.Dash),
    RoduxUsers = l_RoduxUsers_0.config({
        keyPath = "FriendsLanding.Users"
    }),
    RoduxPresence = l_RoduxPresence_0.config({
        keyPath = "FriendsLanding.Presence"
    }),
    RoduxGames = v2.RoduxGames.config({
        keyPath = "FriendsLanding.Games"
    }),
    RoduxUserPermissions = v2.RoduxUserPermissions.config({
        keyPath = "FriendsLanding.UserPermissions"
    }),
    RoduxAnalytics = v3.Analytics.RoduxAnalytics.config({
        keyPath = "FriendsLanding.Analytics"
    }),
    CoreGui = l_CoreGui_0,
    Players = l_Players_0,
    LocalizationService = l_LocalizationService_0,
    TextService = l_TextService_0,
    NetworkingFriendsEnums = v2.NetworkingFriends.Enums,
    FriendsNetworking = l_NetworkingFriends_0.config({
        roduxNetworking = v25
    }),
    GamesNetworking = v2.NetworkingGames.config({
        roduxNetworking = v25
    }),
    NetworkingUserSettings = v2.NetworkingUserSettings.config({
        roduxNetworking = v25
    }),
    NetworkingAccountInformation = v2.NetworkingAccountInformation.config({
        roduxNetworking = v25
    }),
    Otter = v12,
    CollisionMatchers = v2.CollisionMatchers,
    getFFlagVerifiedBadgeInFriendsLanding = v13,
    getFStringSocialAddFriendsPageLayer = l_getFStringSocialAddFriendsPageLayer_0,
    getFStringSocialFriendsLandingLayer = l_getFStringSocialFriendsLandingLayer_0,
    getFStringSocialFriendsLayer = l_getFStringSocialFriendsLayer_0,
    GetFFlagEnableAppCommonInputHooks = l_GetFFlagEnableAppCommonInputHooks_0,
    FindFriendsModal = v30.FindFriendsModal,
    ContactsList = v30.ContactsList,
    CINavigator = v30.Navigator,
    ContactsRevokedAccessDialog = v30.ContactsRevokedAccessDialog,
    updateOptedInUsers = require(l_Parent_1.SocialModalsCommon).Utils.updateOptedInUsers,
    fetchOSPermissionsForContacts = require(l_Parent_1.ContactImporter).Utils.fetchOSPermissionsForContacts,
    PermissionsProtocol = require(l_Parent_1.PermissionsProtocol).PermissionsProtocol,
    AppStorageService = game:GetService("AppStorageService"),
    ContactImporterConstants = require(l_Parent_1.ContactImporter).Constants,
    ShowContactImporterParams = v30.ShowContactImporterParams,
    FetchUserSettingsMetadata = require(l_Parent_1.DiscoverabilityModal).FetchUserSettingsMetadata,
    DiscoverabilityOverlay = require(l_Parent_1.DiscoverabilityModal).DiscoverabilityOverlay,
    DiscoverabilityAnalytics = require(l_Parent_1.DiscoverabilityModal).Analytics,
    Hooks = {
        useLocalization = require(l_Parent_1.Localization).Hooks.useLocalization
    },
    getRbxthumbWithTypeSizeAndOptions = require(l_Parent_1.UserLib).Utils.getRbxthumbWithTypeSizeAndOptions,
    UserLibConstants = require(l_Parent_1.UserLib).Utils.Constants,
    useFocusGuiObject = require(l_Parent_1.ReactFocusNavigation).useFocusGuiObject,
    AppHeaderBar = require(l_Parent_1.AppHeaderBar)
};


local l_Parent_0 = script.Parent.Parent;
local v1 = require(l_Parent_0.LuaSocialLibrariesDeps);
return {
    Mock = v1.Mock,
    CollisionMatchers = v1.CollisionMatchers,
    Rhodium = require(l_Parent_0.Dev.Rhodium),
    findImageSet = require(l_Parent_0.Dev.SocialTestHelpers).TestHelpers.findImageSet,
    DeferredLuaHelpers = require(l_Parent_0.Dev.TestUtils).DeferredLuaHelpers,
    UnitTestHelpers = require(l_Parent_0.Dev.UnitTestHelpers),
    RhodiumHelpers = require(l_Parent_0.Dev.RhodiumHelpers),
    ReactRoblox = require(l_Parent_0.Dev.ReactRoblox),
    JestGlobals = require(l_Parent_0.Dev.JestGlobals),
    React = require(l_Parent_0.React),
    UIBlox = require(l_Parent_0.UIBlox)
};


return {
    EntryPoint = require(script.Components.FriendsLandingEntryPoint),
    FriendsLandingAnalytics = require(script.FriendsLandingAnalytics),
    getEntryPointWithParentContext = require(script.Components.FriendsLandingEntryPoint.getFriendsLandingEntryPointWithParentContext),
    EnumScreens = require(script.EnumScreens),
    installReducer = require(script.installReducer),
    Components = require(script.Components),
    TestHelpers = function()
        return require(script.TestHelpers);
    end,
    ["jest.config"] = script["jest.config"]
};


return require(script:FindFirstAncestor("FriendsLanding").dependencies).Rodux.makeActionCreator(script.Name, function()
    return {};
end);


local l_RoduxFriends_0 = require(script:FindFirstAncestor("FriendsLanding").dependencies).RoduxFriends;
local v1 = require(script.Parent.convertActions);
local v2 = require(script.Parent.friendsActionAdaptor);
local v3 = {
    countsByUserId = {},
    byUserId = {},
    requests = {
        receivedCount = 0
    }
};
return function(v4)
    return v1(l_RoduxFriends_0.installReducer(), v2(v4), v3);
end;


return require(script.Parent.convertActions)(require(script:FindFirstAncestor("FriendsLanding").dependencies).RoduxPresence.installReducer(), require(script.Parent.presenceActionAdaptor), {
    byUserId = {},
    byGameId = {},
    byGameInstanceId = {},
    byPlaceId = {}
});


return require(script.Parent.convertActions)(require(script:FindFirstAncestor("FriendsLanding").dependencies).RoduxUsers.installReducer(), require(script.Parent.usersActionAdaptor), {
    byUserId = {},
    byUsername = {}
});


local l_llama_0 = require(script:FindFirstAncestor("FriendsLanding").dependencies).llama;
return function(v1, v2, v3)
    return function(v4, v5)
        v4 = v4 or v3;
        local v6 = {
            v5
        };
        local v7 = v2[v5.type];
        if v7 then
            v6 = v7(v5);
        end;
        return l_llama_0.List.reduce(v6, v1, v4);
    end;
end;


local v0 = require(script:FindFirstAncestor("FriendsLanding").dependencies);
local l_Players_0 = v0.Players;
local l_llama_0 = v0.llama;
local l_RoduxFriends_0 = v0.RoduxFriends;
return function(v4)
    local function v6(v5)
        return l_RoduxFriends_0.Actions.FriendshipCreated(v5.id, v4 or tostring(l_Players_0.LocalPlayer.UserId));
    end;
    return {
        AddUser = function(v7)
            if not v7.user.isFriend then
                return {
                    v7
                };
            else
                return {
                    v6(v7.user)
                };
            end;
        end,
        AddUsers = function(v8)
            return l_llama_0.Dictionary.values(l_llama_0.Dictionary.map(v8.users, function(v9, _)
                if not v9.isFriend then
                    return nil;
                else
                    return v6(v9);
                end;
            end));
        end,
        SetFriendRequestsCount = function(v11)
            return {
                l_RoduxFriends_0.Actions.RequestReceivedCountUpdated(v11.count)
            };
        end
    };
end;


local v0 = require(script:FindFirstAncestor("FriendsLanding").dependencies);
local l_Rodux_0 = v0.Rodux;
local l_RoduxNetworking_0 = v0.RoduxNetworking;
local l_RoduxGames_0 = v0.RoduxGames;
local l_RoduxUserPermissions_0 = v0.RoduxUserPermissions;
local l_RoduxAnalytics_0 = v0.RoduxAnalytics;
local v6 = require(script.contactImporterWarning);
local l_ShowContactImporterParams_0 = v0.ShowContactImporterParams;
local l_getFFlagVerifiedBadgeInFriendsLanding_0 = v0.getFFlagVerifiedBadgeInFriendsLanding;
return function()
    return l_Rodux_0.combineReducers({
        DeletedUsers = require(script.DeletedUsers),
        VerifiedUsers = if not l_getFFlagVerifiedBadgeInFriendsLanding_0() then nil else require(script.VerifiedUsers),
        InactiveFriends = require(script.InactiveFriends),
        IsUserFollowing = require(script.IsUserFollowing),
        Games = l_RoduxGames_0.installReducer(),
        Users = require(script.Users),
        Friends = require(script.Friends)(),
        Presence = require(script.Presence),
        UserPermissions = l_RoduxUserPermissions_0.installReducer(),
        NetworkStatus = l_RoduxNetworking_0.installReducer(),
        RequestsFromOriginSourceType = require(script.RequestsFromOriginSourceType),
        ShowContactImporterParams = l_ShowContactImporterParams_0,
        ContactImporterWarning = v6,
        Analytics = l_RoduxAnalytics_0.installReducer()
    });
end;


local v0 = require(script:FindFirstAncestor("FriendsLanding").dependencies);
local l_llama_0 = v0.llama;
local l_RoduxPresence_0 = v0.RoduxPresence;
local v3 = {
    "OFFLINE",
    "ONLINE",
    "IN_GAME",
    "IN_STUDIO"
};
local function v5(v4)
    return l_RoduxPresence_0.Actions.ReceivedUserPresence((l_RoduxPresence_0.Models.Presence.new(l_llama_0.Dictionary.join(v4, {
        presence = l_llama_0.None,
        userPresenceType = (table.find(v3, v4.presence) or 1) - 1,
        gameInstanceId = l_llama_0.None,
        gameId = v4.gameInstanceId,
        lastOnline = not not DateTime.now() and DateTime.fromUnixTimestamp(v4.lastOnline or 0):ToIsoDate() or "1970-01-01T00:00:00Z"
    }))));
end;
return {
    ReceivedUserPresence = function(v6)
        if not v6.payload then
            return {
                v5(v6)
            };
        else
            return v6;
        end;
    end
};


local v0 = require(script:FindFirstAncestor("FriendsLanding").dependencies);
local l_llama_0 = v0.llama;
local l_RoduxUsers_0 = v0.RoduxUsers;
local function v4(v3)
    return l_RoduxUsers_0.Actions.UserUpdated({
        id = v3.id,
        username = v3.name,
        displayName = v3.displayName,
        hasVerifiedBadge = v3.hasVerifiedBadge
    });
end;
return {
    AddUser = function(v5)
        return {
            v4(v5.user)
        };
    end,
    AddUsers = function(v6)
        return l_llama_0.Dictionary.values(l_llama_0.Dictionary.map(v6.users, v4));
    end
};


local l_Parent_0 = script.Parent;
local v1 = require(l_Parent_0.Parent.Dev.JestConfigs);
return {
    displayName = "FriendsLanding",
    testMatch = {
        "**/*.test"
    },
    setupFilesAfterEnv = {
        v1.setupFiles.LogHandler,
        v1.setupFiles.UIBloxInitializer,
        v1.setupFiles.createPromiseRejectionHandler(),
        l_Parent_0.TestHelpers.CollisionMatchersSetup,
        l_Parent_0.TestHelpers.NetworkImplHandler
    }
};


return {
    projects = {
        require(script.Parent.Parent.FriendsLanding)["jest.config"]
    }
};


local l_script_FirstAncestor_0 = script:FindFirstAncestor("FriendsMenu");
local l_Parent_0 = l_script_FirstAncestor_0.Parent;
local l_Context_0 = l_script_FirstAncestor_0.Context;
local v3 = require(l_Parent_0.React);
local v4 = require(l_Parent_0.UIBlox);
local l_UserModel_0 = require(l_Parent_0.UserLib).Models.UserModel;
local l_LocalizationHelper_0 = require(l_Parent_0.NotificationsCommon).LocalizationHelper;
local _ = require(l_Parent_0.NotificationsCommon);
local v8 = require(l_Context_0.FriendsListContext);
local _ = require(l_script_FirstAncestor_0.friendsMenuModalType);
local l_ShimmerPanel_0 = v4.App.Loading.ShimmerPanel;
local l_ImageSetLabel_0 = v4.Core.ImageSet.ImageSetLabel;
local l_Images_0 = v4.App.ImageSet.Images;
local l_useStyle_0 = v4.Core.Style.useStyle;
local l_getLocalizedStrings_0 = l_LocalizationHelper_0.getLocalizedStrings;
local v15 = {
    online = not require(l_Parent_0.SharedFlags).GetFFlagEnableUniversalAppGameInviteUnification() and "InGame.Presence.Label.Online" or "Common.Presence.Label.Online",
    inStudio = "Common.Presence.Label.RobloxStudio"
};
local v16 = l_Images_0["icons/logo/studiologo_small"];
local function _(v17, v18)
    if v17.presence == l_UserModel_0.PresenceType.IN_GAME then
        return v17.lastLocation;
    elseif v17.presence == l_UserModel_0.PresenceType.ONLINE then
        return v18.online;
    elseif v17.presence == l_UserModel_0.PresenceType.IN_STUDIO then
        return v18.inStudio;
    else
        return "@" .. v17.name;
    end;
end;
return function(v20)
    local v21 = l_useStyle_0();
    local v22 = v3.useContext(v8);
    local v23 = v22.isFetchingFriends or v22.friendsNames.loading;
    local l_Theme_0 = v21.Theme;
    local l_Font_0 = v21.Font;
    local v26 = l_Font_0.BaseSize * l_Font_0.Header2.RelativeSize;
    local v27 = l_Font_0.BaseSize * l_Font_0.CaptionBody.RelativeSize;
    local v28 = l_getLocalizedStrings_0(v15);
    local l_friend_0 = v20.friend;
    assert(l_friend_0, "friend should be non-nil. Silence type checker.");
    return v3.createElement("Frame", {
        Position = v20.position,
        Size = v20.size,
        BackgroundTransparency = 1,
        ClipsDescendants = true
    }, {
        Padding = v3.createElement("UIPadding", {
            PaddingLeft = UDim.new(0, 12)
        }),
        ListLayout = v3.createElement("UIListLayout", {
            FillDirection = Enum.FillDirection.Vertical,
            VerticalAlignment = Enum.VerticalAlignment.Center,
            Padding = UDim.new(0, 4)
        }),
        DisplayName = not not v23 and v3.createElement(l_ShimmerPanel_0, {
            Size = UDim2.new(0, 120, 0, 10),
            cornerRadius = UDim.new(0, 4),
            LayoutOrder = 1
        }) or v3.createElement("TextLabel", {
            Size = UDim2.new(1, 0, 0, v26),
            Text = l_friend_0.displayName,
            TextSize = v26,
            TextColor3 = l_Theme_0.TextEmphasis.Color,
            TextTransparency = l_Theme_0.TextEmphasis.Transparency,
            Font = l_Font_0.Header2.Font,
            BackgroundTransparency = 1,
            TextXAlignment = Enum.TextXAlignment.Left,
            TextWrapped = true,
            TextTruncate = Enum.TextTruncate.AtEnd,
            LayoutOrder = 1
        }),
        UserContextContainer = not not v23 and v3.createElement(l_ShimmerPanel_0, {
            Size = UDim2.new(0, 80, 0, 10),
            cornerRadius = UDim.new(0, 4),
            LayoutOrder = 2
        }) or v3.createElement("Frame", {
            BackgroundTransparency = 1,
            Size = UDim2.new(1, 0, 0, v27),
            ClipsDescendants = true
        }, {
            ListLayout = v3.createElement("UIListLayout", {
                FillDirection = Enum.FillDirection.Horizontal,
                VerticalAlignment = Enum.VerticalAlignment.Center,
                Padding = UDim.new(0, 4)
            }),
            StudioImage = l_friend_0.presence == l_UserModel_0.PresenceType.IN_STUDIO and v3.createElement(l_ImageSetLabel_0, {
                Image = v16,
                ImageColor3 = l_Theme_0.TextDefault.Color,
                ImageTransparency = l_Theme_0.TextDefault.Transparency,
                BackgroundTransparency = 1,
                Size = UDim2.new(0, v27, 0, v27),
                LayoutOrder = 1
            }),
            UserContext = v3.createElement("TextLabel", {
                Size = UDim2.new(1, -v27, 0, v27),
                Text = if l_friend_0.presence == l_UserModel_0.PresenceType.IN_GAME then l_friend_0.lastLocation else if l_friend_0.presence == l_UserModel_0.PresenceType.ONLINE then v28.online else if l_friend_0.presence == l_UserModel_0.PresenceType.IN_STUDIO then v28.inStudio else "@" .. l_friend_0.name,
                TextSize = v27,
                TextColor3 = l_Theme_0.TextEmphasis.Color,
                TextTransparency = l_Theme_0.TextEmphasis.Transparency,
                Font = l_Font_0.CaptionBody.Font,
                BackgroundTransparency = 1,
                TextXAlignment = Enum.TextXAlignment.Left,
                TextWrapped = true,
                TextTruncate = Enum.TextTruncate.AtEnd,
                LayoutOrder = 2
            })
        })
    });
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("FriendsMenu");
local l_Components_0 = l_script_FirstAncestor_0.Components;
local l_Parent_0 = l_script_FirstAncestor_0.Parent;
local l_Context_0 = l_script_FirstAncestor_0.Context;
local l_Enums_0 = l_script_FirstAncestor_0.Enums;
local v5 = require(l_Parent_0.React);
local v6 = require(l_Parent_0.UIBlox);
local l_dependencyArray_0 = require(l_Parent_0.RoactUtils).Hooks.dependencyArray;
local v8 = require(l_Parent_0.SharedFlags);
local l_GetFFlagEnableCommonFriendsMenu_0 = v8.GetFFlagEnableCommonFriendsMenu;
local l_GetFFlagEnableFriendMenuMultiSelect_0 = v8.GetFFlagEnableFriendMenuMultiSelect;
local l_GetFFlagEnableSidePaddingPropsFriendsMenu_0 = v8.GetFFlagEnableSidePaddingPropsFriendsMenu;
local l_GetFFlagFriendsMenuDummyLoadingFriendsFix_0 = v8.GetFFlagFriendsMenuDummyLoadingFriendsFix;
local v13 = require(l_Components_0.FriendThumbnail);
local v14 = require(l_Components_0.FriendsMenuButton);
local v15 = require(l_Components_0.FriendInfo);
local v16 = require(l_Components_0.FriendsMenuCheckbox);
local v17 = if not l_GetFFlagEnableCommonFriendsMenu_0() then require(l_Context_0.InviteFriendContext) else require(l_Context_0.InviteCallbackContext);
local v18 = require(l_Context_0.SelectedUsersContext);
local v19 = require(l_Enums_0.FriendMenuType);
local l_useStyle_0 = v6.Core.Style.useStyle;
local _ = require(l_script_FirstAncestor_0.friendsMenuModalType);
local v22 = UDim2.new(1, 0, 0.5, 0);
local v23 = Vector2.new(1, 0.5);
local function v24()
end;
return function(v25)
    local v26, v27 = v5.useState(false);
    local l_Theme_0 = l_useStyle_0().Theme;
    local l_friend_0 = v25.friend;
    assert(l_friend_0, "friend should be non-nil. Silence type checker.");
    local v30 = v5.useContext(v17);
    local v31 = v5.useContext(v18);
    local v32 = v5.useMemo(function()
        if not v25.sidePadding then
            return 24;
        else
            return v25.sidePadding;
        end;
    end, l_dependencyArray_0(v25.sidePadding));
    local v33 = v5.useCallback(function()
        if not (not v30 or not v30.inviteSingleFriend) then
            v30.inviteSingleFriend(l_friend_0.id, v25.layoutOrder);
        end;
    end, l_dependencyArray_0(v30, v30.inviteSingleFriend, l_friend_0.id, v25.layoutOrder));
    local v34 = v5.useCallback(function()
        if not v31.isFriendSelected(v25.friend.id) then
            v31.addFriend(v25.friend.id, v25.friend.displayName);
            return ;
        else
            v31.removeFriend(v25.friend.id);
            return ;
        end;
    end, l_dependencyArray_0(v31.isFriendSelected, v31.removeFriend, v31.addFriend, v25.friend.id));
    return v5.createElement("ImageButton", {
        Size = UDim2.new(1, 0, 0, 72),
        BackgroundColor3 = not not v26 and l_Theme_0.BackgroundOnHover.Color or l_Theme_0.BackgroundDefault.Color,
        BackgroundTransparency = not not v26 and l_Theme_0.BackgroundOnHover.Transparency or l_Theme_0.BackgroundDefault.Transparency,
        BorderSizePixel = 0,
        LayoutOrder = v25.layoutOrder,
        [v5.Event.MouseEnter] = function()
            v27(true);
        end,
        [v5.Event.MouseLeave] = function()
            v27(false);
        end,
        [v5.Event.Activated] = if not not l_GetFFlagFriendsMenuDummyLoadingFriendsFix_0() and l_friend_0.isLoadingPlaceholder then v24 else not l_GetFFlagEnableFriendMenuMultiSelect_0() and function()
            if v25.isFullRowActivatable and (not l_GetFFlagFriendsMenuDummyLoadingFriendsFix_0() or not l_friend_0.isLoadingPlaceholder) then
                v33();
                return ;
            else
                return ;
            end;
        end or v5.useCallback(function()
            if v25.isFullRowActivatable and (not l_GetFFlagFriendsMenuDummyLoadingFriendsFix_0() or not l_friend_0.isLoadingPlaceholder) then
                if not l_GetFFlagEnableFriendMenuMultiSelect_0() or v25.menuType ~= v19.MultiSelect then
                    v33();
                    return ;
                else
                    v34();
                    return ;
                end;
            else
                return ;
            end;
        end, l_dependencyArray_0(v25.isFullRowActivatable, v25.menuType, v33, v34, l_friend_0.isLoadingPlaceholder)),
        AutoButtonColor = v25.isFullRowActivatable
    }, {
        Padding = v5.createElement("UIPadding", {
            PaddingRight = if not l_GetFFlagEnableSidePaddingPropsFriendsMenu_0() then UDim.new(0, 24) else UDim.new(0, v32),
            PaddingLeft = if not l_GetFFlagEnableSidePaddingPropsFriendsMenu_0() then UDim.new(0, 24) else UDim.new(0, v32),
            PaddingBottom = UDim.new(0, 8),
            PaddingTop = UDim.new(0, 8)
        }),
        ThumbnailAndPresenseWrapper = v5.createElement(v13, {
            friend = l_friend_0,
            isHoverRow = v26,
            size = UDim2.new(0, 56, 0, 56),
            position = UDim2.new(0, 0, 0.5, 0),
            anchorPoint = Vector2.new(0, 0.5)
        }),
        UserInfo = v5.createElement(v15, {
            position = UDim2.new(0, 56, 0, 0),
            size = if not l_GetFFlagEnableSidePaddingPropsFriendsMenu_0() then UDim2.new(1, -134, 1, 0) else UDim2.new(1, -134, 1, 0),
            friend = l_friend_0
        }),
        InviteButton = if not not l_GetFFlagEnableFriendMenuMultiSelect_0() and v25.menuType == v19.MultiSelect then v5.createElement(v16, {
            size = UDim2.new(0, 66, 0, 36),
            position = v22,
            anchorPoint = v23,
            friend = l_friend_0
        }) else v5.createElement(v14, {
            size = UDim2.new(0, 66, 0, 36),
            position = v22,
            anchorPoint = v23,
            friend = l_friend_0,
            onInvite = v33,
            isFullRowActivatable = v25.isFullRowActivatable
        })
    });
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("FriendsMenu");
local l_Context_0 = l_script_FirstAncestor_0.Context;
local l_Parent_0 = l_script_FirstAncestor_0.Parent;
local v3 = require(l_Parent_0.React);
local l_getRbxthumbWithTypeSizeAndOptions_0 = require(l_Parent_0.UserLib).Utils.getRbxthumbWithTypeSizeAndOptions;
local v5 = require(l_Parent_0.UserLib);
local v6 = require(l_Parent_0.UIBlox);
local l_UserModel_0 = require(l_Parent_0.UserLib).Models.UserModel;
local _ = require(l_script_FirstAncestor_0.friendsMenuModalType);
local v9 = require(l_Context_0.FriendsListContext);
local l_ImageSetLabel_0 = v6.Core.ImageSet.ImageSetLabel;
local l_IconSize_0 = v6.App.Constant.IconSize;
local l_ShimmerPanel_0 = v6.App.Loading.ShimmerPanel;
local l_Images_0 = v6.App.ImageSet.Images;
local l_useStyle_0 = v6.Core.Style.useStyle;
local l_Constants_0 = v5.Utils.Constants;
local l_Size150x150_0 = l_Constants_0.RbxThumbnailSizes.Size150x150;
local l_AvatarHeadShot_0 = l_Constants_0.RbxthumbTypes.AvatarHeadShot;
local v18 = {
    [l_UserModel_0.PresenceType.ONLINE] = {
        Image = "component_assets/circle_16",
        Color = Color3.fromRGB(0, 180, 109),
        Size = UDim2.new(0, 12, 0, 12)
    },
    [l_UserModel_0.PresenceType.IN_GAME] = {
        Image = "icons/menu/games_small"
    },
    [l_UserModel_0.PresenceType.IN_STUDIO] = {
        Image = "icons/logo/studiologo_small"
    }
};
return function(v19)
    local l_friend_0 = v19.friend;
    assert(l_friend_0, "friend should be non-nil. Silence type checker.");
    local v21 = l_useStyle_0();
    local l_isFetchingFriends_0 = v3.useContext(v9).isFetchingFriends;
    local v24 = v3.useMemo(function()
        local v23 = nil;
        if l_friend_0 then
            v23 = l_getRbxthumbWithTypeSizeAndOptions_0(l_friend_0.id, l_AvatarHeadShot_0, l_Constants_0.RbxThumbnailSizeToNumberSize[l_Size150x150_0]);
        end;
        if not v23 then
            v23 = "rbxasset://textures/ui/LuaApp/graphic/ph-avatar-portrait.png";
        end;
        return v23;
    end, {
        l_friend_0
    });
    local l_PlayerBackgroundDefault_0 = v21.Theme.PlayerBackgroundDefault;
    local v26 = if l_friend_0.presence ~= l_UserModel_0.PresenceType.OFFLINE then v18[l_UserModel_0.PresenceType.ONLINE] else nil;
    return v3.createElement("Frame", {
        Size = v19.size,
        Position = v19.position,
        AnchorPoint = v19.anchorPoint,
        BackgroundTransparency = 1
    }, {
        Background = l_PlayerBackgroundDefault_0 and v3.createElement("Frame", {
            Size = v19.size,
            Position = v19.position,
            AnchorPoint = v19.anchorPoint,
            BackgroundColor3 = v21.Theme.UIDefault.Color,
            BackgroundTransparency = v21.Theme.UIDefault.Transparency
        }, {
            Corner = v3.createElement("UICorner", {
                CornerRadius = UDim.new(0.5, 0)
            })
        }),
        Thumbnail = not not l_isFetchingFriends_0 and v3.createElement(l_ShimmerPanel_0, {
            Size = UDim2.new(1, 0, 1, 0),
            cornerRadius = UDim.new(0.5, 0)
        }) or v3.createElement(l_ImageSetLabel_0, {
            Size = v19.size,
            Position = v19.position,
            AnchorPoint = v19.anchorPoint,
            Image = v24,
            BorderSizePixel = 0,
            BackgroundColor3 = v21 and v21.Theme.UIDefault.Color,
            BackgroundTransparency = if not l_PlayerBackgroundDefault_0 then v21.Theme.UIDefault.Transparency else 1
        }, {
            Corner = v3.createElement("UICorner", {
                CornerRadius = UDim.new(0.5, 0)
            })
        }),
        PresenseIcon = not (not v26 or l_isFetchingFriends_0) and v3.createElement(l_ImageSetLabel_0, {
            Image = l_Images_0[v26.Image],
            BackgroundTransparency = 0,
            BackgroundColor3 = not not v19.isHoverRow and v21.Theme.BackgroundOnHover.Color or v21.Theme.BackgroundDefault.Color,
            ImageColor3 = v26.Color,
            Position = UDim2.new(1, -1, 1, -1),
            AnchorPoint = Vector2.new(1, 1),
            Size = v26.Size or UDim2.new(0, l_IconSize_0.Small, 0, l_IconSize_0.Small)
        }, {
            Border = v3.createElement("UIStroke", {
                ApplyStrokeMode = Enum.ApplyStrokeMode.Border,
                Color = v21.Theme.BackgroundDefault.Color,
                Transparency = v21.Theme.BackgroundDefault.Transparency,
                Thickness = 3
            }),
            Corner = v3.createElement("UICorner", {
                CornerRadius = UDim.new(0.5, 0)
            })
        }) or nil
    });
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("FriendsMenu");
local l_Parent_0 = l_script_FirstAncestor_0.Parent;
local l_Context_0 = l_script_FirstAncestor_0.Context;
local v3 = require(l_Parent_0.React);
local v4 = require(l_Parent_0.UIBlox);
local l_dependencyArray_0 = require(l_Parent_0.RoactUtils).Hooks.dependencyArray;
local _ = require(l_script_FirstAncestor_0.friendsMenuModalType);
local v7 = require(l_Context_0.SelectedUsersContext);
local l_Checkbox_0 = v4.App.InputButton.Checkbox;
return function(v9)
    local v10 = v3.useContext(v7);
    return v3.createElement("Frame", {
        Size = v9.size,
        AnchorPoint = v9.anchorPoint,
        Position = v9.position,
        BackgroundTransparency = 1
    }, {
        CheckboxAlignment = v3.createElement("UIListLayout", {
            HorizontalAlignment = Enum.HorizontalAlignment.Center,
            VerticalAlignment = Enum.VerticalAlignment.Center
        }),
        Button = v3.createElement(l_Checkbox_0, {
            onActivated = v3.useCallback(function()
                if not v10.isFriendSelected(v9.friend.id) then
                    v10.addFriend(v9.friend.id, v9.friend.displayName);
                    return ;
                else
                    v10.removeFriend(v9.friend.id);
                    return ;
                end;
            end, l_dependencyArray_0(v10.isFriendSelected(v9.friend.id), v10.removeFriend, v10.addFriend, v9.friend.id)),
            isSelected = v10.isFriendSelected(v9.friend.id),
            text = ""
        })
    });
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("FriendsMenu");
local l_UserInputService_0 = game:GetService("UserInputService");
local l_GuiService_0 = game:GetService("GuiService");
local l_Components_0 = l_script_FirstAncestor_0.Components;
local l_Context_0 = l_script_FirstAncestor_0.Context;
local l_Enums_0 = l_script_FirstAncestor_0.Enums;
local l_Parent_0 = l_script_FirstAncestor_0.Parent;
local v7 = require(l_Parent_0.React);
local v8 = require(l_Parent_0.UIBlox);
local v9 = require(l_Components_0.FriendRow);
local v10 = require(l_Components_0.EmptyFriendsList);
local v11 = require(l_Components_0.FriendsListMsg);
local v12 = require(l_Context_0.FriendsListContext);
local _ = require(l_Enums_0.FriendMenuType);
local _ = require(l_script_FirstAncestor_0.friendsMenuModalType);
local l_VerticalScrollView_0 = v8.App.Container.VerticalScrollView;
return function(v16)
    local v17 = v7.useContext(v12);
    local l_friends_0 = v17.friends;
    local l_isFetchingFriends_0 = v17.isFetchingFriends;
    local l_isFriendsListFetchFailed_0 = v17.isFriendsListFetchFailed;
    local l_hasFriends_0 = v17.hasFriends;
    local v22 = v7.useRef(nil);
    v7.useEffect(function()
        if l_UserInputService_0.GamepadEnabled then
            local l_current_0 = v22.current;
            local v24 = nil;
            if l_current_0 then
                v24 = l_current_0:FindFirstAncestorOfClass("ScreenGui");
                if not (not v24 or not v24.Enabled) and l_GuiService_0.SelectedCoreObject == nil then
                    l_GuiService_0:AddSelectionParent(v16.parentComponentName, l_current_0);
                    for _, v26 in ipairs(l_current_0:GetChildren()) do
                        if v26:IsA("ImageButton") and v26.LayoutOrder == 1 then
                            l_GuiService_0.SelectedCoreObject = v26;
                        end;
                    end;
                end;
            end;
            return function()
                if not ((not l_GuiService_0.SelectedCoreObject or not v24) or l_GuiService_0.SelectedCoreObject.Parent ~= nil and not v24:IsAncestorOf(l_GuiService_0.SelectedCoreObject)) then
                    l_GuiService_0.SelectedCoreObject = nil;
                end;
                l_GuiService_0:RemoveSelectionGroup(v16.parentComponentName);
            end;
        else
            return ;
        end;
    end, {
        v22.current,
        l_friends_0
    });
    local v30 = v7.useMemo(function()
        local v27 = {
            RowListLayout = v7.createElement("UIListLayout", {
                FillDirection = Enum.FillDirection.Vertical,
                HorizontalAlignment = Enum.HorizontalAlignment.Center,
                SortOrder = Enum.SortOrder.LayoutOrder,
                VerticalAlignment = Enum.VerticalAlignment.Top
            })
        };
        for v28, v29 in ipairs(l_friends_0) do
            v27["User-" .. tostring(v29.id)] = v7.createElement(v9, {
                friend = v29,
                layoutOrder = v28,
                isFullRowActivatable = l_UserInputService_0.GamepadEnabled,
                menuType = v16.menuType,
                sidePadding = v16.sidePadding
            });
        end;
        return v27;
    end, {
        l_friends_0
    });
    local _ = nil;
    return v7.createElement(l_VerticalScrollView_0, {
        layoutOrder = v16.layoutOrder,
        size = v16.size,
        useAutomaticCanvasSize = true,
        canvasSizeY = UDim.new(1, 0),
        selectable = false,
        scrollingFrameRef = v22
    }, if not l_isFriendsListFetchFailed_0 then if l_isFetchingFriends_0 then v30 else if l_hasFriends_0 then if #l_friends_0 > 0 then v30 else v7.createElement(v11, {
        msgType = "noResultFriendsList"
    }) else v7.createElement(v10) else v7.createElement(v11, {
        msgType = "errorFriendsList"
    }));
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("FriendsMenu");
local l_Parent_0 = l_script_FirstAncestor_0.Parent;
local l_Context_0 = l_script_FirstAncestor_0.Context;
local l_dependencyArray_0 = require(l_Parent_0.RoactUtils).Hooks.dependencyArray;
local l_getStandardSizeAvatarHeadShotRbxthumb_0 = require(l_Parent_0.UserLib).Utils.getStandardSizeAvatarHeadShotRbxthumb;
local v5 = require(l_Parent_0.React);
local v6 = require(l_Parent_0.UIBlox);
local l_Images_0 = v6.App.ImageSet.Images;
local l_ImageSetLabel_0 = v6.Core.ImageSet.ImageSetLabel;
local l_Interactable_0 = v6.Core.Control.Interactable;
local l_useStyle_0 = v6.Core.Style.useStyle;
local _ = require(l_script_FirstAncestor_0.friendsMenuModalType);
local v12 = require(l_script_FirstAncestor_0.Constants);
local v13 = require(l_Context_0.SelectedUsersContext);
local v14 = UDim.new(1, 0);
return function(v15)
    local v16 = v5.useContext(v13);
    local v17 = l_useStyle_0();
    local l_Theme_0 = v17.Theme;
    local l_Font_0 = v17.Font;
    return v5.createElement(l_Interactable_0, {
        Size = UDim2.new(0, v12.FRIEND_MENU_CARD_SIZE, 0, v12.FRIEND_MENU_CARD_SIZE),
        BackgroundTransparency = 1,
        LayoutOrder = v15.layoutOrder,
        [v5.Event.Activated] = v5.useCallback(function()
            v16.removeFriend(v15.userId);
        end, l_dependencyArray_0(v15.userId, v16.removeFriend))
    }, {
        AvatarContainer = v5.createElement("Frame", {
            AnchorPoint = Vector2.new(0.5, 0),
            Position = UDim2.fromScale(0.5, 0),
            Size = UDim2.fromOffset(60, 60),
            BackgroundTransparency = 1
        }, {
            UICorner = v5.createElement("UICorner", {
                CornerRadius = v14
            }),
            Avatar = v5.createElement(l_ImageSetLabel_0, {
                Size = UDim2.fromOffset(60, 60),
                BackgroundColor3 = l_Theme_0.UIDefault.Color,
                Image = l_getStandardSizeAvatarHeadShotRbxthumb_0(v15.userId),
                ZIndex = 1
            }, {
                UICorner = v5.createElement("UICorner", {
                    CornerRadius = v14
                })
            }),
            CloseButton = v5.createElement(l_ImageSetLabel_0, {
                AnchorPoint = Vector2.new(0, 0),
                Position = UDim2.new(0, 0, 0, 0),
                Size = UDim2.fromOffset(16, 16),
                BackgroundTransparency = l_Theme_0.SystemPrimaryDefault.Transparency,
                BackgroundColor3 = l_Theme_0.SystemPrimaryDefault.Color,
                Image = l_Images_0["icons/navigation/close_small"],
                ImageColor3 = l_Theme_0.SystemPrimaryContent.Color,
                ZIndex = 2
            }, {
                UICorner = v5.createElement("UICorner", {
                    CornerRadius = v14
                })
            })
        }),
        DisplayName = v5.createElement("TextLabel", {
            AnchorPoint = Vector2.new(0.5, 1),
            AutomaticSize = Enum.AutomaticSize.Y,
            Position = UDim2.fromScale(0.5, 1),
            Size = UDim2.fromOffset(v12.FRIEND_MENU_CARD_SIZE, 0),
            BackgroundTransparency = 1,
            Font = l_Font_0.Footer.Font,
            Text = v15.displayName,
            TextColor3 = l_Theme_0.TextDefault.Color,
            TextSize = l_Font_0.BaseSize * l_Font_0.Footer.RelativeSize,
            TextTransparency = l_Theme_0.TextDefault.Transparency,
            TextTruncate = Enum.TextTruncate.AtEnd
        })
    });
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("FriendsMenu");
local l_Parent_0 = l_script_FirstAncestor_0.Parent;
local l_Context_0 = l_script_FirstAncestor_0.Context;
local l_dependencyArray_0 = require(l_Parent_0.RoactUtils).Hooks.dependencyArray;
local v4 = require(l_Parent_0.React);
local v5 = require(l_Parent_0.UIBlox);
local l_useLocalization_0 = require(l_Parent_0.Localization).Hooks.useLocalization;
local l_useStyle_0 = v5.Core.Style.useStyle;
local v8 = require(l_script_FirstAncestor_0.Constants);
local v9 = require(script.Parent.FriendsMenuUserCard);
local v10 = require(l_Context_0.SelectedUsersContext);
return function(v11)
    local v12 = v4.useContext(v10);
    local v13 = l_useStyle_0();
    local l_Theme_0 = v13.Theme;
    local l_Font_0 = v13.Font;
    return v4.createElement("Frame", {
        Size = UDim2.new(1, 0, 0, 0),
        AutomaticSize = Enum.AutomaticSize.Y,
        BackgroundTransparency = 1,
        LayoutOrder = v11.layoutOrder
    }, {
        VerticalLayout = v4.createElement("UIListLayout", {
            FillDirection = Enum.FillDirection.Vertical,
            Padding = UDim.new(0, 8),
            SortOrder = Enum.SortOrder.LayoutOrder
        }),
        SelectedFriendsText = v4.createElement("TextLabel", {
            Size = UDim2.new(1, 0, 0, 0),
            AutomaticSize = Enum.AutomaticSize.Y,
            BackgroundTransparency = 1,
            Font = l_Font_0.Header2.Font,
            LayoutOrder = 0,
            Text = l_useLocalization_0({
                selectedFriendsCountText = {
                    "Feature.FriendsMenu.Label.SelectedFriendsCount";
                    numerator = v12.selectedFriendsSize,
                    denominator = 5
                }
            }).selectedFriendsCountText,
            TextColor3 = l_Theme_0.TextEmphasis.Color,
            TextSize = l_Font_0.BaseSize * l_Font_0.Header2.RelativeSize,
            TextTransparency = l_Theme_0.TextEmphasis.Transparency,
            TextXAlignment = Enum.TextXAlignment.Left
        }),
        SelectedUsers = if v12.selectedFriendsSize ~= 0 then v4.createElement("ScrollingFrame", {
            Size = UDim2.new(1, 0, 0, v8.FRIEND_MENU_CARD_SIZE),
            AutomaticCanvasSize = Enum.AutomaticSize.XY,
            BackgroundTransparency = 1,
            LayoutOrder = 1,
            ScrollBarThickness = 0,
            ScrollingDirection = Enum.ScrollingDirection.X
        }, (v4.useMemo(function()
            local v16 = {
                UIListLayout = v4.createElement("UIListLayout", {
                    FillDirection = Enum.FillDirection.Horizontal,
                    Padding = UDim.new(0, 8),
                    SortOrder = Enum.SortOrder.LayoutOrder
                })
            };
            for v17, v18 in pairs(v12.selectedFriends) do
                v16["User-" .. tostring(v17)] = v4.createElement(v9, {
                    displayName = v18.displayName,
                    layoutOrder = v18.layoutOrder,
                    userId = v17
                });
            end;
            return v16;
        end, l_dependencyArray_0(v12.selectedFriends)))) else nil
    });
end;


return {
    InviteStatus = {
        Success = "Success",
        Moderated = "Moderated",
        Failed = "Failed",
        Pending = "Pending"
    },
    UserSorts = {
        Alphabetical = "Alphabetical",
        StatusAlphabetical = "StatusAlphabetical",
        StatusFrequents = "StatusFrequents"
    },
    FRIEND_MENU_CARD_SIZE = 76,
    DummyFriendsPrefix = "dummy_"
};


local l_script_FirstAncestor_0 = script:FindFirstAncestor("FriendsMenu");
local v1 = require(l_script_FirstAncestor_0.Parent.React);
local _ = require(l_script_FirstAncestor_0.friendsMenuModalType);
return (v1.createContext({
    friends = {},
    hasFriends = false,
    isFetchingFriends = false,
    isFriendsListFetchFailed = false,
    searchFriends = function()
        return {};
    end,
    searchFriendsString = "",
    friendsNames = {
        loading = true
    }
}));


local l_Parent_0 = script.Parent;
local l_Parent_1 = l_Parent_0.Parent.Parent;
local v2 = require(l_Parent_0.FriendsListContextProvider);
local v3 = require(l_Parent_0.InviteCallbackProvider);
local v4 = require(l_Parent_0.SelectedUsersContextProvider);
local v5 = require(l_Parent_1.React);
local l_GetFFlagEnableFriendMenuMultiSelect_0 = require(l_Parent_1.SharedFlags).GetFFlagEnableFriendMenuMultiSelect;
return function(v7)
    return v5.createElement(v2, {
        isLoadingCustomParams = v7.isLoadingCustomParams
    }, v5.createElement(v3, {
        inviteSingleFriend = v7.inviteSingleFriend,
        inviteMultiFriends = v7.inviteMultiFriends
    }, if not l_GetFFlagEnableFriendMenuMultiSelect_0() then v7.children else v5.createElement(v4, {}, v7.children)));
end;


return (require(script.Parent.Parent.Parent.React).createContext({
    inviteSingleFriend = function()
    end,
    inviteMultiFriends = function()
    end
}));


local l_Parent_0 = script.Parent;
local v1 = require(l_Parent_0.Parent.Parent.React);
local v2 = require(l_Parent_0.InviteCallbackContext);
return function(v3)
    return v1.createElement(v2.Provider, {
        value = {
            inviteSingleFriend = v3.inviteSingleFriend,
            inviteMultiFriends = v3.inviteMultiFriends
        }
    }, v3.children);
end;


return (require(script.Parent.Parent.Parent.React).createContext({
    inviteSingleFriend = function()
    end,
    getMaxRecipientRowNum = function()
    end
}));


return (require(script.Parent.Parent.Parent.React).createContext({
    selectedFriendsSize = 0,
    selectedFriends = {},
    addFriend = function()
    end,
    removeFriend = function()
    end,
    isFriendSelected = function()
        return false;
    end
}));


local l_Parent_0 = script.Parent;
local l_Parent_1 = l_Parent_0.Parent.Parent;
local v2 = require(l_Parent_0.SelectedUsersContext);
local v3 = require(l_Parent_1.React);
local v4 = require(l_Parent_1.Cryo);
local l_dependencyArray_0 = require(l_Parent_1.RoactUtils).Hooks.dependencyArray;
return function(v6)
    local v7 = v3.useRef(0);
    local v8, v9 = v3.useState({});
    local v10, v11 = v3.useState(0);
    local v14 = v3.useCallback(function(v12, v13)
        if v10 < 5 then
            v9(v4.Dictionary.join(v8, {
                [v12] = {
                    displayName = v13,
                    layoutOrder = v7.current
                }
            }));
            v7.current = v7.current + 1;
            v11(v10 + 1);
        end;
    end, l_dependencyArray_0(v8));
    local v16 = v3.useCallback(function(v15)
        v9(v4.Dictionary.join(v8, {
            [v15] = v4.None
        }));
        v11(v10 - 1);
    end, l_dependencyArray_0(v8));
    local v18 = v3.useCallback(function(v17)
        return v8[v17] or false;
    end, l_dependencyArray_0(v8));
    return v3.createElement(v2.Provider, {
        value = v3.useMemo(function()
            return {
                selectedFriendsSize = v10,
                selectedFriends = v8,
                addFriend = v14,
                removeFriend = v16,
                isFriendSelected = v18
            };
        end, l_dependencyArray_0(v8, v14, v16, v18))
    }, v6.children);
end;


return {
    SingleSelect = "SingleSelect",
    MultiSelect = "MultiSelect"
};


local l_script_FirstAncestor_0 = script:FindFirstAncestor("FriendsMenu");
local l_Parent_0 = l_script_FirstAncestor_0.Parent;
local v2 = require(l_Parent_0.UIBlox);
v2.init(require(l_Parent_0.Dev.RobloxAppUIBloxConfig));
local l_mockLocale_0 = require(l_Parent_0.Dev.SocialTestHelpers).StoryHelpers.mockLocale;
local v4 = require(l_Parent_0.Cryo);
local v5 = require(l_Parent_0.Dev.Roact);
local l_AppStyleProvider_0 = v2.App.Style.AppStyleProvider;
local v7 = {
    Default = {
        themeName = "Light",
        fontName = "Gotham"
    },
    Light = {
        themeName = "Light",
        fontName = "Gotham"
    },
    Dark = {
        themeName = "Dark",
        fontName = "Gotham"
    }
};
local v8 = {
    language = "en-us"
};
return {
    name = "FriendsMenu",
    storyRoot = l_script_FirstAncestor_0,
    roact = v5,
    mapDefinition = function(v9)
        return v4.Dictionary.join(v9, {
            controls = v4.Dictionary.join(v8, v9.controls or {})
        });
    end,
    mapStory = function(v10)
        return function(v11)
            return v5.createElement(l_AppStyleProvider_0, {
                style = not not v11 and v7[v11.theme] or v7.Default
            }, {
                Child = l_mockLocale_0(v10, v11)
            });
        end;
    end
};


local l_Parent_0 = script.Parent.Parent;
local v1 = require(l_Parent_0.LuaSocialLibrariesDeps);
local v2 = require(l_Parent_0.HttpRequest);
return {
    networkImpl = v2.config({
        requestFunction = v2.requestFunctions.HttpRbxApi
    }),
    sortFriendsByCorrectedPresenceAndRank = v1.SocialLibraries.config({}).User.sortFriendsByCorrectedPresenceAndRank
};