local l_script_FirstAncestor_0 = script:FindFirstAncestor("RoduxFriends");
local l_Parent_0 = l_script_FirstAncestor_0.Parent;
local v2 = require(l_Parent_0.Rodux);
local v3 = require(l_Parent_0.llama);
local l_Actions_0 = l_script_FirstAncestor_0.Actions;
local v5 = require(l_Actions_0.FriendshipCreated);
local v6 = require(l_Actions_0.FriendshipDestroyed);
local v7 = require(script.Parent.utils.addUser);
local v8 = require(script.Parent.utils.removeUser);
local v9 = require(script.Parent.utils.setFriendshipsInStore);
local v10 = require(script.Parent.utils.removeTargetUserFriendshipInStore);
local v11 = {};
return function(v12)
    local l_friendsNetworking_0 = v12.friendsNetworking;
    return v2.createReducer(v11, {
        [v5.name] = function(v14, v15)
            assert(type(v15.payload.userId1) == "string", "Expected userId1 to be a string");
            assert(type(v15.payload.userId2) == "string", "Expected userId2 to be a string");
            return v3.Dictionary.join(v14, {
                [v15.payload.userId1] = v7(v14[v15.payload.userId1], v15.payload.userId2),
                [v15.payload.userId2] = v7(v14[v15.payload.userId2], v15.payload.userId1)
            });
        end,
        [v6.name] = function(v16, v17)
            assert(type(v17.payload.userId1) == "string", "Expected userId1 to be a string");
            assert(type(v17.payload.userId2) == "string", "Expected userId2 to be a string");
            return v3.Dictionary.join(v16, {
                [v17.payload.userId1] = v8(v16[v17.payload.userId1], v17.payload.userId2),
                [v17.payload.userId2] = v8(v16[v17.payload.userId2], v17.payload.userId1)
            });
        end,
        [l_friendsNetworking_0.GetFriendsFromUserId.Succeeded.name] = function(v18, v19)
            return v9(v18, v19);
        end,
        [l_friendsNetworking_0.UnfriendTargetUserId.Succeeded.name] = function(v20, v21)
            return v10(v20, v21);
        end,
        [l_friendsNetworking_0.AcceptFriendRequestFromUserId.Succeeded.name] = function(v22, v23)
            local v24 = tostring(v23.ids[1]);
            local v25 = tostring(v23.additionalData.currentUserId);
            return v3.Dictionary.join(v22, {
                [v24] = v7(v22[v24], v25),
                [v25] = v7(v22[v25], v24)
            });
        end
    });
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("RoduxFriends");
local v1 = require(l_script_FirstAncestor_0.Parent.llama);
local l_Actions_0 = l_script_FirstAncestor_0.Actions;
local v3 = require(l_Actions_0.FriendshipCreated);
local v4 = require(l_Actions_0.FriendshipDestroyed);
local v5 = require(script.Parent.utils.addUser);
local v6 = require(script.Parent.utils.removeUser);
local v7 = require(script.Parent.utils.setFriendshipsInStore);
local v8 = require(script.Parent.utils.removeTargetUserFriendshipInStore);
local v9 = require(script.Parent.utils.countUserFriendsInStore);
local v10 = {
    byUserId = {},
    countsByUserId = {}
};
return function(v11)
    local l_friendsNetworking_0 = v11.friendsNetworking;
    return function(v13, v14)
        local v15 = v13 or v10;
        if v14 and v14.type == v3.name then
            assert(type(v14.payload.userId1) == "string", "Expected userId1 to be a string");
            assert(type(v14.payload.userId2) == "string", "Expected userId2 to be a string");
            return v1.Dictionary.join(v15.countsByUserId, {
                [v14.payload.userId1] = #v5(v15.byUserId[v14.payload.userId1], v14.payload.userId2),
                [v14.payload.userId2] = #v5(v15.byUserId[v14.payload.userId2], v14.payload.userId1)
            });
        elseif v14 and v14.type == v4.name then
            assert(type(v14.payload.userId1) == "string", "Expected userId1 to be a string");
            assert(type(v14.payload.userId2) == "string", "Expected userId2 to be a string");
            return v1.Dictionary.join(v15.countsByUserId, {
                [v14.payload.userId1] = #v6(v15.byUserId[v14.payload.userId1], v14.payload.userId2),
                [v14.payload.userId2] = #v6(v15.byUserId[v14.payload.userId2], v14.payload.userId1)
            });
        elseif v14 and v14.type == l_friendsNetworking_0.GetFriendsFromUserId.Succeeded.name then
            return v9((v7(v15.byUserId, v14)));
        elseif v14 and v14.type == l_friendsNetworking_0.UnfriendTargetUserId.Succeeded.name then
            return v9((v8(v13.byUserId, v14)));
        else
            return v15.countsByUserId;
        end;
    end;
end;


local l_Parent_0 = script.Parent.Parent.Parent.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local v2 = require(l_Parent_1.Rodux);
local v3 = require(l_Parent_1.llama);
local v4 = require(l_Parent_0.Actions.RecommendationSourceCreated);
local _ = require(l_Parent_0.roduxFriendsTypes);
local v6 = {};
return function(_)
    return v2.createReducer(v6, {
        [v4.name] = function(v8, v9)
            return v3.Dictionary.join(v8, {
                [v9.payload.source] = v3.List.reduce(v9.payload.recommendationIds or {}, function(v10, v11)
                    v10[tostring(v11)] = true;
                    return v10;
                end, {})
            });
        end
    });
end;


local v0 = require(script:FindFirstAncestor("RoduxFriends").Parent.Rodux);
local v1 = require(script.byUserId);
local v2 = require(script.bySource);
local v3 = require(script.hasIncomingFriendRequest);
return function(v4)
    return v0.combineReducers({
        byUserId = v1(v4),
        bySource = v2(v4),
        hasIncomingFriendRequest = v3(v4)
    });
end;


local v0 = require(script:FindFirstAncestor("RoduxFriends").Parent.Rodux);
local v1 = require(script.receivedCount);
local v2 = require(script.byUserId);
local v3 = require(script.mutualFriends);
local v4 = require(script.sourceUniverseIds);
local v5 = require(script.nextPageCursor);
local v6 = require(script.sentAt);
local v7 = require(script.originSourceType);
local v8 = require(script.order);
return function(v9)
    return v0.combineReducers({
        receivedCount = v1(v9),
        byUserId = v2(v9),
        mutualFriends = v3(v9),
        sourceUniverseIds = v4(v9),
        nextPageCursor = v5(v9),
        sentAt = v6(v9),
        originSourceType = v7(v9),
        order = v8(v9)
    });
end;


local v0 = require(script:FindFirstAncestor("RoduxFriends").Parent.llama);
return function(v1, v2)
    if v1 then
        if v0.List.find(v1, v2) then
            return v1;
        else
            return v0.List.join(v1, {
                v2
            });
        end;
    else
        return {
            v2
        };
    end;
end;


return function(v0)
    local v1 = {};
    for v2, v3 in pairs(v0) do
        v1[v2] = #v3;
    end;
    return v1;
end;


local v0 = require(script:FindFirstAncestor("RoduxFriends").Parent.llama);
return function(v1, v2)
    local v3 = {};
    for _, v5 in pairs(v2) do
        v3[v5] = v0.None;
    end;
    return v0.Dictionary.join(v1, v3);
end;


local v0 = require(script:FindFirstAncestor("RoduxFriends").Parent.llama);
local v1 = require(script.Parent.removeUser);
return function(v2, v3)
    local v4 = tostring(v3.additionalData.currentUserId);
    local v5 = tostring(v3.namedIds.users);
    local v6 = v0.Dictionary.join(v2, {
        [v4] = v1(v2[v4], v5),
        [v5] = v1(v2[v5], v4)
    });
    v6[v5] = nil;
    return v6;
end;


local v0 = require(script:FindFirstAncestor("RoduxFriends").Parent.llama);
return function(v1, v2)
    return v0.List.removeValue(v1 or {}, v2);
end;


local v0 = require(script.Parent.Friends.byUserId);
local v1 = require(script.Parent.Friends.countsByUserId);
local v2 = require(script.Parent.Friends.requests);
local v3 = require(script.Parent.Friends.recommendations);
local v4 = require(script.Parent.Friends.friendshipStatus);
local v5 = require(script.Parent.Friends.friendsRankByUserId);
local v6 = require(script.Parent.Friends.contactNamesByUserId);
local v7 = {
    countsByUserId = {},
    byUserId = {},
    requests = {
        receivedCount = 0
    },
    recommendations = {},
    friendshipStatus = {},
    friendsRankByUserId = {},
    contactNamesByUserId = {}
};
return function(v8)
    return function(v9, v10)
        local v11 = v9 or v7;
        return {
            byUserId = v0(v8)(v11.byUserId, v10),
            countsByUserId = v1(v8)(v9, v10),
            requests = v2(v8)(v11.requests, v10),
            recommendations = v3(v8)(v11.recommendations, v10),
            friendshipStatus = v4(v8)(v11.friendshipStatus, v10),
            friendsRankByUserId = v5(v8)(v11.friendsRankByUserId, v10),
            contactNamesByUserId = v6(v8)(v11.contactNamesByUserId, v10)
        };
    end;
end;


return function(v0, v1)
    local v2 = {};
    for _, v4 in pairs(v0) do
        local v5 = tostring(v4);
        local v6 = v1[v5];
        if v6 then
            v2[v5] = v6;
        end;
    end;
    return v2;
end;


local l_Parent_0 = script.Parent.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local v2 = require(l_Parent_0.getDeepValue);
local _ = require(l_Parent_0.roduxFriendsTypes);
local l_Object_0 = require(l_Parent_1.LuauPolyfill).Object;
return function(v5)
    local l_keyPath_0 = v5.keyPath;
    return function(v7)
        return function(v8)
            return l_Object_0.keys(v2(v7, string.format("%s.recommendations.bySource.%s", l_keyPath_0, v8 or "")) or {});
        end;
    end;
end;


local l_Parent_0 = script.Parent.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local _ = require(l_Parent_0.roduxFriendsTypes);
local v3 = require(script.Parent.selectRecommendationsForUserId);
local v4 = require(l_Parent_1.LuauPolyfill);
local l_Object_0 = v4.Object;
local l_Array_0 = v4.Array;
local function v9(v7, v8)
    return (v7.rank or 0) - (v8.rank or 0);
end;
return function(v10)
    return function(v11)
        return function(v12, v13)
            return l_Array_0.map(l_Array_0.sort(l_Object_0.values((v3(v10)(v11)(v12, v13))), v9), function(v14)
                return v14.id;
            end);
        end;
    end;
end;


local l_Parent_0 = script.Parent.Parent;
local v1 = require(l_Parent_0.Parent.llama);
local _ = require(l_Parent_0.roduxFriendsTypes);
local v3 = require(l_Parent_0.getDeepValue);
local function v6(v4, v5)
    return v4.rank < v5.rank;
end;
return function(v7)
    local l_keyPath_0 = v7.keyPath;
    return function(v9, v10)
        return v1.List.sort(v1.Dictionary.values(v3(v9, string.format("%s.recommendations.byUserId.%s", l_keyPath_0, v10)) or {}), v6);
    end;
end;


return function(v0)
    return {
        isFriendsWith = require(script.isFriendsWith)(v0),
        getSortedByRankRecommendations = require(script.getSortedByRankRecommendations)(v0),
        selectFriendshipStatusesByUserIds = require(script.selectFriendshipStatusesByUserIds)(v0),
        getRecommendationIdsBySource = require(script.getRecommendationIdsBySource)(v0),
        selectRecommendationsForUserId = require(script.selectRecommendationsForUserId)(v0),
        getSortedByRankRecommendationIds = require(script.getSortedByRankRecommendationIds)(v0)
    };
end;


local l_Parent_0 = script.Parent.Parent;
local v1 = require(script:FindFirstAncestor("RoduxFriends").Parent.llama);
local v2 = require(l_Parent_0.getDeepValue);
return function(v3)
    local l_keyPath_0 = v3.keyPath;
    return function(v5, v6, v7)
        local v8 = v2(v5, l_keyPath_0 .. ".byUserId");
        if not (v8[v6] ~= nil) or not v1.List.find(v8[v6], v7) then
            return false;
        else
            return true;
        end;
    end;
end;


local l_Parent_0 = script.Parent.Parent;
local v1 = require(l_Parent_0.getDeepValue);
local _ = require(l_Parent_0.roduxFriendsTypes);
local v3 = require(script.Parent.filterByKeys);
return function(v4)
    local l_keyPath_0 = v4.keyPath;
    return function(v6)
        return function(v7)
            local v8 = v1(v6, string.format("%s.friendshipStatus", l_keyPath_0)) or {};
            if v7 then
                return v3(v7, v8);
            else
                return v8;
            end;
        end;
    end;
end;


local l_Parent_0 = script.Parent.Parent;
local v1 = require(l_Parent_0.getDeepValue);
local _ = require(l_Parent_0.roduxFriendsTypes);
local v3 = require(script.Parent.filterByKeys);
return function(v4)
    local l_keyPath_0 = v4.keyPath;
    return function(v6)
        return function(v7, v8)
            local v9 = v1(v6, string.format("%s.recommendations.byUserId.%s", l_keyPath_0, v7 or "")) or {};
            if not v8 then
                return v9;
            else
                return (v3(v8, v9));
            end;
        end;
    end;
end;


local l_Parent_0 = script.Parent;
local v1 = require(l_Parent_0.llama);
local v2 = require(l_Parent_0.RoduxNetworking);
local v3 = require(l_Parent_0.FriendsNetworking);
local v4 = require(l_Parent_0.NetworkingBlocking);
local v5 = require(script.Reducers.FriendsReducer);
local v6 = require(script.Actions);
local v7 = require(script.Selectors);
local v8 = require(script.Models);
local v9 = require(script.Enums);
return {
    config = function(v10)
        v10 = v1.Dictionary.join(v10, {
            friendsNetworking = v3.config({
                roduxNetworking = v2.mock()
            }),
            networkingBlocking = v4.config({
                roduxNetworking = v2.mock()
            })
        });
        return {
            installReducer = function()
                return v5(v10);
            end,
            Actions = v6(v10),
            Selectors = v7(v10),
            Models = v8,
            Enums = v9
        };
    end
};


return require(script:FindFirstAncestor("RoduxGames").Parent.enumerate)(script.Name, {
    User = "User",
    Group = "Group"
});


return require(script:FindFirstAncestor("RoduxGames").Parent.enumerate)(script.Name, {
    Playable = "Playable",
    UnplayableOtherReason = "UnplayableOtherReason",
    GuestProhibited = "GuestProhibited",
    GameUnapproved = "GameUnapproved",
    IncorrectConfiguration = "IncorrectConfiguration",
    UniverseRootPlaceIsPrivate = "UniverseRootPlaceIsPrivate",
    InsufficientPermissionFriendsOnly = "InsufficientPermissionFriendsOnly",
    InsufficientPermissionGroupOnly = "InsufficientPermissionGroupOnly",
    DeviceRestricted = "DeviceRestricted",
    UnderReview = "UnderReview",
    PurchaseRequired = "PurchaseRequired",
    AccountRestricted = "AccountRestricted",
    TemporarilyUnavailable = "TemporarilyUnavailable"
});


return {
    PlayabilityStatus = require(script.PlayabilityStatus),
    CreatorType = require(script.CreatorType)
};


local l_script_FirstAncestor_0 = script:FindFirstAncestor("RoduxGames");
local v1 = require(l_script_FirstAncestor_0.Parent.t);
local l_CreatorType_0 = require(l_script_FirstAncestor_0.Enums).CreatorType;
local v3 = {};
v3.new = function(v4)
    assert(v3.isValid(v4));
    v3.__index = v3;
    setmetatable(v4, v3);
    return v4;
end;
v3.mock = function(v5)
    v5 = v5 or {};
    return (v3.new({
        creatorId = v5.creatorId or "creatorId",
        creatorName = v5.creatorName or "creatorName",
        creatorType = v5.creatorType or l_CreatorType_0.User
    }));
end;
v3.format = function(v6)
    return (v3.new({
        creatorId = tostring(v6.id),
        creatorName = v6.name,
        creatorType = l_CreatorType_0.fromRawValue(v6.type)
    }));
end;
v3.isValid = v1.strictInterface({
    creatorId = v1.string,
    creatorName = v1.string,
    creatorType = v1.userdata
});
return v3;


local v0 = require(script:FindFirstAncestor("RoduxGames").Parent.t);
local v1 = {};
v1.new = function(v2)
    assert(v1.isValid(v2));
    v1.__index = v1;
    setmetatable(v2, v1);
    return v2;
end;
v1.mock = function(v3)
    v3 = v3 or {};
    return (v1.new({
        assetTypeId = v3.assetTypeId or 1,
        assetType = v3.assetType or "Image",
        imageId = v3.imageId or 1234567890,
        approved = v3.approved or false
    }));
end;
v1.format = function(v4)
    return (v1.new({
        assetTypeId = v4.assetTypeId,
        assetType = v4.assetType,
        imageId = v4.imageId,
        videoHash = v4.videoHash,
        videoTitle = v4.videoTitle,
        approved = not not v4.approved and v4.approved,
        altText = v4.altText
    }));
end;
v1.isValid = v0.strictInterface({
    assetTypeId = v0.optional(v0.number),
    assetType = v0.string,
    imageId = v0.optional(v0.number),
    videoHash = v0.optional(v0.string),
    videoTitle = v0.optional(v0.string),
    approved = v0.boolean,
    altText = v0.optional(v0.string)
});
return v1;


local v0 = require(script:FindFirstAncestor("RoduxGames").Parent.t);
local v1 = require(script.Parent.CreatorModel);
local v2 = {};
v2.new = function(v3)
    assert(v2.isValid(v3));
    v2.__index = v2;
    setmetatable(v3, v2);
    return v3;
end;
v2.mock = function(v4)
    v4 = v4 or {};
    return (v2.new({
        experienceId = v4.experienceId or "experienceId",
        name = v4.name or "name",
        description = v4.description or "description",
        price = v4.price or 666,
        rootPlaceId = v4.rootPlaceId or "rootPlaceId",
        creator = v1.mock(v4.creator),
        maxPlayers = v4.maxPlayers or 6
    }));
end;
v2.format = function(v5)
    return (v2.new({
        experienceId = tostring(v5.id),
        name = v5.name,
        description = v5.description or "",
        price = v5.price or 0,
        rootPlaceId = tostring(v5.rootPlaceId),
        creator = v1.format(v5.creator),
        maxPlayers = v5.maxPlayers
    }));
end;
v2.isValid = v0.strictInterface({
    experienceId = v0.string,
    name = v0.string,
    description = v0.string,
    price = v0.number,
    rootPlaceId = v0.string,
    creator = v1.isValid,
    maxPlayers = v0.number
});
return v2;


local v0 = require(script:FindFirstAncestor("RoduxGames").Parent.t);
local v1 = {};
v1.new = function(v2)
    assert(v1.isValid(v2));
    v1.__index = v1;
    setmetatable(v2, v1);
    return v2;
end;
v1.mock = function(v3)
    local v4 = v3 or {};
    return (v1.new({
        productId = v4.productId or "productId",
        sellerId = v4.sellerId or "sellerId",
        price = v4.price or 666,
        isForSale = v4.isForSale or true
    }));
end;
v1.format = function(v5)
    return (v1.new({
        productId = tostring(v5.productId),
        sellerId = tostring(v5.sellerId),
        isForSale = v5.isForSale or false,
        price = v5.price or 0
    }));
end;
v1.isValid = v0.strictInterface({
    productId = v0.string,
    sellerId = v0.string,
    price = v0.number,
    isForSale = v0.boolean
});
return v1;


return {
    CreatorModel = require(script.CreatorModel),
    GameModel = require(script.GameModel),
    ProductModel = require(script.ProductModel),
    GameMediaModel = require(script.GameMediaModel)
};


local v0 = require(script:FindFirstAncestor("RoduxGames").Parent.Rodux);
local v1 = require(script.Games.playabilityByGameId);
local v2 = require(script.Games.productInfoByGameId);
local v3 = require(script.Games.byGameId);
local v4 = require(script.Games.mediaByGameId);
return function(v5)
    return v0.combineReducers({
        playabilityByGameId = v1(v5),
        productInfoByGameId = v2(v5),
        byGameId = v3(v5),
        mediaByGameId = v4(v5)
    });
end;


local l_Parent_0 = script.Parent;
local v1 = require(l_Parent_0.RoduxNetworking);
local v2 = require(l_Parent_0.Dash);
local v3 = require(l_Parent_0.NetworkingGames);
local v4 = require(script.Reducers);
local v5 = require(script.Actions);
local v6 = require(script.Models);
local v7 = require(script.Enums);
return {
    config = function(v8)
        v8 = v2.join(v8, {
            networkingGames = v3.config({
                roduxNetworking = v1.mock()
            })
        });
        return {
            installReducer = function()
                return v4(v8);
            end,
            Actions = v5,
            Models = v6,
            Enums = v7
        };
    end
};


local v0 = require(script.Parent.makeRequestApi);
return function(v1)
    return v0(v1, "GET");
end;


local v0 = {};
local v1 = {
    NotStarted = "NotStarted",
    Fetching = "Fetching",
    Done = "Done",
    Failed = "Failed"
};
setmetatable(v0, {
    __newindex = function(_, _, _)
    end,
    __index = function(_, v6)
        assert(v1[v6] ~= nil, "EnumNetworkStatus has no value: " .. tostring(v6));
        return v1[v6];
    end
});
return v0;


return function(v0)
    return "networkStatus:" .. tostring(v0.keyPath);
end;


local l_Parent_0 = script.Parent;
local v1 = require(l_Parent_0.getDeepValue);
local v2 = require(l_Parent_0.EnumNetworkStatus);
return function(v3)
    local l_keyPath_0 = v3.keyPath;
    return function(v5, v6)
        assert(typeof(v5) == "table");
        assert(typeof(v6) == "string");
        assert(#v6 > 0);
        local v7 = v1(v5, l_keyPath_0);
        assert(v7, string.format("Reducer not found for keyPath: %s. Did you forget to call `installReducer`?", l_keyPath_0));
        return v7[v6] or v2.NotStarted;
    end;
end;


return function(v0)
    return {
        getStatus = require(script.getStatus)(v0),
        setStatus = require(script.setStatus)(v0),
        installReducer = require(script.installReducer)(v0),
        Enum = {
            Status = require(script.EnumNetworkStatus)
        }
    };
end;


local v0 = require(script.Parent.Rodux);
local v1 = require(script.Parent.Parent.Cryo);
local v2 = require(script.Parent.buildActionName);
return function(v3)
    return function()
        return v0.createReducer({}, {
            [v2(v3)] = function(v4, v5)
                local v6 = {};
                if #v5.ids == 0 then
                    v6[v5.keymapper()] = v5.status;
                else
                    for _, v8 in ipairs(v5.ids) do
                        v6[v5.keymapper(v8)] = v5.status;
                    end;
                end;
                return v1.Dictionary.join(v4, v6);
            end
        });
    end;
end;


local v0 = require(script.Parent.EnumNetworkStatus);
local v1 = require(script.Parent.buildActionName);
local v2 = require(script.Parent.Promise);
return function(v3)
    local v4 = require(script.Parent.getStatus)(v3);
    local function _(v5, v6, v7)
        return {
            ids = v5,
            keymapper = v6,
            status = v7,
            type = v1(v3)
        };
    end;
    local function v15(v9, v10, v11)
        local v12 = {};
        for _, v14 in ipairs(v10) do
            if v4(v9, v11(v14)) ~= v0.Fetching then
                table.insert(v12, v14);
            end;
        end;
        return v12;
    end;
    return function(v16, v17, v18, v19)
        local v20 = v15(v16:getState(), v17, v18);
        if (v3.killRequestWithFilteredIds and #v17 > 0) and #v20 == 0 then
            return v2.reject("Request with provided IDs already fetching.");
        else
            v16:dispatch({
                ids = v20,
                keymapper = v18,
                status = v0.Fetching,
                type = v1(v3)
            });
            return v19(v16, v20):andThen(function(v21)
                v16:dispatch({
                    ids = v20,
                    keymapper = v18,
                    status = v0.Done,
                    type = v1(v3)
                });
                return v21;
            end, function(v22)
                v16:dispatch({
                    ids = v20,
                    keymapper = v18,
                    status = v0.Failed,
                    type = v1(v3)
                });
                return v2.reject(v22);
            end);
        end;
    end;
end;


local v0 = require(script.Parent.makeRequestApi);
return function(v1)
    return v0(v1, "PATCH");
end;


local v0 = require(script.Parent.makeRequestApi);
return function(v1)
    return v0(v1, "POST");
end;


local v0 = require(script.Parent.Cryo);
local v1 = {};
v1.__index = v1;
v1.new = function(v2, v3, v4)
    return (setmetatable({
        ids = v1.makeArray(v3),
        delimiter = v4
    }, v2));
end;
v1.setIds = function(v5, v6)
    v5.ids = v1.makeArray(v6);
end;
v1.makeArray = function(v7)
    if type(v7) == "table" then
        return v7;
    else
        return {
            v7
        };
    end;
end;
v1.__tostring = function(v8)
    return table.concat(v8.ids, v8.delimiter);
end;
local v9 = {};
v9.__index = v9;
v9.new = function(v10, v11, v12)
    return (setmetatable({
        baseUrl = v11:gsub("/*$", ""),
        keyMapper = nil,
        args = {},
        pathElements = {},
        configurableIds = nil,
        namedIds = {},
        idsDelimiter = ",",
        options = {
            queryArgs = nil,
            postBody = nil
        },
        useExpandedForm = {},
        statusIds = nil,
        additionalData = v12 or {}
    }, v10));
end;
v9.path = function(v13, v14)
    table.insert(v13.pathElements, (v14:gsub("^/", ""):gsub("/$", "")));
    return v13;
end;
v9.id = function(v15, v16, v17)
    if not v17 and #v15.pathElements < 1 then
        warn("Cannot name id or ids because there is no leading path segment and no name is provided");
    end;
    v15.namedIds[v17 or v15.pathElements[#v15.pathElements]] = v16;
    v15.configurableIds = v1:new(v16, v15.idsDelimiter);
    table.insert(v15.pathElements, v15.configurableIds);
    return v15;
end;
v9.queryArgWithIds = function(v18, v19, v20)
    local v21 = v0.List.join(v20, v18.namedIds[v19] or {});
    v18.namedIds[v19] = v21;
    v18.configurableIds = v1:new(v21, v18.idsDelimiter);
    v18.args = v0.Dictionary.join(v18.args, {
        [v19] = v18.configurableIds
    });
    return v18;
end;
v9.expandedQueryArgsWithIds = function(v22, v23, v24)
    v22.useExpandedForm[v23] = true;
    v22:queryArgWithIds(v23, v24);
    return v22;
end;
v9.queryArgs = function(v25, v26)
    v25.args = v0.Dictionary.join(v25.args, v26);
    v25.options.queryArgs = v0.Dictionary.join(v26, v25.options.queryArgs or {});
    return v25;
end;
v9.body = function(v27, v28)
    v27.options.postBody = v28;
    return v27;
end;
v9.makeKeyMapper = function(v29)
    return function(v30)
        return not not v29:getStatusIds() and v29:makeStatusUrl(v30) or v29:makeNamedIdsUrl(v30);
    end;
end;
v9._normalize = function(_, v32)
    return v32:gsub("/+", "/");
end;
v9.makeUri = function(v33)
    local v34 = "";
    for _, v36 in ipairs(v33.pathElements) do
        v34 = v34 .. "/" .. tostring(v36);
    end;
    return v33:_normalize(v34);
end;
local function v37(v38, v39, v40, v41)
    if not v41 then
        local v42 = tostring(v39) .. "=" .. tostring(v40);
        if v38:len() > 1 then
            return v38 .. "&" .. v42;
        else
            return v42;
        end;
    else
        for _, v44 in pairs(v40.ids) do
            v38 = v37(v38, v39, v44);
        end;
        return v38;
    end;
end;
v9.makeQueryArgs = function(v45, v46, v47)
    v45:_plugInConfigurableIds(v46);
    local v48 = "";
    for v49, v50 in pairs(v45.args) do
        if not (not (v47 and v45.namedIds[v49]) and v47) then
            v48 = v37(v48, v49, v50, v45.useExpandedForm[v49]);
        end;
    end;
    if v48:len() > 1 then
        return "?" .. v48;
    else
        return "";
    end;
end;
v9.makeUrl = function(v51, v52, v53)
    v51:_plugInConfigurableIds(v52);
    return v51.baseUrl .. v51:makeUri() .. v51:makeQueryArgs(v52, v53);
end;
v9.makeStatusUrl = function(v54, v55)
    local v56 = v54.baseUrl .. v54:makeUri();
    if v55 then
        v55 = type(v55) == "table" and v55 or {
            v55
        };
        local v57 = "";
        for v58, v59 in pairs(v55) do
            v57 = v58 > 1 and v57 .. "&" .. v59 or v59;
        end;
        return v56 .. "?" .. v57;
    else
        return v56;
    end;
end;
v9.makeNamedIdsUrl = function(v60, v61)
    return v60:makeUrl(v61, true);
end;
v9.makeOptions = function(v62)
    return v62.options;
end;
v9._plugInConfigurableIds = function(v63, v64)
    if not (not (v64 ~= nil) or not v63.configurableIds) then
        v63.configurableIds:setIds(v64);
    end;
end;
v9.getIds = function(v65)
    if not v65.configurableIds or not v65.configurableIds.ids then
        if not v65.statusIds then
            return {};
        else
            return v65.statusIds;
        end;
    else
        return v65.configurableIds.ids;
    end;
end;
v9.getNamedIds = function(v66)
    return v66.namedIds;
end;
v9.setStatusIds = function(v67, v68)
    if not v67.configurableIds then
        v67.statusIds = v0.List.join(v67.statusIds or {}, v68);
        return v67;
    else
        warn("Cannot set statusIds because ids already provided in URl");
        return v67;
    end;
end;
v9.getStatusIds = function(v69)
    if not v69.configurableIds then
        return v69.statusIds;
    else
        return nil;
    end;
end;
v9.getAdditionalData = function(v70)
    return v70.additionalData or {};
end;
return v9;


local v0 = require(script.Parent.GET);
local v1 = require(script.Parent.POST);
local v2 = require(script.Parent.PATCH);
local v3 = {};
v3.__index = v3;
v3.new = function(v4)
    assert(v4, "Expected options to be passed into RoduxNetworking");
    assert(v4.keyPath, "Expected options.keyPath to be passed into RoduxNetworking");
    assert(v4.networkImpl, "Expected options.networkImpl to be passed into RoduxNetworking");
    return (setmetatable({
        options = v4
    }, v3));
end;
v3.GET = function(v5, v6, v7)
    assert(v6, "RoduxNetworking:GET expects moduleScript argument");
    assert(v6, "RoduxNetworking:GET expects constructBuilderFunction argument");
    return v0(v5.options)(v6, v7);
end;
v3.POST = function(v8, ...)
    return v1(v8.options)(...);
end;
v3.PATCH = function(v9, ...)
    return v2(v9.options)(...);
end;
v3.getNetworkImpl = function(v10)
    return v10.options.networkImpl;
end;
v3.setNetworkImpl = function(v11, v12)
    v11.options.networkImpl = v12;
end;
return v3;


local v0 = require(script.RoduxNetworking);
local v1 = require(script.NetworkStatus);
return {
    config = function(v2)
        local v3 = v0.new(v2);
        local v4 = v1(v2);
        return {
            GET = function(...)
                return v3:GET(...);
            end,
            POST = function(...)
                return v3:POST(...);
            end,
            PATCH = function(...)
                return v3:PATCH(...);
            end,
            getNetworkImpl = function()
                return v3:getNetworkImpl();
            end,
            setNetworkImpl = function(...)
                v3:setNetworkImpl(...);
            end,
            installReducer = v4.installReducer,
            Enum = {
                NetworkStatus = v4.Enum.Status
            }
        };
    end,
    mock = require(script.mockRoduxNetworking)
};


local v0 = require(script.Parent.makeActionCreator);
local function v4(v1)
    local v2 = v0(v1);
    local function v3()
    end;
    v2.API = function()
        return v2.Succeeded();
    end;
    v2.Mock = {
        reply = v3,
        clear = v3,
        replyWithError = v3
    };
    return v2;
end;
return function()
    return {
        GET = v4,
        POST = v4,
        PATCH = v4
    };
end;


return {
    config = function(v0)
        v0 = v0 or {};
        local v1 = v0.state or {};
        return {
            dispatch = v0.dispatch or function(v2, v3)
                if type(v3) == "function" then
                    v3(v2);
                end;
            end,
            getState = function()
                return v1;
            end,
            setState = function(_, v5)
                v1 = v5;
            end
        };
    end
};


return function(_)
    return {
        ReceivedUserPresence = require(script.ReceivedUserPresence),
        ActionDomain = require(script.ActionDomain)
    };
end;


return require(script:FindFirstAncestor("RoduxPresence").Parent.enumerate)(script.Name, {
    Offline = 0,
    Online = 1,
    InGame = 2,
    InStudio = 3
});


local l_script_FirstAncestor_0 = script:FindFirstAncestor("RoduxPresence");
local l_Parent_0 = l_script_FirstAncestor_0.Parent;
local v2 = require(l_Parent_0.Cryo);
local v3 = require(l_Parent_0.t);
local v4 = require(l_script_FirstAncestor_0.Enums);
local v5 = {};
v5.new = function(v6)
    assert(v5.isValid(v6));
    v5.__index = v5;
    setmetatable(v6, v5);
    return v6;
end;
v5.mock = function(v7)
    v7 = v7 or {};
    return (v5.new({
        userPresenceType = v7.userPresenceType or 0,
        lastLocation = v7.lastLocation or "LastLocation",
        placeId = v7.placeId or 123,
        rootPlaceId = v7.rootPlaceId or 234,
        gameId = v7.gameId or "Game-OoooOO-Id",
        universeId = v7.universeId or 345,
        userId = v7.userId or 456,
        lastOnline = v7.lastOnline or "LastOnline-OOOoOO"
    }));
end;
v5.format = function(v8)
    return v2.Dictionary.join(v8, {
        userPresenceType = v4.PresenceType.fromRawValue(v8.userPresenceType)
    });
end;
v5.isValid = v3.interface({
    userPresenceType = v3.numberConstrained(0, 3),
    lastLocation = v3.string,
    placeId = v3.optional(v3.union(v3.numberPositive, v3.string)),
    rootPlaceId = v3.optional(v3.union(v3.numberPositive, v3.string)),
    gameId = v3.optional(v3.string),
    universeId = v3.optional(v3.union(v3.numberPositive, v3.string)),
    userId = v3.union(v3.numberPositive, v3.string),
    lastOnline = v3.string
});
return v5;


local v0 = require(script.Parent.createReducerSlice);
return function(v1)
    return v0("byGameId", "universeId", v1);
end;


local v0 = require(script.Parent.createReducerSlice);
return function(v1)
    return v0("byGameInstanceId", "gameId", v1);
end;


local v0 = require(script.Parent.createReducerSlice);
return function(v1)
    return v0("byPlaceId", "placeId", v1);
end;


local v0 = require(script.Presence.byUserId);
local v1 = require(script.Presence.byGameId);
local v2 = require(script.Presence.byGameInstanceId);
local v3 = require(script.Presence.byPlaceId);
return function(v4)
    return function(v5, v6)
        local v7 = v5 or {
            byUserId = {},
            byGameInstanceId = {},
            byGameId = {},
            byPlaceId = {}
        };
        return {
            byUserId = v0(v4)(v7.byUserId, v6),
            byGameInstanceId = v2(v4)(v7, v6),
            byGameId = v1(v4)(v7, v6),
            byPlaceId = v3(v4)(v7, v6)
        };
    end;
end;


local v0 = require(script:FindFirstAncestor("RoduxPresence").getDeepValue);
return function(v1)
    local l_keyPath_0 = v1.keyPath;
    return function(v3, v4)
        return v0(v3, l_keyPath_0 .. ".byUserId")[v4];
    end;
end;


local v0 = require(script.getUserPresenceByUserId);
return function(v1)
    return {
        getUserPresenceByUserId = v0(v1)
    };
end;


local l_Parent_0 = script.Parent;
local v1 = require(l_Parent_0.Cryo);
local v2 = require(l_Parent_0.RoduxNetworking);
local v3 = require(l_Parent_0.NetworkingPresence);
local v4 = require(script.Reducer);
local v5 = require(script.Actions);
local v6 = require(script.Selectors);
local v7 = require(script.Models);
local v8 = require(script.Enums);
return {
    config = function(v9)
        v9 = v1.Dictionary.join(v9, {
            presenceNetworking = v3.config({
                roduxNetworking = v2.mock()
            })
        });
        return {
            installReducer = function()
                return v4(v9);
            end,
            Actions = v5(v9),
            Selectors = v6(v9),
            Models = v7,
            Enums = v8
        };
    end
};


return require(script:FindFirstAncestor("RoduxPresence").Parent.enumerate)(script.Name, {
    Offline = 0,
    Online = 1,
    InGame = 2,
    InStudio = 3,
    Invisible = 4
});


local l_script_FirstAncestor_0 = script:FindFirstAncestor("RoduxPresence");
local l_Parent_0 = l_script_FirstAncestor_0.Parent;
local v2 = require(l_Parent_0.Cryo);
local v3 = require(l_Parent_0.t);
local v4 = require(l_script_FirstAncestor_0.Enums);
local v5 = {};
v5.new = function(v6)
    assert(v5.isValid(v6));
    v5.__index = v5;
    setmetatable(v6, v5);
    return v6;
end;
v5.mock = function(v7)
    v7 = v7 or {};
    return (v5.new({
        gameId = v7.gameId or "Game-OoooOO-Id",
        invisibleModeExpiry = v7.invisibleModeExpiry or "2061-01-01T00:00:00Z",
        lastLocation = v7.lastLocation or "LastLocation",
        lastOnline = v7.lastOnline or "LastOnline-OOOoOO",
        placeId = v7.placeId or 123,
        rootPlaceId = v7.rootPlaceId or 234,
        universeId = v7.universeId or 345,
        userId = v7.userId or 456,
        userPresenceType = v7.userPresenceType or 0
    }));
end;
v5.format = function(v8)
    return v2.Dictionary.join(v8, {
        userPresenceType = v4.PresenceType.fromRawValue(v8.userPresenceType)
    });
end;
v5.isValid = v3.interface({
    gameId = v3.optional(v3.string),
    invisibleModeExpiry = v3.optional(v3.string),
    lastLocation = v3.string,
    lastOnline = v3.string,
    placeId = v3.optional(v3.union(v3.numberPositive, v3.string)),
    rootPlaceId = v3.optional(v3.union(v3.numberPositive, v3.string)),
    universeId = v3.optional(v3.union(v3.numberPositive, v3.string)),
    userId = v3.union(v3.numberPositive, v3.string),
    userPresenceType = function(v9)
        return v4.PresenceType.fromRawValue(v9) ~= nil;
    end
});
return v5;


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


return require(script:FindFirstAncestor("RoduxShareLinks").Parent.Rodux).makeActionCreator(script.Name, function(v0)
    return {
        shareInviteLink = v0
    };
end);


return {
    SetShareInviteLink = require(script.SetShareInviteLink),
    ClearShareInviteLink = require(script.ClearShareInviteLink)
};


return require(script.Parent.Parent.Parent.enumerate)(script.Name, {
    Expired = "Expired",
    InviterNotInExperience = "InviterNotInExperience",
    Valid = "Valid"
});


return require(script.Parent.Parent.Parent.enumerate)(script.Name, {
    Invalid = "Invalid"
});


return require(script.Parent.Parent.Parent.enumerate)(script.Name, {
    Unset = "Unset",
    ExperienceInvite = "ExperienceInvite",
    FriendInvite = "FriendInvite",
    ScreenshotInvite = "ScreenshotInvite"
});


return {
    ExperienceInviteStatus = require(script.ExperienceInviteStatus),
    LinkStatus = require(script.LinkStatus),
    LinkType = require(script.LinkType)
};


local v0 = require(script:FindFirstAncestor("RoduxShareLinks").Parent.Rodux);
local v1 = require(script.Invites);
return function(v2)
    return v0.combineReducers({
        Invites = v1(v2)
    });
end;


local v0 = require(script.Reducers);
local v1 = require(script.Actions);
local v2 = require(script.Models);
local v3 = require(script.Enums);
local l_Parent_0 = script.Parent;
local v5 = require(l_Parent_0.Cryo);
local v6 = require(l_Parent_0.RoduxNetworking);
local v7 = require(l_Parent_0.ShareLinksNetworking);
return {
    config = function(v8)
        v8 = v5.Dictionary.join(v8, {
            shareLinksNetworking = v7.config({
                roduxNetworking = v6.mock()
            })
        });
        return {
            installReducer = function()
                return v0(v8);
            end,
            Actions = v1,
            Models = v2,
            Enums = v3
        };
    end
};


return require(script:FindFirstAncestor("RoduxSquads").Parent.Rodux).makeActionCreator(script.Name, function(v0)
    return {
        payload = {
            experienceInvite = v0
        }
    };
end);


return require(script:FindFirstAncestor("RoduxSquads").Parent.Rodux).makeActionCreator(script.Name, function(v0)
    return {
        payload = {
            squad = v0
        }
    };
end);


return require(script:FindFirstAncestor("RoduxSquads").Parent.Rodux).makeActionCreator(script.Name, function(v0)
    return {
        payload = {
            partialSquad = v0
        }
    };
end);


return require(script:FindFirstAncestor("RoduxSquads").Parent.Rodux).makeActionCreator(script.Name, function(v0)
    return {
        payload = {
            channelId = v0
        }
    };
end);


return {
    CurrentExperienceInviteUpdated = require(script.CurrentExperienceInviteUpdated),
    CurrentSquadUpdated = require(script.CurrentSquadUpdated),
    PartialSquadAdded = require(script.PartialSquadAdded),
    PartialSquadRemoved = require(script.PartialSquadRemoved)
};


return {
    Undecided = "Undecided",
    Reserved = "Reserved",
    ReservationFailed = "ReservationFailed"
};


return {
    Initializing = "Initializing",
    Active = "Active",
    Cancelled = "Cancelled",
    Reserving = "Reserving",
    ReservationEnded = "ReservationEnded"
};


return {
    Accept = "Accept",
    Dismiss = "Dismiss",
    Decline = "Decline",
    Cancel = "Cancel"
};


return {
    ExperienceDetailResultStatus = require(script.ExperienceDetailResultStatus),
    ExperienceInviteState = require(script.ExperienceInviteState),
    ExperienceInviteVoteType = require(script.ExperienceInviteVoteType),
    MembershipEntityType = require(script.MembershipEntityType)
};


local l_script_FirstAncestor_0 = script:FindFirstAncestor("RoduxSquads");
local v1 = require(l_script_FirstAncestor_0.Parent.t);
local v2 = require(l_script_FirstAncestor_0.Enums.ExperienceDetailResultStatus);
local v3 = require(l_script_FirstAncestor_0.Enums.ExperienceInviteState);
local v4 = require(l_script_FirstAncestor_0.Enums.ExperienceInviteVoteType);
local v5 = require(l_script_FirstAncestor_0.Enums.MembershipEntityType);
local function _(v6)
    local v7 = 0;
    for v8 = 1, #v6 do
        if v6[v8].voteType == "Accepted" then
            v7 = v7 + 1;
        end;
    end;
    return v7;
end;
local v10 = {};
v10.new = function(v11)
    assert(v10.isValid(v11));
    v10.__index = v10;
    setmetatable(v11, v10);
    return v11;
end;
v10.mock = function(v12)
    v12 = v12 or {};
    local v13 = v12.votes or {
        [1] = {
            userId = 456,
            voteType = v4.Accept
        }
    };
    local v14 = 0;
    for v15 = 1, #v13 do
        if v13[v15].voteType == "Accepted" then
            v14 = v14 + 1;
        end;
    end;
    return (v10.new({
        experienceInviteId = v12.experienceInviteId or "987",
        version = v12.version or 1,
        inviterId = v12.inviterId or 123456,
        membershipEntityType = v12.membershipEntityType or v5.GroupUp,
        membershipEntityId = v12.membershipEntityId or "54321",
        createdUtcMs = v12.createdUtcMs or 1665988271,
        experienceDetail = v12.experienceDetail or {
            placeId = 15308759682,
            experienceResultStatus = v2.Reserved
        },
        totalSpots = v12.totalSpots or 6,
        spotsTaken = v14,
        state = v12.state or v3.Active,
        votes = v13
    }));
end;
v10.format = function(v16)
    local v17 = not not v16.votes and v16.votes or v16.Votes;
    local l_new_0 = v10.new;
    local v19 = {
        experienceInviteId = not not v16.experienceInviteId and v16.experienceInviteId or v16.ExperienceInviteId,
        version = not not v16.version and v16.version or v16.Version,
        inviterId = not not v16.inviterId and v16.inviterId or v16.InviterId,
        membershipEntityType = not not v16.membershipEntityType and v16.membershipEntityType or v16.MembershipEntityType,
        membershipEntityId = not not v16.membershipEntityId and v16.membershipEntityId or v16.MembershipEntityId,
        createdUtcMs = not not v16.createdUtcMs and v16.createdUtcMs or v16.CreatedUtcMs,
        experienceDetail = not not v16.experienceDetail and v16.experienceDetail or v16.ExperienceDetail,
        totalSpots = not not v16.totalSpots and v16.totalSpots or v16.TotalSpots
    };
    local v20 = 0;
    for v21 = 1, #v17 do
        if v17[v21].voteType == "Accepted" then
            v20 = v20 + 1;
        end;
    end;
    v19.spotsTaken = v20;
    v19.state = not not v16.state and v16.state or v16.State;
    v19.votes = v17;
    return (l_new_0(v19));
end;
v10.isValid = v1.strictInterface({
    experienceInviteId = v1.string,
    version = v1.number,
    inviterId = v1.number,
    membershipEntityType = v1.string,
    membershipEntityId = v1.string,
    createdUtcMs = v1.number,
    experienceDetail = v1.strictInterface({
        placeId = v1.number,
        experienceResultStatus = v1.string
    }),
    totalSpots = v1.number,
    spotsTaken = v1.number,
    state = v1.string,
    votes = v1.array(v1.strictInterface({
        userId = v1.number,
        voteType = v1.string
    }))
});
return v10;


local v0 = require(script:FindFirstAncestor("RoduxSquads").Parent.t);
local v1 = {};
v1.new = function(v2)
    assert(v1.isValid(v2));
    v1.__index = v1;
    setmetatable(v2, v1);
    return v2;
end;
v1.mock = function(v3)
    v3 = v3 or {};
    return (v1.new({
        channelId = v3.channelId or "23456",
        members = v3.members or {
            "12345"
        }
    }));
end;
v1.format = function(v4)
    return (v1.new({
        channelId = v4.channelId,
        members = v4.members
    }));
end;
v1.isValid = v0.strictInterface({
    channelId = v0.string,
    members = v0.array(v0.string)
});
return v1;


local v0 = require(script:FindFirstAncestor("RoduxSquads").Parent.t);
local v1 = {};
v1.new = function(v2)
    assert(v1.isValid(v2));
    v1.__index = v1;
    setmetatable(v2, v1);
    return v2;
end;
v1.mock = function(v3)
    v3 = v3 or {};
    return (v1.new({
        userId = v3.userId or 1234,
        rank = v3.rank or 0
    }));
end;
v1.format = function(v4)
    return (v1.new({
        userId = v4.userId,
        rank = v4.rank
    }));
end;
v1.isValid = v0.strictInterface({
    userId = v0.number,
    rank = v0.number
});
return v1;


local l_Parent_0 = script:FindFirstAncestor("RoduxSquads").Parent;
local v1 = require(script.Parent.SquadMemberModel);
local v2 = require(l_Parent_0.Cryo);
local v3 = require(l_Parent_0.t);
local v4 = {};
v4.new = function(v5)
    assert(v4.isValid(v5));
    v4.__index = v4;
    setmetatable(v5, v4);
    return v5;
end;
v4.mock = function(v6)
    v6 = v6 or {};
    return (v4.new({
        squadId = v6.squadId or "12345",
        initiatorId = v6.initiatorId or 54321,
        createdUtc = v6.createdUtc or 1666635183,
        channelId = v6.channelId or "23456",
        members = v2.List.map(v6.members or {
            {
                userId = 1234,
                rank = 0
            }
        }, function(v7)
            return v1.mock(v7);
        end)
    }));
end;
v4.format = function(v8)
    return (v4.new({
        squadId = v8.squadId,
        initiatorId = v8.initiatorId,
        createdUtc = v8.createdUtc,
        channelId = v8.channelId,
        members = v2.List.map(v8.members, function(v9)
            return v1.format(v9);
        end)
    }));
end;
v4.isValid = v3.strictInterface({
    squadId = v3.string,
    initiatorId = v3.number,
    createdUtc = v3.number,
    channelId = v3.string,
    members = v3.array(v1.isValid)
});
return v4;


return {
    ExperienceInviteModel = require(script.ExperienceInviteModel),
    PartialSquadModel = require(script.PartialSquadModel),
    SquadModel = require(script.SquadModel),
    SquadMemberModel = require(script.SquadMemberModel)
};


local v0 = require(script:FindFirstAncestor("RoduxSquads").Parent.Rodux);
local v1 = require(script.currentSquad);
local v2 = require(script.currentExperienceInvite);
local v3 = require(script.partialSquads);
return function(v4)
    return v0.combineReducers({
        currentSquad = v1(v4),
        currentExperienceInvite = v2(v4),
        partialSquads = v3()
    });
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("RoduxSquads");
local l_Parent_0 = l_script_FirstAncestor_0.Parent;
local v2 = require(l_Parent_0.Cryo);
local v3 = require(l_Parent_0.Rodux);
local l_PartialSquadAdded_0 = require(l_script_FirstAncestor_0.Actions).PartialSquadAdded;
local l_PartialSquadRemoved_0 = require(l_script_FirstAncestor_0.Actions).PartialSquadRemoved;
local l_PartialSquadModel_0 = require(l_script_FirstAncestor_0.Models).PartialSquadModel;
local _ = require(script.Parent.Parent.RoduxSquadsTypes);
local v8 = {};
return function()
    return v3.createReducer(v8, {
        [l_PartialSquadAdded_0.name] = function(v9, v10)
            local v11 = l_PartialSquadModel_0.format(v10.payload.partialSquad);
            return v2.Dictionary.join(v9, {
                [v11.channelId] = v11
            });
        end,
        [l_PartialSquadRemoved_0.name] = function(v12, v13)
            return v2.Dictionary.join(v12, {
                [v13.payload.channelId] = v2.None
            });
        end
    });
end;


local v0 = require(script.Reducers);
local v1 = require(script.Actions);
local v2 = require(script.Models);
local v3 = require(script.Enums);
local l_Parent_0 = script.Parent;
local v5 = require(l_Parent_0.Cryo);
local v6 = require(l_Parent_0.RoduxNetworking);
local v7 = require(l_Parent_0.NetworkingSquads);
return {
    config = function(v8)
        v8 = v5.Dictionary.join(v8, {
            NetworkingSquads = v7.config({
                roduxNetworking = v6.mock()
            })
        });
        return {
            installReducer = function()
                return v0(v8);
            end,
            Actions = v1,
            Models = v2,
            Enums = v3
        };
    end
};


local l_Parent_0 = script.Parent.Parent;
local l_Types_0 = l_Parent_0.Types;
local v2 = require(l_Parent_0.Reducers.isPhoneVerified);
local v3 = require(l_Parent_0.Reducers.userSettings);
local v4 = require(l_Parent_0.Reducers.userSettingsMetadata);
local _ = require(l_Types_0.ReducerTypes);
local v6 = {
    isPhoneVerified = false,
    userSettings = {},
    userSettingsMetadata = {}
};
return function(v7)
    return function(v8, v9)
        local v10 = v8 or v6;
        return {
            isPhoneVerified = v2(v7)(v10.isPhoneVerified, v9),
            userSettings = v3(v7)(v10.userSettings, v9),
            userSettingsMetadata = v4(v7)(v10.userSettingsMetadata, v9)
        };
    end;
end;


local l_Parent_0 = script.Parent;
local v1 = require(l_Parent_0.Dash);
local v2 = require(l_Parent_0.RoduxNetworking);
local v3 = require(l_Parent_0.NetworkingUserSettings);
local v4 = require(l_Parent_0.NetworkingAccountInformation);
local v5 = require(script.Reducers.UserPermissionsReducer);
return {
    config = function(v6)
        v6 = v1.join(v6, {
            networkingUserSettings = v3.config({
                roduxNetworking = v2.mock()
            }),
            networkingAccountInformation = v4.config({
                roduxNetworking = v2.mock()
            })
        });
        return {
            installReducer = function()
                return v5(v6);
            end
        };
    end
};


return require(script:FindFirstAncestor("RoduxUsers").Parent.Rodux).makeActionCreator(script.Name, function(v0)
    return {
        payload = {
            id = v0
        }
    };
end);


return require(script:FindFirstAncestor("RoduxUsers").Parent.Rodux).makeActionCreator(script.Name, function(v0)
    return {
        payload = v0
    };
end);


return {
    UserRemoved = require(script.UserRemoved),
    UserUpdated = require(script.UserUpdated)
};


game:DefineFastFlag("EnableHasVerifiedBadgeUserModelValidation", false);
local v0 = require(script.Parent.MockId);
local v1 = {};
v1.new = function(v2)
    assert(v1.isValid(v2));
    v1.__index = v1;
    setmetatable(v2, v1);
    return v2;
end;
v1.mock = function(v3)
    v3 = v3 or {};
    return (v1.new({
        id = v3.id or v0(),
        username = v3.username or "UN_" .. tostring(math.random(100000, 99999999)),
        displayName = v3.displayName or "DN_" .. tostring(math.random(100000, 99999999)),
        hasVerifiedBadge = v3.hasVerifiedBadge or false,
        created = v3.created or ""
    }));
end;
v1.isValid = function(v4)
    if v4 then
        if v4.id then
            if not (v4.id ~= "0") or v4.username then
                if v4.displayName then
                    if game:GetFastFlag("EnableHasVerifiedBadgeUserModelValidation") and v4.hasVerifiedBadge == nil then
                        return false, "Expected user's hasVerifiedBadge to be given";
                    else
                        return true, "Valid UserModel";
                    end;
                else
                    return false, "Expected user's displayName to be given";
                end;
            else
                return false, "Expected user's username to be given";
            end;
        else
            return false, "Expected user's id to be given";
        end;
    else
        return false, "Expected user information to be given";
    end;
end;
v1.isEqual = function(v5, v6)
    if not game:GetFastFlag("EnableHasVerifiedBadgeUserModelValidation") then
        local v7 = false;
        if v5.id == v6.id then
            v7 = false;
            if v5.username == v6.username then
                v7 = v5.displayName == v6.displayName;
            end;
        end;
        return v7;
    else
        local v8 = false;
        if v5.id == v6.id then
            v8 = false;
            if v5.username == v6.username then
                v8 = false;
                if v5.displayName == v6.displayName then
                    v8 = v5.hasVerifiedBadge == v6.hasVerifiedBadge;
                end;
            end;
        end;
        return v8;
    end;
end;
return v1;


local v0 = require(script:FindFirstAncestor("RoduxUsers").Parent.Rodux);
local v1 = require(script.Users.byUserId);
local v2 = require(script.Users.byUsername);
return function(v3)
    return v0.combineReducers({
        byUserId = v1(v3),
        byUsername = v2(v3)
    });
end;


local v0 = require(script.Reducers);
local v1 = require(script.Actions);
local v2 = require(script.Models);
local l_Parent_0 = script.Parent;
local v4 = require(l_Parent_0.Cryo);
local v5 = require(l_Parent_0.RoduxNetworking);
local v6 = require(l_Parent_0.FriendsNetworking);
local v7 = require(l_Parent_0.UsersNetworking);
local v8 = require(script.roduxUsersTypes);
return {
    config = function(v9)
        v9 = v4.Dictionary.join(v9, {
            usersNetworking = v7.config({
                roduxNetworking = v5.mock()
            }),
            friendsNetworking = v6.config({
                roduxNetworking = v5.mock()
            })
        });
        return {
            installReducer = function()
                return v0(v9);
            end,
            Actions = v1,
            Models = v2,
            roduxUsersTypes = v8
        };
    end
};


return function(v0)
    local l_describeError_0 = require(script.Parent.Parent.Shared).describeError;
    local v2 = require(script.Parent.SchedulerFeatureFlags);
    local l_enableSchedulerDebugging_0 = v2.enableSchedulerDebugging;
    local l_enableProfiling_0 = v2.enableProfiling;
    local v5 = v0 or require(script.Parent.SchedulerHostConfig);
    local l_requestHostCallback_0 = v5.requestHostCallback;
    local l_requestHostTimeout_0 = v5.requestHostTimeout;
    local l_cancelHostTimeout_0 = v5.cancelHostTimeout;
    local l_shouldYieldToHost_0 = v5.shouldYieldToHost;
    local l_getCurrentTime_0 = v5.getCurrentTime;
    local l_forceFrameRate_0 = v5.forceFrameRate;
    local l_requestPaint_0 = v5.requestPaint;
    local v13 = nil;
    local v14 = nil;
    local v15 = nil;
    local function _(v16, v17)
        local v18 = #v16 + 1;
        v16[v18] = v17;
        v14(v16, v17, v18);
    end;
    local function _(v20)
        return v20[1];
    end;
    local function _(v22)
        local v23 = v22[1];
        if v23 ~= nil then
            local v24 = v22[#v22];
            v22[#v22] = nil;
            if v24 ~= v23 then
                v22[1] = v24;
                v15(v22, v24, 1);
            end;
            return v23;
        else
            return nil;
        end;
    end;
    v14 = function(v26, v27, v28)
        while true do
            local v29 = math.floor(v28 / 2);
            local v30 = v26[v29];
            if v30 ~= nil and v13(v30, v27) > 0 then
                v26[v29] = v27;
                v26[v28] = v30;
                v28 = v29;
            else
                break;
            end;
        end;
    end;
    v15 = function(v31, v32, v33)
        local v34 = #v31;
        while true do
            if v33 < v34 then
                local v35 = v33 * 2;
                local v36 = v31[v35];
                local v37 = v35 + 1;
                local v38 = v31[v37];
                if v36 ~= nil and v13(v36, v32) < 0 then
                    if v38 ~= nil and v13(v38, v36) < 0 then
                        v31[v33] = v38;
                        v31[v37] = v32;
                        v33 = v37;
                    else
                        v31[v33] = v36;
                        v31[v35] = v32;
                        v33 = v35;
                    end;
                elseif v38 ~= nil and v13(v38, v32) < 0 then
                    v31[v33] = v38;
                    v31[v37] = v32;
                    v33 = v37;
                else
                    return ;
                end;
            else
                return ;
            end;
        end;
    end;
    v13 = function(v39, v40)
        local v41 = v39.sortIndex - v40.sortIndex;
        if v41 == 0 then
            return v39.id - v40.id;
        else
            return v41;
        end;
    end;
    local v42 = require(script.Parent.SchedulerPriorities);
    local l_ImmediatePriority_0 = v42.ImmediatePriority;
    local l_UserBlockingPriority_0 = v42.UserBlockingPriority;
    local l_NormalPriority_0 = v42.NormalPriority;
    local l_LowPriority_0 = v42.LowPriority;
    local l_IdlePriority_0 = v42.IdlePriority;
    local v48 = require(script.Parent.SchedulerProfiling);
    local l_markTaskRun_0 = v48.markTaskRun;
    local l_markTaskYield_0 = v48.markTaskYield;
    local l_markTaskCompleted_0 = v48.markTaskCompleted;
    local l_markTaskCanceled_0 = v48.markTaskCanceled;
    local l_markTaskErrored_0 = v48.markTaskErrored;
    local l_markSchedulerSuspended_0 = v48.markSchedulerSuspended;
    local l_markSchedulerUnsuspended_0 = v48.markSchedulerUnsuspended;
    local l_markTaskStart_0 = v48.markTaskStart;
    local l_stopLoggingProfilingEvents_0 = v48.stopLoggingProfilingEvents;
    local l_startLoggingProfilingEvents_0 = v48.startLoggingProfilingEvents;
    local v59 = {};
    local v60 = {};
    local v61 = 1;
    local v62 = false;
    local v63 = nil;
    local l_l_NormalPriority_0_0 = l_NormalPriority_0;
    local v65 = false;
    local v66 = false;
    local v67 = false;
    local v68 = nil;
    local v69 = nil;
    local v70 = nil;
    local function v80(v71)
        local v72 = v60[1];
        while true do
            if v72 ~= nil then
                if v72.callback == nil then
                    local l_v60_0 = v60;
                    local v74 = l_v60_0[1];
                    if v74 ~= nil then
                        local v75 = l_v60_0[#l_v60_0];
                        l_v60_0[#l_v60_0] = nil;
                        if v75 ~= v74 then
                            l_v60_0[1] = v75;
                            v15(l_v60_0, v75, 1);
                        end;
                    end;
                elseif v72.startTime <= v71 then
                    local l_v60_1 = v60;
                    local v77 = l_v60_1[1];
                    if v77 ~= nil then
                        local v78 = l_v60_1[#l_v60_1];
                        l_v60_1[#l_v60_1] = nil;
                        if v78 ~= v77 then
                            l_v60_1[1] = v78;
                            v15(l_v60_1, v78, 1);
                        end;
                    end;
                    v72.sortIndex = v72.expirationTime;
                    l_v60_1 = v59;
                    v77 = v72;
                    local v79 = #l_v60_1 + 1;
                    l_v60_1[v79] = v77;
                    v14(l_v60_1, v77, v79);
                    if l_enableProfiling_0 then
                        l_markTaskStart_0(v72, v71);
                        v72.isQueued = true;
                    end;
                else
                    return ;
                end;
                v72 = v60[1];
            else
                return ;
            end;
        end;
    end;
    v68 = function(v81)
        v67 = false;
        v80(v81);
        if not v66 then
            if v59[1] ~= nil then
                v66 = true;
                l_requestHostCallback_0(v69);
                return ;
            else
                local v82 = v60[1];
                if v82 ~= nil then
                    l_requestHostTimeout_0(v68, v82.startTime - v81);
                end;
            end;
        end;
    end;
    v69 = function(v83, v84)
        if l_enableProfiling_0 then
            l_markSchedulerUnsuspended_0(v84);
        end;
        v66 = false;
        if v67 then
            v67 = false;
            l_cancelHostTimeout_0();
        end;
        v65 = true;
        local l_l_l_NormalPriority_0_0_0 = l_l_NormalPriority_0_0;
        local v86 = nil;
        local v87 = nil;
        if _G.__YOLO__ then
            v86 = true;
            v87 = v70(v83, v84);
        elseif not l_enableProfiling_0 then
            v86 = true;
            v87 = v70(v83, v84);
        else
            local v88, v89 = xpcall(v70, l_describeError_0, v83, v84);
            v86 = v88;
            v87 = v89;
            if not v86 and v63 ~= nil then
                l_markTaskErrored_0(v63, (l_getCurrentTime_0()));
                v63.isQueued = false;
            end;
        end;
        v63 = nil;
        l_l_NormalPriority_0_0 = l_l_l_NormalPriority_0_0_0;
        v65 = false;
        if l_enableProfiling_0 then
            l_markSchedulerSuspended_0((l_getCurrentTime_0()));
        end;
        if not v86 then
            error(v87);
        end;
        return v87;
    end;
    v70 = function(v90, v91)
        local l_v91_0 = v91;
        v80(l_v91_0);
        v63 = v59[1];
        while not ((not (v63 ~= nil) or l_enableSchedulerDebugging_0 and v62) or l_v91_0 < v63.expirationTime and (not v90 or l_shouldYieldToHost_0())) do
            local l_callback_0 = v63.callback;
            if typeof(l_callback_0) == "function" then
                v63.callback = nil;
                l_l_NormalPriority_0_0 = v63.priorityLevel;
                local v94 = v63.expirationTime <= l_v91_0;
                l_markTaskRun_0(v63, l_v91_0);
                local v95 = l_callback_0(v94);
                l_v91_0 = l_getCurrentTime_0();
                if typeof(v95) == "function" then
                    v63.callback = v95;
                    l_markTaskYield_0(v63, l_v91_0);
                else
                    if l_enableProfiling_0 then
                        l_markTaskCompleted_0(v63, l_v91_0);
                        v63.isQueued = false;
                    end;
                    if v63 == v59[1] then
                        local l_v59_0 = v59;
                        local v97 = l_v59_0[1];
                        if v97 ~= nil then
                            local v98 = l_v59_0[#l_v59_0];
                            l_v59_0[#l_v59_0] = nil;
                            if v98 ~= v97 then
                                l_v59_0[1] = v98;
                                v15(l_v59_0, v98, 1);
                            end;
                        end;
                    end;
                end;
                v80(l_v91_0);
            else
                local l_v59_1 = v59;
                local v100 = l_v59_1[1];
                if v100 ~= nil then
                    local v101 = l_v59_1[#l_v59_1];
                    l_v59_1[#l_v59_1] = nil;
                    if v101 ~= v100 then
                        l_v59_1[1] = v101;
                        v15(l_v59_1, v101, 1);
                    end;
                end;
            end;
            v63 = v59[1];
        end;
        if v63 ~= nil then
            return true;
        else
            local v102 = v60[1];
            if v102 ~= nil then
                l_requestHostTimeout_0(v68, v102.startTime - l_v91_0);
            end;
            return false;
        end;
    end;
    return {
        unstable_ImmediatePriority = l_ImmediatePriority_0,
        unstable_UserBlockingPriority = l_UserBlockingPriority_0,
        unstable_NormalPriority = l_NormalPriority_0,
        unstable_IdlePriority = l_IdlePriority_0,
        unstable_LowPriority = l_LowPriority_0,
        unstable_runWithPriority = function(v103, v104)
            if not (not (((v103 ~= l_ImmediatePriority_0 and v103 ~= l_UserBlockingPriority_0) and v103 ~= l_NormalPriority_0) and v103 ~= l_LowPriority_0) or v103 == l_IdlePriority_0) then
                v103 = l_NormalPriority_0;
            end;
            local l_l_l_NormalPriority_0_0_1 = l_l_NormalPriority_0_0;
            l_l_NormalPriority_0_0 = v103;
            local v106 = nil;
            local v107 = nil;
            if _G.__YOLO__ then
                v106 = true;
                v107 = v104();
            else
                local v108, v109 = xpcall(v104, l_describeError_0);
                v106 = v108;
                v107 = v109;
            end;
            l_l_NormalPriority_0_0 = l_l_l_NormalPriority_0_0_1;
            if not v106 then
                error(v107);
            end;
            return v107;
        end,
        unstable_next = function(v110)
            local v111 = nil;
            v111 = if not (l_l_NormalPriority_0_0 ~= l_ImmediatePriority_0 and l_l_NormalPriority_0_0 ~= l_UserBlockingPriority_0) or l_l_NormalPriority_0_0 == l_NormalPriority_0 then l_NormalPriority_0 else l_l_NormalPriority_0_0;
            local l_l_l_NormalPriority_0_0_2 = l_l_NormalPriority_0_0;
            l_l_NormalPriority_0_0 = v111;
            local v113 = nil;
            local v114 = nil;
            if _G.__YOLO__ then
                v113 = true;
                v114 = v110();
            else
                local v115, v116 = xpcall(v110, l_describeError_0);
                v113 = v115;
                v114 = v116;
            end;
            l_l_NormalPriority_0_0 = l_l_l_NormalPriority_0_0_2;
            if not v113 then
                error(v114);
            end;
            return v114;
        end,
        unstable_scheduleCallback = function(v117, v118, v119)
            local v120 = l_getCurrentTime_0();
            local v121 = nil;
            if typeof(v119) == "table" then
                local l_delay_0 = v119.delay;
                v121 = if typeof(l_delay_0) == "number" and l_delay_0 > 0 then v120 + l_delay_0 else v120;
            else
                v121 = v120;
            end;
            local _ = nil;
            local v124 = v121 + (v117 == l_ImmediatePriority_0 and -1 or (v117 == l_UserBlockingPriority_0 and 250 or (v117 == l_IdlePriority_0 and 1073741823 or (v117 == l_LowPriority_0 and 10000 or 5000))));
            local v125 = {
                id = v61,
                callback = v118,
                priorityLevel = v117,
                startTime = v121,
                expirationTime = v124,
                sortIndex = -1
            };
            v61 = v61 + 1;
            if l_enableProfiling_0 then
                v125.isQueued = false;
            end;
            if v120 < v121 then
                v125.sortIndex = v121;
                local l_v60_2 = v60;
                local v127 = #l_v60_2 + 1;
                l_v60_2[v127] = v125;
                v14(l_v60_2, v125, v127);
                if #v59 == 0 and v125 == v60[1] then
                    if not v67 then
                        v67 = true;
                    else
                        l_cancelHostTimeout_0();
                    end;
                    l_requestHostTimeout_0(v68, v121 - v120);
                    return v125;
                end;
            else
                v125.sortIndex = v124;
                local l_v59_2 = v59;
                local v129 = #l_v59_2 + 1;
                l_v59_2[v129] = v125;
                v14(l_v59_2, v125, v129);
                if l_enableProfiling_0 then
                    l_markTaskStart_0(v125, v120);
                    v125.isQueued = true;
                end;
                if not (v66 or v65) then
                    v66 = true;
                    l_requestHostCallback_0(v69);
                end;
            end;
            return v125;
        end,
        unstable_cancelCallback = function(v130)
            if not (not l_enableProfiling_0 or not v130.isQueued) then
                l_markTaskCanceled_0(v130, (l_getCurrentTime_0()));
                v130.isQueued = false;
            end;
            v130.callback = nil;
        end,
        unstable_wrapCallback = function(v131)
            local l_l_l_NormalPriority_0_0_3 = l_l_NormalPriority_0_0;
            return function(...)
                local l_l_l_NormalPriority_0_0_4 = l_l_NormalPriority_0_0;
                l_l_NormalPriority_0_0 = l_l_l_NormalPriority_0_0_3;
                local v134 = nil;
                local v135 = nil;
                if _G.__YOLO__ then
                    v134 = true;
                    v135 = v131(...);
                else
                    local v136, v137 = xpcall(v131, l_describeError_0, ...);
                    v134 = v136;
                    v135 = v137;
                end;
                l_l_NormalPriority_0_0 = l_l_l_NormalPriority_0_0_4;
                if not v134 then
                    error(v135);
                end;
                return v135;
            end;
        end,
        unstable_getCurrentPriorityLevel = function()
            return l_l_NormalPriority_0_0;
        end,
        unstable_shouldYield = l_shouldYieldToHost_0,
        unstable_requestPaint = l_requestPaint_0,
        unstable_continueExecution = function()
            v62 = false;
            if not (v66 or v65) then
                v66 = true;
                l_requestHostCallback_0(v69);
            end;
        end,
        unstable_pauseExecution = function()
            v62 = true;
        end,
        unstable_getFirstCallbackNode = function()
            return v59[1];
        end,
        unstable_now = l_getCurrentTime_0,
        unstable_forceFrameRate = l_forceFrameRate_0,
        unstable_Profiling = if not l_enableProfiling_0 then nil else {
            startLoggingProfilingEvents = l_startLoggingProfilingEvents_0,
            stopLoggingProfilingEvents = l_stopLoggingProfilingEvents_0
        }
    };
end;


return {
    enableSchedulerDebugging = false,
    enableIsInputPending = false,
    enableProfiling = _G.__PROFILE__
};


local v0 = {};
local v1 = nil;
local v2 = nil;
local v3 = nil;
v0.push = function(v4, v5)
    local v6 = #v4 + 1;
    v4[v6] = v5;
    v2(v4, v5, v6);
end;
v0.peek = function(v7)
    return v7[1];
end;
v0.pop = function(v8)
    local v9 = v8[1];
    if v9 ~= nil then
        local v10 = v8[#v8];
        v8[#v8] = nil;
        if v10 ~= v9 then
            v8[1] = v10;
            v3(v8, v10, 1);
        end;
        return v9;
    else
        return nil;
    end;
end;
v2 = function(v11, v12, v13)
    while true do
        local v14 = math.floor(v13 / 2);
        local v15 = v11[v14];
        if v15 ~= nil and v1(v15, v12) > 0 then
            v11[v14] = v12;
            v11[v13] = v15;
            v13 = v14;
        else
            break;
        end;
    end;
end;
v3 = function(v16, v17, v18)
    local v19 = #v16;
    while true do
        if v18 < v19 then
            local v20 = v18 * 2;
            local v21 = v16[v20];
            local v22 = v20 + 1;
            local v23 = v16[v22];
            if v21 ~= nil and v1(v21, v17) < 0 then
                if v23 ~= nil and v1(v23, v21) < 0 then
                    v16[v18] = v23;
                    v16[v22] = v17;
                    v18 = v22;
                else
                    v16[v18] = v21;
                    v16[v20] = v17;
                    v18 = v20;
                end;
            elseif v23 ~= nil and v1(v23, v17) < 0 then
                v16[v18] = v23;
                v16[v22] = v17;
                v18 = v22;
            else
                return ;
            end;
        else
            return ;
        end;
    end;
end;
v1 = function(v24, v25)
    local v26 = v24.sortIndex - v25.sortIndex;
    if v26 == 0 then
        return v24.id - v25.id;
    else
        return v26;
    end;
end;
return v0;


return {
    NoPriority = 0,
    ImmediatePriority = 1,
    UserBlockingPriority = 2,
    NormalPriority = 3,
    LowPriority = 4,
    IdlePriority = 5
};


local l_console_0 = require(script.Parent.Parent.Shared).console;
local v1 = {};
local _ = require(script.Parent.SchedulerPriorities);
local l_enableProfiling_0 = require(script.Parent.SchedulerFeatureFlags).enableProfiling;
local v4 = 0;
local v5 = 0;
local v6 = 0;
local v7 = nil;
local v8 = nil;
local v9 = 1;
local function v12(v10)
    if v8 ~= nil then
        v9 = v9 + #v10;
        if v6 < v9 + 1 then
            v6 = v6 * 2;
            if v6 > 524288 then
                l_console_0.error("Scheduler Profiling: Event log exceeded maximum size. Don't " .. "forget to call `stopLoggingProfilingEvents()`.");
                v1.stopLoggingProfilingEvents();
                return ;
            else
                local v11 = {};
                table.insert(v11, v8);
                v7 = v11;
                v8 = v11;
            end;
        end;
        table.insert(v8, v10);
    end;
end;
v1.startLoggingProfilingEvents = function()
    v6 = 131072;
    v7 = {};
    v8 = v7;
    v9 = 1;
end;
v1.stopLoggingProfilingEvents = function()
    local l_v7_0 = v7;
    v6 = 0;
    v7 = nil;
    v8 = nil;
    v9 = 1;
    return l_v7_0;
end;
v1.markTaskStart = function(v14, v15)
    if l_enableProfiling_0 and v8 ~= nil then
        v12({
            1,
            v15 * 1000,
            v14.id,
            v14.priorityLevel
        });
    end;
end;
v1.markTaskCompleted = function(v16, v17)
    if l_enableProfiling_0 and v8 ~= nil then
        v12({
            2,
            v17 * 1000,
            v16.id
        });
    end;
end;
v1.markTaskCanceled = function(v18, v19)
    if l_enableProfiling_0 and v8 ~= nil then
        v12({
            4,
            v19 * 1000,
            v18.id
        });
    end;
end;
v1.markTaskErrored = function(v20, v21)
    if l_enableProfiling_0 and v8 ~= nil then
        v12({
            3,
            v21 * 1000,
            v20.id
        });
    end;
end;
v1.markTaskRun = function(v22, v23)
    if l_enableProfiling_0 then
        v4 = v4 + 1;
        if v8 ~= nil then
            v12({
                5,
                v23 * 1000,
                v22.id,
                v4
            });
        end;
    end;
end;
v1.markTaskYield = function(v24, v25)
    if l_enableProfiling_0 and v8 ~= nil then
        v12({
            6,
            v25 * 1000,
            v24.id,
            v4
        });
    end;
end;
v1.markSchedulerSuspended = function(v26)
    if l_enableProfiling_0 then
        v5 = v5 + 1;
        if v8 ~= nil then
            v12({
                7,
                v26 * 1000,
                v5
            });
        end;
    end;
end;
v1.markSchedulerUnsuspended = function(v27)
    if l_enableProfiling_0 and v8 ~= nil then
        v12({
            8,
            v27 * 1000,
            v5
        });
    end;
end;
return v1;


local l_Parent_0 = script.Parent.Parent;
local l_Set_0 = require(l_Parent_0.LuauPolyfill).Set;
local v2 = {};
local l_enableSchedulerTracing_0 = require(l_Parent_0.Shared).ReactFeatureFlags.enableSchedulerTracing;
local v4 = 0;
local v5 = 0;
local v6 = nil;
local v7 = nil;
if l_enableSchedulerTracing_0 then
    v6 = {
        current = l_Set_0.new()
    };
    v7 = {
        current = nil
    };
end;
v2.__interactionsRef = v6;
v2.__subscriberRef = v7;
v2.unstable_clear = function(v8)
    if l_enableSchedulerTracing_0 then
        local l_current_0 = v6.current;
        v6.current = l_Set_0.new();
        local l_status_0, l_result_0 = pcall(v8);
        v6.current = l_current_0;
        if not l_status_0 then
            error(l_result_0);
        end;
        return l_result_0;
    else
        return v8();
    end;
end;
v2.unstable_getCurrent = function()
    if l_enableSchedulerTracing_0 then
        return v6.current;
    else
        return nil;
    end;
end;
v2.unstable_getThreadID = function()
    v5 = v5 + 1;
    return v5;
end;
v2.unstable_trace = function(v12, v13, v14, v15)
    local v16 = if v15 ~= nil then v15 else 0;
    if l_enableSchedulerTracing_0 then
        local v17 = {
            __count = 1,
            id = v4,
            name = v12,
            timestamp = v13
        };
        v4 = v4 + 1;
        local l_current_1 = v6.current;
        local v19 = l_Set_0.new(l_current_1);
        v19:add(v17);
        v6.current = v19;
        local l_current_2 = v7.current;
        local v21 = nil;
        local l_status_1, l_result_1 = pcall(function()
            if l_current_2 ~= nil then
                l_current_2.onInteractionTraced(v17);
            end;
        end);
        local l_status_2, l_result_2 = pcall(function()
            if l_current_2 ~= nil then
                l_current_2.onWorkStarted(v19, v16);
            end;
        end);
        local l_status_3, l_result_3 = pcall(function()
            v21 = v14();
        end);
        v6.current = l_current_1;
        local l_status_4, l_result_4 = pcall(function()
            if l_current_2 ~= nil then
                l_current_2.onWorkStopped(v19, v16);
            end;
        end);
        v17.__count = v17.__count - 1;
        if l_current_2 ~= nil and v17.__count == 0 then
            l_current_2.onInteractionScheduledWorkCompleted(v17);
        end;
        if not l_status_4 then
            error(l_result_4);
        end;
        if not l_status_3 then
            error(l_result_3);
        end;
        if not l_status_2 then
            error(l_result_2);
        end;
        if not l_status_1 then
            error(l_result_1);
        end;
        return v21;
    else
        return v14();
    end;
end;
v2.unstable_wrap = function(v30, v31)
    if v31 == nil then
        v31 = 0;
    end;
    if l_enableSchedulerTracing_0 then
        local l_current_3 = v6.current;
        local l_current_4 = v7.current;
        if l_current_4 ~= nil then
            l_current_4.onWorkScheduled(l_current_3, v31);
        end;
        for _, v35 in l_current_3, nil, nil do
            v35.__count = v35.__count + 1;
        end;
        local v36 = false;
        local function v48(_, ...)
            local l_current_5 = v6.current;
            v6.current = l_current_3;
            l_current_4 = v7.current;
            local l_status_7, l_result_7 = pcall(function(...)
                local v39 = nil;
                local l_status_5, l_result_5 = pcall(function()
                    if l_current_4 ~= nil then
                        l_current_4.onWorkStarted(l_current_3, v31);
                    end;
                end);
                local l_status_6, l_result_6 = pcall(function(...)
                    v39 = v30(...);
                end, ...);
                v6.current = l_current_5;
                if l_current_4 ~= nil then
                    l_current_4.onWorkStopped(l_current_3, v31);
                end;
                if not l_status_6 then
                    error(l_result_6);
                end;
                if not l_status_5 then
                    error(l_result_5);
                end;
                return v39;
            end, ...);
            if not v36 then
                v36 = true;
                for _, v47 in l_current_3, nil, nil do
                    v47.__count = v47.__count - 1;
                    if l_current_4 ~= nil and v47.__count == 0 then
                        l_current_4.onInteractionScheduledWorkCompleted(v47);
                    end;
                end;
            end;
            if not l_status_7 then
                error(l_result_7);
            end;
            return l_result_7;
        end;
        local function v53()
            l_current_4 = v7.current;
            local l_status_8, l_result_8 = pcall(function()
                if l_current_4 ~= nil then
                    l_current_4.onWorkCanceled(l_current_3, v31);
                end;
            end);
            for _, v52 in l_current_3, nil, nil do
                v52.__count = v52.__count - 1;
                if l_current_4 ~= nil and v52.__count == 0 then
                    l_current_4.onInteractionScheduledWorkCompleted(v52);
                end;
            end;
            if not l_status_8 then
                error(l_result_8);
            end;
        end;
        local v54 = {};
        setmetatable(v54, {
            __call = v48
        });
        v54.cancel = v53;
        return v54;
    else
        return v30;
    end;
end;
return v2;


local v0 = {};
local l_Parent_0 = script.Parent.Parent;
local l_Object_0 = require(l_Parent_0.LuauPolyfill).Object;
local v3 = require(script.Parent.Tracing);
local l_enableSchedulerTracing_0 = require(l_Parent_0.Shared).ReactFeatureFlags.enableSchedulerTracing;
local l___subscriberRef_0 = v3.__subscriberRef;
local v6 = {};
if l_enableSchedulerTracing_0 then
    v6 = {};
end;
v0.unstable_subscribe = function(v7)
    if l_enableSchedulerTracing_0 then
        v6[v7] = true;
        if #l_Object_0.keys(v6) == 1 then
            l___subscriberRef_0.current = {
                onInteractionScheduledWorkCompleted = onInteractionScheduledWorkCompleted,
                onInteractionTraced = onInteractionTraced,
                onWorkCanceled = onWorkCanceled,
                onWorkScheduled = onWorkScheduled,
                onWorkStarted = onWorkStarted,
                onWorkStopped = onWorkStopped
            };
        end;
    end;
end;
v0.unstable_unsubscribe = function(v8)
    if l_enableSchedulerTracing_0 then
        v6[v8] = nil;
        if #l_Object_0.keys(v6) == 0 then
            l___subscriberRef_0.current = nil;
        end;
    end;
end;
onInteractionTraced = function(v9)
    local v10 = false;
    local v11 = nil;
    for v12, _ in v6, nil, nil do
        local l_status_0, l_result_0 = pcall(v12.onInteractionTraced, v9);
        if not (l_status_0 or v10) then
            v10 = true;
            v11 = l_result_0;
        end;
    end;
    if v10 then
        error(v11);
    end;
end;
onInteractionScheduledWorkCompleted = function(v16)
    local v17 = false;
    local v18 = nil;
    for v19, _ in v6, nil, nil do
        local l_status_1, l_result_1 = pcall(v19.onInteractionScheduledWorkCompleted, v16);
        if not (l_status_1 or v17) then
            v17 = true;
            v18 = l_result_1;
        end;
    end;
    if v17 then
        error(v18);
    end;
end;
onWorkScheduled = function(v23, v24)
    local v25 = false;
    local v26 = nil;
    for v27, _ in v6, nil, nil do
        local l_status_2, l_result_2 = pcall(v27.onWorkScheduled, v23, v24);
        if not (l_status_2 or v25) then
            v25 = true;
            v26 = l_result_2;
        end;
    end;
    if v25 then
        error(v26);
    end;
end;
onWorkStarted = function(v31, v32)
    local v33 = false;
    local v34 = nil;
    for v35, _ in v6, nil, nil do
        local l_status_3, l_result_3 = pcall(v35.onWorkStarted, v31, v32);
        if not (l_status_3 or v33) then
            v33 = true;
            v34 = l_result_3;
        end;
    end;
    if v33 then
        error(v34);
    end;
end;
onWorkStopped = function(v39, v40)
    local v41 = false;
    local v42 = nil;
    for v43, _ in v6, nil, nil do
        local l_status_4, l_result_4 = pcall(v43.onWorkStopped, v39, v40);
        if not (l_status_4 or v41) then
            v41 = true;
            v42 = l_result_4;
        end;
    end;
    if v41 then
        error(v42);
    end;
end;
onWorkCanceled = function(v47, v48)
    local v49 = false;
    local v50 = nil;
    for v51, _ in v6, nil, nil do
        local l_status_5, l_result_5 = pcall(v51.onWorkCanceled, v47, v48);
        if not (l_status_5 or v49) then
            v49 = true;
            v50 = l_result_5;
        end;
    end;
    if v49 then
        error(v50);
    end;
end;
return v0;


local l_Parent_0 = script.Parent.Parent.Parent;
local v1 = require(l_Parent_0.LuauPolyfill);
local l_Object_0 = v1.Object;
local v3 = require(l_Parent_0.Shared);
local l_console_0 = v3.console;
local l_errorToString_0 = v3.errorToString;
local l_describeError_0 = v3.describeError;
local function v7()
    return os.clock() * 1000;
end;
local l_setTimeout_0 = v1.setTimeout;
local l_clearTimeout_0 = v1.clearTimeout;
local v10 = false;
local v11 = nil;
local l_None_0 = l_Object_0.None;
local v13 = 15;
local v14 = 0;
local function v15()
    return v14 <= os.clock() * 1000;
end;
local function v16()
end;
local function v18(v17)
    if not (v17 >= 0) or v17 > 125 then
        l_console_0.warn("forceFrameRate takes a positive int between 0 and 125, " .. "forcing frame rates higher than 125 fps is not supported");
        return ;
    elseif v17 > 0 then
        v13 = math.floor(1000 / v17);
        return ;
    else
        v13 = 5;
        return ;
    end;
end;
local function v19()
    if v11 ~= nil then
        local v20 = os.clock() * 1000;
        v14 = v20 + v13;
        local v21 = nil;
        local v22 = nil;
        local function v23()
            if v11(true, v20) then
                task.delay(0, v19);
            else
                v10 = false;
                v11 = nil;
            end;
            return nil;
        end;
        if _G.__YOLO__ then
            if v11(true, v20) then
                task.delay(0, v19);
            else
                v10 = false;
                v11 = nil;
            end;
            v22 = nil;
            v21 = true;
        else
            local v24, v25 = xpcall(v23, l_describeError_0);
            v21 = v24;
            v22 = v25;
        end;
        if not v21 then
            task.delay(0, v19);
            error(l_errorToString_0(v22));
            return ;
        end;
    else
        v10 = false;
    end;
end;
return {
    requestHostCallback = function(v26)
        v11 = v26;
        if not v10 then
            v10 = true;
            task.delay(0, v19);
        end;
    end,
    cancelHostCallback = function()
        v11 = nil;
    end,
    requestHostTimeout = function(v27, v28)
        l_None_0 = l_setTimeout_0(function()
            v27(os.clock() * 1000);
        end, v28);
    end,
    cancelHostTimeout = function()
        l_clearTimeout_0(l_None_0);
        l_None_0 = l_Object_0.None;
    end,
    shouldYieldToHost = v15,
    requestPaint = v16,
    getCurrentTime = v7,
    forceFrameRate = v18
};


local v0 = {};
local v1 = 0;
local v2 = nil;
local v3 = nil;
local v4 = -1;
local v5 = nil;
local v6 = -1;
local v7 = false;
local v8 = false;
local v9 = false;
local v10 = false;
local l_Parent_0 = script.Parent.Parent.Parent;
local l_console_0 = require(l_Parent_0.Shared).console;
local l_disabledLog_0 = require(l_Parent_0.Shared).ConsolePatchingDev.disabledLog;
v0.requestHostCallback = function(v14)
    v2 = v14;
end;
v0.cancelHostCallback = function()
    v2 = nil;
end;
v0.requestHostTimeout = function(v15, v16)
    v3 = v15;
    v4 = v1 + v16;
end;
v0.cancelHostTimeout = function()
    v3 = nil;
    v4 = -1;
end;
v0.shouldYieldToHost = function()
    local l_v5_0 = v5;
    if (not (v6 ~= -1 and l_v5_0 ~= nil) or v6 > #l_v5_0) and (not v10 or not v9) then
        return false;
    else
        v7 = true;
        return true;
    end;
end;
v0.getCurrentTime = function()
    return v1;
end;
v0.forceFrameRate = function()
end;
v0.reset = function()
    if v8 then
        error("Cannot reset while already flushing work.");
    end;
    v1 = 0;
    v2 = nil;
    v3 = nil;
    v4 = -1;
    v5 = nil;
    v6 = -1;
    v7 = false;
    v8 = false;
    v9 = false;
end;
v0.unstable_flushNumberOfYields = function(v18)
    if v8 then
        error("Already flushing work.");
    end;
    if v2 ~= nil then
        local l_v2_0 = v2;
        v6 = v18;
        v8 = true;
        local l_status_0, l_result_0 = pcall(function()
            local v20 = true;
            while true do
                v20 = l_v2_0(true, v1);
                if not v20 or v7 then
                    break;
                end;
            end;
            if not v20 then
                v2 = nil;
            end;
        end);
        v6 = -1;
        v7 = false;
        v8 = false;
        if not l_status_0 then
            error(l_result_0);
        end;
    end;
end;
v0.unstable_flushUntilNextPaint = function()
    if v8 then
        error("Already flushing work.");
    end;
    if v2 ~= nil then
        local l_v2_1 = v2;
        v10 = true;
        v9 = false;
        v8 = true;
        local l_status_1, l_result_1 = pcall(function()
            local v24 = true;
            while true do
                v24 = l_v2_1(true, v1);
                if not v24 or v7 then
                    break;
                end;
            end;
            if not v24 then
                v2 = nil;
            end;
        end);
        v10 = false;
        v7 = false;
        v8 = false;
        if not l_status_1 then
            error(l_result_1);
        end;
    end;
end;
v0.unstable_flushExpired = function()
    if v8 then
        error("Already flushing work.");
    end;
    if v2 ~= nil then
        v8 = true;
        local l_status_2, l_result_2 = pcall(function()
            if not v2(false, v1) then
                v2 = nil;
            end;
        end);
        v8 = false;
        if not l_status_2 then
            error(l_result_2);
        end;
    end;
end;
v0.unstable_flushAllWithoutAsserting = function()
    if v8 then
        error("Already flushing work.");
    end;
    if v2 ~= nil then
        local l_v2_2 = v2;
        v8 = true;
        local l_status_3, l_result_3 = pcall(function()
            local v30 = true;
            while true do
                v30 = l_v2_2(true, v1);
                if not v30 then
                    break;
                end;
            end;
            if not v30 then
                v2 = nil;
            end;
        end);
        v8 = false;
        if not l_status_3 then
            error(l_result_3);
        end;
        return true;
    else
        return false;
    end;
end;
v0.unstable_clearYields = function()
    if v5 == nil then
        return {};
    else
        local l_v5_1 = v5;
        v5 = nil;
        return l_v5_1;
    end;
end;
v0.unstable_flushAll = function()
    if v5 ~= nil then
        error("Log is not empty. Assert on the log of yielded values before " .. "flushing additional work.");
    end;
    v0.unstable_flushAllWithoutAsserting();
    if v5 ~= nil then
        error("While flushing work, something yielded a value. Use an " .. "assertion helper to assert on the log of yielded values, e.g. " .. "expect(Scheduler).toFlushAndYield([...])");
    end;
end;
v0.unstable_yieldValue = function(v34)
    if l_console_0.log == l_disabledLog_0 then
        return ;
    elseif v5 == nil then
        v5 = {
            v34
        };
        return ;
    else
        table.insert(v5, v34);
        return ;
    end;
end;
v0.unstable_advanceTime = function(v35)
    if l_console_0.log == l_disabledLog_0 then
        return ;
    else
        v1 = v1 + v35;
        if v3 ~= nil and v4 <= v1 then
            v3(v1);
            v4 = -1;
            v3 = nil;
        end;
        return ;
    end;
end;
v0.requestPaint = function()
    v9 = true;
end;
return v0;


local v0 = require(script.Scheduler);
local function _(v1)
    return function()
        error(v1 .. " is only available in tests, not in production");
    end;
end;
local v3 = v0(nil);
local v4 = require(script.Tracing);
local v5 = require(script.TracingSubscriptions);
if not _G.__ROACT_17_MOCK_SCHEDULER__ then
    local v6 = {
        unstable_ImmediatePriority = v3.unstable_ImmediatePriority,
        unstable_UserBlockingPriority = v3.unstable_UserBlockingPriority,
        unstable_NormalPriority = v3.unstable_NormalPriority,
        unstable_IdlePriority = v3.unstable_IdlePriority,
        unstable_LowPriority = v3.unstable_LowPriority,
        unstable_runWithPriority = v3.unstable_runWithPriority,
        unstable_next = v3.unstable_next,
        unstable_scheduleCallback = v3.unstable_scheduleCallback,
        unstable_cancelCallback = v3.unstable_cancelCallback,
        unstable_wrapCallback = v3.unstable_wrapCallback,
        unstable_getCurrentPriorityLevel = v3.unstable_getCurrentPriorityLevel,
        unstable_shouldYield = v3.unstable_shouldYield,
        unstable_requestPaint = v3.unstable_requestPaint,
        unstable_continueExecution = v3.unstable_continueExecution,
        unstable_pauseExecution = v3.unstable_pauseExecution,
        unstable_getFirstCallbackNode = v3.unstable_getFirstCallbackNode,
        unstable_now = v3.unstable_now,
        unstable_forceFrameRate = v3.unstable_forceFrameRate
    };
    local v7 = "unstable_flushAllWithoutAsserting";
    local l_v7_0 = v7 --[[ copy: 7 -> 11 ]];
    v6.unstable_flushAllWithoutAsserting = function()
        error(l_v7_0 .. " is only available in tests, not in production");
    end;
    v7 = "unstable_flushAll";
    local l_v7_1 = v7 --[[ copy: 7 -> 12 ]];
    v6.unstable_flushAll = function()
        error(l_v7_1 .. " is only available in tests, not in production");
    end;
    v7 = "unstable_flushNumberOfYields";
    local l_v7_2 = v7 --[[ copy: 7 -> 13 ]];
    v6.unstable_flushNumberOfYields = function()
        error(l_v7_2 .. " is only available in tests, not in production");
    end;
    v7 = "unstable_clearYields";
    local l_v7_3 = v7 --[[ copy: 7 -> 14 ]];
    v6.unstable_clearYields = function()
        error(l_v7_3 .. " is only available in tests, not in production");
    end;
    v7 = "unstable_clearYields";
    local l_v7_4 = v7 --[[ copy: 7 -> 15 ]];
    v6.unstable_flushUntilNextPaint = function()
        error(l_v7_4 .. " is only available in tests, not in production");
    end;
    v7 = "unstable_advanceTime";
    local l_v7_5 = v7 --[[ copy: 7 -> 16 ]];
    v6.unstable_advanceTime = function()
        error(l_v7_5 .. " is only available in tests, not in production");
    end;
    v7 = "unstable_flushExpired";
    local l_v7_6 = v7 --[[ copy: 7 -> 17 ]];
    v6.unstable_flushExpired = function()
        error(l_v7_6 .. " is only available in tests, not in production");
    end;
    v7 = "unstable_yieldValue";
    v6.unstable_yieldValue = function()
        error(v7 .. " is only available in tests, not in production");
    end;
    local v15 = {};
    local v16 = "unstable_wrap";
    v15.unstable_wrap = function()
        error(v16 .. " is only available in tests, not in production");
    end;
    v15.__interactionsRef = {};
    v15.__subscriberRef = {};
    v6.tracing = v15;
    for v17, v18 in v4, nil, nil do
        v6.tracing[v17] = v18;
    end;
    for v19, v20 in v5, nil, nil do
        v6.tracing[v19] = v20;
    end;
    return v6;
else
    return require(script.unstable_mock);
end;


local v0 = require(script.Parent.Tracing);
local v1 = require(script.Parent.TracingSubscriptions);
local v2 = require(script.Parent.Scheduler);
local v3 = require(script.Parent.forks["SchedulerHostConfig.mock"]);
local v4 = v2(v3);
local v5 = {
    tracing = {}
};
for v6, v7 in v4, nil, nil do
    v5[v6] = v7;
end;
for v8, v9 in v0, nil, nil do
    v5.tracing[v8] = v9;
end;
for v10, v11 in v1, nil, nil do
    v5.tracing[v10] = v11;
end;
v5.unstable_flushAllWithoutAsserting = v3.unstable_flushAllWithoutAsserting;
v5.unstable_flushNumberOfYields = v3.unstable_flushNumberOfYields;
v5.unstable_flushExpired = v3.unstable_flushExpired;
v5.unstable_clearYields = v3.unstable_clearYields;
v5.unstable_flushUntilNextPaint = v3.unstable_flushUntilNextPaint;
v5.unstable_flushAll = v3.unstable_flushAll;
v5.unstable_yieldValue = v3.unstable_yieldValue;
v5.unstable_advanceTime = v3.unstable_advanceTime;
v5.unstable_Profiling = v4.unstable_Profiling;
return v5;


local v0 = require(script.Parent.console);
local v1 = 0;
local v2 = nil;
local v3 = nil;
local v4 = nil;
local v5 = nil;
local v6 = nil;
local v7 = nil;
local v8 = nil;
local function v9()
end;
return {
    disabledLog = v9,
    disableLogs = function()
        if _G.__DEV__ then
            if v1 == 0 then
                v2 = v0.log;
                v3 = v0.info;
                v4 = v0.warn;
                v5 = v0.error;
                v6 = v0.group;
                v7 = v0.groupCollapsed;
                v8 = v0.groupEnd;
                v0.info = v9;
                v0.log = v9;
                v0.warn = v9;
                v0.error = v9;
                v0.group = v9;
                v0.groupCollapsed = v9;
                v0.groupEnd = v9;
            end;
            v1 = v1 + 1;
        end;
    end,
    reenableLogs = function()
        if _G.__DEV__ then
            v1 = v1 - 1;
            if v1 == 0 then
                v0.log = v2;
                v0.info = v3;
                v0.warn = v4;
                v0.error = v5;
                v0.group = v6;
                v0.groupCollapsed = v7;
                v0.groupEnd = v8;
            end;
            if v1 < 0 then
                v0.error("disabledDepth fell below zero. " .. "This is a bug in React. Please file an issue.");
            end;
        end;
    end
};


local v0 = require(script.Parent.Parent.LuauPolyfill);
local l_Error_0 = v0.Error;
local l_inspect_0 = v0.util.inspect;
return {
    describeError = function(v3)
        if typeof(v3) == "string" then
            local _, v5 = string.find(v3, ":[%d]+: ");
            local v6 = v0.Error.new(if not v5 then v3 else string.sub(v3, v5 + 1));
            v6.stack = debug.traceback(nil, 2);
            return v6;
        else
            return v3;
        end;
    end,
    errorToString = function(v7)
        local _ = nil;
        if typeof(v7) == "table" then
            if not v7.message or not v7.stack then
                return (l_inspect_0(v7));
            else
                return "\n------ Error caught by React ------\n" .. v7.message .. "\n------ Error caught by React ------\n" .. tostring(v7.stack);
            end;
        else
            return (l_inspect_0(v7));
        end;
    end,
    parseReactError = function(v9)
        local v10 = string.split(v9, "\n------ Error caught by React ------\n");
        if #v10 == 3 then
            local v11, v12, v13 = table.unpack(v10);
            local v14 = l_Error_0.new(v12);
            v14.stack = v13;
            return v14, v11;
        else
            local v15 = l_Error_0.new(v9);
            v15.stack = nil;
            return v15, "";
        end;
    end,
    __ERROR_DIVIDER = "\n------ Error caught by React ------\n"
};


local v0 = require(script.Parent.Parent["Type.roblox"]);
local v1 = {};
local v3 = {
    __tostring = function(v2)
        return string.format("RoactHostChangeEvent(%s)", v2.name);
    end
};
setmetatable(v1, {
    __index = function(_, v5)
        local v6 = {
            [v0] = v0.HostChangeEvent,
            name = v5
        };
        setmetatable(v6, v3);
        v1[v5] = v6;
        return v6;
    end
});
return v1;