local v0 = require(game:GetService("CorePackages").Roact);
local l_Components_0 = script.Parent.Parent.Parent.Components;
local v2 = require(script.Parent.Parent.Parent.Components.DataConsumer);
local v3 = require(l_Components_0.HeaderButton);
local v4 = require(script.Parent.ServerScriptsEntry);
local v5 = require(script.Parent.Parent.Parent.Constants);
local l_LineWidth_0 = v5.GeneralFormatting.LineWidth;
local l_LineColor_0 = v5.GeneralFormatting.LineColor;
local l_ChartCellWidths_0 = v5.ServerScriptsFormatting.ChartCellWidths;
local l_ChartHeaderNames_0 = v5.ServerScriptsFormatting.ChartHeaderNames;
local l_HeaderFrameHeight_0 = v5.ServerScriptsFormatting.HeaderFrameHeight;
local l_EntryFrameHeight_0 = v5.ServerScriptsFormatting.EntryFrameHeight;
local l_CellPadding_0 = v5.ServerScriptsFormatting.CellPadding;
local l_LineGraphHeight_0 = v5.GeneralFormatting.LineGraphHeight;
local l_NoResultSearchStr_0 = v5.GeneralFormatting.NoResultSearchStr;
local v15 = {};
local v16 = {};
local v17 = {};
local v18 = 0;
for _, v20 in ipairs(l_ChartCellWidths_0) do
    table.insert(v15, UDim2.new(v18, l_CellPadding_0, 0, 0));
    table.insert(v16, UDim2.new(v20, -l_CellPadding_0, 0, l_HeaderFrameHeight_0));
    table.insert(v17, UDim2.new(v20, -l_CellPadding_0, 0, l_EntryFrameHeight_0));
    v18 = v18 + v20;
end;
local v21 = {};
for v22, v23 in ipairs(v15) do
    v21[v22] = UDim2.new(v23.X.Scale, v23.X.Offset - l_CellPadding_0, v23.Y.Scale, v23.Y.Offset);
end;
local v24 = v0.Component:extend("ServerScripts");
local function v28(v25)
    local v26 = {};
    for v27 = 1, #l_ChartHeaderNames_0 do
        v26[l_ChartHeaderNames_0[v27]] = v0.createElement(v3, {
            text = l_ChartHeaderNames_0[v27],
            size = v16[v27],
            pos = v15[v27],
            sortfunction = v25
        });
    end;
    v26.upperHorizontalLine = v0.createElement("Frame", {
        Size = UDim2.new(1, 0, 0, l_LineWidth_0),
        Position = UDim2.new(0, 0, 0, 0),
        BackgroundColor3 = l_LineColor_0,
        BorderSizePixel = 0
    });
    v26.verticalLine1 = v0.createElement("Frame", {
        Size = UDim2.new(0, l_LineWidth_0, 1, 0),
        Position = v21[2],
        BackgroundColor3 = l_LineColor_0,
        BorderSizePixel = 0
    });
    v26.verticalLine2 = v0.createElement("Frame", {
        Size = UDim2.new(0, l_LineWidth_0, 1, 0),
        Position = v21[3],
        BackgroundColor3 = l_LineColor_0,
        BorderSizePixel = 0
    });
    v26.lowerHorizontalLine = v0.createElement("Frame", {
        Size = UDim2.new(1, 0, 0, l_LineWidth_0),
        Position = UDim2.new(0, 0, 1, 0),
        BackgroundColor3 = l_LineColor_0,
        BorderSizePixel = 0
    });
    return v0.createElement("Frame", {
        Size = UDim2.new(1, 0, 0, l_HeaderFrameHeight_0),
        BackgroundTransparency = 1
    }, v26);
end;
local function v30(v29)
    return v29.time;
end;
local function v32(v31)
    return v31.data[1];
end;
local function v34(v33)
    return v33.data[2];
end;
local function v36(v35)
    return string.format("%.3f", v35);
end;
v24.init = function(v37, v38)
    local v39 = v38.ServerScriptsData:getCurrentData();
    v37.onSortChanged = function(v40)
        if v40 == v38.ServerScriptsData:getSortType() then
            v37:setState({
                reverseSort = not v37.state.reverseSort
            });
            return ;
        else
            v38.ServerScriptsData:setSortType(v40);
            v37:setState({
                reverseSort = false
            });
            return ;
        end;
    end;
    v37.getOnButtonPress = function(v41)
        return function(_, _)
            local l_v37_0 = v37;
            local v45 = {};
            local v46 = false;
            if v37.state.expandIndex ~= v41 then
                v46 = v41;
            end;
            v45.expandIndex = v46;
            l_v37_0:setState(v45);
        end;
    end;
    v37.onCanvasPosChanged = function()
        local l_CanvasPosition_0 = v37.scrollingRef.current.CanvasPosition;
        if v37.state.canvasPos ~= l_CanvasPosition_0 then
            v37:setState({
                absScrollSize = v37.scrollingRef.current.AbsoluteSize,
                canvasPos = l_CanvasPosition_0
            });
        end;
    end;
    v37.scrollingRef = v0.createRef();
    v37.state = {
        serverScriptsData = v39,
        expandIndex = nil
    };
end;
v24.willUpdate = function(v48)
    if v48.canvasPosConnector then
        v48.canvasPosConnector:Disconnect();
    end;
end;
v24.didUpdate = function(v49)
    if v49.scrollingRef.current then
        v49.canvasPosConnector = v49.scrollingRef.current:GetPropertyChangedSignal("CanvasPosition"):Connect(v49.onCanvasPosChanged);
    end;
end;
v24.didMount = function(v50)
    v50.statsConnector = v50.props.ServerScriptsData:Signal():Connect(function(v51)
        v50:setState({
            serverScriptsData = v51
        });
    end);
    if v50.scrollingRef.current then
        v50.canvasPosConnector = v50.scrollingRef.current:GetPropertyChangedSignal("CanvasPosition"):Connect(v50.onCanvasPosChanged);
        v50:setState({
            absScrollSize = v50.scrollingRef.current.AbsoluteSize,
            canvasPos = v50.scrollingRef.current.CanvasPosition
        });
    end;
end;
v24.willUnmount = function(v52)
    v52.statsConnector:Disconnect();
    v52.statsConnector = nil;
end;
v24.render = function(v53)
    local l_searchTerm_0 = v53.props.searchTerm;
    local l_scriptFilters_0 = v53.props.scriptFilters;
    local l_layoutOrder_0 = v53.props.layoutOrder;
    local l_size_0 = v53.props.size;
    local l_serverScriptsData_0 = v53.state.serverScriptsData;
    local l_reverseSort_0 = v53.state.reverseSort;
    local l_absScrollSize_0 = v53.state.absScrollSize;
    local l_canvasPos_0 = v53.state.canvasPos;
    local v62 = {};
    local v63 = #l_serverScriptsData_0;
    if v63 == 0 then
        return v0.createElement("TextLabel", {
            Size = l_size_0,
            Position = UDim2.new(0, 0, 0, 0),
            Text = "Awaiting Server Scripts Information.",
            TextColor3 = v5.Color.Text,
            BackgroundTransparency = 1,
            LayoutOrder = l_layoutOrder_0
        });
    else
        local v64 = 0;
        local v65 = -1;
        local v66 = 0;
        local v67 = 0;
        if not (not l_canvasPos_0 or not l_absScrollSize_0) then
            for v68, v69 in pairs(l_serverScriptsData_0) do
                if not l_searchTerm_0 or string.find(v69.name:lower(), l_searchTerm_0:lower()) ~= nil then
                    v67 = v67 + 1;
                    local v70 = true;
                    local l_Active_0 = l_scriptFilters_0.Active;
                    local l_Inactive_0 = l_scriptFilters_0.Inactive;
                    local v73 = v69.dataStats.dataSet:back();
                    if l_Active_0 ~= l_Inactive_0 then
                        if not (v73.data[1] > 0) or not l_Inactive_0 then
                            if not (not (v73.data[1] == 0) or not l_Active_0) then
                                v70 = false;
                            end;
                        else
                            v70 = false;
                        end;
                    end;
                    if v70 then
                        local v74 = v53.state.expandIndex == v69.name;
                        local v75 = not not v74 and l_EntryFrameHeight_0 + 2 * l_LineGraphHeight_0 or l_EntryFrameHeight_0;
                        if l_canvasPos_0.Y <= v64 + v75 then
                            if v66 < l_absScrollSize_0.Y then
                                v62[v68] = v0.createElement(v4, {
                                    scriptData = v69,
                                    frameHeight = v75,
                                    showGraph = v74,
                                    layoutOrder = not not l_reverseSort_0 and v63 - v68 or v68,
                                    activityBoxColor = v73.data[1] > 0 and v5.Color.ActiveBox or v5.Color.InactiveBox,
                                    entryCellSize = v17,
                                    cellOffset = v15,
                                    verticalOffsets = v21,
                                    onButtonPress = v53.getOnButtonPress(v69.name),
                                    formatScriptsData = v36,
                                    getX = v30,
                                    getActivity = v32,
                                    getRate = v34,
                                    stringFormatY = v36
                                });
                            end;
                            if v65 < 0 then
                                v65 = v64;
                            else
                                v66 = v66 + v75;
                            end;
                        end;
                        v64 = v64 + v75;
                    end;
                end;
            end;
            if v67 > 0 then
                v62.WindowingPadding = v0.createElement("Frame", {
                    Size = UDim2.new(1, 0, 0, v65),
                    BackgroundTransparency = 1,
                    LayoutOrder = 1
                });
            else
                v62.emptySearch = v0.createElement("TextLabel", {
                    Size = l_size_0,
                    Text = string.format(l_NoResultSearchStr_0, l_searchTerm_0),
                    TextColor3 = v5.Color.Text,
                    BackgroundTransparency = 1
                });
            end;
        end;
        v62.UIListLayout = v0.createElement("UIListLayout", {
            HorizontalAlignment = Enum.HorizontalAlignment.Left,
            VerticalAlignment = Enum.VerticalAlignment.Top,
            SortOrder = Enum.SortOrder.LayoutOrder
        });
        return v0.createElement("Frame", {
            Size = l_size_0,
            BackgroundTransparency = 1,
            LayoutOrder = l_layoutOrder_0
        }, {
            Header = v28(v53.onSortChanged),
            Entries = v0.createElement("ScrollingFrame", {
                Position = UDim2.new(0, 0, 0, l_HeaderFrameHeight_0),
                Size = UDim2.new(1, 0, 1, -l_HeaderFrameHeight_0),
                BackgroundTransparency = 1,
                VerticalScrollBarInset = 1,
                ScrollBarThickness = 5,
                CanvasSize = UDim2.new(1, 0, 0, v64),
                [v0.Ref] = v53.scrollingRef
            }, v62)
        });
    end;
end;
return v2(v24, "ServerScriptsData");


local v0 = require(script.Parent.Parent.Parent.CircularBuffer);
local v1 = require(script.Parent.Parent.Parent.Signal);
local v2 = require(script.Parent.Parent.Parent.Constants);
local v3 = tonumber(settings():GetFVariable("NewDevConsoleMaxGraphCount"));
local l_ChartHeaderNames_0 = v2.ServerScriptsFormatting.ChartHeaderNames;
local v11 = {
    [l_ChartHeaderNames_0[1]] = function(v5, v6)
        return v5.dataStats.dataSet:back().name < v6.dataStats.dataSet:back().name;
    end,
    [l_ChartHeaderNames_0[2]] = function(v7, v8)
        return v7.dataStats.dataSet:back().data[1] < v8.dataStats.dataSet:back().data[1];
    end,
    [l_ChartHeaderNames_0[3]] = function(v9, v10)
        return v9.dataStats.dataSet:back().data[2] < v10.dataStats.dataSet:back().data[2];
    end
};
local v12 = require(script.Parent.Parent.Parent.Util.minOfTable);
local v13 = require(script.Parent.Parent.Parent.Util.maxOfTable);
local v14 = require(script.Parent.Parent.Parent.Util.getClientReplicator);
local v15 = {};
v15.__index = v15;
v15.new = function()
    local v16 = {};
    setmetatable(v16, v15);
    v16._serverScriptsUpdated = v1.new();
    v16._serverScriptsData = {};
    v16._lastUpdate = 0;
    v16._sortedScriptsData = {};
    v16._sortType = l_ChartHeaderNames_0[1];
    v16._isRunning = false;
    return v16;
end;
v15.setSortType = function(v17, v18)
    if not v11[v18] then
        error(string.format("attempted to pass invalid sortType: %s", (tostring(v18))), 2);
        return ;
    else
        v17._sortType = v18;
        table.sort(v17._sortedScriptsData, v11[v17._sortType]);
        return ;
    end;
end;
v15.getSortType = function(v19)
    return v19._sortType;
end;
v15.Signal = function(v20)
    return v20._serverScriptsUpdated;
end;
v15.getCurrentData = function(v21)
    return v21._sortedScriptsData;
end;
v15.updateScriptsData = function(v22, v23)
    v22._lastUpdate = os.time();
    for v24, v25 in pairs(v23) do
        if v22._serverScriptsData[v24] then
            local v26 = {};
            for v27, v28 in pairs(v22._serverScriptsData[v24].max) do
                v26[v27] = v28;
            end;
            local v29 = {};
            for v30, v31 in pairs(v22._serverScriptsData[v24].min) do
                v29[v30] = v31;
            end;
            local v32 = v22._serverScriptsData[v24].dataSet:push_back({
                data = v25,
                time = v22._lastUpdate
            });
            if v32 then
                for v33, v34 in pairs(v32.data) do
                    if v26[v33] == v34 then
                        local v35 = v22._serverScriptsData[v24].dataSet:iterator();
                        local v36 = v35:next();
                        v26[v33] = v29[v33];
                        while v36 do
                            v26[v33] = v36.data[v33] < v26[v33] and v26[v33] or v36.data[v33];
                            v36 = v35:next();
                        end;
                    end;
                end;
                for v37, v38 in pairs(v32.data) do
                    if v29[v37] == v38 then
                        local v39 = v22._serverScriptsData[v24].dataSet:iterator();
                        local v40 = v39:next();
                        v29[v37] = v26[v37];
                        while v40 do
                            v29[v37] = v29[v37] < v40.data[v37] and v29[v37] or v40.data[v37];
                            v40 = v39:next();
                        end;
                    end;
                end;
            end;
            v22._serverScriptsData[v24].max = v13(v26, v25);
            v22._serverScriptsData[v24].min = v12(v29, v25);
        else
            local v41 = v0.new(v3);
            v41:push_back({
                data = v25,
                time = v22._lastUpdate
            });
            v22._serverScriptsData[v24] = {
                max = v25,
                min = v25,
                dataSet = v41
            };
            table.insert(v22._sortedScriptsData, {
                name = v24,
                dataStats = v22._serverScriptsData[v24]
            });
        end;
    end;
end;
v15.isRunning = function(v42)
    return v42._isRunning;
end;
v15.start = function(v43)
    local v44 = v14();
    if not (not v44 or v43._statsListenerConnection) then
        v43._statsListenerConnection = v44.StatsReceived:connect(function(v45)
            if v45 then
                v43._lastUpdate = os.time();
                local l_Scripts_0 = v45.Scripts;
                if l_Scripts_0 then
                    v43:updateScriptsData(l_Scripts_0);
                end;
                v43._serverScriptsUpdated:Fire(v43._sortedScriptsData);
            end;
        end);
        v44:RequestServerStats(true);
        v43._isRunning = true;
    end;
end;
v15.stop = function(v47)
    if v47._statsListenerConnection then
        v47._statsListenerConnection:Disconnect();
        v47._statsListenerConnection = nil;
    end;
    v47._isRunning = false;
end;
return v15;


local v0 = require(game:GetService("CorePackages").Roact);
local l_Components_0 = script.Parent.Parent.Parent.Components;
local v2 = require(l_Components_0.CellLabel);
local v3 = require(l_Components_0.BannerButton);
local v4 = require(l_Components_0.LineGraph);
local v5 = require(script.Parent.Parent.Parent.Constants);
local l_LineWidth_0 = v5.GeneralFormatting.LineWidth;
local l_LineColor_0 = v5.GeneralFormatting.LineColor;
local l_ChartHeaderNames_0 = v5.ServerScriptsFormatting.ChartHeaderNames;
local l_EntryFrameHeight_0 = v5.ServerScriptsFormatting.EntryFrameHeight;
local l_ActivityBoxWidth_0 = v5.ServerScriptsFormatting.ActivityBoxWidth;
local l_ActivityBoxPadding_0 = v5.ServerScriptsFormatting.ActivityBoxPadding;
local v12 = UDim2.new(0, l_ActivityBoxPadding_0, 0, 0);
local l_LineGraphHeight_0 = v5.GeneralFormatting.LineGraphHeight;
local v14 = require(script.Parent.Parent.Parent.Util.convertTimeStamp);
return function(v15)
    local l_scriptData_0 = v15.scriptData;
    local l_frameHeight_0 = v15.frameHeight;
    local l_showGraph_0 = v15.showGraph;
    local l_layoutOrder_0 = v15.layoutOrder;
    local l_activityBoxColor_0 = v15.activityBoxColor;
    local l_entryCellSize_0 = v15.entryCellSize;
    local l_cellOffset_0 = v15.cellOffset;
    local l_verticalOffsets_0 = v15.verticalOffsets;
    local l_onButtonPress_0 = v15.onButtonPress;
    local l_getX_0 = v15.getX;
    local l_getActivity_0 = v15.getActivity;
    local l_getRate_0 = v15.getRate;
    local l_formatScriptsData_0 = v15.formatScriptsData;
    local l_dataStats_0 = l_scriptData_0.dataStats;
    local v30 = l_dataStats_0.dataSet:back();
    return v0.createElement("Frame", {
        Size = UDim2.new(1, 0, 0, l_frameHeight_0),
        BackgroundTransparency = 1,
        LayoutOrder = l_layoutOrder_0
    }, {
        button = v0.createElement(v3, {
            size = UDim2.new(1, 0, 0, l_EntryFrameHeight_0),
            pos = UDim2.new(),
            isExpanded = l_showGraph_0,
            onButtonPress = l_onButtonPress_0
        }, {
            ActivityBox = v0.createElement("Frame", {
                Size = UDim2.new(0, l_ActivityBoxWidth_0, 0, l_ActivityBoxWidth_0),
                Position = UDim2.new(0, l_ActivityBoxPadding_0, 0, (l_EntryFrameHeight_0 - l_ActivityBoxWidth_0) / 2),
                BackgroundColor3 = l_activityBoxColor_0
            }),
            ScriptName = v0.createElement(v2, {
                text = l_scriptData_0.name,
                size = l_entryCellSize_0[1] - v12,
                pos = l_cellOffset_0[1] + v12
            }),
            ScriptAcitivity = v0.createElement(v2, {
                text = l_formatScriptsData_0(v30.data[1]),
                size = l_entryCellSize_0[2],
                pos = l_cellOffset_0[2]
            }),
            scriptFreqStr = v0.createElement(v2, {
                text = l_formatScriptsData_0(v30.data[2]),
                size = l_entryCellSize_0[3],
                pos = l_cellOffset_0[3]
            }),
            upperHorizontalLine = v0.createElement("Frame", {
                Size = UDim2.new(1, 0, 0, l_LineWidth_0),
                BackgroundColor3 = l_LineColor_0,
                BorderSizePixel = 0
            }),
            verticalLine1 = v0.createElement("Frame", {
                Size = UDim2.new(0, l_LineWidth_0, 1, 0),
                Position = l_verticalOffsets_0[2],
                BackgroundColor3 = l_LineColor_0,
                BorderSizePixel = 0
            }),
            verticalLine2 = v0.createElement("Frame", {
                Size = UDim2.new(0, l_LineWidth_0, 1, 0),
                Position = l_verticalOffsets_0[3],
                BackgroundColor3 = l_LineColor_0,
                BorderSizePixel = 0
            }),
            lowerHorizontalLine = v0.createElement("Frame", {
                Size = UDim2.new(1, 0, 0, l_LineWidth_0),
                Position = UDim2.new(0, 0, 1, 0),
                BackgroundColor3 = l_LineColor_0,
                BorderSizePixel = 0
            })
        }),
        ActivityGraph = l_showGraph_0 and v0.createElement(v4, {
            pos = UDim2.new(0, 0, 0, l_EntryFrameHeight_0),
            size = UDim2.new(1, 0, 0, l_LineGraphHeight_0),
            graphData = l_dataStats_0.dataSet,
            maxY = l_dataStats_0.max[1],
            minY = l_dataStats_0.min[1],
            getX = l_getX_0,
            getY = l_getActivity_0,
            stringFormatX = v14,
            stringFormatY = l_formatScriptsData_0,
            axisLabelX = "Timestamp",
            axisLabelY = l_ChartHeaderNames_0[2]
        }),
        RateGraph = l_showGraph_0 and v0.createElement(v4, {
            pos = UDim2.new(0, 0, 0, l_EntryFrameHeight_0 + l_LineGraphHeight_0),
            size = UDim2.new(1, 0, 0, l_LineGraphHeight_0),
            graphData = l_dataStats_0.dataSet,
            maxY = l_dataStats_0.max[2],
            minY = l_dataStats_0.min[2],
            getX = l_getX_0,
            getY = l_getRate_0,
            stringFormatX = v14,
            stringFormatY = l_formatScriptsData_0,
            axisLabelX = "Timestamp",
            axisLabelY = l_ChartHeaderNames_0[3]
        })
    });
end;


local l_CorePackages_0 = game:GetService("CorePackages");
local l_UserInputService_0 = game:GetService("UserInputService");
local l_TextService_0 = game:GetService("TextService");
local v3 = require(l_CorePackages_0.Cryo);
local v4 = require(l_CorePackages_0.Roact);
local v5 = v4.Component:extend("ScrollingTextBox");
v5.init = function(v6, v7)
    local l_l_TextService_0_TextSize_0 = l_TextService_0:GetTextSize("A", v7.TextSize, v7.Font, Vector2.new(0, 0));
    v6.adjustOffset = function()
        if not (not v6.clipBox.current or not v6.textboxRef.current) then
            local l_fontDims_0 = v6.state.fontDims;
            local v10 = v6.textboxRef.current.CursorPosition - 1;
            local v11 = v10 - math.ceil(v6.state.innerXOffset / l_fontDims_0.X);
            local v12 = math.floor((v6.clipBox.current.AbsoluteSize.X * 0.9) / l_fontDims_0.X);
            if v12 < v11 then
                v6:setState({
                    innerXOffset = (v10 - v12) * l_fontDims_0.X
                });
                return ;
            elseif v11 < 0 then
                v6:setState({
                    innerXOffset = v10 * l_fontDims_0.X
                });
            end;
        end;
    end;
    v6.clipBox = v4.createRef();
    v6.textboxRef = v6.props.forwardRef or v4.createRef();
    v6.state = {
        fontDims = l_l_TextService_0_TextSize_0,
        innerXOffset = 0
    };
end;
v5.didMount = function(v13)
    if not v13.onFocusConnection then
        v13.onFocusConnection = l_UserInputService_0.InputBegan:Connect(function(v14)
            if not (not v13.textboxRef.current or not v13.textboxRef.current:IsFocused()) then
                if v14.KeyCode == Enum.KeyCode.Home then
                    v13.textboxRef.current.CursorPosition = 0;
                    return ;
                elseif v14.KeyCode == Enum.KeyCode.End then
                    v13.textboxRef.current.CursorPosition = #v13.textboxRef.current.text + 1;
                    return ;
                else
                    v13.adjustOffset();
                end;
            end;
        end);
    end;
end;
v5.willUnmount = function(v15)
    if v15.onFocusConnection then
        v15.onFocusConnection:Disconnect();
        v15.onFocusConnection = nil;
    end;
end;
v5.render = function(v16)
    local l_Position_0 = v16.props.Position;
    local l_Size_0 = v16.props.Size;
    local l_PlaceholderText_0 = v16.props.PlaceholderText;
    local l_TextColor3_0 = v16.props.TextColor3;
    local l_TextSize_0 = v16.props.TextSize;
    local l_Font_0 = v16.props.Font;
    local l_Text_0 = v16.props.Text;
    local l_ClearTextOnFocus_0 = v16.props.ClearTextOnFocus;
    local l_ShowNativeInput_0 = v16.props.ShowNativeInput;
    local l_TextBoxFocusLost_0 = v16.props.TextBoxFocusLost;
    local l_innerXOffset_0 = v16.state.innerXOffset;
    return v4.createElement("Frame", {
        Position = l_Position_0,
        Size = l_Size_0,
        BackgroundTransparency = 1,
        ClipsDescendants = true,
        [v4.Ref] = v16.clipBox
    }, {
        TextBox = v4.createElement("TextBox", {
            Position = UDim2.new(0, -l_innerXOffset_0, 0, 0),
            Size = UDim2.new(1, l_innerXOffset_0, 1, 0),
            BackgroundTransparency = 1,
            ShowNativeInput = l_ShowNativeInput_0,
            ClearTextOnFocus = l_ClearTextOnFocus_0,
            TextColor3 = l_TextColor3_0,
            TextXAlignment = 0,
            TextSize = l_TextSize_0,
            Text = l_Text_0,
            Font = l_Font_0,
            PlaceholderText = l_PlaceholderText_0,
            [v4.Ref] = v16.textboxRef,
            [v4.Change.CursorPosition] = v16.adjustOffset,
            [v4.Event.FocusLost] = l_TextBoxFocusLost_0
        })
    });
end;
return v4.forwardRef(function(v28, v29)
    return v4.createElement(v5, v3.Dictionary.join(v28, {
        forwardRef = v29
    }));
end);


local v0 = require(game:GetService("CorePackages").Roact);
local v1 = require(script.Parent.ScrollingTextBox);
local v2 = require(script.Parent.Parent.Constants);
local v3 = v0.Component:extend("SearchBar");
v3.render = function(v4)
    local l_size_0 = v4.props.size;
    local l_pos_0 = v4.props.pos;
    local l_frameHeight_0 = v4.props.frameHeight;
    local l_textSize_0 = v4.props.textSize;
    local l_font_0 = v4.props.font;
    local l_searchTerm_0 = v4.props.searchTerm;
    local l_layoutOrder_0 = v4.props.layoutOrder;
    local l_visible_0 = v4.props.visible;
    local l_showClear_0 = v4.props.showClear;
    local v14 = l_frameHeight_0 * 0.6;
    return v0.createElement("Frame", {
        Size = l_size_0,
        Position = l_pos_0,
        BackgroundColor3 = v2.Color.UnselectedGray,
        BorderColor3 = v2.Color.BorderGray,
        Visible = l_visible_0,
        LayoutOrder = l_layoutOrder_0
    }, {
        SearchImage = v0.createElement("ImageLabel", {
            Name = "SearchIcon",
            Size = UDim2.new(0, v14, 0, v14),
            Position = UDim2.new(0, 10, 0.5, -v14 / 2),
            BackgroundTransparency = 1,
            Image = v2.Image.Search
        }),
        ClearButton = l_showClear_0 and v0.createElement("ImageButton", {
            Size = UDim2.new(0, -v14, 0, v14),
            Position = UDim2.new(1, -10, 0.5, -v14 / 2),
            BackgroundTransparency = 1,
            Image = v2.Image.Clear,
            [v0.Event.InputEnded] = v4.props.cancelInput
        }),
        InputField = v0.createElement(v1, {
            Text = not not l_searchTerm_0 and l_searchTerm_0 or "",
            TextSize = l_textSize_0,
            Font = l_font_0,
            Size = UDim2.new(1, -(2 * l_frameHeight_0), 1, 0),
            Position = UDim2.new(0, 20 + v14, 0, 0),
            ShowNativeInput = true,
            TextColor3 = v2.Color.Text,
            BackgroundTransparency = 1,
            TextXAlignment = 0,
            ClearTextOnFocus = false,
            PlaceholderText = "Search",
            [v0.Ref] = v4.props.refForParent,
            TextBoxFocusLost = v4.props.focusLost
        })
    });
end;
return v3;


local l_CorePackages_0 = game:GetService("CorePackages");
local v1 = require(l_CorePackages_0.Roact);
local v2 = require(l_CorePackages_0.RoactRodux);
local l_Components_0 = script.Parent.Parent.Parent.Components;
local v4 = require(l_Components_0.ServerJobs.ServerJobsChart);
local v5 = require(l_Components_0.UtilAndTab);
local v6 = require(script.Parent.Parent.Parent.Actions.ServerJobsUpdateSearchFilter);
local v7 = require(script.Parent.Parent.Parent.Constants);
local l_MainRowPadding_0 = v7.GeneralFormatting.MainRowPadding;
local v9 = v1.Component:extend("MainViewServerJobs");
v9.init = function(v10)
    v10.onUtilTabHeightChanged = function(v11)
        v10:setState({
            utilTabHeight = v11
        });
    end;
    v10.onSearchTermChanged = function(v12)
        v10.props.dispatchServerJobsUpdateSearchFilter(v12, {});
    end;
    v10.utilRef = v1.createRef();
    v10.state = {
        utilTabHeight = 0
    };
end;
v9.didMount = function(v13)
    v13:setState({
        utilTabHeight = v13.utilRef.current.Size.Y.Offset
    });
end;
v9.didUpdate = function(v14)
    local l_Size_0 = v14.utilRef.current.Size;
    if l_Size_0.Y.Offset ~= v14.state.utilTabHeight then
        v14:setState({
            utilTabHeight = l_Size_0.Y.Offset
        });
    end;
end;
v9.render = function(v16)
    local l_size_0 = v16.props.size;
    local l_formFactor_0 = v16.props.formFactor;
    local l_tabList_0 = v16.props.tabList;
    local l_jobsSearchTerm_0 = v16.props.jobsSearchTerm;
    local l_utilTabHeight_0 = v16.state.utilTabHeight;
    local l_createElement_0 = v1.createElement;
    local v23 = "Frame";
    local v24 = {
        Size = l_size_0,
        BackgroundColor3 = v7.Color.BaseGray,
        BackgroundTransparency = 1,
        LayoutOrder = 3
    };
    local v25 = {
        UIListLayout = v1.createElement("UIListLayout", {
            Padding = UDim.new(0, l_MainRowPadding_0),
            SortOrder = Enum.SortOrder.LayoutOrder
        }),
        UtilAndTab = v1.createElement(v5, {
            windowWidth = l_size_0.X.Offset,
            formFactor = l_formFactor_0,
            tabList = l_tabList_0,
            searchTerm = l_jobsSearchTerm_0,
            layoutOrder = 1,
            refForParent = v16.utilRef,
            onHeightChanged = v16.onUtilTabHeightChanged,
            onSearchTermChanged = v16.onSearchTermChanged
        })
    };
    local v26 = false;
    if l_utilTabHeight_0 > 0 then
        v26 = v1.createElement(v4, {
            size = UDim2.new(1, 0, 1, -l_utilTabHeight_0),
            searchTerm = l_jobsSearchTerm_0,
            layoutOrder = 2
        });
    end;
    v25.ServerJobs = v26;
    return l_createElement_0(v23, v24, v25);
end;
return v2.UNSTABLE_connect2(function(v27, _)
    return {
        jobsSearchTerm = v27.ServerJobsData.jobsSearchTerm
    };
end, function(v29)
    return {
        dispatchServerJobsUpdateSearchFilter = function(v30, v31)
            v29(v6(v30, v31));
        end
    };
end)(v9);


local v0 = require(game:GetService("CorePackages").Roact);
local l_Components_0 = script.Parent.Parent.Parent.Components;
local v2 = require(l_Components_0.DataConsumer);
local v3 = require(l_Components_0.HeaderButton);
local v4 = require(l_Components_0.CellLabel);
local v5 = require(l_Components_0.BannerButton);
local v6 = require(l_Components_0.LineGraph);
local v7 = require(script.Parent.Parent.Parent.Constants);
local l_LineWidth_0 = v7.GeneralFormatting.LineWidth;
local l_LineColor_0 = v7.GeneralFormatting.LineColor;
local l_ChartHeaderNames_0 = v7.ServerJobsFormatting.ChartHeaderNames;
local l_ValueCellWidth_0 = v7.ServerJobsFormatting.ValueCellWidth;
local l_EntryFrameHeight_0 = v7.ServerJobsFormatting.EntryFrameHeight;
local l_HeaderFrameHeight_0 = v7.ServerJobsFormatting.HeaderFrameHeight;
local l_CellPadding_0 = v7.ServerJobsFormatting.CellPadding;
local l_MinFrameWidth_0 = v7.ServerJobsFormatting.MinFrameWidth;
local l_LineGraphHeight_0 = v7.GeneralFormatting.LineGraphHeight;
local v17 = require(script.Parent.Parent.Parent.Util.convertTimeStamp);
local v21 = {
    function(v18)
        return not not v18 and string.format("%.4f%%", v18) or "";
    end,
    function(v19)
        return not not v19 and string.format("%.4f/s", v19) or "";
    end,
    function(v20)
        return not not v20 and string.format("%.4fms", v20) or "";
    end
};
local l_NoResultSearchStr_0 = v7.GeneralFormatting.NoResultSearchStr;
local v23 = 0;
local v24 = {};
local v25 = {};
local v26 = {};
local v27 = l_EntryFrameHeight_0 - l_LineWidth_0;
for _, v29 in ipairs(l_ValueCellWidth_0) do
    table.insert(v24, UDim2.new(v23, l_CellPadding_0, 0, 0));
    table.insert(v25, UDim2.new(v29, -l_CellPadding_0, 0, l_HeaderFrameHeight_0));
    table.insert(v26, UDim2.new(v29, -l_CellPadding_0, 0, v27));
    v23 = v23 + v29;
end;
local v30 = {};
for v31, v32 in ipairs(v24) do
    v30[v31] = UDim2.new(v32.X.Scale, v32.X.Offset - l_CellPadding_0, v32.Y.Scale, v32.Y.Offset);
end;
local v33 = v0.Component:extend("ServerJobsChart");
local function v35(v34)
    return v34.time;
end;
local function v37(v36)
    return v36.data[1];
end;
local function v39(v38)
    return v38.data[2];
end;
local function v41(v40)
    return v40.data[3];
end;
v33.init = function(v42, v43)
    local v44 = v43.ServerJobsData:getCurrentData();
    v42.getOnButtonPress = function(v45)
        return function(_, _)
            local l_v42_0 = v42;
            local v49 = {};
            local v50 = false;
            if v42.state.expandIndex ~= v45 then
                v50 = v45;
            end;
            v49.expandIndex = v50;
            l_v42_0:setState(v49);
        end;
    end;
    v42.onSortChanged = function(v51)
        if v51 == v43.ServerJobsData:getSortType() then
            v42:setState({
                reverseSort = not v42.state.reverseSort
            });
            return ;
        else
            v43.ServerJobsData:setSortType(v51);
            v42:setState({
                reverseSort = false
            });
            return ;
        end;
    end;
    v42.onCanvasPosChanged = function()
        local l_CanvasPosition_0 = v42.scrollingRef.current.CanvasPosition;
        if v42.state.canvasPos ~= l_CanvasPosition_0 then
            v42:setState({
                canvasPos = l_CanvasPosition_0
            });
        end;
    end;
    v42.scrollingRef = v0.createRef();
    v42.state = {
        serverJobsList = v44,
        reverseSort = false,
        expandIndex = nil
    };
end;
v33.willUpdate = function(v53)
    if v53.canvasPosConnector then
        v53.canvasPosConnector:Disconnect();
    end;
end;
v33.didUpdate = function(v54)
    if v54.scrollingRef.current then
        v54.canvasPosConnector = v54.scrollingRef.current:GetPropertyChangedSignal("CanvasPosition"):Connect(v54.onCanvasPosChanged);
        local l_AbsoluteSize_0 = v54.scrollingRef.current.AbsoluteSize;
        local l_absScrollSize_0 = v54.state.absScrollSize;
        if not (l_AbsoluteSize_0.X == l_absScrollSize_0.X) or l_AbsoluteSize_0.Y ~= l_absScrollSize_0.Y then
            v54:setState({
                absScrollSize = l_AbsoluteSize_0
            });
        end;
    end;
end;
v33.didMount = function(v57)
    v57.statsConnector = v57.props.ServerJobsData:Signal():Connect(function(v58)
        v57:setState({
            serverJobsList = v58
        });
    end);
    if v57.scrollingRef.current then
        v57.canvasPosConnector = v57.scrollingRef.current:GetPropertyChangedSignal("CanvasPosition"):Connect(v57.onCanvasPosChanged);
        v57:setState({
            absScrollSize = v57.scrollingRef.current.AbsoluteSize,
            canvasPos = v57.scrollingRef.current.CanvasPosition
        });
    end;
end;
v33.willUnmount = function(v59)
    v59.statsConnector:Disconnect();
    v59.statsConnector = nil;
    if v59.canvasPosConnector then
        v59.canvasPosConnector:Disconnect();
        v59.canvasPosConnector = nil;
    end;
end;
v33.render = function(v60)
    local v61 = {};
    local l_searchTerm_0 = v60.props.searchTerm;
    local l_size_0 = v60.props.size;
    local l_layoutOrder_0 = v60.props.layoutOrder;
    local l_serverJobsList_0 = v60.state.serverJobsList;
    local l_reverseSort_0 = v60.state.reverseSort;
    local l_expandIndex_0 = v60.state.expandIndex;
    local l_canvasPos_0 = v60.state.canvasPos;
    local l_absScrollSize_1 = v60.state.absScrollSize;
    local v70 = not not l_absScrollSize_1 and math.max(l_absScrollSize_1.X, l_MinFrameWidth_0) or l_MinFrameWidth_0;
    local v71 = #l_serverJobsList_0;
    if v71 == 0 then
        return v0.createElement("TextLabel", {
            Size = l_size_0,
            Position = UDim2.new(0, 0, 0, 0),
            Text = "Awaiting Server Jobs Information",
            TextColor3 = v7.Color.Text,
            BackgroundTransparency = 1,
            LayoutOrder = l_layoutOrder_0
        });
    else
        local v72 = 0;
        if l_absScrollSize_1 then
            local v73 = -1;
            local v74 = 0;
            for v75, v76 in pairs(l_serverJobsList_0) do
                local l_name_0 = v76.name;
                if not l_searchTerm_0 or string.find(l_name_0:lower(), l_searchTerm_0:lower()) ~= nil then
                    local l_dataStats_0 = v76.dataStats;
                    local v79 = l_dataStats_0.dataSet:back();
                    local v80 = l_expandIndex_0 == l_name_0;
                    local v81 = not not v80 and (l_EntryFrameHeight_0 + (3 * l_LineGraphHeight_0) / 2) + l_CellPadding_0 * 4 or l_EntryFrameHeight_0;
                    if l_canvasPos_0.Y <= v72 + v81 then
                        if v74 < l_absScrollSize_1.Y then
                            local v82 = not not l_reverseSort_0 and v71 - v75 or v75;
                            local v83 = {
                                [l_name_0] = v0.createElement(v4, {
                                    text = l_name_0,
                                    size = v25[1],
                                    pos = v24[1]
                                })
                            };
                            for v84, v85 in pairs(v79.data) do
                                v83[l_ChartHeaderNames_0[v84]] = v0.createElement(v4, {
                                    text = v21[v84](v85),
                                    size = v25[v84 + 1],
                                    pos = v24[v84 + 1]
                                });
                            end;
                            for v86 = 2, #v30 do
                                v83[string.format("VerticalLine_%d", v86)] = v0.createElement("Frame", {
                                    Size = UDim2.new(0, l_LineWidth_0, 1, 0),
                                    Position = v30[v86],
                                    BackgroundColor3 = l_LineColor_0,
                                    BorderSizePixel = 0
                                });
                            end;
                            v83.lowerHorizontalLine = v0.createElement("Frame", {
                                Size = UDim2.new(1, 0, 0, l_LineWidth_0),
                                Position = UDim2.new(0, 0, 1, 0),
                                BackgroundColor3 = l_LineColor_0,
                                BorderSizePixel = 0
                            });
                            v61[l_name_0] = v0.createElement("Frame", {
                                Size = UDim2.new(0, v70, 0, v81),
                                BackgroundTransparency = 1,
                                LayoutOrder = v82 + 1
                            }, {
                                Button = v0.createElement(v5, {
                                    size = UDim2.new(1, 0, 0, l_EntryFrameHeight_0),
                                    pos = UDim2.new(),
                                    isExpanded = v80,
                                    onButtonPress = v60.getOnButtonPress(l_name_0)
                                }, v83),
                                DutyCycleGraph = v80 and v0.createElement(v6, {
                                    pos = UDim2.new(0, 0, 0, l_EntryFrameHeight_0 + l_CellPadding_0),
                                    size = UDim2.new(0, v70, 0, l_LineGraphHeight_0 / 2),
                                    graphData = l_dataStats_0.dataSet,
                                    maxY = l_dataStats_0.max[1],
                                    minY = l_dataStats_0.min[1],
                                    getX = v35,
                                    getY = v37,
                                    stringFormatX = v17,
                                    stringFormatY = v21[1],
                                    axisLabelX = "Timestamp",
                                    axisLabelY = l_name_0 .. " " .. l_ChartHeaderNames_0[2]
                                }),
                                StepsPerSecGraph = v80 and v0.createElement(v6, {
                                    pos = UDim2.new(0, 0, 0, (l_EntryFrameHeight_0 + l_LineGraphHeight_0 / 2) + l_CellPadding_0 * 2),
                                    size = UDim2.new(0, v70, 0, l_LineGraphHeight_0 / 2),
                                    graphData = l_dataStats_0.dataSet,
                                    maxY = l_dataStats_0.max[2],
                                    minY = l_dataStats_0.min[2],
                                    getX = v35,
                                    getY = v39,
                                    stringFormatX = v17,
                                    stringFormatY = v21[2],
                                    axisLabelX = "Timestamp",
                                    axisLabelY = l_name_0 .. " " .. l_ChartHeaderNames_0[3]
                                }),
                                StepTimeGraph = v80 and v0.createElement(v6, {
                                    pos = UDim2.new(0, 0, 0, (l_EntryFrameHeight_0 + l_LineGraphHeight_0) + l_CellPadding_0 * 3),
                                    size = UDim2.new(0, v70, 0, l_LineGraphHeight_0 / 2),
                                    graphData = l_dataStats_0.dataSet,
                                    maxY = l_dataStats_0.max[3],
                                    minY = l_dataStats_0.min[3],
                                    getX = v35,
                                    getY = v41,
                                    stringFormatX = v17,
                                    stringFormatY = v21[3],
                                    axisLabelX = "Timestamp",
                                    axisLabelY = l_name_0 .. " " .. l_ChartHeaderNames_0[4]
                                })
                            });
                        end;
                        if v73 < 0 then
                            v73 = v72;
                        else
                            v74 = v74 + v81;
                        end;
                    end;
                    v72 = v72 + v81;
                end;
            end;
            if v73 == -1 then
                v61.emptyResult = v0.createElement("TextLabel", {
                    Size = l_size_0,
                    Text = string.format(l_NoResultSearchStr_0, l_searchTerm_0),
                    TextColor3 = v7.Color.Text,
                    BackgroundTransparency = 1
                });
            else
                v61.WindowingPadding = v0.createElement("Frame", {
                    Size = UDim2.new(1, 0, 0, v73),
                    BackgroundTransparency = 1,
                    LayoutOrder = 1
                });
            end;
        end;
        local v87 = {};
        for v88 = 1, #l_ChartHeaderNames_0 do
            v87[l_ChartHeaderNames_0[v88]] = v0.createElement(v3, {
                text = l_ChartHeaderNames_0[v88],
                size = v25[v88],
                pos = v24[v88],
                sortfunction = v60.onSortChanged
            });
        end;
        v87.upperHorizontalLine = v0.createElement("Frame", {
            Size = UDim2.new(1, 0, 0, l_LineWidth_0),
            Position = UDim2.new(0, 0, 0, 0),
            BackgroundColor3 = l_LineColor_0,
            BorderSizePixel = 0
        });
        v87.lowerHorizontalLine = v0.createElement("Frame", {
            Size = UDim2.new(1, 0, 0, l_LineWidth_0),
            Position = UDim2.new(0, 0, 1, -l_LineWidth_0),
            BackgroundColor3 = l_LineColor_0,
            BorderSizePixel = 0
        });
        for v89 = 2, #v30 do
            v87[string.format("VerticalLine_%d", v89)] = v0.createElement("Frame", {
                Size = UDim2.new(0, l_LineWidth_0, 1, 0),
                Position = v30[v89],
                BackgroundColor3 = l_LineColor_0,
                BorderSizePixel = 0
            });
        end;
        v61.UIListLayout = v0.createElement("UIListLayout", {
            FillDirection = Enum.FillDirection.Vertical,
            HorizontalAlignment = Enum.HorizontalAlignment.Left,
            VerticalAlignment = Enum.VerticalAlignment.Top,
            SortOrder = Enum.SortOrder.LayoutOrder
        });
        return v0.createElement("Frame", {
            Size = l_size_0,
            BackgroundTransparency = 1,
            ClipsDescendants = true,
            LayoutOrder = l_layoutOrder_0
        }, {
            Header = v0.createElement("Frame", {
                Size = UDim2.new(0, v70, 0, l_HeaderFrameHeight_0),
                BackgroundTransparency = 1
            }, v87),
            MainChart = v0.createElement("ScrollingFrame", {
                Size = UDim2.new(1, 0, 1, -l_HeaderFrameHeight_0),
                Position = UDim2.new(0, 0, 0, l_HeaderFrameHeight_0),
                BackgroundTransparency = 1,
                VerticalScrollBarInset = 1,
                ScrollBarThickness = 5,
                CanvasSize = UDim2.new(0, v70, 0, v72),
                [v0.Ref] = v60.scrollingRef
            }, v61)
        });
    end;
end;
return v2(v33, "ServerJobsData");


local v0 = require(script.Parent.Parent.Parent.CircularBuffer);
local v1 = require(script.Parent.Parent.Parent.Signal);
local l_ChartHeaderNames_0 = require(script.Parent.Parent.Parent.Constants).ServerJobsFormatting.ChartHeaderNames;
local v3 = tonumber(settings():GetFVariable("NewDevConsoleMaxGraphCount"));
local v12 = {
    [l_ChartHeaderNames_0[1]] = function(v4, v5)
        return v4.name < v5.name;
    end,
    [l_ChartHeaderNames_0[2]] = function(v6, v7)
        return v6.dataStats.dataSet:back().data[1] < v7.dataStats.dataSet:back().data[1];
    end,
    [l_ChartHeaderNames_0[3]] = function(v8, v9)
        return v8.dataStats.dataSet:back().data[2] < v9.dataStats.dataSet:back().data[2];
    end,
    [l_ChartHeaderNames_0[4]] = function(v10, v11)
        return v10.dataStats.dataSet:back().data[3] < v11.dataStats.dataSet:back().data[3];
    end
};
local v13 = require(script.Parent.Parent.Parent.Util.minOfTable);
local v14 = require(script.Parent.Parent.Parent.Util.maxOfTable);
local v15 = require(script.Parent.Parent.Parent.Util.getClientReplicator);
local v16 = {};
v16.__index = v16;
v16.new = function()
    local v17 = {};
    setmetatable(v17, v16);
    v17._serverJobsUpdated = v1.new();
    v17._serverJobsData = {};
    v17._sortedJobsData = {};
    v17._sortType = l_ChartHeaderNames_0[1];
    v17._lastUpdate = 0;
    v17._isRunning = false;
    return v17;
end;
v16.setSortType = function(v18, v19)
    if not v12[v19] then
        error(string.format("attempted to pass invalid sortType: %s", (tostring(v19))), 2);
        return ;
    else
        v18._sortType = v19;
        table.sort(v18._sortedJobsData, v12[v18._sortType]);
        return ;
    end;
end;
v16.getSortType = function(v20)
    return v20._sortType;
end;
v16.Signal = function(v21)
    return v21._serverJobsUpdated;
end;
v16.getCurrentData = function(v22)
    return v22._sortedJobsData;
end;
v16.updateServerJobsData = function(v23, v24)
    v23._lastUpdate = os.time();
    for v25, v26 in pairs(v24) do
        if v23._serverJobsData[v25] then
            local v27 = {};
            for v28, v29 in pairs(v23._serverJobsData[v25].max) do
                v27[v28] = v29;
            end;
            local v30 = {};
            for v31, v32 in pairs(v23._serverJobsData[v25].min) do
                v30[v31] = v32;
            end;
            local v33 = v23._serverJobsData[v25].dataSet:push_back({
                data = v26,
                time = v23._lastUpdate
            });
            if v33 then
                for v34, v35 in pairs(v33.data) do
                    if v27[v34] == v35 then
                        local v36 = v23._serverJobsData[v25].dataSet:iterator();
                        local v37 = v36:next();
                        v27[v34] = v30[v34];
                        while v37 do
                            v27[v34] = v37.data[v34] < v27[v34] and v27[v34] or v37.data[v34];
                            v37 = v36:next();
                        end;
                    end;
                end;
                for v38, v39 in pairs(v33.data) do
                    if v30[v38] == v39 then
                        local v40 = v23._serverJobsData[v25].dataSet:iterator();
                        local v41 = v40:next();
                        v30[v38] = v27[v38];
                        while v41 do
                            v30[v38] = v30[v38] < v41.data[v38] and v30[v38] or v41.data[v38];
                            v41 = v40:next();
                        end;
                    end;
                end;
            end;
            v23._serverJobsData[v25].max = v14(v27, v26);
            v23._serverJobsData[v25].min = v13(v30, v26);
        else
            local v42 = v0.new(v3);
            v42:push_back({
                data = v26,
                time = v23._lastUpdate
            });
            v23._serverJobsData[v25] = {
                max = v26,
                min = v26,
                dataSet = v42
            };
            table.insert(v23._sortedJobsData, {
                name = v25,
                dataStats = v23._serverJobsData[v25]
            });
        end;
    end;
end;
v16.isRunning = function(v43)
    return v43._isRunning;
end;
v16.start = function(v44)
    local v45 = v15();
    if not (not v45 or v44._statsListenerConnection) then
        v44._statsListenerConnection = v45.StatsReceived:connect(function(v46)
            local l_Jobs_0 = v46.Jobs;
            if l_Jobs_0 then
                v44:updateServerJobsData(l_Jobs_0);
                v44._serverJobsUpdated:Fire(v44._sortedJobsData);
            end;
        end);
        v45:RequestServerStats(true);
        v44._isRunning = true;
    end;
end;
v16.stop = function(v48)
    if v48._statsListenerConnection then
        v48._statsListenerConnection:Disconnect();
        v48._statsListenerConnection = nil;
        v48._isRunning = false;
    end;
end;
return v16;


local l_CorePackages_0 = game:GetService("CorePackages");
local v1 = require(l_CorePackages_0.Roact);
local v2 = require(l_CorePackages_0.RoactRodux);
local l_Components_0 = script.Parent.Parent.Parent.Components;
local v4 = require(l_Components_0.ServerStats.ServerStatsChart);
local v5 = require(l_Components_0.UtilAndTab);
local v6 = require(script.Parent.Parent.Parent.Actions.ServerStatsUpdateSearchFilter);
local v7 = require(script.Parent.Parent.Parent.Constants);
local l_MainRowPadding_0 = v7.GeneralFormatting.MainRowPadding;
local v9 = v1.Component:extend("MainViewServerStats");
v9.init = function(v10)
    v10.onUtilTabHeightChanged = function(v11)
        v10:setState({
            utilTabHeight = v11
        });
    end;
    v10.onSearchTermChanged = function(v12)
        v10.props.dispatchServerStatsUpdateSearchFilter(v12, {});
    end;
    v10.utilRef = v1.createRef();
    v10.state = {
        utilTabHeight = 0
    };
end;
v9.didMount = function(v13)
    v13:setState({
        utilTabHeight = v13.utilRef.current.Size.Y.Offset
    });
end;
v9.didUpdate = function(v14)
    local l_Size_0 = v14.utilRef.current.Size;
    if l_Size_0.Y.Offset ~= v14.state.utilTabHeight then
        v14:setState({
            utilTabHeight = l_Size_0.Y.Offset
        });
    end;
end;
v9.render = function(v16)
    local l_size_0 = v16.props.size;
    local l_formFactor_0 = v16.props.formFactor;
    local l_tabList_0 = v16.props.tabList;
    local l_statsSearchTerm_0 = v16.props.statsSearchTerm;
    local l_utilTabHeight_0 = v16.state.utilTabHeight;
    local l_createElement_0 = v1.createElement;
    local v23 = "Frame";
    local v24 = {
        Size = l_size_0,
        BackgroundColor3 = v7.Color.BaseGray,
        BackgroundTransparency = 1,
        LayoutOrder = 3
    };
    local v25 = {
        UIListLayout = v1.createElement("UIListLayout", {
            Padding = UDim.new(0, l_MainRowPadding_0),
            SortOrder = Enum.SortOrder.LayoutOrder
        }),
        UtilAndTab = v1.createElement(v5, {
            windowWidth = l_size_0.X.Offset,
            formFactor = l_formFactor_0,
            tabList = l_tabList_0,
            searchTerm = l_statsSearchTerm_0,
            layoutOrder = 1,
            refForParent = v16.utilRef,
            onHeightChanged = v16.onUtilTabHeightChanged,
            onSearchTermChanged = v16.onSearchTermChanged
        })
    };
    local v26 = false;
    if l_utilTabHeight_0 > 0 then
        v26 = v1.createElement(v4, {
            size = UDim2.new(1, 0, 1, -l_utilTabHeight_0),
            searchTerm = l_statsSearchTerm_0,
            layoutOrder = 2
        });
    end;
    v25.ServerStats = v26;
    return l_createElement_0(v23, v24, v25);
end;
return v2.UNSTABLE_connect2(function(v27, _)
    return {
        statsSearchTerm = v27.ServerStatsData.statsSearchTerm
    };
end, function(v29)
    return {
        dispatchServerStatsUpdateSearchFilter = function(v30, v31)
            v29(v6(v30, v31));
        end
    };
end)(v9);


local v0 = require(game:GetService("CorePackages").Roact);
local l_Components_0 = script.Parent.Parent.Parent.Components;
local v2 = require(l_Components_0.DataConsumer);
local v3 = require(l_Components_0.CellLabel);
local v4 = require(l_Components_0.BannerButton);
local v5 = require(l_Components_0.LineGraph);
local v6 = require(script.Parent.Parent.Parent.Constants);
local l_LineWidth_0 = v6.GeneralFormatting.LineWidth;
local l_LineColor_0 = v6.GeneralFormatting.LineColor;
local l_ChartHeaderNames_0 = v6.ServerStatsFormatting.ChartHeaderNames;
local l_ValueCellWidth_0 = v6.ServerStatsFormatting.ValueCellWidth;
local l_CellPadding_0 = v6.ServerStatsFormatting.CellPadding;
local l_ExpandArrowPadding_0 = v6.ServerStatsFormatting.ExpandArrowPadding;
local l_HeaderFrameHeight_0 = v6.ServerStatsFormatting.HeaderFrameHeight;
local l_EntryFrameHeight_0 = v6.ServerStatsFormatting.EntryFrameHeight;
local l_LineGraphHeight_0 = v6.GeneralFormatting.LineGraphHeight;
local l_NoResultSearchStr_0 = v6.GeneralFormatting.NoResultSearchStr;
local v17 = require(script.Parent.Parent.Parent.Util.convertTimeStamp);
local v18 = v0.Component:extend("ServerStats");
local function v20(v19)
    return string.format("%.3f", v19);
end;
local function v22(v21)
    return v21.time;
end;
local function v24(v23)
    return v23.value;
end;
v18.init = function(v25)
    local v26 = v25.props.ServerStatsData:getCurrentData();
    v25.getOnButtonPress = function(v27)
        return function(_, _)
            local l_v25_0 = v25;
            local v31 = {};
            local v32 = false;
            if v25.state.expandedEntry ~= v27 then
                v32 = v27;
            end;
            v31.expandedEntry = v32;
            l_v25_0:setState(v31);
        end;
    end;
    v25.state = {
        serverStatsData = v26
    };
end;
v18.didMount = function(v33)
    v33.statsConnector = v33.props.ServerStatsData:Signal():Connect(function(v34)
        v33:setState({
            serverStatsData = v34
        });
    end);
end;
v18.willUnmount = function(v35)
    v35.statsConnector:Disconnect();
    v35.statsConnector = nil;
end;
v18.render = function(v36)
    local v37 = {};
    local l_searchTerm_0 = v36.props.searchTerm;
    local l_layoutOrder_0 = v36.props.layoutOrder;
    local l_size_0 = v36.props.size;
    local l_expandedEntry_0 = v36.state.expandedEntry;
    local l_serverStatsData_0 = v36.state.serverStatsData;
    local v43 = 1;
    local v44 = 0;
    local v45 = 0;
    if l_serverStatsData_0 then
        for v46, v47 in pairs(l_serverStatsData_0) do
            v44 = v44 + 1;
            if not l_searchTerm_0 or string.find(v46:lower(), l_searchTerm_0:lower()) ~= nil then
                v43 = v43 + 1;
                local v48 = l_expandedEntry_0 == v46;
                local v49 = not not v48 and l_EntryFrameHeight_0 + l_LineGraphHeight_0 or l_EntryFrameHeight_0;
                v45 = not not v48 and v45 + 1 or v45;
                v37[v46] = v0.createElement("Frame", {
                    Size = UDim2.new(1, 0, 0, v49),
                    BackgroundTransparency = 1,
                    LayoutOrder = v43
                }, {
                    DataButton = v0.createElement(v4, {
                        size = UDim2.new(1, 0, 0, l_EntryFrameHeight_0),
                        pos = UDim2.new(),
                        isExpanded = v48,
                        onButtonPress = v36.getOnButtonPress(v46)
                    }, {
                        [v46] = v0.createElement(v3, {
                            text = v46,
                            size = UDim2.new(1 - l_ValueCellWidth_0, -l_CellPadding_0 - l_ExpandArrowPadding_0, 1, 0),
                            pos = UDim2.new(0, l_CellPadding_0 + l_ExpandArrowPadding_0, 0, 0)
                        }),
                        Data = v0.createElement(v3, {
                            text = string.format("%.3f", v47.dataSet:back().value),
                            size = UDim2.new(l_ValueCellWidth_0, -l_CellPadding_0, 1, 0),
                            pos = UDim2.new(1 - l_ValueCellWidth_0, l_CellPadding_0, 0, 0)
                        }),
                        VerticalLine = v0.createElement("Frame", {
                            Size = UDim2.new(0, l_LineWidth_0, 1, 0),
                            Position = UDim2.new(1 - l_ValueCellWidth_0, 0, 0, 0),
                            BackgroundColor3 = l_LineColor_0,
                            BorderSizePixel = 0
                        }),
                        HorizontalAlignment = v0.createElement("Frame", {
                            Size = UDim2.new(1, 0, 0, l_LineWidth_0),
                            Position = UDim2.new(0, 0, 1, 0),
                            BackgroundColor3 = l_LineColor_0,
                            BorderSizePixel = 0
                        })
                    }),
                    Graph = v48 and v0.createElement(v5, {
                        pos = UDim2.new(0, 0, 0, l_EntryFrameHeight_0),
                        size = UDim2.new(1, 0, 1, -l_EntryFrameHeight_0),
                        graphData = v47.dataSet,
                        minY = v47.min,
                        maxY = v47.max,
                        getX = v22,
                        getY = v24,
                        axisLabelX = "Timestamp",
                        axisLabelY = v46,
                        stringFormatX = v17,
                        stringFormatY = v20
                    })
                });
            end;
        end;
    end;
    if v43 == 1 then
        if v44 == 0 then
            return v0.createElement("TextLabel", {
                Size = l_size_0,
                Position = UDim2.new(0, 0, 0, 0),
                Text = "Awaiting Server Stats",
                TextColor3 = v6.Color.Text,
                BackgroundTransparency = 1,
                LayoutOrder = l_layoutOrder_0
            });
        else
            v37.emptyResult = v0.createElement("TextLabel", {
                Size = l_size_0,
                Text = string.format(l_NoResultSearchStr_0, l_searchTerm_0),
                TextColor3 = v6.Color.Text,
                BackgroundTransparency = 1
            });
        end;
    end;
    v37.UIListLayout = v0.createElement("UIListLayout", {
        FillDirection = Enum.FillDirection.Vertical,
        HorizontalAlignment = Enum.HorizontalAlignment.Left,
        VerticalAlignment = Enum.VerticalAlignment.Top,
        SortOrder = Enum.SortOrder.LayoutOrder
    });
    return v0.createElement("Frame", {
        Size = l_size_0,
        BackgroundTransparency = 1,
        LayoutOrder = l_layoutOrder_0
    }, {
        Header = v0.createElement("Frame", {
            Size = UDim2.new(1, 0, 0, l_HeaderFrameHeight_0),
            BackgroundTransparency = 1
        }, {
            [l_ChartHeaderNames_0[1]] = v0.createElement(v3, {
                text = l_ChartHeaderNames_0[1],
                size = UDim2.new(1 - l_ValueCellWidth_0, -l_CellPadding_0 - l_ExpandArrowPadding_0, 1, 0),
                pos = UDim2.new(0, l_CellPadding_0 + l_ExpandArrowPadding_0, 0, 0)
            }),
            [l_ChartHeaderNames_0[2]] = v0.createElement(v3, {
                text = l_ChartHeaderNames_0[2],
                size = UDim2.new(l_ValueCellWidth_0, -l_CellPadding_0, 1, 0),
                pos = UDim2.new(1 - l_ValueCellWidth_0, l_CellPadding_0, 0, 0)
            }),
            upperHorizontalLine = v0.createElement("Frame", {
                Size = UDim2.new(1, 0, 0, l_LineWidth_0),
                BackgroundColor3 = l_LineColor_0,
                BorderSizePixel = 0
            }),
            VerticalLine = v0.createElement("Frame", {
                Size = UDim2.new(0, l_LineWidth_0, 1, 0),
                Position = UDim2.new(1 - l_ValueCellWidth_0, 0, 0, 0),
                BackgroundColor3 = l_LineColor_0,
                BorderSizePixel = 0
            }),
            lowerHorizontalLine = v0.createElement("Frame", {
                Size = UDim2.new(1, 0, 0, l_LineWidth_0),
                Position = UDim2.new(0, 0, 1, 0),
                BackgroundColor3 = l_LineColor_0,
                BorderSizePixel = 0
            })
        }),
        mainFrame = v0.createElement("ScrollingFrame", {
            Position = UDim2.new(0, 0, 0, l_HeaderFrameHeight_0),
            Size = UDim2.new(1, 0, 1, -l_HeaderFrameHeight_0),
            CanvasSize = UDim2.new(1, 0, 0, v44 * l_EntryFrameHeight_0 + v45 * l_LineGraphHeight_0),
            ScrollBarThickness = 5,
            BackgroundTransparency = 1
        }, v37)
    });
end;
return v2(v18, "ServerStatsData");


local v0 = require(script.Parent.Parent.Parent.CircularBuffer);
local v1 = require(script.Parent.Parent.Parent.Signal);
local v2 = tonumber(settings():GetFVariable("NewDevConsoleMaxGraphCount"));
local v3 = require(script.Parent.Parent.Parent.Util.getClientReplicator);
local v4 = {};
v4.__index = v4;
v4.new = function()
    local v5 = {};
    setmetatable(v5, v4);
    v5._serverStatsUpdated = v1.new();
    v5._serverStatsPing = v1.new();
    v5._serverStatsData = {};
    v5._serverStatsDataCount = 0;
    v5._lastUpdateTime = 0;
    v5._isRunning = false;
    return v5;
end;
v4.avgPing = function(v6)
    return v6._serverStatsPing;
end;
v4.Signal = function(v7)
    return v7._serverStatsUpdated;
end;
v4.getCurrentData = function(v8)
    return v8._serverStatsData;
end;
v4.updateValue = function(v9, v10, v11)
    if v9._serverStatsData[v10] then
        local v12 = v9._serverStatsData[v10];
        local l_max_0 = v12.max;
        local l_min_0 = v12.min;
        local v15 = v9._serverStatsData[v10].dataSet:push_back({
            value = v11,
            time = v9._lastUpdateTime
        });
        if v15 then
            local v16 = v9._serverStatsData[v10].dataSet:iterator();
            local v17 = v16:next();
            if l_max_0 == v15.value then
                l_max_0 = l_min_0;
                while v17 do
                    l_max_0 = v17.value < l_max_0 and l_max_0 or v17.value;
                    v17 = v16:next();
                end;
            end;
            if l_min_0 == v15.value then
                l_min_0 = l_max_0;
                while v17 do
                    l_min_0 = l_min_0 < v17.value and l_min_0 or v17.value;
                    v17 = v16:next();
                end;
            end;
        end;
        v9._serverStatsData[v10].max = l_max_0 < v11 and v11 or l_max_0;
        v9._serverStatsData[v10].min = l_min_0 < v11 and l_min_0 or v11;
        return ;
    else
        local v18 = v0.new(v2);
        v18:push_back({
            value = v11,
            time = v9._lastUpdateTime
        });
        v9._serverStatsData[v10] = {
            max = v11,
            min = v11,
            dataSet = v18
        };
        return ;
    end;
end;
v4.isRunning = function(v19)
    return v19._isRunning;
end;
v4.start = function(v20)
    local v21 = v3();
    if not (not v21 or v20._statsListenerConnection) then
        v20._statsListenerConnection = v21.StatsReceived:connect(function(v22)
            if v22 then
                v20._lastUpdateTime = os.time();
                local v23 = 0;
                for v24, v25 in pairs(v22) do
                    if type(v25) == "number" then
                        v20:updateValue(v24, v25);
                        v23 = v23 + 1;
                    end;
                end;
                v20._serverStatsDataCount = v23;
                v20._serverStatsUpdated:Fire(v20._serverStatsData);
                if v20._serverStatsData["Avg Ping ms"] then
                    v20._serverStatsPing:Fire(v20._serverStatsData["Avg Ping ms"].dataSet:back().value);
                end;
            end;
        end);
        v21:RequestServerStats(true);
        v20._isRunning = true;
    end;
end;
v4.stop = function(v26)
    if v26._statsListenerConnection then
        v26._statsListenerConnection:Disconnect();
        v26._statsListenerConnection = nil;
    end;
    v26._isRunning = false;
end;
return v4;


local v0 = require(game:GetService("CorePackages").Roact);
local v1 = require(script.Parent.Parent.Constants);
local l_HighlightHeight_0 = v1.TabRowFormatting.HighlightHeight;
local l_FrameHeight_0 = v1.TabRowFormatting.FrameHeight;
return function(v4)
    local l_index_0 = v4.index;
    local l_name_0 = v4.name;
    local l_textWidth_0 = v4.textWidth;
    local l_padding_0 = v4.padding;
    local l_isSelected_0 = v4.isSelected;
    local l_layoutOrder_0 = v4.layoutOrder;
    local l_onTabButtonClicked_0 = v4.onTabButtonClicked;
    l_textWidth_0 = l_textWidth_0 + l_padding_0;
    local l_UnselectedTextTransparency_0 = v1.TabRowFormatting.UnselectedTextTransparency;
    if l_isSelected_0 then
        l_UnselectedTextTransparency_0 = v1.TabRowFormatting.SelectedTextTransparency;
    end;
    return v0.createElement("TextButton", {
        Text = l_name_0,
        TextSize = v1.DefaultFontSize.TabBar,
        Font = v1.Font.TabBar,
        TextScaled = false,
        TextTransparency = l_UnselectedTextTransparency_0,
        Size = UDim2.new(0, l_textWidth_0, 0, l_FrameHeight_0),
        AutoButtonColor = false,
        TextColor3 = v1.Color.Text,
        BackgroundColor3 = v1.Color.UnselectedGray,
        BorderSizePixel = 0,
        LayoutOrder = l_layoutOrder_0,
        [v0.Event.Activated] = function(_)
            l_onTabButtonClicked_0(l_index_0);
        end
    }, {
        BlueHighlight = l_isSelected_0 and v0.createElement("Frame", {
            Size = UDim2.new(1, 0, 0, -l_HighlightHeight_0),
            Position = UDim2.new(0, 0, 1, 0),
            BorderSizePixel = 0,
            BackgroundColor3 = v1.Color.HighlightBlue
        })
    });
end;


local l_CorePackages_0 = game:GetService("CorePackages");
local v1 = require(l_CorePackages_0.Roact);
local v2 = require(l_CorePackages_0.RoactRodux);
local l_TextService_0 = game:GetService("TextService");
local v4 = require(script.Parent.Parent.Actions.SetActiveTab);
local v5 = require(script.Parent.TabRowButton);
local v6 = require(script.Parent.DropDown);
local v7 = require(script.Parent.FullScreenDropDownButton);
local v8 = require(script.Parent.Parent.Constants);
local l_TabDropDownWidth_0 = v8.TabRowFormatting.TabDropDownWidth;
local l_TabOverlapThreshold_0 = v8.TabRowFormatting.TabOverlapThreshold;
local v11 = v1.Component:extend("TabRowContainer");
local function v19(v12)
    local v13 = {};
    local v14 = 0;
    local v15 = 0;
    for v16, _ in pairs(v12) do
        local l_l_TextService_0_TextSize_0 = l_TextService_0:GetTextSize(v16, v8.DefaultFontSize.TabBar, v8.Font.TabBar, Vector2.new(0, 0));
        v13[v16] = l_l_TextService_0_TextSize_0.X;
        v14 = v14 + l_l_TextService_0_TextSize_0.X;
        v15 = v15 + 1;
    end;
    return v13, v14, v15;
end;
v11.init = function(v20)
    local v21, v22, v23 = v19(v20.props.tabList);
    v20.state = {
        textWidths = v21,
        totalTextLength = v22,
        totalTabCount = v23,
        currContainerWidth = 0
    };
    v20.onTabButtonClicked = function(v24)
        for v25, v26 in pairs(v20.props.tabList) do
            if v26.layoutOrder == v24 then
                v20.props.dispatchSetActiveTab(v25, v26.hasClientServer);
                return ;
            end;
        end;
    end;
end;
v11.didUpdate = function(v27, v28, _)
    if v28.tabList ~= v27.props.tabList then
        local v30, v31, v32 = v19(v27.props.tabList);
        v27:setState({
            textWidths = v30,
            totalTextLength = v31,
            totalTabCount = v32
        });
    end;
end;
v11.render = function(v33)
    local l_tabList_0 = v33.props.tabList;
    local l_currTabIndex_0 = v33.props.currTabIndex;
    local l_formFactor_0 = v33.props.formFactor;
    local l_windowWidth_0 = v33.props.windowWidth;
    local l_frameHeight_0 = v33.props.frameHeight;
    local l_layoutOrder_0 = v33.props.layoutOrder;
    local l_textWidths_0 = v33.state.textWidths;
    local l_totalTextLength_0 = v33.state.totalTextLength;
    local l_totalTabCount_0 = v33.state.totalTabCount;
    local v43 = {};
    local v44 = (l_windowWidth_0 - l_totalTextLength_0) / l_totalTabCount_0;
    local v45 = ((v44 % 1) * l_totalTabCount_0) / 2;
    local v46 = false;
    if v44 < l_TabOverlapThreshold_0 then
        v46 = l_windowWidth_0 > 0;
    end;
    local v47 = l_formFactor_0 == v8.FormFactor.Small;
    if l_tabList_0 then
        if not v46 and not v47 then
            for v48, v49 in pairs(l_tabList_0) do
                if l_textWidths_0[v48] then
                    v43[v48] = v1.createElement(v5, {
                        index = v49.layoutOrder,
                        name = v48,
                        padding = v44,
                        textWidth = not not v46 and l_TabDropDownWidth_0 or l_textWidths_0[v48],
                        isSelected = v48 == l_currTabIndex_0,
                        layoutOrder = v49.layoutOrder,
                        onTabButtonClicked = v33.onTabButtonClicked
                    });
                end;
            end;
        else
            local v50 = {};
            local l_layoutOrder_1 = l_tabList_0[l_currTabIndex_0].layoutOrder;
            for v52, v53 in pairs(l_tabList_0) do
                v50[v53.layoutOrder] = v52;
            end;
            if not v47 then
                if v46 then
                    return v1.createElement(v6, {
                        buttonSize = UDim2.new(0, l_TabDropDownWidth_0, 0, l_frameHeight_0),
                        dropDownList = v50,
                        selectedIndex = l_layoutOrder_1,
                        onSelection = v33.onTabButtonClicked
                    });
                end;
            else
                return v1.createElement(v7, {
                    buttonSize = UDim2.new(0, l_TabDropDownWidth_0, 0, l_frameHeight_0),
                    dropDownList = v50,
                    selectedIndex = l_layoutOrder_1,
                    onSelection = v33.onTabButtonClicked,
                    layoutOrder = l_layoutOrder_0
                });
            end;
        end;
        v43.UIListLayout = v1.createElement("UIListLayout", {
            HorizontalAlignment = Enum.HorizontalAlignment.Left,
            SortOrder = Enum.SortOrder.LayoutOrder,
            VerticalAlignment = Enum.VerticalAlignment.Top,
            FillDirection = Enum.FillDirection.Horizontal
        });
    end;
    return v1.createElement("Frame", {
        Size = UDim2.new(1, 0, 0, l_frameHeight_0),
        Position = UDim2.new(0, v45, 0, 0),
        Transparency = 1,
        LayoutOrder = l_layoutOrder_0
    }, v43);
end;
return v2.UNSTABLE_connect2(function(v54, _)
    return {
        tabList = v54.MainView.tabList,
        currTabIndex = v54.MainView.currTabIndex
    };
end, function(v56)
    return {
        dispatchSetActiveTab = function(v57, v58)
            v56(v4(v57, v58));
        end
    };
end)(v11);


local l_CorePackages_0 = game:GetService("CorePackages");
local l_CoreGui_0 = game:GetService("CoreGui");
local v2 = require(l_CorePackages_0.Packages.React);
local v3 = require(l_CorePackages_0.Roact);
local v4 = require(script.Parent.Parent.Constants);
local l_MainWindowHeader_0 = v4.Font.MainWindowHeader;
local l_MainWindowHeader_1 = v4.DefaultFontSize.MainWindowHeader;
local l_Text_0 = v4.Color.Text;
local l_UnselectedGray_0 = v4.Color.UnselectedGray;
local l_Padding_0 = v4.Tooltip.Padding;
local l_Offset_0 = v4.Tooltip.Offset;
local l_MaxWidth_0 = v4.Tooltip.MaxWidth;
local l_Delay_0 = v4.Tooltip.Delay;
return function(v13)
    local v14, v15 = v2.useState(false);
    local l_text_0 = v13.text;
    local l_pos_0 = v13.pos;
    v2.useEffect(function()
        v15(false);
        local v18 = false;
        task.delay(l_Delay_0, function()
            if not v18 then
                v15(true);
                return ;
            else
                return ;
            end;
        end);
        return function()
            v18 = true;
        end;
    end, {
        l_text_0,
        l_pos_0
    });
    return v3.createElement(v3.Portal, {
        target = l_CoreGui_0
    }, {
        TooltipContainer = v3.createElement("ScreenGui", {
            DisplayOrder = 20,
            IgnoreGuiInset = true,
            OnTopOfCoreBlur = true,
            Enabled = v14
        }, {
            Tooltip = v3.createElement("TextLabel", {
                Text = l_text_0,
                TextSize = l_MainWindowHeader_1,
                TextColor3 = l_Text_0,
                TextWrapped = true,
                TextXAlignment = Enum.TextXAlignment.Left,
                Font = l_MainWindowHeader_0,
                AutomaticSize = Enum.AutomaticSize.XY,
                Position = l_pos_0 + l_Offset_0,
                BackgroundColor3 = l_UnselectedGray_0,
                BackgroundTransparency = 0,
                BorderSizePixel = 0
            }, {
                Padding = v3.createElement("UIPadding", {
                    PaddingTop = l_Padding_0,
                    PaddingBottom = l_Padding_0,
                    PaddingLeft = l_Padding_0,
                    PaddingRight = l_Padding_0
                }),
                SizeConstraint = v3.createElement("UISizeConstraint", {
                    MaxSize = Vector2.new(l_MaxWidth_0, math.huge)
                })
            })
        })
    });
end;


local l_CorePackages_0 = game:GetService("CorePackages");
local l_TextService_0 = game:GetService("TextService");
local v2 = require(l_CorePackages_0.Roact);
local v3 = require(script.Parent.Parent.Constants);
local l_FrameHeight_0 = v3.TabRowFormatting.FrameHeight;
local l_TabDropDownWidth_0 = v3.TabRowFormatting.TabDropDownWidth;
local l_TabOverlapThreshold_0 = v3.TabRowFormatting.TabOverlapThreshold;
local l_FrameHeight_1 = v3.UtilityBarFormatting.FrameHeight;
local l_SmallFrameHeight_0 = v3.UtilityBarFormatting.SmallFrameHeight;
local l_SmallUtilPadding_0 = v3.UtilityBarFormatting.SmallUtilPadding;
local l_ClientServerButtonWidth_0 = v3.UtilityBarFormatting.ClientServerButtonWidth;
local l_ClientServerDropDownWidth_0 = v3.UtilityBarFormatting.ClientServerDropDownWidth;
local l_MainRowPadding_0 = v3.GeneralFormatting.MainRowPadding;
local l_Parent_0 = script.Parent;
local v14 = require(l_Parent_0.ClientServerButton);
local v15 = require(l_Parent_0.CheckBoxContainer);
local v16 = require(l_Parent_0.TabRowContainer);
local v17 = require(l_Parent_0.SearchBar);
local v18 = v2.Component:extend("UtilAndTab");
v18.init = function(v19)
    local l_tabList_0 = v19.props.tabList;
    local v21 = 0;
    local v22 = 0;
    for v23, _ in pairs(l_tabList_0) do
        v21 = v21 + l_TextService_0:GetTextSize(v23, v3.DefaultFontSize.TabBar, v3.Font.TabBar, Vector2.new(0, 0)).X;
        v22 = v22 + 1;
    end;
    v19.showSearchBar = function()
        v19:setState({
            activeSearchTerm = true
        });
    end;
    v19.cancelInput = function(_, v26)
        if not (v26.UserInputType ~= Enum.UserInputType.MouseButton1) or v26.UserInputType == Enum.UserInputType.Touch and v26.UserInputState == Enum.UserInputState.End then
            if v19.searchRef.current then
                v19.searchRef.current.Text = "";
            end;
            local l_onSearchTermChanged_0 = v19.props.onSearchTermChanged;
            if l_onSearchTermChanged_0 then
                l_onSearchTermChanged_0("");
            end;
            v19:setState({
                activeSearchTerm = false
            });
        end;
    end;
    v19.focusLost = function(v28, v29, _)
        if v29 then
            local l_text_0 = v28.text;
            local l_onSearchTermChanged_1 = v19.props.onSearchTermChanged;
            if l_onSearchTermChanged_1 then
                l_onSearchTermChanged_1(l_text_0);
            end;
            local v33 = l_text_0 ~= "";
            if v19.state.activeSearchTerm ~= v33 then
                v19:setState({
                    activeSearchTerm = v33
                });
            end;
        end;
    end;
    v19.state = {
        totalTabWidth = v21,
        totalTabCount = v22,
        activeSearchTerm = false
    };
    v19.utilRef = v2.createRef();
    v19.searchRef = v2.createRef();
end;
v18.render = function(v34)
    local l_windowWidth_0 = v34.props.windowWidth;
    local l_formFactor_0 = v34.props.formFactor;
    local l_tabList_1 = v34.props.tabList;
    local l_orderedCheckBoxState_0 = v34.props.orderedCheckBoxState;
    local l_layoutOrder_0 = v34.props.layoutOrder;
    local l_isClientView_0 = v34.props.isClientView;
    local l_searchTerm_0 = v34.props.searchTerm;
    local l_onClientButton_0 = v34.props.onClientButton;
    local l_onServerButton_0 = v34.props.onServerButton;
    local l_onCheckBoxChanged_0 = v34.props.onCheckBoxChanged;
    local l_onSearchTermChanged_2 = v34.props.onSearchTermChanged;
    local l_totalTabWidth_0 = v34.state.totalTabWidth;
    local l_totalTabCount_0 = v34.state.totalTabCount;
    local l_activeSearchTerm_0 = v34.state.activeSearchTerm;
    local v49 = (l_windowWidth_0 - l_totalTabWidth_0) / l_totalTabCount_0;
    local v50 = false;
    if v49 < l_TabOverlapThreshold_0 then
        v50 = l_windowWidth_0 > 0;
    end;
    local v51 = nil;
    local v52 = l_formFactor_0 == v3.FormFactor.Small and l_SmallFrameHeight_0 or l_FrameHeight_1;
    local v53 = l_formFactor_0 == v3.FormFactor.Small and 6 or 7;
    local v54 = not not v34.props[v2.Children] and math.ceil(#v34.props[v2.Children] / 5) or 1;
    v51 = v2.createElement("Frame", {
        Position = UDim2.new(1, -v53 * l_ClientServerButtonWidth_0 - l_MainRowPadding_0, 0, 0),
        Size = UDim2.new(0, 5 * l_ClientServerButtonWidth_0, 0, v52 * v54),
        BackgroundTransparency = 1
    }, {
        Layout = v2.createElement("UIGridLayout", {
            CellPadding = UDim2.new(0, l_MainRowPadding_0, 0, 0),
            CellSize = UDim2.new(0, l_ClientServerButtonWidth_0, 0, v52),
            SortOrder = Enum.SortOrder.LayoutOrder,
            HorizontalAlignment = Enum.HorizontalAlignment.Right,
            VerticalAlignment = Enum.VerticalAlignment.Top,
            FillDirectionMaxCells = 5
        });
        unpack(v34.props[v2.Children] or {})
    });
    if l_formFactor_0 ~= v3.FormFactor.Small and not v50 then
        local v55 = l_onClientButton_0 and l_onServerButton_0;
        local v56 = (l_windowWidth_0 - l_SmallUtilPadding_0 * 3) - 3 * l_ClientServerButtonWidth_0;
        if v55 then
            v56 = v56 - l_ClientServerButtonWidth_0;
        end;
        return v2.createElement("Frame", {
            Size = UDim2.new(1, 0, 0, (l_FrameHeight_0 + l_FrameHeight_1 * v54) + l_MainRowPadding_0),
            BackgroundTransparency = 1,
            LayoutOrder = l_layoutOrder_0,
            [v2.Ref] = v34.props.refForParent
        }, {
            Tabs = v2.createElement(v16, {
                tabList = l_tabList_1,
                windowWidth = l_windowWidth_0,
                frameHeight = l_FrameHeight_0,
                formFactor = l_formFactor_0
            }),
            UtilBar = v2.createElement("Frame", {
                Position = UDim2.new(0, 4, 0, l_FrameHeight_0 + l_MainRowPadding_0),
                Size = UDim2.new(1, -8, 0, l_FrameHeight_1),
                BackgroundTransparency = 1,
                [v2.Ref] = v34.utilRef
            }, {
                MainRow = v2.createElement("Frame", {
                    Size = UDim2.new(1, 0, 1, 0),
                    BackgroundTransparency = 1
                }, {
                    UIListLayout = v2.createElement("UIListLayout", {
                        HorizontalAlignment = Enum.HorizontalAlignment.Left,
                        SortOrder = Enum.SortOrder.LayoutOrder,
                        VerticalAlignment = Enum.VerticalAlignment.Top,
                        FillDirection = Enum.FillDirection.Horizontal,
                        Padding = UDim.new(0, l_SmallUtilPadding_0)
                    }),
                    ClientServerButton = v55 and v2.createElement(v14, {
                        formFactor = l_formFactor_0,
                        isClientView = l_isClientView_0,
                        onClientButton = l_onClientButton_0,
                        onServerButton = l_onServerButton_0
                    }),
                    FilterCheckBoxes = l_onCheckBoxChanged_0 and v2.createElement(v15, {
                        orderedCheckBoxState = l_orderedCheckBoxState_0,
                        frameWidth = v56,
                        frameHeight = l_FrameHeight_1,
                        pos = UDim2.new(0, 2 * l_ClientServerButtonWidth_0 + l_MainRowPadding_0, 0, 0),
                        onCheckBoxChanged = l_onCheckBoxChanged_0
                    })
                }),
                SearchBar = l_onSearchTermChanged_2 and v2.createElement(v17, {
                    size = UDim2.new(0, 2 * l_ClientServerButtonWidth_0, 0, l_FrameHeight_1),
                    pos = UDim2.new(1, -2 * l_ClientServerButtonWidth_0, 0, 0),
                    searchTerm = l_searchTerm_0,
                    showClear = l_activeSearchTerm_0,
                    textSize = v3.DefaultFontSize.Search,
                    font = v3.Font.Search,
                    frameHeight = v3.UtilityBarFormatting.FrameHeight,
                    refForParent = v34.searchRef,
                    cancelInput = v34.cancelInput,
                    focusLost = v34.focusLost
                }),
                Buttons = v51
            })
        });
    else
        local v57 = l_SmallFrameHeight_0 * v54 + l_SmallUtilPadding_0;
        if l_activeSearchTerm_0 then
            v57 = (v57 + l_SmallFrameHeight_0) + l_SmallUtilPadding_0;
        end;
        local v58 = l_onClientButton_0 and l_onServerButton_0;
        local v59 = (l_windowWidth_0 - l_SmallFrameHeight_0) - l_TabDropDownWidth_0;
        if v58 then
            v59 = v59 - l_ClientServerDropDownWidth_0;
        end;
        local v60 = l_TextService_0:GetTextSize("Cancel", v3.DefaultFontSize.UtilBar, v3.Font.UtilBar, Vector2.new(0, 0)).X + 12;
        return v2.createElement("Frame", {
            Size = UDim2.new(1, 0, 0, v57),
            BackgroundTransparency = 1,
            LayoutOrder = l_layoutOrder_0,
            [v2.Ref] = v34.props.refForParent
        }, {
            MainFrame = v2.createElement("Frame", {
                Size = UDim2.new(1, 0, 0, l_SmallFrameHeight_0),
                BackgroundTransparency = 1,
                [v2.Ref] = v34.utilRef
            }, {
                MainRow = v2.createElement("Frame", {
                    Size = UDim2.new(1, 0, 1, 0),
                    BackgroundTransparency = 1
                }, {
                    UIListLayout = v2.createElement("UIListLayout", {
                        HorizontalAlignment = Enum.HorizontalAlignment.Left,
                        SortOrder = Enum.SortOrder.LayoutOrder,
                        VerticalAlignment = Enum.VerticalAlignment.Top,
                        FillDirection = Enum.FillDirection.Horizontal,
                        Padding = UDim.new(0, l_SmallUtilPadding_0)
                    }),
                    Tabs = v2.createElement(v16, {
                        tabList = l_tabList_1,
                        windowWidth = l_windowWidth_0,
                        frameHeight = l_SmallFrameHeight_0,
                        formFactor = l_formFactor_0,
                        layoutOrder = 1
                    }),
                    ClientServerButton = v58 and v2.createElement(v14, {
                        frameHeight = l_SmallFrameHeight_0,
                        formFactor = l_formFactor_0,
                        useDropDown = v50,
                        isClientView = l_isClientView_0,
                        layoutOrder = 2,
                        onClientButton = l_onClientButton_0,
                        onServerButton = l_onServerButton_0
                    }),
                    FilterCheckBoxes = l_onCheckBoxChanged_0 and v2.createElement(v15, {
                        orderedCheckBoxState = l_orderedCheckBoxState_0,
                        frameWidth = v59,
                        frameHeight = l_SmallFrameHeight_0,
                        pos = UDim2.new(0, 2 * l_ClientServerButtonWidth_0 + l_MainRowPadding_0, 0, 0),
                        layoutOrder = 3,
                        onCheckBoxChanged = l_onCheckBoxChanged_0
                    })
                }),
                SearchButton = v2.createElement("ImageButton", {
                    Size = UDim2.new(0, l_SmallFrameHeight_0, 0, l_SmallFrameHeight_0),
                    Position = UDim2.new(1, -l_SmallFrameHeight_0, 0, 0),
                    BackgroundTransparency = 1,
                    Image = v3.Image.Search,
                    Visible = not l_activeSearchTerm_0,
                    [v2.Event.Activated] = v34.showSearchBar
                }),
                Buttons = v51
            }),
            SearchBarFrame = v2.createElement("Frame", {
                Size = UDim2.new(1, 0, 0, l_SmallFrameHeight_0),
                Position = UDim2.new(0, 0, 0, (l_SmallFrameHeight_0 + l_SmallUtilPadding_0) * v54),
                Visible = l_activeSearchTerm_0,
                BorderSizePixel = 0,
                BackgroundTransparency = 1
            }, {
                SearchBar = v2.createElement(v17, {
                    size = UDim2.new(1, -v60, 0, l_SmallFrameHeight_0),
                    searchTerm = l_searchTerm_0,
                    showClear = l_activeSearchTerm_0,
                    textSize = v3.DefaultFontSize.Search,
                    font = v3.Font.Search,
                    frameHeight = l_SmallFrameHeight_0,
                    refForParent = v34.searchRef,
                    cancelInput = v34.cancelInput,
                    focusLost = v34.focusLost
                }),
                CancelButton = v2.createElement("TextButton", {
                    Size = UDim2.new(0, v60, 1, 0),
                    Position = UDim2.new(1, -v60, 0, 0),
                    Text = "Cancel",
                    TextSize = v3.DefaultFontSize.UtilBar,
                    TextColor3 = v3.Color.Text,
                    Font = v3.Font.UtilBar,
                    BorderSizePixel = 0,
                    BackgroundTransparency = 1,
                    [v2.Event.Activated] = v34.cancelInput
                })
            })
        });
    end;
end;
return v18;


local l_RbxAnalyticsService_0 = game:GetService("RbxAnalyticsService");
local v1 = require(game:GetService("CorePackages").Packages.Dash);
local v2 = require(script.Parent.Parent.Actions.SetActiveTab);
local v3 = require(script.Parent.Parent.Actions.SetDevConsoleVisibility);
local v4 = require(script.Parent.Parent.Actions.SetDevConsoleMinimized);
local v5 = game:DefineFastInt("ReportDevConsoleTabEventsThrottleHundredthsPercent", 0);
local v6 = game:DefineFastFlag("DevConsoleUseThrottledMetrics", false);
ReportDevConsoleOpenClose = function(v7, v8)
    if v8.type == v3.name then
        local l_isVisible_0 = v7:getState().DisplayOptions.isVisible;
        local l_visibleStartTime_0 = v7:getState().DisplayOptions.visibleStartTime;
        if v8.isVisible ~= l_isVisible_0 then
            if not v8.isVisible then
                l_RbxAnalyticsService_0:ReportStats("DevConsoleSessionTime", tick() - l_visibleStartTime_0);
            else
                l_RbxAnalyticsService_0:ReportCounter("DevConsoleStartVisible", 1);
                return ;
            end;
        end;
    end;
end;
getTabAnalyticsKeyName = function(v11, v12)
    if v12 ~= nil then
        return string.format("%s_%s", v11, not v12 and "Server" or "Client");
    else
        return string.format("%s", v11);
    end;
end;
dispatchTabAnalytics = function(v13)
    if not v6 then
        l_RbxAnalyticsService_0:SendEventImmediately("client", "devConsoleMetric", "devConsoleTabChange", v13);
        return ;
    else
        l_RbxAnalyticsService_0:ReportInfluxSeries("devConsoleMetric", v1.join({
            placeId = game.PlaceId,
            calledFrom = "devConsoleTabChange"
        }, v13), v5);
        return ;
    end;
end;
ReportTabChange = function(v14, v15)
    if v15.type == v2.name then
        local l_MainView_0 = v14:getState().MainView;
        local l_newTabIndex_0 = v15.newTabIndex;
        local l_isClientView_0 = v15.isClientView;
        if not (l_newTabIndex_0 == l_MainView_0.currTabIndex) or l_isClientView_0 ~= nil and l_isClientView_0 ~= l_MainView_0.isClientView then
            dispatchTabAnalytics({
                initTab = getTabAnalyticsKeyName(l_MainView_0.currTabIndex, l_MainView_0.isClientView),
                endTab = getTabAnalyticsKeyName(l_newTabIndex_0, l_isClientView_0)
            });
            return ;
        end;
    elseif v15.type == v3.name then
        local l_MainView_1 = v14:getState().MainView;
        local l_DisplayOptions_0 = v14:getState().DisplayOptions;
        local _ = nil;
        dispatchTabAnalytics(if not v15.isVisible then if l_DisplayOptions_0.isMinimized then {
            initTab = "Minimized",
            endTab = "EndVisible"
        } else {
            initTab = getTabAnalyticsKeyName(l_MainView_1.currTabIndex, l_MainView_1.isClientView),
            endTab = "EndVisible"
        } else {
            initTab = "StartVisible",
            endTab = getTabAnalyticsKeyName(l_MainView_1.currTabIndex, l_MainView_1.isClientView)
        });
        return ;
    elseif v15.type == v4.name then
        local l_MainView_2 = v14:getState().MainView;
        local _ = nil;
        dispatchTabAnalytics(if not v15.isMinimized then {
            initTab = "Minimized",
            endTab = getTabAnalyticsKeyName(l_MainView_2.currTabIndex, l_MainView_2.isClientView)
        } else {
            initTab = getTabAnalyticsKeyName(l_MainView_2.currTabIndex, l_MainView_2.isClientView),
            endTab = "Minimized"
        });
    end;
end;
return function(v24, v25)
    return function(v26)
        ReportTabChange(v25, v26);
        ReportDevConsoleOpenClose(v25, v26);
        v24(v26);
    end;
end;


local v0 = require(script.Parent.Parent.Immutable);
local v1 = require(script.Parent.Parent.Actions.ActionBindingsUpdateSearchFilter);
return function(v2, v3)
    local v4 = v2 or {
        bindingsSearchTerm = ""
    };
    if v3.type == v1.name then
        return (v0.Set(v4, "bindingsSearchTerm", v3.searchTerm));
    else
        return v4;
    end;
end;


local v0 = require(script.Parent.Parent.Immutable);
local v1 = require(script.Parent.Parent.Actions.DataStoresUpdateSearchFilter);
return function(v2, v3)
    local v4 = v2 or {
        storesSearchTerm = ""
    };
    if v3.type == v1.name then
        return (v0.Set(v4, "storesSearchTerm", v3.searchTerm));
    else
        return v4;
    end;
end;


local v0 = require(script.Parent.Parent.Immutable);
local v1 = require(script.Parent.Parent.Actions.DebugVisualizationsUpdateSearchFilter);
return function(v2, v3)
    local v4 = v2 or {
        debugVisualizationsSearchTerm = "",
        debugVisualizationsTypeFilters = {}
    };
    local v5 = nil;
    v5 = if v3.filterTypes == nil then v4.debugVisualizationsTypeFilters else v0.JoinDictionaries(v4.debugVisualizationsTypeFilters, v3.filterTypes);
    if v3.type == v1.name then
        return v0.JoinDictionaries(v4, {
            debugVisualizationsSearchTerm = v3.searchTerm,
            debugVisualizationsTypeFilters = v5
        });
    else
        return v4;
    end;
end;


local v0 = require(script.Parent.Parent.Immutable);
local v1 = require(script.Parent.Parent.Constants);
local v2 = require(script.Parent.Parent.Actions.SetDevConsoleVisibility);
local v3 = require(script.Parent.Parent.Actions.SetDevConsoleMinimized);
local v4 = require(script.Parent.Parent.Actions.ChangeDevConsoleSize);
local v5 = require(script.Parent.Parent.Actions.SetDevConsolePosition);
local v6 = require(script.Parent.Parent.Actions.SetActiveTab);
return function(v7, v8)
    local v9 = v7 or {
        formFactor = v1.FormFactor.Large,
        isVisible = false,
        isMinimized = false,
        position = v1.MainWindowInit.Position,
        size = v1.MainWindowInit.Size,
        visibleStartTime = 0
    };
    if v8.type == v2.name then
        local v10 = {
            isVisible = v8.isVisible
        };
        if v10.isVisible then
            v10.isMinimized = false;
            v10.visibleStartTime = tick();
        end;
        return v0.JoinDictionaries(v9, v10);
    elseif v8.type == v5.name then
        return (v0.Set(v9, "position", v8.position));
    elseif v8.type == v3.name then
        return (v0.Set(v9, "isMinimized", v8.isMinimized));
    else
        if v8.type == v4.name then
            if v9.formFactor == v1.FormFactor.Large then
                return (v0.Set(v9, "size", v8.newSize));
            end;
        elseif v8.type == v6.name then
            return (v0.Set(v9, "isMinimized", false));
        end;
        return v9;
    end;
end;


local l_Parent_0 = script.Parent;
local v1 = require(l_Parent_0.DevConsoleDisplayOptions);
local v2 = require(l_Parent_0.MainView);
local v3 = require(l_Parent_0.MemoryData);
local v4 = require(l_Parent_0.NetworkData);
local v5 = require(l_Parent_0.ScriptsData);
local v6 = require(l_Parent_0.DataStoresData);
local v7 = require(l_Parent_0.ServerStatsData);
local v8 = require(l_Parent_0.ServerJobsData);
local v9 = require(l_Parent_0.ActionBindingsData);
local v10 = require(l_Parent_0.MicroProfiler);
local v11 = require(l_Parent_0.DebugVisualizationsData);
local v12 = require(l_Parent_0.ScriptProfiler);
local v13 = require(l_Parent_0.LuauHeap);
return function(v14, v15)
    local v16 = v14 or {};
    return {
        DisplayOptions = v1(v16.DisplayOptions, v15),
        MainView = v2(v16.MainView, v15),
        MemoryData = v3(v16.MemoryData, v15),
        NetworkData = v4(v16.NetworkData, v15),
        ScriptsData = v5(v16.ScriptsData, v15),
        DataStoresData = v6(v16.DataStoresData, v15),
        ServerStatsData = v7(v16.ServerStatsData, v15),
        ServerJobsData = v8(v16.ServerJobsData, v15),
        ActionBindingsData = v9(v16.ActionBindingsData, v15),
        MicroProfiler = v10(v16.MicroProfiler, v15),
        DebugVisualizationsData = v11(v16.DebugVisualizationsData, v15),
        ScriptProfiler = v12(v16.ScriptProfiler, v15),
        LuauHeap = v13(v16.LuauHeap, v15)
    };
end;


local v0 = require(game:GetService("CorePackages").Rodux);
local v1 = require(script.Parent.Parent.Immutable);
return function(v2, v3)
    return v0.createReducer({
        clientSearchTerm = "",
        clientTypeFilters = {},
        serverSearchTerm = "",
        serverTypeFilters = {}
    }, {
        ClientLogAppendMessage = function(v4, v5)
            return v1.JoinDictionaries(v4, {
                clientData = v1.Append(v4.clientData, v5.newMessage)
            });
        end,
        ServerLogAppendMessage = function(v6, v7)
            return v1.JoinDictionaries(v6, {
                serverData = v1.Append(v6.serverData, v7.newMessage)
            });
        end,
        ClientLogAppendFilteredMessage = function(v8, v9)
            return v1.JoinDictionaries(v8, {
                clientData = v1.Append(v8.clientData, v9.newMessage),
                clientDataFiltered = v1.Append(v8.clientDataFiltered, v9.newMessage)
            });
        end,
        ServerLogAppendFilteredMessage = function(v10, v11)
            return v1.JoinDictionaries(v10, {
                serverData = v1.Append(v10.serverData, v11.newMessage),
                serverDataFiltered = v1.Append(v10.serverDataFiltered, v11.newMessage)
            });
        end,
        ClientLogSetData = function(v12, v13)
            return v1.JoinDictionaries(v12, {
                clientData = v13.newData,
                clientDataFiltered = v13.newDataFiltered
            });
        end,
        ServerLogSetData = function(v14, v15)
            return v1.JoinDictionaries(v14, {
                serverData = v15.newData,
                serverDataFiltered = v15.newDataFiltered
            });
        end,
        ClientLogUpdateSearchFilter = function(v16, v17)
            return v1.JoinDictionaries(v16, {
                clientSearchTerm = v17.searchTerm,
                clientTypeFilters = v1.JoinDictionaries(v16.clientTypeFilters, v17.filterTypes)
            });
        end,
        ServerLogUpdateSearchFilter = function(v18, v19)
            return v1.JoinDictionaries(v18, {
                serverSearchTerm = v19.searchTerm,
                serverTypeFilters = v1.JoinDictionaries(v18.serverTypeFilters, v19.filterTypes)
            });
        end
    })(v2, v3);
end;


local v0 = require(script.Parent.Parent.Immutable);
local l_Actions_0 = script.Parent.Parent.Actions;
local v2 = require(l_Actions_0.SetLuauHeapState);
local v3 = require(l_Actions_0.SetLuauHeapProfileTarget);
local v4 = require(l_Actions_0.SetLuauHeapActiveSnapshot);
local v5 = require(l_Actions_0.SetLuauHeapCompareSnapshot);
local _ = require(script.Parent.Parent.Components.LuauHeap.LuauHeapTypes);
local v7 = {
    isClientView = true,
    client = {
        snapshots = {},
        active = 0,
        compare = 0
    },
    server = {
        snapshots = {},
        active = 0,
        compare = 0
    }
};
return function(v8, v9)
    local v10 = v8 or v7;
    if v9.type == v2.name then
        return (v0.JoinDictionaries(v10, if not v9.isClientState then {
            server = v9.sessionState
        } else {
            client = v9.sessionState
        }));
    elseif v9.type == v3.name then
        return v0.JoinDictionaries(v10, {
            isClientView = v9.isClientView
        });
    elseif v9.type == v4.name then
        if not v10.isClientView then
            local v11 = table.clone(v10.server);
            v11.active = v9.active;
            return v0.JoinDictionaries(v10, {
                server = v11
            });
        else
            local v12 = table.clone(v10.client);
            v12.active = v9.active;
            return v0.JoinDictionaries(v10, {
                client = v12
            });
        end;
    elseif v9.type == v5.name then
        if not v10.isClientView then
            local v13 = table.clone(v10.server);
            v13.compare = v9.compare;
            return v0.JoinDictionaries(v10, {
                server = v13
            });
        else
            local v14 = table.clone(v10.client);
            v14.compare = v9.compare;
            return v0.JoinDictionaries(v10, {
                client = v14
            });
        end;
    else
        return v10;
    end;
end;