local l_CorePackages_0 = game:GetService("CorePackages");
local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v2 = require(l_CorePackages_0.Roact);
local v3 = require(l_Modules_0.Settings.Pages.ShareGame.Constants);
local l_Constants_0 = require(l_CorePackages_0.Workspace.Packages.UserLib).Utils.Constants;
local l_getRbxthumbWithTypeSizeAndOptions_0 = require(l_CorePackages_0.Workspace.Packages.UserLib).Utils.getRbxthumbWithTypeSizeAndOptions;
local l_GRAY3_0 = v3.Color.GRAY3;
local l_InviteAvatarThumbnailSize_0 = v3.InviteAvatarThumbnailSize;
local v8 = {
    [1] = {
        {
            Size = UDim2.new(1, 0, 1, 0),
            Position = UDim2.new(0, 0, 0, 0),
            FrameSize = UDim2.new(1, 0, 1, 0),
            FramePosition = UDim2.new(0, 0, 0, 0)
        }
    },
    [2] = {
        {
            Size = UDim2.new(2, 0, 1, 0),
            Position = UDim2.new(-0.5, 0, 0, 0),
            FrameSize = UDim2.new(0.5, -1, 1, 0),
            FramePosition = UDim2.new(0, 0, 0, 0),
            Border = {
                BorderPosition = UDim2.new(0.5, -1, 0, 0),
                BorderSize = UDim2.new(0, 1, 1, 0)
            }
        },
        {
            Size = UDim2.new(2, 0, 1, 0),
            Position = UDim2.new(-0.5, 0, 0, 0),
            FrameSize = UDim2.new(0.5, -1, 1, 0),
            FramePosition = UDim2.new(0.5, 1, 0, 0)
        }
    },
    [3] = {
        {
            Size = UDim2.new(2, 0, 1, 0),
            Position = UDim2.new(-0.5, 0, 0, 0),
            FrameSize = UDim2.new(0.5, -1, 1, 0),
            FramePosition = UDim2.new(0, 0, 0, 0),
            Border = {
                BorderPosition = UDim2.new(0.5, -1, 0, 0),
                BorderSize = UDim2.new(0, 1, 1, 0)
            }
        },
        {
            Size = UDim2.new(1, 0, 1, 0),
            Position = UDim2.new(0, 0, 0, 0),
            FrameSize = UDim2.new(0.5, -1, 0.5, -1),
            FramePosition = UDim2.new(0.5, 1, 0, 0),
            Border = {
                BorderPosition = UDim2.new(0.5, 0, 0.5, -1),
                BorderSize = UDim2.new(0.5, 0, 0, 1)
            }
        },
        {
            Size = UDim2.new(1, 0, 1, 0),
            Position = UDim2.new(0, 0, 0, 0),
            FrameSize = UDim2.new(0.5, -1, 0.5, -1),
            FramePosition = UDim2.new(0.5, 1, 0.5, 1)
        }
    },
    [4] = {
        {
            Size = UDim2.new(1, 0, 1, 0),
            Position = UDim2.new(0, 0, 0, 0),
            FrameSize = UDim2.new(0.5, -1, 0.5, -1),
            FramePosition = UDim2.new(0, 0, 0, 0),
            Border = {
                BorderPosition = UDim2.new(0, 0, 0.5, -1),
                BorderSize = UDim2.new(1, 0, 0, 1)
            }
        },
        {
            Size = UDim2.new(1, 0, 1, 0),
            Position = UDim2.new(0, 0, 0, 0),
            FrameSize = UDim2.new(0.5, -1, 0.5, -1),
            FramePosition = UDim2.new(0.5, 1, 0, 0)
        },
        {
            Size = UDim2.new(1, 0, 1, 0),
            Position = UDim2.new(0, 0, 0, 0),
            FrameSize = UDim2.new(0.5, -1, 0.5, -1),
            FramePosition = UDim2.new(0, 0, 0.5, 1),
            Border = {
                BorderPosition = UDim2.new(0.5, -1, 0, 0),
                BorderSize = UDim2.new(0, 1, 1, 0)
            }
        },
        {
            Size = UDim2.new(1, 0, 1, 0),
            Position = UDim2.new(0, 0, 0, 0),
            FrameSize = UDim2.new(0.5, -1, 0.5, -1),
            FramePosition = UDim2.new(0.5, 1, 0.5, 1)
        }
    }
};
local v9 = v2.PureComponent:extend("ConversationThumbnail");
v9.render = function(v10)
    local l_size_0 = v10.props.size;
    local l_layoutOrder_0 = v10.props.layoutOrder;
    local l_zIndex_0 = v10.props.zIndex;
    local l_users_0 = v10.props.users;
    local v15 = #l_users_0;
    local v16 = {};
    for v17, v18 in ipairs(l_users_0) do
        local v19 = v8[v15][v17];
        local v20 = nil;
        if v18 then
            v20 = l_getRbxthumbWithTypeSizeAndOptions_0(v18.id, v3.InviteAvatarRbxthumbType, l_Constants_0.RbxThumbnailSizeToNumberSize[l_InviteAvatarThumbnailSize_0]);
        end;
        if not v20 then
            v20 = "rbxasset://textures/ui/LuaApp/graphic/ph-avatar-portrait.png";
        end;
        v16["AvatarHolder-" .. v17] = v2.createElement("Frame", {
            BackgroundTransparency = 1,
            ClipsDescendants = true,
            Size = v19.FrameSize,
            Position = v19.FramePosition,
            ZIndex = l_zIndex_0
        }, {
            Avatar = v2.createElement("ImageLabel", {
                BackgroundTransparency = 1,
                Size = v19.Size,
                Position = v19.Position,
                Image = v20,
                ZIndex = l_zIndex_0
            })
        });
        if v19.Border then
            v16["Border-" .. v17] = v2.createElement("Frame", {
                Size = v19.Border.BorderSize,
                Position = v19.Border.BorderPosition,
                BorderSizePixel = 0,
                BackgroundColor3 = l_GRAY3_0,
                ZIndex = l_zIndex_0
            });
        end;
    end;
    return v2.createElement("Frame", {
        BackgroundTransparency = 1,
        Size = l_size_0,
        LayoutOrder = l_layoutOrder_0,
        ZIndex = l_zIndex_0
    }, {
        ContentsContainer = v2.createElement("Frame", {
            BackgroundTransparency = 0,
            Size = UDim2.new(1, -1, 1, -1),
            AnchorPoint = Vector2.new(0.5, 0.5),
            Position = UDim2.new(0.5, 0, 0.5, 0),
            BackgroundColor3 = v3.Color.WHITE,
            BorderColor3 = l_GRAY3_0,
            BorderSizePixel = 1,
            ZIndex = l_zIndex_0
        }, v16)
    });
end;
return v9;


local l_CoreGui_0 = game:GetService("CoreGui");
local l_CorePackages_0 = game:GetService("CorePackages");
local v2 = require(l_CorePackages_0.Roact);
local v3 = require(l_CorePackages_0.RoactRodux);
local l_Modules_0 = l_CoreGui_0.RobloxGui.Modules;
local l_Parent_0 = script.Parent;
local v6 = require(l_Modules_0.Flags.GetFFlagExtraInviteModalStringValidation);
local v7 = require(l_Parent_0.ShareGameContainer);
local v8 = require(l_Parent_0.ModalShareGamePageFrame);
local v9 = require(l_Parent_0.LayoutProvider);
local v10 = require(l_Parent_0.InviteSingleUserContainer);
local v11 = require(l_Parent_0.LoadingModal);
local v12 = v2.PureComponent:extend("FullModalShareGameComponent");
v12.render = function(v13)
    local l_isVisible_0 = v13.props.isVisible;
    local l_analytics_0 = v13.props.analytics;
    local l_onAfterClosePage_0 = v13.props.onAfterClosePage;
    local l_store_0 = v13.props.store;
    local l_promptMessage_0 = v13.props.promptMessage;
    local l_inviteUserId_0 = v13.props.inviteUserId;
    local l_inviteMessageId_0 = v13.props.inviteMessageId;
    local l_launchData_0 = v13.props.launchData;
    local l_isLoading_0 = v13.props.isLoading;
    if not (not v6() or not l_promptMessage_0) then
        if not l_inviteUserId_0 then
            l_promptMessage_0 = l_promptMessage_0:gsub("\n", " ");
        end;
        if l_promptMessage_0:gsub("%s", "") == "" then
            l_promptMessage_0 = nil;
        end;
    end;
    return v2.createElement(v3.StoreProvider, {
        store = l_store_0
    }, {
        screenGui = v2.createElement("ScreenGui", {
            AutoLocalize = false,
            Enabled = l_isVisible_0,
            DisplayOrder = -1,
            ZIndexBehavior = Enum.ZIndexBehavior.Sibling
        }, {
            loadingIndicator = l_isLoading_0 and v2.createElement(v11),
            layoutProvider = not l_isLoading_0 and v2.createElement(v9, nil, {
                ShareGameContainer = v2.createElement(v7, {
                    analytics = l_analytics_0,
                    isVisible = l_isVisible_0,
                    skeletonComponent = if not l_inviteUserId_0 then v8 else v10,
                    promptMessage = l_promptMessage_0,
                    inviteUserId = l_inviteUserId_0,
                    inviteMessageId = l_inviteMessageId_0,
                    launchData = l_launchData_0,
                    onAfterClosePage = function()
                        local v23 = {};
                        for v24, _ in pairs(l_store_0:getState().Invites) do
                            table.insert(v23, v24);
                        end;
                        l_onAfterClosePage_0(v23);
                    end
                })
            })
        })
    });
end;
return v12;


local v0 = require(game:GetService("CorePackages").Roact);
local v1 = v0.PureComponent:extend("IconButton");
v1.render = function(v2)
    local l_visible_0 = v2.props.visible;
    local l_anchorPoint_0 = v2.props.anchorPoint;
    local l_position_0 = v2.props.position;
    local l_size_0 = v2.props.size;
    local l_zIndex_0 = v2.props.zIndex;
    local l_onClick_0 = v2.props.onClick;
    local v9 = v2.props.iconHorizontalAlignment or Enum.HorizontalAlignment.Center;
    local v10 = v2.props.iconVerticalAlignment or Enum.VerticalAlignment.Center;
    local l_iconSpritePath_0 = v2.props.iconSpritePath;
    local l_iconSpriteFrame_0 = v2.props.iconSpriteFrame;
    local v13 = v2.props.horizontalInset or 12;
    local v14 = 0;
    local v15 = 1;
    if v9 == Enum.HorizontalAlignment.Center then
        v13 = 0;
    elseif v9 == Enum.HorizontalAlignment.Left then
        l_position_0 = UDim2.new(l_position_0.X.Scale, l_position_0.X.Offset - v13, l_position_0.Y.Scale, l_position_0.Y.Offset);
    elseif v9 == Enum.HorizontalAlignment.Right then
        l_position_0 = UDim2.new(l_position_0.X.Scale, l_position_0.X.Offset + v13, l_position_0.Y.Scale, l_position_0.Y.Offset);
        v14 = 1;
        v15 = 0;
    end;
    return v0.createElement("ImageButton", {
        Visible = l_visible_0,
        BackgroundTransparency = 1,
        BorderSizePixel = 0,
        AnchorPoint = l_anchorPoint_0,
        Position = l_position_0,
        Size = UDim2.new(l_size_0.X.Scale, l_size_0.X.Offset + v13, l_size_0.Y.Scale, l_size_0.Y.Offset),
        ZIndex = l_zIndex_0,
        [v0.Event.Activated] = l_onClick_0
    }, {
        IconLayout = v0.createElement("UIListLayout", {
            HorizontalAlignment = v9,
            VerticalAlignment = v10,
            FillDirection = Enum.FillDirection.Horizontal,
            SortOrder = Enum.SortOrder.LayoutOrder
        }),
        Offset = v0.createElement("Frame", {
            BorderSizePixel = 0,
            LayoutOrder = v14,
            Size = UDim2.new(0, v13, 0, 0)
        }),
        BackIcon = v0.createElement("ImageLabel", {
            BackgroundTransparency = 1,
            BorderSizePixel = 0,
            Size = UDim2.new(0, l_iconSpriteFrame_0.size.X, 0, l_iconSpriteFrame_0.size.Y),
            Image = l_iconSpritePath_0,
            ImageRectOffset = l_iconSpriteFrame_0.offset,
            ImageRectSize = l_iconSpriteFrame_0.size,
            ZIndex = l_zIndex_0,
            LayoutOrder = v15
        })
    });
end;
return v1;


local l_CorePackages_0 = game:GetService("CorePackages");
local l_Players_0 = game:GetService("Players");
local v2 = require(l_CorePackages_0.Packages.React);
local v3 = require(l_CorePackages_0.Packages.ReactRoblox);
local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local l_ShareGame_0 = l_Modules_0.Settings.Pages.ShareGame;
local v6 = require(l_Modules_0.Common.Constants);
local v7 = require(l_Modules_0.Settings.Theme);
local l_AppFonts_0 = require(l_CorePackages_0.Workspace.Packages.Style).AppFonts;
local l_GameInviteEvents_0 = require(l_CorePackages_0.Workspace.Packages.GameInvite).GameInviteEvents;
local v10 = require(l_ShareGame_0.Constants);
local v11 = require(l_ShareGame_0.PresenceUtil);
local v12 = require(l_ShareGame_0.Components.SingleUserThumbnail);
local v13 = require(l_ShareGame_0.Components.InviteButton);
local l_InviteStatus_0 = v10.InviteStatus;
local v15 = require(l_ShareGame_0.ThrottleFunctionCall);
local v16 = require(l_Modules_0.Settings.Flags.GetFFlagAbuseReportAnalyticsHasLaunchData);
local v17 = require(l_Modules_0.Flags.GetFFlagEnableNewInviteSendEndpoint);
local v18 = require(l_Modules_0.Flags.GetFFlagThrottleInviteSendEndpoint);
local v19 = require(l_Modules_0.Flags.GetFIntThrottleInviteSendEndpointDelay);
local v20 = Rect.new(10, 10, 10, 10);
return function(v21)
    local l_user_0 = v21.user;
    local v30 = v2.useCallback(function()
        local l_inviteUser_0 = v21.inviteUser;
        local l_inviteStatus_0 = v21.inviteStatus;
        local l_analytics_0 = v21.analytics;
        if l_inviteStatus_0 and l_inviteStatus_0 ~= l_InviteStatus_0.Failed then
            return ;
        else
            local function v28(v26)
                if v26 then
                    local v27 = {
                        l_user_0.id
                    };
                    if not (not l_Players_0.LocalPlayer or not v26) then
                        l_analytics_0:onActivatedInviteSent(l_Players_0.LocalPlayer.UserId, v26.conversationId, v27);
                    end;
                    return ;
                else
                    return ;
                end;
            end;
            if not v17() then
                l_inviteUser_0(l_user_0.id):andThen(v28, function()
                end);
                return ;
            else
                local v29 = false;
                if v21.launchData ~= nil then
                    v29 = v21.launchData ~= "";
                end;
                l_analytics_0:sendEvent(v21.trigger, l_GameInviteEvents_0.SendInvite, {
                    recipient = l_user_0.id,
                    isLaunchDataProvided = if not v16() then nil else v29
                });
                l_inviteUser_0(l_user_0.id, l_analytics_0, v21.trigger, v21.inviteMessageId, v21.launchData):andThen(v28, function()
                end);
                return ;
            end;
        end;
    end, {
        v21.inviteUser,
        v21.inviteStatus,
        v21.analytics,
        l_user_0
    });
    if v18() then
        v30 = v2.useCallback(v15(v19(), v30), {
            v30
        });
    end;
    if v21.visible then
        local l_UIBloxThemeEnabled_0 = v7.UIBloxThemeEnabled;
        return v2.createElement("ImageButton", {
            Size = UDim2.new(1, 0, 0, 60),
            Image = if l_UIBloxThemeEnabled_0 then nil else "rbxasset://textures/ui/dialog_white.png",
            ScaleType = not l_UIBloxThemeEnabled_0 and Enum.ScaleType.Slice or Enum.ScaleType.Stretch,
            SliceCenter = v20,
            BackgroundColor3 = v7.color("PlayerRowFrame"),
            BackgroundTransparency = v7.transparency("PlayerRowFrame", 1),
            ImageTransparency = 0.85,
            LayoutOrder = v21.layoutOrder,
            [v3.Event.Activated] = if not v21.isFullRowActivatable then nil else v30
        }, {
            UICorner = not not l_UIBloxThemeEnabled_0 and v2.createElement("UICorner", {
                CornerRadius = v7.MenuContainerCornerRadius
            }) or nil,
            Padding = v2.createElement("UIPadding", {
                PaddingRight = UDim.new(0, 16),
                PaddingLeft = UDim.new(0, 8)
            }),
            Thumbnail = v2.createElement(v12, {
                user = l_user_0,
                size = UDim2.new(0, 44, 0, 44),
                position = UDim2.new(0, 0, 0.5, 0),
                anchorPoint = Vector2.new(0, 0.5)
            }),
            UserInfo = v2.createElement("Frame", {
                Position = UDim2.new(0, 44, 0, 0),
                Size = UDim2.new(1, -118, 1, 0),
                BackgroundTransparency = 1,
                ClipsDescendants = true
            }, {
                Padding = v2.createElement("UIPadding", {
                    PaddingLeft = UDim.new(0, 8)
                }),
                ListLayout = v2.createElement("UIListLayout", {
                    FillDirection = Enum.FillDirection.Vertical,
                    VerticalAlignment = Enum.VerticalAlignment.Center,
                    Padding = UDim.new(0, 4)
                }),
                DisplayNameWrapper = v2.createElement("Frame", {
                    Size = UDim2.new(0, 0, 0, 16),
                    BackgroundTransparency = 1
                }, {
                    PresenceIconLayout = v2.createElement("UIListLayout", {
                        FillDirection = Enum.FillDirection.Horizontal,
                        HorizontalAlignment = Enum.HorizontalAlignment.Left,
                        VerticalAlignment = Enum.VerticalAlignment.Center,
                        SortOrder = Enum.SortOrder.LayoutOrder,
                        Padding = UDim.new(0, 4)
                    }),
                    Icon = v11.GetIcon(l_user_0.presence),
                    DisplayName = v2.createElement("TextLabel", {
                        Size = UDim2.new(0, 0, 0, 16),
                        Text = l_user_0.displayName,
                        TextSize = 16,
                        TextColor3 = v6.COLORS.WHITE,
                        Font = l_AppFonts_0.default:getMedium(),
                        BackgroundTransparency = 1,
                        TextXAlignment = Enum.TextXAlignment.Left,
                        LayoutOrder = 2
                    })
                }),
                Username = v2.createElement("TextLabel", {
                    Size = UDim2.new(0, 0, 0, 16),
                    Text = "@" .. l_user_0.name,
                    TextSize = 16,
                    TextColor3 = v6.COLORS.PUMICE,
                    Font = l_AppFonts_0.default:getDefault(),
                    BackgroundTransparency = 1,
                    TextXAlignment = Enum.TextXAlignment.Left
                })
            }),
            InviteButton = v2.createElement(v13, {
                size = UDim2.new(0, 66, 0, 36),
                position = UDim2.new(1, 0, 0.5, 0),
                anchorPoint = Vector2.new(1, 0.5),
                onInvite = v30,
                inviteStatus = v21.inviteStatus
            })
        });
    else
        return ;
    end;
end;


local l_CorePackages_0 = game:GetService("CorePackages");
local l_AppTempCommon_0 = l_CorePackages_0.AppTempCommon;
local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local l_UserInputService_0 = game:GetService("UserInputService");
local v4 = require(l_CorePackages_0.Roact);
local v5 = require(l_CorePackages_0.RoactRodux);
local l_ShareGame_0 = l_Modules_0.Settings.Pages.ShareGame;
local v7 = require(l_ShareGame_0.Constants);
local v8 = require(l_AppTempCommon_0.LuaApp.Actions.SetDeviceOrientation);
local v9 = require(l_ShareGame_0.Actions.SetIsSmallTouchScreen);
local v10 = require(l_ShareGame_0.Actions.SetDeviceLayout);
local v11 = v4.Component:extend("LayoutProvider");
v11.didMount = function(v12)
    if workspace.CurrentCamera then
        v12:setObservedCamera(workspace.CurrentCamera);
    end;
    v12.cameraChangedListener = workspace:GetPropertyChangedSignal("CurrentCamera"):Connect(function()
        if workspace.CurrentCamera then
            v12:setObservedCamera(workspace.CurrentCamera);
        end;
    end);
end;
v11.willUnmount = function(v13)
    if v13.cameraChangedListener then
        v13.cameraChangedListener:Disconnect();
    end;
    if v13.viewportSizeListener then
        v13.viewportSizeListener:Disconnect();
    end;
end;
v11.setObservedCamera = function(v14, v15)
    if v14.viewportSizeListener then
        v14.viewportSizeListener:Disconnect();
    end;
    v14:checkAllDeviceInfo(v15.ViewportSize);
    v14.viewportSizeListener = v15:GetPropertyChangedSignal("ViewportSize"):Connect(function()
        local l_ViewportSize_0 = v15.ViewportSize;
        if not (l_ViewportSize_0.X > 1) or l_ViewportSize_0.Y <= 1 then
            return ;
        else
            v14:checkAllDeviceInfo(l_ViewportSize_0);
            return ;
        end;
    end);
end;
v11.checkDeviceOrientation = function(v17, v18)
    local v19 = v18.Y < v18.X and v7.DeviceOrientation.LANDSCAPE or v7.DeviceOrientation.PORTRAIT;
    if v17._deviceOrientation ~= v19 then
        v17._deviceOrientation = v19;
        v17.props.setDeviceOrientation(v19);
    end;
end;
v11.checkDeviceIsSmallTouchScreen = function(v20, v21)
    local l_TouchEnabled_0 = l_UserInputService_0.TouchEnabled;
    if l_TouchEnabled_0 then
        l_TouchEnabled_0 = true;
        if v21.X >= 700 then
            l_TouchEnabled_0 = v21.Y < 500;
        end;
    end;
    if v20._isSmallTouchScreen ~= l_TouchEnabled_0 then
        v20._isSmallTouchScreen = l_TouchEnabled_0;
        v20.props.setIsSmallTouchScreen(v20._isSmallTouchScreen);
    end;
end;
v11.checkDeviceLayout = function(v23)
    local v24 = nil;
    v24 = if not v23._isSmallTouchScreen then if l_UserInputService_0.TouchEnabled then if v23._deviceOrientation == v7.DeviceOrientation.LANDSCAPE then v7.DeviceLayout.TABLET_LANDSCAPE else v7.DeviceLayout.TABLET_PORTRAIT else v7.DeviceLayout.DESKTOP else if v23._deviceOrientation == v7.DeviceOrientation.LANDSCAPE then v7.DeviceLayout.PHONE_LANDSCAPE else v7.DeviceLayout.PHONE_PORTRAIT;
    if v23._deviceLayout ~= v24 then
        v23._deviceLayout = v24;
        v23.props.setDeviceLayout(v23._deviceLayout);
    end;
end;
v11.checkAllDeviceInfo = function(v25, v26)
    v25:checkDeviceOrientation(v26);
    v25:checkDeviceIsSmallTouchScreen(v26);
    v25:checkDeviceLayout();
end;
v11.render = function(v27)
    return v4.oneChild(v27.props[v4.Children]);
end;
return v5.UNSTABLE_connect2(nil, function(v28)
    return {
        setDeviceOrientation = function(v29)
            return v28(v8(v29));
        end,
        setIsSmallTouchScreen = function(v30)
            return v28(v9(v30));
        end,
        setDeviceLayout = function(v31)
            return v28(v10(v31));
        end
    };
end)(v11);


local l_CorePackages_0 = game:GetService("CorePackages");
local _ = game:GetService("CoreGui"):WaitForChild("RobloxGui");
local l_LoadingBar_0 = require(l_CorePackages_0.Workspace.Packages.AppBlox).LoadingBar;
local v3 = require(l_CorePackages_0.Roact);
local v4 = v3.PureComponent:extend("LoadingFriendsPage");
v4.render = function(v5)
    local l_LayoutOrder_0 = v5.props.LayoutOrder;
    local l_ZIndex_0 = v5.props.ZIndex;
    local v8 = 0;
    local function _()
        v8 = v8 + 1;
        return v8;
    end;
    local l_createElement_0 = v3.createElement;
    local v11 = "Frame";
    local v12 = {
        BackgroundTransparency = 1,
        Size = UDim2.new(1, 0, 1, 0),
        LayoutOrder = l_LayoutOrder_0,
        ZIndex = l_ZIndex_0
    };
    local v13 = {
        listLayout = v3.createElement("UIListLayout", {
            FillDirection = Enum.FillDirection.Vertical,
            HorizontalAlignment = Enum.HorizontalAlignment.Center,
            VerticalAlignment = Enum.VerticalAlignment.Center,
            SortOrder = Enum.SortOrder.LayoutOrder
        })
    };
    local l_createElement_1 = v3.createElement;
    local v15 = "Frame";
    local v16 = {
        BackgroundTransparency = 1,
        Size = UDim2.new(0, 70, 0, 16)
    };
    v8 = v8 + 1;
    v16.LayoutOrder = v8;
    v16.ZIndex = l_ZIndex_0;
    v13.loadingIndicator = l_createElement_1(v15, v16, {
        loadingBar = v3.createElement(l_LoadingBar_0, {
            ZIndex = l_ZIndex_0
        })
    });
    return l_createElement_0(v11, v12, v13);
end;
return v4;


local l_CorePackages_0 = game:GetService("CorePackages");
local v1 = require(l_CorePackages_0.Roact);
local l_LoadingBar_0 = require(l_CorePackages_0.Workspace.Packages.AppBlox).LoadingBar;
local v3 = Color3.fromRGB(41, 41, 41);
return function()
    return v1.createElement("Frame", {
        Size = UDim2.new(0, 160, 0, 160),
        Position = UDim2.new(0.5, 0, 0.5, 0),
        AnchorPoint = Vector2.new(0.5, 0.5),
        BackgroundColor3 = v3,
        BackgroundTransparency = 0.1
    }, {
        v1.createElement("UICorner", {
            CornerRadius = UDim.new(0, 4)
        }),
        v1.createElement(l_LoadingBar_0)
    });
end;


local l_CoreGui_0 = game:GetService("CoreGui");
local l_CorePackages_0 = game:GetService("CorePackages");
local l_RobloxGui_0 = l_CoreGui_0:WaitForChild("RobloxGui");
local l_Modules_0 = l_CoreGui_0.RobloxGui.Modules;
local v4 = require(l_CorePackages_0.Roact);
local v5 = require(l_CorePackages_0.RoactRodux);
local l_ShareGame_0 = l_Modules_0.Settings.Pages.ShareGame;
local v7 = require(l_ShareGame_0.Constants);
local l_GameInviteEvents_0 = require(l_CorePackages_0.Workspace.Packages.GameInvite).GameInviteEvents;
local v9 = require(l_ShareGame_0.Components.Header);
local v10 = require(l_ShareGame_0.Components.ConversationList);
local v11 = require(l_ShareGame_0.Components.ErrorToaster);
local v12 = require(l_ShareGame_0.Components.BackButton);
local l_Text_0 = require(l_CorePackages_0.Workspace.Packages.AppCommonLib).Text;
local v14 = require(l_RobloxGui_0.Modules.Settings.Theme);
local v15 = require(l_Modules_0.Flags.GetFFlagEnableNewInviteMenu);
local v16 = require(l_Modules_0.Flags.GetFFlagEnableNewInviteSendEndpoint);
local v17 = UDim.new(0.8, 320);
local v18 = UDim.new(0.7, 500);
local v19 = UDim.new(0.8, 440);
local v20 = Color3.fromRGB(41, 41, 41);
local v21 = v4.PureComponent:extend("ModalShareGamePageFrame");
v21.defaultProps = {
    isVisible = true
};
v21.init = function(v22)
    v22.state = {
        promptMessageFitsFrame = true
    };
    v22.onCustomTextAreaSizeChange = function(v23)
        local v24 = v7.LayoutSpecific[v22.props.deviceLayout];
        local l_promptMessage_0 = v22.props.promptMessage;
        v22:setState({
            promptMessageFitsFrame = l_promptMessage_0 and l_Text_0.GetTextWidth(l_promptMessage_0, v14.font(Enum.Font.SourceSans), (v14.textSize(v24.PAGE_TITLE_TEXT_SIZE))) < v23.AbsoluteSize.X
        });
    end;
    v22.customTextAreaRef = v4.createRef();
    v22.onClosePage = function()
        v22.props.closePage();
        if v22.props.onAfterClosePage then
            v22.props.onAfterClosePage();
        end;
    end;
end;
v21.didMount = function(v26)
    if not (not v15() or not v26.customTextAreaRef.current) then
        v26.onCustomTextAreaSizeChange(v26.customTextAreaRef.current);
    end;
    if not ((not v16() or not v26.props.promptMessage) or not v26.props.analytics) then
        v26.props.analytics:sendEvent(v7.Triggers.DeveloperMultiple, l_GameInviteEvents_0.CustomTextShown);
    end;
end;
v21.render = function(v27)
    local l_analytics_0 = v27.props.analytics;
    local l_deviceLayout_0 = v27.props.deviceLayout;
    local l_zIndex_0 = v27.props.zIndex;
    local l_searchAreaActive_0 = v27.props.searchAreaActive;
    local l_searchText_0 = v27.props.searchText;
    local l_isVisible_0 = v27.props.isVisible;
    local v34 = v15();
    local v35 = if not v34 then v17 else v19;
    local v36 = (v34 and v27.props.deviceInfo) and v27.props.deviceInfo.DeviceLayout == v7.DeviceLayout.PHONE_LANDSCAPE;
    local v37 = Vector2.new(0.5, 0.5);
    local v38 = UDim2.new(v35.Scale, 0, v18.Scale, 0);
    local v39 = Vector2.new(v35.Offset, v18.Offset);
    local v40 = UDim2.new(0.5, 0, 0.425, 0);
    if v36 then
        v37 = Vector2.new(0.5, 1);
        v38 = UDim2.new(v35.Scale, 0, 1, 0);
        v39 = Vector2.new(v35.Offset, math.huge);
        v40 = UDim2.new(0.5, 0, 1, 4);
    end;
    local v41 = v7.LayoutSpecific[l_deviceLayout_0];
    local l_promptMessage_1 = v27.props.promptMessage;
    local v43 = v14.textSize(v41.PAGE_TITLE_TEXT_SIZE);
    local v44 = (v34 and l_promptMessage_1) and v27.state.promptMessageFitsFrame;
    local v45 = not v44 and 10 or v43 + 10;
    return v4.createElement("ImageButton", {
        AnchorPoint = v37,
        BackgroundTransparency = 1,
        Image = "rbxasset://textures/ui/LuaChat/9-slice/btn-control-sm.png",
        ImageColor3 = v20,
        ImageTransparency = 0.1,
        Modal = l_isVisible_0,
        Position = v40,
        Size = v38,
        ScaleType = Enum.ScaleType.Slice,
        SliceCenter = Rect.new(Vector2.new(3, 3), Vector2.new(3, 3))
    }, {
        sizeConstraint = v4.createElement("UISizeConstraint", {
            MaxSize = v39
        }),
        uiPadding2 = v4.createElement("UIPadding", {
            PaddingLeft = UDim.new(0, 15),
            PaddingRight = UDim.new(0, 15),
            PaddingBottom = UDim.new(0, 15)
        }),
        content = v4.createElement("Frame", {
            BackgroundTransparency = 1,
            Size = UDim2.new(1, 0, 1, 0),
            Position = UDim2.new(0, 0, 0, 0),
            ZIndex = l_zIndex_0
        }, {
            toasterPortal = v4.createElement(v4.Portal, {
                target = l_CoreGui_0
            }, {
                Toaster = v4.createElement(v11)
            }),
            Layout = v4.createElement("UIListLayout", {
                SortOrder = Enum.SortOrder.LayoutOrder
            }),
            Padding = if not v34 then nil else v4.createElement("UIPadding", {
                PaddingTop = UDim.new(0, 10)
            }),
            Header = v4.createElement(v9, {
                deviceLayout = l_deviceLayout_0,
                size = UDim2.new(1, 0, 0, not v34 and 60 or 40),
                layoutOrder = 0,
                zIndex = l_zIndex_0,
                closePage = v27.onClosePage,
                searchAreaActive = l_searchAreaActive_0,
                toggleSearchIcon = true,
                iconType = v12.IconType.Cross
            }),
            CustomText = v34 and v4.createElement("TextLabel", {
                Size = UDim2.new(1, 0, 0, v45),
                TextYAlignment = Enum.TextYAlignment.Top,
                TextSize = v43,
                TextColor3 = v7.Color.WHITE,
                Font = v14.font(Enum.Font.SourceSans),
                BackgroundTransparency = 1,
                Text = not v44 and "" or l_promptMessage_1,
                [v4.Change.AbsoluteSize] = v27.onCustomTextAreaSizeChange,
                [v4.Ref] = v27.customTextAreaRef
            }),
            ConversationList = v4.createElement(v10, {
                analytics = l_analytics_0,
                size = UDim2.new(1, 0, 1, -(not v34 and 60 or 40 + v45)),
                topPadding = 10,
                layoutOrder = 1,
                zIndex = l_zIndex_0,
                searchText = l_searchText_0,
                entryHeight = 62,
                entryPadding = 18,
                isVisible = l_isVisible_0,
                trigger = v7.Triggers.DeveloperMultiple,
                inviteMessageId = v27.props.inviteMessageId,
                launchData = v27.props.launchData
            })
        })
    });
end;
return (v5.connect(function(v46)
    return {
        deviceInfo = v46.DeviceInfo
    };
end)(v21));


local v0 = require(game:GetService("CorePackages").Roact);
local v1 = Rect.new(8, 6, 46, 44);
local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v3 = require(l_Modules_0.Settings.Theme);
local v4 = require(l_Modules_0.Settings.Flags.GetFFlagInviteFriendsDesignUpdates);
local v5 = {
    Left = 4,
    Right = 4,
    Top = 2,
    Bottom = 6
};
local v6 = v0.PureComponent:extend("RectangleButton");
v6.defaultProps = {
    visible = true
};
v6.init = function(v7)
    v7.state = {
        isHovering = false
    };
end;
v6.render = function(v8)
    local l_size_0 = v8.props.size;
    local l_position_0 = v8.props.position;
    local l_anchorPoint_0 = v8.props.anchorPoint;
    local l_layoutOrder_0 = v8.props.layoutOrder;
    local l_zIndex_0 = v8.props.zIndex;
    local l_onClick_0 = v8.props.onClick;
    local l_visible_0 = v8.props.visible;
    local v16 = v8.props[v0.Children] or {};
    local v17 = not v8.state.isHovering and "rbxasset://textures/ui/Settings/MenuBarAssets/MenuButton.png" or "rbxasset://textures/ui/Settings/MenuBarAssets/MenuButtonSelected.png";
    if not (v4() and v3.UIBloxThemeEnabled) then
        v16.UIPadding = v0.createElement("UIPadding", {
            PaddingLeft = UDim.new(0, v5.Left),
            PaddingRight = UDim.new(0, v5.Right),
            PaddingTop = UDim.new(0, v5.Top),
            PaddingBottom = UDim.new(0, v5.Bottom)
        });
    end;
    if v3.UIBloxThemeEnabled then
        v16.Border = v0.createElement("UIStroke", {
            Color = v3.color("DefaultButtonStroke"),
            Transparency = v3.transparency("DefaultButtonStroke"),
            Thickness = v3.DefaultStokeThickness
        });
        v16.UICorner = v0.createElement("UICorner", {
            CornerRadius = v3.DefaultCornerRadius
        });
    end;
    return v0.createElement("ImageButton", {
        BackgroundTransparency = 1,
        Image = "",
        Selectable = false,
        Size = l_size_0,
        Position = l_position_0,
        AnchorPoint = l_anchorPoint_0,
        LayoutOrder = l_layoutOrder_0,
        ZIndex = l_zIndex_0,
        Visible = l_visible_0,
        [v0.Event.InputBegan] = function()
            v8:setState({
                isHovering = true
            });
        end,
        [v0.Event.InputEnded] = function()
            v8:setState({
                isHovering = false
            });
        end,
        [v0.Event.Activated] = function()
            if l_onClick_0 then
                v8:setState({
                    isHovering = false
                });
                l_onClick_0();
            end;
        end
    }, {
        ButtonBackground = not v3.UIBloxThemeEnabled and v0.createElement("ImageLabel", {
            BackgroundTransparency = 1,
            Position = UDim2.new(0, -v5.Left, 0, -v5.Top),
            Size = UDim2.new(1, v5.Left + v5.Right, 1, v5.Top + v5.Bottom),
            Image = v17,
            ScaleType = Enum.ScaleType.Slice,
            SliceCenter = v1,
            ZIndex = l_zIndex_0
        }, v16),
        ButtonBackgroundUIBlox = v3.UIBloxThemeEnabled and v0.createElement("ImageLabel", {
            BackgroundColor3 = v3.color(not v8.state.isHovering and "DefaultButton" or "DefaultButtonHover"),
            BackgroundTransparency = v3.transparency(not v8.state.isHovering and "DefaultButton" or "DefaultButtonHover"),
            Position = UDim2.new(0, 0, 0, 0),
            Size = UDim2.new(1, 0, 1, 0),
            ZIndex = l_zIndex_0
        }, v16)
    });
end;
return v6;


local v0 = require(game:GetService("CorePackages").Roact);
local l_RobloxGui_0 = game:GetService("CoreGui"):WaitForChild("RobloxGui");
local v2 = require(l_RobloxGui_0.Modules.Settings.Theme);
local v3 = require(l_RobloxGui_0.Modules.Settings.Flags.GetFFlagInviteFriendsDesignUpdates);
local v4 = v2.font(Enum.Font.SourceSansSemibold, "Semibold");
local v5 = v2.textSize(19);
local v6 = Color3.fromRGB(222, 225, 227);
local v7 = Color3.fromRGB(255, 255, 255);
local v8 = v0.PureComponent:extend("ShareButton");
v8.init = function(v9)
    v9.state = {
        isHovering = false
    };
end;
v8.render = function(v10)
    local l_size_0 = v10.props.size;
    local l_layoutOrder_0 = v10.props.layoutOrder;
    local l_onShare_0 = v10.props.onShare;
    local l_isEnabled_0 = v10.props.isEnabled;
    local l_text_0 = v10.props.text;
    local v16 = {};
    if not v3() or not v2.UIBloxThemeEnabled then
        v16.UICorner = v0.createElement("UICorner", {
            CornerRadius = UDim.new(0, 4)
        });
    else
        v16.Border = v0.createElement("UIStroke", {
            ApplyStrokeMode = Enum.ApplyStrokeMode.Border,
            Color = if not not v10.state.isHovering and l_isEnabled_0 then v6 else v7,
            Thickness = v2.DefaultStokeThickness,
            Transparency = not l_isEnabled_0 and 0.5 or 0
        });
        v16.UICorner = v0.createElement("UICorner", {
            CornerRadius = v2.DefaultCornerRadius
        });
    end;
    return v0.createElement("TextButton", {
        LayoutOrder = l_layoutOrder_0,
        Size = l_size_0,
        Text = l_text_0,
        TextSize = v5,
        Font = v4,
        AutoButtonColor = false,
        BackgroundColor3 = if not not v10.state.isHovering and l_isEnabled_0 then v6 else v7,
        BorderSizePixel = not v3() and 0 or nil,
        Transparency = not l_isEnabled_0 and 0.5 or 0,
        [v0.Event.Activated] = function()
            if l_isEnabled_0 then
                l_onShare_0();
            end;
        end,
        [v0.Event.InputBegan] = function()
            v10:setState({
                isHovering = true
            });
        end,
        [v0.Event.InputEnded] = function()
            v10:setState({
                isHovering = false
            });
        end
    }, v16);
end;
return v8;


local l_CoreGui_0 = game:GetService("CoreGui");
local l_CorePackages_0 = game:GetService("CorePackages");
local l_HttpRbxApiService_0 = game:GetService("HttpRbxApiService");
local l_Players_0 = game:GetService("Players");
local l_Modules_0 = l_CoreGui_0.RobloxGui.Modules;
local l_ShareGame_0 = l_Modules_0.Settings.Pages.ShareGame;
local v6 = require(l_CorePackages_0.Roact);
local v7 = require(l_CorePackages_0.RoactRodux);
local v8 = require(l_Modules_0.Common.httpRequest);
local v9 = require(l_ShareGame_0.Components.ShareGamePageFrame);
local v10 = require(l_ShareGame_0.Constants);
local v11 = require(l_ShareGame_0.Thunks.FetchUserFriends);
local v12 = require(l_ShareGame_0.Actions.ClosePage);
local v13 = v6.PureComponent:extend("ShareGameContainer");
v13.defaultProps = {
    skeletonComponent = v9
};
v13.init = function(v14)
    v14.props.reFetch();
end;
v13.render = function(v15)
    return v6.createElement(v15.props.skeletonComponent, v15.props);
end;
return (v7.UNSTABLE_connect2(function(v16, _)
    return {
        deviceLayout = v16.DeviceInfo.DeviceLayout,
        searchAreaActive = v16.ConversationsSearch.SearchAreaActive,
        searchText = v16.ConversationsSearch.SearchText
    };
end, function(v18)
    return {
        closePage = function()
            v18(v12(v10.PageRoute.SHARE_GAME));
        end,
        reFetch = function()
            v18(v11(v8(l_HttpRbxApiService_0), (tostring(l_Players_0.LocalPlayer.UserId))));
        end
    };
end)(v13));


local l_CoreGui_0 = game:GetService("CoreGui");
local l_CorePackages_0 = game:GetService("CorePackages");
local l_HttpRbxApiService_0 = game:GetService("HttpRbxApiService");
local l_RobloxReplicatedStorage_0 = game:GetService("RobloxReplicatedStorage");
local v4 = l_CoreGui_0:WaitForChild("RobloxGui", math.huge);
local v5 = require(v4.Modules.Common.Constants);
local l_Modules_0 = l_CoreGui_0.RobloxGui.Modules;
local l_ShareGame_0 = l_Modules_0.Settings.Pages.ShareGame;
local v8 = require(l_CorePackages_0.Promise);
local v9 = require(v4.Modules.Settings.Utility);
local v10 = require(v4.Modules.Settings.Theme);
local v11 = require(l_Modules_0.Flags.GetFFlagEnableNewInviteMenu);
local v12 = require(l_Modules_0.Settings.Flags.GetFFlagInviteFriendsDesignUpdates);
local v13 = require(l_Modules_0.Settings.Flags.GetFFlagShareInviteLinkContextMenuV1Enabled);
local v14 = require(l_Modules_0.Settings.Flags.FFlagShareExperienceInviteLinkPolicy);
local v15 = require(l_CorePackages_0.Roact);
local v16 = require(l_CorePackages_0.RoactRodux);
local l_RoactAppPolicy_0 = require(l_CorePackages_0.Workspace.Packages.UniversalAppPolicy).RoactAppPolicy;
local v18 = require(l_Modules_0.Common.httpRequest);
local v19 = require(l_ShareGame_0.Components.Header);
local v20 = require(l_ShareGame_0.Components.ConversationList);
local v21 = require(l_ShareGame_0.Constants);
local v22 = require(l_ShareGame_0.Components.ShareInviteLink);
local l_GetGameNameAndDescription_0 = require(l_CorePackages_0.Workspace.Packages.GameDetailRodux).GetGameNameAndDescription;
local v24 = require(l_ShareGame_0.Components.BackButton);
local v25 = require(l_ShareGame_0.Actions.SetGameInfoCreated);
local v26 = 10;
local v27 = 44;
if not (not v12() or not v11()) then
    v26 = 16;
    v27 = 52;
end;
local v28 = v15.PureComponent:extend("ShareGamePageFrame");
local v29 = require(l_ShareGame_0.Components.ErrorToaster);
v28.init = function(v30)
    if v13() then
        v30.state = {
            serverType = nil
        };
    end;
end;
v28.shouldShowInviteLink = function(v31, v32)
    if not (not (not v13() or v14 and not v31.props.experienceInviteShareLinkEnabled) and v31.state.serverType == v5.STANDARD_SERVER) or not v9:IsExperienceOlderThanOneWeek(v32) then
        return false;
    else
        return true;
    end;
end;
v28.didMount = function(v33)
    if v13() then
        v33.props.fetchGameInfo();
        if v33.state.serverType == nil then
            v8.try(function()
                return l_RobloxReplicatedStorage_0:WaitForChild("GetServerType", math.huge):InvokeServer();
            end):andThen(function(v34)
                v33:setState({
                    serverType = v34
                });
            end);
        end;
    end;
end;
v28.render = function(v35)
    local l_analytics_0 = v35.props.analytics;
    local l_deviceLayout_0 = v35.props.deviceLayout;
    local l_zIndex_0 = v35.props.zIndex;
    local l_closePage_0 = v35.props.closePage;
    local l_searchAreaActive_0 = v35.props.searchAreaActive;
    local l_searchText_0 = v35.props.searchText;
    local v42 = v21.LayoutSpecific[l_deviceLayout_0];
    local l_HEADER_HEIGHT_0 = v42.HEADER_HEIGHT;
    local v44 = l_deviceLayout_0 == v21.DeviceLayout.DESKTOP;
    local v45 = not v44 and v24.IconType.Arrow or v24.IconType.None;
    local v46 = not v44;
    local l_isVisible_0 = v35.props.isVisible;
    local v48 = v35:shouldShowInviteLink(v35.props.gameInfo);
    local v49 = 0;
    local v50 = 0;
    if not (not v48 or not v10.UIBloxThemeEnabled) then
        v49 = v49 - v27;
        v50 = 10;
    end;
    return v15.createElement("Frame", {
        BackgroundTransparency = 1,
        Size = UDim2.new(1, 0, 1, 0),
        Position = UDim2.new(0, 0, 0, 0),
        ZIndex = l_zIndex_0,
        AutoLocalize = false
    }, {
        toasterPortal = v15.createElement(v15.Portal, {
            target = l_CoreGui_0
        }, {
            Toaster = v15.createElement(v29)
        }),
        Header = v15.createElement(v19, {
            deviceLayout = l_deviceLayout_0,
            size = UDim2.new(1, 0, 0, l_HEADER_HEIGHT_0),
            position = UDim2.new(0, 0, 0, -l_HEADER_HEIGHT_0),
            layoutOrder = 0,
            zIndex = l_zIndex_0,
            closePage = l_closePage_0,
            searchAreaActive = l_searchAreaActive_0,
            toggleSearchIcon = v46,
            iconType = v45,
            analytics = l_analytics_0
        }),
        ShareInviteLink = not not v48 and v15.createElement(v22, {
            position = UDim2.new(0, 0, 0, v50),
            analytics = l_analytics_0,
            deviceLayout = l_deviceLayout_0,
            size = UDim2.new(1, 0, 0, v27),
            layoutOrder = 1,
            zIndex = l_zIndex_0
        }) or nil,
        ConversationList = v15.createElement(v20, {
            analytics = l_analytics_0,
            size = UDim2.new(1, 0, 1, (v42.EXTEND_BOTTOM_SIZE - v26) + v49),
            topPadding = not not v48 and (v26 + v27) + v50 or v26,
            layoutOrder = not v48 and 1 or 2,
            zIndex = l_zIndex_0,
            searchText = l_searchText_0,
            isVisible = l_isVisible_0,
            trigger = "GameMenu"
        })
    });
end;
if v13() then
    v28 = v16.connect(function(v51)
        return {
            gameInfo = v51.GameInfo
        };
    end, function(v52)
        return {
            fetchGameInfo = function()
                l_GetGameNameAndDescription_0(v18(l_HttpRbxApiService_0), game.GameId):andThen(function(v53)
                    v52(v25(v53.Created));
                end);
            end
        };
    end)(v28);
end;
if v14 then
    v28 = l_RoactAppPolicy_0.connect(function(v54)
        return {
            experienceInviteShareLinkEnabled = v54.getExperienceInviteShareLinkEnabled()
        };
    end)(v28);
end;
return v28;


local l_CorePackages_0 = game:GetService("CorePackages");
local l_RobloxGui_0 = game:GetService("CoreGui"):WaitForChild("RobloxGui");
local l_UserInputService_0 = game:GetService("UserInputService");
local l_default_0 = require(l_CorePackages_0.Workspace.Packages.ExternalContentSharingProtocol).ExternalContentSharingProtocol.default;
local v4 = require(l_CorePackages_0.Roact);
local v5 = require(l_CorePackages_0.RoactRodux);
local l_ShareGame_0 = l_RobloxGui_0.Modules.Settings.Pages.ShareGame;
local l_ReducerDependencies_0 = require(l_CorePackages_0.Workspace.Packages.NotificationsCommon).ReducerDependencies;
local v8 = require(l_ShareGame_0.Constants);
local v9 = require(l_ShareGame_0.Components.ShareButton);
local v10 = require(l_ShareGame_0.getTranslator)();
local v11 = require(l_ShareGame_0.Components.ShareInviteLinkMapDispatchToProps);
local v12 = require(l_ShareGame_0.Components.ShareInviteLinkMapStateToProps);
local l_RoduxShareLinks_0 = l_ReducerDependencies_0.RoduxShareLinks;
local l_NetworkStatus_0 = l_ReducerDependencies_0.RoduxNetworking.Enum.NetworkStatus;
local v15 = require(l_RobloxGui_0.Modules.Settings.Theme);
local v16 = require(l_RobloxGui_0.Modules.Flags.GetFFlagEnableNewInviteMenu);
local v17 = require(l_RobloxGui_0.Modules.Settings.Flags.GetFFlagInviteFriendsDesignUpdates);
local v18 = v4.PureComponent:extend("ShareInviteLink");
local v19 = 12;
local v20 = 8;
local v21 = 69;
if not (not v17() or not v16()) then
    v19 = 16;
    v20 = 12;
    v21 = 66;
end;
local v22 = Color3.fromRGB(79, 84, 95);
local v23 = v10:FormatByKey("Feature.SocialShare.Action.Share");
local v24 = v10:FormatByKey("Feature.SocialShare.Label.Copied");
local l_l_UserInputService_0_Platform_0 = l_UserInputService_0:GetPlatform();
local v26 = {
    externalContentSharingProtocol = l_default_0
};
local v27 = true;
if l_l_UserInputService_0_Platform_0 ~= Enum.Platform.Windows then
    v27 = true;
    if l_l_UserInputService_0_Platform_0 ~= Enum.Platform.OSX then
        v27 = l_l_UserInputService_0_Platform_0 == Enum.Platform.UWP;
    end;
end;
v26.isDesktopClient = v27;
v18.defaultProps = v26;
v18.init = function(v28)
    v28.state = {
        showCopiedText = false
    };
    v28.displayShareSheet = function(v29)
        local l_props_0 = v28.props;
        if l_props_0.externalContentSharingProtocol then
            l_props_0.externalContentSharingProtocol:shareUrl({
                url = v29.shortUrl,
                context = "V1Menu"
            });
            if l_props_0.isDesktopClient then
                v28:setState({
                    showCopiedText = true
                });
                task.delay(1, function()
                    v28:setState({
                        showCopiedText = false
                    });
                end);
            end;
        end;
    end;
end;
v18.didUpdate = function(v31, v32)
    local l_props_1 = v31.props;
    if v32.shareInviteLink == nil and v31.props.shareInviteLink ~= nil then
        v31.props.analytics:linkGenerated({
            linkType = l_RoduxShareLinks_0.Enums.LinkType.ExperienceInvite.rawValue(),
            linkId = v31.props.shareInviteLink.linkId
        });
        v31.displayShareSheet(l_props_1.shareInviteLink);
    end;
end;
v18.render = function(v34)
    local l_size_0 = v34.props.size;
    local l_layoutOrder_0 = v34.props.layoutOrder;
    local l_deviceLayout_0 = v34.props.deviceLayout;
    local l_zIndex_0 = v34.props.zIndex;
    local v39 = v8.LayoutSpecific[l_deviceLayout_0];
    local function v41()
        local l_props_2 = v34.props;
        v34.props.analytics:onShareButtonClick();
        if v34.props.shareInviteLink == nil then
            v34.props.fetchShareInviteLink();
            return ;
        else
            v34.displayShareSheet(l_props_2.shareInviteLink);
            return ;
        end;
    end;
    local l_createElement_0 = v4.createElement;
    local v43 = "Frame";
    local v44 = {
        Size = l_size_0,
        Position = v34.props.position,
        LayoutOrder = l_layoutOrder_0,
        BackgroundColor3 = v15.color("PlayerRowFrame", v22),
        BackgroundTransparency = v15.transparency("PlayerRowFrame", 0),
        ZIndex = l_zIndex_0,
        BorderSizePixel = 0
    };
    local v45 = {
        Corner = v4.createElement("UICorner", {
            CornerRadius = if not v15.UIBloxThemeEnabled then UDim.new(0, 4) else v15.MenuContainerCornerRadius
        }),
        UIPadding = v4.createElement("UIPadding", {
            PaddingLeft = UDim.new(0, v19),
            PaddingRight = UDim.new(0, v19),
            PaddingTop = UDim.new(0, v20),
            PaddingBottom = UDim.new(0, v20)
        }),
        UIListLayout = v4.createElement("UIListLayout", {
            FillDirection = Enum.FillDirection.Horizontal,
            HorizontalAlignment = Enum.HorizontalAlignment.Left,
            VerticalAlignment = Enum.VerticalAlignment.Center,
            SortOrder = Enum.SortOrder.LayoutOrder
        }),
        Title = v4.createElement("TextLabel", {
            BackgroundTransparency = 1,
            TextXAlignment = Enum.TextXAlignment.Left,
            LayoutOrder = 0,
            Text = v10:FormatByKey("Feature.SocialShare.Label.ShareServerLink"),
            Size = UDim2.new(1, -v21, 1, 0),
            TextSize = v15.textSize(v39.PAGE_TITLE_TEXT_SIZE, "ShareLinkTitle"),
            TextColor3 = v8.Color.WHITE,
            Font = v15.font(Enum.Font.SourceSansSemibold, "Semibold")
        })
    };
    local l_createElement_1 = v4.createElement;
    local l_v9_0 = v9;
    local v48 = {
        size = UDim2.new(0, v21, 1, 0),
        layoutOrder = 1,
        onShare = v41,
        text = if not v34.state.showCopiedText then v23 else v24
    };
    local v49 = false;
    if v34.props.fetchShareInviteLinkNetworkStatus ~= l_NetworkStatus_0.Fetching then
        v49 = not v34.state.showCopiedText;
    end;
    v48.isEnabled = v49;
    v45.ShareButton = l_createElement_1(l_v9_0, v48);
    return l_createElement_0(v43, v44, v45);
end;
return (v5.connect(v12, v11)(v18));


local l_ReducerDependencies_0 = require(game:GetService("CorePackages").Workspace.Packages.NotificationsCommon).ReducerDependencies;
local l_NetworkingShareLinks_0 = l_ReducerDependencies_0.NetworkingShareLinks;
local l_RoduxShareLinks_0 = l_ReducerDependencies_0.RoduxShareLinks;
return function(v3)
    return {
        fetchShareInviteLink = function()
            v3(l_NetworkingShareLinks_0.GenerateLink.API({
                linkType = l_RoduxShareLinks_0.Enums.LinkType.ExperienceInvite.rawValue()
            }));
        end
    };
end;


local l_ReducerDependencies_0 = require(game:GetService("CorePackages").Workspace.Packages.NotificationsCommon).ReducerDependencies;
local l_NetworkingShareLinks_0 = l_ReducerDependencies_0.NetworkingShareLinks;
local l_RoduxShareLinks_0 = l_ReducerDependencies_0.RoduxShareLinks;
return function(v3)
    return {
        shareInviteLink = v3.ShareLinks.Invites.ShareInviteLink,
        fetchShareInviteLinkNetworkStatus = l_NetworkingShareLinks_0.GenerateLink.getStatus(v3, l_RoduxShareLinks_0.Enums.LinkType.ExperienceInvite.rawValue())
    };
end;


local l_CorePackages_0 = game:GetService("CorePackages");
local v1 = require(l_CorePackages_0.Packages.React);
local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local l_COLORS_0 = require(l_Modules_0.Common.Constants).COLORS;
local v4 = require(l_Modules_0.Settings.Pages.ShareGame.Constants);
local l_Constants_0 = require(l_CorePackages_0.Workspace.Packages.UserLib).Utils.Constants;
local l_getRbxthumbWithTypeSizeAndOptions_0 = require(l_CorePackages_0.Workspace.Packages.UserLib).Utils.getRbxthumbWithTypeSizeAndOptions;
local l_InviteAvatarThumbnailSize_0 = v4.InviteAvatarThumbnailSize;
return function(v8)
    local l_user_0 = v8.user;
    local v10 = nil;
    if l_user_0 then
        v10 = l_getRbxthumbWithTypeSizeAndOptions_0(l_user_0.id, v4.InviteAvatarRbxthumbType, l_Constants_0.RbxThumbnailSizeToNumberSize[l_InviteAvatarThumbnailSize_0]);
    end;
    if not v10 then
        v10 = "rbxasset://textures/ui/LuaApp/graphic/ph-avatar-portrait.png";
    end;
    return v1.createElement("ImageLabel", {
        Size = v8.size,
        Position = v8.position,
        AnchorPoint = v8.anchorPoint,
        Image = v10,
        BorderSizePixel = 0,
        BackgroundColor3 = l_COLORS_0.FLINT,
        BackgroundTransparency = v8.backgroundTransparency
    }, {
        Corner = if not v8.square then v1.createElement("UICorner", {
            CornerRadius = UDim.new(0.5, 0)
        }) else nil
    });
end;


local v0 = require(game:GetService("CorePackages").Rodux);
return v0.Store.new(require(game:GetService("CoreGui").RobloxGui.Modules.Settings.Pages.ShareGame.AppReducer), nil, {
    v0.thunkMiddleware
});


local l_CoreGui_0 = game:GetService("CoreGui");
local l_CorePackages_0 = game:GetService("CorePackages");
local l_ContextActionService_0 = game:GetService("ContextActionService");
local l_GuiService_0 = game:GetService("GuiService");
local l_RobloxGui_0 = l_CoreGui_0:WaitForChild("RobloxGui");
local v5 = require(l_CorePackages_0.Roact);
local v6 = require(l_CorePackages_0.Rodux);
local l_Modules_0 = l_RobloxGui_0.Modules;
local l_Settings_0 = l_Modules_0.Settings;
local v9 = require(l_Modules_0.Settings.Pages.ShareGame.Constants);
local l_GameInviteEvents_0 = require(l_CorePackages_0.Workspace.Packages.GameInvite).GameInviteEvents;
local l_ShareGame_0 = l_Settings_0.Pages.ShareGame;
local v12 = require(l_ShareGame_0.Components.FullModalShareGameComponent);
local v13 = require(l_ShareGame_0.AppReducer);
local v14 = require(l_ShareGame_0.InviteStore);
local v15 = require(l_Modules_0.Flags.GetFFlagEnableSharedInviteStore);
local v16 = require(l_Modules_0.Settings.Flags.GetFFlagAbuseReportAnalyticsHasLaunchData);
local v17 = {};
v17.__index = v17;
v17.new = function(v18)
    local v19 = {
        mountTarget = v18,
        isActive = false
    };
    setmetatable(v19, v17);
    return v19;
end;
v17.withSocialServiceAndLocalPlayer = function(v20, v21, v22)
    v20.socialService = v21;
    v20.localPlayer = v22;
    return v20;
end;
v17.withAnalytics = function(v23, v24)
    v23.analytics = v24;
    return v23;
end;
v17._createTree = function(v25, v26, v27)
    return v5.createElement(v12, {
        store = if not v15() then v6.Store.new(v13, nil, {
            v6.thunkMiddleware
        }) else v14,
        isVisible = v26,
        analytics = v25.analytics,
        promptMessage = v27 and v27.promptMessage,
        inviteUserId = v27 and v27.inviteUserId,
        inviteMessageId = v27 and v27.inviteMessageId,
        launchData = v27 and v27.launchData,
        isLoading = v27 and v27.isLoading,
        onAfterClosePage = function(_)
            v25:hide({});
        end
    });
end;
v17.show = function(v29, v30)
    if not v29.isActive then
        v29.isLoading = v30 and v30.isLoading;
        v29.isActive = not v29.isLoading;
        if v30 then
            local v31 = if not v30.inviteUserId then v9.Triggers.DeveloperMultiple else v9.Triggers.DeveloperSingle;
            local v32 = false;
            if v30.launchData ~= nil then
                v32 = v30.launchData ~= "";
            end;
            v29.analytics:sendEvent(v31, l_GameInviteEvents_0.ModalOpened, if not v16() then nil else {
                isLaunchDataProvided = v32
            });
        end;
        if v29.instance then
            v29.instance = v5.update(v29.instance, v29:_createTree(true, v30));
        else
            v29.instance = v5.mount(v29:_createTree(true, v30), v29.mountTarget, "invitePrompt");
        end;
        if not (not v29.analytics or v29.isLoading) then
            v29.analytics:inputShareGameEntryPoint();
        end;
        l_ContextActionService_0:BindCoreAction("hideInvitePrompt", function(_, v34, _)
            if v34 == Enum.UserInputState.Begin then
                v29:hide();
            end;
        end, false, Enum.KeyCode.ButtonB, Enum.KeyCode.Backspace);
        return ;
    else
        return ;
    end;
end;
v17.hide = function(v36, _)
    if v36.isActive or v36.isLoading then
        v36.isLoading = false;
        v36.isActive = false;
        v36.instance = v5.update(v36.instance, v36:_createTree(false));
        if not (not v36.socialService or not v36.localPlayer) then
            v36.socialService:InvokeGameInvitePromptClosed(v36.localPlayer, {});
        end;
        l_ContextActionService_0:UnbindCoreAction("hideInvitePrompt");
        l_GuiService_0.SelectedCoreObject = nil;
        l_GuiService_0:RemoveSelectionGroup("invitePrompt");
        return ;
    else
        return ;
    end;
end;
v17.destruct = function(v38)
    if v38.instance then
        v5.unmount(v38.instance);
    end;
end;
return v17;


local l_CoreGui_0 = game:GetService("CoreGui");
local l_RobloxGui_0 = l_CoreGui_0:WaitForChild("RobloxGui");
local l_CorePackages_0 = game:GetService("CorePackages");
local l_Modules_0 = l_CoreGui_0.RobloxGui.Modules;
local v4 = require(l_RobloxGui_0.Modules.Common.IXPServiceWrapper);
local v5 = require(l_Modules_0.Flags.GetFStringInExperienceNotificationsLayer);
local v6 = require(l_Modules_0.Flags.GetFFlagEnableNewInviteMenuIXP);
local l_GetFFlagInviteListRerank_0 = require(l_CorePackages_0.Workspace.Packages.SharedFlags).GetFFlagInviteListRerank;
local v8 = {};
v8.__index = v8;
v8.new = function(v9)
    local v10 = {
        _ixpServiceWrapper = v9 or v4,
        _styleEnabled = false,
        _customizationEnabled = false,
        _newSendEndpointEnabled = false,
        _inviteListSortOrder = if not l_GetFFlagInviteListRerank_0() then nil else 0
    };
    setmetatable(v10, v8);
    return v10;
end;
v8.getStyleEnabled = function(v11)
    return v11._styleEnabled;
end;
v8.getCustomizationEnabled = function(v12)
    return v12._customizationEnabled;
end;
v8.getNewSendEndpointEnabled = function(v13)
    return v13._newSendEndpointEnabled;
end;
if l_GetFFlagInviteListRerank_0() then
    v8.getInviteListSortOrder = function(v14)
        return v14._inviteListSortOrder;
    end;
end;
v8.initialize = function(v15)
    if v6() then
        task.spawn(function()
            v15._ixpServiceWrapper:WaitForInitialization();
            local l_LayerData_0 = v15._ixpServiceWrapper:GetLayerData(v5());
            if l_LayerData_0 then
                v15._styleEnabled = l_LayerData_0.NewInviteMenuStyleEnabled or false;
                v15._customizationEnabled = l_LayerData_0.NewInviteMenuCustomizationEnabled or false;
                v15._newSendEndpointEnabled = l_LayerData_0.NewInviteMenuEndpointEnabled or false;
                v15._inviteListSortOrder = if not l_GetFFlagInviteListRerank_0() then nil else l_LayerData_0.invite_list_sort_order or 0;
            end;
        end);
        return ;
    else
        return ;
    end;
end;
v8.default = v8.new();
return v8;


local l_CorePackages_0 = game:GetService("CorePackages");
local v1 = require(l_CorePackages_0.Packages.React);
local v2 = require(l_CorePackages_0.UIBlox);
local l_ImageSetLabel_0 = v2.Core.ImageSet.ImageSetLabel;
local l_IconSize_0 = v2.App.Constant.IconSize;
local l_Images_0 = v2.App.ImageSet.Images;
local v6 = {
    Offline = "OFFLINE",
    Online = "ONLINE",
    InGame = "IN_GAME",
    InStudio = "IN_STUDIO"
};
local v7 = {
    [v6.Online] = {
        Image = "component_assets/circle_16",
        Color = Color3.fromRGB(0, 180, 109),
        Size = UDim2.new(0, 12, 0, 12)
    },
    [v6.InGame] = {
        Image = "icons/menu/games_small"
    },
    [v6.InStudio] = {
        Image = "icons/logo/studiologo_small"
    }
};
return {
    PresenceType = v6,
    GetIcon = function(v8)
        local v9 = v7[v8];
        if v9 then
            return v1.createElement(l_ImageSetLabel_0, {
                Image = l_Images_0[v9.Image],
                BackgroundTransparency = 1,
                ImageColor3 = v9.Color,
                Size = v9.Size or UDim2.new(0, l_IconSize_0.Small, 0, l_IconSize_0.Small)
            });
        else
            return ;
        end;
    end
};


local l_CoreGui_0 = game:GetService("CoreGui");
local l_CorePackages_0 = game:GetService("CorePackages");
local l_ShareGame_0 = l_CoreGui_0.RobloxGui.Modules.Settings.Pages.ShareGame;
local l_Immutable_0 = require(l_CorePackages_0.Workspace.Packages.AppCommonLib).Immutable;
local v4 = require(l_ShareGame_0.Actions.ClosePage);
local v5 = require(l_ShareGame_0.Actions.SetSearchAreaActive);
local v6 = require(l_ShareGame_0.Actions.SetSearchText);
local v7 = {
    SearchAreaActive = false,
    SearchText = ""
};
return function(v8, v9)
    v8 = v8 or v7;
    if v9.type == v5.name then
        return (l_Immutable_0.Set(v8, "SearchAreaActive", v9.isActive));
    elseif v9.type == v6.name then
        return (l_Immutable_0.Set(v8, "SearchText", v9.searchText));
    else
        if v9.type == v4.name then
            v8 = v7;
        end;
        return v8;
    end;
end;


local l_CorePackages_0 = game:GetService("CorePackages");
local l_AppTempCommon_0 = l_CorePackages_0.AppTempCommon;
local l_ShareGame_0 = game:GetService("CoreGui").RobloxGui.Modules.Settings.Pages.ShareGame;
local l_Immutable_0 = require(l_CorePackages_0.Workspace.Packages.AppCommonLib).Immutable;
local v4 = require(l_ShareGame_0.Constants);
local v5 = require(l_ShareGame_0.Actions.SetDeviceLayout);
local v6 = require(l_AppTempCommon_0.LuaApp.Actions.SetDeviceOrientation);
local v7 = require(l_ShareGame_0.Actions.SetIsSmallTouchScreen);
return function(v8, v9)
    v8 = v8 or {
        DeviceLayout = v4.DeviceLayout.DESKTOP,
        DeviceOrientation = v4.DeviceOrientation.INVALID,
        IsSmallTouchScreen = false
    };
    if v9.type == v6.name then
        return (l_Immutable_0.Set(v8, "DeviceOrientation", v9.deviceOrientation));
    elseif v9.type == v5.name then
        return (l_Immutable_0.Set(v8, "DeviceLayout", v9.deviceLayout));
    else
        if v9.type == v7.name then
            v8 = l_Immutable_0.Set(v8, "IsSmallTouchScreen", v9.isSmallTouchScreen);
        end;
        return v8;
    end;
end;


local l_CorePackages_0 = game:GetService("CorePackages");
local l_ShareGame_0 = game:GetService("CoreGui").RobloxGui.Modules.Settings.Pages.ShareGame;
local l_Immutable_0 = require(l_CorePackages_0.Workspace.Packages.AppCommonLib).Immutable;
local v3 = require(l_ShareGame_0.Actions.SetGameInfoCreated);
return function(v4, v5)
    v4 = v4 or {
        Created = nil
    };
    if v5.type == v3.name then
        v4 = l_Immutable_0.Set(v4, "Created", v5.Created);
    end;
    return v4;
end;


local l_CorePackages_0 = game:GetService("CorePackages");
local l_ShareGame_0 = game:GetService("CoreGui").RobloxGui.Modules.Settings.Pages.ShareGame;
local l_Immutable_0 = require(l_CorePackages_0.Workspace.Packages.AppCommonLib).Immutable;
local v3 = require(l_ShareGame_0.Actions.ReceivedUserInviteStatus);
return function(v4, v5)
    v4 = v4 or {};
    if v5.type == v3.name then
        v4 = l_Immutable_0.Set(v4, v5.userId, v5.inviteStatus);
    end;
    return v4;
end;


local l_CorePackages_0 = game:GetService("CorePackages");
local l_ShareGame_0 = game:GetService("CoreGui").RobloxGui.Modules.Settings.Pages.ShareGame;
local l_Immutable_0 = require(l_CorePackages_0.Workspace.Packages.AppCommonLib).Immutable;
local v3 = require(l_ShareGame_0.Constants);
local v4 = require(l_ShareGame_0.Actions.OpenPage);
local v5 = require(l_ShareGame_0.Actions.ClosePage);
return function(v6, v7)
    v6 = v6 or {
        IsOpen = false,
        Route = v3.PageRoute.NONE
    };
    if v7.type == v4.name then
        return (l_Immutable_0.JoinDictionaries(v6, {
            IsOpen = true,
            Route = v7.route or v3.PageRoute.NONE
        }));
    else
        if v7.type == v5.name then
            v6 = l_Immutable_0.JoinDictionaries(v6, {
                IsOpen = false,
                Route = v7.route or v3.PageRoute.NONE
            });
        end;
        return v6;
    end;
end;


local l_CorePackages_0 = game:GetService("CorePackages");
local l_ShareGame_0 = game:GetService("CoreGui").RobloxGui.Modules.Settings.Pages.ShareGame;
local l_Immutable_0 = require(l_CorePackages_0.Workspace.Packages.AppCommonLib).Immutable;
local v3 = require(l_ShareGame_0.Actions.ReceivedUserInviteStatus);
local v4 = require(l_ShareGame_0.Actions.StoppedToastTimer);
local l_InviteStatus_0 = require(l_ShareGame_0.Constants).InviteStatus;
return function(v6, v7)
    v6 = v6 or {
        failedInvites = {}
    };
    if v7.type == v3.name then
        local l_inviteStatus_0 = v7.inviteStatus;
        if not (l_inviteStatus_0 ~= l_InviteStatus_0.Moderated) or l_inviteStatus_0 == l_InviteStatus_0.Failed then
            return (l_Immutable_0.JoinDictionaries(v6, {
                failedInvites = l_Immutable_0.JoinDictionaries(v6.failedInvites, l_Immutable_0.Append(v6.failedInvites, {
                    timeStamp = tick(),
                    userId = v7.userId,
                    status = l_inviteStatus_0
                }))
            }));
        end;
    elseif v7.type == v4.name then
        v6 = l_Immutable_0.JoinDictionaries(v6, {
            failedInvites = {}
        });
    end;
    return v6;
end;


local function _(v0, v1)
    return {
        offset = v0,
        size = v1
    };
end;
local v3 = {
    frames = {
        back = {
            offset = Vector2.new(2, 19),
            size = Vector2.new(24, 24)
        },
        clear = {
            offset = Vector2.new(6, 51),
            size = Vector2.new(16, 16)
        },
        invite = {
            offset = Vector2.new(2, 75),
            size = Vector2.new(24, 24)
        },
        search_border = {
            offset = Vector2.new(11, 1),
            size = Vector2.new(7, 7)
        },
        search_large = {
            offset = Vector2.new(3, 132),
            size = Vector2.new(22, 22)
        },
        search_small = {
            offset = Vector2.new(6, 106),
            size = Vector2.new(16, 16)
        },
        friends = {
            offset = Vector2.new(0, 159),
            size = Vector2.new(72, 72)
        },
        cross = {
            offset = Vector2.new(4, 231),
            size = Vector2.new(24, 24)
        },
        modal_border = {
            offset = Vector2.new(0, 255),
            size = Vector2.new(7, 7)
        }
    }
};
return {
    GetFrame = function(_, v5)
        return v3.frames[v5];
    end,
    GetImagePath = function(_)
        return "rbxasset://textures/ui/Settings/ShareGame/icons.png";
    end,
    ApplyImage = function(v7, v8, v9)
        local l_v7_Frame_0 = v7:GetFrame(v9);
        v8.Image = "rbxasset://textures/ui/Settings/ShareGame/icons.png";
        v8.ImageRectOffset = l_v7_Frame_0.offset;
        v8.ImageRectSize = l_v7_Frame_0.size;
    end
};


return function(v0, v1)
    local v2 = false;
    return function(...)
        if not v2 then
            v2 = true;
            task.delay(v0, function()
                v2 = false;
            end);
            return v1(...);
        else
            return ;
        end;
    end;
end;


local l_CorePackages_0 = game:GetService("CorePackages");
local l_RobloxGui_0 = game:GetService("CoreGui"):WaitForChild("RobloxGui");
local l_ShareGame_0 = l_RobloxGui_0.Modules.Settings.Pages.ShareGame;
local l_RetrievalStatus_0 = require(l_CorePackages_0.Workspace.Packages.Http).Enum.RetrievalStatus;
local v4 = require(l_ShareGame_0.Thunks.ApiFetchUsersFriends);
local v5 = require(l_ShareGame_0.Constants);
local v6 = require(l_RobloxGui_0.Modules.Settings.Enum.UserSorts);
local l_GetFFlagInviteListRerank_0 = require(l_CorePackages_0.Workspace.Packages.SharedFlags).GetFFlagInviteListRerank;
return function(v8, v9)
    return function(v10)
        if v10:getState().Friends.retrievalStatus[v9] ~= l_RetrievalStatus_0.Fetching then
            v10:dispatch(v4(v8, v9, v5.ThumbnailRequest.InviteToGame, if not l_GetFFlagInviteListRerank_0() then nil else v6.StatusFrequents));
        end;
    end;
end;


local l_CorePackages_0 = game:GetService("CorePackages");
local l_AppTempCommon_0 = l_CorePackages_0.AppTempCommon;
local l_ShareGame_0 = game:GetService("CoreGui"):WaitForChild("RobloxGui").Modules.Settings.Pages.ShareGame;
local v3 = require(l_AppTempCommon_0.LuaApp.Thunks.ApiSendGameInvite);
local l_ApiFetchPlaceInfos_0 = require(l_CorePackages_0.Workspace.Packages.PlaceInfoRodux).Thunks.ApiFetchPlaceInfos;
local v5 = require(l_CorePackages_0.Packages.Promise);
local v6 = require(l_ShareGame_0.Actions.ReceivedUserInviteStatus);
local l_InviteStatus_0 = require(l_ShareGame_0.Constants).InviteStatus;
return function(v8, v9, v10)
    return function(v11)
        if v10 == "0" then
            warn("Game Invite failed to send. Cannot send invite to unpublished Place.");
            v11:dispatch(v6(v9, l_InviteStatus_0.Failed));
            return v5.reject();
        else
            local v12 = v11:getState();
            return v5.new(function(v13, v14)
                if v12.Invites[tostring(v9)] == l_InviteStatus_0.Pending then
                    v14();
                    return ;
                else
                    v13();
                    return ;
                end;
            end):andThen(function()
                local v15 = v12.PlaceInfos[v10];
                return v5.new(function(v16, v17)
                    v11:dispatch(v6(v9, l_InviteStatus_0.Pending));
                    if not v15 then
                        v11:dispatch(l_ApiFetchPlaceInfos_0(v8, {
                            v10
                        })):andThen(function(v18)
                            if v18[1] ~= nil then
                                v16(v18[1]);
                                return ;
                            else
                                v17();
                                return ;
                            end;
                        end, function()
                            v17();
                        end);
                        return ;
                    else
                        v16(v15);
                        return ;
                    end;
                end):andThen(function(v19)
                    return v11:dispatch(v3(v8, v9, v19));
                end):andThen(function(v20)
                    v11:dispatch(v6(v9, v20.resultType));
                    return v20;
                end, function()
                    v11:dispatch(v6(v9, l_InviteStatus_0.Failed));
                end);
            end);
        end;
    end;
end;


local l_CorePackages_0 = game:GetService("CorePackages");
local l_ShareGame_0 = game:GetService("CoreGui"):WaitForChild("RobloxGui").Modules.Settings.Pages.ShareGame;
local l_GameInviteEvents_0 = require(l_CorePackages_0.Workspace.Packages.GameInvite).GameInviteEvents;
local v3 = require(l_CorePackages_0.Packages.Promise);
local v4 = require(l_ShareGame_0.Actions.ReceivedUserInviteStatus);
local l_InviteStatus_0 = require(l_ShareGame_0.Constants).InviteStatus;
local l_PostSendExperienceInvite_0 = require(l_CorePackages_0.Workspace.Packages.GameInvite).PostSendExperienceInvite;
return function(v7, v8, v9, v10, v11, v12, v13)
    return function(v14)
        if v9 == "0" then
            warn("Game Invite failed to send. Cannot send invite to unpublished Place.");
            v14:dispatch(v4(v8, l_InviteStatus_0.Failed));
            return v3.reject();
        else
            local v15 = v14:getState();
            return v3.new(function(v16, v17)
                if v15.Invites[v8] == l_InviteStatus_0.Pending then
                    v17();
                    return ;
                else
                    v16();
                    return ;
                end;
            end):andThen(function()
                v14:dispatch(v4(v8, l_InviteStatus_0.Pending));
                return l_PostSendExperienceInvite_0(v7, v8, v9, v11, v12, v13);
            end):andThen(function(v18)
                v14:dispatch(v4(v8, l_InviteStatus_0.Success));
                return v18;
            end, function()
                v10:sendEvent(v11, l_GameInviteEvents_0.ErrorShown);
                v14:dispatch(v4(v8, l_InviteStatus_0.Failed));
            end);
        end;
    end;
end;


local v0 = require(game:GetService("CoreGui").RobloxGui.Modules.Settings.Pages.ShareGame.Constants);
return function(v1, v2)
    local v3 = if not not v1 and v1.InviteUser ~= 0 then v1.InviteUser else nil;
    local v4, v5 = v2(if not v3 then v0.Triggers.DeveloperMultiple else v0.Triggers.DeveloperSingle, v3);
    if v4 then
        local v6 = {};
        if not (not v5 or not v1) then
            if v1.InviteMessageId ~= "" then
                v6.inviteMessageId = v1.InviteMessageId;
            end;
            if v1.InviteUser ~= 0 then
                v6.inviteUserId = v1.InviteUser;
            end;
            if v1.PromptMessage ~= "" then
                v6.promptMessage = v1.PromptMessage;
            end;
            if v1.LaunchData ~= "" then
                v6.launchData = v1.LaunchData;
            end;
        end;
        return v6;
    else
        return nil;
    end;
end;


local l_CoreGui_0 = game:GetService("CoreGui");
local v1 = require(l_CoreGui_0:WaitForChild("RobloxGui").Modules.RobloxTranslator);
local v2 = require(script.Parent.mockTranslator);
return function()
    if not l_CoreGui_0:FindFirstChild("CoreScriptLocalization") then
        return v2;
    else
        return v1;
    end;
end;


return {
    FormatByKey = function(_, v1, _)
        return (tostring(v1));
    end
};


return {
    VoiceAnalytics = {
        UnmutePlayer = "unmute_player",
        MutePlayer = "mute_player",
        UnmuteSelf = "unmute_self",
        MuteSelf = "mute_self",
        UnmuteAll = "unmute_all",
        MuteAll = "mute_all"
    }
};


local l_RobloxGui_0 = game:GetService("CoreGui"):WaitForChild("RobloxGui");
local l_RbxAnalyticsService_0 = game:GetService("RbxAnalyticsService");
local l_AvatarChatService_0 = game:GetService("AvatarChatService");
local v3 = require(l_RobloxGui_0.Modules.Flags.getFFlagMicrophoneDevicePermissionsPromptLogging);
local v4 = game:DefineFastString("MicrophoneDevicePermissionsLoggingEventName", "microphoneDevicePermissionPrompted");
return {
    _initialized = false,
    placeId = 0,
    universeId = 0,
    placeVoiceEnabled = false,
    universeVoiceEnabled = false,
    clientSessionId = "",
    UIType = {
        EXPERIENCE_JOIN = 0,
        PROMPT_IMPRESSION = 1,
        PROMPT_INTERACTION = 2
    },
    _init = function(v5, v6, v7)
        v5._initialized = true;
        v5.placeId = game.PlaceId;
        v5.universeId = game.GameId;
        v5.placeVoiceEnabled = l_AvatarChatService_0:IsEnabled(v6, Enum.AvatarChatServiceFeature.PlaceAudio);
        v5.universeVoiceEnabled = l_AvatarChatService_0:IsEnabled(v6, Enum.AvatarChatServiceFeature.UniverseAudio);
        v5:logExperienceJoin({
            didAuthorize = v7
        });
    end,
    _getEventPayload = function(v8, v9, v10)
        return {
            uiType = v9,
            uiContext = v10.uiContext,
            didAuthorize = v10.didAuthorize,
            placeId = v8.placeId,
            universeId = v8.universeId,
            placeVoiceEnabled = v8.placeVoiceEnabled,
            universeVoiceEnabled = v8.universeVoiceEnabled,
            clientSessionId = v8.clientSessionId
        };
    end,
    _isReady = function(v11)
        return v3() and v11._initialized;
    end,
    init = function(v12, v13)
        if not l_AvatarChatService_0.ClientFeaturesInitialized then
            local v14 = nil;
            v14 = l_AvatarChatService_0:GetPropertyChangedSignal("ClientFeatures"):Connect(function()
                v12:_init(l_AvatarChatService_0.ClientFeatures, v13);
                v14:Disconnect();
            end);
            return ;
        else
            v12:_init(l_AvatarChatService_0.ClientFeatures, v13);
            return ;
        end;
    end,
    logExperienceJoin = function(v15, v16)
        if v15:_isReady() then
            l_RbxAnalyticsService_0:SendEventDeferred("client", "voice", v4, v15:_getEventPayload(v15.UIType.EXPERIENCE_JOIN, v16));
            return ;
        else
            return ;
        end;
    end,
    logPromptImpression = function(v17, v18)
        if v17:_isReady() then
            l_RbxAnalyticsService_0:SendEventDeferred("client", "voice", v4, v17:_getEventPayload(v17.UIType.PROMPT_IMPRESSION, v18));
            return ;
        else
            return ;
        end;
    end,
    logPromptInteraction = function(v19, v20)
        if v19:_isReady() then
            l_RbxAnalyticsService_0:SendEventDeferred("client", "voice", v4, v19:_getEventPayload(v19.UIType.PROMPT_INTERACTION, v20));
            return ;
        else
            return ;
        end;
    end,
    setClientSessionId = function(v21, v22)
        if not v21:_isReady() or v21.clientSessionId == v22 then
            return ;
        else
            v21.clientSessionId = v22;
            return ;
        end;
    end
};


local l_CorePackages_0 = game:GetService("CorePackages");
local v1 = require(l_CorePackages_0.Roact);
local v2 = require(l_CorePackages_0.UIBlox);
v2.init(require(l_CorePackages_0.Workspace.Packages.RobloxAppUIBloxConfig));
local l_AppStyleProvider_0 = v2.App.Style.AppStyleProvider;
v1.setGlobalConfig({
    elementTracing = true,
    propValidation = true
});
local v4 = {
    Default = {
        themeName = "Light",
        fontName = "Gotham"
    },
    Light = {
        themeName = "Light",
        fontName = "Gotham"
    },
    Dark = {
        themeName = "Dark",
        fontName = "Gotham"
    }
};
return {
    roact = v1,
    mapStory = function(v5)
        return function(v6)
            return v1.createElement(l_AppStyleProvider_0, {
                style = not not v6 and v4[v6.theme] or v4.Default
            }, {
                Child = v1.createElement(v5, v6)
            });
        end;
    end
};


local l_CorePackages_0 = game:GetService("CorePackages");
local v1 = require(script.Parent.Reducers.SettingsReducer);
local v2 = require(l_CorePackages_0.Rodux);
return {
    Destruct = function(v3)
        v3.store:destruct();
    end,
    store = v2.Store.new(v1, nil, {
        v2.thunkMiddleware
    })
};


local l_CorePackages_0 = game:GetService("CorePackages");
local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v2 = require(l_CorePackages_0.Roact);
local v3 = require(l_CorePackages_0.Rodux);
local v4 = require(l_CorePackages_0.RoactRodux);
local l_ShareGame_0 = l_Modules_0.Settings.Pages.ShareGame;
local v6 = require(l_ShareGame_0.Components.App);
local v7 = require(l_ShareGame_0.AppReducer);
local v8 = require(l_ShareGame_0.InviteStore);
local v9 = require(l_Modules_0.Flags.GetFFlagEnableSharedInviteStore);
return {
    createApp = function(v10, v11)
        local v12 = {
            store = if not v9() then v3.Store.new(v7, nil, {
                v3.thunkMiddleware
            }) else v8
        };
        v12._instanceHandle = v2.mount(v2.createElement(v4.StoreProvider, {
            store = v12.store
        }, {
            v2.createElement(v6, {
                analytics = v11,
                pageTarget = v10
            })
        }));
        return v12;
    end
};


local l_VideoCaptureService_0 = game:GetService("VideoCaptureService");
local v1 = nil;
l_VideoCaptureService_0.DevicesChanged:Connect(function()
    v1 = l_VideoCaptureService_0:GetCameraDevices();
end);
return {
    GetDevices = function()
        if not v1 then
            v1 = l_VideoCaptureService_0:GetCameraDevices();
        end;
        return v1;
    end
};


local l_CorePackages_0 = game:GetService("CorePackages");
local l_CoreGui_0 = game:GetService("CoreGui");
local l_RbxAnalyticsService_0 = game:GetService("RbxAnalyticsService");
local l_RunService_0 = game:GetService("RunService");
local l_VideoCaptureService_0 = game:GetService("VideoCaptureService");
local v5 = require(l_CorePackages_0.Cryo);
local l_default_0 = require(l_CorePackages_0.Workspace.Packages.PermissionsProtocol).PermissionsProtocol.default;
local v7 = require(l_CoreGui_0.RobloxGui.Modules.Settings.getVoiceCameraAccountSettings);
local v8 = require(l_CoreGui_0.RobloxGui.Modules.Settings.getPlaceVoiceCameraEnabled);
local v9 = require(l_CoreGui_0.RobloxGui.Modules.Settings.cameraDevicePermissionGrantedSignal);
local v10 = require(l_CoreGui_0.RobloxGui.Modules.Settings.Resources.MicrophoneDevicePermissionsLogging);
local v11 = require(l_CorePackages_0.Promise);
local l_RobloxGui_0 = l_CoreGui_0:WaitForChild("RobloxGui");
local v13 = require(l_RobloxGui_0.Modules.Tracker.TrackerMenu);
local v14 = require(l_RobloxGui_0.Modules.Tracker.TrackerPromptType);
local v15 = require(l_CoreGui_0.RobloxGui.Modules.Flags.FFlagAvatarChatCoreScriptSupport);
local v16 = require(l_CoreGui_0.RobloxGui.Modules.SelfieView.Flags.GetFFlagSelfieViewEnabled);
local v17 = require(l_RobloxGui_0.Modules.Flags.GetFFlagAvatarChatServiceEnabled);
local v18 = require(l_RobloxGui_0.Modules.Flags.getFFlagDecoupleHasAndRequestPermissions);
local v19 = require(l_RobloxGui_0.Modules.Flags.getFFlagPermissionsEarlyOutStallsQueue);
local v20 = require(l_RobloxGui_0.Modules.Flags.getFFlagUseCameraDeviceGrantedSignal);
local v21 = require(l_RobloxGui_0.Modules.Flags.getFFlagDoNotPromptCameraPermissionsOnMount);
local v22 = require(l_RobloxGui_0.Modules.Flags.getFFlagEnableAnalyticsForCameraDevicePermissions);
local v23 = require(l_RobloxGui_0.Modules.Flags.GetFFlagJoinWithoutMicPermissions);
local v24 = require(l_RobloxGui_0.Modules.Flags.getFFlagMicrophoneDevicePermissionsPromptLogging);
local v25 = game:DefineFastFlag("CheckCameraAvailabilityBeforePermissions", false);
local v26 = game:DefineFastFlag("DebugSkipVoicePermissionCheck", false);
local v27 = if not v17() then nil else game:GetService("AvatarChatService");
local v28 = nil;
local v29 = nil;
local v30 = {};
local v31 = false;
local function v35(v32, v33, v34)
    if not (v32.isCameraEnabled or not v5.List.find(v33, l_default_0.Permissions.CAMERA_ACCESS)) then
        v33 = v5.List.removeValue(v33, l_default_0.Permissions.CAMERA_ACCESS);
    end;
    if not v23() then
        if not (v32.isVoiceEnabled or not v5.List.find(v33, l_default_0.Permissions.MICROPHONE_ACCESS)) then
            v33 = v5.List.removeValue(v33, l_default_0.Permissions.MICROPHONE_ACCESS);
        end;
    elseif not v32.isVoiceEnabled and v5.List.find(v33, l_default_0.Permissions.MICROPHONE_ACCESS) or v34 == nil then
        v33 = v5.List.removeValue(v33, l_default_0.Permissions.MICROPHONE_ACCESS);
    end;
    if not (not v26 or not v5.List.find(v33, l_default_0.Permissions.MICROPHONE_ACCESS)) then
        v33 = v5.List.removeValue(v33, l_default_0.Permissions.MICROPHONE_ACCESS);
    end;
    if not ((not v25 or not v5.List.find(v33, l_default_0.Permissions.CAMERA_ACCESS)) or not v5.isEmpty((l_VideoCaptureService_0:GetCameraDevices()))) then
        v33 = v5.List.removeValue(v33, l_default_0.Permissions.CAMERA_ACCESS);
    end;
    return v33;
end;
local function v59(v36, v37, v38, v39, v40, v41)
    local v42 = true;
    local v43 = true;
    if not (not v15 and not v16()) then
        v42 = v5.List.find(v39, l_default_0.Permissions.CAMERA_ACCESS) ~= nil;
        v43 = v5.List.find(v39, l_default_0.Permissions.MICROPHONE_ACCESS) ~= nil;
    end;
    local v44 = v35(v36, v39, v40);
    local v45 = v5.List.find(v44, l_default_0.Permissions.CAMERA_ACCESS) ~= nil;
    local v46 = v5.List.find(v44, l_default_0.Permissions.MICROPHONE_ACCESS) ~= nil;
    if not v44 or #v44 <= 0 then
        v37({
            hasCameraPermissions = false,
            hasMicPermissions = false
        });
        if v19() then
            v31 = false;
            v38();
        end;
        return ;
    elseif v18() and v40 == true then
        return v11.new(function(v47, _)
            local v49 = {};
            for _, v51 in ipairs(v44) do
                local v52, v53 = l_default_0:hasPermissions({
                    v51
                }):await();
                if not v52 then
                    v49[v51] = false;
                else
                    v49[v51] = v53.status == l_default_0.Status.AUTHORIZED;
                end;
            end;
            v37({
                hasCameraPermissions = v49[l_default_0.Permissions.CAMERA_ACCESS] or false,
                hasMicPermissions = v49[l_default_0.Permissions.MICROPHONE_ACCESS] or false
            });
            v31 = false;
            v38();
            v47(v49);
        end);
    else
        return l_default_0:hasPermissions(v44):andThen(function(v54)
            if v54.status == l_default_0.Status.AUTHORIZED then
                v37({
                    hasCameraPermissions = v45,
                    hasMicPermissions = v46
                });
                v31 = false;
                v38();
                return v54;
            else
                if not ((not v24() or not v46) or not v41) then
                    v10:logPromptImpression({
                        didAuthorize = false,
                        uiContext = v41
                    });
                end;
                return l_default_0:requestPermissions(v44):andThen(function(v55)
                    if typeof(v55) == "table" then
                        local l_v45_0 = v45;
                        if l_v45_0 then
                            l_v45_0 = true;
                            if v55.status ~= l_default_0.Status.AUTHORIZED then
                                l_v45_0 = not v5.List.find(v55.missingPermissions, l_default_0.Permissions.CAMERA_ACCESS);
                            end;
                        end;
                        local l_v46_0 = v46;
                        if l_v46_0 then
                            l_v46_0 = true;
                            if v55.status ~= l_default_0.Status.AUTHORIZED then
                                l_v46_0 = not v5.List.find(v55.missingPermissions, l_default_0.Permissions.MICROPHONE_ACCESS);
                            end;
                        end;
                        v28 = if not v42 then nil else l_v45_0;
                        v29 = if not v43 then nil else l_v46_0;
                        if not (not v20() or not v28) then
                            v9:fire();
                        end;
                    elseif v55 == l_default_0.Status.AUTHORIZED then
                        if v20() then
                            v9:fire();
                        end;
                        v28 = v45;
                        v29 = v46;
                    else
                        v28 = false;
                        v29 = false;
                    end;
                    local v58 = {
                        hasCameraPermissions = v28 or false,
                        hasMicPermissions = v29 or false
                    };
                    if not (not v22() or not v45) then
                        l_RbxAnalyticsService_0:SendEventDeferred(not l_RunService_0:IsStudio() and "client" or "studio", "avatarChat", "CameraDevicePermissionPrompted", {
                            didAuthorize = v28 or false
                        });
                    end;
                    if not ((not v24() or not v46) or not v41) then
                        v10:logPromptInteraction({
                            didAuthorize = v29,
                            uiContext = v41
                        });
                    end;
                    if not ((not v45 or v28) or v21()) then
                        v13:showPrompt(v14.VideoNoPermission);
                    end;
                    v37(v58);
                    v31 = false;
                    v38();
                    return v55;
                end);
            end;
        end);
    end;
end;
local function v64(v60)
    if v26 then
        v29 = true;
    end;
    if not (v28 ~= nil) or v29 == nil then
        return nil;
    else
        local v61 = false;
        for _, v63 in v60, nil, nil do
            if v63 ~= l_default_0.Permissions.MICROPHONE_ACCESS and v63 ~= l_default_0.Permissions.CAMERA_ACCESS then
                v61 = true;
            end;
        end;
        if not v61 then
            return {
                hasCameraPermissions = v28 or false,
                hasMicPermissions = v29 or false
            };
        else
            return nil;
        end;
    end;
end;
local function v65(v66, v67, v68, v69)
    local v70 = {};
    v70 = v67 or {
        l_default_0.Permissions.MICROPHONE_ACCESS,
        l_default_0.Permissions.CAMERA_ACCESS
    };
    local function v72()
        if v30[1] then
            local v71 = v30[1];
            table.remove(v30, 1);
            if not v18() then
                v65(v71.callback, v71.permsToCheck, nil, v71.context);
            else
                v65(v71.callback, v71.permissionsToRequest, v71.shouldNotRequestPerms, v71.context);
                return ;
            end;
        end;
    end;
    if not (not v15 and not v16()) then
        local v73 = v64(v70);
        if v73 then
            v66(v73);
            v72();
            return ;
        end;
    end;
    if not v31 then
        v31 = true;
        if not v15 and not v16() then
            return v11.new(function(v74, _)
                local v76 = v7();
                v74({
                    isVoiceEnabled = v76.isVoiceEnabledUserSettings,
                    isCameraEnabled = v76.isCameraEnabledUserSettings
                });
            end):andThen(function(v77)
                v59(v77, v66, v72, v70, nil, v69);
            end);
        elseif not v17() then
            return v11.all({
                v11.new(function(v78, _)
                    local v80 = v8();
                    v78({
                        isVoiceEnabled = v80.isVoiceEnabledPlaceSettings,
                        isCameraEnabled = v80.isCameraEnabledPlaceSettings
                    });
                end),
                (v11.new(function(v81, _)
                    local v83 = v7();
                    v81({
                        isVoiceEnabled = v83.isVoiceEnabledUserSettings,
                        isCameraEnabled = v83.isCameraEnabledUserSettings
                    });
                end))
            }):andThen(function(v84)
                local v85 = v84[1];
                local v86 = v84[2];
                return {
                    isVoiceEnabled = v85.isVoiceEnabled and v86.isVoiceEnabled,
                    isCameraEnabled = v85.isCameraEnabled and v86.isCameraEnabled
                };
            end):andThen(function(v87)
                v59(v87, v66, v72, v70, v68, v69);
            end);
        else
            return v11.new(function(v88, _)
                if not v27.ClientFeaturesInitialized then
                    local v90 = nil;
                    v90 = v27:GetPropertyChangedSignal("ClientFeatures"):Connect(function()
                        v90:Disconnect();
                        v88({
                            isVoiceEnabled = v27:IsEnabled(v27.ClientFeatures, Enum.AvatarChatServiceFeature.UserAudio),
                            isCameraEnabled = v27:IsEnabled(v27.ClientFeatures, Enum.AvatarChatServiceFeature.UserVideo)
                        });
                    end);
                    return ;
                else
                    v88({
                        isVoiceEnabled = v27:IsEnabled(v27.ClientFeatures, Enum.AvatarChatServiceFeature.UserAudio),
                        isCameraEnabled = v27:IsEnabled(v27.ClientFeatures, Enum.AvatarChatServiceFeature.UserVideo)
                    });
                    return ;
                end;
            end):andThen(function(v91)
                v59(v91, v66, v72, v70, v68, v69);
            end);
        end;
    else
        table.insert(v30, {
            callback = v66,
            permissionsToRequest = v67,
            shouldNotRequestPerms = v18() and v68,
            context = v69
        });
        return ;
    end;
end;
return v65;


local l_VoiceChatService_0 = game:GetService("VoiceChatService");
local l_FacialAnimationStreamingServiceV2_0 = game:GetService("FacialAnimationStreamingServiceV2");
return function()
    if not game:IsLoaded() then
        game.Loaded:Wait();
    end;
    return {
        isVoiceEnabledPlaceSettings = l_VoiceChatService_0.VoiceChatEnabledForUniverseOnRcc and l_VoiceChatService_0.VoiceChatEnabledForPlaceOnRcc,
        isCameraEnabledPlaceSettings = l_FacialAnimationStreamingServiceV2_0:IsVideoEnabled(l_FacialAnimationStreamingServiceV2_0.ServiceState)
    };
end;


local l_FacialAnimationStreamingServiceV2_0 = game:GetService("FacialAnimationStreamingServiceV2");
local l_Players_0 = game:GetService("Players");
local v2 = nil;
return function()
    if not v2 then
        if not game:IsLoaded() then
            game.Loaded:Wait();
        end;
        if l_Players_0.LocalPlayer then
            local l_LocalPlayer_0 = l_Players_0.LocalPlayer;
            assert(l_LocalPlayer_0, "");
            local l_status_0, l_result_0 = pcall(l_FacialAnimationStreamingServiceV2_0.ResolveStateForUser, l_FacialAnimationStreamingServiceV2_0, l_LocalPlayer_0.UserId);
            if l_status_0 then
                local l_ServiceState_0 = l_FacialAnimationStreamingServiceV2_0.ServiceState;
                v2 = {
                    isVoiceEnabledUserSettings = l_FacialAnimationStreamingServiceV2_0:IsAudioEnabled(l_result_0) and l_FacialAnimationStreamingServiceV2_0:IsAudioEnabled(l_ServiceState_0),
                    isCameraEnabledUserSettings = l_FacialAnimationStreamingServiceV2_0:IsVideoEnabled(l_result_0) and l_FacialAnimationStreamingServiceV2_0:IsVideoEnabled(l_ServiceState_0)
                };
                return v2;
            else
                return {
                    isVoiceEnabledUserSettings = false,
                    isCameraEnabledUserSettings = false
                };
            end;
        else
            return {
                isVoiceEnabledUserSettings = false,
                isCameraEnabledUserSettings = false
            };
        end;
    else
        return v2;
    end;
end;


local l_AvatarChatService_0 = game:GetService("AvatarChatService");
local l_CoreGui_0 = game:GetService("CoreGui");
local l_CorePackages_0 = game:GetService("CorePackages");
local l_VideoCaptureService_0 = game:GetService("VideoCaptureService");
local v4 = require(l_CorePackages_0.Cryo);
local l_RobloxGui_0 = l_CoreGui_0:WaitForChild("RobloxGui");
local l_IXPService_0 = game:GetService("IXPService");
local l_MemStorageService_0 = game:GetService("MemStorageService");
local v8 = require(l_RobloxGui_0.Modules.Flags.GetFFlagAvatarChatServiceEnabled);
local v9 = require(l_RobloxGui_0.Modules.Flags.getFFlagEnableAlwaysAvailableCamera);
local v10 = require(l_RobloxGui_0.Modules.Flags.getFFlagUseCameraDevicesListener);
local v11 = require(l_RobloxGui_0.Modules.Settings.cameraDevicesHelper);
local v12 = require(l_RobloxGui_0.Modules.Tracker.TrackerMenu);
local v13 = require(l_RobloxGui_0.Modules.Tracker.TrackerPromptType);
local v14 = game:DefineFastFlag("DisableCameraOnLowSpecDevices", false);
local v15 = game:DefineFastString("DisableCameraOnLowSpecDevicesIXPLayer", "AvatarChat.DisableOnLowSpecAndroid");
local v16 = game:DefineFastString("DisableCameraOnLowSpecDevicesIXPField", "DisableOnAndroid");
local v17 = game:DefineFastFlag("OnlyShowToastOnce", false);
local v18 = game:DefineFastFlag("DebugAlwaysShowDisableCameraToast", false);
local function _()
    if not v14 then
        return false;
    else
        local l_status_0, l_result_0 = pcall(function()
            return l_IXPService_0:GetUserLayerVariables(v15);
        end);
        if not (not l_status_0 or not l_result_0) and l_result_0[v16] then
            return l_result_0[v16];
        else
            return false;
        end;
    end;
end;
return function()
    if v8() and not _G.__TESTEZ_RUNNING_TEST__ then
        local l_status_1, l_result_1 = pcall(l_AvatarChatService_0.GetClientFeaturesAsync, l_AvatarChatService_0);
        if l_status_1 then
            local v24 = l_AvatarChatService_0:deviceMeetsRequirementsForFeature(Enum.DeviceFeatureType.DeviceCapture);
            if not v24 then
                l_IXPService_0:LogUserLayerExposure(v15);
            end;
            local v25;
            if not v14 then
                v25 = false;
            else
                local l_status_2, l_result_2 = pcall(function()
                    return l_IXPService_0:GetUserLayerVariables(v15);
                end);
                v25 = not not l_status_2 and if l_result_2 and l_result_2[v16] then l_result_2[v16] else false;
            end;
            if not v25 or v24 then
                v25 = l_AvatarChatService_0:IsEnabled(l_result_1, Enum.AvatarChatServiceFeature.PlaceVideo);
                local v28 = l_AvatarChatService_0:IsEnabled(l_result_1, Enum.AvatarChatServiceFeature.UserVideo);
                local v29 = l_AvatarChatService_0:IsEnabled(l_result_1, Enum.AvatarChatServiceFeature.UserVideoEligible);
                if not v9() then
                    return (v25 and v29) and v28;
                else
                    local _ = nil;
                    return ((v25 and v29) and v28) and not v4.isEmpty(if not v10() then l_VideoCaptureService_0:GetCameraDevices() else v11.GetDevices());
                end;
            else
                if not v17 then
                    v12:showPrompt(v13.CameraUnavailable);
                elseif not (l_MemStorageService_0:GetItem("ShownDisableCameraToast") == "true") or v18 then
                    v12:showPrompt(v13.CameraUnavailable);
                    l_MemStorageService_0:SetItem("ShownDisableCameraToast", "true");
                end;
                return false;
            end;
        else
            warn("Unable to get Client Features from AvatarChatService");
            return false;
        end;
    else
        return false;
    end;
end;