local v0 = require(script:FindFirstAncestor("GraphQLServer").Parent.LuauPolyfill);
local l_Array_0 = v0.Array;
local l_Boolean_0 = v0.Boolean;
local v3 = require(script.Parent.mergeDeep);
local function v4(v5, v6)
    if not v5 or l_Array_0.isArray(v5) and #v5 == 0 then
        return {};
    elseif l_Array_0.isArray(v5) then
        if #v5 == 1 then
            return v5[1] or {};
        else
            local v7 = {};
            for _, v9 in v5, nil, nil do
                if l_Array_0.isArray(v9) then
                    v9 = v4(v9);
                end;
                if not (not (type(v9) == "table") or not v9) then
                    table.insert(v7, v9);
                end;
            end;
            local v10 = v3(v7, true);
            if not (not v6 or not v6.exclusions) then
                for _, v12 in v6.exclusions, nil, nil do
                    local v13, v14 = table.unpack(v12:split("."), 1, 2);
                    if not v14 or v14 == "*" then
                        v10[tostring(v13)] = nil;
                    elseif l_Boolean_0.toJSBoolean(v10[tostring(v13)]) then
                        v10[tostring(v13)][tostring(v14)] = nil;
                    end;
                end;
            end;
            return v10;
        end;
    else
        return v5;
    end;
end;
return v4;


local v0 = require(script.Server);
local v1 = require(script.graphql);
return {
    GraphQLServer = v0,
    types = v1.generatedTypes,
    mocks = v1.mocks,
    ApolloClientTestUtils = require(script.ApolloClientTestUtils),
    enums = require(script.graphql.enums),
    ["jest.config"] = script["jest.config"]
};


local v0 = require(script:FindFirstAncestor("GraphQLServer").Parent.Dev.JestConfigs);
return {
    displayName = "GraphQlServer",
    testMatch = {
        "**/*.test"
    },
    setupFilesAfterEnv = {
        v0.setupFiles.LogHandler,
        v0.setupFiles.UIBloxInitializer,
        v0.setupFiles.createPromiseRejectionHandler()
    }
};


local l_Object_0 = require(script:FindFirstAncestor("GraphQLServer").Parent.LuauPolyfill).Object;
return function(v1, v2)
    local v3 = l_Object_0.assign({}, v1, v2);
    l_Object_0.assign(v3, {
        Query = l_Object_0.assign({}, v1.Query or {}, v2.Query or {}),
        Mutation = l_Object_0.assign({}, v1.Mutation or {}, v2.Mutation or {})
    });
    return v3;
end;


local l_Parent_0 = script:FindFirstAncestor("GraphQLServer").Parent;
local v1 = require(l_Parent_0.GraphQL);
local _ = require(l_Parent_0.LuauPolyfill);
local function v5(v3, v4)
    if not ((not ((not v3 or not v3.parentType) or not v3.fieldName) and type(v3.parentType.name) == "string") and type(v4[v3.parentType.name]) == "table") or type(v4[v3.parentType.name][v3.fieldName]) ~= "function" then
        return v1.defaultFieldResolver;
    else
        return v4[v3.parentType.name][v3.fieldName];
    end;
end;
return function(v6)
    return function(v7, v8, v9, v10)
        return v5(v10, v6)(v7, v8, v9, v10);
    end;
end;


local l_Object_0 = require(script:FindFirstAncestor("GraphQLServer").Parent.LuauPolyfill).Object;
return function(v1)
    return (l_Object_0.assign({}, v1.Query or {}, v1.Mutation or {}));
end;


local l_Parent_0 = script:FindFirstAncestor("GraphQLServer").Parent;
local _ = require(l_Parent_0.GraphQL);
local _ = require(l_Parent_0.LuauPolyfill);
return function(v3)
    return function(v4, v5, v6, v7)
        local v8 = v3[v7.name];
        if type(v8) == "table" and type(v8.__resolveType) == "function" then
            return v8.__resolveType(v4, v5, v6, v7);
        else
            return v7.name;
        end;
    end;
end;


local l_Parent_0 = script:FindFirstAncestor("GraphQlShared").Parent;
local l_SystemInfoProtocol_0 = require(l_Parent_0.SystemInfoProtocol).SystemInfoProtocol;
local v2 = require(l_Parent_0.ArgCheck);
local l_UrlBuilder_0 = require(l_Parent_0.UrlBuilder).UrlBuilder;
local l_Url_0 = require(l_Parent_0.Http).Url;
local l_HttpService_0 = game:GetService("HttpService");
local l_AddSystemInfoToArgs_0 = require(l_Parent_0.DiscoveryUtils).AddSystemInfoToArgs;
local l_GetFFlagOmniSearchSystemInfo_0 = require(l_Parent_0.SharedFlags).GetFFlagOmniSearchSystemInfo;
local v8 = l_UrlBuilder_0.new({
    base = l_Url_0.APIS_URL,
    path = "/discovery-api/omni-recommendation"
});
local v9 = if not l_GetFFlagOmniSearchSystemInfo_0() then {
    [l_SystemInfoProtocol_0.InfoNames.MANUFACTURER] = "deviceManufacturer",
    [l_SystemInfoProtocol_0.InfoNames.BASE_OS] = "operatingSystemVersion",
    [l_SystemInfoProtocol_0.InfoNames.IS_64BIT] = "if64Bit",
    [l_SystemInfoProtocol_0.InfoNames.CPU_CORE_COUNT] = "cpuCores"
} else nil;
return function(v10, v11, v12, v13, v14, v15)
    local v16 = {
        pageType = v11,
        sessionId = v12,
        pageToken = v13,
        supportedTreatmentTypes = v14,
        requestIntent = v15
    };
    if not l_GetFFlagOmniSearchSystemInfo_0() then
        if v9 then
            local l_status_0, l_result_0 = pcall(function()
                return l_SystemInfoProtocol_0.default:getSystemInfo(l_SystemInfoProtocol_0.ALL_INFO_NAMES);
            end);
            if l_status_0 and typeof(l_result_0) == "table" then
                for v19, v20 in pairs(l_result_0) do
                    local v21 = v9[v19] or v19;
                    v2.assert(v16[v21] == nil, "Field '" .. tostring(v21) .. "' already exists in omni-recommendation fetch  Will be overwritten.");
                    v16[v21] = v20;
                end;
            end;
        end;
    else
        l_AddSystemInfoToArgs_0(v16);
    end;
    return v10(v8(), "POST", {
        postBody = l_HttpService_0:JSONEncode(v16)
    });
end;


return {
    MakeOmniRecommendationsRequest = require(script.OmniRecommendations.MakeOmniRecommendationsRequest),
    MockOmniRecommendationsRequest = require(script.OmniRecommendations.MockOmniRecommendationsRequest),
    ["jest.config"] = script["jest.config"]
};


local v0 = require(script.Parent.Parent.Dev.JestConfigs);
return {
    displayName = "GraphQlSharedJest3",
    testMatch = {
        "**/*.test"
    },
    setupFilesAfterEnv = {
        v0.setupFiles.UIBloxInitializer,
        v0.setupFiles.createPromiseRejectionHandler()
    }
};


local l_Parent_0 = script.Parent.Parent;
return {
    projects = {
        require(l_Parent_0.GraphQLServer)["jest.config"],
        require(l_Parent_0.RobloxApolloClient)["jest.config"],
        require(l_Parent_0.GraphQlShared)["jest.config"],
        require(l_Parent_0.ApolloLocalState)["jest.config"]
    }
};


return require(script:FindFirstAncestor("Http").Parent.Rodux).makeActionCreator(script.Name, function(v0, v1)
    return {
        fetchingStatuses = v0,
        shouldImmediatelyDispatch = v1 or false
    };
end);


return require(script:FindFirstAncestor("Http").Parent.Rodux).makeActionCreator(script.Name, function(v0, v1)
    return {
        key = v0,
        status = v1
    };
end);


return {
    UpdateFetchingStatus = require(script.UpdateFetchingStatus),
    BatchUpdateFetchingStatus = require(script.BatchUpdateFetchingStatus)
};


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


local v0 = {
    ["catalog/sponsored-items"] = "avatar_experience_sponsored_items",
    ["marketplace-widgets/v1/widgets?requestId"] = "avatar_experience_marketplace_widgets",
    ["v3/outfits"] = "avatar_experience_outfits",
    ["catalog/items/details"] = "avatar_experience_item_details",
    ["recommendations/user-inventory"] = "avatar_experience_recommended_user_inventory",
    ["v1/purchases/products"] = "avatar_experience_purchase_product",
    ["autocomplete-avatar/v2/suggest"] = "avatar_experience_auto_complete",
    ["topic/get-topics"] = "avatar_experience_get_topics",
    ["widgets/search"] = "avatar_experience_widget_search",
    ["widgets/hydrate"] = "avatar_experience_widget_hydrate"
};
local v7 = {
    getMatchingErrorName = function(v1, v2)
        local v3 = nil;
        local v4 = tostring(v2);
        for v5, v6 in v0, nil, nil do
            if string.find(v1, v5, 1, true) then
                return "api_error_" .. v6 .. "_" .. v4;
            end;
        end;
        return v3;
    end
};
v7.sendCounterIfKeyMatchesFetchStatus = function(v8, v9, v10)
    if not v10 then
        v10 = game:GetService("RbxAnalyticsService");
    end;
    local v11 = v7.getMatchingErrorName(v8, v9);
    if not (not v11 or not v10) then
        v10:ReportCounter(v11, 1);
    end;
end;
return v7;


local v0 = {
    new = function()
        return {};
    end
};
v0.fromThumbnailData = function(v1, v2)
    local v3 = v0.new();
    v3.universeId = tostring(v1.targetId);
    v3.state = v1.state;
    v3.url = v1.imageUrl;
    v3.size = v2;
    return v3;
end;
v0.isCompleteThumbnailData = function(v4)
    local v5 = false;
    if type(v4) == "table" then
        v5 = false;
        if type(v4.targetId) == "number" then
            v5 = false;
            if type(v4.state) == "string" then
                v5 = true;
                if type(v4.imageUrl) ~= "string" then
                    v5 = v4.imageUrl == nil;
                end;
            end;
        end;
    end;
    return v5;
end;
v0.checkStateIsFinal = function(v6)
    return v6 ~= "Pending";
end;
return v0;


local v0 = {};
local v1 = 0;
v0.currentSession = function()
    return v1;
end;
v0.cancel = function()
    v1 = v1 + 1;
end;
return v0;


return {
    HttpCanceller = require(script.HttpCanceller),
    requestInternalWrapper = require(script.requestInternalWrapper)
};


local l_script_FirstAncestor_0 = script:FindFirstAncestor("Http");
local l_Parent_0 = l_script_FirstAncestor_0.Parent;
local v2 = require(l_Parent_0.Result);
local v3 = require(l_Parent_0.Promise);
local l_PromiseUtilities_0 = require(l_Parent_0.AppCommonLib).Utils.PromiseUtilities;
local l_RetrievalStatus_0 = require(l_script_FirstAncestor_0.Enum).RetrievalStatus;
local l_UpdateFetchingStatus_0 = require(l_script_FirstAncestor_0.Actions).UpdateFetchingStatus;
local l_BatchUpdateFetchingStatus_0 = require(l_script_FirstAncestor_0.Actions).BatchUpdateFetchingStatus;
local l_FFlagLuaAppBatchFetchingStatus_0 = require(l_Parent_0.SharedFlags).FFlagLuaAppBatchFetchingStatus;
local l_FFlagLuaAppBatchSingleFetches_0 = require(l_Parent_0.SharedFlags).FFlagLuaAppBatchSingleFetches;
local v10 = {};
local v11 = {};
v10.ClearOutstandingPromiseStatus = function()
    v11 = {};
end;
local function v13(v12)
    return v12;
end;
v10.GetStatus = function(v14, v15)
    assert(typeof(v14) == "table");
    assert(typeof(v15) == "string");
    assert(#v15 > 0);
    return v14.FetchingStatus[v15] or l_RetrievalStatus_0.NotStarted;
end;
v10.Single = function(v16, v17)
    assert(typeof(v16) == "string");
    assert(typeof(v17) == "function");
    assert(#v16 > 0);
    return function(v18)
        return v10.Batch({
            v16
        }, v13, function(v19, v20)
            assert(#v20 == 1);
            local v21 = v17(v19);
            assert(v3.is(v21));
            return v21:andThen(function(...)
                assert(#{
                    ...
                } <= 1);
                return v3.resolve({
                    [v16] = v2.new(true, (...))
                });
            end, function(...)
                assert(#{
                    ...
                } <= 1);
                return v3.resolve({
                    [v16] = v2.new(false, (...))
                });
            end);
        end)(v18):andThen(function(v22)
            local v23, v24 = v22[v16]:unwrap();
            if not v23 then
                return v3.reject(v24);
            else
                return v3.resolve(v24);
            end;
        end);
    end;
end;
v10.Batch = function(v25, v26, v27)
    assert(typeof(v25) == "table");
    assert(typeof(v26) == "function");
    assert(typeof(v27) == "function");
    return function(v28)
        local v29 = {};
        local v30 = {};
        local v31 = {};
        for _, v33 in ipairs(v25) do
            local v34 = v26(v33);
            local v35 = v10.GetStatus(v28:getState(), v34);
            local v36 = v11[v34];
            if not v36 then
                if not l_FFlagLuaAppBatchSingleFetches_0 then
                    assert(v35 ~= l_RetrievalStatus_0.Fetching);
                end;
                table.insert(v29, v33);
                v30[v33] = v34;
            else
                if not l_FFlagLuaAppBatchSingleFetches_0 then
                    assert(v35 == l_RetrievalStatus_0.Fetching);
                end;
                v31[v34] = v36;
            end;
        end;
        local v37 = nil;
        local v39 = v3.new(function(v38)
            v37 = v38;
        end);
        local v40 = nil;
        if #v29 > 0 then
            if not l_FFlagLuaAppBatchFetchingStatus_0 then
                for _, v42 in pairs(v30) do
                    v28:dispatch(l_UpdateFetchingStatus_0(v42, l_RetrievalStatus_0.Fetching));
                    v11[v42] = v39;
                end;
            else
                local v43 = {};
                for _, v45 in pairs(v30) do
                    table.insert(v43, {
                        key = v45,
                        status = l_RetrievalStatus_0.Fetching
                    });
                    v11[v45] = v39;
                end;
                if #v43 > 0 then
                    v28:dispatch(l_BatchUpdateFetchingStatus_0(v43));
                end;
            end;
            v40 = v27(v28, v29);
            assert(v3.is(v40));
        else
            v40 = v3.resolve({});
        end;
        v40:andThen(function(v46)
            v46 = v46 or {};
            return l_PromiseUtilities_0.Batch(v31):andThen(function(v47)
                local v48 = {};
                for v49, v50 in pairs(v47) do
                    local _, v52 = v50:unwrap();
                    v48[v49] = v52[v49];
                end;
                return v46, v48;
            end);
        end, function()
            assert(false, "PerformFetch fetchFunctor should never reject");
        end):andThen(function(v53, v54)
            if not l_FFlagLuaAppBatchFetchingStatus_0 then
                for _, v56 in pairs(v30) do
                    local v57 = v53[v56];
                    if not v2.is(v57) then
                        v54[v56] = v2.error();
                    else
                        v54[v56] = v57;
                    end;
                    v28:dispatch(l_UpdateFetchingStatus_0(v56, not not v54[v56]:unwrap() and l_RetrievalStatus_0.Done or l_RetrievalStatus_0.Failed));
                    v11[v56] = nil;
                end;
            else
                local v58 = {};
                for _, v60 in pairs(v30) do
                    local v61 = v53[v60];
                    if not v2.is(v61) then
                        v54[v60] = v2.error();
                    else
                        v54[v60] = v61;
                    end;
                    table.insert(v58, {
                        key = v60,
                        status = not not v54[v60]:unwrap() and l_RetrievalStatus_0.Done or l_RetrievalStatus_0.Failed
                    });
                    v11[v60] = nil;
                end;
                if #v58 > 0 then
                    v28:dispatch(l_BatchUpdateFetchingStatus_0(v58));
                    return v54;
                end;
            end;
            return v54;
        end):andThen(function(v62)
            v37(v62);
        end);
        return v39;
    end;
end;
return v10;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("Http");
local l_Parent_0 = l_script_FirstAncestor_0.Parent;
local l_UpdateFetchingStatus_0 = require(l_script_FirstAncestor_0.Actions).UpdateFetchingStatus;
local l_BatchUpdateFetchingStatus_0 = require(l_script_FirstAncestor_0.Actions).BatchUpdateFetchingStatus;
local v4 = require(l_Parent_0.Cryo);
local l_FFlagLuaAppBatchFetchingStatus_0 = require(l_Parent_0.SharedFlags).FFlagLuaAppBatchFetchingStatus;
local l_FFlagLuaAppBatchSingleFetches_0 = require(l_Parent_0.SharedFlags).FFlagLuaAppBatchSingleFetches;
local function v14(v7)
    local v8 = {};
    for _, v10 in pairs(v7) do
        local l_key_0 = v10.key;
        local l_status_0 = v10.status;
        local _ = nil;
        v8[l_key_0] = if l_status_0 ~= nil then l_status_0 else v4.None;
    end;
    return v8;
end;
return function(v15, v16)
    v15 = v15 or {};
    if v16.type == l_UpdateFetchingStatus_0.name then
        local l_key_1 = v16.key;
        local l_status_1 = v16.status;
        local _ = nil;
        v15 = v4.Dictionary.join(v15, {
            [l_key_1] = if l_status_1 ~= nil then l_status_1 else v4.None
        });
    end;
    if not (not l_FFlagLuaAppBatchFetchingStatus_0 and not l_FFlagLuaAppBatchSingleFetches_0) and v16.type == l_BatchUpdateFetchingStatus_0.name then
        v15 = v4.Dictionary.join(v15, (v14(v16.fetchingStatuses)));
    end;
    return v15;
end;


local _ = require(script:FindFirstAncestor("Http").Parent.LuauPolyfill);
return {};


local l_HttpService_0 = game:GetService("HttpService");
local l_script_FirstAncestor_0 = script:FindFirstAncestor("Http");
local v2 = require(l_script_FirstAncestor_0.Url);
local _ = require(l_script_FirstAncestor_0.RequestTypes);
return function(v4, v5, v6, v7, v8, v9, v10)
    assert(v4, "requestImpl is required");
    assert(v5, "conversationId is required");
    assert(v6, "universeId is required");
    return v4(string.format("%s/send-game-link-message", v2.CHAT_URL), "POST", {
        postBody = l_HttpService_0:JSONEncode({
            conversationId = v5,
            universeId = v6,
            decorators = v7,
            isExperienceInvite = v8,
            userId = v9,
            placeId = v10
        })
    });
end;


local l_HttpService_0 = game:GetService("HttpService");
local l_script_FirstAncestor_0 = script:FindFirstAncestor("Http");
local v2 = require(l_script_FirstAncestor_0.Url);
local _ = require(l_script_FirstAncestor_0.RequestTypes);
return function(v4, v5, v6, v7, v8, v9)
    return v4(string.format("%s/send-message", v2.CHAT_URL), "POST", {
        postBody = l_HttpService_0:JSONEncode({
            conversationId = v5,
            message = v6,
            decorators = v7,
            isExperienceInvite = v8,
            userId = v9
        })
    });
end;


local l_HttpService_0 = game:GetService("HttpService");
local v1 = require(script.Parent.Parent.Url);
return function(v2, v3, _)
    return v2(string.format("%s/start-one-to-one-conversation", v1.CHAT_URL), "POST", {
        postBody = l_HttpService_0:JSONEncode({
            participantuserId = v3
        })
    });
end;


local l_Players_0 = game:GetService("Players");
local v1 = require(script:FindFirstAncestor("Http").Url);
return function(v2, v3)
    return v2(string.format("%s/users/%s/friends/statuses?userIds=%s", v1.FRIEND_URL, tostring(l_Players_0.LocalPlayer.UserId), (table.concat(v3, ","))), "GET");
end;


local v0 = require(script.Parent.Parent.Url);
return function(v1, v2, v3)
    return v1(string.format("%s/users/%s/friends?%s", v0.FRIEND_URL, v2, (v0:makeQueryString({
        userSort = v3
    }))), "GET");
end;


return {
    DEPRECATED_ChatSendGameLinkMessage = require(script.DEPRECATED_ChatSendGameLinkMessage),
    DEPRECATED_ChatSendMessage = require(script.DEPRECATED_ChatSendMessage),
    DEPRECATED_ChatStartOneToOneConversation = require(script.DEPRECATED_ChatStartOneToOneConversation),
    DEPRECATED_FriendsGetFriendStatuses = require(script.DEPRECATED_FriendsGetFriendStatuses),
    DEPRECATED_UsersGetFriends = require(script.DEPRECATED_UsersGetFriends)
};


return {
    UNKNOWN_ERROR = -1,
    OK = 200,
    NO_CONTENT = 204,
    BAD_REQUEST = 400,
    UNAUTHORIZED = 401,
    FORBIDDEN = 403,
    NOT_FOUND = 404,
    REQUEST_TIMEOUT = 408,
    CONFLICT = 409,
    TOO_MANY_REQUESTS = 429,
    INTERNAL_SERVER_ERROR = 500,
    NOT_IMPLEMENTED = 501,
    BAD_GATEWAY = 502,
    SERVICE_UNAVAILABLE = 503,
    GATEWAY_TIMEOUT = 504,
    VARIANT_ALSO_NEGOTIATES = 506,
    INSUFFICIENT_STORAGE = 507,
    LOOP_DETECTED = 508
};


local l_script_FirstAncestor_0 = script:FindFirstAncestor("Http");
local l_Parent_0 = l_script_FirstAncestor_0.Parent;
local v2 = require(l_Parent_0.Cryo);
local v3 = require(l_Parent_0.ArgCheck);
local l_PromiseUtilities_0 = require(l_Parent_0.AppCommonLib).Utils.PromiseUtilities;
local v5 = require(script.Parent.FetchSubdividedThumbnails);
local v6 = require(l_script_FirstAncestor_0.PerformFetch);
local function _(v7)
    return (tostring(v7));
end;
local v9 = {};
local function v11(v10)
    return "luaapp.thumbnails." .. tostring(v10.targetId) .. (not not v10.iconSize and "." .. v10.iconSize or "") .. (not not v10.requestName and "." .. v10.requestName or "");
end;
v9.KeyMapper = v11;
local function v16(v12, v13)
    local v14 = {};
    for v15 = 1, #v12, v13 do
        table.insert(v14, (v2.List.getRange(v12, v15, (v15 + v13) - 1)));
    end;
    return v14;
end;
v9.Fetch = function(v17, v18, v19, v20, v21, v22, v23)
    local v24 = v19 or "150x150";
    v3.isType(v18, "table", "targetIds");
    v3.isType(v20, "string", "requestName");
    v3.isNonNegativeNumber(#v18, "targetIds count");
    local v25 = {};
    local v26 = {};
    for _, v28 in pairs(v18) do
        table.insert(v25, {
            targetId = v28,
            iconSize = v24,
            requestName = v20
        });
    end;
    for _, v30 in ipairs((v16(v25, 100))) do
        table.insert(v26, v23:dispatch(v5.Fetch(v17, v30, v11, v20, v21, v22)));
    end;
    return l_PromiseUtilities_0.Batch(v26);
end;
v9.GetFetchingStatus = function(v31, v32, v33, v34)
    local l_GetStatus_0 = v6.GetStatus;
    local l_v31_0 = v31;
    local v37 = {
        targetId = v32,
        requestName = v34,
        iconSize = v33
    };
    return l_GetStatus_0(l_v31_0, "luaapp.thumbnails." .. tostring(v37.targetId) .. (not not v37.iconSize and "." .. v37.iconSize or "") .. (not not v37.requestName and "." .. v37.requestName or ""));
end;
return v9;


local l_CorePackages_0 = game:GetService("CorePackages");
local l_MessageBusService_0 = game:GetService("MessageBusService");
local l_script_FirstAncestor_0 = script:FindFirstAncestor("Http");
local v3 = require(l_CorePackages_0.Promise);
local v4 = require(l_CorePackages_0.Cryo);
local v5 = require(l_CorePackages_0.Logging);
local _ = require(l_script_FirstAncestor_0.RequestTypes);
if not game:DefineFastFlag("ConsoleCredentialsHeadersEverywhere", false) and not game:GetEngineFeature("ConsoleCredentialsHeaders") then
    local _ = function()
        return (v3.new(function(v7, _)
            l_MessageBusService_0:MakeRequest("CredentialsProtocol", "getCredentialsRequest", {
                type = "consoleAuthCode"
            }, function(v9)
                v7(v9);
            end, {});
        end));
    end;
    local _ = function()
        return v3.new(function(v11, _)
            l_MessageBusService_0:MakeRequest("CredentialsProtocol", "getHeaders", {}, function(v13)
                v11(v13);
            end, {});
        end);
    end;
    return function(v15, v16, v17, v18)
        if not game:GetEngineFeature("ConsoleCredentialsHeaders") then
            return v3.new(function(v19, _)
                l_MessageBusService_0:MakeRequest("CredentialsProtocol", "getCredentialsRequest", {
                    type = "consoleAuthCode"
                }, function(v21)
                    v19(v21);
                end, {});
            end):andThen(function(v22)
                if v22 == nil then
                    return v3.reject();
                else
                    local l_authCode_0 = v22.authCode;
                    local v24 = v22.issuerId or 0;
                    local v25 = v22.errorCode or 0;
                    if v25 ~= 0 then
                        warn("authcode error:", v25);
                        return v3.reject({
                            errorCode = v25
                        });
                    else
                        local v26 = if not v18.headers then {} else v18.headers;
                        v26.Authorization = l_authCode_0;
                        if v24 ~= 0 then
                            v26.Issuer = tostring(v24);
                        end;
                        local l_v18_0 = v18;
                        l_v18_0.headers = v26;
                        return v15(v16, v17, l_v18_0);
                    end;
                end;
            end, function(v28)
                return v3.reject(v28);
            end);
        else
            return v3.new(function(v29, _)
                l_MessageBusService_0:MakeRequest("CredentialsProtocol", "getHeaders", {}, function(v31)
                    v29(v31);
                end, {});
            end):andThen(function(v32)
                if v32 ~= nil and v32.success then
                    v18.headers = v4.Dictionary.join(v18.headers or {}, v32.headers or {});
                    return v15(v16, v17, v18);
                else
                    warn("credential headers error");
                    return v3.reject();
                end;
            end, function(v33)
                return v3.reject(v33);
            end);
        end;
    end;
else
    return function(v34, v35, v36, v37)
        return v3.new(function(v38, v39)
            l_MessageBusService_0:MakeRequest("CredentialsProtocol", "getHeaders", {}, function(v40)
                if not (v40 and v40.success) then
                    v5.warn("credential headers error");
                    v39({});
                end;
                v37.headers = v4.Dictionary.join(v37.headers or {}, v40.headers or {});
                return v34(v35, v36, v37):andThen(v38):catch(v39);
            end, {});
        end);
    end;
end;


return {
    ApiFetchThumbnails = require(script.ApiFetchThumbnails),
    ConsoleAuthRequestWrapper = require(script.ConsoleAuthRequestWrapper)
};


local l_script_FirstAncestor_0 = script:FindFirstAncestor("Http");
local l_UpdateFetchingStatus_0 = require(l_script_FirstAncestor_0.Actions).UpdateFetchingStatus;
local l_BatchUpdateFetchingStatus_0 = require(l_script_FirstAncestor_0.Actions).BatchUpdateFetchingStatus;
return function(v3)
    local v4 = {};
    local v5 = false;
    local v6 = v3 or 0;
    return function(v7, v8)
        local function _()
            if not v5 then
                v5 = true;
                task.delay(v6, function()
                    local l_v4_0 = v4;
                    v4 = {};
                    v5 = false;
                    v8:dispatch(l_BatchUpdateFetchingStatus_0(l_v4_0, true));
                end);
                return ;
            else
                return ;
            end;
        end;
        return function(v11)
            if v11.type == l_UpdateFetchingStatus_0.name then
                table.insert(v4, v11);
                if not v5 then
                    v5 = true;
                    task.delay(v6, function()
                        local l_v4_1 = v4;
                        v4 = {};
                        v5 = false;
                        v8:dispatch(l_BatchUpdateFetchingStatus_0(l_v4_1, true));
                    end);
                end;
            elseif not (v11.type == l_BatchUpdateFetchingStatus_0.name) or v11.shouldImmediatelyDispatch then
                return v7(v11);
            else
                for _, v14 in pairs(v11.fetchingStatuses) do
                    table.insert(v4, v14);
                end;
                if not v5 then
                    v5 = true;
                    task.delay(v6, function()
                        local l_v4_2 = v4;
                        v4 = {};
                        v5 = false;
                        v8:dispatch(l_BatchUpdateFetchingStatus_0(l_v4_2, true));
                    end);
                end;
            end;
            return nil;
        end;
    end;
end;


local v0 = require(script.Requests);
local v1 = require(script.Reducers);
local v2 = require(script.PerformFetch);
local v3 = require(script.createPerformFetchMiddleware);
local _ = require(script.RequestTypes);
return {
    Enum = require(script.Enum),
    Requests = v0,
    Url = require(script.Url),
    Utils = require(script.Utils),
    Reducers = v1,
    PerformFetch = v2,
    StatusCodes = require(script.StatusCodes),
    createPerformFetchMiddleware = v3,
    NetworkLayers = require(script.NetworkLayers),
    NetworkProfiler = require(script.NetworkProfiler)
};


game:DefineFastFlag("LuaIdentityProtocol", false);
return function()
    return game:GetFastFlag("LuaIdentityProtocol");
end;


local v0 = require(script.IdentityProtocol);
local _ = require(script.IdentityProtocolTypes);
return {
    IdentityProtocol = v0
};


local l_CollectionService_0 = game:GetService("CollectionService");
local l_Parent_0 = script:FindFirstAncestor("Impressions").Parent;
local v2 = require(l_Parent_0.Roact);
local v3 = require(l_Parent_0.ArgCheck);
local v4 = require(l_Parent_0.t);
local l_withNavigationFocus_0 = require(l_Parent_0.RoactNavigation).withNavigationFocus;
local v6 = require(script.Parent.Constants);
local v7 = v2.PureComponent:extend("ImpressionsDetector");
v7.validateProps = v4.strictInterface({
    scanDebounceSeconds = v4.optional(v4.number),
    viewFillPercent = v4.optional(v4.number),
    parentRef = v4.optional(v4.table),
    impressionsTag = v4.string,
    onRequestImpressionsSignal = v4.table,
    viewPortBounds = v4.strictInterface({
        min = v4.Vector2,
        max = v4.Vector2
    }),
    filterImpressionFunc = v4.optional(v4.callback),
    onImpressionsDetected = v4.union(v4.callback, v4.table),
    skipZeroSizes = v4.optional(v4.boolean),
    isFocused = v4.boolean,
    navigation = v4.table
});
v7.defaultProps = {
    scanDebounceSeconds = 1,
    viewFillPercent = 0.25
};
v7.init = function(v8)
    v8.isMounted = false;
    v8.lastImpressionTick = nil;
    v8.nextImpressionTick = nil;
end;
v7._boundingBoxIntersectsView = function(v9, v10)
    if v10 then
        local l_viewPortBounds_0 = v9.props.viewPortBounds;
        v3.assert(l_viewPortBounds_0 ~= nil);
        if l_viewPortBounds_0 then
            local l_AbsoluteSize_0 = v10.AbsoluteSize;
            local l_AbsolutePosition_0 = v10.AbsolutePosition;
            local v14 = l_AbsolutePosition_0 + l_AbsoluteSize_0;
            local v15 = false;
            if l_viewPortBounds_0.min.X < v14.X then
                v15 = l_AbsolutePosition_0.X < l_viewPortBounds_0.max.X;
            end;
            local v16 = false;
            if l_viewPortBounds_0.min.Y < v14.Y then
                v16 = l_AbsolutePosition_0.Y < l_viewPortBounds_0.max.Y;
            end;
            if not v15 or not v16 then
                return false;
            else
                return true;
            end;
        else
            return false;
        end;
    else
        return false;
    end;
end;
v7._isInstanceVisible = function(v17, v18)
    if v17:_boundingBoxIntersectsView(v18) then
        local l_viewPortBounds_1 = v17.props.viewPortBounds;
        v3.assert(l_viewPortBounds_1 ~= nil);
        local v20 = nil;
        local v21 = l_viewPortBounds_1.max - l_viewPortBounds_1.min;
        if not (v21.X > 0) or v21.Y <= 0 then
            return false;
        else
            v20 = v21 * v17.props.viewFillPercent;
            v21 = v3.assert;
            local v22 = false;
            if v20.X > 0 then
                v22 = v20.Y > 0;
            end;
            v21(v22);
            if not (v20.X > 0) or v20.Y <= 0 then
                return false;
            else
                v21 = v18.AbsolutePosition;
                v22 = v18.AbsoluteSize;
                if v17.props.skipZeroSizes and (not (v22.X ~= 0) or v22.Y == 0) then
                    return false;
                else
                    local v23 = v21 + v22 / 2;
                    local v24 = v21 + v22;
                    local v25 = false;
                    if l_viewPortBounds_1.min.X < v23.X then
                        v25 = v23.X < l_viewPortBounds_1.max.X;
                    end;
                    local v26 = false;
                    if l_viewPortBounds_1.min.Y < v23.Y then
                        v26 = v23.Y < l_viewPortBounds_1.max.Y;
                    end;
                    if not v25 or not v26 then
                        local v27 = v24:Min(l_viewPortBounds_1.max) - v21:Max(l_viewPortBounds_1.min);
                        local v28 = v20.X <= v27.X;
                        if not v26 or not v28 then
                            local v29 = v20.Y <= v27.Y;
                            if not v25 or not v29 then
                                if not v28 or not v29 then
                                    return false;
                                else
                                    return true;
                                end;
                            else
                                return true;
                            end;
                        else
                            return true;
                        end;
                    else
                        return true;
                    end;
                end;
            end;
        end;
    else
        return false;
    end;
end;
v7._calculateImpressions = function(v30)
    if v30.isMounted then
        if v30.props.isFocused then
            v30.lastImpressionTick = tick();
            if v30.props.parentRef ~= nil then
                local l_current_0 = v30.props.parentRef.current;
                if not (l_current_0 ~= nil and v30:_boundingBoxIntersectsView(l_current_0)) then
                    return ;
                end;
            end;
            local l_impressionsTag_0 = v30.props.impressionsTag;
            local v33 = {};
            for _, v35 in ipairs((l_CollectionService_0:GetTagged(l_impressionsTag_0))) do
                local l_v35_Attribute_0 = v35:GetAttribute(v6.ItemIndex);
                if not (((not l_v35_Attribute_0 or not v35:isA("GuiObject")) or not v30:_isInstanceVisible(v35)) or v30.props.filterImpressionFunc ~= nil and not v30.props.filterImpressionFunc(l_v35_Attribute_0)) then
                    table.insert(v33, l_v35_Attribute_0);
                end;
            end;
            if #v33 > 0 then
                v3.assert(v30.props.onImpressionsDetected ~= nil);
                v30.props.onImpressionsDetected(v33);
            end;
            return ;
        else
            return ;
        end;
    else
        return ;
    end;
end;
v7._requestImpressions = function(v37)
    if v37.isMounted then
        if v37.props.isFocused then
            if v37.nextImpressionTick ~= nil then
                return ;
            elseif v37.props.impressionsTag then
                local v38 = 0;
                if v37.lastImpressionTick ~= nil then
                    v37.nextImpressionTick = v37.lastImpressionTick + v37.props.scanDebounceSeconds;
                    v38 = v37.nextImpressionTick - tick();
                end;
                if v38 > 0 then
                    task.delay(v38, function()
                        local l_assert_0 = v3.assert;
                        local v40 = false;
                        if v37.nextImpressionTick ~= nil then
                            v40 = v37.nextImpressionTick < tick();
                        end;
                        l_assert_0(v40);
                        v37.nextImpressionTick = nil;
                        v37:_calculateImpressions();
                    end);
                    return ;
                else
                    v37.nextImpressionTick = nil;
                    v37:_calculateImpressions();
                    return ;
                end;
            else
                return ;
            end;
        else
            return ;
        end;
    else
        return ;
    end;
end;
v7.render = function(_)
    return nil;
end;
v7.didMount = function(v42)
    v42.isMounted = true;
    v42:_requestImpressions();
    if v42.props.onRequestImpressionsSignal then
        v42.onRequestImpressionsConnection = v42.props.onRequestImpressionsSignal:connect(function()
            v42:_requestImpressions();
        end);
    end;
end;
v7.willUnmount = function(v43)
    v43.isMounted = false;
    if v43.onRequestImpressionsConnection ~= nil then
        v43.onRequestImpressionsConnection:disconnect();
        v43.onRequestImpressionsConnection = nil;
    end;
end;
v7.didUpdate = function(v44, _, _)
    v44:_requestImpressions();
end;
return (l_withNavigationFocus_0(v7));


local l_CollectionService_0 = game:GetService("CollectionService");
local v1 = require(script.Parent.Constants);
return {
    AddTag = function(v2, v3, v4)
        local v5 = not not v2 and v2.current or nil;
        if not (not v3 or not v5) then
            if not v4 then
                warn("addTag: impression instance not tagged, missing index");
            else
                v5:SetAttribute(v1.ItemIndex, v4);
                if not l_CollectionService_0:HasTag(v5, v3) then
                    l_CollectionService_0:AddTag(v5, v3);
                    return ;
                end;
            end;
        end;
    end,
    RemoveTag = function(v6, v7, v8)
        local v9 = not not v6 and v6.current or nil;
        if not (not v7 or not v9) then
            if v8 then
                v9:SetAttribute(v1.ItemIndex, nil);
            end;
            l_CollectionService_0:RemoveTag(v9, v7);
        end;
    end
};


local v0 = require(script:FindFirstAncestor("Impressions").Parent.React);
local v1 = require(script.Parent.useImpressionsTagger);
return function(v2)
    local v3 = v0.useRef(nil);
    v1(v3, v2.impressionsTag, v2.impressionsIndex);
    return v0.createElement("Frame", {
        Size = UDim2.fromScale(1, 1),
        BackgroundTransparency = 1,
        LayoutOrder = v2.impressionsIndex,
        ref = v3
    }, {
        ComponentWithImpressionsTag = v2.renderComponent()
    });
end;


local l_CollectionService_0 = game:GetService("CollectionService");
local l_RunService_0 = game:GetService("RunService");
local v2 = require(script:FindFirstAncestor("Impressions").Parent.Cryo);
local v3 = require(script.Parent.Constants);
local v4 = game:DefineFastFlag("DebugEnableImpressionsVisualizer", false);
local v5 = {
    Color3.new(0.941176, 0.941176, 0.015686),
    Color3.new(0.890196, 0.058823, 0.058823),
    Color3.new(0.031372, 0.870588, 0.031372),
    Color3.new(0.866666, 0.039215, 0.647058),
    Color3.new(0.035294, 0.631372, 0.866666),
    Color3.new(0.882352, 0.556862, 0.035294),
    Color3.new(0.729411, 0.043137, 0.835294)
};
local v6 = 1;
local v7 = {
    None = "None",
    Highlight = "Highlight",
    FadeOut = "FadeOut"
};
local v8 = {
    BackgroundColor3 = Color3.new(1, 1, 1),
    BorderColor3 = Color3.new(1, 1, 1),
    BackgroundTransparency = 0,
    BorderMode = Enum.BorderMode.Outline,
    BorderSizePixel = 15,
    ZIndex = 100
};
local v9 = {
    BackgroundTransparency = 0.65,
    BorderSizePixel = 8
};
local v10 = {};
v10.__index = v10;
local function v16(v11)
    local v12 = {};
    for _, v14 in ipairs((l_CollectionService_0:GetTagged(v11))) do
        local l_v14_Attribute_0 = v14:GetAttribute(v3.ItemIndex);
        if not (not l_v14_Attribute_0 or not v14:isA("GuiObject")) then
            v12[l_v14_Attribute_0] = v14;
        end;
    end;
    return v12;
end;
v10.new = function(v17, v18)
    local v20 = {
        impressionsTag = v17,
        highlightedInstances = {},
        originalInstances = {},
        highlightColor = v5[v6],
        customKeyMapper = v18 or function(v19)
            return v19;
        end
    };
    setmetatable(v20, v10);
    if v4 then
        v6 = v6 + 1;
        if #v5 < v6 then
            v6 = v6 % #v5;
        end;
        if v17 then
            local v21 = nil;
            do
                local l_v21_0 = v21;
                l_v21_0 = l_RunService_0.RenderStepped:Connect(function(v23)
                    if not v20 then
                        if l_v21_0 then
                            l_v21_0:Disconnect();
                        end;
                        return ;
                    else
                        v20:_step(v23);
                        return ;
                    end;
                end);
                v20.renderConnection = l_v21_0;
            end;
        end;
    end;
    return v20;
end;
v10.destroy = function(v24)
    if v24.renderConnection then
        v24.renderConnection:Disconnect();
    end;
end;
v10._startHighlightState = function(v25, v26, v27, v28, v29, v30)
    local v31 = v25.highlightedInstances[v26];
    if v31 == nil then
        v25.highlightedInstances[v26] = {
            highlightState = v27,
            currentFields = {}
        };
        v31 = v25.highlightedInstances[v26];
    else
        v31.highlightState = v27;
    end;
    v31.totalDuration = v28;
    v31.duration = v28;
    v31.doLerp = v30;
    if not v30 then
        v31.startFields = nil;
        v31.targetFields = nil;
        for v32, v33 in pairs(v29) do
            v31.currentFields[v32] = v33;
        end;
    else
        local v34 = {};
        local v35 = {};
        for v36, v37 in pairs(v29) do
            v34[v36] = v31.currentFields[v36];
            v35[v36] = v37;
        end;
        v31.startFields = v34;
        v31.targetFields = v35;
    end;
    v25.highlightedInstances[v26] = v31;
end;
v10._step = function(v38, v39)
    assert(v38.impressionsTag, "impressionsTag is nil");
    for v40, v41 in pairs(v38.highlightedInstances) do
        if (v41.doLerp and v41.duration ~= nil) and v41.totalDuration ~= nil then
            assert(v41.startFields, "startFields is nil");
            assert(v41.targetFields, "targetFields is nil");
            if v41.duration <= 0 then
                v41.doLerp = nil;
                v41.duration = nil;
                for v42, v43 in pairs(v41.targetFields) do
                    v41.currentFields[v42] = v43;
                end;
            else
                local v44 = math.clamp((v41.totalDuration - v41.duration) / v41.totalDuration, 0, 1);
                for v45, v46 in pairs(v41.targetFields) do
                    local v47 = v41.startFields[v45];
                    v41.currentFields[v45] = v47 + (v46 - v47) * v44;
                end;
            end;
        end;
        if v41.highlightState == v7.Highlight then
            assert(v41.duration ~= nil, "duration is nil");
            if v41.duration <= 0 then
                v38:_startHighlightState(v40, v7.FadeOut, 2.5, v9, true);
            end;
        end;
        if v41.duration then
            v41.duration = v41.duration - v39;
        end;
    end;
    for v48, v49 in pairs((v16(v38.impressionsTag))) do
        if v49 ~= nil then
            if v38.originalInstances[v49] == nil then
                v38.originalInstances[v49] = {};
                for v50, _ in pairs(v8) do
                    v38.originalInstances[v49][v50] = v49[v50];
                end;
            end;
            local v52 = v38.customKeyMapper(v48);
            local v53 = v38.highlightedInstances[v52];
            if v53 == nil then
                v53 = {
                    highlightState = v7.None,
                    currentFields = {}
                };
                assert(v38.originalInstances[v49], "self.originalInstances[instance] is nil");
                for v54, v55 in pairs(v38.originalInstances[v49]) do
                    v53.currentFields[v54] = v55;
                end;
                v38.highlightedInstances[v52] = v53;
            end;
            assert(v53 ~= nil, "stateData is nil");
            if v53.currentFields then
                for v56, v57 in pairs(v53.currentFields) do
                    v49[v56] = v57;
                end;
            end;
        end;
    end;
end;
v10._highlightImpression = function(v58, v59)
    if v58.highlightedInstances[v59] ~= nil and v58.highlightedInstances[v59].highlightState ~= v7.None then
        return ;
    else
        v58:_startHighlightState(v59, v7.Highlight, 1, v2.Dictionary.join(v8, {
            BackgroundColor3 = v58.highlightColor,
            BorderColor3 = v58.highlightColor
        }), false);
        return ;
    end;
end;
v10._clearImpression = function(v60, v61)
    v60.highlightedInstances[v61] = nil;
end;
v10.onSendImpressions = function(v62, v63)
    if v4 then
        if not (v62.impressionsTag and v63 ~= nil) or #v63 <= 0 then
            return ;
        else
            for _, v65 in ipairs(v63) do
                v62:_highlightImpression((v62.customKeyMapper(v65)));
            end;
            return ;
        end;
    else
        return ;
    end;
end;
v10.onClearImpressions = function(v66, v67)
    if v4 then
        if not (v66.impressionsTag and v67 ~= nil) or #v67 <= 0 then
            return ;
        else
            for _, v69 in ipairs(v67) do
                v66:_clearImpression((v66.customKeyMapper(v69)));
            end;
            return ;
        end;
    else
        return ;
    end;
end;
v10.onClearAllImpressions = function(v70)
    if v4 then
        if v70.impressionsTag then
            for v71, v72 in pairs(v70.originalInstances) do
                for v73, v74 in pairs(v72) do
                    v71[v73] = v74;
                end;
            end;
            v70.highlightedInstances = {};
            v70.originalInstances = {};
            return ;
        else
            return ;
        end;
    else
        return ;
    end;
end;
v10.setCustomKeyMapper = function(v75, v76)
    v75.customKeyMapper = v76 or function(v77)
        return v77;
    end;
end;
v10.setImpressionsTag = function(v78, v79)
    v78.impressionsTag = v79;
end;
return v10;


local l_Parent_0 = script:FindFirstAncestor("Impressions").Parent;
local v1 = require(l_Parent_0.Roact);
local v2 = require(l_Parent_0.RoactRodux);
local v3 = require(l_Parent_0.t);
local l_memoize_0 = require(l_Parent_0.AppCommonLib).memoize;
local v5 = require(script.Parent.ImpressionsDetector);
local v6 = v1.PureComponent:extend("ScreenSizeImpressionsDetector");
v6.validateProps = v3.strictInterface({
    impressionsTag = v3.string,
    parentRef = v3.optional(v3.table),
    onRequestImpressionsSignal = v3.table,
    filterImpressionFunc = v3.optional(v3.callback),
    onImpressionsDetected = v3.callback,
    skipZeroSizes = v3.optional(v3.boolean),
    screenSize = v3.Vector2,
    globalGuiInset = v3.table,
    topBarHeight = v3.number
});
local v10 = l_memoize_0(function(v7, v8, v9)
    return {
        min = Vector2.new(0, v7),
        max = Vector2.new(v8.X, v8.Y - v9.bottom)
    };
end);
v6.render = function(v11)
    return v1.createElement(v5, {
        parentRef = v11.props.parentRef,
        impressionsTag = v11.props.impressionsTag,
        onRequestImpressionsSignal = v11.props.onRequestImpressionsSignal,
        viewPortBounds = v10(v11.props.topBarHeight, v11.props.screenSize, v11.props.globalGuiInset),
        filterImpressionFunc = v11.props.filterImpressionFunc,
        onImpressionsDetected = v11.props.onImpressionsDetected,
        skipZeroSizes = v11.props.skipZeroSizes
    });
end;
return (v2.connect(function(v12, _)
    return {
        topBarHeight = v12.TopBar.topBarHeight,
        globalGuiInset = v12.GlobalGuiInset,
        screenSize = v12.ScreenSize
    };
end)(v6));


return {
    ["jest.config"] = script["jest.config"],
    Constants = require(script.Constants),
    ImpressionsDetector = require(script.ImpressionsDetector),
    ImpressionsTaggerWrapper = require(script.ImpressionsTaggerWrapper),
    ImpressionsTagUtility = require(script.ImpressionsTagUtility),
    ImpressionsVisualizer = require(script.ImpressionsVisualizer),
    ScreenSizeImpressionsDetector = require(script.ScreenSizeImpressionsDetector),
    useImpressionsTagger = require(script.useImpressionsTagger)
};


local v0 = require(script.Parent.Parent.Dev.JestConfigs);
return {
    displayName = "Impressions",
    setupFilesAfterEnv = {
        v0.setupFiles.LogHandler,
        v0.setupFiles.UIBloxInitializer,
        v0.setupFiles.createPromiseRejectionHandler()
    }
};


local l_Parent_0 = script:FindFirstAncestor("Impressions").Parent;
local v1 = require(l_Parent_0.React);
local l_dependencyArray_0 = require(l_Parent_0.RoactUtils).Hooks.dependencyArray;
local v3 = require(script.Parent.ImpressionsTagUtility);
return function(v4, v5, v6)
    v1.useEffect(function()
        v3.AddTag(v4, v5, v6);
        return function()
            v3.RemoveTag(v4, v5, v6);
        end;
    end, l_dependencyArray_0(v4, v5, v6));
end;


local l_Parent_0 = script:FindFirstAncestor("InExperienceLocales").Parent;
local l_LocalizationContext_0 = require(l_Parent_0.Localization).LocalizationContext;
local l_Signal_0 = require(l_Parent_0.AppCommonLib).Signal;
local l_Locales_0 = script.Parent.Locales;
local function v10(v4)
    local v5 = l_LocalizationContext_0.getRelevantLanguages(v4);
    local v6 = {};
    for _, v8 in ipairs(v5) do
        local l_l_Locales_0_FirstChild_0 = l_Locales_0:FindFirstChild(v8);
        if l_l_Locales_0_FirstChild_0 then
            v6[v8] = require(l_l_Locales_0_FirstChild_0);
        end;
    end;
    return v6;
end;
local v11 = {};
v11.__index = v11;
v11.new = function(v12)
    local v13 = {
        locale = v12,
        changed = l_Signal_0.new(),
        localizationContext = l_LocalizationContext_0.new((v10(v12)))
    };
    setmetatable(v13, v11);
    return v13;
end;
v11.SetLocale = function(v14, v15)
    v14.locale = v15;
    v14.localizationContext:addTranslations((v10(v15)));
    v14.changed:fire();
end;
v11.GetLocale = function(v16)
    return v16.locale;
end;
v11.Format = function(v17, v18, v19)
    if not v18 then
        error("ERROR: NO STRING FOR KEY");
    end;
    return (v17.localizationContext:getString(v17.locale, v18, v19));
end;
return v11;


local l_Players_0 = game:GetService("Players");
local l_script_FirstAncestor_0 = script:FindFirstAncestor("InGameAssetReporting");
local _ = require(l_script_FirstAncestor_0.Analysis.Types);
local v3 = require(l_script_FirstAncestor_0.Flags.GetFIntIGARRaycastTargetCount);
local v4 = require(l_script_FirstAncestor_0.Flags.GetFIntIGARSubtreeDivergenceThresholdPerMille);
local v5 = require(l_script_FirstAncestor_0.Analysis.extractAssetIdsFromInstance);
local v6 = Random.new();
getRandomSampleUniformDisk = function(v7, v8, v9)
    local v10 = nil;
    local v11 = nil;
    local v12 = 0;
    while true do
        local v13 = (v6:NextNumber() * 2) * 3.141592653589793;
        local v14 = math.sqrt((v6:NextNumber())) * v8;
        local v15 = math.cos(v13) * v14;
        local v16 = math.sin(v13) * v14;
        v10 = v7.X + v15;
        v11 = v7.Y + v16;
        v12 = v12 + 1;
        if v12 > 6 then
            return v7;
        elseif not (not ((v10 >= 0 and v10 <= v9.X) and v11 >= 0) or v11 > v9.Y) then
            return Vector2.new(v10, v11);
        end;
    end;
end;
interpretAnnotation = function(v17, v18, v19)
    local v20 = false;
    local v21 = {
        hitCountMap = {},
        stats = {
            targetCount = v3(),
            completedCount = 0,
            hitCount = 0,
            resumptionCount = 0,
            wallTime = 0,
            computeTime = 0
        },
        highlights = {},
        topLevelObjects = {},
        errorReason = nil,
        cancel = function()
            v20 = true;
        end
    };
    v21.raycastComputation = coroutine.create(function()
        v19(v21);
    end);
    local l_CurrentCamera_0 = workspace.CurrentCamera;
    if l_CurrentCamera_0 == nil then
        v21.errorReason = "No camera";
        return v21;
    else
        local l_ViewportSize_0 = l_CurrentCamera_0.ViewportSize;
        if not ((v17.X >= 0 and l_ViewportSize_0.X >= v17.X) and v17.Y >= 0) or l_ViewportSize_0.Y < v17.Y then
            v21.errorReason = "Coordinates out of bounds";
            return v21;
        elseif not (v18 > 0) or math.max(l_ViewportSize_0.X, l_ViewportSize_0.Y) < v18 then
            v21.errorReason = "Invalid radius";
            return v21;
        else
            local l_LocalPlayer_0 = l_Players_0.LocalPlayer;
            if l_LocalPlayer_0 == nil then
                v21.errorReason = "No local player";
                return v21;
            else
                local v25 = {
                    l_LocalPlayer_0.Character
                };
                v21.raycastComputation = coroutine.create(function()
                    local v26 = RaycastParams.new();
                    v26.FilterType = Enum.RaycastFilterType.Exclude;
                    v26.FilterDescendantsInstances = v25;
                    v26.IgnoreWater = true;
                    local v27 = os.clock();
                    local v28 = os.clock();
                    for _ = 1, v21.stats.targetCount do
                        if not v20 then
                            if v28 + 0.011111111111111112 < os.clock() then
                                local l_stats_0 = v21.stats;
                                l_stats_0.computeTime = l_stats_0.computeTime + (os.clock() - v28);
                                task.wait();
                                v28 = os.clock();
                                l_stats_0 = v21.stats;
                                l_stats_0.resumptionCount = l_stats_0.resumptionCount + 1;
                                if v20 then
                                    break;
                                end;
                            end;
                            local v31 = getRandomSampleUniformDisk(v17, v18, l_ViewportSize_0);
                            local v32 = l_CurrentCamera_0:ViewportPointToRay(v31.X, v31.Y);
                            local v33 = nil;
                            for _ = 1, 5 do
                                v33 = workspace:Raycast(v32.Origin, v32.Direction * 5000, v26);
                                if v33 ~= nil then
                                    local l_Instance_0 = v33.Instance;
                                    if (1 - l_Instance_0.Transparency) * (1 - l_Instance_0.LocalTransparencyModifier) <= 0.05 then
                                        table.insert(v25, l_Instance_0);
                                        v26.FilterDescendantsInstances = v25;
                                        v33 = nil;
                                    else
                                        break;
                                    end;
                                else
                                    break;
                                end;
                            end;
                            if v33 then
                                local l_Instance_1 = v33.Instance;
                                if l_Instance_1 ~= nil then
                                    local l_stats_1 = v21.stats;
                                    l_stats_1.hitCount = l_stats_1.hitCount + 1;
                                end;
                                local v38 = nil;
                                while not (not (l_Instance_1 ~= nil) or not l_Instance_1:IsA("PVInstance") and not l_Instance_1:IsA("Accessory")) and l_Instance_1 ~= workspace do
                                    if not v21.hitCountMap[l_Instance_1] then
                                        v21.hitCountMap[l_Instance_1] = {
                                            raycastHits = 0,
                                            children = {}
                                        };
                                    end;
                                    local v39 = v21.hitCountMap[l_Instance_1];
                                    v39.raycastHits = v39.raycastHits + 1;
                                    if v38 then
                                        v21.hitCountMap[l_Instance_1].children[v38] = true;
                                    end;
                                    v38 = l_Instance_1;
                                    l_Instance_1 = l_Instance_1.Parent;
                                end;
                                if v38 then
                                    v21.topLevelObjects[v38] = (v21.topLevelObjects[v38] or 0) + 1;
                                end;
                            end;
                            local l_stats_2 = v21.stats;
                            l_stats_2.completedCount = l_stats_2.completedCount + 1;
                        else
                            break;
                        end;
                    end;
                    v21.stats.wallTime = os.clock() - v27;
                    local l_stats_3 = v21.stats;
                    l_stats_3.computeTime = l_stats_3.computeTime + (os.clock() - v28);
                    v19(v21);
                end);
                return v21;
            end;
        end;
    end;
end;
createPlayerCharacterReferenceToPlayerMap = function(v42)
    local v43 = {};
    for _, v45 in ipairs(v42) do
        local l_Character_0 = v45.Character;
        if l_Character_0 then
            v43[l_Character_0] = v45;
        end;
    end;
    return v43;
end;
descendingOrderBySecondElement = function(v47, v48)
    return v48[2] < v47[2];
end;
createTraversalTaskList = function(v49, v50)
    local v51 = {};
    local v52 = {};
    local v53 = createPlayerCharacterReferenceToPlayerMap(l_Players_0:GetPlayers());
    local v54 = {};
    for v55, v56 in pairs(v50) do
        table.insert(v54, {
            v55,
            v56
        });
    end;
    table.sort(v54, descendingOrderBySecondElement);
    local v57 = v4() / 1000;
    for _, v59 in ipairs(v54) do
        local v60 = v59[1];
        local v61 = v59[2];
        if v53[v60] ~= nil then
            table.insert(v52, {
                player = v53[v60],
                count = v61
            });
        else
            local v62 = 0;
            local l_v60_0 = v60;
            while v49[l_v60_0] do
                local v64 = v49[l_v60_0];
                local l_raycastHits_0 = v64.raycastHits;
                local l_children_0 = v64.children;
                local v67 = 0;
                for v68, _ in pairs(l_children_0) do
                    if v49[v68] then
                        v67 = v67 + 1;
                    end;
                end;
                if v67 ~= 0 then
                    local v70 = 0;
                    for v71, _ in pairs(l_children_0) do
                        if v49[v71] then
                            v70 = math.max(v70, v49[v71].raycastHits);
                        end;
                    end;
                    if v70 / l_raycastHits_0 >= v57 then
                        local v73 = nil;
                        local v74 = 0;
                        for v75, _ in pairs(l_children_0) do
                            if v49[v75] and v74 < v49[v75].raycastHits then
                                v73 = v75;
                                v74 = v49[v75].raycastHits;
                            end;
                        end;
                        l_v60_0 = v73;
                        v62 = v62 + 1;
                    else
                        break;
                    end;
                else
                    break;
                end;
            end;
            table.insert(v51, {
                instance = l_v60_0,
                count = v61
            });
            if l_v60_0 ~= v60 then
                table.insert(v51, {
                    instance = v60,
                    count = v61
                });
            end;
        end;
    end;
    return v51, v52;
end;
mutateMergeExtractedAssets = function(v77, v78, v79)
    for _, v81 in ipairs(v79.Image) do
        if not v77[v81] then
            v77[v81] = true;
            table.insert(v78.Image, v81);
        end;
    end;
    for _, v83 in ipairs(v79.Mesh) do
        if not v77[v83] then
            v77[v83] = true;
            table.insert(v78.Mesh, v83);
        end;
    end;
    for _, v85 in ipairs(v79.Model) do
        if not v77[v85] then
            v77[v85] = true;
            table.insert(v78.Model, v85);
        end;
    end;
    for _, v87 in ipairs(v79.Package) do
        if not v77[v87.id] then
            v77[v87.id] = true;
            table.insert(v78.Package, v87);
        end;
    end;
end;
extractItemsFromInterpretations = function(v88, v89)
    local v90 = false;
    local v91 = {
        extractedAssets = {
            Package = {},
            Model = {},
            Image = {},
            Mesh = {}
        },
        extractedPlayers = {},
        cancel = function()
            v90 = true;
        end,
        stats = {
            hitCountMapSize = 0,
            topLevelObjectsSize = 0,
            instancesTraversed = 0,
            traversalTaskListSize = 0,
            traversalTasksCompleted = 0,
            playersCount = 0,
            resumptionCount = 0,
            wallTime = 0,
            computeTime = 0,
            raycastTargetCount = 0,
            raycastCompletedCount = 0,
            raycastResumptionCount = 0,
            raycastComputeTime = 0
        }
    };
    v91.computation = coroutine.create(function()
        v89(v91);
    end);
    for _, v93 in ipairs(v88) do
        v93.cancel();
        local l_stats_4 = v91.stats;
        l_stats_4.raycastTargetCount = l_stats_4.raycastTargetCount + v93.stats.targetCount;
        l_stats_4 = v91.stats;
        l_stats_4.raycastCompletedCount = l_stats_4.raycastCompletedCount + v93.stats.completedCount;
        l_stats_4 = v91.stats;
        l_stats_4.raycastResumptionCount = l_stats_4.raycastResumptionCount + v93.stats.resumptionCount;
        l_stats_4 = v91.stats;
        l_stats_4.raycastComputeTime = l_stats_4.raycastComputeTime + v93.stats.computeTime;
    end;
    local v95 = os.clock();
    local v96 = {};
    local v97 = {};
    for _, v99 in ipairs(v88) do
        for v100, v101 in pairs(v99.hitCountMap) do
            if not v96[v100] then
                v96[v100] = {
                    raycastHits = 0,
                    children = {}
                };
                local l_stats_5 = v91.stats;
                l_stats_5.hitCountMapSize = l_stats_5.hitCountMapSize + 1;
            end;
            local v103 = v96[v100];
            v103.raycastHits = v103.raycastHits + v101.raycastHits;
            for v104, _ in pairs(v101.children) do
                v96[v100].children[v104] = true;
            end;
        end;
        for v106, v107 in pairs(v99.topLevelObjects) do
            local v108 = v97[v106];
            if not v108 then
                local l_stats_6 = v91.stats;
                l_stats_6.topLevelObjectsSize = l_stats_6.topLevelObjectsSize + 1;
            end;
            v97[v106] = (v108 or 0) + v107;
        end;
    end;
    local v110, v111 = createTraversalTaskList(v96, v97);
    v91.extractedPlayers = v111;
    v91.stats.playersCount = #v111;
    v91.stats.wallTime = os.clock() - v95;
    v91.stats.traversalTaskListSize = #v110;
    v91.computation = coroutine.create(function()
        local v112 = os.clock();
        local v113 = os.clock();
        local function _()
            return v113 + 0.011111111111111112 < os.clock();
        end;
        local function _()
            local l_stats_7 = v91.stats;
            l_stats_7.computeTime = l_stats_7.computeTime + (os.clock() - v113);
            task.wait();
            v113 = os.clock();
            l_stats_7 = v91.stats;
            l_stats_7.resumptionCount = l_stats_7.resumptionCount + 1;
        end;
        local v117 = {};
        local v118 = {};
        for _, v120 in ipairs(v110) do
            local v121 = {};
            local v122 = {};
            table.insert(v121, v120.instance);
            while true do
                if #v121 > 0 then
                    if v113 + 0.011111111111111112 < os.clock() then
                        local l_stats_8 = v91.stats;
                        l_stats_8.computeTime = l_stats_8.computeTime + (os.clock() - v113);
                        task.wait();
                        v113 = os.clock();
                        l_stats_8 = v91.stats;
                        l_stats_8.resumptionCount = l_stats_8.resumptionCount + 1;
                        if v90 then
                            l_stats_8 = v91.stats;
                            l_stats_8.wallTime = l_stats_8.wallTime + (os.clock() - v112);
                            v89(v91);
                            return ;
                        end;
                    end;
                    local v124 = table.remove(v121);
                    if not v118[v124] then
                        table.insert(v122, v124);
                        local l_v124_Children_0 = v124:GetChildren();
                        local v126 = {};
                        for _, v128 in pairs(l_v124_Children_0) do
                            table.insert(v126, {
                                v128,
                                not v96[v128] and 0 or v96[v128].raycastHits
                            });
                        end;
                        table.sort(v126, descendingOrderBySecondElement);
                        for _, v130 in ipairs(v126) do
                            table.insert(v121, v130[1]);
                        end;
                        v118[v124] = true;
                    end;
                else
                    while true do
                        if #v122 > 0 then
                            if v113 + 0.011111111111111112 < os.clock() then
                                local l_stats_9 = v91.stats;
                                l_stats_9.computeTime = l_stats_9.computeTime + (os.clock() - v113);
                                task.wait();
                                v113 = os.clock();
                                l_stats_9 = v91.stats;
                                l_stats_9.resumptionCount = l_stats_9.resumptionCount + 1;
                                if v90 then
                                    l_stats_9 = v91.stats;
                                    l_stats_9.wallTime = l_stats_9.wallTime + (os.clock() - v112);
                                    v89(v91);
                                    return ;
                                end;
                            end;
                            local v132 = v5((table.remove(v122)));
                            if v132 then
                                mutateMergeExtractedAssets(v117, v91.extractedAssets, v132);
                            end;
                            local l_stats_10 = v91.stats;
                            l_stats_10.instancesTraversed = l_stats_10.instancesTraversed + 1;
                        else
                            local l_stats_11 = v91.stats;
                            l_stats_11.traversalTasksCompleted = l_stats_11.traversalTasksCompleted + 1;
                            goto label0 --[[  false, false  ]];
                        end;
                    end;
                end;
            end;
            ::label0::;
        end;
        local l_stats_12 = v91.stats;
        l_stats_12.wallTime = l_stats_12.wallTime + (os.clock() - v112);
        l_stats_12 = v91.stats;
        l_stats_12.computeTime = l_stats_12.computeTime + (os.clock() - v113);
        v89(v91);
    end);
    return v91;
end;
return {
    interpretAnnotation = interpretAnnotation,
    extractItemsFromInterpretations = extractItemsFromInterpretations,
    __setRandomGenerator = function(v136)
        v6 = v136;
    end
};


local _ = require(script:FindFirstAncestor("InGameAssetReporting").Analysis.Types);
extractAssetIdsFromInstance = function(v1)
    local v2 = {
        Package = {},
        Model = {},
        Image = {},
        Mesh = {}
    };
    if (v1:IsA("PackageLink") and v1.PackageId ~= "") and v1.VersionNumber > 0 then
        table.insert(v2.Package, {
            id = v1.PackageId,
            version = v1.VersionNumber
        });
        return v2;
    elseif v1:IsA("Model") and v1.SourceAssetId > 0 then
        table.insert(v2.Model, (tostring(v1.SourceAssetId)));
        return v2;
    else
        if v1:IsA("MeshPart") and v1.MeshId ~= "" then
            table.insert(v2.Mesh, v1.MeshId);
            if v1.TextureID ~= "" then
                table.insert(v2.Image, v1.TextureID);
                return v2;
            end;
        elseif (not (v1.ClassName ~= "FileMesh") or v1.ClassName == "SpecialMesh" and v1.MeshType == Enum.MeshType.FileMesh) and v1.MeshId ~= "" then
            table.insert(v2.Mesh, v1.MeshId);
            if v1.TextureId ~= "" then
                table.insert(v2.Image, v1.TextureId);
                return v2;
            end;
        elseif v1:IsA("ImageLabel") and v1.Image ~= "" then
            table.insert(v2.Image, v1.Image);
            return v2;
        elseif not v1:IsA("ImageButton") then
            if v1:IsA("Decal") and v1.Texture ~= "" then
                table.insert(v2.Image, v1.Texture);
                return v2;
            elseif v1:IsA("SurfaceAppearance") and v1.ColorMap ~= "" then
                table.insert(v2.Image, v1.ColorMap);
                return v2;
            else
                return nil;
            end;
        else
            if v1.Image ~= "" then
                table.insert(v2.Image, v1.Image);
            end;
            if v1.HoverImage ~= "" then
                table.insert(v2.Image, v1.HoverImage);
            end;
            if v1.PressedImage ~= "" then
                table.insert(v2.Image, v1.PressedImage);
                return v2;
            end;
        end;
        return v2;
    end;
end;
return extractAssetIdsFromInstance;


game:DefineFastInt("IGARRaycastTargetCount", 250);
return function()
    return game:GetFastInt("IGARRaycastTargetCount");
end;


game:DefineFastInt("IGARSubtreeDivergenceThresholdPerMille", 800);
return function()
    return game:GetFastInt("IGARSubtreeDivergenceThresholdPerMille");
end;


local l_Parent_0 = script:FindFirstAncestor("InGameAssetReporting").Parent;
local v1 = require(l_Parent_0.React);
local v2 = require(l_Parent_0.UIBlox);
local l_withLocalization_0 = require(l_Parent_0.Localization).withLocalization;
local l_InteractiveAlert_0 = v2.App.Dialog.Alert.InteractiveAlert;
local l_ButtonType_0 = v2.App.Button.Enum.ButtonType;
return function(v6)
    return l_withLocalization_0({
        reportCompleteTitle = "Feature.ReportAbuse.Title.SelectInSceneThankYou",
        reportCompleteDescription = "Feature.ReportAbuse.Label.SelectInSceneComplete",
        reportCompleteClose = "Feature.ReportAbuse.Action.Close"
    })(function(v7)
        return v1.createElement("TextButton", {
            AutoButtonColor = false,
            BorderSizePixel = 0,
            BackgroundTransparency = 0.3,
            BackgroundColor3 = Color3.fromHex("#000000"),
            Size = UDim2.new(1, 0, 1, 0),
            Position = UDim2.fromScale(0.5, 0.5),
            AnchorPoint = Vector2.new(0.5, 0.5),
            [v1.Event.Activated] = v6.onClose,
            ZIndex = 10
        }, {
            Alert = v1.createElement(l_InteractiveAlert_0, {
                screenSize = v6.screenSize,
                title = v7.reportCompleteTitle,
                bodyText = v7.reportCompleteDescription,
                anchorPoint = Vector2.new(0.5, 0.5),
                position = UDim2.new(0.5, 0, 0.5, 0),
                buttonStackInfo = {
                    buttons = {
                        {
                            buttonType = l_ButtonType_0.PrimarySystem,
                            props = {
                                onActivated = v6.onClose,
                                text = v7.reportCompleteClose
                            }
                        }
                    }
                }
            })
        });
    end);
end;


local l_Parent_0 = script:FindFirstAncestor("InGameAssetReporting").Parent;
local v1 = require(l_Parent_0.React);
local v2 = require(l_Parent_0.UIBlox);
local l_withLocalization_0 = require(l_Parent_0.Localization).withLocalization;
local l_InteractiveAlert_0 = v2.App.Dialog.Alert.InteractiveAlert;
local l_ButtonType_0 = v2.App.Button.Enum.ButtonType;
return function(v6)
    return l_withLocalization_0({
        errorTitle = "Feature.ReportAbuse.Heading.SelectInSceneErrorTitle",
        errorDescription = "Feature.ReportAbuse.Label.SelectInSceneErrorDescription",
        errorBack = "Feature.ReportAbuse.Action.ErrorModalGoBack"
    })(function(v7)
        return v1.createElement("TextButton", {
            AutoButtonColor = false,
            BorderSizePixel = 0,
            BackgroundTransparency = 0.3,
            BackgroundColor3 = Color3.fromHex("#000000"),
            Size = UDim2.new(1, 0, 1, 0),
            Position = UDim2.fromScale(0.5, 0.5),
            AnchorPoint = Vector2.new(0.5, 0.5),
            [v1.Event.Activated] = v6.onBack,
            ZIndex = 10
        }, {
            Alert = v1.createElement(l_InteractiveAlert_0, {
                screenSize = v6.screenSize,
                title = v7.errorTitle,
                bodyText = v7.errorDescription,
                anchorPoint = Vector2.new(0.5, 0.5),
                position = UDim2.new(0.5, 0, 0.5, 0),
                buttonStackInfo = {
                    buttons = {
                        {
                            buttonType = l_ButtonType_0.PrimarySystem,
                            props = {
                                onActivated = v6.onBack,
                                text = v7.errorBack
                            }
                        }
                    }
                }
            })
        });
    end);
end;


local l_Parent_0 = script:FindFirstAncestor("InGameAssetReporting").Parent;
local v1 = require(l_Parent_0.React);
local v2 = require(l_Parent_0.UIBlox);
local l_ButtonStack_0 = v2.App.Button.ButtonStack;
local l_ButtonType_0 = v2.App.Button.Enum.ButtonType;
local l_HeaderBar_0 = v2.App.Bar.HeaderBar;
local l_IconButton_0 = v2.App.Button.IconButton;
local l_IconSize_0 = v2.App.ImageSet.Enum.IconSize;
local l_Images_0 = v2.App.ImageSet.Images;
local l_withStyle_0 = v2.Style.withStyle;
local function _(v10)
    return function()
        return l_withStyle_0(function(v11)
            local l_Theme_0 = v11.Theme;
            return v1.createElement("TextLabel", {
                Text = v10,
                Font = v11.Font.Header2.Font,
                TextColor3 = l_Theme_0.TextEmphasis.Color,
                TextTransparency = l_Theme_0.TextEmphasis.Transparency,
                TextSize = 20,
                TextWrapped = true,
                TextXAlignment = Enum.TextXAlignment.Center,
                TextYAlignment = Enum.TextYAlignment.Center,
                Size = UDim2.new(1, 0, 1, 0),
                BackgroundTransparency = 1
            });
        end);
    end;
end;
local function _(v14, v15, v16, v17, v18)
    local v19 = v17 or v18;
    return function()
        return v1.createElement("Frame", {
            BackgroundTransparency = 1,
            Size = UDim2.new(0, 120, 1, 0)
        }, {
            Layout = v1.createElement("UIListLayout", {
                FillDirection = Enum.FillDirection.Horizontal,
                HorizontalAlignment = Enum.HorizontalAlignment.Left,
                VerticalAlignment = Enum.VerticalAlignment.Center,
                SortOrder = Enum.SortOrder.LayoutOrder
            }),
            BackButton = v1.createElement(l_IconButton_0, {
                iconSize = l_IconSize_0.Medium,
                icon = l_Images_0["icons/navigation/pushBack"],
                layoutOrder = 1,
                onActivated = v14
            }),
            UndoButton = v19 and v1.createElement(l_IconButton_0, {
                iconSize = l_IconSize_0.Medium,
                icon = l_Images_0["icons/actions/edit/undo"],
                isDisabled = not v18,
                layoutOrder = 2,
                onActivated = v15
            }),
            RedoButton = v19 and v1.createElement(l_IconButton_0, {
                iconSize = l_IconSize_0.Medium,
                icon = l_Images_0["icons/actions/edit/redo"],
                isDisabled = not v17,
                layoutOrder = 3,
                onActivated = v16
            })
        });
    end;
end;
local _ = function(v21, _, v23)
    return function()
        return v1.createElement("Frame", {
            BackgroundTransparency = 1,
            Size = UDim2.new(0, 144, 1, 0)
        }, {
            Layout = v1.createElement("UIListLayout", {
                FillDirection = Enum.FillDirection.Horizontal,
                HorizontalAlignment = Enum.HorizontalAlignment.Center,
                VerticalAlignment = Enum.VerticalAlignment.Center
            }),
            Buttons = v1.createElement(l_ButtonStack_0, {
                buttons = {
                    {
                        buttonType = l_ButtonType_0.PrimarySystem,
                        props = {
                            onActivated = v21,
                            text = v23
                        }
                    }
                }
            })
        });
    end;
end;
return function(v25)
    local l_createElement_0 = v1.createElement;
    local v27 = "Frame";
    local v28 = {
        BorderSizePixel = 0,
        BackgroundTransparency = 0.1,
        BackgroundColor3 = Color3.fromHex("#000000"),
        LayoutOrder = 1,
        Size = UDim2.new(1, 0, 0, 71),
        ZIndex = 2
    };
    local v29 = {};
    local l_createElement_1 = v1.createElement;
    local l_l_HeaderBar_0_0 = l_HeaderBar_0;
    local v32 = {
        backgroundTransparency = 1,
        barHeight = 72
    };
    local l_backAction_0 = v25.backAction;
    local l_undoAnnotationPoints_0 = v25.undoAnnotationPoints;
    local l_redoAnnotationPoints_0 = v25.redoAnnotationPoints;
    local l_isRedoEnabled_0 = v25.isRedoEnabled;
    local l_isUndoEnabled_0 = v25.isUndoEnabled;
    local v38 = l_isRedoEnabled_0 or l_isUndoEnabled_0;
    local l_l_backAction_0_0 = l_backAction_0 --[[ copy: 9 -> 15 ]];
    local l_l_undoAnnotationPoints_0_0 = l_undoAnnotationPoints_0 --[[ copy: 10 -> 16 ]];
    local l_l_redoAnnotationPoints_0_0 = l_redoAnnotationPoints_0 --[[ copy: 11 -> 17 ]];
    v32.renderLeft = function()
        return v1.createElement("Frame", {
            BackgroundTransparency = 1,
            Size = UDim2.new(0, 120, 1, 0)
        }, {
            Layout = v1.createElement("UIListLayout", {
                FillDirection = Enum.FillDirection.Horizontal,
                HorizontalAlignment = Enum.HorizontalAlignment.Left,
                VerticalAlignment = Enum.VerticalAlignment.Center,
                SortOrder = Enum.SortOrder.LayoutOrder
            }),
            BackButton = v1.createElement(l_IconButton_0, {
                iconSize = l_IconSize_0.Medium,
                icon = l_Images_0["icons/navigation/pushBack"],
                layoutOrder = 1,
                onActivated = l_l_backAction_0_0
            }),
            UndoButton = v38 and v1.createElement(l_IconButton_0, {
                iconSize = l_IconSize_0.Medium,
                icon = l_Images_0["icons/actions/edit/undo"],
                isDisabled = not l_isUndoEnabled_0,
                layoutOrder = 2,
                onActivated = l_l_undoAnnotationPoints_0_0
            }),
            RedoButton = v38 and v1.createElement(l_IconButton_0, {
                iconSize = l_IconSize_0.Medium,
                icon = l_Images_0["icons/actions/edit/redo"],
                isDisabled = not l_isRedoEnabled_0,
                layoutOrder = 3,
                onActivated = l_l_redoAnnotationPoints_0_0
            })
        });
    end;
    l_backAction_0 = v25.nextAction;
    l_undoAnnotationPoints_0 = v25.annotationPoints;
    l_redoAnnotationPoints_0 = v25.nextText;
    local l_l_backAction_0_1 = l_backAction_0 --[[ copy: 9 -> 18 ]];
    v32.renderRight = function()
        return v1.createElement("Frame", {
            BackgroundTransparency = 1,
            Size = UDim2.new(0, 144, 1, 0)
        }, {
            Layout = v1.createElement("UIListLayout", {
                FillDirection = Enum.FillDirection.Horizontal,
                HorizontalAlignment = Enum.HorizontalAlignment.Center,
                VerticalAlignment = Enum.VerticalAlignment.Center
            }),
            Buttons = v1.createElement(l_ButtonStack_0, {
                buttons = {
                    {
                        buttonType = l_ButtonType_0.PrimarySystem,
                        props = {
                            onActivated = l_l_backAction_0_1,
                            text = l_redoAnnotationPoints_0
                        }
                    }
                }
            })
        });
    end;
    l_backAction_0 = v25.titleText;
    v32.renderCenter = function()
        return l_withStyle_0(function(v43)
            local l_Theme_1 = v43.Theme;
            return v1.createElement("TextLabel", {
                Text = l_backAction_0,
                Font = v43.Font.Header2.Font,
                TextColor3 = l_Theme_1.TextEmphasis.Color,
                TextTransparency = l_Theme_1.TextEmphasis.Transparency,
                TextSize = 20,
                TextWrapped = true,
                TextXAlignment = Enum.TextXAlignment.Center,
                TextYAlignment = Enum.TextYAlignment.Center,
                Size = UDim2.new(1, 0, 1, 0),
                BackgroundTransparency = 1
            });
        end);
    end;
    v29.Bar = l_createElement_1(l_l_HeaderBar_0_0, v32);
    return l_createElement_0(v27, v28, v29);
end;


local l_Parent_0 = script:FindFirstAncestor("InGameAssetReporting").Parent;
local v1 = require(l_Parent_0.React);
local v2 = require(l_Parent_0.UIBlox);
local l_ButtonStack_0 = v2.App.Button.ButtonStack;
local l_ButtonType_0 = v2.App.Button.Enum.ButtonType;
local l_HeaderBar_0 = v2.App.Bar.HeaderBar;
local l_IconButton_0 = v2.App.Button.IconButton;
local l_IconSize_0 = v2.App.ImageSet.Enum.IconSize;
local l_Images_0 = v2.App.ImageSet.Images;
local l_withStyle_0 = v2.Style.withStyle;
local _ = function(v10, _, _)
    return function()
        return v1.createElement("Frame", {
            BackgroundTransparency = 1,
            Size = UDim2.new(0, 30, 1, 0)
        }, {
            Layout = v1.createElement("UIListLayout", {
                FillDirection = Enum.FillDirection.Horizontal,
                HorizontalAlignment = Enum.HorizontalAlignment.Left,
                VerticalAlignment = Enum.VerticalAlignment.Center,
                SortOrder = Enum.SortOrder.LayoutOrder
            }),
            BackButton = v1.createElement(l_IconButton_0, {
                iconSize = l_IconSize_0.Medium,
                icon = l_Images_0["icons/navigation/pushBack"],
                layoutOrder = 1,
                onActivated = v10
            })
        });
    end;
end;
local function _(v14)
    return function()
        return l_withStyle_0(function(v15)
            local l_CurrentCamera_0 = game.Workspace.CurrentCamera;
            local v17 = 300;
            if l_CurrentCamera_0 ~= nil then
                v17 = l_CurrentCamera_0.ViewportSize.X - 150;
            end;
            local l_Theme_0 = v15.Theme;
            return v1.createElement("TextLabel", {
                Text = v14,
                Font = v15.Font.Header2.Font,
                TextColor3 = l_Theme_0.TextEmphasis.Color,
                TextTransparency = l_Theme_0.TextEmphasis.Transparency,
                TextSize = 20,
                TextWrapped = true,
                TextXAlignment = Enum.TextXAlignment.Center,
                TextYAlignment = Enum.TextYAlignment.Center,
                Size = UDim2.new(0, v17, 1, 0),
                BackgroundTransparency = 1
            });
        end);
    end;
end;
local _ = function(_, v21, v22, v23, v24)
    return function()
        return v1.createElement("Frame", {
            BackgroundTransparency = 1,
            Size = UDim2.new(0, 60, 1, 0)
        }, {
            Layout = v1.createElement("UIListLayout", {
                FillDirection = Enum.FillDirection.Horizontal,
                HorizontalAlignment = Enum.HorizontalAlignment.Center,
                VerticalAlignment = Enum.VerticalAlignment.Center,
                SortOrder = Enum.SortOrder.LayoutOrder
            }),
            UndoButton = v1.createElement(l_IconButton_0, {
                iconSize = l_IconSize_0.Medium,
                icon = l_Images_0["icons/actions/edit/undo"],
                isDisabled = not v23,
                layoutOrder = 1,
                onActivated = v21
            }),
            RedoButton = v1.createElement(l_IconButton_0, {
                iconSize = l_IconSize_0.Medium,
                icon = l_Images_0["icons/actions/edit/redo"],
                isDisabled = not v24,
                layoutOrder = 2,
                onActivated = v22
            })
        });
    end;
end;
return {
    PortraitModeHeader = function(v26)
        local v27 = v26.isRedoEnabled or v26.isUndoEnabled;
        local l_createElement_0 = v1.createElement;
        local v29 = "Frame";
        local v30 = {
            BorderSizePixel = 0,
            BackgroundTransparency = 0.1,
            BackgroundColor3 = Color3.fromHex("#000000"),
            LayoutOrder = 1,
            Size = UDim2.new(1, 0, 0, 72),
            ZIndex = 2
        };
        local v31 = {};
        local l_createElement_1 = v1.createElement;
        local l_l_HeaderBar_0_0 = l_HeaderBar_0;
        local v34 = {
            backgroundTransparency = 1,
            barHeight = 72,
            margin = 12
        };
        local l_backAction_0 = v26.backAction;
        local l_isRedoEnabled_0 = v26.isRedoEnabled;
        local l_isUndoEnabled_0 = v26.isUndoEnabled;
        local l_l_backAction_0_0 = l_backAction_0 --[[ copy: 10 -> 15 ]];
        v34.renderLeft = function()
            return v1.createElement("Frame", {
                BackgroundTransparency = 1,
                Size = UDim2.new(0, 30, 1, 0)
            }, {
                Layout = v1.createElement("UIListLayout", {
                    FillDirection = Enum.FillDirection.Horizontal,
                    HorizontalAlignment = Enum.HorizontalAlignment.Left,
                    VerticalAlignment = Enum.VerticalAlignment.Center,
                    SortOrder = Enum.SortOrder.LayoutOrder
                }),
                BackButton = v1.createElement(l_IconButton_0, {
                    iconSize = l_IconSize_0.Medium,
                    icon = l_Images_0["icons/navigation/pushBack"],
                    layoutOrder = 1,
                    onActivated = l_l_backAction_0_0
                })
            });
        end;
        local v39;
        if not v27 then
            v39 = function()
            end;
        else
            l_backAction_0 = v26.annotationPoints;
            l_isRedoEnabled_0 = v26.undoAnnotationPoints;
            l_isUndoEnabled_0 = v26.redoAnnotationPoints;
            local l_isUndoEnabled_1 = v26.isUndoEnabled;
            local l_isRedoEnabled_1 = v26.isRedoEnabled;
            v39 = function()
                return v1.createElement("Frame", {
                    BackgroundTransparency = 1,
                    Size = UDim2.new(0, 60, 1, 0)
                }, {
                    Layout = v1.createElement("UIListLayout", {
                        FillDirection = Enum.FillDirection.Horizontal,
                        HorizontalAlignment = Enum.HorizontalAlignment.Center,
                        VerticalAlignment = Enum.VerticalAlignment.Center,
                        SortOrder = Enum.SortOrder.LayoutOrder
                    }),
                    UndoButton = v1.createElement(l_IconButton_0, {
                        iconSize = l_IconSize_0.Medium,
                        icon = l_Images_0["icons/actions/edit/undo"],
                        isDisabled = not l_isUndoEnabled_1,
                        layoutOrder = 1,
                        onActivated = l_isRedoEnabled_0
                    }),
                    RedoButton = v1.createElement(l_IconButton_0, {
                        iconSize = l_IconSize_0.Medium,
                        icon = l_Images_0["icons/actions/edit/redo"],
                        isDisabled = not l_isRedoEnabled_1,
                        layoutOrder = 2,
                        onActivated = l_isUndoEnabled_0
                    })
                });
            end;
        end;
        v34.renderRight = v39;
        l_backAction_0 = v26.titleText;
        v34.renderCenter = function()
            return l_withStyle_0(function(v42)
                local l_CurrentCamera_1 = game.Workspace.CurrentCamera;
                local v44 = 300;
                if l_CurrentCamera_1 ~= nil then
                    v44 = l_CurrentCamera_1.ViewportSize.X - 150;
                end;
                local l_Theme_1 = v42.Theme;
                return v1.createElement("TextLabel", {
                    Text = l_backAction_0,
                    Font = v42.Font.Header2.Font,
                    TextColor3 = l_Theme_1.TextEmphasis.Color,
                    TextTransparency = l_Theme_1.TextEmphasis.Transparency,
                    TextSize = 20,
                    TextWrapped = true,
                    TextXAlignment = Enum.TextXAlignment.Center,
                    TextYAlignment = Enum.TextYAlignment.Center,
                    Size = UDim2.new(0, v44, 1, 0),
                    BackgroundTransparency = 1
                });
            end);
        end;
        v34.isSecondary = true;
        v31.Bar = l_createElement_1(l_l_HeaderBar_0_0, v34);
        return l_createElement_0(v29, v30, v31);
    end,
    PortraitModeFooter = function(v46)
        return v1.createElement("Frame", {
            BorderSizePixel = 0,
            BackgroundTransparency = 0.1,
            Size = UDim2.new(1, 0, 0, 60),
            BackgroundColor3 = Color3.fromHex("#000000"),
            AnchorPoint = Vector2.new(0, 1),
            Position = UDim2.fromScale(0, 1),
            LayoutOrder = 4
        }, {
            Layout = v1.createElement("UIListLayout", {
                FillDirection = Enum.FillDirection.Vertical,
                HorizontalAlignment = Enum.HorizontalAlignment.Center
            }),
            Container = v1.createElement("Frame", {
                Size = UDim2.new(0, 400, 1, 0),
                BackgroundTransparency = 1
            }, {
                Padding = v1.createElement("UIPadding", {
                    PaddingTop = UDim.new(0, 12),
                    PaddingBottom = UDim.new(0, 12),
                    PaddingLeft = UDim.new(0, 32),
                    PaddingRight = UDim.new(0, 32)
                }),
                ActionButtons = v1.createElement(l_ButtonStack_0, {
                    marginBetween = 8,
                    buttons = {
                        {
                            buttonType = l_ButtonType_0.PrimarySystem,
                            props = {
                                onActivated = v46.nextAction,
                                text = v46.nextText
                            }
                        }
                    }
                })
            })
        });
    end
};


local l_Parent_0 = script:FindFirstAncestor("InGameAssetReporting").Parent;
local v1 = require(l_Parent_0.React);
local l_useStyle_0 = require(l_Parent_0.UIBlox).Core.Style.useStyle;
return function(v3)
    local v4 = l_useStyle_0();
    local l_Font_0 = v4.Font.Body.Font;
    local l_BaseSize_0 = v4.Font.BaseSize;
    local l_Theme_0 = v4.Theme;
    return v1.createElement("Frame", {
        Size = UDim2.new(1, 0, 0, 60),
        BackgroundTransparency = v4.Theme.BackgroundDefault.Transparency,
        BackgroundColor3 = v4.Theme.BackgroundDefault.Color,
        LayoutOrder = 1
    }, {
        UIPadding = v1.createElement("UIPadding", {
            PaddingLeft = UDim.new(0, 10),
            PaddingRight = UDim.new(0, 10),
            PaddingTop = UDim.new(0, 10),
            PaddingBottom = UDim.new(0, 10)
        }),
        UICorner = v1.createElement("UICorner", {
            CornerRadius = UDim.new(0, 8)
        }),
        ReportCommentTextBox = v1.createElement("TextBox", {
            Size = UDim2.new(1, 0, 0, 40),
            Position = UDim2.new(0, 0, 0, 0),
            AnchorPoint = Vector2.new(0, 0),
            BackgroundColor3 = l_Theme_0.BackgroundDefault.Color,
            PlaceholderText = v3.placeholderText,
            Font = l_Font_0,
            Text = v3.text,
            TextSize = l_BaseSize_0,
            TextColor3 = l_Theme_0.TextDefault.Color,
            TextTransparency = l_Theme_0.TextDefault.Transparency,
            TextXAlignment = Enum.TextXAlignment.Left,
            TextYAlignment = Enum.TextYAlignment.Top,
            BackgroundTransparency = l_Theme_0.BackgroundDefault.Transparency,
            BorderSizePixel = 0,
            LayoutOrder = 1,
            RichText = false,
            MultiLine = true,
            TextWrapped = true,
            ClearTextOnFocus = false,
            OverlayNativeInput = true,
            ClipsDescendants = true,
            [v1.Change.Text] = function(v8)
                if v3.text ~= v8.Text then
                    v3.onUpdate(v8.Text);
                end;
            end
        })
    });
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("InGameAssetReporting");
local l_RobloxGui_0 = game:GetService("CoreGui"):WaitForChild("RobloxGui");
local l_Parent_0 = l_script_FirstAncestor_0.Parent;
local v3 = require(l_Parent_0.React);
local v4 = require(l_Parent_0.UIBlox);
local l_ImageSetButton_0 = v4.Core.ImageSet.ImageSetButton;
local l_Images_0 = v4.App.ImageSet.Images;
return function(v7)
    local l_AbsoluteSize_0 = l_RobloxGui_0.AbsoluteSize;
    local v9 = (l_AbsoluteSize_0.X < l_AbsoluteSize_0.Y and l_AbsoluteSize_0.X or l_AbsoluteSize_0.Y) / 5;
    local v10, v11 = v3.useState(false);
    local function v14(v12, v13)
        v7.handleNewAnnotationPoint((Vector2.new(v13.X, v13.Y) - v12.AbsolutePosition) / v12.AbsoluteSize, (v9 * 0.5) / if v12.AbsoluteSize.Y < v12.AbsoluteSize.X then v12.AbsoluteSize.X else v12.AbsoluteSize.Y);
    end;
    local function v20(v15, v16)
        local v17 = v16.UserInputState == Enum.UserInputState.Begin;
        local v18 = v16.UserInputType == Enum.UserInputType.Touch;
        local v19 = v16.UserInputType == Enum.UserInputType.MouseButton1;
        if not (not v17 or not v18 and not v19) then
            if #v7.annotationPoints < 5 then
                v11(true);
                v14(v15, v16.Position);
                return ;
            else
                v7.onExceedMaxAnnotationLimit();
            end;
        end;
    end;
    local function v23(_, _)
    end;
    local function v26(_, _)
        if v10 then
            v11(false);
        end;
    end;
    local v27 = {};
    for v28, v29 in ipairs(v7.annotationPoints) do
        v27["point" .. v28] = v3.createElement("Frame", {
            Position = UDim2.fromScale(v29.X, v29.Y),
            BackgroundTransparency = 1,
            Size = UDim2.fromOffset(v9, v9)
        }, {
            Border = v3.createElement(l_ImageSetButton_0, {
                Size = UDim2.fromOffset(v9, v9),
                AnchorPoint = Vector2.new(0.5, 0.5),
                Image = l_Images_0["component_assets/circle_49_stroke_1"],
                ImageColor3 = Color3.fromHex("#3CF3E9"),
                ImageTransparency = 0,
                BackgroundTransparency = 1
            }),
            Background = v3.createElement(l_ImageSetButton_0, {
                Size = UDim2.fromOffset(v9, v9),
                AnchorPoint = Vector2.new(0.5, 0.5),
                Image = l_Images_0["component_assets/circle_49"],
                ImageColor3 = Color3.fromHex("#3CF3E9"),
                ImageTransparency = 0.6,
                BackgroundTransparency = 1
            })
        });
    end;
    return v3.createElement("Frame", {
        BackgroundTransparency = 1,
        Size = UDim2.fromScale(1, 1),
        [v3.Event.InputBegan] = v20,
        [v3.Event.InputChanged] = v23,
        [v3.Event.InputEnded] = v26,
        ZIndex = 3
    }, v27);
end;